diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 99c83115a9..636c85c9d9 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -237,11 +237,7 @@ Oops missed this one thing. This commit fixes that. ... ~~~ -Edit the two commit messages into a single message that describes the overall change: - -~~~ - -Once you have and exit, you will have a change to change the commit message for the new, squashed, mega commit: +Edit the two commit messages into a single message that describes the overall change. Once you have and exit, you will have a change to change the commit message for the new, squashed, mega commit: ~~~bash diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 6b80950525..e68368c5a3 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,27 +1,17 @@ name: Bug Report description: Non-security related issues regarding this software -title: "[VERSION]: " labels: [bug] body: - type: markdown attributes: - value: | - :point_up: **Please edit the title above to include the highest version, of which you are aware, of netCDF-Java impacted by this bug in the title of the issue.** - + value: | Thank you for taking the time to fill out this bug report! If you have a question, suggestion, or feature request, please use the project [GitHub Discussions forum](https://github.com/Unidata/netcdf-java/discussions/). - - type: dropdown + - type: textarea id: versions attributes: label: Versions impacted by the bug description: Which version(s) of netCDF-Java are impacted by this bug? If you have only tried with one version, that is ok! - multiple: true - options: - - v5.x - - v6.x - - v7.x - validations: - required: true - type: textarea id: report-details attributes: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 465ebc5ad4..963eda0eed 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,7 +12,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Build and test with Gradle (${{ matrix.java-vendor }} ${{ matrix.java-version }}) - uses: Unidata/thredds-test-action@v1 + uses: Unidata/thredds-test-action@v2 with: java-vendor: ${{ matrix.java-vendor }} java-version: ${{ matrix.java-version }} diff --git a/LICENSE b/LICENSE index 0f61eabcea..857e3e1f36 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) 1998-2018, University Corporation for Atmospheric Research/Unidata +Copyright (c) 1998-2023, University Corporation for Atmospheric Research/Unidata All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/README.md b/README.md index 61d0e90907..03f51ca2ac 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ For potential security issues, please contact security@unidata.ucar.edu directly Are you looking to contribute to the netCDF-Java efforts? That's great! -Please see our [contributors guide](https://github.com/Unidata/netcdf-java/blob/develop/.github/CONTRIBUTING.md) for more information! +Please see our [contributors guide](https://github.com/Unidata/netcdf-java/blob/maint-5.x/.github/CONTRIBUTING.md) for more information! ## NetCDF Markup Language (NcML) @@ -66,19 +66,20 @@ These XML documents are how THREDDS-enabled data consumers find out what data is THREDDS Catalog documentation (including the specification) is available at -* https://docs.unidata.ucar.edu/tds/5.0/userguide/basic_client_catalog.html +* https://docs.unidata.ucar.edu/tds/current/userguide/basic_client_catalog.html ## Licensing -netCDF-Java is released under the BSD-3 licence, which can be found [here](https://github.com/Unidata/netcdf-java/blob/develop/LICENSE). +netCDF-Java is released under the BSD-3 licence, which can be found [here](https://github.com/Unidata/netcdf-java/blob/maint-5.x/LICENSE). Furthermore, this project includes code from third-party open-source software components: -* [Gretty](https://github.com/akhikhl/gretty): for details, see `buildSrc/README.md` +* [Gretty](https://github.com/akhikhl/gretty) * [ERDDAP](https://coastwatch.pfeg.noaa.gov/erddap/index.html): for details, see `waterml/README.md` -* [JUnit](https://github.com/junit-team/junit4): for details, see `testUtil/README.md` +* [JUnit](https://github.com/junit-team/junit4): for details, see `cdm-test-utils/README.md` +* Edal (The University of Reading): The CDM calendars are implemented using classes from Jon Blower's `uk.ac.rdg.resc.edal.time` package. Each of these software components have their own license. -Please see `docs/src/private/licenses/third-party/`. +Please see `third-party-licenses/`. ## How to use diff --git a/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/BufrTables.java b/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/BufrTables.java index e06d3e9f19..b4466caa43 100644 --- a/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/BufrTables.java +++ b/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/BufrTables.java @@ -125,7 +125,7 @@ public enum Format { static final String RESOURCE_PATH = "/resources/bufrTables/"; private static final String canonicalLookup = "resource:" + RESOURCE_PATH + "local/tablelookup.csv"; - private static final int latestVersion = 19; + private static final int latestVersion = 37; private static final boolean showTables = false; private static final boolean showReadErrs = true; diff --git a/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/CodeFlagTables.java b/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/CodeFlagTables.java index 9d74c0872a..d2b1a6bf49 100644 --- a/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/CodeFlagTables.java +++ b/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/CodeFlagTables.java @@ -18,7 +18,7 @@ /** Read BUFR Code / Flag tables. */ public class CodeFlagTables { private static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(CodeFlagTables.class); - private static final String CodeFlagFilename = "wmo/BUFRCREX_32_0_0_CodeFlag_en.xml"; + private static final String CodeFlagFilename = "wmo/BUFRCREX_37_0_0_CodeFlag_en.xml"; static Map tableMap; public static CodeFlagTables getTable(short id) { diff --git a/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/TableA.java b/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/TableA.java index ac0cbbc3e0..08d0bb0d1d 100644 --- a/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/TableA.java +++ b/bufr/src/main/java/ucar/nc2/iosp/bufr/tables/TableA.java @@ -15,7 +15,7 @@ /** Read standard WMO Table A (data categories). */ public class TableA { private static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(TableA.class); - private static final String TABLEA_FILENAME = "wmo/BUFR_32_0_0_TableA_en.xml"; + private static final String TABLEA_FILENAME = "wmo/BUFR_37_0_0_TableA_en.xml"; private static Map tableA; /* diff --git a/bufr/src/main/resources/resources/bufrTables/local/tablelookup.csv b/bufr/src/main/resources/resources/bufrTables/local/tablelookup.csv index e342264da2..22efae83f9 100644 --- a/bufr/src/main/resources/resources/bufrTables/local/tablelookup.csv +++ b/bufr/src/main/resources/resources/bufrTables/local/tablelookup.csv @@ -30,7 +30,9 @@ WMO.19, 0, 0, 19, 0, -1, resource:/resources/bufrTables/wmo/B WMO.22, 0, 0, 22, 0, -1, resource:/resources/bufrTables/wmo/BUFRCREX_22_0_1_TableB_en.xml, wmo_xml, resource:/resources/bufrTables/wmo/BUFR_22_0_1_TableD_en.xml, wmo_xml WMO.25, 0, 0, 25, 0, -1, resource:/resources/bufrTables/wmo/BUFRCREX_25_0_0_TableB_en.xml, wmo_xml, resource:/resources/bufrTables/wmo/BUFR_25_0_0_TableD_en.xml, wmo_xml WMO.32, 0, 0, 32, 0, -1, resource:/resources/bufrTables/wmo/BUFRCREX_32_0_0_TableB_en.xml, wmo_xml, resource:/resources/bufrTables/wmo/BUFR_32_0_0_TableD_en.xml, wmo_xml -WMO.any,0, 0, -1, 0, -1, resource:/resources/bufrTables/wmo/BUFRCREX_32_0_0_TableB_en.xml, wmo_xml, resource:/resources/bufrTables/wmo/BUFR_32_0_0_TableD_en.xml, wmo_xml +WMO.33, 0, 0, 33, 0, -1, resource:/resources/bufrTables/wmo/BUFRCREX_33_0_0_TableB_en.xml, wmo_xml, resource:/resources/bufrTables/wmo/BUFR_33_0_0_TableD_en.xml, wmo_xml +WMO.37, 0, 0, 37, 0, -1, resource:/resources/bufrTables/wmo/BUFRCREX_37_0_0_TableB_en.xml, wmo_xml, resource:/resources/bufrTables/wmo/BUFR_37_0_0_TableD_en.xml, wmo_xml +WMO.any,0, 0, -1, 0, -1, resource:/resources/bufrTables/wmo/BUFRCREX_37_0_0_TableB_en.xml, wmo_xml, resource:/resources/bufrTables/wmo/BUFR_37_0_0_TableD_en.xml, wmo_xml # # NCEP # see http://www.emc.ncep.noaa.gov/mmb/data_processing/bufrtab_tablea.htm#1 diff --git a/bufr/src/main/resources/resources/bufrTables/wmo/BUFRCREX_33_0_0_CodeFlag_en.xml b/bufr/src/main/resources/resources/bufrTables/wmo/BUFRCREX_33_0_0_CodeFlag_en.xml new file mode 100644 index 0000000000..37963eddd0 --- /dev/null +++ b/bufr/src/main/resources/resources/bufrTables/wmo/BUFRCREX_33_0_0_CodeFlag_en.xml @@ -0,0 +1,42344 @@ + + + +1 +001003 +WMO Region number/geographical area +0 +Antarctica +Operational + + +2 +001003 +WMO Region number/geographical area +1 +Region I +Operational + + +3 +001003 +WMO Region number/geographical area +2 +Region II +Operational + + +4 +001003 +WMO Region number/geographical area +3 +Region III +Operational + + +5 +001003 +WMO Region number/geographical area +4 +Region IV +Operational + + +6 +001003 +WMO Region number/geographical area +5 +Region V +Operational + + +7 +001003 +WMO Region number/geographical area +6 +Region VI +Operational + + +8 +001003 +WMO Region number/geographical area +7 +Missing value +Operational + + +9 +001007 +Satellite identifier +Operational + + +10 +001024 +Wind speed source +0 +No wind speed data available +Operational + + +11 +001024 +Wind speed source +1 +AMSR-E data +Operational + + +12 +001024 +Wind speed source +2 +TMI data +Operational + + +13 +001024 +Wind speed source +3 +NWP: ECMWF +Operational + + +14 +001024 +Wind speed source +4 +NWP: UK Met Office +Operational + + +15 +001024 +Wind speed source +5 +NWP: NCEP +Operational + + +16 +001024 +Wind speed source +6 +Reference climatology +Operational + + +17 +001024 +Wind speed source +7 +ERS_scatterometer +Operational + + +18 +001024 +Wind speed source +8-30 +Reserved for future use +Operational + + +19 +001024 +Wind speed source +31 +Missing value +Operational + + +20 +001028 +Aerosol optical depth (AOD) source +0 +No AOD data available +Operational + + +21 +001028 +Aerosol optical depth (AOD) source +1 +NESDIS +Operational + + +22 +001028 +Aerosol optical depth (AOD) source +2 +NAVOCEANO +Operational + + +23 +001028 +Aerosol optical depth (AOD) source +3 +NAAPS +Operational + + +24 +001028 +Aerosol optical depth (AOD) source +4 +MERIS +Operational + + +25 +001028 +Aerosol optical depth (AOD) source +5 +AATSR +Operational + + +26 +001028 +Aerosol optical depth (AOD) source +6-30 +Reserved for future use +Operational + + +27 +001028 +Aerosol optical depth (AOD) source +31 +Missing value +Operational + + +28 +001029 +SSI source +0 +No SSI data available +Operational + + +29 +001029 +SSI source +1 +MSG_SEVIRI +Operational + + +30 +001029 +SSI source +2 +GOES East +Operational + + +31 +001029 +SSI source +3 +GOES West +Operational + + +32 +001029 +SSI source +4 +ECMWF +Operational + + +33 +001029 +SSI source +5 +NCEP +Operational + + +34 +001029 +SSI source +6 +UK Met Office +Operational + + +35 +001029 +SSI source +7-30 +Reserved for future use +Operational + + +36 +001029 +SSI source +31 +Missing value +Operational + + +37 +001031 +Identification of originating/generating centre +Operational + + +38 +001033 +Identification of originating/generating centre +Operational + + +39 +001034 +Identification of originating/generating sub-centre +Operational + + +40 +001036 +Agency in charge of operating the observing platform +0-36000 +Reserved +Operational + + +41 +001036 +Agency in charge of operating the observing platform +36001 +Australia, Bureau of Meteorology (BoM) +Operational + + +42 +001036 +Agency in charge of operating the observing platform +36002 +Australia, Joint Australian Facility for Ocean Observing Systems (JAFOOS) +Operational + + +43 +001036 +Agency in charge of operating the observing platform +36003 +Australia, the Commonwealth Scientific and Industrial Research Organization (CSIRO) +Operational + + +44 +001036 +Agency in charge of operating the observing platform +36004-124000 +Reserved +Operational + + +45 +001036 +Agency in charge of operating the observing platform +124001 +Canada, Marine Environmental Data Service (MEDS) +Operational + + +46 +001036 +Agency in charge of operating the observing platform +124002 +Canada, Institute of Ocean Sciences (IOS) +Operational + + +47 +001036 +Agency in charge of operating the observing platform +124003-124172 +Reserved +Operational + + +48 +001036 +Agency in charge of operating the observing platform +124173 +Canada, Environment Canada +Operational + + +49 +001036 +Agency in charge of operating the observing platform +124174 +Canada, Department of National Defence +Operational + + +50 +001036 +Agency in charge of operating the observing platform +124175 +Canada, Nav Canada +Operational + + +51 +001036 +Agency in charge of operating the observing platform +124176-156000 +Reserved +Operational + + +52 +001036 +Agency in charge of operating the observing platform +156001 +China, The State Oceanic Administration +Operational + + +53 +001036 +Agency in charge of operating the observing platform +156002 +China, Second Institute of Oceanography, State Oceanic Administration +Operational + + +54 +001036 +Agency in charge of operating the observing platform +156003 +China, Institute of Ocean Technology +Operational + + +55 +001036 +Agency in charge of operating the observing platform +156004-250000 +Reserved +Operational + + +56 +001036 +Agency in charge of operating the observing platform +250001 +France, Institut de Recherche pour le Développement (IRD) +Operational + + +57 +001036 +Agency in charge of operating the observing platform +250002 +France, Institut Français de Recherche pour l'Exploitation de la mer (IFREMER) +Operational + + +58 +001036 +Agency in charge of operating the observing platform +250003-276000 +Reserved +Operational + + +59 +001036 +Agency in charge of operating the observing platform +276001 +Germany, Bundesamt fuer Seeschiffahrt und Hydrographie (BSH) +Operational + + +60 +001036 +Agency in charge of operating the observing platform +276002 +Germany, Institut fuer Meereskunde, Kiel +Operational + + +61 +001036 +Agency in charge of operating the observing platform +276003-356000 +Reserved +Operational + + +62 +001036 +Agency in charge of operating the observing platform +356001 +India, National Institute of Oceanography (NIO) +Operational + + +63 +001036 +Agency in charge of operating the observing platform +356002 +India, National Institute for Ocean Technology (NIOT) +Operational + + +64 +001036 +Agency in charge of operating the observing platform +356003 +India, National Centre for Ocean Information Service +Operational + + +65 +001036 +Agency in charge of operating the observing platform +356004-392000 +Reserved +Operational + + +66 +001036 +Agency in charge of operating the observing platform +392001 +Japan, Japan Meteorological Agency (JMA) +Operational + + +67 +001036 +Agency in charge of operating the observing platform +392002 +Japan, Frontier Observational Research System for Global Change +Operational + + +68 +001036 +Agency in charge of operating the observing platform +392003 +Japan, Japan Marine Science and Technology Centre (JAMSTEC) +Operational + + +69 +001036 +Agency in charge of operating the observing platform +392004-410000 +Reserved +Operational + + +70 +001036 +Agency in charge of operating the observing platform +410001 +Republic of Korea, Seoul National University +Operational + + +71 +001036 +Agency in charge of operating the observing platform +410002 +Republic of Korea, Korea Ocean Research and Development Institute (KORDI) +Operational + + +72 +001036 +Agency in charge of operating the observing platform +410003 +Republic of Korea, Meteorological Research Institute +Operational + + +73 +001036 +Agency in charge of operating the observing platform +410004-540000 +Reserved +Operational + + +74 +001036 +Agency in charge of operating the observing platform +540001 +New Caledonia, Institut de Recherche pour le Développement (IRD) +Operational + + +75 +001036 +Agency in charge of operating the observing platform +540002-554000 +Reserved +Operational + + +76 +001036 +Agency in charge of operating the observing platform +554001 +New Zealand, National Institute of Water and Atmospheric Research (NIWA) +Operational + + +77 +001036 +Agency in charge of operating the observing platform +554002-643000 +Reserved +Operational + + +78 +001036 +Agency in charge of operating the observing platform +643001 +Russian Federation, State Oceanographic Institute of Roshydromet +Operational + + +79 +001036 +Agency in charge of operating the observing platform +643002 +Russian Federation, Federal Service for Hydrometeorology and Environmental Monitoring +Operational + + +80 +001036 +Agency in charge of operating the observing platform +643003-724000 +Reserved +Operational + + +81 +001036 +Agency in charge of operating the observing platform +724001 +Spain, Instituto Español de Oceanografia +Operational + + +82 +001036 +Agency in charge of operating the observing platform +724002-826000 +Reserved +Operational + + +83 +001036 +Agency in charge of operating the observing platform +826001 +United Kingdom, Hydrographic Office +Operational + + +84 +001036 +Agency in charge of operating the observing platform +826002 +United Kingdom, Southampton Oceanography Centre (SOC) +Operational + + +85 +001036 +Agency in charge of operating the observing platform +826003-840000 +Reserved +Operational + + +86 +001036 +Agency in charge of operating the observing platform +840001 +USA, NOAA Atlantic Oceanographic and Meteorological Laboratories (AOML) +Operational + + +87 +001036 +Agency in charge of operating the observing platform +840002 +USA, NOAA Pacific Marine Environmental Laboratories (PMEL) +Operational + + +88 +001036 +Agency in charge of operating the observing platform +840003 +USA, Scripps Institution of Oceanography (SIO) +Operational + + +89 +001036 +Agency in charge of operating the observing platform +840004 +USA, Woods Hole Oceanographic Institution (WHOI) +Operational + + +90 +001036 +Agency in charge of operating the observing platform +840005 +USA, University of Washington +Operational + + +91 +001036 +Agency in charge of operating the observing platform +840006 +USA, Naval Oceanographic Office +Operational + + +92 +001036 +Agency in charge of operating the observing platform +840007-1048574 +Reserved +Operational + + +93 +001036 +Agency in charge of operating the observing platform +1048575 +Missing value +Operational + + +94 +001038 +Source of sea ice fraction +0 +No sea ice set +Operational + + +95 +001038 +Source of sea ice fraction +1 +NSIDC SSM/I Cavalieri et al (1992) +Operational + + +96 +001038 +Source of sea ice fraction +2 +AMSR-E +Operational + + +97 +001038 +Source of sea ice fraction +3 +ECMWF +Operational + + +98 +001038 +Source of sea ice fraction +4 +CMS (France) cloud mask used by Medspiration +Operational + + +99 +001038 +Source of sea ice fraction +5 +EUMETSAT OSI-SAF +Operational + + +100 +001038 +Source of sea ice fraction +6-30 +Reserved for future use +Operational + + +101 +001038 +Source of sea ice fraction +31 +Missing value +Operational + + +102 +001044 +Standard generating application +0 +Reserved +Operational + + +103 +001044 +Standard generating application +1 +Full weighted mixture of individual quality tests +Operational + + +104 +001044 +Standard generating application +2 +Weighted mixture of individual tests, but excluding forecast comparison +Operational + + +105 +001044 +Standard generating application +3 +Recursive filter function +Operational + + +106 +001044 +Standard generating application +4 +Common quality index (QI) without forecast +Operational + + +107 +001044 +Standard generating application +5 +QI without forecast +Operational + + +108 +001044 +Standard generating application +6 +QI with forecast +Operational + + +109 +001044 +Standard generating application +7 +Estimated error in m/s converted to a percent confidence +Operational + + +110 +001044 +Standard generating application +8-254 +Reserved +Operational + + +111 +001044 +Standard generating application +255 +Missing value +Operational + + +112 +001052 +Platform transmitter ID +0 +Primary +Operational + + +113 +001052 +Platform transmitter ID +1 +Secondary +Operational + + +114 +001052 +Platform transmitter ID +2 +Reserved +Operational + + +115 +001052 +Platform transmitter ID +3 +Missing value +Operational + + +116 +001090 +Technique for making up initial perturbations +0 +Lagged-average forecasting (LAF) +Operational + + +117 +001090 +Technique for making up initial perturbations +1 +Breeding +Operational + + +118 +001090 +Technique for making up initial perturbations +2 +Singular vectors +Operational + + +119 +001090 +Technique for making up initial perturbations +3 +Multiple analysis cycles +Operational + + +120 +001090 +Technique for making up initial perturbations +4-191 +Reserved +Operational + + +121 +001090 +Technique for making up initial perturbations +192-254 +Reserved for local use +Operational + + +122 +001090 +Technique for making up initial perturbations +255 +Missing value +Operational + + +123 +001092 +Type of ensemble forecast +0 +Unperturbed high-resolution control forecast +Operational + + +124 +001092 +Type of ensemble forecast +1 +Unperturbed low-resolution control forecast +Operational + + +125 +001092 +Type of ensemble forecast +2 +Negatively perturbed forecast +Operational + + +126 +001092 +Type of ensemble forecast +3 +Positively perturbed forecast +Operational + + +127 +001092 +Type of ensemble forecast +4-191 +Reserved +Operational + + +128 +001092 +Type of ensemble forecast +192-254 +Reserved for local use +Operational + + +129 +001092 +Type of ensemble forecast +255 +Missing value +Operational + + +130 +001101 +State identifier +0-99 +Reserved +Operational + + +131 +001101 +State identifier +100 +Algeria +Operational + + +132 +001101 +State identifier +101 +Angola +Operational + + +133 +001101 +State identifier +102 +Benin +Operational + + +134 +001101 +State identifier +103 +Botswana +Operational + + +135 +001101 +State identifier +104 +Burkina Faso +Operational + + +136 +001101 +State identifier +105 +Burundi +Operational + + +137 +001101 +State identifier +106 +Cameroon +Operational + + +138 +001101 +State identifier +107 +Cabo Verde +Operational + + +139 +001101 +State identifier +108 +Central African Republic +Operational + + +140 +001101 +State identifier +109 +Chad +Operational + + +141 +001101 +State identifier +110 +Comoros +Operational + + +142 +001101 +State identifier +111 +Congo +Operational + + +143 +001101 +State identifier +112 +Côte d'Ivoire +Operational + + +144 +001101 +State identifier +113 +Democratic Republic of the Congo +Operational + + +145 +001101 +State identifier +114 +Djibouti +Operational + + +146 +001101 +State identifier +115 +Egypt +Operational + + +147 +001101 +State identifier +116 +Eritrea +Operational + + +148 +001101 +State identifier +117 +Ethiopia +Operational + + +149 +001101 +State identifier +118 +France (RA I) +Operational + + +150 +001101 +State identifier +119 +Gabon +Operational + + +151 +001101 +State identifier +120 +Gambia +Operational + + +152 +001101 +State identifier +121 +Ghana +Operational + + +153 +001101 +State identifier +122 +Guinea +Operational + + +154 +001101 +State identifier +123 +Guinea-Bissau +Operational + + +155 +001101 +State identifier +124 +Kenya +Operational + + +156 +001101 +State identifier +125 +Lesotho +Operational + + +157 +001101 +State identifier +126 +Liberia +Operational + + +158 +001101 +State identifier +127 +Libya +Operational + + +159 +001101 +State identifier +128 +Madagascar +Operational + + +160 +001101 +State identifier +129 +Malawi +Operational + + +161 +001101 +State identifier +130 +Mali +Operational + + +162 +001101 +State identifier +131 +Mauritania +Operational + + +163 +001101 +State identifier +132 +Mauritius +Operational + + +164 +001101 +State identifier +133 +Morocco +Operational + + +165 +001101 +State identifier +134 +Mozambique +Operational + + +166 +001101 +State identifier +135 +Namibia +Operational + + +167 +001101 +State identifier +136 +Niger +Operational + + +168 +001101 +State identifier +137 +Nigeria +Operational + + +169 +001101 +State identifier +138 +Portugal (RA I) +Operational + + +170 +001101 +State identifier +139 +Rwanda +Operational + + +171 +001101 +State identifier +140 +Sao Tome and Principe +Operational + + +172 +001101 +State identifier +141 +Senegal +Operational + + +173 +001101 +State identifier +142 +Seychelles +Operational + + +174 +001101 +State identifier +143 +Sierra Leone +Operational + + +175 +001101 +State identifier +144 +Somalia +Operational + + +176 +001101 +State identifier +145 +South Africa +Operational + + +177 +001101 +State identifier +146 +Spain (RA I) +Operational + + +178 +001101 +State identifier +147 +Sudan +Operational + + +179 +001101 +State identifier +148 +Eswatini +Operational + + +180 +001101 +State identifier +149 +Togo +Operational + + +181 +001101 +State identifier +150 +Tunisia +Operational + + +182 +001101 +State identifier +151 +Uganda +Operational + + +183 +001101 +State identifier +152 +United Kingdom of Great Britain and Northern Ireland (RA I) +Operational + + +184 +001101 +State identifier +153 +United Republic of Tanzania +Operational + + +185 +001101 +State identifier +154 +Zambia +Operational + + +186 +001101 +State identifier +155 +Zimbabwe +Operational + + +187 +001101 +State identifier +156-199 +Reserved for Region I (Africa) +Operational + + +188 +001101 +State identifier +200 +Afghanistan +Operational + + +189 +001101 +State identifier +201 +Bahrain +Operational + + +190 +001101 +State identifier +202 +Bangladesh +Operational + + +191 +001101 +State identifier +203 +Bhutan +Operational + + +192 +001101 +State identifier +204 +Cambodia +Operational + + +193 +001101 +State identifier +205 +China +Operational + + +194 +001101 +State identifier +206 +Democratic People's Republic of Korea +Operational + + +195 +001101 +State identifier +207 +Hong Kong, China +Operational + + +196 +001101 +State identifier +208 +India +Operational + + +197 +001101 +State identifier +209 +Iran, Islamic Republic of +Operational + + +198 +001101 +State identifier +210 +Iraq +Operational + + +199 +001101 +State identifier +211 +Japan +Operational + + +200 +001101 +State identifier +212 +Kazakhstan +Operational + + +201 +001101 +State identifier +213 +Kuwait +Operational + + +202 +001101 +State identifier +214 +Kyrgyzstan +Operational + + +203 +001101 +State identifier +215 +Lao People's Democratic Republic +Operational + + +204 +001101 +State identifier +216 +Macao, China +Operational + + +205 +001101 +State identifier +217 +Maldives +Operational + + +206 +001101 +State identifier +218 +Mongolia +Operational + + +207 +001101 +State identifier +219 +Myanmar +Operational + + +208 +001101 +State identifier +220 +Nepal +Operational + + +209 +001101 +State identifier +221 +Oman +Operational + + +210 +001101 +State identifier +222 +Pakistan +Operational + + +211 +001101 +State identifier +223 +Qatar +Operational + + +212 +001101 +State identifier +224 +Republic of Korea +Operational + + +213 +001101 +State identifier +225 +Yemen +Operational + + +214 +001101 +State identifier +226 +Russian Federation (RA II) +Operational + + +215 +001101 +State identifier +227 +Saudi Arabia +Operational + + +216 +001101 +State identifier +228 +Sri Lanka +Operational + + +217 +001101 +State identifier +229 +Tajikistan +Operational + + +218 +001101 +State identifier +230 +Thailand +Operational + + +219 +001101 +State identifier +231 +Turkmenistan +Operational + + +220 +001101 +State identifier +232 +United Arab Emirates +Operational + + +221 +001101 +State identifier +233 +Uzbekistan +Operational + + +222 +001101 +State identifier +234 +Viet Nam +Operational + + +223 +001101 +State identifier +235-299 +Reserved for Region II (Asia) +Operational + + +224 +001101 +State identifier +300 +Argentina +Operational + + +225 +001101 +State identifier +301 +Bolivia (Plurinational State of) +Operational + + +226 +001101 +State identifier +302 +Brazil +Operational + + +227 +001101 +State identifier +303 +Chile +Operational + + +228 +001101 +State identifier +304 +Colombia +Operational + + +229 +001101 +State identifier +305 +Ecuador +Operational + + +230 +001101 +State identifier +306 +France (RA III) +Operational + + +231 +001101 +State identifier +307 +Guyana +Operational + + +232 +001101 +State identifier +308 +Paraguay +Operational + + +233 +001101 +State identifier +309 +Peru +Operational + + +234 +001101 +State identifier +310 +Suriname +Operational + + +235 +001101 +State identifier +311 +Uruguay +Operational + + +236 +001101 +State identifier +312 +Venezuela (Bolivarian Republic of) +Operational + + +237 +001101 +State identifier +313-399 +Reserved for Region III (South America) +Operational + + +238 +001101 +State identifier +400 +Antigua and Barbuda +Operational + + +239 +001101 +State identifier +401 +Bahamas +Operational + + +240 +001101 +State identifier +402 +Barbados +Operational + + +241 +001101 +State identifier +403 +Belize +Operational + + +242 +001101 +State identifier +404 +British Caribbean Territories +Operational + + +243 +001101 +State identifier +405 +Canada +Operational + + +244 +001101 +State identifier +406 +Colombia +Operational + + +245 +001101 +State identifier +407 +Costa Rica +Operational + + +246 +001101 +State identifier +408 +Cuba +Operational + + +247 +001101 +State identifier +409 +Dominica +Operational + + +248 +001101 +State identifier +410 +Dominican Republic +Operational + + +249 +001101 +State identifier +411 +El Salvador +Operational + + +250 +001101 +State identifier +412 +France (RA IV) +Operational + + +251 +001101 +State identifier +413 +Guatemala +Operational + + +252 +001101 +State identifier +414 +Haiti +Operational + + +253 +001101 +State identifier +415 +Honduras +Operational + + +254 +001101 +State identifier +416 +Jamaica +Operational + + +255 +001101 +State identifier +417 +Mexico +Operational + + +256 +001101 +State identifier +418 +Curaçao and Sint Maarten +Operational + + +257 +001101 +State identifier +419 +Nicaragua +Operational + + +258 +001101 +State identifier +420 +Panama +Operational + + +259 +001101 +State identifier +421 +Saint Lucia +Operational + + +260 +001101 +State identifier +422 +Trinidad and Tobago +Operational + + +261 +001101 +State identifier +423 +United Kingdom of Great Britain and Northern Ireland (RA IV) +Operational + + +262 +001101 +State identifier +424 +United States of America (RA IV) +Operational + + +263 +001101 +State identifier +425 +Venezuela (Bolivarian Republic of) +Operational + + +264 +001101 +State identifier +426-499 +Reserved for Region IV (North America, Central America and the Caribbean) +Operational + + +265 +001101 +State identifier +500 +Australia +Operational + + +266 +001101 +State identifier +501 +Brunei Darussalam +Operational + + +267 +001101 +State identifier +502 +Cook Islands +Operational + + +268 +001101 +State identifier +503 +Fiji +Operational + + +269 +001101 +State identifier +504 +French Polynesia +Operational + + +270 +001101 +State identifier +505 +Indonesia +Operational + + +271 +001101 +State identifier +506 +Kiribati +Operational + + +272 +001101 +State identifier +507 +Malaysia +Operational + + +273 +001101 +State identifier +508 +Micronesia, Federated States of +Operational + + +274 +001101 +State identifier +509 +New Caledonia +Operational + + +275 +001101 +State identifier +510 +New Zealand +Operational + + +276 +001101 +State identifier +511 +Niue +Operational + + +277 +001101 +State identifier +512 +Papua New Guinea +Operational + + +278 +001101 +State identifier +513 +Philippines +Operational + + +279 +001101 +State identifier +514 +Samoa +Operational + + +280 +001101 +State identifier +515 +Singapore +Operational + + +281 +001101 +State identifier +516 +Solomon Islands +Operational + + +282 +001101 +State identifier +517 +Tonga +Operational + + +283 +001101 +State identifier +518 +United Kingdom of Great Britain and Northern Ireland (RA V) +Operational + + +284 +001101 +State identifier +519 +United States of America (RA V) +Operational + + +285 +001101 +State identifier +520 +Vanuatu +Operational + + +286 +001101 +State identifier +521-599 +Reserved for Region V (South-West Pacific) +Operational + + +287 +001101 +State identifier +600 +Albania +Operational + + +288 +001101 +State identifier +601 +Armenia +Operational + + +289 +001101 +State identifier +602 +Austria +Operational + + +290 +001101 +State identifier +603 +Azerbaijan +Operational + + +291 +001101 +State identifier +604 +Belarus +Operational + + +292 +001101 +State identifier +605 +Belgium +Operational + + +293 +001101 +State identifier +606 +Bosnia and Herzegovina +Operational + + +294 +001101 +State identifier +607 +Bulgaria +Operational + + +295 +001101 +State identifier +608 +Croatia +Operational + + +296 +001101 +State identifier +609 +Cyprus +Operational + + +297 +001101 +State identifier +610 +Czechia +Operational + + +298 +001101 +State identifier +611 +Denmark +Operational + + +299 +001101 +State identifier +612 +Estonia +Operational + + +300 +001101 +State identifier +613 +Finland +Operational + + +301 +001101 +State identifier +614 +France (RA VI) +Operational + + +302 +001101 +State identifier +615 +Georgia +Operational + + +303 +001101 +State identifier +616 +Germany +Operational + + +304 +001101 +State identifier +617 +Greece +Operational + + +305 +001101 +State identifier +618 +Hungary +Operational + + +306 +001101 +State identifier +619 +Iceland +Operational + + +307 +001101 +State identifier +620 +Ireland +Operational + + +308 +001101 +State identifier +621 +Israel +Operational + + +309 +001101 +State identifier +622 +Italy +Operational + + +310 +001101 +State identifier +623 +Jordan +Operational + + +311 +001101 +State identifier +624 +Kazakhstan +Operational + + +312 +001101 +State identifier +625 +Latvia +Operational + + +313 +001101 +State identifier +626 +Lebanon +Operational + + +314 +001101 +State identifier +627 +Lithuania +Operational + + +315 +001101 +State identifier +628 +Luxembourg +Operational + + +316 +001101 +State identifier +629 +Malta +Operational + + +317 +001101 +State identifier +630 +Monaco +Operational + + +318 +001101 +State identifier +631 +Montenegro +Operational + + +319 +001101 +State identifier +632 +Netherlands +Operational + + +320 +001101 +State identifier +633 +Norway +Operational + + +321 +001101 +State identifier +634 +Poland +Operational + + +322 +001101 +State identifier +635 +Portugal (RA VI) +Operational + + +323 +001101 +State identifier +636 +Republic of Moldova +Operational + + +324 +001101 +State identifier +637 +Romania +Operational + + +325 +001101 +State identifier +638 +Russian Federation (RA VI) +Operational + + +326 +001101 +State identifier +639 +Serbia +Operational + + +327 +001101 +State identifier +640 +Slovakia +Operational + + +328 +001101 +State identifier +641 +Slovenia +Operational + + +329 +001101 +State identifier +642 +Spain (RA VI) +Operational + + +330 +001101 +State identifier +643 +Sweden +Operational + + +331 +001101 +State identifier +644 +Switzerland +Operational + + +332 +001101 +State identifier +645 +Syrian Arab Republic +Operational + + +333 +001101 +State identifier +646 +The former Yugoslav Republic of Macedonia +Operational + + +334 +001101 +State identifier +647 +Turkey +Operational + + +335 +001101 +State identifier +648 +Ukraine +Operational + + +336 +001101 +State identifier +649 +United Kingdom of Great Britain and Northern Ireland (RA VI) +Operational + + +337 +001101 +State identifier +650-699 +Reserved for Region VI (Europe) +Operational + + +338 +001101 +State identifier +700-999 +Reserved +Operational + + +339 +001101 +State identifier +1000-1022 +Not used +Operational + + +340 +001101 +State identifier +1023 +Missing value +Operational + + +341 +001150 +Coordinate reference system +0 +WGS84, as used by ICAO since 1998 +Operational + + +342 +001150 +Coordinate reference system +1 +ETRS89, as defined by EPSG:4258 +Operational + + +343 +001150 +Coordinate reference system +2 +NAD83, as defined by EPSG:4269 +Operational + + +344 +001150 +Coordinate reference system +3 +DHDN, as defined by EPSG:4314 +Operational + + +345 +001150 +Coordinate reference system +4 +Ellipsoidal datum using the International Reference Meridian and the International Reference Pole as the prime meridian and prime pole, respectively, and the origin of the International Terrestrial Reference System (ITRS) (see Note 2). The International Reference Meridian, International Reference Pole and ITRS are maintained by the International Earth Rotation and Reference Systems Service (IERS) +Operational + + +346 +001150 +Coordinate reference system +5-65534 +Reserved +Operational + + +347 +001150 +Coordinate reference system +65535 +Missing value +Operational + + +348 +001151 +Fixed mean sea-level reference datum +0 +Earth Gravitational Model 1996 +Operational + + +349 +001151 +Fixed mean sea-level reference datum +1 +Baltic height system 1977 +Operational + + +350 +001151 +Fixed mean sea-level reference datum +2-4094 +Reserved +Operational + + +351 +001151 +Fixed mean sea-level reference datum +4095 +Missing value +Operational + + +352 +002001 +Type of station +0 +Automatic +Operational + + +353 +002001 +Type of station +1 +Manned +Operational + + +354 +002001 +Type of station +2 +Hybrid: both manned and automatic +Operational + + +355 +002001 +Type of station +3 +Missing value +Operational + + +356 +002002 +Type of instrumentation for wind measurement +1 +Certified instruments +Operational + + +357 +002002 +Type of instrumentation for wind measurement +2 +Originally measured in knots +Operational + + +358 +002002 +Type of instrumentation for wind measurement +3 +Originally measured in km h-1 +Operational + + +359 +002002 +Type of instrumentation for wind measurement +All 4 +Missing value +Operational + + +360 +002003 +Type of measuring equipment used +0 +Pressure instrument associated with wind measuring equipment +Operational + + +361 +002003 +Type of measuring equipment used +1 +Optical theodolite +Operational + + +362 +002003 +Type of measuring equipment used +2 +Radio theodolite +Operational + + +363 +002003 +Type of measuring equipment used +3 +Radar +Operational + + +364 +002003 +Type of measuring equipment used +4 +VLF-Omega +Operational + + +365 +002003 +Type of measuring equipment used +5 +Loran C +Operational + + +366 +002003 +Type of measuring equipment used +6 +Wind profiler +Operational + + +367 +002003 +Type of measuring equipment used +7 +Satellite navigation +Operational + + +368 +002003 +Type of measuring equipment used +8 +Radio-acoustic Sounding System (RASS) +Operational + + +369 +002003 +Type of measuring equipment used +9 +Sodar +Operational + + +370 +002003 +Type of measuring equipment used +10 +Lidar +Operational + + +371 +002003 +Type of measuring equipment used +11-13 +Reserved +Operational + + +372 +002003 +Type of measuring equipment used +14 +Pressure instrument associated with wind measuring equipment but pressure element failed during ascent +Operational + + +373 +002003 +Type of measuring equipment used +15 +Missing value +Operational + + +374 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +0 +USA open pan evaporimeter (without cover) +Evaporation +Operational + + +375 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +1 +USA open pan evaporimeter (mesh covered) +Evaporation +Operational + + +376 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +2 +GGI-3000 evaporimeter (sunken) +Evaporation +Operational + + +377 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +3 +20 m2 tank +Evaporation +Operational + + +378 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +4 +Others +Evaporation +Operational + + +379 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +5 +Rice +Evapotranspiration +Operational + + +380 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +6 +Wheat +Evapotranspiration +Operational + + +381 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +7 +Maize +Evapotranspiration +Operational + + +382 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +8 +Sorghum +Evapotranspiration +Operational + + +383 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +9 +Other crops +Evapotranspiration +Operational + + +384 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +10-14 +Reserved +Operational + + +385 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +15 +Missing value +Operational + + +386 +002007 +Type of sensor for water level measuring instrument +0 +Reserved +Operational + + +387 +002007 +Type of sensor for water level measuring instrument +1 +Shaft encoder float system +Operational + + +388 +002007 +Type of sensor for water level measuring instrument +2 +Ultrasonic +Operational + + +389 +002007 +Type of sensor for water level measuring instrument +3 +Radar +Operational + + +390 +002007 +Type of sensor for water level measuring instrument +4 +Pressure (single transducer) +Operational + + +391 +002007 +Type of sensor for water level measuring instrument +5 +Pressure (multiple transducer) +Operational + + +392 +002007 +Type of sensor for water level measuring instrument +6 +Pressure (in stilling well) +Operational + + +393 +002007 +Type of sensor for water level measuring instrument +7 +Bubbler pressure +Operational + + +394 +002007 +Type of sensor for water level measuring instrument +8 +Acoustic (with sounding tube) +Operational + + +395 +002007 +Type of sensor for water level measuring instrument +9 +Acoustic (in open air) +Operational + + +396 +002007 +Type of sensor for water level measuring instrument +10-62 +Reserved +Operational + + +397 +002007 +Type of sensor for water level measuring instrument +63 +Missing value +Operational + + +398 +002008 +Type of offshore platform +0 +Fixed platform +Operational + + +399 +002008 +Type of offshore platform +1 +Mobile offshore drill ship +Operational + + +400 +002008 +Type of offshore platform +2 +Jack-up rig +Operational + + +401 +002008 +Type of offshore platform +3 +Semi-submersible platform +Operational + + +402 +002008 +Type of offshore platform +4 +Floating production storage and offloading (FPSO) unit +Operational + + +403 +002008 +Type of offshore platform +5 +Light vessel +Operational + + +404 +002008 +Type of offshore platform +6-14 +Reserved +Operational + + +405 +002008 +Type of offshore platform +15 +Missing value +Operational + + +406 +002011 +Radiosonde type +Operational + + +407 +002012 +Radiosonde computational method +Operational + + +408 +002013 +Solar and infrared radiation correction +0 +No correction +Operational + + +409 +002013 +Solar and infrared radiation correction +1 +CIMO solar corrected and CIMO infrared corrected +Operational + + +410 +002013 +Solar and infrared radiation correction +2 +CIMO solar corrected and infrared corrected +Operational + + +411 +002013 +Solar and infrared radiation correction +3 +CIMO solar corrected only +Operational + + +412 +002013 +Solar and infrared radiation correction +4 +Solar and infrared corrected automatically by radiosonde system +Operational + + +413 +002013 +Solar and infrared radiation correction +5 +Solar corrected automatically by radiosonde system +Operational + + +414 +002013 +Solar and infrared radiation correction +6 +Solar and infrared corrected as specified by country +Operational + + +415 +002013 +Solar and infrared radiation correction +7 +Solar corrected as specified by country +Operational + + +416 +002013 +Solar and infrared radiation correction +8 +Solar and infrared corrected as specified by GRUAN +* +Operational + + +417 +002013 +Solar and infrared radiation correction +9 +Solar corrected as specified by GRUAN +Operational + + +418 +002013 +Solar and infrared radiation correction +10-14 +Reserved +Operational + + +419 +002013 +Solar and infrared radiation correction +15 +Missing value +Operational + + +420 +002014 +Tracking technique/status of system used +Operational + + +421 +002015 +Radiosonde completeness +0 +Reserved +Operational + + +422 +002015 +Radiosonde completeness +1 +Pressure only radiosonde +Operational + + +423 +002015 +Radiosonde completeness +2 +Pressure only radiosonde plus transponder +Operational + + +424 +002015 +Radiosonde completeness +3 +Pressure only radiosonde plus radar reflector +Operational + + +425 +002015 +Radiosonde completeness +4 +No-pressure radiosonde plus transponder +Operational + + +426 +002015 +Radiosonde completeness +5 +No-pressure radiosonde plus radar reflector +Operational + + +427 +002015 +Radiosonde completeness +6-14 +Reserved +Operational + + +428 +002015 +Radiosonde completeness +15 +Missing value +Operational + + +429 +002016 +Radiosonde configuration +1 +Train regulator +Operational + + +430 +002016 +Radiosonde configuration +2 +Light unit +Operational + + +431 +002016 +Radiosonde configuration +3 +Parachute +Operational + + +432 +002016 +Radiosonde configuration +4 +Rooftop release +Operational + + +433 +002016 +Radiosonde configuration +All 5 +Missing value +Operational + + +434 +002017 +Correction algorithms for humidity measurements +0 +No corrections +Operational + + +435 +002017 +Correction algorithms for humidity measurements +1 +Time lag correction provided by the manufacturer +Operational + + +436 +002017 +Correction algorithms for humidity measurements +2 +Solar radiation correction provided by the manufacturer +Operational + + +437 +002017 +Correction algorithms for humidity measurements +3 +Solar radiation and time lag correction provided by the manufacturer +Operational + + +438 +002017 +Correction algorithms for humidity measurements +4-6 +Reserved +Operational + + +439 +002017 +Correction algorithms for humidity measurements +7 +GRUAN solar radiation and time lag correction +Operational + + +440 +002017 +Correction algorithms for humidity measurements +8-30 +Reserved +Operational + + +441 +002017 +Correction algorithms for humidity measurements +31 +Missing value +Operational + + +442 +002019 +Satellite instruments +Operational + + +443 +002020 +Satellite classification +0 +Nimbus +Operational + + +444 +002020 +Satellite classification +1 +VTPR +Operational + + +445 +002020 +Satellite classification +2 +Tiros 1 (Tiros, NOAA-6 to NOAA-13) +Operational + + +446 +002020 +Satellite classification +3 +Tiros 2 (NOAA-14 onwards) +Operational + + +447 +002020 +Satellite classification +10 +EOS +Operational + + +448 +002020 +Satellite classification +20 +GPM-core +Operational + + +449 +002020 +Satellite classification +31 +DMSP +Operational + + +450 +002020 +Satellite classification +61 +EUMETSAT Polar System (EPS) +Operational + + +451 +002020 +Satellite classification +91 +ERS +Operational + + +452 +002020 +Satellite classification +92 +Sentinel-3 +Operational + + +453 +002020 +Satellite classification +121 +ADEOS +Operational + + +454 +002020 +Satellite classification +122 +GCOM +Operational + + +455 +002020 +Satellite classification +241 +GOES +Operational + + +456 +002020 +Satellite classification +261 +JASON +Operational + + +457 +002020 +Satellite classification +271 +GMS +Operational + + +458 +002020 +Satellite classification +272 +MTSAT +Operational + + +459 +002020 +Satellite classification +273 +Himawari +Operational + + +460 +002020 +Satellite classification +281 +COMS +Operational + + +461 +002020 +Satellite classification +301 +INSAT +Operational + + +462 +002020 +Satellite classification +331 +METEOSAT Operational Programme (MOP) +Operational + + +463 +002020 +Satellite classification +332 +METEOSAT Transitional Programme (MTP) +Operational + + +464 +002020 +Satellite classification +333 +METEOSAT Second Generation Programme (MSG) +Operational + + +465 +002020 +Satellite classification +351 +GOMS +Operational + + +466 +002020 +Satellite classification +380 +FY-1 +Operational + + +467 +002020 +Satellite classification +381 +FY-2 +Operational + + +468 +002020 +Satellite classification +382 +FY-3 +Operational + + +469 +002020 +Satellite classification +383 +FY-4 +Operational + + +470 +002020 +Satellite classification +384-400 +Reserved +Operational + + +471 +002020 +Satellite classification +401 +GPS +Operational + + +472 +002020 +Satellite classification +402 +GLONASS +Operational + + +473 +002020 +Satellite classification +403 +GALILEO +Operational + + +474 +002020 +Satellite classification +404 +BDS (BeiDou navigation satellite system) +Operational + + +475 +002020 +Satellite classification +405-510 +Reserved +Operational + + +476 +002020 +Satellite classification +511 +Missing value +Operational + + +477 +002021 +Satellite instrument data used in processing +1 +High-resolution infrared sounder (HIRS) +Operational + + +478 +002021 +Satellite instrument data used in processing +2 +Microwave sounding unit (MSU) +Operational + + +479 +002021 +Satellite instrument data used in processing +3 +Stratospheric sounding unit (SSU) +Operational + + +480 +002021 +Satellite instrument data used in processing +4 +AMI (advanced microwave instrument) wind mode +Operational + + +481 +002021 +Satellite instrument data used in processing +5 +AMI (advanced microwave instrument) wave mode +Operational + + +482 +002021 +Satellite instrument data used in processing +6 +AMI (advanced microwave instrument) image mode +Operational + + +483 +002021 +Satellite instrument data used in processing +7 +Radar altimeter +Operational + + +484 +002021 +Satellite instrument data used in processing +8 +ATSR (along-track scanning radiometer) +Operational + + +485 +002021 +Satellite instrument data used in processing +All 9 +Missing value +Operational + + +486 +002022 +Satellite data-processing technique used +1 +Processing technique not defined +Operational + + +487 +002022 +Satellite data-processing technique used +2 +Automated statistical regression +Operational + + +488 +002022 +Satellite data-processing technique used +3 +Clear path +Operational + + +489 +002022 +Satellite data-processing technique used +4 +Partly cloudy path +Operational + + +490 +002022 +Satellite data-processing technique used +5 +Cloudy path +Operational + + +491 +002022 +Satellite data-processing technique used +6-7 +Reserved +Operational + + +492 +002022 +Satellite data-processing technique used +All 8 +Missing value +Operational + + +493 +002023 +Satellite-derived wind computation method +0 +Reserved +Operational + + +494 +002023 +Satellite-derived wind computation method +1 +Wind derived from cloud motion observed in the infrared channel +Operational + + +495 +002023 +Satellite-derived wind computation method +2 +Wind derived from cloud motion observed in the visible channel +Operational + + +496 +002023 +Satellite-derived wind computation method +3 +Wind derived from cloud motion observed in the water vapour channel +Operational + + +497 +002023 +Satellite-derived wind computation method +4 +Wind derived from motion observed in a combination of spectral channels +Operational + + +498 +002023 +Satellite-derived wind computation method +5 +Wind derived from motion observed in the water vapour channel in clear air +Operational + + +499 +002023 +Satellite-derived wind computation method +6 +Wind derived from motion observed in the ozone channel +Operational + + +500 +002023 +Satellite-derived wind computation method +7 +Wind derived from motion observed in water vapour channel (cloud or clear air not specified) +Operational + + +501 +002023 +Satellite-derived wind computation method +8-12 +Reserved +Operational + + +502 +002023 +Satellite-derived wind computation method +13 +Root-mean-square +Operational + + +503 +002023 +Satellite-derived wind computation method +14 +Reserved +Operational + + +504 +002023 +Satellite-derived wind computation method +15 +Missing value +Operational + + +505 +002024 +Integrated mean humidity computational method +0 +Reserved +Operational + + +506 +002024 +Integrated mean humidity computational method +1 +Table with full range of humidity variation in layer +Operational + + +507 +002024 +Integrated mean humidity computational method +2 +Regression technique on 2 humidity values in layer +Operational + + +508 +002024 +Integrated mean humidity computational method +3-14 +Reserved +Operational + + +509 +002024 +Integrated mean humidity computational method +15 +Missing value +Operational + + +510 +002025 +Satellite channel(s) used in computation +1 +Reserved +Operational + + +511 +002025 +Satellite channel(s) used in computation +Group 1 - Layer precipitable water for the layers: surface to 700 hPa, 700 to 500 hPa, and 500 to 300 hPa +Operational + + +512 +002025 +Satellite channel(s) used in computation +2 +HIRS +Operational + + +513 +002025 +Satellite channel(s) used in computation +3 +MSU +Operational + + +514 +002025 +Satellite channel(s) used in computation +4-5 +Reserved +Operational + + +515 +002025 +Satellite channel(s) used in computation +Group 2 - Tropopause temperature and pressure +Operational + + +516 +002025 +Satellite channel(s) used in computation +6 +HIRS +Operational + + +517 +002025 +Satellite channel(s) used in computation +7 +MSU +Operational + + +518 +002025 +Satellite channel(s) used in computation +8-9 +Reserved +Operational + + +519 +002025 +Satellite channel(s) used in computation +Group 3 - Total ozone +Operational + + +520 +002025 +Satellite channel(s) used in computation +10 +HIRS (1, 2, 3, 8, 9, 16, 17) +Operational + + +521 +002025 +Satellite channel(s) used in computation +11 +HIRS (1, 2, 3, 9, 17) +Operational + + +522 +002025 +Satellite channel(s) used in computation +12 +MSU +Operational + + +523 +002025 +Satellite channel(s) used in computation +13-14 +Reserved +Operational + + +524 +002025 +Satellite channel(s) used in computation +Group 4 - Mean temperature for the layers: surface to 850 hPa, 850 to 700 hPa, 700 to 500 hPa, 500 to 400 hPa, 400 to 300 hPa, 300 to 200 hPa, and 200 to 100 hPa +Operational + + +525 +002025 +Satellite channel(s) used in computation +15 +HIRS +Operational + + +526 +002025 +Satellite channel(s) used in computation +16 +HIRS +* +Operational + + +527 +002025 +Satellite channel(s) used in computation +17 +MSU +Operational + + +528 +002025 +Satellite channel(s) used in computation +18 +SKINTK (ocean only) +Operational + + +529 +002025 +Satellite channel(s) used in computation +19-20 +Reserved +Operational + + +530 +002025 +Satellite channel(s) used in computation +Group 5 - Channel combinations used to obtain mean temperatures for the layers 100 to 70 hPa, 70 to 50 hPa, 50 to 30 hPa, 30 to 10 hPa, 10 to 5 hPa, 5 to 2 hPa, 2 to 1 hPa, 1 to 0.4 hPa +Operational + + +531 +002025 +Satellite channel(s) used in computation +21 +HIRS +* +Operational + + +532 +002025 +Satellite channel(s) used in computation +22 +SSU +Operational + + +533 +002025 +Satellite channel(s) used in computation +23 +MSU (3, 4) +Operational + + +534 +002025 +Satellite channel(s) used in computation +24 +Reserved +Operational + + +535 +002025 +Satellite channel(s) used in computation +All 25 +Missing value +Operational + + +536 +002030 +Method of current measurement +0 +Reserved +Operational + + +537 +002030 +Method of current measurement +1 +ADCP (Acoustic Doppler Current Profiler) +* +Operational + + +538 +002030 +Method of current measurement +2 +GEK (Geomagnetic ElectroKinetograph) +Operational + + +539 +002030 +Method of current measurement +3 +Ship's set and drift determined by fixes 3-6 hours apart +Operational + + +540 +002030 +Method of current measurement +4 +Ship's set and drift determined by fixes more than 6 hours but less than 12 hours apart +Operational + + +541 +002030 +Method of current measurement +5 +Drift of buoy +Operational + + +542 +002030 +Method of current measurement +6 +ADCP (Acoustic Doppler Current Profiler) +Operational + + +543 +002030 +Method of current measurement +7 +Missing value +Operational + + +544 +002031 +Duration and time of current measurement +0 +Reserved +Operational + + +545 +002031 +Duration and time of current measurement +1 +Instantaneous +between H - 1 and H +Operational + + +546 +002031 +Duration and time of current measurement +2 +Averaged over 3 min or less +between H - 1 and H +Operational + + +547 +002031 +Duration and time of current measurement +3 +Averaged over more than 3 min, but 6 min at the most +between H - 1 and H +Operational + + +548 +002031 +Duration and time of current measurement +4 +Averaged over more than 6 min, but 12 min at the most +between H - 1 and H +Operational + + +549 +002031 +Duration and time of current measurement +5 +Instantaneous +between H - 2 and H - 1 +Operational + + +550 +002031 +Duration and time of current measurement +6 +Averaged over 3 min or less +between H - 2 and H - 1 +Operational + + +551 +002031 +Duration and time of current measurement +7 +Averaged over more than 3 min, but 6 min at the most +between H - 2 and H - 1 +Operational + + +552 +002031 +Duration and time of current measurement +8 +Averaged over more than 6 min, but 12 min at the most +between H - 2 and H - 1 +Operational + + +553 +002031 +Duration and time of current measurement +9 +Vector or Doppler current profiling method not used +Operational + + +554 +002031 +Duration and time of current measurement +10 +Reserved +Operational + + +555 +002031 +Duration and time of current measurement +11 +1 hour or less +Operational + + +556 +002031 +Duration and time of current measurement +12 +More than 1 hour but 2 hours at the most +Operational + + +557 +002031 +Duration and time of current measurement +13 +More than 2 hours but 4 hours at the most +Operational + + +558 +002031 +Duration and time of current measurement +14 +More than 4 hours but 8 hours at the most +Operational + + +559 +002031 +Duration and time of current measurement +15 +More than 8 hours but 12 hours at the most +Operational + + +560 +002031 +Duration and time of current measurement +16 +More than 12 hours but 18 hours at the most +Operational + + +561 +002031 +Duration and time of current measurement +17 +More than 18 hours but 24 hours at the most +Operational + + +562 +002031 +Duration and time of current measurement +18 +Reserved +Operational + + +563 +002031 +Duration and time of current measurement +19 +Drift method not used +Operational + + +564 +002031 +Duration and time of current measurement +20-30 +Reserved +Operational + + +565 +002031 +Duration and time of current measurement +31 +Missing value +Operational + + +566 +002032 +Indicator for digitization +0 +Values at selected depths (data points fixed by the instrument or selected by any other method) +Operational + + +567 +002032 +Indicator for digitization +1 +Values at selected depths (data points taken from traces at significant depths) +Operational + + +568 +002032 +Indicator for digitization +2 +Reserved +Operational + + +569 +002032 +Indicator for digitization +3 +Missing value +Operational + + +570 +002033 +Method of salinity/depth measurement +0 +No salinity measured +Operational + + +571 +002033 +Method of salinity/depth measurement +1 +In situ sensor, accuracy better than 0.02 ‰ +Operational + + +572 +002033 +Method of salinity/depth measurement +2 +In situ sensor, accuracy less than 0.02 ‰ +Operational + + +573 +002033 +Method of salinity/depth measurement +3 +Sample analysis +Operational + + +574 +002033 +Method of salinity/depth measurement +4-6 +Reserved +Operational + + +575 +002033 +Method of salinity/depth measurement +7 +Missing value +Operational + + +576 +002034 +Drogue type +0 +Unspecified drogue +Operational + + +577 +002034 +Drogue type +1 +Holey sock +Operational + + +578 +002034 +Drogue type +2 +TRISTAR +Operational + + +579 +002034 +Drogue type +3 +Window shade +Operational + + +580 +002034 +Drogue type +4 +Parachute +Operational + + +581 +002034 +Drogue type +5 +Non-Lagrangian sea anchor +Operational + + +582 +002034 +Drogue type +6-30 +Reserved (to be developed) +Operational + + +583 +002034 +Drogue type +31 +Missing value +Operational + + +584 +002036 +Buoy type +0 +Drifting buoy +Operational + + +585 +002036 +Buoy type +1 +Fixed buoy +Operational + + +586 +002036 +Buoy type +2 +Subsurface float (moving) +Operational + + +587 +002036 +Buoy type +3 +Missing value +Operational + + +588 +002037 +Method of tidal observation +0 +Reserved +Operational + + +589 +002037 +Method of tidal observation +1 +Manual reading from vertical tide staff +Operational + + +590 +002037 +Method of tidal observation +2 +Manual reading from single automatic recorder at station +Operational + + +591 +002037 +Method of tidal observation +3 +Manual reading from multiple automatic recorders at station +Operational + + +592 +002037 +Method of tidal observation +4 +Automatic reading from single automatic recorder at station without level reference check +Operational + + +593 +002037 +Method of tidal observation +5 +Automatic reading from single automatic recorder at station with level reference check, or from multiple automatic recorders +Operational + + +594 +002037 +Method of tidal observation +6 +Reserved +Operational + + +595 +002037 +Method of tidal observation +7 +Missing value +Operational + + +596 +002038 +Method of water temperature and/or salinity measurement +0 +Ship intake +Operational + + +597 +002038 +Method of water temperature and/or salinity measurement +1 +Bucket +Operational + + +598 +002038 +Method of water temperature and/or salinity measurement +2 +Hull contact sensor +Operational + + +599 +002038 +Method of water temperature and/or salinity measurement +3 +Reversing thermometer +Operational + + +600 +002038 +Method of water temperature and/or salinity measurement +4 +STD/CTD sensor +Operational + + +601 +002038 +Method of water temperature and/or salinity measurement +5 +Mechanical BT +Operational + + +602 +002038 +Method of water temperature and/or salinity measurement +6 +Expendable BT +Operational + + +603 +002038 +Method of water temperature and/or salinity measurement +7 +Digital BT +Operational + + +604 +002038 +Method of water temperature and/or salinity measurement +8 +Thermistor chain +Operational + + +605 +002038 +Method of water temperature and/or salinity measurement +9 +Infrared scanner +Operational + + +606 +002038 +Method of water temperature and/or salinity measurement +10 +Microwave scanner +Operational + + +607 +002038 +Method of water temperature and/or salinity measurement +11 +Infrared radiometer +Operational + + +608 +002038 +Method of water temperature and/or salinity measurement +12 +In-line thermosalinograph +Operational + + +609 +002038 +Method of water temperature and/or salinity measurement +13 +Towed body +Operational + + +610 +002038 +Method of water temperature and/or salinity measurement +14 +Other +Operational + + +611 +002038 +Method of water temperature and/or salinity measurement +15 +Missing value +Operational + + +612 +002039 +Method of wet-bulb temperature measurement +0 +Measured wet-bulb temperature +Operational + + +613 +002039 +Method of wet-bulb temperature measurement +1 +Iced bulb measured wet-bulb temperature +Operational + + +614 +002039 +Method of wet-bulb temperature measurement +2 +Computed wet-bulb temperature +Operational + + +615 +002039 +Method of wet-bulb temperature measurement +3 +Iced bulb computed wet-bulb temperature +Operational + + +616 +002039 +Method of wet-bulb temperature measurement +4-6 +Reserved +Operational + + +617 +002039 +Method of wet-bulb temperature measurement +7 +Missing value +Operational + + +618 +002040 +Method of removing velocity and motion of platform from current +0 +Ship's motion removed by averaging +Ship's velocity removed by bottom tracking +Operational + + +619 +002040 +Method of removing velocity and motion of platform from current +1 +Ship's motion removed by motion compensation +Ship's velocity removed by bottom tracking +Operational + + +620 +002040 +Method of removing velocity and motion of platform from current +2 +Ship's motion not removed +Ship's velocity removed by bottom tracking +Operational + + +621 +002040 +Method of removing velocity and motion of platform from current +3 +Ship's motion removed by averaging +Ship's velocity removed by navigation +Operational + + +622 +002040 +Method of removing velocity and motion of platform from current +4 +Ship's motion removed by motion compensation +Ship's velocity removed by navigation +Operational + + +623 +002040 +Method of removing velocity and motion of platform from current +5 +Ship's motion not removed +Ship's velocity removed by navigation +Operational + + +624 +002040 +Method of removing velocity and motion of platform from current +6 +Doppler current profiling method not used +Operational + + +625 +002040 +Method of removing velocity and motion of platform from current +7-14 +Reserved +Operational + + +626 +002040 +Method of removing velocity and motion of platform from current +15 +Missing value +Operational + + +627 +002041 +Method for estimating reports related to synoptic features +0 +Information based on manual analysis +Operational + + +628 +002041 +Method for estimating reports related to synoptic features +1 +Information based on computer analysis +Operational + + +629 +002041 +Method for estimating reports related to synoptic features +2 +Information based on data assimilation +Operational + + +630 +002041 +Method for estimating reports related to synoptic features +3 +Information based on computer analysis or data assimilation manually modified +Operational + + +631 +002041 +Method for estimating reports related to synoptic features +4-9 +Reserved +Operational + + +632 +002041 +Method for estimating reports related to synoptic features +10 +Information based on the numerical weather prediction +Operational + + +633 +002041 +Method for estimating reports related to synoptic features +11-62 +Reserved for future use +Operational + + +634 +002041 +Method for estimating reports related to synoptic features +63 +Missing value +Operational + + +635 +002042 +Indicator for sea-surface current speed +0 +Value originally reported in m/s +Operational + + +636 +002042 +Indicator for sea-surface current speed +1 +Value originally reported in knots +Operational + + +637 +002042 +Indicator for sea-surface current speed +2 +No sea current data available +Operational + + +638 +002042 +Indicator for sea-surface current speed +3 +Missing value +Operational + + +639 +002044 +Indicator for method of calculating spectral wave data +0 +Reserved for future use +Operational + + +640 +002044 +Indicator for method of calculating spectral wave data +1 +Longuet-Higgins (1964) +Operational + + +641 +002044 +Indicator for method of calculating spectral wave data +2 +Longuet-Higgins (F3 method) +Operational + + +642 +002044 +Indicator for method of calculating spectral wave data +3 +Maximum likelihood method +Operational + + +643 +002044 +Indicator for method of calculating spectral wave data +4 +Maximum entropy method +Operational + + +644 +002044 +Indicator for method of calculating spectral wave data +5-14 +Reserved +Operational + + +645 +002044 +Indicator for method of calculating spectral wave data +15 +Missing value +Operational + + +646 +002045 +Indicator for type of platform +0 +Sea station +Operational + + +647 +002045 +Indicator for type of platform +1 +Automatic data buoy +Operational + + +648 +002045 +Indicator for type of platform +2 +Aircraft +Operational + + +649 +002045 +Indicator for type of platform +3 +Satellite +Operational + + +650 +002045 +Indicator for type of platform +4-14 +Reserved +Operational + + +651 +002045 +Indicator for type of platform +15 +Missing value +Operational + + +652 +002046 +Wave measurement instrumentation +0 +Reserved for future use +Operational + + +653 +002046 +Wave measurement instrumentation +1 +Heave sensor +Operational + + +654 +002046 +Wave measurement instrumentation +2 +Slope sensor +Operational + + +655 +002046 +Wave measurement instrumentation +3-14 +Reserved +Operational + + +656 +002046 +Wave measurement instrumentation +15 +Missing value +Operational + + +657 +002047 +Deep-ocean tsunameter type +0 +Reserved +Operational + + +658 +002047 +Deep-ocean tsunameter type +1 +DART II (PMEL) +Operational + + +659 +002047 +Deep-ocean tsunameter type +2 +DART ETD +Operational + + +660 +002047 +Deep-ocean tsunameter type +3 +SAIC Tsunami Buoy (STB) +Operational + + +661 +002047 +Deep-ocean tsunameter type +4 +GFZ - Potsdam +Operational + + +662 +002047 +Deep-ocean tsunameter type +5 +INCOIS (India) +Operational + + +663 +002047 +Deep-ocean tsunameter type +6 +InaBuoy (Indonesia) +Operational + + +664 +002047 +Deep-ocean tsunameter type +7 +Envirtech +Operational + + +665 +002047 +Deep-ocean tsunameter type +8-99 +Reserved +Operational + + +666 +002047 +Deep-ocean tsunameter type +100-126 +Not used +Operational + + +667 +002047 +Deep-ocean tsunameter type +127 +Missing value +Operational + + +668 +002048 +Satellite sensor indicator +0 +HIRS +Operational + + +669 +002048 +Satellite sensor indicator +1 +MSU +Operational + + +670 +002048 +Satellite sensor indicator +2 +SSU +Operational + + +671 +002048 +Satellite sensor indicator +3 +AMSU-A +Operational + + +672 +002048 +Satellite sensor indicator +4 +AMSU-B +Operational + + +673 +002048 +Satellite sensor indicator +5 +AVHRR +Operational + + +674 +002048 +Satellite sensor indicator +6 +SSMI +Operational + + +675 +002048 +Satellite sensor indicator +7 +NSCAT +Operational + + +676 +002048 +Satellite sensor indicator +8 +SEAWINDS +Operational + + +677 +002048 +Satellite sensor indicator +9 +POSEIDON altimeter +Operational + + +678 +002048 +Satellite sensor indicator +10 +JMR (JASON Microwave Radiometer) +Operational + + +679 +002048 +Satellite sensor indicator +11 +MHS +Operational + + +680 +002048 +Satellite sensor indicator +12 +ASCAT +Operational + + +681 +002048 +Satellite sensor indicator +13-14 +Reserved +Operational + + +682 +002048 +Satellite sensor indicator +15 +Missing value +Operational + + +683 +002049 +Geostationary satellite data-processing technique used +1 +Processing technique not defined +Operational + + +684 +002049 +Geostationary satellite data-processing technique used +2 +Simultaneous physical retrieval +Operational + + +685 +002049 +Geostationary satellite data-processing technique used +3 +Clear sounding +Operational + + +686 +002049 +Geostationary satellite data-processing technique used +4 +Cloudy sounding +Operational + + +687 +002049 +Geostationary satellite data-processing technique used +5-7 +Reserved for future use +Operational + + +688 +002049 +Geostationary satellite data-processing technique used +All 8 +Missing value +Operational + + +689 +002050 +Geostationary sounder satellite channels used +1 +1 +14.71 +Operational + + +690 +002050 +Geostationary sounder satellite channels used +2 +2 +14.37 +Operational + + +691 +002050 +Geostationary sounder satellite channels used +3 +3 +14.06 +Operational + + +692 +002050 +Geostationary sounder satellite channels used +4 +4 +13.64 +Operational + + +693 +002050 +Geostationary sounder satellite channels used +5 +5 +13.37 +Operational + + +694 +002050 +Geostationary sounder satellite channels used +6 +6 +12.66 +Operational + + +695 +002050 +Geostationary sounder satellite channels used +7 +7 +12.02 +Operational + + +696 +002050 +Geostationary sounder satellite channels used +8 +8 +11.03 +Operational + + +697 +002050 +Geostationary sounder satellite channels used +9 +9 +9.71 +Operational + + +698 +002050 +Geostationary sounder satellite channels used +10 +10 +7.43 +Operational + + +699 +002050 +Geostationary sounder satellite channels used +11 +11 +7.02 +Operational + + +700 +002050 +Geostationary sounder satellite channels used +12 +12 +6.51 +Operational + + +701 +002050 +Geostationary sounder satellite channels used +13 +13 +4.57 +Operational + + +702 +002050 +Geostationary sounder satellite channels used +14 +14 +4.52 +Operational + + +703 +002050 +Geostationary sounder satellite channels used +15 +15 +4.45 +Operational + + +704 +002050 +Geostationary sounder satellite channels used +16 +16 +4.13 +Operational + + +705 +002050 +Geostationary sounder satellite channels used +17 +17 +3.98 +Operational + + +706 +002050 +Geostationary sounder satellite channels used +18 +18 +3.74 +Operational + + +707 +002050 +Geostationary sounder satellite channels used +19 +19 +0.969 +Operational + + +708 +002050 +Geostationary sounder satellite channels used +All 20 +Missing value +Operational + + +709 +002051 +Indicator to specify observing method for extreme temperatures +0 +Reserved +Operational + + +710 +002051 +Indicator to specify observing method for extreme temperatures +1 +Maximum/minimum thermometers +Operational + + +711 +002051 +Indicator to specify observing method for extreme temperatures +2 +Automated instruments +Operational + + +712 +002051 +Indicator to specify observing method for extreme temperatures +3 +Thermograph +Operational + + +713 +002051 +Indicator to specify observing method for extreme temperatures +4-14 +Reserved +Operational + + +714 +002051 +Indicator to specify observing method for extreme temperatures +15 +Missing value +Operational + + +715 +002052 +Geostationary imager satellite channels used +1 +1 +0.55 - 0.75 +Operational + + +716 +002052 +Geostationary imager satellite channels used +2 +2 +3.9 +Operational + + +717 +002052 +Geostationary imager satellite channels used +3 +3 +6.7 +Operational + + +718 +002052 +Geostationary imager satellite channels used +4 +4 +10.7 +Operational + + +719 +002052 +Geostationary imager satellite channels used +5 +5 +12.0 +Operational + + +720 +002052 +Geostationary imager satellite channels used +All 6 +Missing value +Operational + + +721 +002053 +GOES-I/M brightness temperature characteristics +0 +Observed brightness temperature +Operational + + +722 +002053 +GOES-I/M brightness temperature characteristics +1 +Brightness temperature with bias correction applied +Operational + + +723 +002053 +GOES-I/M brightness temperature characteristics +2 +Brightness temperature calculated from first guess +Operational + + +724 +002053 +GOES-I/M brightness temperature characteristics +3 +Brightness temperature calculated from sounding +Operational + + +725 +002053 +GOES-I/M brightness temperature characteristics +4-14 +Reserved +Operational + + +726 +002053 +GOES-I/M brightness temperature characteristics +15 +Missing value +Operational + + +727 +002054 +GOES-I/M soundings parameter characteristics +0 +Parameter derived using observed sounder brightness temperatures +Operational + + +728 +002054 +GOES-I/M soundings parameter characteristics +1 +Parameter derived using observed imager brightness temperatures +Operational + + +729 +002054 +GOES-I/M soundings parameter characteristics +2 +Parameter derived using first guess information +Operational + + +730 +002054 +GOES-I/M soundings parameter characteristics +3 +Parameter derived using NMC analysis information +Operational + + +731 +002054 +GOES-I/M soundings parameter characteristics +4 +Parameter derived using radiosonde information +Operational + + +732 +002054 +GOES-I/M soundings parameter characteristics +5-14 +Reserved +Operational + + +733 +002054 +GOES-I/M soundings parameter characteristics +15 +Missing value +Operational + + +734 +002055 +Geostationary soundings statistical parameters +0 +Statistics generated comparing retrieval versus radiosonde +Operational + + +735 +002055 +Geostationary soundings statistical parameters +1 +Statistics generated comparing retrieval versus first guess +Operational + + +736 +002055 +Geostationary soundings statistical parameters +2 +Statistics generated comparing radiosonde versus first guess +Operational + + +737 +002055 +Geostationary soundings statistical parameters +3 +Statistics generated comparing observed versus retrieval +Operational + + +738 +002055 +Geostationary soundings statistical parameters +4 +Statistics generated comparing observed versus first guess +Operational + + +739 +002055 +Geostationary soundings statistical parameters +5 +Statistics generated comparing radiosonde versus imager +Operational + + +740 +002055 +Geostationary soundings statistical parameters +6 +Statistics generated comparing radiosonde versus sounder +Operational + + +741 +002055 +Geostationary soundings statistical parameters +7 +Statistics generated for radiosonde +Operational + + +742 +002055 +Geostationary soundings statistical parameters +8 +Statistics generated for first guess +Operational + + +743 +002055 +Geostationary soundings statistical parameters +9-14 +Reserved +Operational + + +744 +002055 +Geostationary soundings statistical parameters +15 +Missing value +Operational + + +745 +002056 +Geostationary soundings accuracy statistics +0 +Sums of differences +Operational + + +746 +002056 +Geostationary soundings accuracy statistics +1 +Sums of squared differences +Operational + + +747 +002056 +Geostationary soundings accuracy statistics +2 +Sample size +Operational + + +748 +002056 +Geostationary soundings accuracy statistics +3 +Minimum difference +Operational + + +749 +002056 +Geostationary soundings accuracy statistics +4 +Maximum difference +Operational + + +750 +002056 +Geostationary soundings accuracy statistics +5-14 +Reserved +Operational + + +751 +002056 +Geostationary soundings accuracy statistics +15 +Missing value +Operational + + +752 +002057 +Origin of first-guess information for GOES-I/M soundings +0 +Nested Grid Model (NGM) +Operational + + +753 +002057 +Origin of first-guess information for GOES-I/M soundings +1 +Aviation Model (AVN) +Operational + + +754 +002057 +Origin of first-guess information for GOES-I/M soundings +2 +Medium Range Forecast (MRF) Model +Operational + + +755 +002057 +Origin of first-guess information for GOES-I/M soundings +3 +Global Data Assimilation System (GDAS) Forecast Model +Operational + + +756 +002057 +Origin of first-guess information for GOES-I/M soundings +4 +Prior soundings (within 3 hours of current time) +Operational + + +757 +002057 +Origin of first-guess information for GOES-I/M soundings +5 +Climatology +Operational + + +758 +002057 +Origin of first-guess information for GOES-I/M soundings +6-14 +Reserved +Operational + + +759 +002057 +Origin of first-guess information for GOES-I/M soundings +15 +Missing value +Operational + + +760 +002058 +Valid times of first-guess information for GOES-I/M soundings +0 +12 hour and 18 hour +Operational + + +761 +002058 +Valid times of first-guess information for GOES-I/M soundings +1 +18 hour and 24 hour +Operational + + +762 +002058 +Valid times of first-guess information for GOES-I/M soundings +2 +6 hour and 12 hour +Operational + + +763 +002058 +Valid times of first-guess information for GOES-I/M soundings +3 +Greater than 24 hours +Operational + + +764 +002058 +Valid times of first-guess information for GOES-I/M soundings +4-14 +Reserved +Operational + + +765 +002058 +Valid times of first-guess information for GOES-I/M soundings +15 +Missing value +Operational + + +766 +002059 +Origin of analysis information for GOES-I/M soundings +0 +NCEP Nested Grid Model (NGM) Analysis +Operational + + +767 +002059 +Origin of analysis information for GOES-I/M soundings +1 +NCEP Aviation Model (AVN) Analysis +Operational + + +768 +002059 +Origin of analysis information for GOES-I/M soundings +2 +NCEP Medium Range Forecast (MRF) Model Analysis +Operational + + +769 +002059 +Origin of analysis information for GOES-I/M soundings +3 +NCEP Global Data Assimilation System (GDAS) Forecast Model Analysis +Operational + + +770 +002059 +Origin of analysis information for GOES-I/M soundings +4-14 +Reserved +Operational + + +771 +002059 +Origin of analysis information for GOES-I/M soundings +15 +Missing value +Operational + + +772 +002060 +Origin of surface information for GOES-I/M soundings +0 +Current surface hourly reports +Operational + + +773 +002060 +Origin of surface information for GOES-I/M soundings +1 +Current ship reports +Operational + + +774 +002060 +Origin of surface information for GOES-I/M soundings +2 +Current buoy reports +Operational + + +775 +002060 +Origin of surface information for GOES-I/M soundings +3 +One hour old surface hourly reports +Operational + + +776 +002060 +Origin of surface information for GOES-I/M soundings +4 +One hour old ship reports +Operational + + +777 +002060 +Origin of surface information for GOES-I/M soundings +5 +One hour old buoy reports +Operational + + +778 +002060 +Origin of surface information for GOES-I/M soundings +6-14 +Reserved +Operational + + +779 +002060 +Origin of surface information for GOES-I/M soundings +15 +Missing value +Operational + + +780 +002061 +Aircraft navigational system +0 +Inertial navigation system +Operational + + +781 +002061 +Aircraft navigational system +1 +OMEGA +Operational + + +782 +002061 +Aircraft navigational system +2-6 +Reserved +Operational + + +783 +002061 +Aircraft navigational system +7 +Missing value +Operational + + +784 +002062 +Type of aircraft data relay system +0 +ASDAR +Operational + + +785 +002062 +Type of aircraft data relay system +1 +ASDAR (ACARS also available but not operative) +Operational + + +786 +002062 +Type of aircraft data relay system +2 +ASDAR (ACARS also available and operative) +Operational + + +787 +002062 +Type of aircraft data relay system +3 +ACARS +Operational + + +788 +002062 +Type of aircraft data relay system +4 +ACARS (ASDAR also available but not operative) +Operational + + +789 +002062 +Type of aircraft data relay system +5 +ACARS (ASDAR also available and operative) +Operational + + +790 +002062 +Type of aircraft data relay system +6-14 +Reserved +Operational + + +791 +002062 +Type of aircraft data relay system +15 +Missing value +Operational + + +792 +002064 +Aircraft roll angle quality +0 +Good +Operational + + +793 +002064 +Aircraft roll angle quality +1 +Bad +Operational + + +794 +002064 +Aircraft roll angle quality +2 +Reserved +Operational + + +795 +002064 +Aircraft roll angle quality +3 +Missing value +Operational + + +796 +002066 +Radiosonde ground receiving system +0 +InterMet IMS 2000 +Operational + + +797 +002066 +Radiosonde ground receiving system +1 +InterMet IMS 1500C +Operational + + +798 +002066 +Radiosonde ground receiving system +2 +Shanghai GTC1 +Operational + + +799 +002066 +Radiosonde ground receiving system +3 +Nanjing GTC2 +Operational + + +800 +002066 +Radiosonde ground receiving system +4 +Nanjing GFE(L)1 +Operational + + +801 +002066 +Radiosonde ground receiving system +5 +MARL-A radar +Operational + + +802 +002066 +Radiosonde ground receiving system +6 +VEKTOR-M radar +Operational + + +803 +002066 +Radiosonde ground receiving system +7-61 +Reserved +Operational + + +804 +002066 +Radiosonde ground receiving system +62 +Other +Operational + + +805 +002066 +Radiosonde ground receiving system +63 +Missing value +Operational + + +806 +002070 +Original specification of latitude/longitude +0 +Actual location in seconds +Operational + + +807 +002070 +Original specification of latitude/longitude +1 +Actual location in minutes +Operational + + +808 +002070 +Original specification of latitude/longitude +2 +Actual location in degrees +Operational + + +809 +002070 +Original specification of latitude/longitude +3 +Actual location in decidegrees +Operational + + +810 +002070 +Original specification of latitude/longitude +4 +Actual location in centidegrees +Operational + + +811 +002070 +Original specification of latitude/longitude +5 +Referenced to checkpoint in seconds +Operational + + +812 +002070 +Original specification of latitude/longitude +6 +Referenced to checkpoint in minutes +Operational + + +813 +002070 +Original specification of latitude/longitude +7 +Referenced to checkpoint in degrees +Operational + + +814 +002070 +Original specification of latitude/longitude +8 +Referenced to checkpoint in decidegrees +Operational + + +815 +002070 +Original specification of latitude/longitude +9 +Referenced to checkpoint in centidegrees +Operational + + +816 +002070 +Original specification of latitude/longitude +10 +Actual location in tenths of a minute +Operational + + +817 +002070 +Original specification of latitude/longitude +11 +Referenced to checkpoint in tenths of a minute +Operational + + +818 +002070 +Original specification of latitude/longitude +12-14 +Reserved +Operational + + +819 +002070 +Original specification of latitude/longitude +15 +Missing value +Operational + + +820 +002080 +Balloon manufacturer +0 +Kaysam +Operational + + +821 +002080 +Balloon manufacturer +1 +Totex +Operational + + +822 +002080 +Balloon manufacturer +2 +KKS +Operational + + +823 +002080 +Balloon manufacturer +3 +Guangzhou Shuangyi (China) +Operational + + +824 +002080 +Balloon manufacturer +4 +ChemChina Zhuzhou (China) +Operational + + +825 +002080 +Balloon manufacturer +5-61 +Reserved +Operational + + +826 +002080 +Balloon manufacturer +62 +Other +Operational + + +827 +002080 +Balloon manufacturer +63 +Missing value +Operational + + +828 +002081 +Type of balloon +0 +GP26 +Operational + + +829 +002081 +Type of balloon +1 +GP28 +Operational + + +830 +002081 +Type of balloon +2 +GP30 +Operational + + +831 +002081 +Type of balloon +3 +HM26 +Operational + + +832 +002081 +Type of balloon +4 +HM28 +Operational + + +833 +002081 +Type of balloon +5 +HM30 +Operational + + +834 +002081 +Type of balloon +6 +SV16 +Operational + + +835 +002081 +Type of balloon +7 +Totex TA type balloons +Operational + + +836 +002081 +Type of balloon +8 +Totex TX type balloons +Operational + + +837 +002081 +Type of balloon +9-29 +Reserved +Operational + + +838 +002081 +Type of balloon +30 +Other +Operational + + +839 +002081 +Type of balloon +31 +Missing value +Operational + + +840 +002083 +Type of balloon shelter +0 +High bay +Operational + + +841 +002083 +Type of balloon shelter +1 +Low bay +Operational + + +842 +002083 +Type of balloon shelter +2 +Balloon-inflated launch system (BILS) +Operational + + +843 +002083 +Type of balloon shelter +3 +Roof-top BILS +Operational + + +844 +002083 +Type of balloon shelter +4 +Automated unmanned sounding system +Operational + + +845 +002083 +Type of balloon shelter +5-13 +Reserved +Operational + + +846 +002083 +Type of balloon shelter +14 +Other +Operational + + +847 +002083 +Type of balloon shelter +15 +Missing value +Operational + + +848 +002084 +Type of gas used in balloon +0 +Hydrogen +Operational + + +849 +002084 +Type of gas used in balloon +1 +Helium +Operational + + +850 +002084 +Type of gas used in balloon +2 +Natural gas +Operational + + +851 +002084 +Type of gas used in balloon +3-13 +Reserved +Operational + + +852 +002084 +Type of gas used in balloon +14 +Other +Operational + + +853 +002084 +Type of gas used in balloon +15 +Missing value +Operational + + +854 +002092 +Ozone profile computation method +0 +UV channel based retrieval +Operational + + +855 +002092 +Ozone profile computation method +1 +Visible channel based retrieval +Operational + + +856 +002092 +Ozone profile computation method +2 +Combined UV based retrieval and visible based retrieval +Operational + + +857 +002092 +Ozone profile computation method +3-6 +Reserved +Operational + + +858 +002092 +Ozone profile computation method +7 +Missing value +Operational + + +859 +002095 +Type of pressure sensor +0 +Capacitance aneroid +Operational + + +860 +002095 +Type of pressure sensor +1 +Derived from GPS +Operational + + +861 +002095 +Type of pressure sensor +2 +Resistive strain gauge +Operational + + +862 +002095 +Type of pressure sensor +3 +Silicon capacitor +Operational + + +863 +002095 +Type of pressure sensor +4 +Derived from radar height +Operational + + +864 +002095 +Type of pressure sensor +5-29 +Reserved +Operational + + +865 +002095 +Type of pressure sensor +30 +Other +Operational + + +866 +002095 +Type of pressure sensor +31 +Missing value +Operational + + +867 +002096 +Type of temperature sensor +0 +Rod thermistor +Operational + + +868 +002096 +Type of temperature sensor +1 +Bead thermistor +Operational + + +869 +002096 +Type of temperature sensor +2 +Capacitance bead +Operational + + +870 +002096 +Type of temperature sensor +3 +Capacitance wire +Operational + + +871 +002096 +Type of temperature sensor +4 +Resistive sensor +Operational + + +872 +002096 +Type of temperature sensor +5 +Chip thermistor +Operational + + +873 +002096 +Type of temperature sensor +6 +Mercury +Operational + + +874 +002096 +Type of temperature sensor +7 +Alcohol/glycol +Operational + + +875 +002096 +Type of temperature sensor +8-30 +Reserved for future use +Operational + + +876 +002096 +Type of temperature sensor +31 +Missing value +Operational + + +877 +002097 +Type of humidity sensor +0 +VIZ Mark II carbon hygristor +Operational + + +878 +002097 +Type of humidity sensor +1 +VIZ B2 hygristor +Operational + + +879 +002097 +Type of humidity sensor +2 +Vaisala A-Humicap +Operational + + +880 +002097 +Type of humidity sensor +3 +Vaisala H-Humicap +Operational + + +881 +002097 +Type of humidity sensor +4 +Capacitance sensor +Operational + + +882 +002097 +Type of humidity sensor +5 +Vaisala RS90 +Operational + + +883 +002097 +Type of humidity sensor +6 +Sippican Mark IIA carbon hygristor +Operational + + +884 +002097 +Type of humidity sensor +7 +Twin alternatively heated Humicap capacitance sensor +Operational + + +885 +002097 +Type of humidity sensor +8 +Humicap capacitance sensor with active de-icing method +Operational + + +886 +002097 +Type of humidity sensor +9 +Carbon hygristor +Operational + + +887 +002097 +Type of humidity sensor +10 +Psychrometer +Operational + + +888 +002097 +Type of humidity sensor +11 +Capacitive (polymer) +Operational + + +889 +002097 +Type of humidity sensor +12 +Capacitive (ceramic, including metal oxide) +Operational + + +890 +002097 +Type of humidity sensor +13 +Resistive (generic) +Operational + + +891 +002097 +Type of humidity sensor +14 +Resistive (salt polymer) +Operational + + +892 +002097 +Type of humidity sensor +15 +Resistive (conductive polymer) +Operational + + +893 +002097 +Type of humidity sensor +16 +Thermal conductivity +Operational + + +894 +002097 +Type of humidity sensor +17 +Gravimetric +Operational + + +895 +002097 +Type of humidity sensor +18 +Paper-metal coil +Operational + + +896 +002097 +Type of humidity sensor +19 +Ordinary human hair +Operational + + +897 +002097 +Type of humidity sensor +20 +Rolled hair (torsion) +Operational + + +898 +002097 +Type of humidity sensor +21 +Goldbeater's skin +Operational + + +899 +002097 +Type of humidity sensor +22 +Chilled mirror hygrometer +Operational + + +900 +002097 +Type of humidity sensor +23 +Dew cell +Operational + + +901 +002097 +Type of humidity sensor +24 +Optical absorption sensor +Operational + + +902 +002097 +Type of humidity sensor +25-30 +Reserved for future use +Operational + + +903 +002097 +Type of humidity sensor +31 +Missing value +Operational + + +904 +002099 +Polarization +0 +HH polarization +Operational + + +905 +002099 +Polarization +1 +VV polarization +Operational + + +906 +002099 +Polarization +2 +HV polarization real valued component +Operational + + +907 +002099 +Polarization +3 +HV polarization imaginary valued component +Operational + + +908 +002099 +Polarization +4-6 +Reserved +Operational + + +909 +002099 +Polarization +7 +Missing value +Operational + + +910 +002101 +Type of antenna +0 +Centre front-fed paraboloid +Operational + + +911 +002101 +Type of antenna +1 +Offset front-fed paraboloid +Operational + + +912 +002101 +Type of antenna +2 +Centre Cassegrain paraboloid +Operational + + +913 +002101 +Type of antenna +3 +Offset Cassegrain paraboloid +Operational + + +914 +002101 +Type of antenna +4 +Planar array +Operational + + +915 +002101 +Type of antenna +5 +Coaxial-collinear array +Operational + + +916 +002101 +Type of antenna +6 +Yagi elements array +Operational + + +917 +002101 +Type of antenna +7 +Microstrip +Operational + + +918 +002101 +Type of antenna +8-13 +Reserved +Operational + + +919 +002101 +Type of antenna +14 +Other +Operational + + +920 +002101 +Type of antenna +15 +Missing value +Operational + + +921 +002103 +Radome +1 +Radar antenna is protected by a radome +Operational + + +922 +002103 +Radome +All 2 +Missing value +Operational + + +923 +002104 +Antenna polarization +0 +Horizontal polarization +Operational + + +924 +002104 +Antenna polarization +1 +Vertical polarization +Operational + + +925 +002104 +Antenna polarization +2 +Right circular polarization +Operational + + +926 +002104 +Antenna polarization +3 +Left circular polarization +Operational + + +927 +002104 +Antenna polarization +4 +Horizontal and vertical polarization +Operational + + +928 +002104 +Antenna polarization +5 +Right and left circular polarization +Operational + + +929 +002104 +Antenna polarization +6 +Quasi-horizontal polarization +Operational + + +930 +002104 +Antenna polarization +7 +Quasi-vertical polarization +Operational + + +931 +002104 +Antenna polarization +8-14 +Reserved +Operational + + +932 +002104 +Antenna polarization +15 +Missing value +Operational + + +933 +002115 +Type of surface observing equipment +0 +PDB +Operational + + +934 +002115 +Type of surface observing equipment +1 +RSOIS +Operational + + +935 +002115 +Type of surface observing equipment +2 +ASOS +Operational + + +936 +002115 +Type of surface observing equipment +3 +Psychrometer +Operational + + +937 +002115 +Type of surface observing equipment +4 +F420 +Operational + + +938 +002115 +Type of surface observing equipment +5-29 +Reserved +Operational + + +939 +002115 +Type of surface observing equipment +30 +Other +Operational + + +940 +002115 +Type of surface observing equipment +31 +Missing value +Operational + + +941 +002119 +RA-2 instrument operations +0 +Intermediate frequency calibration mode (IF CAL) +Operational + + +942 +002119 +RA-2 instrument operations +1 +Built-in test equipment digital (BITE DGT) +Operational + + +943 +002119 +RA-2 instrument operations +2 +Built-in test equipment radio frequency (BITE RF) +Operational + + +944 +002119 +RA-2 instrument operations +3 +Preset tracking (PSET TRK) +Operational + + +945 +002119 +RA-2 instrument operations +4 +Preset LOOP OUT +Operational + + +946 +002119 +RA-2 instrument operations +5 +ACQUISITION +Operational + + +947 +002119 +RA-2 instrument operations +6 +TRACKING +Operational + + +948 +002119 +RA-2 instrument operations +7 +Missing value +Operational + + +949 +002131 +Sensitivity time control (STC) +1 +STC operational +Operational + + +950 +002131 +Sensitivity time control (STC) +All 2 +Missing values +Operational + + +951 +002137 +Radar dual PRF ratio +1 +3:2 +Operational + + +952 +002137 +Radar dual PRF ratio +2 +4:3 +Operational + + +953 +002137 +Radar dual PRF ratio +3 +5:4 +Operational + + +954 +002137 +Radar dual PRF ratio +4-14 +Reserved +Operational + + +955 +002137 +Radar dual PRF ratio +15 +Missing value +Operational + + +956 +002138 +Antenna rotation direction +1 +Clockwise rotation +Operational + + +957 +002138 +Antenna rotation direction +2 +Counterclockwise rotation +Operational + + +958 +002138 +Antenna rotation direction +3 +Missing value +Operational + + +959 +002139 +SIRAL instrument configuration +0 +SIRAL nominal +Operational + + +960 +002139 +SIRAL instrument configuration +1 +SIRAL redundant +Operational + + +961 +002139 +SIRAL instrument configuration +2 +Missing value +Operational + + +962 +002143 +Ozone instrument type +0 +Reserved +Operational + + +963 +002143 +Ozone instrument type +1 +Brewer spectrophotometer +Operational + + +964 +002143 +Ozone instrument type +2 +Caver Teichert +Operational + + +965 +002143 +Ozone instrument type +3 +Dobson +Operational + + +966 +002143 +Ozone instrument type +4 +Dobson (Japan) +Operational + + +967 +002143 +Ozone instrument type +5 +Ehmet +Operational + + +968 +002143 +Ozone instrument type +6 +Fecker telescope +Operational + + +969 +002143 +Ozone instrument type +7 +Hoelper +Operational + + +970 +002143 +Ozone instrument type +8 +Jodmeter +Operational + + +971 +002143 +Ozone instrument type +9 +Filter Ozonometer M-83 +Operational + + +972 +002143 +Ozone instrument type +10 +Mast +Operational + + +973 +002143 +Ozone instrument type +11 +Oxford +Operational + + +974 +002143 +Ozone instrument type +12 +Paetzold +Operational + + +975 +002143 +Ozone instrument type +13 +Regener +Operational + + +976 +002143 +Ozone instrument type +14 +Reserved for future use +Operational + + +977 +002143 +Ozone instrument type +15 +Vassy filter ozonometer +Operational + + +978 +002143 +Ozone instrument type +16 +Carbon iodide +Operational + + +979 +002143 +Ozone instrument type +17 +Surface ozone bubbler +Operational + + +980 +002143 +Ozone instrument type +18 +Filter ozonometer M-124 +Operational + + +981 +002143 +Ozone instrument type +19 +ECC sonde +Operational + + +982 +002143 +Ozone instrument type +20-126 +Reserved +Operational + + +983 +002143 +Ozone instrument type +127 +Missing value +Operational + + +984 +002144 +Light source type for Brewer spectrophotometer +0 +Direct sun +Operational + + +985 +002144 +Light source type for Brewer spectrophotometer +1 +Direct sun, attenuator #1 +Operational + + +986 +002144 +Light source type for Brewer spectrophotometer +2 +Direct sun, attenuator #2 +Operational + + +987 +002144 +Light source type for Brewer spectrophotometer +3 +Focused moon +Operational + + +988 +002144 +Light source type for Brewer spectrophotometer +4 +Focused sun +Operational + + +989 +002144 +Light source type for Brewer spectrophotometer +5 +Focused sun corrected with adjacent sky measurements +Operational + + +990 +002144 +Light source type for Brewer spectrophotometer +6 +Zenith sky +Operational + + +991 +002144 +Light source type for Brewer spectrophotometer +7-14 +Reserved +Operational + + +992 +002144 +Light source type for Brewer spectrophotometer +15 +Missing value +Operational + + +993 +002145 +Wavelength setting for Dobson instruments +0 +Wavelengths AD ordinary setting +Operational + + +994 +002145 +Wavelength setting for Dobson instruments +1 +Wavelengths BD ordinary setting +Operational + + +995 +002145 +Wavelength setting for Dobson instruments +2 +Wavelengths CD ordinary setting +Operational + + +996 +002145 +Wavelength setting for Dobson instruments +3 +Wavelengths CC' ordinary setting +Operational + + +997 +002145 +Wavelength setting for Dobson instruments +4 +Wavelengths AD focused image +Operational + + +998 +002145 +Wavelength setting for Dobson instruments +5 +Wavelengths BD focused image +Operational + + +999 +002145 +Wavelength setting for Dobson instruments +6 +Wavelengths CD focused image +Operational + + +1000 +002145 +Wavelength setting for Dobson instruments +7 +Wavelengths CC' focused image +Operational + + +1001 +002145 +Wavelength setting for Dobson instruments +8-14 +Reserved +Operational + + +1002 +002145 +Wavelength setting for Dobson instruments +15 +Missing value +Operational + + +1003 +002146 +Source conditions for Dobson instruments +0 +On direct sun +Operational + + +1004 +002146 +Source conditions for Dobson instruments +1 +On direct moon +Operational + + +1005 +002146 +Source conditions for Dobson instruments +2 +On blue zenith sky +Operational + + +1006 +002146 +Source conditions for Dobson instruments +3 +On zenith cloud (uniform stratified layer of small opacity) +Operational + + +1007 +002146 +Source conditions for Dobson instruments +4 +On zenith cloud (uniform or moderately variable layer of medium opacity) +Operational + + +1008 +002146 +Source conditions for Dobson instruments +5 +On zenith cloud (uniform or moderately variable layer of large opacity) +Operational + + +1009 +002146 +Source conditions for Dobson instruments +6 +On zenith cloud (highly variable opacity, with or without precipitation) +Operational + + +1010 +002146 +Source conditions for Dobson instruments +7 +On zenith cloud (fog) +Operational + + +1011 +002146 +Source conditions for Dobson instruments +8 +On zenith haze +Operational + + +1012 +002146 +Source conditions for Dobson instruments +9 +On direct sun through thin cloud, fog or haze +Operational + + +1013 +002146 +Source conditions for Dobson instruments +10-14 +Reserved +Operational + + +1014 +002146 +Source conditions for Dobson instruments +15 +Missing value +Operational + + +1015 +002147 +Method of transmission to collection centre +0 +Reserved +Operational + + +1016 +002147 +Method of transmission to collection centre +1 +Direct leased circuit +Operational + + +1017 +002147 +Method of transmission to collection centre +2 +Dialled up connection +Operational + + +1018 +002147 +Method of transmission to collection centre +3 +Internet ISP +Operational + + +1019 +002147 +Method of transmission to collection centre +4 +DCP via satellite (MTSAT, METEOSAT, etc.) +Operational + + +1020 +002147 +Method of transmission to collection centre +5 +VSAT +Operational + + +1021 +002147 +Method of transmission to collection centre +6 +GAN,* BGAN** +Operational + + +1022 +002147 +Method of transmission to collection centre +7 +Thiss terminal +Operational + + +1023 +002147 +Method of transmission to collection centre +8 +Iridium satellites +Operational + + +1024 +002147 +Method of transmission to collection centre +9 +Mobile telephony +Operational + + +1025 +002147 +Method of transmission to collection centre +10-62 +Reserved +Operational + + +1026 +002147 +Method of transmission to collection centre +63 +Missing value +Operational + + +1027 +002148 +Data collection and/or location system +0 +Reserved +Operational + + +1028 +002148 +Data collection and/or location system +1 +Argos +Operational + + +1029 +002148 +Data collection and/or location system +2 +GPS +Operational + + +1030 +002148 +Data collection and/or location system +3 +GOES DCP +Operational + + +1031 +002148 +Data collection and/or location system +4 +METEOSAT DCP +Operational + + +1032 +002148 +Data collection and/or location system +5 +ORBCOMM +Operational + + +1033 +002148 +Data collection and/or location system +6 +INMARSAT +Operational + + +1034 +002148 +Data collection and/or location system +7 +Iridium +Operational + + +1035 +002148 +Data collection and/or location system +8 +Iridium and GPS +Operational + + +1036 +002148 +Data collection and/or location system +9 +Argos-3 +Operational + + +1037 +002148 +Data collection and/or location system +10 +Argos-4 +Operational + + +1038 +002148 +Data collection and/or location system +11-30 +Reserved +Operational + + +1039 +002148 +Data collection and/or location system +31 +Missing value +Operational + + +1040 +002149 +Type of data buoy +0 +Unspecified drifting buoy +Operational + + +1041 +002149 +Type of data buoy +1 +Standard Lagrangian drifter (Global Drifter Programme) +Operational + + +1042 +002149 +Type of data buoy +2 +Standard FGGE type drifting buoy (non-Lagrangian meteorological drifting buoy) +Operational + + +1043 +002149 +Type of data buoy +3 +Wind measuring FGGE type drifting buoy (non-Lagrangian meteorological drifting buoy) +Operational + + +1044 +002149 +Type of data buoy +4 +Ice drifter +Operational + + +1045 +002149 +Type of data buoy +5 +SVPG Standard Lagrangian drifter with GPS +Operational + + +1046 +002149 +Type of data buoy +6 +SVP-HR drifter with high-resolution temperature or thermistor string +Operational + + +1047 +002149 +Type of data buoy +7 +Reserved +Operational + + +1048 +002149 +Type of data buoy +8 +Unspecified subsurface float +Operational + + +1049 +002149 +Type of data buoy +9 +SOFAR +Operational + + +1050 +002149 +Type of data buoy +10 +ALACE +Operational + + +1051 +002149 +Type of data buoy +11 +MARVOR +Operational + + +1052 +002149 +Type of data buoy +12 +RAFOS +Operational + + +1053 +002149 +Type of data buoy +13 +PROVOR +Operational + + +1054 +002149 +Type of data buoy +14 +SOLO +Operational + + +1055 +002149 +Type of data buoy +15 +APEX +Operational + + +1056 +002149 +Type of data buoy +16 +Unspecified moored buoy +Operational + + +1057 +002149 +Type of data buoy +17 +Nomad +Operational + + +1058 +002149 +Type of data buoy +18 +3-metre discus +Operational + + +1059 +002149 +Type of data buoy +19 +10-12-metre discus +Operational + + +1060 +002149 +Type of data buoy +20 +ODAS 30 series +Operational + + +1061 +002149 +Type of data buoy +21 +ATLAS (e.g. TAO area) +Operational + + +1062 +002149 +Type of data buoy +22 +TRITON buoy +Operational + + +1063 +002149 +Type of data buoy +23 +FLEX mooring (e.g. TIP area) +Operational + + +1064 +002149 +Type of data buoy +24 +Omnidirectional waverider +Operational + + +1065 +002149 +Type of data buoy +25 +Directional waverider +Operational + + +1066 +002149 +Type of data buoy +26 +Subsurface ARGO float +Operational + + +1067 +002149 +Type of data buoy +27 +PALACE +Operational + + +1068 +002149 +Type of data buoy +28 +NEMO +Operational + + +1069 +002149 +Type of data buoy +29 +NINJA +Operational + + +1070 +002149 +Type of data buoy +30 +Ice buoy/float (POPS or ITP) +Operational + + +1071 +002149 +Type of data buoy +31-33 +Reserved +Operational + + +1075 +002149 +Type of data buoy +34 +Mooring oceanographic +Operational + + +1076 +002149 +Type of data buoy +35 +Mooring meteorological +Operational + + +1077 +002149 +Type of data buoy +36 +Mooring multidisciplinary (OceanSITES) +Operational + + +1078 +002149 +Type of data buoy +37 +Mooring tide gauge or tsunami buoy +Operational + + +1079 +002149 +Type of data buoy +38 +Ice beacon +Operational + + +1080 +002149 +Type of data buoy +39 +Ice mass balance buoy +Operational + + +1081 +002149 +Type of data buoy +40-62 +Reserved +Operational + + +1082 +002149 +Type of data buoy +63 +Missing value +Operational + + +1083 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +0 +Reserved +Operational + + +1084 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +1 +HIRS 1 +Operational + + +1085 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +2 +HIRS 2 +Operational + + +1086 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +3 +HIRS 3 +Operational + + +1087 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +4 +HIRS 4 +Operational + + +1088 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +5 +HIRS 5 +Operational + + +1089 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +6 +HIRS 6 +Operational + + +1090 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +7 +HIRS 7 +Operational + + +1091 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +8 +HIRS 8 +Operational + + +1092 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +9 +HIRS 9 +Operational + + +1093 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +10 +HIRS 10 +Operational + + +1094 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +11 +HIRS 11 +Operational + + +1095 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +12 +HIRS 12 +Operational + + +1096 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +13 +HIRS 13 +Operational + + +1097 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +14 +HIRS 14 +Operational + + +1098 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +15 +HIRS 15 +Operational + + +1099 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +16 +HIRS 16 +Operational + + +1100 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +17 +HIRS 17 +Operational + + +1101 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +18 +HIRS 18 +Operational + + +1102 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +19 +HIRS 19 +Operational + + +1103 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +20 +HIRS 20 +Operational + + +1104 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +21 +MSU 1 +Operational + + +1105 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +22 +MSU 2 +Operational + + +1106 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +23 +MSU 3 +Operational + + +1107 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +24 +MSU 4 +Operational + + +1108 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +25 +SSU 1 +Operational + + +1109 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +26 +SSU 2 +Operational + + +1110 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +27 +SSU 3 +Operational + + +1111 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +28 +AMSU-A 1 +Operational + + +1112 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +29 +AMSU-A 2 +Operational + + +1113 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +30 +AMSU-A 3 +Operational + + +1114 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +31 +AMSU-A 4 +Operational + + +1115 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +32 +AMSU-A 5 +Operational + + +1116 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +33 +AMSU-A 6 +Operational + + +1117 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +34 +AMSU-A 7 +Operational + + +1118 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +35 +AMSU-A 8 +Operational + + +1119 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +36 +AMSU-A 9 +Operational + + +1120 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +37 +AMSU-A 10 +Operational + + +1121 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +38 +AMSU-A 11 +Operational + + +1122 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +39 +AMSU-A 12 +Operational + + +1123 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +40 +AMSU-A 13 +Operational + + +1124 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +41 +AMSU-A 14 +Operational + + +1125 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +42 +AMSU-A 15 +Operational + + +1126 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +43 +AMSU-B 1 / MHS 1 +Operational + + +1127 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +44 +AMSU-B 2 / MHS 2 +Operational + + +1128 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +45 +AMSU-B 3 / MHS 3 +Operational + + +1129 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +46 +AMSU-B 4 / MHS 4 +Operational + + +1130 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +47 +AMSU-B 5 / MHS 5 +Operational + + +1131 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +48 +AVHRR 1 +Operational + + +1132 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +49 +AVHRR 2 +Operational + + +1133 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +50 +AVHRR 3a +Operational + + +1134 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +51 +AVHRR 3b +Operational + + +1135 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +52 +AVHRR 4 +Operational + + +1136 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +53 +AVHRR 5 +Operational + + +1137 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +54-62 +Reserved +Operational + + +1138 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +63 +Missing value +Operational + + +1139 +002151 +Radiometer identifier +0 +HIRS +Operational + + +1140 +002151 +Radiometer identifier +1 +MSU +Operational + + +1141 +002151 +Radiometer identifier +2 +SSU +Operational + + +1142 +002151 +Radiometer identifier +3 +AMSU-A1-1 +Operational + + +1143 +002151 +Radiometer identifier +4 +AMSU-A1-2 +Operational + + +1144 +002151 +Radiometer identifier +5 +AMSU-A2 +Operational + + +1145 +002151 +Radiometer identifier +6 +AMSU-B +Operational + + +1146 +002151 +Radiometer identifier +7 +AVHRR +Operational + + +1147 +002151 +Radiometer identifier +8 +Reserved +Operational + + +1148 +002151 +Radiometer identifier +9 +MHS +Operational + + +1149 +002151 +Radiometer identifier +10-2046 +Reserved +Operational + + +1150 +002151 +Radiometer identifier +2047 +Missing value +Operational + + +1151 +002152 +Satellite instrument used in data processing +1 +High-resolution infrared sounder (HIRS) +Operational + + +1152 +002152 +Satellite instrument used in data processing +2 +Microwave sounding unit (MSU) +Operational + + +1153 +002152 +Satellite instrument used in data processing +3 +Stratospheric sounding unit (SSU) +Operational + + +1154 +002152 +Satellite instrument used in data processing +4 +AMI wind mode +Operational + + +1155 +002152 +Satellite instrument used in data processing +5 +AMI wave mode +Operational + + +1156 +002152 +Satellite instrument used in data processing +6 +AMI image mode +Operational + + +1157 +002152 +Satellite instrument used in data processing +7 +RADAR altimeter +Operational + + +1158 +002152 +Satellite instrument used in data processing +8 +ATSR +Operational + + +1159 +002152 +Satellite instrument used in data processing +9 +Geostationary imager +Operational + + +1160 +002152 +Satellite instrument used in data processing +10 +Geostationary sounder +Operational + + +1161 +002152 +Satellite instrument used in data processing +11 +Geostationary Earth radiation (GERB) +Operational + + +1162 +002152 +Satellite instrument used in data processing +12 +Multi-channel scanning radiometer +Operational + + +1163 +002152 +Satellite instrument used in data processing +13 +Polar-orbiting imager +Operational + + +1164 +002152 +Satellite instrument used in data processing +14-30 +Reserved +Operational + + +1165 +002152 +Satellite instrument used in data processing +All 31 +Missing value +Operational + + +1166 +002158 +RA-2 instrument +1 +Mismatch in RED VEC HPA +Operational + + +1167 +002158 +RA-2 instrument +2 +Mismatch in RED VEC RFSS +Operational + + +1168 +002158 +RA-2 instrument +3 +PTR calibration band 320 MHz (Ku) +Operational + + +1169 +002158 +RA-2 instrument +4 +PTR calibration band 80 MHz (Ku) +Operational + + +1170 +002158 +RA-2 instrument +5 +PTR calibration band 20 MHz (Ku) +Operational + + +1171 +002158 +RA-2 instrument +6 +PTR calibration band 160 MHz (S) +Operational + + +1172 +002158 +RA-2 instrument +7 +Ku flight calibration parameters available +Operational + + +1173 +002158 +RA-2 instrument +8 +S flight calibration parameters available +Operational + + +1174 +002158 +RA-2 instrument +All 9 +Missing value +Operational + + +1175 +002159 +MWR instrument +1 +Temperature inconsistency +Operational + + +1176 +002159 +MWR instrument +2 +Data is missing +Operational + + +1177 +002159 +MWR instrument +3 +Redundancy channel +Operational + + +1178 +002159 +MWR instrument +4 +Power bus protection +Operational + + +1179 +002159 +MWR instrument +5 +Overvoltage/Overload protection +Operational + + +1180 +002159 +MWR instrument +6 +Reserved +Operational + + +1181 +002159 +MWR instrument +7 +Reserved +Operational + + +1182 +002159 +MWR instrument +All 8 +Missing value +Operational + + +1183 +002160 +Wavelength of the radar +0 +Reserved +Operational + + +1184 +002160 +Wavelength of the radar +1 +10 to less than 20 mm +Operational + + +1185 +002160 +Wavelength of the radar +2 +Reserved +Operational + + +1186 +002160 +Wavelength of the radar +3 +20 to less than 40 mm +Operational + + +1187 +002160 +Wavelength of the radar +4 +Reserved +Operational + + +1188 +002160 +Wavelength of the radar +5 +40 to less than 60 mm +Operational + + +1189 +002160 +Wavelength of the radar +6 +Reserved +Operational + + +1190 +002160 +Wavelength of the radar +7 +60 to less than 90 mm +Operational + + +1191 +002160 +Wavelength of the radar +8 +90 to less than 110 mm +Operational + + +1192 +002160 +Wavelength of the radar +9 +110 mm and greater +Operational + + +1193 +002160 +Wavelength of the radar +10-14 +Not used +Operational + + +1194 +002160 +Wavelength of the radar +15 +Missing value +Operational + + +1195 +002161 +Wind processing method +1-10 +Reserved +Operational + + +1196 +002161 +Wind processing method +11 +Wind height calculated from median cloud-top pressure of target +Operational + + +1197 +002161 +Wind processing method +12 +Target is cloudy +Operational + + +1198 +002161 +Wind processing method +13 +Low-level inversion +Operational + + +1199 +002161 +Wind processing method +14 +Cross correlation contribution (CCC) method +Operational + + +1200 +002161 +Wind processing method +15 +Nested tracking +Operational + + +1201 +002161 +Wind processing method +All 16 +Missing value +Operational + + +1202 +002162 +Extended height assignment method +0 +Auto editor +Operational + + +1203 +002162 +Extended height assignment method +1 +IRW height assignment +Operational + + +1204 +002162 +Extended height assignment method +2 +WV height assignment +Operational + + +1205 +002162 +Extended height assignment method +3 +H2O intercept height assignment +Operational + + +1206 +002162 +Extended height assignment method +4 +CO2 slicing height assignment +Operational + + +1207 +002162 +Extended height assignment method +5 +Low pixel max gradient +Operational + + +1208 +002162 +Extended height assignment method +6 +Higher pixel max gradient +Operational + + +1209 +002162 +Extended height assignment method +7 +Primary height assignment +Operational + + +1210 +002162 +Extended height assignment method +8 +Layer thickness assignment +Operational + + +1211 +002162 +Extended height assignment method +9 +Cumulative contribution function - 10 per cent height +Operational + + +1212 +002162 +Extended height assignment method +10 +Cumulative contribution function - 50 per cent height +Operational + + +1213 +002162 +Extended height assignment method +11 +Cumulative contribution function - 90 per cent height +Operational + + +1214 +002162 +Extended height assignment method +12 +Cumulative contribution function - height of maximum gradient +Operational + + +1215 +002162 +Extended height assignment method +13 +IR/two WV channel rationing method +Operational + + +1216 +002162 +Extended height assignment method +14 +Composite height assignment +Operational + + +1217 +002162 +Extended height assignment method +15 +Optimal estimation +Operational + + +1218 +002162 +Extended height assignment method +16 +Inversion correction +Operational + + +1219 +002162 +Extended height assignment method +17 +Geometric height assignment +Operational + + +1220 +002162 +Extended height assignment method +18-62 +Reserved +Operational + + +1221 +002162 +Extended height assignment method +63 +Missing value +Operational + + +1222 +002163 +Height assignment method +0 +Auto editor +Operational + + +1223 +002163 +Height assignment method +1 +IRW height assignment +Operational + + +1224 +002163 +Height assignment method +2 +WV height assignment +Operational + + +1225 +002163 +Height assignment method +3 +H2O intercept height assignment +Operational + + +1226 +002163 +Height assignment method +4 +CO2 slicing height assignment +Operational + + +1227 +002163 +Height assignment method +5 +Low pixel max gradient +Operational + + +1228 +002163 +Height assignment method +6 +Higher pixel max gradient +Operational + + +1229 +002163 +Height assignment method +7 +Primary height assignment +Operational + + +1230 +002163 +Height assignment method +8 +Layer thickness assignment +Operational + + +1231 +002163 +Height assignment method +9 +Cumulative contribution function - 10 per cent height +Operational + + +1232 +002163 +Height assignment method +10 +Cumulative contribution function - 50 per cent height +Operational + + +1233 +002163 +Height assignment method +11 +Cumulative contribution function - 90 per cent height +Operational + + +1234 +002163 +Height assignment method +12 +Cumulative contribution function - height of maximum gradient +Operational + + +1235 +002163 +Height assignment method +13 +IR / two WV channel ratioing method +Operational + + +1236 +002163 +Height assignment method +14 +Composite height assignment +Operational + + +1237 +002163 +Height assignment method +15 +Missing value +Operational + + +1238 +002164 +Tracer correlation method +0 +LP - Norms least square minimum +Operational + + +1239 +002164 +Tracer correlation method +1 +EN - Euclidean norm with radiance correlation +Operational + + +1240 +002164 +Tracer correlation method +2 +CC - Cross correlation +Operational + + +1241 +002164 +Tracer correlation method +3 +Stereo matching +Operational + + +1242 +002164 +Tracer correlation method +4-6 +Reserved +Operational + + +1243 +002164 +Tracer correlation method +7 +Missing value +Operational + + +1244 +002165 +Radiance type flags +1 +Clear path +Operational + + +1245 +002165 +Radiance type flags +2 +Partly cloudy path +Operational + + +1246 +002165 +Radiance type flags +3 +Cloudy path +Operational + + +1247 +002165 +Radiance type flags +4 +Apodized +Operational + + +1248 +002165 +Radiance type flags +5 +Unapodized +Operational + + +1249 +002165 +Radiance type flags +6 +Reconstructed +Operational + + +1250 +002165 +Radiance type flags +7 +Cloud cleared +Operational + + +1251 +002165 +Radiance type flags +8-14 +Reserved +Operational + + +1252 +002165 +Radiance type flags +All 15 +Missing value +Operational + + +1253 +002166 +Radiance type +0 +Type not defined +Operational + + +1254 +002166 +Radiance type +1 +Automated statistical regression +Operational + + +1255 +002166 +Radiance type +2 +Clear path +Operational + + +1256 +002166 +Radiance type +3 +Partly cloudy path +Operational + + +1257 +002166 +Radiance type +4 +Cloudy path +Operational + + +1258 +002166 +Radiance type +5-14 +Reserved +Operational + + +1259 +002166 +Radiance type +15 +Missing value +Operational + + +1260 +002167 +Radiance computational method +0 +Method not defined +Operational + + +1261 +002167 +Radiance computational method +1 +1b raw radiance +Operational + + +1262 +002167 +Radiance computational method +2 +Processed radiance +Operational + + +1263 +002167 +Radiance computational method +3-14 +Reserved +Operational + + +1264 +002167 +Radiance computational method +15 +Missing value +Operational + + +1265 +002169 +Anemometer type +0 +Cup rotor +Operational + + +1266 +002169 +Anemometer type +1 +Propeller rotor +Operational + + +1267 +002169 +Anemometer type +2 +Wind Observation Through Ambient Noise (WOTAN) +Operational + + +1268 +002169 +Anemometer type +3 +Sonic +Operational + + +1269 +002169 +Anemometer type +4-14 +Reserved +Operational + + +1270 +002169 +Anemometer type +15 +Missing value +Operational + + +1271 +002170 +Aircraft humidity sensors +0 +SpectraSensors WVSS-II, Version 1 +Operational + + +1272 +002170 +Aircraft humidity sensors +1 +SpectraSensors WVSS-II, Version 2 +Operational + + +1273 +002170 +Aircraft humidity sensors +2 +SpectraSensors WVSS-II, Version 3 +Operational + + +1274 +002170 +Aircraft humidity sensors +3-61 +Reserved +Operational + + +1275 +002170 +Aircraft humidity sensors +62 +Other +Operational + + +1276 +002170 +Aircraft humidity sensors +63 +Missing value +Operational + + +1277 +002172 +Product type for retrieved atmospheric gases +0 +Reserved +Operational + + +1278 +002172 +Product type for retrieved atmospheric gases +1 +Retrieval from a nadir sounding +Operational + + +1279 +002172 +Product type for retrieved atmospheric gases +2 +Retrieval from a limb sounding +Operational + + +1280 +002172 +Product type for retrieved atmospheric gases +3-254 +Reserved +Operational + + +1281 +002172 +Product type for retrieved atmospheric gases +255 +Missing value +Operational + + +1282 +002175 +Method of precipitation measurement +0 +Manual measurement +Operational + + +1283 +002175 +Method of precipitation measurement +1 +Tipping bucket method +Operational + + +1284 +002175 +Method of precipitation measurement +2 +Weighing method +Operational + + +1285 +002175 +Method of precipitation measurement +3 +Optical method +Operational + + +1286 +002175 +Method of precipitation measurement +4 +Pressure method +Operational + + +1287 +002175 +Method of precipitation measurement +5 +Float method +Operational + + +1288 +002175 +Method of precipitation measurement +6 +Drop counter method +Operational + + +1289 +002175 +Method of precipitation measurement +7-13 +Reserved +Operational + + +1290 +002175 +Method of precipitation measurement +14 +Others +Operational + + +1291 +002175 +Method of precipitation measurement +15 +Missing value +Operational + + +1292 +002176 +Method of state of ground measurement +0 +Manual observation +Operational + + +1293 +002176 +Method of state of ground measurement +1 +Video camera method +Operational + + +1294 +002176 +Method of state of ground measurement +2 +Infrared method +Operational + + +1295 +002176 +Method of state of ground measurement +3 +Laser method +Operational + + +1296 +002176 +Method of state of ground measurement +4-13 +Reserved +Operational + + +1297 +002176 +Method of state of ground measurement +14 +Others +Operational + + +1298 +002176 +Method of state of ground measurement +15 +Missing value +Operational + + +1299 +002177 +Method of snow depth measurement +0 +Manual observation +Operational + + +1300 +002177 +Method of snow depth measurement +1 +Ultrasonic method +Operational + + +1301 +002177 +Method of snow depth measurement +2 +Video camera method +Operational + + +1302 +002177 +Method of snow depth measurement +3 +Laser method +Operational + + +1303 +002177 +Method of snow depth measurement +4-13 +Reserved +Operational + + +1304 +002177 +Method of snow depth measurement +14 +Others +Operational + + +1305 +002177 +Method of snow depth measurement +15 +Missing value +Operational + + +1306 +002178 +Method of liquid content measurement of precipitation +0 +Manual observation +Operational + + +1307 +002178 +Method of liquid content measurement of precipitation +1 +Optical method +Operational + + +1308 +002178 +Method of liquid content measurement of precipitation +2 +Capacitive method +Operational + + +1309 +002178 +Method of liquid content measurement of precipitation +3-13 +Reserved +Operational + + +1310 +002178 +Method of liquid content measurement of precipitation +14 +Others +Operational + + +1311 +002178 +Method of liquid content measurement of precipitation +15 +Missing value +Operational + + +1312 +002179 +Type of sky condition algorithm +0 +Manual observation +Operational + + +1313 +002179 +Type of sky condition algorithm +1 +VAISALA algorithm +Operational + + +1314 +002179 +Type of sky condition algorithm +2 +ASOS (FAA) algorithm +Operational + + +1315 +002179 +Type of sky condition algorithm +3 +AWOS (Canada) algorithm +Operational + + +1316 +002179 +Type of sky condition algorithm +4-13 +Reserved +Operational + + +1317 +002179 +Type of sky condition algorithm +14 +Others +Operational + + +1318 +002179 +Type of sky condition algorithm +15 +Missing value +Operational + + +1319 +002180 +Main present weather detecting system +0 +Manual observation +Operational + + +1320 +002180 +Main present weather detecting system +1 +Optical scatter system combined with precipitation occurrence sensing system +Operational + + +1321 +002180 +Main present weather detecting system +2 +Forward and/or backscatter system of visible light +Operational + + +1322 +002180 +Main present weather detecting system +3 +Forward and/or backscatter system of infrared light +Operational + + +1323 +002180 +Main present weather detecting system +4 +Infrared light emitting diode (IRED) system +Operational + + +1324 +002180 +Main present weather detecting system +5 +Doppler radar system +Operational + + +1325 +002180 +Main present weather detecting system +6-13 +Reserved +Operational + + +1326 +002180 +Main present weather detecting system +14 +Others +Operational + + +1327 +002180 +Main present weather detecting system +15 +Missing value +Operational + + +1328 +002181 +Supplementary present weather sensor +1 +Rain detector +Operational + + +1329 +002181 +Supplementary present weather sensor +2 +Freezing rain sensor +Operational + + +1330 +002181 +Supplementary present weather sensor +3 +Ice detection sensor +Operational + + +1331 +002181 +Supplementary present weather sensor +4 +Hail and ice pellet sensor +Operational + + +1332 +002181 +Supplementary present weather sensor +5-19 +Reserved +Operational + + +1333 +002181 +Supplementary present weather sensor +20 +Others +Operational + + +1334 +002181 +Supplementary present weather sensor +All 21 +Missing value +Operational + + +1335 +002182 +Visibility measurement system +0 +Manual measurement +Operational + + +1336 +002182 +Visibility measurement system +1 +Transmissometer system (base > 25 m) +Operational + + +1337 +002182 +Visibility measurement system +2 +Transmissometer system (base < 25 m) +Operational + + +1338 +002182 +Visibility measurement system +3 +Forward scatter system +Operational + + +1339 +002182 +Visibility measurement system +4 +Backscatter system +Operational + + +1340 +002182 +Visibility measurement system +5-13 +Reserved +Operational + + +1341 +002182 +Visibility measurement system +14 +Others +Operational + + +1342 +002182 +Visibility measurement system +15 +Missing value +Operational + + +1343 +002183 +Cloud detection system +0 +Manual observation +Operational + + +1344 +002183 +Cloud detection system +1 +Ceilometer system +Operational + + +1345 +002183 +Cloud detection system +2 +Infrared camera system +Operational + + +1346 +002183 +Cloud detection system +3 +Microwave visual camera system +Operational + + +1347 +002183 +Cloud detection system +4 +Sky imager system +Operational + + +1348 +002183 +Cloud detection system +5 +Video time-lapsed camera system +Operational + + +1349 +002183 +Cloud detection system +6 +Micropulse lidar (MPL) system +Operational + + +1350 +002183 +Cloud detection system +7-13 +Reserved +Operational + + +1351 +002183 +Cloud detection system +14 +Others +Operational + + +1352 +002183 +Cloud detection system +15 +Missing value +Operational + + +1353 +002184 +Type of lightning detection sensor +0 +Manual observation +Operational + + +1354 +002184 +Type of lightning detection sensor +1 +Lightning imaging sensor +Operational + + +1355 +002184 +Type of lightning detection sensor +2 +Electrical storm identification sensor +Operational + + +1356 +002184 +Type of lightning detection sensor +3 +Magnetic finder sensor +Operational + + +1357 +002184 +Type of lightning detection sensor +4 +Lightning strike sensor +Operational + + +1358 +002184 +Type of lightning detection sensor +5 +Flash counter +Operational + + +1359 +002184 +Type of lightning detection sensor +6 +ATDnet VLF waveform correlated sensor +Operational + + +1360 +002184 +Type of lightning detection sensor +7-13 +Reserved +Operational + + +1361 +002184 +Type of lightning detection sensor +14 +Others +Operational + + +1362 +002184 +Type of lightning detection sensor +15 +Missing value +Operational + + +1363 +002185 +Method of evaporation measurement +0 +Manual measurement +Operational + + +1364 +002185 +Method of evaporation measurement +1 +Balanced floating method +Operational + + +1365 +002185 +Method of evaporation measurement +2 +Pressure method +Operational + + +1366 +002185 +Method of evaporation measurement +3 +Ultrasonic method +Operational + + +1367 +002185 +Method of evaporation measurement +4 +Hydraulic method +Operational + + +1368 +002185 +Method of evaporation measurement +5-13 +Reserved +Operational + + +1369 +002185 +Method of evaporation measurement +14 +Others +Operational + + +1370 +002185 +Method of evaporation measurement +15 +Missing value +Operational + + +1371 +002186 +Capability to detect precipitation phenomena +1 +Precipitation-unknown type +Operational + + +1372 +002186 +Capability to detect precipitation phenomena +2 +Liquid precipitation not freezing +Operational + + +1373 +002186 +Capability to detect precipitation phenomena +3 +Liquid freezing precipitation +Operational + + +1374 +002186 +Capability to detect precipitation phenomena +4 +Drizzle +Operational + + +1375 +002186 +Capability to detect precipitation phenomena +5 +Rain +Operational + + +1376 +002186 +Capability to detect precipitation phenomena +6 +Solid precipitation +Operational + + +1377 +002186 +Capability to detect precipitation phenomena +7 +Snow +Operational + + +1378 +002186 +Capability to detect precipitation phenomena +8 +Snow grains +Operational + + +1379 +002186 +Capability to detect precipitation phenomena +9 +Snow pellets +Operational + + +1380 +002186 +Capability to detect precipitation phenomena +10 +Ice pellets +Operational + + +1381 +002186 +Capability to detect precipitation phenomena +11 +Ice crystals +Operational + + +1382 +002186 +Capability to detect precipitation phenomena +12 +Diamond dust +Operational + + +1383 +002186 +Capability to detect precipitation phenomena +13 +Small hail +Operational + + +1384 +002186 +Capability to detect precipitation phenomena +14 +Hail +Operational + + +1385 +002186 +Capability to detect precipitation phenomena +15 +Glaze +Operational + + +1386 +002186 +Capability to detect precipitation phenomena +16 +Rime +Operational + + +1387 +002186 +Capability to detect precipitation phenomena +17 +Soft rime +Operational + + +1388 +002186 +Capability to detect precipitation phenomena +18 +Hard rime +Operational + + +1389 +002186 +Capability to detect precipitation phenomena +19 +Clear ice +Operational + + +1390 +002186 +Capability to detect precipitation phenomena +20 +Wet snow +Operational + + +1391 +002186 +Capability to detect precipitation phenomena +21 +Hoar frost +Operational + + +1392 +002186 +Capability to detect precipitation phenomena +22 +Dew +Operational + + +1393 +002186 +Capability to detect precipitation phenomena +23 +White dew +Operational + + +1394 +002186 +Capability to detect precipitation phenomena +24 +Convective precipitation +Operational + + +1395 +002186 +Capability to detect precipitation phenomena +25-29 +Reserved +Operational + + +1396 +002186 +Capability to detect precipitation phenomena +All 30 +Missing value +Operational + + +1397 +002187 +Capability to detect other weather phenomena +1 +Dust/sand whirl +Operational + + +1398 +002187 +Capability to detect other weather phenomena +2 +Squalls +Operational + + +1399 +002187 +Capability to detect other weather phenomena +3 +Sand storm +Operational + + +1400 +002187 +Capability to detect other weather phenomena +4 +Dust storm +Operational + + +1401 +002187 +Capability to detect other weather phenomena +5 +Lightning - cloud to surface +Operational + + +1402 +002187 +Capability to detect other weather phenomena +6 +Lightning - cloud to cloud +Operational + + +1403 +002187 +Capability to detect other weather phenomena +7 +Lightning - distant +Operational + + +1404 +002187 +Capability to detect other weather phenomena +8 +Thunderstorm +Operational + + +1405 +002187 +Capability to detect other weather phenomena +9 +Funnel cloud not touching surface +Operational + + +1406 +002187 +Capability to detect other weather phenomena +10 +Funnel cloud touching surface +Operational + + +1407 +002187 +Capability to detect other weather phenomena +11 +Spray +Operational + + +1408 +002187 +Capability to detect other weather phenomena +12-17 +Reserved +Operational + + +1409 +002187 +Capability to detect other weather phenomena +All 18 +Missing value +Operational + + +1410 +002188 +Capability to detect obscuration +1 +Fog +Operational + + +1411 +002188 +Capability to detect obscuration +2 +Ice fog +Operational + + +1412 +002188 +Capability to detect obscuration +3 +Steam fog +Operational + + +1413 +002188 +Capability to detect obscuration +4-6 +Reserved +Operational + + +1414 +002188 +Capability to detect obscuration +7 +Mist +Operational + + +1415 +002188 +Capability to detect obscuration +8 +Haze +Operational + + +1416 +002188 +Capability to detect obscuration +9 +Smoke +Operational + + +1417 +002188 +Capability to detect obscuration +10 +Volcanic ash +Operational + + +1418 +002188 +Capability to detect obscuration +11 +Dust +Operational + + +1419 +002188 +Capability to detect obscuration +12 +Sand +Operational + + +1420 +002188 +Capability to detect obscuration +13 +Snow +Operational + + +1421 +002188 +Capability to detect obscuration +14-20 +Reserved +Operational + + +1422 +002188 +Capability to detect obscuration +All 21 +Missing value +Operational + + +1423 +002189 +Capability to discriminate lightning strikes +1 +Manual observation +Operational + + +1424 +002189 +Capability to discriminate lightning strikes +2 +All lightning strikes without discrimination +Operational + + +1425 +002189 +Capability to discriminate lightning strikes +3 +Lightning strikes cloud to ground only +Operational + + +1426 +002189 +Capability to discriminate lightning strikes +4 +All lightning strikes with discrimination between cloud to ground and cloud to cloud +Operational + + +1427 +002189 +Capability to discriminate lightning strikes +5-11 +Reserved +Operational + + +1428 +002189 +Capability to discriminate lightning strikes +All 12 +Missing value +Operational + + +1429 +002191 +Geopotential height calculation +0 +Geopotential height calculated from pressure +Operational + + +1430 +002191 +Geopotential height calculation +1 +Geopotential height calculated from GPS height +Operational + + +1431 +002191 +Geopotential height calculation +2 +Geopotential height calculated from radar height +Operational + + +1432 +002191 +Geopotential height calculation +3-14 +Reserved +Operational + + +1433 +002191 +Geopotential height calculation +15 +Missing value +Operational + + +1434 +003001 +Surface station type +0 +Land station (synoptic network) +Operational + + +1435 +003001 +Surface station type +1 +Shallow water station (fixed to sea/lake floor) +Operational + + +1436 +003001 +Surface station type +2 +Ship +Operational + + +1437 +003001 +Surface station type +3 +Rig/platform +Operational + + +1438 +003001 +Surface station type +4 +Moored buoy +Operational + + +1439 +003001 +Surface station type +5 +Drifting buoy (or drifter) +Operational + + +1440 +003001 +Surface station type +6 +Ice buoy +Operational + + +1441 +003001 +Surface station type +7 +Land station (local network) +Operational + + +1442 +003001 +Surface station type +8 +Land vehicle +Operational + + +1443 +003001 +Surface station type +9 +Autonomous marine vehicle +Operational + + +1444 +003001 +Surface station type +10-30 +Reserved for future use +Operational + + +1445 +003001 +Surface station type +31 +Missing value +Operational + + +1464 +003003 +Thermometer/hygrometer housing +0 +Screen +Operational + + +1465 +003003 +Thermometer/hygrometer housing +1 +Sling/whirling +Operational + + +1466 +003003 +Thermometer/hygrometer housing +2 +Unscreened +Operational + + +1467 +003003 +Thermometer/hygrometer housing +3 +Radiation shield +Operational + + +1468 +003003 +Thermometer/hygrometer housing +4 +Aspirated (e.g. Assmann) +Operational + + +1469 +003003 +Thermometer/hygrometer housing +5 +Other shelter +Operational + + +1470 +003003 +Thermometer/hygrometer housing +6 +Handheld +Operational + + +1471 +003003 +Thermometer/hygrometer housing +7-14 +Reserved for future use +Operational + + +1472 +003003 +Thermometer/hygrometer housing +15 +Missing value +Operational + + +1473 +003004 +Type of screen/shelter/radiation shield +0 +Stevenson screen +Operational + + +1474 +003004 +Type of screen/shelter/radiation shield +1 +Marine Stevenson screen +Operational + + +1475 +003004 +Type of screen/shelter/radiation shield +2 +Cylindrical section plate shield +Operational + + +1476 +003004 +Type of screen/shelter/radiation shield +3 +Concentric tube +Operational + + +1477 +003004 +Type of screen/shelter/radiation shield +4 +Rectangular section shield +Operational + + +1478 +003004 +Type of screen/shelter/radiation shield +5 +Square section shield +Operational + + +1479 +003004 +Type of screen/shelter/radiation shield +6 +Triangular section shield +Operational + + +1480 +003004 +Type of screen/shelter/radiation shield +7 +Open covered lean-to +Operational + + +1481 +003004 +Type of screen/shelter/radiation shield +8 +Open covered inverted V roof +Operational + + +1482 +003004 +Type of screen/shelter/radiation shield +9 +Integrated (e.g. chilled mirror) +Operational + + +1483 +003004 +Type of screen/shelter/radiation shield +10-14 +Reserved for future use +Operational + + +1484 +003004 +Type of screen/shelter/radiation shield +15 +Missing value +Operational + + +1485 +003008 +Artificially ventilated screen or shield +0 +Natural ventilation in use +Operational + + +1486 +003008 +Artificially ventilated screen or shield +1 +Artificial aspiration in use: constant flow at time of reading +Operational + + +1487 +003008 +Artificially ventilated screen or shield +2 +Artificial aspiration in use: variable flow at time of reading +Operational + + +1488 +003008 +Artificially ventilated screen or shield +3-6 +Reserved +Operational + + +1489 +003008 +Artificially ventilated screen or shield +7 +Missing value +Operational + + +1490 +003010 +Method of sea/water current measurement +0 +Reserved +Operational + + +1491 +003010 +Method of sea/water current measurement +1 +ADCP +*, ** +Operational + + +1492 +003010 +Method of sea/water current measurement +2 +GEK (Geomagnetic ElectroKinetograph) +Operational + + +1493 +003010 +Method of sea/water current measurement +3 +Ship's set and drift determined by fixes 3-6 hours apart +Operational + + +1494 +003010 +Method of sea/water current measurement +4 +Ship's set and drift determined by fixes more than 6 hours but less than 12 hours apart +Operational + + +1495 +003010 +Method of sea/water current measurement +5 +Drift of buoy +Operational + + +1496 +003010 +Method of sea/water current measurement +6 +ADCP +Operational + + +1497 +003010 +Method of sea/water current measurement +7 +ADCP bottom tracking mode +Operational + + +1498 +003010 +Method of sea/water current measurement +8 +Electromagnetic sensor +Operational + + +1499 +003010 +Method of sea/water current measurement +9 +Rotor and vane +Operational + + +1500 +003010 +Method of sea/water current measurement +10 +Lowered ADCP +Operational + + +1501 +003010 +Method of sea/water current measurement +11-14 +Reserved +Operational + + +1502 +003010 +Method of sea/water current measurement +15 +Missing value +Operational + + +1503 +003011 +Method of depth calculation +0 +Depth calculated using fall rate equation +Operational + + +1504 +003011 +Method of depth calculation +1 +Depth calculated from water pressure/equation of state +Operational + + +1505 +003011 +Method of depth calculation +2 +Reserved +Operational + + +1506 +003011 +Method of depth calculation +3 +Missing value +Operational + + +1507 +003012 +Instrument type/sensor for dissolved oxygen measurement +0 +Anderraa oxygen optode +Operational + + +1508 +003012 +Instrument type/sensor for dissolved oxygen measurement +1 +Winkler bottle +Operational + + +1509 +003012 +Instrument type/sensor for dissolved oxygen measurement +2-14 +Reserved +Operational + + +1510 +003012 +Instrument type/sensor for dissolved oxygen measurement +15 +Missing value +Operational + + +1516 +003016 +Position of road sensors +0 +Fast lane between the wheel tracks +Operational + + +1517 +003016 +Position of road sensors +1 +Fast lane between the wheel tracks in the opposite direction +Operational + + +1518 +003016 +Position of road sensors +2 +Fast lane in the wheel tracks +Operational + + +1519 +003016 +Position of road sensors +3 +Fast lane in the wheel tracks in the opposite direction +Operational + + +1520 +003016 +Position of road sensors +4 +Slow lane between the wheel tracks +Operational + + +1521 +003016 +Position of road sensors +5 +Slow lane between the wheel tracks in the opposite direction +Operational + + +1522 +003016 +Position of road sensors +6 +Slow lane in the wheel tracks +Operational + + +1523 +003016 +Position of road sensors +7 +Slow lane in the wheel tracks in the opposite direction +Operational + + +1524 +003016 +Position of road sensors +8-14 +Reserved +Operational + + +1525 +003016 +Position of road sensors +15 +Missing value +Operational + + +1526 +003017 +Extended type of station +1 +Automatic +Operational + + +1527 +003017 +Extended type of station +2 +Manned +Operational + + +1528 +003017 +Extended type of station +3 +Event triggered +Operational + + +1529 +003017 +Extended type of station +4 +Longer time period than the standard +Operational + + +1530 +003017 +Extended type of station +5 +Reserved +Operational + + +1531 +003017 +Extended type of station +All 6 +Missing value +Operational + + +1532 +003018 +Type of road +0 +Free track without further information +Operational + + +1533 +003018 +Type of road +1 +Free track, embankment +Operational + + +1534 +003018 +Type of road +2 +Free track, flat relative to surroundings +Operational + + +1535 +003018 +Type of road +3 +Free track, water basin(s) in vicinity +Operational + + +1536 +003018 +Type of road +4 +Free track, forest +Operational + + +1537 +003018 +Type of road +5 +Free track, cleft +Operational + + +1538 +003018 +Type of road +6 +Free track, on hilltop +Operational + + +1539 +003018 +Type of road +7 +Free track, on hilltop, forest +Operational + + +1540 +003018 +Type of road +8 +Free track, in valley +Operational + + +1541 +003018 +Type of road +9 +Free track, in valley, forest +Operational + + +1542 +003018 +Type of road +10 +Free track, north inclination +Operational + + +1543 +003018 +Type of road +11 +Free track, north inclination, forest +Operational + + +1544 +003018 +Type of road +12 +Free track, south inclination +Operational + + +1545 +003018 +Type of road +13 +Free track, south inclination, forest +Operational + + +1546 +003018 +Type of road +14-19 +Reserved +Operational + + +1547 +003018 +Type of road +20 +Bridge without further information +Operational + + +1548 +003018 +Type of road +21 +Bridge across a valley in an urban area +Operational + + +1549 +003018 +Type of road +22 +Bridge across a valley with forest/meadows/fields +Operational + + +1550 +003018 +Type of road +23 +Bridge across street/track +Operational + + +1551 +003018 +Type of road +24 +Bridge across big river/canal +Operational + + +1552 +003018 +Type of road +25 +Bridge across river/canal of medium size +Operational + + +1553 +003018 +Type of road +26 +Bridge across a small stream/loading canal +Operational + + +1554 +003018 +Type of road +27-30 +Reserved +Operational + + +1555 +003018 +Type of road +31 +Missing value +Operational + + +1556 +003019 +Type of construction +0 +Asphalt +Operational + + +1557 +003019 +Type of construction +1 +Concrete +Operational + + +1558 +003019 +Type of construction +2 +Concrete construction +Operational + + +1559 +003019 +Type of construction +3 +Steel-girder construction +Operational + + +1560 +003019 +Type of construction +4 +Box girder bridge +Operational + + +1561 +003019 +Type of construction +5 +Orthotropic slab +Operational + + +1562 +003019 +Type of construction +6 +Drain asphalt +Operational + + +1563 +003019 +Type of construction +7-14 +Reserved +Operational + + +1564 +003019 +Type of construction +15 +Missing value +Operational + + +1565 +003020 +Material for thermometer/hygrometer housing +0 +Wood +Operational + + +1566 +003020 +Material for thermometer/hygrometer housing +1 +Metal alloy +Operational + + +1567 +003020 +Material for thermometer/hygrometer housing +2 +Plastic/GRP +* +Operational + + +1568 +003020 +Material for thermometer/hygrometer housing +3 +Reed/grass/leaf +Operational + + +1569 +003020 +Material for thermometer/hygrometer housing +4-6 +Reserved for future use +Operational + + +1570 +003020 +Material for thermometer/hygrometer housing +7 +Missing value +Operational + + +1571 +003021 +Hygrometer heating +0 +Unheated +Operational + + +1572 +003021 +Hygrometer heating +1 +Heated +Operational + + +1573 +003021 +Hygrometer heating +2 +Not applicable +Operational + + +1574 +003021 +Hygrometer heating +3 +Missing value +Operational + + +1575 +003022 +Instrument owner +0 +National hydrometeorological/weather service +Operational + + +1576 +003022 +Instrument owner +1 +Other +Operational + + +1577 +003022 +Instrument owner +2 +Standards institute +Operational + + +1578 +003022 +Instrument owner +3-6 +Reserved for future use +Operational + + +1579 +003022 +Instrument owner +7 +Missing value +Operational + + +1580 +003023 +Configuration of louvers for thermometer/hygrometer screen +0 +Single v-section louvers +Operational + + +1581 +003023 +Configuration of louvers for thermometer/hygrometer screen +1 +Overlapping louvers +Operational + + +1582 +003023 +Configuration of louvers for thermometer/hygrometer screen +2 +Double v-section louvers +Operational + + +1583 +003023 +Configuration of louvers for thermometer/hygrometer screen +3 +Non-overlapping louvers +Operational + + +1584 +003023 +Configuration of louvers for thermometer/hygrometer screen +4 +Vented, non-louvered +Operational + + +1585 +003023 +Configuration of louvers for thermometer/hygrometer screen +5 +Not applicable +Operational + + +1586 +003023 +Configuration of louvers for thermometer/hygrometer screen +6 +Reserved for future use +Operational + + +1587 +003023 +Configuration of louvers for thermometer/hygrometer screen +7 +Missing value +Operational + + +1588 +003027 +Type of flight rig +0 +Solo (single radiosonde) +Operational + + +1589 +003027 +Type of flight rig +1 +Block +Operational + + +1590 +003027 +Type of flight rig +2 +Bar +Operational + + +1591 +003027 +Type of flight rig +3 +Cross +Operational + + +1592 +003027 +Type of flight rig +4 +T-rig +Operational + + +1593 +003027 +Type of flight rig +5 +Double T-rig +Operational + + +1594 +003027 +Type of flight rig +6 +Complex +Operational + + +1595 +003027 +Type of flight rig +7-14 +Reserved +Operational + + +1596 +003027 +Type of flight rig +15 +Missing value +Operational + + +1597 +003028 +Method of snow water equivalent measurement +0 +Multi point manual snow survey +Operational + + +1598 +003028 +Method of snow water equivalent measurement +1 +Single point manual snow water equivalent measurement +Operational + + +1599 +003028 +Method of snow water equivalent measurement +2 +Snow pillow or snow scale +Operational + + +1600 +003028 +Method of snow water equivalent measurement +3 +Passive gamma +Operational + + +1601 +003028 +Method of snow water equivalent measurement +4 +GNSS/GPS methods +Operational + + +1602 +003028 +Method of snow water equivalent measurement +5 +Cosmic ray attenuation +Operational + + +1603 +003028 +Method of snow water equivalent measurement +6 +Time domain reflectometry +Operational + + +1604 +003028 +Method of snow water equivalent measurement +7-62 +Reserved +Operational + + +1605 +003028 +Method of snow water equivalent measurement +63 +Missing value +Operational + + +1606 +004059 +Times of observation used to compute the reported mean values +1 +0000 UTC +Operational + + +1607 +004059 +Times of observation used to compute the reported mean values +2 +0600 UTC +Operational + + +1608 +004059 +Times of observation used to compute the reported mean values +3 +1200 UTC +Operational + + +1609 +004059 +Times of observation used to compute the reported mean values +4 +1800 UTC +Operational + + +1610 +004059 +Times of observation used to compute the reported mean values +5 +Other hours +Operational + + +1611 +004059 +Times of observation used to compute the reported mean values +All 6 +Missing value +Operational + + +1612 +004080 +Averaging period for following value +0 +Spot values +Operational + + +1613 +004080 +Averaging period for following value +1 +Less than 15 minutes +Operational + + +1614 +004080 +Averaging period for following value +2 +From 15 to 45 minutes +Operational + + +1615 +004080 +Averaging period for following value +3 +More than 45 minutes +Operational + + +1616 +004080 +Averaging period for following value +4-8 +Reserved +Operational + + +1617 +004080 +Averaging period for following value +9 +Data not available +Operational + + +1618 +004080 +Averaging period for following value +10-14 +Not used +Operational + + +1619 +004080 +Averaging period for following value +15 +Missing value +Operational + + +1620 +005069 +Receiver channel +0 +Mie +Operational + + +1621 +005069 +Receiver channel +1 +Rayleigh +Operational + + +1622 +005069 +Receiver channel +2 +Reserved +Operational + + +1623 +005069 +Receiver channel +3 +Missing value +Operational + + +1624 +008001 +Vertical sounding significance +1 +Surface +Operational + + +1625 +008001 +Vertical sounding significance +2 +Standard level +Operational + + +1626 +008001 +Vertical sounding significance +3 +Tropopause level +Operational + + +1627 +008001 +Vertical sounding significance +4 +Maximum wind level +Operational + + +1628 +008001 +Vertical sounding significance +5 +Significant level, temperature and/or relative humidity +Operational + + +1629 +008001 +Vertical sounding significance +6 +Significant level, wind +Operational + + +1630 +008001 +Vertical sounding significance +All 7 +Missing value +Operational + + +1631 +008002 +Vertical significance (surface observations) +0 +Observing rules for base of lowest cloud and cloud types of FM 12 SYNOP and FM 13 SHIP apply +Operational + + +1632 +008002 +Vertical significance (surface observations) +1 +First non-Cumulonimbus significant layer +Operational + + +1633 +008002 +Vertical significance (surface observations) +2 +Second non-Cumulonimbus significant layer +Operational + + +1634 +008002 +Vertical significance (surface observations) +3 +Third non-Cumulonimbus significant layer +Operational + + +1635 +008002 +Vertical significance (surface observations) +4 +Cumulonimbus layer +Operational + + +1636 +008002 +Vertical significance (surface observations) +5 +Ceiling +Operational + + +1637 +008002 +Vertical significance (surface observations) +6 +Clouds not detected below the following height(s) +Operational + + +1638 +008002 +Vertical significance (surface observations) +7 +Low cloud +Operational + + +1639 +008002 +Vertical significance (surface observations) +8 +Middle cloud +Operational + + +1640 +008002 +Vertical significance (surface observations) +9 +High cloud +Operational + + +1641 +008002 +Vertical significance (surface observations) +10 +Cloud layer with base below and top above the station +Operational + + +1642 +008002 +Vertical significance (surface observations) +11 +Cloud layer with base and top below the station level +Operational + + +1643 +008002 +Vertical significance (surface observations) +12-19 +Reserved +Operational + + +1644 +008002 +Vertical significance (surface observations) +20 +No clouds detected by the cloud detection system +Operational + + +1645 +008002 +Vertical significance (surface observations) +21 +First instrument detected cloud layer +Operational + + +1646 +008002 +Vertical significance (surface observations) +22 +Second instrument detected cloud layer +Operational + + +1647 +008002 +Vertical significance (surface observations) +23 +Third instrument detected cloud layer +Operational + + +1648 +008002 +Vertical significance (surface observations) +24 +Fourth instrument detected cloud layer +Operational + + +1649 +008002 +Vertical significance (surface observations) +25-61 +Reserved +Operational + + +1650 +008002 +Vertical significance (surface observations) +62 +Value not applicable +Operational + + +1651 +008002 +Vertical significance (surface observations) +63 +Missing value +Operational + + +1652 +008003 +Vertical significance (satellite observations) +0 +Surface +Operational + + +1653 +008003 +Vertical significance (satellite observations) +1 +Base of satellite sounding +Operational + + +1654 +008003 +Vertical significance (satellite observations) +2 +Cloud top +Operational + + +1655 +008003 +Vertical significance (satellite observations) +3 +Tropopause +Operational + + +1656 +008003 +Vertical significance (satellite observations) +4 +Precipitable water +Operational + + +1657 +008003 +Vertical significance (satellite observations) +5 +Sounding radiances +Operational + + +1658 +008003 +Vertical significance (satellite observations) +6 +Mean temperatures +Operational + + +1659 +008003 +Vertical significance (satellite observations) +7 +Ozone +Operational + + +1660 +008003 +Vertical significance (satellite observations) +8 +Low cloud +Operational + + +1661 +008003 +Vertical significance (satellite observations) +9 +Med cloud +Operational + + +1662 +008003 +Vertical significance (satellite observations) +10 +High cloud +Operational + + +1663 +008003 +Vertical significance (satellite observations) +11-62 +Reserved +Operational + + +1664 +008003 +Vertical significance (satellite observations) +63 +Missing value +Operational + + +1665 +008004 +Phase of aircraft flight +0-1 +Reserved +Operational + + +1666 +008004 +Phase of aircraft flight +2 +Unsteady (UNS) +Operational + + +1667 +008004 +Phase of aircraft flight +3 +Level flight, routine observation (LVR) +Operational + + +1668 +008004 +Phase of aircraft flight +4 +Level flight, highest wind encountered (LVW) +Operational + + +1669 +008004 +Phase of aircraft flight +5 +Ascending (ASC) +Operational + + +1670 +008004 +Phase of aircraft flight +6 +Descending (DES) +Operational + + +1671 +008004 +Phase of aircraft flight +7 +Missing value +Operational + + +1672 +008005 +Meteorological attribute significance +0 +Reserved +Operational + + +1673 +008005 +Meteorological attribute significance +1 +Storm centre +Operational + + +1674 +008005 +Meteorological attribute significance +2 +Outer limit or edge of storm +Operational + + +1675 +008005 +Meteorological attribute significance +3 +Location of maximum wind +Operational + + +1676 +008005 +Meteorological attribute significance +4 +Location of the storm in the perturbed analysis +Operational + + +1677 +008005 +Meteorological attribute significance +5 +Location of the storm in the analysis +Operational + + +1678 +008005 +Meteorological attribute significance +6-14 +Reserved +Operational + + +1679 +008005 +Meteorological attribute significance +15 +Missing value +Operational + + +1680 +008006 +Ozone vertical sounding significance +1 +Surface +Operational + + +1681 +008006 +Ozone vertical sounding significance +2 +Standard level +Operational + + +1682 +008006 +Ozone vertical sounding significance +3 +Tropopause level +Operational + + +1683 +008006 +Ozone vertical sounding significance +4 +Prominent maximum level +Operational + + +1684 +008006 +Ozone vertical sounding significance +5 +Prominent minimum level +Operational + + +1685 +008006 +Ozone vertical sounding significance +6 +Minimum pressure level +Operational + + +1686 +008006 +Ozone vertical sounding significance +7 +Reserved +Operational + + +1687 +008006 +Ozone vertical sounding significance +8 +Level of undetermined significance +Operational + + +1688 +008006 +Ozone vertical sounding significance +All 9 +Missing value +Operational + + +1689 +008007 +Dimensional significance +0 +Point +Operational + + +1690 +008007 +Dimensional significance +1 +Line +Operational + + +1691 +008007 +Dimensional significance +2 +Area +Operational + + +1692 +008007 +Dimensional significance +3 +Volume +Operational + + +1693 +008007 +Dimensional significance +4-14 +Reserved +Operational + + +1694 +008007 +Dimensional significance +15 +Missing value +Operational + + +1695 +008008 +Radiation vertical sounding significance +1 +Surface +Operational + + +1696 +008008 +Radiation vertical sounding significance +2 +Standard level +Operational + + +1697 +008008 +Radiation vertical sounding significance +3 +Tropopause level +Operational + + +1698 +008008 +Radiation vertical sounding significance +4 +Level of beta radiation maximum +Operational + + +1699 +008008 +Radiation vertical sounding significance +5 +Level of gamma radiation maximum +Operational + + +1700 +008008 +Radiation vertical sounding significance +6 +Minimum pressure level +Operational + + +1701 +008008 +Radiation vertical sounding significance +7 +Reserved +Operational + + +1702 +008008 +Radiation vertical sounding significance +8 +Level of undetermined significance +Operational + + +1703 +008008 +Radiation vertical sounding significance +All 9 +Missing value +Operational + + +1704 +008009 +Detailed phase of flight +0 +Level flight, routine observation, unsteady +Operational + + +1705 +008009 +Detailed phase of flight +1 +Level flight, highest wind encountered, unsteady +Operational + + +1706 +008009 +Detailed phase of flight +2 +Unsteady (UNS) +Operational + + +1707 +008009 +Detailed phase of flight +3 +Level flight, routine observation (LVR) +Operational + + +1708 +008009 +Detailed phase of flight +4 +Level flight, highest wind encountered (LVW) +Operational + + +1709 +008009 +Detailed phase of flight +5 +Ascending (ASC) +Operational + + +1710 +008009 +Detailed phase of flight +6 +Descending (DES) +Operational + + +1711 +008009 +Detailed phase of flight +7 +Ascending, observation intervals selected by time increments +Operational + + +1712 +008009 +Detailed phase of flight +8 +Ascending, observation intervals selected by time increments, unsteady +Operational + + +1713 +008009 +Detailed phase of flight +9 +Ascending, observation intervals selected by pressure increments +Operational + + +1714 +008009 +Detailed phase of flight +10 +Ascending, observation intervals selected by pressure increments, unsteady +Operational + + +1715 +008009 +Detailed phase of flight +11 +Descending, observation intervals selected by time increments +Operational + + +1716 +008009 +Detailed phase of flight +12 +Descending, observation intervals selected by time increments, unsteady +Operational + + +1717 +008009 +Detailed phase of flight +13 +Descending, observation intervals selected by pressure increments +Operational + + +1718 +008009 +Detailed phase of flight +14 +Descending, observation intervals selected by pressure increments, unsteady +Operational + + +1719 +008009 +Detailed phase of flight +15 +Missing value +Operational + + +1720 +008010 +Surface qualifier (temperature data) +0 +Reserved +Operational + + +1721 +008010 +Surface qualifier (temperature data) +1 +Bare soil +Operational + + +1722 +008010 +Surface qualifier (temperature data) +2 +Bare rock +Operational + + +1723 +008010 +Surface qualifier (temperature data) +3 +Land grass cover +Operational + + +1724 +008010 +Surface qualifier (temperature data) +4 +Water (lake, sea) +Operational + + +1725 +008010 +Surface qualifier (temperature data) +5 +Flood water underneath +Operational + + +1726 +008010 +Surface qualifier (temperature data) +6 +Snow +Operational + + +1727 +008010 +Surface qualifier (temperature data) +7 +Ice +Operational + + +1728 +008010 +Surface qualifier (temperature data) +8 +Runway or road +Operational + + +1729 +008010 +Surface qualifier (temperature data) +9 +Ship or platform deck in steel +Operational + + +1730 +008010 +Surface qualifier (temperature data) +10 +Ship or platform deck in wood +Operational + + +1731 +008010 +Surface qualifier (temperature data) +11 +Ship or platform deck partly covered with rubber mat +Operational + + +1732 +008010 +Surface qualifier (temperature data) +12 +Building roof +Operational + + +1733 +008010 +Surface qualifier (temperature data) +13-30 +Reserved +Operational + + +1734 +008010 +Surface qualifier (temperature data) +31 +Missing value +Operational + + +1735 +008011 +Meteorological feature +0 +Quasi-stationary front at the surface +Operational + + +1736 +008011 +Meteorological feature +1 +Quasi-stationary front above the surface +Operational + + +1737 +008011 +Meteorological feature +2 +Warm front at the surface +Operational + + +1738 +008011 +Meteorological feature +3 +Warm front above the surface +Operational + + +1739 +008011 +Meteorological feature +4 +Cold front at the surface +Operational + + +1740 +008011 +Meteorological feature +5 +Cold front above the surface +Operational + + +1741 +008011 +Meteorological feature +6 +Occlusion +Operational + + +1742 +008011 +Meteorological feature +7 +Instability line +Operational + + +1743 +008011 +Meteorological feature +8 +Intertropical front +Operational + + +1744 +008011 +Meteorological feature +9 +Convergence line +Operational + + +1745 +008011 +Meteorological feature +10 +Jet stream +Operational + + +1746 +008011 +Meteorological feature +11 +Cloud clear +Operational + + +1747 +008011 +Meteorological feature +12 +Cloud +Operational + + +1748 +008011 +Meteorological feature +13 +Turbulence +Operational + + +1749 +008011 +Meteorological feature +14 +Storm +Operational + + +1750 +008011 +Meteorological feature +15 +Airframe icing +Operational + + +1751 +008011 +Meteorological feature +16 +Phenomenon +Operational + + +1752 +008011 +Meteorological feature +17 +Volcano +Operational + + +1753 +008011 +Meteorological feature +18 +Atmospherics +Operational + + +1754 +008011 +Meteorological feature +19 +Reserved +Operational + + +1755 +008011 +Meteorological feature +20 +Special clouds +Operational + + +1756 +008011 +Meteorological feature +21 +Thunderstorm +Operational + + +1757 +008011 +Meteorological feature +22 +Tropical cyclone +Operational + + +1758 +008011 +Meteorological feature +23 +Mountain wave +Operational + + +1759 +008011 +Meteorological feature +24 +Duststorm +Operational + + +1760 +008011 +Meteorological feature +25 +Sandstorm +Operational + + +1761 +008011 +Meteorological feature +26-62 +Reserved +Operational + + +1762 +008011 +Meteorological feature +63 +Missing value +Operational + + +1763 +008012 +Land/sea qualifier +0 +Land +Operational + + +1764 +008012 +Land/sea qualifier +1 +Sea +Operational + + +1765 +008012 +Land/sea qualifier +2 +Coast +Operational + + +1766 +008012 +Land/sea qualifier +3 +Missing value +Operational + + +1767 +008013 +Day/night qualifier +0 +Night +Operational + + +1768 +008013 +Day/night qualifier +1 +Day +Operational + + +1769 +008013 +Day/night qualifier +2 +Twilight +Operational + + +1770 +008013 +Day/night qualifier +3 +Missing value +Operational + + +1771 +008014 +Qualifier for runway visual range +0 +10-minute mean value - normal value +Operational + + +1772 +008014 +Qualifier for runway visual range +1 +10-minute mean value - above the upper limit for assessments of RVR (P) +Operational + + +1773 +008014 +Qualifier for runway visual range +2 +10-minute mean value - below the lower limit for assessments of RVR (M) +Operational + + +1774 +008014 +Qualifier for runway visual range +3 +one-minute minimum value - normal value +Operational + + +1775 +008014 +Qualifier for runway visual range +4 +one-minute minimum value - above the upper limit for assessments of RVR (P) +Operational + + +1776 +008014 +Qualifier for runway visual range +5 +one-minute minimum value - below the lower limit for assessments of RVR (M) +Operational + + +1777 +008014 +Qualifier for runway visual range +6 +one-minute maximum value - normal value +Operational + + +1778 +008014 +Qualifier for runway visual range +7 +one-minute maximum value - above the upper limit for assessments of RVR (P) +Operational + + +1779 +008014 +Qualifier for runway visual range +8 +one-minute maximum value - below the lower limit for assessments of RVR (M) +Operational + + +1780 +008014 +Qualifier for runway visual range +9-14 +Reserved +Operational + + +1781 +008014 +Qualifier for runway visual range +15 +Missing value +Operational + + +1782 +008015 +Significant qualifier for sensor +0 +Single sensor +Operational + + +1783 +008015 +Significant qualifier for sensor +1 +Primary sensor +Operational + + +1784 +008015 +Significant qualifier for sensor +2 +Secondary sensor (Backup) +Operational + + +1785 +008015 +Significant qualifier for sensor +3-6 +Reserved +Operational + + +1786 +008015 +Significant qualifier for sensor +7 +Missing value +Operational + + +1787 +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +0 +NOSIG +Operational + + +1788 +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +1 +BECMG +Operational + + +1789 +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +2 +TEMPO +Operational + + +1790 +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +3 +FM +Operational + + +1791 +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +4-6 +Reserved +Operational + + +1792 +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +7 +Missing value +Operational + + +1793 +008017 +Qualifier of the time when the forecast change is expected +0 +FM +Operational + + +1794 +008017 +Qualifier of the time when the forecast change is expected +1 +TL +Operational + + +1795 +008017 +Qualifier of the time when the forecast change is expected +2 +AT +Operational + + +1796 +008017 +Qualifier of the time when the forecast change is expected +3 +Missing value +Operational + + +1797 +008018 +SEAWINDS land/ice surface type +1 +Land is present +Operational + + +1798 +008018 +SEAWINDS land/ice surface type +2 +Surface ice map indicates ice is present +Operational + + +1799 +008018 +SEAWINDS land/ice surface type +3-10 +Reserved +Operational + + +1800 +008018 +SEAWINDS land/ice surface type +11 +Ice map data not available +Operational + + +1801 +008018 +SEAWINDS land/ice surface type +12 +Attenuation map data not available +Operational + + +1802 +008018 +SEAWINDS land/ice surface type +13-16 +Reserved +Operational + + +1803 +008018 +SEAWINDS land/ice surface type +All 17 +Missing value +Operational + + +1804 +008019 +Qualifier for following centre identifier +0 +Reserved +Operational + + +1805 +008019 +Qualifier for following centre identifier +1 +ATS (Air Traffic Service) unit serving FIR (Flight Information Region) +Operational + + +1806 +008019 +Qualifier for following centre identifier +2 +FIR (Flight Information Region) +Operational + + +1807 +008019 +Qualifier for following centre identifier +3 +UIR (Upper Flight Information Region) +Operational + + +1808 +008019 +Qualifier for following centre identifier +4 +CTA (Control Area) +Operational + + +1809 +008019 +Qualifier for following centre identifier +5 +VAAC (Volcanic Ash Advisory Centre) +Operational + + +1810 +008019 +Qualifier for following centre identifier +6 +MWO (Meteorological Watch Office) issuing SIGMET +Operational + + +1811 +008019 +Qualifier for following centre identifier +7-14 +Reserved +Operational + + +1812 +008019 +Qualifier for following centre identifier +15 +Missing value +Operational + + +1813 +008021 +Time significance +0 +Reserved +Operational + + +1814 +008021 +Time significance +1 +Time series +Operational + + +1815 +008021 +Time significance +2 +Time averaged (see Note 1) +Operational + + +1816 +008021 +Time significance +3 +Accumulated +Operational + + +1817 +008021 +Time significance +4 +Forecast +Operational + + +1818 +008021 +Time significance +5 +Forecast time series +Operational + + +1819 +008021 +Time significance +6 +Forecast time averaged +Operational + + +1820 +008021 +Time significance +7 +Forecast accumulated +Operational + + +1821 +008021 +Time significance +8 +Ensemble mean (see Note 2) +Operational + + +1822 +008021 +Time significance +9 +Ensemble mean time series +Operational + + +1823 +008021 +Time significance +10 +Ensemble mean time averaged +Operational + + +1824 +008021 +Time significance +11 +Ensemble mean accumulated +Operational + + +1825 +008021 +Time significance +12 +Ensemble mean forecast +Operational + + +1826 +008021 +Time significance +13 +Ensemble mean forecast time series +Operational + + +1827 +008021 +Time significance +14 +Ensemble mean forecast time averaged +Operational + + +1828 +008021 +Time significance +15 +Ensemble mean forecast accumulated +Operational + + +1829 +008021 +Time significance +16 +Analysis +Operational + + +1830 +008021 +Time significance +17 +Start of phenomenon +Operational + + +1831 +008021 +Time significance +18 +Radiosonde launch time +Operational + + +1832 +008021 +Time significance +19 +Start of orbit +Operational + + +1833 +008021 +Time significance +20 +End of orbit +Operational + + +1834 +008021 +Time significance +21 +Time of ascending node +Operational + + +1835 +008021 +Time significance +22 +Time of occurrence of wind shift +Operational + + +1836 +008021 +Time significance +23 +Monitoring period +Operational + + +1837 +008021 +Time significance +24 +Agreed time limit for report reception +Operational + + +1838 +008021 +Time significance +25 +Nominal reporting time +Operational + + +1839 +008021 +Time significance +26 +Time of last known position +Operational + + +1840 +008021 +Time significance +27 +First guess +Operational + + +1841 +008021 +Time significance +28 +Start of scan +Operational + + +1842 +008021 +Time significance +29 +End of scan or time of ending +Operational + + +1843 +008021 +Time significance +30 +Time of occurrence +Operational + + +1844 +008021 +Time significance +31 +Missing value +Operational + + +1845 +008023 +First-order statistics +0-1 +Reserved +Operational + + +1846 +008023 +First-order statistics +2 +Maximum value +Operational + + +1847 +008023 +First-order statistics +3 +Minimum value +Operational + + +1848 +008023 +First-order statistics +4 +Mean value +Operational + + +1849 +008023 +First-order statistics +5 +Median value +Operational + + +1850 +008023 +First-order statistics +6 +Modal value +Operational + + +1851 +008023 +First-order statistics +7 +Mean absolute error +Operational + + +1852 +008023 +First-order statistics +8 +Reserved +Operational + + +1853 +008023 +First-order statistics +9 +Best estimate of standard deviation (N-1) +Operational + + +1854 +008023 +First-order statistics +10 +Standard deviation (N) +Operational + + +1855 +008023 +First-order statistics +11 +Harmonic mean +Operational + + +1856 +008023 +First-order statistics +12 +Root-mean-square vector error +Operational + + +1857 +008023 +First-order statistics +13 +Root-mean-square +Operational + + +1858 +008023 +First-order statistics +14-31 +Reserved +Operational + + +1859 +008023 +First-order statistics +32 +Vector mean +Operational + + +1860 +008023 +First-order statistics +33-62 +Reserved for local use +Operational + + +1861 +008023 +First-order statistics +63 +Missing value +Operational + + +1862 +008024 +Difference statistics +0-1 +Reserved +Operational + + +1863 +008024 +Difference statistics +2 +Observed minus maximum +Operational + + +1864 +008024 +Difference statistics +3 +Observed minus minimum +Operational + + +1865 +008024 +Difference statistics +4 +Observed minus mean +Operational + + +1866 +008024 +Difference statistics +5 +Observed minus median +Operational + + +1867 +008024 +Difference statistics +6 +Observed minus mode +Operational + + +1868 +008024 +Difference statistics +7-10 +Reserved +Operational + + +1869 +008024 +Difference statistics +11 +Observed minus climatology (anomaly) +Operational + + +1870 +008024 +Difference statistics +12 +Observed minus analysed value +Operational + + +1871 +008024 +Difference statistics +13 +Observed minus initialized analysed value +Operational + + +1872 +008024 +Difference statistics +14 +Observed minus forecast value +** +Operational + + +1873 +008024 +Difference statistics +15-20 +Reserved +Operational + + +1874 +008024 +Difference statistics +21 +Observed minus interpolated value +Operational + + +1875 +008024 +Difference statistics +22 +Observed minus hydrostatically calculated value +Operational + + +1876 +008024 +Difference statistics +23-31 +Reserved +Operational + + +1877 +008024 +Difference statistics +32-62 +Reserved for local use +Operational + + +1878 +008024 +Difference statistics +63 +Missing value +Operational + + +1879 +008025 +Time difference qualifier +0 +Universal Time Coordinated (UTC) minus Local Standard Time (LST) +Operational + + +1880 +008025 +Time difference qualifier +1 +Local Standard Time +Operational + + +1881 +008025 +Time difference qualifier +2 +Universal Time Coordinated (UTC) minus Satellite clock +Operational + + +1882 +008025 +Time difference qualifier +3-4 +Reserved +Operational + + +1883 +008025 +Time difference qualifier +5 +Time difference from edge of processing segment +Operational + + +1884 +008025 +Time difference qualifier +6-14 +Reserved +Operational + + +1885 +008025 +Time difference qualifier +15 +Missing value +Operational + + +1886 +008026 +Matrix significance +0 +Averaging kernel matrix +Operational + + +1887 +008026 +Matrix significance +1 +Correlation matrix (C) +Operational + + +1888 +008026 +Matrix significance +2 +Lower triangular correlation matrix square root (L from C=LLT) +Operational + + +1889 +008026 +Matrix significance +3 +Inverse of lower triangular correlation matrix square root (L-1) +Operational + + +1890 +008026 +Matrix significance +4-42 +Reserved +Operational + + +1891 +008026 +Matrix significance +43-62 +Reserved for local use +Operational + + +1892 +008026 +Matrix significance +63 +Missing or undefined significance +Operational + + +1893 +008029 +Surface type +0 +Open ocean or semi-enclosed sea +Operational + + +1894 +008029 +Surface type +1 +Enclosed sea or lake +Operational + + +1895 +008029 +Surface type +2 +Continental ice +Operational + + +1896 +008029 +Surface type +3 +Land +Operational + + +1897 +008029 +Surface type +4 +Low inland (below sea level) +Operational + + +1898 +008029 +Surface type +5 +Mix of land and water +Operational + + +1899 +008029 +Surface type +6 +Mix of land and low inland +Operational + + +1900 +008029 +Surface type +7-10 +Reserved +Operational + + +1901 +008029 +Surface type +11 +River +Operational + + +1902 +008029 +Surface type +12 +Lake +Operational + + +1903 +008029 +Surface type +13 +Sea +Operational + + +1904 +008029 +Surface type +14 +Glacier +Operational + + +1905 +008029 +Surface type +15 +Urban land +Operational + + +1906 +008029 +Surface type +16 +Rural land +Operational + + +1907 +008029 +Surface type +17 +Suburban land +Operational + + +1908 +008029 +Surface type +18 +Sea ice +Operational + + +1909 +008029 +Surface type +19-254 +Reserved +Operational + + +1910 +008029 +Surface type +255 +Missing value +Operational + + +1911 +008032 +Status of operation +0 +Routine operation +Operational + + +1912 +008032 +Status of operation +1 +Event triggered by storm surge +Operational + + +1913 +008032 +Status of operation +2 +Event triggered by tsunami +Operational + + +1914 +008032 +Status of operation +3 +Event triggered manually +Operational + + +1915 +008032 +Status of operation +4 +Installation testing +Operational + + +1916 +008032 +Status of operation +5 +Maintenance testing +Operational + + +1917 +008032 +Status of operation +6-14 +Reserved +Operational + + +1918 +008032 +Status of operation +15 +Missing value +Operational + + +1919 +008033 +Method of derivation of percentage confidence +0 +Reserved +Operational + + +1920 +008033 +Method of derivation of percentage confidence +1 +Percentage confidence calculated using cloud fraction +Operational + + +1921 +008033 +Method of derivation of percentage confidence +2 +Percentage confidence calculated using standard deviation of temperature +Operational + + +1922 +008033 +Method of derivation of percentage confidence +3 +Percentage confidence calculated using probability of cloud contamination +Operational + + +1923 +008033 +Method of derivation of percentage confidence +4 +Percentage confidence calculated using normality of distribution +Operational + + +1924 +008033 +Method of derivation of percentage confidence +5-126 +Reserved +Operational + + +1925 +008033 +Method of derivation of percentage confidence +127 +Missing value +Operational + + +1926 +008034 +Temperature/salinity measurement qualifier +0 +Secondary sampling: averaged +Operational + + +1927 +008034 +Temperature/salinity measurement qualifier +1 +Secondary sampling: discrete +Operational + + +1928 +008034 +Temperature/salinity measurement qualifier +2 +Secondary sampling: mixed +Operational + + +1929 +008034 +Temperature/salinity measurement qualifier +3 +Near-surface sampling: averaged, pumped +Operational + + +1930 +008034 +Temperature/salinity measurement qualifier +4 +Near-surface sampling: averaged, unpumped +Operational + + +1931 +008034 +Temperature/salinity measurement qualifier +5 +Near-surface sampling: discrete, pumped +Operational + + +1932 +008034 +Temperature/salinity measurement qualifier +6 +Near-surface sampling: discrete, unpumped +Operational + + +1933 +008034 +Temperature/salinity measurement qualifier +7 +Near-surface sampling: mixed, pumped +Operational + + +1934 +008034 +Temperature/salinity measurement qualifier +8 +Near-surface sampling: mixed, unpumped +Operational + + +1935 +008034 +Temperature/salinity measurement qualifier +9-14 +Reserved +Operational + + +1936 +008034 +Temperature/salinity measurement qualifier +15 +Missing value +Operational + + +1937 +008035 +Type of monitoring exercise +0 +Global +Operational + + +1938 +008035 +Type of monitoring exercise +1 +Regional +Operational + + +1939 +008035 +Type of monitoring exercise +2 +National +Operational + + +1940 +008035 +Type of monitoring exercise +3 +Special +Operational + + +1941 +008035 +Type of monitoring exercise +4 +Bilateral +Operational + + +1942 +008035 +Type of monitoring exercise +5 +Reserved +Operational + + +1943 +008035 +Type of monitoring exercise +6 +Reserved +Operational + + +1944 +008035 +Type of monitoring exercise +7 +Missing value +Operational + + +1945 +008036 +Type of centre or station performing monitoring +0 +WMO Secretariat +Operational + + +1946 +008036 +Type of centre or station performing monitoring +1 +WMO +Operational + + +1947 +008036 +Type of centre or station performing monitoring +2 +RSMC +Operational + + +1948 +008036 +Type of centre or station performing monitoring +3 +NMC +Operational + + +1949 +008036 +Type of centre or station performing monitoring +4 +RTH +Operational + + +1950 +008036 +Type of centre or station performing monitoring +5 +Observing site +Operational + + +1951 +008036 +Type of centre or station performing monitoring +6 +Other +Operational + + +1952 +008036 +Type of centre or station performing monitoring +7 +Missing value +Operational + + +1953 +008037 +Baseline check significance +0 +Manufacturer’s baseline check unit +Operational + + +1954 +008037 +Baseline check significance +1 +Weather screen +Operational + + +1955 +008037 +Baseline check significance +2 +GRUAN standard humidity chamber +Operational + + +1956 +008037 +Baseline check significance +3-30 +Reserved +Operational + + +1957 +008037 +Baseline check significance +31 +Missing value +Operational + + +1958 +008038 +Instrument data significance +0 +Verified instrument reading +Operational + + +1959 +008038 +Instrument data significance +1 +Reference instrument reading +Operational + + +1960 +008038 +Instrument data significance +2-254 +Reserved +Operational + + +1961 +008038 +Instrument data significance +255 +Missing value +Operational + + +1962 +008039 +Time significance (Aviation forecast) +0 +Issue time of forecast +Operational + + +1963 +008039 +Time significance (Aviation forecast) +1 +Time of commencement of period of the forecast +Operational + + +1964 +008039 +Time significance (Aviation forecast) +2 +Time of ending of period of the forecast +Operational + + +1965 +008039 +Time significance (Aviation forecast) +3 +Forecast time of maximum temperature +Operational + + +1966 +008039 +Time significance (Aviation forecast) +4 +Forecast time of minimum temperature +Operational + + +1967 +008039 +Time significance (Aviation forecast) +5 +Time of beginning of the forecast change +Operational + + +1968 +008039 +Time significance (Aviation forecast) +6 +Time of ending of the forecast change +Operational + + +1969 +008039 +Time significance (Aviation forecast) +7-62 +Reserved +Operational + + +1970 +008039 +Time significance (Aviation forecast) +63 +Missing value +Operational + + +1971 +008040 +Flight level significance +0 +High-resolution data sample +Operational + + +1972 +008040 +Flight level significance +1 +Within 20 hPa of surface +Operational + + +1973 +008040 +Flight level significance +2 +Pressure less than 10 hPa (i.e., 9, 8, 7, etc.) when no other reason applies +Operational + + +1974 +008040 +Flight level significance +3 +Base pressure level for stability index +Operational + + +1975 +008040 +Flight level significance +4 +Begin doubtful temperature, height data +Operational + + +1976 +008040 +Flight level significance +5 +Begin missing data (all elements) +Operational + + +1977 +008040 +Flight level significance +6 +Begin missing relative humidity data +Operational + + +1978 +008040 +Flight level significance +7 +Begin missing temperature data +Operational + + +1979 +008040 +Flight level significance +8 +Highest level reached before balloon descent because of icing or turbulence +Operational + + +1980 +008040 +Flight level significance +9 +End doubtful temperature, height data +Operational + + +1981 +008040 +Flight level significance +10 +End missing data (all elements) +Operational + + +1982 +008040 +Flight level significance +11 +End missing relative humidity data +Operational + + +1983 +008040 +Flight level significance +12 +End missing temperature data +Operational + + +1984 +008040 +Flight level significance +13 +Zero degrees Celsius crossing(s) for RADAT +Operational + + +1985 +008040 +Flight level significance +14 +Standard pressure level +Operational + + +1986 +008040 +Flight level significance +15 +Operator-added level +Operational + + +1987 +008040 +Flight level significance +16 +Operator-deleted level +Operational + + +1988 +008040 +Flight level significance +17 +Balloon re-ascended beyond previous highest ascent level +Operational + + +1989 +008040 +Flight level significance +18 +Significant relative humidity level +Operational + + +1990 +008040 +Flight level significance +19 +Relative humidity level selection terminated +Operational + + +1991 +008040 +Flight level significance +20 +Surface level +Operational + + +1992 +008040 +Flight level significance +21 +Significant temperature level +Operational + + +1993 +008040 +Flight level significance +22 +Mandatory temperature level +Operational + + +1994 +008040 +Flight level significance +23 +Flight termination level +Operational + + +1995 +008040 +Flight level significance +24 +Tropopause(s) +Operational + + +1996 +008040 +Flight level significance +25 +Aircraft report +Operational + + +1997 +008040 +Flight level significance +26 +Interpolated (generated) level +Operational + + +1998 +008040 +Flight level significance +27 +Mandatory wind level +Operational + + +1999 +008040 +Flight level significance +28 +Significant wind level +Operational + + +2000 +008040 +Flight level significance +29 +Maximum wind level +Operational + + +2001 +008040 +Flight level significance +30 +Incremental wind level (fixed regional) +Operational + + +2002 +008040 +Flight level significance +31 +Incremental height level (generated) +Operational + + +2003 +008040 +Flight level significance +32 +Wind termination level +Operational + + +2004 +008040 +Flight level significance +33 +Pressure 100 to 110 hPa, when no other reason applies +Operational + + +2005 +008040 +Flight level significance +34 +Freezing level base +Operational + + +2006 +008040 +Flight level significance +35 +Freezing level top +Operational + + +2007 +008040 +Flight level significance +36 +Flight level base +Operational + + +2008 +008040 +Flight level significance +37 +Flight level top +Operational + + +2009 +008040 +Flight level significance +38 +Top of wind sounding +Operational + + +2010 +008040 +Flight level significance +39 +Bottom of wind sounding +Operational + + +2011 +008040 +Flight level significance +40 +Significant thermodynamic level (inversion) +Operational + + +2012 +008040 +Flight level significance +41 +Significant relative humidity level (according to NCDC criteria) +Operational + + +2013 +008040 +Flight level significance +42 +Significant temperature level (according to NCDC) +Operational + + +2014 +008040 +Flight level significance +43 +Begin missing wind data +Operational + + +2015 +008040 +Flight level significance +44 +End missing wind data +Operational + + +2016 +008040 +Flight level significance +45-59 +Reserved +Operational + + +2017 +008040 +Flight level significance +60 +Level of 80-knot isotach above jet +Operational + + +2018 +008040 +Flight level significance +61 +Level of 80-knot isotach below jet +Operational + + +2019 +008040 +Flight level significance +62 +Other +Operational + + +2020 +008040 +Flight level significance +63 +Missing value +Operational + + +2021 +008041 +Data significance +0 +Parent site +Operational + + +2022 +008041 +Data significance +1 +Observation site +Operational + + +2023 +008041 +Data significance +2 +Balloon manufacture date +Operational + + +2024 +008041 +Data significance +3 +Balloon launch point +Operational + + +2025 +008041 +Data significance +4 +Surface observation +Operational + + +2026 +008041 +Data significance +5 +Surface observation displacement from launch point +Operational + + +2027 +008041 +Data significance +6 +Flight level observation +Operational + + +2028 +008041 +Data significance +7 +Flight level termination point +Operational + + +2029 +008041 +Data significance +8 +IFR ceiling and visibility +Operational + + +2030 +008041 +Data significance +9 +Mountain obscuration +Operational + + +2031 +008041 +Data significance +10 +Strong surface wind +Operational + + +2032 +008041 +Data significance +11 +Freezing level +Operational + + +2033 +008041 +Data significance +12 +Multiple freezing level +Operational + + +2034 +008041 +Data significance +13 +Instrument manufacture date +Operational + + +2035 +008041 +Data significance +14-30 +Reserved +Operational + + +2036 +008041 +Data significance +31 +Missing value +Operational + + +2037 +008042 +Extended vertical sounding significance +1 +Surface +Operational + + +2038 +008042 +Extended vertical sounding significance +2 +Standard level +Operational + + +2039 +008042 +Extended vertical sounding significance +3 +Tropopause level +Operational + + +2040 +008042 +Extended vertical sounding significance +4 +Maximum wind level +Operational + + +2041 +008042 +Extended vertical sounding significance +5 +Significant temperature level +Operational + + +2042 +008042 +Extended vertical sounding significance +6 +Significant humidity level +Operational + + +2043 +008042 +Extended vertical sounding significance +7 +Significant wind level +Operational + + +2044 +008042 +Extended vertical sounding significance +8 +Beginning of missing temperature data +Operational + + +2045 +008042 +Extended vertical sounding significance +9 +End of missing temperature data +Operational + + +2046 +008042 +Extended vertical sounding significance +10 +Beginning of missing humidity data +Operational + + +2047 +008042 +Extended vertical sounding significance +11 +End of missing humidity data +Operational + + +2048 +008042 +Extended vertical sounding significance +12 +Beginning of missing wind data +Operational + + +2049 +008042 +Extended vertical sounding significance +13 +End of missing wind data +Operational + + +2050 +008042 +Extended vertical sounding significance +14 +Top of wind sounding +Operational + + +2051 +008042 +Extended vertical sounding significance +15 +Level determined by regional decision +Operational + + +2052 +008042 +Extended vertical sounding significance +16 +Freezing level +Operational + + +2053 +008042 +Extended vertical sounding significance +17 +Pressure level originally indicated by height as the vertical coordinate +Operational + + +2054 +008042 +Extended vertical sounding significance +All 18 +Missing value +Operational + + +2055 +008043 +Atmospheric chemical or physical constituent type +0 +Ozone +O3 +10028-15-6 +Operational + + +2056 +008043 +Atmospheric chemical or physical constituent type +1 +Water vapour +H2O +7732-18-5 +Operational + + +2057 +008043 +Atmospheric chemical or physical constituent type +2 +Methane +CH4 +74-82-8 +Operational + + +2058 +008043 +Atmospheric chemical or physical constituent type +3 +Carbon dioxide +CO2 +124-38-9 +Operational + + +2059 +008043 +Atmospheric chemical or physical constituent type +4 +Carbon monoxide +CO +630-08-0 +Operational + + +2060 +008043 +Atmospheric chemical or physical constituent type +5 +Nitrogen dioxide +NO2 +10102-44-0 +Operational + + +2061 +008043 +Atmospheric chemical or physical constituent type +6 +Nitrous oxide +N2O +10024-97-2 +Operational + + +2062 +008043 +Atmospheric chemical or physical constituent type +7 +Formaldehyde +HCHO +50-00-0 +Operational + + +2063 +008043 +Atmospheric chemical or physical constituent type +8 +Sulphur dioxide +SO2 +7446-09-5 +Operational + + +2064 +008043 +Atmospheric chemical or physical constituent type +9-24 +Reserved +Operational + + +2065 +008043 +Atmospheric chemical or physical constituent type +25 +Particulate matter < 1.0 microns +Operational + + +2066 +008043 +Atmospheric chemical or physical constituent type +26 +Particulate matter < 2.5 microns +Operational + + +2067 +008043 +Atmospheric chemical or physical constituent type +27 +Particulate matter < 10 microns +Operational + + +2068 +008043 +Atmospheric chemical or physical constituent type +28 +Aerosols (generic) +Operational + + +2069 +008043 +Atmospheric chemical or physical constituent type +29 +Smoke (generic) +Operational + + +2070 +008043 +Atmospheric chemical or physical constituent type +30 +Crustal material (generic dust) +Operational + + +2071 +008043 +Atmospheric chemical or physical constituent type +31 +Volcanic ash +Operational + + +2072 +008043 +Atmospheric chemical or physical constituent type +32-200 +Reserved +Operational + + +2073 +008043 +Atmospheric chemical or physical constituent type +201-254 +Reserved for local use +Operational + + +2074 +008043 +Atmospheric chemical or physical constituent type +255 +Missing value +Operational + + +2075 +008050 +Qualifier for number of missing values in calculation of statistic +0 +Reserved +Operational + + +2076 +008050 +Qualifier for number of missing values in calculation of statistic +1 +Pressure +Operational + + +2077 +008050 +Qualifier for number of missing values in calculation of statistic +2 +Temperature +Operational + + +2078 +008050 +Qualifier for number of missing values in calculation of statistic +3 +Extreme temperature +Operational + + +2079 +008050 +Qualifier for number of missing values in calculation of statistic +4 +Vapour pressure +Operational + + +2080 +008050 +Qualifier for number of missing values in calculation of statistic +5 +Precipitation +Operational + + +2081 +008050 +Qualifier for number of missing values in calculation of statistic +6 +Sunshine duration +Operational + + +2082 +008050 +Qualifier for number of missing values in calculation of statistic +7 +Maximum temperature +Operational + + +2083 +008050 +Qualifier for number of missing values in calculation of statistic +8 +Minimum temperature +Operational + + +2084 +008050 +Qualifier for number of missing values in calculation of statistic +9 +Wind +Operational + + +2085 +008050 +Qualifier for number of missing values in calculation of statistic +10-14 +Reserved +Operational + + +2086 +008050 +Qualifier for number of missing values in calculation of statistic +15 +Missing value +Operational + + +2087 +008051 +Qualifier for number of missing values in calculation of statistic +1 +Pressure +Operational + + +2088 +008051 +Qualifier for number of missing values in calculation of statistic +2 +Temperature +Operational + + +2089 +008051 +Qualifier for number of missing values in calculation of statistic +3 +Extreme temperature +Operational + + +2090 +008051 +Qualifier for number of missing values in calculation of statistic +4 +Vapour pressure +Operational + + +2091 +008051 +Qualifier for number of missing values in calculation of statistic +5 +Precipitation +Operational + + +2092 +008051 +Qualifier for number of missing values in calculation of statistic +6 +Sunshine duration +Operational + + +2093 +008051 +Qualifier for number of missing values in calculation of statistic +7 +Missing value +Operational + + +2094 +008052 +Condition for which number of days of occurrence follows +0 +Mean wind speed over a 10-minute period observed or recorded equal to or more than 10 m s-1 or 20 knots +Operational + + +2095 +008052 +Condition for which number of days of occurrence follows +1 +Mean wind speed over a 10-minute period observed or recorded equal to or more than 20 m s-1 or 40 knots +Operational + + +2096 +008052 +Condition for which number of days of occurrence follows +2 +Mean wind speed over a 10-minute period observed or recorded equal to or more than 30 m s-1 or 60 knots +Operational + + +2097 +008052 +Condition for which number of days of occurrence follows +3 +Maximum temperature less than 273.15 K +Operational + + +2098 +008052 +Condition for which number of days of occurrence follows +4 +Maximum temperature equal to or more than 298.15 K +Operational + + +2099 +008052 +Condition for which number of days of occurrence follows +5 +Maximum temperature equal to or more than 303.15 K +Operational + + +2100 +008052 +Condition for which number of days of occurrence follows +6 +Maximum temperature equal to or more than 308.15 K +Operational + + +2101 +008052 +Condition for which number of days of occurrence follows +7 +Maximum temperature equal to or more than 313.15 K +Operational + + +2102 +008052 +Condition for which number of days of occurrence follows +8 +Minimum temperature less than 273.15 K +Operational + + +2103 +008052 +Condition for which number of days of occurrence follows +9 +Maximum temperature equal to or more than 273.15 K +Operational + + +2104 +008052 +Condition for which number of days of occurrence follows +10 +Precipitation equal to or more than 1.0 kg m-2 +Operational + + +2105 +008052 +Condition for which number of days of occurrence follows +11 +Precipitation equal to or more than 5.0 kg m-2 +Operational + + +2106 +008052 +Condition for which number of days of occurrence follows +12 +Precipitation equal to or more than 10.0 kg m-2 +Operational + + +2107 +008052 +Condition for which number of days of occurrence follows +13 +Precipitation equal to or more than 50.0 kg m-2 +Operational + + +2108 +008052 +Condition for which number of days of occurrence follows +14 +Precipitation equal to or more than 100.0 kg m-2 +Operational + + +2109 +008052 +Condition for which number of days of occurrence follows +15 +Precipitation equal to or more than 150.0 kg m-2 +Operational + + +2110 +008052 +Condition for which number of days of occurrence follows +16 +Snow depth more than 0.00 m +Operational + + +2111 +008052 +Condition for which number of days of occurrence follows +17 +Snow depth more than 0.01 m +Operational + + +2112 +008052 +Condition for which number of days of occurrence follows +18 +Snow depth more than 0.10 m +Operational + + +2113 +008052 +Condition for which number of days of occurrence follows +19 +Snow depth more than 0.50 m +Operational + + +2114 +008052 +Condition for which number of days of occurrence follows +20 +Horizontal visibility less than 50 m +Operational + + +2115 +008052 +Condition for which number of days of occurrence follows +21 +Horizontal visibility less than 100 m +Operational + + +2116 +008052 +Condition for which number of days of occurrence follows +22 +Horizontal visibility less than 1000 m +Operational + + +2117 +008052 +Condition for which number of days of occurrence follows +23 +Hail +Operational + + +2118 +008052 +Condition for which number of days of occurrence follows +24 +Thunderstorm +Operational + + +2119 +008052 +Condition for which number of days of occurrence follows +25-30 +Reserved +Operational + + +2120 +008052 +Condition for which number of days of occurrence follows +31 +Missing value +Operational + + +2121 +008053 +Day of occurrence qualifier +0 +Value occurred on only one day in the month +Operational + + +2122 +008053 +Day of occurrence qualifier +1 +Value occurred on more than one day in the month +Operational + + +2123 +008053 +Day of occurrence qualifier +2 +Reserved +Operational + + +2124 +008053 +Day of occurrence qualifier +3 +Missing value +Operational + + +2125 +008054 +Qualifier for wind speed or wind gusts +0 +Wind speed or gust is as reported +Operational + + +2126 +008054 +Qualifier for wind speed or wind gusts +1 +Wind speed is greater than that reported (P in METAR/TAF/SPECI) +Operational + + +2127 +008054 +Qualifier for wind speed or wind gusts +2-6 +Reserved +Operational + + +2128 +008054 +Qualifier for wind speed or wind gusts +7 +Missing value +Operational + + +2129 +008060 +Sample scanning mode significance +0 +Reserved +Operational + + +2130 +008060 +Sample scanning mode significance +1 +Range +Operational + + +2131 +008060 +Sample scanning mode significance +2 +Azimuth +Operational + + +2132 +008060 +Sample scanning mode significance +3 +Horizontal +Operational + + +2133 +008060 +Sample scanning mode significance +4 +Vertical +Operational + + +2134 +008060 +Sample scanning mode significance +5 +North/south +Operational + + +2135 +008060 +Sample scanning mode significance +6 +East/west +Operational + + +2136 +008060 +Sample scanning mode significance +7-14 +Reserved +Operational + + +2137 +008060 +Sample scanning mode significance +15 +Missing value +Operational + + +2138 +008065 +Sun-glint indicator +0 +No sun-glint +Operational + + +2139 +008065 +Sun-glint indicator +1 +Sun-glint +Operational + + +2140 +008065 +Sun-glint indicator +2 +Reserved +Operational + + +2141 +008065 +Sun-glint indicator +3 +Missing value +Operational + + +2142 +008066 +Semi-transparency indicator +0 +Opaque +Operational + + +2143 +008066 +Semi-transparency indicator +1 +Semi-transparent +Operational + + +2144 +008066 +Semi-transparency indicator +2 +Reserved +Operational + + +2145 +008066 +Semi-transparency indicator +3 +Missing value +Operational + + +2146 +008070 +Vertical sounding product qualifier +0 +Reserved +Operational + + +2147 +008070 +Vertical sounding product qualifier +1 +Reserved +Operational + + +2148 +008070 +Vertical sounding product qualifier +2 +Earth located instrument counts, calibration coefficients and housekeeping (level 1b) +Operational + + +2149 +008070 +Vertical sounding product qualifier +3 +Earth located calibrated radiances (level 1c) +Operational + + +2150 +008070 +Vertical sounding product qualifier +4 +Mapped to a common footprint, Earth located calibrated radiances (level 1d) +Operational + + +2151 +008070 +Vertical sounding product qualifier +5-14 +Reserved +Operational + + +2152 +008070 +Vertical sounding product qualifier +15 +Missing value +Operational + + +2153 +008072 +Pixel(s) type +0 +Mixed +Operational + + +2154 +008072 +Pixel(s) type +1 +Clear +Operational + + +2155 +008072 +Pixel(s) type +2 +Cloudy +Operational + + +2156 +008072 +Pixel(s) type +3 +Probably clear +Operational + + +2157 +008072 +Pixel(s) type +4 +Probably cloudy +Operational + + +2158 +008072 +Pixel(s) type +5-6 +Reserved +Operational + + +2159 +008072 +Pixel(s) type +7 +Missing value +Operational + + +2160 +008074 +Altimeter echo type +0 +Open ocean or semi-enclosed sea +Operational + + +2161 +008074 +Altimeter echo type +1 +Non-ocean like +Operational + + +2162 +008074 +Altimeter echo type +2 +Reserved +Operational + + +2163 +008074 +Altimeter echo type +3 +Missing value +Operational + + +2164 +008075 +Ascending/descending orbit qualifier +0 +Ascending orbit +Operational + + +2165 +008075 +Ascending/descending orbit qualifier +1 +Descending orbit +Operational + + +2166 +008075 +Ascending/descending orbit qualifier +2 +Reserved +Operational + + +2167 +008075 +Ascending/descending orbit qualifier +3 +Missing value +Operational + + +2168 +008076 +Type of band +0 +Ku +Operational + + +2169 +008076 +Type of band +1 +C +Operational + + +2170 +008076 +Type of band +2 +Long-wave infrared +Operational + + +2171 +008076 +Type of band +3 +Medium-wave infrared +Operational + + +2172 +008076 +Type of band +4 +Short-wave infrared +Operational + + +2173 +008076 +Type of band +5 +M +Operational + + +2174 +008076 +Type of band +6 +I +Operational + + +2175 +008076 +Type of band +7 +Day/night +Operational + + +2176 +008076 +Type of band +8-62 +Reserved +Operational + + +2177 +008076 +Type of band +63 +Missing value +Operational + + +2178 +008077 +Radiometer sensed surface type +0 +Land +Operational + + +2179 +008077 +Radiometer sensed surface type +1 +Sea +Operational + + +2180 +008077 +Radiometer sensed surface type +2 +Coastal +Operational + + +2181 +008077 +Radiometer sensed surface type +3 +Open ocean or semi-enclosed sea +Operational + + +2182 +008077 +Radiometer sensed surface type +4 +Enclosed sea or lake +Operational + + +2183 +008077 +Radiometer sensed surface type +5 +Continental ice +Operational + + +2184 +008077 +Radiometer sensed surface type +6-126 +Reserved +Operational + + +2185 +008077 +Radiometer sensed surface type +127 +Missing value +Operational + + +2186 +008079 +Product status +0 +Normal issue +Operational + + +2187 +008079 +Product status +1 +Correction to a previously issued product (COR) +Operational + + +2188 +008079 +Product status +2 +Amendment to a previously issued product (AMD) +Operational + + +2189 +008079 +Product status +3 +Correction to a previously issued amended product (COR AMD) +Operational + + +2190 +008079 +Product status +4 +Cancellation of a previously issued product (CNL) +Operational + + +2191 +008079 +Product status +5 +No product available (NIL) +Operational + + +2192 +008079 +Product status +6 +Special report (SPECI) +Operational + + +2193 +008079 +Product status +7 +Corrected special report (SPECI COR) +Operational + + +2194 +008079 +Product status +8-14 +Reserved +Operational + + +2195 +008079 +Product status +15 +Missing or not applicable +Operational + + +2196 +008080 +Qualifier for GTSPP quality flag +0 +Total water pressure profile +Operational + + +2197 +008080 +Qualifier for GTSPP quality flag +1 +Total water temperature profile +Operational + + +2198 +008080 +Qualifier for GTSPP quality flag +2 +Total water salinity profile +Operational + + +2199 +008080 +Qualifier for GTSPP quality flag +3 +Total water conductivity profile +Operational + + +2200 +008080 +Qualifier for GTSPP quality flag +4 +Total water depth +Operational + + +2201 +008080 +Qualifier for GTSPP quality flag +5-9 +Reserved +Operational + + +2202 +008080 +Qualifier for GTSPP quality flag +10 +Water pressure at a level +Operational + + +2203 +008080 +Qualifier for GTSPP quality flag +11 +Water temperature at a level +Operational + + +2204 +008080 +Qualifier for GTSPP quality flag +12 +Salinity at a level +Operational + + +2205 +008080 +Qualifier for GTSPP quality flag +13 +Water depth at a level +Operational + + +2206 +008080 +Qualifier for GTSPP quality flag +14 +Sea/water current speed at a level +Operational + + +2207 +008080 +Qualifier for GTSPP quality flag +15 +Sea/water current direction at a level +Operational + + +2208 +008080 +Qualifier for GTSPP quality flag +16 +Dissolved oxygen at a level +Operational + + +2209 +008080 +Qualifier for GTSPP quality flag +17-19 +Reserved +Operational + + +2210 +008080 +Qualifier for GTSPP quality flag +20 +Position +Operational + + +2211 +008080 +Qualifier for GTSPP quality flag +21-62 +Reserved +Operational + + +2217 +008080 +Qualifier for GTSPP quality flag +63 +Missing value +Operational + + +2218 +008081 +Type of equipment +0 +Sensor +Operational + + +2219 +008081 +Type of equipment +1 +Transmitter +Operational + + +2220 +008081 +Type of equipment +2 +Receiver +Operational + + +2221 +008081 +Type of equipment +3 +Observing platform +Operational + + +2222 +008081 +Type of equipment +4-62 +Reserved +Operational + + +2223 +008081 +Type of equipment +63 +Missing value +Operational + + +2224 +008082 +Modification of sensor height to another value +0 +Sensor height is not modified +Operational + + +2225 +008082 +Modification of sensor height to another value +1 +Sensor height is modified to standard level +* +Operational + + +2226 +008082 +Modification of sensor height to another value +2-6 +Reserved +Operational + + +2227 +008082 +Modification of sensor height to another value +7 +Missing value +Operational + + +2228 +008083 +Nominal value indicator +1 +Adjusted to or with respect to representative height of sensor above local ground (or deck of marine platform) +Operational + + +2229 +008083 +Nominal value indicator +2 +Adjusted to or with respect to representative height of sensor above water surface +Operational + + +2230 +008083 +Nominal value indicator +3 +Adjusted with respect to standard surface roughness +Operational + + +2231 +008083 +Nominal value indicator +4 +Adjusted with respect to wind speed +Operational + + +2232 +008083 +Nominal value indicator +5 +Adjusted with respect to temperature +Operational + + +2233 +008083 +Nominal value indicator +6 +Adjusted with respect to pressure +Operational + + +2234 +008083 +Nominal value indicator +7 +Adjusted with respect to humidity +Operational + + +2235 +008083 +Nominal value indicator +8 +Adjusted with respect to evaporation +Operational + + +2236 +008083 +Nominal value indicator +9 +Adjusted with respect to wetting losses +Operational + + +2237 +008083 +Nominal value indicator +10-14 +Reserved +Operational + + +2238 +008083 +Nominal value indicator +All 15 +Missing value +Operational + + +2239 +008085 +Beam identifier +0 +Fore beam +Operational + + +2240 +008085 +Beam identifier +1 +Mid beam +Operational + + +2241 +008085 +Beam identifier +2 +Aft beam +Operational + + +2242 +008085 +Beam identifier +3-6 +Reserved +Operational + + +2243 +008085 +Beam identifier +7 +Missing value +Operational + + +2244 +008086 +Vertical significance for NWP +1 +Model "ground" surface +Operational + + +2245 +008086 +Vertical significance for NWP +2 +Standard level +Operational + + +2246 +008086 +Vertical significance for NWP +3 +Tropopause level +Operational + + +2247 +008086 +Vertical significance for NWP +4 +Maximum wind level +Operational + + +2248 +008086 +Vertical significance for NWP +5 +Significant temperature level +Operational + + +2249 +008086 +Vertical significance for NWP +6 +Significant humidity level +Operational + + +2250 +008086 +Vertical significance for NWP +7 +Significant wind level +Operational + + +2251 +008086 +Vertical significance for NWP +8 +Vertically interpolated level (This should be set to 1 for points on the vertical profile that fall between the model's native vertical levels.) +Operational + + +2252 +008086 +Vertical significance for NWP +9 +Virtual station height +Operational + + +2253 +008086 +Vertical significance for NWP +10 +Level of best fit +Operational + + +2254 +008086 +Vertical significance for NWP +11 +Reserved +Operational + + +2255 +008086 +Vertical significance for NWP +All 12 +Missing value +Operational + + +2256 +008087 +Corner position of observation +0 +Upper left +Operational + + +2257 +008087 +Corner position of observation +1 +Upper right +Operational + + +2258 +008087 +Corner position of observation +2 +Lower right +Operational + + +2259 +008087 +Corner position of observation +3 +Lower left +Operational + + +2260 +008087 +Corner position of observation +4-6 +Reserved +Operational + + +2261 +008087 +Corner position of observation +7 +Missing value +Operational + + +2262 +008088 +Map significance +0 +Top view (geographical longitude on x-axis and latitude on y-axis) +Operational + + +2263 +008088 +Map significance +1 +North-south view (transect with geographical longitude on x-axis and vertical height on y-axis) +Operational + + +2264 +008088 +Map significance +2 +East-west view (transect with geographical latitude on x-axis and vertical height on y-axis) +Operational + + +2265 +008088 +Map significance +3-62 +Reserved +Operational + + +2266 +008088 +Map significance +63 +Missing +Operational + + +2267 +008091 +Coordinates significance +0 +Satellite coordinates +Operational + + +2268 +008091 +Coordinates significance +1 +Observation coordinates +Operational + + +2269 +008091 +Coordinates significance +2 +Start of observation +Operational + + +2270 +008091 +Coordinates significance +3 +End of observation +Operational + + +2271 +008091 +Coordinates significance +4 +Horizontal centre of gravity of the observation +Operational + + +2272 +008091 +Coordinates significance +5 +Vertical centre of gravity of the observation +Operational + + +2273 +008091 +Coordinates significance +6 +Top of the observation +Operational + + +2274 +008091 +Coordinates significance +7 +Bottom of the observation +Operational + + +2275 +008091 +Coordinates significance +8 +Projection origin +Operational + + +2276 +008091 +Coordinates significance +9 +Coordinates of true scale +Operational + + +2277 +008091 +Coordinates significance +10-254 +Reserved +Operational + + +2278 +008091 +Coordinates significance +255 +Missing value +Operational + + +2279 +008092 +Measurement uncertainty expression +0 +Standard uncertainty +Operational + + +2280 +008092 +Measurement uncertainty expression +1-30 +Reserved +Operational + + +2281 +008092 +Measurement uncertainty expression +31 +Missing value +Operational + + +2282 +008093 +Measurement uncertainty significance +0 +Total uncertainty +Operational + + +2283 +008093 +Measurement uncertainty significance +1 +Systematic component of uncertainty +Operational + + +2284 +008093 +Measurement uncertainty significance +2 +Random component of uncertainty +Operational + + +2285 +008093 +Measurement uncertainty significance +3-30 +Reserved +Operational + + +2286 +008093 +Measurement uncertainty significance +31 +Missing value +Operational + + +2287 +010063 +Characteristic of pressure tendency +0 +Increasing, then decreasing; atmospheric pressure the same or higher than three hours ago +Operational + + +2288 +010063 +Characteristic of pressure tendency +1 +Increasing, then steady; or increasing, then increasing more slowly +Atmospheric pressure now higher than three hours ago +Operational + + +2289 +010063 +Characteristic of pressure tendency +2 +Increasing (steadily or unsteadily) +Atmospheric pressure now higher than three hours ago +Operational + + +2290 +010063 +Characteristic of pressure tendency +3 +Decreasing or steady, then increasing; or increasing, then increasing more rapidly +Atmospheric pressure now higher than three hours ago +Operational + + +2291 +010063 +Characteristic of pressure tendency +4 +Steady; atmospheric pressure the same as three hours ago +Operational + + +2292 +010063 +Characteristic of pressure tendency +5 +Decreasing, then increasing; atmospheric pressure the same or lower than three hours ago +Operational + + +2293 +010063 +Characteristic of pressure tendency +6 +Decreasing, then steady; or decreasing, then decreasing more slowly +Atmospheric pressure now lower than three hours ago +Operational + + +2294 +010063 +Characteristic of pressure tendency +7 +Decreasing (steadily or unsteadily) +Atmospheric pressure now lower than three hours ago +Operational + + +2295 +010063 +Characteristic of pressure tendency +8 +Steady or increasing, then decreasing; or decreasing, then decreasing more rapidly +Atmospheric pressure now lower than three hours ago +Operational + + +2296 +010063 +Characteristic of pressure tendency +9-14 +Reserved +Operational + + +2297 +010063 +Characteristic of pressure tendency +15 +Missing value +Operational + + +2298 +010064 +SIGMET cruising level +0 +Subsonic +Operational + + +2299 +010064 +SIGMET cruising level +1 +Transonic +Operational + + +2300 +010064 +SIGMET cruising level +2 +Supersonic +Operational + + +2301 +010064 +SIGMET cruising level +3-6 +Reserved +Operational + + +2302 +010064 +SIGMET cruising level +7 +Missing value +Operational + + +2303 +011030 +Extended degree of turbulence +0 +Nil +in cloud +Operational + + +2304 +011030 +Extended degree of turbulence +1 +Light +in cloud +Operational + + +2305 +011030 +Extended degree of turbulence +2 +Moderate +in cloud +Operational + + +2306 +011030 +Extended degree of turbulence +3 +Severe +in cloud +Operational + + +2307 +011030 +Extended degree of turbulence +4 +Nil +in clear air +Operational + + +2308 +011030 +Extended degree of turbulence +5 +Light +in clear air +Operational + + +2309 +011030 +Extended degree of turbulence +6 +Moderate +in clear air +Operational + + +2310 +011030 +Extended degree of turbulence +7 +Severe +in clear air +Operational + + +2311 +011030 +Extended degree of turbulence +8 +Nil +cloud/clear air not specified +Operational + + +2312 +011030 +Extended degree of turbulence +9 +Light +cloud/clear air not specified +Operational + + +2313 +011030 +Extended degree of turbulence +10 +Moderate +cloud/clear air not specified +Operational + + +2314 +011030 +Extended degree of turbulence +11 +Severe +cloud/clear air not specified +Operational + + +2315 +011030 +Extended degree of turbulence +12 +Extreme, in clear air +Operational + + +2316 +011030 +Extended degree of turbulence +13 +Extreme, in cloud +Operational + + +2317 +011030 +Extended degree of turbulence +14 +Extreme, cloud/clear air not specified +Operational + + +2318 +011030 +Extended degree of turbulence +15 +Light, isolated moderate +Operational + + +2319 +011030 +Extended degree of turbulence +16 +Light, occasional moderate +Operational + + +2320 +011030 +Extended degree of turbulence +17 +Light, frequently moderate +Operational + + +2321 +011030 +Extended degree of turbulence +18 +Moderate, isolated severe +Operational + + +2322 +011030 +Extended degree of turbulence +19 +Moderate, occasional severe +Operational + + +2323 +011030 +Extended degree of turbulence +20 +Moderate, frequently severe +Operational + + +2324 +011030 +Extended degree of turbulence +21 +Severe, isolated extreme +Operational + + +2325 +011030 +Extended degree of turbulence +22 +Severe, occasional extreme +Operational + + +2326 +011030 +Extended degree of turbulence +23 +Severe, frequently extreme +Operational + + +2327 +011030 +Extended degree of turbulence +24-62 +Reserved +Operational + + +2328 +011030 +Extended degree of turbulence +63 +Missing value +Operational + + +2329 +011031 +Degree of turbulence +0 +Nil +in cloud +Operational + + +2330 +011031 +Degree of turbulence +1 +Light +in cloud +Operational + + +2331 +011031 +Degree of turbulence +2 +Moderate +in cloud +Operational + + +2332 +011031 +Degree of turbulence +3 +Severe +in cloud +Operational + + +2333 +011031 +Degree of turbulence +4 +Nil +in clear air +Operational + + +2334 +011031 +Degree of turbulence +5 +Light +in clear air +Operational + + +2335 +011031 +Degree of turbulence +6 +Moderate +in clear air +Operational + + +2336 +011031 +Degree of turbulence +7 +Severe +in clear air +Operational + + +2337 +011031 +Degree of turbulence +8 +Nil +cloud/clear air not specified +Operational + + +2338 +011031 +Degree of turbulence +9 +Light +cloud/clear air not specified +Operational + + +2339 +011031 +Degree of turbulence +10 +Moderate +cloud/clear air not specified +Operational + + +2340 +011031 +Degree of turbulence +11 +Severe +cloud/clear air not specified +Operational + + +2341 +011031 +Degree of turbulence +12 +Extreme, in clear air +Operational + + +2342 +011031 +Degree of turbulence +13 +Extreme, in cloud +Operational + + +2343 +011031 +Degree of turbulence +14 +Extreme, cloud/clear air not specified +Operational + + +2344 +011031 +Degree of turbulence +15 +Missing value +Operational + + +2345 +011037 +Turbulence index +0 +ave < 0.1 +peak <0.1 +Operational + + +2346 +011037 +Turbulence index +1 +ave < 0.1 +0.1 =< peak < 0.2 +Operational + + +2347 +011037 +Turbulence index +2 +0.1 =< ave < 0.2 +0.1 =< peak < 0.2 +Operational + + +2348 +011037 +Turbulence index +3 +ave <0.1 +0.2 =< peak < 0.3 +Operational + + +2349 +011037 +Turbulence index +4 +0.1 =< ave < 0.2 +0.2 =< peak < 0.3 +Operational + + +2350 +011037 +Turbulence index +5 +0.2 =< ave < 0.3 +0.2 =< peak < 0.3 +Operational + + +2351 +011037 +Turbulence index +6 +ave < 0.1 +0.3 =< peak < 0.4 +Operational + + +2352 +011037 +Turbulence index +7 +0.1 =< ave < 0.2 +0.3 =< peak < 0.4 +Operational + + +2353 +011037 +Turbulence index +8 +0.2 =< ave < 0.3 +0.3 =< peak < 0.4 +Operational + + +2354 +011037 +Turbulence index +9 +0.3 =< ave < 0.4 +0.3 =< peak < 0.4 +Operational + + +2355 +011037 +Turbulence index +10 +ave < 0.1 +0.4 =< peak < 0.5 +Operational + + +2356 +011037 +Turbulence index +11 +0.1 =< ave < 0.2 +0.4 =< peak < 0.5 +Operational + + +2357 +011037 +Turbulence index +12 +0.2 =< ave < 0.3 +0.4 =< peak < 0.5 +Operational + + +2358 +011037 +Turbulence index +13 +0.3 =< ave < 0.4 +0.4 =< peak < 0.5 +Operational + + +2359 +011037 +Turbulence index +14 +0.4 =< ave < 0.5 +0.4 =< peak < 0.5 +Operational + + +2360 +011037 +Turbulence index +15 +ave < 0.1 +0.5 =< peak < 0.8 +Operational + + +2361 +011037 +Turbulence index +16 +0.1 =< ave < 0.2 +0.5 =< peak < 0.8 +Operational + + +2362 +011037 +Turbulence index +17 +0.2 =< ave < 0.3 +0.5 =< peak < 0.8 +Operational + + +2363 +011037 +Turbulence index +18 +0.3 =< ave < 0.4 +0.5 =< peak < 0.8 +Operational + + +2364 +011037 +Turbulence index +19 +0.4 =< ave < 0.5 +0.5 =< peak < 0.8 +Operational + + +2365 +011037 +Turbulence index +20 +0.5 =< ave < 0.8 +0.5 =< peak < 0.8 +Operational + + +2366 +011037 +Turbulence index +21 +ave < 0.1 +0.8 =< peak +Operational + + +2367 +011037 +Turbulence index +22 +0.1 =< ave < 0.2 +0.8 =< peak +Operational + + +2368 +011037 +Turbulence index +23 +0.2 =< ave < 0.3 +0.8 =< peak +Operational + + +2369 +011037 +Turbulence index +24 +0.3 =< ave < 0.4 +0.8 =< peak +Operational + + +2370 +011037 +Turbulence index +25 +0.4 =< ave < 0.5 +0.8 =< peak +Operational + + +2371 +011037 +Turbulence index +26 +0.5 =< ave < 0.8 +0.8 =< peak +Operational + + +2372 +011037 +Turbulence index +27 +0.8 =< ave +0.8 =< peak +Operational + + +2373 +011037 +Turbulence index +28 +Nil +Nil +Operational + + +2374 +011037 +Turbulence index +29-62 +Reserved +Reserved +Operational + + +2375 +011037 +Turbulence index +63 +Missing value +Missing value +Operational + + +2376 +011038 +Time of occurrence of peak eddy dissipation rate +0 +min < 1 +Operational + + +2377 +011038 +Time of occurrence of peak eddy dissipation rate +1 +1 =< min < 2 +Operational + + +2378 +011038 +Time of occurrence of peak eddy dissipation rate +2 +2 =< min < 3 +Operational + + +2379 +011038 +Time of occurrence of peak eddy dissipation rate +3 +3 =< min < 4 +Operational + + +2380 +011038 +Time of occurrence of peak eddy dissipation rate +4 +4 =< min < 5 +Operational + + +2381 +011038 +Time of occurrence of peak eddy dissipation rate +5 +5 =< min < 6 +Operational + + +2382 +011038 +Time of occurrence of peak eddy dissipation rate +6 +6 =< min < 7 +Operational + + +2383 +011038 +Time of occurrence of peak eddy dissipation rate +7 +7 =< min < 8 +Operational + + +2384 +011038 +Time of occurrence of peak eddy dissipation rate +8 +8 =< min < 9 +Operational + + +2385 +011038 +Time of occurrence of peak eddy dissipation rate +9 +9 =< min < 10 +Operational + + +2386 +011038 +Time of occurrence of peak eddy dissipation rate +10 +10 =< min < 11 +Operational + + +2387 +011038 +Time of occurrence of peak eddy dissipation rate +11 +11 =< min < 12 +Operational + + +2388 +011038 +Time of occurrence of peak eddy dissipation rate +12 +12 =< min < 13 +Operational + + +2389 +011038 +Time of occurrence of peak eddy dissipation rate +13 +13 =< min < 14 +Operational + + +2390 +011038 +Time of occurrence of peak eddy dissipation rate +14 +14 =< min < 15 +Operational + + +2391 +011038 +Time of occurrence of peak eddy dissipation rate +15 +No timing information available +Operational + + +2392 +011038 +Time of occurrence of peak eddy dissipation rate +16-30 +Reserved +Operational + + +2393 +011038 +Time of occurrence of peak eddy dissipation rate +31 +Missing value +Operational + + +2394 +011039 +Extended time of occurrence of peak eddy dissipation rate +0 +min < 1 +Operational + + +2395 +011039 +Extended time of occurrence of peak eddy dissipation rate +1 +1 =< min < 2 +Operational + + +2396 +011039 +Extended time of occurrence of peak eddy dissipation rate +2 +2 =< min < 3 +Operational + + +2397 +011039 +Extended time of occurrence of peak eddy dissipation rate +3 +3 =< min < 4 +Operational + + +2398 +011039 +Extended time of occurrence of peak eddy dissipation rate +4 +4 =< min < 5 +Operational + + +2399 +011039 +Extended time of occurrence of peak eddy dissipation rate +5 +5 =< min < 6 +Operational + + +2400 +011039 +Extended time of occurrence of peak eddy dissipation rate +6 +6 =< min < 7 +Operational + + +2401 +011039 +Extended time of occurrence of peak eddy dissipation rate +7 +7 =< min < 8 +Operational + + +2402 +011039 +Extended time of occurrence of peak eddy dissipation rate +8 +8 =< min < 9 +Operational + + +2403 +011039 +Extended time of occurrence of peak eddy dissipation rate +9 +9 =< min < 10 +Operational + + +2404 +011039 +Extended time of occurrence of peak eddy dissipation rate +10 +10 =< min < 11 +Operational + + +2405 +011039 +Extended time of occurrence of peak eddy dissipation rate +11 +11 =< min < 12 +Operational + + +2406 +011039 +Extended time of occurrence of peak eddy dissipation rate +12 +12 =< min < 13 +Operational + + +2407 +011039 +Extended time of occurrence of peak eddy dissipation rate +13 +13 =< min < 14 +Operational + + +2408 +011039 +Extended time of occurrence of peak eddy dissipation rate +14 +14 =< min < 15 +Operational + + +2409 +011039 +Extended time of occurrence of peak eddy dissipation rate +15-59 +As above to 59 =< min < 60 +Operational + + +2410 +011039 +Extended time of occurrence of peak eddy dissipation rate +60 +No timing information available +Operational + + +2411 +011039 +Extended time of occurrence of peak eddy dissipation rate +61-62 +Reserved +Operational + + +2412 +011039 +Extended time of occurrence of peak eddy dissipation rate +63 +Missing value +Operational + + +2417 +013038 +Superadiabatic indicator +0 +Not superadiabatic +Operational + + +2418 +013038 +Superadiabatic indicator +1 +Superadiabatic +Operational + + +2419 +013038 +Superadiabatic indicator +2 +Reserved +Operational + + +2420 +013038 +Superadiabatic indicator +3 +Missing value +Operational + + +2421 +013039 +Terrain type (ice/snow) +0 +Sea ice +Operational + + +2422 +013039 +Terrain type (ice/snow) +1 +Snow on land +Operational + + +2423 +013039 +Terrain type (ice/snow) +2-6 +Reserved +Operational + + +2424 +013039 +Terrain type (ice/snow) +7 +Missing value +Operational + + +2425 +013040 +Surface flag +0 +Land +Operational + + +2426 +013040 +Surface flag +1 +Reserved +Operational + + +2427 +013040 +Surface flag +2 +Near coast +Operational + + +2428 +013040 +Surface flag +3 +Ice +Operational + + +2429 +013040 +Surface flag +4 +Possible ice +Operational + + +2430 +013040 +Surface flag +5 +Ocean +Operational + + +2431 +013040 +Surface flag +6 +Coast +Operational + + +2432 +013040 +Surface flag +7 +Inland water +* +Operational + + +2433 +013040 +Surface flag +8 +Snow cover +Operational + + +2434 +013040 +Surface flag +9 +Sea ice +Operational + + +2435 +013040 +Surface flag +10 +Standing water +Operational + + +2436 +013040 +Surface flag +11 +Snow +Operational + + +2437 +013040 +Surface flag +12-14 +Reserved +Operational + + +2438 +013040 +Surface flag +15 +Missing value +Operational + + +2439 +013041 +Pasquill-Gifford stability category +1 +A +Operational + + +2440 +013041 +Pasquill-Gifford stability category +2 +A - B +Operational + + +2441 +013041 +Pasquill-Gifford stability category +3 +B +Operational + + +2442 +013041 +Pasquill-Gifford stability category +4 +B - C +Operational + + +2443 +013041 +Pasquill-Gifford stability category +5 +C +Operational + + +2444 +013041 +Pasquill-Gifford stability category +6 +D +Operational + + +2445 +013041 +Pasquill-Gifford stability category +7 +E +Operational + + +2446 +013041 +Pasquill-Gifford stability category +8 +F +Operational + + +2447 +013041 +Pasquill-Gifford stability category +9 +G +Operational + + +2448 +013041 +Pasquill-Gifford stability category +10-14 +Reserved +Operational + + +2449 +013041 +Pasquill-Gifford stability category +15 +Missing value +Operational + + +2450 +013051 +Frequency group, precipitation +0 +Smaller than any value in the 30-year period +Operational + + +2451 +013051 +Frequency group, precipitation +1 +In the first quintile +Operational + + +2452 +013051 +Frequency group, precipitation +2 +In the second quintile +Operational + + +2453 +013051 +Frequency group, precipitation +3 +In the third quintile +Operational + + +2454 +013051 +Frequency group, precipitation +4 +In the fourth quintile +Operational + + +2455 +013051 +Frequency group, precipitation +5 +In the fifth quintile +Operational + + +2456 +013051 +Frequency group, precipitation +6 +Greater than any value in the 30-year period +Operational + + +2457 +013051 +Frequency group, precipitation +7-14 +Reserved +Operational + + +2458 +013051 +Frequency group, precipitation +15 +Missing value +Operational + + +2459 +013056 +Character and intensity of precipitation +0 +No precipitation +Operational + + +2460 +013056 +Character and intensity of precipitation +1 +Light intermittent +Operational + + +2461 +013056 +Character and intensity of precipitation +2 +Moderate intermittent +Operational + + +2462 +013056 +Character and intensity of precipitation +3 +Heavy intermittent +Operational + + +2463 +013056 +Character and intensity of precipitation +4 +Very heavy intermittent +Operational + + +2464 +013056 +Character and intensity of precipitation +5 +Light continuous +Operational + + +2465 +013056 +Character and intensity of precipitation +6 +Moderate continuous +Operational + + +2466 +013056 +Character and intensity of precipitation +7 +Heavy continuous +Operational + + +2467 +013056 +Character and intensity of precipitation +8 +Very heavy continuous +Operational + + +2468 +013056 +Character and intensity of precipitation +9 +Variable - alternatively light and heavy +Operational + + +2469 +013056 +Character and intensity of precipitation +10-14 +Reserved +Operational + + +2470 +013056 +Character and intensity of precipitation +15 +Missing value +Operational + + +2471 +013057 +Time of beginning or end of precipitation +0 +No precipitation +Operational + + +2472 +013057 +Time of beginning or end of precipitation +1 +Within the last hour +Operational + + +2473 +013057 +Time of beginning or end of precipitation +2 +1 to 2 hours ago +Operational + + +2474 +013057 +Time of beginning or end of precipitation +3 +2 to 3 hours ago +Operational + + +2475 +013057 +Time of beginning or end of precipitation +4 +3 to 4 hours ago +Operational + + +2476 +013057 +Time of beginning or end of precipitation +5 +4 to 5 hours ago +Operational + + +2477 +013057 +Time of beginning or end of precipitation +6 +5 to 6 hours ago +Operational + + +2478 +013057 +Time of beginning or end of precipitation +7 +6 to 8 hours ago +Operational + + +2479 +013057 +Time of beginning or end of precipitation +8 +8 to 10 hours ago +Operational + + +2480 +013057 +Time of beginning or end of precipitation +9 +More than 10 hours ago +Operational + + +2481 +013057 +Time of beginning or end of precipitation +10-14 +Reserved +Operational + + +2482 +013057 +Time of beginning or end of precipitation +15 +Missing value +Operational + + +2488 +015025 +Type of pollutant +0 +Ozone +Operational + + +2489 +015025 +Type of pollutant +1-10 +Reserved +Operational + + +2490 +015025 +Type of pollutant +11 +Fine particulate matter (diameter < 2.5 microns) +Operational + + +2491 +015025 +Type of pollutant +12 +Fine particulate matter (diameter < 10 microns) +Operational + + +2492 +015025 +Type of pollutant +13-14 +Reserved +Operational + + +2493 +015025 +Type of pollutant +15 +Missing value +Operational + + +2494 +019001 +Type of synoptic feature +0 +Depression or low (extratroplcal) +Operational + + +2495 +019001 +Type of synoptic feature +1 +Tropical depression +Operational + + +2496 +019001 +Type of synoptic feature +2 +Tropical storm +Operational + + +2497 +019001 +Type of synoptic feature +3 +Severe tropical storm +Operational + + +2498 +019001 +Type of synoptic feature +4 +Typhoon +Operational + + +2499 +019001 +Type of synoptic feature +5-9 +Reserved +Operational + + +2500 +019001 +Type of synoptic feature +10 +Dust/sandstorm +Operational + + +2501 +019001 +Type of synoptic feature +11-62 +Reserved +Operational + + +2502 +019001 +Type of synoptic feature +63 +Missing value +Operational + + +2503 +019008 +Vertical extent of circulation +0 +Reserved +Operational + + +2504 +019008 +Vertical extent of circulation +1 +Shallow (top of circulation below 700-hPa level) +Operational + + +2505 +019008 +Vertical extent of circulation +2 +Medium (top between 700-hPa and 400-hPa level) +Operational + + +2506 +019008 +Vertical extent of circulation +3 +Deep (top above 400-hPa level) +Operational + + +2507 +019008 +Vertical extent of circulation +4-6 +Reserved +Operational + + +2508 +019008 +Vertical extent of circulation +7 +Missing value +Operational + + +2509 +019010 +Method for tracking the centre of synoptic feature +1 +Minimum value of sea level pressure +Operational + + +2510 +019010 +Method for tracking the centre of synoptic feature +2 +Maximum value of 850 hPa relative vorticity +Operational + + +2511 +019010 +Method for tracking the centre of synoptic feature +3-14 +Reserved +Operational + + +2512 +019010 +Method for tracking the centre of synoptic feature +15 +Missing value +Operational + + +2513 +019100 +Time interval to calculate the movement of the tropical cyclone +0-2 +Not used +Operational + + +2514 +019100 +Time interval to calculate the movement of the tropical cyclone +3 +During the preceding 15 minutes +Operational + + +2515 +019100 +Time interval to calculate the movement of the tropical cyclone +4 +During the preceding 30 minutes +Operational + + +2516 +019100 +Time interval to calculate the movement of the tropical cyclone +5 +During the preceding 1 hour +Operational + + +2517 +019100 +Time interval to calculate the movement of the tropical cyclone +6 +During the preceding 2 hours +Operational + + +2518 +019100 +Time interval to calculate the movement of the tropical cyclone +7 +During the preceding 3 hours +Operational + + +2519 +019100 +Time interval to calculate the movement of the tropical cyclone +8 +During the preceding 6 hours +Operational + + +2520 +019100 +Time interval to calculate the movement of the tropical cyclone +9 +During a period of more than 6 hours +Operational + + +2521 +019100 +Time interval to calculate the movement of the tropical cyclone +10 +Undetermined +Operational + + +2522 +019100 +Time interval to calculate the movement of the tropical cyclone +11-14 +Not used +Operational + + +2523 +019100 +Time interval to calculate the movement of the tropical cyclone +15 +Missing value +Operational + + +2524 +019101 +Accuracy of the position of the centre of the tropical cyclone +0 +Reserved +Operational + + +2525 +019101 +Accuracy of the position of the centre of the tropical cyclone +1 +Eye visible on radar scope, accuracy good (within 10 km) +Operational + + +2526 +019101 +Accuracy of the position of the centre of the tropical cyclone +2 +Eye visible on radar scope, accuracy fair (within 30 km) +Operational + + +2527 +019101 +Accuracy of the position of the centre of the tropical cyclone +3 +Eye visible on radar scope, accuracy poor (within 50 km) +Operational + + +2528 +019101 +Accuracy of the position of the centre of the tropical cyclone +4 +Position of the centre within the area covered by the radar scope, determination by means of the spiral-band overlay, accuracy good (within 10 km) +Operational + + +2529 +019101 +Accuracy of the position of the centre of the tropical cyclone +5 +Position of the centre within the area covered by the radar scope, determination by means of the spiral-band overlay, accuracy fair (within 30 km) +Operational + + +2530 +019101 +Accuracy of the position of the centre of the tropical cyclone +6 +Position of the centre within the area covered by the radar scope, determination by means of the spiral-band overlay, accuracy poor (within 50 km) +Operational + + +2531 +019101 +Accuracy of the position of the centre of the tropical cyclone +7 +Position of the centre outside the area covered by the radar scope, extrapolation by means of the spiral-band overlay +Operational + + +2532 +019101 +Accuracy of the position of the centre of the tropical cyclone +8-9 +Reserved +Operational + + +2533 +019101 +Accuracy of the position of the centre of the tropical cyclone +10 +Accuracy undetermined +Operational + + +2534 +019101 +Accuracy of the position of the centre of the tropical cyclone +11-14 +Not used +Operational + + +2535 +019101 +Accuracy of the position of the centre of the tropical cyclone +15 +Missing value +Operational + + +2536 +019102 +Shape and definition of the eye of the tropical cyclone +0 +Circular +Operational + + +2537 +019102 +Shape and definition of the eye of the tropical cyclone +1 +Elliptical - the minor axis is at least 3/4 the length of the major axis +well defined +Operational + + +2538 +019102 +Shape and definition of the eye of the tropical cyclone +2 +Elliptical - the minor axis is less than 3/4 the length of the major axis +well defined +Operational + + +2539 +019102 +Shape and definition of the eye of the tropical cyclone +3 +Apparent double eye +well defined +Operational + + +2540 +019102 +Shape and definition of the eye of the tropical cyclone +4 +Other shape +well defined +Operational + + +2541 +019102 +Shape and definition of the eye of the tropical cyclone +5 +Ill defined +Operational + + +2542 +019102 +Shape and definition of the eye of the tropical cyclone +6 +Undetermined +Operational + + +2543 +019102 +Shape and definition of the eye of the tropical cyclone +7 +Missing value +Operational + + +2544 +019103 +Diameter of major axis of the eye of the tropical cyclone +0 +Less than 5 km +Operational + + +2545 +019103 +Diameter of major axis of the eye of the tropical cyclone +1 +5 to less than 10 km +Operational + + +2546 +019103 +Diameter of major axis of the eye of the tropical cyclone +2 +10 to less than 15 km +Operational + + +2547 +019103 +Diameter of major axis of the eye of the tropical cyclone +3 +15 to less than 20 km +Operational + + +2548 +019103 +Diameter of major axis of the eye of the tropical cyclone +4 +20 to less than 25 km +Operational + + +2549 +019103 +Diameter of major axis of the eye of the tropical cyclone +5 +25 to less than 30 km +Operational + + +2550 +019103 +Diameter of major axis of the eye of the tropical cyclone +6 +30 to less than 35 km +Operational + + +2551 +019103 +Diameter of major axis of the eye of the tropical cyclone +7 +35 to less than 40 km +Operational + + +2552 +019103 +Diameter of major axis of the eye of the tropical cyclone +8 +40 to less than 50 km +Operational + + +2553 +019103 +Diameter of major axis of the eye of the tropical cyclone +9 +50 km and greater +Operational + + +2554 +019103 +Diameter of major axis of the eye of the tropical cyclone +10 +Undetermined +Operational + + +2555 +019103 +Diameter of major axis of the eye of the tropical cyclone +11-14 +Not used +Operational + + +2556 +019103 +Diameter of major axis of the eye of the tropical cyclone +15 +Missing value +Operational + + +2557 +019104 +Change in character of the eye during the 30 minutes +0 +Eye has first become visible during the past 30 minutes +Operational + + +2558 +019104 +Change in character of the eye during the 30 minutes +1 +No significant change in the characteristics or size of the eye +Operational + + +2559 +019104 +Change in character of the eye during the 30 minutes +2 +Eye has become smaller with no other significant change in characteristics +Operational + + +2560 +019104 +Change in character of the eye during the 30 minutes +3 +Eye has become larger with no other significant change in characteristics +Operational + + +2561 +019104 +Change in character of the eye during the 30 minutes +4 +Eye has become less distinct with no significant change in size +Operational + + +2562 +019104 +Change in character of the eye during the 30 minutes +5 +Eye has become less distinct and decreased in size +Operational + + +2563 +019104 +Change in character of the eye during the 30 minutes +6 +Eye has become less distinct and increased in size +Operational + + +2564 +019104 +Change in character of the eye during the 30 minutes +7 +Eye has become more distinct with no significant change in size +Operational + + +2565 +019104 +Change in character of the eye during the 30 minutes +8 +Eye has become more distinct and decreased in size +Operational + + +2566 +019104 +Change in character of the eye during the 30 minutes +9 +Eye has become more distinct and increased in size +Operational + + +2567 +019104 +Change in character of the eye during the 30 minutes +10 +Change in character and size of eye cannot be determined +Operational + + +2568 +019104 +Change in character of the eye during the 30 minutes +11-14 +Not used +Operational + + +2569 +019104 +Change in character of the eye during the 30 minutes +15 +Missing value +Operational + + +2570 +019105 +Distance between the end of spiral band and the centre +0 +0 to less than 100 km +Operational + + +2571 +019105 +Distance between the end of spiral band and the centre +1 +100 to less than 200 km +Operational + + +2572 +019105 +Distance between the end of spiral band and the centre +2 +200 to less than 300 km +Operational + + +2573 +019105 +Distance between the end of spiral band and the centre +3 +300 to less than 400 km +Operational + + +2574 +019105 +Distance between the end of spiral band and the centre +4 +400 to less than 500 km +Operational + + +2575 +019105 +Distance between the end of spiral band and the centre +5 +500 to less than 600 km +Operational + + +2576 +019105 +Distance between the end of spiral band and the centre +6 +600 to less than 800 km +Operational + + +2577 +019105 +Distance between the end of spiral band and the centre +7 +800 km or more +Operational + + +2578 +019105 +Distance between the end of spiral band and the centre +8-9 +Reserved +Operational + + +2579 +019105 +Distance between the end of spiral band and the centre +10 +Doubtful or undetermined +Operational + + +2580 +019105 +Distance between the end of spiral band and the centre +11-14 +Not used +Operational + + +2581 +019105 +Distance between the end of spiral band and the centre +15 +Missing value +Operational + + +2582 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +0 +Less than 1 hour +Operational + + +2583 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +1 +1 to less than 2 hours +Operational + + +2584 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +2 +2 to less than 3 hours +Operational + + +2585 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +3 +3 to less than 6 hours +Operational + + +2586 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +4 +6 to less than 9 hours +Operational + + +2587 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +5 +9 to less than 12 hours +Operational + + +2588 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +6 +12 to less than 15 hours +Operational + + +2589 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +7 +15 to less than 18 hours +Operational + + +2590 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +8 +18 to less than 21 hours +Operational + + +2591 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +9 +21 to less than 30 hours +Operational + + +2592 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +10-14 +Not used +Operational + + +2593 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +15 +Missing value +Operational + + +2594 +019108 +Accuracy of geographical position of the tropical cyclone +0 +Cyclone centre within 10 km of the transmitted position +Operational + + +2595 +019108 +Accuracy of geographical position of the tropical cyclone +1 +Cyclone centre within 20 km of the transmitted position +Operational + + +2596 +019108 +Accuracy of geographical position of the tropical cyclone +2 +Cyclone centre within 50 km of the transmitted position +Operational + + +2597 +019108 +Accuracy of geographical position of the tropical cyclone +3 +Cyclone centre within 100 km of the transmitted position +Operational + + +2598 +019108 +Accuracy of geographical position of the tropical cyclone +4 +Cyclone centre within 200 km of the transmitted position +Operational + + +2599 +019108 +Accuracy of geographical position of the tropical cyclone +5 +Cyclone centre within 300 km of the transmitted position +Operational + + +2600 +019108 +Accuracy of geographical position of the tropical cyclone +6 +Cyclone centre undetermined +Operational + + +2601 +019108 +Accuracy of geographical position of the tropical cyclone +7 +Missing value +Operational + + +2602 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +0 +Less than 1° of latitude +Operational + + +2603 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +1 +1° to less than 2° of latitude +Operational + + +2604 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +2 +2° to less than 3° of latitude +Operational + + +2605 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +3 +3° to less than 4° of latitude +Operational + + +2606 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +4 +4° to less than 5° of latitude +Operational + + +2607 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +5 +5° to less than 6° of latitude +Operational + + +2608 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +6 +6° to less than 7° of latitude +Operational + + +2609 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +7 +7° to less than 8° of latitude +Operational + + +2610 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +8 +8° to less than 9° of latitude +Operational + + +2611 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +9 +9° of latitude or more +Operational + + +2612 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +10 +Undetermined +Operational + + +2613 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +11-14 +Not used +Operational + + +2614 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +15 +Missing value +Operational + + +2615 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +0 +Much weakening +Operational + + +2616 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +1 +Weakening +Operational + + +2617 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +2 +No change +Operational + + +2618 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +3 +Intensification +Operational + + +2619 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +4 +Strong Intensification +Operational + + +2620 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +5-8 +Reserved +Operational + + +2621 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +9 +Not observed previously +Operational + + +2622 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +10 +Undetermined +Operational + + +2623 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +11-14 +Not used +Operational + + +2624 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +15 +Missing value +Operational + + +2625 +019113 +Cloud pattern type of the DT-number +1 +Curved Band +Operational + + +2626 +019113 +Cloud pattern type of the DT-number +2 +Shear +Operational + + +2627 +019113 +Cloud pattern type of the DT-number +3 +Eye +Operational + + +2628 +019113 +Cloud pattern type of the DT-number +4 +Banding Eye +Operational + + +2629 +019113 +Cloud pattern type of the DT-number +5 +Central Dense Overcast (CDO) +Operational + + +2630 +019113 +Cloud pattern type of the DT-number +6 +Embedded Centre +Operational + + +2631 +019113 +Cloud pattern type of the DT-number +7 +Centre Cold Cover (CCC) +Operational + + +2632 +019113 +Cloud pattern type of the DT-number +8-14 +Reserved +Operational + + +2633 +019113 +Cloud pattern type of the DT-number +15 +Missing value +Operational + + +2634 +019117 +Cloud picture type of the PT-number +1 +A (curved band) +Operational + + +2635 +019117 +Cloud picture type of the PT-number +2 +B (CDO) +Operational + + +2636 +019117 +Cloud picture type of the PT-number +3 +C (shear) +Operational + + +2637 +019117 +Cloud picture type of the PT-number +4-6 +Reserved +Operational + + +2638 +019117 +Cloud picture type of the PT-number +7 +Missing value +Operational + + +2639 +019119 +Type of the final T-number +1 +DT-number +Operational + + +2640 +019119 +Type of the final T-number +2 +PT-number +Operational + + +2641 +019119 +Type of the final T-number +3 +MET-number +Operational + + +2642 +019119 +Type of the final T-number +4-6 +Reserved +Operational + + +2643 +019119 +Type of the final T-number +7 +Missing value +Operational + + +2644 +020003 +Present weather +00-49 No precipitation at the station at the time of observation +Operational + + +2645 +020003 +Present weather +00-19 No precipitation, fog, ice fog (except for 11 and 12), duststorm, sandstorm, drifting or blowing snow at the station* at the time of observation or, except for 09 and 17, during the preceding hour +Operational + + +2646 +020003 +Present weather +00-03 No meteors except photometeors +Operational + + +2647 +020003 +Present weather +00 +Cloud development not observed or not observable +Characteristic change of the state of sky during the past hour +Operational + + +2648 +020003 +Present weather +01 +Clouds generally dissolving or becoming less developed +Characteristic change of the state of sky during the past hour +Operational + + +2649 +020003 +Present weather +02 +State of sky on the whole unchanged +Characteristic change of the state of sky during the past hour +Operational + + +2650 +020003 +Present weather +03 +Clouds generally forming or developing +Characteristic change of the state of sky during the past hour +Operational + + +2651 +020003 +Present weather +04-09 Haze, dust, sand or smoke +Operational + + +2652 +020003 +Present weather +04 +Visibility reduced by smoke, e.g. veldt or forest fires, industrial smoke or volcanic ashes +Operational + + +2653 +020003 +Present weather +05 +Haze +Operational + + +2654 +020003 +Present weather +06 +Widespread dust in suspension in the air, not raised by wind at or near the station at the time of observation +Operational + + +2655 +020003 +Present weather +07 +Dust or sand raised by wind at or near the station at the time of observation, but no well-developed dust whirl(s) or sand whirl(s), and no duststorm or sandstorm seen; or, in the case of sea stations and coastal stations, blowing spray at the station +Operational + + +2656 +020003 +Present weather +08 +Well-developed dust whirl(s) or sand whirl(s) seen at or near the station during the preceding hour or at the same time of observation, but no duststorm or sandstorm +Operational + + +2657 +020003 +Present weather +09 +Duststorm or sandstorm within sight at the time of observation, or at the station during the preceding hour +Operational + + +2658 +020003 +Present weather +10 +Mist +Operational + + +2659 +020003 +Present weather +11 +Patches +shallow fog or ice fog at the station, whether on land or sea, not deeper than about 2 metres on land or 10 metres at sea +Operational + + +2660 +020003 +Present weather +12 +More or less continuous +shallow fog or ice fog at the station, whether on land or sea, not deeper than about 2 metres on land or 10 metres at sea +Operational + + +2661 +020003 +Present weather +13 +Lightning visible, no thunder heard +Operational + + +2662 +020003 +Present weather +14 +Precipitation within sight, not reaching the ground or the surface of the sea +Operational + + +2663 +020003 +Present weather +15 +Precipitation within sight, reaching the ground or the surface of the sea, but distant, i.e. estimated to be more than 5 km from the station +Operational + + +2664 +020003 +Present weather +16 +Precipitation within sight, reaching the ground or the surface of the sea, near to, but not at the station +Operational + + +2665 +020003 +Present weather +17 +Thunderstorm, but no precipitation at the time of observation +Operational + + +2666 +020003 +Present weather +18 +Squalls +at or within sight of the station during the preceding hour or at the time of observation +Operational + + +2667 +020003 +Present weather +19 +Funnel cloud(s) +at or within sight of the station during the preceding hour or at the time of observation +** +Operational + + +2668 +020003 +Present weather +20-29 Precipitation, fog, ice fog or thunderstorm at the station during the preceding hour but not at the time of observation +Operational + + +2669 +020003 +Present weather +20 +Drizzle (not freezing) or snow grains +not falling as shower(s) +Operational + + +2670 +020003 +Present weather +21 +Rain (not freezing) +not falling as shower(s) +Operational + + +2671 +020003 +Present weather +22 +Snow +not falling as shower(s) +Operational + + +2672 +020003 +Present weather +23 +Rain and snow or ice pellets +not falling as shower(s) +Operational + + +2673 +020003 +Present weather +24 +Freezing drizzle or freezing rain +not falling as shower(s) +Operational + + +2674 +020003 +Present weather +25 +Shower(s) of rain +not falling as shower(s) +Operational + + +2675 +020003 +Present weather +26 +Shower(s) of snow, or of rain and snow +Operational + + +2676 +020003 +Present weather +27 +Shower(s) of hail*, or of rain and hail* +Operational + + +2677 +020003 +Present weather +28 +Fog or ice fog +Operational + + +2678 +020003 +Present weather +29 +Thunderstorm (with or without precipitation) +Operational + + +2679 +020003 +Present weather +30-39 Duststorm, sandstorm, drifting or blowing snow +Operational + + +2680 +020003 +Present weather +30 +Slight or moderate duststorm or sandstorm +has decreased during the preceding hour +Operational + + +2681 +020003 +Present weather +31 +Slight or moderate duststorm or sandstorm +no appreciable change during the preceding hour +Operational + + +2682 +020003 +Present weather +32 +Slight or moderate duststorm or sandstorm +has begun or has increased during the preceding hour +Operational + + +2683 +020003 +Present weather +33 +Severe duststorm or sandstorm +has decreased during the preceding hour +Operational + + +2684 +020003 +Present weather +34 +Severe duststorm or sandstorm +no appreciable change during the preceding hour +Operational + + +2685 +020003 +Present weather +35 +Severe duststorm or sandstorm +has begun or has increased during the preceding hour +Operational + + +2686 +020003 +Present weather +36 +Slight or moderate drifting snow +generally low (below eye level) +Operational + + +2687 +020003 +Present weather +37 +Heavy drifting snow +generally low (below eye level) +Operational + + +2688 +020003 +Present weather +38 +Slight or moderate blowing snow +generally high (above eye level) +Operational + + +2689 +020003 +Present weather +39 +Heavy blowing snow +generally high (above eye level) +Operational + + +2690 +020003 +Present weather +40-49 Fog or ice fog at the time of observation +Operational + + +2691 +020003 +Present weather +40 +Fog or ice fog at a distance at the time of observation, but not at the station during the preceding hour, the fog or ice fog extending to a level above that of the observer +Operational + + +2692 +020003 +Present weather +41 +Fog or ice fog in patches +Operational + + +2693 +020003 +Present weather +42 +Fog or ice fog, sky visible +has become thinner during the preceding hour +Operational + + +2694 +020003 +Present weather +43 +Fog or ice fog, sky invisible +has become thinner during the preceding hour +Operational + + +2695 +020003 +Present weather +44 +Fog or ice fog, sky visible +no appreciable change during the preceding hour +Operational + + +2696 +020003 +Present weather +45 +Fog or ice fog, sky invisible +no appreciable change during the preceding hour +Operational + + +2697 +020003 +Present weather +46 +Fog or ice fog, sky visible +has begun or has become thicker during the preceding hour +Operational + + +2698 +020003 +Present weather +47 +Fog or ice fog, sky invisible +has begun or has become thicker during the preceding hour +Operational + + +2699 +020003 +Present weather +48 +Fog, depositing rime, sky visible +Operational + + +2700 +020003 +Present weather +49 +Fog, depositing rime, sky invisible +Operational + + +2701 +020003 +Present weather +50-99 Precipitation at the station at the time of observation +Operational + + +2702 +020003 +Present weather +50-59 Drizzle +Operational + + +2703 +020003 +Present weather +50 +Drizzle, not freezing, intermittent +slight at time of observation +Operational + + +2704 +020003 +Present weather +51 +Drizzle, not freezing, continuous +slight at time of observation +Operational + + +2705 +020003 +Present weather +52 +Drizzle, not freezing, intermittent +moderate at time of observation +Operational + + +2706 +020003 +Present weather +53 +Drizzle, not freezing, continuous +moderate at time of observation +Operational + + +2707 +020003 +Present weather +54 +Drizzle, not freezing, intermittent +heavy (dense) at time of observation +Operational + + +2708 +020003 +Present weather +55 +Drizzle, not freezing, continuous +heavy (dense) at time of observation +Operational + + +2709 +020003 +Present weather +56 +Drizzle, freezing, slight +Operational + + +2710 +020003 +Present weather +57 +Drizzle, freezing, moderate or heavy (dense) +Operational + + +2711 +020003 +Present weather +58 +Drizzle and rain, slight +Operational + + +2712 +020003 +Present weather +59 +Drizzle and rain, moderate or heavy +Operational + + +2713 +020003 +Present weather +60-69 Rain +Operational + + +2714 +020003 +Present weather +60 +Rain, not freezing, intermittent +slight at time of observation +Operational + + +2715 +020003 +Present weather +61 +Rain, not freezing, continuous +slight at time of observation +Operational + + +2716 +020003 +Present weather +62 +Rain, not freezing, intermittent +moderate at time of observation +Operational + + +2717 +020003 +Present weather +63 +Rain, not freezing, continuous +moderate at time of observation +Operational + + +2718 +020003 +Present weather +64 +Rain, not freezing, intermittent +heavy at time of observation +Operational + + +2719 +020003 +Present weather +65 +Rain, not freezing, continuous +heavy at time of observation +Operational + + +2720 +020003 +Present weather +66 +Rain, freezing, slight +Operational + + +2721 +020003 +Present weather +67 +Rain, freezing, moderate or heavy +Operational + + +2722 +020003 +Present weather +68 +Rain or drizzle and snow, slight +Operational + + +2723 +020003 +Present weather +69 +Rain or drizzle and snow, moderate or heavy +Operational + + +2724 +020003 +Present weather +70-79 Solid precipitation not in showers +Operational + + +2725 +020003 +Present weather +70 +Intermittent fall of snowflakes +slight at time of observation +Operational + + +2726 +020003 +Present weather +71 +Continuous fall of snowflakes +slight at time of observation +Operational + + +2727 +020003 +Present weather +72 +Intermittent fall of snowflakes +moderate at time of observation +Operational + + +2728 +020003 +Present weather +73 +Continuous fall of snowflakes +moderate at time of observation +Operational + + +2729 +020003 +Present weather +74 +Intermittent fall of snowflakes +heavy at time of observation +Operational + + +2730 +020003 +Present weather +75 +Continuous fall of snowflakes +heavy at time of observation +Operational + + +2731 +020003 +Present weather +76 +Diamond dust (with or without fog) +Operational + + +2732 +020003 +Present weather +77 +Snow grains (with or without fog) +Operational + + +2733 +020003 +Present weather +78 +Isolated star-like snow crystals (with or without fog) +Operational + + +2734 +020003 +Present weather +79 +Ice pellets +Operational + + +2735 +020003 +Present weather +80-99 Showery precipitation, or precipitation with current or recent thunderstorm +Operational + + +2736 +020003 +Present weather +80 +Rain shower(s), slight +Operational + + +2737 +020003 +Present weather +81 +Rain shower(s), moderate or heavy +Operational + + +2738 +020003 +Present weather +82 +Rain shower(s), violent +Operational + + +2739 +020003 +Present weather +83 +Shower(s) of rain and snow mixed, slight +Operational + + +2740 +020003 +Present weather +84 +Shower(s) of rain and snow mixed, moderate or heavy +Operational + + +2741 +020003 +Present weather +85 +Snow shower(s), slight +Operational + + +2742 +020003 +Present weather +86 +Snow shower(s), moderate or heavy +Operational + + +2743 +020003 +Present weather +87 +Shower(s) of snow pellets or small hail, with or without rain or rain and snow mixed +slight +Operational + + +2744 +020003 +Present weather +88 +Shower(s) of snow pellets or small hail, with or without rain or rain and snow mixed +moderate or heavy +Operational + + +2745 +020003 +Present weather +89 +Shower(s) of hail, with or without rain or rain and snow mixed, not associated with thunder +slight +Operational + + +2746 +020003 +Present weather +90 +Shower(s) of hail, with or without rain or rain and snow mixed, not associated with thunder +moderate or heavy +Operational + + +2747 +020003 +Present weather +91 +Slight rain at time of observation +Thunderstorm during the preceding hour but not at time of observation +Operational + + +2748 +020003 +Present weather +92 +Moderate or heavy rain at time of observation +Thunderstorm during the preceding hour but not at time of observation +Operational + + +2749 +020003 +Present weather +93 +Slight snow, or rain and snow mixed or hail* at time of observation +Thunderstorm during the preceding hour but not at time of observation +Operational + + +2750 +020003 +Present weather +94 +Moderate or heavy snow, or rain and snow mixed or hail* at time of observation +Thunderstorm during the preceding hour but not at time of observation +Operational + + +2751 +020003 +Present weather +95 +Thunderstorm, slight or moderate, without hail*, but with rain and/or snow at time of observation +Thunderstorm at time of observation +Operational + + +2752 +020003 +Present weather +96 +Thunderstorm, slight or moderate, with hail* at time of observation +Thunderstorm at time of observation +Operational + + +2753 +020003 +Present weather +97 +Thunderstorm, heavy, without hail*, but with rain and/or snow at time of observation +Thunderstorm at time of observation +Operational + + +2754 +020003 +Present weather +98 +Thunderstorm combined with duststorm or sandstorm at time of observation +Thunderstorm at time of observation +Operational + + +2755 +020003 +Present weather +99 +Thunderstorm, heavy, with hail* at time of observation +Thunderstorm at time of observation +Operational + + +2756 +020003 +Present weather +Present weather reported from an automatic weather station +Operational + + +2757 +020003 +Present weather +100 +No significant weather observed +Operational + + +2758 +020003 +Present weather +101 +Clouds generally dissolving or becoming less developed during the past hour +Operational + + +2759 +020003 +Present weather +102 +State of sky on the whole unchanged during the past hour +Operational + + +2760 +020003 +Present weather +103 +Clouds generally forming or developing during the past hour +Operational + + +2761 +020003 +Present weather +104 +Haze or smoke, or dust in suspension in the air, visibility equal to, or greater than, 1 km +Operational + + +2762 +020003 +Present weather +105 +Haze or smoke, or dust in suspension in the air, visibility less than 1 km +Operational + + +2763 +020003 +Present weather +106-109 +Reserved +Operational + + +2764 +020003 +Present weather +110 +Mist +Operational + + +2765 +020003 +Present weather +111 +Diamond dust +Operational + + +2766 +020003 +Present weather +112 +Distant lightning +Operational + + +2767 +020003 +Present weather +113-117 +Reserved +Operational + + +2768 +020003 +Present weather +118 +Squalls +Operational + + +2769 +020003 +Present weather +119 +Reserved +Operational + + +2770 +020003 +Present weather +Code figures 120-126 are used to report precipitation, fog (or ice fog) or thunderstorm at the station during the preceding hour but not at the time of observation +Operational + + +2771 +020003 +Present weather +120 +Fog +Operational + + +2772 +020003 +Present weather +121 +PRECIPITATION +Operational + + +2773 +020003 +Present weather +122 +Drizzle (not freezing) or snow grains +Operational + + +2774 +020003 +Present weather +123 +Rain (not freezing) +Operational + + +2775 +020003 +Present weather +124 +Snow +Operational + + +2776 +020003 +Present weather +125 +Freezing drizzle or freezing rain +Operational + + +2777 +020003 +Present weather +126 +Thunderstorm (with or without precipitation) +Operational + + +2778 +020003 +Present weather +127 +BLOWING OR DRIFTING SNOW OR SAND +Operational + + +2779 +020003 +Present weather +128 +Blowing or drifting snow or sand, visibility equal to, or greater than, 1 km +Operational + + +2780 +020003 +Present weather +129 +Blowing or drifting snow or sand, visibility less than 1 km +Operational + + +2781 +020003 +Present weather +130 +FOG +Operational + + +2782 +020003 +Present weather +131 +Fog or ice fog in patches +Operational + + +2783 +020003 +Present weather +132 +Fog or ice fog, has become thinner during the past hour +Operational + + +2784 +020003 +Present weather +133 +Fog or ice fog, no appreciable change during the past hour +Operational + + +2785 +020003 +Present weather +134 +Fog or ice fog, has begun or become thicker during the past hour +Operational + + +2786 +020003 +Present weather +135 +Fog, depositing rime +Operational + + +2787 +020003 +Present weather +136-139 +Reserved +Operational + + +2788 +020003 +Present weather +140 +PRECIPITATION +Operational + + +2789 +020003 +Present weather +141 +Precipitation, slight or moderate +Operational + + +2790 +020003 +Present weather +142 +Precipitation, heavy +Operational + + +2791 +020003 +Present weather +143 +Liquid precipitation, slight or moderate +Operational + + +2792 +020003 +Present weather +144 +Liquid precipitation, heavy +Operational + + +2793 +020003 +Present weather +145 +Solid precipitation, slight or moderate +Operational + + +2794 +020003 +Present weather +146 +Solid precipitation, heavy +Operational + + +2795 +020003 +Present weather +147 +Freezing precipitation, slight or moderate +Operational + + +2796 +020003 +Present weather +148 +Freezing precipitation, heavy +Operational + + +2797 +020003 +Present weather +149 +Reserved +Operational + + +2798 +020003 +Present weather +150 +DRIZZLE +Operational + + +2799 +020003 +Present weather +151 +Drizzle, not freezing, slight +Operational + + +2800 +020003 +Present weather +152 +Drizzle, not freezing, moderate +Operational + + +2801 +020003 +Present weather +153 +Drizzle, not freezing, heavy +Operational + + +2802 +020003 +Present weather +154 +Drizzle, freezing, slight +Operational + + +2803 +020003 +Present weather +155 +Drizzle, freezing, moderate +Operational + + +2804 +020003 +Present weather +156 +Drizzle, freezing, heavy +Operational + + +2805 +020003 +Present weather +157 +Drizzle and rain, slight +Operational + + +2806 +020003 +Present weather +158 +Drizzle and rain, moderate or heavy +Operational + + +2807 +020003 +Present weather +159 +Reserved +Operational + + +2808 +020003 +Present weather +160 +RAIN +Operational + + +2809 +020003 +Present weather +161 +Rain, not freezing, slight +Operational + + +2810 +020003 +Present weather +162 +Rain, not freezing, moderate +Operational + + +2811 +020003 +Present weather +163 +Rain, not freezing, heavy +Operational + + +2812 +020003 +Present weather +164 +Rain, freezing, slight +Operational + + +2813 +020003 +Present weather +165 +Rain, freezing, moderate +Operational + + +2814 +020003 +Present weather +166 +Rain, freezing, heavy +Operational + + +2815 +020003 +Present weather +167 +Rain (or drizzle) and snow, slight +Operational + + +2816 +020003 +Present weather +168 +Rain (or drizzle) and snow, moderate or heavy +Operational + + +2817 +020003 +Present weather +169 +Reserved +Operational + + +2818 +020003 +Present weather +170 +SNOW +Operational + + +2819 +020003 +Present weather +171 +Snow, slight +Operational + + +2820 +020003 +Present weather +172 +Snow, moderate +Operational + + +2821 +020003 +Present weather +173 +Snow, heavy +Operational + + +2822 +020003 +Present weather +174 +Ice pellets, slight +Operational + + +2823 +020003 +Present weather +175 +Ice pellets, moderate +Operational + + +2824 +020003 +Present weather +176 +Ice pellets, heavy +Operational + + +2825 +020003 +Present weather +177 +Snow grains +Operational + + +2826 +020003 +Present weather +178 +Ice crystals +Operational + + +2827 +020003 +Present weather +179 +Reserved +Operational + + +2828 +020003 +Present weather +180 +SHOWER(S) OR INTERMITTENT PRECIPITATION +Operational + + +2829 +020003 +Present weather +181 +Rain shower(s) or intermittent rain, slight +Operational + + +2830 +020003 +Present weather +182 +Rain shower(s) or intermittent rain, moderate +Operational + + +2831 +020003 +Present weather +183 +Rain shower(s) or intermittent rain, heavy +Operational + + +2832 +020003 +Present weather +184 +Rain shower(s) or intermittent rain, violent +Operational + + +2833 +020003 +Present weather +185 +Snow shower(s) or intermittent snow, slight +Operational + + +2834 +020003 +Present weather +186 +Snow shower(s) or intermittent snow, moderate +Operational + + +2835 +020003 +Present weather +187 +Snow shower(s) or intermittent snow, heavy +Operational + + +2836 +020003 +Present weather +188 +Reserved +Operational + + +2837 +020003 +Present weather +189 +Hail +Operational + + +2838 +020003 +Present weather +190 +THUNDERSTORM +Operational + + +2839 +020003 +Present weather +191 +Thunderstorm, slight or moderate, with no precipitation +Operational + + +2840 +020003 +Present weather +192 +Thunderstorm, slight or moderate, with rain showers and/or snow showers +Operational + + +2841 +020003 +Present weather +193 +Thunderstorm, slight or moderate, with hail +Operational + + +2842 +020003 +Present weather +194 +Thunderstorm, heavy, with no precipitation +Operational + + +2843 +020003 +Present weather +195 +Thunderstorm, heavy, with rain showers and/or snow showers +Operational + + +2844 +020003 +Present weather +196 +Thunderstorm, heavy, with hail +Operational + + +2845 +020003 +Present weather +197-198 +Reserved +Operational + + +2846 +020003 +Present weather +199 +Tornado +Operational + + +2847 +020003 +Present weather +Present weather (in addition to present weather report from either a manned or an automatic station) +Operational + + +2848 +020003 +Present weather +Deciles 200-209 +Operational + + +2849 +020003 +Present weather +200-203 +Not used +Operational + + +2850 +020003 +Present weather +204 +Volcanic ash suspended in the air aloft +Operational + + +2851 +020003 +Present weather +205 +Not used +Operational + + +2852 +020003 +Present weather +206 +Thick dust haze, visibility less than 1 km +Operational + + +2853 +020003 +Present weather +207 +Blowing spray at the station +Operational + + +2854 +020003 +Present weather +208 +Drifting dust (sand) +Operational + + +2855 +020003 +Present weather +209 +Wall of dust or sand in distance (like haboob) +Operational + + +2856 +020003 +Present weather +Deciles 210-219 +Operational + + +2857 +020003 +Present weather +210 +Snow haze +Operational + + +2858 +020003 +Present weather +211 +Whiteout +Operational + + +2859 +020003 +Present weather +212 +Not used +Operational + + +2860 +020003 +Present weather +213 +Lightning, cloud to surface +Operational + + +2861 +020003 +Present weather +214-216 +Not used +Operational + + +2862 +020003 +Present weather +217 +Dry thunderstorm +Operational + + +2863 +020003 +Present weather +218 +Not used +Operational + + +2864 +020003 +Present weather +219 +Tornado cloud (destructive) at or within sight of the station during preceding hour or at the time of observation +Operational + + +2865 +020003 +Present weather +Deciles 220-229 +Operational + + +2866 +020003 +Present weather +220 +Deposition of volcanic ash +Operational + + +2867 +020003 +Present weather +221 +Deposition of dust or sand +Operational + + +2868 +020003 +Present weather +222 +Deposition of dew +Operational + + +2869 +020003 +Present weather +223 +Deposition of wet snow +Operational + + +2870 +020003 +Present weather +224 +Deposition of soft rime +Operational + + +2871 +020003 +Present weather +225 +Deposition of hard rime +Operational + + +2872 +020003 +Present weather +226 +Deposition of hoar frost +Operational + + +2873 +020003 +Present weather +227 +Deposition of glaze +Operational + + +2874 +020003 +Present weather +228 +Deposition of ice crust (ice slick) +Operational + + +2875 +020003 +Present weather +229 +Not used +Operational + + +2876 +020003 +Present weather +Deciles 230-239 +Operational + + +2877 +020003 +Present weather +230 +Duststorm or sandstorm with temperature below 0 °C +Operational + + +2878 +020003 +Present weather +231-238 +Not used +Operational + + +2879 +020003 +Present weather +239 +Blowing snow, impossible to determine whether snow is falling or not +Operational + + +2880 +020003 +Present weather +Deciles 240-249 +Operational + + +2881 +020003 +Present weather +240 +Not used +Operational + + +2882 +020003 +Present weather +241 +Fog on sea +Operational + + +2883 +020003 +Present weather +242 +Fog in valleys +Operational + + +2884 +020003 +Present weather +243 +Arctic or Antarctic sea smoke +Operational + + +2885 +020003 +Present weather +244 +Steam fog (sea, lake or river) +Operational + + +2886 +020003 +Present weather +245 +Steam log (land) +Operational + + +2887 +020003 +Present weather +246 +Fog over ice or snow cover +Operational + + +2888 +020003 +Present weather +247 +Dense fog, visibility 60-90 m +Operational + + +2889 +020003 +Present weather +248 +Dense fog, visibility 30-60 m +Operational + + +2890 +020003 +Present weather +249 +Dense fog, visibility less than 30 m +Operational + + +2891 +020003 +Present weather +Deciles 250-259 +Operational + + +2892 +020003 +Present weather +250 +Drizzle, rate of fall - less than 0.10 mm h-1 +Operational + + +2893 +020003 +Present weather +251 +Drizzle, rate of fall - 0.10-0.19 mm h-1 +Operational + + +2894 +020003 +Present weather +252 +Drizzle, rate of fall - 0.20-0.39 mm h-1 +Operational + + +2895 +020003 +Present weather +253 +Drizzle, rate of fall - 0.40-0.79 mm h-1 +Operational + + +2896 +020003 +Present weather +254 +Drizzle, rate of fall - 0.80-1.59 mm h-1 +Operational + + +2897 +020003 +Present weather +255 +Drizzle, rate of fall - 1.60-3.19 mm h-1 +Operational + + +2898 +020003 +Present weather +256 +Drizzle, rate of fall - 3.20-6.39 mm h-1 +Operational + + +2899 +020003 +Present weather +257 +Drizzle, rate of fall - 6.4 mm h-1 or more +Operational + + +2900 +020003 +Present weather +258 +Not used +Operational + + +2901 +020003 +Present weather +259 +Drizzle and snow +Operational + + +2902 +020003 +Present weather +Deciles 260-269 +Operational + + +2903 +020003 +Present weather +260 +Rain, rate of fall - less than 1.0 mm h-1 +Operational + + +2904 +020003 +Present weather +261 +Rain, rate of fall - 1.0-1.9 mm h-1 +Operational + + +2905 +020003 +Present weather +262 +Rain, rate of fall - 2.0-3.9 mm h-1 +Operational + + +2906 +020003 +Present weather +263 +Rain, rate of fall - 4.0-7.9 mm h-1 +Operational + + +2907 +020003 +Present weather +264 +Rain, rate of fall - 8.0-15.9 mm h-1 +Operational + + +2908 +020003 +Present weather +265 +Rain, rate of fall - 16.0-31.9 mm h-1 +Operational + + +2909 +020003 +Present weather +266 +Rain, rate of fall - 32.0-63.9 mm h-1 +Operational + + +2910 +020003 +Present weather +267 +Rain, rate of fall - 64.0 mm h-1 or more +Operational + + +2911 +020003 +Present weather +268-269 +Not used +Operational + + +2912 +020003 +Present weather +Deciles 270-279 +Operational + + +2913 +020003 +Present weather +270 +Snow, rate of fall - less than 1.0 cm h-1 +Operational + + +2914 +020003 +Present weather +271 +Snow, rate of fall - 1.0-1.9 cm h-1 +Operational + + +2915 +020003 +Present weather +272 +Snow, rate of fall - 2.0-3.9 cm h-1 +Operational + + +2916 +020003 +Present weather +273 +Snow, rate of fall - 4.0-7.9 cm h-1 +Operational + + +2917 +020003 +Present weather +274 +Snow, rate of fall - 8.0-15.9 cm h-1 +Operational + + +2918 +020003 +Present weather +275 +Snow, rate of fall - 16.0-31.9 cm h-1 +Operational + + +2919 +020003 +Present weather +276 +Snow, rate of fall - 32.0-63.9 cm h-1 +Operational + + +2920 +020003 +Present weather +277 +Snow, rate of fall - 64.0 cm h-1 or more +Operational + + +2921 +020003 +Present weather +278 +Snow or ice crystal precipitation from a clear sky +Operational + + +2922 +020003 +Present weather +279 +Wet snow, freezing on contact +Operational + + +2923 +020003 +Present weather +Deciles 280-299 +Operational + + +2924 +020003 +Present weather +280 +Precipitation of rain +Operational + + +2925 +020003 +Present weather +281 +Precipitation of rain, freezing +Operational + + +2926 +020003 +Present weather +282 +Precipitation of rain and snow mixed +Operational + + +2927 +020003 +Present weather +283 +Precipitation of snow +Operational + + +2928 +020003 +Present weather +284 +Precipitation of snow pellets or small hall +Operational + + +2929 +020003 +Present weather +285 +Precipitation of snow pellets or small hail, with rain +Operational + + +2930 +020003 +Present weather +286 +Precipitation of snow pellets or small hail, with rain and snow mixed +Operational + + +2931 +020003 +Present weather +287 +Precipitation of snow pellets or small hail, with snow +Operational + + +2932 +020003 +Present weather +288 +Precipitation of hail +Operational + + +2933 +020003 +Present weather +289 +Precipitation of hail, with rain +Operational + + +2934 +020003 +Present weather +290 +Precipitation of hall, with rain and snow mixed +Operational + + +2935 +020003 +Present weather +291 +Precipitation of hail, with snow +Operational + + +2936 +020003 +Present weather +292 +Shower(s) or thunderstorm over sea +Operational + + +2937 +020003 +Present weather +293 +Shower(s) or thunderstorm over mountains +Operational + + +2938 +020003 +Present weather +294-299 +Not used +Operational + + +2939 +020003 +Present weather +300-507 +Reserved +Operational + + +2940 +020003 +Present weather +508 +No significant phenomenon to report, present and past weather omitted +Operational + + +2941 +020003 +Present weather +509 +No observation, data not available, present and past weather omitted +Operational + + +2942 +020003 +Present weather +510 +Present and past weather missing, but expected +Operational + + +2943 +020003 +Present weather +511 +Missing value +Operational + + +2944 +020004 +Past weather (1) +0 +Cloud covering 1/2 or less of the sky throughout the appropriate period +Operational + + +2945 +020004 +Past weather (1) +1 +Cloud covering more than 1/2 of the sky during part of the appropriate period and covering 1/2 or less during part of the period +Operational + + +2946 +020004 +Past weather (1) +2 +Cloud covering more than 1/2 of the sky throughout the appropriate period +Operational + + +2947 +020004 +Past weather (1) +3 +Sandstorm, duststorm or blowing snow +Operational + + +2948 +020004 +Past weather (1) +4 +Fog or ice fog or thick haze +Operational + + +2949 +020004 +Past weather (1) +5 +Drizzle +Operational + + +2950 +020004 +Past weather (1) +6 +Rain +Operational + + +2951 +020004 +Past weather (1) +7 +Snow, or rain and snow mixed +Operational + + +2952 +020004 +Past weather (1) +8 +Shower(s) +Operational + + +2953 +020004 +Past weather (1) +9 +Thunderstorm(s) with or without precipitation +Operational + + +2954 +020004 +Past weather (1) +10 +No significant weather observed +Operational + + +2955 +020004 +Past weather (1) +11 +VISIBILITY REDUCED (see Note) +Operational + + +2956 +020004 +Past weather (1) +12 +Blowing phenomena, visibility reduced +Operational + + +2957 +020004 +Past weather (1) +13 +FOG (see Note) +Operational + + +2958 +020004 +Past weather (1) +14 +PRECIPITATION (see Note) +Operational + + +2959 +020004 +Past weather (1) +15 +Drizzle +Operational + + +2960 +020004 +Past weather (1) +16 +Rain +Operational + + +2961 +020004 +Past weather (1) +17 +Snow or ice pellets +Operational + + +2962 +020004 +Past weather (1) +18 +Showers or intermittent precipitation +Operational + + +2963 +020004 +Past weather (1) +19 +Thunderstorm +Operational + + +2964 +020004 +Past weather (1) +20-30 +Reserved +Operational + + +2965 +020004 +Past weather (1) +31 +Missing value +Operational + + +2966 +020005 +Past weather (2) +0 +Cloud covering 1/2 or less of the sky throughout the appropriate period +Operational + + +2967 +020005 +Past weather (2) +1 +Cloud covering more than 1/2 of the sky during part of the appropriate period and covering 1/2 or less during part of the period +Operational + + +2968 +020005 +Past weather (2) +2 +Cloud covering more than 1/2 of the sky throughout the appropriate period +Operational + + +2969 +020005 +Past weather (2) +3 +Sandstorm, duststorm or blowing snow +Operational + + +2970 +020005 +Past weather (2) +4 +Fog or ice fog or thick haze +Operational + + +2971 +020005 +Past weather (2) +5 +Drizzle +Operational + + +2972 +020005 +Past weather (2) +6 +Rain +Operational + + +2973 +020005 +Past weather (2) +7 +Snow, or rain and snow mixed +Operational + + +2974 +020005 +Past weather (2) +8 +Shower(s) +Operational + + +2975 +020005 +Past weather (2) +9 +Thunderstorm(s) with or without precipitation +Operational + + +2976 +020005 +Past weather (2) +10 +No significant weather observed +Operational + + +2977 +020005 +Past weather (2) +11 +VISIBILITY REDUCED (see Note) +Operational + + +2978 +020005 +Past weather (2) +12 +Blowing phenomena, visibility reduced +Operational + + +2979 +020005 +Past weather (2) +13 +FOG (see Note) +Operational + + +2980 +020005 +Past weather (2) +14 +PRECIPITATION (see Note) +Operational + + +2981 +020005 +Past weather (2) +15 +Drizzle +Operational + + +2982 +020005 +Past weather (2) +16 +Rain +Operational + + +2983 +020005 +Past weather (2) +17 +Snow or ice pellets +Operational + + +2984 +020005 +Past weather (2) +18 +Showers or intermittent precipitation +Operational + + +2985 +020005 +Past weather (2) +19 +Thunderstorm +Operational + + +2986 +020005 +Past weather (2) +20-30 +Reserved +Operational + + +2987 +020005 +Past weather (2) +31 +Missing value +Operational + + +2988 +020006 +Flight rules +0 +Low instrument flight rules - Ceiling < 500 feet and/or visibility < 1 mile +Operational + + +2989 +020006 +Flight rules +1 +Instrument flight rules - Ceiling < 1000 feet and/or visibility < 3 miles +Operational + + +2990 +020006 +Flight rules +2 +Marginal visual flight rules - 1000 feet =< Ceiling < 3000 feet and/or 3 miles =< visibility < 5 miles +Operational + + +2991 +020006 +Flight rules +3 +Visual flight rules - Ceiling >= 3000 feet and/or visibility >= 5 miles +Operational + + +2992 +020006 +Flight rules +4-6 +Reserved +Operational + + +2993 +020006 +Flight rules +7 +Missing value +Operational + + +2994 +020008 +Cloud distribution for aviation +0 +Sky clear +Operational + + +2995 +020008 +Cloud distribution for aviation +1 +Few +Operational + + +2996 +020008 +Cloud distribution for aviation +2 +Scattered +Operational + + +2997 +020008 +Cloud distribution for aviation +3 +Broken +Operational + + +2998 +020008 +Cloud distribution for aviation +4 +Overcast +Operational + + +2999 +020008 +Cloud distribution for aviation +5 +Reserved +Operational + + +3000 +020008 +Cloud distribution for aviation +6 +Scattered/broken +(Many forecasts use scattered/broken or broken/overcast followed by cloud type(s)) +Operational + + +3001 +020008 +Cloud distribution for aviation +7 +Broken/overcast +(Many forecasts use scattered/broken or broken/overcast followed by cloud type(s)) +Operational + + +3002 +020008 +Cloud distribution for aviation +8 +Isolated +(Used on aviation charts to describe the cloud type Cb) +Operational + + +3003 +020008 +Cloud distribution for aviation +9 +Isolated embedded +(Used on aviation charts to describe the cloud type Cb) +Operational + + +3004 +020008 +Cloud distribution for aviation +10 +Occasional +(Used on aviation charts to describe the cloud type Cb) +Operational + + +3005 +020008 +Cloud distribution for aviation +11 +Occasional embedded +(Used on aviation charts to describe the cloud type Cb) +Operational + + +3006 +020008 +Cloud distribution for aviation +12 +Frequent +(Used on aviation charts to describe the cloud type Cb) +Operational + + +3007 +020008 +Cloud distribution for aviation +13 +Dense +(Used on aviation charts to describe cloud that would cause sudden changes in visibility (less than 1 000 m)) +Operational + + +3008 +020008 +Cloud distribution for aviation +14 +Layers +Operational + + +3009 +020008 +Cloud distribution for aviation +15 +Obscured (OBSC) +Operational + + +3010 +020008 +Cloud distribution for aviation +16 +Embedded (EMBD) +Operational + + +3011 +020008 +Cloud distribution for aviation +17 +Frequent embedded +Operational + + +3012 +020008 +Cloud distribution for aviation +18-30 +Reserved +Operational + + +3013 +020008 +Cloud distribution for aviation +31 +Missing value +Operational + + +3014 +020009 +General weather indicator (TAF/METAR) +0 +Reserved +Operational + + +3015 +020009 +General weather indicator (TAF/METAR) +1 +NSC Nil Significant Cloud +Operational + + +3016 +020009 +General weather indicator (TAF/METAR) +2 +CAVOK +Operational + + +3017 +020009 +General weather indicator (TAF/METAR) +3 +SKC Sky Clear +Operational + + +3018 +020009 +General weather indicator (TAF/METAR) +4 +NSW Nil Significant Weather +Operational + + +3019 +020009 +General weather indicator (TAF/METAR) +5-14 +Reserved +Operational + + +3020 +020009 +General weather indicator (TAF/METAR) +15 +Missing value +Operational + + +3021 +020011 +Cloud amount +0 +0 +0 +Operational + + +3022 +020011 +Cloud amount +1 +1 okta or less, but not zero +1/10 or less, but not zero +Operational + + +3023 +020011 +Cloud amount +2 +2 oktas +2/10 - 3/10 +Operational + + +3024 +020011 +Cloud amount +3 +3 oktas +4/10 +Operational + + +3025 +020011 +Cloud amount +4 +4 oktas +5/10 +Operational + + +3026 +020011 +Cloud amount +5 +5 oktas +6/10 +Operational + + +3027 +020011 +Cloud amount +6 +6 oktas +7/10 - 8/10 +Operational + + +3028 +020011 +Cloud amount +7 +7 oktas or more, but not 8 oktas +9/10 or more, but not 10/10 +Operational + + +3029 +020011 +Cloud amount +8 +8 oktas +10/10 +Operational + + +3030 +020011 +Cloud amount +9 +Sky obscured by fog and/or other meteorological phenomena +Operational + + +3031 +020011 +Cloud amount +10 +Sky partially obscured by fog and/or other meteorological phenomena +Operational + + +3032 +020011 +Cloud amount +11 +Scattered +Operational + + +3033 +020011 +Cloud amount +12 +Broken +Operational + + +3034 +020011 +Cloud amount +13 +Few +Operational + + +3035 +020011 +Cloud amount +14 +Reserved +Operational + + +3036 +020011 +Cloud amount +15 +Cloud cover is indiscernible for reasons other than fog or other meteorological phenomena, or observation is not made +Operational + + +3037 +020012 +Cloud type +0 +Cirrus (Ci) +Operational + + +3038 +020012 +Cloud type +1 +Cirrocumulus (Cc) +Operational + + +3039 +020012 +Cloud type +2 +Cirrostratus (Cs) +Operational + + +3040 +020012 +Cloud type +3 +Altocumulus (Ac) +Operational + + +3041 +020012 +Cloud type +4 +Altostratus (As) +Operational + + +3042 +020012 +Cloud type +5 +Nimbostratus (Ns) +Operational + + +3043 +020012 +Cloud type +6 +Stratocumulus (Sc) +Operational + + +3044 +020012 +Cloud type +7 +Stratus (St) +Operational + + +3045 +020012 +Cloud type +8 +Cumulus (Cu) +Operational + + +3046 +020012 +Cloud type +9 +Cumulonimbus (Cb) +Operational + + +3047 +020012 +Cloud type +10 +No CH clouds +Operational + + +3048 +020012 +Cloud type +11 +Cirrus fibratus, sometimes uncinus, not progressively invading the sky +Operational + + +3049 +020012 +Cloud type +12 +Cirrus spissatus, in patches or entangled sheaves, which usually do not increase and sometimes seem to be the remains of the upper part of a cumulonimbus; or cirrus castellanus or floccus +Operational + + +3050 +020012 +Cloud type +13 +Cirrus spissatus cumulonimbogenitus +Operational + + +3051 +020012 +Cloud type +14 +Cirrus uncinus or fibratus, or both, progressively invading the sky; they generally thicken as a whole +Operational + + +3052 +020012 +Cloud type +15 +Cirrus (often in bands) and cirrostratus, or cirrostratus alone, progressively invading the sky; they generally thicken as a whole, but the continuous veil does not reach 45 degrees above the horizon +Operational + + +3053 +020012 +Cloud type +16 +Cirrus (often in bands) and cirrostratus, or cirrostratus alone, progressively Invading the sky; they generally thicken as a whole; the continuous veil extends more than 45 degrees above the horizon, without the sky being totally covered +Operational + + +3054 +020012 +Cloud type +17 +Cirrostratus covering the whole sky +Operational + + +3055 +020012 +Cloud type +18 +Cirrostratus not progressively invading the sky and not entirely covering it +Operational + + +3056 +020012 +Cloud type +19 +Cirrocumulus alone, or cirrocumulus predominant among the CH clouds +Operational + + +3057 +020012 +Cloud type +20 +No CM clouds +Operational + + +3058 +020012 +Cloud type +21 +Altostratus translucidus +Operational + + +3059 +020012 +Cloud type +22 +Altostratus opacus or nimbostratus +Operational + + +3060 +020012 +Cloud type +23 +Altocumulus translucidus at a single level +Operational + + +3061 +020012 +Cloud type +24 +Patches (often lenticular) of altocumulus translucidus, continually changing and occurring at one or more levels +Operational + + +3062 +020012 +Cloud type +25 +Altocumulus translucidus in bands, or one or more layers of altocumulus translucidus or opacus, progressively invading the sky; these altocumulus clouds generally thicken as a whole +Operational + + +3063 +020012 +Cloud type +26 +Altocumulus cumulogenitus (or cumulonimbogenitus) +Operational + + +3064 +020012 +Cloud type +27 +Altocumulus translucidus or opacus in two or more layers, or altocumulus opacus in a single layer, not progressively invading the sky, or altocumulus with altostratus or nimbostratus +Operational + + +3065 +020012 +Cloud type +28 +Altocumulus castellanus or floccus +Operational + + +3066 +020012 +Cloud type +29 +Altocumulus of a chaotic sky, generally at several levels +Operational + + +3067 +020012 +Cloud type +30 +No CL clouds +Operational + + +3068 +020012 +Cloud type +31 +Cumulus humilis or cumulus fractus other than of bad weather,* or both +Operational + + +3069 +020012 +Cloud type +32 +Cumulus mediocris or congestus, towering cumulus (TCU), with or without cumulus of species fractus or humilis or stratocumulus, all having their bases at the same level +Operational + + +3070 +020012 +Cloud type +33 +Cumulonimbus calvus, with or without cumulus, stratocumulus or stratus +Operational + + +3071 +020012 +Cloud type +34 +Stratocumulus cumulogenitus +Operational + + +3072 +020012 +Cloud type +35 +Stratocumulus other than stratocumulus cumulogenitus +Operational + + +3073 +020012 +Cloud type +36 +Stratus nebulosus or stratus fractus other than of bad weather,* or both +Operational + + +3074 +020012 +Cloud type +37 +Stratus fractus or cumulus fractus of bad weather,* or both (pannus), usually below altostratus or nimbostratus +Operational + + +3075 +020012 +Cloud type +38 +Cumulus and stratocumulus other than stratocumulus cumulogenitus, with bases at different levels +Operational + + +3076 +020012 +Cloud type +39 +Cumulonimbus capillatus (often with an anvil), with or without cumulonimbus calvus, cumulus, stratocumulus, stratus or pannus +Operational + + +3077 +020012 +Cloud type +40 +CH +Operational + + +3078 +020012 +Cloud type +41 +CM +Operational + + +3079 +020012 +Cloud type +42 +CL +Operational + + +3080 +020012 +Cloud type +43 +Clear +Operational + + +3081 +020012 +Cloud type +44 +Liquid water +Operational + + +3082 +020012 +Cloud type +45 +Supercooled liquid water +Operational + + +3083 +020012 +Cloud type +46 +Mixed phase +Operational + + +3084 +020012 +Cloud type +47 +Optically thick ice +Operational + + +3085 +020012 +Cloud type +48 +Optically thin ice +Operational + + +3086 +020012 +Cloud type +49 +Multilayered ice +Operational + + +3087 +020012 +Cloud type +50-58 +Reserved +Operational + + +3088 +020012 +Cloud type +59 +Cloud not visible owing to darkness, fog, duststorm, sandstorm, or other analogous phenomena +Operational + + +3089 +020012 +Cloud type +60 +CH clouds invisible owing to darkness, fog, blowing dust or sand, or other similar phenomena, or because of a continuous layer of lower clouds +Operational + + +3090 +020012 +Cloud type +61 +CM clouds invisible owing to darkness, fog, blowing dust or sand, or other similar phenomena, or because of continuous layer of lower clouds +Operational + + +3091 +020012 +Cloud type +62 +CL clouds invisible owing to darkness, fog, blowing dust or sand, or other similar phenomena +Operational + + +3092 +020012 +Cloud type +63 +Missing value +Operational + + +3093 +020017 +Cloud top description +0 +Isolated cloud fragments of clouds +Operational + + +3094 +020017 +Cloud top description +1 +Continuous cloud +flat tops +Operational + + +3095 +020017 +Cloud top description +2 +Broken cloud - small breaks +flat tops +Operational + + +3096 +020017 +Cloud top description +3 +Broken cloud - large breaks +flat tops +Operational + + +3097 +020017 +Cloud top description +4 +Continuous cloud +undulating tops +Operational + + +3098 +020017 +Cloud top description +5 +Broken cloud - small breaks +undulating tops +Operational + + +3099 +020017 +Cloud top description +6 +Broken cloud - large breaks +undulating tops +Operational + + +3100 +020017 +Cloud top description +7 +Continuous or almost continuous waves with towering clouds above the top of the layer +Operational + + +3101 +020017 +Cloud top description +8 +Groups of waves with towering clouds above the top of the layer +Operational + + +3102 +020017 +Cloud top description +9 +Two or more layers at different levels +Operational + + +3103 +020017 +Cloud top description +10-14 +Reserved +Operational + + +3104 +020017 +Cloud top description +15 +Missing value +Operational + + +3105 +020018 +Tendency of runway visual range +0 +Increasing (U) +Operational + + +3106 +020018 +Tendency of runway visual range +1 +Decreasing (D) +Operational + + +3107 +020018 +Tendency of runway visual range +2 +No distinct change (N) +Operational + + +3108 +020018 +Tendency of runway visual range +3 +Missing value +Operational + + +3109 +020021 +Type of precipitation +1 +Precipitation - unknown type +Operational + + +3110 +020021 +Type of precipitation +2 +Liquid precipitation not freezing +Operational + + +3111 +020021 +Type of precipitation +3 +Liquid freezing precipitation +Operational + + +3112 +020021 +Type of precipitation +4 +Drizzle +Operational + + +3113 +020021 +Type of precipitation +5 +Rain +Operational + + +3114 +020021 +Type of precipitation +6 +Solid precipitation +Operational + + +3115 +020021 +Type of precipitation +7 +Snow +Operational + + +3116 +020021 +Type of precipitation +8 +Snow grains +Operational + + +3117 +020021 +Type of precipitation +9 +Snow pellets +Operational + + +3118 +020021 +Type of precipitation +10 +Ice pellets +Operational + + +3119 +020021 +Type of precipitation +11 +Ice crystals +Operational + + +3120 +020021 +Type of precipitation +12 +Diamond dust +Operational + + +3121 +020021 +Type of precipitation +13 +Small hail +Operational + + +3122 +020021 +Type of precipitation +14 +Hail +Operational + + +3123 +020021 +Type of precipitation +15 +Glaze +Operational + + +3124 +020021 +Type of precipitation +16 +Rime +Operational + + +3125 +020021 +Type of precipitation +17 +Soft rime +Operational + + +3126 +020021 +Type of precipitation +18 +Hard rime +Operational + + +3127 +020021 +Type of precipitation +19 +Clear ice +Operational + + +3128 +020021 +Type of precipitation +20 +Wet snow +Operational + + +3129 +020021 +Type of precipitation +21 +Hoar frost +Operational + + +3130 +020021 +Type of precipitation +22 +Dew +Operational + + +3131 +020021 +Type of precipitation +23 +White dew +Operational + + +3132 +020021 +Type of precipitation +24-29 +Reserved +Operational + + +3133 +020021 +Type of precipitation +All 30 +Missing value +Operational + + +3134 +020022 +Character of precipitation +0 +No precipitation +Operational + + +3135 +020022 +Character of precipitation +1 +Continuous +Operational + + +3136 +020022 +Character of precipitation +2 +Intermittent +Operational + + +3137 +020022 +Character of precipitation +3 +Shower +Operational + + +3138 +020022 +Character of precipitation +4 +Not reaching ground +Operational + + +3139 +020022 +Character of precipitation +5 +Deposition +Operational + + +3140 +020022 +Character of precipitation +6-14 +Reserved +Operational + + +3141 +020022 +Character of precipitation +15 +Missing value +Operational + + +3142 +020023 +Other weather phenomena +1 +Dust/sand whirl +Operational + + +3143 +020023 +Other weather phenomena +2 +Squalls +Operational + + +3144 +020023 +Other weather phenomena +3 +Sandstorm +Operational + + +3145 +020023 +Other weather phenomena +4 +Duststorm +Operational + + +3146 +020023 +Other weather phenomena +5 +Lightning - cloud to surface +Operational + + +3147 +020023 +Other weather phenomena +6 +Lightning - cloud to cloud +Operational + + +3148 +020023 +Other weather phenomena +7 +Lightning - distant +Operational + + +3149 +020023 +Other weather phenomena +8 +Thunderstorm +Operational + + +3150 +020023 +Other weather phenomena +9 +Funnel cloud not touching surface +Operational + + +3151 +020023 +Other weather phenomena +10 +Funnel cloud touching surface +Operational + + +3152 +020023 +Other weather phenomena +11 +Spray +Operational + + +3153 +020023 +Other weather phenomena +12 +Waterspout +Operational + + +3154 +020023 +Other weather phenomena +13 +Wind shear +Operational + + +3155 +020023 +Other weather phenomena +14 +Dust devils +Operational + + +3156 +020023 +Other weather phenomena +15-17 +Reserved +Operational + + +3157 +020023 +Other weather phenomena +All 18 +Missing value +Operational + + +3158 +020024 +Intensity of phenomena +0 +No phenomena +Operational + + +3159 +020024 +Intensity of phenomena +1 +Light +Operational + + +3160 +020024 +Intensity of phenomena +2 +Moderate +Operational + + +3161 +020024 +Intensity of phenomena +3 +Heavy +Operational + + +3162 +020024 +Intensity of phenomena +4 +Violent +Operational + + +3163 +020024 +Intensity of phenomena +5 +Severe +Operational + + +3164 +020024 +Intensity of phenomena +6 +Very severe +Operational + + +3165 +020024 +Intensity of phenomena +7 +Missing value +Operational + + +3166 +020025 +Obscuration +1 +Fog +Operational + + +3167 +020025 +Obscuration +2 +Ice fog +Operational + + +3168 +020025 +Obscuration +3 +Steam fog +Operational + + +3169 +020025 +Obscuration +4-6 +Reserved +Operational + + +3170 +020025 +Obscuration +7 +Mist +Operational + + +3171 +020025 +Obscuration +8 +Haze +Operational + + +3172 +020025 +Obscuration +9 +Smoke +Operational + + +3173 +020025 +Obscuration +10 +Volcanic ash +Operational + + +3174 +020025 +Obscuration +11 +Dust +Operational + + +3175 +020025 +Obscuration +12 +Sand +Operational + + +3176 +020025 +Obscuration +13 +Snow +Operational + + +3177 +020025 +Obscuration +14 +Cloud +Operational + + +3178 +020025 +Obscuration +15 +Precipitation +Operational + + +3179 +020025 +Obscuration +16 +Impossible to determine whether snow is falling or not +Operational + + +3180 +020025 +Obscuration +17-20 +Reserved +Operational + + +3181 +020025 +Obscuration +All 21 +Missing value +Operational + + +3182 +020026 +Character of obscuration +0 +No change +Operational + + +3183 +020026 +Character of obscuration +1 +Shallow +Operational + + +3184 +020026 +Character of obscuration +2 +Patches +Operational + + +3185 +020026 +Character of obscuration +3 +Partial +Operational + + +3186 +020026 +Character of obscuration +4 +Freezing +Operational + + +3187 +020026 +Character of obscuration +5 +Low drifting +Operational + + +3188 +020026 +Character of obscuration +6 +Blowing +Operational + + +3189 +020026 +Character of obscuration +7 +Increasing +Operational + + +3190 +020026 +Character of obscuration +8 +Decreasing +Operational + + +3191 +020026 +Character of obscuration +9 +In suspension in the air +Operational + + +3192 +020026 +Character of obscuration +10 +Wall +Operational + + +3193 +020026 +Character of obscuration +11 +Dense +Operational + + +3194 +020026 +Character of obscuration +12 +Whiteout +Operational + + +3195 +020026 +Character of obscuration +13 +Drifting and blowing +Operational + + +3196 +020026 +Character of obscuration +14 +Reserved +Operational + + +3197 +020026 +Character of obscuration +15 +Missing value +Operational + + +3198 +020027 +Phenomena occurrence +1 +At time of observation +Operational + + +3199 +020027 +Phenomena occurrence +2 +In past hour +Operational + + +3200 +020027 +Phenomena occurrence +3 +In time period for past weather W1W2 +Operational + + +3201 +020027 +Phenomena occurrence +4 +In time period specified +Operational + + +3202 +020027 +Phenomena occurrence +5 +Reserved +Operational + + +3203 +020027 +Phenomena occurrence +6 +Below station level +Operational + + +3204 +020027 +Phenomena occurrence +7 +At the station +(see Note 1) +Operational + + +3205 +020027 +Phenomena occurrence +8 +In the vicinity +(see Note 2) +Operational + + +3206 +020027 +Phenomena occurrence +All 9 +Missing value +Operational + + +3207 +020028 +Expected change in intensity +0 +No change (NC) +Operational + + +3208 +020028 +Expected change in intensity +1 +Forecast to weaken (WKN) +Operational + + +3209 +020028 +Expected change in intensity +2 +Forecast to intensify (INTSF) +Operational + + +3210 +020028 +Expected change in intensity +3-6 +Reserved +Operational + + +3211 +020028 +Expected change in intensity +7 +Missing value +Operational + + +3212 +020029 +Rain flag +0 +No rain +Operational + + +3213 +020029 +Rain flag +1 +Rain +Operational + + +3214 +020029 +Rain flag +2 +Reserved +Operational + + +3215 +020029 +Rain flag +3 +Missing value +Operational + + +3216 +020032 +Rate of ice accretion (estimated) +0 +Ice not building up +Operational + + +3217 +020032 +Rate of ice accretion (estimated) +1 +Ice building up slowly +Operational + + +3218 +020032 +Rate of ice accretion (estimated) +2 +Ice building up rapidly +Operational + + +3219 +020032 +Rate of ice accretion (estimated) +3 +Ice melting or breaking up slowly +Operational + + +3220 +020032 +Rate of ice accretion (estimated) +4 +Ice melting or breaking up rapidly +Operational + + +3221 +020032 +Rate of ice accretion (estimated) +5-6 +Reserved +Operational + + +3222 +020032 +Rate of ice accretion (estimated) +7 +Missing value +Operational + + +3223 +020033 +Cause of ice accretion +1 +Icing from ocean spray +Operational + + +3224 +020033 +Cause of ice accretion +2 +Icing from fog +Operational + + +3225 +020033 +Cause of ice accretion +3 +Icing from rain +Operational + + +3226 +020033 +Cause of ice accretion +All 4 +Missing value +Operational + + +3227 +020034 +Sea ice concentration +0 +No sea ice in sight +Operational + + +3228 +020034 +Sea ice concentration +1 +Ship in open lead more than 1.0 nautical mile wide, or ship in fast ice with boundary beyond limit of visibility +Operational + + +3229 +020034 +Sea ice concentration +2 +Sea ice present in concentrations less than 3/10 (3/8), open water or very open pack ice +Sea ice concentration is uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3230 +020034 +Sea ice concentration +3 +4/10 to 6/10 (3/8 to less than 6/8), open pack ice +Sea ice concentration is uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3231 +020034 +Sea ice concentration +4 +7/10 to 8/10 (6/8 to less than 7/8), close pack ice +Sea ice concentration is uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3232 +020034 +Sea ice concentration +5 +9/10 or more, but not 10/10 (7/8 to less than 8/8), very close pack ice +Sea ice concentration is uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3233 +020034 +Sea ice concentration +6 +Strips and patches of pack ice with open water between +Sea ice concentration is not uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3234 +020034 +Sea ice concentration +7 +Strips and patches of close or very close pack ice with areas of lesser concentration between +Sea ice concentration is not uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3235 +020034 +Sea ice concentration +8 +Fast ice with open water, very open or open pack ice to seaward of the ice boundary +Sea ice concentration is not uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3236 +020034 +Sea ice concentration +9 +Fast ice with close or very close pack ice to seaward of the boundary +Sea ice concentration is not uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3237 +020034 +Sea ice concentration +10-13 +Reserved +Operational + + +3238 +020034 +Sea ice concentration +14 +Unable to report, because of darkness, lack of visibility, or because ship is more than 0.5 nautical mile away from ice edge +Operational + + +3239 +020034 +Sea ice concentration +15-30 +Reserved +Operational + + +3240 +020034 +Sea ice concentration +31 +Missing value +Operational + + +3241 +020035 +Amount and type of ice +0 +No ice of land origin +Operational + + +3242 +020035 +Amount and type of ice +1 +1-5 icebergs, no growlers or bergy bits +Operational + + +3243 +020035 +Amount and type of ice +2 +6-10 icebergs, no growlers or bergy bits +Operational + + +3244 +020035 +Amount and type of ice +3 +11-20 icebergs, no growlers or bergy bits +Operational + + +3245 +020035 +Amount and type of ice +4 +Up to and including 10 growlers and bergy bits - no icebergs +Operational + + +3246 +020035 +Amount and type of ice +5 +More than 10 growlers and bergy bits - no icebergs +Operational + + +3247 +020035 +Amount and type of ice +6 +1-5 icebergs, with growlers and bergy bits +Operational + + +3248 +020035 +Amount and type of ice +7 +6-10 icebergs, with growlers and bergy bits +Operational + + +3249 +020035 +Amount and type of ice +8 +11-20 icebergs, with growlers and bergy bits +Operational + + +3250 +020035 +Amount and type of ice +9 +More than 20 icebergs, with growlers and bergy bits - a major hazard to navigation +Operational + + +3251 +020035 +Amount and type of ice +10-13 +Reserved +Operational + + +3252 +020035 +Amount and type of ice +14 +Unable to report, because of darkness, lack of visibility or because only sea ice is visible +Operational + + +3253 +020035 +Amount and type of ice +15 +Missing value +Operational + + +3254 +020036 +Ice situation +0 +Ship in open water with floating ice in sight +Operational + + +3255 +020036 +Ice situation +1 +Ship in easily penetrable ice; conditions improving +Operational + + +3256 +020036 +Ice situation +2 +Ship in easily penetrable ice; conditions not changing +Operational + + +3257 +020036 +Ice situation +3 +Ship in easily penetrable ice; conditions worsening +Operational + + +3258 +020036 +Ice situation +4 +Ship in ice difficult to penetrate; conditions improving +Operational + + +3259 +020036 +Ice situation +5 +Ship in ice difficult to penetrate; conditions not changing +Operational + + +3260 +020036 +Ice situation +6 +Ship in ice difficult to penetrate and conditions worsening. Ice forming and floes freezing together +Operational + + +3261 +020036 +Ice situation +7 +Ship in ice difficult to penetrate and conditions worsening. Ice under slight pressure +Operational + + +3262 +020036 +Ice situation +8 +Ship in ice difficult to penetrate and conditions worsening. Ice under moderate or severe pressure +Operational + + +3263 +020036 +Ice situation +9 +Ship in ice difficult to penetrate and conditions worsening. Ship beset +Operational + + +3264 +020036 +Ice situation +10-29 +Reserved +Operational + + +3265 +020036 +Ice situation +30 +Unable to report, because of darkness or lack of visibility +Operational + + +3266 +020036 +Ice situation +31 +Missing value +Operational + + +3267 +020037 +Ice development +0 +New ice only (frazil ice, grease ice, slush, shuga) +Operational + + +3268 +020037 +Ice development +1 +Nilas or ice rind, less than 10 cm thick +Operational + + +3269 +020037 +Ice development +2 +Young ice (grey ice, grey-white ice), 10-30 cm thick +Operational + + +3270 +020037 +Ice development +3 +Predominantly new and/or young ice with some first-year ice +Operational + + +3271 +020037 +Ice development +4 +Predominantly thin first-year ice with some new and/or young ice +Operational + + +3272 +020037 +Ice development +5 +All thin first-year ice (30-70 cm thick) +Operational + + +3273 +020037 +Ice development +6 +Predominantly medium first-year ice (70-120 cm thick) and thick first-year ice (>120 cm thick) with some thinner (younger) first-year ice +Operational + + +3274 +020037 +Ice development +7 +All medium and thick first-year ice +Operational + + +3275 +020037 +Ice development +8 +Predominantly medium and thick first-year ice with some old ice (usually more than 2 metres thick) +Operational + + +3276 +020037 +Ice development +9 +Predominantly old ice +Operational + + +3277 +020037 +Ice development +10-29 +Reserved +Operational + + +3278 +020037 +Ice development +30 +Unable to report, because of darkness, lack of visibility or because only ice of land origin is visible or because ship is more than 0.5 nautical mile away from ice edge +Operational + + +3279 +020037 +Ice development +31 +Missing value +Operational + + +3280 +020040 +Evolution of drift snow +0 +Drift snow ended before the hour of observation +Operational + + +3281 +020040 +Evolution of drift snow +1 +Intensity diminishing +Operational + + +3282 +020040 +Evolution of drift snow +2 +No change +Operational + + +3283 +020040 +Evolution of drift snow +3 +Intensity increasing +Operational + + +3284 +020040 +Evolution of drift snow +4 +Continues, apart from interruption lasting less than 30 minutes +Operational + + +3285 +020040 +Evolution of drift snow +5 +General drift snow has become drift snow near the ground +Operational + + +3286 +020040 +Evolution of drift snow +6 +Drift snow near the ground has become general drift snow +Operational + + +3287 +020040 +Evolution of drift snow +7 +Drift snow has started again after an interruption of more than 30 minutes +Operational + + +3288 +020040 +Evolution of drift snow +8-14 +Reserved +Operational + + +3289 +020040 +Evolution of drift snow +15 +Missing value +Operational + + +3290 +020041 +Airframe icing +0 +No icing +Operational + + +3291 +020041 +Airframe icing +1 +Light icing +Operational + + +3292 +020041 +Airframe icing +2 +Light icing in cloud +Operational + + +3293 +020041 +Airframe icing +3 +Light icing in precipitation +Operational + + +3294 +020041 +Airframe icing +4 +Moderate icing +Operational + + +3295 +020041 +Airframe icing +5 +Moderate icing in cloud +Operational + + +3296 +020041 +Airframe icing +6 +Moderate icing in precipitation +Operational + + +3297 +020041 +Airframe icing +7 +Severe icing +Operational + + +3298 +020041 +Airframe icing +8 +Severe icing in cloud +Operational + + +3299 +020041 +Airframe icing +9 +Severe icing in precipitation +Operational + + +3300 +020041 +Airframe icing +10 +Trace of icing +Operational + + +3301 +020041 +Airframe icing +11 +Trace of icing in cloud +Operational + + +3302 +020041 +Airframe icing +12 +Trace of icing in precipitation +Operational + + +3303 +020041 +Airframe icing +13-14 +Reserved +Operational + + +3304 +020041 +Airframe icing +15 +Missing value +Operational + + +3305 +020042 +Airframe icing present +0 +No icing +Operational + + +3306 +020042 +Airframe icing present +1 +Icing present +Operational + + +3307 +020042 +Airframe icing present +2 +Reserved +Operational + + +3308 +020042 +Airframe icing present +3 +Missing value +Operational + + +3309 +020045 +Supercooled large droplet (SLD) conditions +0 +No SLD conditions present +Operational + + +3310 +020045 +Supercooled large droplet (SLD) conditions +1 +SLD conditions present +Operational + + +3311 +020045 +Supercooled large droplet (SLD) conditions +2 +Reserved +Operational + + +3312 +020045 +Supercooled large droplet (SLD) conditions +3 +Missing value +Operational + + +3313 +020048 +Evolution of feature +0 +Stability +Operational + + +3314 +020048 +Evolution of feature +1 +Diminution +Operational + + +3315 +020048 +Evolution of feature +2 +Intensification +Operational + + +3316 +020048 +Evolution of feature +3 +Unknown +Operational + + +3317 +020048 +Evolution of feature +4-14 +Reserved +Operational + + +3318 +020048 +Evolution of feature +15 +Missing value +Operational + + +3319 +020050 +Cloud index +0 +Reserved +Operational + + +3320 +020050 +Cloud index +1 +1st low cloud +Operational + + +3321 +020050 +Cloud index +2 +2nd low cloud +Operational + + +3322 +020050 +Cloud index +3 +3rd low cloud +Operational + + +3323 +020050 +Cloud index +4 +1st medium cloud +Operational + + +3324 +020050 +Cloud index +5 +2nd medium cloud +Operational + + +3325 +020050 +Cloud index +6 +3rd medium cloud +Operational + + +3326 +020050 +Cloud index +7 +1st high cloud +Operational + + +3327 +020050 +Cloud index +8 +2nd high cloud +Operational + + +3328 +020050 +Cloud index +9-254 +Reserved +Operational + + +3329 +020050 +Cloud index +255 +Missing value +Operational + + +3330 +020055 +State of sky in the tropics +0 +Cumulus, if any, are quite small; generally less than 2/8 coverage, except on windward slopes of elevated terrain; average width of cloud is at least as great as its vertical thickness +Operational + + +3331 +020055 +State of sky in the tropics +1 +Cumulus of intermediate size with cloud cover less than 5/8; average cloud width is more than its vertical thickness; towers are vertical with little or no evidence of precipitation, except along slopes of elevated terrain; a general absence of middle and upper clouds +Operational + + +3332 +020055 +State of sky in the tropics +2 +Swelling Cumulus with rapidly growing tall turrets which decrease in size with height and whose tops tend to separate from the longer cloud body and evaporate within minutes of the separation +Operational + + +3333 +020055 +State of sky in the tropics +3 +Swelling Cumulus with towers having a pronounced tilt in a downwind direction; vertical cloud thickness is more than one and a half times that of its average width +Operational + + +3334 +020055 +State of sky in the tropics +4 +Swelling Cumulus with towers having a pronounced tilt in an upwind direction; vertical cloud thickness is more than one and a half times that of its average width +Operational + + +3335 +020055 +State of sky in the tropics +5 +Tall Cumulus congestus with vertical thickness more than twice the average width; not organized in clusters or lines; one or more layers of clouds extend out from the cloud towers, although no continuous cloud layers exist +(see Note) +Operational + + +3336 +020055 +State of sky in the tropics +6 +Isolated Cumulonimbus or large clusters of Cumulus turrets separated by wide areas in which clouds are absent; cloud bases are generally dark with showers observed in most cells; some scattered middle and upper clouds may be present; individual Cumulus cells are one to two times higher than they are wide +Operational + + +3337 +020055 +State of sky in the tropics +7 +Numerous Cumulus extending through the middle troposphere with broken to overcast sheets of middle clouds and/or Cirrostratus; Cumulus towers do not decrease generally in size with height; ragged dark cloud bases with some showers present +Operational + + +3338 +020055 +State of sky in the tropics +8 +Continuous dense middle clouds and/or Cirrostratus cloud sheets with some large isolated Cumulonimbus or Cumulus congestus clouds penetrating these sheets; light rain occasionally observed from the Altostratus; Cumulonimbus bases ragged and dark with showers visible +(see Note) +Operational + + +3339 +020055 +State of sky in the tropics +9 +Continuous sheets of middle clouds and/or Cirrostratus with Cumulonimbus and Cumulus congestus in organized lines or cloud bands; rain is generally observed from Altostratus sheets and heavy showers from Cumulonimbus; wind has a squally character +Operational + + +3340 +020055 +State of sky in the tropics +10 +State of sky unknown or not described by any of the above +Operational + + +3341 +020055 +State of sky in the tropics +11-14 +Reserved +Operational + + +3342 +020055 +State of sky in the tropics +15 +Missing value +Operational + + +3343 +020056 +Cloud phase +0 +Unknown +Operational + + +3344 +020056 +Cloud phase +1 +Water +Operational + + +3345 +020056 +Cloud phase +2 +Ice +Operational + + +3346 +020056 +Cloud phase +3 +Mixed +Operational + + +3347 +020056 +Cloud phase +4 +Clear +Operational + + +3348 +020056 +Cloud phase +5 +Supercooled liquid water +Operational + + +3349 +020056 +Cloud phase +6 +Reserved +Operational + + +3350 +020056 +Cloud phase +7 +Missing value +Operational + + +3351 +020062 +State of the ground (with or without snow) +0 +Surface of ground dry (without cracks and no appreciable amount of dust or loose sand) +without snow or measurable ice cover +Operational + + +3352 +020062 +State of the ground (with or without snow) +1 +Surface of ground moist +without snow or measurable ice cover +Operational + + +3353 +020062 +State of the ground (with or without snow) +2 +Surface of ground wet (standing water in small or large pools on surface) +without snow or measurable ice cover +Operational + + +3354 +020062 +State of the ground (with or without snow) +3 +Flooded +without snow or measurable ice cover +Operational + + +3355 +020062 +State of the ground (with or without snow) +4 +Surface of ground frozen +without snow or measurable ice cover +Operational + + +3356 +020062 +State of the ground (with or without snow) +5 +Glaze on ground +without snow or measurable ice cover +Operational + + +3357 +020062 +State of the ground (with or without snow) +6 +Loose dry dust or sand not covering ground completely +without snow or measurable ice cover +Operational + + +3358 +020062 +State of the ground (with or without snow) +7 +Thin cover of loose dry dust or sand covering ground completely +without snow or measurable ice cover +Operational + + +3359 +020062 +State of the ground (with or without snow) +8 +Moderate or thick cover of loose dry dust or sand covering ground completely +without snow or measurable ice cover +Operational + + +3360 +020062 +State of the ground (with or without snow) +9 +Extremely dry with cracks +without snow or measurable ice cover +Operational + + +3361 +020062 +State of the ground (with or without snow) +10 +Ground predominantly covered by ice +with snow or measurable ice cover +Operational + + +3362 +020062 +State of the ground (with or without snow) +11 +Compact or wet snow (with or without ice) covering less than one half of the ground +with snow or measurable ice cover +Operational + + +3363 +020062 +State of the ground (with or without snow) +12 +Compact or wet snow (with or without ice) covering at least one half of the ground but ground not completely covered +with snow or measurable ice cover +Operational + + +3364 +020062 +State of the ground (with or without snow) +13 +Even layer of compact or wet snow covering ground completely +with snow or measurable ice cover +Operational + + +3365 +020062 +State of the ground (with or without snow) +14 +Uneven layer of compact or wet snow covering ground completely +with snow or measurable ice cover +Operational + + +3366 +020062 +State of the ground (with or without snow) +15 +Loose dry snow covering less than one half of the ground +with snow or measurable ice cover +Operational + + +3367 +020062 +State of the ground (with or without snow) +16 +Loose dry snow covering at least one half of the ground but ground not completely covered +with snow or measurable ice cover +Operational + + +3368 +020062 +State of the ground (with or without snow) +17 +Even layer of loose dry snow covering ground completely +with snow or measurable ice cover +Operational + + +3369 +020062 +State of the ground (with or without snow) +18 +Uneven layer of loose dry snow covering ground completely +with snow or measurable ice cover +Operational + + +3370 +020062 +State of the ground (with or without snow) +19 +Snow covering ground completely; deep drifts +with snow or measurable ice cover +Operational + + +3371 +020062 +State of the ground (with or without snow) +20-30 +Reserved +Operational + + +3372 +020062 +State of the ground (with or without snow) +31 +Missing value +Operational + + +3373 +020063 +Special phenomena +0 +Reserved +Operational + + +3374 +020063 +Special phenomena +1 +Highest wind speed gusts greater than 11.5 m/s +Operational + + +3375 +020063 +Special phenomena +2 +Highest mean wind speed greater than 17.5 m/s +Operational + + +3376 +020063 +Special phenomena +3-6 +Reserved +Operational + + +3377 +020063 +Special phenomena +7 +Visibility greater than 100 000 m +Operational + + +3378 +020063 +Special phenomena +8-9 +Reserved +Operational + + +3379 +020063 +Special phenomena +10-19 Mirage +Operational + + +3380 +020063 +Special phenomena +10 +Mirage - No specification +Operational + + +3381 +020063 +Special phenomena +11 +Mirage - Image of distant object raised (looming) +Operational + + +3382 +020063 +Special phenomena +12 +Mirage - Image of distant object raised clear above the horizon +Operational + + +3383 +020063 +Special phenomena +13 +Mirage - Inverted image of distant object +Operational + + +3384 +020063 +Special phenomena +14 +Mirage - Complex, multiple images of distant object (images not inverted) +Operational + + +3385 +020063 +Special phenomena +15 +Mirage - Complex, multiple images of distant object (some images being inverted) +Operational + + +3386 +020063 +Special phenomena +16 +Mirage - Sun or moon seen appreciably distorted +Operational + + +3387 +020063 +Special phenomena +17 +Mirage - Sun visible, although astronomically below the horizon +Operational + + +3388 +020063 +Special phenomena +18 +Mirage - Moon visible, although astronomically below the horizon +Operational + + +3389 +020063 +Special phenomena +19 +Reserved +Operational + + +3390 +020063 +Special phenomena +20-22 Day darkness, worst in direction specified +Operational + + +3391 +020063 +Special phenomena +20 +Day darkness, bad, worst in direction specified +Operational + + +3392 +020063 +Special phenomena +21 +Day darkness, very bad, worst in direction specified +Operational + + +3393 +020063 +Special phenomena +22 +Day darkness, black, worst in direction specified +Operational + + +3394 +020063 +Special phenomena +23-30 +Reserved +Operational + + +3395 +020063 +Special phenomena +31-39 Coloration and/or convergence of clouds associated with a tropical disturbance +Operational + + +3396 +020063 +Special phenomena +31 +Slight coloration of clouds at sunrise associated with a tropical disturbance +Operational + + +3397 +020063 +Special phenomena +32 +Deep-red coloration of clouds at sunrise associated with a tropical disturbance +Operational + + +3398 +020063 +Special phenomena +33 +Slight coloration of clouds at sunset associated with a tropical disturbance +Operational + + +3399 +020063 +Special phenomena +34 +Deep-red coloration of clouds at sunset associated with a tropical disturbance +Operational + + +3400 +020063 +Special phenomena +35 +Convergence of CH clouds at a point below 45° forming or increasing and associated with a tropical disturbance +Operational + + +3401 +020063 +Special phenomena +36 +Convergence of CH clouds at a point above 45° associated with a tropical disturbance +Operational + + +3402 +020063 +Special phenomena +37 +Convergence of CH clouds at a point below 45° dissolving or diminishing and associated with a tropical disturbance +Operational + + +3403 +020063 +Special phenomena +38 +Convergence of CH clouds at a point above 45° associated with a tropical disturbance +Operational + + +3404 +020063 +Special phenomena +39 +Reserved +Operational + + +3405 +020063 +Special phenomena +40-43 Hoar frost or coloured precipitation +Operational + + +3406 +020063 +Special phenomena +40 +Hoar frost on horizontal surfaces +Operational + + +3407 +020063 +Special phenomena +41 +Hoar frost on horizontal and vertical surfaces +Operational + + +3408 +020063 +Special phenomena +42 +Precipitation containing sand or desert dust +Operational + + +3409 +020063 +Special phenomena +43 +Precipitation containing volcanic ash +Operational + + +3410 +020063 +Special phenomena +44-49 +Reserved +Operational + + +3411 +020063 +Special phenomena +50-59 Nature and/or type of squall +Operational + + +3412 +020063 +Special phenomena +50 +Calm or light wind followed by a squall +Operational + + +3413 +020063 +Special phenomena +51 +Calm or light wind followed by a succession of squalls +Operational + + +3414 +020063 +Special phenomena +52 +Gusty weather followed by a squall +Operational + + +3415 +020063 +Special phenomena +53 +Gusty weather followed by a succession of squalls +Operational + + +3416 +020063 +Special phenomena +54 +Squall followed by gusty weather +Operational + + +3417 +020063 +Special phenomena +55 +General gusty weather with squall at intervals +Operational + + +3418 +020063 +Special phenomena +56 +Squall approaching station +Operational + + +3419 +020063 +Special phenomena +57 +Line squall +Operational + + +3420 +020063 +Special phenomena +58 +Squall with drifting or blowing dust or sand +Operational + + +3421 +020063 +Special phenomena +59 +Line squall with drifting or blowing dust or sand +Operational + + +3422 +020063 +Special phenomena +60-69 Variation of temperature during the period specified, associated with glaze or rime +Operational + + +3423 +020063 +Special phenomena +60 +Temperature steady +Operational + + +3424 +020063 +Special phenomena +61 +Temperature falling, without going below 0°C +Operational + + +3425 +020063 +Special phenomena +62 +Temperature rising, without going above 0°C +Operational + + +3426 +020063 +Special phenomena +63 +Temperature falling to a value below 0°C +Operational + + +3427 +020063 +Special phenomena +64 +Temperature rising to a value above 0°C +Operational + + +3428 +020063 +Special phenomena +65 +Irregular variation, oscillations of temperature passing through 0°C +Operational + + +3429 +020063 +Special phenomena +66 +Irregular variation, oscillations of temperature not passing through 0°C +Operational + + +3430 +020063 +Special phenomena +67 +Variation of temperature not observed +Operational + + +3431 +020063 +Special phenomena +68 +Not allocated +Operational + + +3432 +020063 +Special phenomena +69 +Variation of temperature unknown owing to lack of thermograph +Operational + + +3433 +020063 +Special phenomena +70-79 Variation of visibility during the period specified +Operational + + +3434 +020063 +Special phenomena +70 +Visibility has not varied (sun* visible) towards direction specified +Operational + + +3435 +020063 +Special phenomena +71 +Visibility has not varied (sun* invisible) towards direction specified +Operational + + +3436 +020063 +Special phenomena +72 +Visibility has increased (sun* visible) towards direction specified +Operational + + +3437 +020063 +Special phenomena +73 +Visibility has increased (sun* invisible) towards direction specified +Operational + + +3438 +020063 +Special phenomena +74 +Visibility has decreased (sun* visible) towards direction specified +Operational + + +3439 +020063 +Special phenomena +75 +Visibility has decreased (sun* invisible) towards direction specified +Operational + + +3440 +020063 +Special phenomena +76 +Fog coming from direction specified +Operational + + +3441 +020063 +Special phenomena +77 +Fog has lifted, without dissipating +Operational + + +3442 +020063 +Special phenomena +78 +Fog has dispersed without regard to direction +Operational + + +3443 +020063 +Special phenomena +79 +Moving patches or banks of fog +Operational + + +3444 +020063 +Special phenomena +80-89 Optical phenomena +Operational + + +3445 +020063 +Special phenomena +80 +Brocken spectre +Operational + + +3446 +020063 +Special phenomena +81 +Rainbow +Operational + + +3447 +020063 +Special phenomena +82 +Solar or lunar halo +Operational + + +3448 +020063 +Special phenomena +83 +Parhelia or anthelia +Operational + + +3449 +020063 +Special phenomena +84 +Sun pillar +Operational + + +3450 +020063 +Special phenomena +85 +Corona +Operational + + +3451 +020063 +Special phenomena +86 +Twilight glow +Operational + + +3452 +020063 +Special phenomena +87 +Twilight glow on the mountains (Alpenglühen) +Operational + + +3453 +020063 +Special phenomena +88 +Mirage +Operational + + +3454 +020063 +Special phenomena +89 +Zodiacal light +Operational + + +3455 +020063 +Special phenomena +90 +St Elmo's fire +Operational + + +3456 +020063 +Special phenomena +91-1022 +Reserved +Operational + + +3457 +020063 +Special phenomena +1023 +Missing value +Operational + + +3458 +020071 +Accuracy of fix and rate of atmospherics +0 +No assessment +No assessment +Operational + + +3459 +020071 +Accuracy of fix and rate of atmospherics +1 +Less than 50 km +Less than 1 per second +Operational + + +3460 +020071 +Accuracy of fix and rate of atmospherics +2 +Between 50 and 200 km +Less than 1 per second +Operational + + +3461 +020071 +Accuracy of fix and rate of atmospherics +3 +More than 200 km +Less than 1 per second +Operational + + +3462 +020071 +Accuracy of fix and rate of atmospherics +4 +Less than 50 km +1 or more per second +Operational + + +3463 +020071 +Accuracy of fix and rate of atmospherics +5 +Between 50 and 200 km +1 or more per second +Operational + + +3464 +020071 +Accuracy of fix and rate of atmospherics +6 +More than 200 km +1 or more per second +Operational + + +3465 +020071 +Accuracy of fix and rate of atmospherics +7 +Less than 50 km +Rate so rapid number cannot be counted +Operational + + +3466 +020071 +Accuracy of fix and rate of atmospherics +8 +Between 50 and 200 km +Rate so rapid number cannot be counted +Operational + + +3467 +020071 +Accuracy of fix and rate of atmospherics +9 +More than 200 km +Rate so rapid number cannot be counted +Operational + + +3468 +020071 +Accuracy of fix and rate of atmospherics +10-14 +Reserved +Operational + + +3469 +020071 +Accuracy of fix and rate of atmospherics +15 +Missing value +Operational + + +3470 +020085 +General condition of runway +0 +Cleared (CLRD//) +Operational + + +3471 +020085 +General condition of runway +1 +All runways closed (SNOCLO) +Operational + + +3472 +020085 +General condition of runway +2-14 +Reserved +Operational + + +3473 +020085 +General condition of runway +15 +Missing value +Operational + + +3474 +020086 +Runway deposits +0 +Clear and dry +Operational + + +3475 +020086 +Runway deposits +1 +Damp +Operational + + +3476 +020086 +Runway deposits +2 +Wet with water patches +Operational + + +3477 +020086 +Runway deposits +3 +Rime and frost covered (depth normally less than 1 mm) +Operational + + +3478 +020086 +Runway deposits +4 +Dry snow +Operational + + +3479 +020086 +Runway deposits +5 +Wet snow +Operational + + +3480 +020086 +Runway deposits +6 +Slush +Operational + + +3481 +020086 +Runway deposits +7 +Ice +Operational + + +3482 +020086 +Runway deposits +8 +Compacted or rolled snow +Operational + + +3483 +020086 +Runway deposits +9 +Frozen ruts or ridges +Operational + + +3484 +020086 +Runway deposits +10-14 +Reserved +Operational + + +3485 +020086 +Runway deposits +15 +Missing or not reported (e.g. due to runway clearance in progress) +Operational + + +3486 +020087 +Runway contamination +0 +Reserved +Operational + + +3487 +020087 +Runway contamination +1 +Less than 10% of runway covered +Operational + + +3488 +020087 +Runway contamination +2 +11% to 25% of runway covered +Operational + + +3489 +020087 +Runway contamination +3-4 +Reserved +Operational + + +3490 +020087 +Runway contamination +5 +26% to 50% of runway covered +Operational + + +3491 +020087 +Runway contamination +6-8 +Reserved +Operational + + +3492 +020087 +Runway contamination +9 +51% to 100% of runway covered +Operational + + +3493 +020087 +Runway contamination +10-14 +Reserved +Operational + + +3494 +020087 +Runway contamination +15 +Missing or not reported (e.g. due to runway clearance in progress) +Operational + + +3495 +020089 +Runway friction coefficient +0 +0.00 +Operational + + +3496 +020089 +Runway friction coefficient +1 +0.01 +Operational + + +3497 +020089 +Runway friction coefficient +2-88 +0.02…0.88 +Operational + + +3498 +020089 +Runway friction coefficient +89 +0.89 +Operational + + +3499 +020089 +Runway friction coefficient +90 +0.90 +Operational + + +3500 +020089 +Runway friction coefficient +91 +Braking action poor +Operational + + +3501 +020089 +Runway friction coefficient +92 +Braking action medium to poor +Operational + + +3502 +020089 +Runway friction coefficient +93 +Braking action medium +Operational + + +3503 +020089 +Runway friction coefficient +94 +Braking action medium to good +Operational + + +3504 +020089 +Runway friction coefficient +95 +Braking action good +Operational + + +3505 +020089 +Runway friction coefficient +96-98 +Reserved +Operational + + +3506 +020089 +Runway friction coefficient +99 +Unreliable +Operational + + +3507 +020089 +Runway friction coefficient +100-126 +Reserved +Operational + + +3508 +020089 +Runway friction coefficient +127 +Missing, not reported and/or runway not operational +Operational + + +3509 +020090 +Special clouds +0 +Reserved +Operational + + +3510 +020090 +Special clouds +1 +Nacreous clouds +Operational + + +3511 +020090 +Special clouds +2 +Noctilucent clouds +Operational + + +3512 +020090 +Special clouds +3 +Clouds from waterfalls +Operational + + +3513 +020090 +Special clouds +4 +Clouds from fires +Operational + + +3514 +020090 +Special clouds +5 +Clouds from volcanic eruptions +Operational + + +3515 +020090 +Special clouds +6-14 +Reserved +Operational + + +3516 +020090 +Special clouds +15 +Missing value +Operational + + +3517 +020101 +Locust (acridian) name +0 +Reserved +Operational + + +3518 +020101 +Locust (acridian) name +1 +Schistocerca gregaria +Operational + + +3519 +020101 +Locust (acridian) name +2 +Locusta migratoria +Operational + + +3520 +020101 +Locust (acridian) name +3 +Nomadacris septemfasciata +Operational + + +3521 +020101 +Locust (acridian) name +4 +Oedaleus senegalensis +Operational + + +3522 +020101 +Locust (acridian) name +5 +Anracridium spp +Operational + + +3523 +020101 +Locust (acridian) name +6 +Other locusts +Operational + + +3524 +020101 +Locust (acridian) name +7 +Other grasshoppers +Operational + + +3525 +020101 +Locust (acridian) name +8 +Other crickets +Operational + + +3526 +020101 +Locust (acridian) name +9 +Spodoptera exempta +Operational + + +3527 +020101 +Locust (acridian) name +10-14 +Reserved +Operational + + +3528 +020101 +Locust (acridian) name +15 +Missing value +Operational + + +3529 +020102 +Locust (maturity) colour +0 +Green +Operational + + +3530 +020102 +Locust (maturity) colour +1 +Green or black +Operational + + +3531 +020102 +Locust (maturity) colour +2 +Black +Operational + + +3532 +020102 +Locust (maturity) colour +3 +Yellow and black +Operational + + +3533 +020102 +Locust (maturity) colour +4 +Straw/grey +Operational + + +3534 +020102 +Locust (maturity) colour +5 +Pink +Operational + + +3535 +020102 +Locust (maturity) colour +6 +Dark red/brown +Operational + + +3536 +020102 +Locust (maturity) colour +7 +Mixed red and yellow +Operational + + +3537 +020102 +Locust (maturity) colour +8 +Yellow +Operational + + +3538 +020102 +Locust (maturity) colour +9 +Other +Operational + + +3539 +020102 +Locust (maturity) colour +10-14 +Reserved +Operational + + +3540 +020102 +Locust (maturity) colour +15 +Missing value +Operational + + +3541 +020103 +Stage of development of locusts +0 +Hoppers (nymphs, larvae), stage 1 +Operational + + +3542 +020103 +Stage of development of locusts +1 +Hoppers (nymphs, larvae), stage 2 or mixed 1, 2 instars (stages) +Operational + + +3543 +020103 +Stage of development of locusts +2 +Hoppers (nymphs, larvae), stage 3 or mixed 2, 3 instars +Operational + + +3544 +020103 +Stage of development of locusts +3 +Hoppers (nymphs, larvae), stage 4 or mixed 3, 4 instars +Operational + + +3545 +020103 +Stage of development of locusts +4 +Hoppers (nymphs, larvae), stage 5 or mixed 4, 5 instars +Operational + + +3546 +020103 +Stage of development of locusts +5 +Hoppers (nymphs, larvae), stage mixed, all or many instars +Operational + + +3547 +020103 +Stage of development of locusts +6 +Fledglings (wings too soft for sustained flight) +Operational + + +3548 +020103 +Stage of development of locusts +7 +Immature adults +Operational + + +3549 +020103 +Stage of development of locusts +8 +Mixed maturity adults +Operational + + +3550 +020103 +Stage of development of locusts +9 +Mature adults +Operational + + +3551 +020103 +Stage of development of locusts +10-14 +Reserved +Operational + + +3552 +020103 +Stage of development of locusts +15 +Missing value +Operational + + +3553 +020104 +Organization state of swarm or band of locusts +0 +Hoppers only, mainly in bands or clusters +Operational + + +3554 +020104 +Organization state of swarm or band of locusts +1 +Winged adults in the vicinity more than 10 kilometres from point of observation +Operational + + +3555 +020104 +Organization state of swarm or band of locusts +2 +Locusts in flight, a few seen at the station +Operational + + +3556 +020104 +Organization state of swarm or band of locusts +3 +Locusts at the station, most of them on the ground +Operational + + +3557 +020104 +Organization state of swarm or band of locusts +4 +Locusts, some on ground and others in flight at a height less than 10 metres +Operational + + +3558 +020104 +Organization state of swarm or band of locusts +5 +Locusts, some on ground and others in flight at a height greater than 10 metres +Operational + + +3559 +020104 +Organization state of swarm or band of locusts +6 +Locusts, most in flight at a height less than 10 metres +Operational + + +3560 +020104 +Organization state of swarm or band of locusts +7 +Locusts, most in flight at a height greater than 10 metres +Operational + + +3561 +020104 +Organization state of swarm or band of locusts +8 +Locusts, all over inflicting severe damage to vegetation, no extermination operation +Operational + + +3562 +020104 +Organization state of swarm or band of locusts +9 +Locusts, all over inflicting severe damage to vegetation, extermination operation in progress +Operational + + +3563 +020104 +Organization state of swarm or band of locusts +10-14 +Reserved +Operational + + +3564 +020104 +Organization state of swarm or band of locusts +15 +Missing value +Operational + + +3565 +020105 +Size of swarm or band of locusts and duration of passage of swarm +When 0 20 104 (organization state of swarm or band of locusts) = 0 +Operational + + +3566 +020105 +Size of swarm or band of locusts and duration of passage of swarm +0 +Reserved +Operational + + +3567 +020105 +Size of swarm or band of locusts and duration of passage of swarm +1 +Area covered by isolated bands < 10 m2 +Operational + + +3568 +020105 +Size of swarm or band of locusts and duration of passage of swarm +2 +Area covered by isolated bands 10 - 100 m2 +Operational + + +3569 +020105 +Size of swarm or band of locusts and duration of passage of swarm +3 +Area covered by isolated bands 100 - 1000 m2 +Operational + + +3570 +020105 +Size of swarm or band of locusts and duration of passage of swarm +4 +Area covered by isolated bands 1 000 - 10000 m2 +Operational + + +3571 +020105 +Size of swarm or band of locusts and duration of passage of swarm +5 +Area covered by isolated bands 1 - 10 ha +Operational + + +3572 +020105 +Size of swarm or band of locusts and duration of passage of swarm +6 +Area covered by isolated bands > 10 ha +Operational + + +3573 +020105 +Size of swarm or band of locusts and duration of passage of swarm +7 +Area covered by dispersed bands < 100 km2 +Operational + + +3574 +020105 +Size of swarm or band of locusts and duration of passage of swarm +8 +Area covered by dispersed bands 100 - 1000 km2 +Operational + + +3575 +020105 +Size of swarm or band of locusts and duration of passage of swarm +9 +Area covered by dispersed bands > 1000 km2 +Operational + + +3576 +020105 +Size of swarm or band of locusts and duration of passage of swarm +10-14 +Reserved +Operational + + +3577 +020105 +Size of swarm or band of locusts and duration of passage of swarm +15 +Missing value +Operational + + +3578 +020105 +Size of swarm or band of locusts and duration of passage of swarm +When 0 20 104 (organization state of swarm or band of locusts) = 1 to 9 +Operational + + +3579 +020105 +Size of swarm or band of locusts and duration of passage of swarm +0 +Small swarm less than 1 km2 or adults in ground, tens or hundreds of individuals visible simultaneously, duration of passage less than 1 hour ago +Operational + + +3580 +020105 +Size of swarm or band of locusts and duration of passage of swarm +1 +Small swarm less than 1 km2 or adults in ground, tens or hundreds of individuals visible simultaneously, duration of passage 1 to 6 hours ago +Operational + + +3581 +020105 +Size of swarm or band of locusts and duration of passage of swarm +2 +Small swarm less than 1 km2 or adults in ground, tens or hundreds of individuals visible simultaneously, duration of passage over 6 hours ago +Operational + + +3582 +020105 +Size of swarm or band of locusts and duration of passage of swarm +3 +Medium swarm or scattered adults, several visible simultaneously, duration of passage less than 1 hour ago +Operational + + +3583 +020105 +Size of swarm or band of locusts and duration of passage of swarm +4 +Medium swarm or scattered adults, several visible simultaneously, duration of passage 1 to 6 hours ago +Operational + + +3584 +020105 +Size of swarm or band of locusts and duration of passage of swarm +5 +Medium swarm or scattered adults, several visible simultaneously, duration of passage over 6 hours ago +Operational + + +3585 +020105 +Size of swarm or band of locusts and duration of passage of swarm +6 +Large swarm or isolated adults, seen singly, duration of passage less than 1 hour ago +Operational + + +3586 +020105 +Size of swarm or band of locusts and duration of passage of swarm +7 +Large swarm or isolated adults, seen singly, duration of passage 1 to 6 hours ago +Operational + + +3587 +020105 +Size of swarm or band of locusts and duration of passage of swarm +8 +Large swarm or isolated adults, seen singly, duration of passage over 6 hours ago +Operational + + +3588 +020105 +Size of swarm or band of locusts and duration of passage of swarm +9 +More than one swarm of locusts +Operational + + +3589 +020105 +Size of swarm or band of locusts and duration of passage of swarm +10 +Size of swarm and/or duration of passage not determined owing to darkness or similar phenomena +Operational + + +3590 +020105 +Size of swarm or band of locusts and duration of passage of swarm +11-14 +Reserved +Operational + + +3591 +020105 +Size of swarm or band of locusts and duration of passage of swarm +15 +Missing value +Operational + + +3592 +020106 +Locust population density +0 +Reserved +Operational + + +3593 +020106 +Locust population density +1 +Thin density swarm (swarm visible only when near enough for individual locusts to be discerned) +Operational + + +3594 +020106 +Locust population density +2 +Medium density swarm +Operational + + +3595 +020106 +Locust population density +3 +Dense swarm (obscuring nearby features, e.g. trees) +Operational + + +3596 +020106 +Locust population density +4 +Isolated hoppers seen singly +Operational + + +3597 +020106 +Locust population density +5 +Scattered hoppers, several visible simultaneously +Operational + + +3598 +020106 +Locust population density +6-14 +Reserved +Operational + + +3599 +020106 +Locust population density +15 +Missing value +Operational + + +3600 +020107 +Direction of movements of locust swarm +0 +Reserved +Operational + + +3601 +020107 +Direction of movements of locust swarm +1 +Generally in the direction NE +Operational + + +3602 +020107 +Direction of movements of locust swarm +2 +Generally in the direction E +Operational + + +3603 +020107 +Direction of movements of locust swarm +3 +Generally in the direction SE +Operational + + +3604 +020107 +Direction of movements of locust swarm +4 +Generally in the direction S +Operational + + +3605 +020107 +Direction of movements of locust swarm +5 +Generally in the direction SW +Operational + + +3606 +020107 +Direction of movements of locust swarm +6 +Generally in the direction W +Operational + + +3607 +020107 +Direction of movements of locust swarm +7 +Generally in the direction NW +Operational + + +3608 +020107 +Direction of movements of locust swarm +8 +Generally in the direction N +Operational + + +3609 +020107 +Direction of movements of locust swarm +9 +Specific direction indeterminable +Operational + + +3610 +020107 +Direction of movements of locust swarm +10-14 +Reserved +Operational + + +3611 +020107 +Direction of movements of locust swarm +15 +Missing value +Operational + + +3612 +020108 +Extent of vegetation +0 +Bare ground +Operational + + +3613 +020108 +Extent of vegetation +1 +Dry, presence of few and isolated shrubs +Operational + + +3614 +020108 +Extent of vegetation +2 +Sparse vegetation (sprouting) +Operational + + +3615 +020108 +Extent of vegetation +3 +Dense vegetation (sprouting) +Operational + + +3616 +020108 +Extent of vegetation +4 +Sparse vegetation (growing) +Operational + + +3617 +020108 +Extent of vegetation +5 +Dense vegetation (growing) +Operational + + +3618 +020108 +Extent of vegetation +6 +Sparse vegetation in flower +Operational + + +3619 +020108 +Extent of vegetation +7 +Dense vegetation in flower +Operational + + +3620 +020108 +Extent of vegetation +8-14 +Reserved +Operational + + +3621 +020108 +Extent of vegetation +15 +Missing value +Operational + + +3622 +020119 +Lightning discharge polarity +0 +Not defined +Operational + + +3623 +020119 +Lightning discharge polarity +1 +Positive +Operational + + +3624 +020119 +Lightning discharge polarity +2 +Negative +Operational + + +3625 +020119 +Lightning discharge polarity +3 +Missing value +Operational + + +3626 +020124 +Lightning stroke or flash +0 +Not defined +Operational + + +3627 +020124 +Lightning stroke or flash +1 +Lightning stroke +Operational + + +3628 +020124 +Lightning stroke or flash +2 +Lightning flash, by manual observation, or if equipment insensitive to stroke resolution +Operational + + +3629 +020124 +Lightning stroke or flash +3 +Missing value +Operational + + +3630 +020136 +Supplementary cloud type +0-7 Nature of clouds of vertical development (Ca - Code table 0531) +Operational + + +3631 +020136 +Supplementary cloud type +0 +Isolated cumulus humilis and/or cumulus mediocris of vertical development +Operational + + +3632 +020136 +Supplementary cloud type +1 +Numerous cumulus humilis and/or cumulus mediocris of vertical development +Operational + + +3633 +020136 +Supplementary cloud type +2 +Isolated cumulus congestus of vertical development +Operational + + +3634 +020136 +Supplementary cloud type +3 +Numerous cumulus congestus of vertical development +Operational + + +3635 +020136 +Supplementary cloud type +4 +Isolated cumulonimbus of vertical development +Operational + + +3636 +020136 +Supplementary cloud type +5 +Numerous cumulonimbus of vertical development +Operational + + +3637 +020136 +Supplementary cloud type +6 +Isolated cumulus and cumulonimbus of vertical development +Operational + + +3638 +020136 +Supplementary cloud type +7 +Numerous cumulus and cumulonimbus of vertical development +Operational + + +3639 +020136 +Supplementary cloud type +8-9 +Reserved +Operational + + +3640 +020136 +Supplementary cloud type +10-19 Orographic clouds (C0 - Code table 0561) +Operational + + +3641 +020136 +Supplementary cloud type +10 +Reserved +Operational + + +3642 +020136 +Supplementary cloud type +11 +Isolated orographic clouds, pileus, incus, forming +Operational + + +3643 +020136 +Supplementary cloud type +12 +Isolated orographic clouds, pileus, incus, not changing +Operational + + +3644 +020136 +Supplementary cloud type +13 +Isolated orographic clouds, pileus, incus, dissolving +Operational + + +3645 +020136 +Supplementary cloud type +14 +Irregular banks of orographic cloud, föhn bank, etc., forming +Operational + + +3646 +020136 +Supplementary cloud type +15 +Irregular banks of orographic cloud, föhn bank, etc., not changing +Operational + + +3647 +020136 +Supplementary cloud type +16 +Irregular banks of orographic cloud, föhn bank, etc., dissolving +Operational + + +3648 +020136 +Supplementary cloud type +17 +Compact layer of orographic cloud, föhn bank, etc., forming +Operational + + +3649 +020136 +Supplementary cloud type +18 +Compact layer of orographic cloud, föhn bank, etc., not changing +Operational + + +3650 +020136 +Supplementary cloud type +19 +Compact layer of orographic cloud, föhn bank, etc., dissolving +Operational + + +3651 +020136 +Supplementary cloud type +20-29 Cloud conditions over mountains and passes (Nm - Code table 2745) +Operational + + +3652 +020136 +Supplementary cloud type +20 +All mountains open, only small amounts of cloud present +Operational + + +3653 +020136 +Supplementary cloud type +21 +Mountains partly covered with detached clouds (not more than half the peaks can be seen) +Operational + + +3654 +020136 +Supplementary cloud type +22 +All mountain slopes covered, peaks and passes free +Operational + + +3655 +020136 +Supplementary cloud type +23 +Mountains open on observer’s side (only small amounts of cloud present), but a continuous wall of cloud on the other side +Operational + + +3656 +020136 +Supplementary cloud type +24 +Clouds low above the mountains, but all slopes and mountains open (only small amounts of cloud on the slopes) +Operational + + +3657 +020136 +Supplementary cloud type +25 +Clouds low above the mountains, peaks partly covered by precipitation trails or clouds +Operational + + +3658 +020136 +Supplementary cloud type +26 +All peaks covered but passes open, slopes either open or covered +Operational + + +3659 +020136 +Supplementary cloud type +27 +Mountains generally covered but some peaks free, slopes wholly or partially covered +Operational + + +3660 +020136 +Supplementary cloud type +28 +All peaks, passes and slopes covered +Operational + + +3661 +020136 +Supplementary cloud type +29 +Mountains cannot be seen owing to darkness, fog, snowstorm, precipitation, etc. +Operational + + +3662 +020136 +Supplementary cloud type +30-34 +Reserved +Operational + + +3663 +020136 +Supplementary cloud type +35-39 Condensation trails (Nt - Code table 2752) +Operational + + +3664 +020136 +Supplementary cloud type +35 +Non-persistent condensation trails +Operational + + +3665 +020136 +Supplementary cloud type +36 +Persistent condensation trails covering less than 1/8 of the sky +Operational + + +3666 +020136 +Supplementary cloud type +37 +Persistent condensation trails covering 1/8 of the sky +Operational + + +3667 +020136 +Supplementary cloud type +38 +Persistent condensation trails covering 2/8 of the sky +Operational + + +3668 +020136 +Supplementary cloud type +39 +Persistent condensation trails covering 3/8 or more of the sky +Operational + + +3669 +020136 +Supplementary cloud type +40-49 Cloud conditions observed from a higher level (Nv - Code table 2754) +Operational + + +3670 +020136 +Supplementary cloud type +40 +No cloud or mist observed from a higher level +Operational + + +3671 +020136 +Supplementary cloud type +41 +Mist, clear above observed from a higher level +Operational + + +3672 +020136 +Supplementary cloud type +42 +Fog patches observed from a higher level +Operational + + +3673 +020136 +Supplementary cloud type +43 +Layer of slight fog observed from a higher level +Operational + + +3674 +020136 +Supplementary cloud type +44 +Layer of thick fog observed from a higher level +Operational + + +3675 +020136 +Supplementary cloud type +45 +Some isolated clouds observed from a higher level +Operational + + +3676 +020136 +Supplementary cloud type +46 +Isolated clouds and fog below observed from a higher level +Operational + + +3677 +020136 +Supplementary cloud type +47 +Many isolated clouds observed from a higher level +Operational + + +3678 +020136 +Supplementary cloud type +48 +Sea of clouds observed from a higher level +Operational + + +3679 +020136 +Supplementary cloud type +49 +Bad visibility obscuring the downward view observed from a higher level +Operational + + +3680 +020136 +Supplementary cloud type +50-510 +Reserved +Operational + + +3681 +020136 +Supplementary cloud type +511 +Missing value +Operational + + +3682 +020137 +Evolution of clouds +0 +No change +Operational + + +3683 +020137 +Evolution of clouds +1 +Cumulification +Operational + + +3684 +020137 +Evolution of clouds +2 +Slow elevation +Operational + + +3685 +020137 +Evolution of clouds +3 +Rapid elevation +Operational + + +3686 +020137 +Evolution of clouds +4 +Elevation and stratification +Operational + + +3687 +020137 +Evolution of clouds +5 +Slow lowering +Operational + + +3688 +020137 +Evolution of clouds +6 +Rapid lowering +Operational + + +3689 +020137 +Evolution of clouds +7 +Stratification +Operational + + +3690 +020137 +Evolution of clouds +8 +Stratification and lowering +Operational + + +3691 +020137 +Evolution of clouds +9 +Rapid change +Operational + + +3692 +020137 +Evolution of clouds +10-14 +Reserved +Operational + + +3693 +020137 +Evolution of clouds +15 +Missing value +Operational + + +3694 +020138 +Road surface condition +0 + Dry +Operational + + +3695 +020138 +Road surface condition +1 + Moist +Operational + + +3696 +020138 +Road surface condition +2 + Wet +Operational + + +3697 +020138 +Road surface condition +3 + Rime +Operational + + +3698 +020138 +Road surface condition +4 + Snow +Operational + + +3699 +020138 +Road surface condition +5 + Ice +Operational + + +3700 +020138 +Road surface condition +6 + Glaze +Operational + + +3701 +020138 +Road surface condition +7 + Not dry +Operational + + +3702 +020138 +Road surface condition +8-14 + Reserved +Operational + + +3703 +020138 +Road surface condition +15 + Missing value +Operational + + +3704 +021066 +Wave scatterometer product confidence data +1 +Processing equipment not working +Operational + + +3705 +021066 +Wave scatterometer product confidence data +2 +Equipment failed +Operational + + +3706 +021066 +Wave scatterometer product confidence data +3 +PRF code changed during image generation +Operational + + +3707 +021066 +Wave scatterometer product confidence data +4 +Sampling window changed during image generation +Operational + + +3708 +021066 +Wave scatterometer product confidence data +5 +Gain changed during image generation +Operational + + +3709 +021066 +Wave scatterometer product confidence data +6 +Chirp replica exceeds specified value +Operational + + +3710 +021066 +Wave scatterometer product confidence data +7 +Input data mean and standard deviation of in-phase and quadrature out of range +Operational + + +3711 +021066 +Wave scatterometer product confidence data +8 +Doppler centroid confidence > MMCC value +Operational + + +3712 +021066 +Wave scatterometer product confidence data +9 +Doppler centroid absolute value > PRF/2 +Operational + + +3713 +021066 +Wave scatterometer product confidence data +10 +Doppler ambiguity confidence < MMCC value +Operational + + +3714 +021066 +Wave scatterometer product confidence data +11 +Output data mean and standard deviation =< MMCC value +Operational + + +3715 +021066 +Wave scatterometer product confidence data +All 12 +Missing value +Operational + + +3716 +021067 +Wind product confidence data +1 +No forebeam calculation +Operational + + +3717 +021067 +Wind product confidence data +2 +No midbeam calculation +Operational + + +3718 +021067 +Wind product confidence data +3 +No aftbeam calculation +Operational + + +3719 +021067 +Wind product confidence data +4 +Forebeam arcing detected +Operational + + +3720 +021067 +Wind product confidence data +5 +Midbeam arcing detected +Operational + + +3721 +021067 +Wind product confidence data +6 +Aftbeam arcing detected +Operational + + +3722 +021067 +Wind product confidence data +7 +Any beam noise content above or equal to threshold +Operational + + +3723 +021067 +Wind product confidence data +8 +Land (any land in cell footprint) +Operational + + +3724 +021067 +Wind product confidence data +9 +Autonomous ambiguity removal not used +Operational + + +3725 +021067 +Wind product confidence data +10 +Meteorological background not used +Operational + + +3726 +021067 +Wind product confidence data +11 +Minimum residual exceeded threshold +Operational + + +3727 +021067 +Wind product confidence data +12 +Frame checksum error detected +Operational + + +3728 +021067 +Wind product confidence data +All 13 +Missing value +Operational + + +3729 +021068 +Radar altimeter product confidence data +1 +Standard deviation of wind speed outside MMCC limit +Operational + + +3730 +021068 +Radar altimeter product confidence data +2 +Standard deviation of significant wave height outside MMCC limit +Operational + + +3731 +021068 +Radar altimeter product confidence data +3 +Standard deviation of altitude outside MMCC limit +Operational + + +3732 +021068 +Radar altimeter product confidence data +4 +Mean peakiness outside MMCC limit +Operational + + +3733 +021068 +Radar altimeter product confidence data +5 +Frame checksum error detected +Operational + + +3734 +021068 +Radar altimeter product confidence data +6 +Height-time loop time constant correction not performed +Operational + + +3735 +021068 +Radar altimeter product confidence data +7 +Not enough measurements (N < 10) +Operational + + +3736 +021068 +Radar altimeter product confidence data +All 8 +Missing value +Operational + + +3737 +021069 +SST product confidence data +1 +12.0 µm channel present in source data +Operational + + +3738 +021069 +SST product confidence data +2 +11.0 µm channel present in source data +Operational + + +3739 +021069 +SST product confidence data +3 +3.7 µm channel present in source data +Operational + + +3740 +021069 +SST product confidence data +4 +1.6 µm channel present in source data +Operational + + +3741 +021069 +SST product confidence data +5 +Cloud identification used 1.6 µm histogram reflectance cloud test +Operational + + +3742 +021069 +SST product confidence data +6 +1.6 µm histogram reflectance cloud test used dynamic threshold +Operational + + +3743 +021069 +SST product confidence data +7 +Sun glint detected by 1.6 µm reflectance cloud test +Operational + + +3744 +021069 +SST product confidence data +8 +3.7 µm channel used in sea-surface temperature retrieval +Operational + + +3745 +021069 +SST product confidence data +9 +Sea-surface temperature derivation used daytime data (night-time if zero) +Operational + + +3746 +021069 +SST product confidence data +All 10 +Missing value +Operational + + +3747 +021070 +SST product confidence data (SADIST-2) +1-9 Nadir-only view SST retrieval used 3.7 micron channel (one bit per 10-arcmin cell) +Operational + + +3748 +021070 +SST product confidence data (SADIST-2) +1 +Cell 1: nadir-only view SST used 3.7 micron channel +Operational + + +3749 +021070 +SST product confidence data (SADIST-2) +2 +Cell 2: nadir-only view SST used 3.7 micron channel +Operational + + +3750 +021070 +SST product confidence data (SADIST-2) +3 +Cell 3: nadir-only view SST used 3.7 micron channel +Operational + + +3751 +021070 +SST product confidence data (SADIST-2) +4 +Cell 4: nadir-only view SST used 3.7 micron channel +Operational + + +3752 +021070 +SST product confidence data (SADIST-2) +5 +Cell 5: nadir-only view SST used 3.7 micron channel +Operational + + +3753 +021070 +SST product confidence data (SADIST-2) +6 +Cell 6: nadir-only view SST used 3.7 micron channel +Operational + + +3754 +021070 +SST product confidence data (SADIST-2) +7 +Cell 7: nadir-only view SST used 3.7 micron channel +Operational + + +3755 +021070 +SST product confidence data (SADIST-2) +8 +Cell 8: nadir-only view SST used 3.7 micron channel +Operational + + +3756 +021070 +SST product confidence data (SADIST-2) +9 +Cell 9: nadir-only view SST used 3.7 micron channel +Operational + + +3757 +021070 +SST product confidence data (SADIST-2) +10-18 Dual view SST retrieval used 3.7 micron channel (one bit per 10-arcmin cell) +Operational + + +3758 +021070 +SST product confidence data (SADIST-2) +10 +Cell 1: dual view SST used 3.7 micron channel +Operational + + +3759 +021070 +SST product confidence data (SADIST-2) +11 +Cell 2: dual view SST used 3.7 micron channel +Operational + + +3760 +021070 +SST product confidence data (SADIST-2) +12 +Cell 3: dual view SST used 3.7 micron channel +Operational + + +3761 +021070 +SST product confidence data (SADIST-2) +13 +Cell 4: dual view SST used 3.7 micron channel +Operational + + +3762 +021070 +SST product confidence data (SADIST-2) +14 +Cell 5: dual view SST used 3.7 micron channel +Operational + + +3763 +021070 +SST product confidence data (SADIST-2) +15 +Cell 6: dual view SST used 3.7 micron channel +Operational + + +3764 +021070 +SST product confidence data (SADIST-2) +16 +Cell 7: dual view SST used 3.7 micron channel +Operational + + +3765 +021070 +SST product confidence data (SADIST-2) +17 +Cell 8: dual view SST used 3.7 micron channel +Operational + + +3766 +021070 +SST product confidence data (SADIST-2) +18 +Cell 9: dual view SST used 3.7 micron channel +Operational + + +3767 +021070 +SST product confidence data (SADIST-2) +19 +Nadir view contains day-time data (night if zero) +Operational + + +3768 +021070 +SST product confidence data (SADIST-2) +20 +Forward view contains day-time data (night if zero) +Operational + + +3769 +021070 +SST product confidence data (SADIST-2) +21 +Record contains contributions from instrument scans acquired when ERS platform not in yaw-steering mode +Operational + + +3770 +021070 +SST product confidence data (SADIST-2) +22 +Record contains contributions from instrument scans for which product confidence data show quality is poor or unknown +Operational + + +3771 +021070 +SST product confidence data (SADIST-2) +All 23 +Missing value +Operational + + +3772 +021072 +Satellite altimeter calibration status +1 +Height error correction applied instead of open loop calibration +Operational + + +3773 +021072 +Satellite altimeter calibration status +2 +Microwave sounder used for troposphere correction +Operational + + +3774 +021072 +Satellite altimeter calibration status +3 +AGC output correction applied instead of open loop calibration +Operational + + +3775 +021072 +Satellite altimeter calibration status +All 4 +Missing value +Operational + + +3776 +021073 +Satellite altimeter instrument mode +1 +Blank data record +Operational + + +3777 +021073 +Satellite altimeter instrument mode +2 +Test +Operational + + +3778 +021073 +Satellite altimeter instrument mode +3 +Calibration (closed loop) +Operational + + +3779 +021073 +Satellite altimeter instrument mode +4 +BITE +Operational + + +3780 +021073 +Satellite altimeter instrument mode +5 +Acquisition on ice +Operational + + +3781 +021073 +Satellite altimeter instrument mode +6 +Acquisition on ocean +Operational + + +3782 +021073 +Satellite altimeter instrument mode +7 +Tracking on ice +Operational + + +3783 +021073 +Satellite altimeter instrument mode +8 +Tracking on ocean +Operational + + +3784 +021073 +Satellite altimeter instrument mode +All 9 +Missing value +Operational + + +3785 +021076 +Representation of intensities +0 +Linear +Operational + + +3786 +021076 +Representation of intensities +1 +Logarithmic (base e) +Operational + + +3787 +021076 +Representation of intensities +2 +Logarithmic (base 10) +Operational + + +3788 +021076 +Representation of intensities +3-6 +Reserved +Operational + + +3789 +021076 +Representation of intensities +7 +Missing value +Operational + + +3790 +021109 +SEAWINDS wind vector cell quality +1 +Not enough good sigma-0 available for wind retrieval +Operational + + +3791 +021109 +SEAWINDS wind vector cell quality +2 +Poor azimuth diversity among sigma-0 for wind retrieval +Operational + + +3792 +021109 +SEAWINDS wind vector cell quality +3-7 +Reserved +Operational + + +3793 +021109 +SEAWINDS wind vector cell quality +8 +Some portion of wind vector cell is over land +Operational + + +3794 +021109 +SEAWINDS wind vector cell quality +9 +Some portion of wind vector cell is over ice +Operational + + +3795 +021109 +SEAWINDS wind vector cell quality +10 +Wind retrieval not performed for wind vector cell +Operational + + +3796 +021109 +SEAWINDS wind vector cell quality +11 +Reported wind speed is greater than 30 m s-1 +Operational + + +3797 +021109 +SEAWINDS wind vector cell quality +12 +Reported wind speed is less than or equal to 3 m s-1 +Operational + + +3798 +021109 +SEAWINDS wind vector cell quality +13-16 +Reserved +Operational + + +3799 +021109 +SEAWINDS wind vector cell quality +All 17 +Missing value +Operational + + +3800 +021115 +SEAWINDS sigma-0 quality +1 +Sigma-0 measurement is not usable +Operational + + +3801 +021115 +SEAWINDS sigma-0 quality +2 +Signal to noise ratio is low +Operational + + +3802 +021115 +SEAWINDS sigma-0 quality +3 +Sigma-0 is negative +Operational + + +3803 +021115 +SEAWINDS sigma-0 quality +4 +Sigma-0 is outside of acceptable range +Operational + + +3804 +021115 +SEAWINDS sigma-0 quality +5 +Scatterometer pulse quality is not acceptable +Operational + + +3805 +021115 +SEAWINDS sigma-0 quality +6 +Sigma-0 cell location algorithm does not converge +Operational + + +3806 +021115 +SEAWINDS sigma-0 quality +7 +Frequency shift lies beyond the range of the x factor table +Operational + + +3807 +021115 +SEAWINDS sigma-0 quality +8 +Spacecraft temperature is beyond calibration coefficient range +Operational + + +3808 +021115 +SEAWINDS sigma-0 quality +9 +No applicable altitude records were found for this sigma-0 +Operational + + +3809 +021115 +SEAWINDS sigma-0 quality +10 +Interpolated ephemeris data are not acceptable for this sigma-0 +Operational + + +3810 +021115 +SEAWINDS sigma-0 quality +11-16 +Reserved +Operational + + +3811 +021115 +SEAWINDS sigma-0 quality +All 17 +Missing value +Operational + + +3812 +021116 +SEAWINDS sigma-0 mode +1 +Calibration/measurement pulse flag (1) +Operational + + +3813 +021116 +SEAWINDS sigma-0 mode +2 +Calibration/measurement pulse flag (2) +Operational + + +3814 +021116 +SEAWINDS sigma-0 mode +3 +Outer antenna beam +Operational + + +3815 +021116 +SEAWINDS sigma-0 mode +4 +Sigma-0 cell is aft of spacecraft +Operational + + +3816 +021116 +SEAWINDS sigma-0 mode +5 +Current mode (1) +Operational + + +3817 +021116 +SEAWINDS sigma-0 mode +6 +Current mode (2) +Operational + + +3818 +021116 +SEAWINDS sigma-0 mode +7 +Effective gate width - slice resolution (1) +Operational + + +3819 +021116 +SEAWINDS sigma-0 mode +8 +Effective gate width - slice resolution (2) +Operational + + +3820 +021116 +SEAWINDS sigma-0 mode +9 +Effective gate width - slice resolution (3) +Operational + + +3821 +021116 +SEAWINDS sigma-0 mode +10 +Low resolution mode - whole pulse data +Operational + + +3822 +021116 +SEAWINDS sigma-0 mode +11 +Scatterometer electronic subsystem B +Operational + + +3823 +021116 +SEAWINDS sigma-0 mode +12 +Alternate spin rate - 19.8 rpm +Operational + + +3824 +021116 +SEAWINDS sigma-0 mode +13 +Receiver protection on +Operational + + +3825 +021116 +SEAWINDS sigma-0 mode +14 +Slices per composite flag (1) +Operational + + +3826 +021116 +SEAWINDS sigma-0 mode +15 +Slices per composite flag (2) +Operational + + +3827 +021116 +SEAWINDS sigma-0 mode +16 +Slices per composite flag (3) +Operational + + +3828 +021116 +SEAWINDS sigma-0 mode +All 17 +Missing value +Operational + + +3829 +021119 +Wind scatterometer geophysical model function +0 +Reserved +Operational + + +3830 +021119 +Wind scatterometer geophysical model function +1 +SASS +Operational + + +3831 +021119 +Wind scatterometer geophysical model function +2 +SASS2 +Operational + + +3832 +021119 +Wind scatterometer geophysical model function +3 +NSCAT0 +Operational + + +3833 +021119 +Wind scatterometer geophysical model function +4 +NSCAT1 +Operational + + +3834 +021119 +Wind scatterometer geophysical model function +5 +NSCAT2 +Operational + + +3835 +021119 +Wind scatterometer geophysical model function +6 +QSCAT0 +Operational + + +3836 +021119 +Wind scatterometer geophysical model function +7 +QSCAT1 +Operational + + +3837 +021119 +Wind scatterometer geophysical model function +8-30 +Reserved +Operational + + +3838 +021119 +Wind scatterometer geophysical model function +31 +CMOD1 +Operational + + +3839 +021119 +Wind scatterometer geophysical model function +32 +CMOD2 +Operational + + +3840 +021119 +Wind scatterometer geophysical model function +33 +CMOD3 +Operational + + +3841 +021119 +Wind scatterometer geophysical model function +34 +CMOD4 +Operational + + +3842 +021119 +Wind scatterometer geophysical model function +35 +CMOD5 +Operational + + +3843 +021119 +Wind scatterometer geophysical model function +36-62 +Reserved +Operational + + +3844 +021119 +Wind scatterometer geophysical model function +63 +Missing value +Operational + + +3845 +021144 +Altimeter rain flag +1 +Rain +Operational + + +3846 +021144 +Altimeter rain flag +All 2 +Missing value +Operational + + +3847 +021148 +Trailing edge variation flag +1 +Non short scale variation +Operational + + +3848 +021148 +Trailing edge variation flag +2 +Short scale variation +Operational + + +3849 +021148 +Trailing edge variation flag +3-8 +Reserved +Operational + + +3850 +021148 +Trailing edge variation flag +All 9 +Missing value +Operational + + +3851 +021150 +Beam co-location +0 +Data from single ground station (no co-location) +Operational + + +3852 +021150 +Beam co-location +1 +Data from multiple ground station (co-located data) +Operational + + +3853 +021150 +Beam co-location +2 +Reserved +Operational + + +3854 +021150 +Beam co-location +3 +Missing value +Operational + + +3855 +021155 +Wind vector cell quality +1 +Not enough good sigma-0 available for wind retrieval +Operational + + +3856 +021155 +Wind vector cell quality +2 +Poor azimuth diversity among sigma-0 for wind retrieval +Operational + + +3857 +021155 +Wind vector cell quality +3 +Any beam noise content above threshold +Operational + + +3858 +021155 +Wind vector cell quality +4 +Product monitoring not used +Operational + + +3859 +021155 +Wind vector cell quality +5 +Product monitoring flag +Operational + + +3860 +021155 +Wind vector cell quality +6 +KNMI quality control fails +Operational + + +3861 +021155 +Wind vector cell quality +7 +Variational quality control fails +Operational + + +3862 +021155 +Wind vector cell quality +8 +Some portion of wind vector cell is over land +Operational + + +3863 +021155 +Wind vector cell quality +9 +Some portion of wind vector cell is over ice +Operational + + +3864 +021155 +Wind vector cell quality +10 +Wind retrieval not performed for wind vector cell +Operational + + +3865 +021155 +Wind vector cell quality +11 +Reported wind speed is greater than 30 m/s +Operational + + +3866 +021155 +Wind vector cell quality +12 +Reported wind speed is less than or equal to 3 m/s +Operational + + +3867 +021155 +Wind vector cell quality +13 +Rain flag for the wind vector cell is not usable +Operational + + +3868 +021155 +Wind vector cell quality +14 +Rain flag algorithm detects rain +Operational + + +3869 +021155 +Wind vector cell quality +15 +No meteorological background used +Operational + + +3870 +021155 +Wind vector cell quality +16 +Data are redundant +Operational + + +3871 +021155 +Wind vector cell quality +17-23 +Reserved +Operational + + +3872 +021155 +Wind vector cell quality +All 24 +Missing value +Operational + + +3873 +021158 +ASCAT Kp estimate quality +0 +Acceptable +Operational + + +3874 +021158 +ASCAT Kp estimate quality +1 +Not acceptable +Operational + + +3875 +021158 +ASCAT Kp estimate quality +2 +Reserved +Operational + + +3876 +021158 +ASCAT Kp estimate quality +3 +Missing value +Operational + + +3877 +021159 +ASCAT sigma-0 usability +0 +Good +Operational + + +3878 +021159 +ASCAT sigma-0 usability +1 +Usable +Operational + + +3879 +021159 +ASCAT sigma-0 usability +2 +Bad +Operational + + +3880 +021159 +ASCAT sigma-0 usability +3 +Missing value +Operational + + +3881 +021169 +Ice presence indicator +0 +No ice present +Operational + + +3882 +021169 +Ice presence indicator +1 +Ice present +Operational + + +3883 +021169 +Ice presence indicator +2 +Reserved +Operational + + +3884 +021169 +Ice presence indicator +3 +Missing value +Operational + + +3885 +022056 +Direction of profile +0 +Upwards profile +Operational + + +3886 +022056 +Direction of profile +1 +Downwards profile +Operational + + +3887 +022056 +Direction of profile +2 +Horizontal +Operational + + +3888 +022056 +Direction of profile +3 +Missing value +Operational + + +3889 +022060 +Lagrangian drifter drogue status +0 +Drogue is detached +Operational + + +3890 +022060 +Lagrangian drifter drogue status +1 +Drogue is attached +Operational + + +3891 +022060 +Lagrangian drifter drogue status +2 +Drogue status unknown +Operational + + +3892 +022060 +Lagrangian drifter drogue status +3-6 +Reserved +Operational + + +3893 +022060 +Lagrangian drifter drogue status +7 +Missing value +Operational + + +3894 +022061 +State of the sea +0 +Calm (glassy) +0 +Operational + + +3895 +022061 +State of the sea +1 +Calm (rippled) +0 - 0.1 +Operational + + +3896 +022061 +State of the sea +2 +Smooth (wavelets) +0.1 - 0.5 +Operational + + +3897 +022061 +State of the sea +3 +Slight +0.5 - 1.25 +Operational + + +3898 +022061 +State of the sea +4 +Moderate +1.25 - 2.5 +Operational + + +3899 +022061 +State of the sea +5 +Rough +2.5 - 4 +Operational + + +3900 +022061 +State of the sea +6 +Very rough +4 - 6 +Operational + + +3901 +022061 +State of the sea +7 +High +6 - 9 +Operational + + +3902 +022061 +State of the sea +8 +Very high +9 - 14 +Operational + + +3903 +022061 +State of the sea +9 +Phenomenal +Over 14 +Operational + + +3904 +022061 +State of the sea +10-14 +Reserved +Operational + + +3905 +022061 +State of the sea +15 +Missing value +Operational + + +3906 +022067 +Instrument type for water temperature/salinity profile measurement +Operational + + +3907 +022068 +Water temperature profile recorder types +Operational + + +3908 +022120 +Tide station automated water level check +0 +Good data +Operational + + +3909 +022120 +Tide station automated water level check +1 +Maximum (high) water level limit exceeded +Operational + + +3910 +022120 +Tide station automated water level check +2 +Minimum (low) water level limit exceeded +Operational + + +3911 +022120 +Tide station automated water level check +3 +Rate of change limit for water level exceeded +Operational + + +3912 +022120 +Tide station automated water level check +4 +Flat limit for water level exceeded +Operational + + +3913 +022120 +Tide station automated water level check +5 +Observed minus predicted water level value limit exceeded +Operational + + +3914 +022120 +Tide station automated water level check +6 +Observed value from primary water level sensor minus backup water level sensor +Operational + + +3915 +022120 +Tide station automated water level check +7 +Value exceeded specified tolerance from expected value +Operational + + +3916 +022120 +Tide station automated water level check +8 +Water level QA parameter (sigmas and/or outliers) limits exceeded +Operational + + +3917 +022120 +Tide station automated water level check +9 +Sea temperature outside of expected range +Operational + + +3918 +022120 +Tide station automated water level check +10 +Multiple QC checks (above) failed +Operational + + +3919 +022120 +Tide station automated water level check +11 +No automated water level checks performed +Operational + + +3920 +022120 +Tide station automated water level check +12-30 +Reserved +Operational + + +3921 +022120 +Tide station automated water level check +31 +Missing value +Operational + + +3922 +022121 +Tide station manual water level check +0 +Operational +Operational + + +3923 +022121 +Tide station manual water level check +1 +Possible clogging problem or otherwise degraded water level data +Operational + + +3924 +022121 +Tide station manual water level check +2 +Possible datum shift +Operational + + +3925 +022121 +Tide station manual water level check +3 +Unknown status of water level sensor +Operational + + +3926 +022121 +Tide station manual water level check +4 +Suspected or known sea temperature sensor problem +Operational + + +3927 +022121 +Tide station manual water level check +5 +Multiple possible problems (above) +Operational + + +3928 +022121 +Tide station manual water level check +6 +Bad data - DO NOT DISSEMINATE! +Operational + + +3929 +022121 +Tide station manual water level check +7 +No manual water level checks performed +Operational + + +3930 +022121 +Tide station manual water level check +8-30 +Reserved +Operational + + +3931 +022121 +Tide station manual water level check +31 +Missing value +Operational + + +3932 +022122 +Tide station automated meteorological data check +0 +Good data from all sensors +Operational + + +3933 +022122 +Tide station automated meteorological data check +1 +Wind direction outside of allowable range +Operational + + +3934 +022122 +Tide station automated meteorological data check +2 +Wind speed outside of expected range +Operational + + +3935 +022122 +Tide station automated meteorological data check +3 +Barometric pressure outside of expected range +Operational + + +3936 +022122 +Tide station automated meteorological data check +4 +Air temperature outside of expected range +Operational + + +3937 +022122 +Tide station automated meteorological data check +5 +Multiple sensors failed QC checks +Operational + + +3938 +022122 +Tide station automated meteorological data check +6 +No automated meteorological data checks performed +Operational + + +3939 +022122 +Tide station automated meteorological data check +7-30 +Reserved +Operational + + +3940 +022122 +Tide station automated meteorological data check +31 +Missing value +Operational + + +3941 +022123 +Tide station manual meteorological data check +0 +Operational +Operational + + +3942 +022123 +Tide station manual meteorological data check +1 +Suspected or known problem with wind sensor +Operational + + +3943 +022123 +Tide station manual meteorological data check +2 +Suspected or known problem with barometric pressure sensor +Operational + + +3944 +022123 +Tide station manual meteorological data check +3 +Suspected or known problem with air temperature sensor +Operational + + +3945 +022123 +Tide station manual meteorological data check +4 +Unknown status of all sensors +Operational + + +3946 +022123 +Tide station manual meteorological data check +5 +Suspected or known problems with multiple sensors +Operational + + +3947 +022123 +Tide station manual meteorological data check +6 +Bad data - DO NOT DISSEMINATE! +Operational + + +3948 +022123 +Tide station manual meteorological data check +7 +No manual meteorological data checks performed +Operational + + +3949 +022123 +Tide station manual meteorological data check +8-30 +Reserved +Operational + + +3950 +022123 +Tide station manual meteorological data check +31 +Missing value +Operational + + +3951 +022178 +XBT/XCTD launcher type +0 +Unknown +Operational + + +3952 +022178 +XBT/XCTD launcher type +1 +LM-2A Deck-mounted +Operational + + +3953 +022178 +XBT/XCTD launcher type +2 +LM-3A Hand-Held +Operational + + +3954 +022178 +XBT/XCTD launcher type +3 +LM-4A Thru-Hull +Operational + + +3955 +022178 +XBT/XCTD launcher type +4-9 +Reserved +Operational + + +3956 +022178 +XBT/XCTD launcher type +10 +AL-12 TSK Autolauncher (up to 12 probes) +Operational + + +3957 +022178 +XBT/XCTD launcher type +11-19 +Reserved +Operational + + +3958 +022178 +XBT/XCTD launcher type +20 +SIO XBT Autolauncher (up to 6 probes) +Operational + + +3959 +022178 +XBT/XCTD launcher type +21-29 +Reserved +Operational + + +3960 +022178 +XBT/XCTD launcher type +30 +AOML XBT V6 Autolauncher (up to 6 Deep Blue probes) +Operational + + +3961 +022178 +XBT/XCTD launcher type +31 +AOML XBT V8.0 Autolauncher (up to 8 Deep Blue probes) +Operational + + +3962 +022178 +XBT/XCTD launcher type +32 +AOML XBT V8.1 Autolauncher (up to 8 Deep Blue and Fast Deep probes) +Operational + + +3963 +022178 +XBT/XCTD launcher type +33-89 +Reserved +Operational + + +3964 +022178 +XBT/XCTD launcher type +90 +CSIRO Devil Autolauncher +Operational + + +3965 +022178 +XBT/XCTD launcher type +91-99 +Reserved +Operational + + +3966 +022178 +XBT/XCTD launcher type +100 +MFSTEP Autolauncher (Mediterranean) +Operational + + +3967 +022178 +XBT/XCTD launcher type +101-254 +Reserved +Operational + + +3968 +022178 +XBT/XCTD launcher type +255 +Missing value +Operational + + +3969 +023001 +Accident early notification - article applicable +0 +Reserved +Operational + + +3970 +023001 +Accident early notification - article applicable +1 +Articles 1 and 2 +Operational + + +3971 +023001 +Accident early notification - article applicable +2 +Article 3 +Operational + + +3972 +023001 +Accident early notification - article applicable +3 +Article 5.2 +Operational + + +3973 +023001 +Accident early notification - article applicable +4-6 +Reserved +Operational + + +3974 +023001 +Accident early notification - article applicable +7 +Missing value +Operational + + +3975 +023002 +Activity or facility involved in incident +0 +Reserved +Operational + + +3976 +023002 +Activity or facility involved in incident +1 +Nuclear reactor on ground +Operational + + +3977 +023002 +Activity or facility involved in incident +2 +Nuclear reactor at sea +Operational + + +3978 +023002 +Activity or facility involved in incident +3 +Nuclear reactor in space +Operational + + +3979 +023002 +Activity or facility involved in incident +4 +Nuclear fuel facility +Operational + + +3980 +023002 +Activity or facility involved in incident +5 +Radioactive waste management facility +Operational + + +3981 +023002 +Activity or facility involved in incident +6 +Transport of nuclear fuel or radioactive waste +Operational + + +3982 +023002 +Activity or facility involved in incident +7 +Storage of nuclear fuel or radioactive waste +Operational + + +3983 +023002 +Activity or facility involved in incident +8 +Manufacture of radio-isotopes +Operational + + +3984 +023002 +Activity or facility involved in incident +9 +Use of radio-isotopes +Operational + + +3985 +023002 +Activity or facility involved in incident +10 +Storage of radio-isotopes +Operational + + +3986 +023002 +Activity or facility involved in incident +11 +Disposal of radio-isotopes +Operational + + +3987 +023002 +Activity or facility involved in incident +12 +Transport of radio-isotopes +Operational + + +3988 +023002 +Activity or facility involved in incident +13 +Use of radio-isotopes for power generation +Operational + + +3989 +023002 +Activity or facility involved in incident +14-29 +Reserved +Operational + + +3990 +023002 +Activity or facility involved in incident +30 +Other +Operational + + +3991 +023002 +Activity or facility involved in incident +31 +Missing value +Operational + + +3992 +023003 +Type of release +0 +No release +Operational + + +3993 +023003 +Type of release +1 +Release to atmosphere +Operational + + +3994 +023003 +Type of release +2 +Release to water +Operational + + +3995 +023003 +Type of release +3 +Release to both atmosphere and water +Operational + + +3996 +023003 +Type of release +4 +Expected release to atmosphere +Operational + + +3997 +023003 +Type of release +5 +Expected release to water +Operational + + +3998 +023003 +Type of release +6 +Expected release to both atmosphere and water +Operational + + +3999 +023003 +Type of release +7 +Missing value +Operational + + +4000 +023004 +Countermeasures taken near border +0 +No countermeasures +Operational + + +4001 +023004 +Countermeasures taken near border +1 +Evacuation +Operational + + +4002 +023004 +Countermeasures taken near border +2 +Sheltering +Operational + + +4003 +023004 +Countermeasures taken near border +3 +Prophylaxis +Operational + + +4004 +023004 +Countermeasures taken near border +4 +Water +Operational + + +4005 +023004 +Countermeasures taken near border +5-6 +Reserved +Operational + + +4006 +023004 +Countermeasures taken near border +7 +Missing value +Operational + + +4007 +023005 +Cause of incident +0 +Incident State does not understand what happened +Operational + + +4008 +023005 +Cause of incident +1 +Incident State knows the cause of the incident +Operational + + +4009 +023005 +Cause of incident +2 +Reserved +Operational + + +4010 +023005 +Cause of incident +3 +Missing value +Operational + + +4011 +023006 +Incident situation +0 +No improvement +Operational + + +4012 +023006 +Incident situation +1 +Unstable +Operational + + +4013 +023006 +Incident situation +2 +No deterioration +Operational + + +4014 +023006 +Incident situation +3 +Improving +Operational + + +4015 +023006 +Incident situation +4 +Stable +Operational + + +4016 +023006 +Incident situation +5 +Deteriorating +Operational + + +4017 +023006 +Incident situation +6 +Reserved +Operational + + +4018 +023006 +Incident situation +7 +Missing value +Operational + + +4019 +023007 +Characteristics of release +0 +No release +Operational + + +4020 +023007 +Characteristics of release +1 +Release has stopped +Operational + + +4021 +023007 +Characteristics of release +2 +Release +Operational + + +4022 +023007 +Characteristics of release +3 +Release is continuing +Operational + + +4023 +023007 +Characteristics of release +4-6 +Reserved +Operational + + +4024 +023007 +Characteristics of release +7 +Missing value +Operational + + +4025 +023008 +State of current release +0 +Gaseous +Operational + + +4026 +023008 +State of current release +1 +Particulate +Operational + + +4027 +023008 +State of current release +2 +Mixture of gaseous and particulate +Operational + + +4028 +023008 +State of current release +3 +Missing value +Operational + + +4029 +023009 +State of expected release +0 +Gaseous +Operational + + +4030 +023009 +State of expected release +1 +Particulate +Operational + + +4031 +023009 +State of expected release +2 +Mixture of gaseous and particulate +Operational + + +4032 +023009 +State of expected release +3 +Missing value +Operational + + +4033 +023016 +Possibility of significant chemical toxic health effect +0 +No significant chemical toxic health effect +Operational + + +4034 +023016 +Possibility of significant chemical toxic health effect +1 +Significant chemical toxic health effect possible +Operational + + +4035 +023016 +Possibility of significant chemical toxic health effect +2 +Reserved +Operational + + +4036 +023016 +Possibility of significant chemical toxic health effect +3 +Missing value +Operational + + +4037 +023018 +Release behaviour over time +0 +Release no longer occurring +Operational + + +4038 +023018 +Release behaviour over time +1 +Release still occurring +Operational + + +4039 +023018 +Release behaviour over time +2 +Release expected to increase in next six hours +Operational + + +4040 +023018 +Release behaviour over time +3 +Release expected to remain constant in next six hours +Operational + + +4041 +023018 +Release behaviour over time +4 +Release expected to decrease in next six hours +Operational + + +4042 +023018 +Release behaviour over time +5-6 +Reserved +Operational + + +4043 +023018 +Release behaviour over time +7 +Missing value +Operational + + +4044 +023031 +Possibility that plume will encounter precipitation in State in which incident occurred +0 +Plume will not encounter rain in incident State +Operational + + +4045 +023031 +Possibility that plume will encounter precipitation in State in which incident occurred +1 +Plume will encounter rain in incident State +Operational + + +4046 +023031 +Possibility that plume will encounter precipitation in State in which incident occurred +2 +Reserved +Operational + + +4047 +023031 +Possibility that plume will encounter precipitation in State in which incident occurred +3 +Missing value +Operational + + +4048 +023032 +Plume will encounter change in wind direction and/or speed flag +0 +No significant change expected within the next six hours +Operational + + +4049 +023032 +Plume will encounter change in wind direction and/or speed flag +1 +Anticipated significant change expected within the next six hours +Operational + + +4050 +023032 +Plume will encounter change in wind direction and/or speed flag +2 +Reserved +Operational + + +4051 +023032 +Plume will encounter change in wind direction and/or speed flag +3 +Missing value +Operational + + +4052 +024003 +Composition of release +0 +Noble gases +Operational + + +4053 +024003 +Composition of release +1 +Iodines +Operational + + +4054 +024003 +Composition of release +2 +Caesiums +Operational + + +4055 +024003 +Composition of release +3 +Transuranics +Operational + + +4056 +024003 +Composition of release +4-30 +Reserved +Operational + + +4057 +024003 +Composition of release +31 +Missing value +Operational + + +4058 +025004 +Echo processing +0 +Incoherent +Operational + + +4059 +025004 +Echo processing +1 +Coherent (Doppler) +Operational + + +4060 +025004 +Echo processing +2 +Reserved +Operational + + +4061 +025004 +Echo processing +3 +Missing value +Operational + + +4062 +025005 +Echo integration +0 +Logarithm - 2.5 dB +Operational + + +4063 +025005 +Echo integration +1 +Linear +Operational + + +4064 +025005 +Echo integration +2 +Special +Operational + + +4065 +025005 +Echo integration +3 +Missing value +Operational + + +4066 +025006 +Z to R conversion +0 +ZH to R conversion +Operational + + +4067 +025006 +Z to R conversion +1 +(ZH, ZDR) to (NO, DO) to R +Operational + + +4068 +025006 +Z to R conversion +2 +(Z (F1), Z (F2)) to attenuation to R +Operational + + +4069 +025006 +Z to R conversion +3-5 +Reserved +Operational + + +4070 +025006 +Z to R conversion +6 +Other +Operational + + +4071 +025006 +Z to R conversion +7 +Missing value +Operational + + +4072 +025009 +Calibration method +1 +None +Deprecated + + +4073 +025009 +Calibration method +2 +Calibration target or signal +Deprecated + + +4074 +025009 +Calibration method +3 +Against raingauges +Deprecated + + +4075 +025009 +Calibration method +4 +Against other Instruments (disdrometer - attenuation) +Deprecated + + +4076 +025009 +Calibration method +All 4 +Missing value +Deprecated + + +4077 +025010 +Clutter treatment +0 +None +Operational + + +4078 +025010 +Clutter treatment +1 +Map +Operational + + +4079 +025010 +Clutter treatment +2 +Insertion of higher elevation data and map +Operational + + +4080 +025010 +Clutter treatment +3 +Analysis of the fluctuating logarithm signal (clutter detection) +Operational + + +4081 +025010 +Clutter treatment +4 +Extraction of the fluctuating part of linear signal (clutter suppression) +Operational + + +4082 +025010 +Clutter treatment +5 +Clutter suppression - Doppler +Operational + + +4083 +025010 +Clutter treatment +6 +Multiparameter analysis +Operational + + +4084 +025010 +Clutter treatment +7-14 +Reserved +Operational + + +4085 +025010 +Clutter treatment +15 +Missing value +Operational + + +4086 +025011 +Ground occultation correction (screening) +0 +None +Operational + + +4087 +025011 +Ground occultation correction (screening) +1 +Map of correction factors +Operational + + +4088 +025011 +Ground occultation correction (screening) +2 +Interpolation (azimuth or elevation) +Operational + + +4089 +025011 +Ground occultation correction (screening) +3 +Missing value +Operational + + +4090 +025012 +Range attenuation correction +0 +Hardware +Operational + + +4091 +025012 +Range attenuation correction +1 +Software +Operational + + +4092 +025012 +Range attenuation correction +2 +Hardware and software +Operational + + +4093 +025012 +Range attenuation correction +3 +Missing value +Operational + + +4094 +025013 +Bright-band correction +1 +Bright-band correction +Operational + + +4095 +025013 +Bright-band correction +All 2 +Missing value +Operational + + +4096 +025015 +Radome attenuation correction +1 +Radome attenuation correction +Operational + + +4097 +025015 +Radome attenuation correction +All 2 +Missing value +Operational + + +4098 +025017 +Precipitation attenuation correction +1 +Precipitation attenuation correction +Operational + + +4099 +025017 +Precipitation attenuation correction +All 2 +Missing value +Operational + + +4100 +025020 +Mean speed estimation +0 +FFT (fast Fourier transform) +Operational + + +4101 +025020 +Mean speed estimation +1 +PPP (pulse-pair processing) +Operational + + +4102 +025020 +Mean speed estimation +2 +VPC (vector-phase change) +Operational + + +4103 +025020 +Mean speed estimation +3 +Missing value +Operational + + +4104 +025021 +Wind computation enhancement +1 +Simple average +Operational + + +4105 +025021 +Wind computation enhancement +2 +Consensus average +Operational + + +4106 +025021 +Wind computation enhancement +3 +Median check +Operational + + +4107 +025021 +Wind computation enhancement +4 +Vertical consistency check +Operational + + +4108 +025021 +Wind computation enhancement +5 +Other +Operational + + +4109 +025021 +Wind computation enhancement +6-7 +Reserved +Operational + + +4110 +025021 +Wind computation enhancement +All 8 +Missing value +Operational + + +4111 +025022 +GHRSST* rejection flag +1 +Unprocessed +Operational + + +4112 +025022 +GHRSST* rejection flag +2 +Land suspected +Operational + + +4113 +025022 +GHRSST* rejection flag +3 +Wind speed too large +Operational + + +4114 +025022 +GHRSST* rejection flag +4 +Ice detected +Operational + + +4115 +025022 +GHRSST* rejection flag +5 +Rain detected (Microwave retrievals only) +Operational + + +4116 +025022 +GHRSST* rejection flag +6 +Cloudy detected (Infra-red retrievals only) +Operational + + +4117 +025022 +GHRSST* rejection flag +7 +Cosmetic value +Operational + + +4118 +025022 +GHRSST* rejection flag +8 +SST out of range +Operational + + +4119 +025022 +GHRSST* rejection flag +All 9 +Missing value +Operational + + +4120 +025023 +GHRSST confidence flag +1 +Default confidence value has been used +Operational + + +4121 +025023 +GHRSST confidence flag +2 +Default bias and standard deviation have been used +Operational + + +4122 +025023 +GHRSST confidence flag +3 +Sun glint suspected +Operational + + +4123 +025023 +GHRSST confidence flag +4 +Sea ice retrieval for microwave data +Operational + + +4124 +025023 +GHRSST confidence flag +5 +High wind speed retrieval +Operational + + +4125 +025023 +GHRSST confidence flag +6 +Inaccurate SST due to low SST (< 285K) (only applies to the TMI instrument) +Operational + + +4126 +025023 +GHRSST confidence flag +7 +Relaxed rain contamination suspected +Operational + + +4127 +025023 +GHRSST confidence flag +8 +Potential side lobe contamination +Operational + + +4128 +025023 +GHRSST confidence flag +All 9 +Missing value +Operational + + +4129 +025024 +GHRSST data quality +0 +Unprocessed infrared retrieval +Operational + + +4130 +025024 +GHRSST data quality +1 +Cloudy retrievals +Operational + + +4131 +025024 +GHRSST data quality +2 +Bad: Data that are probably contaminated by cloud +Operational + + +4132 +025024 +GHRSST data quality +3 +Suspect data +Operational + + +4133 +025024 +GHRSST data quality +4 +Acceptable data +Operational + + +4134 +025024 +GHRSST data quality +5 +Excellent data +Operational + + +4135 +025024 +GHRSST data quality +6 +Cool skin suspected +Operational + + +4136 +025024 +GHRSST data quality +7-9 +Reserved +Operational + + +4137 +025024 +GHRSST data quality +10 +Unprocessed microwave retrieval +Operational + + +4138 +025024 +GHRSST data quality +11 +Questionable microwave retrieval that may be contaminated +Operational + + +4139 +025024 +GHRSST data quality +12 +Acceptable microwave retrieval +Operational + + +4140 +025024 +GHRSST data quality +13 +High probability of diurnal variability +Operational + + +4141 +025024 +GHRSST data quality +14 +Reserved +Operational + + +4142 +025024 +GHRSST data quality +15 +Missing value +Operational + + +4143 +025029 +Calibration method +1 +Reserved +Operational + + +4144 +025029 +Calibration method +2 +Calibration target or signal +Operational + + +4145 +025029 +Calibration method +3 +Against raingauges +Operational + + +4146 +025029 +Calibration method +4 +Against other instruments (disdrometer - attenuation) +Operational + + +4147 +025029 +Calibration method +5 +Reserved +Operational + + +4148 +025029 +Calibration method +All 6 +Missing value +Operational + + +4149 +025030 +Running mean sea-surface temperature usage +0 +Running mean sea-surface temperature not used because usage criteria not met +Operational + + +4150 +025030 +Running mean sea-surface temperature usage +1 +Running mean sea-surface temperature not used because data not available +Operational + + +4151 +025030 +Running mean sea-surface temperature usage +2 +Running mean sea-surface temperature used as predictor +Operational + + +4152 +025030 +Running mean sea-surface temperature usage +3 +Missing value +Operational + + +4153 +025031 +NWP-generated vertical profile thinning method +0 +Reserved +Operational + + +4154 +025031 +NWP-generated vertical profile thinning method +1 +No thinning applied (all native model levels are included from base to top of pseudo-sounding) +Operational + + +4155 +025031 +NWP-generated vertical profile thinning method +2 +Native model levels are present only if they are significant levels as per regulations B/C 25 for conventional TEMP soundings +Operational + + +4156 +025031 +NWP-generated vertical profile thinning method +3 +A predefined subset of native model levels is present +Operational + + +4157 +025031 +NWP-generated vertical profile thinning method +4 +No native model levels are present. All profile levels are interpolated to a predefined set of pressure coordinate levels +Operational + + +4158 +025031 +NWP-generated vertical profile thinning method +5-6 +Reserved +Operational + + +4159 +025031 +NWP-generated vertical profile thinning method +7 +Missing value +Operational + + +4160 +025032 +Wind profiler mode information +0 +Reserved +Operational + + +4161 +025032 +Wind profiler mode information +1 +Data from low mode +Operational + + +4162 +025032 +Wind profiler mode information +2 +Data from high mode +Operational + + +4163 +025032 +Wind profiler mode information +3 +Missing value +Operational + + +4164 +025033 +Wind profiler submode information +0 +Wind profiler operating in submode A +Operational + + +4165 +025033 +Wind profiler submode information +1 +Wind profiler operating in submode B +Operational + + +4166 +025033 +Wind profiler submode information +2 +Reserved +Operational + + +4167 +025033 +Wind profiler submode information +3 +Missing value +Operational + + +4168 +025034 +Wind profiler quality control test results +1 +Test A performed and failed +Operational + + +4169 +025034 +Wind profiler quality control test results +2 +Test B performed and failed +Operational + + +4170 +025034 +Wind profiler quality control test results +3 +Test results inconclusive +Operational + + +4171 +025034 +Wind profiler quality control test results +All 4 +Missing value +Operational + + +4172 +025035 +Decision method for polarity +0 +Not defined +Operational + + +4173 +025035 +Decision method for polarity +1 +Individual voltage deflection +Operational + + +4174 +025035 +Decision method for polarity +2 +Current based, above a threshold +Operational + + +4175 +025035 +Decision method for polarity +3 +Voltage based, above a threshold +Operational + + +4176 +025035 +Decision method for polarity +4 +Consensus of sensors, current above a threshold +Operational + + +4177 +025035 +Decision method for polarity +5 +Consensus of sensors, voltage above a threshold +Operational + + +4178 +025035 +Decision method for polarity +6 +Reserved +Operational + + +4179 +025035 +Decision method for polarity +7 +Missing value +Operational + + +4180 +025036 +Atmospherics location method +0 +Network of several direction-finders operating on the same individual atmospherics +Operational + + +4181 +025036 +Atmospherics location method +1 +Network of several arrival-time stations operating on the same individual atmospherics +Operational + + +4182 +025036 +Atmospherics location method +2-5 +Reserved +Operational + + +4183 +025036 +Atmospherics location method +6 +Single station range bearing technique +Operational + + +4184 +025036 +Atmospherics location method +7-14 +Reserved +Operational + + +4185 +025036 +Atmospherics location method +15 +Missing value +Operational + + +4186 +025040 +CO2 wind product derivation +0 +Non-specific mode +Operational + + +4187 +025040 +CO2 wind product derivation +1 +First guess data +Operational + + +4188 +025040 +CO2 wind product derivation +2 +Cloud data +Operational + + +4189 +025040 +CO2 wind product derivation +3 +Average vector data +Operational + + +4190 +025040 +CO2 wind product derivation +4 +Primary data +Operational + + +4191 +025040 +CO2 wind product derivation +5 +Guess data +Operational + + +4192 +025040 +CO2 wind product derivation +6 +Vector data +Operational + + +4193 +025040 +CO2 wind product derivation +7 +Tracer data; this image +Operational + + +4194 +025040 +CO2 wind product derivation +8 +Tracer data to next image +Operational + + +4195 +025040 +CO2 wind product derivation +9-14 +Reserved +Operational + + +4196 +025040 +CO2 wind product derivation +15 +Missing value +Operational + + +4197 +025041 +Moving platform direction reporting method +0 +Direction originally reported in true degrees +Operational + + +4198 +025041 +Moving platform direction reporting method +1 +Direction originally reported using Code table 0700, FM 13 +Operational + + +4199 +025041 +Moving platform direction reporting method +2 +Reserved +Operational + + +4200 +025041 +Moving platform direction reporting method +3 +Missing value +Operational + + +4201 +025042 +Moving platform speed reporting method +0 +Speed originally reported in metres per second +Operational + + +4202 +025042 +Moving platform speed reporting method +1 +Speed originally reported using Code table 4451, FM 13 +Operational + + +4203 +025042 +Moving platform speed reporting method +2 +Reserved +Operational + + +4204 +025042 +Moving platform speed reporting method +3 +Missing value +Operational + + +4205 +025045 +HIRS channel combination +1-20 +Beginning with first bit position (high order bit), if bit position is set to 1, then channel is present, if bit position is set to 0, then channel is not present +Operational + + +4206 +025045 +HIRS channel combination +All 21 +Missing value +Operational + + +4207 +025046 +MSU channel combination +1-4 +Beginning with first bit position (high order bit), if bit position is set to 1, then channel is present, if bit position is set to 0, then channel is not present +Operational + + +4208 +025046 +MSU channel combination +All 5 +Missing value +Operational + + +4209 +025047 +SSU channel combination +1-3 +Beginning with first bit position (high order bit), if bit position is set to 1, then channel is present; if bit position is set to 0, then channel is not present +Operational + + +4210 +025047 +SSU channel combination +All 4 +Missing value +Operational + + +4211 +025048 +AMSU-A channel combination +1-15 +Beginning with first bit position (high order bit), if bit position is set to 1, then channel is present, if bit position is set to 0, then channel is not present +Operational + + +4212 +025048 +AMSU-A channel combination +All 16 +Missing value +Operational + + +4213 +025049 +AMSU-B channel combination +1-5 +Beginning with first bit position (high order bit), if bit position is set to 1, then channel is present, if bit position is set to 0, then channel is not present +Operational + + +4214 +025049 +AMSU-B channel combination +All 6 +Missing value +Operational + + +4215 +025051 +AVHRR channel combination +1-6 +Beginning with first bit position (high order bit), if bit position is set to 1, then channel is present, if bit position is set to 0, then channel is not present +Operational + + +4216 +025051 +AVHRR channel combination +All 7 +Missing value +Operational + + +4217 +025053 +Observation quality +1 +Good +Operational + + +4218 +025053 +Observation quality +2 +Redundant +Operational + + +4219 +025053 +Observation quality +3 +Questionable +Operational + + +4220 +025053 +Observation quality +4 +Bad +Operational + + +4221 +025053 +Observation quality +5 +Experimental +Operational + + +4222 +025053 +Observation quality +6 +Precipitating +Operational + + +4223 +025053 +Observation quality +7-11 +Reserved +Operational + + +4224 +025053 +Observation quality +All 12 +Missing value +Operational + + +4225 +025063 +Central processor or system identifier +0 +Not defined +Operational + + +4226 +025063 +Central processor or system identifier +1 +Main processor +Operational + + +4227 +025063 +Central processor or system identifier +2 +Backup processor +Operational + + +4228 +025063 +Central processor or system identifier +3-254 +Reserved +Operational + + +4229 +025063 +Central processor or system identifier +255 +Missing value +Operational + + +4230 +025069 +Flight level pressure corrections +1 +Smoothed +Operational + + +4231 +025069 +Flight level pressure corrections +2 +Baseline adjusted +Operational + + +4232 +025069 +Flight level pressure corrections +3 +Normalized time interval +Operational + + +4233 +025069 +Flight level pressure corrections +4 +Outlier checked +Operational + + +4234 +025069 +Flight level pressure corrections +5 +Plausibility checked +Operational + + +4235 +025069 +Flight level pressure corrections +6 +Consistency checked +Operational + + +4236 +025069 +Flight level pressure corrections +7 +Interpolated +Operational + + +4237 +025069 +Flight level pressure corrections +All 8 +Missing value +Operational + + +4238 +025086 +Depth correction indicator +0 +Depths are not corrected +Operational + + +4239 +025086 +Depth correction indicator +1 +Depths are corrected +Operational + + +4240 +025086 +Depth correction indicator +2 +Reserved +Operational + + +4241 +025086 +Depth correction indicator +3 +Missing value +Operational + + +4242 +025090 +Orbit state flag +0 +Orbit computed during a manoeuvre +Operational + + +4243 +025090 +Orbit state flag +1 +Adjusted mission operations orbit +Operational + + +4244 +025090 +Orbit state flag +2 +Extrapolated mission operations orbit +Operational + + +4245 +025090 +Orbit state flag +3 +Adjusted (preliminary/precise) orbit +Operational + + +4246 +025090 +Orbit state flag +4 +(Preliminary/precise) orbit is estimated during a manoeuvre period +Operational + + +4247 +025090 +Orbit state flag +5 +(Preliminary/precise) orbit is interpolated over a tracking data gap +Operational + + +4248 +025090 +Orbit state flag +6 +(Preliminary/precise) orbit is extrapolated for a duration less than 1 day +Operational + + +4249 +025090 +Orbit state flag +7 +(Preliminary/precise) orbit is extrapolated for a duration that ranges from 1 day to 2 days +Operational + + +4250 +025090 +Orbit state flag +8 +(Preliminary/precise) orbit is extrapolated for a duration larger than 2 days, or that the orbit is extrapolated just after a manoeuvre +Operational + + +4251 +025090 +Orbit state flag +9 +DORIS* DIODE** navigator orbit +Operational + + +4252 +025090 +Orbit state flag +10-14 +Reserved +Operational + + +4253 +025090 +Orbit state flag +15 +Missing value +Operational + + +4254 +025093 +RASS computation correction +1 +No correction +Operational + + +4255 +025093 +RASS computation correction +2 +Vertical velocity correction +Operational + + +4256 +025093 +RASS computation correction +3-6 +Reserved +Operational + + +4257 +025093 +RASS computation correction +7 +All corrections +Operational + + +4258 +025093 +RASS computation correction +All 8 +Missing value +Operational + + +4259 +025095 +Altimeter state flag +1 +Altimeter operating (0 if nominal, 1 if backup) +Operational + + +4260 +025095 +Altimeter state flag +All 2 +Missing value +Operational + + +4261 +025096 +Radiometer state flag +1 +Mode indicator (0 if mode 2, 1 if mode 1) +Operational + + +4262 +025096 +Radiometer state flag +2 +Mode 1 calibration sequence indicator (0 if normal data taking either mode 1 or 2, 1 if mode 1 calibration sequence) Bits 3 and 4 indicate active 23.8 GHz channel(s): +Operational + + +4263 +025096 +Radiometer state flag +3 +Channel 2 (0 if on, 1 if off) +Operational + + +4264 +025096 +Radiometer state flag +4 +Channel 3 (0 if on, 1 if off) +Operational + + +4265 +025096 +Radiometer state flag +All 5 +Missing value +Operational + + +4266 +025097 +Three-dimensional error estimate of the navigator orbit +0 +Ranges between 0 and 30 cm +Operational + + +4267 +025097 +Three-dimensional error estimate of the navigator orbit +1 +Ranges between 30 and 60 cm +Operational + + +4268 +025097 +Three-dimensional error estimate of the navigator orbit +2 +Ranges between 60 and 90 cm +Operational + + +4269 +025097 +Three-dimensional error estimate of the navigator orbit +3 +Ranges between 90 and 120 cm +Operational + + +4270 +025097 +Three-dimensional error estimate of the navigator orbit +4 +Ranges between 120 and 150 cm +Operational + + +4271 +025097 +Three-dimensional error estimate of the navigator orbit +5 +Ranges between 150 and 180 cm +Operational + + +4272 +025097 +Three-dimensional error estimate of the navigator orbit +6 +Ranges between 180 and 210 cm +Operational + + +4273 +025097 +Three-dimensional error estimate of the navigator orbit +7 +Ranges between 210 and 240 cm +Operational + + +4274 +025097 +Three-dimensional error estimate of the navigator orbit +8 +Ranges between 240 and 270 cm +Operational + + +4275 +025097 +Three-dimensional error estimate of the navigator orbit +9 +Ranges larger than 270 cm +Operational + + +4276 +025097 +Three-dimensional error estimate of the navigator orbit +10-14 +Reserved +Operational + + +4277 +025097 +Three-dimensional error estimate of the navigator orbit +15 +Missing value +Operational + + +4278 +025098 +Altimeter data quality flag +1 +Ku band range +Operational + + +4279 +025098 +Altimeter data quality flag +2 +C band range +Operational + + +4280 +025098 +Altimeter data quality flag +3 +Ku band SWH* +Operational + + +4281 +025098 +Altimeter data quality flag +4 +C band SWH* +Operational + + +4282 +025098 +Altimeter data quality flag +5 +Ku band backscatter coefficient +Operational + + +4283 +025098 +Altimeter data quality flag +6 +C band backscatter coefficient +Operational + + +4284 +025098 +Altimeter data quality flag +7 +Off nadir angle from Ku band waveform parameters +Operational + + +4285 +025098 +Altimeter data quality flag +8 +Off nadir angle from platform +Operational + + +4286 +025098 +Altimeter data quality flag +All 9 +Missing value +Operational + + +4287 +025099 +Altimeter correction quality flag +1 +Ku band range instrumental correction +Operational + + +4288 +025099 +Altimeter correction quality flag +2 +C band range instrumental correction +Operational + + +4289 +025099 +Altimeter correction quality flag +3 +Ku band SWH* instrumental correction +Operational + + +4290 +025099 +Altimeter correction quality flag +4 +C band SWH* instrumental correction +Operational + + +4291 +025099 +Altimeter correction quality flag +5 +Ku band backscatter coefficient instrumental correction +Operational + + +4292 +025099 +Altimeter correction quality flag +6 +C band backscatter coefficient instrumental correction +Operational + + +4293 +025099 +Altimeter correction quality flag +7-8 +Reserved +Operational + + +4294 +025099 +Altimeter correction quality flag +All 9 +Missing value +Operational + + +4295 +025110 +Image processing summary +1 +Raw data analysis used for raw data correction. Correction done using default parameters +Operational + + +4296 +025110 +Image processing summary +2 +Raw data analysis used for raw data correction. Correction done using raw data analysis results +Operational + + +4297 +025110 +Image processing summary +3 +Antenna elevation pattern correction applied +Operational + + +4298 +025110 +Image processing summary +4 +Nominal chirp replica used +Operational + + +4299 +025110 +Image processing summary +5 +Reconstructed chirp used +Operational + + +4300 +025110 +Image processing summary +6 +Slant range to ground range conversion applied +Operational + + +4301 +025110 +Image processing summary +7-9 +Reserved +Operational + + +4302 +025110 +Image processing summary +All 10 +Missing value +Operational + + +4303 +025112 +Band specific altimeter data quality flag +1 +Band specific range +Operational + + +4304 +025112 +Band specific altimeter data quality flag +2 +Band specific significant wave height +Operational + + +4305 +025112 +Band specific altimeter data quality flag +3 +Band specific backscatter coefficient +Operational + + +4306 +025112 +Band specific altimeter data quality flag +4 +Off nadir angle from band specific waveform parameters +Operational + + +4307 +025112 +Band specific altimeter data quality flag +5 +Off nadir angle from platform +Operational + + +4308 +025112 +Band specific altimeter data quality flag +6-8 +Reserved +Operational + + +4309 +025112 +Band specific altimeter data quality flag +All 9 +Missing value +Operational + + +4310 +025113 +Band specific altimeter correction quality flag +1 +Band specific range instrumental correction +Operational + + +4311 +025113 +Band specific altimeter correction quality flag +2 +Band specific significant wave height instrumental correction +Operational + + +4312 +025113 +Band specific altimeter correction quality flag +3 +Band specific backscatter coefficient instrumental correction +Operational + + +4313 +025113 +Band specific altimeter correction quality flag +4-8 +Reserved +Operational + + +4314 +025113 +Band specific altimeter correction quality flag +All 9 +Missing value +Operational + + +4315 +025120 +RA2-L2-processing flag +0 +Percentage of DSRs* free of processing errors during Level 2 processing is greater than the acceptable threshold +Operational + + +4316 +025120 +RA2-L2-processing flag +1 +Percentage of DSRs free of processing errors during Level 2 processing is less than the acceptable threshold +Operational + + +4317 +025120 +RA2-L2-processing flag +2 +Reserved +Operational + + +4318 +025120 +RA2-L2-processing flag +3 +Missing value +Operational + + +4319 +025122 +Hardware configuration for RF +0 +Hardware configuration for RF is A +Operational + + +4320 +025122 +Hardware configuration for RF +1 +Hardware configuration for RF is B +Operational + + +4321 +025122 +Hardware configuration for RF +2 +Reserved +Operational + + +4322 +025122 +Hardware configuration for RF +3 +Missing value +Operational + + +4323 +025123 +Hardware configuration for HPA +0 +Hardware configuration for HPA is A +Operational + + +4324 +025123 +Hardware configuration for HPA +1 +Hardware configuration for HPA is B +Operational + + +4325 +025123 +Hardware configuration for HPA +2 +Reserved +Operational + + +4326 +025123 +Hardware configuration for HPA +3 +Missing value +Operational + + +4327 +025124 +MWR-L2-processing flag +0 +Percentage of DSRs** free of processing errors during Level 2 processing is greater than the acceptable threshold +Operational + + +4328 +025124 +MWR-L2-processing flag +1 +Percentage of DSRs** free of processing errors during Level 2 processing is less than the acceptable threshold +Operational + + +4329 +025124 +MWR-L2-processing flag +2 +Reserved +Operational + + +4330 +025124 +MWR-L2-processing flag +3 +Missing value +Operational + + +4331 +025150 +Method of tropical cyclone intensity analysis using satellite data +1 +The Dvorak's VIS (VISual imagery) intensity analysis +Operational + + +4332 +025150 +Method of tropical cyclone intensity analysis using satellite data +2 +The Dvorak's EIR (Enhanced InfraRed imagery) intensity analysis +Operational + + +4333 +025150 +Method of tropical cyclone intensity analysis using satellite data +3-14 +Reserved +Operational + + +4334 +025150 +Method of tropical cyclone intensity analysis using satellite data +15 +Missing value +Operational + + +4335 +025174 +SMOS information flag +1 +Pixel is affected by RFI effects +Operational + + +4336 +025174 +SMOS information flag +2 +Pixel is located in the hexagonal alias direction centred on Sun alias +Operational + + +4337 +025174 +SMOS information flag +3 +Pixel is close to the border delimiting the extended alias free zone +Operational + + +4338 +025174 +SMOS information flag +4 +Pixel is inside the extended alias free zone +Operational + + +4339 +025174 +SMOS information flag +5 +Pixel is inside the exclusive of alias free zone +Operational + + +4340 +025174 +SMOS information flag +6 +Pixel is located in a zone where a moon alias was reconstructed +Operational + + +4341 +025174 +SMOS information flag +7 +Pixel is located in a zone where Sun reflection has been detected +Operational + + +4342 +025174 +SMOS information flag +8 +Pixel is located in a zone where Sun alias was reconstructed +Operational + + +4343 +025174 +SMOS information flag +9 +Flat target transformation has been performed during image reconstruction of this pixel +Operational + + +4344 +025174 +SMOS information flag +10 +Scene has been combined with an adjustment scene in opposite polarization during image reconstruction to account for cross-polarization leakage +Operational + + +4345 +025174 +SMOS information flag +11 +Direct Moon correction has been performed during image reconstruction of this pixel +Operational + + +4346 +025174 +SMOS information flag +12 +Reflected Sun correction has been performed during image reconstruction of this pixel +Operational + + +4347 +025174 +SMOS information flag +13 +Direct Sun correction has been performed during image reconstruction of this image +Operational + + +4348 +025174 +SMOS information flag +All 14 +Missing value +Operational + + +4349 +025181 +L2 processing flag +0 +OK +Operational + + +4350 +025181 +L2 processing flag +1 +Percentage of L2b records free of processing errors is less than acceptable threshold +Operational + + +4351 +025181 +L2 processing flag +2 +Missing value +Operational + + +4352 +025182 +L1 processing flag +0 +OK +Operational + + +4353 +025182 +L1 processing flag +1 +Percentage of L1b records free of processing errors is less than acceptable threshold +Operational + + +4354 +025182 +L1 processing flag +2 +Missing value +Operational + + +4355 +025184 +L2 product status +0 +OK +Operational + + +4356 +025184 +L2 product status +1 +Product as a duration shorter than the input product +Operational + + +4357 +025184 +L2 product status +2 +Missing value +Operational + + +4358 +025185 +Encryption method +0 +AES 256 +Operational + + +4359 +025185 +Encryption method +1-254 +Reserved +Operational + + +4360 +025185 +Encryption method +255 +Missing value +Operational + + +4361 +025187 +Confidence flag +0 +Valid +Operational + + +4362 +025187 +Confidence flag +1 +Invalid +Operational + + +4363 +025187 +Confidence flag +2-14 +Reserved +Operational + + +4364 +025187 +Confidence flag +15 +Missing value +Operational + + +4365 +025188 +Method for reducing pressure to sea level +0 +Pressure adjusted to mean sea level following WMO-No. 8 for low level (< 50 m) stations +* +Operational + + +4366 +025188 +Method for reducing pressure to sea level +1 +Pressure adjusted to mean sea level following WMO-No. 8 for stations below 750 m +Operational + + +4367 +025188 +Method for reducing pressure to sea level +2 +Pressure adjusted to sea level following national practice +Operational + + +4368 +025188 +Method for reducing pressure to sea level +3 +Pressure adjusted to local water level following national practice +Operational + + +4369 +025188 +Method for reducing pressure to sea level +4 +Pressure not corrected for height +Operational + + +4370 +025188 +Method for reducing pressure to sea level +5-14 +Reserved +Operational + + +4371 +025188 +Method for reducing pressure to sea level +15 +Missing value +Operational + + +4372 +025190 +Altimeter echo processing mode +0 +Low resolution mode (LRM) +Operational + + +4373 +025190 +Altimeter echo processing mode +1 +Synthetic aperture radar (SAR) +Operational + + +4374 +025190 +Altimeter echo processing mode +2 +LRM and SAR (interleaved) +Operational + + +4375 +025190 +Altimeter echo processing mode +3 +Reserved +Operational + + +4376 +025190 +Altimeter echo processing mode +4 +Pseudo-LRM (PLRM) +Operational + + +4377 +025190 +Altimeter echo processing mode +5 +SAR interferometric mode (SARIN) +Operational + + +4378 +025190 +Altimeter echo processing mode +6-254 +Reserved +Operational + + +4379 +025190 +Altimeter echo processing mode +255 +Missing value +Operational + + +4380 +025191 +Altimeter tracking mode +0 +Open loop +Operational + + +4381 +025191 +Altimeter tracking mode +1 +Closed loop +Operational + + +4382 +025191 +Altimeter tracking mode +2 +Open loop fixed gain +Operational + + +4383 +025191 +Altimeter tracking mode +3-254 +Reserved +Operational + + +4384 +025191 +Altimeter tracking mode +255 +Missing value +Operational + + +4385 +026010 +Hours included +1 +0100 included +Operational + + +4386 +026010 +Hours included +2 +0200 included +Operational + + +4387 +026010 +Hours included +3 +0300 included +Operational + + +4388 +026010 +Hours included +4 +0400 included +Operational + + +4389 +026010 +Hours included +5 +0500 included +Operational + + +4390 +026010 +Hours included +6 +0600 included +Operational + + +4391 +026010 +Hours included +7 +0700 included +Operational + + +4392 +026010 +Hours included +8 +0800 included +Operational + + +4393 +026010 +Hours included +9 +0900 included +Operational + + +4394 +026010 +Hours included +10 +1000 included +Operational + + +4395 +026010 +Hours included +11 +1100 included +Operational + + +4396 +026010 +Hours included +12 +1200 included +Operational + + +4397 +026010 +Hours included +13 +1300 included +Operational + + +4398 +026010 +Hours included +14 +1400 included +Operational + + +4399 +026010 +Hours included +15 +1500 included +Operational + + +4400 +026010 +Hours included +16 +1600 included +Operational + + +4401 +026010 +Hours included +17 +1700 included +Operational + + +4402 +026010 +Hours included +18 +1800 included +Operational + + +4403 +026010 +Hours included +19 +1900 included +Operational + + +4404 +026010 +Hours included +20 +2000 included +Operational + + +4405 +026010 +Hours included +21 +2100 included +Operational + + +4406 +026010 +Hours included +22 +2200 included +Operational + + +4407 +026010 +Hours included +23 +2300 included +Operational + + +4408 +026010 +Hours included +24 +2400 included +Operational + + +4409 +026010 +Hours included +25 +Unknown mixture of hours +Operational + + +4410 +026010 +Hours included +All 26 +Missing value +Operational + + +4411 +029001 +Projection type +0 +Gnomonic projection +Operational + + +4412 +029001 +Projection type +1 +Polar stereographic projection +Operational + + +4413 +029001 +Projection type +2 +Lambert's conformal conic projection +Operational + + +4414 +029001 +Projection type +3 +Mercator's projection +Operational + + +4415 +029001 +Projection type +4 +Scanning Cone (radar)* +Operational + + +4416 +029001 +Projection type +5 +Reserved +Operational + + +4417 +029001 +Projection type +6 +No projection +Operational + + +4418 +029001 +Projection type +7 +Missing value +Operational + + +4419 +029002 +Coordinate grid type +0 +Cartesian +Operational + + +4420 +029002 +Coordinate grid type +1 +Polar +Operational + + +4421 +029002 +Coordinate grid type +2 +Other +Operational + + +4422 +029002 +Coordinate grid type +3-6 +Reserved +Operational + + +4423 +029002 +Coordinate grid type +7 +Missing value +Operational + + +4424 +030031 +Picture type +0 +PPI +Operational + + +4425 +030031 +Picture type +1 +Composite +Operational + + +4426 +030031 +Picture type +2 +CAPPl +Operational + + +4427 +030031 +Picture type +3 +Vertical section +Operational + + +4428 +030031 +Picture type +4 +Alphanumeric data +Operational + + +4429 +030031 +Picture type +5 +Map of subject clutter +Operational + + +4430 +030031 +Picture type +6 +Map +Operational + + +4431 +030031 +Picture type +7 +Test picture +Operational + + +4432 +030031 +Picture type +8 +Comments +Operational + + +4433 +030031 +Picture type +9 +Map of ground occultation +Operational + + +4434 +030031 +Picture type +10 +Map of radar beam height +Operational + + +4435 +030031 +Picture type +11-13 +Reserved +Operational + + +4436 +030031 +Picture type +14 +Other +Operational + + +4437 +030031 +Picture type +15 +Missing value +Operational + + +4438 +030032 +Combination with other data +1 +Map +Operational + + +4439 +030032 +Combination with other data +2 +Satellite IR +Operational + + +4440 +030032 +Combination with other data +3 +Satellite VIS +Operational + + +4441 +030032 +Combination with other data +4 +Satellite WV +Operational + + +4442 +030032 +Combination with other data +5 +Satellite multispectral +Operational + + +4443 +030032 +Combination with other data +6 +Synoptic observations +Operational + + +4444 +030032 +Combination with other data +7 +Forecast parameters +Operational + + +4445 +030032 +Combination with other data +8 +Lightning data +Operational + + +4446 +030032 +Combination with other data +9-14 +Reserved +Operational + + +4447 +030032 +Combination with other data +15 +Other data +Operational + + +4448 +030032 +Combination with other data +All 16 +Missing value +Operational + + +4449 +031021 +Associated field significance +0 +Reserved +Operational + + +4450 +031021 +Associated field significance +1 +1-bit indicator of quality +0 = good, 1 = suspect or bad +Operational + + +4451 +031021 +Associated field significance +2 +2-bit indicator of quality +0 = good, 1 = slightly suspect, 2 = highly suspect, 3 = bad +Operational + + +4452 +031021 +Associated field significance +3-5 +Reserved +Operational + + +4453 +031021 +Associated field significance +6 +4-bit indicator of quality control class according to GTSPP +0 = Unqualified, 1 = Correct value (all checks passed), 2 = Probably good but value inconsistent with statistics (differ from climatology), 3 = Probably bad (spike, gradient, ... if other tests passed), 4 = Bad value, impossible value (out of scale, vertical instability, constant profile), 5 = Value modified during quality control, 6-7 = Not used (reserved), 8 = Interpolated value, 9 = Missing value +Operational + + +4454 +031021 +Associated field significance +7 +Percentage confidence +Operational + + +4455 +031021 +Associated field significance +8 +0 = Not suspected, 1 = Suspected, 2 = Reserved, 3 = Information not required +Operational + + +4456 +031021 +Associated field significance +9 +0 = Data present, good, collocated, 1 = Data available but of degraded quality and not used, 2 = No spatiotemporally collocated data available, 3-14 = Not used (reserved), 15 = Missing value +Operational + + +4457 +031021 +Associated field significance +10-20 +Reserved +Operational + + +4458 +031021 +Associated field significance +21 +1-bit indicator of correction +0 = original value, 1 = substituted/corrected value +(see Note 2) +Operational + + +4459 +031021 +Associated field significance +22-62 +Reserved for local use +Operational + + +4460 +031021 +Associated field significance +63 +Missing value +Operational + + +4461 +031031 +Data present indicator +1 +0 = Data present, 1 = Data not present +Operational + + +4462 +033002 +Quality information +0 +Data not suspect +Operational + + +4463 +033002 +Quality information +1 +Data suspect +Operational + + +4464 +033002 +Quality information +2 +Reserved +Operational + + +4465 +033002 +Quality information +3 +Quality information not given +Operational + + +4466 +033003 +Quality information +0 +Data not suspect +Operational + + +4467 +033003 +Quality information +1 +Data slightly suspect +Operational + + +4468 +033003 +Quality information +2 +Data highly suspect +Operational + + +4469 +033003 +Quality information +3 +Data considered unfit for use +Operational + + +4470 +033003 +Quality information +4-6 +Reserved +Operational + + +4471 +033003 +Quality information +7 +Quality information not given +Operational + + +4472 +033005 +Quality information (AWS data) +1 +No automated meteorological data checks performed +Operational + + +4473 +033005 +Quality information (AWS data) +2 +Pressure data suspect +Operational + + +4474 +033005 +Quality information (AWS data) +3 +Wind data suspect +Operational + + +4475 +033005 +Quality information (AWS data) +4 +Air temperature data suspect +Operational + + +4476 +033005 +Quality information (AWS data) +5 +Wet-bulb temperature data suspect +Operational + + +4477 +033005 +Quality information (AWS data) +6 +Humidity data suspect +Operational + + +4478 +033005 +Quality information (AWS data) +7 +Ground temperature data suspect +Operational + + +4479 +033005 +Quality information (AWS data) +8 +Soil temperature (depth 1) data suspect +Operational + + +4480 +033005 +Quality information (AWS data) +9 +Soil temperature (depth 2) data suspect +Operational + + +4481 +033005 +Quality information (AWS data) +10 +Soil temperature (depth 3) data suspect +Operational + + +4482 +033005 +Quality information (AWS data) +11 +Soil temperature (depth 4) data suspect +Operational + + +4483 +033005 +Quality information (AWS data) +12 +Soil temperature (depth 5) data suspect +Operational + + +4484 +033005 +Quality information (AWS data) +13 +Cloud data suspect +Operational + + +4485 +033005 +Quality information (AWS data) +14 +Visibility data suspect +Operational + + +4486 +033005 +Quality information (AWS data) +15 +Present weather data suspect +Operational + + +4487 +033005 +Quality information (AWS data) +16 +Lightning data suspect +Operational + + +4488 +033005 +Quality information (AWS data) +17 +Ice deposit data suspect +Operational + + +4489 +033005 +Quality information (AWS data) +18 +Precipitation data suspect +Operational + + +4490 +033005 +Quality information (AWS data) +19 +State of ground data suspect +Operational + + +4491 +033005 +Quality information (AWS data) +20 +Snow data suspect +Operational + + +4492 +033005 +Quality information (AWS data) +21 +Water content data suspect +Operational + + +4493 +033005 +Quality information (AWS data) +22 +Evaporation/evapotranspiration data suspect +Operational + + +4494 +033005 +Quality information (AWS data) +23 +Sunshine data suspect +Operational + + +4495 +033005 +Quality information (AWS data) +24-29 +Reserved +Operational + + +4496 +033005 +Quality information (AWS data) +All 30 +Missing value +Operational + + +4497 +033006 +Internal measurement status information (AWS) +0 +Self-check OK +Operational + + +4498 +033006 +Internal measurement status information (AWS) +1 +At least one warning active, no alarms +Operational + + +4499 +033006 +Internal measurement status information (AWS) +2 +At least one alarm active +Operational + + +4500 +033006 +Internal measurement status information (AWS) +3 +Sensor failure +Operational + + +4501 +033006 +Internal measurement status information (AWS) +4-6 +Reserved +Operational + + +4502 +033006 +Internal measurement status information (AWS) +7 +Missing value +Operational + + +4503 +033015 +Data quality-check indicator +0 +Passed all checks +Operational + + +4504 +033015 +Data quality-check indicator +1 +Missing data check +Operational + + +4505 +033015 +Data quality-check indicator +2 +Descending/reascending balloon check +Operational + + +4506 +033015 +Data quality-check indicator +3 +Data plausibility check (above limits) +Operational + + +4507 +033015 +Data quality-check indicator +4 +Data plausibility check (below limits) +Operational + + +4508 +033015 +Data quality-check indicator +5 +Superadiabatic lapse rate check +Operational + + +4509 +033015 +Data quality-check indicator +6 +Limiting angles check +Operational + + +4510 +033015 +Data quality-check indicator +7 +Ascension rate check +Operational + + +4511 +033015 +Data quality-check indicator +8 +Excessive change from previous flight +Operational + + +4512 +033015 +Data quality-check indicator +9 +Balloon overhead check +Operational + + +4513 +033015 +Data quality-check indicator +10 +Wind speed check +Operational + + +4514 +033015 +Data quality-check indicator +11 +Wind direction check +Operational + + +4515 +033015 +Data quality-check indicator +12 +Dependency check +Operational + + +4516 +033015 +Data quality-check indicator +13 +Data valid but modified +Operational + + +4517 +033015 +Data quality-check indicator +14 +Data outlier check +Operational + + +4518 +033015 +Data quality-check indicator +15-62 +Reserved +Operational + + +4519 +033015 +Data quality-check indicator +63 +Missing value +Operational + + +4520 +033020 +Quality control indication of following value +0 +Good +Operational + + +4521 +033020 +Quality control indication of following value +1 +Inconsistent +Operational + + +4522 +033020 +Quality control indication of following value +2 +Doubtful +Operational + + +4523 +033020 +Quality control indication of following value +3 +Wrong +Operational + + +4524 +033020 +Quality control indication of following value +4 +Not checked +Operational + + +4525 +033020 +Quality control indication of following value +5 +Has been changed +Operational + + +4526 +033020 +Quality control indication of following value +6 +Estimated +Operational + + +4527 +033020 +Quality control indication of following value +7 +Missing value +Operational + + +4528 +033021 +Quality of following value +0 +Within limits +Operational + + +4529 +033021 +Quality of following value +1 +Outside limits +Operational + + +4530 +033021 +Quality of following value +2 +Reserved +Operational + + +4531 +033021 +Quality of following value +3 +Missing value +Operational + + +4532 +033022 +Quality of buoy satellite transmission +0 +Good (several identical reports have been received) +Operational + + +4533 +033022 +Quality of buoy satellite transmission +1 +Dubious (no identical reports have been received) +Operational + + +4534 +033022 +Quality of buoy satellite transmission +2 +Reserved +Operational + + +4535 +033022 +Quality of buoy satellite transmission +3 +Missing value +Operational + + +4536 +033023 +Quality of buoy location +0 +Reliable (location was made over two satellite passes) +Operational + + +4537 +033023 +Quality of buoy location +1 +Latest known (no location over the corresponding pass) +Operational + + +4538 +033023 +Quality of buoy location +2 +Dubious (location made over one pass only; a second solution is possible in 5 per cent of the cases) +Operational + + +4539 +033023 +Quality of buoy location +3 +Missing value +Operational + + +4540 +033024 +Station elevation quality mark (for mobile stations) +0 +Reserved +Operational + + +4541 +033024 +Station elevation quality mark (for mobile stations) +1 +Excellent - within 3 metres +Operational + + +4542 +033024 +Station elevation quality mark (for mobile stations) +2 +Good - within 10 metres +Operational + + +4543 +033024 +Station elevation quality mark (for mobile stations) +3 +Fair - within 20 metres +Operational + + +4544 +033024 +Station elevation quality mark (for mobile stations) +4 +Poor - more than 20 metres +Operational + + +4545 +033024 +Station elevation quality mark (for mobile stations) +5 +Excellent - within 10 feet +Operational + + +4546 +033024 +Station elevation quality mark (for mobile stations) +6 +Good - within 30 feet +Operational + + +4547 +033024 +Station elevation quality mark (for mobile stations) +7 +Fair - within 60 feet +Operational + + +4548 +033024 +Station elevation quality mark (for mobile stations) +8 +Poor - more than 60 feet +Operational + + +4549 +033024 +Station elevation quality mark (for mobile stations) +9-14 +Reserved +Operational + + +4550 +033024 +Station elevation quality mark (for mobile stations) +15 +Missing value +Operational + + +4551 +033025 +ACARS interpolated values indicator +0 +Time interpolated, latitude and longitude reported +Operational + + +4552 +033025 +ACARS interpolated values indicator +1 +Time reported, latitude and longitude interpolated +Operational + + +4553 +033025 +ACARS interpolated values indicator +2 +Time, latitude, and longitude interpolated +Operational + + +4554 +033025 +ACARS interpolated values indicator +3 +Time, latitude, and longitude reported +Operational + + +4555 +033025 +ACARS interpolated values indicator +4-6 +Reserved +Operational + + +4556 +033025 +ACARS interpolated values indicator +7 +Missing value +Operational + + +4557 +033026 +Moisture quality +0 +Normal operations - measurement mode +Operational + + +4558 +033026 +Moisture quality +1 +Normal operations - non-measurement mode +Operational + + +4559 +033026 +Moisture quality +2 +Small RH +Operational + + +4560 +033026 +Moisture quality +3 +Humidity element is wet +Operational + + +4561 +033026 +Moisture quality +4 +Humidity element contaminated +Operational + + +4562 +033026 +Moisture quality +5 +Heater fail +Operational + + +4563 +033026 +Moisture quality +6 +Heater fail and wet/contaminated humidity element +Operational + + +4564 +033026 +Moisture quality +7 +At least one of the input parameters used in the calculation of mixing ratio is invalid +Operational + + +4565 +033026 +Moisture quality +8 +Numeric error +Operational + + +4566 +033026 +Moisture quality +9 +Sensor not installed +Operational + + +4567 +033026 +Moisture quality +10 +Calculated RH > 100% +Operational + + +4568 +033026 +Moisture quality +11 +Input laser power too low +Operational + + +4569 +033026 +Moisture quality +12 +Probe WV temperature out of range +Operational + + +4570 +033026 +Moisture quality +13 +Probe WV pressure out of range +Operational + + +4571 +033026 +Moisture quality +14 +Spectral line out of range +Operational + + +4572 +033026 +Moisture quality +15 +No laser output +Operational + + +4573 +033026 +Moisture quality +16-62 +Reserved +Operational + + +4574 +033026 +Moisture quality +63 +Missing value +Operational + + +4575 +033027 +Location quality class (range of radius of 66 % confidence) +0 +Radius >= 1500 m +Operational + + +4576 +033027 +Location quality class (range of radius of 66 % confidence) +1 +500 m =< Radius <1500 m +Operational + + +4577 +033027 +Location quality class (range of radius of 66 % confidence) +2 +250 m =< Radius < 500 m +Operational + + +4578 +033027 +Location quality class (range of radius of 66 % confidence) +3 +Radius < 250 m +Operational + + +4579 +033027 +Location quality class (range of radius of 66 % confidence) +4 +=< 100 m +Operational + + +4580 +033027 +Location quality class (range of radius of 66 % confidence) +5-6 +Reserved +Operational + + +4581 +033027 +Location quality class (range of radius of 66 % confidence) +7 +Missing value +Operational + + +4582 +033028 +Snapshot overall quality +1 +Nominal +Operational + + +4583 +033028 +Snapshot overall quality +2 +Degraded by SW error; any error reported by the algorithms +Operational + + +4584 +033028 +Snapshot overall quality +3 +Degraded by instrument error +Operational + + +4585 +033028 +Snapshot overall quality +4 +Degraded by corrupted /missing ADF +Operational + + +4586 +033028 +Snapshot overall quality +5-6 +Reserved +Operational + + +4587 +033028 +Snapshot overall quality +7 +Missing value +Operational + + +4588 +033030 +Scan line status flags for ATOVS +1 +Do not use scan for product generation +Operational + + +4589 +033030 +Scan line status flags for ATOVS +2 +Time sequence error detected with this scan +Operational + + +4590 +033030 +Scan line status flags for ATOVS +3 +Data gap precedes this scan +Operational + + +4591 +033030 +Scan line status flags for ATOVS +4 +No calibration +Operational + + +4592 +033030 +Scan line status flags for ATOVS +5 +No Earth location +Operational + + +4593 +033030 +Scan line status flags for ATOVS +6 +First good time following a clock update +Operational + + +4594 +033030 +Scan line status flags for ATOVS +7 +Instrument status changed with this scan +Operational + + +4595 +033030 +Scan line status flags for ATOVS +8-23 +Reserved +Operational + + +4596 +033030 +Scan line status flags for ATOVS +All 24 +Missing value +Operational + + +4597 +033031 +Scan line quality flags for ATOVS +1 +Time field is bad but can probably be inferred from the previous good time +Operational + + +4598 +033031 +Scan line quality flags for ATOVS +2 +Time field is bad and cannot be inferred from the previous good time +Operational + + +4599 +033031 +Scan line quality flags for ATOVS +3 +This record starts a sequence that is inconsistent with previous times (i.e. there is a time discontinuity). This may or may not be associated with a spacecraft clock update (see scan line status flags for ATOVS) +Operational + + +4600 +033031 +Scan line quality flags for ATOVS +4 +Start of a sequence that apparently repeats scan times that have been previously accepted +Operational + + +4601 +033031 +Scan line quality flags for ATOVS +5 +Scan line was not calibrated because of bad time +Operational + + +4602 +033031 +Scan line quality flags for ATOVS +6 +Scan line was calibrated using fewer than the preferred number of scan lines because of proximity to start or end of data or to a data gap +Operational + + +4603 +033031 +Scan line quality flags for ATOVS +7 +Scan line was not calibrated because of bad or insufficient PRT data +Operational + + +4604 +033031 +Scan line quality flags for ATOVS +8 +Scan line was calibrated but with marginal PRT data +Operational + + +4605 +033031 +Scan line quality flags for ATOVS +9 +Some uncalibrated channels on this scan +Operational + + +4606 +033031 +Scan line quality flags for ATOVS +10 +Uncalibrated due to instrument mode +Operational + + +4607 +033031 +Scan line quality flags for ATOVS +11 +Questionable calibration because of antenna position error of space view +Operational + + +4608 +033031 +Scan line quality flags for ATOVS +12 +Questionable calibration because of antenna position error of black body +Operational + + +4609 +033031 +Scan line quality flags for ATOVS +13 +Not Earth located because of bad time +Operational + + +4610 +033031 +Scan line quality flags for ATOVS +14 +Earth location questionable because of questionable time code (see time problem code bits) +Operational + + +4611 +033031 +Scan line quality flags for ATOVS +15 +Earth location questionable - only marginal agreement with reasonableness check +Operational + + +4612 +033031 +Scan line quality flags for ATOVS +16 +Earth location questionable - fails reasonableness check +Operational + + +4613 +033031 +Scan line quality flags for ATOVS +17 +Earth location questionable because of antenna position check +Operational + + +4614 +033031 +Scan line quality flags for ATOVS +18 +Scan line calibration cold black body +Operational + + +4615 +033031 +Scan line quality flags for ATOVS +19 +Scan line calibration warm black body +Operational + + +4616 +033031 +Scan line quality flags for ATOVS +20 +Scan line calibration space view +Operational + + +4617 +033031 +Scan line quality flags for ATOVS +21 +Earth view +Operational + + +4618 +033031 +Scan line quality flags for ATOVS +22-23 +Reserved +Operational + + +4619 +033031 +Scan line quality flags for ATOVS +All 24 +Missing value +Operational + + +4620 +033032 +Channel quality flags for ATOVS +1 +No good blackbody counts for scan line +Operational + + +4621 +033032 +Channel quality flags for ATOVS +2 +No good space view counts for this line +Operational + + +4622 +033032 +Channel quality flags for ATOVS +3 +No good PRTs for this line +Operational + + +4623 +033032 +Channel quality flags for ATOVS +4 +Some bad blackbody view counts for this line +Operational + + +4624 +033032 +Channel quality flags for ATOVS +5 +Some bad space view counts for this line +Operational + + +4625 +033032 +Channel quality flags for ATOVS +6 +Some bad PRT temps on this line +Operational + + +4626 +033032 +Channel quality flags for ATOVS +7 +Quality for this scan is reduced +Operational + + +4627 +033032 +Channel quality flags for ATOVS +8-23 +Reserved (bits set to zero) +Operational + + +4628 +033032 +Channel quality flags for ATOVS +All 24 +Missing value +Operational + + +4629 +033033 +Field of view quality flags for ATOVS +1 +Set if secondary calibration used +Operational + + +4630 +033033 +Field of view quality flags for ATOVS +2-21 +Bit n set to 1 if brightness temperature in channel n-1 is physically unreasonable or has not been calculated due to calibration problems +Operational + + +4631 +033033 +Field of view quality flags for ATOVS +22 +Set if all the channels are missing +Operational + + +4632 +033033 +Field of view quality flags for ATOVS +23 +Suspect +Operational + + +4633 +033033 +Field of view quality flags for ATOVS +All 24 +Missing value +Operational + + +4634 +033035 +Manual/automatic quality control +0 +Automatic quality control passed and not manually checked +Operational + + +4635 +033035 +Manual/automatic quality control +1 +Automatic quality control passed and manually checked and passed +Operational + + +4636 +033035 +Manual/automatic quality control +2 +Automatic quality control passed and manually checked and deleted +Operational + + +4637 +033035 +Manual/automatic quality control +3 +Automatic quality control failed and manually not checked +Operational + + +4638 +033035 +Manual/automatic quality control +4 +Automatic quality control failed and manually checked and failed +Operational + + +4639 +033035 +Manual/automatic quality control +5 +Automatic quality control failed and manually checked and re-inserted +Operational + + +4640 +033035 +Manual/automatic quality control +6 +Automatic quality control flagged data as questionable and not manually checked +Operational + + +4641 +033035 +Manual/automatic quality control +7 +Automatic quality control flagged data as questionable and manually checked and failed +Operational + + +4642 +033035 +Manual/automatic quality control +8 +Manually checked and failed +Operational + + +4643 +033035 +Manual/automatic quality control +9-14 +Reserved +Operational + + +4644 +033035 +Manual/automatic quality control +15 +Missing value +Operational + + +4645 +033037 +Wind correlation error +1 +u departure from guess +Operational + + +4646 +033037 +Wind correlation error +2 +v departure from guess +Operational + + +4647 +033037 +Wind correlation error +3 +u and v departure from guess +Operational + + +4648 +033037 +Wind correlation error +4 +u acceleration +Operational + + +4649 +033037 +Wind correlation error +5 +v acceleration +Operational + + +4650 +033037 +Wind correlation error +6 +u and v acceleration +Operational + + +4651 +033037 +Wind correlation error +7 +Possible land feature +Operational + + +4652 +033037 +Wind correlation error +8 +u acceleration and possible land feature +Operational + + +4653 +033037 +Wind correlation error +9 +v acceleration and possible land feature +Operational + + +4654 +033037 +Wind correlation error +10 +u and v acceleration and possible land feature +Operational + + +4655 +033037 +Wind correlation error +11 +Bad wind guess +Operational + + +4656 +033037 +Wind correlation error +12 +Correlation failure +Operational + + +4657 +033037 +Wind correlation error +13 +Search box off edge of area +Operational + + +4658 +033037 +Wind correlation error +14 +Target box off edge of area +Operational + + +4659 +033037 +Wind correlation error +15 +Pixel brightness out of bounds (noisy line) +Operational + + +4660 +033037 +Wind correlation error +16 +Target outside of latitude/longitude box +Operational + + +4661 +033037 +Wind correlation error +17 +Target outside of pressure minimum/maximum +Operational + + +4662 +033037 +Wind correlation error +18 +Autoeditor flagged slow vector +Operational + + +4663 +033037 +Wind correlation error +19 +Autoeditor flagged vectors +Operational + + +4664 +033037 +Wind correlation error +All 20 +Missing value +Operational + + +4665 +033038 +Quality flags for ground-based GNSS data +1 +Total zenith delay quality is considered poor +Operational + + +4666 +033038 +Quality flags for ground-based GNSS data +2 +GALILEO satellites used +Operational + + +4667 +033038 +Quality flags for ground-based GNSS data +3 +GLONASS satellites used +Operational + + +4668 +033038 +Quality flags for ground-based GNSS data +4 +GPS satellites used +Operational + + +4669 +033038 +Quality flags for ground-based GNSS data +5 +Meteorological data applied +Operational + + +4670 +033038 +Quality flags for ground-based GNSS data +6 +Atmospheric loading correction applied +Operational + + +4671 +033038 +Quality flags for ground-based GNSS data +7 +Ocean tide loading applied +Operational + + +4672 +033038 +Quality flags for ground-based GNSS data +8 +Climate quality data processing +Operational + + +4673 +033038 +Quality flags for ground-based GNSS data +9 +Near-real time data processing +Operational + + +4674 +033038 +Quality flags for ground-based GNSS data +All 10 +Missing value +Operational + + +4675 +033039 +Quality flags for radio occultation data +1 +Non-nominal quality +Operational + + +4676 +033039 +Quality flags for radio occultation data +2 +Offline product +Operational + + +4677 +033039 +Quality flags for radio occultation data +3 +Ascending occultation flag +Operational + + +4678 +033039 +Quality flags for radio occultation data +4 +Excess phase processing non-nominal +Operational + + +4679 +033039 +Quality flags for radio occultation data +5 +Bending angle processing non-nominal +Operational + + +4680 +033039 +Quality flags for radio occultation data +6 +Refractivity processing non-nominal +Operational + + +4681 +033039 +Quality flags for radio occultation data +7 +Meteorological processing non-nominal +Operational + + +4682 +033039 +Quality flags for radio occultation data +8-13 +Reserved +Operational + + +4683 +033039 +Quality flags for radio occultation data +14 +Background profile non-nominal +Operational + + +4684 +033039 +Quality flags for radio occultation data +15 +Background (i.e. not retrieved) profile present +Operational + + +4685 +033039 +Quality flags for radio occultation data +All 16 +Missing value +Operational + + +4686 +033041 +Attribute of following value +0 +The following value is the true value +Operational + + +4687 +033041 +Attribute of following value +1 +The following value is higher than the true value (the measurement hit the lower limit of the instrument) +Operational + + +4688 +033041 +Attribute of following value +2 +The following value is lower than the true value (the measurement hit the higher limit of the instrument) +Operational + + +4689 +033041 +Attribute of following value +3 +Missing value +Operational + + +4690 +033042 +Type of limit represented by following value +0 +Exclusive lower limit (>) +Operational + + +4691 +033042 +Type of limit represented by following value +1 +Inclusive lower limit (>=) +Operational + + +4692 +033042 +Type of limit represented by following value +2 +Exclusive upper limit (<) +Operational + + +4693 +033042 +Type of limit represented by following value +3 +Inclusive upper limit (=<) +Operational + + +4694 +033042 +Type of limit represented by following value +4-6 +Reserved +Operational + + +4695 +033042 +Type of limit represented by following value +7 +Missing value +Operational + + +4696 +033043 +AST confidence +1 +Sea MDS. Nadir only SST retrieval used 3.7 micron channel. Land MDS reserved +Operational + + +4697 +033043 +AST confidence +2 +Sea MDS. Dual view SST retrieval used 3.7 micron channel. Land MDS reserved +Operational + + +4698 +033043 +AST confidence +3 +Nadir view contains day time data +Operational + + +4699 +033043 +AST confidence +4 +Forward view contains day time data +Operational + + +4700 +033043 +AST confidence +5-7 +Reserved +Operational + + +4701 +033043 +AST confidence +All 8 +Missing value +Operational + + +4702 +033044 +ASAR quality information +1 +Input data mean outside nominal range flag +Operational + + +4703 +033044 +ASAR quality information +2 +Input data standard deviation outside nominal range flag +Operational + + +4704 +033044 +ASAR quality information +3 +Number of input data gaps > threshold value +Operational + + +4705 +033044 +ASAR quality information +4 +Percentage of missing lines > threshold value +Operational + + +4706 +033044 +ASAR quality information +5 +Doppler centroid uncertain. Confidence measure < specific value +Operational + + +4707 +033044 +ASAR quality information +6 +Doppler ambiguity estimate uncertain. Confidence measure < specific value +Operational + + +4708 +033044 +ASAR quality information +7 +Output data mean outside nominal range flag +Operational + + +4709 +033044 +ASAR quality information +8 +Output data standard deviation outside nominal range flag +Operational + + +4710 +033044 +ASAR quality information +9 +Chirp reconstruction failed or is of low quality flag +Operational + + +4711 +033044 +ASAR quality information +10 +Data set missing +Operational + + +4712 +033044 +ASAR quality information +11 +Invalid downlink parameters +Operational + + +4713 +033044 +ASAR quality information +12 +Azimuth cut-off iteration count. The azimuth cut-off fit did not converge within a minimum number of iterations +Operational + + +4714 +033044 +ASAR quality information +13 +Azimuth cut-off fit did not converge within a minimum number of iterations +Operational + + +4715 +033044 +ASAR quality information +14 +Phase information confidence measure. The imaginary spectral peak is less than a minimum threshold, or the zero lag shift is greater than a minimum threshold +Operational + + +4716 +033044 +ASAR quality information +All 15 +Missing value +Operational + + +4717 +033047 +Measurement confidence data +1 +Error detected and attempts to recover made +Operational + + +4718 +033047 +Measurement confidence data +2 +Anomaly in on-board data handling (OBDH) value detected +Operational + + +4719 +033047 +Measurement confidence data +3 +Anomaly in ultra stable oscillator processing (USOP) value detected +Operational + + +4720 +033047 +Measurement confidence data +4 +Errors detected by on-board computer +Operational + + +4721 +033047 +Measurement confidence data +5 +Automatic gain control (AGC) out of range +Operational + + +4722 +033047 +Measurement confidence data +6 +Reception (Rx) delay fault. Rx distance out of range +Operational + + +4723 +033047 +Measurement confidence data +7 +Wave form samples fault identifier. Error +Operational + + +4724 +033047 +Measurement confidence data +8 +S band anomaly/error detected +Operational + + +4725 +033047 +Measurement confidence data +9-11 +Reserved +Operational + + +4726 +033047 +Measurement confidence data +12 +Brightness temperature (channel 1) out of range +Operational + + +4727 +033047 +Measurement confidence data +13 +Brightness temperature (channel 2) out of range +Operational + + +4728 +033047 +Measurement confidence data +14 +Reserved +Operational + + +4729 +033047 +Measurement confidence data +15 +Ku band ocean retracking error +Operational + + +4730 +033047 +Measurement confidence data +16 +S band ocean retracking error +Operational + + +4731 +033047 +Measurement confidence data +17 +Ku band ice 1 retracking error +Operational + + +4732 +033047 +Measurement confidence data +18 +S band ice 1 retracking error +Operational + + +4733 +033047 +Measurement confidence data +19 +Ku band ice 2 retracking error +Operational + + +4734 +033047 +Measurement confidence data +20 +S band ice 2 retracking error +Operational + + +4735 +033047 +Measurement confidence data +21 +Ku band sea ice retracking error +Operational + + +4736 +033047 +Measurement confidence data +22 +Arithmetic fault error +Operational + + +4737 +033047 +Measurement confidence data +23 +Meteo data state. No map +Operational + + +4738 +033047 +Measurement confidence data +24 +Meteo data state. 1 map +Operational + + +4739 +033047 +Measurement confidence data +25 +Meteo data state. 2 maps degraded +Operational + + +4740 +033047 +Measurement confidence data +26 +Meteo data state. 2 maps nominal +Operational + + +4741 +033047 +Measurement confidence data +27 +Orbit propagator status for propagation mode, several errors +Operational + + +4742 +033047 +Measurement confidence data +28 +Orbit propagator status for propagation mode, warning detected +Operational + + +4743 +033047 +Measurement confidence data +29 +Orbit propagator status for initialization mode, several errors +Operational + + +4744 +033047 +Measurement confidence data +30 +Orbit propagator status for initialization mode, warning detected +Operational + + +4745 +033047 +Measurement confidence data +All 31 +Missing value +Operational + + +4746 +033048 +Confidence measure of SAR inversion +0 +Inversion successful +Operational + + +4747 +033048 +Confidence measure of SAR inversion +1 +Inversion not successful +Operational + + +4748 +033048 +Confidence measure of SAR inversion +2 +Reserved +Operational + + +4749 +033048 +Confidence measure of SAR inversion +3 +Missing value +Operational + + +4750 +033049 +Confidence measure of wind retrieval +0 +External wind direction used during inversion +Operational + + +4751 +033049 +Confidence measure of wind retrieval +1 +External wind direction not used during inversion +Operational + + +4752 +033049 +Confidence measure of wind retrieval +2 +Reserved +Operational + + +4753 +033049 +Confidence measure of wind retrieval +3 +Missing value +Operational + + +4754 +033050 +Global GTSPP quality flag +0 +Unqualified +Operational + + +4755 +033050 +Global GTSPP quality flag +1 +Correct value (all checks passed) +Operational + + +4756 +033050 +Global GTSPP quality flag +2 +Probably good but value inconsistent with statistics (differ from climatology) +Operational + + +4757 +033050 +Global GTSPP quality flag +3 +Probably bad (spike, gradient, etc., if other tests passed) +Operational + + +4758 +033050 +Global GTSPP quality flag +4 +Bad value, impossible value (out of scale, vertical instability, constant profile) +Operational + + +4759 +033050 +Global GTSPP quality flag +5 +Value modified during quality control +Operational + + +4760 +033050 +Global GTSPP quality flag +6-7 +Reserved +Operational + + +4761 +033050 +Global GTSPP quality flag +8 +Interpolated value +Operational + + +4762 +033050 +Global GTSPP quality flag +9 +Good for operational use; Caution; check literature for other uses +Operational + + +4763 +033050 +Global GTSPP quality flag +10-14 +Reserved +Operational + + +4764 +033050 +Global GTSPP quality flag +15 +Missing value +Operational + + +4765 +033052 +S band ocean retracking quality +1-20 +First 20 least significant bits correspond to the 20 values (one per data block containing: 0 = valid measurement, 1 = invalid). Bit 1 applies to the 20th data block +Operational + + +4766 +033052 +S band ocean retracking quality +All 21 +Missing value +Operational + + +4767 +033053 +Ku band ocean retracking quality +1-20 +First 20 least significant bits correspond to the 20 values (one per data block containing: 0 = valid measurement, 1=invalid). Bit 1 applies to the 20th data block +Operational + + +4768 +033053 +Ku band ocean retracking quality +All 21 +Missing value +Operational + + +4769 +033060 +GqisFlagQual - individual IASI-System quality flag +0 +Good +Operational + + +4770 +033060 +GqisFlagQual - individual IASI-System quality flag +1 +Bad +Operational + + +4771 +033060 +GqisFlagQual - individual IASI-System quality flag +2 +Reserved +Operational + + +4772 +033060 +GqisFlagQual - individual IASI-System quality flag +3 +Missing value +Operational + + +4773 +033066 +AMV quality flag +1-21 +Reserved +Operational + + +4774 +033066 +AMV quality flag +22 +Correlation surface constraint fails +Operational + + +4775 +033066 +AMV quality flag +23 +Reserved +Operational + + +4776 +033066 +AMV quality flag +All 24 +Missing value +Operational + + +4777 +033070 +Total ozone quality +0 +Good retrieval +Operational + + +4778 +033070 +Total ozone quality +1 +Bad aerosol information flag or NOAA-16 radiance anomaly +Operational + + +4779 +033070 +Total ozone quality +2 +Solar zenith angle greater than 84 degrees +Operational + + +4780 +033070 +Total ozone quality +3 +380 nm residue greater than limit +Operational + + +4781 +033070 +Total ozone quality +4 +Ozone inconsistency +Operational + + +4782 +033070 +Total ozone quality +5 +Difference between profile ozone and step 3 total ozone exceeds threshold (set to 25 DU) +Operational + + +4783 +033070 +Total ozone quality +6 +Step 1 ozone iteration did not converge +Operational + + +4784 +033070 +Total ozone quality +7 +Any channel residue greater than 16 or bad radiance +Operational + + +4785 +033070 +Total ozone quality +8 +Insufficient pixels - not processed +Operational + + +4786 +033070 +Total ozone quality +9 +First guess good - ozone forecast data used +Operational + + +4787 +033070 +Total ozone quality +10 +High cloud in pixel - not processed +Operational + + +4788 +033070 +Total ozone quality +11 +Successful ozone retrieval +Operational + + +4789 +033070 +Total ozone quality +12 +Unsuccessful ozone retrieval +Operational + + +4790 +033070 +Total ozone quality +13-14 +Reserved +Operational + + +4791 +033070 +Total ozone quality +15 +Missing value +Operational + + +4792 +033071 +Profile ozone quality +0 +Good retrieval +Operational + + +4793 +033071 +Profile ozone quality +1 +Solar zenith angle greater than 84 degrees +Operational + + +4794 +033071 +Profile ozone quality +2 +Difference between step 3 and profile total ozone greater than limit (25 DU) +Operational + + +4795 +033071 +Profile ozone quality +3 +Average final residue for wavelengths used in retrieval greater than threshold +Operational + + +4796 +033071 +Profile ozone quality +4 +Final residue greater than 3 times a priori error +Operational + + +4797 +033071 +Profile ozone quality +5 +Difference between retrieved and a priori greater than 3 times a priori error +Operational + + +4798 +033071 +Profile ozone quality +6 +Non-convergent solution +Operational + + +4799 +033071 +Profile ozone quality +7 +Upper level profile anomaly or stray light anomaly +Operational + + +4800 +033071 +Profile ozone quality +8 +Initial residue greater than 18.0 N-value units +Operational + + +4801 +033071 +Profile ozone quality +9-14 +Reserved +Operational + + +4802 +033071 +Profile ozone quality +15 +Missing value +Operational + + +4803 +033072 +Ozone error +0 +Good retrieval +Operational + + +4804 +033072 +Ozone error +1 +Reflectivity out of range +Operational + + +4805 +033072 +Ozone error +2 +Larger pixels (Number of cross-track pixels less than 32) or backward scans error +Operational + + +4806 +033072 +Ozone error +3 +Solar zenith angle greater than 88 degrees +Operational + + +4807 +033072 +Ozone error +4 +Latitude/longitude out of range +Operational + + +4808 +033072 +Ozone error +5 +Viewing zenith angle or solar zenith angle out of range +Operational + + +4809 +033072 +Ozone error +6 +Step-one process failed in general +Operational + + +4810 +033072 +Ozone error +7 +First guess ozone out of range +Operational + + +4811 +033072 +Ozone error +8 +Too many iterations (exceed 8) +Operational + + +4812 +033072 +Ozone error +9 +Step-one residue calculation failed +Operational + + +4813 +033072 +Ozone error +10 +Step-two process failed in general +Operational + + +4814 +033072 +Ozone error +11 +First guess ozone profile out of range +Operational + + +4815 +033072 +Ozone error +12 +Step-two ozone value out of range +Operational + + +4816 +033072 +Ozone error +13 +Step-two residue calculation failed +Operational + + +4817 +033072 +Ozone error +14 +Step-three process failed in general +Operational + + +4818 +033072 +Ozone error +15 +Polarization correction accuracy alert +Operational + + +4819 +033072 +Ozone error +16 +Radiance or irradiance less or equal to zero +Operational + + +4820 +033072 +Ozone error +17-30 +Reserved +Operational + + +4821 +033072 +Ozone error +31 +Missing value +Operational + + +4822 +033075 +Scan-level quality flags +1 +Gap in raw data record (RDR) data detected (i.e., missing scan(s) preceding the current scan) +Operational + + +4823 +033075 +Scan-level quality flags +2 +Recorded time is not in sequence (i.e., the scan start time is out of sequence) +Operational + + +4824 +033075 +Scan-level quality flags +3 +Lambda monitored calculation cannot be updated +(see Note 1) +Operational + + +4825 +033075 +Scan-level quality flags +4 +The measured temperatures of any instrument components (e.g., beam-splitter, scan mirror, scan baffle) are outside the allowable ranges +(see Note 2) +Operational + + +4826 +033075 +Scan-level quality flags +5 +At least one of the monitored instrument temperatures has drifted more than a specified tolerance value +Operational + + +4827 +033075 +Scan-level quality flags +6-12 +Reserved +Operational + + +4828 +033075 +Scan-level quality flags +All 13 +Missing value +Operational + + +4829 +033076 +Calibration quality flags +1 +Lunar intrusion on first deep space view +(see Note) +Operational + + +4830 +033076 +Calibration quality flags +2 +Lunar intrusion on second deep space view +(see Note) +Operational + + +4831 +033076 +Calibration quality flags +3-8 +Reserved +Operational + + +4832 +033076 +Calibration quality flags +All 9 +Missing value +Operational + + +4833 +033077 +Field-of-view quality flags +1 +Degraded SDR* quality +Operational + + +4834 +033077 +Field-of-view quality flags +2 +Invalid SDR* quality +(see Note 1) +Operational + + +4835 +033077 +Field-of-view quality flags +3 +Invalid SDR* geolocation information +Operational + + +4836 +033077 +Field-of-view quality flags +4 +Degraded radiometric calibration +Operational + + +4837 +033077 +Field-of-view quality flags +5 +Invalid radiometric calibration +(see Note 2) +Operational + + +4838 +033077 +Field-of-view quality flags +6 +Degraded spectral calibration +Operational + + +4839 +033077 +Field-of-view quality flags +7 +Invalid spectral calibration +(see Note 3) +Operational + + +4840 +033077 +Field-of-view quality flags +8 +Fringe count error detected and corrected +(see Note 4) +Operational + + +4841 +033077 +Field-of-view quality flags +9 +Day/night indicator +(see Note 5) +Operational + + +4842 +033077 +Field-of-view quality flags +10 +Invalid RDR** data +(see Note 6) +Operational + + +4843 +033077 +Field-of-view quality flags +11 +Significant fringe count error detected +(see Note 7) +Operational + + +4844 +033077 +Field-of-view quality flags +12 +Bit trim failed +Operational + + +4845 +033077 +Field-of-view quality flags +13-18 +Reserved +Operational + + +4846 +033077 +Field-of-view quality flags +All 19 +Missing value +Operational + + +4847 +033078 +Geolocation quality +0 +Nominal - altitude and ephemeris data available +Operational + + +4848 +033078 +Geolocation quality +1 +Missing at most a small gap of altitude and ephemeris data +Operational + + +4849 +033078 +Geolocation quality +2 +Missing more than a small gap of altitude and ephemeris data, but no more than a granule boundary +Operational + + +4850 +033078 +Geolocation quality +3 +Missing more than a granule boundary of altitude and ephemeris data +Operational + + +4851 +033078 +Geolocation quality +4-14 +Reserved +Operational + + +4852 +033078 +Geolocation quality +15 +Missing value +Operational + + +4853 +033079 +Granule level quality flags +1-5 +Reserved +Operational + + +4854 +033079 +Granule level quality flags +6 +The No. 1-No. 7 health checks failed +Operational + + +4855 +033079 +Granule level quality flags +7 +The No. 8-No. 15 health checks failed +Operational + + +4856 +033079 +Granule level quality flags +8 +The No. 16-No. 23 health checks failed +Operational + + +4857 +033079 +Granule level quality flags +9 +The No. 24-No. 31 health checks failed +Operational + + +4858 +033079 +Granule level quality flags +10 +The No. 32-No. 39 health checks failed +Operational + + +4859 +033079 +Granule level quality flags +11 +The No. 40-No. 47 health checks failed +Operational + + +4860 +033079 +Granule level quality flags +12 +The No. 48-No. 55 health checks failed +Operational + + +4861 +033079 +Granule level quality flags +13 +The No. 56-No. 63 health checks failed +Operational + + +4862 +033079 +Granule level quality flags +14 +The No. 64-No. 70 health checks failed +Operational + + +4863 +033079 +Granule level quality flags +15 +Quadratic correction applied to the radiometric transfer function for non-linearity correction +Operational + + +4864 +033079 +Granule level quality flags +All 16 +Missing value +Operational + + +4865 +033080 +Scan level quality flags +1-6 +Reserved +Operational + + +4866 +033080 +Scan level quality flags +7 +Divide-by-zero condition or computation loop failed to converge in the K/Ka and V (KAV) band PRT +* +Operational + + +4867 +033080 +Scan level quality flags +8 +Divide-by-zero condition or computation loop failed to converge in the WG band PRT +Operational + + +4868 +033080 +Scan level quality flags +9 +Divide-by-zero condition or computation loop failed to converge in the K/Ka, V, W, G band receiver shelf PRT K temperature computation +Operational + + +4869 +033080 +Scan level quality flags +10 +Out of range condition for the K/Ka and V band PRT +Operational + + +4870 +033080 +Scan level quality flags +11 +Out of range condition for the WG band PRT +Operational + + +4871 +033080 +Scan level quality flags +12 +KAV PRT temperature inconsistency +Operational + + +4872 +033080 +Scan level quality flags +13 +WG PRT temperature inconsistency +Operational + + +4873 +033080 +Scan level quality flags +14 +Time sequence error +Operational + + +4874 +033080 +Scan level quality flags +15 +Data gap - missing scan(s) preceding the current scan +Operational + + +4875 +033080 +Scan level quality flags +16 +KAV PRT sufficiency - insufficient KAV PRT data are available +Operational + + +4876 +033080 +Scan level quality flags +17 +WG PRT sufficiency - insufficient WG PRT data are available +Operational + + +4877 +033080 +Scan level quality flags +18 +Space view antenna position error +Operational + + +4878 +033080 +Scan level quality flags +19 +Blackbody antenna position error +Operational + + +4879 +033080 +Scan level quality flags +All 20 +Missing value +Operational + + +4880 +033081 +Channel data quality flags +1-2 +Reserved +Operational + + +4881 +033081 +Channel data quality flags +3 +Moon in space view +Operational + + +4882 +033081 +Channel data quality flags +4 +Gain error - the lowest blackbody count is smaller than or equal to the highest space view count in a scan +Operational + + +4883 +033081 +Channel data quality flags +5 +Calibration with fewer than preferred samples +Operational + + +4884 +033081 +Channel data quality flags +6 +Space view data sufficiency check - insufficient space view samples are available +Operational + + +4885 +033081 +Channel data quality flags +7 +Blackbody view data sufficiency check - insufficient blackbody view samples are available +Operational + + +4886 +033081 +Channel data quality flags +8 +Out of range condition for the space view +Operational + + +4887 +033081 +Channel data quality flags +9 +Out of range condition for the blackbody view +Operational + + +4888 +033081 +Channel data quality flags +10 +Space view inconsistency +Operational + + +4889 +033081 +Channel data quality flags +11 +Blackbody view inconsistency +Operational + + +4890 +033081 +Channel data quality flags +All 12 +Missing value +Operational + + +4891 +033082 +Geolocation quality flags +1-5 +Reserved +Operational + + +4892 +033082 +Geolocation quality flags +6 +Within South Atlantic anomaly +Operational + + +4893 +033082 +Geolocation quality flags +7 +Invalid input data (indicates that any of the spacecraft ephemeris or attitude data are invalid) +Operational + + +4894 +033082 +Geolocation quality flags +8 +Bad pointing (indicates that the sensor LOS does not intersect the geoid, is near the limb, has invalid sensor angles or other similar condition) +Operational + + +4895 +033082 +Geolocation quality flags +9 +Bad terrain (indicates that the algorithm could not obtain a valid terrain value) +Operational + + +4896 +033082 +Geolocation quality flags +10 +Invalid solar angles +Operational + + +4897 +033082 +Geolocation quality flags +11 +Missing at most a small gap of altitude and ephemeris data +Operational + + +4898 +033082 +Geolocation quality flags +12 +Missing more than a small gap of altitude and ephemeris data, but no more than a granule boundary +Operational + + +4899 +033082 +Geolocation quality flags +13 +Missing more than a granule boundary of altitude and ephemeris data +Operational + + +4900 +033082 +Geolocation quality flags +14 +The number of encoder pulse values per delta time is not as expected +Operational + + +4901 +033082 +Geolocation quality flags +15 +Solar eclipse during Earth view scan +Operational + + +4902 +033082 +Geolocation quality flags +All 16 +Missing value +Operational + + +4903 +033083 +Radiance data quality flags +1-5 +Reserved +Operational + + +4904 +033083 +Radiance data quality flags +6 +Pixel is affected by radio-frequency interference +Operational + + +4905 +033083 +Radiance data quality flags +7 +Poor calibration quality due to bad space view offsets, OBC * view offsets, etc. or use of a previous calibration view +Operational + + +4906 +033083 +Radiance data quality flags +8 +Saturated pixel +Operational + + +4907 +033083 +Radiance data quality flags +9 +Missing data -data required for calibration processing are not available for processing +Operational + + +4908 +033083 +Radiance data quality flags +10 +Calibrated pixel radiance out of range +Operational + + +4909 +033083 +Radiance data quality flags +11 +Calibrated pixel reflectance or EBBT out of range +Operational + + +4910 +033083 +Radiance data quality flags +12 +The moon has corrupted the space view +Operational + + +4911 +033083 +Radiance data quality flags +13 +Scan data is not present (no valid data) +Operational + + +4912 +033083 +Radiance data quality flags +14 +Quality for this scan-line is reduced. The value is determined by the combined number of steps required to find a replacement for thermistor or calibration source data +Operational + + +4913 +033083 +Radiance data quality flags +15 +Bad detector +Operational + + +4914 +033083 +Radiance data quality flags +All 16 +Missing value +Operational + + +4915 +033084 +Pixel level quality flags +1-5 +Reserved +Operational + + +4916 +033084 +Pixel level quality flags +6 +Bulk SST outside of validation range +Operational + + +4917 +033084 +Pixel level quality flags +7 +Skin SST outside of validation range +Operational + + +4918 +033084 +Pixel level quality flags +8 +Sensor zenith angle > 40 degrees (pixel is not within 40 degrees of nadir and therefore is not of high quality) +Operational + + +4919 +033084 +Pixel level quality flags +9 +Degradation - horizontal cell size (HCS) > 1.3 km (HCS > 1.3 km, swath width > 1 700 km, sensor zenith angle > 50.3 degrees) +Operational + + +4920 +033084 +Pixel level quality flags +10 +Exclusion: no ocean in pixel +Operational + + +4921 +033084 +Pixel level quality flags +11 +Degradation: aerosol optical thickness (AOT) > 0.6 (AOT in horizontal cell > 0.6 on the slant path (AOT @550 nm)) +Operational + + +4922 +033084 +Pixel level quality flags +12 +Exclusion: AOT > 1.0 (AOT in horizontal cell > 1.0 on the slant path (AOT @550 nm)) +Operational + + +4923 +033084 +Pixel level quality flags +13 +Sun glint present in pixel +Operational + + +4924 +033084 +Pixel level quality flags +14 +Ice concentration threshold exceeded (SST not retrieved due to ice concentration exceeding threshold in system spec) +Operational + + +4925 +033084 +Pixel level quality flags +15 +Thin cirrus detected in pixel +Operational + + +4926 +033084 +Pixel level quality flags +All 16 +Missing value +Operational + + +4927 +033085 +Aerosol optical thickness quality flags +1-3 +Reserved +Operational + + +4928 +033085 +Aerosol optical thickness quality flags +4 +Angstrom exponent is outside of the system specification range +Operational + + +4929 +033085 +Aerosol optical thickness quality flags +5 +Excluded, Angstrom exponent for AOT* at 550 nm < 0.15 +Operational + + +4930 +033085 +Aerosol optical thickness quality flags +6 +Bright surface in cell (if over land), or shallow or turbid water in cell (if over ocean) +Operational + + +4931 +033085 +Aerosol optical thickness quality flags +7 +Low sun, excluded, Solar Zenith Angle > 80 degrees +Operational + + +4932 +033085 +Aerosol optical thickness quality flags +8 +Low sun, degraded, 65 degrees < Solar Zenith Angle =< 80 degrees +Operational + + +4933 +033085 +Aerosol optical thickness quality flags +9 +Fire detected in cell +Operational + + +4934 +033085 +Aerosol optical thickness quality flags +10 +Snow/Ice in cell +Operational + + +4935 +033085 +Aerosol optical thickness quality flags +11 +Cloud shadow in cell +Operational + + +4936 +033085 +Aerosol optical thickness quality flags +12 +Sun glint in cell +Operational + + +4937 +033085 +Aerosol optical thickness quality flags +13 +Bad SDR** data present in horizontal cell (quality of AOT/APSP*** degraded or AOT/APSP not retrieved due to bad SDR data in horizontal cell) +Operational + + +4938 +033085 +Aerosol optical thickness quality flags +14 +Cirrus contamination in cell +Operational + + +4939 +033085 +Aerosol optical thickness quality flags +15 +Cloud adjacent to cell +Operational + + +4940 +033085 +Aerosol optical thickness quality flags +16 +Cloud contamination in cell +Operational + + +4941 +033085 +Aerosol optical thickness quality flags +17 +AOT is outside of the system specification range +Operational + + +4942 +033085 +Aerosol optical thickness quality flags +All 18 +Missing value +Operational + + +4943 +033086 +Quality of pixel level retrieval +0 +Not retrieved +Operational + + +4944 +033086 +Quality of pixel level retrieval +1 +Excluded +Operational + + +4945 +033086 +Quality of pixel level retrieval +2 +Degraded +Operational + + +4946 +033086 +Quality of pixel level retrieval +3 +High quality +Operational + + +4947 +033086 +Quality of pixel level retrieval +4-6 +Reserved +Operational + + +4948 +033086 +Quality of pixel level retrieval +7 +Missing value +Operational + + +4949 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +0 +Less than or equal to 10% +Operational + + +4950 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +1 +Greater than 10% but less than or equal to 20% +Operational + + +4951 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +2 +Greater than 20% but less than or equal to 30% +Operational + + +4952 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +3 +Greater than 30% but less than or equal to 40% +Operational + + +4953 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +4 +Greater than 40% but less than or equal to 50% +Operational + + +4954 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +5 +Greater than 50% but less than or equal to 60% +Operational + + +4955 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +6 +Greater than 60% but less than or equal to 70% +Operational + + +4956 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +7 +Greater than 70% but less than or equal to 80% +Operational + + +4957 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +8 +Greater than 80% +Operational + + +4958 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +9-14 +Reserved +Operational + + +4959 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +15 +Missing value +Operational + + +4960 +033088 +Ozone total column quality flag +1-5 +Reserved +Operational + + +4961 +033088 +Ozone total column quality flag +6 +Surface reflectivity out of range +Operational + + +4962 +033088 +Ozone total column quality flag +7 +Residual too large +Operational + + +4963 +033088 +Ozone total column quality flag +8 +Aerosol index limit exceeded +Operational + + +4964 +033088 +Ozone total column quality flag +9 +Solar eclipse present (all or part of the IFOV* is affected by a solar eclipse, umbra or penumbra viewing) +Operational + + +4965 +033088 +Ozone total column quality flag +10 +Sun glint present within IFOV +Operational + + +4966 +033088 +Ozone total column quality flag +11 +Snow or ice surface is within the IFOV +Operational + + +4967 +033088 +Ozone total column quality flag +12 +Solar zenith angle in excluded (night) condition (solar zenith angle >= 88 degrees) +Operational + + +4968 +033088 +Ozone total column quality flag +13 +Solar zenith angle in degraded condition (80 degrees =< solar zenith angle < 88 degrees) +Operational + + +4969 +033088 +Ozone total column quality flag +14 +SO2 index > 6 DU (degraded condition) +Operational + + +4970 +033088 +Ozone total column quality flag +15 +Residues are not consistent (indicates whether the residues from the 22 wavelengths are consistent) +Operational + + +4971 +033088 +Ozone total column quality flag +16 +O3 triplet selection is not consistent within retrieval (ozone triplet consistency) +Operational + + +4972 +033088 +Ozone total column quality flag +17 +Input data quality is not good +Operational + + +4973 +033088 +Ozone total column quality flag +All 18 +Missing value +Operational + + +4974 +033092 +Band specific ocean quality flag +1 +Altimeter operating +Operational + + +4975 +033092 +Band specific ocean quality flag +2 +Microwave radiometer (MWR) operating +Operational + + +4976 +033092 +Band specific ocean quality flag +3-8 +Reserved +Operational + + +4977 +033092 +Band specific ocean quality flag +All 9 +Missing value +Operational + + +4978 +035000 +FM and regional code number +000-099 +International FM Codes +Operational + + +4979 +035000 +FM and regional code number +100-199 +RA I Codes +Operational + + +4980 +035000 +FM and regional code number +200-299 +RA II Codes +Operational + + +4981 +035000 +FM and regional code number +300-399 +RA III Codes +Operational + + +4982 +035000 +FM and regional code number +400-499 +RA IV Codes +Operational + + +4983 +035000 +FM and regional code number +500-599 +RA V Codes +Operational + + +4984 +035000 +FM and regional code number +600-699 +RA VI Codes +Operational + + +4985 +035000 +FM and regional code number +700-799 +Antarctic Codes +Operational + + +4986 +035000 +FM and regional code number +800-999 +Reserved +Operational + + +4987 +035000 +FM and regional code number +1000-1022 +Not used +Operational + + +4988 +035000 +FM and regional code number +1023 +Missing value +Operational + + +4989 +035001 +Time frame for monitoring +0 +Real time +Operational + + +4990 +035001 +Time frame for monitoring +1 +Near-real time +Operational + + +4991 +035001 +Time frame for monitoring +2 +Non-real time +Operational + + +4992 +035001 +Time frame for monitoring +3-6 +Reserved +Operational + + +4993 +035001 +Time frame for monitoring +7 +Missing value +Operational + + +4994 +035030 +Discrepancies in the availability of expected data +0 +No discrepancies +Operational + + +4995 +035030 +Discrepancies in the availability of expected data +1 +Non-compliance with standard and recommended practices and procedures including those of monitoring +Operational + + +4996 +035030 +Discrepancies in the availability of expected data +2 +Catalogues of meteorological bulletins not updated in a timely manner +Operational + + +4997 +035030 +Discrepancies in the availability of expected data +3 +Incorrect routing directories +Operational + + +4998 +035030 +Discrepancies in the availability of expected data +4 +Lack of flexibility in the routing arrangements +Operational + + +4999 +035030 +Discrepancies in the availability of expected data +5 +Deficiencies in the operation of GTS centres and circuits +Operational + + +5000 +035030 +Discrepancies in the availability of expected data +6 +Loss of data or delays in relaying data on the GTS +Operational + + +5001 +035030 +Discrepancies in the availability of expected data +7 +Routing of data different from the routing provided in the plan +Operational + + +5002 +035030 +Discrepancies in the availability of expected data +8 +Various malpractices +Operational + + +5003 +035030 +Discrepancies in the availability of expected data +9-14 +Reserved +Operational + + +5004 +035030 +Discrepancies in the availability of expected data +15 +Missing value +Operational + + +5005 +035031 +Qualifier on monitoring results +1 +Sufficient and all of acceptable quality +Operational + + +5006 +035031 +Qualifier on monitoring results +2 +Sufficient but partly of acceptable quality +Operational + + +5007 +035031 +Qualifier on monitoring results +3 +Insufficient but all of acceptable quality +Operational + + +5008 +035031 +Qualifier on monitoring results +4 +Insufficient and of unacceptable quality +Operational + + +5009 +035031 +Qualifier on monitoring results +5 +Some messages not complete +Operational + + +5010 +035031 +Qualifier on monitoring results +6 +Suspect or wrongly coded groups could not be interpreted confidently +Operational + + +5011 +035031 +Qualifier on monitoring results +7 +Gross coding errors +Operational + + +5012 +035031 +Qualifier on monitoring results +8 +Transmission sequential order not observed +Operational + + +5013 +035031 +Qualifier on monitoring results +9 +Report completely garbled and thus discarded +Operational + + +5014 +035031 +Qualifier on monitoring results +10 +Deficiencies identified and rectified +Operational + + +5015 +035031 +Qualifier on monitoring results +11 +Deficiencies identified but not rectified +Operational + + +5016 +035031 +Qualifier on monitoring results +12 +Deficiencies not identified +Operational + + +5017 +035031 +Qualifier on monitoring results +13 +Measuring errors +Operational + + +5018 +035031 +Qualifier on monitoring results +14 +Mutual inconsistency +Operational + + +5019 +035031 +Qualifier on monitoring results +15 +Temporal inconsistency +Operational + + +5020 +035031 +Qualifier on monitoring results +16 +Forecast error +Operational + + +5021 +035031 +Qualifier on monitoring results +17 +Bias +Operational + + +5022 +035031 +Qualifier on monitoring results +18 +Improve system of quality control +Operational + + +5023 +035031 +Qualifier on monitoring results +19 +Expand training programmes +Operational + + +5024 +035031 +Qualifier on monitoring results +20-98 +Reserved +Operational + + +5025 +035031 +Qualifier on monitoring results +99-126 +Not used +Operational + + +5026 +035031 +Qualifier on monitoring results +127 +Missing value +Operational + + +5027 +035032 +Cause of missing data +1 +Data groups missing due to radio fading +Operational + + +5028 +035032 +Cause of missing data +2 +Data groups missing due to outage of centre +Operational + + +5029 +035032 +Cause of missing data +3 +Data groups missing due to outage of circuit +Operational + + +5030 +035032 +Cause of missing data +4 +Non-implementation or maintenance of required RBSN density +Operational + + +5031 +035032 +Cause of missing data +5 +Shortage of qualified staff to man stations +Operational + + +5032 +035032 +Cause of missing data +6 +Lack of consumables +Operational + + +5033 +035032 +Cause of missing data +7 +Instrument failure +Operational + + +5034 +035032 +Cause of missing data +8 +Non-adherence to telecommunication procedures +Operational + + +5035 +035032 +Cause of missing data +9 +Some observing programmes ceased +Operational + + +5036 +035032 +Cause of missing data +10-14 +Not used +Operational + + +5037 +035032 +Cause of missing data +15 +Missing value +Operational + + +5038 +035033 +Observation and collection deficiencies +1 +No deficiency +Operational + + +5039 +035033 +Observation and collection deficiencies +2 +Observations not made regularly +Operational + + +5040 +035033 +Observation and collection deficiencies +3 +Observations not made at right time +Operational + + +5041 +035033 +Observation and collection deficiencies +4 +Observations made but not disseminated +Operational + + +5042 +035033 +Observation and collection deficiencies +5 +Observations made and sent to incorrect users +Operational + + +5043 +035033 +Observation and collection deficiencies +6 +Collection not received +Operational + + +5044 +035033 +Observation and collection deficiencies +7 +Collection transmitted late +Operational + + +5045 +035033 +Observation and collection deficiencies +8 +Collection not transmitted +Operational + + +5046 +035033 +Observation and collection deficiencies +9 +Difficulties in HF propagation and selection of suitable frequency +Operational + + +5047 +035033 +Observation and collection deficiencies +10 +Difficulties in maintenance of communication equipment at remote stations +Operational + + +5048 +035033 +Observation and collection deficiencies +11 +No alternative arrangement for routing meteorological observation +Operational + + +5049 +035033 +Observation and collection deficiencies +12-99 +Reserved +Operational + + +5050 +035033 +Observation and collection deficiencies +100-122 +Not used +Operational + + +5051 +035033 +Observation and collection deficiencies +123 +Missing value +Operational + + +5052 +035034 +Statistical trends for availability of data (during the survey period(s)) +1 +Slight improvement +Operational + + +5053 +035034 +Statistical trends for availability of data (during the survey period(s)) +2 +Significant improvement +Operational + + +5054 +035034 +Statistical trends for availability of data (during the survey period(s)) +3 +Most significant improvement +Operational + + +5055 +035034 +Statistical trends for availability of data (during the survey period(s)) +4 +Steady +Operational + + +5056 +035034 +Statistical trends for availability of data (during the survey period(s)) +5 +Decreasing +Operational + + +5057 +035034 +Statistical trends for availability of data (during the survey period(s)) +6 +Efforts required to improve night-time observations +Operational + + +5058 +035034 +Statistical trends for availability of data (during the survey period(s)) +7 +Missing value +Operational + + +5059 +035035 +Reason for termination +0 +Reserved +Operational + + +5060 +035035 +Reason for termination +1 +Balloon burst +Operational + + +5061 +035035 +Reason for termination +2 +Balloon forced down by icing +Operational + + +5062 +035035 +Reason for termination +3 +Leaking or floating balloon +Operational + + +5063 +035035 +Reason for termination +4 +Weak or fading signal +Operational + + +5064 +035035 +Reason for termination +5 +Battery failure +Operational + + +5065 +035035 +Reason for termination +6 +Ground equipment failure +Operational + + +5066 +035035 +Reason for termination +7 +Signal interference +Operational + + +5067 +035035 +Reason for termination +8 +Radiosonde failure +Operational + + +5068 +035035 +Reason for termination +9 +Excessive missing data frames +Operational + + +5069 +035035 +Reason for termination +10 +Reserved +Operational + + +5070 +035035 +Reason for termination +11 +Excessive missing temperature +Operational + + +5071 +035035 +Reason for termination +12 +Excessive missing pressure +Operational + + +5072 +035035 +Reason for termination +13 +User terminated +Operational + + +5073 +035035 +Reason for termination +14 +Sudden loss of signal +Operational + + +5074 +035035 +Reason for termination +15 +Tracking lost +Operational + + +5075 +035035 +Reason for termination +16 +Increasing pressure +Operational + + +5076 +035035 +Reason for termination +17 +Invalid and/or missed data time limits exceeded +Operational + + +5077 +035035 +Reason for termination +18-29 +Reserved +Operational + + +5078 +035035 +Reason for termination +30 +Other +Operational + + +5079 +035035 +Reason for termination +31 +Missing value +Operational + + +5080 +040005 +Soil moisture correction flag +1 +Soil moisture between -20% and 0% +Operational + + +5081 +040005 +Soil moisture correction flag +2 +Soil moisture between 100% and 120% +Operational + + +5082 +040005 +Soil moisture correction flag +3 +Correction of wet backscatter reference +Operational + + +5083 +040005 +Soil moisture correction flag +4 +Correction of dry backscatter reference +Operational + + +5084 +040005 +Soil moisture correction flag +5 +Correction of volume scattering in sand +Operational + + +5085 +040005 +Soil moisture correction flag +6-7 +Reserved +Operational + + +5086 +040005 +Soil moisture correction flag +All 8 +Missing value +Operational + + +5087 +040006 +Soil moisture processing flag +1 +Not soil +Operational + + +5088 +040006 +Soil moisture processing flag +2 +Sensitivity to soil moisture below limit +Operational + + +5089 +040006 +Soil moisture processing flag +3 +Azimuthal noise above limit +Operational + + +5090 +040006 +Soil moisture processing flag +4 +Backscatter Fore-Aft beam out of range +Operational + + +5091 +040006 +Soil moisture processing flag +5 +Slope Mid-Fore beam out of range +Operational + + +5092 +040006 +Soil moisture processing flag +6 +Slope Mid-Aft beam out of range +Operational + + +5093 +040006 +Soil moisture processing flag +7 +Soil moisture below -20% +Operational + + +5094 +040006 +Soil moisture processing flag +8 +Soil moisture above 120% +Operational + + +5095 +040006 +Soil moisture processing flag +9-15 +Reserved +Operational + + +5096 +040006 +Soil moisture processing flag +All 16 +Missing value +Operational + + +5097 +040011 +Interpolation flag +1 +Mean sea-surface (MSS) interpolation flag +Operational + + +5098 +040011 +Interpolation flag +2 +Ocean tide solution 1 interpolation flag (0 = 4 points over ocean, 1 = less than 4 points) +Operational + + +5099 +040011 +Interpolation flag +3 +Ocean tide solution 2 interpolation flag (0 = 4 points over ocean, 1 = less than 4 points) +Operational + + +5100 +040011 +Interpolation flag +4 +Meteorological data interpolation flag (0 = 4 points over ocean, 1 = less than 4 points) +Operational + + +5101 +040011 +Interpolation flag +5-7 +Reserved +Operational + + +5102 +040011 +Interpolation flag +All 8 +Missing value +Operational + + +5103 +040012 +Radiometer data quality flag +1 +18.7 GHz brightness temperature +Operational + + +5104 +040012 +Radiometer data quality flag +2 +23.8 GHz brightness temperature +Operational + + +5105 +040012 +Radiometer data quality flag +3 +34 GHz brightness temperature +Operational + + +5106 +040012 +Radiometer data quality flag +4-7 +Reserved +Operational + + +5107 +040012 +Radiometer data quality flag +All 8 +Missing value +Operational + + +5108 +040013 +Radiometer brightness temperature interpretation flag +0 +Interpolation with no gap between JMR* data +Operational + + +5109 +040013 +Radiometer brightness temperature interpretation flag +1 +Interpolation with gaps between JMR* data +Operational + + +5110 +040013 +Radiometer brightness temperature interpretation flag +2 +Extrapolation of JMR* data +Operational + + +5111 +040013 +Radiometer brightness temperature interpretation flag +3 +Failure of extrapolation and interpolation +Operational + + +5112 +040013 +Radiometer brightness temperature interpretation flag +4-6 +Reserved +Operational + + +5113 +040013 +Radiometer brightness temperature interpretation flag +7 +Missing value +Operational + + +5114 +040020 +GqisFlagQualDetailed - quality flag for the system +1 +NZPD and complex calibration error +Operational + + +5115 +040020 +GqisFlagQualDetailed - quality flag for the system +2 +Band 3 affected by spike +Operational + + +5116 +040020 +GqisFlagQualDetailed - quality flag for the system +3 +Band 3 affected by saturation +Operational + + +5117 +040020 +GqisFlagQualDetailed - quality flag for the system +4 +Band 2 affected by spike +Operational + + +5118 +040020 +GqisFlagQualDetailed - quality flag for the system +5 +Band 1 affected by spike +Operational + + +5119 +040020 +GqisFlagQualDetailed - quality flag for the system +6 +Overflow/under flow +Operational + + +5120 +040020 +GqisFlagQualDetailed - quality flag for the system +7 +On-board processing error +Operational + + +5121 +040020 +GqisFlagQualDetailed - quality flag for the system +8 +Spectral calibration error +Operational + + +5122 +040020 +GqisFlagQualDetailed - quality flag for the system +9 +Radiometric calibration error +Operational + + +5123 +040020 +GqisFlagQualDetailed - quality flag for the system +10 +Missing AVHRR data +Operational + + +5124 +040020 +GqisFlagQualDetailed - quality flag for the system +11 +Missing IIS data +Operational + + +5125 +040020 +GqisFlagQualDetailed - quality flag for the system +12 +Missing sounder data +Operational + + +5126 +040020 +GqisFlagQualDetailed - quality flag for the system +13 +GqisFlagQual summary flag for all bands +Operational + + +5127 +040020 +GqisFlagQualDetailed - quality flag for the system +14 +On-ground processing error +Operational + + +5128 +040020 +GqisFlagQualDetailed - quality flag for the system +15 +Inter-calibration error IASI/AVHRR +Operational + + +5129 +040020 +GqisFlagQualDetailed - quality flag for the system +16 +Spare +Operational + + +5130 +040020 +GqisFlagQualDetailed - quality flag for the system +All 17 +Missing value +Operational + + +5131 +040023 +Auxiliary altimeter state flags +1 +Band sequence (0 = 3Ku_1C_3Ku, 1 = 2Ku_1C_2Ku) +Operational + + +5132 +040023 +Auxiliary altimeter state flags +2 +C band frequency (0 = 320 MHz, 1 = 100 MHz) +Operational + + +5133 +040023 +Auxiliary altimeter state flags +3 +C band status (0 = On, 1 = Off) +Operational + + +5134 +040023 +Auxiliary altimeter state flags +4 +Ku band status (0 = On, 1 = Off) +Operational + + +5135 +040023 +Auxiliary altimeter state flags +All 5 +Missing value +Operational + + +5136 +040024 +Meteorological map availability +0 +2 maps available (6 hours apart) +Operational + + +5137 +040024 +Meteorological map availability +1 +2 maps available (> 6 hours apart) +Operational + + +5138 +040024 +Meteorological map availability +2 +1 map available; data extrapolated +Operational + + +5139 +040024 +Meteorological map availability +3 +No maps used +Operational + + +5140 +040024 +Meteorological map availability +4-6 +Reserved +Operational + + +5141 +040024 +Meteorological map availability +7 +Missing value +Operational + + +5142 +040025 +Interpolation flag for mean diurnal tide +0 +Good +Operational + + +5143 +040025 +Interpolation flag for mean diurnal tide +1 +Bad +Operational + + +5144 +040025 +Interpolation flag for mean diurnal tide +2 +Reserved +Operational + + +5145 +040025 +Interpolation flag for mean diurnal tide +3 +Missing value +Operational + + +5146 +040028 +GMI quality flag +0 +Good data +Operational + + +5147 +040028 +GMI quality flag +1 +Possible sun glint +Operational + + +5148 +040028 +GMI quality flag +2 +Possible radio-frequency interference +Operational + + +5149 +040028 +GMI quality flag +3 +Degraded geolocation data +Operational + + +5150 +040028 +GMI quality flag +4 +Data corrected for warm load intrusion +Operational + + +5151 +040028 +GMI quality flag +5 +Scan blanking on +Operational + + +5152 +040028 +GMI quality flag +6 +Data is missing from file or unreadable +Operational + + +5153 +040028 +GMI quality flag +7 +Unphysical brightness temperature +Operational + + +5154 +040028 +GMI quality flag +8 +Error in geolocation data +Operational + + +5155 +040028 +GMI quality flag +9 +Data missing in one channel +Operational + + +5156 +040028 +GMI quality flag +10 +Data missing in multiple channels +Operational + + +5157 +040028 +GMI quality flag +11 +Lat/lon values are out of range +Operational + + +5158 +040028 +GMI quality flag +12 +Non-normal status modes +Operational + + +5159 +040028 +GMI quality flag +13 +Distance to corresponding low frequency pixel > 7 km +Operational + + +5160 +040028 +GMI quality flag +14 +Reserved +Operational + + +5161 +040028 +GMI quality flag +15 +Missing value (no quality information available) +Operational + + +5162 +040036 +Lidar L2b classification type +0 +Clear +Operational + + +5163 +040036 +Lidar L2b classification type +1 +Cloud +Operational + + +5164 +040036 +Lidar L2b classification type +2-14 +Reserved +Operational + + +5165 +040036 +Lidar L2b classification type +15 +Missing value +Operational + + +5166 +040043 +Satellite manoeuvre indicator +0 +The platform is not undergoing a manoeuvre +Operational + + +5167 +040043 +Satellite manoeuvre indicator +1 +The platform is undergoing a manoeuvre, nominal processing +Operational + + +5168 +040043 +Satellite manoeuvre indicator +2 +The platform is undergoing a manoeuvre, no processing +Operational + + +5169 +040043 +Satellite manoeuvre indicator +3-6 +Reserved +Operational + + +5170 +040043 +Satellite manoeuvre indicator +7 +Missing value +Operational + + +5171 +040045 +Cloud formation and height assignment +1 +Cloud products retrieved with the chi-squared method +Operational + + +5172 +040045 +Cloud formation and height assignment +2 +Cloud products retrieved with the CO2-slicing +Operational + + +5173 +040045 +Cloud formation and height assignment +3 +Height assignment performed with statistical first guess retrieval +Operational + + +5174 +040045 +Cloud formation and height assignment +4 +Height assignment performed with NWP forecasts +Operational + + +5175 +040045 +Cloud formation and height assignment +All 5 +Missing value +Operational + + +5176 +040046 +Cloudiness summary +0 +The IASI IFOV is clear +Operational + + +5177 +040046 +Cloudiness summary +1 +Small cloud contamination possible +Operational + + +5178 +040046 +Cloudiness summary +2 +The IASI IFOV is partially covered by clouds +Operational + + +5179 +040046 +Cloudiness summary +3 +High or full cloud coverage +Operational + + +5180 +040046 +Cloudiness summary +4-6 +Reserved +Operational + + +5181 +040046 +Cloudiness summary +7 +Missing value +Operational + + +5182 +040047 +Validation flag for IASI or IASI-NG level 1 product +0 +The measurements and side information are available and of good quality for L2 processing +Operational + + +5183 +040047 +Validation flag for IASI or IASI-NG level 1 product +1 +The L1c products are of degraded quality according to L1c flags, no L2 processing +Operational + + +5184 +040047 +Validation flag for IASI or IASI-NG level 1 product +2 +Quality control indicates that the L1c data are of degraded quality (not indicated by the IASI L1c flags), no L2 processing +Operational + + +5185 +040047 +Validation flag for IASI or IASI-NG level 1 product +3-6 +Reserved +Operational + + +5186 +040047 +Validation flag for IASI or IASI-NG level 1 product +7 +Missing value +Operational + + +5187 +040048 +Validation flag of AMSU-A level 1 data flow +0 +The expected AMSU measurements are available, of good quality and collocated with IASI for processing +Operational + + +5188 +040048 +Validation flag of AMSU-A level 1 data flow +1 +AMSU-A data are available but of degraded quality (according to AMSU L1 flags or QC tests) and not used for processing +Operational + + +5189 +040048 +Validation flag of AMSU-A level 1 data flow +2 +No coincident (time and space) AMSU measurements available for processing +Operational + + +5190 +040048 +Validation flag of AMSU-A level 1 data flow +3-6 +Reserved +Operational + + +5191 +040048 +Validation flag of AMSU-A level 1 data flow +7 +Missing value +Operational + + +5192 +040049 +Cloud tests executed and results +1-3 +Reserved +Operational + + +5193 +040049 +Cloud tests executed and results +4 +IASI cloud optical thickness indicates a cloud +Operational + + +5194 +040049 +Cloud tests executed and results +5 +IASI cloud optical thickness computed +Operational + + +5195 +040049 +Cloud tests executed and results +6 +AVHRR heterogeneity test indicates a cloud +Operational + + +5196 +040049 +Cloud tests executed and results +7 +AVHRR heterogeneity test executed +Operational + + +5197 +040049 +Cloud tests executed and results +8 +IASI-AVHRR ANN cloud test indicates a cloud +Operational + + +5198 +040049 +Cloud tests executed and results +9 +IASI-AVHRR ANN cloud test executed +Operational + + +5199 +040049 +Cloud tests executed and results +10 +AVHRR integrated cloud fraction indicates a cloud +Operational + + +5200 +040049 +Cloud tests executed and results +11 +AVHRR integrated cloud fraction assessed +Operational + + +5201 +040049 +Cloud tests executed and results +12 +AMSU cloud test indicates a cloud +Operational + + +5202 +040049 +Cloud tests executed and results +13 +AMSU cloud test executed +Operational + + +5203 +040049 +Cloud tests executed and results +14 +IASI Window cloud test indicates a cloud +Operational + + +5204 +040049 +Cloud tests executed and results +15 +IASI Window cloud test executed +Operational + + +5205 +040049 +Cloud tests executed and results +All 16 +Missing value +Operational + + +5206 +040050 +Retrieval initialisation +1-4 +Reserved +Operational + + +5207 +040050 +Retrieval initialisation +5 +MHS included +Operational + + +5208 +040050 +Retrieval initialisation +6 +AMSU included +Operational + + +5209 +040050 +Retrieval initialisation +7 +IASI included +Operational + + +5210 +040050 +Retrieval initialisation +All 8 +Missing value +Operational + + +5211 +040051 +Convergence of the iterative retrieval +0 +Optimal estimation methods (OEM) not attempted +Operational + + +5212 +040051 +Convergence of the iterative retrieval +1 +OEM aborted because first guess residuals too high +Operational + + +5213 +040051 +Convergence of the iterative retrieval +2 +The minimization did not converge, sounding rejected +Operational + + +5214 +040051 +Convergence of the iterative retrieval +3 +The minimization did not converge, sounding accepted +Operational + + +5215 +040051 +Convergence of the iterative retrieval +4 +The minimization converged but sounding rejected +Operational + + +5216 +040051 +Convergence of the iterative retrieval +5 +The minimization converged, sounding accepted +Operational + + +5217 +040051 +Convergence of the iterative retrieval +6 +Reserved +Operational + + +5218 +040051 +Convergence of the iterative retrieval +7 +Missing value +Operational + + +5219 +040052 +Indication of super-adiabatic and super-saturation in final retrieval +1-3 +Reserved +Operational + + +5220 +040052 +Indication of super-adiabatic and super-saturation in final retrieval +4 +Supersaturation conditions in the OEM retrieval +Operational + + +5221 +040052 +Indication of super-adiabatic and super-saturation in final retrieval +5 +Superadiabatic conditions in the OEM retrieval +Operational + + +5222 +040052 +Indication of super-adiabatic and super-saturation in final retrieval +6 +Supersaturation conditions in the first guess +Operational + + +5223 +040052 +Indication of super-adiabatic and super-saturation in final retrieval +7 +Superadiabatic conditions in the first guess +Operational + + +5224 +040052 +Indication of super-adiabatic and super-saturation in final retrieval +All 8 +Missing value +Operational + + +5225 +040054 +Potential processing and inputs errors +1 +An error has been detected +Operational + + +5226 +040054 +Potential processing and inputs errors +2 +Message from L1 +Operational + + +5227 +040054 +Potential processing and inputs errors +3 +Message from L2 +Operational + + +5228 +040054 +Potential processing and inputs errors +4 +Message from ancillary data +Operational + + +5229 +040054 +Potential processing and inputs errors +5 +Message from fitting procedure +Operational + + +5230 +040054 +Potential processing and inputs errors +6 +File opening +Operational + + +5231 +040054 +Potential processing and inputs errors +7 +File reading +Operational + + +5232 +040054 +Potential processing and inputs errors +8 +Quality flag +Operational + + +5233 +040054 +Potential processing and inputs errors +9 +Level 2 "from linear regression"(F_Qual), report a pixel where L2 are not fully trusted +Operational + + +5234 +040054 +Potential processing and inputs errors +10 +Empty field or data +Operational + + +5235 +040054 +Potential processing and inputs errors +11 +Missing surface pressure value +Operational + + +5236 +040054 +Potential processing and inputs errors +12 +Radiance filtering +Operational + + +5237 +040054 +Potential processing and inputs errors +All 13 +Missing value +Operational + + +5238 +040055 +Diagnostics on the retrieval +1 +Radiance filtering +Operational + + +5239 +040055 +Diagnostics on the retrieval +2 +Polar regions +Operational + + +5240 +040055 +Diagnostics on the retrieval +3 +Location in the night +Operational + + +5241 +040055 +Diagnostics on the retrieval +4 +Negative altitude surface below mean sea level +Operational + + +5242 +040055 +Diagnostics on the retrieval +5 +Cloud covered scene +Operational + + +5243 +040055 +Diagnostics on the retrieval +6 +Scene above the sea +Operational + + +5244 +040055 +Diagnostics on the retrieval +7 +Scene above desert +Operational + + +5245 +040055 +Diagnostics on the retrieval +8 +Skin temperature +Operational + + +5246 +040055 +Diagnostics on the retrieval +9 +Skin temperature differential +Operational + + +5247 +040055 +Diagnostics on the retrieval +10 +Spectral line contrast too weak +Operational + + +5248 +040055 +Diagnostics on the retrieval +11 +Maximum number of iterations exceeded +Operational + + +5249 +040055 +Diagnostics on the retrieval +12 +Negative partial columns +Operational + + +5250 +040055 +Diagnostics on the retrieval +13 +Matrix ill conditioned +Operational + + +5251 +040055 +Diagnostics on the retrieval +14 +Fit diverged +Operational + + +5252 +040055 +Diagnostics on the retrieval +15 +Error in GNU scientific library (GSL) usage +Operational + + +5253 +040055 +Diagnostics on the retrieval +16 +Residuals “biased” +Operational + + +5254 +040055 +Diagnostics on the retrieval +17 +Residuals “sloped” +Operational + + +5255 +040055 +Diagnostics on the retrieval +18 +Residuals root mean square (RMS) error is large +Operational + + +5256 +040055 +Diagnostics on the retrieval +19 +Weird averaging kernels +Operational + + +5257 +040055 +Diagnostics on the retrieval +20 +Ice presence detected +Operational + + +5258 +040055 +Diagnostics on the retrieval +All 21 +Missing value +Operational + + +5259 +040056 +General retrieval quality +0 +Use not recommended +Operational + + +5260 +040056 +General retrieval quality +1 +Use with caution +Operational + + +5261 +040056 +General retrieval quality +2 +Best quality +Operational + + +5262 +040056 +General retrieval quality +3-6 +Reserved +Operational + + +5263 +040056 +General retrieval quality +7 +Missing value +Operational + + +5264 +040057 +IASI level 2 retrieval flags +1 +An error has been detected +Operational + + +5265 +040057 +IASI level 2 retrieval flags +2 +Message from L1 +Operational + + +5266 +040057 +IASI level 2 retrieval flags +3 +Message from L2 +Operational + + +5267 +040057 +IASI level 2 retrieval flags +4 +Message from ancillary data +Operational + + +5268 +040057 +IASI level 2 retrieval flags +5 +Message from fitting procedure +Operational + + +5269 +040057 +IASI level 2 retrieval flags +6 +Reserved +Operational + + +5270 +040057 +IASI level 2 retrieval flags +7 +Bad L1 or L2 flag raised +Operational + + +5271 +040057 +IASI level 2 retrieval flags +8 +Level 2 not fully trusted +Operational + + +5272 +040057 +IASI level 2 retrieval flags +9 +Missing temperature or humidity levels in the vertical profile +Operational + + +5273 +040057 +IASI level 2 retrieval flags +10 +Missing surface pressure value +Operational + + +5274 +040057 +IASI level 2 retrieval flags +11 +Radiance filtering +Operational + + +5275 +040057 +IASI level 2 retrieval flags +12 +Polar regions +Operational + + +5276 +040057 +IASI level 2 retrieval flags +13 +Location in the night +Operational + + +5277 +040057 +IASI level 2 retrieval flags +14 +Negative altitude +Operational + + +5278 +040057 +IASI level 2 retrieval flags +15 +Cloud covered scene +Operational + + +5279 +040057 +IASI level 2 retrieval flags +16 +Scene above the sea +Operational + + +5280 +040057 +IASI level 2 retrieval flags +17 +Scene above desert +Operational + + +5281 +040057 +IASI level 2 retrieval flags +18 +Missing skin temperature +Operational + + +5282 +040057 +IASI level 2 retrieval flags +19 +Retrieved skin temperature too different from model +Operational + + +5283 +040057 +IASI level 2 retrieval flags +20 +Spectral line contrast too weak +Operational + + +5284 +040057 +IASI level 2 retrieval flags +21 +Maximum number of iterations exceeds +Operational + + +5285 +040057 +IASI level 2 retrieval flags +22 +Negative partial columns +Operational + + +5286 +040057 +IASI level 2 retrieval flags +23 +Matrix ill conditioned +Operational + + +5287 +040057 +IASI level 2 retrieval flags +24 +Fit diverged +Operational + + +5288 +040057 +IASI level 2 retrieval flags +25 +Error in GSL usage +Operational + + +5289 +040057 +IASI level 2 retrieval flags +26 +Residuals biased +Operational + + +5290 +040057 +IASI level 2 retrieval flags +27 +Residuals sloped +Operational + + +5291 +040057 +IASI level 2 retrieval flags +28 +Residuals RMS error is large +Operational + + +5292 +040057 +IASI level 2 retrieval flags +29 +Weird averaging kernels +Operational + + +5293 +040057 +IASI level 2 retrieval flags +30 +Ice presence detected +Operational + + +5294 +040057 +IASI level 2 retrieval flags +All 31 +Missing value +Operational + + +5295 +040068 +General retrieval quality flag for SO2 +0 +Values calculated with IASI L2 +Operational + + +5296 +040068 +General retrieval quality flag for SO2 +1 +Pressure and temperature profiles missing in IASI L2 data; model/forecast data used instead +Operational + + +5297 +040068 +General retrieval quality flag for SO2 +2 +Best quality +Operational + + +5298 +040068 +General retrieval quality flag for SO2 +3-14 +Reserved +Operational + + +5299 +040068 +General retrieval quality flag for SO2 +15 +Missing value +Operational + + +5300 +042004 +Confidence of inversion for each partition of swell wave spectra +0 +Wave direction resolved +Operational + + +5301 +042004 +Confidence of inversion for each partition of swell wave spectra +1 +180-degree ambiguity not resolved +Operational + + +5302 +042004 +Confidence of inversion for each partition of swell wave spectra +2-14 +Reserved +Operational + + +5303 +042004 +Confidence of inversion for each partition of swell wave spectra +15 +Missing +Operational + + diff --git a/bufr/src/main/resources/resources/bufrTables/wmo/BUFRCREX_33_0_0_TableB_en.xml b/bufr/src/main/resources/resources/bufrTables/wmo/BUFRCREX_33_0_0_TableB_en.xml new file mode 100644 index 0000000000..a37b1c72a4 --- /dev/null +++ b/bufr/src/main/resources/resources/bufrTables/wmo/BUFRCREX_33_0_0_TableB_en.xml @@ -0,0 +1,25563 @@ + + + +1 +00 +BUFR/CREX table entries +000001 +Table A: entry +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +2 +00 +BUFR/CREX table entries +000002 +Table A: data category description, line 1 +CCITT IA5 +0 +0 +256 +Character +0 +32 +Operational + + +3 +00 +BUFR/CREX table entries +000003 +Table A: data category description, line 2 +CCITT IA5 +0 +0 +256 +Character +0 +32 +Operational + + +4 +00 +BUFR/CREX table entries +000004 +BUFR/CREX Master table +(see Note 1) +CCITT IA5 +0 +0 +16 +Character +0 +2 +Operational + + +5 +00 +BUFR/CREX table entries +000005 +BUFR/CREX edition number +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +6 +00 +BUFR/CREX table entries +000006 +BUFR Master table version number +(see Note 2) +CCITT IA5 +0 +0 +16 +Character +0 +2 +Operational + + +7 +00 +BUFR/CREX table entries +000007 +CREX Master table version number +(see Note 3) +CCITT IA5 +0 +0 +16 +Character +0 +2 +Operational + + +8 +00 +BUFR/CREX table entries +000008 +BUFR Local table version number +(see Note 4) +CCITT IA5 +0 +0 +16 +Character +0 +2 +Operational + + +9 +00 +BUFR/CREX table entries +000010 +F descriptor to be added or defined +CCITT IA5 +0 +0 +8 +Character +0 +1 +Operational + + +10 +00 +BUFR/CREX table entries +000011 +X descriptor to be added or defined +CCITT IA5 +0 +0 +16 +Character +0 +2 +Operational + + +11 +00 +BUFR/CREX table entries +000012 +Y descriptor to be added or defined +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +12 +00 +BUFR/CREX table entries +000013 +Element name, line 1 +CCITT IA5 +0 +0 +256 +Character +0 +32 +Operational + + +13 +00 +BUFR/CREX table entries +000014 +Element name, line 2 +CCITT IA5 +0 +0 +256 +Character +0 +32 +Operational + + +14 +00 +BUFR/CREX table entries +000015 +Units name +CCITT IA5 +0 +0 +192 +Character +0 +24 +Operational + + +15 +00 +BUFR/CREX table entries +000016 +Units scale sign +CCITT IA5 +0 +0 +8 +Character +0 +1 +Operational + + +16 +00 +BUFR/CREX table entries +000017 +Units scale +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +17 +00 +BUFR/CREX table entries +000018 +Units reference sign +CCITT IA5 +0 +0 +8 +Character +0 +1 +Operational + + +18 +00 +BUFR/CREX table entries +000019 +Units reference value +CCITT IA5 +0 +0 +80 +Character +0 +10 +Operational + + +19 +00 +BUFR/CREX table entries +000020 +Element data width +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +20 +00 +BUFR/CREX table entries +000024 +Code figure +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +21 +00 +BUFR/CREX table entries +000025 +Code figure meaning +CCITT IA5 +0 +0 +496 +Character +0 +62 +Operational + + +22 +00 +BUFR/CREX table entries +000026 +Bit number +CCITT IA5 +0 +0 +48 +Character +0 +6 +Operational + + +23 +00 +BUFR/CREX table entries +000027 +Bit number meaning +CCITT IA5 +0 +0 +496 +Character +0 +62 +Operational + + +24 +00 +BUFR/CREX table entries +000030 +Descriptor defining sequence +CCITT IA5 +0 +0 +48 +Character +0 +6 +Operational + + +25 +01 +Identification +001001 +WMO block number +Numeric +0 +0 +7 +Numeric +0 +2 +Operational + + +26 +01 +Identification +001002 +WMO station number +Numeric +0 +0 +10 +Numeric +0 +3 +Operational + + +27 +01 +Identification +001003 +WMO Region number/geographical area +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +28 +01 +Identification +001004 +WMO Region sub-area +(see Note 9) +Numeric +0 +0 +3 +Numeric +0 +1 +Operational + + +29 +01 +Identification +001005 +Buoy/platform identifier +Numeric +0 +0 +17 +Numeric +0 +5 +Operational + + +30 +01 +Identification +001006 +Aircraft flight number +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +31 +01 +Identification +001007 +Satellite identifier +Code table +0 +0 +10 +Code table +0 +4 +Operational + + +32 +01 +Identification +001008 +Aircraft registration number or other identification +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +33 +01 +Identification +001009 +Type of commercial aircraft +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +34 +01 +Identification +001010 +Stationary buoy platform identifier; e.g. C-MAN buoys +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +35 +01 +Identification +001011 +Ship or mobile land station identifier +CCITT IA5 +0 +0 +72 +Character +0 +9 +Operational + + +36 +01 +Identification +001012 +Direction of motion of moving observing platform +* +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +37 +01 +Identification +001013 +Speed of motion of moving observing platform +* +m/s +0 +0 +10 +m/s +0 +3 +Operational + + +38 +01 +Identification +001014 +Platform drift speed (high precision) +m/s +2 +0 +10 +m/s +2 +4 +Operational + + +39 +01 +Identification +001015 +Station or site name +CCITT IA5 +0 +0 +160 +Character +0 +20 +Operational + + +40 +01 +Identification +001018 +Short station or site name +CCITT IA5 +0 +0 +40 +Character +0 +5 +Operational + + +41 +01 +Identification +001019 +Long station or site name +CCITT IA5 +0 +0 +256 +Character +0 +32 +Operational + + +42 +01 +Identification +001020 +WMO Region sub-area +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +43 +01 +Identification +001021 +Synoptic feature identifier +Numeric +0 +0 +14 +Numeric +0 +4 +Operational + + +44 +01 +Identification +001022 +Name of feature +(see Note 11) +CCITT IA5 +0 +0 +224 +Character +0 +28 +Operational + + +45 +01 +Identification +001023 +Observation sequence number +Numeric +0 +0 +9 +Numeric +0 +3 +Operational + + +46 +01 +Identification +001024 +Wind speed source +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +47 +01 +Identification +001025 +Storm identifier +(see Note 1) +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +48 +01 +Identification +001026 +WMO storm name +* +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +49 +01 +Identification +001027 +WMO long storm name +CCITT IA5 +0 +0 +80 +Character +0 +10 +Operational + + +50 +01 +Identification +001028 +Aerosol optical depth (AOD) source +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +51 +01 +Identification +001029 +SSI source +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +52 +01 +Identification +001030 +Numerical model identifier +(see Note 13) +CCITT IA5 +0 +0 +128 +Character +0 +16 +Operational + + +53 +01 +Identification +001031 +Identification of originating/generating centre +(see Note 10) +Code table +0 +0 +16 +Code table +0 +5 +Operational + + +54 +01 +Identification +001032 +Generating application +(Notes 3, 4 and 5) +Code table defined by originating/generating centre +0 +0 +8 +Code table +0 +3 +Operational + + +55 +01 +Identification +001033 +Identification of originating/generating centre +Common Code table C-1 +0 +0 +8 +Common Code table C-1 +0 +3 +Operational + + +56 +01 +Identification +001034 +Identification of originating/generating sub-centre +Common Code table C-12 +0 +0 +8 +Common Code table C-12 +0 +3 +Operational + + +57 +01 +Identification +001035 +Originating centre +Common Code table C-11 +0 +0 +16 +Common Code table C-11 +0 +5 +Operational + + +58 +01 +Identification +001036 +Agency in charge of operating the observing platform +Code table +0 +0 +20 +Code table +0 +7 +Operational + + +59 +01 +Identification +001037 +SIGMET sequence identifier +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +60 +01 +Identification +001038 +Source of sea ice fraction +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +61 +01 +Identification +001039 +Graphical Area Forecast (GFA) sequence identifier +CCITT IA5 +0 +0 +40 +Character +0 +5 +Operational + + +62 +01 +Identification +001040 +Processing centre ID code +CCITT IA5 +0 +0 +48 +Character +0 +6 +Operational + + +63 +01 +Identification +001041 +Absolute platform velocity - first component +(see Note 6) +m/s +5 +-1073741824 +31 +m/s +5 +10 +Operational + + +64 +01 +Identification +001042 +Absolute platform velocity - second component +(see Note 6) +m/s +5 +-1073741824 +31 +m/s +5 +10 +Operational + + +65 +01 +Identification +001043 +Absolute platform velocity - third component +(see Note 6) +m/s +5 +-1073741824 +31 +m/s +5 +10 +Operational + + +66 +01 +Identification +001044 +Standard generating application +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +67 +01 +Identification +001050 +Platform transmitter ID number +Numeric +0 +0 +17 +Numeric +0 +6 +Operational + + +68 +01 +Identification +001051 +Platform transmitter ID number +CCITT IA5 +0 +0 +96 +Character +0 +12 +Operational + + +69 +01 +Identification +001052 +Platform transmitter ID +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +70 +01 +Identification +001053 +Tsunameter report sequence number triggered by a tsunami event +Numeric +0 +0 +7 +Numeric +0 +2 +Operational + + +71 +01 +Identification +001060 +Aircraft reporting point (Beacon identifier) +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +72 +01 +Identification +001062 +Short ICAO location indicator +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +73 +01 +Identification +001063 +ICAO location indicator +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +74 +01 +Identification +001064 +Runway designator +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +75 +01 +Identification +001065 +ICAO region identifier +CCITT IA5 +0 +0 +256 +Character +0 +32 +Operational + + +76 +01 +Identification +001075 +Tide station identification +CCITT IA5 +0 +0 +40 +Character +0 +5 +Operational + + +77 +01 +Identification +001079 +Unique identifier for the profile +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +78 +01 +Identification +001080 +Ship line number according to SOOP +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +79 +01 +Identification +001081 +Radiosonde serial number +CCITT IA5 +0 +0 +160 +Character +0 +20 +Operational + + +80 +01 +Identification +001082 +Radiosonde ascension number +(see Note 12) +Numeric +0 +0 +14 +Numeric +0 +4 +Operational + + +81 +01 +Identification +001083 +Radiosonde release number +(see Note 12) +Numeric +0 +0 +3 +Numeric +0 +1 +Operational + + +82 +01 +Identification +001085 +Observing platform manufacturer's model +CCITT IA5 +0 +0 +160 +Character +0 +20 +Operational + + +83 +01 +Identification +001086 +Observing platform manufacturer's serial number +CCITT IA5 +0 +0 +256 +Character +0 +32 +Operational + + +84 +01 +Identification +001087 +WMO marine observing platform extended identifier +Numeric +0 +0 +23 +Numeric +0 +7 +Operational + + +85 +01 +Identification +001090 +Technique for making up initial perturbations +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +86 +01 +Identification +001091 +Ensemble member number +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +87 +01 +Identification +001092 +Type of ensemble forecast +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +88 +01 +Identification +001093 +Balloon lot number +CCITT IA5 +0 +0 +96 +Character +0 +12 +Operational + + +89 +01 +Identification +001094 +WBAN number +Numeric +0 +0 +17 +Numeric +0 +5 +Operational + + +90 +01 +Identification +001095 +Observer identification +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +91 +01 +Identification +001096 +Station acquisition +CCITT IA5 +0 +0 +160 +Character +0 +20 +Operational + + +92 +01 +Identification +001099 +Unique product definition +CCITT IA5 +0 +0 +248 +Character +0 +31 +Operational + + +93 +01 +Identification +001101 +State identifier +Code table +0 +0 +10 +Code table +0 +3 +Operational + + +94 +01 +Identification +001102 +National station number +Numeric +0 +0 +30 +Numeric +0 +9 +Operational + + +95 +01 +Identification +001103 +IMO Number. Unique Lloyd's register +Numeric +0 +0 +24 +Numeric +0 +7 +Operational + + +96 +01 +Identification +001104 +State/federal state identifier +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +97 +01 +Identification +001105 +Highway designator +CCITT IA5 +0 +0 +40 +Character +0 +5 +Operational + + +98 +01 +Identification +001106 +Location along highway as indicated by position markers +m +-2 +0 +14 +m +-2 +5 +Operational + + +99 +01 +Identification +001110 +Aircraft tail number +CCITT IA5 +0 +0 +48 +Character +0 +6 +Operational + + +100 +01 +Identification +001111 +Origination airport +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +101 +01 +Identification +001112 +Destination airport +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +102 +01 +Identification +001113 +Template version number defined by originating centre +Numeric +1 +0 +9 +Numeric +1 +3 +Operational + + +103 +01 +Identification +001114 +Encrypted ship or mobile land station identifier (base64 encoding) +CCITT IA5 +0 +0 +352 +Character +0 +44 +Operational + + +104 +01 +Identification +001115 +Identifier of the cruise or mission under which the data were collected +CCITT IA5 +0 +0 +160 +Character +0 +20 +Operational + + +105 +01 +Identification +001124 +Grid point identifier +Numeric +0 +0 +24 +Numeric +0 +8 +Operational + + +106 +01 +Identification +001125 +WIGOS identifier series +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +107 +01 +Identification +001126 +WIGOS issuer of identifier +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +108 +01 +Identification +001127 +WIGOS issue number +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +109 +01 +Identification +001128 +WIGOS local identifier (character) +CCITT IA5 +0 +0 +128 +Character +0 +16 +Operational + + +110 +01 +Identification +001144 +Snapshot identifier +Numeric +0 +0 +31 +Numeric +0 +10 +Operational + + +111 +01 +Identification +001150 +Coordinate reference system +Code table +0 +0 +16 +Code table +0 +5 +Operational + + +112 +01 +Identification +001151 +Fixed mean sea-level reference datum +Code table +0 +0 +12 +Code table +0 +4 +Operational + + +113 +01 +Identification +001152 +Semi-major axis of rotation ellipsoid +m +2 +0 +31 +m +2 +11 +Operational + + +114 +01 +Identification +001153 +Semi-minor axis of rotation ellipsoid +m +2 +0 +31 +m +2 +11 +Operational + + +115 +02 +Instrumentation +002001 +Type of station +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +116 +02 +Instrumentation +002002 +Type of instrumentation for wind measurement +Flag table +0 +0 +4 +Flag table +0 +2 +Operational + + +117 +02 +Instrumentation +002003 +Type of measuring equipment used +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +118 +02 +Instrumentation +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +119 +02 +Instrumentation +002005 +Precision of temperature observation +K +2 +0 +7 +K +2 +3 +Operational + + +120 +02 +Instrumentation +002007 +Type of sensor for water level measuring instrument +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +121 +02 +Instrumentation +002008 +Type of offshore platform +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +122 +02 +Instrumentation +002011 +Radiosonde type +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +123 +02 +Instrumentation +002012 +Radiosonde computational method +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +124 +02 +Instrumentation +002013 +Solar and infrared radiation correction +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +125 +02 +Instrumentation +002014 +Tracking technique/status of system used +Code table +0 +0 +7 +Code table +0 +3 +Operational + + +126 +02 +Instrumentation +002015 +Radiosonde completeness +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +127 +02 +Instrumentation +002016 +Radiosonde configuration +Flag table +0 +0 +5 +Flag table +0 +2 +Operational + + +128 +02 +Instrumentation +002017 +Correction algorithms for humidity measurements +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +129 +02 +Instrumentation +002019 +Satellite instruments +Code table +0 +0 +11 +Code table +0 +4 +Operational + + +130 +02 +Instrumentation +002020 +Satellite classification +Code table +0 +0 +9 +Code table +0 +3 +Operational + + +131 +02 +Instrumentation +002021 +Satellite instrument data used in processing +* +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +132 +02 +Instrumentation +002022 +Satellite data-processing technique used +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +133 +02 +Instrumentation +002023 +Satellite-derived wind computation method +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +134 +02 +Instrumentation +002024 +Integrated mean humidity computational method +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +135 +02 +Instrumentation +002025 +Satellite channel(s) used in computation +Flag table +0 +0 +25 +Flag table +0 +9 +Operational + + +136 +02 +Instrumentation +002026 +Cross-track resolution +m +2 +0 +12 +m +2 +4 +Operational + + +137 +02 +Instrumentation +002027 +Along-track resolution +m +2 +0 +12 +m +2 +4 +Operational + + +138 +02 +Instrumentation +002028 +Segment size at nadir in x-direction +m +0 +0 +18 +m +0 +6 +Operational + + +139 +02 +Instrumentation +002029 +Segment size at nadir in y-direction +m +0 +0 +18 +m +0 +6 +Operational + + +140 +02 +Instrumentation +002030 +Method of current measurement +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +141 +02 +Instrumentation +002031 +Duration and time of current measurement +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +142 +02 +Instrumentation +002032 +Indicator for digitization +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +143 +02 +Instrumentation +002033 +Method of salinity/depth measurement +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +144 +02 +Instrumentation +002034 +Drogue type +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +145 +02 +Instrumentation +002035 +Cable length +m +0 +0 +9 +m +0 +3 +Operational + + +146 +02 +Instrumentation +002036 +Buoy type +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +147 +02 +Instrumentation +002037 +Method of tidal observation +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +148 +02 +Instrumentation +002038 +Method of water temperature and/or salinity measurement +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +149 +02 +Instrumentation +002039 +Method of wet-bulb temperature measurement +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +150 +02 +Instrumentation +002040 +Method of removing velocity and motion of platform from current +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +151 +02 +Instrumentation +002041 +Method for estimating reports related to synoptic features +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +152 +02 +Instrumentation +002042 +Indicator for sea-surface current speed +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +153 +02 +Instrumentation +002044 +Indicator for method of calculating spectral wave data +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +154 +02 +Instrumentation +002045 +Indicator for type of platform +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +155 +02 +Instrumentation +002046 +Wave measurement instrumentation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +156 +02 +Instrumentation +002047 +Deep-ocean tsunameter type +Code table +0 +0 +7 +Code table +0 +2 +Operational + + +157 +02 +Instrumentation +002048 +Satellite sensor indicator +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +158 +02 +Instrumentation +002049 +Geostationary satellite data-processing technique used +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +159 +02 +Instrumentation +002050 +Geostationary sounder satellite channels used +Flag table +0 +0 +20 +Flag table +0 +7 +Operational + + +160 +02 +Instrumentation +002051 +Indicator to specify observing method for extreme temperatures +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +161 +02 +Instrumentation +002052 +Geostationary imager satellite channels used +Flag table +0 +0 +6 +Flag table +0 +2 +Operational + + +162 +02 +Instrumentation +002053 +GOES-I/M brightness temperature characteristics +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +163 +02 +Instrumentation +002054 +GOES-I/M soundings parameter characteristics +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +164 +02 +Instrumentation +002055 +Geostationary soundings statistical parameters +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +165 +02 +Instrumentation +002056 +Geostationary soundings accuracy statistics +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +166 +02 +Instrumentation +002057 +Origin of first-guess information for GOES-I/M soundings +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +167 +02 +Instrumentation +002058 +Valid times of first-guess information for GOES-I/M soundings +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +168 +02 +Instrumentation +002059 +Origin of analysis information for GOES-I/M soundings +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +169 +02 +Instrumentation +002060 +Origin of surface information for GOES-I/M soundings +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +170 +02 +Instrumentation +002061 +Aircraft navigational system +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +171 +02 +Instrumentation +002062 +Type of aircraft data relay system +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +172 +02 +Instrumentation +002063 +Aircraft roll angle +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +173 +02 +Instrumentation +002064 +Aircraft roll angle quality +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +174 +02 +Instrumentation +002065 +ACARS ground-receiving station +CCITT IA5 +0 +0 +40 +Character +0 +5 +Operational + + +175 +02 +Instrumentation +002066 +Radiosonde ground receiving system +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +176 +02 +Instrumentation +002067 +Radiosonde operating frequency +Hz +-5 +0 +15 +Hz +-5 +5 +Operational + + +177 +02 +Instrumentation +002070 +Original specification of latitude/longitude +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +178 +02 +Instrumentation +002071 +Spectrographic wavelength +m +13 +0 +30 +m +13 +10 +Operational + + +179 +02 +Instrumentation +002072 +Spectrographic width +m +13 +0 +30 +m +13 +10 +Operational + + +180 +02 +Instrumentation +002080 +Balloon manufacturer +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +181 +02 +Instrumentation +002081 +Type of balloon +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +182 +02 +Instrumentation +002082 +Weight of balloon +kg +3 +0 +12 +kg +3 +4 +Operational + + +183 +02 +Instrumentation +002083 +Type of balloon shelter +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +184 +02 +Instrumentation +002084 +Type of gas used in balloon +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +185 +02 +Instrumentation +002085 +Amount of gas used in balloon +kg +3 +0 +13 +kg +3 +4 +Operational + + +186 +02 +Instrumentation +002086 +Balloon flight train length +m +1 +0 +10 +m +1 +4 +Operational + + +187 +02 +Instrumentation +002087 +Parachute surface area +m2 +4 +0 +15 +m2 +4 +5 +Operational + + +188 +02 +Instrumentation +002088 +Volume of gas used in balloon +m3 +3 +0 +13 +m3 +3 +4 +Operational + + +189 +02 +Instrumentation +002091 +Entry sensor 4/20 mA +A +4 +0 +10 +A +4 +3 +Operational + + +190 +02 +Instrumentation +002092 +Ozone profile computation method +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +191 +02 +Instrumentation +002095 +Type of pressure sensor +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +192 +02 +Instrumentation +002096 +Type of temperature sensor +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +193 +02 +Instrumentation +002097 +Type of humidity sensor +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +194 +02 +Instrumentation +002099 +Polarization +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +195 +02 +Instrumentation +002100 +Radar constant +* +dB +1 +0 +12 +dB +1 +4 +Operational + + +196 +02 +Instrumentation +002101 +Type of antenna +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +197 +02 +Instrumentation +002102 +Antenna height above tower base +m +0 +0 +8 +m +0 +3 +Operational + + +198 +02 +Instrumentation +002103 +Radome +Flag table +0 +0 +2 +Flag table +0 +1 +Operational + + +199 +02 +Instrumentation +002104 +Antenna polarization +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +200 +02 +Instrumentation +002105 +Maximum antenna gain +dB +0 +0 +6 +dB +0 +2 +Operational + + +201 +02 +Instrumentation +002106 +3-dB beamwidth +deg +1 +0 +6 +deg +1 +2 +Operational + + +202 +02 +Instrumentation +002107 +Sidelobe suppression +dB +0 +0 +6 +dB +0 +2 +Operational + + +203 +02 +Instrumentation +002108 +Crosspol discrimination (on axis) +dB +0 +0 +6 +dB +0 +2 +Operational + + +204 +02 +Instrumentation +002109 +Antenna speed (azimuth) +deg/s +2 +0 +12 +deg/s +2 +4 +Operational + + +205 +02 +Instrumentation +002110 +Antenna speed (elevation) +deg/s +2 +0 +12 +deg/s +2 +4 +Operational + + +206 +02 +Instrumentation +002111 +Radar incidence angle +deg +1 +0 +10 +deg +1 +4 +Operational + + +207 +02 +Instrumentation +002112 +Radar look angle +deg +1 +0 +12 +deg +1 +4 +Operational + + +208 +02 +Instrumentation +002113 +Number of azimuth looks +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +209 +02 +Instrumentation +002114 +Antenna effective surface area +m2 +0 +0 +15 +m2 +0 +5 +Operational + + +210 +02 +Instrumentation +002115 +Type of surface observing equipment +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +211 +02 +Instrumentation +002116 +Percentage of 320 MHz band processed +% +0 +0 +7 +% +0 +3 +Operational + + +212 +02 +Instrumentation +002117 +Percentage of 80 MHz band processed +% +0 +0 +7 +% +0 +3 +Operational + + +213 +02 +Instrumentation +002118 +Percentage of 20 MHz band processed +% +0 +0 +7 +% +0 +3 +Operational + + +214 +02 +Instrumentation +002119 +RA-2 instrument operations +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +215 +02 +Instrumentation +002120 +Ocean wave frequency +Hz +3 +0 +10 +Hz +3 +4 +Operational + + +216 +02 +Instrumentation +002121 +Mean frequency +Hz +-8 +0 +7 +Hz +-8 +3 +Operational + + +217 +02 +Instrumentation +002122 +Frequency agility range +Hz +-6 +-128 +8 +Hz +-6 +3 +Operational + + +218 +02 +Instrumentation +002123 +Peak power +W +-4 +0 +7 +W +-4 +3 +Operational + + +219 +02 +Instrumentation +002124 +Average power +W +-1 +0 +7 +W +-1 +3 +Operational + + +220 +02 +Instrumentation +002125 +Pulse repetition frequency +Hz +-1 +0 +8 +Hz +-1 +3 +Operational + + +221 +02 +Instrumentation +002126 +Pulse width +s +7 +0 +6 +s +7 +2 +Operational + + +222 +02 +Instrumentation +002127 +Receiver intermediate frequency +Hz +-6 +0 +7 +Hz +-6 +3 +Operational + + +223 +02 +Instrumentation +002128 +Intermediate frequency bandwidth +Hz +-5 +0 +6 +Hz +-5 +2 +Operational + + +224 +02 +Instrumentation +002129 +Minimum detectable signal +dB +0 +-150 +5 +dB +0 +3 +Operational + + +225 +02 +Instrumentation +002130 +Dynamic range +dB +0 +0 +7 +dB +0 +3 +Operational + + +226 +02 +Instrumentation +002131 +Sensitivity time control (STC) +Flag table +0 +0 +2 +Flag table +0 +1 +Operational + + +227 +02 +Instrumentation +002132 +Azimuth pointing accuracy +deg +2 +0 +6 +deg +2 +2 +Operational + + +228 +02 +Instrumentation +002133 +Elevation pointing accuracy +deg +2 +0 +6 +deg +2 +2 +Operational + + +229 +02 +Instrumentation +002134 +Antenna beam azimuth +deg +2 +0 +16 +deg +2 +5 +Operational + + +230 +02 +Instrumentation +002135 +Antenna elevation +deg +2 +-9000 +15 +deg +2 +5 +Operational + + +231 +02 +Instrumentation +002136 +Range processed by range attenuation correction +m +-3 +0 +16 +m +-3 +5 +Operational + + +232 +02 +Instrumentation +002137 +Radar dual PRF ratio +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +233 +02 +Instrumentation +002138 +Antenna rotation direction +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +234 +02 +Instrumentation +002139 +SIRAL instrument configuration +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +235 +02 +Instrumentation +002140 +Satellite radar beam azimuth angle +(see Note 4) +deg +0 +0 +9 +deg +0 +3 +Operational + + +236 +02 +Instrumentation +002141 +Measurement type +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +237 +02 +Instrumentation +002142 +Ozone instrument serial number/identification +(see Note 5) +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +238 +02 +Instrumentation +002143 +Ozone instrument type +Code table +0 +0 +7 +Code table +0 +3 +Operational + + +239 +02 +Instrumentation +002144 +Light source type for Brewer spectrophotometer +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +240 +02 +Instrumentation +002145 +Wavelength setting for Dobson instruments +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +241 +02 +Instrumentation +002146 +Source conditions for Dobson instruments +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +242 +02 +Instrumentation +002147 +Method of transmission to collection centre +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +243 +02 +Instrumentation +002148 +Data collection and/or location system +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +244 +02 +Instrumentation +002149 +Type of data buoy +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +245 +02 +Instrumentation +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +246 +02 +Instrumentation +002151 +Radiometer identifier +Code table +0 +0 +11 +Code table +0 +4 +Operational + + +247 +02 +Instrumentation +002152 +Satellite instrument used in data processing +(see Note 6) +Flag table +0 +0 +31 +Flag table +0 +10 +Operational + + +248 +02 +Instrumentation +002153 +Satellite channel centre frequency +Hz +-8 +0 +26 +Hz +-8 +8 +Operational + + +249 +02 +Instrumentation +002154 +Satellite channel band width +Hz +-8 +0 +26 +Hz +-8 +8 +Operational + + +250 +02 +Instrumentation +002155 +Satellite channel wavelength +m +9 +0 +16 +m +9 +5 +Operational + + +251 +02 +Instrumentation +002156 +Percentage of valid KU ocean retracker measurements +% +0 +0 +7 +% +0 +3 +Operational + + +252 +02 +Instrumentation +002157 +Percentage of valid S ocean retracker measurements +% +0 +0 +7 +% +0 +3 +Operational + + +253 +02 +Instrumentation +002158 +RA-2 instrument +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +254 +02 +Instrumentation +002159 +MWR instrument +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +255 +02 +Instrumentation +002160 +Wavelength of the radar +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +256 +02 +Instrumentation +002161 +Wind processing method +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +257 +02 +Instrumentation +002162 +Extended height assignment method +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +258 +02 +Instrumentation +002163 +Height assignment method +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +259 +02 +Instrumentation +002164 +Tracer correlation method +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +260 +02 +Instrumentation +002165 +Radiance type flags +Flag table +0 +0 +15 +Flag table +0 +5 +Operational + + +261 +02 +Instrumentation +002166 +Radiance type +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +262 +02 +Instrumentation +002167 +Radiance computational method +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +263 +02 +Instrumentation +002168 +Hydrostatic pressure of lower end of cable (thermistor string) +Pa +-3 +0 +16 +kPa +0 +5 +Operational + + +264 +02 +Instrumentation +002169 +Anemometer type +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +265 +02 +Instrumentation +002170 +Aircraft humidity sensors +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +266 +02 +Instrumentation +002171 +Instrument serial number for water temperature profile measurement +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +267 +02 +Instrumentation +002172 +Product type for retrieved atmospheric gases +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +268 +02 +Instrumentation +002173 +Square of the off-nadir angle +(see Note 7) +deg2 +4 +0 +10 +deg2 +4 +4 +Operational + + +269 +02 +Instrumentation +002174 +Mean across track pixel number +Numeric +0 +0 +9 +Numeric +0 +3 +Operational + + +270 +02 +Instrumentation +002175 +Method of precipitation measurement +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +271 +02 +Instrumentation +002176 +Method of state of ground measurement +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +272 +02 +Instrumentation +002177 +Method of snow depth measurement +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +273 +02 +Instrumentation +002178 +Method of liquid content measurement of precipitation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +274 +02 +Instrumentation +002179 +Type of sky condition algorithm +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +275 +02 +Instrumentation +002180 +Main present weather detecting system +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +276 +02 +Instrumentation +002181 +Supplementary present weather sensor +Flag table +0 +0 +21 +Flag table +0 +7 +Operational + + +277 +02 +Instrumentation +002182 +Visibility measurement system +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +278 +02 +Instrumentation +002183 +Cloud detection system +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +279 +02 +Instrumentation +002184 +Type of lightning detection sensor +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +280 +02 +Instrumentation +002185 +Method of evaporation measurement +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +281 +02 +Instrumentation +002186 +Capability to detect precipitation phenomena +Flag table +0 +0 +30 +Flag table +0 +10 +Operational + + +282 +02 +Instrumentation +002187 +Capability to detect other weather phenomena +Flag table +0 +0 +18 +Flag table +0 +6 +Operational + + +283 +02 +Instrumentation +002188 +Capability to detect obscuration +Flag table +0 +0 +21 +Flag table +0 +7 +Operational + + +284 +02 +Instrumentation +002189 +Capability to discriminate lightning strikes +Flag table +0 +0 +12 +Flag table +0 +4 +Operational + + +285 +02 +Instrumentation +002190 +Lagrangian drifter submergence (% time submerged) +% +0 +0 +7 +% +0 +3 +Operational + + +286 +02 +Instrumentation +002191 +Geopotential height calculation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +287 +03 +Instrumentation +003001 +Surface station type +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +289 +03 +Instrumentation +003003 +Thermometer/hygrometer housing +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +290 +03 +Instrumentation +003004 +Type of screen/shelter/radiation shield +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +291 +03 +Instrumentation +003005 +Horizontal width of screen or shield (x) +m +3 +0 +16 +m +3 +5 +Operational + + +292 +03 +Instrumentation +003006 +Horizontal depth of screen or shield (y) +m +3 +0 +16 +m +3 +5 +Operational + + +293 +03 +Instrumentation +003007 +Vertical height of screen or shield (z) +m +3 +0 +16 +m +3 +5 +Operational + + +294 +03 +Instrumentation +003008 +Artificially ventilated screen or shield +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +295 +03 +Instrumentation +003009 +Amount of forced ventilation at time of reading +m/s +1 +0 +9 +m/s +1 +3 +Operational + + +296 +03 +Instrumentation +003010 +Method of sea/water current measurement +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +297 +03 +Instrumentation +003011 +Method of depth calculation +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +298 +03 +Instrumentation +003012 +Instrument type/sensor for dissolved oxygen measurement +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +300 +03 +Instrumentation +003016 +Position of road sensors +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +301 +03 +Instrumentation +003017 +Extended type of station +Flag table +0 +0 +6 +Flag table +0 +2 +Operational + + +302 +03 +Instrumentation +003018 +Type of road +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +303 +03 +Instrumentation +003019 +Type of construction +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +304 +03 +Instrumentation +003020 +Material for thermometer/hygrometer housing +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +305 +03 +Instrumentation +003021 +Hygrometer heating +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +306 +03 +Instrumentation +003022 +Instrument owner +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +307 +03 +Instrumentation +003023 +Configuration of louvers for thermometer/hygrometer screen +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +308 +03 +Instrumentation +003024 +Psychrometric coefficient +K-1 +6 +0 +10 +K-1 +6 +3 +Operational + + +309 +03 +Instrumentation +003025 +Cross-track estimation area size +m +0 +5000 +16 +m +0 +5 +Operational + + +310 +03 +Instrumentation +003026 +Along-track estimation area size +m +0 +5000 +16 +m +0 +5 +Operational + + +311 +03 +Instrumentation +003027 +Type of flight rig +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +312 +03 +Instrumentation +003028 +Method of snow water equivalent measurement +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +313 +04 +Location (time) +004001 +Year +a +0 +0 +12 +a +0 +4 +Operational + + +314 +04 +Location (time) +004002 +Month +mon +0 +0 +4 +mon +0 +2 +Operational + + +315 +04 +Location (time) +004003 +Day +d +0 +0 +6 +d +0 +2 +Operational + + +316 +04 +Location (time) +004004 +Hour +h +0 +0 +5 +h +0 +2 +Operational + + +317 +04 +Location (time) +004005 +Minute +min +0 +0 +6 +min +0 +2 +Operational + + +318 +04 +Location (time) +004006 +Second +s +0 +0 +6 +s +0 +2 +Operational + + +319 +04 +Location (time) +004007 +Seconds within a minute (microsecond accuracy) +s +6 +0 +26 +s +6 +8 +Operational + + +320 +04 +Location (time) +004011 +Time increment +a +0 +-1024 +11 +a +0 +4 +Operational + + +321 +04 +Location (time) +004012 +Time increment +mon +0 +-1024 +11 +mon +0 +4 +Operational + + +322 +04 +Location (time) +004013 +Time increment +d +0 +-1024 +11 +d +0 +4 +Operational + + +323 +04 +Location (time) +004014 +Time increment +h +0 +-1024 +11 +h +0 +4 +Operational + + +324 +04 +Location (time) +004015 +Time increment +min +0 +-2048 +12 +min +0 +4 +Operational + + +325 +04 +Location (time) +004016 +Time increment +s +0 +-4096 +13 +s +0 +4 +Operational + + +326 +04 +Location (time) +004017 +Reference time period for accumulated or extreme data +min +0 +-1440 +12 +min +0 +4 +Operational + + +327 +04 +Location (time) +004021 +Time period or displacement +a +0 +-1024 +11 +a +0 +4 +Operational + + +328 +04 +Location (time) +004022 +Time period or displacement +mon +0 +-1024 +11 +mon +0 +4 +Operational + + +329 +04 +Location (time) +004023 +Time period or displacement +d +0 +-1024 +11 +d +0 +4 +Operational + + +330 +04 +Location (time) +004024 +Time period or displacement +h +0 +-2048 +12 +h +0 +4 +Operational + + +331 +04 +Location (time) +004025 +Time period or displacement +min +0 +-2048 +12 +min +0 +4 +Operational + + +332 +04 +Location (time) +004026 +Time period or displacement +s +0 +-4096 +13 +s +0 +4 +Operational + + +333 +04 +Location (time) +004031 +Duration of time relating to following value +h +0 +0 +8 +h +0 +3 +Operational + + +334 +04 +Location (time) +004032 +Duration of time relating to following value +min +0 +0 +6 +min +0 +2 +Operational + + +335 +04 +Location (time) +004041 +Time difference, UTC - LMT +(see Note 6) +min +0 +-1440 +12 +min +0 +4 +Operational + + +336 +04 +Location (time) +004043 +Day of the year +d +0 +0 +9 +d +0 +3 +Operational + + +337 +04 +Location (time) +004051 +Principal time of daily reading of maximum temperature +h +0 +0 +5 +h +0 +2 +Operational + + +338 +04 +Location (time) +004052 +Principal time of daily reading of minimum temperature +h +0 +0 +5 +h +0 +2 +Operational + + +339 +04 +Location (time) +004053 +Number of days with precipitation equal to or more than 1 mm +Numeric +0 +0 + 6 +Numeric +0 +2 +Operational + + +340 +04 +Location (time) +004059 +Times of observation used to compute the reported mean values +Flag table +0 +0 +6 +Flag table +0 +2 +Operational + + +341 +04 +Location (time) +004065 +Short time increment +min +0 +-128 +8 +min +0 +2 +Operational + + +342 +04 +Location (time) +004066 +Short time increment +s +0 +-128 +8 +s +0 +2 +Operational + + +343 +04 +Location (time) +004073 +Short time period or displacement +d +0 +-128 +8 +d +0 +2 +Operational + + +344 +04 +Location (time) +004074 +Short time period or displacement +h +0 +-128 +8 +h +0 +2 +Operational + + +345 +04 +Location (time) +004075 +Short time period or displacement +min +0 +-128 +8 +min +0 +2 +Operational + + +346 +04 +Location (time) +004080 +Averaging period for following value +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +347 +04 +Location (time) +004086 +Long time period or displacement +s +0 +-8192 +15 +s +0 +5 +Operational + + +348 +05 +Location (horizontal - 1) +005001 +Latitude (high accuracy) +deg +5 +-9000000 +25 +deg +5 +7 +Operational + + +349 +05 +Location (horizontal - 1) +005002 +Latitude (coarse accuracy) +deg +2 +-9000 +15 +deg +2 +4 +Operational + + +350 +05 +Location (horizontal - 1) +005011 +Latitude increment (high accuracy) +deg +5 +-9000000 +25 +deg +5 +7 +Operational + + +351 +05 +Location (horizontal - 1) +005012 +Latitude increment (coarse accuracy) +deg +2 +-9000 +15 +deg +2 +4 +Operational + + +352 +05 +Location (horizontal - 1) +005015 +Latitude displacement (high accuracy) +deg +5 +-9000000 +25 +deg +5 +7 +Operational + + +353 +05 +Location (horizontal - 1) +005016 +Latitude displacement (coarse accuracy) +deg +2 +-9000 +15 +deg +2 +4 +Operational + + +354 +05 +Location (horizontal - 1) +005021 +Bearing or azimuth +degree true +2 +0 +16 +degree true +2 +5 +Operational + + +355 +05 +Location (horizontal - 1) +005022 +Solar azimuth +degree true +2 +0 +16 +degree true +2 +5 +Operational + + +356 +05 +Location (horizontal - 1) +005023 +Sun to satellite azimuth difference +deg +1 +-1800 +12 +deg +1 +4 +Operational + + +357 +05 +Location (horizontal - 1) +005030 +Direction (spectral) +deg +0 +0 +12 +deg +0 +4 +Operational + + +358 +05 +Location (horizontal - 1) +005031 +Row number +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +359 +05 +Location (horizontal - 1) +005032 +Y offset +(see Note 6) +m +2 +-1073741824 +31 +m +2 +11 +Operational + + +360 +05 +Location (horizontal - 1) +005033 +Pixel size on horizontal - 1 +m +-1 +0 +16 +m +-1 +5 +Operational + + +361 +05 +Location (horizontal - 1) +005034 +Along track row number +Numeric +0 +0 +11 +Numeric +0 +4 +Operational + + +362 +05 +Location (horizontal - 1) +005035 +Maximum size of x-dimension +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +363 +05 +Location (horizontal - 1) +005036 +Ship transect number according to SOOP +Numeric +0 +0 +7 +Numeric +0 +2 +Operational + + +364 +05 +Location (horizontal - 1) +005040 +Orbit number +Numeric +0 +0 +24 +Numeric +0 +8 +Operational + + +365 +05 +Location (horizontal - 1) +005041 +Scan line number +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +366 +05 +Location (horizontal - 1) +005042 +Channel number +Numeric +0 +0 +6 +Numeric +0 +2 +Operational + + +367 +05 +Location (horizontal - 1) +005043 +Field of view number +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +368 +05 +Location (horizontal - 1) +005044 +Satellite cycle number +Numeric +0 +0 +11 +Numeric +0 +4 +Operational + + +369 +05 +Location (horizontal - 1) +005045 +Field of regard number +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +370 +05 +Location (horizontal - 1) +005052 +Channel number increment +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +371 +05 +Location (horizontal - 1) +005053 +Field of view number increment +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +372 +05 +Location (horizontal - 1) +005060 +Y angular position from centre of gravity +deg +6 +-8000000 +24 +deg +6 +8 +Operational + + +373 +05 +Location (horizontal - 1) +005061 +Z angular position from centre of gravity +deg +6 +-8000000 +24 +deg +6 +8 +Operational + + +374 +05 +Location (horizontal - 1) +005063 +Spacecraft roll +deg +2 +0 +16 +deg +2 +5 +Operational + + +375 +05 +Location (horizontal - 1) +005064 +Spacecraft pitch +deg +2 +0 +16 +deg +2 +5 +Operational + + +376 +05 +Location (horizontal - 1) +005066 +Spacecraft yaw +deg +2 +0 +16 +deg +2 +5 +Operational + + +377 +05 +Location (horizontal - 1) +005067 +Number of scan lines +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +378 +05 +Location (horizontal - 1) +005068 +Profile number +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +379 +05 +Location (horizontal - 1) +005069 +Receiver channel +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +380 +05 +Location (horizontal - 1) +005070 +Observation identifier +Numeric +0 +0 +30 +Numeric +0 +10 +Operational + + +381 +05 +Location (horizontal - 1) +005071 +Stripmap identifier +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +382 +05 +Location (horizontal - 1) +005072 +Number of spectra in range direction +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +383 +05 +Location (horizontal - 1) +005073 +Number of spectra in azimuthal direction +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +384 +05 +Location (horizontal - 1) +005074 +Index in range direction +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +385 +05 +Location (horizontal - 1) +005075 +Index in azimuthal direction +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +386 +06 +Location (horizontal - 2) +006001 +Longitude (high accuracy) +deg +5 +-18000000 +26 +deg +5 +8 +Operational + + +387 +06 +Location (horizontal - 2) +006002 +Longitude (coarse accuracy) +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +388 +06 +Location (horizontal - 2) +006011 +Longitude increment (high accuracy) +deg +5 +-18000000 +26 +deg +5 +8 +Operational + + +389 +06 +Location (horizontal - 2) +006012 +Longitude increment (coarse accuracy) +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +390 +06 +Location (horizontal - 2) +006015 +Longitude displacement (high accuracy) +deg +5 +-18000000 +26 +deg +5 +8 +Operational + + +391 +06 +Location (horizontal - 2) +006016 +Longitude displacement (coarse accuracy) +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +392 +06 +Location (horizontal - 2) +006021 +Distance +m +-1 +0 +13 +m +-1 +4 +Operational + + +393 +06 +Location (horizontal - 2) +006029 +Wave number +/m +1 +0 +22 +/m +1 +7 +Operational + + +394 +06 +Location (horizontal - 2) +006030 +Wave number (spectral) +rad/m +5 +0 +13 +rad/m +5 +4 +Operational + + +395 +06 +Location (horizontal - 2) +006031 +Column number +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +396 +06 +Location (horizontal - 2) +006032 +X offset +(see Note 6) +m +2 +-1073741824 +31 +m +2 +11 +Operational + + +397 +06 +Location (horizontal - 2) +006033 +Pixel size on horizontal - 2 +m +-1 +0 +16 +m +-1 +5 +Operational + + +398 +06 +Location (horizontal - 2) +006034 +Cross-track cell number +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +399 +06 +Location (horizontal - 2) +006035 +Maximum size of y-dimension +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +400 +06 +Location (horizontal - 2) +006040 +Radius of confidence +m +0 +0 +13 +m +0 +4 +Operational + + +401 +07 +Location (vertical) +007001 +Height of station +(see Note 1) +m +0 +-400 +15 +m +0 +5 +Operational + + +402 +07 +Location (vertical) +007002 +Height or altitude +m +-1 +-40 +16 +m +-1 +5 +Operational + + +403 +07 +Location (vertical) +007003 +Geopotential +m2 s-2 +-1 +-400 +17 +m2 s-2 +-1 +6 +Operational + + +404 +07 +Location (vertical) +007004 +Pressure +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +405 +07 +Location (vertical) +007005 +Height increment +m +0 +-400 +12 +m +0 +4 +Operational + + +406 +07 +Location (vertical) +007006 +Height above station +m +0 +0 +15 +m +0 +5 +Operational + + +407 +07 +Location (vertical) +007007 +Height +m +0 +-1000 +17 +m +0 +6 +Operational + + +408 +07 +Location (vertical) +007008 +Geopotential +m2 s-2 +0 +-10000 +20 +m2 s-2 +0 +7 +Operational + + +409 +07 +Location (vertical) +007009 +Geopotential height +gpm +0 +-1000 +17 +gpm +0 +5 +Operational + + +410 +07 +Location (vertical) +007010 +Flight level +m +0 +-1024 +16 +ft +-1 +5 +Operational + + +411 +07 +Location (vertical) +007012 +Grid point altitude +m +2 +-50000 +20 +m +2 +7 +Operational + + +412 +07 +Location (vertical) +007021 +Elevation +(see Note 2) +deg +2 +-9000 +15 +deg +2 +5 +Operational + + +413 +07 +Location (vertical) +007022 +Solar elevation +deg +2 +-9000 +15 +deg +2 +5 +Operational + + +414 +07 +Location (vertical) +007024 +Satellite zenith angle +deg +2 +-9000 +15 +deg +2 +5 +Operational + + +415 +07 +Location (vertical) +007025 +Solar zenith angle +deg +2 +-9000 +15 +deg +2 +5 +Operational + + +416 +07 +Location (vertical) +007026 +Satellite zenith angle +deg +4 +-900000 +21 +deg +4 +7 +Operational + + +417 +07 +Location (vertical) +007030 +Height of station ground above mean sea level +(see Note 3) +m +1 +-4000 +17 +m +1 +5 +Operational + + +418 +07 +Location (vertical) +007031 +Height of barometer above mean sea level +(see Note 4) +m +1 +-4000 +17 +m +1 +5 +Operational + + +419 +07 +Location (vertical) +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 5) +m +2 +0 +16 +m +2 +5 +Operational + + +420 +07 +Location (vertical) +007033 +Height of sensor above water surface +(see Note 6) +m +1 +0 +12 +m +1 +4 +Operational + + +421 +07 +Location (vertical) +007035 +Maximum size of z-dimension +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +422 +07 +Location (vertical) +007036 +Level index of z +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +423 +07 +Location (vertical) +007040 +Impact parameter +(see Note 7) +m +1 +62000000 +22 +m +1 +8 +Operational + + +424 +07 +Location (vertical) +007061 +Depth below land surface +m +2 +0 +14 +m +2 +5 +Operational + + +425 +07 +Location (vertical) +007062 +Depth below sea/water surface +m +1 +0 +17 +m +1 +6 +Operational + + +426 +07 +Location (vertical) +007063 +Depth below sea/water surface (cm) +m +2 +0 +20 +m +2 +7 +Operational + + +427 +07 +Location (vertical) +007064 +Representative height of sensor above station +(see Note 8) +m +0 +0 +4 +m +0 +2 +Operational + + +428 +07 +Location (vertical) +007065 +Water pressure +Pa +-3 +0 +17 +Pa +-3 +6 +Operational + + +429 +07 +Location (vertical) +007070 +Drogue depth +m +0 +0 +10 +m +0 +4 +Operational + + +430 +07 +Location (vertical) +007071 +Height (high resolution) +m +3 +-10000000 +26 +m +3 +8 +Operational + + +431 +08 +Significance qualifiers +008001 +Vertical sounding significance +Flag table +0 +0 +7 +Flag table +0 +3 +Operational + + +432 +08 +Significance qualifiers +008002 +Vertical significance (surface observations) +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +433 +08 +Significance qualifiers +008003 +Vertical significance (satellite observations) +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +434 +08 +Significance qualifiers +008004 +Phase of aircraft flight +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +435 +08 +Significance qualifiers +008005 +Meteorological attribute significance +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +436 +08 +Significance qualifiers +008006 +Ozone vertical sounding significance +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +437 +08 +Significance qualifiers +008007 +Dimensional significance +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +438 +08 +Significance qualifiers +008008 +Radiation vertical sounding significance +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +439 +08 +Significance qualifiers +008009 +Detailed phase of flight +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +440 +08 +Significance qualifiers +008010 +Surface qualifier (temperature data) +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +441 +08 +Significance qualifiers +008011 +Meteorological feature +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +442 +08 +Significance qualifiers +008012 +Land/sea qualifier +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +443 +08 +Significance qualifiers +008013 +Day/night qualifier +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +444 +08 +Significance qualifiers +008014 +Qualifier for runway visual range +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +445 +08 +Significance qualifiers +008015 +Significant qualifier for sensor +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +446 +08 +Significance qualifiers +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +447 +08 +Significance qualifiers +008017 +Qualifier of the time when the forecast change is expected +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +448 +08 +Significance qualifiers +008018 +SEAWINDS land/ice surface type +Flag table +0 +0 +17 +Flag table +0 +6 +Operational + + +449 +08 +Significance qualifiers +008019 +Qualifier for following centre identifier +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +450 +08 +Significance qualifiers +008020 +Total number of missing entities (with respect to accumulation or average) +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +451 +08 +Significance qualifiers +008021 +Time significance +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +452 +08 +Significance qualifiers +008022 +Total number (with respect to accumulation or average) +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +453 +08 +Significance qualifiers +008023 +First-order statistics +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +454 +08 +Significance qualifiers +008024 +Difference statistics +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +455 +08 +Significance qualifiers +008025 +Time difference qualifier +(see Note 5) +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +456 +08 +Significance qualifiers +008026 +Matrix significance +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +457 +08 +Significance qualifiers +008029 +Surface type +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +458 +08 +Significance qualifiers +008030 +Manual on Codes (Volume I.1, Section C) Code table from which data are derived +Numeric +0 +0 +13 +Numeric +0 +4 +Operational + + +459 +08 +Significance qualifiers +008031 +Data category - CREX table A +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +460 +08 +Significance qualifiers +008032 +Status of operation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +461 +08 +Significance qualifiers +008033 +Method of derivation of percentage confidence +(see Note 6) +Code table +0 +0 +7 +Code table +0 +3 +Operational + + +462 +08 +Significance qualifiers +008034 +Temperature/salinity measurement qualifier +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +463 +08 +Significance qualifiers +008035 +Type of monitoring exercise +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +464 +08 +Significance qualifiers +008036 +Type of centre or station performing monitoring +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +465 +08 +Significance qualifiers +008037 +Baseline check significance +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +466 +08 +Significance qualifiers +008038 +Instrument data significance +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +467 +08 +Significance qualifiers +008039 +Time significance (Aviation forecast) +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +468 +08 +Significance qualifiers +008040 +Flight level significance +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +469 +08 +Significance qualifiers +008041 +Data significance +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +470 +08 +Significance qualifiers +008042 +Extended vertical sounding significance +Flag table +0 +0 +18 +Flag table +0 +6 +Operational + + +471 +08 +Significance qualifiers +008043 +Atmospheric chemical or physical constituent type +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +472 +08 +Significance qualifiers +008044 +CAS registry number +CCITT IA5 +0 +0 +88 +Character +0 +11 +Operational + + +473 +08 +Significance qualifiers +008046 +Atmospheric chemical or physical constituent type +Common Code table C-14 +0 +0 +16 +Common Code table C-14 +0 +5 +Operational + + +474 +08 +Significance qualifiers +008049 +Number of observations +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +475 +08 +Significance qualifiers +008050 +Qualifier for number of missing values in calculation of statistic +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +476 +08 +Significance qualifiers +008051 +Qualifier for number of missing values in calculation of statistic +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +477 +08 +Significance qualifiers +008052 +Condition for which number of days of occurrence follows +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +478 +08 +Significance qualifiers +008053 +Day of occurrence qualifier +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +479 +08 +Significance qualifiers +008054 +Qualifier for wind speed or wind gusts +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +480 +08 +Significance qualifiers +008060 +Sample scanning mode significance +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +481 +08 +Significance qualifiers +008065 +Sun-glint indicator +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +482 +08 +Significance qualifiers +008066 +Semi-transparency indicator +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +483 +08 +Significance qualifiers +008070 +Vertical sounding product qualifier +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +484 +08 +Significance qualifiers +008072 +Pixel(s) type +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +485 +08 +Significance qualifiers +008074 +Altimeter echo type +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +486 +08 +Significance qualifiers +008075 +Ascending/descending orbit qualifier +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +487 +08 +Significance qualifiers +008076 +Type of band +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +488 +08 +Significance qualifiers +008077 +Radiometer sensed surface type +Code table +0 +0 +7 +Code table +0 +3 +Operational + + +489 +08 +Significance qualifiers +008079 +Product status +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +490 +08 +Significance qualifiers +008080 +Qualifier for GTSPP quality flag +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +491 +08 +Significance qualifiers +008081 +Type of equipment +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +492 +08 +Significance qualifiers +008082 +Modification of sensor height to another value +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +493 +08 +Significance qualifiers +008083 +Nominal value indicator +Flag table +0 +0 +15 +Flag table +0 +5 +Operational + + +494 +08 +Significance qualifiers +008085 +Beam identifier +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +495 +08 +Significance qualifiers +008086 +Vertical significance for NWP +Flag table +0 +0 +12 +Flag table +0 +4 +Operational + + +496 +08 +Significance qualifiers +008087 +Corner position of observation +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +497 +08 +Significance qualifiers +008088 +Map significance +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +498 +08 +Significance qualifiers +008090 +Decimal scale of following significands +Numeric +0 +-127 +8 +Numeric +0 +3 +Operational + + +499 +08 +Significance qualifiers +008091 +Coordinates significance +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +500 +08 +Significance qualifiers +008092 +Measurement uncertainty expression +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +501 +08 +Significance qualifiers +008093 +Measurement uncertainty significance +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +502 +10 +Non-coordinate location (vertical) +010001 +Height of land surface +m +0 +-400 +15 +m +0 +5 +Operational + + +503 +10 +Non-coordinate location (vertical) +010002 +Height +m +-1 +-40 +16 +m +-1 +5 +Operational + + +504 +10 +Non-coordinate location (vertical) +010003 +Geopotential +m2 s-2 +-1 +-400 +17 +m2 s-2 +-1 +6 +Operational + + +505 +10 +Non-coordinate location (vertical) +010004 +Pressure +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +506 +10 +Non-coordinate location (vertical) +010007 +Height +m +0 +-1000 +17 +m +0 +6 +Operational + + +507 +10 +Non-coordinate location (vertical) +010008 +Geopotential +m2 s-2 +0 +-10000 +20 +m2 s-2 +0 +7 +Operational + + +508 +10 +Non-coordinate location (vertical) +010009 +Geopotential height +gpm +0 +-1000 +17 +gpm +0 +5 +Operational + + +509 +10 +Non-coordinate location (vertical) +010010 +Minimum pressure reduced to mean sea level +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +510 +10 +Non-coordinate location (vertical) +010011 +Maximum pressure reduced to mean sea level +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +511 +10 +Non-coordinate location (vertical) +010031 +In direction of the North Pole, distance from the Earth's centre +(see Notes 2 and 3) +m +2 +-1073741824 +31 +m +2 +10 +Operational + + +512 +10 +Non-coordinate location (vertical) +010032 +Satellite distance to Earth's centre +m +1 +0 +27 +m +2 +9 +Operational + + +513 +10 +Non-coordinate location (vertical) +010033 +Altitude (platform to ellipsoid) +m +1 +0 +27 +m +2 +9 +Operational + + +514 +10 +Non-coordinate location (vertical) +010034 +Earth's radius +m +1 +0 +27 +m +2 +9 +Operational + + +515 +10 +Non-coordinate location (vertical) +010035 +Earth's local radius of curvature +m +1 +62000000 +22 +m +1 +8 +Operational + + +516 +10 +Non-coordinate location (vertical) +010036 +Geoid undulation +(see Note 4) +m +2 +-15000 +15 +m +2 +6 +Operational + + +517 +10 +Non-coordinate location (vertical) +010038 +Maximum height of deck cargo above summer load line +m +0 +0 +6 +m +0 +2 +Operational + + +518 +10 +Non-coordinate location (vertical) +010039 +Departure of reference level (summer maximum load line) from actual sea level +m +0 +-32 +6 +m +0 +3 +Operational + + +519 +10 +Non-coordinate location (vertical) +010040 +Number of retrieved layers +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +520 +10 +Non-coordinate location (vertical) +010050 +Standard deviation altitude +m +2 +0 +16 +m +2 +5 +Operational + + +521 +10 +Non-coordinate location (vertical) +010051 +Pressure reduced to mean sea level +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +522 +10 +Non-coordinate location (vertical) +010052 +Altimeter setting (QNH) +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +523 +10 +Non-coordinate location (vertical) +010053 +Global navigation satellite system altitude +m +0 +-1000 +17 +m +0 +5 +Operational + + +524 +10 +Non-coordinate location (vertical) +010060 +Pressure change +Pa +-1 +-1024 +11 +Pa +-1 +4 +Operational + + +525 +10 +Non-coordinate location (vertical) +010061 +3-hour pressure change +Pa +-1 +-500 +10 +Pa +-1 +4 +Operational + + +526 +10 +Non-coordinate location (vertical) +010062 +24-hour pressure change +Pa +-1 +-1000 +11 +Pa +-1 +4 +Operational + + +527 +10 +Non-coordinate location (vertical) +010063 +Characteristic of pressure tendency +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +528 +10 +Non-coordinate location (vertical) +010064 +SIGMET cruising level +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +529 +10 +Non-coordinate location (vertical) +010070 +Indicated aircraft altitude +m +0 +-400 +16 +m +0 +5 +Operational + + +530 +10 +Non-coordinate location (vertical) +010071 +Vertical resolution +m +0 +0 +14 +m +0 +5 +Operational + + +531 +10 +Non-coordinate location (vertical) +010079 +Off-nadir angle of the satellite from platform data +deg +4 +0 +16 +deg +4 +5 +Operational + + +532 +10 +Non-coordinate location (vertical) +010080 +Viewing zenith angle +deg +2 +-9000 +15 +deg +2 +5 +Operational + + +533 +10 +Non-coordinate location (vertical) +010081 +Altitude of COG above reference ellipsoid +m +3 +0 +31 +m +3 +10 +Operational + + +534 +10 +Non-coordinate location (vertical) +010082 +Instantaneous altitude rate +m/s +3 +-65536 +17 +m/s +3 +6 +Operational + + +535 +10 +Non-coordinate location (vertical) +010083 +Squared off-nadir angle of the satellite from platform data +deg2 +2 +0 +16 +deg2 +2 +5 +Operational + + +536 +10 +Non-coordinate location (vertical) +010084 +Squared off-nadir angle of the satellite from waveform data +deg2 +2 +0 +16 +deg2 +2 +5 +Operational + + +537 +10 +Non-coordinate location (vertical) +010085 +Mean sea-surface height +m +3 +-131072 +18 +m +3 +6 +Operational + + +538 +10 +Non-coordinate location (vertical) +010086 +Geoid's height +m +3 +-131072 +18 +m +3 +6 +Operational + + +539 +10 +Non-coordinate location (vertical) +010087 +Ocean depth/land elevation +m +1 +-131072 +18 +m +1 +6 +Operational + + +540 +10 +Non-coordinate location (vertical) +010088 +Total geocentric ocean tide height (solution 1) +m +3 +-32768 +16 +m +3 +5 +Operational + + +541 +10 +Non-coordinate location (vertical) +010089 +Total geocentric ocean tide height (solution 2) +m +3 +-32768 +16 +m +3 +5 +Operational + + +542 +10 +Non-coordinate location (vertical) +010090 +Long period tide height +m +3 +-32768 +16 +m +3 +5 +Operational + + +543 +10 +Non-coordinate location (vertical) +010091 +Tidal loading height +m +3 +-32768 +16 +m +3 +5 +Operational + + +544 +10 +Non-coordinate location (vertical) +010092 +Solid Earth tide height +m +3 +-32768 +16 +m +3 +5 +Operational + + +545 +10 +Non-coordinate location (vertical) +010093 +Geocentric pole tide height +m +3 +-32768 +16 +m +3 +5 +Operational + + +546 +10 +Non-coordinate location (vertical) +010095 +Height of atmosphere used +m +0 +0 +16 +m +0 +5 +Operational + + +547 +10 +Non-coordinate location (vertical) +010096 +Mean dynamic topography +m +3 +-131072 +18 +m +3 +6 +Operational + + +548 +10 +Non-coordinate location (vertical) +010097 +Mean sea-surface height from altimeter only +m +3 +-131072 +18 +m +3 +6 +Operational + + +549 +10 +Non-coordinate location (vertical) +010098 +Loading tide height geocentric ocean tide solution 1 +m +4 +-2000 +12 +m +4 +4 +Operational + + +550 +10 +Non-coordinate location (vertical) +010099 +Loading tide height geocentric ocean tide solution 2 +m +4 +-2000 +12 +m +4 +4 +Operational + + +551 +10 +Non-coordinate location (vertical) +010100 +Non-equilibrium long period tide height +m +4 +-2000 +12 +m +4 +4 +Operational + + +552 +10 +Non-coordinate location (vertical) +010101 +Squared off-nadir angle of the satellite from waveform data +deg2 +2 +-32768 +16 +deg2 +2 +5 +Operational + + +553 +10 +Non-coordinate location (vertical) +010102 +Sea-surface height anomaly +m +3 +-32768 +16 +m +3 +5 +Operational + + +554 +10 +Non-coordinate location (vertical) +010103 +Mean dynamic topography accuracy +m +3 +-131072 +18 +m +3 +6 +Operational + + +555 +11 +Wind and turbulence +011001 +Wind direction +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +556 +11 +Wind and turbulence +011002 +Wind speed +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +557 +11 +Wind and turbulence +011003 +u-component +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +558 +11 +Wind and turbulence +011004 +v-component +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +559 +11 +Wind and turbulence +011005 +w-component +Pa/s +1 +-512 +10 +Pa/s +1 +4 +Operational + + +560 +11 +Wind and turbulence +011006 +w-component +m/s +2 +-4096 +13 +m/s +2 +4 +Operational + + +561 +11 +Wind and turbulence +011007 +Relative wind direction (in degrees off bow) +deg +0 +0 +9 +deg +0 +3 +Operational + + +562 +11 +Wind and turbulence +011008 +Relative wind speed +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +563 +11 +Wind and turbulence +011010 +Wind direction associated with wind speed which follows +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +564 +11 +Wind and turbulence +011011 +Wind direction at 10 m +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +565 +11 +Wind and turbulence +011012 +Wind speed at 10 m +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +566 +11 +Wind and turbulence +011013 +Wind direction at 5 m +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +567 +11 +Wind and turbulence +011014 +Wind speed at 5 m +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +568 +11 +Wind and turbulence +011016 +Extreme counterclockwise wind direction of a variable wind +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +569 +11 +Wind and turbulence +011017 +Extreme clockwise wind direction of a variable wind +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +570 +11 +Wind and turbulence +011019 +Steadiness of wind +(see Note 6) +% +0 +0 +7 +% +0 +3 +Operational + + +571 +11 +Wind and turbulence +011021 +Relative vorticity +/s +9 +-65536 +17 +/s +9 +6 +Operational + + +572 +11 +Wind and turbulence +011022 +Divergence +/s +9 +-65536 +17 +/s +9 +6 +Operational + + +573 +11 +Wind and turbulence +011023 +Velocity potential +m2/s +-2 +-65536 +17 +m2/s +-2 +6 +Operational + + +574 +11 +Wind and turbulence +011030 +Extended degree of turbulence +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +575 +11 +Wind and turbulence +011031 +Degree of turbulence +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +576 +11 +Wind and turbulence +011032 +Height of base of turbulence +m +-1 +-40 +16 +m +-1 +5 +Operational + + +577 +11 +Wind and turbulence +011033 +Height of top of turbulence +m +-1 +-40 +16 +m +-1 +5 +Operational + + +578 +11 +Wind and turbulence +011034 +Vertical gust velocity +m/s +1 +-1024 +11 +m/s +1 +4 +Operational + + +579 +11 +Wind and turbulence +011035 +Vertical gust acceleration +m s-2 +2 +-8192 +14 +m s-2 +2 +5 +Operational + + +580 +11 +Wind and turbulence +011036 +Maximum derived equivalent vertical gust speed +m/s +1 +0 +10 +m/s +1 +4 +Operational + + +581 +11 +Wind and turbulence +011037 +Turbulence index +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +582 +11 +Wind and turbulence +011038 +Time of occurrence of peak eddy dissipation rate +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +583 +11 +Wind and turbulence +011039 +Extended time of occurrence of peak eddy dissipation rate +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +584 +11 +Wind and turbulence +011040 +Maximum wind speed (mean wind) +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +585 +11 +Wind and turbulence +011041 +Maximum wind gust speed +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +586 +11 +Wind and turbulence +011042 +Maximum wind speed (10-minute mean wind) +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +587 +11 +Wind and turbulence +011043 +Maximum wind gust direction +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +588 +11 +Wind and turbulence +011044 +Mean wind direction for surface - 1 500 m (5 000 feet) +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +589 +11 +Wind and turbulence +011045 +Mean wind speed for surface - 1 500 m (5 000 feet) +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +590 +11 +Wind and turbulence +011046 +Maximum instantaneous wind speed +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +591 +11 +Wind and turbulence +011047 +Maximum instantaneous wind speed over 10 minutes +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +592 +11 +Wind and turbulence +011049 +Standard deviation of wind direction +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +593 +11 +Wind and turbulence +011050 +Standard deviation of horizontal wind speed +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +594 +11 +Wind and turbulence +011051 +Standard deviation of vertical wind speed +m/s +1 +0 +8 +m/s +1 +3 +Operational + + +595 +11 +Wind and turbulence +011052 +Formal uncertainty in wind speed +m/s +2 +0 +13 +m/s +2 +5 +Operational + + +596 +11 +Wind and turbulence +011053 +Formal uncertainty in wind direction +degree true +2 +0 +15 +degree true +2 +5 +Operational + + +597 +11 +Wind and turbulence +011054 +Mean wind direction for 1 500 - 3 000 m +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +598 +11 +Wind and turbulence +011055 +Mean wind speed for 1 500 - 3 000 m +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +599 +11 +Wind and turbulence +011061 +Absolute wind shear in 1 km layer below +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +600 +11 +Wind and turbulence +011062 +Absolute wind shear in 1 km layer above +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +601 +11 +Wind and turbulence +011070 +Designator of the runway affected by wind shear (including ALL) +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +602 +11 +Wind and turbulence +011071 +Turbulent vertical momentum flux +m2 s-2 +3 +-128 +14 +m2 s-2 +3 +5 +Operational + + +603 +11 +Wind and turbulence +011072 +Turbulent vertical buoyancy flux +K m s-1 +3 +-128 +11 +K m s-1 +3 +4 +Operational + + +604 +11 +Wind and turbulence +011073 +Turbulent kinetic energy +m2 s-2 +2 +-1024 +13 +m2 s-2 +2 +4 +Operational + + +605 +11 +Wind and turbulence +011074 +Dissipation energy +m2 s-2 +2 +-1024 +10 +m2 s-2 +2 +4 +Operational + + +606 +11 +Wind and turbulence +011075 +Mean turbulence intensity (eddy dissipation rate) +m2/3 s-1 +2 +0 +8 +m2/3 s-1 +2 +3 +Operational + + +607 +11 +Wind and turbulence +011076 +Peak turbulence intensity (eddy dissipation rate) +m2/3 s-1 +2 +0 +8 +m2/3 s-1 +2 +3 +Operational + + +608 +11 +Wind and turbulence +011077 +Reporting interval or averaging time for eddy dissipation rate +s +0 +0 +12 +s +0 +4 +Operational + + +609 +11 +Wind and turbulence +011081 +Model wind direction at 10 m +degree true +2 +0 +16 +degree true +2 +5 +Operational + + +610 +11 +Wind and turbulence +011082 +Model wind speed at 10 m +m/s +2 +0 +14 +m/s +2 +4 +Operational + + +611 +11 +Wind and turbulence +011083 +Wind speed +km/h +0 +0 +9 +km/h +0 +3 +Operational + + +612 +11 +Wind and turbulence +011084 +Wind speed +kt +0 +0 +8 +kt +0 +3 +Operational + + +613 +11 +Wind and turbulence +011085 +Maximum wind gust speed +km/h +0 +0 +9 +km/h +0 +3 +Operational + + +614 +11 +Wind and turbulence +011086 +Maximum wind gust speed +kt +0 +0 +8 +kt +0 +3 +Operational + + +615 +11 +Wind and turbulence +011095 +u-component of the model wind vector +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +616 +11 +Wind and turbulence +011096 +v-component of the model wind vector +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +617 +11 +Wind and turbulence +011097 +Wind speed from altimeter +m/s +2 +0 +12 +m/s +2 +4 +Operational + + +618 +11 +Wind and turbulence +011098 +Wind speed from radiometer +m/s +2 +0 +12 +m/s +2 +4 +Operational + + +619 +11 +Wind and turbulence +011100 +Aircraft true airspeed +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +620 +11 +Wind and turbulence +011101 +Aircraft ground speed u-component +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +621 +11 +Wind and turbulence +011102 +Aircraft ground speed v-component +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +622 +11 +Wind and turbulence +011103 +Aircraft ground speed w-component +m/s +1 +-512 +10 +m/s +1 +3 +Operational + + +623 +11 +Wind and turbulence +011104 +True heading of aircraft, ship or other mobile platform +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +624 +11 +Wind and turbulence +011105 +EDR algorithm version +Numeric +0 +0 +6 +Numeric +0 +2 +Operational + + +625 +11 +Wind and turbulence +011106 +Running minimum confidence +Numeric +1 +0 +4 +Numeric +1 +2 +Operational + + +626 +11 +Wind and turbulence +011107 +Maximum number bad inputs +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +627 +11 +Wind and turbulence +011108 +Peak location +Numeric +1 +0 +4 +Numeric +1 +2 +Operational + + +628 +11 +Wind and turbulence +011109 +Number of good EDR +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +629 +11 +Wind and turbulence +011110 +Uncertainty in u-component +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +630 +11 +Wind and turbulence +011111 +Uncertainty in v-component +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +631 +11 +Wind and turbulence +011112 +Uncertainty in w-component +m/s +2 +-4096 +13 +m/s +2 +4 +Operational + + +632 +11 +Wind and turbulence +011113 +Tracking correlation of vector +Numeric +3 +-1000 +12 +Numeric +3 +4 +Operational + + +633 +12 +Temperature +012001 +Temperature/air temperature +K +1 +0 +12 +C +1 +3 +Operational + + +634 +12 +Temperature +012002 +Wet-bulb temperature +K +1 +0 +12 +C +1 +3 +Operational + + +635 +12 +Temperature +012003 +Dewpoint temperature +K +1 +0 +12 +C +1 +3 +Operational + + +636 +12 +Temperature +012004 +Air temperature at 2 m +K +1 +0 +12 +C +1 +3 +Operational + + +637 +12 +Temperature +012005 +Wet-bulb temperature at 2 m +K +1 +0 +12 +C +1 +3 +Operational + + +638 +12 +Temperature +012006 +Dewpoint temperature at 2 m +K +1 +0 +12 +C +1 +3 +Operational + + +639 +12 +Temperature +012007 +Virtual temperature +K +1 +0 +12 +C +1 +3 +Operational + + +640 +12 +Temperature +012008 +Uncertainty in virtual temperature +K +1 +0 +12 +C +1 +4 +Operational + + +641 +12 +Temperature +012011 +Maximum temperature, at height and over period specified +K +1 +0 +12 +C +1 +3 +Operational + + +642 +12 +Temperature +012012 +Minimum temperature, at height and over period specified +K +1 +0 +12 +C +1 +3 +Operational + + +643 +12 +Temperature +012013 +Ground minimum temperature, past 12 hours +K +1 +0 +12 +C +1 +3 +Operational + + +644 +12 +Temperature +012014 +Maximum temperature at 2 m, past 12 hours +K +1 +0 +12 +C +1 +3 +Operational + + +645 +12 +Temperature +012015 +Minimum temperature at 2 m, past 12 hours +K +1 +0 +12 +C +1 +3 +Operational + + +646 +12 +Temperature +012016 +Maximum temperature at 2 m, past 24 hours +K +1 +0 +12 +C +1 +3 +Operational + + +647 +12 +Temperature +012017 +Minimum temperature at 2 m, past 24 hours +K +1 +0 +12 +C +1 +3 +Operational + + +648 +12 +Temperature +012021 +Maximum temperature at 2 m +K +2 +0 +16 +C +2 +4 +Operational + + +649 +12 +Temperature +012022 +Minimum temperature at 2 m +K +2 +0 +16 +C +2 +4 +Operational + + +650 +12 +Temperature +012023 +Temperature +C +0 +-99 +8 +C +0 +2 +Operational + + +651 +12 +Temperature +012024 +Dewpoint temperature +C +0 +-99 +8 +C +0 +2 +Operational + + +652 +12 +Temperature +012030 +Soil temperature +K +1 +0 +12 +C +1 +3 +Operational + + +653 +12 +Temperature +012049 +Temperature change over specified period +K +0 +-30 +6 +C +0 +2 +Operational + + +654 +12 +Temperature +012051 +Standard deviation temperature +K +1 +0 +10 +C +1 +3 +Operational + + +655 +12 +Temperature +012052 +Highest daily mean temperature +K +1 +0 +12 +C +1 +3 +Operational + + +656 +12 +Temperature +012053 +Lowest daily mean temperature +K +1 +0 +12 +C +1 +3 +Operational + + +657 +12 +Temperature +012060 +AWS enclosure internal temperature +K +1 +0 +12 +C +1 +3 +Operational + + +658 +12 +Temperature +012061 +Skin temperature +K +1 +0 +12 +C +1 +3 +Operational + + +659 +12 +Temperature +012062 +Equivalent black body temperature +K +1 +0 +12 +C +1 +3 +Operational + + +660 +12 +Temperature +012063 +Brightness temperature +K +1 +0 +12 +C +1 +3 +Operational + + +661 +12 +Temperature +012064 +Instrument temperature +K +1 +0 +12 +K +1 +4 +Operational + + +662 +12 +Temperature +012065 +Standard deviation brightness temperature +K +1 +0 +12 +K +1 +4 +Operational + + +663 +12 +Temperature +012066 +Antenna temperature +K +2 +0 +16 +C +2 +5 +Operational + + +664 +12 +Temperature +012070 +Warm load temperature +K +2 +0 +16 +K +2 +5 +Operational + + +665 +12 +Temperature +012071 +Coldest cluster temperature +K +1 +0 +12 +K +1 +4 +Operational + + +666 +12 +Temperature +012072 +Radiance +W m-2 sr-1 +6 +0 +31 +W m-2 sr-1 +6 +9 +Operational + + +667 +12 +Temperature +012075 +Spectral radiance +W m-3 sr-1 +-3 +0 +16 +W m-3 sr-1 +-3 +5 +Operational + + +668 +12 +Temperature +012076 +Radiance +(see Note 2) +W m-2 sr-1 +3 +0 +16 +W m-2 sr-1 +3 +5 +Operational + + +669 +12 +Temperature +012080 +Brightness temperature real part +K +2 +-10000 +16 +K +2 +5 +Operational + + +670 +12 +Temperature +012081 +Brightness temperature imaginary part +K +2 +-10000 +16 +K +2 +5 +Operational + + +671 +12 +Temperature +012082 +Pixel radiometric accuracy +K +2 +0 +12 +K +2 +4 +Operational + + +672 +12 +Temperature +012101 +Temperature/air temperature +K +2 +0 +16 +C +2 +4 +Operational + + +673 +12 +Temperature +012102 +Wet-bulb temperature +K +2 +0 +16 +C +2 +4 +Operational + + +674 +12 +Temperature +012103 +Dewpoint temperature +K +2 +0 +16 +C +2 +4 +Operational + + +675 +12 +Temperature +012104 +Air temperature at 2 m +K +2 +0 +16 +C +2 +4 +Operational + + +676 +12 +Temperature +012105 +Web-bulb temperature at 2 m +K +2 +0 +16 +C +2 +4 +Operational + + +677 +12 +Temperature +012106 +Dewpoint temperature at 2 m +K +2 +0 +16 +C +2 +4 +Operational + + +678 +12 +Temperature +012107 +Virtual temperature +K +2 +0 +16 +C +2 +4 +Operational + + +679 +12 +Temperature +012111 +Maximum temperature, at height and over period specified +K +2 +0 +16 +C +2 +4 +Operational + + +680 +12 +Temperature +012112 +Minimum temperature, at height and over period specified +K +2 +0 +16 +C +2 +4 +Operational + + +681 +12 +Temperature +012113 +Ground minimum temperature, past 12 hours +K +2 +0 +16 +C +2 +4 +Operational + + +682 +12 +Temperature +012114 +Maximum temperature at 2 m, past 12 hours +K +2 +0 +16 +C +2 +4 +Operational + + +683 +12 +Temperature +012115 +Minimum temperature at 2 m, past 12 hours +K +2 +0 +16 +C +2 +4 +Operational + + +684 +12 +Temperature +012116 +Maximum temperature at 2 m, past 24 hours +K +2 +0 +16 +C +2 +4 +Operational + + +685 +12 +Temperature +012117 +Minimum temperature at 2 m, past 24 hours +K +2 +0 +16 +C +2 +4 +Operational + + +686 +12 +Temperature +012118 +Maximum temperature at height specified, past 24 hours +K +2 +0 +16 +C +2 +4 +Operational + + +687 +12 +Temperature +012119 +Minimum temperature at height specified, past 24 hours +K +2 +0 +16 +C +2 +4 +Operational + + +688 +12 +Temperature +012120 +Ground temperature +K +2 +0 +16 +C +2 +4 +Operational + + +689 +12 +Temperature +012121 +Ground minimum temperature +K +2 +0 +16 +C +2 +4 +Operational + + +690 +12 +Temperature +012122 +Ground minimum temperature of the preceding night +K +2 +0 +16 +C +2 +4 +Operational + + +691 +12 +Temperature +012128 +Road surface temperature +K +2 +0 +16 +C +2 +5 +Operational + + +692 +12 +Temperature +012129 +Road subsurface temperature +K +2 +0 +16 +C +2 +5 +Operational + + +693 +12 +Temperature +012130 +Soil temperature +K +2 +0 +16 +C +2 +4 +Operational + + +694 +12 +Temperature +012131 +Snow temperature +K +2 +0 +16 +C +2 +4 +Operational + + +695 +12 +Temperature +012132 +Ice surface temperature +K +2 +0 +16 +C +2 +4 +Operational + + +696 +12 +Temperature +012151 +Standard deviation of daily mean temperature +K +2 +0 +12 +C +2 +4 +Operational + + +697 +12 +Temperature +012152 +Highest daily mean temperature +K +2 +0 +16 +C +2 +4 +Operational + + +698 +12 +Temperature +012153 +Lowest daily mean temperature +K +2 +0 +16 +C +2 +4 +Operational + + +699 +12 +Temperature +012158 +Noise-equivalent delta temperature while viewing cold target +K +2 +0 +12 +C +2 +4 +Operational + + +700 +12 +Temperature +012159 +Noise-equivalent delta temperature while viewing warm target +K +2 +0 +12 +C +2 +4 +Operational + + +701 +12 +Temperature +012161 +Skin temperature +K +2 +0 +16 +C +2 +4 +Operational + + +702 +12 +Temperature +012162 +Equivalent black body temperature +K +2 +0 +16 +C +2 +4 +Operational + + +703 +12 +Temperature +012163 +Brightness temperature +K +2 +0 +16 +C +2 +4 +Operational + + +704 +12 +Temperature +012164 +Instrument temperature +K +2 +0 +16 +K +2 +5 +Operational + + +705 +12 +Temperature +012165 +Direct sun brightness temperature +K +0 +0 +23 +K +0 +7 +Operational + + +706 +12 +Temperature +012166 +Snapshot accuracy +K +1 +-4000 +13 +K +1 +4 +Operational + + +707 +12 +Temperature +012167 +Radiometric accuracy (pure polarization) +K +1 +0 +9 +K +1 +3 +Operational + + +708 +12 +Temperature +012168 +Radiometric accuracy (cross polarization) +K +1 +0 +9 +K +1 +3 +Operational + + +709 +12 +Temperature +012171 +Coldest cluster temperature +K +2 +0 +16 +K +2 +5 +Operational + + +710 +12 +Temperature +012180 +Averaged 12 micron BT for all clear pixels at nadir +K +2 +0 +16 +K +2 +5 +Operational + + +711 +12 +Temperature +012181 +Averaged 11 micron BT for all clear pixels at nadir +K +2 +0 +16 +K +2 +5 +Operational + + +712 +12 +Temperature +012182 +Averaged 3.7 micron BT for all clear pixels at nadir +K +2 +0 +16 +K +2 +5 +Operational + + +713 +12 +Temperature +012183 +Averaged 12 micron BT for all clear pixels, forward view +K +2 +0 +16 +K +2 +5 +Operational + + +714 +12 +Temperature +012184 +Averaged 11 micron BT for all clear pixels, forward view +K +2 +0 +16 +K +2 +5 +Operational + + +715 +12 +Temperature +012185 +Averaged 3.7 micron BT for all clear pixels, forward view +K +2 +0 +16 +K +2 +5 +Operational + + +716 +12 +Temperature +012186 +Mean nadir sea-surface temperature +K +2 +0 +16 +K +2 +5 +Operational + + +717 +12 +Temperature +012187 +Mean dual view sea-surface temperature +K +2 +0 +16 +K +2 +5 +Operational + + +718 +12 +Temperature +012188 +Interpolated 23.8 GHz brightness T from MWR +K +2 +0 +16 +K +2 +5 +Operational + + +719 +12 +Temperature +012189 +Interpolated 36.5 GHz brightness T from MWR +K +2 +0 +16 +K +2 +5 +Operational + + +720 +13 +Hydrographic and hydrological elements +013001 +Specific humidity +kg/kg +5 +0 +14 +kg/kg +5 +5 +Operational + + +721 +13 +Hydrographic and hydrological elements +013002 +Mixing ratio +kg/kg +5 +0 +14 +kg/kg +5 +5 +Operational + + +722 +13 +Hydrographic and hydrological elements +013003 +Relative humidity +% +0 +0 +7 +% +0 +3 +Operational + + +723 +13 +Hydrographic and hydrological elements +013004 +Vapour pressure +Pa +-1 +0 +10 +Pa +-1 +4 +Operational + + +724 +13 +Hydrographic and hydrological elements +013005 +Vapour density +kg m-3 +3 +0 +7 +kg m-3 +3 +3 +Operational + + +725 +13 +Hydrographic and hydrological elements +013006 +Mixing heights +m +-1 +-40 +16 +m +-1 +5 +Operational + + +726 +13 +Hydrographic and hydrological elements +013007 +Minimum relative humidity +% +0 +0 +7 +% +0 +3 +Operational + + +727 +13 +Hydrographic and hydrological elements +013008 +Maximum relative humidity +% +0 +0 +7 +% +0 +3 +Operational + + +728 +13 +Hydrographic and hydrological elements +013009 +Relative humidity +(see Note 6) +% +1 +-1000 +12 +% +1 +4 +Operational + + +729 +13 +Hydrographic and hydrological elements +013011 +Total precipitation/total water equivalent +kg m-2 +1 +-1 +14 +kg m-2 +1 +5 +Operational + + +730 +13 +Hydrographic and hydrological elements +013012 +Depth of fresh snow +m +2 +-2 +12 +m +2 +4 +Operational + + +731 +13 +Hydrographic and hydrological elements +013013 +Total snow depth +m +2 +-2 +16 +m +2 +5 +Operational + + +732 +13 +Hydrographic and hydrological elements +013014 +Rainfall/water equivalent of snow (averaged rate) +kg m-2 s-1 +4 +0 +12 +kg m-2 s-1 +4 +4 +Operational + + +733 +13 +Hydrographic and hydrological elements +013015 +Snowfall (averaged rate) +m/s +7 +0 +12 +m/s +7 +4 +Operational + + +734 +13 +Hydrographic and hydrological elements +013016 +Precipitable water +kg m-2 +0 +0 +7 +kg m-2 +0 +3 +Operational + + +735 +13 +Hydrographic and hydrological elements +013019 +Total precipitation past 1 hour +kg m-2 +1 +-1 +14 +kg m-2 +1 +4 +Operational + + +736 +13 +Hydrographic and hydrological elements +013020 +Total precipitation past 3 hours +kg m-2 +1 +-1 +14 +kg m-2 +1 +5 +Operational + + +737 +13 +Hydrographic and hydrological elements +013021 +Total precipitation past 6 hours +kg m-2 +1 +-1 +14 +kg m-2 +1 +5 +Operational + + +738 +13 +Hydrographic and hydrological elements +013022 +Total precipitation past 12 hours +kg m-2 +1 +-1 +14 +kg m-2 +1 +5 +Operational + + +739 +13 +Hydrographic and hydrological elements +013023 +Total precipitation past 24 hours +kg m-2 +1 +-1 +14 +kg m-2 +1 +5 +Operational + + +740 +13 +Hydrographic and hydrological elements +013031 +Evapotranspiration +kg m-2 +0 +0 +7 +kg m-2 +0 +3 +Operational + + +741 +13 +Hydrographic and hydrological elements +013032 +Evaporation/evapotranspiration +(see Note 5) +kg m-2 +1 +0 +8 +kg m-2 +1 +3 +Operational + + +742 +13 +Hydrographic and hydrological elements +013033 +Evaporation/evapotranspiration +kg m-2 +1 +0 +10 +kg m-2 +1 +4 +Operational + + +743 +13 +Hydrographic and hydrological elements +013038 +Superadiabatic indicator +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +744 +13 +Hydrographic and hydrological elements +013039 +Terrain type (ice/snow) +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +745 +13 +Hydrographic and hydrological elements +013040 +Surface flag +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +746 +13 +Hydrographic and hydrological elements +013041 +Pasquill-Gifford stability category +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +747 +13 +Hydrographic and hydrological elements +013042 +Parcel lifted index (to 500 hPa) +(see Notes 3 and 4) +K +0 +-20 +6 +K +0 +2 +Operational + + +748 +13 +Hydrographic and hydrological elements +013043 +Best lifted index (to 500 hPa) +(see Notes 3 and 4) +K +0 +-20 +6 +K +0 +2 +Operational + + +749 +13 +Hydrographic and hydrological elements +013044 +K index +K +0 +-30 +8 +K +0 +3 +Operational + + +750 +13 +Hydrographic and hydrological elements +013045 +KO index +K +0 +-30 +8 +K +0 +3 +Operational + + +751 +13 +Hydrographic and hydrological elements +013046 +Maximum buoyancy +K +0 +-30 +8 +K +0 +3 +Operational + + +752 +13 +Hydrographic and hydrological elements +013047 +Modified Showalter stability index +(see Note 7) +K +0 +-60 +6 +C +0 +2 +Operational + + +753 +13 +Hydrographic and hydrological elements +013048 +Water fraction +% +1 +0 +10 +% +1 +4 +Operational + + +754 +13 +Hydrographic and hydrological elements +013051 +Frequency group, precipitation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +755 +13 +Hydrographic and hydrological elements +013052 +Highest daily amount of precipitation +kg m-2 +1 +-1 +14 +kg m-2 +1 +5 +Operational + + +756 +13 +Hydrographic and hydrological elements +013055 +Intensity of precipitation +kg m-2 s-1 +4 +0 +8 +mm/h +1 +4 +Operational + + +757 +13 +Hydrographic and hydrological elements +013056 +Character and intensity of precipitation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +758 +13 +Hydrographic and hydrological elements +013057 +Time of beginning or end of precipitation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +759 +13 +Hydrographic and hydrological elements +013058 +Size of precipitating element +m +4 +0 +7 +mm +1 +3 +Operational + + +760 +13 +Hydrographic and hydrological elements +013059 +Number of flashes (thunderstorm) +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +761 +13 +Hydrographic and hydrological elements +013060 +Total accumulated precipitation +kg m-2 +1 +-1 +17 +kg m-2 +1 +5 +Operational + + +762 +13 +Hydrographic and hydrological elements +013071 +Upstream water level +m +2 +0 +14 +m +2 +4 +Operational + + +763 +13 +Hydrographic and hydrological elements +013072 +Downstream water level +m +2 +0 +14 +m +2 +4 +Operational + + +764 +13 +Hydrographic and hydrological elements +013073 +Maximum water level +m +2 +0 +14 +m +2 +4 +Operational + + +765 +13 +Hydrographic and hydrological elements +013074 +Ground water level +m +2 +0 +18 +m +2 +6 +Operational + + +766 +13 +Hydrographic and hydrological elements +013080 +Water pH +pH unit +1 +0 +10 +pH unit +1 +3 +Operational + + +767 +13 +Hydrographic and hydrological elements +013081 +Water conductivity +S/m +3 +0 +14 +S/m +3 +4 +Operational + + +768 +13 +Hydrographic and hydrological elements +013082 +Water temperature +K +1 +0 +12 +K +1 +4 +Operational + + +769 +13 +Hydrographic and hydrological elements +013083 +Dissolved oxygen +kg m-3 +6 +0 +15 +kg m-3 +6 +5 +Operational + + +770 +13 +Hydrographic and hydrological elements +013084 +Turbidity +lm +0 +0 +14 +lm +0 +4 +Operational + + +771 +13 +Hydrographic and hydrological elements +013085 +Oxidation Reduction Potential (ORP) +V +3 +0 +14 +V +3 +4 +Operational + + +772 +13 +Hydrographic and hydrological elements +013090 +Radiometer water vapour content +kg m-2 +1 +0 +10 +kg m-2 +1 +4 +Operational + + +773 +13 +Hydrographic and hydrological elements +013091 +Radiometer liquid content +kg m-2 +2 +0 +8 +kg m-2 +2 +3 +Operational + + +774 +13 +Hydrographic and hydrological elements +013093 +Cloud optical thickness +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +775 +13 +Hydrographic and hydrological elements +013095 +Total column water vapour +kg m-2 +4 +0 +19 +kg m-2 +4 +6 +Operational + + +776 +13 +Hydrographic and hydrological elements +013096 +MWR water vapour content +kg m-2 +2 +0 +14 +kg m-2 +2 +5 +Operational + + +777 +13 +Hydrographic and hydrological elements +013097 +MWR liquid water content +kg m-2 +2 +0 +14 +kg m-2 +2 +5 +Operational + + +778 +13 +Hydrographic and hydrological elements +013098 +Integrated water vapour density +kg m-2 +8 +0 +30 +kg m-2 +8 +10 +Operational + + +779 +13 +Hydrographic and hydrological elements +013099 +Log10 of integrated cloud particle density +log(m-2) +1 +0 +7 +log(m-2) +1 +3 +Operational + + +780 +13 +Hydrographic and hydrological elements +013100 +Log10 of integrated cloud particle area +log(m2 m-2) +1 +-70 +7 +log(m2 m-2) +1 +2 +Operational + + +781 +13 +Hydrographic and hydrological elements +013101 +Log10 of integrated cloud particle volume +log(m3 m-2) +1 +-140 +7 +log(m3 m-2) +1 +3 +Operational + + +782 +13 +Hydrographic and hydrological elements +013109 +Ice/liquid water path +kg m-2 +3 +0 +10 +kg m-2 +3 +4 +Operational + + +783 +13 +Hydrographic and hydrological elements +013110 +Mass mixing ratio +% +0 +0 +7 +% +0 +3 +Operational + + +784 +13 +Hydrographic and hydrological elements +013111 +Soil moisture +g/kg +0 +0 +10 +g/kg +0 +4 +Operational + + +785 +13 +Hydrographic and hydrological elements +013112 +Object wetness duration +s +0 +0 +17 +s +0 +5 +Operational + + +786 +13 +Hydrographic and hydrological elements +013114 +Rate of ice accretion +kg m-2 h-1 +1 +0 +11 +kg m-2 h-1 +1 +4 +Operational + + +787 +13 +Hydrographic and hydrological elements +013115 +Ice thickness +(see Note 9) +m +2 +0 +19 +m +2 +6 +Operational + + +788 +13 +Hydrographic and hydrological elements +013116 +Water film thickness +m +4 +0 +10 +m +3 +2 +Operational + + +789 +13 +Hydrographic and hydrological elements +013117 +Snow density (liquid water content) +kg m-3 +0 +0 +10 +kg m-3 +0 +3 +Operational + + +790 +13 +Hydrographic and hydrological elements +013118 +Depth of fresh snow (high accuracy) +(see Note 10) +m +3 +-2 +14 +m +3 +5 +Operational + + +791 +13 +Hydrographic and hydrological elements +013155 +Intensity of precipitation (high accuracy) +(see Note 8) +kg m-2 s-1 +5 +-1 +16 +mm/h +2 +5 +Operational + + +792 +13 +Hydrographic and hydrological elements +013160 +Radiometer liquid content +kg m-2 +2 +-350 +10 +kg m-2 +2 +3 +Operational + + +794 +13 +Hydrographic and hydrological elements +013162 +Cloud liquid water +kg m-2 +2 +0 +8 +kg m-2 +2 +3 +Operational + + +795 +13 +Hydrographic and hydrological elements +013163 +Snow water equivalent +kg m-2 +0 +0 +16 +kg m-2 +0 +5 +Operational + + +796 +13 +Hydrographic and hydrological elements +013164 +Sea ice freeboard +m +3 +-131072 +18 +m +3 +6 +Operational + + +797 +14 +Radiation and radiance +014001 +Long-wave radiation, integrated over 24 hours +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +798 +14 +Radiation and radiance +014002 +Long-wave radiation, integrated over period specified +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +799 +14 +Radiation and radiance +014003 +Short-wave radiation, integrated over 24 hours +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +800 +14 +Radiation and radiance +014004 +Short-wave radiation, integrated over period specified +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +801 +14 +Radiation and radiance +014011 +Net long-wave radiation, integrated over 24 hours +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +802 +14 +Radiation and radiance +014012 +Net long-wave radiation, integrated over period specified +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +803 +14 +Radiation and radiance +014013 +Net short-wave radiation, integrated over 24 hours +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +804 +14 +Radiation and radiance +014014 +Net short-wave radiation, integrated over period specified +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +805 +14 +Radiation and radiance +014015 +Net radiation, integrated over 24 hours +J m-2 +-4 +-16384 +15 +J m-2 +-4 +5 +Operational + + +806 +14 +Radiation and radiance +014016 +Net radiation, integrated over period specified +J m-2 +-4 +-16384 +15 +J m-2 +-4 +5 +Operational + + +807 +14 +Radiation and radiance +014017 +Instantaneous long-wave radiation +W m-2 +0 +-512 +10 +W m-2 +0 +4 +Operational + + +808 +14 +Radiation and radiance +014018 +Instantaneous short-wave radiation +W m-2 +0 +-2048 +12 +W m-2 +0 +4 +Operational + + +809 +14 +Radiation and radiance +014019 +Surface albedo +% +0 +0 +7 +% +0 +3 +Operational + + +810 +14 +Radiation and radiance +014020 +Global solar radiation, integrated over 24 hours +J m-2 +-4 +0 +15 +J m-2 +-4 +5 +Operational + + +811 +14 +Radiation and radiance +014021 +Global solar radiation, integrated over period specified +J m-2 +-4 +0 +15 +J m-2 +-4 +5 +Operational + + +812 +14 +Radiation and radiance +014022 +Diffuse solar radiation, integrated over 24 hours +J m-2 +-4 +0 +15 +J m-2 +-4 +5 +Operational + + +813 +14 +Radiation and radiance +014023 +Diffuse solar radiation, integrated over period specified +J m-2 +-4 +0 +15 +J m-2 +-4 +5 +Operational + + +814 +14 +Radiation and radiance +014024 +Direct solar radiation, integrated over 24 hours +J m-2 +-4 +0 +15 +J m-2 +-4 +5 +Operational + + +815 +14 +Radiation and radiance +014025 +Direct solar radiation, integrated over period specified +J m-2 +-4 +0 +15 +J m-2 +-4 +5 +Operational + + +816 +14 +Radiation and radiance +014026 +Albedo at the top of clouds +% +0 +0 +7 +% +0 +3 +Operational + + +817 +14 +Radiation and radiance +014027 +Albedo +% +0 +0 +7 +% +0 +3 +Operational + + +818 +14 +Radiation and radiance +014028 +Global solar radiation (high accuracy), integrated over period specified +J m-2 +-2 +0 +20 +J m-2 +-2 +6 +Operational + + +819 +14 +Radiation and radiance +014029 +Diffuse solar radiation (high accuracy), integrated over period specified +J m-2 +-2 +0 +20 +J m-2 +-2 +6 +Operational + + +820 +14 +Radiation and radiance +014030 +Direct solar radiation (high accuracy), integrated over period specified +J m-2 +-2 +0 +20 +J m-2 +-2 +6 +Operational + + +821 +14 +Radiation and radiance +014031 +Total sunshine +min +0 +0 +11 +min +0 +4 +Operational + + +822 +14 +Radiation and radiance +014032 +Total sunshine +h +0 +0 +10 +h +0 +4 +Operational + + +823 +14 +Radiation and radiance +014033 +Total sunshine +% +0 +0 +9 +% +0 +3 +Operational + + +824 +14 +Radiation and radiance +014034 +Sunshine over period specified +min +0 +0 +11 +min +0 +4 +Operational + + +825 +14 +Radiation and radiance +014035 +Solar radiation flux +W m-2 +1 +0 +14 +W m-2 +1 +5 +Operational + + +826 +14 +Radiation and radiance +014042 +Bidirectional reflectance +% +0 +0 +7 +% +0 +3 +Operational + + +827 +14 +Radiation and radiance +014043 +Channel radiance +W m-2 sr-1 um-1 +4 +0 +23 +W m-2 sr-1 um-1 +4 +7 +Operational + + +828 +14 +Radiation and radiance +014044 +Channel radiance +W m-2 sr-1 cm +7 +-100000 +22 +W m-2 sr-1 cm +7 +7 +Operational + + +829 +14 +Radiation and radiance +014045 +Channel radiance +(see Note 4) +W m-2 sr-1 cm +0 +0 +11 +W m-2 sr-1 cm +0 +4 +Operational + + +830 +14 +Radiation and radiance +014046 +Scaled radiance +(see Note 6) +W m-2 sr-1 m +0 +-5000 +16 +W m-2 sr-1 m +0 +5 +Operational + + +831 +14 +Radiation and radiance +014047 +Scaled mean AVHRR radiance +W m-2 sr-1 m +0 +0 +31 +W m-2 sr-1 m +0 +10 +Operational + + +832 +14 +Radiation and radiance +014048 +Scaled standard deviation AVHRR radiance +W m-2 sr-1 m +0 +0 +31 +W m-2 sr-1 m +0 +10 +Operational + + +833 +14 +Radiation and radiance +014050 +Emissivity +(see Note 5) +% +1 +0 +10 +% +1 +4 +Operational + + +834 +14 +Radiation and radiance +014051 +Direct solar radiation integrated over last hour +J m-2 +-3 +0 +14 +J m-2 +-3 +4 +Operational + + +835 +14 +Radiation and radiance +014052 +Global upward solar radiation, integrated over period specified +J m-2 +-2 +-1048574 +20 +J m-2 +-2 +7 +Operational + + +836 +14 +Radiation and radiance +014053 +Net radiation (high accuracy), integrated over period specified +J m-2 +-2 +-1048574 +21 +J m-2 +-2 +7 +Operational + + +837 +14 +Radiation and radiance +014054 +Photosynthetically active radiation, integrated over period specified +J m-2 +-3 +0 +16 +J m-2 +-3 +5 +Operational + + +838 +14 +Radiation and radiance +014055 +Solar activity index +Numeric +0 +-32768 +16 +Numeric +0 +5 +Operational + + +839 +14 +Radiation and radiance +014056 +Background luminance +Cd m-2 +0 +0 +18 +Cd m-2 +0 +6 +Operational + + +840 +14 +Radiation and radiance +014057 +Soil heat flux +J m-2 +-2 +-1048574 +21 +J m-2 +-2 +7 +Operational + + +841 +14 +Radiation and radiance +014072 +Global UV irradiation +(see Note 8) +J m-2 +0 +-4000000 +23 +J m-2 +0 +7 +Operational + + +842 +15 +Physical/chemical constituents +015001 +Total ozone +DU +0 +0 +10 +DU +0 +4 +Operational + + +843 +15 +Physical/chemical constituents +015002 +Air mass (slant path at 22 km) +Numeric +2 +0 +10 +Numeric +2 +3 +Operational + + +844 +15 +Physical/chemical constituents +015003 +Measured ozone partial pressure (sounding) +(see Note 1) +Pa +4 +0 +9 +nbar +0 +3 +Operational + + +845 +15 +Physical/chemical constituents +015004 +Ozone sounding correction factor (CF) +(see Note 2) +Numeric +3 +0 +11 +Numeric +3 +4 +Operational + + +846 +15 +Physical/chemical constituents +015005 +Ozone p +(see Note 3) +DU +0 +0 +10 +DU +0 +3 +Operational + + +847 +15 +Physical/chemical constituents +015006 +Log10 of number density of atmosphere +log(m-3) +5 +1800000 +20 +log(m-3) +5 +7 +Operational + + +848 +15 +Physical/chemical constituents +015008 +Significand of volumetric mixing ratio +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +849 +15 +Physical/chemical constituents +015009 +Log10 of number density of ozone +log(m-3) +5 +1200000 +20 +log(m-3) +5 +7 +Operational + + +850 +15 +Physical/chemical constituents +015011 +Log10 of integrated electron density +log (m-2) +3 +14000 +13 +log (m-2) +3 +4 +Operational + + +851 +15 +Physical/chemical constituents +015012 +Total electron count per square metre +m-2 +-16 +0 +6 +m-2 +-16 +2 +Operational + + +852 +15 +Physical/chemical constituents +015015 +Maximum image spectral component before normalization +Numeric +0 +0 +31 +Numeric +0 +10 +Operational + + +853 +15 +Physical/chemical constituents +015020 +Integrated ozone density +kg m-2 +8 +0 +21 +kg m-2 +8 +7 +Operational + + +854 +15 +Physical/chemical constituents +015021 +Integrated mass density +kg m-2 +11 +0 +31 +kg m-2 +11 +10 +Operational + + +855 +15 +Physical/chemical constituents +015024 +Optical depth +Numeric +4 +0 +24 +Numeric +4 +8 +Operational + + +856 +15 +Physical/chemical constituents +015025 +Type of pollutant +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +857 +15 +Physical/chemical constituents +015026 +Concentration of pollutant (mol mol-1) +mol/mol +9 +0 +9 +mol/mol +9 +3 +Operational + + +858 +15 +Physical/chemical constituents +015027 +Concentration of pollutant (kg m-3) +kg m-3 +9 +0 +10 +kg m-3 +9 +4 +Operational + + +859 +15 +Physical/chemical constituents +015028 +Mole fraction of atmospheric constituent/pollutant in dry air + +5 +0 +16 + +5 +5 +Operational + + +860 +15 +Physical/chemical constituents +015029 +Extinction coefficient +/m +9 +0 +30 +/m +9 +10 +Operational + + +861 +15 +Physical/chemical constituents +015030 +Aerosol contamination index +(see Note 6) +Numeric +2 +-1000 +12 +Numeric +2 +4 +Operational + + +862 +15 +Physical/chemical constituents +015031 +Atmospheric path delay in satellite signal +m +4 +10000 +15 +m +4 +5 +Operational + + +863 +15 +Physical/chemical constituents +015032 +Estimated error in atmospheric path delay +m +4 +0 +10 +m +4 +4 +Operational + + +864 +15 +Physical/chemical constituents +015033 +Difference in path delays for limb views at extremes of scan +m +5 +-10000 +15 +m +5 +5 +Operational + + +865 +15 +Physical/chemical constituents +015034 +Estimated error in path delay difference +m +5 +0 +14 +m +5 +5 +Operational + + +866 +15 +Physical/chemical constituents +015035 +Component of zenith path delay due to water vapour +m +4 +0 +14 +m +4 +5 +Operational + + +867 +15 +Physical/chemical constituents +015036 +Atmospheric refractivity +(see Note 5) +N units +3 +0 +19 +N units +3 +6 +Operational + + +868 +15 +Physical/chemical constituents +015037 +Bending angle +rad +8 +-100000 +23 +rad +8 +7 +Operational + + +869 +15 +Physical/chemical constituents +015041 +Sulphur dioxide index +(see Note 7) +Numeric +2 +-1200 +14 +Numeric +2 +4 +Operational + + +870 +15 +Physical/chemical constituents +015042 +Reflectance +% +2 +0 +14 +% +2 +5 +Operational + + +871 +15 +Physical/chemical constituents +015045 +Sulphur dioxide +(see Note 8) +DU +2 +-2000 +15 +DU +2 +5 +Operational + + +872 +15 +Physical/chemical constituents +015046 +Volcano contamination index +(see Note 9) +Numeric +2 +-1000 +11 +Numeric +2 +4 +Operational + + +873 +15 +Physical/chemical constituents +015049 +Aerosol Angstrom wavelength exponent +Numeric +3 +-2000 +14 +Numeric +3 +5 +Operational + + +874 +15 +Physical/chemical constituents +015051 +Meteorological optical range +m +0 +0 +18 +m +0 +6 +Operational + + +875 +15 +Physical/chemical constituents +015052 +Log10 of number density of aerosol particles with diameter greater than 5 nm +log (m-3) +1 +60 +6 +log (m-3) +1 +3 +Operational + + +876 +15 +Physical/chemical constituents +015053 +Log10 of number density of aerosol particles with diameter greater than 14 nm +log (m-3) +2 +600 +9 +log (m-3) +2 +4 +Operational + + +877 +15 +Physical/chemical constituents +015054 +Log10 of number density of aerosol particles with diameter between 0.25 and 2.5 µm +log (m-3) +2 +550 +9 +log (m-3) +2 +4 +Operational + + +878 +15 +Physical/chemical constituents +015055 +Non volatile aerosol ratio +Numeric +2 +0 +7 +Numeric +2 +3 +Operational + + +879 +15 +Physical/chemical constituents +015062 +Aerosol optical thickness +Numeric +3 +-1000 +14 +Numeric +3 +5 +Operational + + +880 +15 +Physical/chemical constituents +015063 +Attenuated backscatter +m-1 sr-1 +8 +0 +20 +m-1 sr-1 +8 +7 +Operational + + +881 +15 +Physical/chemical constituents +015064 +Uncertainty in attenuated backscatter +m-1 sr-1 +8 +0 +20 +m-1 sr-1 +8 +7 +Operational + + +882 +15 +Physical/chemical constituents +015065 +Particle backscatter coefficient +m-1 sr-1 +8 +0 +20 +m-1 sr-1 +8 +7 +Operational + + +883 +15 +Physical/chemical constituents +015066 +Uncertainty in particle backscatter coefficient +m-1 sr-1 +8 +0 +20 +m-1 sr-1 +8 +7 +Operational + + +884 +15 +Physical/chemical constituents +015067 +Particle extinction coefficient +m-1 +8 +0 +20 +m-1 +8 +7 +Operational + + +885 +15 +Physical/chemical constituents +015068 +Uncertainty in particle extinction coefficient +m-1 +8 +0 +20 +m-1 +8 +7 +Operational + + +886 +15 +Physical/chemical constituents +015069 +Particle lidar ratio +sr +2 +0 +14 +sr +2 +5 +Operational + + +887 +15 +Physical/chemical constituents +015070 +Uncertainty in lidar ratio +sr +2 +0 +14 +sr +2 +5 +Operational + + +888 +15 +Physical/chemical constituents +015071 +Particle depolarization ratio +% +2 +0 +14 +% +2 +5 +Operational + + +889 +15 +Physical/chemical constituents +015072 +Uncertainty in depolarization ratio +% +2 +0 +14 +% +2 +5 +Operational + + +890 +19 +Synoptic features +019001 +Type of synoptic feature +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +891 +19 +Synoptic features +019002 +Effective radius of feature +(see Note 1) +m +-2 +0 +12 +m +-2 +4 +Operational + + +892 +19 +Synoptic features +019003 +Wind speed threshold +(see Note 2) +m/s +0 +0 +8 +m/s +0 +3 +Operational + + +893 +19 +Synoptic features +019004 +Effective radius with respect to wind speeds above threshold +(see Note 2) +m +-2 +0 +12 +m +-2 +4 +Operational + + +894 +19 +Synoptic features +019005 +Direction of motion of feature +(see Note 3) +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +895 +19 +Synoptic features +019006 +Speed of motion of feature +(see Note 3) +m/s +2 +0 +14 +m/s +2 +5 +Operational + + +896 +19 +Synoptic features +019007 +Effective radius of feature +m +-3 +0 +12 +m +-3 +4 +Operational + + +897 +19 +Synoptic features +019008 +Vertical extent of circulation +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +898 +19 +Synoptic features +019009 +Effective radius with respect to wind speeds above threshold (large storms) +m +-3 +0 +12 +m +-3 +4 +Operational + + +899 +19 +Synoptic features +019010 +Method for tracking the centre of synoptic feature +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +900 +19 +Synoptic features +019100 +Time interval to calculate the movement of the tropical cyclone +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +901 +19 +Synoptic features +019101 +Accuracy of the position of the centre of the tropical cyclone +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +902 +19 +Synoptic features +019102 +Shape and definition of the eye of the tropical cyclone +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +903 +19 +Synoptic features +019103 +Diameter of major axis of the eye of the tropical cyclone +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +904 +19 +Synoptic features +019104 +Change in character of the eye during the 30 minutes +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +905 +19 +Synoptic features +019105 +Distance between the end of spiral band and the centre +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +906 +19 +Synoptic features +019106 +Identification number of tropical cyclone +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +907 +19 +Synoptic features +019107 +Time interval over which the movement of the tropical cyclone has been calculated +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +908 +19 +Synoptic features +019108 +Accuracy of geographical position of the tropical cyclone +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +909 +19 +Synoptic features +019109 +Mean diameter of the overcast cloud of the tropical cyclone +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +910 +19 +Synoptic features +019110 +Apparent 24-hour change in intensity of the tropical cyclone +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +911 +19 +Synoptic features +019111 +Current Intensity (CI) number of the tropical cyclone +Numeric +1 +0 +7 +Numeric +1 +3 +Operational + + +912 +19 +Synoptic features +019112 +Data Tropical (DT) number of the tropical cyclone +Numeric +1 +0 +7 +Numeric +1 +3 +Operational + + +913 +19 +Synoptic features +019113 +Cloud pattern type of the DT-number +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +914 +19 +Synoptic features +019114 +Model Expected Tropical (MET) number of the tropical cyclone +Numeric +1 +0 +7 +Numeric +1 +3 +Operational + + +915 +19 +Synoptic features +019115 +Trend of the past 24-hour change (+: Developed, -: Weakened) +Numeric +1 +-30 +6 +Numeric +1 +2 +Operational + + +916 +19 +Synoptic features +019116 +Pattern Tropical (PT) number of the tropical cyclone +Numeric +1 +0 +7 +Numeric +1 +3 +Operational + + +917 +19 +Synoptic features +019117 +Cloud picture type of the PT-number +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +918 +19 +Synoptic features +019118 +Final Tropical (T) number of the tropical cyclone +Numeric +1 +0 +7 +Numeric +1 +3 +Operational + + +919 +19 +Synoptic features +019119 +Type of the final T-number +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +920 +19 +Synoptic features +019150 +Typhoon International Common Number (Typhoon Committee) +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +921 +20 +Observed phenomena +020001 +Horizontal visibility +m +-1 +0 +13 +m +-1 +4 +Operational + + +922 +20 +Observed phenomena +020002 +Vertical visibility +m +-1 +0 +7 +m +-1 +3 +Operational + + +923 +20 +Observed phenomena +020003 +Present weather +(see Note 1) +Code table +0 +0 +9 +Code table +0 +3 +Operational + + +924 +20 +Observed phenomena +020004 +Past weather (1) +(see Note 2) +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +925 +20 +Observed phenomena +020005 +Past weather (2) +(see Note 2) +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +926 +20 +Observed phenomena +020006 +Flight rules +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +927 +20 +Observed phenomena +020008 +Cloud distribution for aviation +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +928 +20 +Observed phenomena +020009 +General weather indicator (TAF/METAR) +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +929 +20 +Observed phenomena +020010 +Cloud cover (total) +(see Note 5) +% +0 +0 +7 +% +0 +3 +Operational + + +930 +20 +Observed phenomena +020011 +Cloud amount +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +931 +20 +Observed phenomena +020012 +Cloud type +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +932 +20 +Observed phenomena +020013 +Height of base of cloud +m +-1 +-40 +11 +m +-1 +4 +Operational + + +933 +20 +Observed phenomena +020014 +Height of top of cloud +m +-1 +-40 +11 +m +-1 +4 +Operational + + +934 +20 +Observed phenomena +020015 +Pressure at base of cloud +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +935 +20 +Observed phenomena +020016 +Pressure at top of cloud +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +936 +20 +Observed phenomena +020017 +Cloud top description +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +937 +20 +Observed phenomena +020018 +Tendency of runway visual range +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +938 +20 +Observed phenomena +020019 +Significant present or forecast weather +(see Note 15) +CCITT IA5 +0 +0 +72 +Character +0 +9 +Operational + + +939 +20 +Observed phenomena +020020 +Significant recent weather phenomena +(see Note 15) +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +940 +20 +Observed phenomena +020021 +Type of precipitation +Flag table +0 +0 +30 +Flag table +0 +10 +Operational + + +941 +20 +Observed phenomena +020022 +Character of precipitation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +942 +20 +Observed phenomena +020023 +Other weather phenomena +Flag table +0 +0 +18 +Flag table +0 +6 +Operational + + +943 +20 +Observed phenomena +020024 +Intensity of phenomena +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +944 +20 +Observed phenomena +020025 +Obscuration +Flag table +0 +0 +21 +Flag table +0 +7 +Operational + + +945 +20 +Observed phenomena +020026 +Character of obscuration +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +946 +20 +Observed phenomena +020027 +Phenomena occurrence +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +947 +20 +Observed phenomena +020028 +Expected change in intensity +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +948 +20 +Observed phenomena +020029 +Rain flag +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +949 +20 +Observed phenomena +020031 +Ice deposit (thickness) +m +2 +0 +7 +m +2 +3 +Operational + + +950 +20 +Observed phenomena +020032 +Rate of ice accretion (estimated) +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +951 +20 +Observed phenomena +020033 +Cause of ice accretion +Flag table +0 +0 +4 +Flag table +0 +2 +Operational + + +952 +20 +Observed phenomena +020034 +Sea ice concentration +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +953 +20 +Observed phenomena +020035 +Amount and type of ice +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +954 +20 +Observed phenomena +020036 +Ice situation +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +955 +20 +Observed phenomena +020037 +Ice development +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +956 +20 +Observed phenomena +020038 +Bearing of ice edge +(see Note 3) +degree true +0 +0 +12 +degree true +0 +3 +Operational + + +957 +20 +Observed phenomena +020039 +Ice distance +m +-1 +0 +13 +m +-1 +4 +Operational + + +958 +20 +Observed phenomena +020040 +Evolution of drift snow +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +959 +20 +Observed phenomena +020041 +Airframe icing +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +960 +20 +Observed phenomena +020042 +Airframe icing present +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +961 +20 +Observed phenomena +020043 +Peak liquid water content +kg m-3 +4 +0 +7 +kg m-3 +4 +2 +Operational + + +962 +20 +Observed phenomena +020044 +Average liquid water content +kg m-3 +4 +0 +7 +kg m-3 +4 +2 +Operational + + +963 +20 +Observed phenomena +020045 +Supercooled large droplet (SLD) conditions +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +964 +20 +Observed phenomena +020048 +Evolution of feature +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +965 +20 +Observed phenomena +020050 +Cloud index +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +966 +20 +Observed phenomena +020051 +Amount of low clouds +% +0 +0 +7 +% +0 +3 +Operational + + +967 +20 +Observed phenomena +020052 +Amount of middle clouds +% +0 +0 +7 +% +0 +3 +Operational + + +968 +20 +Observed phenomena +020053 +Amount of high clouds +% +0 +0 +7 +% +0 +3 +Operational + + +969 +20 +Observed phenomena +020054 +True direction from which a phenomenon or clouds are moving or in which they are observed +(see Note 17) +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +970 +20 +Observed phenomena +020055 +State of sky in the tropics +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +971 +20 +Observed phenomena +020056 +Cloud phase +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +972 +20 +Observed phenomena +020058 +Visibility seawards from a coastal station +m +-1 +0 +13 +m +-1 +4 +Operational + + +973 +20 +Observed phenomena +020059 +Minimum horizontal visibility +m +-1 +0 +9 +m +-1 +3 +Operational + + +974 +20 +Observed phenomena +020060 +Prevailing horizontal visibility +(see Note 7) +m +-1 +0 +10 +m +-1 +4 +Operational + + +975 +20 +Observed phenomena +020061 +Runway visual range (RVR) +m +0 +0 +12 +m +0 +4 +Operational + + +976 +20 +Observed phenomena +020062 +State of the ground (with or without snow) +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +977 +20 +Observed phenomena +020063 +Special phenomena +Code table +0 +0 +10 +Code table +0 +4 +Operational + + +978 +20 +Observed phenomena +020065 +Snow cover +(see Note 4) +% +0 +0 +7 +% +0 +3 +Operational + + +979 +20 +Observed phenomena +020066 +Maximum diameter of hailstones +m +3 +0 +8 +m +3 +3 +Operational + + +980 +20 +Observed phenomena +020067 +Diameter of deposit +m +3 +0 +9 +m +3 +3 +Operational + + +981 +20 +Observed phenomena +020070 +Minimum number of atmospherics +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +982 +20 +Observed phenomena +020071 +Accuracy of fix and rate of atmospherics +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +983 +20 +Observed phenomena +020081 +Cloud amount in segment +% +0 +0 +7 +% +0 +3 +Operational + + +984 +20 +Observed phenomena +020082 +Amount segment cloud free +% +0 +0 +7 +% +0 +3 +Operational + + +985 +20 +Observed phenomena +020083 +Amount of segment covered by scene +% +0 +0 +7 +% +0 +3 +Operational + + +986 +20 +Observed phenomena +020085 +General condition of runway +Code table +0 +0 +4 +Code table +0 +1 +Operational + + +987 +20 +Observed phenomena +020086 +Runway deposits +Code table +0 +0 +4 +Code table +0 +1 +Operational + + +988 +20 +Observed phenomena +020087 +Runway contamination +Code table +0 +0 +4 +Code table +0 +1 +Operational + + +989 +20 +Observed phenomena +020088 +Depth of runway deposits +m +3 +0 +12 +m +0 +4 +Operational + + +990 +20 +Observed phenomena +020089 +Runway friction coefficient +Code table +0 +0 +7 +Code table +0 +2 +Operational + + +991 +20 +Observed phenomena +020090 +Special clouds +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +992 +20 +Observed phenomena +020091 +Vertical visibility +ft +-2 +0 +10 +ft +-2 +3 +Operational + + +993 +20 +Observed phenomena +020092 +Height of base of cloud +ft +-2 +0 +10 +ft +-2 +3 +Operational + + +994 +20 +Observed phenomena +020093 +Height of inversion +m +-1 +0 +8 +m +-1 +3 +Operational + + +995 +20 +Observed phenomena +020095 +Ice probability +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +996 +20 +Observed phenomena +020096 +Ice age ("A" parameter) +dB +2 +-4096 +13 +dB +2 +4 +Operational + + +997 +20 +Observed phenomena +020101 +Locust (acridian) name +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +998 +20 +Observed phenomena +020102 +Locust (maturity) colour +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +999 +20 +Observed phenomena +020103 +Stage of development of locusts +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1000 +20 +Observed phenomena +020104 +Organization state of swarm or band of locusts +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1001 +20 +Observed phenomena +020105 +Size of swarm or band of locusts and duration of passage of swarm +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1002 +20 +Observed phenomena +020106 +Locust population density +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1003 +20 +Observed phenomena +020107 +Direction of movements of locust swarm +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1004 +20 +Observed phenomena +020108 +Extent of vegetation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1005 +20 +Observed phenomena +020111 +x-axis error ellipse major component +(see Notes 8 and 9) +m +-1 +0 +17 +m +-1 +6 +Operational + + +1006 +20 +Observed phenomena +020112 +y-axis error ellipse minor component +(see Notes 8 and 9) +m +-1 +0 +17 +m +-1 +6 +Operational + + +1007 +20 +Observed phenomena +020113 +z-axis error ellipse component +(see Note 9) +m +-1 +0 +17 +m +-1 +6 +Operational + + +1008 +20 +Observed phenomena +020114 +Angle of x-axis in error ellipse +(see Note 10) +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +1009 +20 +Observed phenomena +020115 +Angle of z-axis in error ellipse +(see Note 11) +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +1010 +20 +Observed phenomena +020116 +Emission height of cloud stroke +m +0 +0 +16 +m +0 +5 +Operational + + +1011 +20 +Observed phenomena +020117 +Amplitude of lightning strike +A +-1 +-32000 +16 +A +-1 +5 +Operational + + +1012 +20 +Observed phenomena +020118 +Lightning detection error +m +0 +0 +19 +m +0 +6 +Operational + + +1013 +20 +Observed phenomena +020119 +Lightning discharge polarity +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1014 +20 +Observed phenomena +020121 +Threshold value for polarity decision +(see Note 12) +V +3 +0 +16 +V +3 +5 +Operational + + +1015 +20 +Observed phenomena +020122 +Threshold value for polarity decision +(see Note 13) +A +0 +0 +16 +A +0 +5 +Operational + + +1016 +20 +Observed phenomena +020123 +Minimum threshold for detection +(see Note 14) +V/m +3 +0 +16 +V/m +3 +5 +Operational + + +1017 +20 +Observed phenomena +020124 +Lightning stroke or flash +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1018 +20 +Observed phenomena +020126 +Lightning rate of discharge +/h +0 +0 +23 +/h +0 +7 +Operational + + +1019 +20 +Observed phenomena +020127 +Lightning - distance from station +m +-3 +0 +8 +m +-3 +3 +Operational + + +1020 +20 +Observed phenomena +020128 +Lightning - direction from station +degree true +1 +0 +12 +degree true +1 +4 +Operational + + +1021 +20 +Observed phenomena +020129 +Lightning density (stroke, flash or event) +m-2 +6 +0 +10 +m-2 +6 +4 +Operational + + +1022 +20 +Observed phenomena +020130 +Cloud hydrometeor concentration +(see Note 16) +Numeric +0 +0 +10 +Numeric +0 +3 +Operational + + +1023 +20 +Observed phenomena +020131 +Effective radius of cloud hydrometeors +m +5 +0 +6 +m +5 +2 +Operational + + +1024 +20 +Observed phenomena +020132 +Cloud liquid water content +kg m-3 +5 +0 +11 +kg m-3 +5 +4 +Operational + + +1025 +20 +Observed phenomena +020133 +Hydrometeor radius +m +5 +0 +6 +m +5 +2 +Operational + + +1026 +20 +Observed phenomena +020135 +Ice mass (on a rod) +kg/m +1 +0 +10 +kg/m +1 +3 +Operational + + +1027 +20 +Observed phenomena +020136 +Supplementary cloud type +Code table +0 +0 +9 +Code table +0 +3 +Operational + + +1028 +20 +Observed phenomena +020137 +Evolution of clouds +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1029 +20 +Observed phenomena +020138 +Road surface condition +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1030 +21 +Radar data +021001 +Horizontal reflectivity +dB +0 +-64 +7 +dB +0 +3 +Operational + + +1031 +21 +Radar data +021002 +Vertical reflectivity +dB +0 +-64 +7 +dB +0 +3 +Operational + + +1032 +21 +Radar data +021003 +Differential reflectivity +dB +1 +-5 +7 +dB +1 +3 +Operational + + +1033 +21 +Radar data +021004 +Differential reflectivity +dB +2 +-800 +11 +dB +2 +4 +Operational + + +1034 +21 +Radar data +021005 +Linear depolarization ratio +dB +0 +-65 +6 +dB +0 +2 +Operational + + +1035 +21 +Radar data +021006 +Circular depolarization ratio +dB +0 +-65 +6 +dB +0 +2 +Operational + + +1036 +21 +Radar data +021011 +Doppler mean velocity in x-direction +m/s +0 +-128 +8 +m/s +0 +3 +Operational + + +1037 +21 +Radar data +021012 +Doppler mean velocity in y-direction +m/s +0 +-128 +8 +m/s +0 +3 +Operational + + +1038 +21 +Radar data +021013 +Doppler mean velocity in z-direction +m/s +0 +-128 +8 +m/s +0 +3 +Operational + + +1039 +21 +Radar data +021014 +Doppler mean velocity (radial) +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +1040 +21 +Radar data +021017 +Doppler velocity spectral width +m/s +1 +0 +8 +m/s +1 +3 +Operational + + +1041 +21 +Radar data +021018 +Extended NYQUIST velocity +m/s +1 +0 +10 +m/s +1 +4 +Operational + + +1042 +21 +Radar data +021019 +High NYQUIST velocity +m/s +1 +0 +10 +m/s +1 +3 +Operational + + +1043 +21 +Radar data +021021 +Echo tops +m +-3 +0 +4 +m +-3 +2 +Operational + + +1044 +21 +Radar data +021022 +Range bin offset +m +1 +0 +14 +m +1 +5 +Operational + + +1045 +21 +Radar data +021023 +Range bin size +m +0 +0 +14 +m +0 +5 +Operational + + +1046 +21 +Radar data +021024 +Azimuth offset +deg +1 +0 +12 +deg +1 +4 +Operational + + +1047 +21 +Radar data +021025 +Azimuthal resolution +deg +1 +0 +8 +deg +1 +3 +Operational + + +1048 +21 +Radar data +021028 +Differential phase +deg +1 +0 +12 +deg +1 +4 +Operational + + +1049 +21 +Radar data +021029 +Cross-polarization correlation coefficient +Numeric +2 +-100 +8 +Numeric +2 +3 +Operational + + +1050 +21 +Radar data +021030 +Signal to noise ratio +dB +0 +-32 +8 +dB +0 +3 +Operational + + +1051 +21 +Radar data +021031 +Vertically integrated liquid-water content +kg m-2 +0 +0 +7 +kg m-2 +0 +3 +Operational + + +1052 +21 +Radar data +021036 +Radar rainfall intensity +m/s +7 +0 +12 +m/s +7 +4 +Operational + + +1053 +21 +Radar data +021041 +Bright-band height +m +-2 +0 +8 +m +-2 +3 +Operational + + +1054 +21 +Radar data +021051 +Signal power above 1 mW +dB +0 +-256 +8 +dB +0 +3 +Operational + + +1055 +21 +Radar data +021062 +Backscatter +dB +2 +-5000 +13 +dB +2 +4 +Operational + + +1056 +21 +Radar data +021063 +Radiometric resolution (noise value) +% +1 +0 +10 +% +1 +4 +Operational + + +1057 +21 +Radar data +021064 +Clutter noise estimate +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1058 +21 +Radar data +021065 +Missing packet counter +Numeric +0 +-127 +8 +Numeric +0 +3 +Operational + + +1059 +21 +Radar data +021066 +Wave scatterometer product confidence data +Flag table +0 +0 +12 +Flag table +0 +4 +Operational + + +1060 +21 +Radar data +021067 +Wind product confidence data +Flag table +0 +0 +13 +Flag table +0 +5 +Operational + + +1061 +21 +Radar data +021068 +Radar altimeter product confidence data +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1062 +21 +Radar data +021069 +SST product confidence data +Flag table +0 +0 +10 +Flag table +0 +4 +Operational + + +1063 +21 +Radar data +021070 +SST product confidence data (SADIST-2) +Flag table +0 +0 +23 +Flag table +0 +6 +Operational + + +1064 +21 +Radar data +021071 +Peakiness +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +1065 +21 +Radar data +021072 +Satellite altimeter calibration status +Flag table +0 +0 +4 +Flag table +0 +2 +Operational + + +1066 +21 +Radar data +021073 +Satellite altimeter instrument mode +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1067 +21 +Radar data +021075 +Image spectrum intensity +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1068 +21 +Radar data +021076 +Representation of intensities +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1069 +21 +Radar data +021077 +Altitude correction (ionosphere) +m +3 +0 +14 +m +3 +5 +Operational + + +1070 +21 +Radar data +021078 +Altitude correction (dry troposphere) +m +3 +0 +9 +m +3 +3 +Operational + + +1071 +21 +Radar data +021079 +Altitude correction (wet troposphere) +m +3 +2000 +10 +m +3 +4 +Operational + + +1072 +21 +Radar data +021080 +Altitude correction (calibration constant) +m +3 +0 +11 +m +3 +4 +Operational + + +1073 +21 +Radar data +021081 +Open loop correction (height-time loop) +m +3 +0 +10 +m +3 +4 +Operational + + +1074 +21 +Radar data +021082 +Open loop correction (auto gain control) +dB +3 +-3000 +14 +dB +3 +5 +Operational + + +1075 +21 +Radar data +021083 +Warm target calibration +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +1076 +21 +Radar data +021084 +Cold target calibration +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +1077 +21 +Radar data +021085 +ATSR sea-surface temperature across-track band number +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +1078 +21 +Radar data +021086 +Number of pixels in nadir only, average +Numeric +0 +0 +9 +Numeric +0 +3 +Operational + + +1079 +21 +Radar data +021087 +Number of pixels in dual view, average +Numeric +0 +0 +9 +Numeric +0 +3 +Operational + + +1080 +21 +Radar data +021088 +Wet backscatter +dB +2 +-5000 +13 +dB +2 +4 +Operational + + +1081 +21 +Radar data +021091 +Radar signal Doppler spectrum 0th moment +dB +0 +-100 +8 +dB +0 +3 +Operational + + +1082 +21 +Radar data +021092 +RASS signal Doppler spectrum 0th moment, referring to RASS signal +dB +0 +-100 +8 +dB +0 +3 +Operational + + +1083 +21 +Radar data +021093 +Ku band peakiness +Numeric +3 +0 +16 +Numeric +3 +5 +Operational + + +1084 +21 +Radar data +021094 +S band peakiness +Numeric +3 +0 +16 +Numeric +3 +5 +Operational + + +1085 +21 +Radar data +021101 +Number of vector ambiguities +Numeric +0 +0 +3 +Numeric +0 +1 +Operational + + +1086 +21 +Radar data +021102 +Index of selected wind vector +Numeric +0 +0 +3 +Numeric +0 +1 +Operational + + +1087 +21 +Radar data +021103 +Total number of sigma-0 measurements +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +1088 +21 +Radar data +021104 +Likelihood computed for solution +Numeric +3 +-30000 +15 +Numeric +3 +5 +Operational + + +1089 +21 +Radar data +021105 +Normalized radar cross-section +dB +2 +-10000 +14 +dB +2 +5 +Operational + + +1090 +21 +Radar data +021106 +Kp variance coefficient (alpha) +Numeric +3 +0 +14 +Numeric +3 +5 +Operational + + +1091 +21 +Radar data +021107 +Kp variance coefficient (beta) +Numeric +8 +0 +16 +Numeric +8 +5 +Operational + + +1092 +21 +Radar data +021109 +SEAWINDS wind vector cell quality +Flag table +0 +0 +17 +Flag table +0 +6 +Operational + + +1093 +21 +Radar data +021110 +Number of inner-beam sigma-0 (forward of satellite) +Numeric +0 +0 +6 +Numeric +0 +2 +Operational + + +1094 +21 +Radar data +021111 +Number of outer-beam sigma-0 (forward of satellite) +Numeric +0 +0 +6 +Numeric +0 +2 +Operational + + +1095 +21 +Radar data +021112 +Number of inner-beam sigma-0 (aft of satellite) +Numeric +0 +0 +6 +Numeric +0 +2 +Operational + + +1096 +21 +Radar data +021113 +Number of outer-beam sigma-0 (aft of satellite) +Numeric +0 +0 +6 +Numeric +0 +2 +Operational + + +1097 +21 +Radar data +021114 +Kp variance coefficient (gamma) +dB +3 +-140000 +18 +dB +3 +6 +Operational + + +1098 +21 +Radar data +021115 +SEAWINDS sigma-0 quality +Flag table +0 +0 +17 +Flag table +0 +6 +Operational + + +1099 +21 +Radar data +021116 +SEAWINDS sigma-0 mode +Flag table +0 +0 +17 +Flag table +0 +6 +Operational + + +1100 +21 +Radar data +021117 +Sigma-0 variance quality control +Numeric +2 +0 +16 +Numeric +2 +5 +Operational + + +1101 +21 +Radar data +021118 +Attenuation correction on sigma-0 +dB +2 +-10000 +14 +dB +2 +5 +Operational + + +1102 +21 +Radar data +021119 +Wind scatterometer geophysical model function +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +1103 +21 +Radar data +021120 +Probability of rain +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1104 +21 +Radar data +021121 +SEAWINDS NOF* rain index +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1105 +21 +Radar data +021122 +Attenuation correction on sigma-0 (from tB) +dB +2 +-10000 +14 +dB +2 +5 +Operational + + +1106 +21 +Radar data +021123 +SEAWINDS normalized radar cross-section +dB +2 +-30000 +15 +dB +2 +5 +Operational + + +1107 +21 +Radar data +021128 +Number of valid points per second used to derive previous parameters +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1108 +21 +Radar data +021130 +Spectrum total energy +Numeric +6 +0 +28 +Numeric +6 +9 +Operational + + +1109 +21 +Radar data +021131 +Spectrum max energy +Numeric +6 +0 +28 +Numeric +6 +9 +Operational + + +1110 +21 +Radar data +021132 +Direction of spectrum max on higher resolution grid +deg +3 +0 +19 +deg +3 +6 +Operational + + +1111 +21 +Radar data +021133 +Wavelength of spectrum max on higher resolution grid +m +3 +0 +29 +m +3 +9 +Operational + + +1112 +21 +Radar data +021134 +Range resolution of cress covariance spectrum +rad/m +3 +0 +19 +rad/m +3 +6 +Operational + + +1113 +21 +Radar data +021135 +Real part of cross spectra polar grid number of bins +Numeric +3 +-524288 +20 +Numeric +3 +7 +Operational + + +1114 +21 +Radar data +021136 +Imaginary part of cross spectra polar grid number of bins +Numeric +3 +-524288 +20 +Numeric +3 +7 +Operational + + +1115 +21 +Radar data +021137 +Ku band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1116 +21 +Radar data +021138 +Std Ku band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1117 +21 +Radar data +021139 +Ku band net instrumental correction for AGC +dB +2 +-2048 +12 +dB +2 +4 +Operational + + +1118 +21 +Radar data +021140 +S band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1119 +21 +Radar data +021141 +Std S band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1120 +21 +Radar data +021142 +S band net instrumental correction for AGC +dB +2 +-1024 +11 +dB +2 +4 +Operational + + +1121 +21 +Radar data +021143 +Ku band rain attenuation +dB +2 +-1073741824 +31 +dB +2 +10 +Operational + + +1122 +21 +Radar data +021144 +Altimeter rain flag +Flag table +0 +0 +2 +Flag table +0 +1 +Operational + + +1123 +21 +Radar data +021145 +Ku band automatic gain control +dB +2 +0 +13 +dB +2 +4 +Operational + + +1124 +21 +Radar data +021146 +RMS Ku band automatic gain control +dB +2 +0 +8 +dB +2 +3 +Operational + + +1125 +21 +Radar data +021147 +Number of valid points for Ku band automatic gain control +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +1126 +21 +Radar data +021148 +Trailing edge variation flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1127 +21 +Radar data +021150 +Beam co-location +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1128 +21 +Radar data +021151 +Estimated error in sigma-0 at 40 degrees incidence angle +dB +2 +0 +9 +dB +2 +3 +Operational + + +1129 +21 +Radar data +021152 +Slope at 40 degrees incidence angle +dB/deg +2 +-80 +7 +dB/deg +2 +2 +Operational + + +1130 +21 +Radar data +021153 +Estimated error in slope at 40 degrees incidence angle +dB/deg +2 +-40 +6 +dB/deg +2 +2 +Operational + + +1131 +21 +Radar data +021154 +Soil moisture sensitivity +dB +2 +0 +12 +dB +2 +4 +Operational + + +1132 +21 +Radar data +021155 +Wind vector cell quality +Flag table +0 +0 +24 +Flag table +0 +8 +Operational + + +1133 +21 +Radar data +021156 +Backscatter distance +Numeric +1 +-4096 +13 +Numeric +1 +4 +Operational + + +1134 +21 +Radar data +021157 +Loss per unit length of atmosphere used +dB/m +10 +0 +22 +dB/m +10 +7 +Operational + + +1135 +21 +Radar data +021158 +ASCAT Kp estimate quality +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1136 +21 +Radar data +021159 +ASCAT sigma-0 usability +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1137 +21 +Radar data +021160 +ASCAT use of synthetic data +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1138 +21 +Radar data +021161 +ASCAT synthetic data quantity +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1139 +21 +Radar data +021162 +ASCAT satellite orbit and attitude quality +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1140 +21 +Radar data +021163 +ASCAT solar array reflection contamination +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1141 +21 +Radar data +021164 +ASCAT telemetry presence and quality +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1142 +21 +Radar data +021165 +ASCAT extrapolated reference function presence +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1143 +21 +Radar data +021166 +Land fraction +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1144 +21 +Radar data +021169 +Ice presence indicator +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1145 +21 +Radar data +021170 +C band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1146 +21 +Radar data +021171 +RMS C band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1147 +21 +Radar data +021172 +C band net instrumental correction for AGC +dB +2 +-2048 +12 +dB +2 +4 +Operational + + +1148 +21 +Radar data +021173 +C band automatic gain control +dB +2 +0 +13 +dB +2 +4 +Operational + + +1149 +21 +Radar data +021174 +RMS C band automatic gain control +dB +2 +0 +9 +dB +2 +3 +Operational + + +1150 +21 +Radar data +021175 +Number of valid points for C band automatic gain control +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1151 +21 +Radar data +021176 +High frequency variability correction +m +3 +0 +16 +m +3 +5 +Operational + + +1152 +21 +Radar data +021177 +Corrected OCOG* backscatter coefficient +dB +2 +0 +16 +dB +2 +5 +Operational + + +1153 +21 +Radar data +021178 +STD of 20 Hz OCOG backscatter coefficient +dB +2 +0 +16 +dB +2 +5 +Operational + + +1154 +21 +Radar data +021179 +Number of 20 Hz valid points for OCOG backscatter coefficient +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +1155 +21 +Radar data +021180 +Number of 20 Hz valid points for ocean backscatter coefficient +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1156 +21 +Radar data +021181 +20 Hz ocean backscatter coefficient +dB +2 +0 +16 +dB +2 +5 +Operational + + +1157 +21 +Radar data +021182 +20 Hz Ku band peakiness +Numeric +3 +0 +16 +Numeric +3 +5 +Operational + + +1158 +21 +Radar data +021183 +Specific band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1159 +21 +Radar data +021184 +STD specific band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1160 +21 +Radar data +021185 +Specific band net instrumental correction for AGC +dB +2 +-2048 +12 +dB +2 +4 +Operational + + +1161 +21 +Radar data +021186 +Specific band automatic gain control +dB +2 +0 +13 +dB +2 +4 +Operational + + +1162 +21 +Radar data +021187 +RMS specific band automatic gain control +dB +2 +0 +8 +dB +2 +3 +Operational + + +1163 +21 +Radar data +021188 +Number of valid points for specific band automatic gain control +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1164 +22 +Oceanographic elements +022001 +Direction of waves +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1165 +22 +Oceanographic elements +022002 +Direction of wind waves +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1166 +22 +Oceanographic elements +022003 +Direction of swell waves +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1167 +22 +Oceanographic elements +022004 +Direction of current +(see Note 7) +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1168 +22 +Oceanographic elements +022005 +Direction of sea-surface current +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1169 +22 +Oceanographic elements +022011 +Period of waves +s +0 +0 +6 +s +0 +2 +Operational + + +1170 +22 +Oceanographic elements +022012 +Period of wind waves +s +0 +0 +6 +s +0 +2 +Operational + + +1171 +22 +Oceanographic elements +022013 +Period of swell waves +s +0 +0 +6 +s +0 +2 +Operational + + +1172 +22 +Oceanographic elements +022021 +Height of waves +m +1 +0 +10 +m +1 +4 +Operational + + +1173 +22 +Oceanographic elements +022022 +Height of wind waves +m +1 +0 +10 +m +1 +4 +Operational + + +1174 +22 +Oceanographic elements +022023 +Height of swell waves +m +1 +0 +10 +m +1 +4 +Operational + + +1175 +22 +Oceanographic elements +022025 +Standard deviation wave height +m +2 +0 +10 +m +2 +4 +Operational + + +1176 +22 +Oceanographic elements +022026 +Standard deviation of significant wave height +m +2 +0 +10 +m +2 +4 +Operational + + +1177 +22 +Oceanographic elements +022031 +Speed of current +m/s +2 +0 +13 +m/s +2 +4 +Operational + + +1178 +22 +Oceanographic elements +022032 +Speed of sea-surface current +m/s +2 +0 +13 +m/s +2 +4 +Operational + + +1179 +22 +Oceanographic elements +022035 +Tidal elevation with respect to local chart datum +m +2 +0 +14 +m +2 +4 +Operational + + +1180 +22 +Oceanographic elements +022036 +Meteorological residual tidal elevation (surge or offset) +m +2 +0 +14 +m +2 +4 +Operational + + +1181 +22 +Oceanographic elements +022037 +Tidal elevation with respect to national land datum +m +3 +-10000 +15 +m +3 +5 +Operational + + +1182 +22 +Oceanographic elements +022038 +Tidal elevation with respect to local chart datum +m +3 +-10000 +15 +m +3 +5 +Operational + + +1183 +22 +Oceanographic elements +022039 +Meteorological residual tidal elevation (surge or offset) +(see Note 4) +m +3 +-5000 +13 +m +3 +4 +Operational + + +1184 +22 +Oceanographic elements +022040 +Meteorological residual tidal elevation (surge or offset) +(see Note 4) +m +3 +-5000 +14 +m +3 +5 +Operational + + +1185 +22 +Oceanographic elements +022041 +Sea-surface temperature (15-day running mean) +K +1 +0 +12 +K +1 +4 +Operational + + +1186 +22 +Oceanographic elements +022042 +Sea/water temperature +K +1 +0 +12 +K +1 +4 +Operational + + +1187 +22 +Oceanographic elements +022043 +Sea/water temperature +K +2 +0 +15 +K +2 +5 +Operational + + +1188 +22 +Oceanographic elements +022044 +Sound velocity +m/s +1 +0 +14 +m/s +1 +5 +Operational + + +1189 +22 +Oceanographic elements +022045 +Sea/water temperature +K +3 +0 +19 +K +3 +6 +Operational + + +1190 +22 +Oceanographic elements +022046 +Sea ice fraction +Numeric +2 +0 +7 +Numeric +2 +3 +Operational + + +1191 +22 +Oceanographic elements +022049 +Sea-surface temperature +K +2 +0 +15 +K +2 +5 +Operational + + +1192 +22 +Oceanographic elements +022050 +Standard deviation sea-surface temperature +K +2 +0 +8 +K +2 +3 +Operational + + +1193 +22 +Oceanographic elements +022055 +Float cycle number +Numeric +0 +0 +10 +Numeric +0 +3 +Operational + + +1194 +22 +Oceanographic elements +022056 +Direction of profile +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1195 +22 +Oceanographic elements +022059 +Sea-surface salinity +0/00 +2 +0 +14 +0/00 +2 +5 +Operational + + +1196 +22 +Oceanographic elements +022060 +Lagrangian drifter drogue status +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1197 +22 +Oceanographic elements +022061 +State of the sea +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1198 +22 +Oceanographic elements +022062 +Salinity +0/00 +2 +0 +14 +0/00 +2 +5 +Operational + + +1199 +22 +Oceanographic elements +022063 +Total water depth +m +0 +0 +14 +m +0 +5 +Operational + + +1200 +22 +Oceanographic elements +022064 +Salinity +0/00 +3 +0 +17 +0/00 +3 +6 +Operational + + +1201 +22 +Oceanographic elements +022065 +Water pressure +Pa +-3 +0 +17 +Pa +-3 +6 +Operational + + +1202 +22 +Oceanographic elements +022066 +Water conductivity +S/m +6 +0 +26 +S/m +6 +8 +Operational + + +1203 +22 +Oceanographic elements +022067 +Instrument type for water temperature/salinity profile measurement +Code table +0 +0 +10 +Code table +0 +4 +Operational + + +1204 +22 +Oceanographic elements +022068 +Water temperature profile recorder types +Code table +0 +0 +7 +Code table +0 +3 +Operational + + +1205 +22 +Oceanographic elements +022069 +Spectral wave density +m2/Hz +3 +0 +22 +m2/Hz +3 +7 +Operational + + +1206 +22 +Oceanographic elements +022070 +Significant wave height +m +2 +0 +13 +m +2 +4 +Operational + + +1207 +22 +Oceanographic elements +022071 +Spectral peak wave period +s +1 +0 +9 +s +1 +3 +Operational + + +1208 +22 +Oceanographic elements +022072 +Spectral peak wavelength +m +0 +0 +13 +m +0 +4 +Operational + + +1209 +22 +Oceanographic elements +022073 +Maximum wave height +m +2 +0 +13 +m +2 +4 +Operational + + +1210 +22 +Oceanographic elements +022074 +Average wave period +s +1 +0 +9 +s +1 +3 +Operational + + +1211 +22 +Oceanographic elements +022075 +Average wavelength +m +0 +0 +13 +m +0 +4 +Operational + + +1212 +22 +Oceanographic elements +022076 +Direction from which dominant waves are coming +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1213 +22 +Oceanographic elements +022077 +Directional spread of dominant wave +deg +0 +0 +9 +deg +0 +3 +Operational + + +1214 +22 +Oceanographic elements +022078 +Duration of wave record +s +0 +0 +12 +s +0 +4 +Operational + + +1215 +22 +Oceanographic elements +022079 +Length of wave record +m +0 +0 +16 +m +0 +5 +Operational + + +1216 +22 +Oceanographic elements +022080 +Waveband central frequency +Hz +3 +0 +10 +Hz +3 +4 +Operational + + +1217 +22 +Oceanographic elements +022081 +Waveband central wave number +/m +5 +0 +13 +/m +5 +4 +Operational + + +1218 +22 +Oceanographic elements +022082 +Maximum non-directional spectral wave density +m2 s +2 +0 +20 +m2 s +2 +7 +Operational + + +1219 +22 +Oceanographic elements +022083 +Maximum non-directional spectral wave number +m3 +2 +0 +20 +m3 +2 +7 +Operational + + +1220 +22 +Oceanographic elements +022084 +Band containing maximum non-directional spectral wave density +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1221 +22 +Oceanographic elements +022085 +Spectral wave density ratio +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1222 +22 +Oceanographic elements +022086 +Mean direction from which waves are coming +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1223 +22 +Oceanographic elements +022087 +Principal direction from which waves are coming +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1224 +22 +Oceanographic elements +022088 +First normalized polar coordinate from Fourier coefficients +Numeric +2 +0 +7 +Numeric +2 +3 +Operational + + +1225 +22 +Oceanographic elements +022089 +Second normalized polar coordinate from Fourier coefficients +Numeric +2 +0 +7 +Numeric +2 +3 +Operational + + +1226 +22 +Oceanographic elements +022090 +Non-directional spectral estimate by wave frequency +m2 s +2 +0 +20 +m2 s +2 +7 +Operational + + +1227 +22 +Oceanographic elements +022091 +Non-directional spectral estimate by wave number +m3 +2 +0 +20 +m3 +2 +7 +Operational + + +1228 +22 +Oceanographic elements +022092 +Directional spectral estimate by wave frequency +m2 rad-1 s +2 +0 +20 +m2 rad-1 s +2 +7 +Operational + + +1229 +22 +Oceanographic elements +022093 +Directional spectral estimate by wave number +m4 +2 +0 +20 +m4 +2 +7 +Operational + + +1230 +22 +Oceanographic elements +022094 +Total number of wave bands +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1231 +22 +Oceanographic elements +022095 +Directional spread of individual waves +deg +0 +0 +8 +deg +0 +3 +Operational + + +1232 +22 +Oceanographic elements +022096 +Spectral band width +/s +3 +0 +4 +/s +3 +2 +Operational + + +1233 +22 +Oceanographic elements +022097 +Mean wavelength > 731 m of image spectrum at low wave numbers +m +0 +0 +14 +m +0 +5 +Operational + + +1234 +22 +Oceanographic elements +022098 +Wavelength spread (wavelength > 731 m) at low wave numbers +m +0 +0 +14 +m +0 +5 +Operational + + +1235 +22 +Oceanographic elements +022099 +Mean direction at low wave numbers (wavelength > 731 m) +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1236 +22 +Oceanographic elements +022100 +Direction spread at low wave numbers (wavelength > 731 m) +deg +0 +0 +9 +deg +0 +3 +Operational + + +1237 +22 +Oceanographic elements +022101 +Total energy (wavelength > 731m) at low wave numbers +Numeric +0 +0 +31 +Numeric +0 +10 +Operational + + +1238 +22 +Oceanographic elements +022102 +Scaled maximum non-directional spectral wave density by frequency +(see Note 10) +m2 s +0 +0 +14 +m2 s +0 +5 +Operational + + +1239 +22 +Oceanographic elements +022103 +Scaled maximum non-directional spectral wave density by wave number +(see Note 10) +m3 +0 +0 +14 +m3 +0 +5 +Operational + + +1240 +22 +Oceanographic elements +022104 +Scaled non-directional spectral wave density by frequency +(see Note 10) +m2 s +0 +0 +14 +m2 s +0 +5 +Operational + + +1241 +22 +Oceanographic elements +022105 +Scaled non-directional spectral wave density by wave number +(see Note 10) +m3 +0 +0 +14 +m3 +0 +5 +Operational + + +1242 +22 +Oceanographic elements +022106 +Scaled directional spectral wave density by frequency +(see Note 10) +m2 s rad-1 +0 +0 +14 +m2 s rad-1 +0 +5 +Operational + + +1243 +22 +Oceanographic elements +022107 +Scaled directional spectral wave density by wave number +(see Note 10) +m4 +0 +0 +14 +m4 +0 +5 +Operational + + +1244 +22 +Oceanographic elements +022108 +Spectral wave density ratio +% +0 +0 +7 +% +0 +3 +Operational + + +1245 +22 +Oceanographic elements +022120 +Tide station automated water level check +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1246 +22 +Oceanographic elements +022121 +Tide station manual water level check +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1247 +22 +Oceanographic elements +022122 +Tide station automated meteorological data check +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1248 +22 +Oceanographic elements +022123 +Tide station manual meteorological data check +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1249 +22 +Oceanographic elements +022130 +Number of valid points for specific band +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1250 +22 +Oceanographic elements +022131 +RMS specific band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1251 +22 +Oceanographic elements +022132 +Number of valid points for specific band significant wave height +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1252 +22 +Oceanographic elements +022133 +Specific band net instrument correction for significant wave height +m +3 +-1000 +11 +m +3 +4 +Operational + + +1253 +22 +Oceanographic elements +022134 +Number of valid points for specific band backscatter +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1254 +22 +Oceanographic elements +022141 +Sea-surface temperature (15-day running mean) +K +2 +0 +15 +K +2 +5 +Operational + + +1255 +22 +Oceanographic elements +022142 +Square of significant wave height +m2 +3 +-33554432 +26 +m2 +3 +8 +Operational + + +1256 +22 +Oceanographic elements +022143 +STD of 20 Hz SWH squared +m2 +3 +-8388608 +24 +m2 +3 +8 +Operational + + +1257 +22 +Oceanographic elements +022144 +Number of 20 Hz valid points for SWH squared +Numeric +0 +0 +9 +Numeric +0 +3 +Operational + + +1258 +22 +Oceanographic elements +022145 +STD of 20 Hz ocean range +m +3 +-33554432 +31 +m +3 +10 +Operational + + +1259 +22 +Oceanographic elements +022146 +OCOG range +m +3 +0 +31 +m +3 +10 +Operational + + +1260 +22 +Oceanographic elements +022147 +STD of 20 Hz OCOG range +m +3 +-8388608 +31 +m +3 +10 +Operational + + +1261 +22 +Oceanographic elements +022148 +Number of 20 Hz valid points for ocean range +Numeric +0 +0 +9 +Numeric +0 +3 +Operational + + +1262 +22 +Oceanographic elements +022149 +20 Hz significant wave height squared +m2 +3 +-33554432 +26 +m2 +3 +8 +Operational + + +1263 +22 +Oceanographic elements +022150 +Number of 18 Hz valid points for Ku band +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1264 +22 +Oceanographic elements +022151 +Ku band ocean range +m +3 +0 +31 +m +3 +10 +Operational + + +1265 +22 +Oceanographic elements +022152 +STD of 18 Hz Ku band ocean range +m +3 +0 +16 +m +3 +5 +Operational + + +1266 +22 +Oceanographic elements +022153 +Number of 18 Hz valid points for S band +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1267 +22 +Oceanographic elements +022154 +S band ocean range +m +3 +0 +31 +m +3 +10 +Operational + + +1268 +22 +Oceanographic elements +022155 +STD of 18 Hz S band ocean range +m +3 +0 +16 +m +3 +5 +Operational + + +1269 +22 +Oceanographic elements +022156 +Ku band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1270 +22 +Oceanographic elements +022157 +STD of 18 Hz Ku band ocean range +m +3 +0 +16 +m +3 +5 +Operational + + +1271 +22 +Oceanographic elements +022158 +S band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1272 +22 +Oceanographic elements +022159 +STD of 18 Hz S band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1273 +22 +Oceanographic elements +022160 +Normalized inverse wave age +Numeric +6 +0 +21 +Numeric +6 +7 +Operational + + +1274 +22 +Oceanographic elements +022161 +Wave spectra +m4 +4 +0 +27 +m4 +4 +9 +Operational + + +1275 +22 +Oceanographic elements +022162 +RMS of 20 Hz Ku band ocean range +m +3 +0 +16 +m +3 +5 +Operational + + +1276 +22 +Oceanographic elements +022163 +Number of 20 Hz valid points for Ku band +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1277 +22 +Oceanographic elements +022164 +RMS 20 Hz Ku band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1278 +22 +Oceanographic elements +022165 +Number of 20 Hz valid points for Ku band significant wave height +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1279 +22 +Oceanographic elements +022166 +Ku band net instrumental correction for significant wave height +m +3 +-1000 +11 +m +3 +4 +Operational + + +1280 +22 +Oceanographic elements +022167 +Number of valid points for Ku band backscatter +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1281 +22 +Oceanographic elements +022168 +C band ocean range +m +3 +0 +31 +m +3 +10 +Operational + + +1282 +22 +Oceanographic elements +022169 +RMS of C band ocean range +m +3 +0 +16 +m +3 +5 +Operational + + +1283 +22 +Oceanographic elements +022170 +Number of 20 Hz valid points for C band +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1284 +22 +Oceanographic elements +022171 +C band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1285 +22 +Oceanographic elements +022172 +RMS 20 Hz C band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1286 +22 +Oceanographic elements +022173 +Number of 20 Hz valid points for C band significant wave height +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1287 +22 +Oceanographic elements +022174 +C band net instrumental correction for significant wave height +m +3 +-1000 +11 +m +3 +4 +Operational + + +1288 +22 +Oceanographic elements +022175 +Number of valid points for C band backscatter +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1289 +22 +Oceanographic elements +022177 +Height of XBT/XCTD launcher +m +0 +0 +6 +m +0 +3 +Operational + + +1290 +22 +Oceanographic elements +022178 +XBT/XCTD launcher type +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +1291 +22 +Oceanographic elements +022182 +Water column height +(see Note 9) +m +3 +0 +23 +m +3 +7 +Operational + + +1292 +22 +Oceanographic elements +022184 +Water column height deviation from the reference value +m +3 +-2000 +12 +m +3 +4 +Operational + + +1293 +22 +Oceanographic elements +022185 +BPR transmission count +Numeric +0 +0 +10 +Numeric +0 +3 +Operational + + +1294 +22 +Oceanographic elements +022186 +Direction from which waves are coming +(see Note 11) +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1295 +22 +Oceanographic elements +022187 +Directional spread of wave +(see Note 12) +deg +0 +0 +9 +deg +0 +3 +Operational + + +1296 +22 +Oceanographic elements +022188 +Dissolved oxygen +umol/kg +3 +0 +19 +umol/kg +3 +6 +Operational + + +1297 +22 +Oceanographic elements +022189 +Specific band ocean range +m +3 +0 +31 +m +3 +10 +Operational + + +1298 +22 +Oceanographic elements +022190 +Specific band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1299 +22 +Oceanographic elements +022191 +RMS of specific band ocean range +m +4 +0 +16 +m +4 +5 +Operational + + +1300 +23 +Dispersal and transport +023001 +Accident early notification - article applicable +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1301 +23 +Dispersal and transport +023002 +Activity or facility involved in incident +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1302 +23 +Dispersal and transport +023003 +Type of release +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1303 +23 +Dispersal and transport +023004 +Countermeasures taken near border +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1304 +23 +Dispersal and transport +023005 +Cause of incident +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1305 +23 +Dispersal and transport +023006 +Incident situation +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1306 +23 +Dispersal and transport +023007 +Characteristics of release +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1307 +23 +Dispersal and transport +023008 +State of current release +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1308 +23 +Dispersal and transport +023009 +State of expected release +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1309 +23 +Dispersal and transport +023016 +Possibility of significant chemical toxic health effect +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1310 +23 +Dispersal and transport +023017 +Flow discharge of major recipient +m3/s +6 +0 +20 +m3/s +6 +7 +Operational + + +1311 +23 +Dispersal and transport +023018 +Release behaviour over time +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1312 +23 +Dispersal and transport +023019 +Actual release height +m +0 +-15000 +17 +m +0 +6 +Operational + + +1313 +23 +Dispersal and transport +023021 +Effective release height +m +0 +-15000 +17 +m +0 +6 +Operational + + +1314 +23 +Dispersal and transport +023022 +Distance of release point or site of incident +m +0 +0 +24 +m +0 +8 +Operational + + +1315 +23 +Dispersal and transport +023023 +Main transport speed in the atmosphere +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +1316 +23 +Dispersal and transport +023024 +Main transport speed in water +m/s +2 +0 +13 +m/s +2 +4 +Operational + + +1317 +23 +Dispersal and transport +023025 +Main transport speed in ground water +m/s +2 +0 +13 +m/s +2 +4 +Operational + + +1318 +23 +Dispersal and transport +023027 +Main transport direction in the atmosphere +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1319 +23 +Dispersal and transport +023028 +Main transport direction in water +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1320 +23 +Dispersal and transport +023029 +Main transport direction in ground water +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1321 +23 +Dispersal and transport +023031 +Possibility that plume will encounter precipitation in State in which incident occurred +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1322 +23 +Dispersal and transport +023032 +Plume will encounter change in wind direction and/or speed flag +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1323 +23 +Dispersal and transport +023040 +Flow discharge - river +m3/s +1 +0 +22 +m3/s +1 +7 +Operational + + +1324 +23 +Dispersal and transport +023041 +Flow discharge - well +m3/s +3 +0 +16 +m3/s +3 +5 +Operational + + +1325 +24 +Radiological elements +024001 +Estimate of amount of radioactivity released up to specified time +Bq +-11 +0 +28 +Bq +-11 +9 +Operational + + +1326 +24 +Radiological elements +024002 +Estimated maximum potential release +Bq +-11 +0 +28 +Bq +-11 +9 +Operational + + +1327 +24 +Radiological elements +024003 +Composition of release +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1328 +24 +Radiological elements +024004 +Element name +CCITT IA5 +0 +0 +16 +Character +0 +2 +Operational + + +1329 +24 +Radiological elements +024005 +Isotope mass +Numeric +0 +0 +9 +Numeric +0 +3 +Operational + + +1330 +24 +Radiological elements +024011 +Dose +mSv +2 +0 +32 +mSv +2 +10 +Operational + + +1331 +24 +Radiological elements +024012 +Trajectory dose (defined location and expected time of arrival) +mSv +2 +0 +32 +mSv +2 +10 +Operational + + +1332 +24 +Radiological elements +024013 +Gamma dose in air along the main transport path (defined location and time period) +mSv +2 +0 +32 +mSv +2 +10 +Operational + + +1333 +24 +Radiological elements +024014 +Gamma radiation dose rate +(see Note 2) +nSv/h +1 +0 +14 +nSv/h +1 +4 +Operational + + +1334 +24 +Radiological elements +024021 +Air concentration (of named isotope type including gross beta) +Bq m-3 +2 +0 +32 +Bq m-3 +2 +10 +Operational + + +1335 +24 +Radiological elements +024022 +Concentration in precipitation (of named isotope type) +Bq/l +2 +0 +32 +Bq/l +2 +10 +Operational + + +1336 +24 +Radiological elements +024023 +Pulse rate of beta radiation +/s +1 +0 +14 +/s +1 +4 +Operational + + +1337 +24 +Radiological elements +024024 +Pulse rate of gamma radiation +/s +1 +0 +14 +/s +1 +4 +Operational + + +1338 +25 +Processing information +025001 +Range-gate length +m +-1 +0 +6 +m +-1 +2 +Operational + + +1339 +25 +Processing information +025002 +Number of gates averaged +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +1340 +25 +Processing information +025003 +Number of integrated pulses +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1341 +25 +Processing information +025004 +Echo processing +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1342 +25 +Processing information +025005 +Echo integration +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1343 +25 +Processing information +025006 +Z to R conversion +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1344 +25 +Processing information +025007 +Z to R conversion factor +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +1345 +25 +Processing information +025008 +Z to R conversion exponent +Numeric +2 +0 +9 +Numeric +2 +3 +Operational + + +1346 +25 +Processing information +025009 +Calibration method +(see Note 3) +Flag table +0 +0 +4 +Flag table +0 +2 +Operational + + +1347 +25 +Processing information +025010 +Clutter treatment +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1348 +25 +Processing information +025011 +Ground occultation correction (screening) +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1349 +25 +Processing information +025012 +Range attenuation correction +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1350 +25 +Processing information +025013 +Bright-band correction +Flag table +0 +0 +2 +Flag table +0 +1 +Operational + + +1351 +25 +Processing information +025014 +Azimuth clutter cut-off +(see Note 1) +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +1352 +25 +Processing information +025015 +Radome attenuation correction +Flag table +0 +0 +2 +Flag table +0 +1 +Operational + + +1353 +25 +Processing information +025016 +Clear-air attenuation correction +dB/m +5 +0 +6 +dB/m +5 +2 +Operational + + +1354 +25 +Processing information +025017 +Precipitation attenuation correction +Flag table +0 +0 +2 +Flag table +0 +1 +Operational + + +1355 +25 +Processing information +025018 +A to Z law for attenuation factor +Numeric +7 +0 +6 +Numeric +7 +2 +Operational + + +1356 +25 +Processing information +025019 +A to Z law for attenuation exponent +Numeric +2 +0 +7 +Numeric +2 +3 +Operational + + +1357 +25 +Processing information +025020 +Mean speed estimation +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1358 +25 +Processing information +025021 +Wind computation enhancement +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1359 +25 +Processing information +025022 +GHRSST* rejection flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1360 +25 +Processing information +025023 +GHRSST confidence flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1361 +25 +Processing information +025024 +GHRSST data quality +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1362 +25 +Processing information +025025 +Battery voltage +V +1 +0 +9 +V +1 +3 +Operational + + +1363 +25 +Processing information +025026 +Battery voltage (large range) +V +1 +0 +12 +V +1 +4 +Operational + + +1364 +25 +Processing information +025028 +Operator or manufacturer defined parameter +Numeric +1 +-16384 +15 +Numeric +1 +5 +Operational + + +1365 +25 +Processing information +025029 +Calibration method +(see Note 3) +Flag table +0 +0 +6 +Flag table +0 +2 +Operational + + +1366 +25 +Processing information +025030 +Running mean sea-surface temperature usage +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1367 +25 +Processing information +025031 +NWP-generated vertical profile thinning method +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1368 +25 +Processing information +025032 +Wind profiler mode information +(see Note 2) +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1369 +25 +Processing information +025033 +Wind profiler submode information +(see Note 2) +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1370 +25 +Processing information +025034 +Wind profiler quality control test results +(see Note 2) +Flag table +0 +0 +4 +Flag table +0 +2 +Operational + + +1371 +25 +Processing information +025035 +Decision method for polarity +(see Note 5) +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1372 +25 +Processing information +025036 +Atmospherics location method +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1373 +25 +Processing information +025037 +SST bias +K +2 +-127 +8 +K +2 +3 +Operational + + +1374 +25 +Processing information +025038 +Difference between SST and analysis +K +1 +-127 +8 +K +1 +3 +Operational + + +1375 +25 +Processing information +025040 +CO2 wind product derivation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1376 +25 +Processing information +025041 +Moving platform direction reporting method +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1377 +25 +Processing information +025042 +Moving platform speed reporting method +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1378 +25 +Processing information +025043 +Wave sampling interval (time) +s +4 +0 +15 +s +4 +5 +Operational + + +1379 +25 +Processing information +025044 +Wave sampling interval (space) +m +2 +0 +14 +m +2 +5 +Operational + + +1380 +25 +Processing information +025045 +HIRS channel combination +Flag table +0 +0 +21 +Flag table +0 +7 +Operational + + +1381 +25 +Processing information +025046 +MSU channel combination +Flag table +0 +0 +5 +Flag table +0 +2 +Operational + + +1382 +25 +Processing information +025047 +SSU channel combination +Flag table +0 +0 +4 +Flag table +0 +2 +Operational + + +1383 +25 +Processing information +025048 +AMSU-A channel combination +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1384 +25 +Processing information +025049 +AMSU-B channel combination +Flag table +0 +0 +6 +Flag table +0 +2 +Operational + + +1385 +25 +Processing information +025050 +Principal component score +Numeric +4 +-131072 +18 +Numeric +4 +6 +Operational + + +1386 +25 +Processing information +025051 +AVHRR channel combination +Flag table +0 +0 +7 +Flag table +0 +3 +Operational + + +1387 +25 +Processing information +025052 +Log10 of principal components normalized fit to data +Numeric +4 +0 +15 +Numeric +4 +5 +Operational + + +1388 +25 +Processing information +025053 +Observation quality +Flag table +0 +0 +12 +Flag table +0 +4 +Operational + + +1389 +25 +Processing information +025054 +SSMIS subframe ID number +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +1390 +25 +Processing information +025055 +Multiplexer housekeeping +K +2 +0 +16 +K +2 +5 +Operational + + +1391 +25 +Processing information +025060 +Software identification +(see Note 2) +Numeric +0 +0 +14 +Numeric +0 +5 +Operational + + +1392 +25 +Processing information +025061 +Software identification and version number +CCITT IA5 +0 +0 +96 +Character +0 +12 +Operational + + +1393 +25 +Processing information +025062 +Database identification +Numeric +0 +0 +14 +Numeric +0 +5 +Operational + + +1394 +25 +Processing information +025063 +Central processor or system identifier +(see Note 6) +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +1395 +25 +Processing information +025065 +Orientation correction (azimuth) +deg +2 +-1000 +11 +deg +2 +4 +Operational + + +1396 +25 +Processing information +025066 +Orientation correction (elevation) +deg +2 +-1000 +11 +deg +2 +4 +Operational + + +1397 +25 +Processing information +025067 +Radiosonde release point pressure correction +Pa +0 +-8000 +14 +Pa +0 +4 +Operational + + +1398 +25 +Processing information +025068 +Number of archive recomputes +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1399 +25 +Processing information +025069 +Flight level pressure corrections +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1400 +25 +Processing information +025070 +Major frame count +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +1401 +25 +Processing information +025071 +Frame count +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +1402 +25 +Processing information +025075 +Satellite antenna corrections version number +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +1403 +25 +Processing information +025076 +Log10 of (temperature-radiance central wave number) for ATOVS +log (m-1) +8 +0 +30 +log (m-1) +8 +10 +Operational + + +1404 +25 +Processing information +025077 +Bandwidth correction coefficient 1 +Numeric +5 +-100000 +18 +Numeric +5 +7 +Operational + + +1405 +25 +Processing information +025078 +Bandwidth correction coefficient 2 +Numeric +5 +0 +17 +Numeric +5 +6 +Operational + + +1406 +25 +Processing information +025079 +Albedo-radiance solar filtered irradiance for ATOVS +W m-2 +4 +0 +24 +W m-2 +4 +8 +Operational + + +1407 +25 +Processing information +025080 +Albedo-radiance equivalent filter width for ATOVS +m +10 +0 +14 +m +10 +5 +Operational + + +1408 +25 +Processing information +025081 +Incidence angle +deg +3 +0 +17 +deg +3 +6 +Operational + + +1409 +25 +Processing information +025082 +Azimuth angle +deg +3 +0 +19 +deg +3 +6 +Operational + + +1410 +25 +Processing information +025083 +Faraday rotational angle +deg +3 +0 +19 +deg +3 +6 +Operational + + +1411 +25 +Processing information +025084 +Geometric rotational angle +deg +5 +0 +26 +deg +5 +8 +Operational + + +1412 +25 +Processing information +025085 +Fraction of clear pixels in HIRS FOV +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1413 +25 +Processing information +025086 +Depth correction indicator +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1414 +25 +Processing information +025090 +Orbit state flag +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1415 +25 +Processing information +025091 +Structure constant of the refraction index (Cn2) +dB +3 +-18192 +13 +dB +3 +5 +Operational + + +1416 +25 +Processing information +025092 +Acoustic propagation velocity +m/s +2 +28000 +14 +m/s +2 +5 +Operational + + +1417 +25 +Processing information +025093 +RASS computation correction +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1418 +25 +Processing information +025095 +Altimeter state flag +Flag table +0 +0 +2 +Flag table +0 +1 +Operational + + +1419 +25 +Processing information +025096 +Radiometer state flag +Flag table +0 +0 +5 +Flag table +0 +2 +Operational + + +1420 +25 +Processing information +025097 +Three-dimensional error estimate of the navigator orbit +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1421 +25 +Processing information +025098 +Altimeter data quality flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1422 +25 +Processing information +025099 +Altimeter correction quality flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1423 +25 +Processing information +025100 +XBT/XCTD fall rate equation coefficient a +Numeric +5 +0 +20 +Numeric +5 +6 +Operational + + +1424 +25 +Processing information +025101 +XBT/XCTD fall rate equation coefficient b +Numeric +5 +-500000 +21 +Numeric +5 +6 +Operational + + +1425 +25 +Processing information +025102 +Number of missing lines excluding data gaps +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1426 +25 +Processing information +025103 +Number of directional bins +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1427 +25 +Processing information +025104 +Number of wavelength bins +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1428 +25 +Processing information +025105 +First directional bin +deg +3 +0 +19 +deg +3 +6 +Operational + + +1429 +25 +Processing information +025106 +Directional bin step +deg +3 +0 +19 +deg +3 +6 +Operational + + +1430 +25 +Processing information +025107 +First wavelength bin +m +3 +0 +29 +m +3 +9 +Operational + + +1431 +25 +Processing information +025108 +Last wavelength bin +m +3 +0 +29 +m +3 +9 +Operational + + +1432 +25 +Processing information +025110 +Image processing summary +Flag table +0 +0 +10 +Flag table +0 +4 +Operational + + +1433 +25 +Processing information +025111 +Number of input data gaps +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1434 +25 +Processing information +025112 +Band specific altimeter data quality flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1435 +25 +Processing information +025113 +Band specific altimeter correction quality flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1436 +25 +Processing information +025120 +RA2-L2-processing flag +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1437 +25 +Processing information +025121 +RA2-L2-processing quality +% +0 +0 +7 +% +0 +3 +Operational + + +1438 +25 +Processing information +025122 +Hardware configuration for RF +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1439 +25 +Processing information +025123 +Hardware configuration for HPA +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1440 +25 +Processing information +025124 +MWR-L2-processing flag +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1441 +25 +Processing information +025125 +MWR-L2-processing quality +% +0 +0 +7 +% +0 +3 +Operational + + +1442 +25 +Processing information +025126 +Model dry tropospheric correction +m +3 +-32768 +16 +m +3 +5 +Operational + + +1443 +25 +Processing information +025127 +Inverted barometer correction +m +3 +-32768 +16 +m +3 +5 +Operational + + +1444 +25 +Processing information +025128 +Model wet tropospheric correction +m +3 +-32768 +16 +m +3 +5 +Operational + + +1445 +25 +Processing information +025129 +MWR derived wet tropospheric correction +m +3 +-32768 +16 +m +3 +5 +Operational + + +1446 +25 +Processing information +025130 +RA2 ionospheric correction on Ku band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1447 +25 +Processing information +025131 +Ionospheric correction from Doris on Ku band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1448 +25 +Processing information +025132 +Ionospheric correction from model on Ku band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1449 +25 +Processing information +025133 +Sea state bias correction on Ku band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1450 +25 +Processing information +025134 +RA2 ionospheric correction on S band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1451 +25 +Processing information +025135 +Ionospheric correction from Doris on S band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1452 +25 +Processing information +025136 +Ionospheric correction from model on S band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1453 +25 +Processing information +025137 +Sea state bias correction on S band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1454 +25 +Processing information +025138 +Average signal-to-noise ratio +Numeric +0 +-2048 +12 +Numeric +0 +4 +Operational + + +1455 +25 +Processing information +025140 +Start channel +Numeric +0 +0 +14 +Numeric +0 +5 +Operational + + +1456 +25 +Processing information +025141 +End channel +Numeric +0 +0 +14 +Numeric +0 +5 +Operational + + +1457 +25 +Processing information +025142 +Channel scale factor +Numeric +0 +0 +6 +Numeric +0 +2 +Operational + + +1458 +25 +Processing information +025143 +Linear coefficient +Numeric +6 +-5000000 +24 +Numeric +6 +8 +Operational + + +1459 +25 +Processing information +025148 +Coefficient of variation +Numeric +2 +-10000 +15 +Numeric +2 +5 +Operational + + +1460 +25 +Processing information +025149 +Optimal estimation cost +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1461 +25 +Processing information +025150 +Method of tropical cyclone intensity analysis using satellite data +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1462 +25 +Processing information +025160 +Ku band net instrumental correction +m +4 +-120000 +18 +m +4 +6 +Operational + + +1463 +25 +Processing information +025161 +C band net instrumental correction +m +4 +-120000 +18 +m +4 +6 +Operational + + +1464 +25 +Processing information +025162 +Sea state bias correction on C band +m +4 +-6000 +13 +m +4 +4 +Operational + + +1465 +25 +Processing information +025163 +Altimeter ionospheric correction on Ku band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1466 +25 +Processing information +025164 +Radiometer wet tropospheric correction +m +4 +-5000 +13 +m +4 +4 +Operational + + +1467 +25 +Processing information +025165 +Ionospheric correction from model on specific band +m +4 +-32768 +16 +m +4 +5 +Operational + + +1468 +25 +Processing information +025166 +Sea state bias correction on specific band +m +4 +-32768 +16 +m +4 +5 +Operational + + +1469 +25 +Processing information +025167 +Specific band net instrumental correction +m +4 +-120000 +18 +m +4 +6 +Operational + + +1470 +25 +Processing information +025170 +Sampling interval (time) +s +0 +0 +10 +s +0 +4 +Operational + + +1471 +25 +Processing information +025171 +Sample averaging period +s +0 +0 +10 +s +0 +4 +Operational + + +1472 +25 +Processing information +025172 +Number of samples +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1473 +25 +Processing information +025174 +SMOS information flag +Flag table +0 +0 +14 +Flag table +0 +5 +Operational + + +1474 +25 +Processing information +025175 +Modified residual +(see Note 7) +Numeric +2 +0 +13 +Numeric +2 +4 +Operational + + +1475 +25 +Processing information +025180 +LRM* per cent +% +2 +0 +16 +% +2 +5 +Operational + + +1476 +25 +Processing information +025181 +L2 processing flag +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1477 +25 +Processing information +025182 +L1 processing flag +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1478 +25 +Processing information +025183 +L1 processing quality +% +2 +0 +14 +% +2 +5 +Operational + + +1479 +25 +Processing information +025184 +L2 product status +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1480 +25 +Processing information +025185 +Encryption method +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +1481 +25 +Processing information +025186 +Encryption key version +CCITT IA5 +0 +0 +96 +Character +0 +12 +Operational + + +1482 +25 +Processing information +025187 +Confidence flag +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1483 +25 +Processing information +025188 +Method for reducing pressure to sea level +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1484 +25 +Processing information +025189 +Range cut-off wavelength +m +0 +1 +9 +m +0 +3 +Operational + + +1485 +25 +Processing information +025190 +Altimeter echo processing mode +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +1486 +25 +Processing information +025191 +Altimeter tracking mode +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +1487 +26 +Non-coordinate location (time) +026001 +Principal time of daily reading in UTC of maximum temperature +h +1 +0 +12 +h +1 +3 +Operational + + +1488 +26 +Non-coordinate location (time) +026002 +Principal time of daily reading in UTC of minimum temperature +h +1 +0 +12 +h +1 +3 +Operational + + +1489 +26 +Non-coordinate location (time) +026003 +Time difference +min +0 +-1440 +12 +min +0 +4 +Operational + + +1490 +26 +Non-coordinate location (time) +026010 +Hours included +Flag table +0 +0 +26 +Flag table +0 +9 +Operational + + +1491 +26 +Non-coordinate location (time) +026020 +Duration of precipitation +min +0 +0 +11 +min +0 +4 +Operational + + +1492 +26 +Non-coordinate location (time) +026021 +Year +a +0 +0 +12 +a +0 +4 +Operational + + +1493 +26 +Non-coordinate location (time) +026022 +Month +mon +0 +0 +4 +mon +0 +2 +Operational + + +1494 +26 +Non-coordinate location (time) +026023 +Day +d +0 +0 +6 +d +0 +2 +Operational + + +1495 +26 +Non-coordinate location (time) +026030 +Measurement integration time +s +2 +0 +8 +s +2 +3 +Operational + + +1496 +27 +Non-coordinate location (horizontal - 1) +027001 +Latitude (high accuracy) +deg +5 +-9000000 +25 +deg +5 +7 +Operational + + +1497 +27 +Non-coordinate location (horizontal - 1) +027002 +Latitude (coarse accuracy) +deg +2 +-9000 +15 +deg +2 +4 +Operational + + +1498 +27 +Non-coordinate location (horizontal - 1) +027003 +Alternate latitude (coarse accuracy) +deg +2 +-9000 +15 +deg +2 +4 +Operational + + +1499 +27 +Non-coordinate location (horizontal - 1) +027004 +Alternate latitude (high accuracy) +deg +5 +-9000000 +25 +deg +5 +7 +Operational + + +1500 +27 +Non-coordinate location (horizontal - 1) +027010 +Footprint axis 1 +m +-1 +0 +14 +m +-1 +5 +Operational + + +1501 +27 +Non-coordinate location (horizontal - 1) +027020 +Satellite location counter +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +1502 +27 +Non-coordinate location (horizontal - 1) +027021 +Satellite sublocation dimension +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +1503 +27 +Non-coordinate location (horizontal - 1) +027031 +In direction of 0 degrees longitude, distance from the Earth's centre +m +2 +-1073741824 +31 +m +2 +10 +Operational + + +1504 +27 +Non-coordinate location (horizontal - 1) +027079 +Horizontal width of sampled volume +m +0 +0 +18 +m +0 +6 +Operational + + +1505 +27 +Non-coordinate location (horizontal - 1) +027080 +Viewing azimuth angle +degree true +2 +0 +16 +degree true +0 +5 +Operational + + +1506 +28 +Non-coordinate location (horizontal - 2) +028001 +Longitude (high accuracy) +deg +5 +-18000000 +26 +deg +5 +8 +Operational + + +1507 +28 +Non-coordinate location (horizontal - 2) +028002 +Longitude (coarse accuracy) +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +1508 +28 +Non-coordinate location (horizontal - 2) +028003 +Alternate longitude (coarse accuracy) +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +1509 +28 +Non-coordinate location (horizontal - 2) +028004 +Alternate longitude (high accuracy) +deg +5 +-18000000 +26 +deg +5 +8 +Operational + + +1510 +28 +Non-coordinate location (horizontal - 2) +028010 +Footprint axis 2 +m +-1 +0 +14 +m +-1 +5 +Operational + + +1511 +28 +Non-coordinate location (horizontal - 2) +028031 +In direction 90 degrees East, distance from the Earth's centre +m +2 +-1073741824 +31 +m +2 +10 +Operational + + +1512 +29 +Map data +029001 +Projection type +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1513 +29 +Map data +029002 +Coordinate grid type +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1516 +29 +Map data +029014 +Optional list of parameters for an external map projection library +CCITT IA5 +0 +0 +504 +Character +0 +63 +Operational + + +1520 +30 +Image +030001 +Pixel value (4 bits) +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +1521 +30 +Image +030002 +Pixel value (8 bits) +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1522 +30 +Image +030004 +Pixel value (16 bits) +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +1523 +30 +Image +030010 +Number of grid points +Numeric +0 +0 +13 +Numeric +0 +4 +Operational + + +1524 +30 +Image +030021 +Number of pixels per row +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +1525 +30 +Image +030022 +Number of pixels per column +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +1526 +30 +Image +030031 +Picture type +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1527 +30 +Image +030032 +Combination with other data +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1528 +30 +Image +030033 +Number of bins along the radial +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +1529 +30 +Image +030034 +Number of azimuths +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +1530 +31 +Data description operator qualifiers +031000 +Short delayed descriptor replication factor +Numeric +0 +0 +1 +Operational + + +1531 +31 +Data description operator qualifiers +031001 +Delayed descriptor replication factor +Numeric +0 +0 +8 +Operational + + +1532 +31 +Data description operator qualifiers +031002 +Extended delayed descriptor replication factor +Numeric +0 +0 +16 +Operational + + +1533 +31 +Data description operator qualifiers +031011 +Delayed descriptor and data repetition factor +Numeric +0 +0 +8 +Operational + + +1534 +31 +Data description operator qualifiers +031012 +Extended delayed descriptor and data repetition factor +Numeric +0 +0 +16 +Operational + + +1535 +31 +Data description operator qualifiers +031021 +Associated field significance +Code table +0 +0 +6 +Operational + + +1536 +31 +Data description operator qualifiers +031031 +Data present indicator +Flag table +0 +0 +1 +Operational + + +1537 +33 +Quality information +033002 +Quality information +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1538 +33 +Quality information +033003 +Quality information +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1539 +33 +Quality information +033005 +Quality information (AWS data) +Flag table +0 +0 +30 +Flag table +0 +10 +Operational + + +1540 +33 +Quality information +033006 +Internal measurement status information (AWS) +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1541 +33 +Quality information +033007 +Per cent confidence +% +0 +0 +7 +% +0 +3 +Operational + + +1542 +33 +Quality information +033015 +Data quality-check indicator +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +1543 +33 +Quality information +033020 +Quality control indication of following value +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1544 +33 +Quality information +033021 +Quality of following value +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1545 +33 +Quality information +033022 +Quality of buoy satellite transmission +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1546 +33 +Quality information +033023 +Quality of buoy location +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1547 +33 +Quality information +033024 +Station elevation quality mark (for mobile stations) +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1548 +33 +Quality information +033025 +ACARS interpolated values indicator +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1549 +33 +Quality information +033026 +Moisture quality +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +1550 +33 +Quality information +033027 +Location quality class (range of radius of 66 % confidence) +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1551 +33 +Quality information +033028 +Snapshot overall quality +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1552 +33 +Quality information +033030 +Scan line status flags for ATOVS +Flag table +0 +0 +24 +Flag table +0 +8 +Operational + + +1553 +33 +Quality information +033031 +Scan line quality flags for ATOVS +Flag table +0 +0 +24 +Flag table +0 +8 +Operational + + +1554 +33 +Quality information +033032 +Channel quality flags for ATOVS +Flag table +0 +0 +24 +Flag table +0 +8 +Operational + + +1555 +33 +Quality information +033033 +Field of view quality flags for ATOVS +Flag table +0 +0 +24 +Flag table +0 +8 +Operational + + +1556 +33 +Quality information +033035 +Manual/automatic quality control +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1557 +33 +Quality information +033036 +Nominal confidence threshold +% +0 +0 +7 +% +0 +3 +Operational + + +1558 +33 +Quality information +033037 +Wind correlation error +Flag table +0 +0 +20 +Flag table +0 +7 +Operational + + +1559 +33 +Quality information +033038 +Quality flags for ground-based GNSS data +Flag table +0 +0 +10 +Flag table +0 +4 +Operational + + +1560 +33 +Quality information +033039 +Quality flags for radio occultation data +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1561 +33 +Quality information +033040 +Confidence interval +% +0 +0 +7 +% +0 +3 +Operational + + +1562 +33 +Quality information +033041 +Attribute of following value +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1563 +33 +Quality information +033042 +Type of limit represented by following value +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1564 +33 +Quality information +033043 +AST confidence +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1565 +33 +Quality information +033044 +ASAR quality information +Flag table +0 +0 +15 +Flag table +0 +5 +Operational + + +1566 +33 +Quality information +033045 +Probability of following event +(see Notes 1 and 3) +% +0 +0 +7 +% +0 +3 +Operational + + +1567 +33 +Quality information +033046 +Conditional probability of following event with respect to specified conditioning event +(see Notes 1, 2 and 3) +% +0 +0 +7 +% +0 +3 +Operational + + +1568 +33 +Quality information +033047 +Measurement confidence data +Flag table +0 +0 +31 +Flag table +0 +11 +Operational + + +1569 +33 +Quality information +033048 +Confidence measure of SAR inversion +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1570 +33 +Quality information +033049 +Confidence measure of wind retrieval +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1571 +33 +Quality information +033050 +Global GTSPP quality flag +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1572 +33 +Quality information +033052 +S band ocean retracking quality +Flag table +0 +0 +21 +Flag table +0 +7 +Operational + + +1573 +33 +Quality information +033053 +Ku band ocean retracking quality +Flag table +0 +0 +21 +Flag table +0 +7 +Operational + + +1574 +33 +Quality information +033060 +GqisFlagQual - individual IASI-System quality flag +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1575 +33 +Quality information +033061 +GqisQualIndex - indicator for instrument noise performance (contributions from spectral and radiometric calibration) +% +0 +0 +7 +% +0 +3 +Operational + + +1576 +33 +Quality information +033062 +GqisQualIndexLoc - indicator for geometric quality index +% +0 +0 +7 +% +0 +3 +Operational + + +1577 +33 +Quality information +033063 +GqisQualIndexRad - indicator for instrument noise performance (contributions from radiometric calibration) +% +0 +0 +7 +% +0 +3 +Operational + + +1578 +33 +Quality information +033064 +GqisQualIndexSpect - indicator for instrument noise performance (contributions from spectral calibration) +% +0 +0 +7 +% +0 +3 +Operational + + +1579 +33 +Quality information +033065 +GqisSysTecSondQual - output of system TEC (Technical Expertise Centre) quality function +Numeric +0 +0 +24 +Numeric +0 +8 +Operational + + +1580 +33 +Quality information +033066 +AMV quality flag +Flag table +0 +0 +24 +Flag table +0 +8 +Operational + + +1581 +33 +Quality information +033070 +Total ozone quality +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1582 +33 +Quality information +033071 +Profile ozone quality +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1583 +33 +Quality information +033072 +Ozone error +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1584 +33 +Quality information +033075 +Scan-level quality flags +Flag table +0 +0 +13 +Flag table +0 +5 +Operational + + +1585 +33 +Quality information +033076 +Calibration quality flags +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1586 +33 +Quality information +033077 +Field-of-view quality flags +Flag table +0 +0 +19 +Flag table +0 +7 +Operational + + +1587 +33 +Quality information +033078 +Geolocation quality +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1588 +33 +Quality information +033079 +Granule level quality flags +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1589 +33 +Quality information +033080 +Scan level quality flags +Flag table +0 +0 +20 +Flag table +0 +7 +Operational + + +1590 +33 +Quality information +033081 +Channel data quality flags +Flag table +0 +0 +12 +Flag table +0 +4 +Operational + + +1591 +33 +Quality information +033082 +Geolocation quality flags +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1592 +33 +Quality information +033083 +Radiance data quality flags +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1593 +33 +Quality information +033084 +Pixel level quality flags +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1594 +33 +Quality information +033085 +Aerosol optical thickness quality flags +Flag table +0 +0 +18 +Flag table +0 +6 +Operational + + +1595 +33 +Quality information +033086 +Quality of pixel level retrieval +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1596 +33 +Quality information +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +Code table +0 +0 +4 +Code table +0 +1 +Operational + + +1597 +33 +Quality information +033088 +Ozone total column quality flag +Flag table +0 +0 +18 +Flag table +0 +6 +Operational + + +1598 +33 +Quality information +033089 +Noise equivalent delta temperature (NEdT) quality indicators for warm target calibration +K +2 +0 +12 +K +2 +4 +Operational + + +1599 +33 +Quality information +033090 +NEdT quality indicators for cold target calibration +K +2 +0 +12 +K +2 +4 +Operational + + +1600 +33 +Quality information +033091 +NEdT quality indicators for overall calibration +K +2 +0 +12 +K +2 +4 +Operational + + +1601 +33 +Quality information +033092 +Band specific ocean quality flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1602 +35 +Data monitoring information +035000 +FM and regional code number +Code table +0 +0 +10 +Code table +0 +3 +Operational + + +1603 +35 +Data monitoring information +035001 +Time frame for monitoring +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1604 +35 +Data monitoring information +035011 +Number of reports actually received +Numeric +0 +0 +14 +Numeric +0 +4 +Operational + + +1605 +35 +Data monitoring information +035021 +Bulletin being monitored (TTAAii) +CCITT IA5 +0 +0 +48 +Character +0 +6 +Operational + + +1606 +35 +Data monitoring information +035022 +Bulletin being monitored (YYGGgg) +CCITT IA5 +0 +0 +48 +Character +0 +6 +Operational + + +1607 +35 +Data monitoring information +035023 +Bulletin being monitored (CCCC) +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +1608 +35 +Data monitoring information +035024 +Bulletin being monitored (BBB) +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +1609 +35 +Data monitoring information +035030 +Discrepancies in the availability of expected data +Code table +0 +0 +4 +Code table +0 +1 +Operational + + +1610 +35 +Data monitoring information +035031 +Qualifier on monitoring results +Code table +0 +0 +7 +Code table +0 +2 +Operational + + +1611 +35 +Data monitoring information +035032 +Cause of missing data +Code table +0 +0 +4 +Code table +0 +1 +Operational + + +1612 +35 +Data monitoring information +035033 +Observation and collection deficiencies +Code table +0 +0 +7 +Code table +0 +2 +Operational + + +1613 +35 +Data monitoring information +035034 +Statistical trends for availability of data (during the survey period(s)) +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1614 +35 +Data monitoring information +035035 +Reason for termination +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1615 +40 +Satellite data +040001 +Surface soil moisture (ms) +% +1 +0 +10 +% +1 +4 +Operational + + +1616 +40 +Satellite data +040002 +Estimated error in surface soil moisture +% +1 +0 +10 +% +1 +4 +Operational + + +1617 +40 +Satellite data +040003 +Mean surface soil moisture +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1618 +40 +Satellite data +040004 +Rain fall detection +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1619 +40 +Satellite data +040005 +Soil moisture correction flag +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1620 +40 +Satellite data +040006 +Soil moisture processing flag +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1621 +40 +Satellite data +040007 +Soil moisture quality +% +1 +0 +10 +% +1 +4 +Operational + + +1622 +40 +Satellite data +040008 +Frozen land surface fraction +% +1 +0 +10 +% +1 +4 +Operational + + +1623 +40 +Satellite data +040009 +Inundation and wetland fraction +% +1 +0 +10 +% +1 +4 +Operational + + +1624 +40 +Satellite data +040010 +Topographic complexity +% +1 +0 +10 +% +1 +4 +Operational + + +1625 +40 +Satellite data +040011 +Interpolation flag +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1626 +40 +Satellite data +040012 +Radiometer data quality flag +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1627 +40 +Satellite data +040013 +Radiometer brightness temperature interpretation flag +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1628 +40 +Satellite data +040014 +High-frequency fluctuations of the sea-surface topography correction +m +4 +-3000 +13 +m +4 +4 +Operational + + +1629 +40 +Satellite data +040015 +Normalized differential vegetation index (NDVI) +Numeric +2 +-100 +8 +Numeric +2 +3 +Operational + + +1630 +40 +Satellite data +040016 +Residual RMS in band +Numeric +3 +0 +14 +Numeric +3 +5 +Operational + + +1631 +40 +Satellite data +040017 +Non-normalized principal component score +Numeric +0 +-1073741824 +31 +Numeric +0 +10 +Operational + + +1632 +40 +Satellite data +040018 +GIacAvgImagIIS - average of imager measurements +W m-2 sr-1 m +6 +0 +24 +W m-2 sr-1 m +6 +8 +Operational + + +1633 +40 +Satellite data +040019 +GIacVarImagIIS - variance of imager measurements +W m-2 sr-1 m +6 +0 +24 +W m-2 sr-1 m +6 +8 +Operational + + +1634 +40 +Satellite data +040020 +GqisFlagQualDetailed - quality flag for the system +Flag table +0 +0 +17 +Flag table +0 +6 +Operational + + +1635 +40 +Satellite data +040021 +Fraction of weighted AVHRR pixel in IASI FOV covered with snow/ice +% +0 +0 +7 +% +0 +3 +Operational + + +1636 +40 +Satellite data +040022 +Number of missing, bad or failed AVHRR pixels +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1637 +40 +Satellite data +040023 +Auxiliary altimeter state flags +Flag table +0 +0 +5 +Flag table +0 +2 +Operational + + +1638 +40 +Satellite data +040024 +Meteorological map availability +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1639 +40 +Satellite data +040025 +Interpolation flag for mean diurnal tide +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1640 +40 +Satellite data +040026 +Score quantization factor +Numeric +2 +0 +16 +Numeric +2 +5 +Operational + + +1641 +40 +Satellite data +040027 +Sun glint angle +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +1642 +40 +Satellite data +040028 +GMI quality flag +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1643 +40 +Satellite data +040029 +Horizontal observation integration length +m +0 +0 +26 +m +0 +8 +Operational + + +1644 +40 +Satellite data +040030 +Horizontal line of sight wind +m/s +2 +-32767 +16 +m/s +2 +5 +Operational + + +1645 +40 +Satellite data +040031 +Error estimate of horizontal line of sight wind +m/s +2 +0 +15 +m/s +2 +5 +Operational + + +1646 +40 +Satellite data +040032 +Derivative wind to pressure +m s-1 Pa-1 +3 +-100000 +18 +m s-1 Pa-1 +3 +6 +Operational + + +1647 +40 +Satellite data +040033 +Derivative wind to temperature +m s-1 K-1 +3 +-100000 +18 +m s-1 K-1 +3 +6 +Operational + + +1648 +40 +Satellite data +040034 +Derivative wind to backscatter ratio +m/s +3 +-200000 +19 +m/s +3 +6 +Operational + + +1649 +40 +Satellite data +040035 +Satellite range +m +0 +380000 +18 +m +0 +6 +Operational + + +1650 +40 +Satellite data +040036 +Lidar L2b classification type +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1651 +40 +Satellite data +040037 +Backscatter ratio +Numeric +3 +500 +20 +Numeric +3 +7 +Operational + + +1652 +40 +Satellite data +040038 +Cloud particle size +m +7 +0 +28 +m +7 +6 +Operational + + +1653 +40 +Satellite data +040039 +Single look complex image intensity +Numeric +0 +-25 +5 +Numeric +0 +3 +Operational + + +1654 +40 +Satellite data +040040 +Single look complex image skewness +Numeric +2 +1 +13 +Numeric +0 +4 +Operational + + +1655 +40 +Satellite data +040041 +Single look complex image kurtosis +Numeric +2 +1 +13 +Numeric +0 +4 +Operational + + +1656 +40 +Satellite data +040042 +Single look complex image variance +Numeric +2 +1 +13 +Numeric +0 +4 +Operational + + +1657 +40 +Satellite data +040043 +Satellite manoeuvre indicator +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1658 +40 +Satellite data +040044 +Dust index +Numeric +1 +0 +8 +Numeric +1 +3 +Operational + + +1659 +40 +Satellite data +040045 +Cloud formation and height assignment +Flag table +0 +0 +5 +Flag table +0 +2 +Operational + + +1660 +40 +Satellite data +040046 +Cloudiness summary +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1661 +40 +Satellite data +040047 +Validation flag for IASI or IASI-NG level 1 product +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1662 +40 +Satellite data +040048 +Validation flag of AMSU-A level 1 data flow +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1663 +40 +Satellite data +040049 +Cloud tests executed and results +Flag table +0 +0 +16 +Flag table +0 +5 +Operational + + +1664 +40 +Satellite data +040050 +Retrieval initialisation +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1665 +40 +Satellite data +040051 +Convergence of the iterative retrieval +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1666 +40 +Satellite data +040052 +Indication of super-adiabatic and super-saturation in final retrieval +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1667 +40 +Satellite data +040053 +Number of iterations used for retrieval +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1668 +40 +Satellite data +040054 +Potential processing and inputs errors +Flag table +0 +0 +13 +Flag table +0 +4 +Operational + + +1669 +40 +Satellite data +040055 +Diagnostics on the retrieval +Flag table +0 +0 +21 +Flag table +0 +7 +Operational + + +1670 +40 +Satellite data +040056 +General retrieval quality +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1671 +40 +Satellite data +040057 +IASI level 2 retrieval flags +Flag table +0 +0 +31 +Flag table +0 +10 +Operational + + +1672 +40 +Satellite data +040058 +Number of vectors describing the characterization matrices +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1673 +40 +Satellite data +040059 +Number of layers actually retrieved +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1674 +40 +Satellite data +040060 +Number of profiles retrieved in scanline +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1675 +40 +Satellite data +040061 +Air partial columns on each retrieved layer +mol cm-2 +3 +0 +16 +mol cm-2 +3 +5 +Operational + + +1676 +40 +Satellite data +040062 +A-priori partial columns on each retrieved layer +mol cm-2 +10 +0 +16 +mol cm-2 +10 +5 +Operational + + +1677 +40 +Satellite data +040063 +Scaling vector multiplying the a priori CO vector in order to define the retrieved CO vector +Numeric +5 +0 +26 +Numeric +5 +8 +Operational + + +1678 +40 +Satellite data +040064 +Main eigenvalues of the sensitivity matrix +Numeric +6 +0 +31 +Numeric +6 +10 +Operational + + +1679 +40 +Satellite data +040065 +Main eigenvectors of the sensitivity matrix +Numeric +6 +-1000000000 +31 +Numeric +6 +10 +Operational + + +1680 +40 +Satellite data +040066 +Quality indicator for atmospheric water vapour +Numeric +1 +0 +8 +Numeric +1 +3 +Operational + + +1681 +40 +Satellite data +040067 +Quality indicator for atmospheric temperature +Numeric +1 +0 +8 +Numeric +1 +3 +Operational + + +1682 +40 +Satellite data +040068 +General retrieval quality flag for SO2 +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1683 +40 +Satellite data +040069 +PWLR estimated retrieval error for surface air temperature +K +4 +-1000000 +21 +K +4 +7 +Operational + + +1684 +40 +Satellite data +040070 +PWLR estimated retrieval error of surface dewpoint +* +K +4 +-1000000 +21 +K +4 +7 +Operational + + +1685 +40 +Satellite data +040071 +Retrieval error covariance matrix for ozone in principal component domain +Numeric +4 +-1000000 +21 +Numeric +4 +7 +Operational + + +1686 +40 +Satellite data +040072 +PWLR estimated retrieval quality indicator of atmospheric ozone +Numeric +1 +0 +8 +Numeric +1 +3 +Operational + + +1687 +40 +Satellite data +040073 +PWLR estimated retrieval error of surface skin temperature +K +1 +0 +8 +K +1 +3 +Operational + + +1688 +41 +Oceanographic/biogeochemical parameters +041001 +pCO2 +Pa +3 +0 +18 +Pa +3 +6 +Operational + + +1689 +41 +Oceanographic/biogeochemical parameters +041002 +Fluorescence +kg l-1 +12 +0 +16 +kg l-1 +12 +5 +Operational + + +1690 +41 +Oceanographic/biogeochemical parameters +041003 +Dissolved nitrates +umol kg-1 +3 +0 +17 +umol kg-1 +3 +5 +Operational + + +1692 +41 +Oceanographic/biogeochemical parameters +041005 +Turbidity +NTU +2 +0 +12 +NTU +2 +4 +Operational + + +1694 +42 +Oceanographic elements +042001 +Dominant swell wave direction of spectral partition +deg +0 +0 +9 +deg +0 +3 +Operational + + +1695 +42 +Oceanographic elements +042002 +Significant swell wave height of spectral partition +m +1 +0 +9 +m +1 +3 +Operational + + +1696 +42 +Oceanographic elements +042003 +Dominant swell wavelength of spectral partition +m +2 +100 +17 +m +2 +6 +Operational + + +1697 +42 +Oceanographic elements +042004 +Confidence of inversion for each partition of swell wave spectra +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1698 +42 +Oceanographic elements +042005 +Ambiguity removal factor for swell wave partition +Numeric +5 +-100000 +18 +Numeric +5 +6 +Operational + + +1699 +42 +Oceanographic elements +042006 +Wave age +Numeric +2 +1 +8 +Numeric +2 +3 +Operational + + +1700 +42 +Oceanographic elements +042007 +Shortest ocean wavelength on spectral resolution +m +2 +0 +16 +m +2 +5 +Operational + + +1701 +42 +Oceanographic elements +042008 +Nonlinear inverse spectral width +m +2 +0 +16 +m +2 +5 +Operational + + +1702 +42 +Oceanographic elements +042009 +Bin partition reference +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1703 +42 +Oceanographic elements +042010 +Partition number +Numeric +0 +1 +4 +Numeric +0 +2 +Operational + + +1704 +42 +Oceanographic elements +042011 +a1 coefficient of the directional Fourier series +Numeric +4 +-20000 +15 +Numeric +4 +6 +Operational + + +1705 +42 +Oceanographic elements +042012 +b1 coefficient of the directional Fourier series +Numeric +4 +-20000 +15 +Numeric +4 +6 +Operational + + +1706 +42 +Oceanographic elements +042013 +a2 coefficient of the directional Fourier series +Numeric +4 +-20000 +15 +Numeric +4 +6 +Operational + + +1707 +42 +Oceanographic elements +042014 +b2 coefficient of the directional Fourier series +Numeric +4 +-20000 +15 +Numeric +4 +6 +Operational + + +1708 +42 +Oceanographic elements +042015 +Check factor K +Numeric +2 +0 +12 +Numeric +2 +4 +Operational + + diff --git a/bufr/src/main/resources/resources/bufrTables/wmo/BUFRCREX_37_0_0_CodeFlag_en.xml b/bufr/src/main/resources/resources/bufrTables/wmo/BUFRCREX_37_0_0_CodeFlag_en.xml new file mode 100644 index 0000000000..7390a591c1 --- /dev/null +++ b/bufr/src/main/resources/resources/bufrTables/wmo/BUFRCREX_37_0_0_CodeFlag_en.xml @@ -0,0 +1,43070 @@ + + + +1 +001003 +WMO Region number/geographical area +0 +Antarctica +Operational + + +2 +001003 +WMO Region number/geographical area +1 +Region I +Operational + + +3 +001003 +WMO Region number/geographical area +2 +Region II +Operational + + +4 +001003 +WMO Region number/geographical area +3 +Region III +Operational + + +5 +001003 +WMO Region number/geographical area +4 +Region IV +Operational + + +6 +001003 +WMO Region number/geographical area +5 +Region V +Operational + + +7 +001003 +WMO Region number/geographical area +6 +Region VI +Operational + + +8 +001003 +WMO Region number/geographical area +7 +Missing value +Operational + + +9 +001007 +Satellite identifier +Operational + + +10 +001024 +Wind speed source +0 +No wind speed data available +Operational + + +11 +001024 +Wind speed source +1 +AMSR-E data +Operational + + +12 +001024 +Wind speed source +2 +TMI data +Operational + + +13 +001024 +Wind speed source +3 +NWP: ECMWF +Operational + + +14 +001024 +Wind speed source +4 +NWP: UK Met Office +Operational + + +15 +001024 +Wind speed source +5 +NWP: NCEP +Operational + + +16 +001024 +Wind speed source +6 +Reference climatology +Operational + + +17 +001024 +Wind speed source +7 +ERS_scatterometer +Operational + + +18 +001024 +Wind speed source +8-30 +Reserved for future use +Operational + + +19 +001024 +Wind speed source +31 +Missing value +Operational + + +20 +001028 +Aerosol optical depth (AOD) source +0 +No AOD data available +Operational + + +21 +001028 +Aerosol optical depth (AOD) source +1 +NESDIS +Operational + + +22 +001028 +Aerosol optical depth (AOD) source +2 +NAVOCEANO +Operational + + +23 +001028 +Aerosol optical depth (AOD) source +3 +NAAPS +Operational + + +24 +001028 +Aerosol optical depth (AOD) source +4 +MERIS +Operational + + +25 +001028 +Aerosol optical depth (AOD) source +5 +AATSR +Operational + + +26 +001028 +Aerosol optical depth (AOD) source +6-30 +Reserved for future use +Operational + + +27 +001028 +Aerosol optical depth (AOD) source +31 +Missing value +Operational + + +28 +001029 +SSI source +0 +No SSI data available +Operational + + +29 +001029 +SSI source +1 +MSG_SEVIRI +Operational + + +30 +001029 +SSI source +2 +GOES East +Operational + + +31 +001029 +SSI source +3 +GOES West +Operational + + +32 +001029 +SSI source +4 +ECMWF +Operational + + +33 +001029 +SSI source +5 +NCEP +Operational + + +34 +001029 +SSI source +6 +UK Met Office +Operational + + +35 +001029 +SSI source +7-30 +Reserved for future use +Operational + + +36 +001029 +SSI source +31 +Missing value +Operational + + +37 +001031 +Identification of originating/generating centre +(See Common Code table C–1 in Part C/c.) +Operational + + +38 +001033 +Identification of originating/generating centre +(See Common Code table C–1 in Part C/c.) +Operational + + +39 +001034 +Identification of originating/generating sub-centre +(To be defined by centres themselves - See Common Code table C-12 in Part C/c.) +Operational + + +40 +001035 +Originating/generating centre +(See Common Code table C-11 in Part C/c.) +Operational + + +41 +001036 +Agency in charge of operating the observing platform +0-36000 +Reserved +Operational + + +42 +001036 +Agency in charge of operating the observing platform +36001 +Australia, Bureau of Meteorology (BoM) +Operational + + +43 +001036 +Agency in charge of operating the observing platform +36002 +Australia, Joint Australian Facility for Ocean Observing Systems (JAFOOS) +Operational + + +44 +001036 +Agency in charge of operating the observing platform +36003 +Australia, the Commonwealth Scientific and Industrial Research Organization (CSIRO) +Operational + + +45 +001036 +Agency in charge of operating the observing platform +36004-124000 +Reserved +Operational + + +46 +001036 +Agency in charge of operating the observing platform +124001 +Canada, Marine Environmental Data Service (MEDS) +Operational + + +47 +001036 +Agency in charge of operating the observing platform +124002 +Canada, Institute of Ocean Sciences (IOS) +Operational + + +48 +001036 +Agency in charge of operating the observing platform +124003-124172 +Reserved +Operational + + +49 +001036 +Agency in charge of operating the observing platform +124173 +Canada, Environment Canada +Operational + + +50 +001036 +Agency in charge of operating the observing platform +124174 +Canada, Department of National Defence +Operational + + +51 +001036 +Agency in charge of operating the observing platform +124175 +Canada, Nav Canada +Operational + + +52 +001036 +Agency in charge of operating the observing platform +124176-156000 +Reserved +Operational + + +53 +001036 +Agency in charge of operating the observing platform +156001 +China, The State Oceanic Administration +Operational + + +54 +001036 +Agency in charge of operating the observing platform +156002 +China, Second Institute of Oceanography, State Oceanic Administration +Operational + + +55 +001036 +Agency in charge of operating the observing platform +156003 +China, Institute of Ocean Technology +Operational + + +56 +001036 +Agency in charge of operating the observing platform +156004-250000 +Reserved +Operational + + +57 +001036 +Agency in charge of operating the observing platform +250001 +France, Institut de Recherche pour le Développement (IRD) +Operational + + +58 +001036 +Agency in charge of operating the observing platform +250002 +France, Institut Français de Recherche pour l'Exploitation de la mer (IFREMER) +Operational + + +59 +001036 +Agency in charge of operating the observing platform +250003-276000 +Reserved +Operational + + +60 +001036 +Agency in charge of operating the observing platform +276001 +Germany, Bundesamt fuer Seeschiffahrt und Hydrographie (BSH) +Operational + + +61 +001036 +Agency in charge of operating the observing platform +276002 +Germany, Institut fuer Meereskunde, Kiel +Operational + + +62 +001036 +Agency in charge of operating the observing platform +276003-356000 +Reserved +Operational + + +63 +001036 +Agency in charge of operating the observing platform +356001 +India, National Institute of Oceanography (NIO) +Operational + + +64 +001036 +Agency in charge of operating the observing platform +356002 +India, National Institute for Ocean Technology (NIOT) +Operational + + +65 +001036 +Agency in charge of operating the observing platform +356003 +India, National Centre for Ocean Information Service +Operational + + +66 +001036 +Agency in charge of operating the observing platform +356004-392000 +Reserved +Operational + + +67 +001036 +Agency in charge of operating the observing platform +392001 +Japan, Japan Meteorological Agency (JMA) +Operational + + +68 +001036 +Agency in charge of operating the observing platform +392002 +Japan, Frontier Observational Research System for Global Change +Operational + + +69 +001036 +Agency in charge of operating the observing platform +392003 +Japan, Japan Marine Science and Technology Centre (JAMSTEC) +Operational + + +70 +001036 +Agency in charge of operating the observing platform +392004-410000 +Reserved +Operational + + +71 +001036 +Agency in charge of operating the observing platform +410001 +Republic of Korea, Seoul National University +Operational + + +72 +001036 +Agency in charge of operating the observing platform +410002 +Republic of Korea, Korea Ocean Research and Development Institute (KORDI) +Operational + + +73 +001036 +Agency in charge of operating the observing platform +410003 +Republic of Korea, Meteorological Research Institute +Operational + + +74 +001036 +Agency in charge of operating the observing platform +410004-540000 +Reserved +Operational + + +75 +001036 +Agency in charge of operating the observing platform +540001 +New Caledonia, Institut de Recherche pour le Développement (IRD) +Operational + + +76 +001036 +Agency in charge of operating the observing platform +540002-554000 +Reserved +Operational + + +77 +001036 +Agency in charge of operating the observing platform +554001 +New Zealand, National Institute of Water and Atmospheric Research (NIWA) +Operational + + +78 +001036 +Agency in charge of operating the observing platform +554002-643000 +Reserved +Operational + + +79 +001036 +Agency in charge of operating the observing platform +643001 +Russian Federation, State Oceanographic Institute of Roshydromet +Operational + + +80 +001036 +Agency in charge of operating the observing platform +643002 +Russian Federation, Federal Service for Hydrometeorology and Environmental Monitoring +Operational + + +81 +001036 +Agency in charge of operating the observing platform +643003-724000 +Reserved +Operational + + +82 +001036 +Agency in charge of operating the observing platform +724001 +Spain, Instituto Español de Oceanografia +Operational + + +83 +001036 +Agency in charge of operating the observing platform +724002-826000 +Reserved +Operational + + +84 +001036 +Agency in charge of operating the observing platform +826001 +United Kingdom, Hydrographic Office +Operational + + +85 +001036 +Agency in charge of operating the observing platform +826002 +United Kingdom, Southampton Oceanography Centre (SOC) +Operational + + +86 +001036 +Agency in charge of operating the observing platform +826003-840000 +Reserved +Operational + + +87 +001036 +Agency in charge of operating the observing platform +840001 +USA, NOAA Atlantic Oceanographic and Meteorological Laboratories (AOML) +Operational + + +88 +001036 +Agency in charge of operating the observing platform +840002 +USA, NOAA Pacific Marine Environmental Laboratories (PMEL) +Operational + + +89 +001036 +Agency in charge of operating the observing platform +840003 +USA, Scripps Institution of Oceanography (SIO) +Operational + + +90 +001036 +Agency in charge of operating the observing platform +840004 +USA, Woods Hole Oceanographic Institution (WHOI) +Operational + + +91 +001036 +Agency in charge of operating the observing platform +840005 +USA, University of Washington +Operational + + +92 +001036 +Agency in charge of operating the observing platform +840006 +USA, Naval Oceanographic Office +Operational + + +93 +001036 +Agency in charge of operating the observing platform +840007-1048574 +Reserved +Operational + + +94 +001036 +Agency in charge of operating the observing platform +1048575 +Missing value +Operational + + +95 +001038 +Source of sea ice fraction +0 +No sea ice set +Operational + + +96 +001038 +Source of sea ice fraction +1 +NSIDC SSM/I Cavalieri et al (1992) +Operational + + +97 +001038 +Source of sea ice fraction +2 +AMSR-E +Operational + + +98 +001038 +Source of sea ice fraction +3 +ECMWF +Operational + + +99 +001038 +Source of sea ice fraction +4 +CMS (France) cloud mask used by Medspiration +Operational + + +100 +001038 +Source of sea ice fraction +5 +EUMETSAT OSI-SAF +Operational + + +101 +001038 +Source of sea ice fraction +6-30 +Reserved for future use +Operational + + +102 +001038 +Source of sea ice fraction +31 +Missing value +Operational + + +103 +001044 +Standard generating application +0 +Reserved +Operational + + +104 +001044 +Standard generating application +1 +Full weighted mixture of individual quality tests +Operational + + +105 +001044 +Standard generating application +2 +Weighted mixture of individual tests, but excluding forecast comparison +Operational + + +106 +001044 +Standard generating application +3 +Recursive filter function +Operational + + +107 +001044 +Standard generating application +4 +Common quality index (QI) without forecast +Operational + + +108 +001044 +Standard generating application +5 +QI without forecast +Operational + + +109 +001044 +Standard generating application +6 +QI with forecast +Operational + + +110 +001044 +Standard generating application +7 +Estimated error in m/s converted to a percent confidence +Operational + + +111 +001044 +Standard generating application +8-254 +Reserved +Operational + + +112 +001044 +Standard generating application +255 +Missing value +Operational + + +113 +001052 +Platform transmitter ID +0 +Primary +Operational + + +114 +001052 +Platform transmitter ID +1 +Secondary +Operational + + +115 +001052 +Platform transmitter ID +2 +Reserved +Operational + + +116 +001052 +Platform transmitter ID +3 +Missing value +Operational + + +117 +001090 +Technique for making up initial perturbations +0 +Lagged-average forecasting (LAF) +Operational + + +118 +001090 +Technique for making up initial perturbations +1 +Breeding +Operational + + +119 +001090 +Technique for making up initial perturbations +2 +Singular vectors +Operational + + +120 +001090 +Technique for making up initial perturbations +3 +Multiple analysis cycles +Operational + + +121 +001090 +Technique for making up initial perturbations +4-191 +Reserved +Operational + + +122 +001090 +Technique for making up initial perturbations +192-254 +Reserved for local use +Operational + + +123 +001090 +Technique for making up initial perturbations +255 +Missing value +Operational + + +124 +001092 +Type of ensemble forecast +0 +Unperturbed high-resolution control forecast +Operational + + +125 +001092 +Type of ensemble forecast +1 +Unperturbed low-resolution control forecast +Operational + + +126 +001092 +Type of ensemble forecast +2 +Negatively perturbed forecast +Operational + + +127 +001092 +Type of ensemble forecast +3 +Positively perturbed forecast +Operational + + +128 +001092 +Type of ensemble forecast +4 +Perturbed forecast +Operational + + +129 +001092 +Type of ensemble forecast +5-191 +Reserved +Operational + + +130 +001092 +Type of ensemble forecast +192-254 +Reserved for local use +Operational + + +131 +001092 +Type of ensemble forecast +255 +Missing value +Operational + + +132 +001101 +State identifier +0-99 +Reserved +Operational + + +133 +001101 +State identifier +100 +Algeria +Operational + + +134 +001101 +State identifier +101 +Angola +Operational + + +135 +001101 +State identifier +102 +Benin +Operational + + +136 +001101 +State identifier +103 +Botswana +Operational + + +137 +001101 +State identifier +104 +Burkina Faso +Operational + + +138 +001101 +State identifier +105 +Burundi +Operational + + +139 +001101 +State identifier +106 +Cameroon +Operational + + +140 +001101 +State identifier +107 +Cabo Verde +Operational + + +141 +001101 +State identifier +108 +Central African Republic +Operational + + +142 +001101 +State identifier +109 +Chad +Operational + + +143 +001101 +State identifier +110 +Comoros +Operational + + +144 +001101 +State identifier +111 +Congo +Operational + + +145 +001101 +State identifier +112 +Côte d'Ivoire +Operational + + +146 +001101 +State identifier +113 +Democratic Republic of the Congo +Operational + + +147 +001101 +State identifier +114 +Djibouti +Operational + + +148 +001101 +State identifier +115 +Egypt +Operational + + +149 +001101 +State identifier +116 +Eritrea +Operational + + +150 +001101 +State identifier +117 +Ethiopia +Operational + + +151 +001101 +State identifier +118 +France (RA I) +Operational + + +152 +001101 +State identifier +119 +Gabon +Operational + + +153 +001101 +State identifier +120 +Gambia +Operational + + +154 +001101 +State identifier +121 +Ghana +Operational + + +155 +001101 +State identifier +122 +Guinea +Operational + + +156 +001101 +State identifier +123 +Guinea-Bissau +Operational + + +157 +001101 +State identifier +124 +Kenya +Operational + + +158 +001101 +State identifier +125 +Lesotho +Operational + + +159 +001101 +State identifier +126 +Liberia +Operational + + +160 +001101 +State identifier +127 +Libya +Operational + + +161 +001101 +State identifier +128 +Madagascar +Operational + + +162 +001101 +State identifier +129 +Malawi +Operational + + +163 +001101 +State identifier +130 +Mali +Operational + + +164 +001101 +State identifier +131 +Mauritania +Operational + + +165 +001101 +State identifier +132 +Mauritius +Operational + + +166 +001101 +State identifier +133 +Morocco +Operational + + +167 +001101 +State identifier +134 +Mozambique +Operational + + +168 +001101 +State identifier +135 +Namibia +Operational + + +169 +001101 +State identifier +136 +Niger +Operational + + +170 +001101 +State identifier +137 +Nigeria +Operational + + +171 +001101 +State identifier +138 +Portugal (RA I) +Operational + + +172 +001101 +State identifier +139 +Rwanda +Operational + + +173 +001101 +State identifier +140 +Sao Tome and Principe +Operational + + +174 +001101 +State identifier +141 +Senegal +Operational + + +175 +001101 +State identifier +142 +Seychelles +Operational + + +176 +001101 +State identifier +143 +Sierra Leone +Operational + + +177 +001101 +State identifier +144 +Somalia +Operational + + +178 +001101 +State identifier +145 +South Africa +Operational + + +179 +001101 +State identifier +146 +Spain (RA I) +Operational + + +180 +001101 +State identifier +147 +Sudan +Operational + + +181 +001101 +State identifier +148 +Eswatini +Operational + + +182 +001101 +State identifier +149 +Togo +Operational + + +183 +001101 +State identifier +150 +Tunisia +Operational + + +184 +001101 +State identifier +151 +Uganda +Operational + + +185 +001101 +State identifier +152 +United Kingdom of Great Britain and Northern Ireland (RA I) +Operational + + +186 +001101 +State identifier +153 +United Republic of Tanzania +Operational + + +187 +001101 +State identifier +154 +Zambia +Operational + + +188 +001101 +State identifier +155 +Zimbabwe +Operational + + +189 +001101 +State identifier +156-199 +Reserved for Region I (Africa) +Operational + + +190 +001101 +State identifier +200 +Afghanistan +Operational + + +191 +001101 +State identifier +201 +Bahrain +Operational + + +192 +001101 +State identifier +202 +Bangladesh +Operational + + +193 +001101 +State identifier +203 +Bhutan +Operational + + +194 +001101 +State identifier +204 +Cambodia +Operational + + +195 +001101 +State identifier +205 +China +Operational + + +196 +001101 +State identifier +206 +Democratic People's Republic of Korea +Operational + + +197 +001101 +State identifier +207 +Hong Kong, China +Operational + + +198 +001101 +State identifier +208 +India +Operational + + +199 +001101 +State identifier +209 +Iran, Islamic Republic of +Operational + + +200 +001101 +State identifier +210 +Iraq +Operational + + +201 +001101 +State identifier +211 +Japan +Operational + + +202 +001101 +State identifier +212 +Kazakhstan +Operational + + +203 +001101 +State identifier +213 +Kuwait +Operational + + +204 +001101 +State identifier +214 +Kyrgyzstan +Operational + + +205 +001101 +State identifier +215 +Lao People's Democratic Republic +Operational + + +206 +001101 +State identifier +216 +Macao, China +Operational + + +207 +001101 +State identifier +217 +Maldives +Operational + + +208 +001101 +State identifier +218 +Mongolia +Operational + + +209 +001101 +State identifier +219 +Myanmar +Operational + + +210 +001101 +State identifier +220 +Nepal +Operational + + +211 +001101 +State identifier +221 +Oman +Operational + + +212 +001101 +State identifier +222 +Pakistan +Operational + + +213 +001101 +State identifier +223 +Qatar +Operational + + +214 +001101 +State identifier +224 +Republic of Korea +Operational + + +215 +001101 +State identifier +225 +Yemen +Operational + + +216 +001101 +State identifier +226 +Russian Federation (RA II) +Operational + + +217 +001101 +State identifier +227 +Saudi Arabia +Operational + + +218 +001101 +State identifier +228 +Sri Lanka +Operational + + +219 +001101 +State identifier +229 +Tajikistan +Operational + + +220 +001101 +State identifier +230 +Thailand +Operational + + +221 +001101 +State identifier +231 +Turkmenistan +Operational + + +222 +001101 +State identifier +232 +United Arab Emirates +Operational + + +223 +001101 +State identifier +233 +Uzbekistan +Operational + + +224 +001101 +State identifier +234 +Viet Nam +Operational + + +225 +001101 +State identifier +235-299 +Reserved for Region II (Asia) +Operational + + +226 +001101 +State identifier +300 +Argentina +Operational + + +227 +001101 +State identifier +301 +Bolivia (Plurinational State of) +Operational + + +228 +001101 +State identifier +302 +Brazil +Operational + + +229 +001101 +State identifier +303 +Chile +Operational + + +230 +001101 +State identifier +304 +Colombia +Operational + + +231 +001101 +State identifier +305 +Ecuador +Operational + + +232 +001101 +State identifier +306 +France (RA III) +Operational + + +233 +001101 +State identifier +307 +Guyana +Operational + + +234 +001101 +State identifier +308 +Paraguay +Operational + + +235 +001101 +State identifier +309 +Peru +Operational + + +236 +001101 +State identifier +310 +Suriname +Operational + + +237 +001101 +State identifier +311 +Uruguay +Operational + + +238 +001101 +State identifier +312 +Venezuela (Bolivarian Republic of) +Operational + + +239 +001101 +State identifier +313-399 +Reserved for Region III (South America) +Operational + + +240 +001101 +State identifier +400 +Antigua and Barbuda +Operational + + +241 +001101 +State identifier +401 +Bahamas +Operational + + +242 +001101 +State identifier +402 +Barbados +Operational + + +243 +001101 +State identifier +403 +Belize +Operational + + +244 +001101 +State identifier +404 +British Caribbean Territories +Operational + + +245 +001101 +State identifier +405 +Canada +Operational + + +246 +001101 +State identifier +406 +Colombia +Operational + + +247 +001101 +State identifier +407 +Costa Rica +Operational + + +248 +001101 +State identifier +408 +Cuba +Operational + + +249 +001101 +State identifier +409 +Dominica +Operational + + +250 +001101 +State identifier +410 +Dominican Republic +Operational + + +251 +001101 +State identifier +411 +El Salvador +Operational + + +252 +001101 +State identifier +412 +France (RA IV) +Operational + + +253 +001101 +State identifier +413 +Guatemala +Operational + + +254 +001101 +State identifier +414 +Haiti +Operational + + +255 +001101 +State identifier +415 +Honduras +Operational + + +256 +001101 +State identifier +416 +Jamaica +Operational + + +257 +001101 +State identifier +417 +Mexico +Operational + + +258 +001101 +State identifier +418 +Curaçao and Sint Maarten +Operational + + +259 +001101 +State identifier +419 +Nicaragua +Operational + + +260 +001101 +State identifier +420 +Panama +Operational + + +261 +001101 +State identifier +421 +Saint Lucia +Operational + + +262 +001101 +State identifier +422 +Trinidad and Tobago +Operational + + +263 +001101 +State identifier +423 +United Kingdom of Great Britain and Northern Ireland (RA IV) +Operational + + +264 +001101 +State identifier +424 +United States of America (RA IV) +Operational + + +265 +001101 +State identifier +425 +Venezuela (Bolivarian Republic of) +Operational + + +266 +001101 +State identifier +426-499 +Reserved for Region IV (North America, Central America and the Caribbean) +Operational + + +267 +001101 +State identifier +500 +Australia +Operational + + +268 +001101 +State identifier +501 +Brunei Darussalam +Operational + + +269 +001101 +State identifier +502 +Cook Islands +Operational + + +270 +001101 +State identifier +503 +Fiji +Operational + + +271 +001101 +State identifier +504 +French Polynesia +Operational + + +272 +001101 +State identifier +505 +Indonesia +Operational + + +273 +001101 +State identifier +506 +Kiribati +Operational + + +274 +001101 +State identifier +507 +Malaysia +Operational + + +275 +001101 +State identifier +508 +Micronesia, Federated States of +Operational + + +276 +001101 +State identifier +509 +New Caledonia +Operational + + +277 +001101 +State identifier +510 +New Zealand +Operational + + +278 +001101 +State identifier +511 +Niue +Operational + + +279 +001101 +State identifier +512 +Papua New Guinea +Operational + + +280 +001101 +State identifier +513 +Philippines +Operational + + +281 +001101 +State identifier +514 +Samoa +Operational + + +282 +001101 +State identifier +515 +Singapore +Operational + + +283 +001101 +State identifier +516 +Solomon Islands +Operational + + +284 +001101 +State identifier +517 +Tonga +Operational + + +285 +001101 +State identifier +518 +United Kingdom of Great Britain and Northern Ireland (RA V) +Operational + + +286 +001101 +State identifier +519 +United States of America (RA V) +Operational + + +287 +001101 +State identifier +520 +Vanuatu +Operational + + +288 +001101 +State identifier +521-599 +Reserved for Region V (South-West Pacific) +Operational + + +289 +001101 +State identifier +600 +Albania +Operational + + +290 +001101 +State identifier +601 +Armenia +Operational + + +291 +001101 +State identifier +602 +Austria +Operational + + +292 +001101 +State identifier +603 +Azerbaijan +Operational + + +293 +001101 +State identifier +604 +Belarus +Operational + + +294 +001101 +State identifier +605 +Belgium +Operational + + +295 +001101 +State identifier +606 +Bosnia and Herzegovina +Operational + + +296 +001101 +State identifier +607 +Bulgaria +Operational + + +297 +001101 +State identifier +608 +Croatia +Operational + + +298 +001101 +State identifier +609 +Cyprus +Operational + + +299 +001101 +State identifier +610 +Czechia +Operational + + +300 +001101 +State identifier +611 +Denmark +Operational + + +301 +001101 +State identifier +612 +Estonia +Operational + + +302 +001101 +State identifier +613 +Finland +Operational + + +303 +001101 +State identifier +614 +France (RA VI) +Operational + + +304 +001101 +State identifier +615 +Georgia +Operational + + +305 +001101 +State identifier +616 +Germany +Operational + + +306 +001101 +State identifier +617 +Greece +Operational + + +307 +001101 +State identifier +618 +Hungary +Operational + + +308 +001101 +State identifier +619 +Iceland +Operational + + +309 +001101 +State identifier +620 +Ireland +Operational + + +310 +001101 +State identifier +621 +Israel +Operational + + +311 +001101 +State identifier +622 +Italy +Operational + + +312 +001101 +State identifier +623 +Jordan +Operational + + +313 +001101 +State identifier +624 +Kazakhstan +Operational + + +314 +001101 +State identifier +625 +Latvia +Operational + + +315 +001101 +State identifier +626 +Lebanon +Operational + + +316 +001101 +State identifier +627 +Lithuania +Operational + + +317 +001101 +State identifier +628 +Luxembourg +Operational + + +318 +001101 +State identifier +629 +Malta +Operational + + +319 +001101 +State identifier +630 +Monaco +Operational + + +320 +001101 +State identifier +631 +Montenegro +Operational + + +321 +001101 +State identifier +632 +Netherlands +Operational + + +322 +001101 +State identifier +633 +Norway +Operational + + +323 +001101 +State identifier +634 +Poland +Operational + + +324 +001101 +State identifier +635 +Portugal (RA VI) +Operational + + +325 +001101 +State identifier +636 +Republic of Moldova +Operational + + +326 +001101 +State identifier +637 +Romania +Operational + + +327 +001101 +State identifier +638 +Russian Federation (RA VI) +Operational + + +328 +001101 +State identifier +639 +Serbia +Operational + + +329 +001101 +State identifier +640 +Slovakia +Operational + + +330 +001101 +State identifier +641 +Slovenia +Operational + + +331 +001101 +State identifier +642 +Spain (RA VI) +Operational + + +332 +001101 +State identifier +643 +Sweden +Operational + + +333 +001101 +State identifier +644 +Switzerland +Operational + + +334 +001101 +State identifier +645 +Syrian Arab Republic +Operational + + +335 +001101 +State identifier +646 +The former Yugoslav Republic of Macedonia +Operational + + +336 +001101 +State identifier +647 +Turkey +Operational + + +337 +001101 +State identifier +648 +Ukraine +Operational + + +338 +001101 +State identifier +649 +United Kingdom of Great Britain and Northern Ireland (RA VI) +Operational + + +339 +001101 +State identifier +650-699 +Reserved for Region VI (Europe) +Operational + + +340 +001101 +State identifier +700-999 +Reserved +Operational + + +341 +001101 +State identifier +1000-1022 +Not used +Operational + + +342 +001101 +State identifier +1023 +Missing value +Operational + + +343 +001150 +Coordinate reference system +0 +WGS84, as used by ICAO since 1998 +Operational + + +344 +001150 +Coordinate reference system +1 +ETRS89, as defined by EPSG:4258 +Operational + + +345 +001150 +Coordinate reference system +2 +NAD83, as defined by EPSG:4269 +Operational + + +346 +001150 +Coordinate reference system +3 +DHDN, as defined by EPSG:4314 +Operational + + +347 +001150 +Coordinate reference system +4 +Ellipsoidal datum using the International Reference Meridian and the International Reference Pole as the prime meridian and prime pole, respectively, and the origin of the International Terrestrial Reference System (ITRS) (see Note 2). The International Reference Meridian, International Reference Pole and ITRS are maintained by the International Earth Rotation and Reference Systems Service (IERS) +Operational + + +348 +001150 +Coordinate reference system +5 +Earth-centered, earth-fixed (ECEF) coordinate system or Earth-centred rotational (ECR) system. This is a right-handed Cartesian coordinate system (X, Y, Z) rotating with the Earth. The origin is defined by the centre of mass of the Earth. (Footnote (5) of class 27 does not apply if ECEF coordinates are specified.) +Operational + + +349 +001150 +Coordinate reference system +6-65534 +Reserved +Operational + + +350 +001150 +Coordinate reference system +65535 +Missing value +Operational + + +351 +001151 +Fixed mean sea-level reference datum +0 +Earth Gravitational Model 1996 +Operational + + +352 +001151 +Fixed mean sea-level reference datum +1 +Baltic height system 1977 +Operational + + +353 +001151 +Fixed mean sea-level reference datum +2-4094 +Reserved +Operational + + +354 +001151 +Fixed mean sea-level reference datum +4095 +Missing value +Operational + + +355 +001155 +Retrieval identifier +0 +Standard Correct Algorithm +Operational + + +356 +001155 +Retrieval identifier +1-254 +Reserved +Operational + + +357 +001155 +Retrieval identifier +255 +Missing value +Operational + + +358 +002001 +Type of station +0 +Automatic +Operational + + +359 +002001 +Type of station +1 +Manned +Operational + + +360 +002001 +Type of station +2 +Hybrid: both manned and automatic +Operational + + +361 +002001 +Type of station +3 +Missing value +Operational + + +362 +002002 +Type of instrumentation for wind measurement +1 +Certified instruments +Operational + + +363 +002002 +Type of instrumentation for wind measurement +2 +Originally measured in knots +Operational + + +364 +002002 +Type of instrumentation for wind measurement +3 +Originally measured in km h-1 +Operational + + +365 +002002 +Type of instrumentation for wind measurement +All 4 +Missing value +Operational + + +366 +002003 +Type of measuring equipment used +0 +Pressure instrument associated with wind measuring equipment +Operational + + +367 +002003 +Type of measuring equipment used +1 +Optical theodolite +Operational + + +368 +002003 +Type of measuring equipment used +2 +Radio theodolite +Operational + + +369 +002003 +Type of measuring equipment used +3 +Radar +Operational + + +370 +002003 +Type of measuring equipment used +4 +VLF-Omega +Operational + + +371 +002003 +Type of measuring equipment used +5 +Loran C +Operational + + +372 +002003 +Type of measuring equipment used +6 +Wind profiler +Operational + + +373 +002003 +Type of measuring equipment used +7 +Satellite navigation +Operational + + +374 +002003 +Type of measuring equipment used +8 +Radio-acoustic Sounding System (RASS) +Operational + + +375 +002003 +Type of measuring equipment used +9 +Sodar +Operational + + +376 +002003 +Type of measuring equipment used +10 +Lidar +Operational + + +377 +002003 +Type of measuring equipment used +11-13 +Reserved +Operational + + +378 +002003 +Type of measuring equipment used +14 +Pressure instrument associated with wind measuring equipment but pressure element failed during ascent +Operational + + +379 +002003 +Type of measuring equipment used +15 +Missing value +Operational + + +380 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +0 +USA open pan evaporimeter (without cover) +Evaporation +Operational + + +381 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +1 +USA open pan evaporimeter (mesh covered) +Evaporation +Operational + + +382 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +2 +GGI-3000 evaporimeter (sunken) +Evaporation +Operational + + +383 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +3 +20 m2 tank +Evaporation +Operational + + +384 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +4 +Others +Evaporation +Operational + + +385 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +5 +Rice +Evapotranspiration +Operational + + +386 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +6 +Wheat +Evapotranspiration +Operational + + +387 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +7 +Maize +Evapotranspiration +Operational + + +388 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +8 +Sorghum +Evapotranspiration +Operational + + +389 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +9 +Other crops +Evapotranspiration +Operational + + +390 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +10-14 +Reserved +Operational + + +391 +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +15 +Missing value +Operational + + +392 +002006 +Upper Air Remote Sensing Instrument Type +0 +Reserved +Operational + + +393 +002006 +Upper Air Remote Sensing Instrument Type +1 +Elastic backscatter lidar +Operational + + +394 +002006 +Upper Air Remote Sensing Instrument Type +2 +Raman backscatter lidar +Operational + + +395 +002006 +Upper Air Remote Sensing Instrument Type +3 +Radar wind profiler +Operational + + +396 +002006 +Upper Air Remote Sensing Instrument Type +4 +Lidar wind profiler +Operational + + +397 +002006 +Upper Air Remote Sensing Instrument Type +5 +Sodar wind profiler +Operational + + +398 +002006 +Upper Air Remote Sensing Instrument Type +6 +Wind profiler +Operational + + +399 +002006 +Upper Air Remote Sensing Instrument Type +7 +Lidar +Operational + + +400 +002006 +Upper Air Remote Sensing Instrument Type +8-62 +Reserved +Operational + + +401 +002006 +Upper Air Remote Sensing Instrument Type +63 +Missing value +Operational + + +402 +002007 +Type of sensor for water level measuring instrument +0 +Reserved +Operational + + +403 +002007 +Type of sensor for water level measuring instrument +1 +Shaft encoder float system +Operational + + +404 +002007 +Type of sensor for water level measuring instrument +2 +Ultrasonic +Operational + + +405 +002007 +Type of sensor for water level measuring instrument +3 +Radar +Operational + + +406 +002007 +Type of sensor for water level measuring instrument +4 +Pressure (single transducer) +Operational + + +407 +002007 +Type of sensor for water level measuring instrument +5 +Pressure (multiple transducer) +Operational + + +408 +002007 +Type of sensor for water level measuring instrument +6 +Pressure (in stilling well) +Operational + + +409 +002007 +Type of sensor for water level measuring instrument +7 +Bubbler pressure +Operational + + +410 +002007 +Type of sensor for water level measuring instrument +8 +Acoustic (with sounding tube) +Operational + + +411 +002007 +Type of sensor for water level measuring instrument +9 +Acoustic (in open air) +Operational + + +412 +002007 +Type of sensor for water level measuring instrument +10-62 +Reserved +Operational + + +413 +002007 +Type of sensor for water level measuring instrument +63 +Missing value +Operational + + +414 +002008 +Type of offshore platform +0 +Fixed platform +Operational + + +415 +002008 +Type of offshore platform +1 +Mobile offshore drill ship +Operational + + +416 +002008 +Type of offshore platform +2 +Jack-up rig +Operational + + +417 +002008 +Type of offshore platform +3 +Semi-submersible platform +Operational + + +418 +002008 +Type of offshore platform +4 +Floating production storage and offloading (FPSO) unit +Operational + + +419 +002008 +Type of offshore platform +5 +Light vessel +Operational + + +420 +002008 +Type of offshore platform +6-14 +Reserved +Operational + + +421 +002008 +Type of offshore platform +15 +Missing value +Operational + + +422 +002011 +Radiosonde type +Operational + + +423 +002012 +Radiosonde computational method +Operational + + +424 +002013 +Solar and infrared radiation correction +0 +No correction +Operational + + +425 +002013 +Solar and infrared radiation correction +1 +CIMO solar corrected and CIMO infrared corrected +Operational + + +426 +002013 +Solar and infrared radiation correction +2 +CIMO solar corrected and infrared corrected +Operational + + +427 +002013 +Solar and infrared radiation correction +3 +CIMO solar corrected only +Operational + + +428 +002013 +Solar and infrared radiation correction +4 +Solar and infrared corrected automatically by radiosonde system +Operational + + +429 +002013 +Solar and infrared radiation correction +5 +Solar corrected automatically by radiosonde system +Operational + + +430 +002013 +Solar and infrared radiation correction +6 +Solar and infrared corrected as specified by country +Operational + + +431 +002013 +Solar and infrared radiation correction +7 +Solar corrected as specified by country +Operational + + +432 +002013 +Solar and infrared radiation correction +8 +Solar and infrared corrected as specified by GRUAN +Operational + + +433 +002013 +Solar and infrared radiation correction +9 +Solar corrected as specified by GRUAN +Operational + + +434 +002013 +Solar and infrared radiation correction +10-14 +Reserved +Operational + + +435 +002013 +Solar and infrared radiation correction +15 +Missing value +Operational + + +436 +002014 +Tracking technique/status of system used +Operational + + +437 +002015 +Radiosonde completeness +0 +Reserved +Operational + + +438 +002015 +Radiosonde completeness +1 +Pressure only radiosonde +Operational + + +439 +002015 +Radiosonde completeness +2 +Pressure only radiosonde plus transponder +Operational + + +440 +002015 +Radiosonde completeness +3 +Pressure only radiosonde plus radar reflector +Operational + + +441 +002015 +Radiosonde completeness +4 +No-pressure radiosonde plus transponder +Operational + + +442 +002015 +Radiosonde completeness +5 +No-pressure radiosonde plus radar reflector +Operational + + +443 +002015 +Radiosonde completeness +6-14 +Reserved +Operational + + +444 +002015 +Radiosonde completeness +15 +Missing value +Operational + + +445 +002016 +Radiosonde configuration +1 +Train regulator +Operational + + +446 +002016 +Radiosonde configuration +2 +Light unit +Operational + + +447 +002016 +Radiosonde configuration +3 +Parachute +Operational + + +448 +002016 +Radiosonde configuration +4 +Rooftop release +Operational + + +449 +002016 +Radiosonde configuration +All 5 +Missing value +Operational + + +450 +002017 +Correction algorithms for humidity measurements +0 +No corrections +Operational + + +451 +002017 +Correction algorithms for humidity measurements +1 +Time lag correction provided by the manufacturer +Operational + + +452 +002017 +Correction algorithms for humidity measurements +2 +Solar radiation correction provided by the manufacturer +Operational + + +453 +002017 +Correction algorithms for humidity measurements +3 +Solar radiation and time lag correction provided by the manufacturer +Operational + + +454 +002017 +Correction algorithms for humidity measurements +4-6 +Reserved +Operational + + +455 +002017 +Correction algorithms for humidity measurements +7 +GRUAN solar radiation and time lag correction +Operational + + +456 +002017 +Correction algorithms for humidity measurements +8-30 +Reserved +Operational + + +457 +002017 +Correction algorithms for humidity measurements +31 +Missing value +Operational + + +458 +002019 +Satellite instruments +Operational + + +459 +002020 +Satellite classification +0 +Nimbus +Operational + + +460 +002020 +Satellite classification +1 +VTPR +Operational + + +461 +002020 +Satellite classification +2 +Tiros 1 (Tiros, NOAA-6 to NOAA-13) +Operational + + +462 +002020 +Satellite classification +3 +Tiros 2 (NOAA-14 onwards) +Operational + + +463 +002020 +Satellite classification +10 +EOS +Operational + + +464 +002020 +Satellite classification +20 +GPM-core +Operational + + +465 +002020 +Satellite classification +31 +DMSP +Operational + + +466 +002020 +Satellite classification +61 +EUMETSAT Polar System (EPS) +Operational + + +467 +002020 +Satellite classification +91 +ERS +Operational + + +468 +002020 +Satellite classification +92 +Sentinel-3 +Operational + + +469 +002020 +Satellite classification +121 +ADEOS +Operational + + +470 +002020 +Satellite classification +122 +GCOM +Operational + + +471 +002020 +Satellite classification +241 +GOES +Operational + + +472 +002020 +Satellite classification +261 +JASON +Operational + + +473 +002020 +Satellite classification +271 +GMS +Operational + + +474 +002020 +Satellite classification +272 +MTSAT +Operational + + +475 +002020 +Satellite classification +273 +Himawari +Operational + + +476 +002020 +Satellite classification +281 +COMS +Operational + + +477 +002020 +Satellite classification +301 +INSAT +Operational + + +478 +002020 +Satellite classification +331 +METEOSAT Operational Programme (MOP) +Operational + + +479 +002020 +Satellite classification +332 +METEOSAT Transitional Programme (MTP) +Operational + + +480 +002020 +Satellite classification +333 +METEOSAT Second Generation Programme (MSG) +Operational + + +481 +002020 +Satellite classification +351 +GOMS +Operational + + +482 +002020 +Satellite classification +380 +FY-1 +Operational + + +483 +002020 +Satellite classification +381 +FY-2 +Operational + + +484 +002020 +Satellite classification +382 +FY-3 +Operational + + +485 +002020 +Satellite classification +383 +FY-4 +Operational + + +486 +002020 +Satellite classification +384-400 +Reserved +Operational + + +487 +002020 +Satellite classification +401 +GPS +Operational + + +488 +002020 +Satellite classification +402 +GLONASS +Operational + + +489 +002020 +Satellite classification +403 +GALILEO +Operational + + +490 +002020 +Satellite classification +404 +BDS (BeiDou navigation satellite system) +Operational + + +491 +002020 +Satellite classification +405-510 +Reserved +Operational + + +492 +002020 +Satellite classification +511 +Missing value +Operational + + +493 +002021 +Satellite instrument data used in processing +1 +High-resolution infrared sounder (HIRS) +Operational + + +494 +002021 +Satellite instrument data used in processing +2 +Microwave sounding unit (MSU) +Operational + + +495 +002021 +Satellite instrument data used in processing +3 +Stratospheric sounding unit (SSU) +Operational + + +496 +002021 +Satellite instrument data used in processing +4 +AMI (advanced microwave instrument) wind mode +Operational + + +497 +002021 +Satellite instrument data used in processing +5 +AMI (advanced microwave instrument) wave mode +Operational + + +498 +002021 +Satellite instrument data used in processing +6 +AMI (advanced microwave instrument) image mode +Operational + + +499 +002021 +Satellite instrument data used in processing +7 +Radar altimeter +Operational + + +500 +002021 +Satellite instrument data used in processing +8 +ATSR (along-track scanning radiometer) +Operational + + +501 +002021 +Satellite instrument data used in processing +All 9 +Missing value +Operational + + +502 +002022 +Satellite data-processing technique used +1 +Processing technique not defined +Operational + + +503 +002022 +Satellite data-processing technique used +2 +Automated statistical regression +Operational + + +504 +002022 +Satellite data-processing technique used +3 +Clear path +Operational + + +505 +002022 +Satellite data-processing technique used +4 +Partly cloudy path +Operational + + +506 +002022 +Satellite data-processing technique used +5 +Cloudy path +Operational + + +507 +002022 +Satellite data-processing technique used +6-7 +Reserved +Operational + + +508 +002022 +Satellite data-processing technique used +All 8 +Missing value +Operational + + +509 +002023 +Satellite-derived wind computation method +0 +Reserved +Operational + + +510 +002023 +Satellite-derived wind computation method +1 +Wind derived from cloud motion observed in the infrared channel +Operational + + +511 +002023 +Satellite-derived wind computation method +2 +Wind derived from cloud motion observed in the visible channel +Operational + + +512 +002023 +Satellite-derived wind computation method +3 +Wind derived from cloud motion observed in the water vapour channel +Operational + + +513 +002023 +Satellite-derived wind computation method +4 +Wind derived from motion observed in a combination of spectral channels +Operational + + +514 +002023 +Satellite-derived wind computation method +5 +Wind derived from motion observed in the water vapour channel in clear air +Operational + + +515 +002023 +Satellite-derived wind computation method +6 +Wind derived from motion observed in the ozone channel +Operational + + +516 +002023 +Satellite-derived wind computation method +7 +Wind derived from motion observed in water vapour channel (cloud or clear air not specified) +Operational + + +517 +002023 +Satellite-derived wind computation method +8-12 +Reserved +Operational + + +518 +002023 +Satellite-derived wind computation method +13 +Root-mean-square +Operational + + +519 +002023 +Satellite-derived wind computation method +14 +Reserved +Operational + + +520 +002023 +Satellite-derived wind computation method +15 +Missing value +Operational + + +521 +002024 +Integrated mean humidity computational method +0 +Reserved +Operational + + +522 +002024 +Integrated mean humidity computational method +1 +Table with full range of humidity variation in layer +Operational + + +523 +002024 +Integrated mean humidity computational method +2 +Regression technique on 2 humidity values in layer +Operational + + +524 +002024 +Integrated mean humidity computational method +3-14 +Reserved +Operational + + +525 +002024 +Integrated mean humidity computational method +15 +Missing value +Operational + + +526 +002025 +Satellite channel(s) used in computation +1 +Reserved +Operational + + +527 +002025 +Satellite channel(s) used in computation +Group 1 - Layer precipitable water for the layers: surface to 700 hPa, 700 to 500 hPa, and 500 to 300 hPa +Operational + + +528 +002025 +Satellite channel(s) used in computation +2 +HIRS +Operational + + +529 +002025 +Satellite channel(s) used in computation +3 +MSU +Operational + + +530 +002025 +Satellite channel(s) used in computation +4-5 +Reserved +Operational + + +531 +002025 +Satellite channel(s) used in computation +Group 2 - Tropopause temperature and pressure +Operational + + +532 +002025 +Satellite channel(s) used in computation +6 +HIRS +Operational + + +533 +002025 +Satellite channel(s) used in computation +7 +MSU +Operational + + +534 +002025 +Satellite channel(s) used in computation +8-9 +Reserved +Operational + + +535 +002025 +Satellite channel(s) used in computation +Group 3 - Total ozone +Operational + + +536 +002025 +Satellite channel(s) used in computation +10 +HIRS (1, 2, 3, 8, 9, 16, 17) +Operational + + +537 +002025 +Satellite channel(s) used in computation +11 +HIRS (1, 2, 3, 9, 17) +Operational + + +538 +002025 +Satellite channel(s) used in computation +12 +MSU +Operational + + +539 +002025 +Satellite channel(s) used in computation +13-14 +Reserved +Operational + + +540 +002025 +Satellite channel(s) used in computation +Group 4 - Mean temperature for the layers: surface to 850 hPa, 850 to 700 hPa, 700 to 500 hPa, 500 to 400 hPa, 400 to 300 hPa, 300 to 200 hPa, and 200 to 100 hPa +Operational + + +541 +002025 +Satellite channel(s) used in computation +15 +HIRS +Operational + + +542 +002025 +Satellite channel(s) used in computation +16 +HIRS +Operational + + +543 +002025 +Satellite channel(s) used in computation +17 +MSU +Operational + + +544 +002025 +Satellite channel(s) used in computation +18 +SKINTK (ocean only) +Operational + + +545 +002025 +Satellite channel(s) used in computation +19-20 +Reserved +Operational + + +546 +002025 +Satellite channel(s) used in computation +Group 5 - Channel combinations used to obtain mean temperatures for the layers 100 to 70 hPa, 70 to 50 hPa, 50 to 30 hPa, 30 to 10 hPa, 10 to 5 hPa, 5 to 2 hPa, 2 to 1 hPa, 1 to 0.4 hPa +Operational + + +547 +002025 +Satellite channel(s) used in computation +21 +HIRS +Operational + + +548 +002025 +Satellite channel(s) used in computation +22 +SSU +Operational + + +549 +002025 +Satellite channel(s) used in computation +23 +MSU (3, 4) +Operational + + +550 +002025 +Satellite channel(s) used in computation +24 +Reserved +Operational + + +551 +002025 +Satellite channel(s) used in computation +All 25 +Missing value +Operational + + +552 +002030 +Method of current measurement +0 +Reserved +Operational + + +553 +002030 +Method of current measurement +1 +ADCP (Acoustic Doppler Current Profiler) +Operational + + +554 +002030 +Method of current measurement +2 +GEK (Geomagnetic ElectroKinetograph) +Operational + + +555 +002030 +Method of current measurement +3 +Ship's set and drift determined by fixes 3-6 hours apart +Operational + + +556 +002030 +Method of current measurement +4 +Ship's set and drift determined by fixes more than 6 hours but less than 12 hours apart +Operational + + +557 +002030 +Method of current measurement +5 +Drift of buoy +Operational + + +558 +002030 +Method of current measurement +6 +ADCP (Acoustic Doppler Current Profiler) +Operational + + +559 +002030 +Method of current measurement +7 +Missing value +Operational + + +560 +002031 +Duration and time of current measurement +0 +Reserved +Operational + + +561 +002031 +Duration and time of current measurement +1 +Instantaneous +between H - 1 and H +Operational + + +562 +002031 +Duration and time of current measurement +2 +Averaged over 3 min or less +between H - 1 and H +Operational + + +563 +002031 +Duration and time of current measurement +3 +Averaged over more than 3 min, but 6 min at the most +between H - 1 and H +Operational + + +564 +002031 +Duration and time of current measurement +4 +Averaged over more than 6 min, but 12 min at the most +between H - 1 and H +Operational + + +565 +002031 +Duration and time of current measurement +5 +Instantaneous +between H - 2 and H - 1 +Operational + + +566 +002031 +Duration and time of current measurement +6 +Averaged over 3 min or less +between H - 2 and H - 1 +Operational + + +567 +002031 +Duration and time of current measurement +7 +Averaged over more than 3 min, but 6 min at the most +between H - 2 and H - 1 +Operational + + +568 +002031 +Duration and time of current measurement +8 +Averaged over more than 6 min, but 12 min at the most +between H - 2 and H - 1 +Operational + + +569 +002031 +Duration and time of current measurement +9 +Vector or Doppler current profiling method not used +Operational + + +570 +002031 +Duration and time of current measurement +10 +Reserved +Operational + + +571 +002031 +Duration and time of current measurement +11 +1 hour or less +Operational + + +572 +002031 +Duration and time of current measurement +12 +More than 1 hour but 2 hours at the most +Operational + + +573 +002031 +Duration and time of current measurement +13 +More than 2 hours but 4 hours at the most +Operational + + +574 +002031 +Duration and time of current measurement +14 +More than 4 hours but 8 hours at the most +Operational + + +575 +002031 +Duration and time of current measurement +15 +More than 8 hours but 12 hours at the most +Operational + + +576 +002031 +Duration and time of current measurement +16 +More than 12 hours but 18 hours at the most +Operational + + +577 +002031 +Duration and time of current measurement +17 +More than 18 hours but 24 hours at the most +Operational + + +578 +002031 +Duration and time of current measurement +18 +Reserved +Operational + + +579 +002031 +Duration and time of current measurement +19 +Drift method not used +Operational + + +580 +002031 +Duration and time of current measurement +20-30 +Reserved +Operational + + +581 +002031 +Duration and time of current measurement +31 +Missing value +Operational + + +582 +002032 +Indicator for digitization +0 +Values at selected depths (data points fixed by the instrument or selected by any other method) +Operational + + +583 +002032 +Indicator for digitization +1 +Values at selected depths (data points taken from traces at significant depths) +Operational + + +584 +002032 +Indicator for digitization +2 +Reserved +Operational + + +585 +002032 +Indicator for digitization +3 +Missing value +Operational + + +586 +002033 +Method of salinity/depth measurement +0 +No salinity measured +Operational + + +587 +002033 +Method of salinity/depth measurement +1 +In situ sensor, accuracy better than 0.02 0/00 +Operational + + +588 +002033 +Method of salinity/depth measurement +2 +In situ sensor, accuracy less than 0.02 0/00 +Operational + + +589 +002033 +Method of salinity/depth measurement +3 +Sample analysis +Operational + + +590 +002033 +Method of salinity/depth measurement +4-6 +Reserved +Operational + + +591 +002033 +Method of salinity/depth measurement +7 +Missing value +Operational + + +592 +002034 +Drogue type +0 +Unspecified drogue +Operational + + +593 +002034 +Drogue type +1 +Holey sock +Operational + + +594 +002034 +Drogue type +2 +TRISTAR +Operational + + +595 +002034 +Drogue type +3 +Window shade +Operational + + +596 +002034 +Drogue type +4 +Parachute +Operational + + +597 +002034 +Drogue type +5 +Non-Lagrangian sea anchor +Operational + + +598 +002034 +Drogue type +6-30 +Reserved (to be developed) +Operational + + +599 +002034 +Drogue type +31 +Missing value +Operational + + +600 +002036 +Buoy type +0 +Drifting buoy +Operational + + +601 +002036 +Buoy type +1 +Fixed buoy +Operational + + +602 +002036 +Buoy type +2 +Subsurface float (moving) +Operational + + +603 +002036 +Buoy type +3 +Missing value +Operational + + +604 +002037 +Method of tidal observation +0 +Reserved +Operational + + +605 +002037 +Method of tidal observation +1 +Manual reading from vertical tide staff +Operational + + +606 +002037 +Method of tidal observation +2 +Manual reading from single automatic recorder at station +Operational + + +607 +002037 +Method of tidal observation +3 +Manual reading from multiple automatic recorders at station +Operational + + +608 +002037 +Method of tidal observation +4 +Automatic reading from single automatic recorder at station without level reference check +Operational + + +609 +002037 +Method of tidal observation +5 +Automatic reading from single automatic recorder at station with level reference check, or from multiple automatic recorders +Operational + + +610 +002037 +Method of tidal observation +6 +Reserved +Operational + + +611 +002037 +Method of tidal observation +7 +Missing value +Operational + + +612 +002038 +Method of water temperature and/or salinity measurement +0 +Ship intake +Operational + + +613 +002038 +Method of water temperature and/or salinity measurement +1 +Bucket +Operational + + +614 +002038 +Method of water temperature and/or salinity measurement +2 +Hull contact sensor +Operational + + +615 +002038 +Method of water temperature and/or salinity measurement +3 +Reversing thermometer +Operational + + +616 +002038 +Method of water temperature and/or salinity measurement +4 +STD/CTD sensor +Operational + + +617 +002038 +Method of water temperature and/or salinity measurement +5 +Mechanical BT +Operational + + +618 +002038 +Method of water temperature and/or salinity measurement +6 +Expendable BT +Operational + + +619 +002038 +Method of water temperature and/or salinity measurement +7 +Digital BT +Operational + + +620 +002038 +Method of water temperature and/or salinity measurement +8 +Thermistor chain +Operational + + +621 +002038 +Method of water temperature and/or salinity measurement +9 +Infrared scanner +Operational + + +622 +002038 +Method of water temperature and/or salinity measurement +10 +Microwave scanner +Operational + + +623 +002038 +Method of water temperature and/or salinity measurement +11 +Infrared radiometer +Operational + + +624 +002038 +Method of water temperature and/or salinity measurement +12 +In-line thermosalinograph +Operational + + +625 +002038 +Method of water temperature and/or salinity measurement +13 +Towed body +Operational + + +626 +002038 +Method of water temperature and/or salinity measurement +14 +Other +Operational + + +627 +002038 +Method of water temperature and/or salinity measurement +15 +Missing value +Operational + + +628 +002039 +Method of wet-bulb temperature measurement +0 +Measured wet-bulb temperature +Operational + + +629 +002039 +Method of wet-bulb temperature measurement +1 +Iced bulb measured wet-bulb temperature +Operational + + +630 +002039 +Method of wet-bulb temperature measurement +2 +Computed wet-bulb temperature +Operational + + +631 +002039 +Method of wet-bulb temperature measurement +3 +Iced bulb computed wet-bulb temperature +Operational + + +632 +002039 +Method of wet-bulb temperature measurement +4-6 +Reserved +Operational + + +633 +002039 +Method of wet-bulb temperature measurement +7 +Missing value +Operational + + +634 +002040 +Method of removing velocity and motion of platform from current +0 +Ship's motion removed by averaging +Ship's velocity removed by bottom tracking +Operational + + +635 +002040 +Method of removing velocity and motion of platform from current +1 +Ship's motion removed by motion compensation +Ship's velocity removed by bottom tracking +Operational + + +636 +002040 +Method of removing velocity and motion of platform from current +2 +Ship's motion not removed +Ship's velocity removed by bottom tracking +Operational + + +637 +002040 +Method of removing velocity and motion of platform from current +3 +Ship's motion removed by averaging +Ship's velocity removed by navigation +Operational + + +638 +002040 +Method of removing velocity and motion of platform from current +4 +Ship's motion removed by motion compensation +Ship's velocity removed by navigation +Operational + + +639 +002040 +Method of removing velocity and motion of platform from current +5 +Ship's motion not removed +Ship's velocity removed by navigation +Operational + + +640 +002040 +Method of removing velocity and motion of platform from current +6 +Doppler current profiling method not used +Operational + + +641 +002040 +Method of removing velocity and motion of platform from current +7-14 +Reserved +Operational + + +642 +002040 +Method of removing velocity and motion of platform from current +15 +Missing value +Operational + + +643 +002041 +Method for estimating reports related to synoptic features +0 +Information based on manual analysis +Operational + + +644 +002041 +Method for estimating reports related to synoptic features +1 +Information based on computer analysis +Operational + + +645 +002041 +Method for estimating reports related to synoptic features +2 +Information based on data assimilation +Operational + + +646 +002041 +Method for estimating reports related to synoptic features +3 +Information based on computer analysis or data assimilation manually modified +Operational + + +647 +002041 +Method for estimating reports related to synoptic features +4-9 +Reserved +Operational + + +648 +002041 +Method for estimating reports related to synoptic features +10 +Information based on the numerical weather prediction +Operational + + +649 +002041 +Method for estimating reports related to synoptic features +11-62 +Reserved for future use +Operational + + +650 +002041 +Method for estimating reports related to synoptic features +63 +Missing value +Operational + + +651 +002042 +Indicator for sea-surface current speed +0 +Value originally reported in m/s +Operational + + +652 +002042 +Indicator for sea-surface current speed +1 +Value originally reported in knots +Operational + + +653 +002042 +Indicator for sea-surface current speed +2 +No sea current data available +Operational + + +654 +002042 +Indicator for sea-surface current speed +3 +Missing value +Operational + + +655 +002044 +Indicator for method of calculating spectral wave data +0 +Reserved for future use +Operational + + +656 +002044 +Indicator for method of calculating spectral wave data +1 +Longuet-Higgins (1964) +Operational + + +657 +002044 +Indicator for method of calculating spectral wave data +2 +Longuet-Higgins (F3 method) +Operational + + +658 +002044 +Indicator for method of calculating spectral wave data +3 +Maximum likelihood method +Operational + + +659 +002044 +Indicator for method of calculating spectral wave data +4 +Maximum entropy method +Operational + + +660 +002044 +Indicator for method of calculating spectral wave data +5-14 +Reserved +Operational + + +661 +002044 +Indicator for method of calculating spectral wave data +15 +Missing value +Operational + + +662 +002045 +Indicator for type of platform +0 +Sea station +Operational + + +663 +002045 +Indicator for type of platform +1 +Automatic data buoy +Operational + + +664 +002045 +Indicator for type of platform +2 +Aircraft +Operational + + +665 +002045 +Indicator for type of platform +3 +Satellite +Operational + + +666 +002045 +Indicator for type of platform +4-14 +Reserved +Operational + + +667 +002045 +Indicator for type of platform +15 +Missing value +Operational + + +668 +002046 +Wave measurement instrumentation +0 +Reserved for future use +Operational + + +669 +002046 +Wave measurement instrumentation +1 +Heave sensor +Operational + + +670 +002046 +Wave measurement instrumentation +2 +Slope sensor +Operational + + +671 +002046 +Wave measurement instrumentation +3-14 +Reserved +Operational + + +672 +002046 +Wave measurement instrumentation +15 +Missing value +Operational + + +673 +002047 +Deep-ocean tsunameter type +0 +Reserved +Operational + + +674 +002047 +Deep-ocean tsunameter type +1 +DART II (PMEL) +Operational + + +675 +002047 +Deep-ocean tsunameter type +2 +DART ETD +Operational + + +676 +002047 +Deep-ocean tsunameter type +3 +SAIC Tsunami Buoy (STB) +Operational + + +677 +002047 +Deep-ocean tsunameter type +4 +GFZ - Potsdam +Operational + + +678 +002047 +Deep-ocean tsunameter type +5 +INCOIS (India) +Operational + + +679 +002047 +Deep-ocean tsunameter type +6 +InaBuoy (Indonesia) +Operational + + +680 +002047 +Deep-ocean tsunameter type +7 +Envirtech +Operational + + +681 +002047 +Deep-ocean tsunameter type +8-99 +Reserved +Operational + + +682 +002047 +Deep-ocean tsunameter type +100-126 +Not used +Operational + + +683 +002047 +Deep-ocean tsunameter type +127 +Missing value +Operational + + +684 +002048 +Satellite sensor indicator +0 +HIRS +Operational + + +685 +002048 +Satellite sensor indicator +1 +MSU +Operational + + +686 +002048 +Satellite sensor indicator +2 +SSU +Operational + + +687 +002048 +Satellite sensor indicator +3 +AMSU-A +Operational + + +688 +002048 +Satellite sensor indicator +4 +AMSU-B +Operational + + +689 +002048 +Satellite sensor indicator +5 +AVHRR +Operational + + +690 +002048 +Satellite sensor indicator +6 +SSMI +Operational + + +691 +002048 +Satellite sensor indicator +7 +NSCAT +Operational + + +692 +002048 +Satellite sensor indicator +8 +SEAWINDS +Operational + + +693 +002048 +Satellite sensor indicator +9 +POSEIDON altimeter +Operational + + +694 +002048 +Satellite sensor indicator +10 +JMR (JASON Microwave Radiometer) +Operational + + +695 +002048 +Satellite sensor indicator +11 +MHS +Operational + + +696 +002048 +Satellite sensor indicator +12 +ASCAT +Operational + + +697 +002048 +Satellite sensor indicator +13 +OSCAT2 +Operational + + +698 +002048 +Satellite sensor indicator +14 +Reserved +Operational + + +699 +002048 +Satellite sensor indicator +15 +Missing value +Operational + + +700 +002049 +Geostationary satellite data-processing technique used +1 +Processing technique not defined +Operational + + +701 +002049 +Geostationary satellite data-processing technique used +2 +Simultaneous physical retrieval +Operational + + +702 +002049 +Geostationary satellite data-processing technique used +3 +Clear sounding +Operational + + +703 +002049 +Geostationary satellite data-processing technique used +4 +Cloudy sounding +Operational + + +704 +002049 +Geostationary satellite data-processing technique used +5-7 +Reserved for future use +Operational + + +705 +002049 +Geostationary satellite data-processing technique used +All 8 +Missing value +Operational + + +706 +002050 +Geostationary sounder satellite channels used +1 +1 +14.71 +Operational + + +707 +002050 +Geostationary sounder satellite channels used +2 +2 +14.37 +Operational + + +708 +002050 +Geostationary sounder satellite channels used +3 +3 +14.06 +Operational + + +709 +002050 +Geostationary sounder satellite channels used +4 +4 +13.64 +Operational + + +710 +002050 +Geostationary sounder satellite channels used +5 +5 +13.37 +Operational + + +711 +002050 +Geostationary sounder satellite channels used +6 +6 +12.66 +Operational + + +712 +002050 +Geostationary sounder satellite channels used +7 +7 +12.02 +Operational + + +713 +002050 +Geostationary sounder satellite channels used +8 +8 +11.03 +Operational + + +714 +002050 +Geostationary sounder satellite channels used +9 +9 +9.71 +Operational + + +715 +002050 +Geostationary sounder satellite channels used +10 +10 +7.43 +Operational + + +716 +002050 +Geostationary sounder satellite channels used +11 +11 +7.02 +Operational + + +717 +002050 +Geostationary sounder satellite channels used +12 +12 +6.51 +Operational + + +718 +002050 +Geostationary sounder satellite channels used +13 +13 +4.57 +Operational + + +719 +002050 +Geostationary sounder satellite channels used +14 +14 +4.52 +Operational + + +720 +002050 +Geostationary sounder satellite channels used +15 +15 +4.45 +Operational + + +721 +002050 +Geostationary sounder satellite channels used +16 +16 +4.13 +Operational + + +722 +002050 +Geostationary sounder satellite channels used +17 +17 +3.98 +Operational + + +723 +002050 +Geostationary sounder satellite channels used +18 +18 +3.74 +Operational + + +724 +002050 +Geostationary sounder satellite channels used +19 +19 +0.969 +Operational + + +725 +002050 +Geostationary sounder satellite channels used +All 20 +Missing value +Operational + + +726 +002051 +Indicator to specify observing method for extreme temperatures +0 +Reserved +Operational + + +727 +002051 +Indicator to specify observing method for extreme temperatures +1 +Maximum/minimum thermometers +Operational + + +728 +002051 +Indicator to specify observing method for extreme temperatures +2 +Automated instruments +Operational + + +729 +002051 +Indicator to specify observing method for extreme temperatures +3 +Thermograph +Operational + + +730 +002051 +Indicator to specify observing method for extreme temperatures +4-14 +Reserved +Operational + + +731 +002051 +Indicator to specify observing method for extreme temperatures +15 +Missing value +Operational + + +732 +002052 +Geostationary imager satellite channels used +1 +1 +0.55 - 0.75 +Operational + + +733 +002052 +Geostationary imager satellite channels used +2 +2 +3.9 +Operational + + +734 +002052 +Geostationary imager satellite channels used +3 +3 +6.7 +Operational + + +735 +002052 +Geostationary imager satellite channels used +4 +4 +10.7 +Operational + + +736 +002052 +Geostationary imager satellite channels used +5 +5 +12.0 +Operational + + +737 +002052 +Geostationary imager satellite channels used +All 6 +Missing value +Operational + + +738 +002053 +GOES-I/M brightness temperature characteristics +0 +Observed brightness temperature +Operational + + +739 +002053 +GOES-I/M brightness temperature characteristics +1 +Brightness temperature with bias correction applied +Operational + + +740 +002053 +GOES-I/M brightness temperature characteristics +2 +Brightness temperature calculated from first guess +Operational + + +741 +002053 +GOES-I/M brightness temperature characteristics +3 +Brightness temperature calculated from sounding +Operational + + +742 +002053 +GOES-I/M brightness temperature characteristics +4-14 +Reserved +Operational + + +743 +002053 +GOES-I/M brightness temperature characteristics +15 +Missing value +Operational + + +744 +002054 +GOES-I/M soundings parameter characteristics +0 +Parameter derived using observed sounder brightness temperatures +Operational + + +745 +002054 +GOES-I/M soundings parameter characteristics +1 +Parameter derived using observed imager brightness temperatures +Operational + + +746 +002054 +GOES-I/M soundings parameter characteristics +2 +Parameter derived using first guess information +Operational + + +747 +002054 +GOES-I/M soundings parameter characteristics +3 +Parameter derived using NMC analysis information +Operational + + +748 +002054 +GOES-I/M soundings parameter characteristics +4 +Parameter derived using radiosonde information +Operational + + +749 +002054 +GOES-I/M soundings parameter characteristics +5-14 +Reserved +Operational + + +750 +002054 +GOES-I/M soundings parameter characteristics +15 +Missing value +Operational + + +751 +002055 +Geostationary soundings statistical parameters +0 +Statistics generated comparing retrieval versus radiosonde +Operational + + +752 +002055 +Geostationary soundings statistical parameters +1 +Statistics generated comparing retrieval versus first guess +Operational + + +753 +002055 +Geostationary soundings statistical parameters +2 +Statistics generated comparing radiosonde versus first guess +Operational + + +754 +002055 +Geostationary soundings statistical parameters +3 +Statistics generated comparing observed versus retrieval +Operational + + +755 +002055 +Geostationary soundings statistical parameters +4 +Statistics generated comparing observed versus first guess +Operational + + +756 +002055 +Geostationary soundings statistical parameters +5 +Statistics generated comparing radiosonde versus imager +Operational + + +757 +002055 +Geostationary soundings statistical parameters +6 +Statistics generated comparing radiosonde versus sounder +Operational + + +758 +002055 +Geostationary soundings statistical parameters +7 +Statistics generated for radiosonde +Operational + + +759 +002055 +Geostationary soundings statistical parameters +8 +Statistics generated for first guess +Operational + + +760 +002055 +Geostationary soundings statistical parameters +9-14 +Reserved +Operational + + +761 +002055 +Geostationary soundings statistical parameters +15 +Missing value +Operational + + +762 +002056 +Geostationary soundings accuracy statistics +0 +Sums of differences +Operational + + +763 +002056 +Geostationary soundings accuracy statistics +1 +Sums of squared differences +Operational + + +764 +002056 +Geostationary soundings accuracy statistics +2 +Sample size +Operational + + +765 +002056 +Geostationary soundings accuracy statistics +3 +Minimum difference +Operational + + +766 +002056 +Geostationary soundings accuracy statistics +4 +Maximum difference +Operational + + +767 +002056 +Geostationary soundings accuracy statistics +5-14 +Reserved +Operational + + +768 +002056 +Geostationary soundings accuracy statistics +15 +Missing value +Operational + + +769 +002057 +Origin of first-guess information for GOES-I/M soundings +0 +Nested Grid Model (NGM) +Operational + + +770 +002057 +Origin of first-guess information for GOES-I/M soundings +1 +Aviation Model (AVN) +Operational + + +771 +002057 +Origin of first-guess information for GOES-I/M soundings +2 +Medium Range Forecast (MRF) Model +Operational + + +772 +002057 +Origin of first-guess information for GOES-I/M soundings +3 +Global Data Assimilation System (GDAS) Forecast Model +Operational + + +773 +002057 +Origin of first-guess information for GOES-I/M soundings +4 +Prior soundings (within 3 hours of current time) +Operational + + +774 +002057 +Origin of first-guess information for GOES-I/M soundings +5 +Climatology +Operational + + +775 +002057 +Origin of first-guess information for GOES-I/M soundings +6-14 +Reserved +Operational + + +776 +002057 +Origin of first-guess information for GOES-I/M soundings +15 +Missing value +Operational + + +777 +002058 +Valid times of first-guess information for GOES-I/M soundings +0 +12 hour and 18 hour +Operational + + +778 +002058 +Valid times of first-guess information for GOES-I/M soundings +1 +18 hour and 24 hour +Operational + + +779 +002058 +Valid times of first-guess information for GOES-I/M soundings +2 +6 hour and 12 hour +Operational + + +780 +002058 +Valid times of first-guess information for GOES-I/M soundings +3 +Greater than 24 hours +Operational + + +781 +002058 +Valid times of first-guess information for GOES-I/M soundings +4-14 +Reserved +Operational + + +782 +002058 +Valid times of first-guess information for GOES-I/M soundings +15 +Missing value +Operational + + +783 +002059 +Origin of analysis information for GOES-I/M soundings +0 +NCEP Nested Grid Model (NGM) Analysis +Operational + + +784 +002059 +Origin of analysis information for GOES-I/M soundings +1 +NCEP Aviation Model (AVN) Analysis +Operational + + +785 +002059 +Origin of analysis information for GOES-I/M soundings +2 +NCEP Medium Range Forecast (MRF) Model Analysis +Operational + + +786 +002059 +Origin of analysis information for GOES-I/M soundings +3 +NCEP Global Data Assimilation System (GDAS) Forecast Model Analysis +Operational + + +787 +002059 +Origin of analysis information for GOES-I/M soundings +4-14 +Reserved +Operational + + +788 +002059 +Origin of analysis information for GOES-I/M soundings +15 +Missing value +Operational + + +789 +002060 +Origin of surface information for GOES-I/M soundings +0 +Current surface hourly reports +Operational + + +790 +002060 +Origin of surface information for GOES-I/M soundings +1 +Current ship reports +Operational + + +791 +002060 +Origin of surface information for GOES-I/M soundings +2 +Current buoy reports +Operational + + +792 +002060 +Origin of surface information for GOES-I/M soundings +3 +One hour old surface hourly reports +Operational + + +793 +002060 +Origin of surface information for GOES-I/M soundings +4 +One hour old ship reports +Operational + + +794 +002060 +Origin of surface information for GOES-I/M soundings +5 +One hour old buoy reports +Operational + + +795 +002060 +Origin of surface information for GOES-I/M soundings +6-14 +Reserved +Operational + + +796 +002060 +Origin of surface information for GOES-I/M soundings +15 +Missing value +Operational + + +797 +002061 +Aircraft navigational system +0 +Inertial navigation system +Operational + + +798 +002061 +Aircraft navigational system +1 +OMEGA +Operational + + +799 +002061 +Aircraft navigational system +2-6 +Reserved +Operational + + +800 +002061 +Aircraft navigational system +7 +Missing value +Operational + + +801 +002062 +Type of aircraft data relay system +0 +ASDAR +Operational + + +802 +002062 +Type of aircraft data relay system +1 +ASDAR (ACARS also available but not operative) +Operational + + +803 +002062 +Type of aircraft data relay system +2 +ASDAR (ACARS also available and operative) +Operational + + +804 +002062 +Type of aircraft data relay system +3 +ACARS +Operational + + +805 +002062 +Type of aircraft data relay system +4 +ACARS (ASDAR also available but not operative) +Operational + + +806 +002062 +Type of aircraft data relay system +5 +ACARS (ASDAR also available and operative) +Operational + + +807 +002062 +Type of aircraft data relay system +6-14 +Reserved +Operational + + +808 +002062 +Type of aircraft data relay system +15 +Missing value +Operational + + +809 +002064 +Aircraft roll angle quality +0 +Good +Operational + + +810 +002064 +Aircraft roll angle quality +1 +Bad +Operational + + +811 +002064 +Aircraft roll angle quality +2 +Reserved +Operational + + +812 +002064 +Aircraft roll angle quality +3 +Missing value +Operational + + +813 +002066 +Radiosonde ground receiving system +0 +InterMet IMS 2000 +Operational + + +814 +002066 +Radiosonde ground receiving system +1 +InterMet IMS 1500C +Operational + + +815 +002066 +Radiosonde ground receiving system +2 +Shanghai GTC1 +Operational + + +816 +002066 +Radiosonde ground receiving system +3 +Nanjing GTC2 +Operational + + +817 +002066 +Radiosonde ground receiving system +4 +Nanjing GFE(L)1 +Operational + + +818 +002066 +Radiosonde ground receiving system +5 +MARL-A radar +Operational + + +819 +002066 +Radiosonde ground receiving system +6 +VEKTOR-M radar +Operational + + +820 +002066 +Radiosonde ground receiving system +7-61 +Reserved +Operational + + +821 +002066 +Radiosonde ground receiving system +62 +Other +Operational + + +822 +002066 +Radiosonde ground receiving system +63 +Missing value +Operational + + +823 +002070 +Original specification of latitude/longitude +0 +Actual location in seconds +Operational + + +824 +002070 +Original specification of latitude/longitude +1 +Actual location in minutes +Operational + + +825 +002070 +Original specification of latitude/longitude +2 +Actual location in degrees +Operational + + +826 +002070 +Original specification of latitude/longitude +3 +Actual location in decidegrees +Operational + + +827 +002070 +Original specification of latitude/longitude +4 +Actual location in centidegrees +Operational + + +828 +002070 +Original specification of latitude/longitude +5 +Referenced to checkpoint in seconds +Operational + + +829 +002070 +Original specification of latitude/longitude +6 +Referenced to checkpoint in minutes +Operational + + +830 +002070 +Original specification of latitude/longitude +7 +Referenced to checkpoint in degrees +Operational + + +831 +002070 +Original specification of latitude/longitude +8 +Referenced to checkpoint in decidegrees +Operational + + +832 +002070 +Original specification of latitude/longitude +9 +Referenced to checkpoint in centidegrees +Operational + + +833 +002070 +Original specification of latitude/longitude +10 +Actual location in tenths of a minute +Operational + + +834 +002070 +Original specification of latitude/longitude +11 +Referenced to checkpoint in tenths of a minute +Operational + + +835 +002070 +Original specification of latitude/longitude +12-14 +Reserved +Operational + + +836 +002070 +Original specification of latitude/longitude +15 +Missing value +Operational + + +837 +002080 +Balloon manufacturer +0 +Kaysam +Operational + + +838 +002080 +Balloon manufacturer +1 +Totex +Operational + + +839 +002080 +Balloon manufacturer +2 +KKS +Operational + + +840 +002080 +Balloon manufacturer +3 +Guangzhou Shuangyi (China) +Operational + + +841 +002080 +Balloon manufacturer +4 +ChemChina Zhuzhou (China) +Operational + + +842 +002080 +Balloon manufacturer +5-61 +Reserved +Operational + + +843 +002080 +Balloon manufacturer +62 +Other +Operational + + +844 +002080 +Balloon manufacturer +63 +Missing value +Operational + + +845 +002081 +Type of balloon +0 +GP26 +Operational + + +846 +002081 +Type of balloon +1 +GP28 +Operational + + +847 +002081 +Type of balloon +2 +GP30 +Operational + + +848 +002081 +Type of balloon +3 +HM26 +Operational + + +849 +002081 +Type of balloon +4 +HM28 +Operational + + +850 +002081 +Type of balloon +5 +HM30 +Operational + + +851 +002081 +Type of balloon +6 +SV16 +Operational + + +852 +002081 +Type of balloon +7 +Totex TA type balloons +Operational + + +853 +002081 +Type of balloon +8 +Totex TX type balloons +Operational + + +854 +002081 +Type of balloon +9-29 +Reserved +Operational + + +855 +002081 +Type of balloon +30 +Other +Operational + + +856 +002081 +Type of balloon +31 +Missing value +Operational + + +857 +002083 +Type of balloon shelter +0 +High bay +Operational + + +858 +002083 +Type of balloon shelter +1 +Low bay +Operational + + +859 +002083 +Type of balloon shelter +2 +Balloon-inflated launch system (BILS) +Operational + + +860 +002083 +Type of balloon shelter +3 +Roof-top BILS +Operational + + +861 +002083 +Type of balloon shelter +4 +Automated unmanned sounding system +Operational + + +862 +002083 +Type of balloon shelter +5-13 +Reserved +Operational + + +863 +002083 +Type of balloon shelter +14 +Other +Operational + + +864 +002083 +Type of balloon shelter +15 +Missing value +Operational + + +865 +002084 +Type of gas used in balloon +0 +Hydrogen +Operational + + +866 +002084 +Type of gas used in balloon +1 +Helium +Operational + + +867 +002084 +Type of gas used in balloon +2 +Natural gas +Operational + + +868 +002084 +Type of gas used in balloon +3-13 +Reserved +Operational + + +869 +002084 +Type of gas used in balloon +14 +Other +Operational + + +870 +002084 +Type of gas used in balloon +15 +Missing value +Operational + + +871 +002092 +Ozone profile computation method +0 +UV channel based retrieval +Operational + + +872 +002092 +Ozone profile computation method +1 +Visible channel based retrieval +Operational + + +873 +002092 +Ozone profile computation method +2 +Combined UV based retrieval and visible based retrieval +Operational + + +874 +002092 +Ozone profile computation method +3-6 +Reserved +Operational + + +875 +002092 +Ozone profile computation method +7 +Missing value +Operational + + +876 +002095 +Type of pressure sensor +0 +Capacitance aneroid +Operational + + +877 +002095 +Type of pressure sensor +1 +Derived from GPS +Operational + + +878 +002095 +Type of pressure sensor +2 +Resistive strain gauge +Operational + + +879 +002095 +Type of pressure sensor +3 +Silicon capacitor +Operational + + +880 +002095 +Type of pressure sensor +4 +Derived from radar height +Operational + + +881 +002095 +Type of pressure sensor +5-29 +Reserved +Operational + + +882 +002095 +Type of pressure sensor +30 +Other +Operational + + +883 +002095 +Type of pressure sensor +31 +Missing value +Operational + + +884 +002096 +Type of temperature sensor +0 +Rod thermistor +Operational + + +885 +002096 +Type of temperature sensor +1 +Bead thermistor +Operational + + +886 +002096 +Type of temperature sensor +2 +Capacitance bead +Operational + + +887 +002096 +Type of temperature sensor +3 +Capacitance wire +Operational + + +888 +002096 +Type of temperature sensor +4 +Resistive sensor +Operational + + +889 +002096 +Type of temperature sensor +5 +Chip thermistor +Operational + + +890 +002096 +Type of temperature sensor +6 +Mercury +Operational + + +891 +002096 +Type of temperature sensor +7 +Alcohol/glycol +Operational + + +892 +002096 +Type of temperature sensor +8-30 +Reserved for future use +Operational + + +893 +002096 +Type of temperature sensor +31 +Missing value +Operational + + +894 +002097 +Type of humidity sensor +0 +VIZ Mark II carbon hygristor +Operational + + +895 +002097 +Type of humidity sensor +1 +VIZ B2 hygristor +Operational + + +896 +002097 +Type of humidity sensor +2 +Vaisala A-Humicap +Operational + + +897 +002097 +Type of humidity sensor +3 +Vaisala H-Humicap +Operational + + +898 +002097 +Type of humidity sensor +4 +Capacitance sensor +Operational + + +899 +002097 +Type of humidity sensor +5 +Vaisala RS90 +Operational + + +900 +002097 +Type of humidity sensor +6 +Sippican Mark IIA carbon hygristor +Operational + + +901 +002097 +Type of humidity sensor +7 +Twin alternatively heated Humicap capacitance sensor +Operational + + +902 +002097 +Type of humidity sensor +8 +Humicap capacitance sensor with active de-icing method +Operational + + +903 +002097 +Type of humidity sensor +9 +Carbon hygristor +Operational + + +904 +002097 +Type of humidity sensor +10 +Psychrometer +Operational + + +905 +002097 +Type of humidity sensor +11 +Capacitive (polymer) +Operational + + +906 +002097 +Type of humidity sensor +12 +Capacitive (ceramic, including metal oxide) +Operational + + +907 +002097 +Type of humidity sensor +13 +Resistive (generic) +Operational + + +908 +002097 +Type of humidity sensor +14 +Resistive (salt polymer) +Operational + + +909 +002097 +Type of humidity sensor +15 +Resistive (conductive polymer) +Operational + + +910 +002097 +Type of humidity sensor +16 +Thermal conductivity +Operational + + +911 +002097 +Type of humidity sensor +17 +Gravimetric +Operational + + +912 +002097 +Type of humidity sensor +18 +Paper-metal coil +Operational + + +913 +002097 +Type of humidity sensor +19 +Ordinary human hair +Operational + + +914 +002097 +Type of humidity sensor +20 +Rolled hair (torsion) +Operational + + +915 +002097 +Type of humidity sensor +21 +Goldbeater's skin +Operational + + +916 +002097 +Type of humidity sensor +22 +Chilled mirror hygrometer +Operational + + +917 +002097 +Type of humidity sensor +23 +Dew cell +Operational + + +918 +002097 +Type of humidity sensor +24 +Optical absorption sensor +Operational + + +919 +002097 +Type of humidity sensor +25-30 +Reserved for future use +Operational + + +920 +002097 +Type of humidity sensor +31 +Missing value +Operational + + +921 +002099 +Polarization +0 +HH polarization +Operational + + +922 +002099 +Polarization +1 +VV polarization +Operational + + +923 +002099 +Polarization +2 +HV polarization real valued component +Operational + + +924 +002099 +Polarization +3 +HV polarization imaginary valued component +Operational + + +925 +002099 +Polarization +4-6 +Reserved +Operational + + +926 +002099 +Polarization +7 +Missing value +Operational + + +927 +002101 +Type of antenna +0 +Centre front-fed paraboloid +Operational + + +928 +002101 +Type of antenna +1 +Offset front-fed paraboloid +Operational + + +929 +002101 +Type of antenna +2 +Centre Cassegrain paraboloid +Operational + + +930 +002101 +Type of antenna +3 +Offset Cassegrain paraboloid +Operational + + +931 +002101 +Type of antenna +4 +Planar array +Operational + + +932 +002101 +Type of antenna +5 +Coaxial-collinear array +Operational + + +933 +002101 +Type of antenna +6 +Yagi elements array +Operational + + +934 +002101 +Type of antenna +7 +Microstrip +Operational + + +935 +002101 +Type of antenna +8-13 +Reserved +Operational + + +936 +002101 +Type of antenna +14 +Other +Operational + + +937 +002101 +Type of antenna +15 +Missing value +Operational + + +938 +002103 +Radome +1 +Radar antenna is protected by a radome +Operational + + +939 +002103 +Radome +All 2 +Missing value +Operational + + +940 +002104 +Antenna polarization +0 +Horizontal polarization +Operational + + +941 +002104 +Antenna polarization +1 +Vertical polarization +Operational + + +942 +002104 +Antenna polarization +2 +Right circular polarization +Operational + + +943 +002104 +Antenna polarization +3 +Left circular polarization +Operational + + +944 +002104 +Antenna polarization +4 +Horizontal and vertical polarization +Operational + + +945 +002104 +Antenna polarization +5 +Right and left circular polarization +Operational + + +946 +002104 +Antenna polarization +6 +Quasi-horizontal polarization +Operational + + +947 +002104 +Antenna polarization +7 +Quasi-vertical polarization +Operational + + +948 +002104 +Antenna polarization +8-14 +Reserved +Operational + + +949 +002104 +Antenna polarization +15 +Missing value +Operational + + +950 +002115 +Type of surface observing equipment +0 +PDB +Operational + + +951 +002115 +Type of surface observing equipment +1 +RSOIS +Operational + + +952 +002115 +Type of surface observing equipment +2 +ASOS +Operational + + +953 +002115 +Type of surface observing equipment +3 +Psychrometer +Operational + + +954 +002115 +Type of surface observing equipment +4 +F420 +Operational + + +955 +002115 +Type of surface observing equipment +5-29 +Reserved +Operational + + +956 +002115 +Type of surface observing equipment +30 +Other +Operational + + +957 +002115 +Type of surface observing equipment +31 +Missing value +Operational + + +958 +002119 +RA-2 instrument operations +0 +Intermediate frequency calibration mode (IF CAL) +Operational + + +959 +002119 +RA-2 instrument operations +1 +Built-in test equipment digital (BITE DGT) +Operational + + +960 +002119 +RA-2 instrument operations +2 +Built-in test equipment radio frequency (BITE RF) +Operational + + +961 +002119 +RA-2 instrument operations +3 +Preset tracking (PSET TRK) +Operational + + +962 +002119 +RA-2 instrument operations +4 +Preset LOOP OUT +Operational + + +963 +002119 +RA-2 instrument operations +5 +ACQUISITION +Operational + + +964 +002119 +RA-2 instrument operations +6 +TRACKING +Operational + + +965 +002119 +RA-2 instrument operations +7 +Missing value +Operational + + +966 +002131 +Sensitivity time control (STC) +1 +STC operational +Operational + + +967 +002131 +Sensitivity time control (STC) +All 2 +Missing values +Operational + + +968 +002137 +Radar dual PRF ratio +1 +3:2 +Operational + + +969 +002137 +Radar dual PRF ratio +2 +4:3 +Operational + + +970 +002137 +Radar dual PRF ratio +3 +5:4 +Operational + + +971 +002137 +Radar dual PRF ratio +4-14 +Reserved +Operational + + +972 +002137 +Radar dual PRF ratio +15 +Missing value +Operational + + +973 +002138 +Antenna rotation direction +1 +Clockwise rotation +Operational + + +974 +002138 +Antenna rotation direction +2 +Counterclockwise rotation +Operational + + +975 +002138 +Antenna rotation direction +3 +Missing value +Operational + + +976 +002139 +SIRAL instrument configuration +0 +SIRAL nominal +Operational + + +977 +002139 +SIRAL instrument configuration +1 +SIRAL redundant +Operational + + +978 +002139 +SIRAL instrument configuration +2 +Missing value +Operational + + +979 +002143 +Ozone instrument type +0 +Reserved +Operational + + +980 +002143 +Ozone instrument type +1 +Brewer spectrophotometer +Operational + + +981 +002143 +Ozone instrument type +2 +Caver Teichert +Operational + + +982 +002143 +Ozone instrument type +3 +Dobson +Operational + + +983 +002143 +Ozone instrument type +4 +Dobson (Japan) +Operational + + +984 +002143 +Ozone instrument type +5 +Ehmet +Operational + + +985 +002143 +Ozone instrument type +6 +Fecker telescope +Operational + + +986 +002143 +Ozone instrument type +7 +Hoelper +Operational + + +987 +002143 +Ozone instrument type +8 +Jodmeter +Operational + + +988 +002143 +Ozone instrument type +9 +Filter Ozonometer M-83 +Operational + + +989 +002143 +Ozone instrument type +10 +Mast +Operational + + +990 +002143 +Ozone instrument type +11 +Oxford +Operational + + +991 +002143 +Ozone instrument type +12 +Paetzold +Operational + + +992 +002143 +Ozone instrument type +13 +Regener +Operational + + +993 +002143 +Ozone instrument type +14 +Reserved for future use +Operational + + +994 +002143 +Ozone instrument type +15 +Vassy filter ozonometer +Operational + + +995 +002143 +Ozone instrument type +16 +Carbon iodide +Operational + + +996 +002143 +Ozone instrument type +17 +Surface ozone bubbler +Operational + + +997 +002143 +Ozone instrument type +18 +Filter ozonometer M-124 +Operational + + +998 +002143 +Ozone instrument type +19 +ECC sonde +Operational + + +999 +002143 +Ozone instrument type +20-126 +Reserved +Operational + + +1000 +002143 +Ozone instrument type +127 +Missing value +Operational + + +1001 +002144 +Light source type for Brewer spectrophotometer +0 +Direct sun +Operational + + +1002 +002144 +Light source type for Brewer spectrophotometer +1 +Direct sun, attenuator #1 +Operational + + +1003 +002144 +Light source type for Brewer spectrophotometer +2 +Direct sun, attenuator #2 +Operational + + +1004 +002144 +Light source type for Brewer spectrophotometer +3 +Focused moon +Operational + + +1005 +002144 +Light source type for Brewer spectrophotometer +4 +Focused sun +Operational + + +1006 +002144 +Light source type for Brewer spectrophotometer +5 +Focused sun corrected with adjacent sky measurements +Operational + + +1007 +002144 +Light source type for Brewer spectrophotometer +6 +Zenith sky +Operational + + +1008 +002144 +Light source type for Brewer spectrophotometer +7-14 +Reserved +Operational + + +1009 +002144 +Light source type for Brewer spectrophotometer +15 +Missing value +Operational + + +1010 +002145 +Wavelength setting for Dobson instruments +0 +Wavelengths AD ordinary setting +Operational + + +1011 +002145 +Wavelength setting for Dobson instruments +1 +Wavelengths BD ordinary setting +Operational + + +1012 +002145 +Wavelength setting for Dobson instruments +2 +Wavelengths CD ordinary setting +Operational + + +1013 +002145 +Wavelength setting for Dobson instruments +3 +Wavelengths CC' ordinary setting +Operational + + +1014 +002145 +Wavelength setting for Dobson instruments +4 +Wavelengths AD focused image +Operational + + +1015 +002145 +Wavelength setting for Dobson instruments +5 +Wavelengths BD focused image +Operational + + +1016 +002145 +Wavelength setting for Dobson instruments +6 +Wavelengths CD focused image +Operational + + +1017 +002145 +Wavelength setting for Dobson instruments +7 +Wavelengths CC' focused image +Operational + + +1018 +002145 +Wavelength setting for Dobson instruments +8-14 +Reserved +Operational + + +1019 +002145 +Wavelength setting for Dobson instruments +15 +Missing value +Operational + + +1020 +002146 +Source conditions for Dobson instruments +0 +On direct sun +Operational + + +1021 +002146 +Source conditions for Dobson instruments +1 +On direct moon +Operational + + +1022 +002146 +Source conditions for Dobson instruments +2 +On blue zenith sky +Operational + + +1023 +002146 +Source conditions for Dobson instruments +3 +On zenith cloud (uniform stratified layer of small opacity) +Operational + + +1024 +002146 +Source conditions for Dobson instruments +4 +On zenith cloud (uniform or moderately variable layer of medium opacity) +Operational + + +1025 +002146 +Source conditions for Dobson instruments +5 +On zenith cloud (uniform or moderately variable layer of large opacity) +Operational + + +1026 +002146 +Source conditions for Dobson instruments +6 +On zenith cloud (highly variable opacity, with or without precipitation) +Operational + + +1027 +002146 +Source conditions for Dobson instruments +7 +On zenith cloud (fog) +Operational + + +1028 +002146 +Source conditions for Dobson instruments +8 +On zenith haze +Operational + + +1029 +002146 +Source conditions for Dobson instruments +9 +On direct sun through thin cloud, fog or haze +Operational + + +1030 +002146 +Source conditions for Dobson instruments +10-14 +Reserved +Operational + + +1031 +002146 +Source conditions for Dobson instruments +15 +Missing value +Operational + + +1032 +002147 +Method of transmission to collection centre +0 +Reserved +Operational + + +1033 +002147 +Method of transmission to collection centre +1 +Direct leased circuit +Operational + + +1034 +002147 +Method of transmission to collection centre +2 +Dialled up connection +Operational + + +1035 +002147 +Method of transmission to collection centre +3 +Internet ISP +Operational + + +1036 +002147 +Method of transmission to collection centre +4 +DCP via satellite (MTSAT, METEOSAT, etc.) +Operational + + +1037 +002147 +Method of transmission to collection centre +5 +VSAT +Operational + + +1038 +002147 +Method of transmission to collection centre +6 +GAN, BGAN +Operational + + +1039 +002147 +Method of transmission to collection centre +7 +Thiss terminal +Operational + + +1040 +002147 +Method of transmission to collection centre +8 +Iridium satellites +Operational + + +1041 +002147 +Method of transmission to collection centre +9 +Mobile telephony +Operational + + +1042 +002147 +Method of transmission to collection centre +10-62 +Reserved +Operational + + +1043 +002147 +Method of transmission to collection centre +63 +Missing value +Operational + + +1044 +002148 +Data collection and/or location system +0 +Reserved +Operational + + +1045 +002148 +Data collection and/or location system +1 +Argos +Operational + + +1046 +002148 +Data collection and/or location system +2 +GPS +Operational + + +1047 +002148 +Data collection and/or location system +3 +GOES DCP +Operational + + +1048 +002148 +Data collection and/or location system +4 +METEOSAT DCP +Operational + + +1049 +002148 +Data collection and/or location system +5 +ORBCOMM +Operational + + +1050 +002148 +Data collection and/or location system +6 +INMARSAT +Operational + + +1051 +002148 +Data collection and/or location system +7 +Iridium +Operational + + +1052 +002148 +Data collection and/or location system +8 +Iridium and GPS +Operational + + +1053 +002148 +Data collection and/or location system +9 +Argos-3 +Operational + + +1054 +002148 +Data collection and/or location system +10 +Argos-4 +Operational + + +1055 +002148 +Data collection and/or location system +11-30 +Reserved +Operational + + +1056 +002148 +Data collection and/or location system +31 +Missing value +Operational + + +1057 +002149 +Type of data buoy +0 +Unspecified drifting buoy +Operational + + +1058 +002149 +Type of data buoy +1 +Standard Lagrangian drifter (Global Drifter Programme) +Operational + + +1059 +002149 +Type of data buoy +2 +Standard FGGE type drifting buoy (non-Lagrangian meteorological drifting buoy) +Operational + + +1060 +002149 +Type of data buoy +3 +Wind measuring FGGE type drifting buoy (non-Lagrangian meteorological drifting buoy) +Operational + + +1061 +002149 +Type of data buoy +4 +Ice drifter +Operational + + +1062 +002149 +Type of data buoy +5 +SVPG Standard Lagrangian drifter with GPS +Operational + + +1063 +002149 +Type of data buoy +6 +SVP-HR drifter with high-resolution temperature or thermistor string +Operational + + +1064 +002149 +Type of data buoy +7 +Reserved +Operational + + +1065 +002149 +Type of data buoy +8 +Unspecified subsurface float +Operational + + +1066 +002149 +Type of data buoy +9 +SOFAR +Operational + + +1067 +002149 +Type of data buoy +10 +ALACE +Operational + + +1068 +002149 +Type of data buoy +11 +MARVOR +Operational + + +1069 +002149 +Type of data buoy +12 +RAFOS +Operational + + +1070 +002149 +Type of data buoy +13 +PROVOR +Operational + + +1071 +002149 +Type of data buoy +14 +SOLO +Operational + + +1072 +002149 +Type of data buoy +15 +APEX +Operational + + +1073 +002149 +Type of data buoy +16 +Unspecified moored buoy +Operational + + +1074 +002149 +Type of data buoy +17 +Nomad +Operational + + +1075 +002149 +Type of data buoy +18 +3-metre discus +Operational + + +1076 +002149 +Type of data buoy +19 +10-12-metre discus +Operational + + +1077 +002149 +Type of data buoy +20 +ODAS 30 series +Operational + + +1078 +002149 +Type of data buoy +21 +ATLAS (e.g. TAO area) +Operational + + +1079 +002149 +Type of data buoy +22 +TRITON buoy +Operational + + +1080 +002149 +Type of data buoy +23 +FLEX mooring (e.g. TIP area) +Operational + + +1081 +002149 +Type of data buoy +24 +Omnidirectional waverider +Operational + + +1082 +002149 +Type of data buoy +25 +Directional waverider +Operational + + +1083 +002149 +Type of data buoy +26 +Subsurface ARGO float +Operational + + +1084 +002149 +Type of data buoy +27 +PALACE +Operational + + +1085 +002149 +Type of data buoy +28 +NEMO +Operational + + +1086 +002149 +Type of data buoy +29 +NINJA +Operational + + +1087 +002149 +Type of data buoy +30 +Ice buoy/float (POPS or ITP) +Operational + + +1088 +002149 +Type of data buoy +31-33 +Reserved +Operational + + +1089 +002149 +Type of data buoy +34 +Mooring oceanographic +Operational + + +1090 +002149 +Type of data buoy +35 +Mooring meteorological +Operational + + +1091 +002149 +Type of data buoy +36 +Mooring multidisciplinary (OceanSITES) +Operational + + +1092 +002149 +Type of data buoy +37 +Mooring tide gauge or tsunami buoy +Operational + + +1093 +002149 +Type of data buoy +38 +Ice beacon +Operational + + +1094 +002149 +Type of data buoy +39 +Ice mass balance buoy +Operational + + +1095 +002149 +Type of data buoy +40-62 +Reserved +Operational + + +1096 +002149 +Type of data buoy +63 +Missing value +Operational + + +1097 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +0 +Reserved +Operational + + +1098 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +1 +HIRS 1 +Operational + + +1099 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +2 +HIRS 2 +Operational + + +1100 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +3 +HIRS 3 +Operational + + +1101 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +4 +HIRS 4 +Operational + + +1102 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +5 +HIRS 5 +Operational + + +1103 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +6 +HIRS 6 +Operational + + +1104 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +7 +HIRS 7 +Operational + + +1105 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +8 +HIRS 8 +Operational + + +1106 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +9 +HIRS 9 +Operational + + +1107 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +10 +HIRS 10 +Operational + + +1108 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +11 +HIRS 11 +Operational + + +1109 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +12 +HIRS 12 +Operational + + +1110 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +13 +HIRS 13 +Operational + + +1111 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +14 +HIRS 14 +Operational + + +1112 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +15 +HIRS 15 +Operational + + +1113 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +16 +HIRS 16 +Operational + + +1114 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +17 +HIRS 17 +Operational + + +1115 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +18 +HIRS 18 +Operational + + +1116 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +19 +HIRS 19 +Operational + + +1117 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +20 +HIRS 20 +Operational + + +1118 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +21 +MSU 1 +Operational + + +1119 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +22 +MSU 2 +Operational + + +1120 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +23 +MSU 3 +Operational + + +1121 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +24 +MSU 4 +Operational + + +1122 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +25 +SSU 1 +Operational + + +1123 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +26 +SSU 2 +Operational + + +1124 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +27 +SSU 3 +Operational + + +1125 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +28 +AMSU-A 1 +Operational + + +1126 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +29 +AMSU-A 2 +Operational + + +1127 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +30 +AMSU-A 3 +Operational + + +1128 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +31 +AMSU-A 4 +Operational + + +1129 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +32 +AMSU-A 5 +Operational + + +1130 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +33 +AMSU-A 6 +Operational + + +1131 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +34 +AMSU-A 7 +Operational + + +1132 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +35 +AMSU-A 8 +Operational + + +1133 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +36 +AMSU-A 9 +Operational + + +1134 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +37 +AMSU-A 10 +Operational + + +1135 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +38 +AMSU-A 11 +Operational + + +1136 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +39 +AMSU-A 12 +Operational + + +1137 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +40 +AMSU-A 13 +Operational + + +1138 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +41 +AMSU-A 14 +Operational + + +1139 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +42 +AMSU-A 15 +Operational + + +1140 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +43 +AMSU-B 1 / MHS 1 +Operational + + +1141 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +44 +AMSU-B 2 / MHS 2 +Operational + + +1142 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +45 +AMSU-B 3 / MHS 3 +Operational + + +1143 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +46 +AMSU-B 4 / MHS 4 +Operational + + +1144 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +47 +AMSU-B 5 / MHS 5 +Operational + + +1145 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +48 +AVHRR 1 +Operational + + +1146 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +49 +AVHRR 2 +Operational + + +1147 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +50 +AVHRR 3a +Operational + + +1148 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +51 +AVHRR 3b +Operational + + +1149 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +52 +AVHRR 4 +Operational + + +1150 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +53 +AVHRR 5 +Operational + + +1151 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +54-62 +Reserved +Operational + + +1152 +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +63 +Missing value +Operational + + +1153 +002151 +Radiometer identifier +0 +HIRS +Operational + + +1154 +002151 +Radiometer identifier +1 +MSU +Operational + + +1155 +002151 +Radiometer identifier +2 +SSU +Operational + + +1156 +002151 +Radiometer identifier +3 +AMSU-A1-1 +Operational + + +1157 +002151 +Radiometer identifier +4 +AMSU-A1-2 +Operational + + +1158 +002151 +Radiometer identifier +5 +AMSU-A2 +Operational + + +1159 +002151 +Radiometer identifier +6 +AMSU-B +Operational + + +1160 +002151 +Radiometer identifier +7 +AVHRR +Operational + + +1161 +002151 +Radiometer identifier +8 +Reserved +Operational + + +1162 +002151 +Radiometer identifier +9 +MHS +Operational + + +1163 +002151 +Radiometer identifier +10-2046 +Reserved +Operational + + +1164 +002151 +Radiometer identifier +2047 +Missing value +Operational + + +1165 +002152 +Satellite instrument used in data processing +1 +High-resolution infrared sounder (HIRS) +Operational + + +1166 +002152 +Satellite instrument used in data processing +2 +Microwave sounding unit (MSU) +Operational + + +1167 +002152 +Satellite instrument used in data processing +3 +Stratospheric sounding unit (SSU) +Operational + + +1168 +002152 +Satellite instrument used in data processing +4 +AMI wind mode +Operational + + +1169 +002152 +Satellite instrument used in data processing +5 +AMI wave mode +Operational + + +1170 +002152 +Satellite instrument used in data processing +6 +AMI image mode +Operational + + +1171 +002152 +Satellite instrument used in data processing +7 +RADAR altimeter +Operational + + +1172 +002152 +Satellite instrument used in data processing +8 +ATSR +Operational + + +1173 +002152 +Satellite instrument used in data processing +9 +Geostationary imager +Operational + + +1174 +002152 +Satellite instrument used in data processing +10 +Geostationary sounder +Operational + + +1175 +002152 +Satellite instrument used in data processing +11 +Geostationary Earth radiation (GERB) +Operational + + +1176 +002152 +Satellite instrument used in data processing +12 +Multi-channel scanning radiometer +Operational + + +1177 +002152 +Satellite instrument used in data processing +13 +Polar-orbiting imager +Operational + + +1178 +002152 +Satellite instrument used in data processing +14-30 +Reserved +Operational + + +1179 +002152 +Satellite instrument used in data processing +All 31 +Missing value +Operational + + +1180 +002158 +RA-2 instrument +1 +Mismatch in RED VEC HPA +Operational + + +1181 +002158 +RA-2 instrument +2 +Mismatch in RED VEC RFSS +Operational + + +1182 +002158 +RA-2 instrument +3 +PTR calibration band 320 MHz (Ku) +Operational + + +1183 +002158 +RA-2 instrument +4 +PTR calibration band 80 MHz (Ku) +Operational + + +1184 +002158 +RA-2 instrument +5 +PTR calibration band 20 MHz (Ku) +Operational + + +1185 +002158 +RA-2 instrument +6 +PTR calibration band 160 MHz (S) +Operational + + +1186 +002158 +RA-2 instrument +7 +Ku flight calibration parameters available +Operational + + +1187 +002158 +RA-2 instrument +8 +S flight calibration parameters available +Operational + + +1188 +002158 +RA-2 instrument +All 9 +Missing value +Operational + + +1189 +002159 +MWR instrument +1 +Temperature inconsistency +Operational + + +1190 +002159 +MWR instrument +2 +Data is missing +Operational + + +1191 +002159 +MWR instrument +3 +Redundancy channel +Operational + + +1192 +002159 +MWR instrument +4 +Power bus protection +Operational + + +1193 +002159 +MWR instrument +5 +Overvoltage/Overload protection +Operational + + +1194 +002159 +MWR instrument +6 +Reserved +Operational + + +1195 +002159 +MWR instrument +7 +Reserved +Operational + + +1196 +002159 +MWR instrument +All 8 +Missing value +Operational + + +1197 +002160 +Wavelength of the radar +0 +Reserved +Operational + + +1198 +002160 +Wavelength of the radar +1 +10 to less than 20 mm +Operational + + +1199 +002160 +Wavelength of the radar +2 +Reserved +Operational + + +1200 +002160 +Wavelength of the radar +3 +20 to less than 40 mm +Operational + + +1201 +002160 +Wavelength of the radar +4 +Reserved +Operational + + +1202 +002160 +Wavelength of the radar +5 +40 to less than 60 mm +Operational + + +1203 +002160 +Wavelength of the radar +6 +Reserved +Operational + + +1204 +002160 +Wavelength of the radar +7 +60 to less than 90 mm +Operational + + +1205 +002160 +Wavelength of the radar +8 +90 to less than 110 mm +Operational + + +1206 +002160 +Wavelength of the radar +9 +110 mm and greater +Operational + + +1207 +002160 +Wavelength of the radar +10-14 +Not used +Operational + + +1208 +002160 +Wavelength of the radar +15 +Missing value +Operational + + +1209 +002161 +Wind processing method +1-10 +Reserved +Operational + + +1210 +002161 +Wind processing method +11 +Wind height calculated from median cloud-top pressure of target +Operational + + +1211 +002161 +Wind processing method +12 +Target is cloudy +Operational + + +1212 +002161 +Wind processing method +13 +Low-level inversion +Operational + + +1213 +002161 +Wind processing method +14 +Cross correlation contribution (CCC) method +Operational + + +1214 +002161 +Wind processing method +15 +Nested tracking +Operational + + +1215 +002161 +Wind processing method +All 16 +Missing value +Operational + + +1216 +002162 +Extended height assignment method +0 +Auto editor +Operational + + +1217 +002162 +Extended height assignment method +1 +IRW height assignment +Operational + + +1218 +002162 +Extended height assignment method +2 +WV height assignment +Operational + + +1219 +002162 +Extended height assignment method +3 +H2O intercept height assignment +Operational + + +1220 +002162 +Extended height assignment method +4 +CO2 slicing height assignment +Operational + + +1221 +002162 +Extended height assignment method +5 +Low pixel max gradient +Operational + + +1222 +002162 +Extended height assignment method +6 +Higher pixel max gradient +Operational + + +1223 +002162 +Extended height assignment method +7 +Primary height assignment +Operational + + +1224 +002162 +Extended height assignment method +8 +Layer thickness assignment +Operational + + +1225 +002162 +Extended height assignment method +9 +Cumulative contribution function - 10 per cent height +Operational + + +1226 +002162 +Extended height assignment method +10 +Cumulative contribution function - 50 per cent height +Operational + + +1227 +002162 +Extended height assignment method +11 +Cumulative contribution function - 90 per cent height +Operational + + +1228 +002162 +Extended height assignment method +12 +Cumulative contribution function - height of maximum gradient +Operational + + +1229 +002162 +Extended height assignment method +13 +IR/two WV channel rationing method +Operational + + +1230 +002162 +Extended height assignment method +14 +Composite height assignment +Operational + + +1231 +002162 +Extended height assignment method +15 +Optimal estimation +Operational + + +1232 +002162 +Extended height assignment method +16 +Inversion correction +Operational + + +1233 +002162 +Extended height assignment method +17 +Geometric height assignment +Operational + + +1234 +002162 +Extended height assignment method +18-62 +Reserved +Operational + + +1235 +002162 +Extended height assignment method +63 +Missing value +Operational + + +1236 +002163 +Height assignment method +0 +Auto editor +Operational + + +1237 +002163 +Height assignment method +1 +IRW height assignment +Operational + + +1238 +002163 +Height assignment method +2 +WV height assignment +Operational + + +1239 +002163 +Height assignment method +3 +H2O intercept height assignment +Operational + + +1240 +002163 +Height assignment method +4 +CO2 slicing height assignment +Operational + + +1241 +002163 +Height assignment method +5 +Low pixel max gradient +Operational + + +1242 +002163 +Height assignment method +6 +Higher pixel max gradient +Operational + + +1243 +002163 +Height assignment method +7 +Primary height assignment +Operational + + +1244 +002163 +Height assignment method +8 +Layer thickness assignment +Operational + + +1245 +002163 +Height assignment method +9 +Cumulative contribution function - 10 per cent height +Operational + + +1246 +002163 +Height assignment method +10 +Cumulative contribution function - 50 per cent height +Operational + + +1247 +002163 +Height assignment method +11 +Cumulative contribution function - 90 per cent height +Operational + + +1248 +002163 +Height assignment method +12 +Cumulative contribution function - height of maximum gradient +Operational + + +1249 +002163 +Height assignment method +13 +IR / two WV channel ratioing method +Operational + + +1250 +002163 +Height assignment method +14 +Composite height assignment +Operational + + +1251 +002163 +Height assignment method +15 +Missing value +Operational + + +1252 +002164 +Tracer correlation method +0 +LP - Norms least square minimum +Operational + + +1253 +002164 +Tracer correlation method +1 +EN - Euclidean norm with radiance correlation +Operational + + +1254 +002164 +Tracer correlation method +2 +CC - Cross correlation +Operational + + +1255 +002164 +Tracer correlation method +3 +Stereo matching +Operational + + +1256 +002164 +Tracer correlation method +4-6 +Reserved +Operational + + +1257 +002164 +Tracer correlation method +7 +Missing value +Operational + + +1258 +002165 +Radiance type flags +1 +Clear path +Operational + + +1259 +002165 +Radiance type flags +2 +Partly cloudy path +Operational + + +1260 +002165 +Radiance type flags +3 +Cloudy path +Operational + + +1261 +002165 +Radiance type flags +4 +Apodized +Operational + + +1262 +002165 +Radiance type flags +5 +Unapodized +Operational + + +1263 +002165 +Radiance type flags +6 +Reconstructed +Operational + + +1264 +002165 +Radiance type flags +7 +Cloud cleared +Operational + + +1265 +002165 +Radiance type flags +8-14 +Reserved +Operational + + +1266 +002165 +Radiance type flags +All 15 +Missing value +Operational + + +1267 +002166 +Radiance type +0 +Type not defined +Operational + + +1268 +002166 +Radiance type +1 +Automated statistical regression +Operational + + +1269 +002166 +Radiance type +2 +Clear path +Operational + + +1270 +002166 +Radiance type +3 +Partly cloudy path +Operational + + +1271 +002166 +Radiance type +4 +Cloudy path +Operational + + +1272 +002166 +Radiance type +5-14 +Reserved +Operational + + +1273 +002166 +Radiance type +15 +Missing value +Operational + + +1274 +002167 +Radiance computational method +0 +Method not defined +Operational + + +1275 +002167 +Radiance computational method +1 +1b raw radiance +Operational + + +1276 +002167 +Radiance computational method +2 +Processed radiance +Operational + + +1277 +002167 +Radiance computational method +3-14 +Reserved +Operational + + +1278 +002167 +Radiance computational method +15 +Missing value +Operational + + +1279 +002169 +Anemometer type +0 +Cup rotor +Operational + + +1280 +002169 +Anemometer type +1 +Propeller rotor +Operational + + +1281 +002169 +Anemometer type +2 +Wind Observation Through Ambient Noise (WOTAN) +Operational + + +1282 +002169 +Anemometer type +3 +Sonic +Operational + + +1283 +002169 +Anemometer type +4-14 +Reserved +Operational + + +1284 +002169 +Anemometer type +15 +Missing value +Operational + + +1285 +002170 +Aircraft humidity sensors +0 +SpectraSensors WVSS-II, Version 1 +Operational + + +1286 +002170 +Aircraft humidity sensors +1 +SpectraSensors WVSS-II, Version 2 +Operational + + +1287 +002170 +Aircraft humidity sensors +2 +SpectraSensors WVSS-II, Version 3 +Operational + + +1288 +002170 +Aircraft humidity sensors +3-61 +Reserved +Operational + + +1289 +002170 +Aircraft humidity sensors +62 +Other +Operational + + +1290 +002170 +Aircraft humidity sensors +63 +Missing value +Operational + + +1291 +002172 +Product type for retrieved atmospheric gases +0 +Reserved +Operational + + +1292 +002172 +Product type for retrieved atmospheric gases +1 +Retrieval from a nadir sounding +Operational + + +1293 +002172 +Product type for retrieved atmospheric gases +2 +Retrieval from a limb sounding +Operational + + +1294 +002172 +Product type for retrieved atmospheric gases +3-254 +Reserved +Operational + + +1295 +002172 +Product type for retrieved atmospheric gases +255 +Missing value +Operational + + +1296 +002175 +Method of precipitation measurement +0 +Manual measurement +Operational + + +1297 +002175 +Method of precipitation measurement +1 +Tipping bucket method +Operational + + +1298 +002175 +Method of precipitation measurement +2 +Weighing method +Operational + + +1299 +002175 +Method of precipitation measurement +3 +Optical method +Operational + + +1300 +002175 +Method of precipitation measurement +4 +Pressure method +Operational + + +1301 +002175 +Method of precipitation measurement +5 +Float method +Operational + + +1302 +002175 +Method of precipitation measurement +6 +Drop counter method +Operational + + +1303 +002175 +Method of precipitation measurement +7-13 +Reserved +Operational + + +1304 +002175 +Method of precipitation measurement +14 +Others +Operational + + +1305 +002175 +Method of precipitation measurement +15 +Missing value +Operational + + +1306 +002176 +Method of state of ground measurement +0 +Manual observation +Operational + + +1307 +002176 +Method of state of ground measurement +1 +Video camera method +Operational + + +1308 +002176 +Method of state of ground measurement +2 +Infrared method +Operational + + +1309 +002176 +Method of state of ground measurement +3 +Laser method +Operational + + +1310 +002176 +Method of state of ground measurement +4-13 +Reserved +Operational + + +1311 +002176 +Method of state of ground measurement +14 +Others +Operational + + +1312 +002176 +Method of state of ground measurement +15 +Missing value +Operational + + +1313 +002177 +Method of snow depth measurement +0 +Manual observation +Operational + + +1314 +002177 +Method of snow depth measurement +1 +Ultrasonic method +Operational + + +1315 +002177 +Method of snow depth measurement +2 +Video camera method +Operational + + +1316 +002177 +Method of snow depth measurement +3 +Laser method +Operational + + +1317 +002177 +Method of snow depth measurement +4-13 +Reserved +Operational + + +1318 +002177 +Method of snow depth measurement +14 +Others +Operational + + +1319 +002177 +Method of snow depth measurement +15 +Missing value +Operational + + +1320 +002178 +Method of liquid content measurement of precipitation +0 +Manual observation +Operational + + +1321 +002178 +Method of liquid content measurement of precipitation +1 +Optical method +Operational + + +1322 +002178 +Method of liquid content measurement of precipitation +2 +Capacitive method +Operational + + +1323 +002178 +Method of liquid content measurement of precipitation +3-13 +Reserved +Operational + + +1324 +002178 +Method of liquid content measurement of precipitation +14 +Others +Operational + + +1325 +002178 +Method of liquid content measurement of precipitation +15 +Missing value +Operational + + +1326 +002179 +Type of sky condition algorithm +0 +Manual observation +Operational + + +1327 +002179 +Type of sky condition algorithm +1 +VAISALA algorithm +Operational + + +1328 +002179 +Type of sky condition algorithm +2 +ASOS (FAA) algorithm +Operational + + +1329 +002179 +Type of sky condition algorithm +3 +AWOS (Canada) algorithm +Operational + + +1330 +002179 +Type of sky condition algorithm +4-13 +Reserved +Operational + + +1331 +002179 +Type of sky condition algorithm +14 +Others +Operational + + +1332 +002179 +Type of sky condition algorithm +15 +Missing value +Operational + + +1333 +002180 +Main present weather detecting system +0 +Manual observation +Operational + + +1334 +002180 +Main present weather detecting system +1 +Optical scatter system combined with precipitation occurrence sensing system +Operational + + +1335 +002180 +Main present weather detecting system +2 +Forward and/or backscatter system of visible light +Operational + + +1336 +002180 +Main present weather detecting system +3 +Forward and/or backscatter system of infrared light +Operational + + +1337 +002180 +Main present weather detecting system +4 +Infrared light emitting diode (IRED) system +Operational + + +1338 +002180 +Main present weather detecting system +5 +Doppler radar system +Operational + + +1339 +002180 +Main present weather detecting system +6-13 +Reserved +Operational + + +1340 +002180 +Main present weather detecting system +14 +Others +Operational + + +1341 +002180 +Main present weather detecting system +15 +Missing value +Operational + + +1342 +002181 +Supplementary present weather sensor +1 +Rain detector +Operational + + +1343 +002181 +Supplementary present weather sensor +2 +Freezing rain sensor +Operational + + +1344 +002181 +Supplementary present weather sensor +3 +Ice detection sensor +Operational + + +1345 +002181 +Supplementary present weather sensor +4 +Hail and ice pellet sensor +Operational + + +1346 +002181 +Supplementary present weather sensor +5-19 +Reserved +Operational + + +1347 +002181 +Supplementary present weather sensor +20 +Others +Operational + + +1348 +002181 +Supplementary present weather sensor +All 21 +Missing value +Operational + + +1349 +002182 +Visibility measurement system +0 +Manual measurement +Operational + + +1350 +002182 +Visibility measurement system +1 +Transmissometer system (base > 25 m) +Operational + + +1351 +002182 +Visibility measurement system +2 +Transmissometer system (base < 25 m) +Operational + + +1352 +002182 +Visibility measurement system +3 +Forward scatter system +Operational + + +1353 +002182 +Visibility measurement system +4 +Backscatter system +Operational + + +1354 +002182 +Visibility measurement system +5-13 +Reserved +Operational + + +1355 +002182 +Visibility measurement system +14 +Others +Operational + + +1356 +002182 +Visibility measurement system +15 +Missing value +Operational + + +1357 +002183 +Cloud detection system +0 +Manual observation +Operational + + +1358 +002183 +Cloud detection system +1 +Ceilometer system +Operational + + +1359 +002183 +Cloud detection system +2 +Infrared camera system +Operational + + +1360 +002183 +Cloud detection system +3 +Microwave visual camera system +Operational + + +1361 +002183 +Cloud detection system +4 +Sky imager system +Operational + + +1362 +002183 +Cloud detection system +5 +Video time-lapsed camera system +Operational + + +1363 +002183 +Cloud detection system +6 +Micropulse lidar (MPL) system +Operational + + +1364 +002183 +Cloud detection system +7-13 +Reserved +Operational + + +1365 +002183 +Cloud detection system +14 +Others +Operational + + +1366 +002183 +Cloud detection system +15 +Missing value +Operational + + +1367 +002184 +Type of lightning detection sensor +0 +Manual observation +Operational + + +1368 +002184 +Type of lightning detection sensor +1 +Lightning imaging sensor +Operational + + +1369 +002184 +Type of lightning detection sensor +2 +Electrical storm identification sensor +Operational + + +1370 +002184 +Type of lightning detection sensor +3 +Magnetic finder sensor +Operational + + +1371 +002184 +Type of lightning detection sensor +4 +Lightning strike sensor +Operational + + +1372 +002184 +Type of lightning detection sensor +5 +Flash counter +Operational + + +1373 +002184 +Type of lightning detection sensor +6 +ATDnet VLF waveform correlated sensor +Operational + + +1374 +002184 +Type of lightning detection sensor +7-13 +Reserved +Operational + + +1375 +002184 +Type of lightning detection sensor +14 +Others +Operational + + +1376 +002184 +Type of lightning detection sensor +15 +Missing value +Operational + + +1377 +002185 +Method of evaporation measurement +0 +Manual measurement +Operational + + +1378 +002185 +Method of evaporation measurement +1 +Balanced floating method +Operational + + +1379 +002185 +Method of evaporation measurement +2 +Pressure method +Operational + + +1380 +002185 +Method of evaporation measurement +3 +Ultrasonic method +Operational + + +1381 +002185 +Method of evaporation measurement +4 +Hydraulic method +Operational + + +1382 +002185 +Method of evaporation measurement +5-13 +Reserved +Operational + + +1383 +002185 +Method of evaporation measurement +14 +Others +Operational + + +1384 +002185 +Method of evaporation measurement +15 +Missing value +Operational + + +1385 +002186 +Capability to detect precipitation phenomena +1 +Precipitation-unknown type +Operational + + +1386 +002186 +Capability to detect precipitation phenomena +2 +Liquid precipitation not freezing +Operational + + +1387 +002186 +Capability to detect precipitation phenomena +3 +Liquid freezing precipitation +Operational + + +1388 +002186 +Capability to detect precipitation phenomena +4 +Drizzle +Operational + + +1389 +002186 +Capability to detect precipitation phenomena +5 +Rain +Operational + + +1390 +002186 +Capability to detect precipitation phenomena +6 +Solid precipitation +Operational + + +1391 +002186 +Capability to detect precipitation phenomena +7 +Snow +Operational + + +1392 +002186 +Capability to detect precipitation phenomena +8 +Snow grains +Operational + + +1393 +002186 +Capability to detect precipitation phenomena +9 +Snow pellets +Operational + + +1394 +002186 +Capability to detect precipitation phenomena +10 +Ice pellets +Operational + + +1395 +002186 +Capability to detect precipitation phenomena +11 +Ice crystals +Operational + + +1396 +002186 +Capability to detect precipitation phenomena +12 +Diamond dust +Operational + + +1397 +002186 +Capability to detect precipitation phenomena +13 +Small hail +Operational + + +1398 +002186 +Capability to detect precipitation phenomena +14 +Hail +Operational + + +1399 +002186 +Capability to detect precipitation phenomena +15 +Glaze +Operational + + +1400 +002186 +Capability to detect precipitation phenomena +16 +Rime +Operational + + +1401 +002186 +Capability to detect precipitation phenomena +17 +Soft rime +Operational + + +1402 +002186 +Capability to detect precipitation phenomena +18 +Hard rime +Operational + + +1403 +002186 +Capability to detect precipitation phenomena +19 +Clear ice +Operational + + +1404 +002186 +Capability to detect precipitation phenomena +20 +Wet snow +Operational + + +1405 +002186 +Capability to detect precipitation phenomena +21 +Hoar frost +Operational + + +1406 +002186 +Capability to detect precipitation phenomena +22 +Dew +Operational + + +1407 +002186 +Capability to detect precipitation phenomena +23 +White dew +Operational + + +1408 +002186 +Capability to detect precipitation phenomena +24 +Convective precipitation +Operational + + +1409 +002186 +Capability to detect precipitation phenomena +25-29 +Reserved +Operational + + +1410 +002186 +Capability to detect precipitation phenomena +All 30 +Missing value +Operational + + +1411 +002187 +Capability to detect other weather phenomena +1 +Dust/sand whirl +Operational + + +1412 +002187 +Capability to detect other weather phenomena +2 +Squalls +Operational + + +1413 +002187 +Capability to detect other weather phenomena +3 +Sand storm +Operational + + +1414 +002187 +Capability to detect other weather phenomena +4 +Dust storm +Operational + + +1415 +002187 +Capability to detect other weather phenomena +5 +Lightning - cloud to surface +Operational + + +1416 +002187 +Capability to detect other weather phenomena +6 +Lightning - cloud to cloud +Operational + + +1417 +002187 +Capability to detect other weather phenomena +7 +Lightning - distant +Operational + + +1418 +002187 +Capability to detect other weather phenomena +8 +Thunderstorm +Operational + + +1419 +002187 +Capability to detect other weather phenomena +9 +Funnel cloud not touching surface +Operational + + +1420 +002187 +Capability to detect other weather phenomena +10 +Funnel cloud touching surface +Operational + + +1421 +002187 +Capability to detect other weather phenomena +11 +Spray +Operational + + +1422 +002187 +Capability to detect other weather phenomena +12-17 +Reserved +Operational + + +1423 +002187 +Capability to detect other weather phenomena +All 18 +Missing value +Operational + + +1424 +002188 +Capability to detect obscuration +1 +Fog +Operational + + +1425 +002188 +Capability to detect obscuration +2 +Ice fog +Operational + + +1426 +002188 +Capability to detect obscuration +3 +Steam fog +Operational + + +1427 +002188 +Capability to detect obscuration +4-6 +Reserved +Operational + + +1428 +002188 +Capability to detect obscuration +7 +Mist +Operational + + +1429 +002188 +Capability to detect obscuration +8 +Haze +Operational + + +1430 +002188 +Capability to detect obscuration +9 +Smoke +Operational + + +1431 +002188 +Capability to detect obscuration +10 +Volcanic ash +Operational + + +1432 +002188 +Capability to detect obscuration +11 +Dust +Operational + + +1433 +002188 +Capability to detect obscuration +12 +Sand +Operational + + +1434 +002188 +Capability to detect obscuration +13 +Snow +Operational + + +1435 +002188 +Capability to detect obscuration +14-20 +Reserved +Operational + + +1436 +002188 +Capability to detect obscuration +All 21 +Missing value +Operational + + +1437 +002189 +Capability to discriminate lightning strikes +1 +Manual observation +Operational + + +1438 +002189 +Capability to discriminate lightning strikes +2 +All lightning strikes without discrimination +Operational + + +1439 +002189 +Capability to discriminate lightning strikes +3 +Lightning strikes cloud to ground only +Operational + + +1440 +002189 +Capability to discriminate lightning strikes +4 +All lightning strikes with discrimination between cloud to ground and cloud to cloud +Operational + + +1441 +002189 +Capability to discriminate lightning strikes +5-11 +Reserved +Operational + + +1442 +002189 +Capability to discriminate lightning strikes +All 12 +Missing value +Operational + + +1443 +002191 +Geopotential height calculation +0 +Geopotential height calculated from pressure +Operational + + +1444 +002191 +Geopotential height calculation +1 +Geopotential height calculated from GPS height +Operational + + +1445 +002191 +Geopotential height calculation +2 +Geopotential height calculated from radar height +Operational + + +1446 +002191 +Geopotential height calculation +3-14 +Reserved +Operational + + +1447 +002191 +Geopotential height calculation +15 +Missing value +Operational + + +1448 +003001 +Surface station type +0 +Land station (synoptic network) +Operational + + +1449 +003001 +Surface station type +1 +Shallow water station (fixed to sea/lake floor) +Operational + + +1450 +003001 +Surface station type +2 +Ship +Operational + + +1451 +003001 +Surface station type +3 +Rig/platform +Operational + + +1452 +003001 +Surface station type +4 +Moored buoy +Operational + + +1453 +003001 +Surface station type +5 +Drifting buoy (or drifter) +Operational + + +1454 +003001 +Surface station type +6 +Ice buoy +Operational + + +1455 +003001 +Surface station type +7 +Land station (local network) +Operational + + +1456 +003001 +Surface station type +8 +Land vehicle +Operational + + +1457 +003001 +Surface station type +9 +Autonomous marine vehicle +Operational + + +1458 +003001 +Surface station type +10 +Tag attached to marine animal +Operational + + +1459 +003001 +Surface station type +11-30 +Reserved for future use +Operational + + +1460 +003001 +Surface station type +31 +Missing value +Operational + + +1461 +003003 +Thermometer/hygrometer housing +0 +Screen +Operational + + +1462 +003003 +Thermometer/hygrometer housing +1 +Sling/whirling +Operational + + +1463 +003003 +Thermometer/hygrometer housing +2 +Unscreened +Operational + + +1464 +003003 +Thermometer/hygrometer housing +3 +Radiation shield +Operational + + +1465 +003003 +Thermometer/hygrometer housing +4 +Aspirated (e.g. Assmann) +Operational + + +1466 +003003 +Thermometer/hygrometer housing +5 +Other shelter +Operational + + +1467 +003003 +Thermometer/hygrometer housing +6 +Handheld +Operational + + +1468 +003003 +Thermometer/hygrometer housing +7-14 +Reserved for future use +Operational + + +1469 +003003 +Thermometer/hygrometer housing +15 +Missing value +Operational + + +1470 +003004 +Type of screen/shelter/radiation shield +0 +Stevenson screen +Operational + + +1471 +003004 +Type of screen/shelter/radiation shield +1 +Marine Stevenson screen +Operational + + +1472 +003004 +Type of screen/shelter/radiation shield +2 +Cylindrical section plate shield +Operational + + +1473 +003004 +Type of screen/shelter/radiation shield +3 +Concentric tube +Operational + + +1474 +003004 +Type of screen/shelter/radiation shield +4 +Rectangular section shield +Operational + + +1475 +003004 +Type of screen/shelter/radiation shield +5 +Square section shield +Operational + + +1476 +003004 +Type of screen/shelter/radiation shield +6 +Triangular section shield +Operational + + +1477 +003004 +Type of screen/shelter/radiation shield +7 +Open covered lean-to +Operational + + +1478 +003004 +Type of screen/shelter/radiation shield +8 +Open covered inverted V roof +Operational + + +1479 +003004 +Type of screen/shelter/radiation shield +9 +Integrated (e.g. chilled mirror) +Operational + + +1480 +003004 +Type of screen/shelter/radiation shield +10-14 +Reserved for future use +Operational + + +1481 +003004 +Type of screen/shelter/radiation shield +15 +Missing value +Operational + + +1482 +003008 +Artificially ventilated screen or shield +0 +Natural ventilation in use +Operational + + +1483 +003008 +Artificially ventilated screen or shield +1 +Artificial aspiration in use: constant flow at time of reading +Operational + + +1484 +003008 +Artificially ventilated screen or shield +2 +Artificial aspiration in use: variable flow at time of reading +Operational + + +1485 +003008 +Artificially ventilated screen or shield +3-6 +Reserved +Operational + + +1486 +003008 +Artificially ventilated screen or shield +7 +Missing value +Operational + + +1487 +003010 +Method of sea/water current measurement +0 +Reserved +Operational + + +1488 +003010 +Method of sea/water current measurement +1 +ADCP +, +Operational + + +1489 +003010 +Method of sea/water current measurement +2 +GEK (Geomagnetic ElectroKinetograph) +Operational + + +1490 +003010 +Method of sea/water current measurement +3 +Ship's set and drift determined by fixes 3-6 hours apart +Operational + + +1491 +003010 +Method of sea/water current measurement +4 +Ship's set and drift determined by fixes more than 6 hours but less than 12 hours apart +Operational + + +1492 +003010 +Method of sea/water current measurement +5 +Drift of buoy +Operational + + +1493 +003010 +Method of sea/water current measurement +6 +ADCP +Operational + + +1494 +003010 +Method of sea/water current measurement +7 +ADCP bottom tracking mode +Operational + + +1495 +003010 +Method of sea/water current measurement +8 +Electromagnetic sensor +Operational + + +1496 +003010 +Method of sea/water current measurement +9 +Rotor and vane +Operational + + +1497 +003010 +Method of sea/water current measurement +10 +Lowered ADCP +Operational + + +1498 +003010 +Method of sea/water current measurement +11-14 +Reserved +Operational + + +1499 +003010 +Method of sea/water current measurement +15 +Missing value +Operational + + +1500 +003011 +Method of depth calculation +0 +Depth calculated using fall rate equation +Operational + + +1501 +003011 +Method of depth calculation +1 +Depth calculated from water pressure/equation of state +Operational + + +1502 +003011 +Method of depth calculation +2 +Reserved +Operational + + +1503 +003011 +Method of depth calculation +3 +Missing value +Operational + + +1504 +003012 +Instrument type/sensor for dissolved oxygen measurement +0 +Anderraa oxygen optode +Operational + + +1505 +003012 +Instrument type/sensor for dissolved oxygen measurement +1 +Winkler bottle +Operational + + +1506 +003012 +Instrument type/sensor for dissolved oxygen measurement +2-14 +Reserved +Operational + + +1507 +003012 +Instrument type/sensor for dissolved oxygen measurement +15 +Missing value +Operational + + +1508 +003016 +Position of road sensors +0 +Fast lane between the wheel tracks +Operational + + +1509 +003016 +Position of road sensors +1 +Fast lane between the wheel tracks in the opposite direction +Operational + + +1510 +003016 +Position of road sensors +2 +Fast lane in the wheel tracks +Operational + + +1511 +003016 +Position of road sensors +3 +Fast lane in the wheel tracks in the opposite direction +Operational + + +1512 +003016 +Position of road sensors +4 +Slow lane between the wheel tracks +Operational + + +1513 +003016 +Position of road sensors +5 +Slow lane between the wheel tracks in the opposite direction +Operational + + +1514 +003016 +Position of road sensors +6 +Slow lane in the wheel tracks +Operational + + +1515 +003016 +Position of road sensors +7 +Slow lane in the wheel tracks in the opposite direction +Operational + + +1516 +003016 +Position of road sensors +8-14 +Reserved +Operational + + +1517 +003016 +Position of road sensors +15 +Missing value +Operational + + +1518 +003017 +Extended type of station +1 +Automatic +Operational + + +1519 +003017 +Extended type of station +2 +Manned +Operational + + +1520 +003017 +Extended type of station +3 +Event triggered +Operational + + +1521 +003017 +Extended type of station +4 +Longer time period than the standard +Operational + + +1522 +003017 +Extended type of station +5 +Reserved +Operational + + +1523 +003017 +Extended type of station +All 6 +Missing value +Operational + + +1524 +003018 +Type of road +0 +Free track without further information +Operational + + +1525 +003018 +Type of road +1 +Free track, embankment +Operational + + +1526 +003018 +Type of road +2 +Free track, flat relative to surroundings +Operational + + +1527 +003018 +Type of road +3 +Free track, water basin(s) in vicinity +Operational + + +1528 +003018 +Type of road +4 +Free track, forest +Operational + + +1529 +003018 +Type of road +5 +Free track, cleft +Operational + + +1530 +003018 +Type of road +6 +Free track, on hilltop +Operational + + +1531 +003018 +Type of road +7 +Free track, on hilltop, forest +Operational + + +1532 +003018 +Type of road +8 +Free track, in valley +Operational + + +1533 +003018 +Type of road +9 +Free track, in valley, forest +Operational + + +1534 +003018 +Type of road +10 +Free track, north inclination +Operational + + +1535 +003018 +Type of road +11 +Free track, north inclination, forest +Operational + + +1536 +003018 +Type of road +12 +Free track, south inclination +Operational + + +1537 +003018 +Type of road +13 +Free track, south inclination, forest +Operational + + +1538 +003018 +Type of road +14-19 +Reserved +Operational + + +1539 +003018 +Type of road +20 +Bridge without further information +Operational + + +1540 +003018 +Type of road +21 +Bridge across a valley in an urban area +Operational + + +1541 +003018 +Type of road +22 +Bridge across a valley with forest/meadows/fields +Operational + + +1542 +003018 +Type of road +23 +Bridge across street/track +Operational + + +1543 +003018 +Type of road +24 +Bridge across big river/canal +Operational + + +1544 +003018 +Type of road +25 +Bridge across river/canal of medium size +Operational + + +1545 +003018 +Type of road +26 +Bridge across a small stream/loading canal +Operational + + +1546 +003018 +Type of road +27-30 +Reserved +Operational + + +1547 +003018 +Type of road +31 +Missing value +Operational + + +1548 +003019 +Type of construction +0 +Asphalt +Operational + + +1549 +003019 +Type of construction +1 +Concrete +Operational + + +1550 +003019 +Type of construction +2 +Concrete construction +Operational + + +1551 +003019 +Type of construction +3 +Steel-girder construction +Operational + + +1552 +003019 +Type of construction +4 +Box girder bridge +Operational + + +1553 +003019 +Type of construction +5 +Orthotropic slab +Operational + + +1554 +003019 +Type of construction +6 +Drain asphalt +Operational + + +1555 +003019 +Type of construction +7-14 +Reserved +Operational + + +1556 +003019 +Type of construction +15 +Missing value +Operational + + +1557 +003020 +Material for thermometer/hygrometer housing +0 +Wood +Operational + + +1558 +003020 +Material for thermometer/hygrometer housing +1 +Metal alloy +Operational + + +1559 +003020 +Material for thermometer/hygrometer housing +2 +Plastic/GRP +Operational + + +1560 +003020 +Material for thermometer/hygrometer housing +3 +Reed/grass/leaf +Operational + + +1561 +003020 +Material for thermometer/hygrometer housing +4-6 +Reserved for future use +Operational + + +1562 +003020 +Material for thermometer/hygrometer housing +7 +Missing value +Operational + + +1563 +003021 +Hygrometer heating +0 +Unheated +Operational + + +1564 +003021 +Hygrometer heating +1 +Heated +Operational + + +1565 +003021 +Hygrometer heating +2 +Not applicable +Operational + + +1566 +003021 +Hygrometer heating +3 +Missing value +Operational + + +1567 +003022 +Instrument owner +0 +National hydrometeorological/weather service +Operational + + +1568 +003022 +Instrument owner +1 +Other +Operational + + +1569 +003022 +Instrument owner +2 +Standards institute +Operational + + +1570 +003022 +Instrument owner +3-6 +Reserved for future use +Operational + + +1571 +003022 +Instrument owner +7 +Missing value +Operational + + +1572 +003023 +Configuration of louvers for thermometer/hygrometer screen +0 +Single v-section louvers +Operational + + +1573 +003023 +Configuration of louvers for thermometer/hygrometer screen +1 +Overlapping louvers +Operational + + +1574 +003023 +Configuration of louvers for thermometer/hygrometer screen +2 +Double v-section louvers +Operational + + +1575 +003023 +Configuration of louvers for thermometer/hygrometer screen +3 +Non-overlapping louvers +Operational + + +1576 +003023 +Configuration of louvers for thermometer/hygrometer screen +4 +Vented, non-louvered +Operational + + +1577 +003023 +Configuration of louvers for thermometer/hygrometer screen +5 +Not applicable +Operational + + +1578 +003023 +Configuration of louvers for thermometer/hygrometer screen +6 +Reserved for future use +Operational + + +1579 +003023 +Configuration of louvers for thermometer/hygrometer screen +7 +Missing value +Operational + + +1580 +003027 +Type of flight rig +0 +Solo (single radiosonde) +Operational + + +1581 +003027 +Type of flight rig +1 +Block +Operational + + +1582 +003027 +Type of flight rig +2 +Bar +Operational + + +1583 +003027 +Type of flight rig +3 +Cross +Operational + + +1584 +003027 +Type of flight rig +4 +T-rig +Operational + + +1585 +003027 +Type of flight rig +5 +Double T-rig +Operational + + +1586 +003027 +Type of flight rig +6 +Complex +Operational + + +1587 +003027 +Type of flight rig +7-14 +Reserved +Operational + + +1588 +003027 +Type of flight rig +15 +Missing value +Operational + + +1589 +003028 +Method of snow water equivalent measurement +0 +Multi point manual snow survey +Operational + + +1590 +003028 +Method of snow water equivalent measurement +1 +Single point manual snow water equivalent measurement +Operational + + +1591 +003028 +Method of snow water equivalent measurement +2 +Snow pillow or snow scale +Operational + + +1592 +003028 +Method of snow water equivalent measurement +3 +Passive gamma +Operational + + +1593 +003028 +Method of snow water equivalent measurement +4 +GNSS/GPS methods +Operational + + +1594 +003028 +Method of snow water equivalent measurement +5 +Cosmic ray attenuation +Operational + + +1595 +003028 +Method of snow water equivalent measurement +6 +Time domain reflectometry +Operational + + +1596 +003028 +Method of snow water equivalent measurement +7-62 +Reserved +Operational + + +1597 +003028 +Method of snow water equivalent measurement +63 +Missing value +Operational + + +1598 +004059 +Times of observation used to compute the reported mean values +1 +0000 UTC +Operational + + +1599 +004059 +Times of observation used to compute the reported mean values +2 +0600 UTC +Operational + + +1600 +004059 +Times of observation used to compute the reported mean values +3 +1200 UTC +Operational + + +1601 +004059 +Times of observation used to compute the reported mean values +4 +1800 UTC +Operational + + +1602 +004059 +Times of observation used to compute the reported mean values +5 +Other hours +Operational + + +1603 +004059 +Times of observation used to compute the reported mean values +All 6 +Missing value +Operational + + +1604 +004080 +Averaging period for following value +0 +Spot values +Operational + + +1605 +004080 +Averaging period for following value +1 +Less than 15 minutes +Operational + + +1606 +004080 +Averaging period for following value +2 +From 15 to 45 minutes +Operational + + +1607 +004080 +Averaging period for following value +3 +More than 45 minutes +Operational + + +1608 +004080 +Averaging period for following value +4-8 +Reserved +Operational + + +1609 +004080 +Averaging period for following value +9 +Data not available +Operational + + +1610 +004080 +Averaging period for following value +10-14 +Not used +Operational + + +1611 +004080 +Averaging period for following value +15 +Missing value +Operational + + +1612 +005069 +Receiver channel +0 +Mie +Operational + + +1613 +005069 +Receiver channel +1 +Rayleigh +Operational + + +1614 +005069 +Receiver channel +2 +Reserved +Operational + + +1615 +005069 +Receiver channel +3 +Missing value +Operational + + +1616 +008001 +Vertical sounding significance +1 +Surface +Operational + + +1617 +008001 +Vertical sounding significance +2 +Standard level +Operational + + +1618 +008001 +Vertical sounding significance +3 +Tropopause level +Operational + + +1619 +008001 +Vertical sounding significance +4 +Maximum wind level +Operational + + +1620 +008001 +Vertical sounding significance +5 +Significant level, temperature and/or relative humidity +Operational + + +1621 +008001 +Vertical sounding significance +6 +Significant level, wind +Operational + + +1622 +008001 +Vertical sounding significance +All 7 +Missing value +Operational + + +1623 +008002 +Vertical significance (surface observations) +0 +Observing rules for base of lowest cloud and cloud types of FM 12 SYNOP and FM 13 SHIP apply +Operational + + +1624 +008002 +Vertical significance (surface observations) +1 +First non-Cumulonimbus significant layer +Operational + + +1625 +008002 +Vertical significance (surface observations) +2 +Second non-Cumulonimbus significant layer +Operational + + +1626 +008002 +Vertical significance (surface observations) +3 +Third non-Cumulonimbus significant layer +Operational + + +1627 +008002 +Vertical significance (surface observations) +4 +Cumulonimbus layer +Operational + + +1628 +008002 +Vertical significance (surface observations) +5 +Ceiling +Operational + + +1629 +008002 +Vertical significance (surface observations) +6 +Clouds not detected below the following height(s) +Operational + + +1630 +008002 +Vertical significance (surface observations) +7 +Low cloud +Operational + + +1631 +008002 +Vertical significance (surface observations) +8 +Middle cloud +Operational + + +1632 +008002 +Vertical significance (surface observations) +9 +High cloud +Operational + + +1633 +008002 +Vertical significance (surface observations) +10 +Cloud layer with base below and top above the station +Operational + + +1634 +008002 +Vertical significance (surface observations) +11 +Cloud layer with base and top below the station level +Operational + + +1635 +008002 +Vertical significance (surface observations) +12-19 +Reserved +Operational + + +1636 +008002 +Vertical significance (surface observations) +20 +No clouds detected by the cloud detection system +Operational + + +1637 +008002 +Vertical significance (surface observations) +21 +First instrument detected cloud layer +Operational + + +1638 +008002 +Vertical significance (surface observations) +22 +Second instrument detected cloud layer +Operational + + +1639 +008002 +Vertical significance (surface observations) +23 +Third instrument detected cloud layer +Operational + + +1640 +008002 +Vertical significance (surface observations) +24 +Fourth instrument detected cloud layer +Operational + + +1641 +008002 +Vertical significance (surface observations) +25-61 +Reserved +Operational + + +1642 +008002 +Vertical significance (surface observations) +62 +Value not applicable +Operational + + +1643 +008002 +Vertical significance (surface observations) +63 +Missing value +Operational + + +1644 +008003 +Vertical significance (satellite observations) +0 +Surface +Operational + + +1645 +008003 +Vertical significance (satellite observations) +1 +Base of satellite sounding +Operational + + +1646 +008003 +Vertical significance (satellite observations) +2 +Cloud top +Operational + + +1647 +008003 +Vertical significance (satellite observations) +3 +Tropopause +Operational + + +1648 +008003 +Vertical significance (satellite observations) +4 +Precipitable water +Operational + + +1649 +008003 +Vertical significance (satellite observations) +5 +Sounding radiances +Operational + + +1650 +008003 +Vertical significance (satellite observations) +6 +Mean temperatures +Operational + + +1651 +008003 +Vertical significance (satellite observations) +7 +Ozone +Operational + + +1652 +008003 +Vertical significance (satellite observations) +8 +Low cloud +Operational + + +1653 +008003 +Vertical significance (satellite observations) +9 +Med cloud +Operational + + +1654 +008003 +Vertical significance (satellite observations) +10 +High cloud +Operational + + +1655 +008003 +Vertical significance (satellite observations) +11-62 +Reserved +Operational + + +1656 +008003 +Vertical significance (satellite observations) +63 +Missing value +Operational + + +1657 +008004 +Phase of aircraft flight +0-1 +Reserved +Operational + + +1658 +008004 +Phase of aircraft flight +2 +Unsteady (UNS) +Operational + + +1659 +008004 +Phase of aircraft flight +3 +Level flight, routine observation (LVR) +Operational + + +1660 +008004 +Phase of aircraft flight +4 +Level flight, highest wind encountered (LVW) +Operational + + +1661 +008004 +Phase of aircraft flight +5 +Ascending (ASC) +Operational + + +1662 +008004 +Phase of aircraft flight +6 +Descending (DES) +Operational + + +1663 +008004 +Phase of aircraft flight +7 +Missing value +Operational + + +1664 +008005 +Meteorological attribute significance +0 +Reserved +Operational + + +1665 +008005 +Meteorological attribute significance +1 +Storm centre +Operational + + +1666 +008005 +Meteorological attribute significance +2 +Outer limit or edge of storm +Operational + + +1667 +008005 +Meteorological attribute significance +3 +Location of maximum wind +Operational + + +1668 +008005 +Meteorological attribute significance +4 +Location of the storm in the perturbed analysis +Operational + + +1669 +008005 +Meteorological attribute significance +5 +Location of the storm in the analysis +Operational + + +1670 +008005 +Meteorological attribute significance +6-14 +Reserved +Operational + + +1671 +008005 +Meteorological attribute significance +15 +Missing value +Operational + + +1672 +008006 +Ozone vertical sounding significance +1 +Surface +Operational + + +1673 +008006 +Ozone vertical sounding significance +2 +Standard level +Operational + + +1674 +008006 +Ozone vertical sounding significance +3 +Tropopause level +Operational + + +1675 +008006 +Ozone vertical sounding significance +4 +Prominent maximum level +Operational + + +1676 +008006 +Ozone vertical sounding significance +5 +Prominent minimum level +Operational + + +1677 +008006 +Ozone vertical sounding significance +6 +Minimum pressure level +Operational + + +1678 +008006 +Ozone vertical sounding significance +7 +Reserved +Operational + + +1679 +008006 +Ozone vertical sounding significance +8 +Level of undetermined significance +Operational + + +1680 +008006 +Ozone vertical sounding significance +All 9 +Missing value +Operational + + +1681 +008007 +Dimensional significance +0 +Point +Operational + + +1682 +008007 +Dimensional significance +1 +Line +Operational + + +1683 +008007 +Dimensional significance +2 +Area +Operational + + +1684 +008007 +Dimensional significance +3 +Volume +Operational + + +1685 +008007 +Dimensional significance +4-14 +Reserved +Operational + + +1686 +008007 +Dimensional significance +15 +Missing value +Operational + + +1687 +008008 +Radiation vertical sounding significance +1 +Surface +Operational + + +1688 +008008 +Radiation vertical sounding significance +2 +Standard level +Operational + + +1689 +008008 +Radiation vertical sounding significance +3 +Tropopause level +Operational + + +1690 +008008 +Radiation vertical sounding significance +4 +Level of beta radiation maximum +Operational + + +1691 +008008 +Radiation vertical sounding significance +5 +Level of gamma radiation maximum +Operational + + +1692 +008008 +Radiation vertical sounding significance +6 +Minimum pressure level +Operational + + +1693 +008008 +Radiation vertical sounding significance +7 +Reserved +Operational + + +1694 +008008 +Radiation vertical sounding significance +8 +Level of undetermined significance +Operational + + +1695 +008008 +Radiation vertical sounding significance +All 9 +Missing value +Operational + + +1696 +008009 +Detailed phase of flight +0 +Level flight, routine observation, unsteady +Operational + + +1697 +008009 +Detailed phase of flight +1 +Level flight, highest wind encountered, unsteady +Operational + + +1698 +008009 +Detailed phase of flight +2 +Unsteady (UNS) +Operational + + +1699 +008009 +Detailed phase of flight +3 +Level flight, routine observation (LVR) +Operational + + +1700 +008009 +Detailed phase of flight +4 +Level flight, highest wind encountered (LVW) +Operational + + +1701 +008009 +Detailed phase of flight +5 +Ascending (ASC) +Operational + + +1702 +008009 +Detailed phase of flight +6 +Descending (DES) +Operational + + +1703 +008009 +Detailed phase of flight +7 +Ascending, observation intervals selected by time increments +Operational + + +1704 +008009 +Detailed phase of flight +8 +Ascending, observation intervals selected by time increments, unsteady +Operational + + +1705 +008009 +Detailed phase of flight +9 +Ascending, observation intervals selected by pressure increments +Operational + + +1706 +008009 +Detailed phase of flight +10 +Ascending, observation intervals selected by pressure increments, unsteady +Operational + + +1707 +008009 +Detailed phase of flight +11 +Descending, observation intervals selected by time increments +Operational + + +1708 +008009 +Detailed phase of flight +12 +Descending, observation intervals selected by time increments, unsteady +Operational + + +1709 +008009 +Detailed phase of flight +13 +Descending, observation intervals selected by pressure increments +Operational + + +1710 +008009 +Detailed phase of flight +14 +Descending, observation intervals selected by pressure increments, unsteady +Operational + + +1711 +008009 +Detailed phase of flight +15 +Missing value +Operational + + +1712 +008010 +Surface qualifier (temperature data) +0 +Reserved +Operational + + +1713 +008010 +Surface qualifier (temperature data) +1 +Bare soil +Operational + + +1714 +008010 +Surface qualifier (temperature data) +2 +Bare rock +Operational + + +1715 +008010 +Surface qualifier (temperature data) +3 +Land grass cover +Operational + + +1716 +008010 +Surface qualifier (temperature data) +4 +Water (lake, sea) +Operational + + +1717 +008010 +Surface qualifier (temperature data) +5 +Flood water underneath +Operational + + +1718 +008010 +Surface qualifier (temperature data) +6 +Snow +Operational + + +1719 +008010 +Surface qualifier (temperature data) +7 +Ice +Operational + + +1720 +008010 +Surface qualifier (temperature data) +8 +Runway or road +Operational + + +1721 +008010 +Surface qualifier (temperature data) +9 +Ship or platform deck in steel +Operational + + +1722 +008010 +Surface qualifier (temperature data) +10 +Ship or platform deck in wood +Operational + + +1723 +008010 +Surface qualifier (temperature data) +11 +Ship or platform deck partly covered with rubber mat +Operational + + +1724 +008010 +Surface qualifier (temperature data) +12 +Building roof +Operational + + +1725 +008010 +Surface qualifier (temperature data) +13-30 +Reserved +Operational + + +1726 +008010 +Surface qualifier (temperature data) +31 +Missing value +Operational + + +1727 +008011 +Meteorological feature +0 +Quasi-stationary front at the surface +Operational + + +1728 +008011 +Meteorological feature +1 +Quasi-stationary front above the surface +Operational + + +1729 +008011 +Meteorological feature +2 +Warm front at the surface +Operational + + +1730 +008011 +Meteorological feature +3 +Warm front above the surface +Operational + + +1731 +008011 +Meteorological feature +4 +Cold front at the surface +Operational + + +1732 +008011 +Meteorological feature +5 +Cold front above the surface +Operational + + +1733 +008011 +Meteorological feature +6 +Occlusion +Operational + + +1734 +008011 +Meteorological feature +7 +Instability line +Operational + + +1735 +008011 +Meteorological feature +8 +Intertropical front +Operational + + +1736 +008011 +Meteorological feature +9 +Convergence line +Operational + + +1737 +008011 +Meteorological feature +10 +Jet stream +Operational + + +1738 +008011 +Meteorological feature +11 +Cloud clear +Operational + + +1739 +008011 +Meteorological feature +12 +Cloud +Operational + + +1740 +008011 +Meteorological feature +13 +Turbulence +Operational + + +1741 +008011 +Meteorological feature +14 +Storm +Operational + + +1742 +008011 +Meteorological feature +15 +Airframe icing +Operational + + +1743 +008011 +Meteorological feature +16 +Phenomenon +Operational + + +1744 +008011 +Meteorological feature +17 +Volcano +Operational + + +1745 +008011 +Meteorological feature +18 +Atmospherics +Operational + + +1746 +008011 +Meteorological feature +19 +Reserved +Operational + + +1747 +008011 +Meteorological feature +20 +Special clouds +Operational + + +1748 +008011 +Meteorological feature +21 +Thunderstorm +Operational + + +1749 +008011 +Meteorological feature +22 +Tropical cyclone +Operational + + +1750 +008011 +Meteorological feature +23 +Mountain wave +Operational + + +1751 +008011 +Meteorological feature +24 +Duststorm +Operational + + +1752 +008011 +Meteorological feature +25 +Sandstorm +Operational + + +1753 +008011 +Meteorological feature +26-62 +Reserved +Operational + + +1754 +008011 +Meteorological feature +63 +Missing value +Operational + + +1755 +008012 +Land/sea qualifier +0 +Land +Operational + + +1756 +008012 +Land/sea qualifier +1 +Sea +Operational + + +1757 +008012 +Land/sea qualifier +2 +Coast +Operational + + +1758 +008012 +Land/sea qualifier +3 +Missing value +Operational + + +1759 +008013 +Day/night qualifier +0 +Night +Operational + + +1760 +008013 +Day/night qualifier +1 +Day +Operational + + +1761 +008013 +Day/night qualifier +2 +Twilight +Operational + + +1762 +008013 +Day/night qualifier +3 +Missing value +Operational + + +1763 +008014 +Qualifier for runway visual range +0 +10-minute mean value - normal value +Operational + + +1764 +008014 +Qualifier for runway visual range +1 +10-minute mean value - above the upper limit for assessments of RVR (P) +Operational + + +1765 +008014 +Qualifier for runway visual range +2 +10-minute mean value - below the lower limit for assessments of RVR (M) +Operational + + +1766 +008014 +Qualifier for runway visual range +3 +one-minute minimum value - normal value +Operational + + +1767 +008014 +Qualifier for runway visual range +4 +one-minute minimum value - above the upper limit for assessments of RVR (P) +Operational + + +1768 +008014 +Qualifier for runway visual range +5 +one-minute minimum value - below the lower limit for assessments of RVR (M) +Operational + + +1769 +008014 +Qualifier for runway visual range +6 +one-minute maximum value - normal value +Operational + + +1770 +008014 +Qualifier for runway visual range +7 +one-minute maximum value - above the upper limit for assessments of RVR (P) +Operational + + +1771 +008014 +Qualifier for runway visual range +8 +one-minute maximum value - below the lower limit for assessments of RVR (M) +Operational + + +1772 +008014 +Qualifier for runway visual range +9-14 +Reserved +Operational + + +1773 +008014 +Qualifier for runway visual range +15 +Missing value +Operational + + +1774 +008015 +Significant qualifier for sensor +0 +Single sensor +Operational + + +1775 +008015 +Significant qualifier for sensor +1 +Primary sensor +Operational + + +1776 +008015 +Significant qualifier for sensor +2 +Secondary sensor (Backup) +Operational + + +1777 +008015 +Significant qualifier for sensor +3-6 +Reserved +Operational + + +1778 +008015 +Significant qualifier for sensor +7 +Missing value +Operational + + +1779 +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +0 +NOSIG +Operational + + +1780 +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +1 +BECMG +Operational + + +1781 +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +2 +TEMPO +Operational + + +1782 +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +3 +FM +Operational + + +1783 +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +4-6 +Reserved +Operational + + +1784 +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +7 +Missing value +Operational + + +1785 +008017 +Qualifier of the time when the forecast change is expected +0 +FM +Operational + + +1786 +008017 +Qualifier of the time when the forecast change is expected +1 +TL +Operational + + +1787 +008017 +Qualifier of the time when the forecast change is expected +2 +AT +Operational + + +1788 +008017 +Qualifier of the time when the forecast change is expected +3 +Missing value +Operational + + +1789 +008018 +SEAWINDS land/ice surface type +1 +Land is present +Operational + + +1790 +008018 +SEAWINDS land/ice surface type +2 +Surface ice map indicates ice is present +Operational + + +1791 +008018 +SEAWINDS land/ice surface type +3-10 +Reserved +Operational + + +1792 +008018 +SEAWINDS land/ice surface type +11 +Ice map data not available +Operational + + +1793 +008018 +SEAWINDS land/ice surface type +12 +Attenuation map data not available +Operational + + +1794 +008018 +SEAWINDS land/ice surface type +13-16 +Reserved +Operational + + +1795 +008018 +SEAWINDS land/ice surface type +All 17 +Missing value +Operational + + +1796 +008019 +Qualifier for following centre identifier +0 +Reserved +Operational + + +1797 +008019 +Qualifier for following centre identifier +1 +ATS (Air Traffic Service) unit serving FIR (Flight Information Region) +Operational + + +1798 +008019 +Qualifier for following centre identifier +2 +FIR (Flight Information Region) +Operational + + +1799 +008019 +Qualifier for following centre identifier +3 +UIR (Upper Flight Information Region) +Operational + + +1800 +008019 +Qualifier for following centre identifier +4 +CTA (Control Area) +Operational + + +1801 +008019 +Qualifier for following centre identifier +5 +VAAC (Volcanic Ash Advisory Centre) +Operational + + +1802 +008019 +Qualifier for following centre identifier +6 +MWO (Meteorological Watch Office) issuing SIGMET +Operational + + +1803 +008019 +Qualifier for following centre identifier +7-14 +Reserved +Operational + + +1804 +008019 +Qualifier for following centre identifier +15 +Missing value +Operational + + +1805 +008021 +Time significance +0 +Reserved +Operational + + +1806 +008021 +Time significance +1 +Time series +Operational + + +1807 +008021 +Time significance +2 +Time averaged (see Note 1) +Operational + + +1808 +008021 +Time significance +3 +Accumulated +Operational + + +1809 +008021 +Time significance +4 +Forecast +Operational + + +1810 +008021 +Time significance +5 +Forecast time series +Operational + + +1811 +008021 +Time significance +6 +Forecast time averaged +Operational + + +1812 +008021 +Time significance +7 +Forecast accumulated +Operational + + +1813 +008021 +Time significance +8 +Ensemble mean (see Note 2) +Operational + + +1814 +008021 +Time significance +9 +Ensemble mean time series +Operational + + +1815 +008021 +Time significance +10 +Ensemble mean time averaged +Operational + + +1816 +008021 +Time significance +11 +Ensemble mean accumulated +Operational + + +1817 +008021 +Time significance +12 +Ensemble mean forecast +Operational + + +1818 +008021 +Time significance +13 +Ensemble mean forecast time series +Operational + + +1819 +008021 +Time significance +14 +Ensemble mean forecast time averaged +Operational + + +1820 +008021 +Time significance +15 +Ensemble mean forecast accumulated +Operational + + +1821 +008021 +Time significance +16 +Analysis +Operational + + +1822 +008021 +Time significance +17 +Start of phenomenon +Operational + + +1823 +008021 +Time significance +18 +Radiosonde launch time +Operational + + +1824 +008021 +Time significance +19 +Start of orbit +Operational + + +1825 +008021 +Time significance +20 +End of orbit +Operational + + +1826 +008021 +Time significance +21 +Time of ascending node +Operational + + +1827 +008021 +Time significance +22 +Time of occurrence of wind shift +Operational + + +1828 +008021 +Time significance +23 +Monitoring period +Operational + + +1829 +008021 +Time significance +24 +Agreed time limit for report reception +Operational + + +1830 +008021 +Time significance +25 +Nominal reporting time +Operational + + +1831 +008021 +Time significance +26 +Time of last known position +Operational + + +1832 +008021 +Time significance +27 +First guess +Operational + + +1833 +008021 +Time significance +28 +Start of scan +Operational + + +1834 +008021 +Time significance +29 +End of scan or time of ending +Operational + + +1835 +008021 +Time significance +30 +Time of occurrence +Operational + + +1836 +008021 +Time significance +31 +Missing value +Operational + + +1837 +008023 +First-order statistics +0-1 +Reserved +Operational + + +1838 +008023 +First-order statistics +2 +Maximum value +Operational + + +1839 +008023 +First-order statistics +3 +Minimum value +Operational + + +1840 +008023 +First-order statistics +4 +Mean value +Operational + + +1841 +008023 +First-order statistics +5 +Median value +Operational + + +1842 +008023 +First-order statistics +6 +Modal value +Operational + + +1843 +008023 +First-order statistics +7 +Mean absolute error +Operational + + +1844 +008023 +First-order statistics +8 +Reserved +Operational + + +1845 +008023 +First-order statistics +9 +Best estimate of standard deviation (N-1) +Operational + + +1846 +008023 +First-order statistics +10 +Standard deviation (N) +Operational + + +1847 +008023 +First-order statistics +11 +Harmonic mean +Operational + + +1848 +008023 +First-order statistics +12 +Root-mean-square vector error +Operational + + +1849 +008023 +First-order statistics +13 +Root-mean-square +Operational + + +1850 +008023 +First-order statistics +14-31 +Reserved +Operational + + +1851 +008023 +First-order statistics +32 +Vector mean +Operational + + +1852 +008023 +First-order statistics +33-62 +Reserved for local use +Operational + + +1853 +008023 +First-order statistics +63 +Missing value +Operational + + +1854 +008024 +Difference statistics +0-1 +Reserved +Operational + + +1855 +008024 +Difference statistics +2 +Observed minus maximum +Operational + + +1856 +008024 +Difference statistics +3 +Observed minus minimum +Operational + + +1857 +008024 +Difference statistics +4 +Observed minus mean +Operational + + +1858 +008024 +Difference statistics +5 +Observed minus median +Operational + + +1859 +008024 +Difference statistics +6 +Observed minus mode +Operational + + +1860 +008024 +Difference statistics +7-10 +Reserved +Operational + + +1861 +008024 +Difference statistics +11 +Observed minus climatology (anomaly) +Operational + + +1862 +008024 +Difference statistics +12 +Observed minus analysed value +Operational + + +1863 +008024 +Difference statistics +13 +Observed minus initialized analysed value +Operational + + +1864 +008024 +Difference statistics +14 +Observed minus forecast value +Operational + + +1865 +008024 +Difference statistics +15-20 +Reserved +Operational + + +1866 +008024 +Difference statistics +21 +Observed minus interpolated value +Operational + + +1867 +008024 +Difference statistics +22 +Observed minus hydrostatically calculated value +Operational + + +1868 +008024 +Difference statistics +23-31 +Reserved +Operational + + +1869 +008024 +Difference statistics +32-62 +Reserved for local use +Operational + + +1870 +008024 +Difference statistics +63 +Missing value +Operational + + +1871 +008025 +Time difference qualifier +0 +Universal Time Coordinated (UTC) minus Local Standard Time (LST) +Operational + + +1872 +008025 +Time difference qualifier +1 +Local Standard Time +Operational + + +1873 +008025 +Time difference qualifier +2 +Universal Time Coordinated (UTC) minus Satellite clock +Operational + + +1874 +008025 +Time difference qualifier +3-4 +Reserved +Operational + + +1875 +008025 +Time difference qualifier +5 +Time difference from edge of processing segment +Operational + + +1876 +008025 +Time difference qualifier +6-14 +Reserved +Operational + + +1877 +008025 +Time difference qualifier +15 +Missing value +Operational + + +1878 +008026 +Matrix significance +0 +Averaging kernel matrix +Operational + + +1879 +008026 +Matrix significance +1 +Correlation matrix (C) +Operational + + +1880 +008026 +Matrix significance +2 +Lower triangular correlation matrix square root (L from C=LLT) +Operational + + +1881 +008026 +Matrix significance +3 +Inverse of lower triangular correlation matrix square root (L-1) +Operational + + +1882 +008026 +Matrix significance +4-42 +Reserved +Operational + + +1883 +008026 +Matrix significance +43-62 +Reserved for local use +Operational + + +1884 +008026 +Matrix significance +63 +Missing or undefined significance +Operational + + +1885 +008029 +Surface type +0 +Open ocean or semi-enclosed sea +Operational + + +1886 +008029 +Surface type +1 +Enclosed sea or lake +Operational + + +1887 +008029 +Surface type +2 +Continental ice +Operational + + +1888 +008029 +Surface type +3 +Land +Operational + + +1889 +008029 +Surface type +4 +Low inland (below sea level) +Operational + + +1890 +008029 +Surface type +5 +Mix of land and water +Operational + + +1891 +008029 +Surface type +6 +Mix of land and low inland +Operational + + +1892 +008029 +Surface type +7-10 +Reserved +Operational + + +1893 +008029 +Surface type +11 +River +Operational + + +1894 +008029 +Surface type +12 +Lake +Operational + + +1895 +008029 +Surface type +13 +Sea +Operational + + +1896 +008029 +Surface type +14 +Glacier +Operational + + +1897 +008029 +Surface type +15 +Urban land +Operational + + +1898 +008029 +Surface type +16 +Rural land +Operational + + +1899 +008029 +Surface type +17 +Suburban land +Operational + + +1900 +008029 +Surface type +18 +Sea ice +Operational + + +1901 +008029 +Surface type +19-254 +Reserved +Operational + + +1902 +008029 +Surface type +255 +Missing value +Operational + + +1903 +008032 +Status of operation +0 +Routine operation +Operational + + +1904 +008032 +Status of operation +1 +Event triggered by storm surge +Operational + + +1905 +008032 +Status of operation +2 +Event triggered by tsunami +Operational + + +1906 +008032 +Status of operation +3 +Event triggered manually +Operational + + +1907 +008032 +Status of operation +4 +Installation testing +Operational + + +1908 +008032 +Status of operation +5 +Maintenance testing +Operational + + +1909 +008032 +Status of operation +6-14 +Reserved +Operational + + +1910 +008032 +Status of operation +15 +Missing value +Operational + + +1911 +008033 +Method of derivation of percentage confidence +0 +Reserved +Operational + + +1912 +008033 +Method of derivation of percentage confidence +1 +Percentage confidence calculated using cloud fraction +Operational + + +1913 +008033 +Method of derivation of percentage confidence +2 +Percentage confidence calculated using standard deviation of temperature +Operational + + +1914 +008033 +Method of derivation of percentage confidence +3 +Percentage confidence calculated using probability of cloud contamination +Operational + + +1915 +008033 +Method of derivation of percentage confidence +4 +Percentage confidence calculated using normality of distribution +Operational + + +1916 +008033 +Method of derivation of percentage confidence +5-126 +Reserved +Operational + + +1917 +008033 +Method of derivation of percentage confidence +127 +Missing value +Operational + + +1918 +008034 +Temperature/salinity measurement qualifier +0 +Secondary sampling: averaged +Operational + + +1919 +008034 +Temperature/salinity measurement qualifier +1 +Secondary sampling: discrete +Operational + + +1920 +008034 +Temperature/salinity measurement qualifier +2 +Secondary sampling: mixed +Operational + + +1921 +008034 +Temperature/salinity measurement qualifier +3 +Near-surface sampling: averaged, pumped +Operational + + +1922 +008034 +Temperature/salinity measurement qualifier +4 +Near-surface sampling: averaged, unpumped +Operational + + +1923 +008034 +Temperature/salinity measurement qualifier +5 +Near-surface sampling: discrete, pumped +Operational + + +1924 +008034 +Temperature/salinity measurement qualifier +6 +Near-surface sampling: discrete, unpumped +Operational + + +1925 +008034 +Temperature/salinity measurement qualifier +7 +Near-surface sampling: mixed, pumped +Operational + + +1926 +008034 +Temperature/salinity measurement qualifier +8 +Near-surface sampling: mixed, unpumped +Operational + + +1927 +008034 +Temperature/salinity measurement qualifier +9-14 +Reserved +Operational + + +1928 +008034 +Temperature/salinity measurement qualifier +15 +Missing value +Operational + + +1929 +008035 +Type of monitoring exercise +0 +Global +Operational + + +1930 +008035 +Type of monitoring exercise +1 +Regional +Operational + + +1931 +008035 +Type of monitoring exercise +2 +National +Operational + + +1932 +008035 +Type of monitoring exercise +3 +Special +Operational + + +1933 +008035 +Type of monitoring exercise +4 +Bilateral +Operational + + +1934 +008035 +Type of monitoring exercise +5 +Reserved +Operational + + +1935 +008035 +Type of monitoring exercise +6 +Reserved +Operational + + +1936 +008035 +Type of monitoring exercise +7 +Missing value +Operational + + +1937 +008036 +Type of centre or station performing monitoring +0 +WMO Secretariat +Operational + + +1938 +008036 +Type of centre or station performing monitoring +1 +WMO +Operational + + +1939 +008036 +Type of centre or station performing monitoring +2 +RSMC +Operational + + +1940 +008036 +Type of centre or station performing monitoring +3 +NMC +Operational + + +1941 +008036 +Type of centre or station performing monitoring +4 +RTH +Operational + + +1942 +008036 +Type of centre or station performing monitoring +5 +Observing site +Operational + + +1943 +008036 +Type of centre or station performing monitoring +6 +Other +Operational + + +1944 +008036 +Type of centre or station performing monitoring +7 +Missing value +Operational + + +1945 +008037 +Baseline check significance +0 +Manufacturer's baseline check unit +Operational + + +1946 +008037 +Baseline check significance +1 +Weather screen +Operational + + +1947 +008037 +Baseline check significance +2 +GRUAN standard humidity chamber +Operational + + +1948 +008037 +Baseline check significance +3-30 +Reserved +Operational + + +1949 +008037 +Baseline check significance +31 +Missing value +Operational + + +1950 +008038 +Instrument data significance +0 +Verified instrument reading +Operational + + +1951 +008038 +Instrument data significance +1 +Reference instrument reading +Operational + + +1952 +008038 +Instrument data significance +2-254 +Reserved +Operational + + +1953 +008038 +Instrument data significance +255 +Missing value +Operational + + +1954 +008039 +Time significance (Aviation forecast) +0 +Issue time of forecast +Operational + + +1955 +008039 +Time significance (Aviation forecast) +1 +Time of commencement of period of the forecast +Operational + + +1956 +008039 +Time significance (Aviation forecast) +2 +Time of ending of period of the forecast +Operational + + +1957 +008039 +Time significance (Aviation forecast) +3 +Forecast time of maximum temperature +Operational + + +1958 +008039 +Time significance (Aviation forecast) +4 +Forecast time of minimum temperature +Operational + + +1959 +008039 +Time significance (Aviation forecast) +5 +Time of beginning of the forecast change +Operational + + +1960 +008039 +Time significance (Aviation forecast) +6 +Time of ending of the forecast change +Operational + + +1961 +008039 +Time significance (Aviation forecast) +7-62 +Reserved +Operational + + +1962 +008039 +Time significance (Aviation forecast) +63 +Missing value +Operational + + +1963 +008040 +Flight level significance +0 +High-resolution data sample +Operational + + +1964 +008040 +Flight level significance +1 +Within 20 hPa of surface +Operational + + +1965 +008040 +Flight level significance +2 +Pressure less than 10 hPa (i.e., 9, 8, 7, etc.) when no other reason applies +Operational + + +1966 +008040 +Flight level significance +3 +Base pressure level for stability index +Operational + + +1967 +008040 +Flight level significance +4 +Begin doubtful temperature, height data +Operational + + +1968 +008040 +Flight level significance +5 +Begin missing data (all elements) +Operational + + +1969 +008040 +Flight level significance +6 +Begin missing relative humidity data +Operational + + +1970 +008040 +Flight level significance +7 +Begin missing temperature data +Operational + + +1971 +008040 +Flight level significance +8 +Highest level reached before balloon descent because of icing or turbulence +Operational + + +1972 +008040 +Flight level significance +9 +End doubtful temperature, height data +Operational + + +1973 +008040 +Flight level significance +10 +End missing data (all elements) +Operational + + +1974 +008040 +Flight level significance +11 +End missing relative humidity data +Operational + + +1975 +008040 +Flight level significance +12 +End missing temperature data +Operational + + +1976 +008040 +Flight level significance +13 +Zero degrees Celsius crossing(s) for RADAT +Operational + + +1977 +008040 +Flight level significance +14 +Standard pressure level +Operational + + +1978 +008040 +Flight level significance +15 +Operator-added level +Operational + + +1979 +008040 +Flight level significance +16 +Operator-deleted level +Operational + + +1980 +008040 +Flight level significance +17 +Balloon re-ascended beyond previous highest ascent level +Operational + + +1981 +008040 +Flight level significance +18 +Significant relative humidity level +Operational + + +1982 +008040 +Flight level significance +19 +Relative humidity level selection terminated +Operational + + +1983 +008040 +Flight level significance +20 +Surface level +Operational + + +1984 +008040 +Flight level significance +21 +Significant temperature level +Operational + + +1985 +008040 +Flight level significance +22 +Mandatory temperature level +Operational + + +1986 +008040 +Flight level significance +23 +Flight termination level +Operational + + +1987 +008040 +Flight level significance +24 +Tropopause(s) +Operational + + +1988 +008040 +Flight level significance +25 +Aircraft report +Operational + + +1989 +008040 +Flight level significance +26 +Interpolated (generated) level +Operational + + +1990 +008040 +Flight level significance +27 +Mandatory wind level +Operational + + +1991 +008040 +Flight level significance +28 +Significant wind level +Operational + + +1992 +008040 +Flight level significance +29 +Maximum wind level +Operational + + +1993 +008040 +Flight level significance +30 +Incremental wind level (fixed regional) +Operational + + +1994 +008040 +Flight level significance +31 +Incremental height level (generated) +Operational + + +1995 +008040 +Flight level significance +32 +Wind termination level +Operational + + +1996 +008040 +Flight level significance +33 +Pressure 100 to 110 hPa, when no other reason applies +Operational + + +1997 +008040 +Flight level significance +34 +Freezing level base +Operational + + +1998 +008040 +Flight level significance +35 +Freezing level top +Operational + + +1999 +008040 +Flight level significance +36 +Flight level base +Operational + + +2000 +008040 +Flight level significance +37 +Flight level top +Operational + + +2001 +008040 +Flight level significance +38 +Top of wind sounding +Operational + + +2002 +008040 +Flight level significance +39 +Bottom of wind sounding +Operational + + +2003 +008040 +Flight level significance +40 +Significant thermodynamic level (inversion) +Operational + + +2004 +008040 +Flight level significance +41 +Significant relative humidity level (according to NCDC criteria) +Operational + + +2005 +008040 +Flight level significance +42 +Significant temperature level (according to NCDC) +Operational + + +2006 +008040 +Flight level significance +43 +Begin missing wind data +Operational + + +2007 +008040 +Flight level significance +44 +End missing wind data +Operational + + +2008 +008040 +Flight level significance +45-59 +Reserved +Operational + + +2009 +008040 +Flight level significance +60 +Level of 80-knot isotach above jet +Operational + + +2010 +008040 +Flight level significance +61 +Level of 80-knot isotach below jet +Operational + + +2011 +008040 +Flight level significance +62 +Other +Operational + + +2012 +008040 +Flight level significance +63 +Missing value +Operational + + +2013 +008041 +Data significance +0 +Parent site +Operational + + +2014 +008041 +Data significance +1 +Observation site +Operational + + +2015 +008041 +Data significance +2 +Balloon manufacture date +Operational + + +2016 +008041 +Data significance +3 +Balloon launch point +Operational + + +2017 +008041 +Data significance +4 +Surface observation +Operational + + +2018 +008041 +Data significance +5 +Surface observation displacement from launch point +Operational + + +2019 +008041 +Data significance +6 +Flight level observation +Operational + + +2020 +008041 +Data significance +7 +Flight level termination point +Operational + + +2021 +008041 +Data significance +8 +IFR ceiling and visibility +Operational + + +2022 +008041 +Data significance +9 +Mountain obscuration +Operational + + +2023 +008041 +Data significance +10 +Strong surface wind +Operational + + +2024 +008041 +Data significance +11 +Freezing level +Operational + + +2025 +008041 +Data significance +12 +Multiple freezing level +Operational + + +2026 +008041 +Data significance +13 +Instrument manufacture date +Operational + + +2027 +008041 +Data significance +14-30 +Reserved +Operational + + +2028 +008041 +Data significance +31 +Missing value +Operational + + +2029 +008042 +Extended vertical sounding significance +1 +Surface +Operational + + +2030 +008042 +Extended vertical sounding significance +2 +Standard level +Operational + + +2031 +008042 +Extended vertical sounding significance +3 +Tropopause level +Operational + + +2032 +008042 +Extended vertical sounding significance +4 +Maximum wind level +Operational + + +2033 +008042 +Extended vertical sounding significance +5 +Significant temperature level +Operational + + +2034 +008042 +Extended vertical sounding significance +6 +Significant humidity level +Operational + + +2035 +008042 +Extended vertical sounding significance +7 +Significant wind level +Operational + + +2036 +008042 +Extended vertical sounding significance +8 +Beginning of missing temperature data +Operational + + +2037 +008042 +Extended vertical sounding significance +9 +End of missing temperature data +Operational + + +2038 +008042 +Extended vertical sounding significance +10 +Beginning of missing humidity data +Operational + + +2039 +008042 +Extended vertical sounding significance +11 +End of missing humidity data +Operational + + +2040 +008042 +Extended vertical sounding significance +12 +Beginning of missing wind data +Operational + + +2041 +008042 +Extended vertical sounding significance +13 +End of missing wind data +Operational + + +2042 +008042 +Extended vertical sounding significance +14 +Top of wind sounding +Operational + + +2043 +008042 +Extended vertical sounding significance +15 +Level determined by regional decision +Operational + + +2044 +008042 +Extended vertical sounding significance +16 +Freezing level +Operational + + +2045 +008042 +Extended vertical sounding significance +17 +Pressure level originally indicated by height as the vertical coordinate +Operational + + +2046 +008042 +Extended vertical sounding significance +All 18 +Missing value +Operational + + +2047 +008043 +Atmospheric chemical or physical constituent type +0 +Ozone +O3 +10028-15-6 +Operational + + +2048 +008043 +Atmospheric chemical or physical constituent type +1 +Water vapour +H2O +7732-18-5 +Operational + + +2049 +008043 +Atmospheric chemical or physical constituent type +2 +Methane +CH4 +74-82-8 +Operational + + +2050 +008043 +Atmospheric chemical or physical constituent type +3 +Carbon dioxide +CO2 +124-38-9 +Operational + + +2051 +008043 +Atmospheric chemical or physical constituent type +4 +Carbon monoxide +CO +630-08-0 +Operational + + +2052 +008043 +Atmospheric chemical or physical constituent type +5 +Nitrogen dioxide +NO2 +10102-44-0 +Operational + + +2053 +008043 +Atmospheric chemical or physical constituent type +6 +Nitrous oxide +N2O +10024-97-2 +Operational + + +2054 +008043 +Atmospheric chemical or physical constituent type +7 +Formaldehyde +HCHO +50-00-0 +Operational + + +2055 +008043 +Atmospheric chemical or physical constituent type +8 +Sulphur dioxide +SO2 +7446-09-5 +Operational + + +2056 +008043 +Atmospheric chemical or physical constituent type +9 +Volcanic sulphur dioxide +Operational + + +2057 +008043 +Atmospheric chemical or physical constituent type +10-24 +Reserved +Operational + + +2058 +008043 +Atmospheric chemical or physical constituent type +25 +Particulate matter < 1.0 microns +Operational + + +2059 +008043 +Atmospheric chemical or physical constituent type +26 +Particulate matter < 2.5 microns +Operational + + +2060 +008043 +Atmospheric chemical or physical constituent type +27 +Particulate matter < 10 microns +Operational + + +2061 +008043 +Atmospheric chemical or physical constituent type +28 +Aerosols (generic) +Operational + + +2062 +008043 +Atmospheric chemical or physical constituent type +29 +Smoke (generic) +Operational + + +2063 +008043 +Atmospheric chemical or physical constituent type +30 +Crustal material (generic dust) +Operational + + +2064 +008043 +Atmospheric chemical or physical constituent type +31 +Volcanic ash +Operational + + +2065 +008043 +Atmospheric chemical or physical constituent type +32 +Cloud +Operational + + +2066 +008043 +Atmospheric chemical or physical constituent type +33 +Cloud and aerosols +Operational + + +2067 +008043 +Atmospheric chemical or physical constituent type +34-200 +Reserved +Operational + + +2068 +008043 +Atmospheric chemical or physical constituent type +201-254 +Reserved for local use +Operational + + +2069 +008043 +Atmospheric chemical or physical constituent type +255 +Missing value +Operational + + +2070 +008046 +Atmospheric chemical or physical constituent type +(See Common Code table C–14 in Part C/c.) +Operational + + +2071 +008050 +Qualifier for number of missing values in calculation of statistic +0 +Reserved +Operational + + +2072 +008050 +Qualifier for number of missing values in calculation of statistic +1 +Pressure +Operational + + +2073 +008050 +Qualifier for number of missing values in calculation of statistic +2 +Temperature +Operational + + +2074 +008050 +Qualifier for number of missing values in calculation of statistic +3 +Extreme temperature +Operational + + +2075 +008050 +Qualifier for number of missing values in calculation of statistic +4 +Vapour pressure +Operational + + +2076 +008050 +Qualifier for number of missing values in calculation of statistic +5 +Precipitation +Operational + + +2077 +008050 +Qualifier for number of missing values in calculation of statistic +6 +Sunshine duration +Operational + + +2078 +008050 +Qualifier for number of missing values in calculation of statistic +7 +Maximum temperature +Operational + + +2079 +008050 +Qualifier for number of missing values in calculation of statistic +8 +Minimum temperature +Operational + + +2080 +008050 +Qualifier for number of missing values in calculation of statistic +9 +Wind +Operational + + +2081 +008050 +Qualifier for number of missing values in calculation of statistic +10-14 +Reserved +Operational + + +2082 +008050 +Qualifier for number of missing values in calculation of statistic +15 +Missing value +Operational + + +2083 +008051 +Qualifier for number of missing values in calculation of statistic +1 +Pressure +Operational + + +2084 +008051 +Qualifier for number of missing values in calculation of statistic +2 +Temperature +Operational + + +2085 +008051 +Qualifier for number of missing values in calculation of statistic +3 +Extreme temperature +Operational + + +2086 +008051 +Qualifier for number of missing values in calculation of statistic +4 +Vapour pressure +Operational + + +2087 +008051 +Qualifier for number of missing values in calculation of statistic +5 +Precipitation +Operational + + +2088 +008051 +Qualifier for number of missing values in calculation of statistic +6 +Sunshine duration +Operational + + +2089 +008051 +Qualifier for number of missing values in calculation of statistic +7 +Missing value +Operational + + +2090 +008052 +Condition for which number of days of occurrence follows +0 +Mean wind speed over a 10-minute period observed or recorded equal to or more than 10 m s-1 or 20 knots +Operational + + +2091 +008052 +Condition for which number of days of occurrence follows +1 +Mean wind speed over a 10-minute period observed or recorded equal to or more than 20 m s-1 or 40 knots +Operational + + +2092 +008052 +Condition for which number of days of occurrence follows +2 +Mean wind speed over a 10-minute period observed or recorded equal to or more than 30 m s-1 or 60 knots +Operational + + +2093 +008052 +Condition for which number of days of occurrence follows +3 +Maximum temperature less than 273.15 K +Operational + + +2094 +008052 +Condition for which number of days of occurrence follows +4 +Maximum temperature equal to or more than 298.15 K +Operational + + +2095 +008052 +Condition for which number of days of occurrence follows +5 +Maximum temperature equal to or more than 303.15 K +Operational + + +2096 +008052 +Condition for which number of days of occurrence follows +6 +Maximum temperature equal to or more than 308.15 K +Operational + + +2097 +008052 +Condition for which number of days of occurrence follows +7 +Maximum temperature equal to or more than 313.15 K +Operational + + +2098 +008052 +Condition for which number of days of occurrence follows +8 +Minimum temperature less than 273.15 K +Operational + + +2099 +008052 +Condition for which number of days of occurrence follows +9 +Maximum temperature equal to or more than 273.15 K +Operational + + +2100 +008052 +Condition for which number of days of occurrence follows +10 +Precipitation equal to or more than 1.0 kg m-2 +Operational + + +2101 +008052 +Condition for which number of days of occurrence follows +11 +Precipitation equal to or more than 5.0 kg m-2 +Operational + + +2102 +008052 +Condition for which number of days of occurrence follows +12 +Precipitation equal to or more than 10.0 kg m-2 +Operational + + +2103 +008052 +Condition for which number of days of occurrence follows +13 +Precipitation equal to or more than 50.0 kg m-2 +Operational + + +2104 +008052 +Condition for which number of days of occurrence follows +14 +Precipitation equal to or more than 100.0 kg m-2 +Operational + + +2105 +008052 +Condition for which number of days of occurrence follows +15 +Precipitation equal to or more than 150.0 kg m-2 +Operational + + +2106 +008052 +Condition for which number of days of occurrence follows +16 +Snow depth more than 0.00 m +Operational + + +2107 +008052 +Condition for which number of days of occurrence follows +17 +Snow depth more than 0.01 m +Operational + + +2108 +008052 +Condition for which number of days of occurrence follows +18 +Snow depth more than 0.10 m +Operational + + +2109 +008052 +Condition for which number of days of occurrence follows +19 +Snow depth more than 0.50 m +Operational + + +2110 +008052 +Condition for which number of days of occurrence follows +20 +Horizontal visibility less than 50 m +Operational + + +2111 +008052 +Condition for which number of days of occurrence follows +21 +Horizontal visibility less than 100 m +Operational + + +2112 +008052 +Condition for which number of days of occurrence follows +22 +Horizontal visibility less than 1000 m +Operational + + +2113 +008052 +Condition for which number of days of occurrence follows +23 +Hail +Operational + + +2114 +008052 +Condition for which number of days of occurrence follows +24 +Thunderstorm +Operational + + +2115 +008052 +Condition for which number of days of occurrence follows +25-30 +Reserved +Operational + + +2116 +008052 +Condition for which number of days of occurrence follows +31 +Missing value +Operational + + +2117 +008053 +Day of occurrence qualifier +0 +Value occurred on only one day in the month +Operational + + +2118 +008053 +Day of occurrence qualifier +1 +Value occurred on more than one day in the month +Operational + + +2119 +008053 +Day of occurrence qualifier +2 +Reserved +Operational + + +2120 +008053 +Day of occurrence qualifier +3 +Missing value +Operational + + +2121 +008054 +Qualifier for wind speed or wind gusts +0 +Wind speed or gust is as reported +Operational + + +2122 +008054 +Qualifier for wind speed or wind gusts +1 +Wind speed is greater than that reported (P in METAR/TAF/SPECI) +Operational + + +2123 +008054 +Qualifier for wind speed or wind gusts +2-6 +Reserved +Operational + + +2124 +008054 +Qualifier for wind speed or wind gusts +7 +Missing value +Operational + + +2125 +008060 +Sample scanning mode significance +0 +Reserved +Operational + + +2126 +008060 +Sample scanning mode significance +1 +Range +Operational + + +2127 +008060 +Sample scanning mode significance +2 +Azimuth +Operational + + +2128 +008060 +Sample scanning mode significance +3 +Horizontal +Operational + + +2129 +008060 +Sample scanning mode significance +4 +Vertical +Operational + + +2130 +008060 +Sample scanning mode significance +5 +North/south +Operational + + +2131 +008060 +Sample scanning mode significance +6 +East/west +Operational + + +2132 +008060 +Sample scanning mode significance +7-14 +Reserved +Operational + + +2133 +008060 +Sample scanning mode significance +15 +Missing value +Operational + + +2134 +008065 +Sun-glint indicator +0 +No sun-glint +Operational + + +2135 +008065 +Sun-glint indicator +1 +Sun-glint +Operational + + +2136 +008065 +Sun-glint indicator +2 +Reserved +Operational + + +2137 +008065 +Sun-glint indicator +3 +Missing value +Operational + + +2138 +008066 +Semi-transparency indicator +0 +Opaque +Operational + + +2139 +008066 +Semi-transparency indicator +1 +Semi-transparent +Operational + + +2140 +008066 +Semi-transparency indicator +2 +Reserved +Operational + + +2141 +008066 +Semi-transparency indicator +3 +Missing value +Operational + + +2142 +008070 +Vertical sounding product qualifier +0 +Reserved +Operational + + +2143 +008070 +Vertical sounding product qualifier +1 +Reserved +Operational + + +2144 +008070 +Vertical sounding product qualifier +2 +Earth located instrument counts, calibration coefficients and housekeeping (level 1b) +Operational + + +2145 +008070 +Vertical sounding product qualifier +3 +Earth located calibrated radiances (level 1c) +Operational + + +2146 +008070 +Vertical sounding product qualifier +4 +Mapped to a common footprint, Earth located calibrated radiances (level 1d) +Operational + + +2147 +008070 +Vertical sounding product qualifier +5-14 +Reserved +Operational + + +2148 +008070 +Vertical sounding product qualifier +15 +Missing value +Operational + + +2149 +008072 +Pixel(s) type +0 +Mixed +Operational + + +2150 +008072 +Pixel(s) type +1 +Clear +Operational + + +2151 +008072 +Pixel(s) type +2 +Cloudy +Operational + + +2152 +008072 +Pixel(s) type +3 +Probably clear +Operational + + +2153 +008072 +Pixel(s) type +4 +Probably cloudy +Operational + + +2154 +008072 +Pixel(s) type +5-6 +Reserved +Operational + + +2155 +008072 +Pixel(s) type +7 +Missing value +Operational + + +2156 +008074 +Altimeter echo type +0 +Open ocean or semi-enclosed sea +Operational + + +2157 +008074 +Altimeter echo type +1 +Non-ocean like +Operational + + +2158 +008074 +Altimeter echo type +2 +Reserved +Operational + + +2159 +008074 +Altimeter echo type +3 +Missing value +Operational + + +2160 +008075 +Ascending/descending orbit qualifier +0 +Ascending orbit +Operational + + +2161 +008075 +Ascending/descending orbit qualifier +1 +Descending orbit +Operational + + +2162 +008075 +Ascending/descending orbit qualifier +2 +Reserved +Operational + + +2163 +008075 +Ascending/descending orbit qualifier +3 +Missing value +Operational + + +2164 +008076 +Type of band +0 +Ku +Operational + + +2165 +008076 +Type of band +1 +C +Operational + + +2166 +008076 +Type of band +2 +Long-wave infrared +Operational + + +2167 +008076 +Type of band +3 +Medium-wave infrared +Operational + + +2168 +008076 +Type of band +4 +Short-wave infrared +Operational + + +2169 +008076 +Type of band +5 +M +Operational + + +2170 +008076 +Type of band +6 +I +Operational + + +2171 +008076 +Type of band +7 +Day/night +Operational + + +2172 +008076 +Type of band +8-62 +Reserved +Operational + + +2173 +008076 +Type of band +63 +Missing value +Operational + + +2174 +008077 +Radiometer sensed surface type +0 +Land +Operational + + +2175 +008077 +Radiometer sensed surface type +1 +Sea +Operational + + +2176 +008077 +Radiometer sensed surface type +2 +Coastal +Operational + + +2177 +008077 +Radiometer sensed surface type +3 +Open ocean or semi-enclosed sea +Operational + + +2178 +008077 +Radiometer sensed surface type +4 +Enclosed sea or lake +Operational + + +2179 +008077 +Radiometer sensed surface type +5 +Continental ice +Operational + + +2180 +008077 +Radiometer sensed surface type +6-126 +Reserved +Operational + + +2181 +008077 +Radiometer sensed surface type +127 +Missing value +Operational + + +2182 +008079 +Product status +0 +Normal issue +Operational + + +2183 +008079 +Product status +1 +Correction to a previously issued product (COR) +Operational + + +2184 +008079 +Product status +2 +Amendment to a previously issued product (AMD) +Operational + + +2185 +008079 +Product status +3 +Correction to a previously issued amended product (COR AMD) +Operational + + +2186 +008079 +Product status +4 +Cancellation of a previously issued product (CNL) +Operational + + +2187 +008079 +Product status +5 +No product available (NIL) +Operational + + +2188 +008079 +Product status +6 +Special report (SPECI) +Operational + + +2189 +008079 +Product status +7 +Corrected special report (SPECI COR) +Operational + + +2190 +008079 +Product status +8-14 +Reserved +Operational + + +2191 +008079 +Product status +15 +Missing or not applicable +Operational + + +2192 +008080 +Qualifier for GTSPP quality flag +0 +Total water pressure profile +Operational + + +2193 +008080 +Qualifier for GTSPP quality flag +1 +Total water temperature profile +Operational + + +2194 +008080 +Qualifier for GTSPP quality flag +2 +Total water salinity profile +Operational + + +2195 +008080 +Qualifier for GTSPP quality flag +3 +Total water conductivity profile +Operational + + +2196 +008080 +Qualifier for GTSPP quality flag +4 +Total water depth +Operational + + +2197 +008080 +Qualifier for GTSPP quality flag +5-9 +Reserved +Operational + + +2198 +008080 +Qualifier for GTSPP quality flag +10 +Water pressure at a level +Operational + + +2199 +008080 +Qualifier for GTSPP quality flag +11 +Water temperature at a level +Operational + + +2200 +008080 +Qualifier for GTSPP quality flag +12 +Salinity at a level +Operational + + +2201 +008080 +Qualifier for GTSPP quality flag +13 +Water depth at a level +Operational + + +2202 +008080 +Qualifier for GTSPP quality flag +14 +Sea/water current speed at a level +Operational + + +2203 +008080 +Qualifier for GTSPP quality flag +15 +Sea/water current direction at a level +Operational + + +2204 +008080 +Qualifier for GTSPP quality flag +16 +Dissolved oxygen at a level +Operational + + +2205 +008080 +Qualifier for GTSPP quality flag +17-19 +Reserved +Operational + + +2206 +008080 +Qualifier for GTSPP quality flag +20 +Position +Operational + + +2207 +008080 +Qualifier for GTSPP quality flag +21-62 +Reserved +Operational + + +2208 +008080 +Qualifier for GTSPP quality flag +63 +Missing value +Operational + + +2209 +008081 +Type of equipment +0 +Sensor +Operational + + +2210 +008081 +Type of equipment +1 +Transmitter +Operational + + +2211 +008081 +Type of equipment +2 +Receiver +Operational + + +2212 +008081 +Type of equipment +3 +Observing platform +Operational + + +2213 +008081 +Type of equipment +4-62 +Reserved +Operational + + +2214 +008081 +Type of equipment +63 +Missing value +Operational + + +2215 +008082 +Modification of sensor height to another value +0 +Sensor height is not modified +Operational + + +2216 +008082 +Modification of sensor height to another value +1 +Sensor height is modified to standard level +Operational + + +2217 +008082 +Modification of sensor height to another value +2-6 +Reserved +Operational + + +2218 +008082 +Modification of sensor height to another value +7 +Missing value +Operational + + +2219 +008083 +Nominal value indicator +1 +Adjusted to or with respect to representative height of sensor above local ground (or deck of marine platform) +Operational + + +2220 +008083 +Nominal value indicator +2 +Adjusted to or with respect to representative height of sensor above water surface +Operational + + +2221 +008083 +Nominal value indicator +3 +Adjusted with respect to standard surface roughness +Operational + + +2222 +008083 +Nominal value indicator +4 +Adjusted with respect to wind speed +Operational + + +2223 +008083 +Nominal value indicator +5 +Adjusted with respect to temperature +Operational + + +2224 +008083 +Nominal value indicator +6 +Adjusted with respect to pressure +Operational + + +2225 +008083 +Nominal value indicator +7 +Adjusted with respect to humidity +Operational + + +2226 +008083 +Nominal value indicator +8 +Adjusted with respect to evaporation +Operational + + +2227 +008083 +Nominal value indicator +9 +Adjusted with respect to wetting losses +Operational + + +2228 +008083 +Nominal value indicator +10-14 +Reserved +Operational + + +2229 +008083 +Nominal value indicator +All 15 +Missing value +Operational + + +2230 +008085 +Beam identifier +0 +Fore beam +Operational + + +2231 +008085 +Beam identifier +1 +Mid beam +Operational + + +2232 +008085 +Beam identifier +2 +Aft beam +Operational + + +2233 +008085 +Beam identifier +3-6 +Reserved +Operational + + +2234 +008085 +Beam identifier +7 +Missing value +Operational + + +2235 +008086 +Vertical significance for NWP +1 +Model "ground" surface +Operational + + +2236 +008086 +Vertical significance for NWP +2 +Standard level +Operational + + +2237 +008086 +Vertical significance for NWP +3 +Tropopause level +Operational + + +2238 +008086 +Vertical significance for NWP +4 +Maximum wind level +Operational + + +2239 +008086 +Vertical significance for NWP +5 +Significant temperature level +Operational + + +2240 +008086 +Vertical significance for NWP +6 +Significant humidity level +Operational + + +2241 +008086 +Vertical significance for NWP +7 +Significant wind level +Operational + + +2242 +008086 +Vertical significance for NWP +8 +Vertically interpolated level (This should be set to 1 for points on the vertical profile that fall between the model's native vertical levels.) +Operational + + +2243 +008086 +Vertical significance for NWP +9 +Virtual station height +Operational + + +2244 +008086 +Vertical significance for NWP +10 +Level of best fit +Operational + + +2245 +008086 +Vertical significance for NWP +11 +Reserved +Operational + + +2246 +008086 +Vertical significance for NWP +All 12 +Missing value +Operational + + +2247 +008087 +Corner position of observation +0 +Upper left +Operational + + +2248 +008087 +Corner position of observation +1 +Upper right +Operational + + +2249 +008087 +Corner position of observation +2 +Lower right +Operational + + +2250 +008087 +Corner position of observation +3 +Lower left +Operational + + +2251 +008087 +Corner position of observation +4-6 +Reserved +Operational + + +2252 +008087 +Corner position of observation +7 +Missing value +Operational + + +2253 +008088 +Map significance +0 +Top view (geographical longitude on x-axis and latitude on y-axis) +Operational + + +2254 +008088 +Map significance +1 +North-south view (transect with geographical longitude on x-axis and vertical height on y-axis) +Operational + + +2255 +008088 +Map significance +2 +East-west view (transect with geographical latitude on x-axis and vertical height on y-axis) +Operational + + +2256 +008088 +Map significance +3-62 +Reserved +Operational + + +2257 +008088 +Map significance +63 +Missing +Operational + + +2258 +008091 +Coordinates significance +0 +Satellite coordinates +Operational + + +2259 +008091 +Coordinates significance +1 +Observation coordinates +Operational + + +2260 +008091 +Coordinates significance +2 +Start of observation +Operational + + +2261 +008091 +Coordinates significance +3 +End of observation +Operational + + +2262 +008091 +Coordinates significance +4 +Horizontal centre of gravity of the observation +Operational + + +2263 +008091 +Coordinates significance +5 +Vertical centre of gravity of the observation +Operational + + +2264 +008091 +Coordinates significance +6 +Top of the observation +Operational + + +2265 +008091 +Coordinates significance +7 +Bottom of the observation +Operational + + +2266 +008091 +Coordinates significance +8 +Projection origin +Operational + + +2267 +008091 +Coordinates significance +9 +Coordinates of true scale +Operational + + +2268 +008091 +Coordinates significance +10-254 +Reserved +Operational + + +2269 +008091 +Coordinates significance +255 +Missing value +Operational + + +2270 +008092 +Measurement uncertainty expression +0 +Standard uncertainty +Operational + + +2271 +008092 +Measurement uncertainty expression +1-30 +Reserved +Operational + + +2272 +008092 +Measurement uncertainty expression +31 +Missing value +Operational + + +2273 +008093 +Measurement uncertainty significance +0 +Total uncertainty +Operational + + +2274 +008093 +Measurement uncertainty significance +1 +Systematic component of uncertainty +Operational + + +2275 +008093 +Measurement uncertainty significance +2 +Random component of uncertainty +Operational + + +2276 +008093 +Measurement uncertainty significance +3-30 +Reserved +Operational + + +2277 +008093 +Measurement uncertainty significance +31 +Missing value +Operational + + +2278 +010063 +Characteristic of pressure tendency +0 +Increasing, then decreasing; atmospheric pressure the same or higher than three hours ago +Operational + + +2279 +010063 +Characteristic of pressure tendency +1 +Increasing, then steady; or increasing, then increasing more slowly +Atmospheric pressure now higher than three hours ago +Operational + + +2280 +010063 +Characteristic of pressure tendency +2 +Increasing (steadily or unsteadily) +Atmospheric pressure now higher than three hours ago +Operational + + +2281 +010063 +Characteristic of pressure tendency +3 +Decreasing or steady, then increasing; or increasing, then increasing more rapidly +Atmospheric pressure now higher than three hours ago +Operational + + +2282 +010063 +Characteristic of pressure tendency +4 +Steady; atmospheric pressure the same as three hours ago +Operational + + +2283 +010063 +Characteristic of pressure tendency +5 +Decreasing, then increasing; atmospheric pressure the same or lower than three hours ago +Operational + + +2284 +010063 +Characteristic of pressure tendency +6 +Decreasing, then steady; or decreasing, then decreasing more slowly +Atmospheric pressure now lower than three hours ago +Operational + + +2285 +010063 +Characteristic of pressure tendency +7 +Decreasing (steadily or unsteadily) +Atmospheric pressure now lower than three hours ago +Operational + + +2286 +010063 +Characteristic of pressure tendency +8 +Steady or increasing, then decreasing; or decreasing, then decreasing more rapidly +Atmospheric pressure now lower than three hours ago +Operational + + +2287 +010063 +Characteristic of pressure tendency +9-14 +Reserved +Operational + + +2288 +010063 +Characteristic of pressure tendency +15 +Missing value +Operational + + +2289 +010064 +SIGMET cruising level +0 +Subsonic +Operational + + +2290 +010064 +SIGMET cruising level +1 +Transonic +Operational + + +2291 +010064 +SIGMET cruising level +2 +Supersonic +Operational + + +2292 +010064 +SIGMET cruising level +3-6 +Reserved +Operational + + +2293 +010064 +SIGMET cruising level +7 +Missing value +Operational + + +2294 +011030 +Extended degree of turbulence +0 +Nil +in cloud +Operational + + +2295 +011030 +Extended degree of turbulence +1 +Light +in cloud +Operational + + +2296 +011030 +Extended degree of turbulence +2 +Moderate +in cloud +Operational + + +2297 +011030 +Extended degree of turbulence +3 +Severe +in cloud +Operational + + +2298 +011030 +Extended degree of turbulence +4 +Nil +in clear air +Operational + + +2299 +011030 +Extended degree of turbulence +5 +Light +in clear air +Operational + + +2300 +011030 +Extended degree of turbulence +6 +Moderate +in clear air +Operational + + +2301 +011030 +Extended degree of turbulence +7 +Severe +in clear air +Operational + + +2302 +011030 +Extended degree of turbulence +8 +Nil +cloud/clear air not specified +Operational + + +2303 +011030 +Extended degree of turbulence +9 +Light +cloud/clear air not specified +Operational + + +2304 +011030 +Extended degree of turbulence +10 +Moderate +cloud/clear air not specified +Operational + + +2305 +011030 +Extended degree of turbulence +11 +Severe +cloud/clear air not specified +Operational + + +2306 +011030 +Extended degree of turbulence +12 +Extreme, in clear air +Operational + + +2307 +011030 +Extended degree of turbulence +13 +Extreme, in cloud +Operational + + +2308 +011030 +Extended degree of turbulence +14 +Extreme, cloud/clear air not specified +Operational + + +2309 +011030 +Extended degree of turbulence +15 +Light, isolated moderate +Operational + + +2310 +011030 +Extended degree of turbulence +16 +Light, occasional moderate +Operational + + +2311 +011030 +Extended degree of turbulence +17 +Light, frequently moderate +Operational + + +2312 +011030 +Extended degree of turbulence +18 +Moderate, isolated severe +Operational + + +2313 +011030 +Extended degree of turbulence +19 +Moderate, occasional severe +Operational + + +2314 +011030 +Extended degree of turbulence +20 +Moderate, frequently severe +Operational + + +2315 +011030 +Extended degree of turbulence +21 +Severe, isolated extreme +Operational + + +2316 +011030 +Extended degree of turbulence +22 +Severe, occasional extreme +Operational + + +2317 +011030 +Extended degree of turbulence +23 +Severe, frequently extreme +Operational + + +2318 +011030 +Extended degree of turbulence +24-62 +Reserved +Operational + + +2319 +011030 +Extended degree of turbulence +63 +Missing value +Operational + + +2320 +011031 +Degree of turbulence +0 +Nil +in cloud +Operational + + +2321 +011031 +Degree of turbulence +1 +Light +in cloud +Operational + + +2322 +011031 +Degree of turbulence +2 +Moderate +in cloud +Operational + + +2323 +011031 +Degree of turbulence +3 +Severe +in cloud +Operational + + +2324 +011031 +Degree of turbulence +4 +Nil +in clear air +Operational + + +2325 +011031 +Degree of turbulence +5 +Light +in clear air +Operational + + +2326 +011031 +Degree of turbulence +6 +Moderate +in clear air +Operational + + +2327 +011031 +Degree of turbulence +7 +Severe +in clear air +Operational + + +2328 +011031 +Degree of turbulence +8 +Nil +cloud/clear air not specified +Operational + + +2329 +011031 +Degree of turbulence +9 +Light +cloud/clear air not specified +Operational + + +2330 +011031 +Degree of turbulence +10 +Moderate +cloud/clear air not specified +Operational + + +2331 +011031 +Degree of turbulence +11 +Severe +cloud/clear air not specified +Operational + + +2332 +011031 +Degree of turbulence +12 +Extreme, in clear air +Operational + + +2333 +011031 +Degree of turbulence +13 +Extreme, in cloud +Operational + + +2334 +011031 +Degree of turbulence +14 +Extreme, cloud/clear air not specified +Operational + + +2335 +011031 +Degree of turbulence +15 +Missing value +Operational + + +2336 +011037 +Turbulence index +0 +ave < 0.1 +peak <0.1 +Operational + + +2337 +011037 +Turbulence index +1 +ave < 0.1 +0.1 =< peak < 0.2 +Operational + + +2338 +011037 +Turbulence index +2 +0.1 =< ave < 0.2 +0.1 =< peak < 0.2 +Operational + + +2339 +011037 +Turbulence index +3 +ave <0.1 +0.2 =< peak < 0.3 +Operational + + +2340 +011037 +Turbulence index +4 +0.1 =< ave < 0.2 +0.2 =< peak < 0.3 +Operational + + +2341 +011037 +Turbulence index +5 +0.2 =< ave < 0.3 +0.2 =< peak < 0.3 +Operational + + +2342 +011037 +Turbulence index +6 +ave < 0.1 +0.3 =< peak < 0.4 +Operational + + +2343 +011037 +Turbulence index +7 +0.1 =< ave < 0.2 +0.3 =< peak < 0.4 +Operational + + +2344 +011037 +Turbulence index +8 +0.2 =< ave < 0.3 +0.3 =< peak < 0.4 +Operational + + +2345 +011037 +Turbulence index +9 +0.3 =< ave < 0.4 +0.3 =< peak < 0.4 +Operational + + +2346 +011037 +Turbulence index +10 +ave < 0.1 +0.4 =< peak < 0.5 +Operational + + +2347 +011037 +Turbulence index +11 +0.1 =< ave < 0.2 +0.4 =< peak < 0.5 +Operational + + +2348 +011037 +Turbulence index +12 +0.2 =< ave < 0.3 +0.4 =< peak < 0.5 +Operational + + +2349 +011037 +Turbulence index +13 +0.3 =< ave < 0.4 +0.4 =< peak < 0.5 +Operational + + +2350 +011037 +Turbulence index +14 +0.4 =< ave < 0.5 +0.4 =< peak < 0.5 +Operational + + +2351 +011037 +Turbulence index +15 +ave < 0.1 +0.5 =< peak < 0.8 +Operational + + +2352 +011037 +Turbulence index +16 +0.1 =< ave < 0.2 +0.5 =< peak < 0.8 +Operational + + +2353 +011037 +Turbulence index +17 +0.2 =< ave < 0.3 +0.5 =< peak < 0.8 +Operational + + +2354 +011037 +Turbulence index +18 +0.3 =< ave < 0.4 +0.5 =< peak < 0.8 +Operational + + +2355 +011037 +Turbulence index +19 +0.4 =< ave < 0.5 +0.5 =< peak < 0.8 +Operational + + +2356 +011037 +Turbulence index +20 +0.5 =< ave < 0.8 +0.5 =< peak < 0.8 +Operational + + +2357 +011037 +Turbulence index +21 +ave < 0.1 +0.8 =< peak +Operational + + +2358 +011037 +Turbulence index +22 +0.1 =< ave < 0.2 +0.8 =< peak +Operational + + +2359 +011037 +Turbulence index +23 +0.2 =< ave < 0.3 +0.8 =< peak +Operational + + +2360 +011037 +Turbulence index +24 +0.3 =< ave < 0.4 +0.8 =< peak +Operational + + +2361 +011037 +Turbulence index +25 +0.4 =< ave < 0.5 +0.8 =< peak +Operational + + +2362 +011037 +Turbulence index +26 +0.5 =< ave < 0.8 +0.8 =< peak +Operational + + +2363 +011037 +Turbulence index +27 +0.8 =< ave +0.8 =< peak +Operational + + +2364 +011037 +Turbulence index +28 +Nil +Nil +Operational + + +2365 +011037 +Turbulence index +29-62 +Reserved +Reserved +Operational + + +2366 +011037 +Turbulence index +63 +Missing value +Missing value +Operational + + +2367 +011038 +Time of occurrence of peak eddy dissipation rate +0 +min < 1 +Operational + + +2368 +011038 +Time of occurrence of peak eddy dissipation rate +1 +1 =< min < 2 +Operational + + +2369 +011038 +Time of occurrence of peak eddy dissipation rate +2 +2 =< min < 3 +Operational + + +2370 +011038 +Time of occurrence of peak eddy dissipation rate +3 +3 =< min < 4 +Operational + + +2371 +011038 +Time of occurrence of peak eddy dissipation rate +4 +4 =< min < 5 +Operational + + +2372 +011038 +Time of occurrence of peak eddy dissipation rate +5 +5 =< min < 6 +Operational + + +2373 +011038 +Time of occurrence of peak eddy dissipation rate +6 +6 =< min < 7 +Operational + + +2374 +011038 +Time of occurrence of peak eddy dissipation rate +7 +7 =< min < 8 +Operational + + +2375 +011038 +Time of occurrence of peak eddy dissipation rate +8 +8 =< min < 9 +Operational + + +2376 +011038 +Time of occurrence of peak eddy dissipation rate +9 +9 =< min < 10 +Operational + + +2377 +011038 +Time of occurrence of peak eddy dissipation rate +10 +10 =< min < 11 +Operational + + +2378 +011038 +Time of occurrence of peak eddy dissipation rate +11 +11 =< min < 12 +Operational + + +2379 +011038 +Time of occurrence of peak eddy dissipation rate +12 +12 =< min < 13 +Operational + + +2380 +011038 +Time of occurrence of peak eddy dissipation rate +13 +13 =< min < 14 +Operational + + +2381 +011038 +Time of occurrence of peak eddy dissipation rate +14 +14 =< min < 15 +Operational + + +2382 +011038 +Time of occurrence of peak eddy dissipation rate +15 +No timing information available +Operational + + +2383 +011038 +Time of occurrence of peak eddy dissipation rate +16-30 +Reserved +Operational + + +2384 +011038 +Time of occurrence of peak eddy dissipation rate +31 +Missing value +Operational + + +2385 +011039 +Extended time of occurrence of peak eddy dissipation rate +0 +min < 1 +Operational + + +2386 +011039 +Extended time of occurrence of peak eddy dissipation rate +1 +1 =< min < 2 +Operational + + +2387 +011039 +Extended time of occurrence of peak eddy dissipation rate +2 +2 =< min < 3 +Operational + + +2388 +011039 +Extended time of occurrence of peak eddy dissipation rate +3 +3 =< min < 4 +Operational + + +2389 +011039 +Extended time of occurrence of peak eddy dissipation rate +4 +4 =< min < 5 +Operational + + +2390 +011039 +Extended time of occurrence of peak eddy dissipation rate +5 +5 =< min < 6 +Operational + + +2391 +011039 +Extended time of occurrence of peak eddy dissipation rate +6 +6 =< min < 7 +Operational + + +2392 +011039 +Extended time of occurrence of peak eddy dissipation rate +7 +7 =< min < 8 +Operational + + +2393 +011039 +Extended time of occurrence of peak eddy dissipation rate +8 +8 =< min < 9 +Operational + + +2394 +011039 +Extended time of occurrence of peak eddy dissipation rate +9 +9 =< min < 10 +Operational + + +2395 +011039 +Extended time of occurrence of peak eddy dissipation rate +10 +10 =< min < 11 +Operational + + +2396 +011039 +Extended time of occurrence of peak eddy dissipation rate +11 +11 =< min < 12 +Operational + + +2397 +011039 +Extended time of occurrence of peak eddy dissipation rate +12 +12 =< min < 13 +Operational + + +2398 +011039 +Extended time of occurrence of peak eddy dissipation rate +13 +13 =< min < 14 +Operational + + +2399 +011039 +Extended time of occurrence of peak eddy dissipation rate +14 +14 =< min < 15 +Operational + + +2400 +011039 +Extended time of occurrence of peak eddy dissipation rate +15-59 +As above to 59 =< min < 60 +Operational + + +2401 +011039 +Extended time of occurrence of peak eddy dissipation rate +60 +No timing information available +Operational + + +2402 +011039 +Extended time of occurrence of peak eddy dissipation rate +61-62 +Reserved +Operational + + +2403 +011039 +Extended time of occurrence of peak eddy dissipation rate +63 +Missing value +Operational + + +2404 +013038 +Superadiabatic indicator +0 +Not superadiabatic +Operational + + +2405 +013038 +Superadiabatic indicator +1 +Superadiabatic +Operational + + +2406 +013038 +Superadiabatic indicator +2 +Reserved +Operational + + +2407 +013038 +Superadiabatic indicator +3 +Missing value +Operational + + +2408 +013039 +Terrain type (ice/snow) +0 +Sea ice +Operational + + +2409 +013039 +Terrain type (ice/snow) +1 +Snow on land +Operational + + +2410 +013039 +Terrain type (ice/snow) +2-6 +Reserved +Operational + + +2411 +013039 +Terrain type (ice/snow) +7 +Missing value +Operational + + +2412 +013040 +Surface flag +0 +Land +Operational + + +2413 +013040 +Surface flag +1 +Reserved +Operational + + +2414 +013040 +Surface flag +2 +Near coast +Operational + + +2415 +013040 +Surface flag +3 +Ice +Operational + + +2416 +013040 +Surface flag +4 +Possible ice +Operational + + +2417 +013040 +Surface flag +5 +Ocean +Operational + + +2418 +013040 +Surface flag +6 +Coast +Operational + + +2419 +013040 +Surface flag +7 +Inland water +Operational + + +2420 +013040 +Surface flag +8 +Snow cover +Operational + + +2421 +013040 +Surface flag +9 +Sea ice +Operational + + +2422 +013040 +Surface flag +10 +Standing water +Operational + + +2423 +013040 +Surface flag +11 +Snow +Operational + + +2424 +013040 +Surface flag +12-14 +Reserved +Operational + + +2425 +013040 +Surface flag +15 +Missing value +Operational + + +2426 +013041 +Pasquill-Gifford stability category +1 +A +Operational + + +2427 +013041 +Pasquill-Gifford stability category +2 +A - B +Operational + + +2428 +013041 +Pasquill-Gifford stability category +3 +B +Operational + + +2429 +013041 +Pasquill-Gifford stability category +4 +B - C +Operational + + +2430 +013041 +Pasquill-Gifford stability category +5 +C +Operational + + +2431 +013041 +Pasquill-Gifford stability category +6 +D +Operational + + +2432 +013041 +Pasquill-Gifford stability category +7 +E +Operational + + +2433 +013041 +Pasquill-Gifford stability category +8 +F +Operational + + +2434 +013041 +Pasquill-Gifford stability category +9 +G +Operational + + +2435 +013041 +Pasquill-Gifford stability category +10-14 +Reserved +Operational + + +2436 +013041 +Pasquill-Gifford stability category +15 +Missing value +Operational + + +2437 +013051 +Frequency group, precipitation +0 +Smaller than any value in the 30-year period +Operational + + +2438 +013051 +Frequency group, precipitation +1 +In the first quintile +Operational + + +2439 +013051 +Frequency group, precipitation +2 +In the second quintile +Operational + + +2440 +013051 +Frequency group, precipitation +3 +In the third quintile +Operational + + +2441 +013051 +Frequency group, precipitation +4 +In the fourth quintile +Operational + + +2442 +013051 +Frequency group, precipitation +5 +In the fifth quintile +Operational + + +2443 +013051 +Frequency group, precipitation +6 +Greater than any value in the 30-year period +Operational + + +2444 +013051 +Frequency group, precipitation +7-14 +Reserved +Operational + + +2445 +013051 +Frequency group, precipitation +15 +Missing value +Operational + + +2446 +013056 +Character and intensity of precipitation +0 +No precipitation +Operational + + +2447 +013056 +Character and intensity of precipitation +1 +Light intermittent +Operational + + +2448 +013056 +Character and intensity of precipitation +2 +Moderate intermittent +Operational + + +2449 +013056 +Character and intensity of precipitation +3 +Heavy intermittent +Operational + + +2450 +013056 +Character and intensity of precipitation +4 +Very heavy intermittent +Operational + + +2451 +013056 +Character and intensity of precipitation +5 +Light continuous +Operational + + +2452 +013056 +Character and intensity of precipitation +6 +Moderate continuous +Operational + + +2453 +013056 +Character and intensity of precipitation +7 +Heavy continuous +Operational + + +2454 +013056 +Character and intensity of precipitation +8 +Very heavy continuous +Operational + + +2455 +013056 +Character and intensity of precipitation +9 +Variable - alternatively light and heavy +Operational + + +2456 +013056 +Character and intensity of precipitation +10-14 +Reserved +Operational + + +2457 +013056 +Character and intensity of precipitation +15 +Missing value +Operational + + +2458 +013057 +Time of beginning or end of precipitation +0 +No precipitation +Operational + + +2459 +013057 +Time of beginning or end of precipitation +1 +Within the last hour +Operational + + +2460 +013057 +Time of beginning or end of precipitation +2 +1 to 2 hours ago +Operational + + +2461 +013057 +Time of beginning or end of precipitation +3 +2 to 3 hours ago +Operational + + +2462 +013057 +Time of beginning or end of precipitation +4 +3 to 4 hours ago +Operational + + +2463 +013057 +Time of beginning or end of precipitation +5 +4 to 5 hours ago +Operational + + +2464 +013057 +Time of beginning or end of precipitation +6 +5 to 6 hours ago +Operational + + +2465 +013057 +Time of beginning or end of precipitation +7 +6 to 8 hours ago +Operational + + +2466 +013057 +Time of beginning or end of precipitation +8 +8 to 10 hours ago +Operational + + +2467 +013057 +Time of beginning or end of precipitation +9 +More than 10 hours ago +Operational + + +2468 +013057 +Time of beginning or end of precipitation +10-14 +Reserved +Operational + + +2469 +013057 +Time of beginning or end of precipitation +15 +Missing value +Operational + + +2470 +015025 +Type of pollutant +0 +Ozone +Operational + + +2471 +015025 +Type of pollutant +1-10 +Reserved +Operational + + +2472 +015025 +Type of pollutant +11 +Fine particulate matter (diameter < 2.5 microns) +Operational + + +2473 +015025 +Type of pollutant +12 +Fine particulate matter (diameter < 10 microns) +Operational + + +2474 +015025 +Type of pollutant +13-14 +Reserved +Operational + + +2475 +015025 +Type of pollutant +15 +Missing value +Operational + + +2476 +019001 +Type of synoptic feature +0 +Depression or low (extratroplcal) +Operational + + +2477 +019001 +Type of synoptic feature +1 +Tropical depression +Operational + + +2478 +019001 +Type of synoptic feature +2 +Tropical storm +Operational + + +2479 +019001 +Type of synoptic feature +3 +Severe tropical storm +Operational + + +2480 +019001 +Type of synoptic feature +4 +Typhoon +Operational + + +2481 +019001 +Type of synoptic feature +5-9 +Reserved +Operational + + +2482 +019001 +Type of synoptic feature +10 +Dust/sandstorm +Operational + + +2483 +019001 +Type of synoptic feature +11-62 +Reserved +Operational + + +2484 +019001 +Type of synoptic feature +63 +Missing value +Operational + + +2485 +019008 +Vertical extent of circulation +0 +Reserved +Operational + + +2486 +019008 +Vertical extent of circulation +1 +Shallow (top of circulation below 700-hPa level) +Operational + + +2487 +019008 +Vertical extent of circulation +2 +Medium (top between 700-hPa and 400-hPa level) +Operational + + +2488 +019008 +Vertical extent of circulation +3 +Deep (top above 400-hPa level) +Operational + + +2489 +019008 +Vertical extent of circulation +4-6 +Reserved +Operational + + +2490 +019008 +Vertical extent of circulation +7 +Missing value +Operational + + +2491 +019010 +Method for tracking the centre of synoptic feature +1 +Minimum value of sea level pressure +Operational + + +2492 +019010 +Method for tracking the centre of synoptic feature +2 +Maximum value of 850 hPa relative vorticity +Operational + + +2493 +019010 +Method for tracking the centre of synoptic feature +3-14 +Reserved +Operational + + +2494 +019010 +Method for tracking the centre of synoptic feature +15 +Missing value +Operational + + +2495 +019100 +Time interval to calculate the movement of the tropical cyclone +0-2 +Not used +Operational + + +2496 +019100 +Time interval to calculate the movement of the tropical cyclone +3 +During the preceding 15 minutes +Operational + + +2497 +019100 +Time interval to calculate the movement of the tropical cyclone +4 +During the preceding 30 minutes +Operational + + +2498 +019100 +Time interval to calculate the movement of the tropical cyclone +5 +During the preceding 1 hour +Operational + + +2499 +019100 +Time interval to calculate the movement of the tropical cyclone +6 +During the preceding 2 hours +Operational + + +2500 +019100 +Time interval to calculate the movement of the tropical cyclone +7 +During the preceding 3 hours +Operational + + +2501 +019100 +Time interval to calculate the movement of the tropical cyclone +8 +During the preceding 6 hours +Operational + + +2502 +019100 +Time interval to calculate the movement of the tropical cyclone +9 +During a period of more than 6 hours +Operational + + +2503 +019100 +Time interval to calculate the movement of the tropical cyclone +10 +Undetermined +Operational + + +2504 +019100 +Time interval to calculate the movement of the tropical cyclone +11-14 +Not used +Operational + + +2505 +019100 +Time interval to calculate the movement of the tropical cyclone +15 +Missing value +Operational + + +2506 +019101 +Accuracy of the position of the centre of the tropical cyclone +0 +Reserved +Operational + + +2507 +019101 +Accuracy of the position of the centre of the tropical cyclone +1 +Eye visible on radar scope, accuracy good (within 10 km) +Operational + + +2508 +019101 +Accuracy of the position of the centre of the tropical cyclone +2 +Eye visible on radar scope, accuracy fair (within 30 km) +Operational + + +2509 +019101 +Accuracy of the position of the centre of the tropical cyclone +3 +Eye visible on radar scope, accuracy poor (within 50 km) +Operational + + +2510 +019101 +Accuracy of the position of the centre of the tropical cyclone +4 +Position of the centre within the area covered by the radar scope, determination by means of the spiral-band overlay, accuracy good (within 10 km) +Operational + + +2511 +019101 +Accuracy of the position of the centre of the tropical cyclone +5 +Position of the centre within the area covered by the radar scope, determination by means of the spiral-band overlay, accuracy fair (within 30 km) +Operational + + +2512 +019101 +Accuracy of the position of the centre of the tropical cyclone +6 +Position of the centre within the area covered by the radar scope, determination by means of the spiral-band overlay, accuracy poor (within 50 km) +Operational + + +2513 +019101 +Accuracy of the position of the centre of the tropical cyclone +7 +Position of the centre outside the area covered by the radar scope, extrapolation by means of the spiral-band overlay +Operational + + +2514 +019101 +Accuracy of the position of the centre of the tropical cyclone +8-9 +Reserved +Operational + + +2515 +019101 +Accuracy of the position of the centre of the tropical cyclone +10 +Accuracy undetermined +Operational + + +2516 +019101 +Accuracy of the position of the centre of the tropical cyclone +11-14 +Not used +Operational + + +2517 +019101 +Accuracy of the position of the centre of the tropical cyclone +15 +Missing value +Operational + + +2518 +019102 +Shape and definition of the eye of the tropical cyclone +0 +Circular +Operational + + +2519 +019102 +Shape and definition of the eye of the tropical cyclone +1 +Elliptical - the minor axis is at least 3/4 the length of the major axis +well defined +Operational + + +2520 +019102 +Shape and definition of the eye of the tropical cyclone +2 +Elliptical - the minor axis is less than 3/4 the length of the major axis +well defined +Operational + + +2521 +019102 +Shape and definition of the eye of the tropical cyclone +3 +Apparent double eye +well defined +Operational + + +2522 +019102 +Shape and definition of the eye of the tropical cyclone +4 +Other shape +well defined +Operational + + +2523 +019102 +Shape and definition of the eye of the tropical cyclone +5 +Ill defined +Operational + + +2524 +019102 +Shape and definition of the eye of the tropical cyclone +6 +Undetermined +Operational + + +2525 +019102 +Shape and definition of the eye of the tropical cyclone +7 +Missing value +Operational + + +2526 +019103 +Diameter of major axis of the eye of the tropical cyclone +0 +Less than 5 km +Operational + + +2527 +019103 +Diameter of major axis of the eye of the tropical cyclone +1 +5 to less than 10 km +Operational + + +2528 +019103 +Diameter of major axis of the eye of the tropical cyclone +2 +10 to less than 15 km +Operational + + +2529 +019103 +Diameter of major axis of the eye of the tropical cyclone +3 +15 to less than 20 km +Operational + + +2530 +019103 +Diameter of major axis of the eye of the tropical cyclone +4 +20 to less than 25 km +Operational + + +2531 +019103 +Diameter of major axis of the eye of the tropical cyclone +5 +25 to less than 30 km +Operational + + +2532 +019103 +Diameter of major axis of the eye of the tropical cyclone +6 +30 to less than 35 km +Operational + + +2533 +019103 +Diameter of major axis of the eye of the tropical cyclone +7 +35 to less than 40 km +Operational + + +2534 +019103 +Diameter of major axis of the eye of the tropical cyclone +8 +40 to less than 50 km +Operational + + +2535 +019103 +Diameter of major axis of the eye of the tropical cyclone +9 +50 km and greater +Operational + + +2536 +019103 +Diameter of major axis of the eye of the tropical cyclone +10 +Undetermined +Operational + + +2537 +019103 +Diameter of major axis of the eye of the tropical cyclone +11-14 +Not used +Operational + + +2538 +019103 +Diameter of major axis of the eye of the tropical cyclone +15 +Missing value +Operational + + +2539 +019104 +Change in character of the eye during the 30 minutes +0 +Eye has first become visible during the past 30 minutes +Operational + + +2540 +019104 +Change in character of the eye during the 30 minutes +1 +No significant change in the characteristics or size of the eye +Operational + + +2541 +019104 +Change in character of the eye during the 30 minutes +2 +Eye has become smaller with no other significant change in characteristics +Operational + + +2542 +019104 +Change in character of the eye during the 30 minutes +3 +Eye has become larger with no other significant change in characteristics +Operational + + +2543 +019104 +Change in character of the eye during the 30 minutes +4 +Eye has become less distinct with no significant change in size +Operational + + +2544 +019104 +Change in character of the eye during the 30 minutes +5 +Eye has become less distinct and decreased in size +Operational + + +2545 +019104 +Change in character of the eye during the 30 minutes +6 +Eye has become less distinct and increased in size +Operational + + +2546 +019104 +Change in character of the eye during the 30 minutes +7 +Eye has become more distinct with no significant change in size +Operational + + +2547 +019104 +Change in character of the eye during the 30 minutes +8 +Eye has become more distinct and decreased in size +Operational + + +2548 +019104 +Change in character of the eye during the 30 minutes +9 +Eye has become more distinct and increased in size +Operational + + +2549 +019104 +Change in character of the eye during the 30 minutes +10 +Change in character and size of eye cannot be determined +Operational + + +2550 +019104 +Change in character of the eye during the 30 minutes +11-14 +Not used +Operational + + +2551 +019104 +Change in character of the eye during the 30 minutes +15 +Missing value +Operational + + +2552 +019105 +Distance between the end of spiral band and the centre +0 +0 to less than 100 km +Operational + + +2553 +019105 +Distance between the end of spiral band and the centre +1 +100 to less than 200 km +Operational + + +2554 +019105 +Distance between the end of spiral band and the centre +2 +200 to less than 300 km +Operational + + +2555 +019105 +Distance between the end of spiral band and the centre +3 +300 to less than 400 km +Operational + + +2556 +019105 +Distance between the end of spiral band and the centre +4 +400 to less than 500 km +Operational + + +2557 +019105 +Distance between the end of spiral band and the centre +5 +500 to less than 600 km +Operational + + +2558 +019105 +Distance between the end of spiral band and the centre +6 +600 to less than 800 km +Operational + + +2559 +019105 +Distance between the end of spiral band and the centre +7 +800 km or more +Operational + + +2560 +019105 +Distance between the end of spiral band and the centre +8-9 +Reserved +Operational + + +2561 +019105 +Distance between the end of spiral band and the centre +10 +Doubtful or undetermined +Operational + + +2562 +019105 +Distance between the end of spiral band and the centre +11-14 +Not used +Operational + + +2563 +019105 +Distance between the end of spiral band and the centre +15 +Missing value +Operational + + +2564 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +0 +Less than 1 hour +Operational + + +2565 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +1 +1 to less than 2 hours +Operational + + +2566 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +2 +2 to less than 3 hours +Operational + + +2567 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +3 +3 to less than 6 hours +Operational + + +2568 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +4 +6 to less than 9 hours +Operational + + +2569 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +5 +9 to less than 12 hours +Operational + + +2570 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +6 +12 to less than 15 hours +Operational + + +2571 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +7 +15 to less than 18 hours +Operational + + +2572 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +8 +18 to less than 21 hours +Operational + + +2573 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +9 +21 to less than 30 hours +Operational + + +2574 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +10-14 +Not used +Operational + + +2575 +019107 +Time interval over which the movement of the tropical cyclone has been calculated +15 +Missing value +Operational + + +2576 +019108 +Accuracy of geographical position of the tropical cyclone +0 +Cyclone centre within 10 km of the transmitted position +Operational + + +2577 +019108 +Accuracy of geographical position of the tropical cyclone +1 +Cyclone centre within 20 km of the transmitted position +Operational + + +2578 +019108 +Accuracy of geographical position of the tropical cyclone +2 +Cyclone centre within 50 km of the transmitted position +Operational + + +2579 +019108 +Accuracy of geographical position of the tropical cyclone +3 +Cyclone centre within 100 km of the transmitted position +Operational + + +2580 +019108 +Accuracy of geographical position of the tropical cyclone +4 +Cyclone centre within 200 km of the transmitted position +Operational + + +2581 +019108 +Accuracy of geographical position of the tropical cyclone +5 +Cyclone centre within 300 km of the transmitted position +Operational + + +2582 +019108 +Accuracy of geographical position of the tropical cyclone +6 +Cyclone centre undetermined +Operational + + +2583 +019108 +Accuracy of geographical position of the tropical cyclone +7 +Missing value +Operational + + +2584 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +0 +Less than 1 deg of latitude +Operational + + +2585 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +1 +1 deg to less than 2 deg of latitude +Operational + + +2586 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +2 +2 deg to less than 3 deg of latitude +Operational + + +2587 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +3 +3 deg to less than 4 deg of latitude +Operational + + +2588 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +4 +4 deg to less than 5 deg of latitude +Operational + + +2589 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +5 +5 deg to less than 6 deg of latitude +Operational + + +2590 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +6 +6 deg to less than 7 deg of latitude +Operational + + +2591 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +7 +7 deg to less than 8 deg of latitude +Operational + + +2592 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +8 +8 deg to less than 9 deg of latitude +Operational + + +2593 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +9 +9 deg of latitude or more +Operational + + +2594 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +10 +Undetermined +Operational + + +2595 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +11-14 +Not used +Operational + + +2596 +019109 +Mean diameter of the overcast cloud of the tropical cyclone +15 +Missing value +Operational + + +2597 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +0 +Much weakening +Operational + + +2598 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +1 +Weakening +Operational + + +2599 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +2 +No change +Operational + + +2600 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +3 +Intensification +Operational + + +2601 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +4 +Strong Intensification +Operational + + +2602 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +5-8 +Reserved +Operational + + +2603 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +9 +Not observed previously +Operational + + +2604 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +10 +Undetermined +Operational + + +2605 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +11-14 +Not used +Operational + + +2606 +019110 +Apparent 24-hour change in intensity of the tropical cyclone +15 +Missing value +Operational + + +2607 +019113 +Cloud pattern type of the DT-number +1 +Curved Band +Operational + + +2608 +019113 +Cloud pattern type of the DT-number +2 +Shear +Operational + + +2609 +019113 +Cloud pattern type of the DT-number +3 +Eye +Operational + + +2610 +019113 +Cloud pattern type of the DT-number +4 +Banding Eye +Operational + + +2611 +019113 +Cloud pattern type of the DT-number +5 +Central Dense Overcast (CDO) +Operational + + +2612 +019113 +Cloud pattern type of the DT-number +6 +Embedded Centre +Operational + + +2613 +019113 +Cloud pattern type of the DT-number +7 +Centre Cold Cover (CCC) +Operational + + +2614 +019113 +Cloud pattern type of the DT-number +8-14 +Reserved +Operational + + +2615 +019113 +Cloud pattern type of the DT-number +15 +Missing value +Operational + + +2616 +019117 +Cloud picture type of the PT-number +1 +A (curved band) +Operational + + +2617 +019117 +Cloud picture type of the PT-number +2 +B (CDO) +Operational + + +2618 +019117 +Cloud picture type of the PT-number +3 +C (shear) +Operational + + +2619 +019117 +Cloud picture type of the PT-number +4-6 +Reserved +Operational + + +2620 +019117 +Cloud picture type of the PT-number +7 +Missing value +Operational + + +2621 +019119 +Type of the final T-number +1 +DT-number +Operational + + +2622 +019119 +Type of the final T-number +2 +PT-number +Operational + + +2623 +019119 +Type of the final T-number +3 +MET-number +Operational + + +2624 +019119 +Type of the final T-number +4-6 +Reserved +Operational + + +2625 +019119 +Type of the final T-number +7 +Missing value +Operational + + +2626 +020003 +Present weather +00-49 No precipitation at the station at the time of observation +Operational + + +2627 +020003 +Present weather +00-19 No precipitation, fog, ice fog (except for 11 and 12), duststorm, sandstorm, drifting or blowing snow at the station at the time of observation or, except for 09 and 17, during the preceding hour +Operational + + +2628 +020003 +Present weather +00-03 No meteors except photometeors +Operational + + +2629 +020003 +Present weather +00 +Cloud development not observed or not observable +Characteristic change of the state of sky during the past hour +Operational + + +2630 +020003 +Present weather +01 +Clouds generally dissolving or becoming less developed +Characteristic change of the state of sky during the past hour +Operational + + +2631 +020003 +Present weather +02 +State of sky on the whole unchanged +Characteristic change of the state of sky during the past hour +Operational + + +2632 +020003 +Present weather +03 +Clouds generally forming or developing +Characteristic change of the state of sky during the past hour +Operational + + +2633 +020003 +Present weather +04-09 Haze, dust, sand or smoke +Operational + + +2634 +020003 +Present weather +04 +Visibility reduced by smoke, e.g. veldt or forest fires, industrial smoke or volcanic ashes +Operational + + +2635 +020003 +Present weather +05 +Haze +Operational + + +2636 +020003 +Present weather +06 +Widespread dust in suspension in the air, not raised by wind at or near the station at the time of observation +Operational + + +2637 +020003 +Present weather +07 +Dust or sand raised by wind at or near the station at the time of observation, but no well-developed dust whirl(s) or sand whirl(s), and no duststorm or sandstorm seen; or, in the case of sea stations and coastal stations, blowing spray at the station +Operational + + +2638 +020003 +Present weather +08 +Well-developed dust whirl(s) or sand whirl(s) seen at or near the station during the preceding hour or at the same time of observation, but no duststorm or sandstorm +Operational + + +2639 +020003 +Present weather +09 +Duststorm or sandstorm within sight at the time of observation, or at the station during the preceding hour +Operational + + +2640 +020003 +Present weather +10 +Mist +Operational + + +2641 +020003 +Present weather +11 +Patches +shallow fog or ice fog at the station, whether on land or sea, not deeper than about 2 metres on land or 10 metres at sea +Operational + + +2642 +020003 +Present weather +12 +More or less continuous +shallow fog or ice fog at the station, whether on land or sea, not deeper than about 2 metres on land or 10 metres at sea +Operational + + +2643 +020003 +Present weather +13 +Lightning visible, no thunder heard +Operational + + +2644 +020003 +Present weather +14 +Precipitation within sight, not reaching the ground or the surface of the sea +Operational + + +2645 +020003 +Present weather +15 +Precipitation within sight, reaching the ground or the surface of the sea, but distant, i.e. estimated to be more than 5 km from the station +Operational + + +2646 +020003 +Present weather +16 +Precipitation within sight, reaching the ground or the surface of the sea, near to, but not at the station +Operational + + +2647 +020003 +Present weather +17 +Thunderstorm, but no precipitation at the time of observation +Operational + + +2648 +020003 +Present weather +18 +Squalls +at or within sight of the station during the preceding hour or at the time of observation +Operational + + +2649 +020003 +Present weather +19 +Funnel cloud(s) +at or within sight of the station during the preceding hour or at the time of observation +Operational + + +2650 +020003 +Present weather +20-29 Precipitation, fog, ice fog or thunderstorm at the station during the preceding hour but not at the time of observation +Operational + + +2651 +020003 +Present weather +20 +Drizzle (not freezing) or snow grains +not falling as shower(s) +Operational + + +2652 +020003 +Present weather +21 +Rain (not freezing) +not falling as shower(s) +Operational + + +2653 +020003 +Present weather +22 +Snow +not falling as shower(s) +Operational + + +2654 +020003 +Present weather +23 +Rain and snow or ice pellets +not falling as shower(s) +Operational + + +2655 +020003 +Present weather +24 +Freezing drizzle or freezing rain +not falling as shower(s) +Operational + + +2656 +020003 +Present weather +25 +Shower(s) of rain +not falling as shower(s) +Operational + + +2657 +020003 +Present weather +26 +Shower(s) of snow, or of rain and snow +Operational + + +2658 +020003 +Present weather +27 +Shower(s) of hail, or of rain and hail +Operational + + +2659 +020003 +Present weather +28 +Fog or ice fog +Operational + + +2660 +020003 +Present weather +29 +Thunderstorm (with or without precipitation) +Operational + + +2661 +020003 +Present weather +30-39 Duststorm, sandstorm, drifting or blowing snow +Operational + + +2662 +020003 +Present weather +30 +Slight or moderate duststorm or sandstorm +has decreased during the preceding hour +Operational + + +2663 +020003 +Present weather +31 +Slight or moderate duststorm or sandstorm +no appreciable change during the preceding hour +Operational + + +2664 +020003 +Present weather +32 +Slight or moderate duststorm or sandstorm +has begun or has increased during the preceding hour +Operational + + +2665 +020003 +Present weather +33 +Severe duststorm or sandstorm +has decreased during the preceding hour +Operational + + +2666 +020003 +Present weather +34 +Severe duststorm or sandstorm +no appreciable change during the preceding hour +Operational + + +2667 +020003 +Present weather +35 +Severe duststorm or sandstorm +has begun or has increased during the preceding hour +Operational + + +2668 +020003 +Present weather +36 +Slight or moderate drifting snow +generally low (below eye level) +Operational + + +2669 +020003 +Present weather +37 +Heavy drifting snow +generally low (below eye level) +Operational + + +2670 +020003 +Present weather +38 +Slight or moderate blowing snow +generally high (above eye level) +Operational + + +2671 +020003 +Present weather +39 +Heavy blowing snow +generally high (above eye level) +Operational + + +2672 +020003 +Present weather +40-49 Fog or ice fog at the time of observation +Operational + + +2673 +020003 +Present weather +40 +Fog or ice fog at a distance at the time of observation, but not at the station during the preceding hour, the fog or ice fog extending to a level above that of the observer +Operational + + +2674 +020003 +Present weather +41 +Fog or ice fog in patches +Operational + + +2675 +020003 +Present weather +42 +Fog or ice fog, sky visible +has become thinner during the preceding hour +Operational + + +2676 +020003 +Present weather +43 +Fog or ice fog, sky invisible +has become thinner during the preceding hour +Operational + + +2677 +020003 +Present weather +44 +Fog or ice fog, sky visible +no appreciable change during the preceding hour +Operational + + +2678 +020003 +Present weather +45 +Fog or ice fog, sky invisible +no appreciable change during the preceding hour +Operational + + +2679 +020003 +Present weather +46 +Fog or ice fog, sky visible +has begun or has become thicker during the preceding hour +Operational + + +2680 +020003 +Present weather +47 +Fog or ice fog, sky invisible +has begun or has become thicker during the preceding hour +Operational + + +2681 +020003 +Present weather +48 +Fog, depositing rime, sky visible +Operational + + +2682 +020003 +Present weather +49 +Fog, depositing rime, sky invisible +Operational + + +2683 +020003 +Present weather +50-99 Precipitation at the station at the time of observation +Operational + + +2684 +020003 +Present weather +50-59 Drizzle +Operational + + +2685 +020003 +Present weather +50 +Drizzle, not freezing, intermittent +slight at time of observation +Operational + + +2686 +020003 +Present weather +51 +Drizzle, not freezing, continuous +slight at time of observation +Operational + + +2687 +020003 +Present weather +52 +Drizzle, not freezing, intermittent +moderate at time of observation +Operational + + +2688 +020003 +Present weather +53 +Drizzle, not freezing, continuous +moderate at time of observation +Operational + + +2689 +020003 +Present weather +54 +Drizzle, not freezing, intermittent +heavy (dense) at time of observation +Operational + + +2690 +020003 +Present weather +55 +Drizzle, not freezing, continuous +heavy (dense) at time of observation +Operational + + +2691 +020003 +Present weather +56 +Drizzle, freezing, slight +Operational + + +2692 +020003 +Present weather +57 +Drizzle, freezing, moderate or heavy (dense) +Operational + + +2693 +020003 +Present weather +58 +Drizzle and rain, slight +Operational + + +2694 +020003 +Present weather +59 +Drizzle and rain, moderate or heavy +Operational + + +2695 +020003 +Present weather +60-69 Rain +Operational + + +2696 +020003 +Present weather +60 +Rain, not freezing, intermittent +slight at time of observation +Operational + + +2697 +020003 +Present weather +61 +Rain, not freezing, continuous +slight at time of observation +Operational + + +2698 +020003 +Present weather +62 +Rain, not freezing, intermittent +moderate at time of observation +Operational + + +2699 +020003 +Present weather +63 +Rain, not freezing, continuous +moderate at time of observation +Operational + + +2700 +020003 +Present weather +64 +Rain, not freezing, intermittent +heavy at time of observation +Operational + + +2701 +020003 +Present weather +65 +Rain, not freezing, continuous +heavy at time of observation +Operational + + +2702 +020003 +Present weather +66 +Rain, freezing, slight +Operational + + +2703 +020003 +Present weather +67 +Rain, freezing, moderate or heavy +Operational + + +2704 +020003 +Present weather +68 +Rain or drizzle and snow, slight +Operational + + +2705 +020003 +Present weather +69 +Rain or drizzle and snow, moderate or heavy +Operational + + +2706 +020003 +Present weather +70-79 Solid precipitation not in showers +Operational + + +2707 +020003 +Present weather +70 +Intermittent fall of snowflakes +slight at time of observation +Operational + + +2708 +020003 +Present weather +71 +Continuous fall of snowflakes +slight at time of observation +Operational + + +2709 +020003 +Present weather +72 +Intermittent fall of snowflakes +moderate at time of observation +Operational + + +2710 +020003 +Present weather +73 +Continuous fall of snowflakes +moderate at time of observation +Operational + + +2711 +020003 +Present weather +74 +Intermittent fall of snowflakes +heavy at time of observation +Operational + + +2712 +020003 +Present weather +75 +Continuous fall of snowflakes +heavy at time of observation +Operational + + +2713 +020003 +Present weather +76 +Diamond dust (with or without fog) +Operational + + +2714 +020003 +Present weather +77 +Snow grains (with or without fog) +Operational + + +2715 +020003 +Present weather +78 +Isolated star-like snow crystals (with or without fog) +Operational + + +2716 +020003 +Present weather +79 +Ice pellets +Operational + + +2717 +020003 +Present weather +80-99 Showery precipitation, or precipitation with current or recent thunderstorm +Operational + + +2718 +020003 +Present weather +80 +Rain shower(s), slight +Operational + + +2719 +020003 +Present weather +81 +Rain shower(s), moderate or heavy +Operational + + +2720 +020003 +Present weather +82 +Rain shower(s), violent +Operational + + +2721 +020003 +Present weather +83 +Shower(s) of rain and snow mixed, slight +Operational + + +2722 +020003 +Present weather +84 +Shower(s) of rain and snow mixed, moderate or heavy +Operational + + +2723 +020003 +Present weather +85 +Snow shower(s), slight +Operational + + +2724 +020003 +Present weather +86 +Snow shower(s), moderate or heavy +Operational + + +2725 +020003 +Present weather +87 +Shower(s) of snow pellets or small hail, with or without rain or rain and snow mixed +slight +Operational + + +2726 +020003 +Present weather +88 +Shower(s) of snow pellets or small hail, with or without rain or rain and snow mixed +moderate or heavy +Operational + + +2727 +020003 +Present weather +89 +Shower(s) of hail, with or without rain or rain and snow mixed, not associated with thunder +slight +Operational + + +2728 +020003 +Present weather +90 +Shower(s) of hail, with or without rain or rain and snow mixed, not associated with thunder +moderate or heavy +Operational + + +2729 +020003 +Present weather +91 +Slight rain at time of observation +Thunderstorm during the preceding hour but not at time of observation +Operational + + +2730 +020003 +Present weather +92 +Moderate or heavy rain at time of observation +Thunderstorm during the preceding hour but not at time of observation +Operational + + +2731 +020003 +Present weather +93 +Slight snow, or rain and snow mixed or hail at time of observation +Thunderstorm during the preceding hour but not at time of observation +Operational + + +2732 +020003 +Present weather +94 +Moderate or heavy snow, or rain and snow mixed or hail at time of observation +Thunderstorm during the preceding hour but not at time of observation +Operational + + +2733 +020003 +Present weather +95 +Thunderstorm, slight or moderate, without hail, but with rain and/or snow at time of observation +Thunderstorm at time of observation +Operational + + +2734 +020003 +Present weather +96 +Thunderstorm, slight or moderate, with hail at time of observation +Thunderstorm at time of observation +Operational + + +2735 +020003 +Present weather +97 +Thunderstorm, heavy, without hail, but with rain and/or snow at time of observation +Thunderstorm at time of observation +Operational + + +2736 +020003 +Present weather +98 +Thunderstorm combined with duststorm or sandstorm at time of observation +Thunderstorm at time of observation +Operational + + +2737 +020003 +Present weather +99 +Thunderstorm, heavy, with hail at time of observation +Thunderstorm at time of observation +Operational + + +2738 +020003 +Present weather +Present weather reported from an automatic weather station +Operational + + +2739 +020003 +Present weather +100 +No significant weather observed +Operational + + +2740 +020003 +Present weather +101 +Clouds generally dissolving or becoming less developed during the past hour +Operational + + +2741 +020003 +Present weather +102 +State of sky on the whole unchanged during the past hour +Operational + + +2742 +020003 +Present weather +103 +Clouds generally forming or developing during the past hour +Operational + + +2743 +020003 +Present weather +104 +Haze or smoke, or dust in suspension in the air, visibility equal to, or greater than, 1 km +Operational + + +2744 +020003 +Present weather +105 +Haze or smoke, or dust in suspension in the air, visibility less than 1 km +Operational + + +2745 +020003 +Present weather +106-109 +Reserved +Operational + + +2746 +020003 +Present weather +110 +Mist +Operational + + +2747 +020003 +Present weather +111 +Diamond dust +Operational + + +2748 +020003 +Present weather +112 +Distant lightning +Operational + + +2749 +020003 +Present weather +113-117 +Reserved +Operational + + +2750 +020003 +Present weather +118 +Squalls +Operational + + +2751 +020003 +Present weather +119 +Reserved +Operational + + +2752 +020003 +Present weather +Code figures 120-126 are used to report precipitation, fog (or ice fog) or thunderstorm at the station during the preceding hour but not at the time of observation +Operational + + +2753 +020003 +Present weather +120 +Fog +Operational + + +2754 +020003 +Present weather +121 +PRECIPITATION +Operational + + +2755 +020003 +Present weather +122 +Drizzle (not freezing) or snow grains +Operational + + +2756 +020003 +Present weather +123 +Rain (not freezing) +Operational + + +2757 +020003 +Present weather +124 +Snow +Operational + + +2758 +020003 +Present weather +125 +Freezing drizzle or freezing rain +Operational + + +2759 +020003 +Present weather +126 +Thunderstorm (with or without precipitation) +Operational + + +2760 +020003 +Present weather +127 +BLOWING OR DRIFTING SNOW OR SAND +Operational + + +2761 +020003 +Present weather +128 +Blowing or drifting snow or sand, visibility equal to, or greater than, 1 km +Operational + + +2762 +020003 +Present weather +129 +Blowing or drifting snow or sand, visibility less than 1 km +Operational + + +2763 +020003 +Present weather +130 +FOG +Operational + + +2764 +020003 +Present weather +131 +Fog or ice fog in patches +Operational + + +2765 +020003 +Present weather +132 +Fog or ice fog, has become thinner during the past hour +Operational + + +2766 +020003 +Present weather +133 +Fog or ice fog, no appreciable change during the past hour +Operational + + +2767 +020003 +Present weather +134 +Fog or ice fog, has begun or become thicker during the past hour +Operational + + +2768 +020003 +Present weather +135 +Fog, depositing rime +Operational + + +2769 +020003 +Present weather +136-139 +Reserved +Operational + + +2770 +020003 +Present weather +140 +PRECIPITATION +Operational + + +2771 +020003 +Present weather +141 +Precipitation, slight or moderate +Operational + + +2772 +020003 +Present weather +142 +Precipitation, heavy +Operational + + +2773 +020003 +Present weather +143 +Liquid precipitation, slight or moderate +Operational + + +2774 +020003 +Present weather +144 +Liquid precipitation, heavy +Operational + + +2775 +020003 +Present weather +145 +Solid precipitation, slight or moderate +Operational + + +2776 +020003 +Present weather +146 +Solid precipitation, heavy +Operational + + +2777 +020003 +Present weather +147 +Freezing precipitation, slight or moderate +Operational + + +2778 +020003 +Present weather +148 +Freezing precipitation, heavy +Operational + + +2779 +020003 +Present weather +149 +Reserved +Operational + + +2780 +020003 +Present weather +150 +DRIZZLE +Operational + + +2781 +020003 +Present weather +151 +Drizzle, not freezing, slight +Operational + + +2782 +020003 +Present weather +152 +Drizzle, not freezing, moderate +Operational + + +2783 +020003 +Present weather +153 +Drizzle, not freezing, heavy +Operational + + +2784 +020003 +Present weather +154 +Drizzle, freezing, slight +Operational + + +2785 +020003 +Present weather +155 +Drizzle, freezing, moderate +Operational + + +2786 +020003 +Present weather +156 +Drizzle, freezing, heavy +Operational + + +2787 +020003 +Present weather +157 +Drizzle and rain, slight +Operational + + +2788 +020003 +Present weather +158 +Drizzle and rain, moderate or heavy +Operational + + +2789 +020003 +Present weather +159 +Reserved +Operational + + +2790 +020003 +Present weather +160 +RAIN +Operational + + +2791 +020003 +Present weather +161 +Rain, not freezing, slight +Operational + + +2792 +020003 +Present weather +162 +Rain, not freezing, moderate +Operational + + +2793 +020003 +Present weather +163 +Rain, not freezing, heavy +Operational + + +2794 +020003 +Present weather +164 +Rain, freezing, slight +Operational + + +2795 +020003 +Present weather +165 +Rain, freezing, moderate +Operational + + +2796 +020003 +Present weather +166 +Rain, freezing, heavy +Operational + + +2797 +020003 +Present weather +167 +Rain (or drizzle) and snow, slight +Operational + + +2798 +020003 +Present weather +168 +Rain (or drizzle) and snow, moderate or heavy +Operational + + +2799 +020003 +Present weather +169 +Reserved +Operational + + +2800 +020003 +Present weather +170 +SNOW +Operational + + +2801 +020003 +Present weather +171 +Snow, slight +Operational + + +2802 +020003 +Present weather +172 +Snow, moderate +Operational + + +2803 +020003 +Present weather +173 +Snow, heavy +Operational + + +2804 +020003 +Present weather +174 +Ice pellets, slight +Operational + + +2805 +020003 +Present weather +175 +Ice pellets, moderate +Operational + + +2806 +020003 +Present weather +176 +Ice pellets, heavy +Operational + + +2807 +020003 +Present weather +177 +Snow grains +Operational + + +2808 +020003 +Present weather +178 +Ice crystals +Operational + + +2809 +020003 +Present weather +179 +Reserved +Operational + + +2810 +020003 +Present weather +180 +SHOWER(S) OR INTERMITTENT PRECIPITATION +Operational + + +2811 +020003 +Present weather +181 +Rain shower(s) or intermittent rain, slight +Operational + + +2812 +020003 +Present weather +182 +Rain shower(s) or intermittent rain, moderate +Operational + + +2813 +020003 +Present weather +183 +Rain shower(s) or intermittent rain, heavy +Operational + + +2814 +020003 +Present weather +184 +Rain shower(s) or intermittent rain, violent +Operational + + +2815 +020003 +Present weather +185 +Snow shower(s) or intermittent snow, slight +Operational + + +2816 +020003 +Present weather +186 +Snow shower(s) or intermittent snow, moderate +Operational + + +2817 +020003 +Present weather +187 +Snow shower(s) or intermittent snow, heavy +Operational + + +2818 +020003 +Present weather +188 +Reserved +Operational + + +2819 +020003 +Present weather +189 +Hail +Operational + + +2820 +020003 +Present weather +190 +THUNDERSTORM +Operational + + +2821 +020003 +Present weather +191 +Thunderstorm, slight or moderate, with no precipitation +Operational + + +2822 +020003 +Present weather +192 +Thunderstorm, slight or moderate, with rain showers and/or snow showers +Operational + + +2823 +020003 +Present weather +193 +Thunderstorm, slight or moderate, with hail +Operational + + +2824 +020003 +Present weather +194 +Thunderstorm, heavy, with no precipitation +Operational + + +2825 +020003 +Present weather +195 +Thunderstorm, heavy, with rain showers and/or snow showers +Operational + + +2826 +020003 +Present weather +196 +Thunderstorm, heavy, with hail +Operational + + +2827 +020003 +Present weather +197-198 +Reserved +Operational + + +2828 +020003 +Present weather +199 +Tornado +Operational + + +2829 +020003 +Present weather +Present weather (in addition to present weather report from either a manned or an automatic station) +Operational + + +2830 +020003 +Present weather +Deciles 200-209 +Operational + + +2831 +020003 +Present weather +200-203 +Not used +Operational + + +2832 +020003 +Present weather +204 +Volcanic ash suspended in the air aloft +Operational + + +2833 +020003 +Present weather +205 +Not used +Operational + + +2834 +020003 +Present weather +206 +Thick dust haze, visibility less than 1 km +Operational + + +2835 +020003 +Present weather +207 +Blowing spray at the station +Operational + + +2836 +020003 +Present weather +208 +Drifting dust (sand) +Operational + + +2837 +020003 +Present weather +209 +Wall of dust or sand in distance (like haboob) +Operational + + +2838 +020003 +Present weather +Deciles 210-219 +Operational + + +2839 +020003 +Present weather +210 +Snow haze +Operational + + +2840 +020003 +Present weather +211 +Whiteout +Operational + + +2841 +020003 +Present weather +212 +Not used +Operational + + +2842 +020003 +Present weather +213 +Lightning, cloud to surface +Operational + + +2843 +020003 +Present weather +214-216 +Not used +Operational + + +2844 +020003 +Present weather +217 +Dry thunderstorm +Operational + + +2845 +020003 +Present weather +218 +Not used +Operational + + +2846 +020003 +Present weather +219 +Tornado cloud (destructive) at or within sight of the station during preceding hour or at the time of observation +Operational + + +2847 +020003 +Present weather +Deciles 220-229 +Operational + + +2848 +020003 +Present weather +220 +Deposition of volcanic ash +Operational + + +2849 +020003 +Present weather +221 +Deposition of dust or sand +Operational + + +2850 +020003 +Present weather +222 +Deposition of dew +Operational + + +2851 +020003 +Present weather +223 +Deposition of wet snow +Operational + + +2852 +020003 +Present weather +224 +Deposition of soft rime +Operational + + +2853 +020003 +Present weather +225 +Deposition of hard rime +Operational + + +2854 +020003 +Present weather +226 +Deposition of hoar frost +Operational + + +2855 +020003 +Present weather +227 +Deposition of glaze +Operational + + +2856 +020003 +Present weather +228 +Deposition of ice crust (ice slick) +Operational + + +2857 +020003 +Present weather +229 +Not used +Operational + + +2858 +020003 +Present weather +Deciles 230-239 +Operational + + +2859 +020003 +Present weather +230 +Duststorm or sandstorm with temperature below 0 deg C +Operational + + +2860 +020003 +Present weather +231-238 +Not used +Operational + + +2861 +020003 +Present weather +239 +Blowing snow, impossible to determine whether snow is falling or not +Operational + + +2862 +020003 +Present weather +Deciles 240-249 +Operational + + +2863 +020003 +Present weather +240 +Not used +Operational + + +2864 +020003 +Present weather +241 +Fog on sea +Operational + + +2865 +020003 +Present weather +242 +Fog in valleys +Operational + + +2866 +020003 +Present weather +243 +Arctic or Antarctic sea smoke +Operational + + +2867 +020003 +Present weather +244 +Steam fog (sea, lake or river) +Operational + + +2868 +020003 +Present weather +245 +Steam log (land) +Operational + + +2869 +020003 +Present weather +246 +Fog over ice or snow cover +Operational + + +2870 +020003 +Present weather +247 +Dense fog, visibility 60-90 m +Operational + + +2871 +020003 +Present weather +248 +Dense fog, visibility 30-60 m +Operational + + +2872 +020003 +Present weather +249 +Dense fog, visibility less than 30 m +Operational + + +2873 +020003 +Present weather +Deciles 250-259 +Operational + + +2874 +020003 +Present weather +250 +Drizzle, rate of fall - less than 0.10 mm h-1 +Operational + + +2875 +020003 +Present weather +251 +Drizzle, rate of fall - 0.10-0.19 mm h-1 +Operational + + +2876 +020003 +Present weather +252 +Drizzle, rate of fall - 0.20-0.39 mm h-1 +Operational + + +2877 +020003 +Present weather +253 +Drizzle, rate of fall - 0.40-0.79 mm h-1 +Operational + + +2878 +020003 +Present weather +254 +Drizzle, rate of fall - 0.80-1.59 mm h-1 +Operational + + +2879 +020003 +Present weather +255 +Drizzle, rate of fall - 1.60-3.19 mm h-1 +Operational + + +2880 +020003 +Present weather +256 +Drizzle, rate of fall - 3.20-6.39 mm h-1 +Operational + + +2881 +020003 +Present weather +257 +Drizzle, rate of fall - 6.4 mm h-1 or more +Operational + + +2882 +020003 +Present weather +258 +Not used +Operational + + +2883 +020003 +Present weather +259 +Drizzle and snow +Operational + + +2884 +020003 +Present weather +Deciles 260-269 +Operational + + +2885 +020003 +Present weather +260 +Rain, rate of fall - less than 1.0 mm h-1 +Operational + + +2886 +020003 +Present weather +261 +Rain, rate of fall - 1.0-1.9 mm h-1 +Operational + + +2887 +020003 +Present weather +262 +Rain, rate of fall - 2.0-3.9 mm h-1 +Operational + + +2888 +020003 +Present weather +263 +Rain, rate of fall - 4.0-7.9 mm h-1 +Operational + + +2889 +020003 +Present weather +264 +Rain, rate of fall - 8.0-15.9 mm h-1 +Operational + + +2890 +020003 +Present weather +265 +Rain, rate of fall - 16.0-31.9 mm h-1 +Operational + + +2891 +020003 +Present weather +266 +Rain, rate of fall - 32.0-63.9 mm h-1 +Operational + + +2892 +020003 +Present weather +267 +Rain, rate of fall - 64.0 mm h-1 or more +Operational + + +2893 +020003 +Present weather +268-269 +Not used +Operational + + +2894 +020003 +Present weather +Deciles 270-279 +Operational + + +2895 +020003 +Present weather +270 +Snow, rate of fall - less than 1.0 cm h-1 +Operational + + +2896 +020003 +Present weather +271 +Snow, rate of fall - 1.0-1.9 cm h-1 +Operational + + +2897 +020003 +Present weather +272 +Snow, rate of fall - 2.0-3.9 cm h-1 +Operational + + +2898 +020003 +Present weather +273 +Snow, rate of fall - 4.0-7.9 cm h-1 +Operational + + +2899 +020003 +Present weather +274 +Snow, rate of fall - 8.0-15.9 cm h-1 +Operational + + +2900 +020003 +Present weather +275 +Snow, rate of fall - 16.0-31.9 cm h-1 +Operational + + +2901 +020003 +Present weather +276 +Snow, rate of fall - 32.0-63.9 cm h-1 +Operational + + +2902 +020003 +Present weather +277 +Snow, rate of fall - 64.0 cm h-1 or more +Operational + + +2903 +020003 +Present weather +278 +Snow or ice crystal precipitation from a clear sky +Operational + + +2904 +020003 +Present weather +279 +Wet snow, freezing on contact +Operational + + +2905 +020003 +Present weather +Deciles 280-299 +Operational + + +2906 +020003 +Present weather +280 +Precipitation of rain +Operational + + +2907 +020003 +Present weather +281 +Precipitation of rain, freezing +Operational + + +2908 +020003 +Present weather +282 +Precipitation of rain and snow mixed +Operational + + +2909 +020003 +Present weather +283 +Precipitation of snow +Operational + + +2910 +020003 +Present weather +284 +Precipitation of snow pellets or small hall +Operational + + +2911 +020003 +Present weather +285 +Precipitation of snow pellets or small hail, with rain +Operational + + +2912 +020003 +Present weather +286 +Precipitation of snow pellets or small hail, with rain and snow mixed +Operational + + +2913 +020003 +Present weather +287 +Precipitation of snow pellets or small hail, with snow +Operational + + +2914 +020003 +Present weather +288 +Precipitation of hail +Operational + + +2915 +020003 +Present weather +289 +Precipitation of hail, with rain +Operational + + +2916 +020003 +Present weather +290 +Precipitation of hall, with rain and snow mixed +Operational + + +2917 +020003 +Present weather +291 +Precipitation of hail, with snow +Operational + + +2918 +020003 +Present weather +292 +Shower(s) or thunderstorm over sea +Operational + + +2919 +020003 +Present weather +293 +Shower(s) or thunderstorm over mountains +Operational + + +2920 +020003 +Present weather +294-299 +Not used +Operational + + +2921 +020003 +Present weather +300-507 +Reserved +Operational + + +2922 +020003 +Present weather +508 +No significant phenomenon to report, present and past weather omitted +Operational + + +2923 +020003 +Present weather +509 +No observation, data not available, present and past weather omitted +Operational + + +2924 +020003 +Present weather +510 +Present and past weather missing, but expected +Operational + + +2925 +020003 +Present weather +511 +Missing value +Operational + + +2926 +020004 +Past weather (1) +0 +Cloud covering 1/2 or less of the sky throughout the appropriate period +Operational + + +2927 +020004 +Past weather (1) +1 +Cloud covering more than 1/2 of the sky during part of the appropriate period and covering 1/2 or less during part of the period +Operational + + +2928 +020004 +Past weather (1) +2 +Cloud covering more than 1/2 of the sky throughout the appropriate period +Operational + + +2929 +020004 +Past weather (1) +3 +Sandstorm, duststorm or blowing snow +Operational + + +2930 +020004 +Past weather (1) +4 +Fog or ice fog or thick haze +Operational + + +2931 +020004 +Past weather (1) +5 +Drizzle +Operational + + +2932 +020004 +Past weather (1) +6 +Rain +Operational + + +2933 +020004 +Past weather (1) +7 +Snow, or rain and snow mixed +Operational + + +2934 +020004 +Past weather (1) +8 +Shower(s) +Operational + + +2935 +020004 +Past weather (1) +9 +Thunderstorm(s) with or without precipitation +Operational + + +2936 +020004 +Past weather (1) +10 +No significant weather observed +Operational + + +2937 +020004 +Past weather (1) +11 +VISIBILITY REDUCED (see Note) +Operational + + +2938 +020004 +Past weather (1) +12 +Blowing phenomena, visibility reduced +Operational + + +2939 +020004 +Past weather (1) +13 +FOG (see Note) +Operational + + +2940 +020004 +Past weather (1) +14 +PRECIPITATION (see Note) +Operational + + +2941 +020004 +Past weather (1) +15 +Drizzle +Operational + + +2942 +020004 +Past weather (1) +16 +Rain +Operational + + +2943 +020004 +Past weather (1) +17 +Snow or ice pellets +Operational + + +2944 +020004 +Past weather (1) +18 +Showers or intermittent precipitation +Operational + + +2945 +020004 +Past weather (1) +19 +Thunderstorm +Operational + + +2946 +020004 +Past weather (1) +20-30 +Reserved +Operational + + +2947 +020004 +Past weather (1) +31 +Missing value +Operational + + +2948 +020005 +Past weather (2) +0 +Cloud covering 1/2 or less of the sky throughout the appropriate period +Operational + + +2949 +020005 +Past weather (2) +1 +Cloud covering more than 1/2 of the sky during part of the appropriate period and covering 1/2 or less during part of the period +Operational + + +2950 +020005 +Past weather (2) +2 +Cloud covering more than 1/2 of the sky throughout the appropriate period +Operational + + +2951 +020005 +Past weather (2) +3 +Sandstorm, duststorm or blowing snow +Operational + + +2952 +020005 +Past weather (2) +4 +Fog or ice fog or thick haze +Operational + + +2953 +020005 +Past weather (2) +5 +Drizzle +Operational + + +2954 +020005 +Past weather (2) +6 +Rain +Operational + + +2955 +020005 +Past weather (2) +7 +Snow, or rain and snow mixed +Operational + + +2956 +020005 +Past weather (2) +8 +Shower(s) +Operational + + +2957 +020005 +Past weather (2) +9 +Thunderstorm(s) with or without precipitation +Operational + + +2958 +020005 +Past weather (2) +10 +No significant weather observed +Operational + + +2959 +020005 +Past weather (2) +11 +VISIBILITY REDUCED (see Note) +Operational + + +2960 +020005 +Past weather (2) +12 +Blowing phenomena, visibility reduced +Operational + + +2961 +020005 +Past weather (2) +13 +FOG (see Note) +Operational + + +2962 +020005 +Past weather (2) +14 +PRECIPITATION (see Note) +Operational + + +2963 +020005 +Past weather (2) +15 +Drizzle +Operational + + +2964 +020005 +Past weather (2) +16 +Rain +Operational + + +2965 +020005 +Past weather (2) +17 +Snow or ice pellets +Operational + + +2966 +020005 +Past weather (2) +18 +Showers or intermittent precipitation +Operational + + +2967 +020005 +Past weather (2) +19 +Thunderstorm +Operational + + +2968 +020005 +Past weather (2) +20-30 +Reserved +Operational + + +2969 +020005 +Past weather (2) +31 +Missing value +Operational + + +2970 +020006 +Flight rules +0 +Low instrument flight rules - Ceiling < 500 feet and/or visibility < 1 mile +Operational + + +2971 +020006 +Flight rules +1 +Instrument flight rules - Ceiling < 1000 feet and/or visibility < 3 miles +Operational + + +2972 +020006 +Flight rules +2 +Marginal visual flight rules - 1000 feet =< Ceiling < 3000 feet and/or 3 miles =< visibility < 5 miles +Operational + + +2973 +020006 +Flight rules +3 +Visual flight rules - Ceiling >= 3000 feet and/or visibility >= 5 miles +Operational + + +2974 +020006 +Flight rules +4-6 +Reserved +Operational + + +2975 +020006 +Flight rules +7 +Missing value +Operational + + +2976 +020008 +Cloud distribution for aviation +0 +Sky clear +Operational + + +2977 +020008 +Cloud distribution for aviation +1 +Few +Operational + + +2978 +020008 +Cloud distribution for aviation +2 +Scattered +Operational + + +2979 +020008 +Cloud distribution for aviation +3 +Broken +Operational + + +2980 +020008 +Cloud distribution for aviation +4 +Overcast +Operational + + +2981 +020008 +Cloud distribution for aviation +5 +Reserved +Operational + + +2982 +020008 +Cloud distribution for aviation +6 +Scattered/broken +(Many forecasts use scattered/broken or broken/overcast followed by cloud type(s)) +Operational + + +2983 +020008 +Cloud distribution for aviation +7 +Broken/overcast +(Many forecasts use scattered/broken or broken/overcast followed by cloud type(s)) +Operational + + +2984 +020008 +Cloud distribution for aviation +8 +Isolated +(Used on aviation charts to describe the cloud type Cb) +Operational + + +2985 +020008 +Cloud distribution for aviation +9 +Isolated embedded +(Used on aviation charts to describe the cloud type Cb) +Operational + + +2986 +020008 +Cloud distribution for aviation +10 +Occasional +(Used on aviation charts to describe the cloud type Cb) +Operational + + +2987 +020008 +Cloud distribution for aviation +11 +Occasional embedded +(Used on aviation charts to describe the cloud type Cb) +Operational + + +2988 +020008 +Cloud distribution for aviation +12 +Frequent +(Used on aviation charts to describe the cloud type Cb) +Operational + + +2989 +020008 +Cloud distribution for aviation +13 +Dense +(Used on aviation charts to describe cloud that would cause sudden changes in visibility (less than 1 000 m)) +Operational + + +2990 +020008 +Cloud distribution for aviation +14 +Layers +Operational + + +2991 +020008 +Cloud distribution for aviation +15 +Obscured (OBSC) +Operational + + +2992 +020008 +Cloud distribution for aviation +16 +Embedded (EMBD) +Operational + + +2993 +020008 +Cloud distribution for aviation +17 +Frequent embedded +Operational + + +2994 +020008 +Cloud distribution for aviation +18-30 +Reserved +Operational + + +2995 +020008 +Cloud distribution for aviation +31 +Missing value +Operational + + +2996 +020009 +General weather indicator (TAF/METAR) +0 +Reserved +Operational + + +2997 +020009 +General weather indicator (TAF/METAR) +1 +NSC Nil Significant Cloud +Operational + + +2998 +020009 +General weather indicator (TAF/METAR) +2 +CAVOK +Operational + + +2999 +020009 +General weather indicator (TAF/METAR) +3 +SKC Sky Clear +Operational + + +3000 +020009 +General weather indicator (TAF/METAR) +4 +NSW Nil Significant Weather +Operational + + +3001 +020009 +General weather indicator (TAF/METAR) +5-14 +Reserved +Operational + + +3002 +020009 +General weather indicator (TAF/METAR) +15 +Missing value +Operational + + +3003 +020011 +Cloud amount +0 +0 +0 +Operational + + +3004 +020011 +Cloud amount +1 +1 okta or less, but not zero +1/10 or less, but not zero +Operational + + +3005 +020011 +Cloud amount +2 +2 oktas +2/10 - 3/10 +Operational + + +3006 +020011 +Cloud amount +3 +3 oktas +4/10 +Operational + + +3007 +020011 +Cloud amount +4 +4 oktas +5/10 +Operational + + +3008 +020011 +Cloud amount +5 +5 oktas +6/10 +Operational + + +3009 +020011 +Cloud amount +6 +6 oktas +7/10 - 8/10 +Operational + + +3010 +020011 +Cloud amount +7 +7 oktas or more, but not 8 oktas +9/10 or more, but not 10/10 +Operational + + +3011 +020011 +Cloud amount +8 +8 oktas +10/10 +Operational + + +3012 +020011 +Cloud amount +9 +Sky obscured by fog and/or other meteorological phenomena +Operational + + +3013 +020011 +Cloud amount +10 +Sky partially obscured by fog and/or other meteorological phenomena +Operational + + +3014 +020011 +Cloud amount +11 +Scattered +Operational + + +3015 +020011 +Cloud amount +12 +Broken +Operational + + +3016 +020011 +Cloud amount +13 +Few +Operational + + +3017 +020011 +Cloud amount +14 +Reserved +Operational + + +3018 +020011 +Cloud amount +15 +Cloud cover is indiscernible for reasons other than fog or other meteorological phenomena, or observation is not made +Operational + + +3019 +020012 +Cloud type +0 +Cirrus (Ci) +Operational + + +3020 +020012 +Cloud type +1 +Cirrocumulus (Cc) +Operational + + +3021 +020012 +Cloud type +2 +Cirrostratus (Cs) +Operational + + +3022 +020012 +Cloud type +3 +Altocumulus (Ac) +Operational + + +3023 +020012 +Cloud type +4 +Altostratus (As) +Operational + + +3024 +020012 +Cloud type +5 +Nimbostratus (Ns) +Operational + + +3025 +020012 +Cloud type +6 +Stratocumulus (Sc) +Operational + + +3026 +020012 +Cloud type +7 +Stratus (St) +Operational + + +3027 +020012 +Cloud type +8 +Cumulus (Cu) +Operational + + +3028 +020012 +Cloud type +9 +Cumulonimbus (Cb) +Operational + + +3029 +020012 +Cloud type +10 +No CH clouds +Operational + + +3030 +020012 +Cloud type +11 +Cirrus fibratus, sometimes uncinus, not progressively invading the sky +Operational + + +3031 +020012 +Cloud type +12 +Cirrus spissatus, in patches or entangled sheaves, which usually do not increase and sometimes seem to be the remains of the upper part of a cumulonimbus; or cirrus castellanus or floccus +Operational + + +3032 +020012 +Cloud type +13 +Cirrus spissatus cumulonimbogenitus +Operational + + +3033 +020012 +Cloud type +14 +Cirrus uncinus or fibratus, or both, progressively invading the sky; they generally thicken as a whole +Operational + + +3034 +020012 +Cloud type +15 +Cirrus (often in bands) and cirrostratus, or cirrostratus alone, progressively invading the sky; they generally thicken as a whole, but the continuous veil does not reach 45 degrees above the horizon +Operational + + +3035 +020012 +Cloud type +16 +Cirrus (often in bands) and cirrostratus, or cirrostratus alone, progressively Invading the sky; they generally thicken as a whole; the continuous veil extends more than 45 degrees above the horizon, without the sky being totally covered +Operational + + +3036 +020012 +Cloud type +17 +Cirrostratus covering the whole sky +Operational + + +3037 +020012 +Cloud type +18 +Cirrostratus not progressively invading the sky and not entirely covering it +Operational + + +3038 +020012 +Cloud type +19 +Cirrocumulus alone, or cirrocumulus predominant among the CH clouds +Operational + + +3039 +020012 +Cloud type +20 +No CM clouds +Operational + + +3040 +020012 +Cloud type +21 +Altostratus translucidus +Operational + + +3041 +020012 +Cloud type +22 +Altostratus opacus or nimbostratus +Operational + + +3042 +020012 +Cloud type +23 +Altocumulus translucidus at a single level +Operational + + +3043 +020012 +Cloud type +24 +Patches (often lenticular) of altocumulus translucidus, continually changing and occurring at one or more levels +Operational + + +3044 +020012 +Cloud type +25 +Altocumulus translucidus in bands, or one or more layers of altocumulus translucidus or opacus, progressively invading the sky; these altocumulus clouds generally thicken as a whole +Operational + + +3045 +020012 +Cloud type +26 +Altocumulus cumulogenitus (or cumulonimbogenitus) +Operational + + +3046 +020012 +Cloud type +27 +Altocumulus translucidus or opacus in two or more layers, or altocumulus opacus in a single layer, not progressively invading the sky, or altocumulus with altostratus or nimbostratus +Operational + + +3047 +020012 +Cloud type +28 +Altocumulus castellanus or floccus +Operational + + +3048 +020012 +Cloud type +29 +Altocumulus of a chaotic sky, generally at several levels +Operational + + +3049 +020012 +Cloud type +30 +No CL clouds +Operational + + +3050 +020012 +Cloud type +31 +Cumulus humilis or cumulus fractus other than of bad weather, or both +Operational + + +3051 +020012 +Cloud type +32 +Cumulus mediocris or congestus, towering cumulus (TCU), with or without cumulus of species fractus or humilis or stratocumulus, all having their bases at the same level +Operational + + +3052 +020012 +Cloud type +33 +Cumulonimbus calvus, with or without cumulus, stratocumulus or stratus +Operational + + +3053 +020012 +Cloud type +34 +Stratocumulus cumulogenitus +Operational + + +3054 +020012 +Cloud type +35 +Stratocumulus other than stratocumulus cumulogenitus +Operational + + +3055 +020012 +Cloud type +36 +Stratus nebulosus or stratus fractus other than of bad weather, or both +Operational + + +3056 +020012 +Cloud type +37 +Stratus fractus or cumulus fractus of bad weather, or both (pannus), usually below altostratus or nimbostratus +Operational + + +3057 +020012 +Cloud type +38 +Cumulus and stratocumulus other than stratocumulus cumulogenitus, with bases at different levels +Operational + + +3058 +020012 +Cloud type +39 +Cumulonimbus capillatus (often with an anvil), with or without cumulonimbus calvus, cumulus, stratocumulus, stratus or pannus +Operational + + +3059 +020012 +Cloud type +40 +CH +Operational + + +3060 +020012 +Cloud type +41 +CM +Operational + + +3061 +020012 +Cloud type +42 +CL +Operational + + +3062 +020012 +Cloud type +43 +Clear +Operational + + +3063 +020012 +Cloud type +44 +Liquid water +Operational + + +3064 +020012 +Cloud type +45 +Supercooled liquid water +Operational + + +3065 +020012 +Cloud type +46 +Mixed phase +Operational + + +3066 +020012 +Cloud type +47 +Optically thick ice +Operational + + +3067 +020012 +Cloud type +48 +Optically thin ice +Operational + + +3068 +020012 +Cloud type +49 +Multilayered ice +Operational + + +3069 +020012 +Cloud type +50-58 +Reserved +Operational + + +3070 +020012 +Cloud type +59 +Cloud not visible owing to darkness, fog, duststorm, sandstorm, or other analogous phenomena +Operational + + +3071 +020012 +Cloud type +60 +CH clouds invisible owing to darkness, fog, blowing dust or sand, or other similar phenomena, or because of a continuous layer of lower clouds +Operational + + +3072 +020012 +Cloud type +61 +CM clouds invisible owing to darkness, fog, blowing dust or sand, or other similar phenomena, or because of continuous layer of lower clouds +Operational + + +3073 +020012 +Cloud type +62 +CL clouds invisible owing to darkness, fog, blowing dust or sand, or other similar phenomena +Operational + + +3074 +020012 +Cloud type +63 +Missing value +Operational + + +3075 +020017 +Cloud top description +0 +Isolated cloud fragments of clouds +Operational + + +3076 +020017 +Cloud top description +1 +Continuous cloud +flat tops +Operational + + +3077 +020017 +Cloud top description +2 +Broken cloud - small breaks +flat tops +Operational + + +3078 +020017 +Cloud top description +3 +Broken cloud - large breaks +flat tops +Operational + + +3079 +020017 +Cloud top description +4 +Continuous cloud +undulating tops +Operational + + +3080 +020017 +Cloud top description +5 +Broken cloud - small breaks +undulating tops +Operational + + +3081 +020017 +Cloud top description +6 +Broken cloud - large breaks +undulating tops +Operational + + +3082 +020017 +Cloud top description +7 +Continuous or almost continuous waves with towering clouds above the top of the layer +Operational + + +3083 +020017 +Cloud top description +8 +Groups of waves with towering clouds above the top of the layer +Operational + + +3084 +020017 +Cloud top description +9 +Two or more layers at different levels +Operational + + +3085 +020017 +Cloud top description +10-14 +Reserved +Operational + + +3086 +020017 +Cloud top description +15 +Missing value +Operational + + +3087 +020018 +Tendency of runway visual range +0 +Increasing (U) +Operational + + +3088 +020018 +Tendency of runway visual range +1 +Decreasing (D) +Operational + + +3089 +020018 +Tendency of runway visual range +2 +No distinct change (N) +Operational + + +3090 +020018 +Tendency of runway visual range +3 +Missing value +Operational + + +3091 +020021 +Type of precipitation +1 +Precipitation - unknown type +Operational + + +3092 +020021 +Type of precipitation +2 +Liquid precipitation not freezing +Operational + + +3093 +020021 +Type of precipitation +3 +Liquid freezing precipitation +Operational + + +3094 +020021 +Type of precipitation +4 +Drizzle +Operational + + +3095 +020021 +Type of precipitation +5 +Rain +Operational + + +3096 +020021 +Type of precipitation +6 +Solid precipitation +Operational + + +3097 +020021 +Type of precipitation +7 +Snow +Operational + + +3098 +020021 +Type of precipitation +8 +Snow grains +Operational + + +3099 +020021 +Type of precipitation +9 +Snow pellets +Operational + + +3100 +020021 +Type of precipitation +10 +Ice pellets +Operational + + +3101 +020021 +Type of precipitation +11 +Ice crystals +Operational + + +3102 +020021 +Type of precipitation +12 +Diamond dust +Operational + + +3103 +020021 +Type of precipitation +13 +Small hail +Operational + + +3104 +020021 +Type of precipitation +14 +Hail +Operational + + +3105 +020021 +Type of precipitation +15 +Glaze +Operational + + +3106 +020021 +Type of precipitation +16 +Rime +Operational + + +3107 +020021 +Type of precipitation +17 +Soft rime +Operational + + +3108 +020021 +Type of precipitation +18 +Hard rime +Operational + + +3109 +020021 +Type of precipitation +19 +Clear ice +Operational + + +3110 +020021 +Type of precipitation +20 +Wet snow +Operational + + +3111 +020021 +Type of precipitation +21 +Hoar frost +Operational + + +3112 +020021 +Type of precipitation +22 +Dew +Operational + + +3113 +020021 +Type of precipitation +23 +White dew +Operational + + +3114 +020021 +Type of precipitation +24-29 +Reserved +Operational + + +3115 +020021 +Type of precipitation +All 30 +Missing value +Operational + + +3116 +020022 +Character of precipitation +0 +No precipitation +Operational + + +3117 +020022 +Character of precipitation +1 +Continuous +Operational + + +3118 +020022 +Character of precipitation +2 +Intermittent +Operational + + +3119 +020022 +Character of precipitation +3 +Shower +Operational + + +3120 +020022 +Character of precipitation +4 +Not reaching ground +Operational + + +3121 +020022 +Character of precipitation +5 +Deposition +Operational + + +3122 +020022 +Character of precipitation +6-14 +Reserved +Operational + + +3123 +020022 +Character of precipitation +15 +Missing value +Operational + + +3124 +020023 +Other weather phenomena +1 +Dust/sand whirl +Operational + + +3125 +020023 +Other weather phenomena +2 +Squalls +Operational + + +3126 +020023 +Other weather phenomena +3 +Sandstorm +Operational + + +3127 +020023 +Other weather phenomena +4 +Duststorm +Operational + + +3128 +020023 +Other weather phenomena +5 +Lightning - cloud to surface +Operational + + +3129 +020023 +Other weather phenomena +6 +Lightning - cloud to cloud +Operational + + +3130 +020023 +Other weather phenomena +7 +Lightning - distant +Operational + + +3131 +020023 +Other weather phenomena +8 +Thunderstorm +Operational + + +3132 +020023 +Other weather phenomena +9 +Funnel cloud not touching surface +Operational + + +3133 +020023 +Other weather phenomena +10 +Funnel cloud touching surface +Operational + + +3134 +020023 +Other weather phenomena +11 +Spray +Operational + + +3135 +020023 +Other weather phenomena +12 +Waterspout +Operational + + +3136 +020023 +Other weather phenomena +13 +Wind shear +Operational + + +3137 +020023 +Other weather phenomena +14 +Dust devils +Operational + + +3138 +020023 +Other weather phenomena +15-17 +Reserved +Operational + + +3139 +020023 +Other weather phenomena +All 18 +Missing value +Operational + + +3140 +020024 +Intensity of phenomena +0 +No phenomena +Operational + + +3141 +020024 +Intensity of phenomena +1 +Light +Operational + + +3142 +020024 +Intensity of phenomena +2 +Moderate +Operational + + +3143 +020024 +Intensity of phenomena +3 +Heavy +Operational + + +3144 +020024 +Intensity of phenomena +4 +Violent +Operational + + +3145 +020024 +Intensity of phenomena +5 +Severe +Operational + + +3146 +020024 +Intensity of phenomena +6 +Very severe +Operational + + +3147 +020024 +Intensity of phenomena +7 +Missing value +Operational + + +3148 +020025 +Obscuration +1 +Fog +Operational + + +3149 +020025 +Obscuration +2 +Ice fog +Operational + + +3150 +020025 +Obscuration +3 +Steam fog +Operational + + +3151 +020025 +Obscuration +4-6 +Reserved +Operational + + +3152 +020025 +Obscuration +7 +Mist +Operational + + +3153 +020025 +Obscuration +8 +Haze +Operational + + +3154 +020025 +Obscuration +9 +Smoke +Operational + + +3155 +020025 +Obscuration +10 +Volcanic ash +Operational + + +3156 +020025 +Obscuration +11 +Dust +Operational + + +3157 +020025 +Obscuration +12 +Sand +Operational + + +3158 +020025 +Obscuration +13 +Snow +Operational + + +3159 +020025 +Obscuration +14 +Cloud +Operational + + +3160 +020025 +Obscuration +15 +Precipitation +Operational + + +3161 +020025 +Obscuration +16 +Impossible to determine whether snow is falling or not +Operational + + +3162 +020025 +Obscuration +17-20 +Reserved +Operational + + +3163 +020025 +Obscuration +All 21 +Missing value +Operational + + +3164 +020026 +Character of obscuration +0 +No change +Operational + + +3165 +020026 +Character of obscuration +1 +Shallow +Operational + + +3166 +020026 +Character of obscuration +2 +Patches +Operational + + +3167 +020026 +Character of obscuration +3 +Partial +Operational + + +3168 +020026 +Character of obscuration +4 +Freezing +Operational + + +3169 +020026 +Character of obscuration +5 +Low drifting +Operational + + +3170 +020026 +Character of obscuration +6 +Blowing +Operational + + +3171 +020026 +Character of obscuration +7 +Increasing +Operational + + +3172 +020026 +Character of obscuration +8 +Decreasing +Operational + + +3173 +020026 +Character of obscuration +9 +In suspension in the air +Operational + + +3174 +020026 +Character of obscuration +10 +Wall +Operational + + +3175 +020026 +Character of obscuration +11 +Dense +Operational + + +3176 +020026 +Character of obscuration +12 +Whiteout +Operational + + +3177 +020026 +Character of obscuration +13 +Drifting and blowing +Operational + + +3178 +020026 +Character of obscuration +14 +Reserved +Operational + + +3179 +020026 +Character of obscuration +15 +Missing value +Operational + + +3180 +020027 +Phenomena occurrence +1 +At time of observation +Operational + + +3181 +020027 +Phenomena occurrence +2 +In past hour +Operational + + +3182 +020027 +Phenomena occurrence +3 +In time period for past weather W1W2 +Operational + + +3183 +020027 +Phenomena occurrence +4 +In time period specified +Operational + + +3184 +020027 +Phenomena occurrence +5 +Reserved +Operational + + +3185 +020027 +Phenomena occurrence +6 +Below station level +Operational + + +3186 +020027 +Phenomena occurrence +7 +At the station +(see Note 1) +Operational + + +3187 +020027 +Phenomena occurrence +8 +In the vicinity +(see Note 2) +Operational + + +3188 +020027 +Phenomena occurrence +All 9 +Missing value +Operational + + +3189 +020028 +Expected change in intensity +0 +No change (NC) +Operational + + +3190 +020028 +Expected change in intensity +1 +Forecast to weaken (WKN) +Operational + + +3191 +020028 +Expected change in intensity +2 +Forecast to intensify (INTSF) +Operational + + +3192 +020028 +Expected change in intensity +3-6 +Reserved +Operational + + +3193 +020028 +Expected change in intensity +7 +Missing value +Operational + + +3194 +020029 +Rain flag +0 +No rain +Operational + + +3195 +020029 +Rain flag +1 +Rain +Operational + + +3196 +020029 +Rain flag +2 +Reserved +Operational + + +3197 +020029 +Rain flag +3 +Missing value +Operational + + +3198 +020032 +Rate of ice accretion (estimated) +0 +Ice not building up +Operational + + +3199 +020032 +Rate of ice accretion (estimated) +1 +Ice building up slowly +Operational + + +3200 +020032 +Rate of ice accretion (estimated) +2 +Ice building up rapidly +Operational + + +3201 +020032 +Rate of ice accretion (estimated) +3 +Ice melting or breaking up slowly +Operational + + +3202 +020032 +Rate of ice accretion (estimated) +4 +Ice melting or breaking up rapidly +Operational + + +3203 +020032 +Rate of ice accretion (estimated) +5-6 +Reserved +Operational + + +3204 +020032 +Rate of ice accretion (estimated) +7 +Missing value +Operational + + +3205 +020033 +Cause of ice accretion +1 +Icing from ocean spray +Operational + + +3206 +020033 +Cause of ice accretion +2 +Icing from fog +Operational + + +3207 +020033 +Cause of ice accretion +3 +Icing from rain +Operational + + +3208 +020033 +Cause of ice accretion +All 4 +Missing value +Operational + + +3209 +020034 +Sea ice concentration +0 +No sea ice in sight +Operational + + +3210 +020034 +Sea ice concentration +1 +Ship in open lead more than 1.0 nautical mile wide, or ship in fast ice with boundary beyond limit of visibility +Operational + + +3211 +020034 +Sea ice concentration +2 +Sea ice present in concentrations less than 3/10 (3/8), open water or very open pack ice +Sea ice concentration is uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3212 +020034 +Sea ice concentration +3 +4/10 to 6/10 (3/8 to less than 6/8), open pack ice +Sea ice concentration is uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3213 +020034 +Sea ice concentration +4 +7/10 to 8/10 (6/8 to less than 7/8), close pack ice +Sea ice concentration is uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3214 +020034 +Sea ice concentration +5 +9/10 or more, but not 10/10 (7/8 to less than 8/8), very close pack ice +Sea ice concentration is uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3215 +020034 +Sea ice concentration +6 +Strips and patches of pack ice with open water between +Sea ice concentration is not uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3216 +020034 +Sea ice concentration +7 +Strips and patches of close or very close pack ice with areas of lesser concentration between +Sea ice concentration is not uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3217 +020034 +Sea ice concentration +8 +Fast ice with open water, very open or open pack ice to seaward of the ice boundary +Sea ice concentration is not uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3218 +020034 +Sea ice concentration +9 +Fast ice with close or very close pack ice to seaward of the boundary +Sea ice concentration is not uniform in the observation area +Ship in ice or within 0.5 nautical mile of ice edge +Operational + + +3219 +020034 +Sea ice concentration +10-13 +Reserved +Operational + + +3220 +020034 +Sea ice concentration +14 +Unable to report, because of darkness, lack of visibility, or because ship is more than 0.5 nautical mile away from ice edge +Operational + + +3221 +020034 +Sea ice concentration +15-30 +Reserved +Operational + + +3222 +020034 +Sea ice concentration +31 +Missing value +Operational + + +3223 +020035 +Amount and type of ice +0 +No ice of land origin +Operational + + +3224 +020035 +Amount and type of ice +1 +1-5 icebergs, no growlers or bergy bits +Operational + + +3225 +020035 +Amount and type of ice +2 +6-10 icebergs, no growlers or bergy bits +Operational + + +3226 +020035 +Amount and type of ice +3 +11-20 icebergs, no growlers or bergy bits +Operational + + +3227 +020035 +Amount and type of ice +4 +Up to and including 10 growlers and bergy bits - no icebergs +Operational + + +3228 +020035 +Amount and type of ice +5 +More than 10 growlers and bergy bits - no icebergs +Operational + + +3229 +020035 +Amount and type of ice +6 +1-5 icebergs, with growlers and bergy bits +Operational + + +3230 +020035 +Amount and type of ice +7 +6-10 icebergs, with growlers and bergy bits +Operational + + +3231 +020035 +Amount and type of ice +8 +11-20 icebergs, with growlers and bergy bits +Operational + + +3232 +020035 +Amount and type of ice +9 +More than 20 icebergs, with growlers and bergy bits - a major hazard to navigation +Operational + + +3233 +020035 +Amount and type of ice +10-13 +Reserved +Operational + + +3234 +020035 +Amount and type of ice +14 +Unable to report, because of darkness, lack of visibility or because only sea ice is visible +Operational + + +3235 +020035 +Amount and type of ice +15 +Missing value +Operational + + +3236 +020036 +Ice situation +0 +Ship in open water with floating ice in sight +Operational + + +3237 +020036 +Ice situation +1 +Ship in easily penetrable ice; conditions improving +Operational + + +3238 +020036 +Ice situation +2 +Ship in easily penetrable ice; conditions not changing +Operational + + +3239 +020036 +Ice situation +3 +Ship in easily penetrable ice; conditions worsening +Operational + + +3240 +020036 +Ice situation +4 +Ship in ice difficult to penetrate; conditions improving +Operational + + +3241 +020036 +Ice situation +5 +Ship in ice difficult to penetrate; conditions not changing +Operational + + +3242 +020036 +Ice situation +6 +Ship in ice difficult to penetrate and conditions worsening. Ice forming and floes freezing together +Operational + + +3243 +020036 +Ice situation +7 +Ship in ice difficult to penetrate and conditions worsening. Ice under slight pressure +Operational + + +3244 +020036 +Ice situation +8 +Ship in ice difficult to penetrate and conditions worsening. Ice under moderate or severe pressure +Operational + + +3245 +020036 +Ice situation +9 +Ship in ice difficult to penetrate and conditions worsening. Ship beset +Operational + + +3246 +020036 +Ice situation +10-29 +Reserved +Operational + + +3247 +020036 +Ice situation +30 +Unable to report, because of darkness or lack of visibility +Operational + + +3248 +020036 +Ice situation +31 +Missing value +Operational + + +3249 +020037 +Ice development +0 +New ice only (frazil ice, grease ice, slush, shuga) +Operational + + +3250 +020037 +Ice development +1 +Nilas or ice rind, less than 10 cm thick +Operational + + +3251 +020037 +Ice development +2 +Young ice (grey ice, grey-white ice), 10-30 cm thick +Operational + + +3252 +020037 +Ice development +3 +Predominantly new and/or young ice with some first-year ice +Operational + + +3253 +020037 +Ice development +4 +Predominantly thin first-year ice with some new and/or young ice +Operational + + +3254 +020037 +Ice development +5 +All thin first-year ice (30-70 cm thick) +Operational + + +3255 +020037 +Ice development +6 +Predominantly medium first-year ice (70-120 cm thick) and thick first-year ice (>120 cm thick) with some thinner (younger) first-year ice +Operational + + +3256 +020037 +Ice development +7 +All medium and thick first-year ice +Operational + + +3257 +020037 +Ice development +8 +Predominantly medium and thick first-year ice with some old ice (usually more than 2 metres thick) +Operational + + +3258 +020037 +Ice development +9 +Predominantly old ice +Operational + + +3259 +020037 +Ice development +10-29 +Reserved +Operational + + +3260 +020037 +Ice development +30 +Unable to report, because of darkness, lack of visibility or because only ice of land origin is visible or because ship is more than 0.5 nautical mile away from ice edge +Operational + + +3261 +020037 +Ice development +31 +Missing value +Operational + + +3262 +020040 +Evolution of drift snow +0 +Drift snow ended before the hour of observation +Operational + + +3263 +020040 +Evolution of drift snow +1 +Intensity diminishing +Operational + + +3264 +020040 +Evolution of drift snow +2 +No change +Operational + + +3265 +020040 +Evolution of drift snow +3 +Intensity increasing +Operational + + +3266 +020040 +Evolution of drift snow +4 +Continues, apart from interruption lasting less than 30 minutes +Operational + + +3267 +020040 +Evolution of drift snow +5 +General drift snow has become drift snow near the ground +Operational + + +3268 +020040 +Evolution of drift snow +6 +Drift snow near the ground has become general drift snow +Operational + + +3269 +020040 +Evolution of drift snow +7 +Drift snow has started again after an interruption of more than 30 minutes +Operational + + +3270 +020040 +Evolution of drift snow +8-14 +Reserved +Operational + + +3271 +020040 +Evolution of drift snow +15 +Missing value +Operational + + +3272 +020041 +Airframe icing +0 +No icing +Operational + + +3273 +020041 +Airframe icing +1 +Light icing +Operational + + +3274 +020041 +Airframe icing +2 +Light icing in cloud +Operational + + +3275 +020041 +Airframe icing +3 +Light icing in precipitation +Operational + + +3276 +020041 +Airframe icing +4 +Moderate icing +Operational + + +3277 +020041 +Airframe icing +5 +Moderate icing in cloud +Operational + + +3278 +020041 +Airframe icing +6 +Moderate icing in precipitation +Operational + + +3279 +020041 +Airframe icing +7 +Severe icing +Operational + + +3280 +020041 +Airframe icing +8 +Severe icing in cloud +Operational + + +3281 +020041 +Airframe icing +9 +Severe icing in precipitation +Operational + + +3282 +020041 +Airframe icing +10 +Trace of icing +Operational + + +3283 +020041 +Airframe icing +11 +Trace of icing in cloud +Operational + + +3284 +020041 +Airframe icing +12 +Trace of icing in precipitation +Operational + + +3285 +020041 +Airframe icing +13-14 +Reserved +Operational + + +3286 +020041 +Airframe icing +15 +Missing value +Operational + + +3287 +020042 +Airframe icing present +0 +No icing +Operational + + +3288 +020042 +Airframe icing present +1 +Icing present +Operational + + +3289 +020042 +Airframe icing present +2 +Reserved +Operational + + +3290 +020042 +Airframe icing present +3 +Missing value +Operational + + +3291 +020045 +Supercooled large droplet (SLD) conditions +0 +No SLD conditions present +Operational + + +3292 +020045 +Supercooled large droplet (SLD) conditions +1 +SLD conditions present +Operational + + +3293 +020045 +Supercooled large droplet (SLD) conditions +2 +Reserved +Operational + + +3294 +020045 +Supercooled large droplet (SLD) conditions +3 +Missing value +Operational + + +3295 +020048 +Evolution of feature +0 +Stability +Operational + + +3296 +020048 +Evolution of feature +1 +Diminution +Operational + + +3297 +020048 +Evolution of feature +2 +Intensification +Operational + + +3298 +020048 +Evolution of feature +3 +Unknown +Operational + + +3299 +020048 +Evolution of feature +4-14 +Reserved +Operational + + +3300 +020048 +Evolution of feature +15 +Missing value +Operational + + +3301 +020050 +Cloud index +0 +Reserved +Operational + + +3302 +020050 +Cloud index +1 +1st low cloud +Operational + + +3303 +020050 +Cloud index +2 +2nd low cloud +Operational + + +3304 +020050 +Cloud index +3 +3rd low cloud +Operational + + +3305 +020050 +Cloud index +4 +1st medium cloud +Operational + + +3306 +020050 +Cloud index +5 +2nd medium cloud +Operational + + +3307 +020050 +Cloud index +6 +3rd medium cloud +Operational + + +3308 +020050 +Cloud index +7 +1st high cloud +Operational + + +3309 +020050 +Cloud index +8 +2nd high cloud +Operational + + +3310 +020050 +Cloud index +9-254 +Reserved +Operational + + +3311 +020050 +Cloud index +255 +Missing value +Operational + + +3312 +020055 +State of sky in the tropics +0 +Cumulus, if any, are quite small; generally less than 2/8 coverage, except on windward slopes of elevated terrain; average width of cloud is at least as great as its vertical thickness +Operational + + +3313 +020055 +State of sky in the tropics +1 +Cumulus of intermediate size with cloud cover less than 5/8; average cloud width is more than its vertical thickness; towers are vertical with little or no evidence of precipitation, except along slopes of elevated terrain; a general absence of middle and upper clouds +Operational + + +3314 +020055 +State of sky in the tropics +2 +Swelling Cumulus with rapidly growing tall turrets which decrease in size with height and whose tops tend to separate from the longer cloud body and evaporate within minutes of the separation +Operational + + +3315 +020055 +State of sky in the tropics +3 +Swelling Cumulus with towers having a pronounced tilt in a downwind direction; vertical cloud thickness is more than one and a half times that of its average width +Operational + + +3316 +020055 +State of sky in the tropics +4 +Swelling Cumulus with towers having a pronounced tilt in an upwind direction; vertical cloud thickness is more than one and a half times that of its average width +Operational + + +3317 +020055 +State of sky in the tropics +5 +Tall Cumulus congestus with vertical thickness more than twice the average width; not organized in clusters or lines; one or more layers of clouds extend out from the cloud towers, although no continuous cloud layers exist +(see Note) +Operational + + +3318 +020055 +State of sky in the tropics +6 +Isolated Cumulonimbus or large clusters of Cumulus turrets separated by wide areas in which clouds are absent; cloud bases are generally dark with showers observed in most cells; some scattered middle and upper clouds may be present; individual Cumulus cells are one to two times higher than they are wide +Operational + + +3319 +020055 +State of sky in the tropics +7 +Numerous Cumulus extending through the middle troposphere with broken to overcast sheets of middle clouds and/or Cirrostratus; Cumulus towers do not decrease generally in size with height; ragged dark cloud bases with some showers present +Operational + + +3320 +020055 +State of sky in the tropics +8 +Continuous dense middle clouds and/or Cirrostratus cloud sheets with some large isolated Cumulonimbus or Cumulus congestus clouds penetrating these sheets; light rain occasionally observed from the Altostratus; Cumulonimbus bases ragged and dark with showers visible +(see Note) +Operational + + +3321 +020055 +State of sky in the tropics +9 +Continuous sheets of middle clouds and/or Cirrostratus with Cumulonimbus and Cumulus congestus in organized lines or cloud bands; rain is generally observed from Altostratus sheets and heavy showers from Cumulonimbus; wind has a squally character +Operational + + +3322 +020055 +State of sky in the tropics +10 +State of sky unknown or not described by any of the above +Operational + + +3323 +020055 +State of sky in the tropics +11-14 +Reserved +Operational + + +3324 +020055 +State of sky in the tropics +15 +Missing value +Operational + + +3325 +020056 +Cloud phase +0 +Unknown +Operational + + +3326 +020056 +Cloud phase +1 +Water +Operational + + +3327 +020056 +Cloud phase +2 +Ice +Operational + + +3328 +020056 +Cloud phase +3 +Mixed +Operational + + +3329 +020056 +Cloud phase +4 +Clear +Operational + + +3330 +020056 +Cloud phase +5 +Supercooled liquid water +Operational + + +3331 +020056 +Cloud phase +6 +Reserved +Operational + + +3332 +020056 +Cloud phase +7 +Missing value +Operational + + +3333 +020062 +State of the ground (with or without snow) +0 +Surface of ground dry (without cracks and no appreciable amount of dust or loose sand) +without snow or measurable ice cover +Operational + + +3334 +020062 +State of the ground (with or without snow) +1 +Surface of ground moist +without snow or measurable ice cover +Operational + + +3335 +020062 +State of the ground (with or without snow) +2 +Surface of ground wet (standing water in small or large pools on surface) +without snow or measurable ice cover +Operational + + +3336 +020062 +State of the ground (with or without snow) +3 +Flooded +without snow or measurable ice cover +Operational + + +3337 +020062 +State of the ground (with or without snow) +4 +Surface of ground frozen +without snow or measurable ice cover +Operational + + +3338 +020062 +State of the ground (with or without snow) +5 +Glaze on ground +without snow or measurable ice cover +Operational + + +3339 +020062 +State of the ground (with or without snow) +6 +Loose dry dust or sand not covering ground completely +without snow or measurable ice cover +Operational + + +3340 +020062 +State of the ground (with or without snow) +7 +Thin cover of loose dry dust or sand covering ground completely +without snow or measurable ice cover +Operational + + +3341 +020062 +State of the ground (with or without snow) +8 +Moderate or thick cover of loose dry dust or sand covering ground completely +without snow or measurable ice cover +Operational + + +3342 +020062 +State of the ground (with or without snow) +9 +Extremely dry with cracks +without snow or measurable ice cover +Operational + + +3343 +020062 +State of the ground (with or without snow) +10 +Ground predominantly covered by ice +with snow or measurable ice cover +Operational + + +3344 +020062 +State of the ground (with or without snow) +11 +Compact or wet snow (with or without ice) covering less than one half of the ground +with snow or measurable ice cover +Operational + + +3345 +020062 +State of the ground (with or without snow) +12 +Compact or wet snow (with or without ice) covering at least one half of the ground but ground not completely covered +with snow or measurable ice cover +Operational + + +3346 +020062 +State of the ground (with or without snow) +13 +Even layer of compact or wet snow covering ground completely +with snow or measurable ice cover +Operational + + +3347 +020062 +State of the ground (with or without snow) +14 +Uneven layer of compact or wet snow covering ground completely +with snow or measurable ice cover +Operational + + +3348 +020062 +State of the ground (with or without snow) +15 +Loose dry snow covering less than one half of the ground +with snow or measurable ice cover +Operational + + +3349 +020062 +State of the ground (with or without snow) +16 +Loose dry snow covering at least one half of the ground but ground not completely covered +with snow or measurable ice cover +Operational + + +3350 +020062 +State of the ground (with or without snow) +17 +Even layer of loose dry snow covering ground completely +with snow or measurable ice cover +Operational + + +3351 +020062 +State of the ground (with or without snow) +18 +Uneven layer of loose dry snow covering ground completely +with snow or measurable ice cover +Operational + + +3352 +020062 +State of the ground (with or without snow) +19 +Snow covering ground completely; deep drifts +with snow or measurable ice cover +Operational + + +3353 +020062 +State of the ground (with or without snow) +20-30 +Reserved +Operational + + +3354 +020062 +State of the ground (with or without snow) +31 +Missing value +Operational + + +3355 +020063 +Special phenomena +0 +Reserved +Operational + + +3356 +020063 +Special phenomena +1 +Highest wind speed gusts greater than 11.5 m/s +Operational + + +3357 +020063 +Special phenomena +2 +Highest mean wind speed greater than 17.5 m/s +Operational + + +3358 +020063 +Special phenomena +3-6 +Reserved +Operational + + +3359 +020063 +Special phenomena +7 +Visibility greater than 100 000 m +Operational + + +3360 +020063 +Special phenomena +8-9 +Reserved +Operational + + +3361 +020063 +Special phenomena +10-19 Mirage +Operational + + +3362 +020063 +Special phenomena +10 +Mirage - No specification +Operational + + +3363 +020063 +Special phenomena +11 +Mirage - Image of distant object raised (looming) +Operational + + +3364 +020063 +Special phenomena +12 +Mirage - Image of distant object raised clear above the horizon +Operational + + +3365 +020063 +Special phenomena +13 +Mirage - Inverted image of distant object +Operational + + +3366 +020063 +Special phenomena +14 +Mirage - Complex, multiple images of distant object (images not inverted) +Operational + + +3367 +020063 +Special phenomena +15 +Mirage - Complex, multiple images of distant object (some images being inverted) +Operational + + +3368 +020063 +Special phenomena +16 +Mirage - Sun or moon seen appreciably distorted +Operational + + +3369 +020063 +Special phenomena +17 +Mirage - Sun visible, although astronomically below the horizon +Operational + + +3370 +020063 +Special phenomena +18 +Mirage - Moon visible, although astronomically below the horizon +Operational + + +3371 +020063 +Special phenomena +19 +Reserved +Operational + + +3372 +020063 +Special phenomena +20-22 Day darkness, worst in direction specified +Operational + + +3373 +020063 +Special phenomena +20 +Day darkness, bad, worst in direction specified +Operational + + +3374 +020063 +Special phenomena +21 +Day darkness, very bad, worst in direction specified +Operational + + +3375 +020063 +Special phenomena +22 +Day darkness, black, worst in direction specified +Operational + + +3376 +020063 +Special phenomena +23-30 +Reserved +Operational + + +3377 +020063 +Special phenomena +31-39 Coloration and/or convergence of clouds associated with a tropical disturbance +Operational + + +3378 +020063 +Special phenomena +31 +Slight coloration of clouds at sunrise associated with a tropical disturbance +Operational + + +3379 +020063 +Special phenomena +32 +Deep-red coloration of clouds at sunrise associated with a tropical disturbance +Operational + + +3380 +020063 +Special phenomena +33 +Slight coloration of clouds at sunset associated with a tropical disturbance +Operational + + +3381 +020063 +Special phenomena +34 +Deep-red coloration of clouds at sunset associated with a tropical disturbance +Operational + + +3382 +020063 +Special phenomena +35 +Convergence of CH clouds at a point below 45 deg forming or increasing and associated with a tropical disturbance +Operational + + +3383 +020063 +Special phenomena +36 +Convergence of CH clouds at a point above 45 deg forming or increasing and associated with a tropical disturbance +Operational + + +3384 +020063 +Special phenomena +37 +Convergence of CH clouds at a point below 45 deg dissolving or diminishing and associated with a tropical disturbance +Operational + + +3385 +020063 +Special phenomena +38 +Convergence of CH clouds at a point above 45 deg dissolving or diminishing and associated with a tropical disturbance +Operational + + +3386 +020063 +Special phenomena +39 +Reserved +Operational + + +3387 +020063 +Special phenomena +40-43 Hoar frost or coloured precipitation +Operational + + +3388 +020063 +Special phenomena +40 +Hoar frost on horizontal surfaces +Operational + + +3389 +020063 +Special phenomena +41 +Hoar frost on horizontal and vertical surfaces +Operational + + +3390 +020063 +Special phenomena +42 +Precipitation containing sand or desert dust +Operational + + +3391 +020063 +Special phenomena +43 +Precipitation containing volcanic ash +Operational + + +3392 +020063 +Special phenomena +44-49 +Reserved +Operational + + +3393 +020063 +Special phenomena +50-59 Nature and/or type of squall +Operational + + +3394 +020063 +Special phenomena +50 +Calm or light wind followed by a squall +Operational + + +3395 +020063 +Special phenomena +51 +Calm or light wind followed by a succession of squalls +Operational + + +3396 +020063 +Special phenomena +52 +Gusty weather followed by a squall +Operational + + +3397 +020063 +Special phenomena +53 +Gusty weather followed by a succession of squalls +Operational + + +3398 +020063 +Special phenomena +54 +Squall followed by gusty weather +Operational + + +3399 +020063 +Special phenomena +55 +General gusty weather with squall at intervals +Operational + + +3400 +020063 +Special phenomena +56 +Squall approaching station +Operational + + +3401 +020063 +Special phenomena +57 +Line squall +Operational + + +3402 +020063 +Special phenomena +58 +Squall with drifting or blowing dust or sand +Operational + + +3403 +020063 +Special phenomena +59 +Line squall with drifting or blowing dust or sand +Operational + + +3404 +020063 +Special phenomena +60-69 Variation of temperature during the period specified, associated with glaze or rime +Operational + + +3405 +020063 +Special phenomena +60 +Temperature steady +Operational + + +3406 +020063 +Special phenomena +61 +Temperature falling, without going below 0 deg C +Operational + + +3407 +020063 +Special phenomena +62 +Temperature rising, without going above 0 deg C +Operational + + +3408 +020063 +Special phenomena +63 +Temperature falling to a value below 0 deg C +Operational + + +3409 +020063 +Special phenomena +64 +Temperature rising to a value above 0 deg C +Operational + + +3410 +020063 +Special phenomena +65 +Irregular variation, oscillations of temperature passing through 0 deg C +Operational + + +3411 +020063 +Special phenomena +66 +Irregular variation, oscillations of temperature not passing through 0 deg C +Operational + + +3412 +020063 +Special phenomena +67 +Variation of temperature not observed +Operational + + +3413 +020063 +Special phenomena +68 +Not allocated +Operational + + +3414 +020063 +Special phenomena +69 +Variation of temperature unknown owing to lack of thermograph +Operational + + +3415 +020063 +Special phenomena +70-79 Variation of visibility during the period specified +Operational + + +3416 +020063 +Special phenomena +70 +Visibility has not varied (sun visible) towards direction specified +Operational + + +3417 +020063 +Special phenomena +71 +Visibility has not varied (sun invisible) towards direction specified +Operational + + +3418 +020063 +Special phenomena +72 +Visibility has increased (sun visible) towards direction specified +Operational + + +3419 +020063 +Special phenomena +73 +Visibility has increased (sun invisible) towards direction specified +Operational + + +3420 +020063 +Special phenomena +74 +Visibility has decreased (sun visible) towards direction specified +Operational + + +3421 +020063 +Special phenomena +75 +Visibility has decreased (sun invisible) towards direction specified +Operational + + +3422 +020063 +Special phenomena +76 +Fog coming from direction specified +Operational + + +3423 +020063 +Special phenomena +77 +Fog has lifted, without dissipating +Operational + + +3424 +020063 +Special phenomena +78 +Fog has dispersed without regard to direction +Operational + + +3425 +020063 +Special phenomena +79 +Moving patches or banks of fog +Operational + + +3426 +020063 +Special phenomena +80-89 Optical phenomena +Operational + + +3427 +020063 +Special phenomena +80 +Brocken spectre +Operational + + +3428 +020063 +Special phenomena +81 +Rainbow +Operational + + +3429 +020063 +Special phenomena +82 +Solar or lunar halo +Operational + + +3430 +020063 +Special phenomena +83 +Parhelia or anthelia +Operational + + +3431 +020063 +Special phenomena +84 +Sun pillar +Operational + + +3432 +020063 +Special phenomena +85 +Corona +Operational + + +3433 +020063 +Special phenomena +86 +Twilight glow +Operational + + +3434 +020063 +Special phenomena +87 +Twilight glow on the mountains (Alpengluehen) +Operational + + +3435 +020063 +Special phenomena +88 +Mirage +Operational + + +3436 +020063 +Special phenomena +89 +Zodiacal light +Operational + + +3437 +020063 +Special phenomena +90 +St Elmo's fire +Operational + + +3438 +020063 +Special phenomena +91-1022 +Reserved +Operational + + +3439 +020063 +Special phenomena +1023 +Missing value +Operational + + +3440 +020071 +Accuracy of fix and rate of atmospherics +0 +No assessment +No assessment +Operational + + +3441 +020071 +Accuracy of fix and rate of atmospherics +1 +Less than 50 km +Less than 1 per second +Operational + + +3442 +020071 +Accuracy of fix and rate of atmospherics +2 +Between 50 and 200 km +Less than 1 per second +Operational + + +3443 +020071 +Accuracy of fix and rate of atmospherics +3 +More than 200 km +Less than 1 per second +Operational + + +3444 +020071 +Accuracy of fix and rate of atmospherics +4 +Less than 50 km +1 or more per second +Operational + + +3445 +020071 +Accuracy of fix and rate of atmospherics +5 +Between 50 and 200 km +1 or more per second +Operational + + +3446 +020071 +Accuracy of fix and rate of atmospherics +6 +More than 200 km +1 or more per second +Operational + + +3447 +020071 +Accuracy of fix and rate of atmospherics +7 +Less than 50 km +Rate so rapid number cannot be counted +Operational + + +3448 +020071 +Accuracy of fix and rate of atmospherics +8 +Between 50 and 200 km +Rate so rapid number cannot be counted +Operational + + +3449 +020071 +Accuracy of fix and rate of atmospherics +9 +More than 200 km +Rate so rapid number cannot be counted +Operational + + +3450 +020071 +Accuracy of fix and rate of atmospherics +10-14 +Reserved +Operational + + +3451 +020071 +Accuracy of fix and rate of atmospherics +15 +Missing value +Operational + + +3452 +020085 +General condition of runway +0 +Cleared (CLRD//) +Operational + + +3453 +020085 +General condition of runway +1 +All runways closed (SNOCLO) +Operational + + +3454 +020085 +General condition of runway +2-14 +Reserved +Operational + + +3455 +020085 +General condition of runway +15 +Missing value +Operational + + +3456 +020086 +Runway deposits +0 +Clear and dry +Operational + + +3457 +020086 +Runway deposits +1 +Damp +Operational + + +3458 +020086 +Runway deposits +2 +Wet with water patches +Operational + + +3459 +020086 +Runway deposits +3 +Rime and frost covered (depth normally less than 1 mm) +Operational + + +3460 +020086 +Runway deposits +4 +Dry snow +Operational + + +3461 +020086 +Runway deposits +5 +Wet snow +Operational + + +3462 +020086 +Runway deposits +6 +Slush +Operational + + +3463 +020086 +Runway deposits +7 +Ice +Operational + + +3464 +020086 +Runway deposits +8 +Compacted or rolled snow +Operational + + +3465 +020086 +Runway deposits +9 +Frozen ruts or ridges +Operational + + +3466 +020086 +Runway deposits +10-14 +Reserved +Operational + + +3467 +020086 +Runway deposits +15 +Missing or not reported (e.g. due to runway clearance in progress) +Operational + + +3468 +020087 +Runway contamination +0 +Reserved +Operational + + +3469 +020087 +Runway contamination +1 +Less than 10% of runway covered +Operational + + +3470 +020087 +Runway contamination +2 +11% to 25% of runway covered +Operational + + +3471 +020087 +Runway contamination +3-4 +Reserved +Operational + + +3472 +020087 +Runway contamination +5 +26% to 50% of runway covered +Operational + + +3473 +020087 +Runway contamination +6-8 +Reserved +Operational + + +3474 +020087 +Runway contamination +9 +51% to 100% of runway covered +Operational + + +3475 +020087 +Runway contamination +10-14 +Reserved +Operational + + +3476 +020087 +Runway contamination +15 +Missing or not reported (e.g. due to runway clearance in progress) +Operational + + +3477 +020089 +Runway friction coefficient +0 +0.00 +Operational + + +3478 +020089 +Runway friction coefficient +1 +0.01 +Operational + + +3479 +020089 +Runway friction coefficient +2-88 +0.02 to 0.88 +Operational + + +3480 +020089 +Runway friction coefficient +89 +0.89 +Operational + + +3481 +020089 +Runway friction coefficient +90 +0.90 +Operational + + +3482 +020089 +Runway friction coefficient +91 +Braking action poor +Operational + + +3483 +020089 +Runway friction coefficient +92 +Braking action medium to poor +Operational + + +3484 +020089 +Runway friction coefficient +93 +Braking action medium +Operational + + +3485 +020089 +Runway friction coefficient +94 +Braking action medium to good +Operational + + +3486 +020089 +Runway friction coefficient +95 +Braking action good +Operational + + +3487 +020089 +Runway friction coefficient +96-98 +Reserved +Operational + + +3488 +020089 +Runway friction coefficient +99 +Unreliable +Operational + + +3489 +020089 +Runway friction coefficient +100-126 +Reserved +Operational + + +3490 +020089 +Runway friction coefficient +127 +Missing, not reported and/or runway not operational +Operational + + +3491 +020090 +Special clouds +0 +Reserved +Operational + + +3492 +020090 +Special clouds +1 +Nacreous clouds +Operational + + +3493 +020090 +Special clouds +2 +Noctilucent clouds +Operational + + +3494 +020090 +Special clouds +3 +Clouds from waterfalls +Operational + + +3495 +020090 +Special clouds +4 +Clouds from fires +Operational + + +3496 +020090 +Special clouds +5 +Clouds from volcanic eruptions +Operational + + +3497 +020090 +Special clouds +6-14 +Reserved +Operational + + +3498 +020090 +Special clouds +15 +Missing value +Operational + + +3499 +020101 +Locust (acridian) name +0 +Reserved +Operational + + +3500 +020101 +Locust (acridian) name +1 +Schistocerca gregaria +Operational + + +3501 +020101 +Locust (acridian) name +2 +Locusta migratoria +Operational + + +3502 +020101 +Locust (acridian) name +3 +Nomadacris septemfasciata +Operational + + +3503 +020101 +Locust (acridian) name +4 +Oedaleus senegalensis +Operational + + +3504 +020101 +Locust (acridian) name +5 +Anracridium spp +Operational + + +3505 +020101 +Locust (acridian) name +6 +Other locusts +Operational + + +3506 +020101 +Locust (acridian) name +7 +Other grasshoppers +Operational + + +3507 +020101 +Locust (acridian) name +8 +Other crickets +Operational + + +3508 +020101 +Locust (acridian) name +9 +Spodoptera exempta +Operational + + +3509 +020101 +Locust (acridian) name +10-14 +Reserved +Operational + + +3510 +020101 +Locust (acridian) name +15 +Missing value +Operational + + +3511 +020102 +Locust (maturity) colour +0 +Green +Operational + + +3512 +020102 +Locust (maturity) colour +1 +Green or black +Operational + + +3513 +020102 +Locust (maturity) colour +2 +Black +Operational + + +3514 +020102 +Locust (maturity) colour +3 +Yellow and black +Operational + + +3515 +020102 +Locust (maturity) colour +4 +Straw/grey +Operational + + +3516 +020102 +Locust (maturity) colour +5 +Pink +Operational + + +3517 +020102 +Locust (maturity) colour +6 +Dark red/brown +Operational + + +3518 +020102 +Locust (maturity) colour +7 +Mixed red and yellow +Operational + + +3519 +020102 +Locust (maturity) colour +8 +Yellow +Operational + + +3520 +020102 +Locust (maturity) colour +9 +Other +Operational + + +3521 +020102 +Locust (maturity) colour +10-14 +Reserved +Operational + + +3522 +020102 +Locust (maturity) colour +15 +Missing value +Operational + + +3523 +020103 +Stage of development of locusts +0 +Hoppers (nymphs, larvae), stage 1 +Operational + + +3524 +020103 +Stage of development of locusts +1 +Hoppers (nymphs, larvae), stage 2 or mixed 1, 2 instars (stages) +Operational + + +3525 +020103 +Stage of development of locusts +2 +Hoppers (nymphs, larvae), stage 3 or mixed 2, 3 instars +Operational + + +3526 +020103 +Stage of development of locusts +3 +Hoppers (nymphs, larvae), stage 4 or mixed 3, 4 instars +Operational + + +3527 +020103 +Stage of development of locusts +4 +Hoppers (nymphs, larvae), stage 5 or mixed 4, 5 instars +Operational + + +3528 +020103 +Stage of development of locusts +5 +Hoppers (nymphs, larvae), stage mixed, all or many instars +Operational + + +3529 +020103 +Stage of development of locusts +6 +Fledglings (wings too soft for sustained flight) +Operational + + +3530 +020103 +Stage of development of locusts +7 +Immature adults +Operational + + +3531 +020103 +Stage of development of locusts +8 +Mixed maturity adults +Operational + + +3532 +020103 +Stage of development of locusts +9 +Mature adults +Operational + + +3533 +020103 +Stage of development of locusts +10-14 +Reserved +Operational + + +3534 +020103 +Stage of development of locusts +15 +Missing value +Operational + + +3535 +020104 +Organization state of swarm or band of locusts +0 +Hoppers only, mainly in bands or clusters +Operational + + +3536 +020104 +Organization state of swarm or band of locusts +1 +Winged adults in the vicinity more than 10 kilometres from point of observation +Operational + + +3537 +020104 +Organization state of swarm or band of locusts +2 +Locusts in flight, a few seen at the station +Operational + + +3538 +020104 +Organization state of swarm or band of locusts +3 +Locusts at the station, most of them on the ground +Operational + + +3539 +020104 +Organization state of swarm or band of locusts +4 +Locusts, some on ground and others in flight at a height less than 10 metres +Operational + + +3540 +020104 +Organization state of swarm or band of locusts +5 +Locusts, some on ground and others in flight at a height greater than 10 metres +Operational + + +3541 +020104 +Organization state of swarm or band of locusts +6 +Locusts, most in flight at a height less than 10 metres +Operational + + +3542 +020104 +Organization state of swarm or band of locusts +7 +Locusts, most in flight at a height greater than 10 metres +Operational + + +3543 +020104 +Organization state of swarm or band of locusts +8 +Locusts, all over inflicting severe damage to vegetation, no extermination operation +Operational + + +3544 +020104 +Organization state of swarm or band of locusts +9 +Locusts, all over inflicting severe damage to vegetation, extermination operation in progress +Operational + + +3545 +020104 +Organization state of swarm or band of locusts +10-14 +Reserved +Operational + + +3546 +020104 +Organization state of swarm or band of locusts +15 +Missing value +Operational + + +3547 +020105 +Size of swarm or band of locusts and duration of passage of swarm +When 0 20 104 (organization state of swarm or band of locusts) = 0 +Operational + + +3548 +020105 +Size of swarm or band of locusts and duration of passage of swarm +0 +Reserved +Operational + + +3549 +020105 +Size of swarm or band of locusts and duration of passage of swarm +1 +Area covered by isolated bands < 10 m2 +Operational + + +3550 +020105 +Size of swarm or band of locusts and duration of passage of swarm +2 +Area covered by isolated bands 10 - 100 m2 +Operational + + +3551 +020105 +Size of swarm or band of locusts and duration of passage of swarm +3 +Area covered by isolated bands 100 - 1000 m2 +Operational + + +3552 +020105 +Size of swarm or band of locusts and duration of passage of swarm +4 +Area covered by isolated bands 1 000 - 10000 m2 +Operational + + +3553 +020105 +Size of swarm or band of locusts and duration of passage of swarm +5 +Area covered by isolated bands 1 - 10 ha +Operational + + +3554 +020105 +Size of swarm or band of locusts and duration of passage of swarm +6 +Area covered by isolated bands > 10 ha +Operational + + +3555 +020105 +Size of swarm or band of locusts and duration of passage of swarm +7 +Area covered by dispersed bands < 100 km2 +Operational + + +3556 +020105 +Size of swarm or band of locusts and duration of passage of swarm +8 +Area covered by dispersed bands 100 - 1000 km2 +Operational + + +3557 +020105 +Size of swarm or band of locusts and duration of passage of swarm +9 +Area covered by dispersed bands > 1000 km2 +Operational + + +3558 +020105 +Size of swarm or band of locusts and duration of passage of swarm +10-14 +Reserved +Operational + + +3559 +020105 +Size of swarm or band of locusts and duration of passage of swarm +15 +Missing value +Operational + + +3560 +020105 +Size of swarm or band of locusts and duration of passage of swarm +When 0 20 104 (organization state of swarm or band of locusts) = 1 to 9 +Operational + + +3561 +020105 +Size of swarm or band of locusts and duration of passage of swarm +0 +Small swarm less than 1 km2 or adults in ground, tens or hundreds of individuals visible simultaneously, duration of passage less than 1 hour ago +Operational + + +3562 +020105 +Size of swarm or band of locusts and duration of passage of swarm +1 +Small swarm less than 1 km2 or adults in ground, tens or hundreds of individuals visible simultaneously, duration of passage 1 to 6 hours ago +Operational + + +3563 +020105 +Size of swarm or band of locusts and duration of passage of swarm +2 +Small swarm less than 1 km2 or adults in ground, tens or hundreds of individuals visible simultaneously, duration of passage over 6 hours ago +Operational + + +3564 +020105 +Size of swarm or band of locusts and duration of passage of swarm +3 +Medium swarm or scattered adults, several visible simultaneously, duration of passage less than 1 hour ago +Operational + + +3565 +020105 +Size of swarm or band of locusts and duration of passage of swarm +4 +Medium swarm or scattered adults, several visible simultaneously, duration of passage 1 to 6 hours ago +Operational + + +3566 +020105 +Size of swarm or band of locusts and duration of passage of swarm +5 +Medium swarm or scattered adults, several visible simultaneously, duration of passage over 6 hours ago +Operational + + +3567 +020105 +Size of swarm or band of locusts and duration of passage of swarm +6 +Large swarm or isolated adults, seen singly, duration of passage less than 1 hour ago +Operational + + +3568 +020105 +Size of swarm or band of locusts and duration of passage of swarm +7 +Large swarm or isolated adults, seen singly, duration of passage 1 to 6 hours ago +Operational + + +3569 +020105 +Size of swarm or band of locusts and duration of passage of swarm +8 +Large swarm or isolated adults, seen singly, duration of passage over 6 hours ago +Operational + + +3570 +020105 +Size of swarm or band of locusts and duration of passage of swarm +9 +More than one swarm of locusts +Operational + + +3571 +020105 +Size of swarm or band of locusts and duration of passage of swarm +10 +Size of swarm and/or duration of passage not determined owing to darkness or similar phenomena +Operational + + +3572 +020105 +Size of swarm or band of locusts and duration of passage of swarm +11-14 +Reserved +Operational + + +3573 +020105 +Size of swarm or band of locusts and duration of passage of swarm +15 +Missing value +Operational + + +3574 +020106 +Locust population density +0 +Reserved +Operational + + +3575 +020106 +Locust population density +1 +Thin density swarm (swarm visible only when near enough for individual locusts to be discerned) +Operational + + +3576 +020106 +Locust population density +2 +Medium density swarm +Operational + + +3577 +020106 +Locust population density +3 +Dense swarm (obscuring nearby features, e.g. trees) +Operational + + +3578 +020106 +Locust population density +4 +Isolated hoppers seen singly +Operational + + +3579 +020106 +Locust population density +5 +Scattered hoppers, several visible simultaneously +Operational + + +3580 +020106 +Locust population density +6-14 +Reserved +Operational + + +3581 +020106 +Locust population density +15 +Missing value +Operational + + +3582 +020107 +Direction of movements of locust swarm +0 +Reserved +Operational + + +3583 +020107 +Direction of movements of locust swarm +1 +Generally in the direction NE +Operational + + +3584 +020107 +Direction of movements of locust swarm +2 +Generally in the direction E +Operational + + +3585 +020107 +Direction of movements of locust swarm +3 +Generally in the direction SE +Operational + + +3586 +020107 +Direction of movements of locust swarm +4 +Generally in the direction S +Operational + + +3587 +020107 +Direction of movements of locust swarm +5 +Generally in the direction SW +Operational + + +3588 +020107 +Direction of movements of locust swarm +6 +Generally in the direction W +Operational + + +3589 +020107 +Direction of movements of locust swarm +7 +Generally in the direction NW +Operational + + +3590 +020107 +Direction of movements of locust swarm +8 +Generally in the direction N +Operational + + +3591 +020107 +Direction of movements of locust swarm +9 +Specific direction indeterminable +Operational + + +3592 +020107 +Direction of movements of locust swarm +10-14 +Reserved +Operational + + +3593 +020107 +Direction of movements of locust swarm +15 +Missing value +Operational + + +3594 +020108 +Extent of vegetation +0 +Bare ground +Operational + + +3595 +020108 +Extent of vegetation +1 +Dry, presence of few and isolated shrubs +Operational + + +3596 +020108 +Extent of vegetation +2 +Sparse vegetation (sprouting) +Operational + + +3597 +020108 +Extent of vegetation +3 +Dense vegetation (sprouting) +Operational + + +3598 +020108 +Extent of vegetation +4 +Sparse vegetation (growing) +Operational + + +3599 +020108 +Extent of vegetation +5 +Dense vegetation (growing) +Operational + + +3600 +020108 +Extent of vegetation +6 +Sparse vegetation in flower +Operational + + +3601 +020108 +Extent of vegetation +7 +Dense vegetation in flower +Operational + + +3602 +020108 +Extent of vegetation +8-14 +Reserved +Operational + + +3603 +020108 +Extent of vegetation +15 +Missing value +Operational + + +3604 +020119 +Lightning discharge polarity +0 +Not defined +Operational + + +3605 +020119 +Lightning discharge polarity +1 +Positive +Operational + + +3606 +020119 +Lightning discharge polarity +2 +Negative +Operational + + +3607 +020119 +Lightning discharge polarity +3 +Missing value +Operational + + +3608 +020124 +Lightning stroke or flash +0 +Not defined +Operational + + +3609 +020124 +Lightning stroke or flash +1 +Lightning stroke +Operational + + +3610 +020124 +Lightning stroke or flash +2 +Lightning flash, by manual observation, or if equipment insensitive to stroke resolution +Operational + + +3611 +020124 +Lightning stroke or flash +3 +Missing value +Operational + + +3612 +020136 +Supplementary cloud type +0-7 Nature of clouds of vertical development (Ca - Code table 0531) +Operational + + +3613 +020136 +Supplementary cloud type +0 +Isolated cumulus humilis and/or cumulus mediocris of vertical development +Operational + + +3614 +020136 +Supplementary cloud type +1 +Numerous cumulus humilis and/or cumulus mediocris of vertical development +Operational + + +3615 +020136 +Supplementary cloud type +2 +Isolated cumulus congestus of vertical development +Operational + + +3616 +020136 +Supplementary cloud type +3 +Numerous cumulus congestus of vertical development +Operational + + +3617 +020136 +Supplementary cloud type +4 +Isolated cumulonimbus of vertical development +Operational + + +3618 +020136 +Supplementary cloud type +5 +Numerous cumulonimbus of vertical development +Operational + + +3619 +020136 +Supplementary cloud type +6 +Isolated cumulus and cumulonimbus of vertical development +Operational + + +3620 +020136 +Supplementary cloud type +7 +Numerous cumulus and cumulonimbus of vertical development +Operational + + +3621 +020136 +Supplementary cloud type +8-9 +Reserved +Operational + + +3622 +020136 +Supplementary cloud type +10-19 Orographic clouds (C0 - Code table 0561) +Operational + + +3623 +020136 +Supplementary cloud type +10 +Reserved +Operational + + +3624 +020136 +Supplementary cloud type +11 +Isolated orographic clouds, pileus, incus, forming +Operational + + +3625 +020136 +Supplementary cloud type +12 +Isolated orographic clouds, pileus, incus, not changing +Operational + + +3626 +020136 +Supplementary cloud type +13 +Isolated orographic clouds, pileus, incus, dissolving +Operational + + +3627 +020136 +Supplementary cloud type +14 +Irregular banks of orographic cloud, foehn bank, etc., forming +Operational + + +3628 +020136 +Supplementary cloud type +15 +Irregular banks of orographic cloud, foehn bank, etc., not changing +Operational + + +3629 +020136 +Supplementary cloud type +16 +Irregular banks of orographic cloud, foehn bank, etc., dissolving +Operational + + +3630 +020136 +Supplementary cloud type +17 +Compact layer of orographic cloud, foehn bank, etc., forming +Operational + + +3631 +020136 +Supplementary cloud type +18 +Compact layer of orographic cloud, foehn bank, etc., not changing +Operational + + +3632 +020136 +Supplementary cloud type +19 +Compact layer of orographic cloud, foehn bank, etc., dissolving +Operational + + +3633 +020136 +Supplementary cloud type +20-29 Cloud conditions over mountains and passes (Nm - Code table 2745) +Operational + + +3634 +020136 +Supplementary cloud type +20 +All mountains open, only small amounts of cloud present +Operational + + +3635 +020136 +Supplementary cloud type +21 +Mountains partly covered with detached clouds (not more than half the peaks can be seen) +Operational + + +3636 +020136 +Supplementary cloud type +22 +All mountain slopes covered, peaks and passes free +Operational + + +3637 +020136 +Supplementary cloud type +23 +Mountains open on observer’s side (only small amounts of cloud present), but a continuous wall of cloud on the other side +Operational + + +3638 +020136 +Supplementary cloud type +24 +Clouds low above the mountains, but all slopes and mountains open (only small amounts of cloud on the slopes) +Operational + + +3639 +020136 +Supplementary cloud type +25 +Clouds low above the mountains, peaks partly covered by precipitation trails or clouds +Operational + + +3640 +020136 +Supplementary cloud type +26 +All peaks covered but passes open, slopes either open or covered +Operational + + +3641 +020136 +Supplementary cloud type +27 +Mountains generally covered but some peaks free, slopes wholly or partially covered +Operational + + +3642 +020136 +Supplementary cloud type +28 +All peaks, passes and slopes covered +Operational + + +3643 +020136 +Supplementary cloud type +29 +Mountains cannot be seen owing to darkness, fog, snowstorm, precipitation, etc. +Operational + + +3644 +020136 +Supplementary cloud type +30-34 +Reserved +Operational + + +3645 +020136 +Supplementary cloud type +35-39 Condensation trails (Nt - Code table 2752) +Operational + + +3646 +020136 +Supplementary cloud type +35 +Non-persistent condensation trails +Operational + + +3647 +020136 +Supplementary cloud type +36 +Persistent condensation trails covering less than 1/8 of the sky +Operational + + +3648 +020136 +Supplementary cloud type +37 +Persistent condensation trails covering 1/8 of the sky +Operational + + +3649 +020136 +Supplementary cloud type +38 +Persistent condensation trails covering 2/8 of the sky +Operational + + +3650 +020136 +Supplementary cloud type +39 +Persistent condensation trails covering 3/8 or more of the sky +Operational + + +3651 +020136 +Supplementary cloud type +40-49 Cloud conditions observed from a higher level (Nv - Code table 2754) +Operational + + +3652 +020136 +Supplementary cloud type +40 +No cloud or mist observed from a higher level +Operational + + +3653 +020136 +Supplementary cloud type +41 +Mist, clear above observed from a higher level +Operational + + +3654 +020136 +Supplementary cloud type +42 +Fog patches observed from a higher level +Operational + + +3655 +020136 +Supplementary cloud type +43 +Layer of slight fog observed from a higher level +Operational + + +3656 +020136 +Supplementary cloud type +44 +Layer of thick fog observed from a higher level +Operational + + +3657 +020136 +Supplementary cloud type +45 +Some isolated clouds observed from a higher level +Operational + + +3658 +020136 +Supplementary cloud type +46 +Isolated clouds and fog below observed from a higher level +Operational + + +3659 +020136 +Supplementary cloud type +47 +Many isolated clouds observed from a higher level +Operational + + +3660 +020136 +Supplementary cloud type +48 +Sea of clouds observed from a higher level +Operational + + +3661 +020136 +Supplementary cloud type +49 +Bad visibility obscuring the downward view observed from a higher level +Operational + + +3662 +020136 +Supplementary cloud type +50-510 +Reserved +Operational + + +3663 +020136 +Supplementary cloud type +511 +Missing value +Operational + + +3664 +020137 +Evolution of clouds +0 +No change +Operational + + +3665 +020137 +Evolution of clouds +1 +Cumulification +Operational + + +3666 +020137 +Evolution of clouds +2 +Slow elevation +Operational + + +3667 +020137 +Evolution of clouds +3 +Rapid elevation +Operational + + +3668 +020137 +Evolution of clouds +4 +Elevation and stratification +Operational + + +3669 +020137 +Evolution of clouds +5 +Slow lowering +Operational + + +3670 +020137 +Evolution of clouds +6 +Rapid lowering +Operational + + +3671 +020137 +Evolution of clouds +7 +Stratification +Operational + + +3672 +020137 +Evolution of clouds +8 +Stratification and lowering +Operational + + +3673 +020137 +Evolution of clouds +9 +Rapid change +Operational + + +3674 +020137 +Evolution of clouds +10-14 +Reserved +Operational + + +3675 +020137 +Evolution of clouds +15 +Missing value +Operational + + +3676 +020138 +Road surface condition +0 + Dry +Operational + + +3677 +020138 +Road surface condition +1 + Moist +Operational + + +3678 +020138 +Road surface condition +2 + Wet +Operational + + +3679 +020138 +Road surface condition +3 + Rime +Operational + + +3680 +020138 +Road surface condition +4 + Snow +Operational + + +3681 +020138 +Road surface condition +5 + Ice +Operational + + +3682 +020138 +Road surface condition +6 + Glaze +Operational + + +3683 +020138 +Road surface condition +7 + Not dry +Operational + + +3684 +020138 +Road surface condition +8-14 + Reserved +Operational + + +3685 +020138 +Road surface condition +15 + Missing value +Operational + + +3686 +021066 +Wave scatterometer product confidence data +1 +Processing equipment not working +Operational + + +3687 +021066 +Wave scatterometer product confidence data +2 +Equipment failed +Operational + + +3688 +021066 +Wave scatterometer product confidence data +3 +PRF code changed during image generation +Operational + + +3689 +021066 +Wave scatterometer product confidence data +4 +Sampling window changed during image generation +Operational + + +3690 +021066 +Wave scatterometer product confidence data +5 +Gain changed during image generation +Operational + + +3691 +021066 +Wave scatterometer product confidence data +6 +Chirp replica exceeds specified value +Operational + + +3692 +021066 +Wave scatterometer product confidence data +7 +Input data mean and standard deviation of in-phase and quadrature out of range +Operational + + +3693 +021066 +Wave scatterometer product confidence data +8 +Doppler centroid confidence > MMCC value +Operational + + +3694 +021066 +Wave scatterometer product confidence data +9 +Doppler centroid absolute value > PRF/2 +Operational + + +3695 +021066 +Wave scatterometer product confidence data +10 +Doppler ambiguity confidence < MMCC value +Operational + + +3696 +021066 +Wave scatterometer product confidence data +11 +Output data mean and standard deviation =< MMCC value +Operational + + +3697 +021066 +Wave scatterometer product confidence data +All 12 +Missing value +Operational + + +3698 +021067 +Wind product confidence data +1 +No forebeam calculation +Operational + + +3699 +021067 +Wind product confidence data +2 +No midbeam calculation +Operational + + +3700 +021067 +Wind product confidence data +3 +No aftbeam calculation +Operational + + +3701 +021067 +Wind product confidence data +4 +Forebeam arcing detected +Operational + + +3702 +021067 +Wind product confidence data +5 +Midbeam arcing detected +Operational + + +3703 +021067 +Wind product confidence data +6 +Aftbeam arcing detected +Operational + + +3704 +021067 +Wind product confidence data +7 +Any beam noise content above or equal to threshold +Operational + + +3705 +021067 +Wind product confidence data +8 +Land (any land in cell footprint) +Operational + + +3706 +021067 +Wind product confidence data +9 +Autonomous ambiguity removal not used +Operational + + +3707 +021067 +Wind product confidence data +10 +Meteorological background not used +Operational + + +3708 +021067 +Wind product confidence data +11 +Minimum residual exceeded threshold +Operational + + +3709 +021067 +Wind product confidence data +12 +Frame checksum error detected +Operational + + +3710 +021067 +Wind product confidence data +All 13 +Missing value +Operational + + +3711 +021068 +Radar altimeter product confidence data +1 +Standard deviation of wind speed outside MMCC limit +Operational + + +3712 +021068 +Radar altimeter product confidence data +2 +Standard deviation of significant wave height outside MMCC limit +Operational + + +3713 +021068 +Radar altimeter product confidence data +3 +Standard deviation of altitude outside MMCC limit +Operational + + +3714 +021068 +Radar altimeter product confidence data +4 +Mean peakiness outside MMCC limit +Operational + + +3715 +021068 +Radar altimeter product confidence data +5 +Frame checksum error detected +Operational + + +3716 +021068 +Radar altimeter product confidence data +6 +Height-time loop time constant correction not performed +Operational + + +3717 +021068 +Radar altimeter product confidence data +7 +Not enough measurements (N < 10) +Operational + + +3718 +021068 +Radar altimeter product confidence data +All 8 +Missing value +Operational + + +3719 +021069 +SST product confidence data +1 +12.0 micron channel present in source data +Operational + + +3720 +021069 +SST product confidence data +2 +11.0 micron channel present in source data +Operational + + +3721 +021069 +SST product confidence data +3 +3.7 micron channel present in source data +Operational + + +3722 +021069 +SST product confidence data +4 +1.6 micron channel present in source data +Operational + + +3723 +021069 +SST product confidence data +5 +Cloud identification used 1.6 micron histogram reflectance cloud test +Operational + + +3724 +021069 +SST product confidence data +6 +1.6 micron histogram reflectance cloud test used dynamic threshold +Operational + + +3725 +021069 +SST product confidence data +7 +Sun glint detected by 1.6 micron reflectance cloud test +Operational + + +3726 +021069 +SST product confidence data +8 +3.7 micron channel used in sea-surface temperature retrieval +Operational + + +3727 +021069 +SST product confidence data +9 +Sea-surface temperature derivation used daytime data (night-time if zero) +Operational + + +3728 +021069 +SST product confidence data +All 10 +Missing value +Operational + + +3729 +021070 +SST product confidence data (SADIST-2) +1-9 Nadir-only view SST retrieval used 3.7 micron channel (one bit per 10-arcmin cell) +Operational + + +3730 +021070 +SST product confidence data (SADIST-2) +1 +Cell 1: nadir-only view SST used 3.7 micron channel +Operational + + +3731 +021070 +SST product confidence data (SADIST-2) +2 +Cell 2: nadir-only view SST used 3.7 micron channel +Operational + + +3732 +021070 +SST product confidence data (SADIST-2) +3 +Cell 3: nadir-only view SST used 3.7 micron channel +Operational + + +3733 +021070 +SST product confidence data (SADIST-2) +4 +Cell 4: nadir-only view SST used 3.7 micron channel +Operational + + +3734 +021070 +SST product confidence data (SADIST-2) +5 +Cell 5: nadir-only view SST used 3.7 micron channel +Operational + + +3735 +021070 +SST product confidence data (SADIST-2) +6 +Cell 6: nadir-only view SST used 3.7 micron channel +Operational + + +3736 +021070 +SST product confidence data (SADIST-2) +7 +Cell 7: nadir-only view SST used 3.7 micron channel +Operational + + +3737 +021070 +SST product confidence data (SADIST-2) +8 +Cell 8: nadir-only view SST used 3.7 micron channel +Operational + + +3738 +021070 +SST product confidence data (SADIST-2) +9 +Cell 9: nadir-only view SST used 3.7 micron channel +Operational + + +3739 +021070 +SST product confidence data (SADIST-2) +10-18 Dual view SST retrieval used 3.7 micron channel (one bit per 10-arcmin cell) +Operational + + +3740 +021070 +SST product confidence data (SADIST-2) +10 +Cell 1: dual view SST used 3.7 micron channel +Operational + + +3741 +021070 +SST product confidence data (SADIST-2) +11 +Cell 2: dual view SST used 3.7 micron channel +Operational + + +3742 +021070 +SST product confidence data (SADIST-2) +12 +Cell 3: dual view SST used 3.7 micron channel +Operational + + +3743 +021070 +SST product confidence data (SADIST-2) +13 +Cell 4: dual view SST used 3.7 micron channel +Operational + + +3744 +021070 +SST product confidence data (SADIST-2) +14 +Cell 5: dual view SST used 3.7 micron channel +Operational + + +3745 +021070 +SST product confidence data (SADIST-2) +15 +Cell 6: dual view SST used 3.7 micron channel +Operational + + +3746 +021070 +SST product confidence data (SADIST-2) +16 +Cell 7: dual view SST used 3.7 micron channel +Operational + + +3747 +021070 +SST product confidence data (SADIST-2) +17 +Cell 8: dual view SST used 3.7 micron channel +Operational + + +3748 +021070 +SST product confidence data (SADIST-2) +18 +Cell 9: dual view SST used 3.7 micron channel +Operational + + +3749 +021070 +SST product confidence data (SADIST-2) +19 +Nadir view contains day-time data (night if zero) +Operational + + +3750 +021070 +SST product confidence data (SADIST-2) +20 +Forward view contains day-time data (night if zero) +Operational + + +3751 +021070 +SST product confidence data (SADIST-2) +21 +Record contains contributions from instrument scans acquired when ERS platform not in yaw-steering mode +Operational + + +3752 +021070 +SST product confidence data (SADIST-2) +22 +Record contains contributions from instrument scans for which product confidence data show quality is poor or unknown +Operational + + +3753 +021070 +SST product confidence data (SADIST-2) +All 23 +Missing value +Operational + + +3754 +021072 +Satellite altimeter calibration status +1 +Height error correction applied instead of open loop calibration +Operational + + +3755 +021072 +Satellite altimeter calibration status +2 +Microwave sounder used for troposphere correction +Operational + + +3756 +021072 +Satellite altimeter calibration status +3 +AGC output correction applied instead of open loop calibration +Operational + + +3757 +021072 +Satellite altimeter calibration status +All 4 +Missing value +Operational + + +3758 +021073 +Satellite altimeter instrument mode +1 +Blank data record +Operational + + +3759 +021073 +Satellite altimeter instrument mode +2 +Test +Operational + + +3760 +021073 +Satellite altimeter instrument mode +3 +Calibration (closed loop) +Operational + + +3761 +021073 +Satellite altimeter instrument mode +4 +BITE +Operational + + +3762 +021073 +Satellite altimeter instrument mode +5 +Acquisition on ice +Operational + + +3763 +021073 +Satellite altimeter instrument mode +6 +Acquisition on ocean +Operational + + +3764 +021073 +Satellite altimeter instrument mode +7 +Tracking on ice +Operational + + +3765 +021073 +Satellite altimeter instrument mode +8 +Tracking on ocean +Operational + + +3766 +021073 +Satellite altimeter instrument mode +All 9 +Missing value +Operational + + +3767 +021076 +Representation of intensities +0 +Linear +Operational + + +3768 +021076 +Representation of intensities +1 +Logarithmic (base e) +Operational + + +3769 +021076 +Representation of intensities +2 +Logarithmic (base 10) +Operational + + +3770 +021076 +Representation of intensities +3-6 +Reserved +Operational + + +3771 +021076 +Representation of intensities +7 +Missing value +Operational + + +3772 +021109 +SEAWINDS wind vector cell quality +1 +Not enough good sigma-0 available for wind retrieval +Operational + + +3773 +021109 +SEAWINDS wind vector cell quality +2 +Poor azimuth diversity among sigma-0 for wind retrieval +Operational + + +3774 +021109 +SEAWINDS wind vector cell quality +3-7 +Reserved +Operational + + +3775 +021109 +SEAWINDS wind vector cell quality +8 +Some portion of wind vector cell is over land +Operational + + +3776 +021109 +SEAWINDS wind vector cell quality +9 +Some portion of wind vector cell is over ice +Operational + + +3777 +021109 +SEAWINDS wind vector cell quality +10 +Wind retrieval not performed for wind vector cell +Operational + + +3778 +021109 +SEAWINDS wind vector cell quality +11 +Reported wind speed is greater than 30 m s-1 +Operational + + +3779 +021109 +SEAWINDS wind vector cell quality +12 +Reported wind speed is less than or equal to 3 m s-1 +Operational + + +3780 +021109 +SEAWINDS wind vector cell quality +13-16 +Reserved +Operational + + +3781 +021109 +SEAWINDS wind vector cell quality +All 17 +Missing value +Operational + + +3782 +021115 +SEAWINDS sigma-0 quality +1 +Sigma-0 measurement is not usable +Operational + + +3783 +021115 +SEAWINDS sigma-0 quality +2 +Signal to noise ratio is low +Operational + + +3784 +021115 +SEAWINDS sigma-0 quality +3 +Sigma-0 is negative +Operational + + +3785 +021115 +SEAWINDS sigma-0 quality +4 +Sigma-0 is outside of acceptable range +Operational + + +3786 +021115 +SEAWINDS sigma-0 quality +5 +Scatterometer pulse quality is not acceptable +Operational + + +3787 +021115 +SEAWINDS sigma-0 quality +6 +Sigma-0 cell location algorithm does not converge +Operational + + +3788 +021115 +SEAWINDS sigma-0 quality +7 +Frequency shift lies beyond the range of the x factor table +Operational + + +3789 +021115 +SEAWINDS sigma-0 quality +8 +Spacecraft temperature is beyond calibration coefficient range +Operational + + +3790 +021115 +SEAWINDS sigma-0 quality +9 +No applicable altitude records were found for this sigma-0 +Operational + + +3791 +021115 +SEAWINDS sigma-0 quality +10 +Interpolated ephemeris data are not acceptable for this sigma-0 +Operational + + +3792 +021115 +SEAWINDS sigma-0 quality +11-16 +Reserved +Operational + + +3793 +021115 +SEAWINDS sigma-0 quality +All 17 +Missing value +Operational + + +3794 +021116 +SEAWINDS sigma-0 mode +1 +Calibration/measurement pulse flag (1) +Operational + + +3795 +021116 +SEAWINDS sigma-0 mode +2 +Calibration/measurement pulse flag (2) +Operational + + +3796 +021116 +SEAWINDS sigma-0 mode +3 +Outer antenna beam +Operational + + +3797 +021116 +SEAWINDS sigma-0 mode +4 +Sigma-0 cell is aft of spacecraft +Operational + + +3798 +021116 +SEAWINDS sigma-0 mode +5 +Current mode (1) +Operational + + +3799 +021116 +SEAWINDS sigma-0 mode +6 +Current mode (2) +Operational + + +3800 +021116 +SEAWINDS sigma-0 mode +7 +Effective gate width - slice resolution (1) +Operational + + +3801 +021116 +SEAWINDS sigma-0 mode +8 +Effective gate width - slice resolution (2) +Operational + + +3802 +021116 +SEAWINDS sigma-0 mode +9 +Effective gate width - slice resolution (3) +Operational + + +3803 +021116 +SEAWINDS sigma-0 mode +10 +Low resolution mode - whole pulse data +Operational + + +3804 +021116 +SEAWINDS sigma-0 mode +11 +Scatterometer electronic subsystem B +Operational + + +3805 +021116 +SEAWINDS sigma-0 mode +12 +Alternate spin rate - 19.8 rpm +Operational + + +3806 +021116 +SEAWINDS sigma-0 mode +13 +Receiver protection on +Operational + + +3807 +021116 +SEAWINDS sigma-0 mode +14 +Slices per composite flag (1) +Operational + + +3808 +021116 +SEAWINDS sigma-0 mode +15 +Slices per composite flag (2) +Operational + + +3809 +021116 +SEAWINDS sigma-0 mode +16 +Slices per composite flag (3) +Operational + + +3810 +021116 +SEAWINDS sigma-0 mode +All 17 +Missing value +Operational + + +3811 +021119 +Wind scatterometer geophysical model function +0 +Reserved +Operational + + +3812 +021119 +Wind scatterometer geophysical model function +1 +SASS +Operational + + +3813 +021119 +Wind scatterometer geophysical model function +2 +SASS2 +Operational + + +3814 +021119 +Wind scatterometer geophysical model function +3 +NSCAT0 +Operational + + +3815 +021119 +Wind scatterometer geophysical model function +4 +NSCAT1 +Operational + + +3816 +021119 +Wind scatterometer geophysical model function +5 +NSCAT2 +Operational + + +3817 +021119 +Wind scatterometer geophysical model function +6 +QSCAT0 +Operational + + +3818 +021119 +Wind scatterometer geophysical model function +7 +QSCAT1 +Operational + + +3819 +021119 +Wind scatterometer geophysical model function +8-30 +Reserved +Operational + + +3820 +021119 +Wind scatterometer geophysical model function +31 +CMOD1 +Operational + + +3821 +021119 +Wind scatterometer geophysical model function +32 +CMOD2 +Operational + + +3822 +021119 +Wind scatterometer geophysical model function +33 +CMOD3 +Operational + + +3823 +021119 +Wind scatterometer geophysical model function +34 +CMOD4 +Operational + + +3824 +021119 +Wind scatterometer geophysical model function +35 +CMOD5 +Operational + + +3825 +021119 +Wind scatterometer geophysical model function +36-62 +Reserved +Operational + + +3826 +021119 +Wind scatterometer geophysical model function +63 +Missing value +Operational + + +3827 +021144 +Altimeter rain flag +1 +Rain +Operational + + +3828 +021144 +Altimeter rain flag +All 2 +Missing value +Operational + + +3829 +021148 +Trailing edge variation flag +1 +Non short scale variation +Operational + + +3830 +021148 +Trailing edge variation flag +2 +Short scale variation +Operational + + +3831 +021148 +Trailing edge variation flag +3-8 +Reserved +Operational + + +3832 +021148 +Trailing edge variation flag +All 9 +Missing value +Operational + + +3833 +021150 +Beam co-location +0 +Data from single ground station (no co-location) +Operational + + +3834 +021150 +Beam co-location +1 +Data from multiple ground station (co-located data) +Operational + + +3835 +021150 +Beam co-location +2 +Reserved +Operational + + +3836 +021150 +Beam co-location +3 +Missing value +Operational + + +3837 +021155 +Wind vector cell quality +1 +Not enough good sigma-0 available for wind retrieval +Operational + + +3838 +021155 +Wind vector cell quality +2 +Poor azimuth diversity among sigma-0 for wind retrieval +Operational + + +3839 +021155 +Wind vector cell quality +3 +Any beam noise content above threshold +Operational + + +3840 +021155 +Wind vector cell quality +4 +Product monitoring not used +Operational + + +3841 +021155 +Wind vector cell quality +5 +Product monitoring flag +Operational + + +3842 +021155 +Wind vector cell quality +6 +KNMI quality control fails +Operational + + +3843 +021155 +Wind vector cell quality +7 +Variational quality control fails +Operational + + +3844 +021155 +Wind vector cell quality +8 +Some portion of wind vector cell is over land +Operational + + +3845 +021155 +Wind vector cell quality +9 +Some portion of wind vector cell is over ice +Operational + + +3846 +021155 +Wind vector cell quality +10 +Wind retrieval not performed for wind vector cell +Operational + + +3847 +021155 +Wind vector cell quality +11 +Reported wind speed is greater than 30 m/s +Operational + + +3848 +021155 +Wind vector cell quality +12 +Reported wind speed is less than or equal to 3 m/s +Operational + + +3849 +021155 +Wind vector cell quality +13 +Rain flag for the wind vector cell is not usable +Operational + + +3850 +021155 +Wind vector cell quality +14 +Rain flag algorithm detects rain +Operational + + +3851 +021155 +Wind vector cell quality +15 +No meteorological background used +Operational + + +3852 +021155 +Wind vector cell quality +16 +Data are redundant +Operational + + +3853 +021155 +Wind vector cell quality +17-23 +Reserved +Operational + + +3854 +021155 +Wind vector cell quality +All 24 +Missing value +Operational + + +3855 +021158 +ASCAT Kp estimate quality +0 +Acceptable +Operational + + +3856 +021158 +ASCAT Kp estimate quality +1 +Not acceptable +Operational + + +3857 +021158 +ASCAT Kp estimate quality +2 +Reserved +Operational + + +3858 +021158 +ASCAT Kp estimate quality +3 +Missing value +Operational + + +3859 +021159 +ASCAT sigma-0 usability +0 +Good +Operational + + +3860 +021159 +ASCAT sigma-0 usability +1 +Usable +Operational + + +3861 +021159 +ASCAT sigma-0 usability +2 +Bad +Operational + + +3862 +021159 +ASCAT sigma-0 usability +3 +Missing value +Operational + + +3863 +021169 +Ice presence indicator +0 +No ice present +Operational + + +3864 +021169 +Ice presence indicator +1 +Ice present +Operational + + +3865 +021169 +Ice presence indicator +2 +Reserved +Operational + + +3866 +021169 +Ice presence indicator +3 +Missing value +Operational + + +3867 +022056 +Direction of profile +0 +Upwards profile +Operational + + +3868 +022056 +Direction of profile +1 +Downwards profile +Operational + + +3869 +022056 +Direction of profile +2 +Horizontal +Operational + + +3870 +022056 +Direction of profile +3 +Missing value +Operational + + +3871 +022060 +Lagrangian drifter drogue status +0 +Drogue is detached +Operational + + +3872 +022060 +Lagrangian drifter drogue status +1 +Drogue is attached +Operational + + +3873 +022060 +Lagrangian drifter drogue status +2 +Drogue status unknown +Operational + + +3874 +022060 +Lagrangian drifter drogue status +3-6 +Reserved +Operational + + +3875 +022060 +Lagrangian drifter drogue status +7 +Missing value +Operational + + +3876 +022061 +State of the sea +0 +Calm (glassy) +0 +Operational + + +3877 +022061 +State of the sea +1 +Calm (rippled) +0 - 0.1 +Operational + + +3878 +022061 +State of the sea +2 +Smooth (wavelets) +0.1 - 0.5 +Operational + + +3879 +022061 +State of the sea +3 +Slight +0.5 - 1.25 +Operational + + +3880 +022061 +State of the sea +4 +Moderate +1.25 - 2.5 +Operational + + +3881 +022061 +State of the sea +5 +Rough +2.5 - 4 +Operational + + +3882 +022061 +State of the sea +6 +Very rough +4 - 6 +Operational + + +3883 +022061 +State of the sea +7 +High +6 - 9 +Operational + + +3884 +022061 +State of the sea +8 +Very high +9 - 14 +Operational + + +3885 +022061 +State of the sea +9 +Phenomenal +Over 14 +Operational + + +3886 +022061 +State of the sea +10-14 +Reserved +Operational + + +3887 +022061 +State of the sea +15 +Missing value +Operational + + +3888 +022067 +Instrument type for water temperature/salinity profile measurement +Operational + + +3889 +022068 +Water temperature profile recorder types +Operational + + +3890 +022120 +Tide station automated water level check +0 +Good data +Operational + + +3891 +022120 +Tide station automated water level check +1 +Maximum (high) water level limit exceeded +Operational + + +3892 +022120 +Tide station automated water level check +2 +Minimum (low) water level limit exceeded +Operational + + +3893 +022120 +Tide station automated water level check +3 +Rate of change limit for water level exceeded +Operational + + +3894 +022120 +Tide station automated water level check +4 +Flat limit for water level exceeded +Operational + + +3895 +022120 +Tide station automated water level check +5 +Observed minus predicted water level value limit exceeded +Operational + + +3896 +022120 +Tide station automated water level check +6 +Observed value from primary water level sensor minus backup water level sensor +Operational + + +3897 +022120 +Tide station automated water level check +7 +Value exceeded specified tolerance from expected value +Operational + + +3898 +022120 +Tide station automated water level check +8 +Water level QA parameter (sigmas and/or outliers) limits exceeded +Operational + + +3899 +022120 +Tide station automated water level check +9 +Sea temperature outside of expected range +Operational + + +3900 +022120 +Tide station automated water level check +10 +Multiple QC checks (above) failed +Operational + + +3901 +022120 +Tide station automated water level check +11 +No automated water level checks performed +Operational + + +3902 +022120 +Tide station automated water level check +12-30 +Reserved +Operational + + +3903 +022120 +Tide station automated water level check +31 +Missing value +Operational + + +3904 +022121 +Tide station manual water level check +0 +Operational +Operational + + +3905 +022121 +Tide station manual water level check +1 +Possible clogging problem or otherwise degraded water level data +Operational + + +3906 +022121 +Tide station manual water level check +2 +Possible datum shift +Operational + + +3907 +022121 +Tide station manual water level check +3 +Unknown status of water level sensor +Operational + + +3908 +022121 +Tide station manual water level check +4 +Suspected or known sea temperature sensor problem +Operational + + +3909 +022121 +Tide station manual water level check +5 +Multiple possible problems (above) +Operational + + +3910 +022121 +Tide station manual water level check +6 +Bad data - DO NOT DISSEMINATE! +Operational + + +3911 +022121 +Tide station manual water level check +7 +No manual water level checks performed +Operational + + +3912 +022121 +Tide station manual water level check +8-30 +Reserved +Operational + + +3913 +022121 +Tide station manual water level check +31 +Missing value +Operational + + +3914 +022122 +Tide station automated meteorological data check +0 +Good data from all sensors +Operational + + +3915 +022122 +Tide station automated meteorological data check +1 +Wind direction outside of allowable range +Operational + + +3916 +022122 +Tide station automated meteorological data check +2 +Wind speed outside of expected range +Operational + + +3917 +022122 +Tide station automated meteorological data check +3 +Barometric pressure outside of expected range +Operational + + +3918 +022122 +Tide station automated meteorological data check +4 +Air temperature outside of expected range +Operational + + +3919 +022122 +Tide station automated meteorological data check +5 +Multiple sensors failed QC checks +Operational + + +3920 +022122 +Tide station automated meteorological data check +6 +No automated meteorological data checks performed +Operational + + +3921 +022122 +Tide station automated meteorological data check +7-30 +Reserved +Operational + + +3922 +022122 +Tide station automated meteorological data check +31 +Missing value +Operational + + +3923 +022123 +Tide station manual meteorological data check +0 +Operational +Operational + + +3924 +022123 +Tide station manual meteorological data check +1 +Suspected or known problem with wind sensor +Operational + + +3925 +022123 +Tide station manual meteorological data check +2 +Suspected or known problem with barometric pressure sensor +Operational + + +3926 +022123 +Tide station manual meteorological data check +3 +Suspected or known problem with air temperature sensor +Operational + + +3927 +022123 +Tide station manual meteorological data check +4 +Unknown status of all sensors +Operational + + +3928 +022123 +Tide station manual meteorological data check +5 +Suspected or known problems with multiple sensors +Operational + + +3929 +022123 +Tide station manual meteorological data check +6 +Bad data - DO NOT DISSEMINATE! +Operational + + +3930 +022123 +Tide station manual meteorological data check +7 +No manual meteorological data checks performed +Operational + + +3931 +022123 +Tide station manual meteorological data check +8-30 +Reserved +Operational + + +3932 +022123 +Tide station manual meteorological data check +31 +Missing value +Operational + + +3933 +022178 +XBT/XCTD launcher type +0 +Unknown +Operational + + +3934 +022178 +XBT/XCTD launcher type +1 +LM-2A Deck-mounted +Operational + + +3935 +022178 +XBT/XCTD launcher type +2 +LM-3A Hand-Held +Operational + + +3936 +022178 +XBT/XCTD launcher type +3 +LM-4A Thru-Hull +Operational + + +3937 +022178 +XBT/XCTD launcher type +4-9 +Reserved +Operational + + +3938 +022178 +XBT/XCTD launcher type +10 +AL-12 TSK Autolauncher (up to 12 probes) +Operational + + +3939 +022178 +XBT/XCTD launcher type +11-19 +Reserved +Operational + + +3940 +022178 +XBT/XCTD launcher type +20 +SIO XBT Autolauncher (up to 6 probes) +Operational + + +3941 +022178 +XBT/XCTD launcher type +21-29 +Reserved +Operational + + +3942 +022178 +XBT/XCTD launcher type +30 +AOML XBT V6 Autolauncher (up to 6 Deep Blue probes) +Operational + + +3943 +022178 +XBT/XCTD launcher type +31 +AOML XBT V8.0 Autolauncher (up to 8 Deep Blue probes) +Operational + + +3944 +022178 +XBT/XCTD launcher type +32 +AOML XBT V8.1 Autolauncher (up to 8 Deep Blue and Fast Deep probes) +Operational + + +3945 +022178 +XBT/XCTD launcher type +33-89 +Reserved +Operational + + +3946 +022178 +XBT/XCTD launcher type +90 +CSIRO Devil Autolauncher +Operational + + +3947 +022178 +XBT/XCTD launcher type +91-99 +Reserved +Operational + + +3948 +022178 +XBT/XCTD launcher type +100 +MFSTEP Autolauncher (Mediterranean) +Operational + + +3949 +022178 +XBT/XCTD launcher type +101-254 +Reserved +Operational + + +3950 +022178 +XBT/XCTD launcher type +255 +Missing value +Operational + + +3951 +023001 +Accident early notification - article applicable +0 +Reserved +Operational + + +3952 +023001 +Accident early notification - article applicable +1 +Articles 1 and 2 +Operational + + +3953 +023001 +Accident early notification - article applicable +2 +Article 3 +Operational + + +3954 +023001 +Accident early notification - article applicable +3 +Article 5.2 +Operational + + +3955 +023001 +Accident early notification - article applicable +4-6 +Reserved +Operational + + +3956 +023001 +Accident early notification - article applicable +7 +Missing value +Operational + + +3957 +023002 +Activity or facility involved in incident +0 +Reserved +Operational + + +3958 +023002 +Activity or facility involved in incident +1 +Nuclear reactor on ground +Operational + + +3959 +023002 +Activity or facility involved in incident +2 +Nuclear reactor at sea +Operational + + +3960 +023002 +Activity or facility involved in incident +3 +Nuclear reactor in space +Operational + + +3961 +023002 +Activity or facility involved in incident +4 +Nuclear fuel facility +Operational + + +3962 +023002 +Activity or facility involved in incident +5 +Radioactive waste management facility +Operational + + +3963 +023002 +Activity or facility involved in incident +6 +Transport of nuclear fuel or radioactive waste +Operational + + +3964 +023002 +Activity or facility involved in incident +7 +Storage of nuclear fuel or radioactive waste +Operational + + +3965 +023002 +Activity or facility involved in incident +8 +Manufacture of radio-isotopes +Operational + + +3966 +023002 +Activity or facility involved in incident +9 +Use of radio-isotopes +Operational + + +3967 +023002 +Activity or facility involved in incident +10 +Storage of radio-isotopes +Operational + + +3968 +023002 +Activity or facility involved in incident +11 +Disposal of radio-isotopes +Operational + + +3969 +023002 +Activity or facility involved in incident +12 +Transport of radio-isotopes +Operational + + +3970 +023002 +Activity or facility involved in incident +13 +Use of radio-isotopes for power generation +Operational + + +3971 +023002 +Activity or facility involved in incident +14-29 +Reserved +Operational + + +3972 +023002 +Activity or facility involved in incident +30 +Other +Operational + + +3973 +023002 +Activity or facility involved in incident +31 +Missing value +Operational + + +3974 +023003 +Type of release +0 +No release +Operational + + +3975 +023003 +Type of release +1 +Release to atmosphere +Operational + + +3976 +023003 +Type of release +2 +Release to water +Operational + + +3977 +023003 +Type of release +3 +Release to both atmosphere and water +Operational + + +3978 +023003 +Type of release +4 +Expected release to atmosphere +Operational + + +3979 +023003 +Type of release +5 +Expected release to water +Operational + + +3980 +023003 +Type of release +6 +Expected release to both atmosphere and water +Operational + + +3981 +023003 +Type of release +7 +Missing value +Operational + + +3982 +023004 +Countermeasures taken near border +0 +No countermeasures +Operational + + +3983 +023004 +Countermeasures taken near border +1 +Evacuation +Operational + + +3984 +023004 +Countermeasures taken near border +2 +Sheltering +Operational + + +3985 +023004 +Countermeasures taken near border +3 +Prophylaxis +Operational + + +3986 +023004 +Countermeasures taken near border +4 +Water +Operational + + +3987 +023004 +Countermeasures taken near border +5-6 +Reserved +Operational + + +3988 +023004 +Countermeasures taken near border +7 +Missing value +Operational + + +3989 +023005 +Cause of incident +0 +Incident State does not understand what happened +Operational + + +3990 +023005 +Cause of incident +1 +Incident State knows the cause of the incident +Operational + + +3991 +023005 +Cause of incident +2 +Reserved +Operational + + +3992 +023005 +Cause of incident +3 +Missing value +Operational + + +3993 +023006 +Incident situation +0 +No improvement +Operational + + +3994 +023006 +Incident situation +1 +Unstable +Operational + + +3995 +023006 +Incident situation +2 +No deterioration +Operational + + +3996 +023006 +Incident situation +3 +Improving +Operational + + +3997 +023006 +Incident situation +4 +Stable +Operational + + +3998 +023006 +Incident situation +5 +Deteriorating +Operational + + +3999 +023006 +Incident situation +6 +Reserved +Operational + + +4000 +023006 +Incident situation +7 +Missing value +Operational + + +4001 +023007 +Characteristics of release +0 +No release +Operational + + +4002 +023007 +Characteristics of release +1 +Release has stopped +Operational + + +4003 +023007 +Characteristics of release +2 +Release +Operational + + +4004 +023007 +Characteristics of release +3 +Release is continuing +Operational + + +4005 +023007 +Characteristics of release +4-6 +Reserved +Operational + + +4006 +023007 +Characteristics of release +7 +Missing value +Operational + + +4007 +023008 +State of current release +0 +Gaseous +Operational + + +4008 +023008 +State of current release +1 +Particulate +Operational + + +4009 +023008 +State of current release +2 +Mixture of gaseous and particulate +Operational + + +4010 +023008 +State of current release +3 +Missing value +Operational + + +4011 +023009 +State of expected release +0 +Gaseous +Operational + + +4012 +023009 +State of expected release +1 +Particulate +Operational + + +4013 +023009 +State of expected release +2 +Mixture of gaseous and particulate +Operational + + +4014 +023009 +State of expected release +3 +Missing value +Operational + + +4015 +023016 +Possibility of significant chemical toxic health effect +0 +No significant chemical toxic health effect +Operational + + +4016 +023016 +Possibility of significant chemical toxic health effect +1 +Significant chemical toxic health effect possible +Operational + + +4017 +023016 +Possibility of significant chemical toxic health effect +2 +Reserved +Operational + + +4018 +023016 +Possibility of significant chemical toxic health effect +3 +Missing value +Operational + + +4019 +023018 +Release behaviour over time +0 +Release no longer occurring +Operational + + +4020 +023018 +Release behaviour over time +1 +Release still occurring +Operational + + +4021 +023018 +Release behaviour over time +2 +Release expected to increase in next six hours +Operational + + +4022 +023018 +Release behaviour over time +3 +Release expected to remain constant in next six hours +Operational + + +4023 +023018 +Release behaviour over time +4 +Release expected to decrease in next six hours +Operational + + +4024 +023018 +Release behaviour over time +5-6 +Reserved +Operational + + +4025 +023018 +Release behaviour over time +7 +Missing value +Operational + + +4026 +023031 +Possibility that plume will encounter precipitation in State in which incident occurred +0 +Plume will not encounter rain in incident State +Operational + + +4027 +023031 +Possibility that plume will encounter precipitation in State in which incident occurred +1 +Plume will encounter rain in incident State +Operational + + +4028 +023031 +Possibility that plume will encounter precipitation in State in which incident occurred +2 +Reserved +Operational + + +4029 +023031 +Possibility that plume will encounter precipitation in State in which incident occurred +3 +Missing value +Operational + + +4030 +023032 +Plume will encounter change in wind direction and/or speed flag +0 +No significant change expected within the next six hours +Operational + + +4031 +023032 +Plume will encounter change in wind direction and/or speed flag +1 +Anticipated significant change expected within the next six hours +Operational + + +4032 +023032 +Plume will encounter change in wind direction and/or speed flag +2 +Reserved +Operational + + +4033 +023032 +Plume will encounter change in wind direction and/or speed flag +3 +Missing value +Operational + + +4034 +024003 +Composition of release +0 +Noble gases +Operational + + +4035 +024003 +Composition of release +1 +Iodines +Operational + + +4036 +024003 +Composition of release +2 +Caesiums +Operational + + +4037 +024003 +Composition of release +3 +Transuranics +Operational + + +4038 +024003 +Composition of release +4-30 +Reserved +Operational + + +4039 +024003 +Composition of release +31 +Missing value +Operational + + +4040 +025004 +Echo processing +0 +Incoherent +Operational + + +4041 +025004 +Echo processing +1 +Coherent (Doppler) +Operational + + +4042 +025004 +Echo processing +2 +Reserved +Operational + + +4043 +025004 +Echo processing +3 +Missing value +Operational + + +4044 +025005 +Echo integration +0 +Logarithm - 2.5 dB +Operational + + +4045 +025005 +Echo integration +1 +Linear +Operational + + +4046 +025005 +Echo integration +2 +Special +Operational + + +4047 +025005 +Echo integration +3 +Missing value +Operational + + +4048 +025006 +Z to R conversion +0 +ZH to R conversion +Operational + + +4049 +025006 +Z to R conversion +1 +(ZH, ZDR) to (NO, DO) to R +Operational + + +4050 +025006 +Z to R conversion +2 +(Z (F1), Z (F2)) to attenuation to R +Operational + + +4051 +025006 +Z to R conversion +3-5 +Reserved +Operational + + +4052 +025006 +Z to R conversion +6 +Other +Operational + + +4053 +025006 +Z to R conversion +7 +Missing value +Operational + + +4054 +025009 +Calibration method +1 +None +Deprecated + + +4055 +025009 +Calibration method +2 +Calibration target or signal +Deprecated + + +4056 +025009 +Calibration method +3 +Against raingauges +Deprecated + + +4057 +025009 +Calibration method +4 +Against other Instruments (disdrometer - attenuation) +Deprecated + + +4058 +025009 +Calibration method +All 4 +Missing value +Deprecated + + +4059 +025010 +Clutter treatment +0 +None +Operational + + +4060 +025010 +Clutter treatment +1 +Map +Operational + + +4061 +025010 +Clutter treatment +2 +Insertion of higher elevation data and map +Operational + + +4062 +025010 +Clutter treatment +3 +Analysis of the fluctuating logarithm signal (clutter detection) +Operational + + +4063 +025010 +Clutter treatment +4 +Extraction of the fluctuating part of linear signal (clutter suppression) +Operational + + +4064 +025010 +Clutter treatment +5 +Clutter suppression - Doppler +Operational + + +4065 +025010 +Clutter treatment +6 +Multiparameter analysis +Operational + + +4066 +025010 +Clutter treatment +7-14 +Reserved +Operational + + +4067 +025010 +Clutter treatment +15 +Missing value +Operational + + +4068 +025011 +Ground occultation correction (screening) +0 +None +Operational + + +4069 +025011 +Ground occultation correction (screening) +1 +Map of correction factors +Operational + + +4070 +025011 +Ground occultation correction (screening) +2 +Interpolation (azimuth or elevation) +Operational + + +4071 +025011 +Ground occultation correction (screening) +3 +Missing value +Operational + + +4072 +025012 +Range attenuation correction +0 +Hardware +Operational + + +4073 +025012 +Range attenuation correction +1 +Software +Operational + + +4074 +025012 +Range attenuation correction +2 +Hardware and software +Operational + + +4075 +025012 +Range attenuation correction +3 +Missing value +Operational + + +4076 +025013 +Bright-band correction +1 +Bright-band correction +Operational + + +4077 +025013 +Bright-band correction +All 2 +Missing value +Operational + + +4078 +025015 +Radome attenuation correction +1 +Radome attenuation correction +Operational + + +4079 +025015 +Radome attenuation correction +All 2 +Missing value +Operational + + +4080 +025017 +Precipitation attenuation correction +1 +Precipitation attenuation correction +Operational + + +4081 +025017 +Precipitation attenuation correction +All 2 +Missing value +Operational + + +4082 +025020 +Mean speed estimation +0 +FFT (fast Fourier transform) +Operational + + +4083 +025020 +Mean speed estimation +1 +PPP (pulse-pair processing) +Operational + + +4084 +025020 +Mean speed estimation +2 +VPC (vector-phase change) +Operational + + +4085 +025020 +Mean speed estimation +3 +Missing value +Operational + + +4086 +025021 +Wind computation enhancement +1 +Simple average +Operational + + +4087 +025021 +Wind computation enhancement +2 +Consensus average +Operational + + +4088 +025021 +Wind computation enhancement +3 +Median check +Operational + + +4089 +025021 +Wind computation enhancement +4 +Vertical consistency check +Operational + + +4090 +025021 +Wind computation enhancement +5 +Other +Operational + + +4091 +025021 +Wind computation enhancement +6-7 +Reserved +Operational + + +4092 +025021 +Wind computation enhancement +All 8 +Missing value +Operational + + +4093 +025022 +GHRSST rejection flag +1 +Unprocessed +Operational + + +4094 +025022 +GHRSST rejection flag +2 +Land suspected +Operational + + +4095 +025022 +GHRSST rejection flag +3 +Wind speed too large +Operational + + +4096 +025022 +GHRSST rejection flag +4 +Ice detected +Operational + + +4097 +025022 +GHRSST rejection flag +5 +Rain detected (Microwave retrievals only) +Operational + + +4098 +025022 +GHRSST rejection flag +6 +Cloudy detected (Infra-red retrievals only) +Operational + + +4099 +025022 +GHRSST rejection flag +7 +Cosmetic value +Operational + + +4100 +025022 +GHRSST rejection flag +8 +SST out of range +Operational + + +4101 +025022 +GHRSST rejection flag +All 9 +Missing value +Operational + + +4102 +025023 +GHRSST confidence flag +1 +Default confidence value has been used +Operational + + +4103 +025023 +GHRSST confidence flag +2 +Default bias and standard deviation have been used +Operational + + +4104 +025023 +GHRSST confidence flag +3 +Sun glint suspected +Operational + + +4105 +025023 +GHRSST confidence flag +4 +Sea ice retrieval for microwave data +Operational + + +4106 +025023 +GHRSST confidence flag +5 +High wind speed retrieval +Operational + + +4107 +025023 +GHRSST confidence flag +6 +Inaccurate SST due to low SST (< 285K) (only applies to the TMI instrument) +Operational + + +4108 +025023 +GHRSST confidence flag +7 +Relaxed rain contamination suspected +Operational + + +4109 +025023 +GHRSST confidence flag +8 +Potential side lobe contamination +Operational + + +4110 +025023 +GHRSST confidence flag +All 9 +Missing value +Operational + + +4111 +025024 +GHRSST data quality +0 +Unprocessed infrared retrieval +Operational + + +4112 +025024 +GHRSST data quality +1 +Cloudy retrievals +Operational + + +4113 +025024 +GHRSST data quality +2 +Bad: Data that are probably contaminated by cloud +Operational + + +4114 +025024 +GHRSST data quality +3 +Suspect data +Operational + + +4115 +025024 +GHRSST data quality +4 +Acceptable data +Operational + + +4116 +025024 +GHRSST data quality +5 +Excellent data +Operational + + +4117 +025024 +GHRSST data quality +6 +Cool skin suspected +Operational + + +4118 +025024 +GHRSST data quality +7-9 +Reserved +Operational + + +4119 +025024 +GHRSST data quality +10 +Unprocessed microwave retrieval +Operational + + +4120 +025024 +GHRSST data quality +11 +Questionable microwave retrieval that may be contaminated +Operational + + +4121 +025024 +GHRSST data quality +12 +Acceptable microwave retrieval +Operational + + +4122 +025024 +GHRSST data quality +13 +High probability of diurnal variability +Operational + + +4123 +025024 +GHRSST data quality +14 +Reserved +Operational + + +4124 +025024 +GHRSST data quality +15 +Missing value +Operational + + +4125 +025029 +Calibration method +1 +Reserved +Operational + + +4126 +025029 +Calibration method +2 +Calibration target or signal +Operational + + +4127 +025029 +Calibration method +3 +Against raingauges +Operational + + +4128 +025029 +Calibration method +4 +Against other instruments (disdrometer - attenuation) +Operational + + +4129 +025029 +Calibration method +5 +Reserved +Operational + + +4130 +025029 +Calibration method +All 6 +Missing value +Operational + + +4131 +025030 +Running mean sea-surface temperature usage +0 +Running mean sea-surface temperature not used because usage criteria not met +Operational + + +4132 +025030 +Running mean sea-surface temperature usage +1 +Running mean sea-surface temperature not used because data not available +Operational + + +4133 +025030 +Running mean sea-surface temperature usage +2 +Running mean sea-surface temperature used as predictor +Operational + + +4134 +025030 +Running mean sea-surface temperature usage +3 +Missing value +Operational + + +4135 +025031 +NWP-generated vertical profile thinning method +0 +Reserved +Operational + + +4136 +025031 +NWP-generated vertical profile thinning method +1 +No thinning applied (all native model levels are included from base to top of pseudo-sounding) +Operational + + +4137 +025031 +NWP-generated vertical profile thinning method +2 +Native model levels are present only if they are significant levels as per regulations B/C 25 for conventional TEMP soundings +Operational + + +4138 +025031 +NWP-generated vertical profile thinning method +3 +A predefined subset of native model levels is present +Operational + + +4139 +025031 +NWP-generated vertical profile thinning method +4 +No native model levels are present. All profile levels are interpolated to a predefined set of pressure coordinate levels +Operational + + +4140 +025031 +NWP-generated vertical profile thinning method +5-6 +Reserved +Operational + + +4141 +025031 +NWP-generated vertical profile thinning method +7 +Missing value +Operational + + +4142 +025032 +Wind profiler mode information +0 +Reserved +Operational + + +4143 +025032 +Wind profiler mode information +1 +Data from low mode +Operational + + +4144 +025032 +Wind profiler mode information +2 +Data from high mode +Operational + + +4145 +025032 +Wind profiler mode information +3 +Missing value +Operational + + +4146 +025033 +Wind profiler submode information +0 +Wind profiler operating in submode A +Operational + + +4147 +025033 +Wind profiler submode information +1 +Wind profiler operating in submode B +Operational + + +4148 +025033 +Wind profiler submode information +2 +Reserved +Operational + + +4149 +025033 +Wind profiler submode information +3 +Missing value +Operational + + +4150 +025034 +Wind profiler quality control test results +1 +Test A performed and failed +Operational + + +4151 +025034 +Wind profiler quality control test results +2 +Test B performed and failed +Operational + + +4152 +025034 +Wind profiler quality control test results +3 +Test results inconclusive +Operational + + +4153 +025034 +Wind profiler quality control test results +All 4 +Missing value +Operational + + +4154 +025035 +Decision method for polarity +0 +Not defined +Operational + + +4155 +025035 +Decision method for polarity +1 +Individual voltage deflection +Operational + + +4156 +025035 +Decision method for polarity +2 +Current based, above a threshold +Operational + + +4157 +025035 +Decision method for polarity +3 +Voltage based, above a threshold +Operational + + +4158 +025035 +Decision method for polarity +4 +Consensus of sensors, current above a threshold +Operational + + +4159 +025035 +Decision method for polarity +5 +Consensus of sensors, voltage above a threshold +Operational + + +4160 +025035 +Decision method for polarity +6 +Reserved +Operational + + +4161 +025035 +Decision method for polarity +7 +Missing value +Operational + + +4162 +025036 +Atmospherics location method +0 +Network of several direction-finders operating on the same individual atmospherics +Operational + + +4163 +025036 +Atmospherics location method +1 +Network of several arrival-time stations operating on the same individual atmospherics +Operational + + +4164 +025036 +Atmospherics location method +2-5 +Reserved +Operational + + +4165 +025036 +Atmospherics location method +6 +Single station range bearing technique +Operational + + +4166 +025036 +Atmospherics location method +7-14 +Reserved +Operational + + +4167 +025036 +Atmospherics location method +15 +Missing value +Operational + + +4168 +025040 +CO2 wind product derivation +0 +Non-specific mode +Operational + + +4169 +025040 +CO2 wind product derivation +1 +First guess data +Operational + + +4170 +025040 +CO2 wind product derivation +2 +Cloud data +Operational + + +4171 +025040 +CO2 wind product derivation +3 +Average vector data +Operational + + +4172 +025040 +CO2 wind product derivation +4 +Primary data +Operational + + +4173 +025040 +CO2 wind product derivation +5 +Guess data +Operational + + +4174 +025040 +CO2 wind product derivation +6 +Vector data +Operational + + +4175 +025040 +CO2 wind product derivation +7 +Tracer data; this image +Operational + + +4176 +025040 +CO2 wind product derivation +8 +Tracer data to next image +Operational + + +4177 +025040 +CO2 wind product derivation +9-14 +Reserved +Operational + + +4178 +025040 +CO2 wind product derivation +15 +Missing value +Operational + + +4179 +025041 +Moving platform direction reporting method +0 +Direction originally reported in true degrees +Operational + + +4180 +025041 +Moving platform direction reporting method +1 +Direction originally reported using Code table 0700, FM 13 +Operational + + +4181 +025041 +Moving platform direction reporting method +2 +Reserved +Operational + + +4182 +025041 +Moving platform direction reporting method +3 +Missing value +Operational + + +4183 +025042 +Moving platform speed reporting method +0 +Speed originally reported in metres per second +Operational + + +4184 +025042 +Moving platform speed reporting method +1 +Speed originally reported using Code table 4451, FM 13 +Operational + + +4185 +025042 +Moving platform speed reporting method +2 +Reserved +Operational + + +4186 +025042 +Moving platform speed reporting method +3 +Missing value +Operational + + +4187 +025045 +HIRS channel combination +1-20 +Beginning with first bit position (high order bit), if bit position is set to 1, then channel is present, if bit position is set to 0, then channel is not present +Operational + + +4188 +025045 +HIRS channel combination +All 21 +Missing value +Operational + + +4189 +025046 +MSU channel combination +1-4 +Beginning with first bit position (high order bit), if bit position is set to 1, then channel is present, if bit position is set to 0, then channel is not present +Operational + + +4190 +025046 +MSU channel combination +All 5 +Missing value +Operational + + +4191 +025047 +SSU channel combination +1-3 +Beginning with first bit position (high order bit), if bit position is set to 1, then channel is present; if bit position is set to 0, then channel is not present +Operational + + +4192 +025047 +SSU channel combination +All 4 +Missing value +Operational + + +4193 +025048 +AMSU-A channel combination +1-15 +Beginning with first bit position (high order bit), if bit position is set to 1, then channel is present, if bit position is set to 0, then channel is not present +Operational + + +4194 +025048 +AMSU-A channel combination +All 16 +Missing value +Operational + + +4195 +025049 +AMSU-B channel combination +1-5 +Beginning with first bit position (high order bit), if bit position is set to 1, then channel is present, if bit position is set to 0, then channel is not present +Operational + + +4196 +025049 +AMSU-B channel combination +All 6 +Missing value +Operational + + +4197 +025051 +AVHRR channel combination +1-6 +Beginning with first bit position (high order bit), if bit position is set to 1, then channel is present, if bit position is set to 0, then channel is not present +Operational + + +4198 +025051 +AVHRR channel combination +All 7 +Missing value +Operational + + +4199 +025053 +Observation quality +1 +Good +Operational + + +4200 +025053 +Observation quality +2 +Redundant +Operational + + +4201 +025053 +Observation quality +3 +Questionable +Operational + + +4202 +025053 +Observation quality +4 +Bad +Operational + + +4203 +025053 +Observation quality +5 +Experimental +Operational + + +4204 +025053 +Observation quality +6 +Precipitating +Operational + + +4205 +025053 +Observation quality +7-11 +Reserved +Operational + + +4206 +025053 +Observation quality +All 12 +Missing value +Operational + + +4207 +025063 +Central processor or system identifier +0 +Not defined +Operational + + +4208 +025063 +Central processor or system identifier +1 +Main processor +Operational + + +4209 +025063 +Central processor or system identifier +2 +Backup processor +Operational + + +4210 +025063 +Central processor or system identifier +3-254 +Reserved +Operational + + +4211 +025063 +Central processor or system identifier +255 +Missing value +Operational + + +4212 +025069 +Flight level pressure corrections +1 +Smoothed +Operational + + +4213 +025069 +Flight level pressure corrections +2 +Baseline adjusted +Operational + + +4214 +025069 +Flight level pressure corrections +3 +Normalized time interval +Operational + + +4215 +025069 +Flight level pressure corrections +4 +Outlier checked +Operational + + +4216 +025069 +Flight level pressure corrections +5 +Plausibility checked +Operational + + +4217 +025069 +Flight level pressure corrections +6 +Consistency checked +Operational + + +4218 +025069 +Flight level pressure corrections +7 +Interpolated +Operational + + +4219 +025069 +Flight level pressure corrections +All 8 +Missing value +Operational + + +4220 +025086 +Depth correction indicator +0 +Depths are not corrected +Operational + + +4221 +025086 +Depth correction indicator +1 +Depths are corrected +Operational + + +4222 +025086 +Depth correction indicator +2 +Reserved +Operational + + +4223 +025086 +Depth correction indicator +3 +Missing value +Operational + + +4224 +025090 +Orbit state flag +0 +Orbit computed during a manoeuvre +Operational + + +4225 +025090 +Orbit state flag +1 +Adjusted mission operations orbit +Operational + + +4226 +025090 +Orbit state flag +2 +Extrapolated mission operations orbit +Operational + + +4227 +025090 +Orbit state flag +3 +Adjusted (preliminary/precise) orbit +Operational + + +4228 +025090 +Orbit state flag +4 +(Preliminary/precise) orbit is estimated during a manoeuvre period +Operational + + +4229 +025090 +Orbit state flag +5 +(Preliminary/precise) orbit is interpolated over a tracking data gap +Operational + + +4230 +025090 +Orbit state flag +6 +(Preliminary/precise) orbit is extrapolated for a duration less than 1 day +Operational + + +4231 +025090 +Orbit state flag +7 +(Preliminary/precise) orbit is extrapolated for a duration that ranges from 1 day to 2 days +Operational + + +4232 +025090 +Orbit state flag +8 +(Preliminary/precise) orbit is extrapolated for a duration larger than 2 days, or that the orbit is extrapolated just after a manoeuvre +Operational + + +4233 +025090 +Orbit state flag +9 +DORIS DIODE navigator orbit +Operational + + +4234 +025090 +Orbit state flag +10-14 +Reserved +Operational + + +4235 +025090 +Orbit state flag +15 +Missing value +Operational + + +4236 +025093 +RASS computation correction +1 +No correction +Operational + + +4237 +025093 +RASS computation correction +2 +Vertical velocity correction +Operational + + +4238 +025093 +RASS computation correction +3-6 +Reserved +Operational + + +4239 +025093 +RASS computation correction +7 +All corrections +Operational + + +4240 +025093 +RASS computation correction +All 8 +Missing value +Operational + + +4241 +025095 +Altimeter state flag +1 +Altimeter operating (0 if nominal, 1 if backup) +Operational + + +4242 +025095 +Altimeter state flag +All 2 +Missing value +Operational + + +4243 +025096 +Radiometer state flag +1 +Mode indicator (0 if mode 2, 1 if mode 1) +Operational + + +4244 +025096 +Radiometer state flag +2 +Mode 1 calibration sequence indicator (0 if normal data taking either mode 1 or 2, 1 if mode 1 calibration sequence) Bits 3 and 4 indicate active 23.8 GHz channel(s): +Operational + + +4245 +025096 +Radiometer state flag +3 +Channel 2 (0 if on, 1 if off) +Operational + + +4246 +025096 +Radiometer state flag +4 +Channel 3 (0 if on, 1 if off) +Operational + + +4247 +025096 +Radiometer state flag +All 5 +Missing value +Operational + + +4248 +025097 +Three-dimensional error estimate of the navigator orbit +0 +Ranges between 0 and 30 cm +Operational + + +4249 +025097 +Three-dimensional error estimate of the navigator orbit +1 +Ranges between 30 and 60 cm +Operational + + +4250 +025097 +Three-dimensional error estimate of the navigator orbit +2 +Ranges between 60 and 90 cm +Operational + + +4251 +025097 +Three-dimensional error estimate of the navigator orbit +3 +Ranges between 90 and 120 cm +Operational + + +4252 +025097 +Three-dimensional error estimate of the navigator orbit +4 +Ranges between 120 and 150 cm +Operational + + +4253 +025097 +Three-dimensional error estimate of the navigator orbit +5 +Ranges between 150 and 180 cm +Operational + + +4254 +025097 +Three-dimensional error estimate of the navigator orbit +6 +Ranges between 180 and 210 cm +Operational + + +4255 +025097 +Three-dimensional error estimate of the navigator orbit +7 +Ranges between 210 and 240 cm +Operational + + +4256 +025097 +Three-dimensional error estimate of the navigator orbit +8 +Ranges between 240 and 270 cm +Operational + + +4257 +025097 +Three-dimensional error estimate of the navigator orbit +9 +Ranges larger than 270 cm +Operational + + +4258 +025097 +Three-dimensional error estimate of the navigator orbit +10-14 +Reserved +Operational + + +4259 +025097 +Three-dimensional error estimate of the navigator orbit +15 +Missing value +Operational + + +4260 +025098 +Altimeter data quality flag +1 +Ku band range +Operational + + +4261 +025098 +Altimeter data quality flag +2 +C band range +Operational + + +4262 +025098 +Altimeter data quality flag +3 +Ku band SWH +Operational + + +4263 +025098 +Altimeter data quality flag +4 +C band SWH +Operational + + +4264 +025098 +Altimeter data quality flag +5 +Ku band backscatter coefficient +Operational + + +4265 +025098 +Altimeter data quality flag +6 +C band backscatter coefficient +Operational + + +4266 +025098 +Altimeter data quality flag +7 +Off nadir angle from Ku band waveform parameters +Operational + + +4267 +025098 +Altimeter data quality flag +8 +Off nadir angle from platform +Operational + + +4268 +025098 +Altimeter data quality flag +All 9 +Missing value +Operational + + +4269 +025099 +Altimeter correction quality flag +1 +Ku band range instrumental correction +Operational + + +4270 +025099 +Altimeter correction quality flag +2 +C band range instrumental correction +Operational + + +4271 +025099 +Altimeter correction quality flag +3 +Ku band SWH instrumental correction +Operational + + +4272 +025099 +Altimeter correction quality flag +4 +C band SWH instrumental correction +Operational + + +4273 +025099 +Altimeter correction quality flag +5 +Ku band backscatter coefficient instrumental correction +Operational + + +4274 +025099 +Altimeter correction quality flag +6 +C band backscatter coefficient instrumental correction +Operational + + +4275 +025099 +Altimeter correction quality flag +7-8 +Reserved +Operational + + +4276 +025099 +Altimeter correction quality flag +All 9 +Missing value +Operational + + +4277 +025110 +Image processing summary +1 +Raw data analysis used for raw data correction. Correction done using default parameters +Operational + + +4278 +025110 +Image processing summary +2 +Raw data analysis used for raw data correction. Correction done using raw data analysis results +Operational + + +4279 +025110 +Image processing summary +3 +Antenna elevation pattern correction applied +Operational + + +4280 +025110 +Image processing summary +4 +Nominal chirp replica used +Operational + + +4281 +025110 +Image processing summary +5 +Reconstructed chirp used +Operational + + +4282 +025110 +Image processing summary +6 +Slant range to ground range conversion applied +Operational + + +4283 +025110 +Image processing summary +7-9 +Reserved +Operational + + +4284 +025110 +Image processing summary +All 10 +Missing value +Operational + + +4285 +025112 +Band specific altimeter data quality flag +1 +Band specific range +Operational + + +4286 +025112 +Band specific altimeter data quality flag +2 +Band specific significant wave height +Operational + + +4287 +025112 +Band specific altimeter data quality flag +3 +Band specific backscatter coefficient +Operational + + +4288 +025112 +Band specific altimeter data quality flag +4 +Off nadir angle from band specific waveform parameters +Operational + + +4289 +025112 +Band specific altimeter data quality flag +5 +Off nadir angle from platform +Operational + + +4290 +025112 +Band specific altimeter data quality flag +6-8 +Reserved +Operational + + +4291 +025112 +Band specific altimeter data quality flag +All 9 +Missing value +Operational + + +4292 +025113 +Band specific altimeter correction quality flag +1 +Band specific range instrumental correction +Operational + + +4293 +025113 +Band specific altimeter correction quality flag +2 +Band specific significant wave height instrumental correction +Operational + + +4294 +025113 +Band specific altimeter correction quality flag +3 +Band specific backscatter coefficient instrumental correction +Operational + + +4295 +025113 +Band specific altimeter correction quality flag +4-8 +Reserved +Operational + + +4296 +025113 +Band specific altimeter correction quality flag +All 9 +Missing value +Operational + + +4297 +025120 +RA2-L2-processing flag +0 +Percentage of DSRs free of processing errors during Level 2 processing is greater than the acceptable threshold +Operational + + +4298 +025120 +RA2-L2-processing flag +1 +Percentage of DSRs free of processing errors during Level 2 processing is less than the acceptable threshold +Operational + + +4299 +025120 +RA2-L2-processing flag +2 +Reserved +Operational + + +4300 +025120 +RA2-L2-processing flag +3 +Missing value +Operational + + +4301 +025122 +Hardware configuration for RF +0 +Hardware configuration for RF is A +Operational + + +4302 +025122 +Hardware configuration for RF +1 +Hardware configuration for RF is B +Operational + + +4303 +025122 +Hardware configuration for RF +2 +Reserved +Operational + + +4304 +025122 +Hardware configuration for RF +3 +Missing value +Operational + + +4305 +025123 +Hardware configuration for HPA +0 +Hardware configuration for HPA is A +Operational + + +4306 +025123 +Hardware configuration for HPA +1 +Hardware configuration for HPA is B +Operational + + +4307 +025123 +Hardware configuration for HPA +2 +Reserved +Operational + + +4308 +025123 +Hardware configuration for HPA +3 +Missing value +Operational + + +4309 +025124 +MWR-L2-processing flag +0 +Percentage of DSRs free of processing errors during Level 2 processing is greater than the acceptable threshold +Operational + + +4310 +025124 +MWR-L2-processing flag +1 +Percentage of DSRs free of processing errors during Level 2 processing is less than the acceptable threshold +Operational + + +4311 +025124 +MWR-L2-processing flag +2 +Reserved +Operational + + +4312 +025124 +MWR-L2-processing flag +3 +Missing value +Operational + + +4313 +025150 +Method of tropical cyclone intensity analysis using satellite data +1 +The Dvorak's VIS (VISual imagery) intensity analysis +Operational + + +4314 +025150 +Method of tropical cyclone intensity analysis using satellite data +2 +The Dvorak's EIR (Enhanced InfraRed imagery) intensity analysis +Operational + + +4315 +025150 +Method of tropical cyclone intensity analysis using satellite data +3-14 +Reserved +Operational + + +4316 +025150 +Method of tropical cyclone intensity analysis using satellite data +15 +Missing value +Operational + + +4317 +025174 +SMOS information flag +1 +Pixel is affected by RFI effects +Operational + + +4318 +025174 +SMOS information flag +2 +Pixel is located in the hexagonal alias direction centred on Sun alias +Operational + + +4319 +025174 +SMOS information flag +3 +Pixel is close to the border delimiting the extended alias free zone +Operational + + +4320 +025174 +SMOS information flag +4 +Pixel is inside the extended alias free zone +Operational + + +4321 +025174 +SMOS information flag +5 +Pixel is inside the exclusive of alias free zone +Operational + + +4322 +025174 +SMOS information flag +6 +Pixel is located in a zone where a moon alias was reconstructed +Operational + + +4323 +025174 +SMOS information flag +7 +Pixel is located in a zone where Sun reflection has been detected +Operational + + +4324 +025174 +SMOS information flag +8 +Pixel is located in a zone where Sun alias was reconstructed +Operational + + +4325 +025174 +SMOS information flag +9 +Flat target transformation has been performed during image reconstruction of this pixel +Operational + + +4326 +025174 +SMOS information flag +10 +Scene has been combined with an adjustment scene in opposite polarization during image reconstruction to account for cross-polarization leakage +Operational + + +4327 +025174 +SMOS information flag +11 +Direct Moon correction has been performed during image reconstruction of this pixel +Operational + + +4328 +025174 +SMOS information flag +12 +Reflected Sun correction has been performed during image reconstruction of this pixel +Operational + + +4329 +025174 +SMOS information flag +13 +Direct Sun correction has been performed during image reconstruction of this image +Operational + + +4330 +025174 +SMOS information flag +All 14 +Missing value +Operational + + +4331 +025181 +L2 processing flag +0 +OK +Operational + + +4332 +025181 +L2 processing flag +1 +Percentage of L2b records free of processing errors is less than acceptable threshold +Operational + + +4333 +025181 +L2 processing flag +2 +Missing value +Operational + + +4334 +025182 +L1 processing flag +0 +OK +Operational + + +4335 +025182 +L1 processing flag +1 +Percentage of L1b records free of processing errors is less than acceptable threshold +Operational + + +4336 +025182 +L1 processing flag +2 +Missing value +Operational + + +4337 +025184 +L2 product status +0 +OK +Operational + + +4338 +025184 +L2 product status +1 +Product as a duration shorter than the input product +Operational + + +4339 +025184 +L2 product status +2 +Missing value +Operational + + +4340 +025185 +Encryption method +0 +AES 256 +Operational + + +4341 +025185 +Encryption method +1-254 +Reserved +Operational + + +4342 +025185 +Encryption method +255 +Missing value +Operational + + +4343 +025187 +Confidence flag +0 +Valid +Operational + + +4344 +025187 +Confidence flag +1 +Invalid +Operational + + +4345 +025187 +Confidence flag +2-14 +Reserved +Operational + + +4346 +025187 +Confidence flag +15 +Missing value +Operational + + +4347 +025188 +Method for reducing pressure to sea level +0 +Pressure adjusted to mean sea level following WMO-No. 8 for low level (< 50 m) stations +Operational + + +4348 +025188 +Method for reducing pressure to sea level +1 +Pressure adjusted to mean sea level following WMO-No. 8 for stations below 750 m +Operational + + +4349 +025188 +Method for reducing pressure to sea level +2 +Pressure adjusted to sea level following national practice +Operational + + +4350 +025188 +Method for reducing pressure to sea level +3 +Pressure adjusted to local water level following national practice +Operational + + +4351 +025188 +Method for reducing pressure to sea level +4 +Pressure not corrected for height +Operational + + +4352 +025188 +Method for reducing pressure to sea level +5-14 +Reserved +Operational + + +4353 +025188 +Method for reducing pressure to sea level +15 +Missing value +Operational + + +4354 +025190 +Altimeter echo processing mode +0 +Low resolution mode (LRM) +Operational + + +4355 +025190 +Altimeter echo processing mode +1 +Synthetic aperture radar (SAR) +Operational + + +4356 +025190 +Altimeter echo processing mode +2 +LRM and SAR (interleaved) +Operational + + +4357 +025190 +Altimeter echo processing mode +3 +Reserved +Operational + + +4358 +025190 +Altimeter echo processing mode +4 +Pseudo-LRM (PLRM) +Operational + + +4359 +025190 +Altimeter echo processing mode +5 +SAR interferometric mode (SARIN) +Operational + + +4360 +025190 +Altimeter echo processing mode +6-254 +Reserved +Operational + + +4361 +025190 +Altimeter echo processing mode +255 +Missing value +Operational + + +4362 +025191 +Altimeter tracking mode +0 +Open loop +Operational + + +4363 +025191 +Altimeter tracking mode +1 +Closed loop +Operational + + +4364 +025191 +Altimeter tracking mode +2 +Open loop fixed gain +Operational + + +4365 +025191 +Altimeter tracking mode +3-254 +Reserved +Operational + + +4366 +025191 +Altimeter tracking mode +255 +Missing value +Operational + + +4367 +026010 +Hours included +1 +0100 included +Operational + + +4368 +026010 +Hours included +2 +0200 included +Operational + + +4369 +026010 +Hours included +3 +0300 included +Operational + + +4370 +026010 +Hours included +4 +0400 included +Operational + + +4371 +026010 +Hours included +5 +0500 included +Operational + + +4372 +026010 +Hours included +6 +0600 included +Operational + + +4373 +026010 +Hours included +7 +0700 included +Operational + + +4374 +026010 +Hours included +8 +0800 included +Operational + + +4375 +026010 +Hours included +9 +0900 included +Operational + + +4376 +026010 +Hours included +10 +1000 included +Operational + + +4377 +026010 +Hours included +11 +1100 included +Operational + + +4378 +026010 +Hours included +12 +1200 included +Operational + + +4379 +026010 +Hours included +13 +1300 included +Operational + + +4380 +026010 +Hours included +14 +1400 included +Operational + + +4381 +026010 +Hours included +15 +1500 included +Operational + + +4382 +026010 +Hours included +16 +1600 included +Operational + + +4383 +026010 +Hours included +17 +1700 included +Operational + + +4384 +026010 +Hours included +18 +1800 included +Operational + + +4385 +026010 +Hours included +19 +1900 included +Operational + + +4386 +026010 +Hours included +20 +2000 included +Operational + + +4387 +026010 +Hours included +21 +2100 included +Operational + + +4388 +026010 +Hours included +22 +2200 included +Operational + + +4389 +026010 +Hours included +23 +2300 included +Operational + + +4390 +026010 +Hours included +24 +2400 included +Operational + + +4391 +026010 +Hours included +25 +Unknown mixture of hours +Operational + + +4392 +026010 +Hours included +All 26 +Missing value +Operational + + +4393 +029001 +Projection type +0 +Gnomonic projection +Operational + + +4394 +029001 +Projection type +1 +Polar stereographic projection +Operational + + +4395 +029001 +Projection type +2 +Lambert's conformal conic projection +Operational + + +4396 +029001 +Projection type +3 +Mercator's projection +Operational + + +4397 +029001 +Projection type +4 +Scanning Cone (radar) +Operational + + +4398 +029001 +Projection type +5 +Reserved +Operational + + +4399 +029001 +Projection type +6 +No projection +Operational + + +4400 +029001 +Projection type +7 +Missing value +Operational + + +4401 +029002 +Coordinate grid type +0 +Cartesian +Operational + + +4402 +029002 +Coordinate grid type +1 +Polar +Operational + + +4403 +029002 +Coordinate grid type +2 +Other +Operational + + +4404 +029002 +Coordinate grid type +3-6 +Reserved +Operational + + +4405 +029002 +Coordinate grid type +7 +Missing value +Operational + + +4406 +030031 +Picture type +0 +PPI +Operational + + +4407 +030031 +Picture type +1 +Composite +Operational + + +4408 +030031 +Picture type +2 +CAPPl +Operational + + +4409 +030031 +Picture type +3 +Vertical section +Operational + + +4410 +030031 +Picture type +4 +Alphanumeric data +Operational + + +4411 +030031 +Picture type +5 +Map of subject clutter +Operational + + +4412 +030031 +Picture type +6 +Map +Operational + + +4413 +030031 +Picture type +7 +Test picture +Operational + + +4414 +030031 +Picture type +8 +Comments +Operational + + +4415 +030031 +Picture type +9 +Map of ground occultation +Operational + + +4416 +030031 +Picture type +10 +Map of radar beam height +Operational + + +4417 +030031 +Picture type +11-13 +Reserved +Operational + + +4418 +030031 +Picture type +14 +Other +Operational + + +4419 +030031 +Picture type +15 +Missing value +Operational + + +4420 +030032 +Combination with other data +1 +Map +Operational + + +4421 +030032 +Combination with other data +2 +Satellite IR +Operational + + +4422 +030032 +Combination with other data +3 +Satellite VIS +Operational + + +4423 +030032 +Combination with other data +4 +Satellite WV +Operational + + +4424 +030032 +Combination with other data +5 +Satellite multispectral +Operational + + +4425 +030032 +Combination with other data +6 +Synoptic observations +Operational + + +4426 +030032 +Combination with other data +7 +Forecast parameters +Operational + + +4427 +030032 +Combination with other data +8 +Lightning data +Operational + + +4428 +030032 +Combination with other data +9-14 +Reserved +Operational + + +4429 +030032 +Combination with other data +15 +Other data +Operational + + +4430 +030032 +Combination with other data +All 16 +Missing value +Operational + + +4431 +031021 +Associated field significance +0 +Reserved +Operational + + +4432 +031021 +Associated field significance +1 +1-bit indicator of quality +0 = good, 1 = suspect or bad +Operational + + +4433 +031021 +Associated field significance +2 +2-bit indicator of quality +0 = good, 1 = slightly suspect, 2 = highly suspect, 3 = bad +Operational + + +4434 +031021 +Associated field significance +3-5 +Reserved +Operational + + +4435 +031021 +Associated field significance +6 +4-bit indicator of quality control class according to GTSPP +0 = Unqualified, 1 = Correct value (all checks passed), 2 = Probably good but value inconsistent with statistics (differ from climatology), 3 = Probably bad (spike, gradient, ... if other tests passed), 4 = Bad value, impossible value (out of scale, vertical instability, constant profile), 5 = Value modified during quality control, 6-7 = Not used (reserved), 8 = Interpolated value, 9 = Missing value +Operational + + +4436 +031021 +Associated field significance +7 +Percentage confidence +Operational + + +4437 +031021 +Associated field significance +8 +0 = Not suspected, 1 = Suspected, 2 = Reserved, 3 = Information not required +Operational + + +4438 +031021 +Associated field significance +9 +0 = Data present, good, collocated, 1 = Data available but of degraded quality and not used, 2 = No spatiotemporally collocated data available, 3-14 = Not used (reserved), 15 = Missing value +Operational + + +4439 +031021 +Associated field significance +10-20 +Reserved +Operational + + +4440 +031021 +Associated field significance +21 +1-bit indicator of correction +0 = original value, 1 = substituted/corrected value +(see Note 2) +Operational + + +4441 +031021 +Associated field significance +22-62 +Reserved for local use +Operational + + +4442 +031021 +Associated field significance +63 +Missing value +Operational + + +4443 +031031 +Data present indicator +1 +0 = Data present, 1 = Data not present +Operational + + +4444 +033002 +Quality information +0 +Data not suspect +Operational + + +4445 +033002 +Quality information +1 +Data suspect +Operational + + +4446 +033002 +Quality information +2 +Reserved +Operational + + +4447 +033002 +Quality information +3 +Quality information not given +Operational + + +4448 +033003 +Quality information +0 +Data not suspect +Operational + + +4449 +033003 +Quality information +1 +Data slightly suspect +Operational + + +4450 +033003 +Quality information +2 +Data highly suspect +Operational + + +4451 +033003 +Quality information +3 +Data considered unfit for use +Operational + + +4452 +033003 +Quality information +4-6 +Reserved +Operational + + +4453 +033003 +Quality information +7 +Quality information not given +Operational + + +4454 +033005 +Quality information (AWS data) +1 +No automated meteorological data checks performed +Operational + + +4455 +033005 +Quality information (AWS data) +2 +Pressure data suspect +Operational + + +4456 +033005 +Quality information (AWS data) +3 +Wind data suspect +Operational + + +4457 +033005 +Quality information (AWS data) +4 +Air temperature data suspect +Operational + + +4458 +033005 +Quality information (AWS data) +5 +Wet-bulb temperature data suspect +Operational + + +4459 +033005 +Quality information (AWS data) +6 +Humidity data suspect +Operational + + +4460 +033005 +Quality information (AWS data) +7 +Ground temperature data suspect +Operational + + +4461 +033005 +Quality information (AWS data) +8 +Soil temperature (depth 1) data suspect +Operational + + +4462 +033005 +Quality information (AWS data) +9 +Soil temperature (depth 2) data suspect +Operational + + +4463 +033005 +Quality information (AWS data) +10 +Soil temperature (depth 3) data suspect +Operational + + +4464 +033005 +Quality information (AWS data) +11 +Soil temperature (depth 4) data suspect +Operational + + +4465 +033005 +Quality information (AWS data) +12 +Soil temperature (depth 5) data suspect +Operational + + +4466 +033005 +Quality information (AWS data) +13 +Cloud data suspect +Operational + + +4467 +033005 +Quality information (AWS data) +14 +Visibility data suspect +Operational + + +4468 +033005 +Quality information (AWS data) +15 +Present weather data suspect +Operational + + +4469 +033005 +Quality information (AWS data) +16 +Lightning data suspect +Operational + + +4470 +033005 +Quality information (AWS data) +17 +Ice deposit data suspect +Operational + + +4471 +033005 +Quality information (AWS data) +18 +Precipitation data suspect +Operational + + +4472 +033005 +Quality information (AWS data) +19 +State of ground data suspect +Operational + + +4473 +033005 +Quality information (AWS data) +20 +Snow data suspect +Operational + + +4474 +033005 +Quality information (AWS data) +21 +Water content data suspect +Operational + + +4475 +033005 +Quality information (AWS data) +22 +Evaporation/evapotranspiration data suspect +Operational + + +4476 +033005 +Quality information (AWS data) +23 +Sunshine data suspect +Operational + + +4477 +033005 +Quality information (AWS data) +24-29 +Reserved +Operational + + +4478 +033005 +Quality information (AWS data) +All 30 +Missing value +Operational + + +4479 +033006 +Internal measurement status information (AWS) +0 +Self-check OK +Operational + + +4480 +033006 +Internal measurement status information (AWS) +1 +At least one warning active, no alarms +Operational + + +4481 +033006 +Internal measurement status information (AWS) +2 +At least one alarm active +Operational + + +4482 +033006 +Internal measurement status information (AWS) +3 +Sensor failure +Operational + + +4483 +033006 +Internal measurement status information (AWS) +4-6 +Reserved +Operational + + +4484 +033006 +Internal measurement status information (AWS) +7 +Missing value +Operational + + +4485 +033015 +Data quality-check indicator +0 +Passed all checks +Operational + + +4486 +033015 +Data quality-check indicator +1 +Missing data check +Operational + + +4487 +033015 +Data quality-check indicator +2 +Descending/reascending balloon check +Operational + + +4488 +033015 +Data quality-check indicator +3 +Data plausibility check (above limits) +Operational + + +4489 +033015 +Data quality-check indicator +4 +Data plausibility check (below limits) +Operational + + +4490 +033015 +Data quality-check indicator +5 +Superadiabatic lapse rate check +Operational + + +4491 +033015 +Data quality-check indicator +6 +Limiting angles check +Operational + + +4492 +033015 +Data quality-check indicator +7 +Ascension rate check +Operational + + +4493 +033015 +Data quality-check indicator +8 +Excessive change from previous flight +Operational + + +4494 +033015 +Data quality-check indicator +9 +Balloon overhead check +Operational + + +4495 +033015 +Data quality-check indicator +10 +Wind speed check +Operational + + +4496 +033015 +Data quality-check indicator +11 +Wind direction check +Operational + + +4497 +033015 +Data quality-check indicator +12 +Dependency check +Operational + + +4498 +033015 +Data quality-check indicator +13 +Data valid but modified +Operational + + +4499 +033015 +Data quality-check indicator +14 +Data outlier check +Operational + + +4500 +033015 +Data quality-check indicator +15-62 +Reserved +Operational + + +4501 +033015 +Data quality-check indicator +63 +Missing value +Operational + + +4502 +033020 +Quality control indication of following value +0 +Good +Operational + + +4503 +033020 +Quality control indication of following value +1 +Inconsistent +Operational + + +4504 +033020 +Quality control indication of following value +2 +Doubtful +Operational + + +4505 +033020 +Quality control indication of following value +3 +Wrong +Operational + + +4506 +033020 +Quality control indication of following value +4 +Not checked +Operational + + +4507 +033020 +Quality control indication of following value +5 +Has been changed +Operational + + +4508 +033020 +Quality control indication of following value +6 +Estimated +Operational + + +4509 +033020 +Quality control indication of following value +7 +Missing value +Operational + + +4510 +033021 +Quality of following value +0 +Within limits +Operational + + +4511 +033021 +Quality of following value +1 +Outside limits +Operational + + +4512 +033021 +Quality of following value +2 +Reserved +Operational + + +4513 +033021 +Quality of following value +3 +Missing value +Operational + + +4514 +033022 +Quality of buoy satellite transmission +0 +Good (several identical reports have been received) +Operational + + +4515 +033022 +Quality of buoy satellite transmission +1 +Dubious (no identical reports have been received) +Operational + + +4516 +033022 +Quality of buoy satellite transmission +2 +Reserved +Operational + + +4517 +033022 +Quality of buoy satellite transmission +3 +Missing value +Operational + + +4518 +033023 +Quality of buoy location +0 +Reliable (location was made over two satellite passes) +Operational + + +4519 +033023 +Quality of buoy location +1 +Latest known (no location over the corresponding pass) +Operational + + +4520 +033023 +Quality of buoy location +2 +Dubious (location made over one pass only; a second solution is possible in 5 per cent of the cases) +Operational + + +4521 +033023 +Quality of buoy location +3 +Missing value +Operational + + +4522 +033024 +Station elevation quality mark (for mobile stations) +0 +Reserved +Operational + + +4523 +033024 +Station elevation quality mark (for mobile stations) +1 +Excellent - within 3 metres +Operational + + +4524 +033024 +Station elevation quality mark (for mobile stations) +2 +Good - within 10 metres +Operational + + +4525 +033024 +Station elevation quality mark (for mobile stations) +3 +Fair - within 20 metres +Operational + + +4526 +033024 +Station elevation quality mark (for mobile stations) +4 +Poor - more than 20 metres +Operational + + +4527 +033024 +Station elevation quality mark (for mobile stations) +5 +Excellent - within 10 feet +Operational + + +4528 +033024 +Station elevation quality mark (for mobile stations) +6 +Good - within 30 feet +Operational + + +4529 +033024 +Station elevation quality mark (for mobile stations) +7 +Fair - within 60 feet +Operational + + +4530 +033024 +Station elevation quality mark (for mobile stations) +8 +Poor - more than 60 feet +Operational + + +4531 +033024 +Station elevation quality mark (for mobile stations) +9-14 +Reserved +Operational + + +4532 +033024 +Station elevation quality mark (for mobile stations) +15 +Missing value +Operational + + +4533 +033025 +ACARS interpolated values indicator +0 +Time interpolated, latitude and longitude reported +Operational + + +4534 +033025 +ACARS interpolated values indicator +1 +Time reported, latitude and longitude interpolated +Operational + + +4535 +033025 +ACARS interpolated values indicator +2 +Time, latitude, and longitude interpolated +Operational + + +4536 +033025 +ACARS interpolated values indicator +3 +Time, latitude, and longitude reported +Operational + + +4537 +033025 +ACARS interpolated values indicator +4-6 +Reserved +Operational + + +4538 +033025 +ACARS interpolated values indicator +7 +Missing value +Operational + + +4539 +033026 +Moisture quality +0 +Normal operations - measurement mode +Operational + + +4540 +033026 +Moisture quality +1 +Normal operations - non-measurement mode +Operational + + +4541 +033026 +Moisture quality +2 +Small RH +Operational + + +4542 +033026 +Moisture quality +3 +Humidity element is wet +Operational + + +4543 +033026 +Moisture quality +4 +Humidity element contaminated +Operational + + +4544 +033026 +Moisture quality +5 +Heater fail +Operational + + +4545 +033026 +Moisture quality +6 +Heater fail and wet/contaminated humidity element +Operational + + +4546 +033026 +Moisture quality +7 +At least one of the input parameters used in the calculation of mixing ratio is invalid +Operational + + +4547 +033026 +Moisture quality +8 +Numeric error +Operational + + +4548 +033026 +Moisture quality +9 +Sensor not installed +Operational + + +4549 +033026 +Moisture quality +10 +Calculated RH > 100% +Operational + + +4550 +033026 +Moisture quality +11 +Input laser power too low +Operational + + +4551 +033026 +Moisture quality +12 +Probe WV temperature out of range +Operational + + +4552 +033026 +Moisture quality +13 +Probe WV pressure out of range +Operational + + +4553 +033026 +Moisture quality +14 +Spectral line out of range +Operational + + +4554 +033026 +Moisture quality +15 +No laser output +Operational + + +4555 +033026 +Moisture quality +16-62 +Reserved +Operational + + +4556 +033026 +Moisture quality +63 +Missing value +Operational + + +4557 +033027 +Location quality class (range of radius of 66 % confidence) +0 +Radius >= 1500 m +Operational + + +4558 +033027 +Location quality class (range of radius of 66 % confidence) +1 +500 m =< Radius <1500 m +Operational + + +4559 +033027 +Location quality class (range of radius of 66 % confidence) +2 +250 m =< Radius < 500 m +Operational + + +4560 +033027 +Location quality class (range of radius of 66 % confidence) +3 +Radius < 250 m +Operational + + +4561 +033027 +Location quality class (range of radius of 66 % confidence) +4 +=< 100 m +Operational + + +4562 +033027 +Location quality class (range of radius of 66 % confidence) +5-6 +Reserved +Operational + + +4563 +033027 +Location quality class (range of radius of 66 % confidence) +7 +Missing value +Operational + + +4564 +033028 +Snapshot overall quality +1 +Nominal +Operational + + +4565 +033028 +Snapshot overall quality +2 +Degraded by SW error; any error reported by the algorithms +Operational + + +4566 +033028 +Snapshot overall quality +3 +Degraded by instrument error +Operational + + +4567 +033028 +Snapshot overall quality +4 +Degraded by corrupted /missing ADF +Operational + + +4568 +033028 +Snapshot overall quality +5-6 +Reserved +Operational + + +4569 +033028 +Snapshot overall quality +7 +Missing value +Operational + + +4570 +033030 +Scan line status flags for ATOVS +1 +Do not use scan for product generation +Operational + + +4571 +033030 +Scan line status flags for ATOVS +2 +Time sequence error detected with this scan +Operational + + +4572 +033030 +Scan line status flags for ATOVS +3 +Data gap precedes this scan +Operational + + +4573 +033030 +Scan line status flags for ATOVS +4 +No calibration +Operational + + +4574 +033030 +Scan line status flags for ATOVS +5 +No Earth location +Operational + + +4575 +033030 +Scan line status flags for ATOVS +6 +First good time following a clock update +Operational + + +4576 +033030 +Scan line status flags for ATOVS +7 +Instrument status changed with this scan +Operational + + +4577 +033030 +Scan line status flags for ATOVS +8-23 +Reserved +Operational + + +4578 +033030 +Scan line status flags for ATOVS +All 24 +Missing value +Operational + + +4579 +033031 +Scan line quality flags for ATOVS +1 +Time field is bad but can probably be inferred from the previous good time +Operational + + +4580 +033031 +Scan line quality flags for ATOVS +2 +Time field is bad and cannot be inferred from the previous good time +Operational + + +4581 +033031 +Scan line quality flags for ATOVS +3 +This record starts a sequence that is inconsistent with previous times (i.e. there is a time discontinuity). This may or may not be associated with a spacecraft clock update (see scan line status flags for ATOVS) +Operational + + +4582 +033031 +Scan line quality flags for ATOVS +4 +Start of a sequence that apparently repeats scan times that have been previously accepted +Operational + + +4583 +033031 +Scan line quality flags for ATOVS +5 +Scan line was not calibrated because of bad time +Operational + + +4584 +033031 +Scan line quality flags for ATOVS +6 +Scan line was calibrated using fewer than the preferred number of scan lines because of proximity to start or end of data or to a data gap +Operational + + +4585 +033031 +Scan line quality flags for ATOVS +7 +Scan line was not calibrated because of bad or insufficient PRT data +Operational + + +4586 +033031 +Scan line quality flags for ATOVS +8 +Scan line was calibrated but with marginal PRT data +Operational + + +4587 +033031 +Scan line quality flags for ATOVS +9 +Some uncalibrated channels on this scan +Operational + + +4588 +033031 +Scan line quality flags for ATOVS +10 +Uncalibrated due to instrument mode +Operational + + +4589 +033031 +Scan line quality flags for ATOVS +11 +Questionable calibration because of antenna position error of space view +Operational + + +4590 +033031 +Scan line quality flags for ATOVS +12 +Questionable calibration because of antenna position error of black body +Operational + + +4591 +033031 +Scan line quality flags for ATOVS +13 +Not Earth located because of bad time +Operational + + +4592 +033031 +Scan line quality flags for ATOVS +14 +Earth location questionable because of questionable time code (see time problem code bits) +Operational + + +4593 +033031 +Scan line quality flags for ATOVS +15 +Earth location questionable - only marginal agreement with reasonableness check +Operational + + +4594 +033031 +Scan line quality flags for ATOVS +16 +Earth location questionable - fails reasonableness check +Operational + + +4595 +033031 +Scan line quality flags for ATOVS +17 +Earth location questionable because of antenna position check +Operational + + +4596 +033031 +Scan line quality flags for ATOVS +18 +Scan line calibration cold black body +Operational + + +4597 +033031 +Scan line quality flags for ATOVS +19 +Scan line calibration warm black body +Operational + + +4598 +033031 +Scan line quality flags for ATOVS +20 +Scan line calibration space view +Operational + + +4599 +033031 +Scan line quality flags for ATOVS +21 +Earth view +Operational + + +4600 +033031 +Scan line quality flags for ATOVS +22-23 +Reserved +Operational + + +4601 +033031 +Scan line quality flags for ATOVS +All 24 +Missing value +Operational + + +4602 +033032 +Channel quality flags for ATOVS +1 +No good blackbody counts for scan line +Operational + + +4603 +033032 +Channel quality flags for ATOVS +2 +No good space view counts for this line +Operational + + +4604 +033032 +Channel quality flags for ATOVS +3 +No good PRTs for this line +Operational + + +4605 +033032 +Channel quality flags for ATOVS +4 +Some bad blackbody view counts for this line +Operational + + +4606 +033032 +Channel quality flags for ATOVS +5 +Some bad space view counts for this line +Operational + + +4607 +033032 +Channel quality flags for ATOVS +6 +Some bad PRT temps on this line +Operational + + +4608 +033032 +Channel quality flags for ATOVS +7 +Quality for this scan is reduced +Operational + + +4609 +033032 +Channel quality flags for ATOVS +8-23 +Reserved (bits set to zero) +Operational + + +4610 +033032 +Channel quality flags for ATOVS +All 24 +Missing value +Operational + + +4611 +033033 +Field of view quality flags for ATOVS +1 +Set if secondary calibration used +Operational + + +4612 +033033 +Field of view quality flags for ATOVS +2-21 +Bit n set to 1 if brightness temperature in channel n-1 is physically unreasonable or has not been calculated due to calibration problems +Operational + + +4613 +033033 +Field of view quality flags for ATOVS +22 +Set if all the channels are missing +Operational + + +4614 +033033 +Field of view quality flags for ATOVS +23 +Suspect +Operational + + +4615 +033033 +Field of view quality flags for ATOVS +All 24 +Missing value +Operational + + +4616 +033035 +Manual/automatic quality control +0 +Automatic quality control passed and not manually checked +Operational + + +4617 +033035 +Manual/automatic quality control +1 +Automatic quality control passed and manually checked and passed +Operational + + +4618 +033035 +Manual/automatic quality control +2 +Automatic quality control passed and manually checked and deleted +Operational + + +4619 +033035 +Manual/automatic quality control +3 +Automatic quality control failed and manually not checked +Operational + + +4620 +033035 +Manual/automatic quality control +4 +Automatic quality control failed and manually checked and failed +Operational + + +4621 +033035 +Manual/automatic quality control +5 +Automatic quality control failed and manually checked and re-inserted +Operational + + +4622 +033035 +Manual/automatic quality control +6 +Automatic quality control flagged data as questionable and not manually checked +Operational + + +4623 +033035 +Manual/automatic quality control +7 +Automatic quality control flagged data as questionable and manually checked and failed +Operational + + +4624 +033035 +Manual/automatic quality control +8 +Manually checked and failed +Operational + + +4625 +033035 +Manual/automatic quality control +9-14 +Reserved +Operational + + +4626 +033035 +Manual/automatic quality control +15 +Missing value +Operational + + +4627 +033037 +Wind correlation error +1 +u departure from guess +Operational + + +4628 +033037 +Wind correlation error +2 +v departure from guess +Operational + + +4629 +033037 +Wind correlation error +3 +u and v departure from guess +Operational + + +4630 +033037 +Wind correlation error +4 +u acceleration +Operational + + +4631 +033037 +Wind correlation error +5 +v acceleration +Operational + + +4632 +033037 +Wind correlation error +6 +u and v acceleration +Operational + + +4633 +033037 +Wind correlation error +7 +Possible land feature +Operational + + +4634 +033037 +Wind correlation error +8 +u acceleration and possible land feature +Operational + + +4635 +033037 +Wind correlation error +9 +v acceleration and possible land feature +Operational + + +4636 +033037 +Wind correlation error +10 +u and v acceleration and possible land feature +Operational + + +4637 +033037 +Wind correlation error +11 +Bad wind guess +Operational + + +4638 +033037 +Wind correlation error +12 +Correlation failure +Operational + + +4639 +033037 +Wind correlation error +13 +Search box off edge of area +Operational + + +4640 +033037 +Wind correlation error +14 +Target box off edge of area +Operational + + +4641 +033037 +Wind correlation error +15 +Pixel brightness out of bounds (noisy line) +Operational + + +4642 +033037 +Wind correlation error +16 +Target outside of latitude/longitude box +Operational + + +4643 +033037 +Wind correlation error +17 +Target outside of pressure minimum/maximum +Operational + + +4644 +033037 +Wind correlation error +18 +Autoeditor flagged slow vector +Operational + + +4645 +033037 +Wind correlation error +19 +Autoeditor flagged vectors +Operational + + +4646 +033037 +Wind correlation error +All 20 +Missing value +Operational + + +4647 +033038 +Quality flags for ground-based GNSS data +1 +Total zenith delay quality is considered poor +Operational + + +4648 +033038 +Quality flags for ground-based GNSS data +2 +GALILEO satellites used +Operational + + +4649 +033038 +Quality flags for ground-based GNSS data +3 +GLONASS satellites used +Operational + + +4650 +033038 +Quality flags for ground-based GNSS data +4 +GPS satellites used +Operational + + +4651 +033038 +Quality flags for ground-based GNSS data +5 +Meteorological data applied +Operational + + +4652 +033038 +Quality flags for ground-based GNSS data +6 +Atmospheric loading correction applied +Operational + + +4653 +033038 +Quality flags for ground-based GNSS data +7 +Ocean tide loading applied +Operational + + +4654 +033038 +Quality flags for ground-based GNSS data +8 +Climate quality data processing +Operational + + +4655 +033038 +Quality flags for ground-based GNSS data +9 +Near-real time data processing +Operational + + +4656 +033038 +Quality flags for ground-based GNSS data +All 10 +Missing value +Operational + + +4657 +033039 +Quality flags for radio occultation data +1 +Non-nominal quality +Operational + + +4658 +033039 +Quality flags for radio occultation data +2 +Offline product +Operational + + +4659 +033039 +Quality flags for radio occultation data +3 +Ascending occultation flag +Operational + + +4660 +033039 +Quality flags for radio occultation data +4 +Excess phase processing non-nominal +Operational + + +4661 +033039 +Quality flags for radio occultation data +5 +Bending angle processing non-nominal +Operational + + +4662 +033039 +Quality flags for radio occultation data +6 +Refractivity processing non-nominal +Operational + + +4663 +033039 +Quality flags for radio occultation data +7 +Meteorological processing non-nominal +Operational + + +4664 +033039 +Quality flags for radio occultation data +8 +Open loop data included +Operational + + +4665 +033039 +Quality flags for radio occultation data +9 +Surface reflections detected +Operational + + +4666 +033039 +Quality flags for radio occultation data +10 +L2C GNSS signals used +Operational + + +4667 +033039 +Quality flags for radio occultation data +11-13 +Reserved +Operational + + +4668 +033039 +Quality flags for radio occultation data +14 +Background profile non-nominal +Operational + + +4669 +033039 +Quality flags for radio occultation data +15 +Background (i.e. not retrieved) profile present +Operational + + +4670 +033039 +Quality flags for radio occultation data +All 16 +Missing value +Operational + + +4671 +033041 +Attribute of following value +0 +The following value is the true value +Operational + + +4672 +033041 +Attribute of following value +1 +The following value is higher than the true value (the measurement hit the lower limit of the instrument) +Operational + + +4673 +033041 +Attribute of following value +2 +The following value is lower than the true value (the measurement hit the higher limit of the instrument) +Operational + + +4674 +033041 +Attribute of following value +3 +Missing value +Operational + + +4675 +033042 +Type of limit represented by following value +0 +Exclusive lower limit (>) +Operational + + +4676 +033042 +Type of limit represented by following value +1 +Inclusive lower limit (>=) +Operational + + +4677 +033042 +Type of limit represented by following value +2 +Exclusive upper limit (<) +Operational + + +4678 +033042 +Type of limit represented by following value +3 +Inclusive upper limit (=<) +Operational + + +4679 +033042 +Type of limit represented by following value +4-6 +Reserved +Operational + + +4680 +033042 +Type of limit represented by following value +7 +Missing value +Operational + + +4681 +033043 +AST confidence +1 +Sea MDS. Nadir only SST retrieval used 3.7 micron channel. Land MDS reserved +Operational + + +4682 +033043 +AST confidence +2 +Sea MDS. Dual view SST retrieval used 3.7 micron channel. Land MDS reserved +Operational + + +4683 +033043 +AST confidence +3 +Nadir view contains day time data +Operational + + +4684 +033043 +AST confidence +4 +Forward view contains day time data +Operational + + +4685 +033043 +AST confidence +5-7 +Reserved +Operational + + +4686 +033043 +AST confidence +All 8 +Missing value +Operational + + +4687 +033044 +ASAR quality information +1 +Input data mean outside nominal range flag +Operational + + +4688 +033044 +ASAR quality information +2 +Input data standard deviation outside nominal range flag +Operational + + +4689 +033044 +ASAR quality information +3 +Number of input data gaps > threshold value +Operational + + +4690 +033044 +ASAR quality information +4 +Percentage of missing lines > threshold value +Operational + + +4691 +033044 +ASAR quality information +5 +Doppler centroid uncertain. Confidence measure < specific value +Operational + + +4692 +033044 +ASAR quality information +6 +Doppler ambiguity estimate uncertain. Confidence measure < specific value +Operational + + +4693 +033044 +ASAR quality information +7 +Output data mean outside nominal range flag +Operational + + +4694 +033044 +ASAR quality information +8 +Output data standard deviation outside nominal range flag +Operational + + +4695 +033044 +ASAR quality information +9 +Chirp reconstruction failed or is of low quality flag +Operational + + +4696 +033044 +ASAR quality information +10 +Data set missing +Operational + + +4697 +033044 +ASAR quality information +11 +Invalid downlink parameters +Operational + + +4698 +033044 +ASAR quality information +12 +Azimuth cut-off iteration count. The azimuth cut-off fit did not converge within a minimum number of iterations +Operational + + +4699 +033044 +ASAR quality information +13 +Azimuth cut-off fit did not converge within a minimum number of iterations +Operational + + +4700 +033044 +ASAR quality information +14 +Phase information confidence measure. The imaginary spectral peak is less than a minimum threshold, or the zero lag shift is greater than a minimum threshold +Operational + + +4701 +033044 +ASAR quality information +All 15 +Missing value +Operational + + +4702 +033047 +Measurement confidence data +1 +Error detected and attempts to recover made +Operational + + +4703 +033047 +Measurement confidence data +2 +Anomaly in on-board data handling (OBDH) value detected +Operational + + +4704 +033047 +Measurement confidence data +3 +Anomaly in ultra stable oscillator processing (USOP) value detected +Operational + + +4705 +033047 +Measurement confidence data +4 +Errors detected by on-board computer +Operational + + +4706 +033047 +Measurement confidence data +5 +Automatic gain control (AGC) out of range +Operational + + +4707 +033047 +Measurement confidence data +6 +Reception (Rx) delay fault. Rx distance out of range +Operational + + +4708 +033047 +Measurement confidence data +7 +Wave form samples fault identifier. Error +Operational + + +4709 +033047 +Measurement confidence data +8 +S band anomaly/error detected +Operational + + +4710 +033047 +Measurement confidence data +9-11 +Reserved +Operational + + +4711 +033047 +Measurement confidence data +12 +Brightness temperature (channel 1) out of range +Operational + + +4712 +033047 +Measurement confidence data +13 +Brightness temperature (channel 2) out of range +Operational + + +4713 +033047 +Measurement confidence data +14 +Reserved +Operational + + +4714 +033047 +Measurement confidence data +15 +Ku band ocean retracking error +Operational + + +4715 +033047 +Measurement confidence data +16 +S band ocean retracking error +Operational + + +4716 +033047 +Measurement confidence data +17 +Ku band ice 1 retracking error +Operational + + +4717 +033047 +Measurement confidence data +18 +S band ice 1 retracking error +Operational + + +4718 +033047 +Measurement confidence data +19 +Ku band ice 2 retracking error +Operational + + +4719 +033047 +Measurement confidence data +20 +S band ice 2 retracking error +Operational + + +4720 +033047 +Measurement confidence data +21 +Ku band sea ice retracking error +Operational + + +4721 +033047 +Measurement confidence data +22 +Arithmetic fault error +Operational + + +4722 +033047 +Measurement confidence data +23 +Meteo data state. No map +Operational + + +4723 +033047 +Measurement confidence data +24 +Meteo data state. 1 map +Operational + + +4724 +033047 +Measurement confidence data +25 +Meteo data state. 2 maps degraded +Operational + + +4725 +033047 +Measurement confidence data +26 +Meteo data state. 2 maps nominal +Operational + + +4726 +033047 +Measurement confidence data +27 +Orbit propagator status for propagation mode, several errors +Operational + + +4727 +033047 +Measurement confidence data +28 +Orbit propagator status for propagation mode, warning detected +Operational + + +4728 +033047 +Measurement confidence data +29 +Orbit propagator status for initialization mode, several errors +Operational + + +4729 +033047 +Measurement confidence data +30 +Orbit propagator status for initialization mode, warning detected +Operational + + +4730 +033047 +Measurement confidence data +All 31 +Missing value +Operational + + +4731 +033048 +Confidence measure of SAR inversion +0 +Inversion successful +Operational + + +4732 +033048 +Confidence measure of SAR inversion +1 +Inversion not successful +Operational + + +4733 +033048 +Confidence measure of SAR inversion +2 +Reserved +Operational + + +4734 +033048 +Confidence measure of SAR inversion +3 +Missing value +Operational + + +4735 +033049 +Confidence measure of wind retrieval +0 +External wind direction used during inversion +Operational + + +4736 +033049 +Confidence measure of wind retrieval +1 +External wind direction not used during inversion +Operational + + +4737 +033049 +Confidence measure of wind retrieval +2 +Reserved +Operational + + +4738 +033049 +Confidence measure of wind retrieval +3 +Missing value +Operational + + +4739 +033050 +Global GTSPP quality flag +0 +Unqualified +Operational + + +4740 +033050 +Global GTSPP quality flag +1 +Correct value (all checks passed) +Operational + + +4741 +033050 +Global GTSPP quality flag +2 +Probably good but value inconsistent with statistics (differ from climatology) +Operational + + +4742 +033050 +Global GTSPP quality flag +3 +Probably bad (spike, gradient, etc., if other tests passed) +Operational + + +4743 +033050 +Global GTSPP quality flag +4 +Bad value, impossible value (out of scale, vertical instability, constant profile) +Operational + + +4744 +033050 +Global GTSPP quality flag +5 +Value modified during quality control +Operational + + +4745 +033050 +Global GTSPP quality flag +6-7 +Reserved +Operational + + +4746 +033050 +Global GTSPP quality flag +8 +Interpolated value +Operational + + +4747 +033050 +Global GTSPP quality flag +9 +Good for operational use; Caution; check literature for other uses +Operational + + +4748 +033050 +Global GTSPP quality flag +10-14 +Reserved +Operational + + +4749 +033050 +Global GTSPP quality flag +15 +Missing value +Operational + + +4750 +033052 +S band ocean retracking quality +1-20 +First 20 least significant bits correspond to the 20 values (one per data block containing: 0 = valid measurement, 1 = invalid). Bit 1 applies to the 20th data block +Operational + + +4751 +033052 +S band ocean retracking quality +All 21 +Missing value +Operational + + +4752 +033053 +Ku band ocean retracking quality +1-20 +First 20 least significant bits correspond to the 20 values (one per data block containing: 0 = valid measurement, 1=invalid). Bit 1 applies to the 20th data block +Operational + + +4753 +033053 +Ku band ocean retracking quality +All 21 +Missing value +Operational + + +4754 +033055 +Wind vector quality flag +1-10 +Reserved +Operational + + +4755 +033055 +Wind vector quality flag +11 +Ocean sigma-0 is not available for wind retrievals +Operational + + +4756 +033055 +Wind vector quality flag +12 +Background wind is not available +Operational + + +4757 +033055 +Wind vector quality flag +13 +Background model detect land +Operational + + +4758 +033055 +Wind vector quality flag +14 +Background model detect ice +Operational + + +4759 +033055 +Wind vector quality flag +15 +Sigma-0 is not land/ice free +Operational + + +4760 +033055 +Wind vector quality flag +16 +Sigma-0 land contamination +Operational + + +4761 +033055 +Wind vector quality flag +17 +Sigma-0 ice contamination +Operational + + +4762 +033055 +Wind vector quality flag +18 +Not enough azimuthal diversity +Operational + + +4763 +033055 +Wind vector quality flag +19 +Inversion is not done +Operational + + +4764 +033055 +Wind vector quality flag +20 +Overall WVC flag +Operational + + +4765 +033055 +Wind vector quality flag +21 +Inversion is attempted (flag is set) +Operational + + +4766 +033055 +Wind vector quality flag +22 +Rainflag is attempted (flag is set) +Operational + + +4767 +033055 +Wind vector quality flag +23 +Rain is detected +Operational + + +4768 +033055 +Wind vector quality flag +All 24 +Missing value +Operational + + +4769 +033056 +Sigma-0 quality flag +1-7 +Reserved +Operational + + +4770 +033056 +Sigma-0 quality flag +8 +Ascending +Operational + + +4771 +033056 +Sigma-0 quality flag +9 +VV polarisation +Operational + + +4772 +033056 +Sigma-0 quality flag +10 +Fore of spacecraft +Operational + + +4773 +033056 +Sigma-0 quality flag +11 +Land +Operational + + +4774 +033056 +Sigma-0 quality flag +12 +Poor sigma-0 (summary) +Operational + + +4775 +033056 +Sigma-0 quality flag +13 +Invalid sigma-0 (summary) +Operational + + +4776 +033056 +Sigma-0 quality flag +14 +Poor BT +Operational + + +4777 +033056 +Sigma-0 quality flag +15 +Invalid BT +Operational + + +4778 +033056 +Sigma-0 quality flag +16 +Land-sea boundary +Operational + + +4779 +033056 +Sigma-0 quality flag +17 +Negative sigma-0 +Operational + + +4780 +033056 +Sigma-0 quality flag +18-20 +Reserved +Operational + + +4781 +033056 +Sigma-0 quality flag +21 +Ice +Operational + + +4782 +033056 +Sigma-0 quality flag +22 +Missing data at a given latitude-longitude for sea-ice flagging process for 2 or more days +Operational + + +4783 +033056 +Sigma-0 quality flag +23 +Ice-ocean contamination +Operational + + +4784 +033056 +Sigma-0 quality flag +All 24 +Missing value +Operational + + +4785 +033060 +GqisFlagQual - individual IASI-System quality flag +0 +Good +Operational + + +4786 +033060 +GqisFlagQual - individual IASI-System quality flag +1 +Bad +Operational + + +4787 +033060 +GqisFlagQual - individual IASI-System quality flag +2 +Reserved +Operational + + +4788 +033060 +GqisFlagQual - individual IASI-System quality flag +3 +Missing value +Operational + + +4789 +033066 +AMV quality flag +1-19 +Reserved +Operational + + +4790 +033066 +AMV quality flag +20 +Good wind, but an alternative channel used for feature tracking +Operational + + +4791 +033066 +AMV quality flag +21 +Good wind, but an alternative set of channels used for the determination of cloud-top height/AMV height assignment +Operational + + +4792 +033066 +AMV quality flag +22 +Correlation surface constraint fails +Operational + + +4793 +033066 +AMV quality flag +23 +Reserved +Operational + + +4794 +033066 +AMV quality flag +All 24 +Missing value +Operational + + +4795 +033070 +Total ozone quality +0 +Good retrieval +Operational + + +4796 +033070 +Total ozone quality +1 +Bad aerosol information flag or NOAA-16 radiance anomaly +Operational + + +4797 +033070 +Total ozone quality +2 +Solar zenith angle greater than 84 degrees +Operational + + +4798 +033070 +Total ozone quality +3 +380 nm residue greater than limit +Operational + + +4799 +033070 +Total ozone quality +4 +Ozone inconsistency +Operational + + +4800 +033070 +Total ozone quality +5 +Difference between profile ozone and step 3 total ozone exceeds threshold (set to 25 DU) +Operational + + +4801 +033070 +Total ozone quality +6 +Step 1 ozone iteration did not converge +Operational + + +4802 +033070 +Total ozone quality +7 +Any channel residue greater than 16 or bad radiance +Operational + + +4803 +033070 +Total ozone quality +8 +Insufficient pixels - not processed +Operational + + +4804 +033070 +Total ozone quality +9 +First guess good - ozone forecast data used +Operational + + +4805 +033070 +Total ozone quality +10 +High cloud in pixel - not processed +Operational + + +4806 +033070 +Total ozone quality +11 +Successful ozone retrieval +Operational + + +4807 +033070 +Total ozone quality +12 +Unsuccessful ozone retrieval +Operational + + +4808 +033070 +Total ozone quality +13-14 +Reserved +Operational + + +4809 +033070 +Total ozone quality +15 +Missing value +Operational + + +4810 +033071 +Profile ozone quality +0 +Good retrieval +Operational + + +4811 +033071 +Profile ozone quality +1 +Solar zenith angle greater than 84 degrees +Operational + + +4812 +033071 +Profile ozone quality +2 +Difference between step 3 and profile total ozone greater than limit (25 DU) +Operational + + +4813 +033071 +Profile ozone quality +3 +Average final residue for wavelengths used in retrieval greater than threshold +Operational + + +4814 +033071 +Profile ozone quality +4 +Final residue greater than 3 times a priori error +Operational + + +4815 +033071 +Profile ozone quality +5 +Difference between retrieved and a priori greater than 3 times a priori error +Operational + + +4816 +033071 +Profile ozone quality +6 +Non-convergent solution +Operational + + +4817 +033071 +Profile ozone quality +7 +Upper level profile anomaly or stray light anomaly +Operational + + +4818 +033071 +Profile ozone quality +8 +Initial residue greater than 18.0 N-value units +Operational + + +4819 +033071 +Profile ozone quality +9-14 +Reserved +Operational + + +4820 +033071 +Profile ozone quality +15 +Missing value +Operational + + +4821 +033072 +Ozone error +0 +Good retrieval +Operational + + +4822 +033072 +Ozone error +1 +Reflectivity out of range +Operational + + +4823 +033072 +Ozone error +2 +Larger pixels (Number of cross-track pixels less than 32) or backward scans error +Operational + + +4824 +033072 +Ozone error +3 +Solar zenith angle greater than 88 degrees +Operational + + +4825 +033072 +Ozone error +4 +Latitude/longitude out of range +Operational + + +4826 +033072 +Ozone error +5 +Viewing zenith angle or solar zenith angle out of range +Operational + + +4827 +033072 +Ozone error +6 +Step-one process failed in general +Operational + + +4828 +033072 +Ozone error +7 +First guess ozone out of range +Operational + + +4829 +033072 +Ozone error +8 +Too many iterations (exceed 8) +Operational + + +4830 +033072 +Ozone error +9 +Step-one residue calculation failed +Operational + + +4831 +033072 +Ozone error +10 +Step-two process failed in general +Operational + + +4832 +033072 +Ozone error +11 +First guess ozone profile out of range +Operational + + +4833 +033072 +Ozone error +12 +Step-two ozone value out of range +Operational + + +4834 +033072 +Ozone error +13 +Step-two residue calculation failed +Operational + + +4835 +033072 +Ozone error +14 +Step-three process failed in general +Operational + + +4836 +033072 +Ozone error +15 +Polarization correction accuracy alert +Operational + + +4837 +033072 +Ozone error +16 +Radiance or irradiance less or equal to zero +Operational + + +4838 +033072 +Ozone error +17-30 +Reserved +Operational + + +4839 +033072 +Ozone error +31 +Missing value +Operational + + +4840 +033075 +Scan-level quality flags +1 +Gap in raw data record (RDR) data detected (i.e., missing scan(s) preceding the current scan) +Operational + + +4841 +033075 +Scan-level quality flags +2 +Recorded time is not in sequence (i.e., the scan start time is out of sequence) +Operational + + +4842 +033075 +Scan-level quality flags +3 +Lambda monitored calculation cannot be updated +(see Note 1) +Operational + + +4843 +033075 +Scan-level quality flags +4 +The measured temperatures of any instrument components (e.g., beam-splitter, scan mirror, scan baffle) are outside the allowable ranges +(see Note 2) +Operational + + +4844 +033075 +Scan-level quality flags +5 +At least one of the monitored instrument temperatures has drifted more than a specified tolerance value +Operational + + +4845 +033075 +Scan-level quality flags +6-12 +Reserved +Operational + + +4846 +033075 +Scan-level quality flags +All 13 +Missing value +Operational + + +4847 +033076 +Calibration quality flags +1 +Lunar intrusion on first deep space view +(see Note) +Operational + + +4848 +033076 +Calibration quality flags +2 +Lunar intrusion on second deep space view +(see Note) +Operational + + +4849 +033076 +Calibration quality flags +3-8 +Reserved +Operational + + +4850 +033076 +Calibration quality flags +All 9 +Missing value +Operational + + +4851 +033077 +Field-of-view quality flags +1 +Degraded SDR quality +Operational + + +4852 +033077 +Field-of-view quality flags +2 +Invalid SDR quality +(see Note 1) +Operational + + +4853 +033077 +Field-of-view quality flags +3 +Invalid SDR geolocation information +Operational + + +4854 +033077 +Field-of-view quality flags +4 +Degraded radiometric calibration +Operational + + +4855 +033077 +Field-of-view quality flags +5 +Invalid radiometric calibration +(see Note 2) +Operational + + +4856 +033077 +Field-of-view quality flags +6 +Degraded spectral calibration +Operational + + +4857 +033077 +Field-of-view quality flags +7 +Invalid spectral calibration +(see Note 3) +Operational + + +4858 +033077 +Field-of-view quality flags +8 +Fringe count error detected and corrected +(see Note 4) +Operational + + +4859 +033077 +Field-of-view quality flags +9 +Day/night indicator +(see Note 5) +Operational + + +4860 +033077 +Field-of-view quality flags +10 +Invalid RDR data +(see Note 6) +Operational + + +4861 +033077 +Field-of-view quality flags +11 +Significant fringe count error detected +(see Note 7) +Operational + + +4862 +033077 +Field-of-view quality flags +12 +Bit trim failed +Operational + + +4863 +033077 +Field-of-view quality flags +13-18 +Reserved +Operational + + +4864 +033077 +Field-of-view quality flags +All 19 +Missing value +Operational + + +4865 +033078 +Geolocation quality +0 +Nominal - altitude and ephemeris data available +Operational + + +4866 +033078 +Geolocation quality +1 +Missing at most a small gap of altitude and ephemeris data +Operational + + +4867 +033078 +Geolocation quality +2 +Missing more than a small gap of altitude and ephemeris data, but no more than a granule boundary +Operational + + +4868 +033078 +Geolocation quality +3 +Missing more than a granule boundary of altitude and ephemeris data +Operational + + +4869 +033078 +Geolocation quality +4-14 +Reserved +Operational + + +4870 +033078 +Geolocation quality +15 +Missing value +Operational + + +4871 +033079 +Granule level quality flags +1-5 +Reserved +Operational + + +4872 +033079 +Granule level quality flags +6 +The No. 1-No. 7 health checks failed +Operational + + +4873 +033079 +Granule level quality flags +7 +The No. 8-No. 15 health checks failed +Operational + + +4874 +033079 +Granule level quality flags +8 +The No. 16-No. 23 health checks failed +Operational + + +4875 +033079 +Granule level quality flags +9 +The No. 24-No. 31 health checks failed +Operational + + +4876 +033079 +Granule level quality flags +10 +The No. 32-No. 39 health checks failed +Operational + + +4877 +033079 +Granule level quality flags +11 +The No. 40-No. 47 health checks failed +Operational + + +4878 +033079 +Granule level quality flags +12 +The No. 48-No. 55 health checks failed +Operational + + +4879 +033079 +Granule level quality flags +13 +The No. 56-No. 63 health checks failed +Operational + + +4880 +033079 +Granule level quality flags +14 +The No. 64-No. 70 health checks failed +Operational + + +4881 +033079 +Granule level quality flags +15 +Quadratic correction applied to the radiometric transfer function for non-linearity correction +Operational + + +4882 +033079 +Granule level quality flags +All 16 +Missing value +Operational + + +4883 +033080 +Scan level quality flags +1-6 +Reserved +Operational + + +4884 +033080 +Scan level quality flags +7 +Divide-by-zero condition or computation loop failed to converge in the K/Ka and V (KAV) band PRT +Operational + + +4885 +033080 +Scan level quality flags +8 +Divide-by-zero condition or computation loop failed to converge in the WG band PRT +Operational + + +4886 +033080 +Scan level quality flags +9 +Divide-by-zero condition or computation loop failed to converge in the K/Ka, V, W, G band receiver shelf PRT K temperature computation +Operational + + +4887 +033080 +Scan level quality flags +10 +Out of range condition for the K/Ka and V band PRT +Operational + + +4888 +033080 +Scan level quality flags +11 +Out of range condition for the WG band PRT +Operational + + +4889 +033080 +Scan level quality flags +12 +KAV PRT temperature inconsistency +Operational + + +4890 +033080 +Scan level quality flags +13 +WG PRT temperature inconsistency +Operational + + +4891 +033080 +Scan level quality flags +14 +Time sequence error +Operational + + +4892 +033080 +Scan level quality flags +15 +Data gap - missing scan(s) preceding the current scan +Operational + + +4893 +033080 +Scan level quality flags +16 +KAV PRT sufficiency - insufficient KAV PRT data are available +Operational + + +4894 +033080 +Scan level quality flags +17 +WG PRT sufficiency - insufficient WG PRT data are available +Operational + + +4895 +033080 +Scan level quality flags +18 +Space view antenna position error +Operational + + +4896 +033080 +Scan level quality flags +19 +Blackbody antenna position error +Operational + + +4897 +033080 +Scan level quality flags +All 20 +Missing value +Operational + + +4898 +033081 +Channel data quality flags +1-2 +Reserved +Operational + + +4899 +033081 +Channel data quality flags +3 +Moon in space view +Operational + + +4900 +033081 +Channel data quality flags +4 +Gain error - the lowest blackbody count is smaller than or equal to the highest space view count in a scan +Operational + + +4901 +033081 +Channel data quality flags +5 +Calibration with fewer than preferred samples +Operational + + +4902 +033081 +Channel data quality flags +6 +Space view data sufficiency check - insufficient space view samples are available +Operational + + +4903 +033081 +Channel data quality flags +7 +Blackbody view data sufficiency check - insufficient blackbody view samples are available +Operational + + +4904 +033081 +Channel data quality flags +8 +Out of range condition for the space view +Operational + + +4905 +033081 +Channel data quality flags +9 +Out of range condition for the blackbody view +Operational + + +4906 +033081 +Channel data quality flags +10 +Space view inconsistency +Operational + + +4907 +033081 +Channel data quality flags +11 +Blackbody view inconsistency +Operational + + +4908 +033081 +Channel data quality flags +All 12 +Missing value +Operational + + +4909 +033082 +Geolocation quality flags +1-5 +Reserved +Operational + + +4910 +033082 +Geolocation quality flags +6 +Within South Atlantic anomaly +Operational + + +4911 +033082 +Geolocation quality flags +7 +Invalid input data (indicates that any of the spacecraft ephemeris or attitude data are invalid) +Operational + + +4912 +033082 +Geolocation quality flags +8 +Bad pointing (indicates that the sensor LOS does not intersect the geoid, is near the limb, has invalid sensor angles or other similar condition) +Operational + + +4913 +033082 +Geolocation quality flags +9 +Bad terrain (indicates that the algorithm could not obtain a valid terrain value) +Operational + + +4914 +033082 +Geolocation quality flags +10 +Invalid solar angles +Operational + + +4915 +033082 +Geolocation quality flags +11 +Missing at most a small gap of altitude and ephemeris data +Operational + + +4916 +033082 +Geolocation quality flags +12 +Missing more than a small gap of altitude and ephemeris data, but no more than a granule boundary +Operational + + +4917 +033082 +Geolocation quality flags +13 +Missing more than a granule boundary of altitude and ephemeris data +Operational + + +4918 +033082 +Geolocation quality flags +14 +The number of encoder pulse values per delta time is not as expected +Operational + + +4919 +033082 +Geolocation quality flags +15 +Solar eclipse during Earth view scan +Operational + + +4920 +033082 +Geolocation quality flags +All 16 +Missing value +Operational + + +4921 +033083 +Radiance data quality flags +1-5 +Reserved +Operational + + +4922 +033083 +Radiance data quality flags +6 +Pixel is affected by radio-frequency interference +Operational + + +4923 +033083 +Radiance data quality flags +7 +Poor calibration quality due to bad space view offsets, OBC view offsets, etc. or use of a previous calibration view +Operational + + +4924 +033083 +Radiance data quality flags +8 +Saturated pixel +Operational + + +4925 +033083 +Radiance data quality flags +9 +Missing data -data required for calibration processing are not available for processing +Operational + + +4926 +033083 +Radiance data quality flags +10 +Calibrated pixel radiance out of range +Operational + + +4927 +033083 +Radiance data quality flags +11 +Calibrated pixel reflectance or EBBT out of range +Operational + + +4928 +033083 +Radiance data quality flags +12 +The moon has corrupted the space view +Operational + + +4929 +033083 +Radiance data quality flags +13 +Scan data is not present (no valid data) +Operational + + +4930 +033083 +Radiance data quality flags +14 +Quality for this scan-line is reduced. The value is determined by the combined number of steps required to find a replacement for thermistor or calibration source data +Operational + + +4931 +033083 +Radiance data quality flags +15 +Bad detector +Operational + + +4932 +033083 +Radiance data quality flags +All 16 +Missing value +Operational + + +4933 +033084 +Pixel level quality flags +1-5 +Reserved +Operational + + +4934 +033084 +Pixel level quality flags +6 +Bulk SST outside of validation range +Operational + + +4935 +033084 +Pixel level quality flags +7 +Skin SST outside of validation range +Operational + + +4936 +033084 +Pixel level quality flags +8 +Sensor zenith angle > 40 degrees (pixel is not within 40 degrees of nadir and therefore is not of high quality) +Operational + + +4937 +033084 +Pixel level quality flags +9 +Degradation - horizontal cell size (HCS) > 1.3 km (HCS > 1.3 km, swath width > 1 700 km, sensor zenith angle > 50.3 degrees) +Operational + + +4938 +033084 +Pixel level quality flags +10 +Exclusion: no ocean in pixel +Operational + + +4939 +033084 +Pixel level quality flags +11 +Degradation: aerosol optical thickness (AOT) > 0.6 (AOT in horizontal cell > 0.6 on the slant path (AOT @550 nm)) +Operational + + +4940 +033084 +Pixel level quality flags +12 +Exclusion: AOT > 1.0 (AOT in horizontal cell > 1.0 on the slant path (AOT @550 nm)) +Operational + + +4941 +033084 +Pixel level quality flags +13 +Sun glint present in pixel +Operational + + +4942 +033084 +Pixel level quality flags +14 +Ice concentration threshold exceeded (SST not retrieved due to ice concentration exceeding threshold in system spec) +Operational + + +4943 +033084 +Pixel level quality flags +15 +Thin cirrus detected in pixel +Operational + + +4944 +033084 +Pixel level quality flags +All 16 +Missing value +Operational + + +4945 +033085 +Aerosol optical thickness quality flags +1-3 +Reserved +Operational + + +4946 +033085 +Aerosol optical thickness quality flags +4 +Angstrom exponent is outside of the system specification range +Operational + + +4947 +033085 +Aerosol optical thickness quality flags +5 +Excluded, Angstrom exponent for AOT at 550 nm < 0.15 +Operational + + +4948 +033085 +Aerosol optical thickness quality flags +6 +Bright surface in cell (if over land), or shallow or turbid water in cell (if over ocean) +Operational + + +4949 +033085 +Aerosol optical thickness quality flags +7 +Low sun, excluded, Solar Zenith Angle > 80 degrees +Operational + + +4950 +033085 +Aerosol optical thickness quality flags +8 +Low sun, degraded, 65 degrees < Solar Zenith Angle =< 80 degrees +Operational + + +4951 +033085 +Aerosol optical thickness quality flags +9 +Fire detected in cell +Operational + + +4952 +033085 +Aerosol optical thickness quality flags +10 +Snow/Ice in cell +Operational + + +4953 +033085 +Aerosol optical thickness quality flags +11 +Cloud shadow in cell +Operational + + +4954 +033085 +Aerosol optical thickness quality flags +12 +Sun glint in cell +Operational + + +4955 +033085 +Aerosol optical thickness quality flags +13 +Bad SDR data present in horizontal cell (quality of AOT/APSP degraded or AOT/APSP not retrieved due to bad SDR data in horizontal cell) +Operational + + +4956 +033085 +Aerosol optical thickness quality flags +14 +Cirrus contamination in cell +Operational + + +4957 +033085 +Aerosol optical thickness quality flags +15 +Cloud adjacent to cell +Operational + + +4958 +033085 +Aerosol optical thickness quality flags +16 +Cloud contamination in cell +Operational + + +4959 +033085 +Aerosol optical thickness quality flags +17 +AOT is outside of the system specification range +Operational + + +4960 +033085 +Aerosol optical thickness quality flags +All 18 +Missing value +Operational + + +4961 +033086 +Quality of pixel level retrieval +0 +Not retrieved +Operational + + +4962 +033086 +Quality of pixel level retrieval +1 +Excluded +Operational + + +4963 +033086 +Quality of pixel level retrieval +2 +Degraded +Operational + + +4964 +033086 +Quality of pixel level retrieval +3 +High quality +Operational + + +4965 +033086 +Quality of pixel level retrieval +4-6 +Reserved +Operational + + +4966 +033086 +Quality of pixel level retrieval +7 +Missing value +Operational + + +4967 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +0 +Less than or equal to 10% +Operational + + +4968 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +1 +Greater than 10% but less than or equal to 20% +Operational + + +4969 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +2 +Greater than 20% but less than or equal to 30% +Operational + + +4970 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +3 +Greater than 30% but less than or equal to 40% +Operational + + +4971 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +4 +Greater than 40% but less than or equal to 50% +Operational + + +4972 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +5 +Greater than 50% but less than or equal to 60% +Operational + + +4973 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +6 +Greater than 60% but less than or equal to 70% +Operational + + +4974 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +7 +Greater than 70% but less than or equal to 80% +Operational + + +4975 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +8 +Greater than 80% +Operational + + +4976 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +9-14 +Reserved +Operational + + +4977 +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +15 +Missing value +Operational + + +4978 +033088 +Ozone total column quality flag +1-5 +Reserved +Operational + + +4979 +033088 +Ozone total column quality flag +6 +Surface reflectivity out of range +Operational + + +4980 +033088 +Ozone total column quality flag +7 +Residual too large +Operational + + +4981 +033088 +Ozone total column quality flag +8 +Aerosol index limit exceeded +Operational + + +4982 +033088 +Ozone total column quality flag +9 +Solar eclipse present (all or part of the IFOV is affected by a solar eclipse, umbra or penumbra viewing) +Operational + + +4983 +033088 +Ozone total column quality flag +10 +Sun glint present within IFOV +Operational + + +4984 +033088 +Ozone total column quality flag +11 +Snow or ice surface is within the IFOV +Operational + + +4985 +033088 +Ozone total column quality flag +12 +Solar zenith angle in excluded (night) condition (solar zenith angle >= 88 degrees) +Operational + + +4986 +033088 +Ozone total column quality flag +13 +Solar zenith angle in degraded condition (80 degrees =< solar zenith angle < 88 degrees) +Operational + + +4987 +033088 +Ozone total column quality flag +14 +SO2 index > 6 DU (degraded condition) +Operational + + +4988 +033088 +Ozone total column quality flag +15 +Residues are not consistent (indicates whether the residues from the 22 wavelengths are consistent) +Operational + + +4989 +033088 +Ozone total column quality flag +16 +O3 triplet selection is not consistent within retrieval (ozone triplet consistency) +Operational + + +4990 +033088 +Ozone total column quality flag +17 +Input data quality is not good +Operational + + +4991 +033088 +Ozone total column quality flag +All 18 +Missing value +Operational + + +4992 +033092 +Band specific ocean quality flag +1 +Altimeter operating +Operational + + +4993 +033092 +Band specific ocean quality flag +2 +Microwave radiometer (MWR) operating +Operational + + +4994 +033092 +Band specific ocean quality flag +3-8 +Reserved +Operational + + +4995 +033092 +Band specific ocean quality flag +All 9 +Missing value +Operational + + +4996 +033093 +Extended quality flags for ground-based GNSS data +1 +Path delay quality is considered poor +Operational + + +4997 +033093 +Extended quality flags for ground-based GNSS data +2 +GALILEO satellites used +Operational + + +4998 +033093 +Extended quality flags for ground-based GNSS data +3 +GLONASS satellites used +Operational + + +4999 +033093 +Extended quality flags for ground-based GNSS data +4 +GPS satellites used +Operational + + +5000 +033093 +Extended quality flags for ground-based GNSS data +5 +BeiDou satellites used +Operational + + +5001 +033093 +Extended quality flags for ground-based GNSS data +6-8 +Reserved for new GNSS +Operational + + +5002 +033093 +Extended quality flags for ground-based GNSS data +9 +Meteorological data applied +Operational + + +5003 +033093 +Extended quality flags for ground-based GNSS data +10 +Atmospheric loading correction applied +Operational + + +5004 +033093 +Extended quality flags for ground-based GNSS data +11 +Ocean tide loading applied +Operational + + +5005 +033093 +Extended quality flags for ground-based GNSS data +12 +Second order ionosphere corrections applied +Operational + + +5006 +033093 +Extended quality flags for ground-based GNSS data +13 +Third order ionosphere corrections applied +Operational + + +5007 +033093 +Extended quality flags for ground-based GNSS data +14 +PPP solution +Operational + + +5008 +033093 +Extended quality flags for ground-based GNSS data +15 +Gradients applied to path delay +Operational + + +5009 +033093 +Extended quality flags for ground-based GNSS data +16 +Multipath corrections applied to path delay +Operational + + +5010 +033093 +Extended quality flags for ground-based GNSS data +17 +Residual applied to path delay +Operational + + +5011 +033093 +Extended quality flags for ground-based GNSS data +18 +Climate quality data processing +Operational + + +5012 +033093 +Extended quality flags for ground-based GNSS data +19 +Re-processing +Operational + + +5013 +033093 +Extended quality flags for ground-based GNSS data +20 +Post-processing +Operational + + +5014 +033093 +Extended quality flags for ground-based GNSS data +21 +Near-real time data processing +Operational + + +5015 +033093 +Extended quality flags for ground-based GNSS data +22 +Real time data processing +Operational + + +5016 +033093 +Extended quality flags for ground-based GNSS data +23-30 +Reserved +Operational + + +5017 +033093 +Extended quality flags for ground-based GNSS data +All 31 +Missing value +Operational + + +5018 +035000 +FM and regional code number +000-099 +International FM Codes +Operational + + +5019 +035000 +FM and regional code number +100-199 +RA I Codes +Operational + + +5020 +035000 +FM and regional code number +200-299 +RA II Codes +Operational + + +5021 +035000 +FM and regional code number +300-399 +RA III Codes +Operational + + +5022 +035000 +FM and regional code number +400-499 +RA IV Codes +Operational + + +5023 +035000 +FM and regional code number +500-599 +RA V Codes +Operational + + +5024 +035000 +FM and regional code number +600-699 +RA VI Codes +Operational + + +5025 +035000 +FM and regional code number +700-799 +Antarctic Codes +Operational + + +5026 +035000 +FM and regional code number +800-999 +Reserved +Operational + + +5027 +035000 +FM and regional code number +1000-1022 +Not used +Operational + + +5028 +035000 +FM and regional code number +1023 +Missing value +Operational + + +5029 +035001 +Time frame for monitoring +0 +Real time +Operational + + +5030 +035001 +Time frame for monitoring +1 +Near-real time +Operational + + +5031 +035001 +Time frame for monitoring +2 +Non-real time +Operational + + +5032 +035001 +Time frame for monitoring +3-6 +Reserved +Operational + + +5033 +035001 +Time frame for monitoring +7 +Missing value +Operational + + +5034 +035030 +Discrepancies in the availability of expected data +0 +No discrepancies +Operational + + +5035 +035030 +Discrepancies in the availability of expected data +1 +Non-compliance with standard and recommended practices and procedures including those of monitoring +Operational + + +5036 +035030 +Discrepancies in the availability of expected data +2 +Catalogues of meteorological bulletins not updated in a timely manner +Operational + + +5037 +035030 +Discrepancies in the availability of expected data +3 +Incorrect routing directories +Operational + + +5038 +035030 +Discrepancies in the availability of expected data +4 +Lack of flexibility in the routing arrangements +Operational + + +5039 +035030 +Discrepancies in the availability of expected data +5 +Deficiencies in the operation of GTS centres and circuits +Operational + + +5040 +035030 +Discrepancies in the availability of expected data +6 +Loss of data or delays in relaying data on the GTS +Operational + + +5041 +035030 +Discrepancies in the availability of expected data +7 +Routing of data different from the routing provided in the plan +Operational + + +5042 +035030 +Discrepancies in the availability of expected data +8 +Various malpractices +Operational + + +5043 +035030 +Discrepancies in the availability of expected data +9-14 +Reserved +Operational + + +5044 +035030 +Discrepancies in the availability of expected data +15 +Missing value +Operational + + +5045 +035031 +Qualifier on monitoring results +1 +Sufficient and all of acceptable quality +Operational + + +5046 +035031 +Qualifier on monitoring results +2 +Sufficient but partly of acceptable quality +Operational + + +5047 +035031 +Qualifier on monitoring results +3 +Insufficient but all of acceptable quality +Operational + + +5048 +035031 +Qualifier on monitoring results +4 +Insufficient and of unacceptable quality +Operational + + +5049 +035031 +Qualifier on monitoring results +5 +Some messages not complete +Operational + + +5050 +035031 +Qualifier on monitoring results +6 +Suspect or wrongly coded groups could not be interpreted confidently +Operational + + +5051 +035031 +Qualifier on monitoring results +7 +Gross coding errors +Operational + + +5052 +035031 +Qualifier on monitoring results +8 +Transmission sequential order not observed +Operational + + +5053 +035031 +Qualifier on monitoring results +9 +Report completely garbled and thus discarded +Operational + + +5054 +035031 +Qualifier on monitoring results +10 +Deficiencies identified and rectified +Operational + + +5055 +035031 +Qualifier on monitoring results +11 +Deficiencies identified but not rectified +Operational + + +5056 +035031 +Qualifier on monitoring results +12 +Deficiencies not identified +Operational + + +5057 +035031 +Qualifier on monitoring results +13 +Measuring errors +Operational + + +5058 +035031 +Qualifier on monitoring results +14 +Mutual inconsistency +Operational + + +5059 +035031 +Qualifier on monitoring results +15 +Temporal inconsistency +Operational + + +5060 +035031 +Qualifier on monitoring results +16 +Forecast error +Operational + + +5061 +035031 +Qualifier on monitoring results +17 +Bias +Operational + + +5062 +035031 +Qualifier on monitoring results +18 +Improve system of quality control +Operational + + +5063 +035031 +Qualifier on monitoring results +19 +Expand training programmes +Operational + + +5064 +035031 +Qualifier on monitoring results +20-98 +Reserved +Operational + + +5065 +035031 +Qualifier on monitoring results +99-126 +Not used +Operational + + +5066 +035031 +Qualifier on monitoring results +127 +Missing value +Operational + + +5067 +035032 +Cause of missing data +1 +Data groups missing due to radio fading +Operational + + +5068 +035032 +Cause of missing data +2 +Data groups missing due to outage of centre +Operational + + +5069 +035032 +Cause of missing data +3 +Data groups missing due to outage of circuit +Operational + + +5070 +035032 +Cause of missing data +4 +Non-implementation or maintenance of required RBSN density +Operational + + +5071 +035032 +Cause of missing data +5 +Shortage of qualified staff to man stations +Operational + + +5072 +035032 +Cause of missing data +6 +Lack of consumables +Operational + + +5073 +035032 +Cause of missing data +7 +Instrument failure +Operational + + +5074 +035032 +Cause of missing data +8 +Non-adherence to telecommunication procedures +Operational + + +5075 +035032 +Cause of missing data +9 +Some observing programmes ceased +Operational + + +5076 +035032 +Cause of missing data +10-14 +Not used +Operational + + +5077 +035032 +Cause of missing data +15 +Missing value +Operational + + +5078 +035033 +Observation and collection deficiencies +1 +No deficiency +Operational + + +5079 +035033 +Observation and collection deficiencies +2 +Observations not made regularly +Operational + + +5080 +035033 +Observation and collection deficiencies +3 +Observations not made at right time +Operational + + +5081 +035033 +Observation and collection deficiencies +4 +Observations made but not disseminated +Operational + + +5082 +035033 +Observation and collection deficiencies +5 +Observations made and sent to incorrect users +Operational + + +5083 +035033 +Observation and collection deficiencies +6 +Collection not received +Operational + + +5084 +035033 +Observation and collection deficiencies +7 +Collection transmitted late +Operational + + +5085 +035033 +Observation and collection deficiencies +8 +Collection not transmitted +Operational + + +5086 +035033 +Observation and collection deficiencies +9 +Difficulties in HF propagation and selection of suitable frequency +Operational + + +5087 +035033 +Observation and collection deficiencies +10 +Difficulties in maintenance of communication equipment at remote stations +Operational + + +5088 +035033 +Observation and collection deficiencies +11 +No alternative arrangement for routing meteorological observation +Operational + + +5089 +035033 +Observation and collection deficiencies +12-99 +Reserved +Operational + + +5090 +035033 +Observation and collection deficiencies +100-122 +Not used +Operational + + +5091 +035033 +Observation and collection deficiencies +123 +Missing value +Operational + + +5092 +035034 +Statistical trends for availability of data (during the survey period(s)) +1 +Slight improvement +Operational + + +5093 +035034 +Statistical trends for availability of data (during the survey period(s)) +2 +Significant improvement +Operational + + +5094 +035034 +Statistical trends for availability of data (during the survey period(s)) +3 +Most significant improvement +Operational + + +5095 +035034 +Statistical trends for availability of data (during the survey period(s)) +4 +Steady +Operational + + +5096 +035034 +Statistical trends for availability of data (during the survey period(s)) +5 +Decreasing +Operational + + +5097 +035034 +Statistical trends for availability of data (during the survey period(s)) +6 +Efforts required to improve night-time observations +Operational + + +5098 +035034 +Statistical trends for availability of data (during the survey period(s)) +7 +Missing value +Operational + + +5099 +035035 +Reason for termination +0 +Reserved +Operational + + +5100 +035035 +Reason for termination +1 +Balloon burst +Operational + + +5101 +035035 +Reason for termination +2 +Balloon forced down by icing +Operational + + +5102 +035035 +Reason for termination +3 +Leaking or floating balloon +Operational + + +5103 +035035 +Reason for termination +4 +Weak or fading signal +Operational + + +5104 +035035 +Reason for termination +5 +Battery failure +Operational + + +5105 +035035 +Reason for termination +6 +Ground equipment failure +Operational + + +5106 +035035 +Reason for termination +7 +Signal interference +Operational + + +5107 +035035 +Reason for termination +8 +Radiosonde failure +Operational + + +5108 +035035 +Reason for termination +9 +Excessive missing data frames +Operational + + +5109 +035035 +Reason for termination +10 +Reserved +Operational + + +5110 +035035 +Reason for termination +11 +Excessive missing temperature +Operational + + +5111 +035035 +Reason for termination +12 +Excessive missing pressure +Operational + + +5112 +035035 +Reason for termination +13 +User terminated +Operational + + +5113 +035035 +Reason for termination +14 +Sudden loss of signal +Operational + + +5114 +035035 +Reason for termination +15 +Tracking lost +Operational + + +5115 +035035 +Reason for termination +16 +Increasing pressure +Operational + + +5116 +035035 +Reason for termination +17 +Invalid and/or missed data time limits exceeded +Operational + + +5117 +035035 +Reason for termination +18-29 +Reserved +Operational + + +5118 +035035 +Reason for termination +30 +Other +Operational + + +5119 +035035 +Reason for termination +31 +Missing value +Operational + + +5120 +040005 +Soil moisture correction flag +1 +Soil moisture between -20% and 0% +Operational + + +5121 +040005 +Soil moisture correction flag +2 +Soil moisture between 100% and 120% +Operational + + +5122 +040005 +Soil moisture correction flag +3 +Correction of wet backscatter reference +Operational + + +5123 +040005 +Soil moisture correction flag +4 +Correction of dry backscatter reference +Operational + + +5124 +040005 +Soil moisture correction flag +5 +Correction of volume scattering in sand +Operational + + +5125 +040005 +Soil moisture correction flag +6-7 +Reserved +Operational + + +5126 +040005 +Soil moisture correction flag +All 8 +Missing value +Operational + + +5127 +040006 +Soil moisture processing flag +1 +Not soil +Operational + + +5128 +040006 +Soil moisture processing flag +2 +Sensitivity to soil moisture below limit +Operational + + +5129 +040006 +Soil moisture processing flag +3 +Azimuthal noise above limit +Operational + + +5130 +040006 +Soil moisture processing flag +4 +Backscatter Fore-Aft beam out of range +Operational + + +5131 +040006 +Soil moisture processing flag +5 +Slope Mid-Fore beam out of range +Operational + + +5132 +040006 +Soil moisture processing flag +6 +Slope Mid-Aft beam out of range +Operational + + +5133 +040006 +Soil moisture processing flag +7 +Soil moisture below -20% +Operational + + +5134 +040006 +Soil moisture processing flag +8 +Soil moisture above 120% +Operational + + +5135 +040006 +Soil moisture processing flag +9-15 +Reserved +Operational + + +5136 +040006 +Soil moisture processing flag +All 16 +Missing value +Operational + + +5137 +040011 +Interpolation flag +1 +Mean sea-surface (MSS) interpolation flag +Operational + + +5138 +040011 +Interpolation flag +2 +Ocean tide solution 1 interpolation flag (0 = 4 points over ocean, 1 = less than 4 points) +Operational + + +5139 +040011 +Interpolation flag +3 +Ocean tide solution 2 interpolation flag (0 = 4 points over ocean, 1 = less than 4 points) +Operational + + +5140 +040011 +Interpolation flag +4 +Meteorological data interpolation flag (0 = 4 points over ocean, 1 = less than 4 points) +Operational + + +5141 +040011 +Interpolation flag +5-7 +Reserved +Operational + + +5142 +040011 +Interpolation flag +All 8 +Missing value +Operational + + +5143 +040012 +Radiometer data quality flag +1 +18.7 GHz brightness temperature +Operational + + +5144 +040012 +Radiometer data quality flag +2 +23.8 GHz brightness temperature +Operational + + +5145 +040012 +Radiometer data quality flag +3 +34 GHz brightness temperature +Operational + + +5146 +040012 +Radiometer data quality flag +4-7 +Reserved +Operational + + +5147 +040012 +Radiometer data quality flag +All 8 +Missing value +Operational + + +5148 +040013 +Radiometer brightness temperature interpretation flag +0 +Interpolation with no gap between JMR data +Operational + + +5149 +040013 +Radiometer brightness temperature interpretation flag +1 +Interpolation with gaps between JMR data +Operational + + +5150 +040013 +Radiometer brightness temperature interpretation flag +2 +Extrapolation of JMR data +Operational + + +5151 +040013 +Radiometer brightness temperature interpretation flag +3 +Failure of extrapolation and interpolation +Operational + + +5152 +040013 +Radiometer brightness temperature interpretation flag +4-6 +Reserved +Operational + + +5153 +040013 +Radiometer brightness temperature interpretation flag +7 +Missing value +Operational + + +5154 +040020 +GqisFlagQualDetailed - quality flag for the system +1 +NZPD and complex calibration error +Operational + + +5155 +040020 +GqisFlagQualDetailed - quality flag for the system +2 +Band 3 affected by spike +Operational + + +5156 +040020 +GqisFlagQualDetailed - quality flag for the system +3 +Band 3 affected by saturation +Operational + + +5157 +040020 +GqisFlagQualDetailed - quality flag for the system +4 +Band 2 affected by spike +Operational + + +5158 +040020 +GqisFlagQualDetailed - quality flag for the system +5 +Band 1 affected by spike +Operational + + +5159 +040020 +GqisFlagQualDetailed - quality flag for the system +6 +Overflow/under flow +Operational + + +5160 +040020 +GqisFlagQualDetailed - quality flag for the system +7 +On-board processing error +Operational + + +5161 +040020 +GqisFlagQualDetailed - quality flag for the system +8 +Spectral calibration error +Operational + + +5162 +040020 +GqisFlagQualDetailed - quality flag for the system +9 +Radiometric calibration error +Operational + + +5163 +040020 +GqisFlagQualDetailed - quality flag for the system +10 +Missing AVHRR data +Operational + + +5164 +040020 +GqisFlagQualDetailed - quality flag for the system +11 +Missing IIS data +Operational + + +5165 +040020 +GqisFlagQualDetailed - quality flag for the system +12 +Missing sounder data +Operational + + +5166 +040020 +GqisFlagQualDetailed - quality flag for the system +13 +GqisFlagQual summary flag for all bands +Operational + + +5167 +040020 +GqisFlagQualDetailed - quality flag for the system +14 +On-ground processing error +Operational + + +5168 +040020 +GqisFlagQualDetailed - quality flag for the system +15 +Inter-calibration error IASI/AVHRR +Operational + + +5169 +040020 +GqisFlagQualDetailed - quality flag for the system +16 +Spare +Operational + + +5170 +040020 +GqisFlagQualDetailed - quality flag for the system +All 17 +Missing value +Operational + + +5171 +040023 +Auxiliary altimeter state flags +1 +Band sequence (0 = 3Ku_1C_3Ku, 1 = 2Ku_1C_2Ku) +Operational + + +5172 +040023 +Auxiliary altimeter state flags +2 +C band frequency (0 = 320 MHz, 1 = 100 MHz) +Operational + + +5173 +040023 +Auxiliary altimeter state flags +3 +C band status (0 = On, 1 = Off) +Operational + + +5174 +040023 +Auxiliary altimeter state flags +4 +Ku band status (0 = On, 1 = Off) +Operational + + +5175 +040023 +Auxiliary altimeter state flags +All 5 +Missing value +Operational + + +5176 +040024 +Meteorological map availability +0 +2 maps available (6 hours apart) +Operational + + +5177 +040024 +Meteorological map availability +1 +2 maps available (> 6 hours apart) +Operational + + +5178 +040024 +Meteorological map availability +2 +1 map available; data extrapolated +Operational + + +5179 +040024 +Meteorological map availability +3 +No maps used +Operational + + +5180 +040024 +Meteorological map availability +4-6 +Reserved +Operational + + +5181 +040024 +Meteorological map availability +7 +Missing value +Operational + + +5182 +040025 +Interpolation flag for mean diurnal tide +0 +Good +Operational + + +5183 +040025 +Interpolation flag for mean diurnal tide +1 +Bad +Operational + + +5184 +040025 +Interpolation flag for mean diurnal tide +2 +Reserved +Operational + + +5185 +040025 +Interpolation flag for mean diurnal tide +3 +Missing value +Operational + + +5186 +040028 +GMI quality flag +0 +Good data +Operational + + +5187 +040028 +GMI quality flag +1 +Possible sun glint +Operational + + +5188 +040028 +GMI quality flag +2 +Possible radio-frequency interference +Operational + + +5189 +040028 +GMI quality flag +3 +Degraded geolocation data +Operational + + +5190 +040028 +GMI quality flag +4 +Data corrected for warm load intrusion +Operational + + +5191 +040028 +GMI quality flag +5 +Scan blanking on +Operational + + +5192 +040028 +GMI quality flag +6 +Data is missing from file or unreadable +Operational + + +5193 +040028 +GMI quality flag +7 +Unphysical brightness temperature +Operational + + +5194 +040028 +GMI quality flag +8 +Error in geolocation data +Operational + + +5195 +040028 +GMI quality flag +9 +Data missing in one channel +Operational + + +5196 +040028 +GMI quality flag +10 +Data missing in multiple channels +Operational + + +5197 +040028 +GMI quality flag +11 +Lat/lon values are out of range +Operational + + +5198 +040028 +GMI quality flag +12 +Non-normal status modes +Operational + + +5199 +040028 +GMI quality flag +13 +Distance to corresponding low frequency pixel > 7 km +Operational + + +5200 +040028 +GMI quality flag +14 +Reserved +Operational + + +5201 +040028 +GMI quality flag +15 +Missing value (no quality information available) +Operational + + +5202 +040036 +Lidar L2b classification type +0 +Clear +Operational + + +5203 +040036 +Lidar L2b classification type +1 +Cloud +Operational + + +5204 +040036 +Lidar L2b classification type +2-14 +Reserved +Operational + + +5205 +040036 +Lidar L2b classification type +15 +Missing value +Operational + + +5206 +040043 +Satellite manoeuvre indicator +0 +The platform is not undergoing a manoeuvre +Operational + + +5207 +040043 +Satellite manoeuvre indicator +1 +The platform is undergoing a manoeuvre, nominal processing +Operational + + +5208 +040043 +Satellite manoeuvre indicator +2 +The platform is undergoing a manoeuvre, no processing +Operational + + +5209 +040043 +Satellite manoeuvre indicator +3-6 +Reserved +Operational + + +5210 +040043 +Satellite manoeuvre indicator +7 +Missing value +Operational + + +5211 +040045 +Cloud formation and height assignment +1 +Cloud products retrieved with the chi-squared method +Operational + + +5212 +040045 +Cloud formation and height assignment +2 +Cloud products retrieved with the CO2-slicing +Operational + + +5213 +040045 +Cloud formation and height assignment +3 +Height assignment performed with statistical first guess retrieval +Operational + + +5214 +040045 +Cloud formation and height assignment +4 +Height assignment performed with NWP forecasts +Operational + + +5215 +040045 +Cloud formation and height assignment +All 5 +Missing value +Operational + + +5216 +040046 +Cloudiness summary +0 +The IASI IFOV is clear +Operational + + +5217 +040046 +Cloudiness summary +1 +Small cloud contamination possible +Operational + + +5218 +040046 +Cloudiness summary +2 +The IASI IFOV is partially covered by clouds +Operational + + +5219 +040046 +Cloudiness summary +3 +High or full cloud coverage +Operational + + +5220 +040046 +Cloudiness summary +4-6 +Reserved +Operational + + +5221 +040046 +Cloudiness summary +7 +Missing value +Operational + + +5222 +040047 +Validation flag for IASI or IASI-NG level 1 product +0 +The measurements and side information are available and of good quality for L2 processing +Operational + + +5223 +040047 +Validation flag for IASI or IASI-NG level 1 product +1 +The L1c products are of degraded quality according to L1c flags, no L2 processing +Operational + + +5224 +040047 +Validation flag for IASI or IASI-NG level 1 product +2 +Quality control indicates that the L1c data are of degraded quality (not indicated by the IASI L1c flags), no L2 processing +Operational + + +5225 +040047 +Validation flag for IASI or IASI-NG level 1 product +3-6 +Reserved +Operational + + +5226 +040047 +Validation flag for IASI or IASI-NG level 1 product +7 +Missing value +Operational + + +5227 +040048 +Validation flag of AMSU-A level 1 data flow +0 +The expected AMSU measurements are available, of good quality and collocated with IASI for processing +Operational + + +5228 +040048 +Validation flag of AMSU-A level 1 data flow +1 +AMSU-A data are available but of degraded quality (according to AMSU L1 flags or QC tests) and not used for processing +Operational + + +5229 +040048 +Validation flag of AMSU-A level 1 data flow +2 +No coincident (time and space) AMSU measurements available for processing +Operational + + +5230 +040048 +Validation flag of AMSU-A level 1 data flow +3-6 +Reserved +Operational + + +5231 +040048 +Validation flag of AMSU-A level 1 data flow +7 +Missing value +Operational + + +5232 +040049 +Cloud tests executed and results +1-3 +Reserved +Operational + + +5233 +040049 +Cloud tests executed and results +4 +IASI cloud optical thickness indicates a cloud +Operational + + +5234 +040049 +Cloud tests executed and results +5 +IASI cloud optical thickness computed +Operational + + +5235 +040049 +Cloud tests executed and results +6 +AVHRR heterogeneity test indicates a cloud +Operational + + +5236 +040049 +Cloud tests executed and results +7 +AVHRR heterogeneity test executed +Operational + + +5237 +040049 +Cloud tests executed and results +8 +IASI-AVHRR ANN cloud test indicates a cloud +Operational + + +5238 +040049 +Cloud tests executed and results +9 +IASI-AVHRR ANN cloud test executed +Operational + + +5239 +040049 +Cloud tests executed and results +10 +AVHRR integrated cloud fraction indicates a cloud +Operational + + +5240 +040049 +Cloud tests executed and results +11 +AVHRR integrated cloud fraction assessed +Operational + + +5241 +040049 +Cloud tests executed and results +12 +AMSU cloud test indicates a cloud +Operational + + +5242 +040049 +Cloud tests executed and results +13 +AMSU cloud test executed +Operational + + +5243 +040049 +Cloud tests executed and results +14 +IASI Window cloud test indicates a cloud +Operational + + +5244 +040049 +Cloud tests executed and results +15 +IASI Window cloud test executed +Operational + + +5245 +040049 +Cloud tests executed and results +All 16 +Missing value +Operational + + +5246 +040050 +Retrieval initialisation +1-4 +Reserved +Operational + + +5247 +040050 +Retrieval initialisation +5 +MHS included +Operational + + +5248 +040050 +Retrieval initialisation +6 +AMSU included +Operational + + +5249 +040050 +Retrieval initialisation +7 +IASI included +Operational + + +5250 +040050 +Retrieval initialisation +All 8 +Missing value +Operational + + +5251 +040051 +Convergence of the iterative retrieval +0 +Optimal estimation methods (OEM) not attempted +Operational + + +5252 +040051 +Convergence of the iterative retrieval +1 +OEM aborted because first guess residuals too high +Operational + + +5253 +040051 +Convergence of the iterative retrieval +2 +The minimization did not converge, sounding rejected +Operational + + +5254 +040051 +Convergence of the iterative retrieval +3 +The minimization did not converge, sounding accepted +Operational + + +5255 +040051 +Convergence of the iterative retrieval +4 +The minimization converged but sounding rejected +Operational + + +5256 +040051 +Convergence of the iterative retrieval +5 +The minimization converged, sounding accepted +Operational + + +5257 +040051 +Convergence of the iterative retrieval +6 +Reserved +Operational + + +5258 +040051 +Convergence of the iterative retrieval +7 +Missing value +Operational + + +5259 +040052 +Indication of super-adiabatic and super-saturation in final retrieval +1-3 +Reserved +Operational + + +5260 +040052 +Indication of super-adiabatic and super-saturation in final retrieval +4 +Supersaturation conditions in the OEM retrieval +Operational + + +5261 +040052 +Indication of super-adiabatic and super-saturation in final retrieval +5 +Superadiabatic conditions in the OEM retrieval +Operational + + +5262 +040052 +Indication of super-adiabatic and super-saturation in final retrieval +6 +Supersaturation conditions in the first guess +Operational + + +5263 +040052 +Indication of super-adiabatic and super-saturation in final retrieval +7 +Superadiabatic conditions in the first guess +Operational + + +5264 +040052 +Indication of super-adiabatic and super-saturation in final retrieval +All 8 +Missing value +Operational + + +5265 +040054 +Potential processing and inputs errors +1 +An error has been detected +Operational + + +5266 +040054 +Potential processing and inputs errors +2 +Message from L1 +Operational + + +5267 +040054 +Potential processing and inputs errors +3 +Message from L2 +Operational + + +5268 +040054 +Potential processing and inputs errors +4 +Message from ancillary data +Operational + + +5269 +040054 +Potential processing and inputs errors +5 +Message from fitting procedure +Operational + + +5270 +040054 +Potential processing and inputs errors +6 +File opening +Operational + + +5271 +040054 +Potential processing and inputs errors +7 +File reading +Operational + + +5272 +040054 +Potential processing and inputs errors +8 +Quality flag +Operational + + +5273 +040054 +Potential processing and inputs errors +9 +Level 2 "from linear regression"(F_Qual), report a pixel where L2 are not fully trusted +Operational + + +5274 +040054 +Potential processing and inputs errors +10 +Empty field or data +Operational + + +5275 +040054 +Potential processing and inputs errors +11 +Missing surface pressure value +Operational + + +5276 +040054 +Potential processing and inputs errors +12 +Radiance filtering +Operational + + +5277 +040054 +Potential processing and inputs errors +All 13 +Missing value +Operational + + +5278 +040055 +Diagnostics on the retrieval +1 +Radiance filtering +Operational + + +5279 +040055 +Diagnostics on the retrieval +2 +Polar regions +Operational + + +5280 +040055 +Diagnostics on the retrieval +3 +Location in the night +Operational + + +5281 +040055 +Diagnostics on the retrieval +4 +Negative altitude surface below mean sea level +Operational + + +5282 +040055 +Diagnostics on the retrieval +5 +Cloud covered scene +Operational + + +5283 +040055 +Diagnostics on the retrieval +6 +Scene above the sea +Operational + + +5284 +040055 +Diagnostics on the retrieval +7 +Scene above desert +Operational + + +5285 +040055 +Diagnostics on the retrieval +8 +Skin temperature +Operational + + +5286 +040055 +Diagnostics on the retrieval +9 +Skin temperature differential +Operational + + +5287 +040055 +Diagnostics on the retrieval +10 +Spectral line contrast too weak +Operational + + +5288 +040055 +Diagnostics on the retrieval +11 +Maximum number of iterations exceeded +Operational + + +5289 +040055 +Diagnostics on the retrieval +12 +Negative partial columns +Operational + + +5290 +040055 +Diagnostics on the retrieval +13 +Matrix ill conditioned +Operational + + +5291 +040055 +Diagnostics on the retrieval +14 +Fit diverged +Operational + + +5292 +040055 +Diagnostics on the retrieval +15 +Error in GNU scientific library (GSL) usage +Operational + + +5293 +040055 +Diagnostics on the retrieval +16 +Residuals "biased" +Operational + + +5294 +040055 +Diagnostics on the retrieval +17 +Residuals "sloped" +Operational + + +5295 +040055 +Diagnostics on the retrieval +18 +Residuals root mean square (RMS) error is large +Operational + + +5296 +040055 +Diagnostics on the retrieval +19 +Weird averaging kernels +Operational + + +5297 +040055 +Diagnostics on the retrieval +20 +Ice presence detected +Operational + + +5298 +040055 +Diagnostics on the retrieval +All 21 +Missing value +Operational + + +5299 +040056 +General retrieval quality +0 +Use not recommended +Operational + + +5300 +040056 +General retrieval quality +1 +Use with caution +Operational + + +5301 +040056 +General retrieval quality +2 +Best quality +Operational + + +5302 +040056 +General retrieval quality +3-6 +Reserved +Operational + + +5303 +040056 +General retrieval quality +7 +Missing value +Operational + + +5304 +040057 +IASI level 2 retrieval flags +1 +An error has been detected +Operational + + +5305 +040057 +IASI level 2 retrieval flags +2 +Message from L1 +Operational + + +5306 +040057 +IASI level 2 retrieval flags +3 +Message from L2 +Operational + + +5307 +040057 +IASI level 2 retrieval flags +4 +Message from ancillary data +Operational + + +5308 +040057 +IASI level 2 retrieval flags +5 +Message from fitting procedure +Operational + + +5309 +040057 +IASI level 2 retrieval flags +6 +Reserved +Operational + + +5310 +040057 +IASI level 2 retrieval flags +7 +Bad L1 or L2 flag raised +Operational + + +5311 +040057 +IASI level 2 retrieval flags +8 +Level 2 not fully trusted +Operational + + +5312 +040057 +IASI level 2 retrieval flags +9 +Missing temperature or humidity levels in the vertical profile +Operational + + +5313 +040057 +IASI level 2 retrieval flags +10 +Missing surface pressure value +Operational + + +5314 +040057 +IASI level 2 retrieval flags +11 +Radiance filtering +Operational + + +5315 +040057 +IASI level 2 retrieval flags +12 +Polar regions +Operational + + +5316 +040057 +IASI level 2 retrieval flags +13 +Location in the night +Operational + + +5317 +040057 +IASI level 2 retrieval flags +14 +Negative altitude +Operational + + +5318 +040057 +IASI level 2 retrieval flags +15 +Cloud covered scene +Operational + + +5319 +040057 +IASI level 2 retrieval flags +16 +Scene above the sea +Operational + + +5320 +040057 +IASI level 2 retrieval flags +17 +Scene above desert +Operational + + +5321 +040057 +IASI level 2 retrieval flags +18 +Missing skin temperature +Operational + + +5322 +040057 +IASI level 2 retrieval flags +19 +Retrieved skin temperature too different from model +Operational + + +5323 +040057 +IASI level 2 retrieval flags +20 +Spectral line contrast too weak +Operational + + +5324 +040057 +IASI level 2 retrieval flags +21 +Maximum number of iterations exceeds +Operational + + +5325 +040057 +IASI level 2 retrieval flags +22 +Negative partial columns +Operational + + +5326 +040057 +IASI level 2 retrieval flags +23 +Matrix ill conditioned +Operational + + +5327 +040057 +IASI level 2 retrieval flags +24 +Fit diverged +Operational + + +5328 +040057 +IASI level 2 retrieval flags +25 +Error in GSL usage +Operational + + +5329 +040057 +IASI level 2 retrieval flags +26 +Residuals biased +Operational + + +5330 +040057 +IASI level 2 retrieval flags +27 +Residuals sloped +Operational + + +5331 +040057 +IASI level 2 retrieval flags +28 +Residuals RMS error is large +Operational + + +5332 +040057 +IASI level 2 retrieval flags +29 +Weird averaging kernels +Operational + + +5333 +040057 +IASI level 2 retrieval flags +30 +Ice presence detected +Operational + + +5334 +040057 +IASI level 2 retrieval flags +All 31 +Missing value +Operational + + +5335 +040068 +General retrieval quality flag for SO2 +0 +Values calculated with IASI L2 +Operational + + +5336 +040068 +General retrieval quality flag for SO2 +1 +Pressure and temperature profiles missing in IASI L2 data; model/forecast data used instead +Operational + + +5337 +040068 +General retrieval quality flag for SO2 +2 +Best quality +Operational + + +5338 +040068 +General retrieval quality flag for SO2 +3-14 +Reserved +Operational + + +5339 +040068 +General retrieval quality flag for SO2 +15 +Missing value +Operational + + +5340 +040074 +General interferometry quality flags +1 +Incompatibility of a scan angle for electroencephalogram +Operational + + +5341 +040074 +General interferometry quality flags +2 +Calibration failure (limit of black body temperature reached, not enough sources for interferometry, etc.) +Operational + + +5342 +040074 +General interferometry quality flags +3 +Geolocation executed taking into account the orientation of the spacecraft and using the star catalogue +Operational + + +5343 +040074 +General interferometry quality flags +4 +High level of cryogenic sediment reached, requiring outgassing of the radiation cooler. Set when NESR level of the ice cover threshold crossed +Operational + + +5344 +040074 +General interferometry quality flags +5 +Interferometry package flag +Operational + + +5345 +040074 +General interferometry quality flags +6 +General accuracy flag +Operational + + +5346 +040074 +General interferometry quality flags +7 +Noise present during the interferometry +Operational + + +5347 +040074 +General interferometry quality flags +8 +Outgassing of the radiation cooler +Operational + + +5348 +040074 +General interferometry quality flags +9 +Flag preceding the first 24 hours/day mark (set to on as a rule) +Operational + + +5349 +040074 +General interferometry quality flags +10 +Telemetry package flag +Operational + + +5350 +040074 +General interferometry quality flags +11-15 +Reserved +Operational + + +5351 +040074 +General interferometry quality flags +All 16 +Missing value +Operational + + +5352 +042004 +Confidence of inversion for each partition of swell wave spectra +0 +Wave direction resolved +Operational + + +5353 +042004 +Confidence of inversion for each partition of swell wave spectra +1 +180-degree ambiguity not resolved +Operational + + +5354 +042004 +Confidence of inversion for each partition of swell wave spectra +2-14 +Reserved +Operational + + +5355 +042004 +Confidence of inversion for each partition of swell wave spectra +15 +Missing +Operational + + diff --git a/bufr/src/main/resources/resources/bufrTables/wmo/BUFRCREX_37_0_0_TableB_en.xml b/bufr/src/main/resources/resources/bufrTables/wmo/BUFRCREX_37_0_0_TableB_en.xml new file mode 100644 index 0000000000..61097461de --- /dev/null +++ b/bufr/src/main/resources/resources/bufrTables/wmo/BUFRCREX_37_0_0_TableB_en.xml @@ -0,0 +1,26091 @@ + + + +1 +00 +BUFR/CREX table entries +000001 +Table A: entry +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +2 +00 +BUFR/CREX table entries +000002 +Table A: data category description, line 1 +CCITT IA5 +0 +0 +256 +Character +0 +32 +Operational + + +3 +00 +BUFR/CREX table entries +000003 +Table A: data category description, line 2 +CCITT IA5 +0 +0 +256 +Character +0 +32 +Operational + + +4 +00 +BUFR/CREX table entries +000004 +BUFR/CREX Master table +(see Note 1) +CCITT IA5 +0 +0 +16 +Character +0 +2 +Operational + + +5 +00 +BUFR/CREX table entries +000005 +BUFR/CREX edition number +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +6 +00 +BUFR/CREX table entries +000006 +BUFR Master table version number +(see Note 2) +CCITT IA5 +0 +0 +16 +Character +0 +2 +Operational + + +7 +00 +BUFR/CREX table entries +000007 +CREX Master table version number +(see Note 3) +CCITT IA5 +0 +0 +16 +Character +0 +2 +Operational + + +8 +00 +BUFR/CREX table entries +000008 +BUFR Local table version number +(see Note 4) +CCITT IA5 +0 +0 +16 +Character +0 +2 +Operational + + +9 +00 +BUFR/CREX table entries +000010 +F descriptor to be added or defined +CCITT IA5 +0 +0 +8 +Character +0 +1 +Operational + + +10 +00 +BUFR/CREX table entries +000011 +X descriptor to be added or defined +CCITT IA5 +0 +0 +16 +Character +0 +2 +Operational + + +11 +00 +BUFR/CREX table entries +000012 +Y descriptor to be added or defined +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +12 +00 +BUFR/CREX table entries +000013 +Element name, line 1 +CCITT IA5 +0 +0 +256 +Character +0 +32 +Operational + + +13 +00 +BUFR/CREX table entries +000014 +Element name, line 2 +CCITT IA5 +0 +0 +256 +Character +0 +32 +Operational + + +14 +00 +BUFR/CREX table entries +000015 +Units name +CCITT IA5 +0 +0 +192 +Character +0 +24 +Operational + + +15 +00 +BUFR/CREX table entries +000016 +Units scale sign +CCITT IA5 +0 +0 +8 +Character +0 +1 +Operational + + +16 +00 +BUFR/CREX table entries +000017 +Units scale +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +17 +00 +BUFR/CREX table entries +000018 +Units reference sign +CCITT IA5 +0 +0 +8 +Character +0 +1 +Operational + + +18 +00 +BUFR/CREX table entries +000019 +Units reference value +CCITT IA5 +0 +0 +80 +Character +0 +10 +Operational + + +19 +00 +BUFR/CREX table entries +000020 +Element data width +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +20 +00 +BUFR/CREX table entries +000024 +Code figure +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +21 +00 +BUFR/CREX table entries +000025 +Code figure meaning +CCITT IA5 +0 +0 +496 +Character +0 +62 +Operational + + +22 +00 +BUFR/CREX table entries +000026 +Bit number +CCITT IA5 +0 +0 +48 +Character +0 +6 +Operational + + +23 +00 +BUFR/CREX table entries +000027 +Bit number meaning +CCITT IA5 +0 +0 +496 +Character +0 +62 +Operational + + +24 +00 +BUFR/CREX table entries +000030 +Descriptor defining sequence +CCITT IA5 +0 +0 +48 +Character +0 +6 +Operational + + +25 +01 +Identification +001001 +WMO block number +Numeric +0 +0 +7 +Numeric +0 +2 +Operational + + +26 +01 +Identification +001002 +WMO station number +Numeric +0 +0 +10 +Numeric +0 +3 +Operational + + +27 +01 +Identification +001003 +WMO Region number/geographical area +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +28 +01 +Identification +001004 +WMO Region sub-area +(see Note 9) +Numeric +0 +0 +3 +Numeric +0 +1 +Operational + + +29 +01 +Identification +001005 +Buoy/platform identifier +Numeric +0 +0 +17 +Numeric +0 +5 +Operational + + +30 +01 +Identification +001006 +Aircraft flight number +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +31 +01 +Identification +001007 +Satellite identifier +Code table +0 +0 +10 +Code table +0 +4 +Operational + + +32 +01 +Identification +001008 +Aircraft registration number or other identification +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +33 +01 +Identification +001009 +Type of commercial aircraft +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +34 +01 +Identification +001010 +Stationary buoy platform identifier; e.g. C-MAN buoys +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +35 +01 +Identification +001011 +Ship or mobile land station identifier +CCITT IA5 +0 +0 +72 +Character +0 +9 +Operational + + +36 +01 +Identification +001012 +Direction of motion of moving observing platform +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +37 +01 +Identification +001013 +Speed of motion of moving observing platform +m/s +0 +0 +10 +m/s +0 +3 +Operational + + +38 +01 +Identification +001014 +Platform drift speed (high precision) +m/s +2 +0 +10 +m/s +2 +4 +Operational + + +39 +01 +Identification +001015 +Station or site name +CCITT IA5 +0 +0 +160 +Character +0 +20 +Operational + + +40 +01 +Identification +001018 +Short station or site name +CCITT IA5 +0 +0 +40 +Character +0 +5 +Operational + + +41 +01 +Identification +001019 +Long station or site name +CCITT IA5 +0 +0 +256 +Character +0 +32 +Operational + + +42 +01 +Identification +001020 +WMO Region sub-area +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +43 +01 +Identification +001021 +Synoptic feature identifier +Numeric +0 +0 +14 +Numeric +0 +4 +Operational + + +44 +01 +Identification +001022 +Name of feature +(see Note 11) +CCITT IA5 +0 +0 +224 +Character +0 +28 +Operational + + +45 +01 +Identification +001023 +Observation sequence number +Numeric +0 +0 +9 +Numeric +0 +3 +Operational + + +46 +01 +Identification +001024 +Wind speed source +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +47 +01 +Identification +001025 +Storm identifier +(see Note 1) +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +48 +01 +Identification +001026 +WMO storm name +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +49 +01 +Identification +001027 +WMO long storm name +CCITT IA5 +0 +0 +80 +Character +0 +10 +Operational + + +50 +01 +Identification +001028 +Aerosol optical depth (AOD) source +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +51 +01 +Identification +001029 +SSI source +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +52 +01 +Identification +001030 +Numerical model identifier +(see Note 13) +CCITT IA5 +0 +0 +128 +Character +0 +16 +Operational + + +53 +01 +Identification +001031 +Identification of originating/generating centre +(see Note 10) +Code table +0 +0 +16 +Code table +0 +5 +Operational + + +54 +01 +Identification +001032 +Generating application +(Notes 3, 4 and 5) +Code table defined by originating/generating centre +0 +0 +8 +Code table +0 +3 +Operational + + +55 +01 +Identification +001033 +Identification of originating/generating centre +Common Code table C-1 +0 +0 +8 +Common Code table C-1 +0 +3 +Operational + + +56 +01 +Identification +001034 +Identification of originating/generating sub-centre +Common Code table C-12 +0 +0 +8 +Common Code table C-12 +0 +3 +Operational + + +57 +01 +Identification +001035 +Originating centre +Common Code table C-11 +0 +0 +16 +Common Code table C-11 +0 +5 +Operational + + +58 +01 +Identification +001036 +Agency in charge of operating the observing platform +Code table +0 +0 +20 +Code table +0 +7 +Operational + + +59 +01 +Identification +001037 +SIGMET sequence identifier +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +60 +01 +Identification +001038 +Source of sea ice fraction +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +61 +01 +Identification +001039 +Graphical Area Forecast (GFA) sequence identifier +CCITT IA5 +0 +0 +40 +Character +0 +5 +Operational + + +62 +01 +Identification +001040 +Processing centre ID code +CCITT IA5 +0 +0 +48 +Character +0 +6 +Operational + + +63 +01 +Identification +001041 +Absolute platform velocity - first component +(see Note 6) +m/s +5 +-1073741824 +31 +m/s +5 +10 +Operational + + +64 +01 +Identification +001042 +Absolute platform velocity - second component +(see Note 6) +m/s +5 +-1073741824 +31 +m/s +5 +10 +Operational + + +65 +01 +Identification +001043 +Absolute platform velocity - third component +(see Note 6) +m/s +5 +-1073741824 +31 +m/s +5 +10 +Operational + + +66 +01 +Identification +001044 +Standard generating application +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +67 +01 +Identification +001050 +Platform transmitter ID number +Numeric +0 +0 +17 +Numeric +0 +6 +Operational + + +68 +01 +Identification +001051 +Platform transmitter ID number +CCITT IA5 +0 +0 +96 +Character +0 +12 +Operational + + +69 +01 +Identification +001052 +Platform transmitter ID +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +70 +01 +Identification +001053 +Tsunameter report sequence number triggered by a tsunami event +Numeric +0 +0 +7 +Numeric +0 +2 +Operational + + +71 +01 +Identification +001060 +Aircraft reporting point (Beacon identifier) +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +72 +01 +Identification +001062 +Short ICAO location indicator +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +73 +01 +Identification +001063 +ICAO location indicator +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +74 +01 +Identification +001064 +Runway designator +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +75 +01 +Identification +001065 +ICAO region identifier +CCITT IA5 +0 +0 +256 +Character +0 +32 +Operational + + +76 +01 +Identification +001075 +Tide station identification +CCITT IA5 +0 +0 +40 +Character +0 +5 +Operational + + +77 +01 +Identification +001079 +Unique identifier for the profile +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +78 +01 +Identification +001080 +Ship line number according to SOOP +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +79 +01 +Identification +001081 +Radiosonde serial number +CCITT IA5 +0 +0 +160 +Character +0 +20 +Operational + + +80 +01 +Identification +001082 +Radiosonde ascension number +(see Note 12) +Numeric +0 +0 +14 +Numeric +0 +4 +Operational + + +81 +01 +Identification +001083 +Radiosonde release number +(see Note 12) +Numeric +0 +0 +3 +Numeric +0 +1 +Operational + + +82 +01 +Identification +001085 +Observing platform manufacturer's model +CCITT IA5 +0 +0 +160 +Character +0 +20 +Operational + + +83 +01 +Identification +001086 +Observing platform manufacturer's serial number +CCITT IA5 +0 +0 +256 +Character +0 +32 +Operational + + +84 +01 +Identification +001087 +WMO marine observing platform extended identifier +Numeric +0 +0 +23 +Numeric +0 +7 +Operational + + +85 +01 +Identification +001090 +Technique for making up initial perturbations +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +86 +01 +Identification +001091 +Ensemble member number +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +87 +01 +Identification +001092 +Type of ensemble forecast +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +88 +01 +Identification +001093 +Balloon lot number +CCITT IA5 +0 +0 +96 +Character +0 +12 +Operational + + +89 +01 +Identification +001094 +WBAN number +Numeric +0 +0 +17 +Numeric +0 +5 +Operational + + +90 +01 +Identification +001095 +Observer identification +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +91 +01 +Identification +001096 +Station acquisition +CCITT IA5 +0 +0 +160 +Character +0 +20 +Operational + + +92 +01 +Identification +001099 +Unique product definition +CCITT IA5 +0 +0 +248 +Character +0 +31 +Operational + + +93 +01 +Identification +001101 +State identifier +Code table +0 +0 +10 +Code table +0 +3 +Operational + + +94 +01 +Identification +001102 +National station number +Numeric +0 +0 +30 +Numeric +0 +9 +Operational + + +95 +01 +Identification +001103 +IMO Number. Unique Lloyd's register +Numeric +0 +0 +24 +Numeric +0 +7 +Operational + + +96 +01 +Identification +001104 +State/federal state identifier +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +97 +01 +Identification +001105 +Highway designator +CCITT IA5 +0 +0 +40 +Character +0 +5 +Operational + + +98 +01 +Identification +001106 +Location along highway as indicated by position markers +m +-2 +0 +14 +m +-2 +5 +Operational + + +99 +01 +Identification +001110 +Aircraft tail number +CCITT IA5 +0 +0 +48 +Character +0 +6 +Operational + + +100 +01 +Identification +001111 +Origination airport +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +101 +01 +Identification +001112 +Destination airport +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +102 +01 +Identification +001113 +Template version number defined by originating centre +Numeric +1 +0 +9 +Numeric +1 +3 +Operational + + +103 +01 +Identification +001114 +Encrypted ship or mobile land station identifier (base64 encoding) +CCITT IA5 +0 +0 +352 +Character +0 +44 +Operational + + +104 +01 +Identification +001115 +Identifier of the cruise or mission under which the data were collected +CCITT IA5 +0 +0 +160 +Character +0 +20 +Operational + + +105 +01 +Identification +001124 +Grid point identifier +Numeric +0 +0 +24 +Numeric +0 +8 +Operational + + +106 +01 +Identification +001125 +WIGOS identifier series +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +107 +01 +Identification +001126 +WIGOS issuer of identifier +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +108 +01 +Identification +001127 +WIGOS issue number +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +109 +01 +Identification +001128 +WIGOS local identifier (character) +CCITT IA5 +0 +0 +128 +Character +0 +16 +Operational + + +110 +01 +Identification +001144 +Snapshot identifier +Numeric +0 +0 +31 +Numeric +0 +10 +Operational + + +111 +01 +Identification +001150 +Coordinate reference system +Code table +0 +0 +16 +Code table +0 +5 +Operational + + +112 +01 +Identification +001151 +Fixed mean sea-level reference datum +Code table +0 +0 +12 +Code table +0 +4 +Operational + + +113 +01 +Identification +001152 +Semi-major axis of rotation ellipsoid +m +2 +0 +31 +m +2 +11 +Operational + + +114 +01 +Identification +001153 +Semi-minor axis of rotation ellipsoid +m +2 +0 +31 +m +2 +11 +Operational + + +115 +01 +Identification +001154 +Sensor identifier +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +116 +01 +Identification +001155 +Retrieval identifier +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +117 +02 +Instrumentation +002001 +Type of station +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +118 +02 +Instrumentation +002002 +Type of instrumentation for wind measurement +Flag table +0 +0 +4 +Flag table +0 +2 +Operational + + +119 +02 +Instrumentation +002003 +Type of measuring equipment used +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +120 +02 +Instrumentation +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +121 +02 +Instrumentation +002005 +Precision of temperature observation +K +2 +0 +7 +K +2 +3 +Operational + + +122 +02 +Instrumentation +002006 +Upper air remote sensing instrument type +Code table +0 +0 +6 +Code table +0 +0 +Operational + + +123 +02 +Instrumentation +002007 +Type of sensor for water level measuring instrument +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +124 +02 +Instrumentation +002008 +Type of offshore platform +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +125 +02 +Instrumentation +002011 +Radiosonde type +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +126 +02 +Instrumentation +002012 +Radiosonde computational method +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +127 +02 +Instrumentation +002013 +Solar and infrared radiation correction +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +128 +02 +Instrumentation +002014 +Tracking technique/status of system used +Code table +0 +0 +7 +Code table +0 +3 +Operational + + +129 +02 +Instrumentation +002015 +Radiosonde completeness +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +130 +02 +Instrumentation +002016 +Radiosonde configuration +Flag table +0 +0 +5 +Flag table +0 +2 +Operational + + +131 +02 +Instrumentation +002017 +Correction algorithms for humidity measurements +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +132 +02 +Instrumentation +002019 +Satellite instruments +Code table +0 +0 +11 +Code table +0 +4 +Operational + + +133 +02 +Instrumentation +002020 +Satellite classification +Code table +0 +0 +9 +Code table +0 +3 +Operational + + +134 +02 +Instrumentation +002021 +Satellite instrument data used in processing +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +135 +02 +Instrumentation +002022 +Satellite data-processing technique used +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +136 +02 +Instrumentation +002023 +Satellite-derived wind computation method +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +137 +02 +Instrumentation +002024 +Integrated mean humidity computational method +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +138 +02 +Instrumentation +002025 +Satellite channel(s) used in computation +Flag table +0 +0 +25 +Flag table +0 +9 +Operational + + +139 +02 +Instrumentation +002026 +Cross-track resolution +m +2 +0 +12 +m +2 +4 +Operational + + +140 +02 +Instrumentation +002027 +Along-track resolution +m +2 +0 +12 +m +2 +4 +Operational + + +141 +02 +Instrumentation +002028 +Segment size at nadir in x-direction +m +0 +0 +18 +m +0 +6 +Operational + + +142 +02 +Instrumentation +002029 +Segment size at nadir in y-direction +m +0 +0 +18 +m +0 +6 +Operational + + +143 +02 +Instrumentation +002030 +Method of current measurement +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +144 +02 +Instrumentation +002031 +Duration and time of current measurement +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +145 +02 +Instrumentation +002032 +Indicator for digitization +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +146 +02 +Instrumentation +002033 +Method of salinity/depth measurement +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +147 +02 +Instrumentation +002034 +Drogue type +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +148 +02 +Instrumentation +002035 +Cable length +m +0 +0 +9 +m +0 +3 +Operational + + +149 +02 +Instrumentation +002036 +Buoy type +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +150 +02 +Instrumentation +002037 +Method of tidal observation +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +151 +02 +Instrumentation +002038 +Method of water temperature and/or salinity measurement +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +152 +02 +Instrumentation +002039 +Method of wet-bulb temperature measurement +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +153 +02 +Instrumentation +002040 +Method of removing velocity and motion of platform from current +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +154 +02 +Instrumentation +002041 +Method for estimating reports related to synoptic features +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +155 +02 +Instrumentation +002042 +Indicator for sea-surface current speed +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +156 +02 +Instrumentation +002044 +Indicator for method of calculating spectral wave data +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +157 +02 +Instrumentation +002045 +Indicator for type of platform +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +158 +02 +Instrumentation +002046 +Wave measurement instrumentation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +159 +02 +Instrumentation +002047 +Deep-ocean tsunameter type +Code table +0 +0 +7 +Code table +0 +2 +Operational + + +160 +02 +Instrumentation +002048 +Satellite sensor indicator +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +161 +02 +Instrumentation +002049 +Geostationary satellite data-processing technique used +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +162 +02 +Instrumentation +002050 +Geostationary sounder satellite channels used +Flag table +0 +0 +20 +Flag table +0 +7 +Operational + + +163 +02 +Instrumentation +002051 +Indicator to specify observing method for extreme temperatures +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +164 +02 +Instrumentation +002052 +Geostationary imager satellite channels used +Flag table +0 +0 +6 +Flag table +0 +2 +Operational + + +165 +02 +Instrumentation +002053 +GOES-I/M brightness temperature characteristics +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +166 +02 +Instrumentation +002054 +GOES-I/M soundings parameter characteristics +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +167 +02 +Instrumentation +002055 +Geostationary soundings statistical parameters +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +168 +02 +Instrumentation +002056 +Geostationary soundings accuracy statistics +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +169 +02 +Instrumentation +002057 +Origin of first-guess information for GOES-I/M soundings +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +170 +02 +Instrumentation +002058 +Valid times of first-guess information for GOES-I/M soundings +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +171 +02 +Instrumentation +002059 +Origin of analysis information for GOES-I/M soundings +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +172 +02 +Instrumentation +002060 +Origin of surface information for GOES-I/M soundings +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +173 +02 +Instrumentation +002061 +Aircraft navigational system +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +174 +02 +Instrumentation +002062 +Type of aircraft data relay system +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +175 +02 +Instrumentation +002063 +Aircraft roll angle +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +176 +02 +Instrumentation +002064 +Aircraft roll angle quality +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +177 +02 +Instrumentation +002065 +ACARS ground-receiving station +CCITT IA5 +0 +0 +40 +Character +0 +5 +Operational + + +178 +02 +Instrumentation +002066 +Radiosonde ground receiving system +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +179 +02 +Instrumentation +002067 +Radiosonde operating frequency +Hz +-5 +0 +15 +Hz +-5 +5 +Operational + + +180 +02 +Instrumentation +002070 +Original specification of latitude/longitude +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +181 +02 +Instrumentation +002071 +Spectrographic wavelength +m +13 +0 +30 +m +13 +10 +Operational + + +182 +02 +Instrumentation +002072 +Spectrographic width +m +13 +0 +30 +m +13 +10 +Operational + + +183 +02 +Instrumentation +002080 +Balloon manufacturer +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +184 +02 +Instrumentation +002081 +Type of balloon +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +185 +02 +Instrumentation +002082 +Weight of balloon +kg +3 +0 +12 +kg +3 +4 +Operational + + +186 +02 +Instrumentation +002083 +Type of balloon shelter +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +187 +02 +Instrumentation +002084 +Type of gas used in balloon +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +188 +02 +Instrumentation +002085 +Amount of gas used in balloon +kg +3 +0 +13 +kg +3 +4 +Operational + + +189 +02 +Instrumentation +002086 +Balloon flight train length +m +1 +0 +10 +m +1 +4 +Operational + + +190 +02 +Instrumentation +002087 +Parachute surface area +m2 +4 +0 +15 +m2 +4 +5 +Operational + + +191 +02 +Instrumentation +002088 +Volume of gas used in balloon +m3 +3 +0 +13 +m3 +3 +4 +Operational + + +192 +02 +Instrumentation +002090 +Instrument wavelength +m +9 +0 +16 +m +9 +5 +Operational + + +193 +02 +Instrumentation +002091 +Entry sensor 4/20 mA +A +4 +0 +10 +A +4 +3 +Operational + + +194 +02 +Instrumentation +002092 +Ozone profile computation method +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +195 +02 +Instrumentation +002095 +Type of pressure sensor +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +196 +02 +Instrumentation +002096 +Type of temperature sensor +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +197 +02 +Instrumentation +002097 +Type of humidity sensor +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +198 +02 +Instrumentation +002099 +Polarization +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +199 +02 +Instrumentation +002100 +Radar constant +dB +1 +0 +12 +dB +1 +4 +Operational + + +200 +02 +Instrumentation +002101 +Type of antenna +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +201 +02 +Instrumentation +002102 +Antenna height above tower base +m +0 +0 +8 +m +0 +3 +Operational + + +202 +02 +Instrumentation +002103 +Radome +Flag table +0 +0 +2 +Flag table +0 +1 +Operational + + +203 +02 +Instrumentation +002104 +Antenna polarization +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +204 +02 +Instrumentation +002105 +Maximum antenna gain +dB +0 +0 +6 +dB +0 +2 +Operational + + +205 +02 +Instrumentation +002106 +3-dB beamwidth +deg +1 +0 +6 +deg +1 +2 +Operational + + +206 +02 +Instrumentation +002107 +Sidelobe suppression +dB +0 +0 +6 +dB +0 +2 +Operational + + +207 +02 +Instrumentation +002108 +Crosspol discrimination (on axis) +dB +0 +0 +6 +dB +0 +2 +Operational + + +208 +02 +Instrumentation +002109 +Antenna speed (azimuth) +deg/s +2 +0 +12 +deg/s +2 +4 +Operational + + +209 +02 +Instrumentation +002110 +Antenna speed (elevation) +deg/s +2 +0 +12 +deg/s +2 +4 +Operational + + +210 +02 +Instrumentation +002111 +Radar incidence angle +deg +1 +0 +10 +deg +1 +4 +Operational + + +211 +02 +Instrumentation +002112 +Radar look angle +deg +1 +0 +12 +deg +1 +4 +Operational + + +212 +02 +Instrumentation +002113 +Number of azimuth looks +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +213 +02 +Instrumentation +002114 +Antenna effective surface area +m2 +0 +0 +15 +m2 +0 +5 +Operational + + +214 +02 +Instrumentation +002115 +Type of surface observing equipment +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +215 +02 +Instrumentation +002116 +Percentage of 320 MHz band processed +% +0 +0 +7 +% +0 +3 +Operational + + +216 +02 +Instrumentation +002117 +Percentage of 80 MHz band processed +% +0 +0 +7 +% +0 +3 +Operational + + +217 +02 +Instrumentation +002118 +Percentage of 20 MHz band processed +% +0 +0 +7 +% +0 +3 +Operational + + +218 +02 +Instrumentation +002119 +RA-2 instrument operations +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +219 +02 +Instrumentation +002120 +Ocean wave frequency +Hz +3 +0 +10 +Hz +3 +4 +Operational + + +220 +02 +Instrumentation +002121 +Mean frequency +Hz +-8 +0 +7 +Hz +-8 +3 +Operational + + +221 +02 +Instrumentation +002122 +Frequency agility range +Hz +-6 +-128 +8 +Hz +-6 +3 +Operational + + +222 +02 +Instrumentation +002123 +Peak power +W +-4 +0 +7 +W +-4 +3 +Operational + + +223 +02 +Instrumentation +002124 +Average power +W +-1 +0 +7 +W +-1 +3 +Operational + + +224 +02 +Instrumentation +002125 +Pulse repetition frequency +Hz +-1 +0 +8 +Hz +-1 +3 +Operational + + +225 +02 +Instrumentation +002126 +Pulse width +s +7 +0 +6 +s +7 +2 +Operational + + +226 +02 +Instrumentation +002127 +Receiver intermediate frequency +Hz +-6 +0 +7 +Hz +-6 +3 +Operational + + +227 +02 +Instrumentation +002128 +Intermediate frequency bandwidth +Hz +-5 +0 +6 +Hz +-5 +2 +Operational + + +228 +02 +Instrumentation +002129 +Minimum detectable signal +dB +0 +-150 +5 +dB +0 +3 +Operational + + +229 +02 +Instrumentation +002130 +Dynamic range +dB +0 +0 +7 +dB +0 +3 +Operational + + +230 +02 +Instrumentation +002131 +Sensitivity time control (STC) +Flag table +0 +0 +2 +Flag table +0 +1 +Operational + + +231 +02 +Instrumentation +002132 +Azimuth pointing accuracy +deg +2 +0 +6 +deg +2 +2 +Operational + + +232 +02 +Instrumentation +002133 +Elevation pointing accuracy +deg +2 +0 +6 +deg +2 +2 +Operational + + +233 +02 +Instrumentation +002134 +Antenna beam azimuth +deg +2 +0 +16 +deg +2 +5 +Operational + + +234 +02 +Instrumentation +002135 +Antenna elevation +deg +2 +-9000 +15 +deg +2 +5 +Operational + + +235 +02 +Instrumentation +002136 +Range processed by range attenuation correction +m +-3 +0 +16 +m +-3 +5 +Operational + + +236 +02 +Instrumentation +002137 +Radar dual PRF ratio +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +237 +02 +Instrumentation +002138 +Antenna rotation direction +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +238 +02 +Instrumentation +002139 +SIRAL instrument configuration +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +239 +02 +Instrumentation +002140 +Satellite radar beam azimuth angle +(see Note 4) +deg +0 +0 +9 +deg +0 +3 +Operational + + +240 +02 +Instrumentation +002141 +Measurement type +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +241 +02 +Instrumentation +002142 +Ozone instrument serial number/identification +(see Note 5) +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +242 +02 +Instrumentation +002143 +Ozone instrument type +Code table +0 +0 +7 +Code table +0 +3 +Operational + + +243 +02 +Instrumentation +002144 +Light source type for Brewer spectrophotometer +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +244 +02 +Instrumentation +002145 +Wavelength setting for Dobson instruments +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +245 +02 +Instrumentation +002146 +Source conditions for Dobson instruments +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +246 +02 +Instrumentation +002147 +Method of transmission to collection centre +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +247 +02 +Instrumentation +002148 +Data collection and/or location system +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +248 +02 +Instrumentation +002149 +Type of data buoy +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +249 +02 +Instrumentation +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +250 +02 +Instrumentation +002151 +Radiometer identifier +Code table +0 +0 +11 +Code table +0 +4 +Operational + + +251 +02 +Instrumentation +002152 +Satellite instrument used in data processing +(see Note 6) +Flag table +0 +0 +31 +Flag table +0 +10 +Operational + + +252 +02 +Instrumentation +002153 +Satellite channel centre frequency +Hz +-8 +0 +26 +Hz +-8 +8 +Operational + + +253 +02 +Instrumentation +002154 +Satellite channel band width +Hz +-8 +0 +26 +Hz +-8 +8 +Operational + + +254 +02 +Instrumentation +002155 +Satellite channel wavelength +m +9 +0 +16 +m +9 +5 +Operational + + +255 +02 +Instrumentation +002156 +Percentage of valid KU ocean retracker measurements +% +0 +0 +7 +% +0 +3 +Operational + + +256 +02 +Instrumentation +002157 +Percentage of valid S ocean retracker measurements +% +0 +0 +7 +% +0 +3 +Operational + + +257 +02 +Instrumentation +002158 +RA-2 instrument +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +258 +02 +Instrumentation +002159 +MWR instrument +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +259 +02 +Instrumentation +002160 +Wavelength of the radar +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +260 +02 +Instrumentation +002161 +Wind processing method +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +261 +02 +Instrumentation +002162 +Extended height assignment method +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +262 +02 +Instrumentation +002163 +Height assignment method +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +263 +02 +Instrumentation +002164 +Tracer correlation method +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +264 +02 +Instrumentation +002165 +Radiance type flags +Flag table +0 +0 +15 +Flag table +0 +5 +Operational + + +265 +02 +Instrumentation +002166 +Radiance type +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +266 +02 +Instrumentation +002167 +Radiance computational method +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +267 +02 +Instrumentation +002168 +Hydrostatic pressure of lower end of cable (thermistor string) +Pa +-3 +0 +16 +kPa +0 +5 +Operational + + +268 +02 +Instrumentation +002169 +Anemometer type +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +269 +02 +Instrumentation +002170 +Aircraft humidity sensors +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +270 +02 +Instrumentation +002171 +Instrument serial number for water temperature profile measurement +CCITT IA5 +0 +0 +64 +Character +0 +8 +Operational + + +271 +02 +Instrumentation +002172 +Product type for retrieved atmospheric gases +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +272 +02 +Instrumentation +002173 +Square of the off-nadir angle +(see Note 7) +deg2 +4 +0 +10 +deg2 +4 +4 +Operational + + +273 +02 +Instrumentation +002174 +Mean across track pixel number +Numeric +0 +0 +9 +Numeric +0 +3 +Operational + + +274 +02 +Instrumentation +002175 +Method of precipitation measurement +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +275 +02 +Instrumentation +002176 +Method of state of ground measurement +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +276 +02 +Instrumentation +002177 +Method of snow depth measurement +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +277 +02 +Instrumentation +002178 +Method of liquid content measurement of precipitation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +278 +02 +Instrumentation +002179 +Type of sky condition algorithm +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +279 +02 +Instrumentation +002180 +Main present weather detecting system +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +280 +02 +Instrumentation +002181 +Supplementary present weather sensor +Flag table +0 +0 +21 +Flag table +0 +7 +Operational + + +281 +02 +Instrumentation +002182 +Visibility measurement system +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +282 +02 +Instrumentation +002183 +Cloud detection system +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +283 +02 +Instrumentation +002184 +Type of lightning detection sensor +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +284 +02 +Instrumentation +002185 +Method of evaporation measurement +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +285 +02 +Instrumentation +002186 +Capability to detect precipitation phenomena +Flag table +0 +0 +30 +Flag table +0 +10 +Operational + + +286 +02 +Instrumentation +002187 +Capability to detect other weather phenomena +Flag table +0 +0 +18 +Flag table +0 +6 +Operational + + +287 +02 +Instrumentation +002188 +Capability to detect obscuration +Flag table +0 +0 +21 +Flag table +0 +7 +Operational + + +288 +02 +Instrumentation +002189 +Capability to discriminate lightning strikes +Flag table +0 +0 +12 +Flag table +0 +4 +Operational + + +289 +02 +Instrumentation +002190 +Lagrangian drifter submergence (% time submerged) +% +0 +0 +7 +% +0 +3 +Operational + + +290 +02 +Instrumentation +002191 +Geopotential height calculation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +291 +03 +Instrumentation +003001 +Surface station type +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +292 +03 +Instrumentation +003003 +Thermometer/hygrometer housing +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +293 +03 +Instrumentation +003004 +Type of screen/shelter/radiation shield +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +294 +03 +Instrumentation +003005 +Horizontal width of screen or shield (x) +m +3 +0 +16 +m +3 +5 +Operational + + +295 +03 +Instrumentation +003006 +Horizontal depth of screen or shield (y) +m +3 +0 +16 +m +3 +5 +Operational + + +296 +03 +Instrumentation +003007 +Vertical height of screen or shield (z) +m +3 +0 +16 +m +3 +5 +Operational + + +297 +03 +Instrumentation +003008 +Artificially ventilated screen or shield +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +298 +03 +Instrumentation +003009 +Amount of forced ventilation at time of reading +m/s +1 +0 +9 +m/s +1 +3 +Operational + + +299 +03 +Instrumentation +003010 +Method of sea/water current measurement +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +300 +03 +Instrumentation +003011 +Method of depth calculation +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +301 +03 +Instrumentation +003012 +Instrument type/sensor for dissolved oxygen measurement +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +302 +03 +Instrumentation +003016 +Position of road sensors +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +303 +03 +Instrumentation +003017 +Extended type of station +Flag table +0 +0 +6 +Flag table +0 +2 +Operational + + +304 +03 +Instrumentation +003018 +Type of road +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +305 +03 +Instrumentation +003019 +Type of construction +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +306 +03 +Instrumentation +003020 +Material for thermometer/hygrometer housing +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +307 +03 +Instrumentation +003021 +Hygrometer heating +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +308 +03 +Instrumentation +003022 +Instrument owner +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +309 +03 +Instrumentation +003023 +Configuration of louvers for thermometer/hygrometer screen +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +310 +03 +Instrumentation +003024 +Psychrometric coefficient +K-1 +6 +0 +10 +K-1 +6 +3 +Operational + + +311 +03 +Instrumentation +003025 +Cross-track estimation area size +m +0 +5000 +16 +m +0 +5 +Operational + + +312 +03 +Instrumentation +003026 +Along-track estimation area size +m +0 +5000 +16 +m +0 +5 +Operational + + +313 +03 +Instrumentation +003027 +Type of flight rig +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +314 +03 +Instrumentation +003028 +Method of snow water equivalent measurement +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +315 +04 +Location (time) +004001 +Year +a +0 +0 +12 +a +0 +4 +Operational + + +316 +04 +Location (time) +004002 +Month +mon +0 +0 +4 +mon +0 +2 +Operational + + +317 +04 +Location (time) +004003 +Day +d +0 +0 +6 +d +0 +2 +Operational + + +318 +04 +Location (time) +004004 +Hour +h +0 +0 +5 +h +0 +2 +Operational + + +319 +04 +Location (time) +004005 +Minute +min +0 +0 +6 +min +0 +2 +Operational + + +320 +04 +Location (time) +004006 +Second +s +0 +0 +6 +s +0 +2 +Operational + + +321 +04 +Location (time) +004007 +Seconds within a minute (microsecond accuracy) +s +6 +0 +26 +s +6 +8 +Operational + + +322 +04 +Location (time) +004011 +Time increment +a +0 +-1024 +11 +a +0 +4 +Operational + + +323 +04 +Location (time) +004012 +Time increment +mon +0 +-1024 +11 +mon +0 +4 +Operational + + +324 +04 +Location (time) +004013 +Time increment +d +0 +-1024 +11 +d +0 +4 +Operational + + +325 +04 +Location (time) +004014 +Time increment +h +0 +-1024 +11 +h +0 +4 +Operational + + +326 +04 +Location (time) +004015 +Time increment +min +0 +-2048 +12 +min +0 +4 +Operational + + +327 +04 +Location (time) +004016 +Time increment +s +0 +-4096 +13 +s +0 +4 +Operational + + +328 +04 +Location (time) +004017 +Reference time period for accumulated or extreme data +min +0 +-1440 +12 +min +0 +4 +Operational + + +329 +04 +Location (time) +004021 +Time period or displacement +a +0 +-1024 +11 +a +0 +4 +Operational + + +330 +04 +Location (time) +004022 +Time period or displacement +mon +0 +-1024 +11 +mon +0 +4 +Operational + + +331 +04 +Location (time) +004023 +Time period or displacement +d +0 +-1024 +11 +d +0 +4 +Operational + + +332 +04 +Location (time) +004024 +Time period or displacement +h +0 +-2048 +12 +h +0 +4 +Operational + + +333 +04 +Location (time) +004025 +Time period or displacement +min +0 +-2048 +12 +min +0 +4 +Operational + + +334 +04 +Location (time) +004026 +Time period or displacement +s +0 +-4096 +13 +s +0 +4 +Operational + + +335 +04 +Location (time) +004031 +Duration of time relating to following value +h +0 +0 +8 +h +0 +3 +Operational + + +336 +04 +Location (time) +004032 +Duration of time relating to following value +min +0 +0 +6 +min +0 +2 +Operational + + +337 +04 +Location (time) +004041 +Time difference, UTC - LMT +(see Note 6) +min +0 +-1440 +12 +min +0 +4 +Operational + + +338 +04 +Location (time) +004043 +Day of the year +d +0 +0 +9 +d +0 +3 +Operational + + +339 +04 +Location (time) +004051 +Principal time of daily reading of maximum temperature +h +0 +0 +5 +h +0 +2 +Operational + + +340 +04 +Location (time) +004052 +Principal time of daily reading of minimum temperature +h +0 +0 +5 +h +0 +2 +Operational + + +341 +04 +Location (time) +004053 +Number of days with precipitation equal to or more than 1 mm +Numeric +0 +0 + 6 +Numeric +0 +2 +Operational + + +342 +04 +Location (time) +004059 +Times of observation used to compute the reported mean values +Flag table +0 +0 +6 +Flag table +0 +2 +Operational + + +343 +04 +Location (time) +004065 +Short time increment +min +0 +-128 +8 +min +0 +2 +Operational + + +344 +04 +Location (time) +004066 +Short time increment +s +0 +-128 +8 +s +0 +2 +Operational + + +345 +04 +Location (time) +004073 +Short time period or displacement +d +0 +-128 +8 +d +0 +2 +Operational + + +346 +04 +Location (time) +004074 +Short time period or displacement +h +0 +-128 +8 +h +0 +2 +Operational + + +347 +04 +Location (time) +004075 +Short time period or displacement +min +0 +-128 +8 +min +0 +2 +Operational + + +348 +04 +Location (time) +004080 +Averaging period for following value +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +349 +04 +Location (time) +004086 +Long time period or displacement +s +0 +-8192 +15 +s +0 +5 +Operational + + +350 +05 +Location (horizontal - 1) +005001 +Latitude (high accuracy) +deg +5 +-9000000 +25 +deg +5 +7 +Operational + + +351 +05 +Location (horizontal - 1) +005002 +Latitude (coarse accuracy) +deg +2 +-9000 +15 +deg +2 +4 +Operational + + +352 +05 +Location (horizontal - 1) +005011 +Latitude increment (high accuracy) +deg +5 +-9000000 +25 +deg +5 +7 +Operational + + +353 +05 +Location (horizontal - 1) +005012 +Latitude increment (coarse accuracy) +deg +2 +-9000 +15 +deg +2 +4 +Operational + + +354 +05 +Location (horizontal - 1) +005015 +Latitude displacement (high accuracy) +deg +5 +-9000000 +25 +deg +5 +7 +Operational + + +355 +05 +Location (horizontal - 1) +005016 +Latitude displacement (coarse accuracy) +deg +2 +-9000 +15 +deg +2 +4 +Operational + + +356 +05 +Location (horizontal - 1) +005021 +Bearing or azimuth +degree true +2 +0 +16 +degree true +2 +5 +Operational + + +357 +05 +Location (horizontal - 1) +005022 +Solar azimuth +degree true +2 +0 +16 +degree true +2 +5 +Operational + + +358 +05 +Location (horizontal - 1) +005023 +Sun to satellite azimuth difference +deg +1 +-1800 +12 +deg +1 +4 +Operational + + +359 +05 +Location (horizontal - 1) +005030 +Direction (spectral) +deg +0 +0 +12 +deg +0 +4 +Operational + + +360 +05 +Location (horizontal - 1) +005031 +Row number +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +361 +05 +Location (horizontal - 1) +005032 +Y offset +(see Note 6) +m +2 +-1073741824 +31 +m +2 +11 +Operational + + +362 +05 +Location (horizontal - 1) +005033 +Pixel size on horizontal - 1 +m +-1 +0 +16 +m +-1 +5 +Operational + + +363 +05 +Location (horizontal - 1) +005034 +Along track row number +Numeric +0 +0 +11 +Numeric +0 +4 +Operational + + +364 +05 +Location (horizontal - 1) +005035 +Maximum size of x-dimension +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +365 +05 +Location (horizontal - 1) +005036 +Ship transect number according to SOOP +Numeric +0 +0 +7 +Numeric +0 +2 +Operational + + +366 +05 +Location (horizontal - 1) +005040 +Orbit number +Numeric +0 +0 +24 +Numeric +0 +8 +Operational + + +367 +05 +Location (horizontal - 1) +005041 +Scan line number +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +368 +05 +Location (horizontal - 1) +005042 +Channel number +Numeric +0 +0 +6 +Numeric +0 +2 +Operational + + +369 +05 +Location (horizontal - 1) +005043 +Field of view number +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +370 +05 +Location (horizontal - 1) +005044 +Satellite cycle number +Numeric +0 +0 +11 +Numeric +0 +4 +Operational + + +371 +05 +Location (horizontal - 1) +005045 +Field of regard number +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +372 +05 +Location (horizontal - 1) +005052 +Channel number increment +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +373 +05 +Location (horizontal - 1) +005053 +Field of view number increment +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +374 +05 +Location (horizontal - 1) +005060 +Y angular position from centre of gravity +deg +6 +-8000000 +24 +deg +6 +8 +Operational + + +375 +05 +Location (horizontal - 1) +005061 +Z angular position from centre of gravity +deg +6 +-8000000 +24 +deg +6 +8 +Operational + + +376 +05 +Location (horizontal - 1) +005063 +Spacecraft roll +deg +2 +0 +16 +deg +2 +5 +Operational + + +377 +05 +Location (horizontal - 1) +005064 +Spacecraft pitch +deg +2 +0 +16 +deg +2 +5 +Operational + + +378 +05 +Location (horizontal - 1) +005066 +Spacecraft yaw +deg +2 +0 +16 +deg +2 +5 +Operational + + +379 +05 +Location (horizontal - 1) +005067 +Number of scan lines +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +380 +05 +Location (horizontal - 1) +005068 +Profile number +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +381 +05 +Location (horizontal - 1) +005069 +Receiver channel +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +382 +05 +Location (horizontal - 1) +005070 +Observation identifier +Numeric +0 +0 +30 +Numeric +0 +10 +Operational + + +383 +05 +Location (horizontal - 1) +005071 +Stripmap identifier +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +384 +05 +Location (horizontal - 1) +005072 +Number of spectra in range direction +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +385 +05 +Location (horizontal - 1) +005073 +Number of spectra in azimuthal direction +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +386 +05 +Location (horizontal - 1) +005074 +Index in range direction +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +387 +05 +Location (horizontal - 1) +005075 +Index in azimuthal direction +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +388 +06 +Location (horizontal - 2) +006001 +Longitude (high accuracy) +deg +5 +-18000000 +26 +deg +5 +8 +Operational + + +389 +06 +Location (horizontal - 2) +006002 +Longitude (coarse accuracy) +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +390 +06 +Location (horizontal - 2) +006011 +Longitude increment (high accuracy) +deg +5 +-18000000 +26 +deg +5 +8 +Operational + + +391 +06 +Location (horizontal - 2) +006012 +Longitude increment (coarse accuracy) +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +392 +06 +Location (horizontal - 2) +006015 +Longitude displacement (high accuracy) +deg +5 +-18000000 +26 +deg +5 +8 +Operational + + +393 +06 +Location (horizontal - 2) +006016 +Longitude displacement (coarse accuracy) +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +394 +06 +Location (horizontal - 2) +006021 +Distance +m +-1 +0 +13 +m +-1 +4 +Operational + + +395 +06 +Location (horizontal - 2) +006029 +Wave number +/m +1 +0 +22 +/m +1 +7 +Operational + + +396 +06 +Location (horizontal - 2) +006030 +Wave number (spectral) +rad/m +5 +0 +13 +rad/m +5 +4 +Operational + + +397 +06 +Location (horizontal - 2) +006031 +Column number +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +398 +06 +Location (horizontal - 2) +006032 +X offset +(see Note 6) +m +2 +-1073741824 +31 +m +2 +11 +Operational + + +399 +06 +Location (horizontal - 2) +006033 +Pixel size on horizontal - 2 +m +-1 +0 +16 +m +-1 +5 +Operational + + +400 +06 +Location (horizontal - 2) +006034 +Cross-track cell number +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +401 +06 +Location (horizontal - 2) +006035 +Maximum size of y-dimension +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +402 +06 +Location (horizontal - 2) +006040 +Radius of confidence +m +0 +0 +13 +m +0 +4 +Operational + + +403 +07 +Location (vertical) +007001 +Height of station +(see Note 1) +m +0 +-400 +15 +m +0 +5 +Operational + + +404 +07 +Location (vertical) +007002 +Height or altitude +m +-1 +-40 +16 +m +-1 +5 +Operational + + +405 +07 +Location (vertical) +007003 +Geopotential +m2 s-2 +-1 +-400 +17 +m2 s-2 +-1 +6 +Operational + + +406 +07 +Location (vertical) +007004 +Pressure +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +407 +07 +Location (vertical) +007005 +Height increment +m +0 +-400 +12 +m +0 +4 +Operational + + +408 +07 +Location (vertical) +007006 +Height above station +m +0 +0 +15 +m +0 +5 +Operational + + +409 +07 +Location (vertical) +007007 +Height +m +0 +-1000 +17 +m +0 +6 +Operational + + +410 +07 +Location (vertical) +007008 +Geopotential +m2 s-2 +0 +-10000 +20 +m2 s-2 +0 +7 +Operational + + +411 +07 +Location (vertical) +007009 +Geopotential height +gpm +0 +-1000 +17 +gpm +0 +5 +Operational + + +412 +07 +Location (vertical) +007010 +Flight level +m +0 +-1024 +16 +ft +-1 +5 +Operational + + +413 +07 +Location (vertical) +007012 +Grid point altitude +m +2 +-50000 +20 +m +2 +7 +Operational + + +414 +07 +Location (vertical) +007021 +Elevation +(see Note 2) +deg +2 +-9000 +15 +deg +2 +5 +Operational + + +415 +07 +Location (vertical) +007022 +Solar elevation +deg +2 +-9000 +15 +deg +2 +5 +Operational + + +416 +07 +Location (vertical) +007024 +Satellite zenith angle +deg +2 +-9000 +15 +deg +2 +5 +Operational + + +417 +07 +Location (vertical) +007025 +Solar zenith angle +deg +2 +-9000 +15 +deg +2 +5 +Operational + + +418 +07 +Location (vertical) +007026 +Satellite zenith angle +deg +4 +-900000 +21 +deg +4 +7 +Operational + + +419 +07 +Location (vertical) +007030 +Height of station ground above mean sea level +(see Note 3) +m +1 +-4000 +17 +m +1 +5 +Operational + + +420 +07 +Location (vertical) +007031 +Height of barometer above mean sea level +(see Note 4) +m +1 +-4000 +17 +m +1 +5 +Operational + + +421 +07 +Location (vertical) +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 5) +m +2 +0 +16 +m +2 +5 +Operational + + +422 +07 +Location (vertical) +007033 +Height of sensor above water surface +(see Note 6) +m +1 +0 +12 +m +1 +4 +Operational + + +423 +07 +Location (vertical) +007035 +Maximum size of z-dimension +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +424 +07 +Location (vertical) +007036 +Level index of z +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +425 +07 +Location (vertical) +007040 +Impact parameter +(see Note 7) +m +1 +62000000 +22 +m +1 +8 +Operational + + +426 +07 +Location (vertical) +007061 +Depth below land surface +m +2 +0 +14 +m +2 +5 +Operational + + +427 +07 +Location (vertical) +007062 +Depth below sea/water surface +m +1 +0 +17 +m +1 +6 +Operational + + +428 +07 +Location (vertical) +007063 +Depth below sea/water surface (cm) +m +2 +0 +20 +m +2 +7 +Operational + + +429 +07 +Location (vertical) +007064 +Representative height of sensor above station +(see Note 8) +m +0 +0 +4 +m +0 +2 +Operational + + +430 +07 +Location (vertical) +007065 +Water pressure +Pa +-3 +0 +17 +Pa +-3 +6 +Operational + + +431 +07 +Location (vertical) +007070 +Drogue depth +m +0 +0 +10 +m +0 +4 +Operational + + +432 +07 +Location (vertical) +007071 +Height (high resolution) +m +3 +-10000000 +26 +m +3 +8 +Operational + + +433 +07 +Location (vertical) +007072 +Scan angle +deg +2 +-9000 +15 +deg +2 +6 +Operational + + +434 +08 +Significance qualifiers +008001 +Vertical sounding significance +Flag table +0 +0 +7 +Flag table +0 +3 +Operational + + +435 +08 +Significance qualifiers +008002 +Vertical significance (surface observations) +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +436 +08 +Significance qualifiers +008003 +Vertical significance (satellite observations) +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +437 +08 +Significance qualifiers +008004 +Phase of aircraft flight +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +438 +08 +Significance qualifiers +008005 +Meteorological attribute significance +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +439 +08 +Significance qualifiers +008006 +Ozone vertical sounding significance +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +440 +08 +Significance qualifiers +008007 +Dimensional significance +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +441 +08 +Significance qualifiers +008008 +Radiation vertical sounding significance +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +442 +08 +Significance qualifiers +008009 +Detailed phase of flight +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +443 +08 +Significance qualifiers +008010 +Surface qualifier (temperature data) +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +444 +08 +Significance qualifiers +008011 +Meteorological feature +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +445 +08 +Significance qualifiers +008012 +Land/sea qualifier +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +446 +08 +Significance qualifiers +008013 +Day/night qualifier +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +447 +08 +Significance qualifiers +008014 +Qualifier for runway visual range +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +448 +08 +Significance qualifiers +008015 +Significant qualifier for sensor +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +449 +08 +Significance qualifiers +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +450 +08 +Significance qualifiers +008017 +Qualifier of the time when the forecast change is expected +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +451 +08 +Significance qualifiers +008018 +SEAWINDS land/ice surface type +Flag table +0 +0 +17 +Flag table +0 +6 +Operational + + +452 +08 +Significance qualifiers +008019 +Qualifier for following centre identifier +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +453 +08 +Significance qualifiers +008020 +Total number of missing entities (with respect to accumulation or average) +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +454 +08 +Significance qualifiers +008021 +Time significance +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +455 +08 +Significance qualifiers +008022 +Total number (with respect to accumulation or average) +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +456 +08 +Significance qualifiers +008023 +First-order statistics +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +457 +08 +Significance qualifiers +008024 +Difference statistics +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +458 +08 +Significance qualifiers +008025 +Time difference qualifier +(see Note 5) +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +459 +08 +Significance qualifiers +008026 +Matrix significance +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +460 +08 +Significance qualifiers +008029 +Surface type +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +461 +08 +Significance qualifiers +008030 +Manual on Codes (Volume I.1, Section C) Code table from which data are derived +Numeric +0 +0 +13 +Numeric +0 +4 +Operational + + +462 +08 +Significance qualifiers +008031 +Data category - CREX table A +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +463 +08 +Significance qualifiers +008032 +Status of operation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +464 +08 +Significance qualifiers +008033 +Method of derivation of percentage confidence +(see Note 6) +Code table +0 +0 +7 +Code table +0 +3 +Operational + + +465 +08 +Significance qualifiers +008034 +Temperature/salinity measurement qualifier +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +466 +08 +Significance qualifiers +008035 +Type of monitoring exercise +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +467 +08 +Significance qualifiers +008036 +Type of centre or station performing monitoring +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +468 +08 +Significance qualifiers +008037 +Baseline check significance +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +469 +08 +Significance qualifiers +008038 +Instrument data significance +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +470 +08 +Significance qualifiers +008039 +Time significance (Aviation forecast) +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +471 +08 +Significance qualifiers +008040 +Flight level significance +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +472 +08 +Significance qualifiers +008041 +Data significance +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +473 +08 +Significance qualifiers +008042 +Extended vertical sounding significance +Flag table +0 +0 +18 +Flag table +0 +6 +Operational + + +474 +08 +Significance qualifiers +008043 +Atmospheric chemical or physical constituent type +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +475 +08 +Significance qualifiers +008044 +CAS registry number +CCITT IA5 +0 +0 +88 +Character +0 +11 +Operational + + +476 +08 +Significance qualifiers +008046 +Atmospheric chemical or physical constituent type +Common Code table C-14 +0 +0 +16 +Common Code table C-14 +0 +5 +Operational + + +477 +08 +Significance qualifiers +008049 +Number of observations +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +478 +08 +Significance qualifiers +008050 +Qualifier for number of missing values in calculation of statistic +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +479 +08 +Significance qualifiers +008051 +Qualifier for number of missing values in calculation of statistic +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +480 +08 +Significance qualifiers +008052 +Condition for which number of days of occurrence follows +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +481 +08 +Significance qualifiers +008053 +Day of occurrence qualifier +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +482 +08 +Significance qualifiers +008054 +Qualifier for wind speed or wind gusts +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +483 +08 +Significance qualifiers +008060 +Sample scanning mode significance +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +484 +08 +Significance qualifiers +008065 +Sun-glint indicator +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +485 +08 +Significance qualifiers +008066 +Semi-transparency indicator +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +486 +08 +Significance qualifiers +008070 +Vertical sounding product qualifier +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +487 +08 +Significance qualifiers +008072 +Pixel(s) type +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +488 +08 +Significance qualifiers +008074 +Altimeter echo type +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +489 +08 +Significance qualifiers +008075 +Ascending/descending orbit qualifier +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +490 +08 +Significance qualifiers +008076 +Type of band +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +491 +08 +Significance qualifiers +008077 +Radiometer sensed surface type +Code table +0 +0 +7 +Code table +0 +3 +Operational + + +492 +08 +Significance qualifiers +008079 +Product status +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +493 +08 +Significance qualifiers +008080 +Qualifier for GTSPP quality flag +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +494 +08 +Significance qualifiers +008081 +Type of equipment +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +495 +08 +Significance qualifiers +008082 +Modification of sensor height to another value +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +496 +08 +Significance qualifiers +008083 +Nominal value indicator +Flag table +0 +0 +15 +Flag table +0 +5 +Operational + + +497 +08 +Significance qualifiers +008085 +Beam identifier +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +498 +08 +Significance qualifiers +008086 +Vertical significance for NWP +Flag table +0 +0 +12 +Flag table +0 +4 +Operational + + +499 +08 +Significance qualifiers +008087 +Corner position of observation +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +500 +08 +Significance qualifiers +008088 +Map significance +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +501 +08 +Significance qualifiers +008090 +Decimal scale of following significands +Numeric +0 +-127 +8 +Numeric +0 +3 +Operational + + +502 +08 +Significance qualifiers +008091 +Coordinates significance +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +503 +08 +Significance qualifiers +008092 +Measurement uncertainty expression +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +504 +08 +Significance qualifiers +008093 +Measurement uncertainty significance +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +505 +10 +Non-coordinate location (vertical) +010001 +Height of land surface +m +0 +-400 +15 +m +0 +5 +Operational + + +506 +10 +Non-coordinate location (vertical) +010002 +Height +m +-1 +-40 +16 +m +-1 +5 +Operational + + +507 +10 +Non-coordinate location (vertical) +010003 +Geopotential +m2 s-2 +-1 +-400 +17 +m2 s-2 +-1 +6 +Operational + + +508 +10 +Non-coordinate location (vertical) +010004 +Pressure +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +509 +10 +Non-coordinate location (vertical) +010007 +Height +m +0 +-1000 +17 +m +0 +6 +Operational + + +510 +10 +Non-coordinate location (vertical) +010008 +Geopotential +m2 s-2 +0 +-10000 +20 +m2 s-2 +0 +7 +Operational + + +511 +10 +Non-coordinate location (vertical) +010009 +Geopotential height +gpm +0 +-1000 +17 +gpm +0 +5 +Operational + + +512 +10 +Non-coordinate location (vertical) +010010 +Minimum pressure reduced to mean sea level +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +513 +10 +Non-coordinate location (vertical) +010011 +Maximum pressure reduced to mean sea level +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +514 +10 +Non-coordinate location (vertical) +010031 +In direction of the North Pole, distance from the Earth's centre +(see Notes 2 and 3) +m +2 +-1073741824 +31 +m +2 +10 +Operational + + +515 +10 +Non-coordinate location (vertical) +010032 +Satellite distance to Earth's centre +m +1 +0 +27 +m +2 +9 +Operational + + +516 +10 +Non-coordinate location (vertical) +010033 +Altitude (platform to ellipsoid) +m +1 +0 +27 +m +2 +9 +Operational + + +517 +10 +Non-coordinate location (vertical) +010034 +Earth's radius +m +1 +0 +27 +m +2 +9 +Operational + + +518 +10 +Non-coordinate location (vertical) +010035 +Earth's local radius of curvature +m +1 +62000000 +22 +m +1 +8 +Operational + + +519 +10 +Non-coordinate location (vertical) +010036 +Geoid undulation +(see Note 4) +m +2 +-15000 +15 +m +2 +6 +Operational + + +520 +10 +Non-coordinate location (vertical) +010038 +Maximum height of deck cargo above summer load line +m +0 +0 +6 +m +0 +2 +Operational + + +521 +10 +Non-coordinate location (vertical) +010039 +Departure of reference level (summer maximum load line) from actual sea level +m +0 +-32 +6 +m +0 +3 +Operational + + +522 +10 +Non-coordinate location (vertical) +010040 +Number of retrieved layers +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +523 +10 +Non-coordinate location (vertical) +010050 +Standard deviation altitude +m +2 +0 +16 +m +2 +5 +Operational + + +524 +10 +Non-coordinate location (vertical) +010051 +Pressure reduced to mean sea level +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +525 +10 +Non-coordinate location (vertical) +010052 +Altimeter setting (QNH) +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +526 +10 +Non-coordinate location (vertical) +010053 +Global navigation satellite system altitude +m +0 +-1000 +17 +m +0 +5 +Operational + + +527 +10 +Non-coordinate location (vertical) +010060 +Pressure change +Pa +-1 +-1024 +11 +Pa +-1 +4 +Operational + + +528 +10 +Non-coordinate location (vertical) +010061 +3-hour pressure change +Pa +-1 +-500 +10 +Pa +-1 +4 +Operational + + +529 +10 +Non-coordinate location (vertical) +010062 +24-hour pressure change +Pa +-1 +-1000 +11 +Pa +-1 +4 +Operational + + +530 +10 +Non-coordinate location (vertical) +010063 +Characteristic of pressure tendency +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +531 +10 +Non-coordinate location (vertical) +010064 +SIGMET cruising level +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +532 +10 +Non-coordinate location (vertical) +010070 +Indicated aircraft altitude +m +0 +-400 +16 +m +0 +5 +Operational + + +533 +10 +Non-coordinate location (vertical) +010071 +Vertical resolution +m +0 +0 +14 +m +0 +5 +Operational + + +534 +10 +Non-coordinate location (vertical) +010079 +Off-nadir angle of the satellite from platform data +deg +4 +0 +16 +deg +4 +5 +Operational + + +535 +10 +Non-coordinate location (vertical) +010080 +Viewing zenith angle +deg +2 +-9000 +15 +deg +2 +5 +Operational + + +536 +10 +Non-coordinate location (vertical) +010081 +Altitude of COG above reference ellipsoid +m +3 +0 +31 +m +3 +10 +Operational + + +537 +10 +Non-coordinate location (vertical) +010082 +Instantaneous altitude rate +m/s +3 +-65536 +17 +m/s +3 +6 +Operational + + +538 +10 +Non-coordinate location (vertical) +010083 +Squared off-nadir angle of the satellite from platform data +deg2 +2 +0 +16 +deg2 +2 +5 +Operational + + +539 +10 +Non-coordinate location (vertical) +010084 +Squared off-nadir angle of the satellite from waveform data +deg2 +2 +0 +16 +deg2 +2 +5 +Operational + + +540 +10 +Non-coordinate location (vertical) +010085 +Mean sea-surface height +m +3 +-131072 +18 +m +3 +6 +Operational + + +541 +10 +Non-coordinate location (vertical) +010086 +Geoid's height +m +3 +-131072 +18 +m +3 +6 +Operational + + +542 +10 +Non-coordinate location (vertical) +010087 +Ocean depth/land elevation +m +1 +-131072 +18 +m +1 +6 +Operational + + +543 +10 +Non-coordinate location (vertical) +010088 +Total geocentric ocean tide height (solution 1) +m +3 +-32768 +16 +m +3 +5 +Operational + + +544 +10 +Non-coordinate location (vertical) +010089 +Total geocentric ocean tide height (solution 2) +m +3 +-32768 +16 +m +3 +5 +Operational + + +545 +10 +Non-coordinate location (vertical) +010090 +Long period tide height +m +3 +-32768 +16 +m +3 +5 +Operational + + +546 +10 +Non-coordinate location (vertical) +010091 +Tidal loading height +m +3 +-32768 +16 +m +3 +5 +Operational + + +547 +10 +Non-coordinate location (vertical) +010092 +Solid Earth tide height +m +3 +-32768 +16 +m +3 +5 +Operational + + +548 +10 +Non-coordinate location (vertical) +010093 +Geocentric pole tide height +m +3 +-32768 +16 +m +3 +5 +Operational + + +549 +10 +Non-coordinate location (vertical) +010095 +Height of atmosphere used +m +0 +0 +16 +m +0 +5 +Operational + + +550 +10 +Non-coordinate location (vertical) +010096 +Mean dynamic topography +m +3 +-131072 +18 +m +3 +6 +Operational + + +551 +10 +Non-coordinate location (vertical) +010097 +Mean sea-surface height from altimeter only +m +3 +-131072 +18 +m +3 +6 +Operational + + +552 +10 +Non-coordinate location (vertical) +010098 +Loading tide height geocentric ocean tide solution 1 +m +4 +-2000 +12 +m +4 +4 +Operational + + +553 +10 +Non-coordinate location (vertical) +010099 +Loading tide height geocentric ocean tide solution 2 +m +4 +-2000 +12 +m +4 +4 +Operational + + +554 +10 +Non-coordinate location (vertical) +010100 +Non-equilibrium long period tide height +m +4 +-2000 +12 +m +4 +4 +Operational + + +555 +10 +Non-coordinate location (vertical) +010101 +Squared off-nadir angle of the satellite from waveform data +deg2 +2 +-32768 +16 +deg2 +2 +5 +Operational + + +556 +10 +Non-coordinate location (vertical) +010102 +Sea-surface height anomaly +m +3 +-32768 +16 +m +3 +5 +Operational + + +557 +10 +Non-coordinate location (vertical) +010103 +Mean dynamic topography accuracy +m +3 +-131072 +18 +m +3 +6 +Operational + + +558 +11 +Wind and turbulence +011001 +Wind direction +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +559 +11 +Wind and turbulence +011002 +Wind speed +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +560 +11 +Wind and turbulence +011003 +u-component +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +561 +11 +Wind and turbulence +011004 +v-component +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +562 +11 +Wind and turbulence +011005 +w-component +Pa/s +1 +-512 +10 +Pa/s +1 +4 +Operational + + +563 +11 +Wind and turbulence +011006 +w-component +m/s +2 +-4096 +13 +m/s +2 +4 +Operational + + +564 +11 +Wind and turbulence +011007 +Relative wind direction (in degrees off bow) +deg +0 +0 +9 +deg +0 +3 +Operational + + +565 +11 +Wind and turbulence +011008 +Relative wind speed +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +566 +11 +Wind and turbulence +011010 +Wind direction associated with wind speed which follows +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +567 +11 +Wind and turbulence +011011 +Wind direction at 10 m +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +568 +11 +Wind and turbulence +011012 +Wind speed at 10 m +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +569 +11 +Wind and turbulence +011013 +Wind direction at 5 m +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +570 +11 +Wind and turbulence +011014 +Wind speed at 5 m +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +571 +11 +Wind and turbulence +011016 +Extreme counterclockwise wind direction of a variable wind +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +572 +11 +Wind and turbulence +011017 +Extreme clockwise wind direction of a variable wind +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +573 +11 +Wind and turbulence +011019 +Steadiness of wind +(see Note 6) +% +0 +0 +7 +% +0 +3 +Operational + + +574 +11 +Wind and turbulence +011021 +Relative vorticity +/s +9 +-65536 +17 +/s +9 +6 +Operational + + +575 +11 +Wind and turbulence +011022 +Divergence +/s +9 +-65536 +17 +/s +9 +6 +Operational + + +576 +11 +Wind and turbulence +011023 +Velocity potential +m2/s +-2 +-65536 +17 +m2/s +-2 +6 +Operational + + +577 +11 +Wind and turbulence +011030 +Extended degree of turbulence +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +578 +11 +Wind and turbulence +011031 +Degree of turbulence +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +579 +11 +Wind and turbulence +011032 +Height of base of turbulence +m +-1 +-40 +16 +m +-1 +5 +Operational + + +580 +11 +Wind and turbulence +011033 +Height of top of turbulence +m +-1 +-40 +16 +m +-1 +5 +Operational + + +581 +11 +Wind and turbulence +011034 +Vertical gust velocity +m/s +1 +-1024 +11 +m/s +1 +4 +Operational + + +582 +11 +Wind and turbulence +011035 +Vertical gust acceleration +m s-2 +2 +-8192 +14 +m s-2 +2 +5 +Operational + + +583 +11 +Wind and turbulence +011036 +Maximum derived equivalent vertical gust speed +m/s +1 +0 +10 +m/s +1 +4 +Operational + + +584 +11 +Wind and turbulence +011037 +Turbulence index +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +585 +11 +Wind and turbulence +011038 +Time of occurrence of peak eddy dissipation rate +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +586 +11 +Wind and turbulence +011039 +Extended time of occurrence of peak eddy dissipation rate +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +587 +11 +Wind and turbulence +011040 +Maximum wind speed (mean wind) +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +588 +11 +Wind and turbulence +011041 +Maximum wind gust speed +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +589 +11 +Wind and turbulence +011042 +Maximum wind speed (10-minute mean wind) +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +590 +11 +Wind and turbulence +011043 +Maximum wind gust direction +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +591 +11 +Wind and turbulence +011044 +Mean wind direction for surface - 1 500 m (5 000 feet) +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +592 +11 +Wind and turbulence +011045 +Mean wind speed for surface - 1 500 m (5 000 feet) +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +593 +11 +Wind and turbulence +011046 +Maximum instantaneous wind speed +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +594 +11 +Wind and turbulence +011047 +Maximum instantaneous wind speed over 10 minutes +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +595 +11 +Wind and turbulence +011049 +Standard deviation of wind direction +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +596 +11 +Wind and turbulence +011050 +Standard deviation of horizontal wind speed +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +597 +11 +Wind and turbulence +011051 +Standard deviation of vertical wind speed +m/s +1 +0 +8 +m/s +1 +3 +Operational + + +598 +11 +Wind and turbulence +011052 +Formal uncertainty in wind speed +m/s +2 +0 +13 +m/s +2 +5 +Operational + + +599 +11 +Wind and turbulence +011053 +Formal uncertainty in wind direction +degree true +2 +0 +15 +degree true +2 +5 +Operational + + +600 +11 +Wind and turbulence +011054 +Mean wind direction for 1 500 - 3 000 m +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +601 +11 +Wind and turbulence +011055 +Mean wind speed for 1 500 - 3 000 m +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +602 +11 +Wind and turbulence +011061 +Absolute wind shear in 1 km layer below +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +603 +11 +Wind and turbulence +011062 +Absolute wind shear in 1 km layer above +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +604 +11 +Wind and turbulence +011070 +Designator of the runway affected by wind shear (including ALL) +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +605 +11 +Wind and turbulence +011071 +Turbulent vertical momentum flux +m2 s-2 +3 +-128 +14 +m2 s-2 +3 +5 +Operational + + +606 +11 +Wind and turbulence +011072 +Turbulent vertical buoyancy flux +K m s-1 +3 +-128 +11 +K m s-1 +3 +4 +Operational + + +607 +11 +Wind and turbulence +011073 +Turbulent kinetic energy +m2 s-2 +2 +-1024 +13 +m2 s-2 +2 +4 +Operational + + +608 +11 +Wind and turbulence +011074 +Dissipation energy +m2 s-2 +2 +-1024 +10 +m2 s-2 +2 +4 +Operational + + +609 +11 +Wind and turbulence +011075 +Mean turbulence intensity (eddy dissipation rate) +m2/3 s-1 +2 +0 +8 +m2/3 s-1 +2 +3 +Operational + + +610 +11 +Wind and turbulence +011076 +Peak turbulence intensity (eddy dissipation rate) +m2/3 s-1 +2 +0 +8 +m2/3 s-1 +2 +3 +Operational + + +611 +11 +Wind and turbulence +011077 +Reporting interval or averaging time for eddy dissipation rate +s +0 +0 +12 +s +0 +4 +Operational + + +612 +11 +Wind and turbulence +011081 +Model wind direction at 10 m +degree true +2 +0 +16 +degree true +2 +5 +Operational + + +613 +11 +Wind and turbulence +011082 +Model wind speed at 10 m +m/s +2 +0 +14 +m/s +2 +4 +Operational + + +614 +11 +Wind and turbulence +011083 +Wind speed +km/h +0 +0 +9 +km/h +0 +3 +Operational + + +615 +11 +Wind and turbulence +011084 +Wind speed +kt +0 +0 +8 +kt +0 +3 +Operational + + +616 +11 +Wind and turbulence +011085 +Maximum wind gust speed +km/h +0 +0 +9 +km/h +0 +3 +Operational + + +617 +11 +Wind and turbulence +011086 +Maximum wind gust speed +kt +0 +0 +8 +kt +0 +3 +Operational + + +618 +11 +Wind and turbulence +011095 +u-component of the model wind vector +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +619 +11 +Wind and turbulence +011096 +v-component of the model wind vector +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +620 +11 +Wind and turbulence +011097 +Wind speed from altimeter +m/s +2 +0 +12 +m/s +2 +4 +Operational + + +621 +11 +Wind and turbulence +011098 +Wind speed from radiometer +m/s +2 +0 +12 +m/s +2 +4 +Operational + + +622 +11 +Wind and turbulence +011100 +Aircraft true airspeed +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +623 +11 +Wind and turbulence +011101 +Aircraft ground speed u-component +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +624 +11 +Wind and turbulence +011102 +Aircraft ground speed v-component +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +625 +11 +Wind and turbulence +011103 +Aircraft ground speed w-component +m/s +1 +-512 +10 +m/s +1 +3 +Operational + + +626 +11 +Wind and turbulence +011104 +True heading of aircraft, ship or other mobile platform +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +627 +11 +Wind and turbulence +011105 +EDR algorithm version +Numeric +0 +0 +6 +Numeric +0 +2 +Operational + + +628 +11 +Wind and turbulence +011106 +Running minimum confidence +Numeric +1 +0 +4 +Numeric +1 +2 +Operational + + +629 +11 +Wind and turbulence +011107 +Maximum number bad inputs +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +630 +11 +Wind and turbulence +011108 +Peak location +Numeric +1 +0 +4 +Numeric +1 +2 +Operational + + +631 +11 +Wind and turbulence +011109 +Number of good EDR +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +632 +11 +Wind and turbulence +011110 +Uncertainty in u-component +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +633 +11 +Wind and turbulence +011111 +Uncertainty in v-component +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +634 +11 +Wind and turbulence +011112 +Uncertainty in w-component +m/s +2 +-4096 +13 +m/s +2 +4 +Operational + + +635 +11 +Wind and turbulence +011113 +Tracking correlation of vector +Numeric +3 +-1000 +12 +Numeric +3 +4 +Operational + + +636 +12 +Temperature +012001 +Temperature/air temperature +K +1 +0 +12 +C +1 +3 +Operational + + +637 +12 +Temperature +012002 +Wet-bulb temperature +K +1 +0 +12 +C +1 +3 +Operational + + +638 +12 +Temperature +012003 +Dewpoint temperature +K +1 +0 +12 +C +1 +3 +Operational + + +639 +12 +Temperature +012004 +Air temperature at 2 m +K +1 +0 +12 +C +1 +3 +Operational + + +640 +12 +Temperature +012005 +Wet-bulb temperature at 2 m +K +1 +0 +12 +C +1 +3 +Operational + + +641 +12 +Temperature +012006 +Dewpoint temperature at 2 m +K +1 +0 +12 +C +1 +3 +Operational + + +642 +12 +Temperature +012007 +Virtual temperature +K +1 +0 +12 +C +1 +3 +Operational + + +643 +12 +Temperature +012008 +Uncertainty in virtual temperature +K +1 +0 +12 +C +1 +4 +Operational + + +644 +12 +Temperature +012011 +Maximum temperature, at height and over period specified +K +1 +0 +12 +C +1 +3 +Operational + + +645 +12 +Temperature +012012 +Minimum temperature, at height and over period specified +K +1 +0 +12 +C +1 +3 +Operational + + +646 +12 +Temperature +012013 +Ground minimum temperature, past 12 hours +K +1 +0 +12 +C +1 +3 +Operational + + +647 +12 +Temperature +012014 +Maximum temperature at 2 m, past 12 hours +K +1 +0 +12 +C +1 +3 +Operational + + +648 +12 +Temperature +012015 +Minimum temperature at 2 m, past 12 hours +K +1 +0 +12 +C +1 +3 +Operational + + +649 +12 +Temperature +012016 +Maximum temperature at 2 m, past 24 hours +K +1 +0 +12 +C +1 +3 +Operational + + +650 +12 +Temperature +012017 +Minimum temperature at 2 m, past 24 hours +K +1 +0 +12 +C +1 +3 +Operational + + +651 +12 +Temperature +012021 +Maximum temperature at 2 m +K +2 +0 +16 +C +2 +4 +Operational + + +652 +12 +Temperature +012022 +Minimum temperature at 2 m +K +2 +0 +16 +C +2 +4 +Operational + + +653 +12 +Temperature +012023 +Temperature +C +0 +-99 +8 +C +0 +2 +Operational + + +654 +12 +Temperature +012024 +Dewpoint temperature +C +0 +-99 +8 +C +0 +2 +Operational + + +655 +12 +Temperature +012030 +Soil temperature +K +1 +0 +12 +C +1 +3 +Operational + + +656 +12 +Temperature +012049 +Temperature change over specified period +K +0 +-30 +6 +C +0 +2 +Operational + + +657 +12 +Temperature +012051 +Standard deviation temperature +K +1 +0 +10 +C +1 +3 +Operational + + +658 +12 +Temperature +012052 +Highest daily mean temperature +K +1 +0 +12 +C +1 +3 +Operational + + +659 +12 +Temperature +012053 +Lowest daily mean temperature +K +1 +0 +12 +C +1 +3 +Operational + + +660 +12 +Temperature +012060 +AWS enclosure internal temperature +K +1 +0 +12 +C +1 +3 +Operational + + +661 +12 +Temperature +012061 +Skin temperature +K +1 +0 +12 +C +1 +3 +Operational + + +662 +12 +Temperature +012062 +Equivalent black body temperature +K +1 +0 +12 +C +1 +3 +Operational + + +663 +12 +Temperature +012063 +Brightness temperature +K +1 +0 +12 +C +1 +3 +Operational + + +664 +12 +Temperature +012064 +Instrument temperature +K +1 +0 +12 +K +1 +4 +Operational + + +665 +12 +Temperature +012065 +Standard deviation brightness temperature +K +1 +0 +12 +K +1 +4 +Operational + + +666 +12 +Temperature +012066 +Antenna temperature +K +2 +0 +16 +C +2 +5 +Operational + + +667 +12 +Temperature +012070 +Warm load temperature +K +2 +0 +16 +K +2 +5 +Operational + + +668 +12 +Temperature +012071 +Coldest cluster temperature +K +1 +0 +12 +K +1 +4 +Operational + + +669 +12 +Temperature +012072 +Radiance +W m-2 sr-1 +6 +0 +31 +W m-2 sr-1 +6 +9 +Operational + + +670 +12 +Temperature +012075 +Spectral radiance +W m-3 sr-1 +-3 +0 +16 +W m-3 sr-1 +-3 +5 +Operational + + +671 +12 +Temperature +012076 +Radiance +(see Note 2) +W m-2 sr-1 +3 +0 +16 +W m-2 sr-1 +3 +5 +Operational + + +672 +12 +Temperature +012080 +Brightness temperature real part +K +2 +-10000 +16 +K +2 +5 +Operational + + +673 +12 +Temperature +012081 +Brightness temperature imaginary part +K +2 +-10000 +16 +K +2 +5 +Operational + + +674 +12 +Temperature +012082 +Pixel radiometric accuracy +K +2 +0 +12 +K +2 +4 +Operational + + +675 +12 +Temperature +012101 +Temperature/air temperature +K +2 +0 +16 +C +2 +4 +Operational + + +676 +12 +Temperature +012102 +Wet-bulb temperature +K +2 +0 +16 +C +2 +4 +Operational + + +677 +12 +Temperature +012103 +Dewpoint temperature +K +2 +0 +16 +C +2 +4 +Operational + + +678 +12 +Temperature +012104 +Air temperature at 2 m +K +2 +0 +16 +C +2 +4 +Operational + + +679 +12 +Temperature +012105 +Web-bulb temperature at 2 m +K +2 +0 +16 +C +2 +4 +Operational + + +680 +12 +Temperature +012106 +Dewpoint temperature at 2 m +K +2 +0 +16 +C +2 +4 +Operational + + +681 +12 +Temperature +012107 +Virtual temperature +K +2 +0 +16 +C +2 +4 +Operational + + +682 +12 +Temperature +012111 +Maximum temperature, at height and over period specified +K +2 +0 +16 +C +2 +4 +Operational + + +683 +12 +Temperature +012112 +Minimum temperature, at height and over period specified +K +2 +0 +16 +C +2 +4 +Operational + + +684 +12 +Temperature +012113 +Ground minimum temperature, past 12 hours +K +2 +0 +16 +C +2 +4 +Operational + + +685 +12 +Temperature +012114 +Maximum temperature at 2 m, past 12 hours +K +2 +0 +16 +C +2 +4 +Operational + + +686 +12 +Temperature +012115 +Minimum temperature at 2 m, past 12 hours +K +2 +0 +16 +C +2 +4 +Operational + + +687 +12 +Temperature +012116 +Maximum temperature at 2 m, past 24 hours +K +2 +0 +16 +C +2 +4 +Operational + + +688 +12 +Temperature +012117 +Minimum temperature at 2 m, past 24 hours +K +2 +0 +16 +C +2 +4 +Operational + + +689 +12 +Temperature +012118 +Maximum temperature at height specified, past 24 hours +K +2 +0 +16 +C +2 +4 +Operational + + +690 +12 +Temperature +012119 +Minimum temperature at height specified, past 24 hours +K +2 +0 +16 +C +2 +4 +Operational + + +691 +12 +Temperature +012120 +Ground temperature +K +2 +0 +16 +C +2 +4 +Operational + + +692 +12 +Temperature +012121 +Ground minimum temperature +K +2 +0 +16 +C +2 +4 +Operational + + +693 +12 +Temperature +012122 +Ground minimum temperature of the preceding night +K +2 +0 +16 +C +2 +4 +Operational + + +694 +12 +Temperature +012128 +Road surface temperature +K +2 +0 +16 +C +2 +5 +Operational + + +695 +12 +Temperature +012129 +Road subsurface temperature +K +2 +0 +16 +C +2 +5 +Operational + + +696 +12 +Temperature +012130 +Soil temperature +K +2 +0 +16 +C +2 +4 +Operational + + +697 +12 +Temperature +012131 +Snow temperature +K +2 +0 +16 +C +2 +4 +Operational + + +698 +12 +Temperature +012132 +Ice surface temperature +K +2 +0 +16 +C +2 +4 +Operational + + +699 +12 +Temperature +012151 +Standard deviation of daily mean temperature +K +2 +0 +12 +C +2 +4 +Operational + + +700 +12 +Temperature +012152 +Highest daily mean temperature +K +2 +0 +16 +C +2 +4 +Operational + + +701 +12 +Temperature +012153 +Lowest daily mean temperature +K +2 +0 +16 +C +2 +4 +Operational + + +702 +12 +Temperature +012158 +Noise-equivalent delta temperature while viewing cold target +K +2 +0 +12 +C +2 +4 +Operational + + +703 +12 +Temperature +012159 +Noise-equivalent delta temperature while viewing warm target +K +2 +0 +12 +C +2 +4 +Operational + + +704 +12 +Temperature +012161 +Skin temperature +K +2 +0 +16 +C +2 +4 +Operational + + +705 +12 +Temperature +012162 +Equivalent black body temperature +K +2 +0 +16 +C +2 +4 +Operational + + +706 +12 +Temperature +012163 +Brightness temperature +K +2 +0 +16 +C +2 +4 +Operational + + +707 +12 +Temperature +012164 +Instrument temperature +K +2 +0 +16 +K +2 +5 +Operational + + +708 +12 +Temperature +012165 +Direct sun brightness temperature +K +0 +0 +23 +K +0 +7 +Operational + + +709 +12 +Temperature +012166 +Snapshot accuracy +K +1 +-4000 +13 +K +1 +4 +Operational + + +710 +12 +Temperature +012167 +Radiometric accuracy (pure polarization) +K +1 +0 +9 +K +1 +3 +Operational + + +711 +12 +Temperature +012168 +Radiometric accuracy (cross polarization) +K +1 +0 +9 +K +1 +3 +Operational + + +712 +12 +Temperature +012171 +Coldest cluster temperature +K +2 +0 +16 +K +2 +5 +Operational + + +713 +12 +Temperature +012180 +Averaged 12 micron BT for all clear pixels at nadir +K +2 +0 +16 +K +2 +5 +Operational + + +714 +12 +Temperature +012181 +Averaged 11 micron BT for all clear pixels at nadir +K +2 +0 +16 +K +2 +5 +Operational + + +715 +12 +Temperature +012182 +Averaged 3.7 micron BT for all clear pixels at nadir +K +2 +0 +16 +K +2 +5 +Operational + + +716 +12 +Temperature +012183 +Averaged 12 micron BT for all clear pixels, forward view +K +2 +0 +16 +K +2 +5 +Operational + + +717 +12 +Temperature +012184 +Averaged 11 micron BT for all clear pixels, forward view +K +2 +0 +16 +K +2 +5 +Operational + + +718 +12 +Temperature +012185 +Averaged 3.7 micron BT for all clear pixels, forward view +K +2 +0 +16 +K +2 +5 +Operational + + +719 +12 +Temperature +012186 +Mean nadir sea-surface temperature +K +2 +0 +16 +K +2 +5 +Operational + + +720 +12 +Temperature +012187 +Mean dual view sea-surface temperature +K +2 +0 +16 +K +2 +5 +Operational + + +721 +12 +Temperature +012188 +Interpolated 23.8 GHz brightness T from MWR +K +2 +0 +16 +K +2 +5 +Operational + + +722 +12 +Temperature +012189 +Interpolated 36.5 GHz brightness T from MWR +K +2 +0 +16 +K +2 +5 +Operational + + +723 +13 +Hydrographic and hydrological elements +013001 +Specific humidity +kg/kg +5 +0 +14 +kg/kg +5 +5 +Operational + + +724 +13 +Hydrographic and hydrological elements +013002 +Mixing ratio +kg/kg +5 +0 +14 +kg/kg +5 +5 +Operational + + +725 +13 +Hydrographic and hydrological elements +013003 +Relative humidity +% +0 +0 +7 +% +0 +3 +Operational + + +726 +13 +Hydrographic and hydrological elements +013004 +Vapour pressure +Pa +-1 +0 +10 +Pa +-1 +4 +Operational + + +727 +13 +Hydrographic and hydrological elements +013005 +Vapour density +kg m-3 +3 +0 +7 +kg m-3 +3 +3 +Operational + + +728 +13 +Hydrographic and hydrological elements +013006 +Mixing heights +m +-1 +-40 +16 +m +-1 +5 +Operational + + +729 +13 +Hydrographic and hydrological elements +013007 +Minimum relative humidity +% +0 +0 +7 +% +0 +3 +Operational + + +730 +13 +Hydrographic and hydrological elements +013008 +Maximum relative humidity +% +0 +0 +7 +% +0 +3 +Operational + + +731 +13 +Hydrographic and hydrological elements +013009 +Relative humidity +(see Note 6) +% +1 +-1000 +12 +% +1 +4 +Operational + + +732 +13 +Hydrographic and hydrological elements +013011 +Total precipitation/total water equivalent +kg m-2 +1 +-1 +14 +kg m-2 +1 +5 +Operational + + +733 +13 +Hydrographic and hydrological elements +013012 +Depth of fresh snow +m +2 +-2 +12 +m +2 +4 +Operational + + +734 +13 +Hydrographic and hydrological elements +013013 +Total snow depth +m +2 +-2 +16 +m +2 +5 +Operational + + +735 +13 +Hydrographic and hydrological elements +013014 +Rainfall/water equivalent of snow (averaged rate) +kg m-2 s-1 +4 +0 +12 +kg m-2 s-1 +4 +4 +Operational + + +736 +13 +Hydrographic and hydrological elements +013015 +Snowfall (averaged rate) +m/s +7 +0 +12 +m/s +7 +4 +Operational + + +737 +13 +Hydrographic and hydrological elements +013016 +Precipitable water +kg m-2 +0 +0 +7 +kg m-2 +0 +3 +Operational + + +738 +13 +Hydrographic and hydrological elements +013019 +Total precipitation past 1 hour +kg m-2 +1 +-1 +14 +kg m-2 +1 +4 +Operational + + +739 +13 +Hydrographic and hydrological elements +013020 +Total precipitation past 3 hours +kg m-2 +1 +-1 +14 +kg m-2 +1 +5 +Operational + + +740 +13 +Hydrographic and hydrological elements +013021 +Total precipitation past 6 hours +kg m-2 +1 +-1 +14 +kg m-2 +1 +5 +Operational + + +741 +13 +Hydrographic and hydrological elements +013022 +Total precipitation past 12 hours +kg m-2 +1 +-1 +14 +kg m-2 +1 +5 +Operational + + +742 +13 +Hydrographic and hydrological elements +013023 +Total precipitation past 24 hours +kg m-2 +1 +-1 +14 +kg m-2 +1 +5 +Operational + + +743 +13 +Hydrographic and hydrological elements +013031 +Evapotranspiration +kg m-2 +0 +0 +7 +kg m-2 +0 +3 +Operational + + +744 +13 +Hydrographic and hydrological elements +013032 +Evaporation/evapotranspiration +(see Note 5) +kg m-2 +1 +0 +8 +kg m-2 +1 +3 +Operational + + +745 +13 +Hydrographic and hydrological elements +013033 +Evaporation/evapotranspiration +kg m-2 +1 +0 +10 +kg m-2 +1 +4 +Operational + + +746 +13 +Hydrographic and hydrological elements +013038 +Superadiabatic indicator +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +747 +13 +Hydrographic and hydrological elements +013039 +Terrain type (ice/snow) +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +748 +13 +Hydrographic and hydrological elements +013040 +Surface flag +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +749 +13 +Hydrographic and hydrological elements +013041 +Pasquill-Gifford stability category +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +750 +13 +Hydrographic and hydrological elements +013042 +Parcel lifted index (to 500 hPa) +(see Notes 3 and 4) +K +0 +-20 +6 +K +0 +2 +Operational + + +751 +13 +Hydrographic and hydrological elements +013043 +Best lifted index (to 500 hPa) +(see Notes 3 and 4) +K +0 +-20 +6 +K +0 +2 +Operational + + +752 +13 +Hydrographic and hydrological elements +013044 +K index +K +0 +-30 +8 +K +0 +3 +Operational + + +753 +13 +Hydrographic and hydrological elements +013045 +KO index +K +0 +-30 +8 +K +0 +3 +Operational + + +754 +13 +Hydrographic and hydrological elements +013046 +Maximum buoyancy +K +0 +-30 +8 +K +0 +3 +Operational + + +755 +13 +Hydrographic and hydrological elements +013047 +Modified Showalter stability index +(see Note 7) +K +0 +-60 +6 +C +0 +2 +Operational + + +756 +13 +Hydrographic and hydrological elements +013048 +Water fraction +% +1 +0 +10 +% +1 +4 +Operational + + +757 +13 +Hydrographic and hydrological elements +013051 +Frequency group, precipitation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +758 +13 +Hydrographic and hydrological elements +013052 +Highest daily amount of precipitation +kg m-2 +1 +-1 +14 +kg m-2 +1 +5 +Operational + + +759 +13 +Hydrographic and hydrological elements +013055 +Intensity of precipitation +kg m-2 s-1 +4 +0 +8 +mm/h +1 +4 +Operational + + +760 +13 +Hydrographic and hydrological elements +013056 +Character and intensity of precipitation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +761 +13 +Hydrographic and hydrological elements +013057 +Time of beginning or end of precipitation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +762 +13 +Hydrographic and hydrological elements +013058 +Size of precipitating element +m +4 +0 +7 +mm +1 +3 +Operational + + +763 +13 +Hydrographic and hydrological elements +013059 +Number of flashes (thunderstorm) +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +764 +13 +Hydrographic and hydrological elements +013060 +Total accumulated precipitation +kg m-2 +1 +-1 +17 +kg m-2 +1 +5 +Operational + + +765 +13 +Hydrographic and hydrological elements +013071 +Upstream water level +m +2 +0 +14 +m +2 +4 +Operational + + +766 +13 +Hydrographic and hydrological elements +013072 +Downstream water level +m +2 +0 +14 +m +2 +4 +Operational + + +767 +13 +Hydrographic and hydrological elements +013073 +Maximum water level +m +2 +0 +14 +m +2 +4 +Operational + + +768 +13 +Hydrographic and hydrological elements +013074 +Ground water level +m +2 +0 +18 +m +2 +6 +Operational + + +769 +13 +Hydrographic and hydrological elements +013080 +Water pH +pH unit +1 +0 +10 +pH unit +1 +3 +Operational + + +770 +13 +Hydrographic and hydrological elements +013081 +Water conductivity +S/m +3 +0 +14 +S/m +3 +4 +Operational + + +771 +13 +Hydrographic and hydrological elements +013082 +Water temperature +K +1 +0 +12 +K +1 +4 +Operational + + +772 +13 +Hydrographic and hydrological elements +013083 +Dissolved oxygen +kg m-3 +6 +0 +15 +kg m-3 +6 +5 +Operational + + +773 +13 +Hydrographic and hydrological elements +013084 +Turbidity +lm +0 +0 +14 +lm +0 +4 +Operational + + +774 +13 +Hydrographic and hydrological elements +013085 +Oxidation Reduction Potential (ORP) +V +3 +0 +14 +V +3 +4 +Operational + + +775 +13 +Hydrographic and hydrological elements +013090 +Radiometer water vapour content +kg m-2 +1 +0 +10 +kg m-2 +1 +4 +Operational + + +776 +13 +Hydrographic and hydrological elements +013091 +Radiometer liquid content +kg m-2 +2 +0 +8 +kg m-2 +2 +3 +Operational + + +777 +13 +Hydrographic and hydrological elements +013093 +Cloud optical thickness +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +778 +13 +Hydrographic and hydrological elements +013095 +Total column water vapour +kg m-2 +4 +0 +19 +kg m-2 +4 +6 +Operational + + +779 +13 +Hydrographic and hydrological elements +013096 +MWR water vapour content +kg m-2 +2 +0 +14 +kg m-2 +2 +5 +Operational + + +780 +13 +Hydrographic and hydrological elements +013097 +MWR liquid water content +kg m-2 +2 +0 +14 +kg m-2 +2 +5 +Operational + + +781 +13 +Hydrographic and hydrological elements +013098 +Integrated water vapour density +kg m-2 +8 +0 +30 +kg m-2 +8 +10 +Operational + + +782 +13 +Hydrographic and hydrological elements +013099 +Log10 of integrated cloud particle density +log(m-2) +1 +0 +7 +log(m-2) +1 +3 +Operational + + +783 +13 +Hydrographic and hydrological elements +013100 +Log10 of integrated cloud particle area +log(m2 m-2) +1 +-70 +7 +log(m2 m-2) +1 +2 +Operational + + +784 +13 +Hydrographic and hydrological elements +013101 +Log10 of integrated cloud particle volume +log(m3 m-2) +1 +-140 +7 +log(m3 m-2) +1 +3 +Operational + + +785 +13 +Hydrographic and hydrological elements +013109 +Ice/liquid water path +kg m-2 +3 +0 +10 +kg m-2 +3 +4 +Operational + + +786 +13 +Hydrographic and hydrological elements +013110 +Mass mixing ratio +% +0 +0 +7 +% +0 +3 +Operational + + +787 +13 +Hydrographic and hydrological elements +013111 +Soil moisture +g/kg +0 +0 +10 +g/kg +0 +4 +Operational + + +788 +13 +Hydrographic and hydrological elements +013112 +Object wetness duration +s +0 +0 +17 +s +0 +5 +Operational + + +789 +13 +Hydrographic and hydrological elements +013114 +Rate of ice accretion +kg m-2 h-1 +1 +0 +11 +kg m-2 h-1 +1 +4 +Operational + + +790 +13 +Hydrographic and hydrological elements +013115 +Ice thickness +(see Note 9) +m +2 +0 +19 +m +2 +6 +Operational + + +791 +13 +Hydrographic and hydrological elements +013116 +Water film thickness +m +4 +0 +10 +m +3 +2 +Operational + + +792 +13 +Hydrographic and hydrological elements +013117 +Snow density (liquid water content) +kg m-3 +0 +0 +10 +kg m-3 +0 +3 +Operational + + +793 +13 +Hydrographic and hydrological elements +013118 +Depth of fresh snow (high accuracy) +(see Note 10) +m +3 +-2 +14 +m +3 +5 +Operational + + +794 +13 +Hydrographic and hydrological elements +013155 +Intensity of precipitation (high accuracy) +(see Note 8) +kg m-2 s-1 +5 +-1 +16 +mm/h +2 +5 +Operational + + +795 +13 +Hydrographic and hydrological elements +013160 +Radiometer liquid content +kg m-2 +2 +-350 +10 +kg m-2 +2 +3 +Operational + + +796 +13 +Hydrographic and hydrological elements +013162 +Cloud liquid water +kg m-2 +2 +0 +8 +kg m-2 +2 +3 +Operational + + +797 +13 +Hydrographic and hydrological elements +013163 +Snow water equivalent +kg m-2 +0 +0 +16 +kg m-2 +0 +5 +Operational + + +798 +13 +Hydrographic and hydrological elements +013164 +Sea ice freeboard +m +3 +-131072 +18 +m +3 +6 +Operational + + +799 +14 +Radiation and radiance +014001 +Long-wave radiation, integrated over 24 hours +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +800 +14 +Radiation and radiance +014002 +Long-wave radiation, integrated over period specified +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +801 +14 +Radiation and radiance +014003 +Short-wave radiation, integrated over 24 hours +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +802 +14 +Radiation and radiance +014004 +Short-wave radiation, integrated over period specified +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +803 +14 +Radiation and radiance +014011 +Net long-wave radiation, integrated over 24 hours +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +804 +14 +Radiation and radiance +014012 +Net long-wave radiation, integrated over period specified +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +805 +14 +Radiation and radiance +014013 +Net short-wave radiation, integrated over 24 hours +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +806 +14 +Radiation and radiance +014014 +Net short-wave radiation, integrated over period specified +J m-2 +-3 +-65536 +17 +J m-2 +-3 +5 +Operational + + +807 +14 +Radiation and radiance +014015 +Net radiation, integrated over 24 hours +J m-2 +-4 +-16384 +15 +J m-2 +-4 +5 +Operational + + +808 +14 +Radiation and radiance +014016 +Net radiation, integrated over period specified +J m-2 +-4 +-16384 +15 +J m-2 +-4 +5 +Operational + + +809 +14 +Radiation and radiance +014017 +Instantaneous long-wave radiation +W m-2 +0 +-512 +10 +W m-2 +0 +4 +Operational + + +810 +14 +Radiation and radiance +014018 +Instantaneous short-wave radiation +W m-2 +0 +-2048 +12 +W m-2 +0 +4 +Operational + + +811 +14 +Radiation and radiance +014019 +Surface albedo +% +0 +0 +7 +% +0 +3 +Operational + + +812 +14 +Radiation and radiance +014020 +Global solar radiation, integrated over 24 hours +J m-2 +-4 +0 +15 +J m-2 +-4 +5 +Operational + + +813 +14 +Radiation and radiance +014021 +Global solar radiation, integrated over period specified +J m-2 +-4 +0 +15 +J m-2 +-4 +5 +Operational + + +814 +14 +Radiation and radiance +014022 +Diffuse solar radiation, integrated over 24 hours +J m-2 +-4 +0 +15 +J m-2 +-4 +5 +Operational + + +815 +14 +Radiation and radiance +014023 +Diffuse solar radiation, integrated over period specified +J m-2 +-4 +0 +15 +J m-2 +-4 +5 +Operational + + +816 +14 +Radiation and radiance +014024 +Direct solar radiation, integrated over 24 hours +J m-2 +-4 +0 +15 +J m-2 +-4 +5 +Operational + + +817 +14 +Radiation and radiance +014025 +Direct solar radiation, integrated over period specified +J m-2 +-4 +0 +15 +J m-2 +-4 +5 +Operational + + +818 +14 +Radiation and radiance +014026 +Albedo at the top of clouds +% +0 +0 +7 +% +0 +3 +Operational + + +819 +14 +Radiation and radiance +014027 +Albedo +% +0 +0 +7 +% +0 +3 +Operational + + +820 +14 +Radiation and radiance +014028 +Global solar radiation (high accuracy), integrated over period specified +J m-2 +-2 +0 +20 +J m-2 +-2 +6 +Operational + + +821 +14 +Radiation and radiance +014029 +Diffuse solar radiation (high accuracy), integrated over period specified +J m-2 +-2 +0 +20 +J m-2 +-2 +6 +Operational + + +822 +14 +Radiation and radiance +014030 +Direct solar radiation (high accuracy), integrated over period specified +J m-2 +-2 +0 +20 +J m-2 +-2 +6 +Operational + + +823 +14 +Radiation and radiance +014031 +Total sunshine +min +0 +0 +11 +min +0 +4 +Operational + + +824 +14 +Radiation and radiance +014032 +Total sunshine +h +0 +0 +10 +h +0 +4 +Operational + + +825 +14 +Radiation and radiance +014033 +Total sunshine +% +0 +0 +9 +% +0 +3 +Operational + + +826 +14 +Radiation and radiance +014034 +Sunshine over period specified +min +0 +0 +11 +min +0 +4 +Operational + + +827 +14 +Radiation and radiance +014035 +Solar radiation flux +W m-2 +1 +0 +14 +W m-2 +1 +5 +Operational + + +828 +14 +Radiation and radiance +014042 +Bidirectional reflectance +% +0 +0 +7 +% +0 +3 +Operational + + +829 +14 +Radiation and radiance +014043 +Channel radiance +W m-2 sr-1 um-1 +4 +0 +23 +W m-2 sr-1 um-1 +4 +7 +Operational + + +830 +14 +Radiation and radiance +014044 +Channel radiance +W m-2 sr-1 cm +7 +-100000 +22 +W m-2 sr-1 cm +7 +7 +Operational + + +831 +14 +Radiation and radiance +014045 +Channel radiance +(see Note 4) +W m-2 sr-1 cm +0 +0 +11 +W m-2 sr-1 cm +0 +4 +Operational + + +832 +14 +Radiation and radiance +014046 +Scaled radiance +(see Note 6) +W m-2 sr-1 m +0 +-5000 +16 +W m-2 sr-1 m +0 +5 +Operational + + +833 +14 +Radiation and radiance +014047 +Scaled mean AVHRR radiance +W m-2 sr-1 m +0 +0 +31 +W m-2 sr-1 m +0 +10 +Operational + + +834 +14 +Radiation and radiance +014048 +Scaled standard deviation AVHRR radiance +W m-2 sr-1 m +0 +0 +31 +W m-2 sr-1 m +0 +10 +Operational + + +835 +14 +Radiation and radiance +014050 +Emissivity +(see Note 5) +% +1 +0 +10 +% +1 +4 +Operational + + +836 +14 +Radiation and radiance +014051 +Direct solar radiation integrated over last hour +J m-2 +-3 +0 +14 +J m-2 +-3 +4 +Operational + + +837 +14 +Radiation and radiance +014052 +Global upward solar radiation, integrated over period specified +J m-2 +-2 +-1048574 +20 +J m-2 +-2 +7 +Operational + + +838 +14 +Radiation and radiance +014053 +Net radiation (high accuracy), integrated over period specified +J m-2 +-2 +-1048574 +21 +J m-2 +-2 +7 +Operational + + +839 +14 +Radiation and radiance +014054 +Photosynthetically active radiation, integrated over period specified +J m-2 +-3 +0 +16 +J m-2 +-3 +5 +Operational + + +840 +14 +Radiation and radiance +014055 +Solar activity index +Numeric +0 +-32768 +16 +Numeric +0 +5 +Operational + + +841 +14 +Radiation and radiance +014056 +Background luminance +Cd m-2 +0 +0 +18 +Cd m-2 +0 +6 +Operational + + +842 +14 +Radiation and radiance +014057 +Soil heat flux +J m-2 +-2 +-1048574 +21 +J m-2 +-2 +7 +Operational + + +843 +14 +Radiation and radiance +014072 +Global UV irradiation +(see Note 8) +J m-2 +0 +-4000000 +23 +J m-2 +0 +7 +Operational + + +844 +15 +Physical/chemical constituents +015001 +Total ozone +DU +0 +0 +10 +DU +0 +4 +Operational + + +845 +15 +Physical/chemical constituents +015002 +Air mass (slant path at 22 km) +Numeric +2 +0 +10 +Numeric +2 +3 +Operational + + +846 +15 +Physical/chemical constituents +015003 +Measured ozone partial pressure (sounding) +(see Note 1) +Pa +4 +0 +9 +nbar +0 +3 +Operational + + +847 +15 +Physical/chemical constituents +015004 +Ozone sounding correction factor (CF) +(see Note 2) +Numeric +3 +0 +11 +Numeric +3 +4 +Operational + + +848 +15 +Physical/chemical constituents +015005 +Ozone p +(see Note 3) +DU +0 +0 +10 +DU +0 +3 +Operational + + +849 +15 +Physical/chemical constituents +015006 +Log10 of number density of atmosphere +log(m-3) +5 +1800000 +20 +log(m-3) +5 +7 +Operational + + +850 +15 +Physical/chemical constituents +015008 +Significand of volumetric mixing ratio +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +851 +15 +Physical/chemical constituents +015009 +Log10 of number density of ozone +log(m-3) +5 +1200000 +20 +log(m-3) +5 +7 +Operational + + +852 +15 +Physical/chemical constituents +015011 +Log10 of integrated electron density +log (m-2) +3 +14000 +13 +log (m-2) +3 +4 +Operational + + +853 +15 +Physical/chemical constituents +015012 +Total electron count per square metre +m-2 +-16 +0 +6 +m-2 +-16 +2 +Operational + + +854 +15 +Physical/chemical constituents +015015 +Maximum image spectral component before normalization +Numeric +0 +0 +31 +Numeric +0 +10 +Operational + + +855 +15 +Physical/chemical constituents +015020 +Integrated ozone density +kg m-2 +8 +0 +21 +kg m-2 +8 +7 +Operational + + +856 +15 +Physical/chemical constituents +015021 +Integrated mass density +kg m-2 +11 +0 +31 +kg m-2 +11 +10 +Operational + + +857 +15 +Physical/chemical constituents +015022 +Extended integrated mass density +kg m-2 +1 +-100000000 +31 +kg m-2 +1 +10 +Operational + + +858 +15 +Physical/chemical constituents +015024 +Optical depth +Numeric +4 +0 +24 +Numeric +4 +8 +Operational + + +859 +15 +Physical/chemical constituents +015025 +Type of pollutant +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +860 +15 +Physical/chemical constituents +015026 +Concentration of pollutant (mol mol-1) +mol/mol +9 +0 +9 +mol/mol +9 +3 +Operational + + +861 +15 +Physical/chemical constituents +015027 +Concentration of pollutant (kg m-3) +kg m-3 +9 +0 +10 +kg m-3 +9 +4 +Operational + + +862 +15 +Physical/chemical constituents +015028 +Mole fraction of atmospheric constituent/pollutant in dry air +0/00 +5 +0 +16 +0/00 +5 +5 +Operational + + +863 +15 +Physical/chemical constituents +015029 +Extinction coefficient +/m +9 +0 +30 +/m +9 +10 +Operational + + +864 +15 +Physical/chemical constituents +015030 +Aerosol contamination index +(see Note 6) +Numeric +2 +-1000 +12 +Numeric +2 +4 +Operational + + +865 +15 +Physical/chemical constituents +015031 +Atmospheric path delay in satellite signal +m +4 +10000 +15 +m +4 +5 +Operational + + +866 +15 +Physical/chemical constituents +015032 +Estimated error in atmospheric path delay +m +4 +0 +10 +m +4 +4 +Operational + + +867 +15 +Physical/chemical constituents +015033 +Difference in path delays for limb views at extremes of scan +m +5 +-10000 +15 +m +5 +5 +Operational + + +868 +15 +Physical/chemical constituents +015034 +Estimated error in path delay difference +m +5 +0 +14 +m +5 +5 +Operational + + +869 +15 +Physical/chemical constituents +015035 +Component of zenith path delay due to water vapour +m +4 +0 +14 +m +4 +5 +Operational + + +870 +15 +Physical/chemical constituents +015036 +Atmospheric refractivity +(see Note 5) +N units +3 +0 +19 +N units +3 +6 +Operational + + +871 +15 +Physical/chemical constituents +015037 +Bending angle +rad +8 +-100000 +23 +rad +8 +7 +Operational + + +872 +15 +Physical/chemical constituents +015038 +Path delay due to neutral atmosphere (see Note 10) +(10) 0 15 038 is the delay of an electromagnetic wave in the neutral atmosphere as compared to undisturbed propagation in vacuum. The delay due to ionized gases in the ionosphere is not covered, hence "neutral atmosphere". The delay in meters is the time delay multiplied by the vacuum speed of light. +m +4 +0 +20 +m +4 +11 +Operational + + +873 +15 +Physical/chemical constituents +015039 +Estimated error in neutral atmosphere path delay +m +4 +0 +14 +m +4 +9 +Operational + + +874 +15 +Physical/chemical constituents +015041 +Sulphur dioxide index +(see Note 7) +Numeric +2 +-1200 +14 +Numeric +2 +4 +Operational + + +875 +15 +Physical/chemical constituents +015042 +Reflectance +% +2 +0 +14 +% +2 +5 +Operational + + +876 +15 +Physical/chemical constituents +015045 +Sulphur dioxide +(see Note 8) +DU +2 +-2000 +15 +DU +2 +5 +Operational + + +877 +15 +Physical/chemical constituents +015046 +Volcano contamination index +(see Note 9) +Numeric +2 +-1000 +11 +Numeric +2 +4 +Operational + + +878 +15 +Physical/chemical constituents +015049 +Aerosol Angstrom wavelength exponent +Numeric +3 +-2000 +14 +Numeric +3 +5 +Operational + + +879 +15 +Physical/chemical constituents +015051 +Meteorological optical range +m +0 +0 +18 +m +0 +6 +Operational + + +880 +15 +Physical/chemical constituents +015052 +Log10 of number density of aerosol particles with diameter greater than 5 nm +log (m-3) +1 +60 +6 +log (m-3) +1 +3 +Operational + + +881 +15 +Physical/chemical constituents +015053 +Log10 of number density of aerosol particles with diameter greater than 14 nm +log (m-3) +2 +600 +9 +log (m-3) +2 +4 +Operational + + +882 +15 +Physical/chemical constituents +015054 +Log10 of number density of aerosol particles with diameter between 0.25 and 2.5 um +log (m-3) +2 +550 +9 +log (m-3) +2 +4 +Operational + + +883 +15 +Physical/chemical constituents +015055 +Non volatile aerosol ratio +Numeric +2 +0 +7 +Numeric +2 +3 +Operational + + +884 +15 +Physical/chemical constituents +015062 +Aerosol optical thickness +Numeric +3 +-1000 +14 +Numeric +3 +5 +Operational + + +885 +15 +Physical/chemical constituents +015063 +Attenuated backscatter +m-1 sr-1 +8 +0 +20 +m-1 sr-1 +8 +7 +Operational + + +886 +15 +Physical/chemical constituents +015064 +Uncertainty in attenuated backscatter +m-1 sr-1 +8 +0 +20 +m-1 sr-1 +8 +7 +Operational + + +887 +15 +Physical/chemical constituents +015065 +Particle backscatter coefficient +m-1 sr-1 +8 +0 +20 +m-1 sr-1 +8 +7 +Operational + + +888 +15 +Physical/chemical constituents +015066 +Uncertainty in particle backscatter coefficient +m-1 sr-1 +8 +0 +20 +m-1 sr-1 +8 +7 +Operational + + +889 +15 +Physical/chemical constituents +015067 +Particle extinction coefficient +m-1 +8 +0 +20 +m-1 +8 +7 +Operational + + +890 +15 +Physical/chemical constituents +015068 +Uncertainty in particle extinction coefficient +m-1 +8 +0 +20 +m-1 +8 +7 +Operational + + +891 +15 +Physical/chemical constituents +015069 +Particle lidar ratio +sr +2 +0 +14 +sr +2 +5 +Operational + + +892 +15 +Physical/chemical constituents +015070 +Uncertainty in lidar ratio +sr +2 +0 +14 +sr +2 +5 +Operational + + +893 +15 +Physical/chemical constituents +015071 +Particle depolarization ratio +% +2 +0 +14 +% +2 +5 +Operational + + +894 +15 +Physical/chemical constituents +015072 +Uncertainty in depolarization ratio +% +2 +0 +14 +% +2 +5 +Operational + + +895 +15 +Physical/chemical constituents +015073 +Attenuated backscatter +m-1 sr-1 +8 +-524288 +20 +m-1 sr-1 +8 +7 +Operational + + +896 +15 +Physical/chemical constituents +015074 +Particle backscatter coefficient +m-1 sr-1 +8 +-524288 +20 +m-1 sr-1 +8 +7 +Operational + + +897 +15 +Physical/chemical constituents +015075 +Particle extinction coefficient +m +8 +-524288 +20 +m-1 +8 +7 +Operational + + +898 +15 +Physical/chemical constituents +015076 +Particle lidar ratio +sr +1 +-2048 +13 +sr +1 +5 +Operational + + +899 +15 +Physical/chemical constituents +015077 +Uncertainty in lidar ratio +sr +1 +0 +12 +sr +1 +5 +Operational + + +900 +15 +Physical/chemical constituents +015078 +Particle depolarization ratio +% +2 +-8192 +15 +% +2 +5 +Operational + + +901 +15 +Physical/chemical constituents +015079 +Zenith path delay due to neutral atmosphere (see Note 11) +(11) 0 15 079 is the hypothetical path delay with the transmitter, e.g. GNSS satellite, in the zenith of the receiver. +m +4 +0 +15 +m +4 +9 +Operational + + +902 +15 +Physical/chemical constituents +015080 +Estimated error in neutral atmosphere zenith path delay +m +4 +0 +12 +m +4 +8 +Operational + + +903 +15 +Physical/chemical constituents +015081 +Wet path delay due to neutral atmosphere (see Note 12) +(12) 0 15 081 is the contribution of atmospheric water vapour to the path delay. +m +4 +0 +18 +m +4 +10 +Operational + + +904 +15 +Physical/chemical constituents +015082 +Path integrated water vapour (see Note 16) +(16) 015082 is the amount of atmospheric water vapour integrated along the signal path. +kg m-2 +1 +0 +16 +kg m-2 +1 +10 +Operational + + +905 +15 +Physical/chemical constituents +015083 +GNSS derived neutral atmosphere gradient (see Note 17) +(17) 0 15 083 is the gradient (east-west or north-south) of the neutral atmosphere estimated by the GNSS processing. +m +5 +0 +14 +m +5 +9 +Operational + + +906 +15 +Physical/chemical constituents +015084 +GNSS least squares residual (see Note 18) +(18) 015084 Non-modelled contribution to the path delay estimated by the least squares adjustment of GNSS path delays. +m +4 +0 +14 +m +4 +9 +Operational + + +907 +15 +Physical/chemical constituents +015085 +GNSS multi-path delay (see Note 15) +(15) 0 15 085 is the excess delay due to multi-path effects which needs to be removed from the estimated path delay. +m +4 +0 +14 +m +4 +9 +Operational + + +908 +15 +Physical/chemical constituents +015086 +GNSS hydrostatic mapping function (see Note 19) +(19) A mapping function is an empirical projection of the zenith delay onto the path delay: Path delay = mapping function zenith delay. It is a dimensionless real number greater than or equal to one. Different mapping functions are used for the wet and hydrostatic contributions to the delay and for the GNSS gradients. +Numeric +3 +0 +16 +Numeric +3 +10 +Operational + + +909 +15 +Physical/chemical constituents +015087 +GNSS wet mapping function (see Note 19) +Numeric +3 +0 +16 +Numeric +3 +10 +Operational + + +910 +15 +Physical/chemical constituents +015088 +GNSS gradient mapping function(see Note 19) +Numeric +3 +0 +16 +Numeric +3 +10 +Operational + + +911 +15 +Physical/chemical constituents +015089 +Zenith path delay due to neutral hydrostatic atmosphere (see Note 13) +(13) 015089 is the contribution of the (almost) dry atmosphere to the zenith path delay as expressed by the hydrostatic equation. +m +4 +0 +15 +m +4 +9 +Operational + + +912 +15 +Physical/chemical constituents +015090 +Path delay due to neutral hydrostatic atmosphere (see Note 14) +(14) 015090 is the zenith path delay due to the neutral hydrostatic atmosphere mapped onto the signal path. +m +4 +0 +20 +m +4 +11 +Operational + + +913 +19 +Synoptic features +019001 +Type of synoptic feature +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +914 +19 +Synoptic features +019002 +Effective radius of feature +(see Note 1) +m +-2 +0 +12 +m +-2 +4 +Operational + + +915 +19 +Synoptic features +019003 +Wind speed threshold +(see Note 2) +m/s +0 +0 +8 +m/s +0 +3 +Operational + + +916 +19 +Synoptic features +019004 +Effective radius with respect to wind speeds above threshold +(see Note 2) +m +-2 +0 +12 +m +-2 +4 +Operational + + +917 +19 +Synoptic features +019005 +Direction of motion of feature +(see Note 3) +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +918 +19 +Synoptic features +019006 +Speed of motion of feature +(see Note 3) +m/s +2 +0 +14 +m/s +2 +5 +Operational + + +919 +19 +Synoptic features +019007 +Effective radius of feature +m +-3 +0 +12 +m +-3 +4 +Operational + + +920 +19 +Synoptic features +019008 +Vertical extent of circulation +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +921 +19 +Synoptic features +019009 +Effective radius with respect to wind speeds above threshold (large storms) +m +-3 +0 +12 +m +-3 +4 +Operational + + +922 +19 +Synoptic features +019010 +Method for tracking the centre of synoptic feature +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +923 +19 +Synoptic features +019100 +Time interval to calculate the movement of the tropical cyclone +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +924 +19 +Synoptic features +019101 +Accuracy of the position of the centre of the tropical cyclone +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +925 +19 +Synoptic features +019102 +Shape and definition of the eye of the tropical cyclone +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +926 +19 +Synoptic features +019103 +Diameter of major axis of the eye of the tropical cyclone +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +927 +19 +Synoptic features +019104 +Change in character of the eye during the 30 minutes +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +928 +19 +Synoptic features +019105 +Distance between the end of spiral band and the centre +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +929 +19 +Synoptic features +019106 +Identification number of tropical cyclone +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +930 +19 +Synoptic features +019107 +Time interval over which the movement of the tropical cyclone has been calculated +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +931 +19 +Synoptic features +019108 +Accuracy of geographical position of the tropical cyclone +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +932 +19 +Synoptic features +019109 +Mean diameter of the overcast cloud of the tropical cyclone +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +933 +19 +Synoptic features +019110 +Apparent 24-hour change in intensity of the tropical cyclone +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +934 +19 +Synoptic features +019111 +Current Intensity (CI) number of the tropical cyclone +Numeric +1 +0 +7 +Numeric +1 +3 +Operational + + +935 +19 +Synoptic features +019112 +Data Tropical (DT) number of the tropical cyclone +Numeric +1 +0 +7 +Numeric +1 +3 +Operational + + +936 +19 +Synoptic features +019113 +Cloud pattern type of the DT-number +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +937 +19 +Synoptic features +019114 +Model Expected Tropical (MET) number of the tropical cyclone +Numeric +1 +0 +7 +Numeric +1 +3 +Operational + + +938 +19 +Synoptic features +019115 +Trend of the past 24-hour change (+: Developed, -: Weakened) +Numeric +1 +-30 +6 +Numeric +1 +2 +Operational + + +939 +19 +Synoptic features +019116 +Pattern Tropical (PT) number of the tropical cyclone +Numeric +1 +0 +7 +Numeric +1 +3 +Operational + + +940 +19 +Synoptic features +019117 +Cloud picture type of the PT-number +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +941 +19 +Synoptic features +019118 +Final Tropical (T) number of the tropical cyclone +Numeric +1 +0 +7 +Numeric +1 +3 +Operational + + +942 +19 +Synoptic features +019119 +Type of the final T-number +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +943 +19 +Synoptic features +019150 +Typhoon International Common Number (Typhoon Committee) +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +944 +20 +Observed phenomena +020001 +Horizontal visibility +m +-1 +0 +13 +m +-1 +4 +Operational + + +945 +20 +Observed phenomena +020002 +Vertical visibility +m +-1 +0 +7 +m +-1 +3 +Operational + + +946 +20 +Observed phenomena +020003 +Present weather +(see Note 1) +Code table +0 +0 +9 +Code table +0 +3 +Operational + + +947 +20 +Observed phenomena +020004 +Past weather (1) +(see Note 2) +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +948 +20 +Observed phenomena +020005 +Past weather (2) +(see Note 2) +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +949 +20 +Observed phenomena +020006 +Flight rules +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +950 +20 +Observed phenomena +020008 +Cloud distribution for aviation +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +951 +20 +Observed phenomena +020009 +General weather indicator (TAF/METAR) +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +952 +20 +Observed phenomena +020010 +Cloud cover (total) +(see Note 5) +% +0 +0 +7 +% +0 +3 +Operational + + +953 +20 +Observed phenomena +020011 +Cloud amount +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +954 +20 +Observed phenomena +020012 +Cloud type +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +955 +20 +Observed phenomena +020013 +Height of base of cloud +m +-1 +-40 +11 +m +-1 +4 +Operational + + +956 +20 +Observed phenomena +020014 +Height of top of cloud +m +-1 +-40 +11 +m +-1 +4 +Operational + + +957 +20 +Observed phenomena +020015 +Pressure at base of cloud +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +958 +20 +Observed phenomena +020016 +Pressure at top of cloud +Pa +-1 +0 +14 +Pa +-1 +5 +Operational + + +959 +20 +Observed phenomena +020017 +Cloud top description +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +960 +20 +Observed phenomena +020018 +Tendency of runway visual range +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +961 +20 +Observed phenomena +020019 +Significant present or forecast weather +(see Note 15) +CCITT IA5 +0 +0 +72 +Character +0 +9 +Operational + + +962 +20 +Observed phenomena +020020 +Significant recent weather phenomena +(see Note 15) +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +963 +20 +Observed phenomena +020021 +Type of precipitation +Flag table +0 +0 +30 +Flag table +0 +10 +Operational + + +964 +20 +Observed phenomena +020022 +Character of precipitation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +965 +20 +Observed phenomena +020023 +Other weather phenomena +Flag table +0 +0 +18 +Flag table +0 +6 +Operational + + +966 +20 +Observed phenomena +020024 +Intensity of phenomena +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +967 +20 +Observed phenomena +020025 +Obscuration +Flag table +0 +0 +21 +Flag table +0 +7 +Operational + + +968 +20 +Observed phenomena +020026 +Character of obscuration +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +969 +20 +Observed phenomena +020027 +Phenomena occurrence +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +970 +20 +Observed phenomena +020028 +Expected change in intensity +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +971 +20 +Observed phenomena +020029 +Rain flag +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +972 +20 +Observed phenomena +020031 +Ice deposit (thickness) +m +2 +0 +7 +m +2 +3 +Operational + + +973 +20 +Observed phenomena +020032 +Rate of ice accretion (estimated) +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +974 +20 +Observed phenomena +020033 +Cause of ice accretion +Flag table +0 +0 +4 +Flag table +0 +2 +Operational + + +975 +20 +Observed phenomena +020034 +Sea ice concentration +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +976 +20 +Observed phenomena +020035 +Amount and type of ice +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +977 +20 +Observed phenomena +020036 +Ice situation +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +978 +20 +Observed phenomena +020037 +Ice development +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +979 +20 +Observed phenomena +020038 +Bearing of ice edge +(see Note 3) +degree true +0 +0 +12 +degree true +0 +3 +Operational + + +980 +20 +Observed phenomena +020039 +Ice distance +m +-1 +0 +13 +m +-1 +4 +Operational + + +981 +20 +Observed phenomena +020040 +Evolution of drift snow +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +982 +20 +Observed phenomena +020041 +Airframe icing +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +983 +20 +Observed phenomena +020042 +Airframe icing present +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +984 +20 +Observed phenomena +020043 +Peak liquid water content +kg m-3 +4 +0 +7 +kg m-3 +4 +2 +Operational + + +985 +20 +Observed phenomena +020044 +Average liquid water content +kg m-3 +4 +0 +7 +kg m-3 +4 +2 +Operational + + +986 +20 +Observed phenomena +020045 +Supercooled large droplet (SLD) conditions +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +987 +20 +Observed phenomena +020048 +Evolution of feature +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +988 +20 +Observed phenomena +020050 +Cloud index +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +989 +20 +Observed phenomena +020051 +Amount of low clouds +% +0 +0 +7 +% +0 +3 +Operational + + +990 +20 +Observed phenomena +020052 +Amount of middle clouds +% +0 +0 +7 +% +0 +3 +Operational + + +991 +20 +Observed phenomena +020053 +Amount of high clouds +% +0 +0 +7 +% +0 +3 +Operational + + +992 +20 +Observed phenomena +020054 +True direction from which a phenomenon or clouds are moving or in which they are observed +(see Note 17) +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +993 +20 +Observed phenomena +020055 +State of sky in the tropics +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +994 +20 +Observed phenomena +020056 +Cloud phase +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +995 +20 +Observed phenomena +020058 +Visibility seawards from a coastal station +m +-1 +0 +13 +m +-1 +4 +Operational + + +996 +20 +Observed phenomena +020059 +Minimum horizontal visibility +m +-1 +0 +9 +m +-1 +3 +Operational + + +997 +20 +Observed phenomena +020060 +Prevailing horizontal visibility +(see Note 7) +m +-1 +0 +10 +m +-1 +4 +Operational + + +998 +20 +Observed phenomena +020061 +Runway visual range (RVR) +m +0 +0 +12 +m +0 +4 +Operational + + +999 +20 +Observed phenomena +020062 +State of the ground (with or without snow) +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1000 +20 +Observed phenomena +020063 +Special phenomena +Code table +0 +0 +10 +Code table +0 +4 +Operational + + +1001 +20 +Observed phenomena +020065 +Snow cover +(see Note 4) +% +0 +0 +7 +% +0 +3 +Operational + + +1002 +20 +Observed phenomena +020066 +Maximum diameter of hailstones +m +3 +0 +8 +m +3 +3 +Operational + + +1003 +20 +Observed phenomena +020067 +Diameter of deposit +m +3 +0 +9 +m +3 +3 +Operational + + +1004 +20 +Observed phenomena +020070 +Minimum number of atmospherics +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1005 +20 +Observed phenomena +020071 +Accuracy of fix and rate of atmospherics +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1006 +20 +Observed phenomena +020081 +Cloud amount in segment +% +0 +0 +7 +% +0 +3 +Operational + + +1007 +20 +Observed phenomena +020082 +Amount segment cloud free +% +0 +0 +7 +% +0 +3 +Operational + + +1008 +20 +Observed phenomena +020083 +Amount of segment covered by scene +% +0 +0 +7 +% +0 +3 +Operational + + +1009 +20 +Observed phenomena +020085 +General condition of runway +Code table +0 +0 +4 +Code table +0 +1 +Operational + + +1010 +20 +Observed phenomena +020086 +Runway deposits +Code table +0 +0 +4 +Code table +0 +1 +Operational + + +1011 +20 +Observed phenomena +020087 +Runway contamination +Code table +0 +0 +4 +Code table +0 +1 +Operational + + +1012 +20 +Observed phenomena +020088 +Depth of runway deposits +m +3 +0 +12 +m +0 +4 +Operational + + +1013 +20 +Observed phenomena +020089 +Runway friction coefficient +Code table +0 +0 +7 +Code table +0 +2 +Operational + + +1014 +20 +Observed phenomena +020090 +Special clouds +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1015 +20 +Observed phenomena +020091 +Vertical visibility +ft +-2 +0 +10 +ft +-2 +3 +Operational + + +1016 +20 +Observed phenomena +020092 +Height of base of cloud +ft +-2 +0 +10 +ft +-2 +3 +Operational + + +1017 +20 +Observed phenomena +020093 +Height of inversion +m +-1 +0 +8 +m +-1 +3 +Operational + + +1018 +20 +Observed phenomena +020095 +Ice probability +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1019 +20 +Observed phenomena +020096 +Ice age ("A" parameter) +dB +2 +-4096 +13 +dB +2 +4 +Operational + + +1020 +20 +Observed phenomena +020101 +Locust (acridian) name +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1021 +20 +Observed phenomena +020102 +Locust (maturity) colour +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1022 +20 +Observed phenomena +020103 +Stage of development of locusts +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1023 +20 +Observed phenomena +020104 +Organization state of swarm or band of locusts +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1024 +20 +Observed phenomena +020105 +Size of swarm or band of locusts and duration of passage of swarm +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1025 +20 +Observed phenomena +020106 +Locust population density +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1026 +20 +Observed phenomena +020107 +Direction of movements of locust swarm +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1027 +20 +Observed phenomena +020108 +Extent of vegetation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1028 +20 +Observed phenomena +020111 +x-axis error ellipse major component +(see Notes 8 and 9) +m +-1 +0 +17 +m +-1 +6 +Operational + + +1029 +20 +Observed phenomena +020112 +y-axis error ellipse minor component +(see Notes 8 and 9) +m +-1 +0 +17 +m +-1 +6 +Operational + + +1030 +20 +Observed phenomena +020113 +z-axis error ellipse component +(see Note 9) +m +-1 +0 +17 +m +-1 +6 +Operational + + +1031 +20 +Observed phenomena +020114 +Angle of x-axis in error ellipse +(see Note 10) +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +1032 +20 +Observed phenomena +020115 +Angle of z-axis in error ellipse +(see Note 11) +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +1033 +20 +Observed phenomena +020116 +Emission height of cloud stroke +m +0 +0 +16 +m +0 +5 +Operational + + +1034 +20 +Observed phenomena +020117 +Amplitude of lightning strike +A +-1 +-32000 +16 +A +-1 +5 +Operational + + +1035 +20 +Observed phenomena +020118 +Lightning detection error +m +0 +0 +19 +m +0 +6 +Operational + + +1036 +20 +Observed phenomena +020119 +Lightning discharge polarity +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1037 +20 +Observed phenomena +020121 +Threshold value for polarity decision +(see Note 12) +V +3 +0 +16 +V +3 +5 +Operational + + +1038 +20 +Observed phenomena +020122 +Threshold value for polarity decision +(see Note 13) +A +0 +0 +16 +A +0 +5 +Operational + + +1039 +20 +Observed phenomena +020123 +Minimum threshold for detection +(see Note 14) +V/m +3 +0 +16 +V/m +3 +5 +Operational + + +1040 +20 +Observed phenomena +020124 +Lightning stroke or flash +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1041 +20 +Observed phenomena +020126 +Lightning rate of discharge +/h +0 +0 +23 +/h +0 +7 +Operational + + +1042 +20 +Observed phenomena +020127 +Lightning - distance from station +m +-3 +0 +8 +m +-3 +3 +Operational + + +1043 +20 +Observed phenomena +020128 +Lightning - direction from station +degree true +1 +0 +12 +degree true +1 +4 +Operational + + +1044 +20 +Observed phenomena +020129 +Lightning density (stroke, flash or event) +m-2 +6 +0 +10 +m-2 +6 +4 +Operational + + +1045 +20 +Observed phenomena +020130 +Cloud hydrometeor concentration +(see Note 16) +Numeric +0 +0 +10 +Numeric +0 +3 +Operational + + +1046 +20 +Observed phenomena +020131 +Effective radius of cloud hydrometeors +m +5 +0 +6 +m +5 +2 +Operational + + +1047 +20 +Observed phenomena +020132 +Cloud liquid water content +kg m-3 +5 +0 +11 +kg m-3 +5 +4 +Operational + + +1048 +20 +Observed phenomena +020133 +Hydrometeor radius +m +5 +0 +6 +m +5 +2 +Operational + + +1049 +20 +Observed phenomena +020135 +Ice mass (on a rod) +kg/m +1 +0 +10 +kg/m +1 +3 +Operational + + +1050 +20 +Observed phenomena +020136 +Supplementary cloud type +Code table +0 +0 +9 +Code table +0 +3 +Operational + + +1051 +20 +Observed phenomena +020137 +Evolution of clouds +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1052 +20 +Observed phenomena +020138 +Road surface condition +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1053 +21 +Radar data +021001 +Horizontal reflectivity +dB +0 +-64 +7 +dB +0 +3 +Operational + + +1054 +21 +Radar data +021002 +Vertical reflectivity +dB +0 +-64 +7 +dB +0 +3 +Operational + + +1055 +21 +Radar data +021003 +Differential reflectivity +dB +1 +-5 +7 +dB +1 +3 +Operational + + +1056 +21 +Radar data +021004 +Differential reflectivity +dB +2 +-800 +11 +dB +2 +4 +Operational + + +1057 +21 +Radar data +021005 +Linear depolarization ratio +dB +0 +-65 +6 +dB +0 +2 +Operational + + +1058 +21 +Radar data +021006 +Circular depolarization ratio +dB +0 +-65 +6 +dB +0 +2 +Operational + + +1059 +21 +Radar data +021011 +Doppler mean velocity in x-direction +m/s +0 +-128 +8 +m/s +0 +3 +Operational + + +1060 +21 +Radar data +021012 +Doppler mean velocity in y-direction +m/s +0 +-128 +8 +m/s +0 +3 +Operational + + +1061 +21 +Radar data +021013 +Doppler mean velocity in z-direction +m/s +0 +-128 +8 +m/s +0 +3 +Operational + + +1062 +21 +Radar data +021014 +Doppler mean velocity (radial) +m/s +1 +-4096 +13 +m/s +1 +4 +Operational + + +1063 +21 +Radar data +021017 +Doppler velocity spectral width +m/s +1 +0 +8 +m/s +1 +3 +Operational + + +1064 +21 +Radar data +021018 +Extended NYQUIST velocity +m/s +1 +0 +10 +m/s +1 +4 +Operational + + +1065 +21 +Radar data +021019 +High NYQUIST velocity +m/s +1 +0 +10 +m/s +1 +3 +Operational + + +1066 +21 +Radar data +021021 +Echo tops +m +-3 +0 +4 +m +-3 +2 +Operational + + +1067 +21 +Radar data +021022 +Range bin offset +m +1 +0 +14 +m +1 +5 +Operational + + +1068 +21 +Radar data +021023 +Range bin size +m +0 +0 +14 +m +0 +5 +Operational + + +1069 +21 +Radar data +021024 +Azimuth offset +deg +1 +0 +12 +deg +1 +4 +Operational + + +1070 +21 +Radar data +021025 +Azimuthal resolution +deg +1 +0 +8 +deg +1 +3 +Operational + + +1071 +21 +Radar data +021028 +Differential phase +deg +1 +0 +12 +deg +1 +4 +Operational + + +1072 +21 +Radar data +021029 +Cross-polarization correlation coefficient +Numeric +2 +-100 +8 +Numeric +2 +3 +Operational + + +1073 +21 +Radar data +021030 +Signal to noise ratio +dB +0 +-32 +8 +dB +0 +3 +Operational + + +1074 +21 +Radar data +021031 +Vertically integrated liquid-water content +kg m-2 +0 +0 +7 +kg m-2 +0 +3 +Operational + + +1075 +21 +Radar data +021036 +Radar rainfall intensity +m/s +7 +0 +12 +m/s +7 +4 +Operational + + +1076 +21 +Radar data +021041 +Bright-band height +m +-2 +0 +8 +m +-2 +3 +Operational + + +1077 +21 +Radar data +021051 +Signal power above 1 mW +dB +0 +-256 +8 +dB +0 +3 +Operational + + +1078 +21 +Radar data +021062 +Backscatter +dB +2 +-5000 +13 +dB +2 +4 +Operational + + +1079 +21 +Radar data +021063 +Radiometric resolution (noise value) +% +1 +0 +10 +% +1 +4 +Operational + + +1080 +21 +Radar data +021064 +Clutter noise estimate +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1081 +21 +Radar data +021065 +Missing packet counter +Numeric +0 +-127 +8 +Numeric +0 +3 +Operational + + +1082 +21 +Radar data +021066 +Wave scatterometer product confidence data +Flag table +0 +0 +12 +Flag table +0 +4 +Operational + + +1083 +21 +Radar data +021067 +Wind product confidence data +Flag table +0 +0 +13 +Flag table +0 +5 +Operational + + +1084 +21 +Radar data +021068 +Radar altimeter product confidence data +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1085 +21 +Radar data +021069 +SST product confidence data +Flag table +0 +0 +10 +Flag table +0 +4 +Operational + + +1086 +21 +Radar data +021070 +SST product confidence data (SADIST-2) +Flag table +0 +0 +23 +Flag table +0 +6 +Operational + + +1087 +21 +Radar data +021071 +Peakiness +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +1088 +21 +Radar data +021072 +Satellite altimeter calibration status +Flag table +0 +0 +4 +Flag table +0 +2 +Operational + + +1089 +21 +Radar data +021073 +Satellite altimeter instrument mode +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1090 +21 +Radar data +021075 +Image spectrum intensity +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1091 +21 +Radar data +021076 +Representation of intensities +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1092 +21 +Radar data +021077 +Altitude correction (ionosphere) +m +3 +0 +14 +m +3 +5 +Operational + + +1093 +21 +Radar data +021078 +Altitude correction (dry troposphere) +m +3 +0 +9 +m +3 +3 +Operational + + +1094 +21 +Radar data +021079 +Altitude correction (wet troposphere) +m +3 +2000 +10 +m +3 +4 +Operational + + +1095 +21 +Radar data +021080 +Altitude correction (calibration constant) +m +3 +0 +11 +m +3 +4 +Operational + + +1096 +21 +Radar data +021081 +Open loop correction (height-time loop) +m +3 +0 +10 +m +3 +4 +Operational + + +1097 +21 +Radar data +021082 +Open loop correction (auto gain control) +dB +3 +-3000 +14 +dB +3 +5 +Operational + + +1098 +21 +Radar data +021083 +Warm target calibration +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +1099 +21 +Radar data +021084 +Cold target calibration +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +1100 +21 +Radar data +021085 +ATSR sea-surface temperature across-track band number +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +1101 +21 +Radar data +021086 +Number of pixels in nadir only, average +Numeric +0 +0 +9 +Numeric +0 +3 +Operational + + +1102 +21 +Radar data +021087 +Number of pixels in dual view, average +Numeric +0 +0 +9 +Numeric +0 +3 +Operational + + +1103 +21 +Radar data +021088 +Wet backscatter +dB +2 +-5000 +13 +dB +2 +4 +Operational + + +1104 +21 +Radar data +021091 +Radar signal Doppler spectrum 0th moment +dB +0 +-100 +8 +dB +0 +3 +Operational + + +1105 +21 +Radar data +021092 +RASS signal Doppler spectrum 0th moment, referring to RASS signal +dB +0 +-100 +8 +dB +0 +3 +Operational + + +1106 +21 +Radar data +021093 +Ku band peakiness +Numeric +3 +0 +16 +Numeric +3 +5 +Operational + + +1107 +21 +Radar data +021094 +S band peakiness +Numeric +3 +0 +16 +Numeric +3 +5 +Operational + + +1108 +21 +Radar data +021095 +Kp coefficient A +Numeric +6 +0 +20 +Numeric +6 +7 +Operational + + +1109 +21 +Radar data +021096 +Kp coefficient B +Numeric +6 +0 +20 +Numeric +6 +7 +Operational + + +1110 +21 +Radar data +021097 +Kp coefficient C +Numeric +6 +0 +20 +Numeric +6 +7 +Operational + + +1111 +21 +Radar data +021101 +Number of vector ambiguities +Numeric +0 +0 +3 +Numeric +0 +1 +Operational + + +1112 +21 +Radar data +021102 +Index of selected wind vector +Numeric +0 +0 +3 +Numeric +0 +1 +Operational + + +1113 +21 +Radar data +021103 +Total number of sigma-0 measurements +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +1114 +21 +Radar data +021104 +Likelihood computed for solution +Numeric +3 +-30000 +15 +Numeric +3 +5 +Operational + + +1115 +21 +Radar data +021105 +Normalized radar cross-section +dB +2 +-10000 +14 +dB +2 +5 +Operational + + +1116 +21 +Radar data +021106 +Kp variance coefficient (alpha) +Numeric +3 +0 +14 +Numeric +3 +5 +Operational + + +1117 +21 +Radar data +021107 +Kp variance coefficient (beta) +Numeric +8 +0 +16 +Numeric +8 +5 +Operational + + +1118 +21 +Radar data +021109 +SEAWINDS wind vector cell quality +Flag table +0 +0 +17 +Flag table +0 +6 +Operational + + +1119 +21 +Radar data +021110 +Number of inner-beam sigma-0 (forward of satellite) +Numeric +0 +0 +6 +Numeric +0 +2 +Operational + + +1120 +21 +Radar data +021111 +Number of outer-beam sigma-0 (forward of satellite) +Numeric +0 +0 +6 +Numeric +0 +2 +Operational + + +1121 +21 +Radar data +021112 +Number of inner-beam sigma-0 (aft of satellite) +Numeric +0 +0 +6 +Numeric +0 +2 +Operational + + +1122 +21 +Radar data +021113 +Number of outer-beam sigma-0 (aft of satellite) +Numeric +0 +0 +6 +Numeric +0 +2 +Operational + + +1123 +21 +Radar data +021114 +Kp variance coefficient (gamma) +dB +3 +-140000 +18 +dB +3 +6 +Operational + + +1124 +21 +Radar data +021115 +SEAWINDS sigma-0 quality +Flag table +0 +0 +17 +Flag table +0 +6 +Operational + + +1125 +21 +Radar data +021116 +SEAWINDS sigma-0 mode +Flag table +0 +0 +17 +Flag table +0 +6 +Operational + + +1126 +21 +Radar data +021117 +Sigma-0 variance quality control +Numeric +2 +0 +16 +Numeric +2 +5 +Operational + + +1127 +21 +Radar data +021118 +Attenuation correction on sigma-0 +dB +2 +-10000 +14 +dB +2 +5 +Operational + + +1128 +21 +Radar data +021119 +Wind scatterometer geophysical model function +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +1129 +21 +Radar data +021120 +Probability of rain +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1130 +21 +Radar data +021121 +SEAWINDS NOF rain index +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1131 +21 +Radar data +021122 +Attenuation correction on sigma-0 (from tB) +dB +2 +-10000 +14 +dB +2 +5 +Operational + + +1132 +21 +Radar data +021123 +SEAWINDS normalized radar cross-section +dB +2 +-30000 +15 +dB +2 +5 +Operational + + +1133 +21 +Radar data +021128 +Number of valid points per second used to derive previous parameters +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1134 +21 +Radar data +021130 +Spectrum total energy +Numeric +6 +0 +28 +Numeric +6 +9 +Operational + + +1135 +21 +Radar data +021131 +Spectrum max energy +Numeric +6 +0 +28 +Numeric +6 +9 +Operational + + +1136 +21 +Radar data +021132 +Direction of spectrum max on higher resolution grid +deg +3 +0 +19 +deg +3 +6 +Operational + + +1137 +21 +Radar data +021133 +Wavelength of spectrum max on higher resolution grid +m +3 +0 +29 +m +3 +9 +Operational + + +1138 +21 +Radar data +021134 +Range resolution of cress covariance spectrum +rad/m +3 +0 +19 +rad/m +3 +6 +Operational + + +1139 +21 +Radar data +021135 +Real part of cross spectra polar grid number of bins +Numeric +3 +-524288 +20 +Numeric +3 +7 +Operational + + +1140 +21 +Radar data +021136 +Imaginary part of cross spectra polar grid number of bins +Numeric +3 +-524288 +20 +Numeric +3 +7 +Operational + + +1141 +21 +Radar data +021137 +Ku band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1142 +21 +Radar data +021138 +Std Ku band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1143 +21 +Radar data +021139 +Ku band net instrumental correction for AGC +dB +2 +-2048 +12 +dB +2 +4 +Operational + + +1144 +21 +Radar data +021140 +S band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1145 +21 +Radar data +021141 +Std S band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1146 +21 +Radar data +021142 +S band net instrumental correction for AGC +dB +2 +-1024 +11 +dB +2 +4 +Operational + + +1147 +21 +Radar data +021143 +Ku band rain attenuation +dB +2 +-1073741824 +31 +dB +2 +10 +Operational + + +1148 +21 +Radar data +021144 +Altimeter rain flag +Flag table +0 +0 +2 +Flag table +0 +1 +Operational + + +1149 +21 +Radar data +021145 +Ku band automatic gain control +dB +2 +0 +13 +dB +2 +4 +Operational + + +1150 +21 +Radar data +021146 +RMS Ku band automatic gain control +dB +2 +0 +8 +dB +2 +3 +Operational + + +1151 +21 +Radar data +021147 +Number of valid points for Ku band automatic gain control +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +1152 +21 +Radar data +021148 +Trailing edge variation flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1153 +21 +Radar data +021150 +Beam co-location +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1154 +21 +Radar data +021151 +Estimated error in sigma-0 at 40 degrees incidence angle +dB +2 +0 +9 +dB +2 +3 +Operational + + +1155 +21 +Radar data +021152 +Slope at 40 degrees incidence angle +dB/deg +2 +-80 +7 +dB/deg +2 +2 +Operational + + +1156 +21 +Radar data +021153 +Estimated error in slope at 40 degrees incidence angle +dB/deg +2 +-40 +6 +dB/deg +2 +2 +Operational + + +1157 +21 +Radar data +021154 +Soil moisture sensitivity +dB +2 +0 +12 +dB +2 +4 +Operational + + +1158 +21 +Radar data +021155 +Wind vector cell quality +Flag table +0 +0 +24 +Flag table +0 +8 +Operational + + +1159 +21 +Radar data +021156 +Backscatter distance +Numeric +1 +-4096 +13 +Numeric +1 +4 +Operational + + +1160 +21 +Radar data +021157 +Loss per unit length of atmosphere used +dB/m +10 +0 +22 +dB/m +10 +7 +Operational + + +1161 +21 +Radar data +021158 +ASCAT Kp estimate quality +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1162 +21 +Radar data +021159 +ASCAT sigma-0 usability +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1163 +21 +Radar data +021160 +ASCAT use of synthetic data +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1164 +21 +Radar data +021161 +ASCAT synthetic data quantity +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1165 +21 +Radar data +021162 +ASCAT satellite orbit and attitude quality +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1166 +21 +Radar data +021163 +ASCAT solar array reflection contamination +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1167 +21 +Radar data +021164 +ASCAT telemetry presence and quality +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1168 +21 +Radar data +021165 +ASCAT extrapolated reference function presence +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1169 +21 +Radar data +021166 +Land fraction +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1170 +21 +Radar data +021169 +Ice presence indicator +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1171 +21 +Radar data +021170 +C band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1172 +21 +Radar data +021171 +RMS C band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1173 +21 +Radar data +021172 +C band net instrumental correction for AGC +dB +2 +-2048 +12 +dB +2 +4 +Operational + + +1174 +21 +Radar data +021173 +C band automatic gain control +dB +2 +0 +13 +dB +2 +4 +Operational + + +1175 +21 +Radar data +021174 +RMS C band automatic gain control +dB +2 +0 +9 +dB +2 +3 +Operational + + +1176 +21 +Radar data +021175 +Number of valid points for C band automatic gain control +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1177 +21 +Radar data +021176 +High frequency variability correction +m +3 +0 +16 +m +3 +5 +Operational + + +1178 +21 +Radar data +021177 +Corrected OCOG backscatter coefficient +dB +2 +0 +16 +dB +2 +5 +Operational + + +1179 +21 +Radar data +021178 +STD of 20 Hz OCOG backscatter coefficient +dB +2 +0 +16 +dB +2 +5 +Operational + + +1180 +21 +Radar data +021179 +Number of 20 Hz valid points for OCOG backscatter coefficient +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +1181 +21 +Radar data +021180 +Number of 20 Hz valid points for ocean backscatter coefficient +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1182 +21 +Radar data +021181 +20 Hz ocean backscatter coefficient +dB +2 +0 +16 +dB +2 +5 +Operational + + +1183 +21 +Radar data +021182 +20 Hz Ku band peakiness +Numeric +3 +0 +16 +Numeric +3 +5 +Operational + + +1184 +21 +Radar data +021183 +Specific band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1185 +21 +Radar data +021184 +STD specific band corrected ocean backscatter coefficient +dB +2 +-32768 +16 +dB +2 +5 +Operational + + +1186 +21 +Radar data +021185 +Specific band net instrumental correction for AGC +dB +2 +-2048 +12 +dB +2 +4 +Operational + + +1187 +21 +Radar data +021186 +Specific band automatic gain control +dB +2 +0 +13 +dB +2 +4 +Operational + + +1188 +21 +Radar data +021187 +RMS specific band automatic gain control +dB +2 +0 +8 +dB +2 +3 +Operational + + +1189 +21 +Radar data +021188 +Number of valid points for specific band automatic gain control +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1190 +21 +Radar data +021189 +Corrected OCOG backscatter coefficient (negative reference) +is similar to 0-21-177, but with a negative reference value +dB +2 +-32768 +16 +dB +2 +6 +Operational + + +1191 +22 +Oceanographic elements +022001 +Direction of waves +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1192 +22 +Oceanographic elements +022002 +Direction of wind waves +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1193 +22 +Oceanographic elements +022003 +Direction of swell waves +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1194 +22 +Oceanographic elements +022004 +Direction of current +(see Note 7) +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1195 +22 +Oceanographic elements +022005 +Direction of sea-surface current +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1196 +22 +Oceanographic elements +022011 +Period of waves +s +0 +0 +6 +s +0 +2 +Operational + + +1197 +22 +Oceanographic elements +022012 +Period of wind waves +s +0 +0 +6 +s +0 +2 +Operational + + +1198 +22 +Oceanographic elements +022013 +Period of swell waves +s +0 +0 +6 +s +0 +2 +Operational + + +1199 +22 +Oceanographic elements +022021 +Height of waves +m +1 +0 +10 +m +1 +4 +Operational + + +1200 +22 +Oceanographic elements +022022 +Height of wind waves +m +1 +0 +10 +m +1 +4 +Operational + + +1201 +22 +Oceanographic elements +022023 +Height of swell waves +m +1 +0 +10 +m +1 +4 +Operational + + +1202 +22 +Oceanographic elements +022025 +Standard deviation wave height +m +2 +0 +10 +m +2 +4 +Operational + + +1203 +22 +Oceanographic elements +022026 +Standard deviation of significant wave height +m +2 +0 +10 +m +2 +4 +Operational + + +1204 +22 +Oceanographic elements +022031 +Speed of current +m/s +2 +0 +13 +m/s +2 +4 +Operational + + +1205 +22 +Oceanographic elements +022032 +Speed of sea-surface current +m/s +2 +0 +13 +m/s +2 +4 +Operational + + +1206 +22 +Oceanographic elements +022035 +Tidal elevation with respect to local chart datum +m +2 +0 +14 +m +2 +4 +Operational + + +1207 +22 +Oceanographic elements +022036 +Meteorological residual tidal elevation (surge or offset) +m +2 +0 +14 +m +2 +4 +Operational + + +1208 +22 +Oceanographic elements +022037 +Tidal elevation with respect to national land datum +m +3 +-10000 +15 +m +3 +5 +Operational + + +1209 +22 +Oceanographic elements +022038 +Tidal elevation with respect to local chart datum +m +3 +-10000 +15 +m +3 +5 +Operational + + +1210 +22 +Oceanographic elements +022039 +Meteorological residual tidal elevation (surge or offset) +(see Note 4) +m +3 +-5000 +13 +m +3 +4 +Operational + + +1211 +22 +Oceanographic elements +022040 +Meteorological residual tidal elevation (surge or offset) +(see Note 4) +m +3 +-5000 +14 +m +3 +5 +Operational + + +1212 +22 +Oceanographic elements +022041 +Sea-surface temperature (15-day running mean) +K +1 +0 +12 +K +1 +4 +Operational + + +1213 +22 +Oceanographic elements +022042 +Sea/water temperature +K +1 +0 +12 +K +1 +4 +Operational + + +1214 +22 +Oceanographic elements +022043 +Sea/water temperature +K +2 +0 +15 +K +2 +5 +Operational + + +1215 +22 +Oceanographic elements +022044 +Sound velocity +m/s +1 +0 +14 +m/s +1 +5 +Operational + + +1216 +22 +Oceanographic elements +022045 +Sea/water temperature +K +3 +0 +19 +K +3 +6 +Operational + + +1217 +22 +Oceanographic elements +022046 +Sea ice fraction +Numeric +2 +0 +7 +Numeric +2 +3 +Operational + + +1218 +22 +Oceanographic elements +022049 +Sea-surface temperature +K +2 +0 +15 +K +2 +5 +Operational + + +1219 +22 +Oceanographic elements +022050 +Standard deviation sea-surface temperature +K +2 +0 +8 +K +2 +3 +Operational + + +1220 +22 +Oceanographic elements +022055 +Float cycle number +Numeric +0 +0 +10 +Numeric +0 +3 +Operational + + +1221 +22 +Oceanographic elements +022056 +Direction of profile +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1222 +22 +Oceanographic elements +022059 +Sea-surface salinity +0/00 +2 +0 +14 +0/00 +2 +5 +Operational + + +1223 +22 +Oceanographic elements +022060 +Lagrangian drifter drogue status +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1224 +22 +Oceanographic elements +022061 +State of the sea +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1225 +22 +Oceanographic elements +022062 +Salinity +0/00 +2 +0 +14 +0/00 +2 +5 +Operational + + +1226 +22 +Oceanographic elements +022063 +Total water depth +m +0 +0 +14 +m +0 +5 +Operational + + +1227 +22 +Oceanographic elements +022064 +Salinity +0/00 +3 +0 +17 +0/00 +3 +6 +Operational + + +1228 +22 +Oceanographic elements +022065 +Water pressure +Pa +-3 +0 +17 +Pa +-3 +6 +Operational + + +1229 +22 +Oceanographic elements +022066 +Water conductivity +S/m +6 +0 +26 +S/m +6 +8 +Operational + + +1230 +22 +Oceanographic elements +022067 +Instrument type for water temperature/salinity profile measurement +Code table +0 +0 +10 +Code table +0 +4 +Operational + + +1231 +22 +Oceanographic elements +022068 +Water temperature profile recorder types +Code table +0 +0 +7 +Code table +0 +3 +Operational + + +1232 +22 +Oceanographic elements +022069 +Spectral wave density +m2/Hz +3 +0 +22 +m2/Hz +3 +7 +Operational + + +1233 +22 +Oceanographic elements +022070 +Significant wave height +m +2 +0 +13 +m +2 +4 +Operational + + +1234 +22 +Oceanographic elements +022071 +Spectral peak wave period +s +1 +0 +9 +s +1 +3 +Operational + + +1235 +22 +Oceanographic elements +022072 +Spectral peak wavelength +m +0 +0 +13 +m +0 +4 +Operational + + +1236 +22 +Oceanographic elements +022073 +Maximum wave height +m +2 +0 +13 +m +2 +4 +Operational + + +1237 +22 +Oceanographic elements +022074 +Average wave period +s +1 +0 +9 +s +1 +3 +Operational + + +1238 +22 +Oceanographic elements +022075 +Average wavelength +m +0 +0 +13 +m +0 +4 +Operational + + +1239 +22 +Oceanographic elements +022076 +Direction from which dominant waves are coming +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1240 +22 +Oceanographic elements +022077 +Directional spread of dominant wave +deg +0 +0 +9 +deg +0 +3 +Operational + + +1241 +22 +Oceanographic elements +022078 +Duration of wave record +s +0 +0 +12 +s +0 +4 +Operational + + +1242 +22 +Oceanographic elements +022079 +Length of wave record +m +0 +0 +16 +m +0 +5 +Operational + + +1243 +22 +Oceanographic elements +022080 +Waveband central frequency +Hz +3 +0 +10 +Hz +3 +4 +Operational + + +1244 +22 +Oceanographic elements +022081 +Waveband central wave number +/m +5 +0 +13 +/m +5 +4 +Operational + + +1245 +22 +Oceanographic elements +022082 +Maximum non-directional spectral wave density +m2 s +2 +0 +20 +m2 s +2 +7 +Operational + + +1246 +22 +Oceanographic elements +022083 +Maximum non-directional spectral wave number +m3 +2 +0 +20 +m3 +2 +7 +Operational + + +1247 +22 +Oceanographic elements +022084 +Band containing maximum non-directional spectral wave density +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1248 +22 +Oceanographic elements +022085 +Spectral wave density ratio +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1249 +22 +Oceanographic elements +022086 +Mean direction from which waves are coming +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1250 +22 +Oceanographic elements +022087 +Principal direction from which waves are coming +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1251 +22 +Oceanographic elements +022088 +First normalized polar coordinate from Fourier coefficients +Numeric +2 +0 +7 +Numeric +2 +3 +Operational + + +1252 +22 +Oceanographic elements +022089 +Second normalized polar coordinate from Fourier coefficients +Numeric +2 +0 +7 +Numeric +2 +3 +Operational + + +1253 +22 +Oceanographic elements +022090 +Non-directional spectral estimate by wave frequency +m2 s +2 +0 +20 +m2 s +2 +7 +Operational + + +1254 +22 +Oceanographic elements +022091 +Non-directional spectral estimate by wave number +m3 +2 +0 +20 +m3 +2 +7 +Operational + + +1255 +22 +Oceanographic elements +022092 +Directional spectral estimate by wave frequency +m2 rad-1 s +2 +0 +20 +m2 rad-1 s +2 +7 +Operational + + +1256 +22 +Oceanographic elements +022093 +Directional spectral estimate by wave number +m4 +2 +0 +20 +m4 +2 +7 +Operational + + +1257 +22 +Oceanographic elements +022094 +Total number of wave bands +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1258 +22 +Oceanographic elements +022095 +Directional spread of individual waves +deg +0 +0 +8 +deg +0 +3 +Operational + + +1259 +22 +Oceanographic elements +022096 +Spectral band width +/s +3 +0 +4 +/s +3 +2 +Operational + + +1260 +22 +Oceanographic elements +022097 +Mean wavelength > 731 m of image spectrum at low wave numbers +m +0 +0 +14 +m +0 +5 +Operational + + +1261 +22 +Oceanographic elements +022098 +Wavelength spread (wavelength > 731 m) at low wave numbers +m +0 +0 +14 +m +0 +5 +Operational + + +1262 +22 +Oceanographic elements +022099 +Mean direction at low wave numbers (wavelength > 731 m) +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1263 +22 +Oceanographic elements +022100 +Direction spread at low wave numbers (wavelength > 731 m) +deg +0 +0 +9 +deg +0 +3 +Operational + + +1264 +22 +Oceanographic elements +022101 +Total energy (wavelength > 731m) at low wave numbers +Numeric +0 +0 +31 +Numeric +0 +10 +Operational + + +1265 +22 +Oceanographic elements +022102 +Scaled maximum non-directional spectral wave density by frequency +(see Note 10) +m2 s +0 +0 +14 +m2 s +0 +5 +Operational + + +1266 +22 +Oceanographic elements +022103 +Scaled maximum non-directional spectral wave density by wave number +(see Note 10) +m3 +0 +0 +14 +m3 +0 +5 +Operational + + +1267 +22 +Oceanographic elements +022104 +Scaled non-directional spectral wave density by frequency +(see Note 10) +m2 s +0 +0 +14 +m2 s +0 +5 +Operational + + +1268 +22 +Oceanographic elements +022105 +Scaled non-directional spectral wave density by wave number +(see Note 10) +m3 +0 +0 +14 +m3 +0 +5 +Operational + + +1269 +22 +Oceanographic elements +022106 +Scaled directional spectral wave density by frequency +(see Note 10) +m2 s rad-1 +0 +0 +14 +m2 s rad-1 +0 +5 +Operational + + +1270 +22 +Oceanographic elements +022107 +Scaled directional spectral wave density by wave number +(see Note 10) +m4 +0 +0 +14 +m4 +0 +5 +Operational + + +1271 +22 +Oceanographic elements +022108 +Spectral wave density ratio +% +0 +0 +7 +% +0 +3 +Operational + + +1272 +22 +Oceanographic elements +022120 +Tide station automated water level check +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1273 +22 +Oceanographic elements +022121 +Tide station manual water level check +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1274 +22 +Oceanographic elements +022122 +Tide station automated meteorological data check +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1275 +22 +Oceanographic elements +022123 +Tide station manual meteorological data check +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1276 +22 +Oceanographic elements +022130 +Number of valid points for specific band +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1277 +22 +Oceanographic elements +022131 +RMS specific band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1278 +22 +Oceanographic elements +022132 +Number of valid points for specific band significant wave height +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1279 +22 +Oceanographic elements +022133 +Specific band net instrument correction for significant wave height +m +3 +-1000 +11 +m +3 +4 +Operational + + +1280 +22 +Oceanographic elements +022134 +Number of valid points for specific band backscatter +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1281 +22 +Oceanographic elements +022141 +Sea-surface temperature (15-day running mean) +K +2 +0 +15 +K +2 +5 +Operational + + +1282 +22 +Oceanographic elements +022142 +Square of significant wave height +m2 +3 +-33554432 +26 +m2 +3 +8 +Operational + + +1283 +22 +Oceanographic elements +022143 +STD of 20 Hz SWH squared +m2 +3 +-8388608 +24 +m2 +3 +8 +Operational + + +1284 +22 +Oceanographic elements +022144 +Number of 20 Hz valid points for SWH squared +Numeric +0 +0 +9 +Numeric +0 +3 +Operational + + +1285 +22 +Oceanographic elements +022145 +STD of 20 Hz ocean range +m +3 +-33554432 +31 +m +3 +10 +Operational + + +1286 +22 +Oceanographic elements +022146 +OCOG range +m +3 +0 +31 +m +3 +10 +Operational + + +1287 +22 +Oceanographic elements +022147 +STD of 20 Hz OCOG range +m +3 +-8388608 +31 +m +3 +10 +Operational + + +1288 +22 +Oceanographic elements +022148 +Number of 20 Hz valid points for ocean range +Numeric +0 +0 +9 +Numeric +0 +3 +Operational + + +1289 +22 +Oceanographic elements +022149 +20 Hz significant wave height squared +m2 +3 +-33554432 +26 +m2 +3 +8 +Operational + + +1290 +22 +Oceanographic elements +022150 +Number of 18 Hz valid points for Ku band +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1291 +22 +Oceanographic elements +022151 +Ku band ocean range +m +3 +0 +31 +m +3 +10 +Operational + + +1292 +22 +Oceanographic elements +022152 +STD of 18 Hz Ku band ocean range +m +3 +0 +16 +m +3 +5 +Operational + + +1293 +22 +Oceanographic elements +022153 +Number of 18 Hz valid points for S band +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1294 +22 +Oceanographic elements +022154 +S band ocean range +m +3 +0 +31 +m +3 +10 +Operational + + +1295 +22 +Oceanographic elements +022155 +STD of 18 Hz S band ocean range +m +3 +0 +16 +m +3 +5 +Operational + + +1296 +22 +Oceanographic elements +022156 +Ku band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1297 +22 +Oceanographic elements +022157 +STD of 18 Hz Ku band ocean range +m +3 +0 +16 +m +3 +5 +Operational + + +1298 +22 +Oceanographic elements +022158 +S band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1299 +22 +Oceanographic elements +022159 +STD of 18 Hz S band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1300 +22 +Oceanographic elements +022160 +Normalized inverse wave age +Numeric +6 +0 +21 +Numeric +6 +7 +Operational + + +1301 +22 +Oceanographic elements +022161 +Wave spectra +m4 +4 +0 +27 +m4 +4 +9 +Operational + + +1302 +22 +Oceanographic elements +022162 +RMS of 20 Hz Ku band ocean range +m +3 +0 +16 +m +3 +5 +Operational + + +1303 +22 +Oceanographic elements +022163 +Number of 20 Hz valid points for Ku band +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1304 +22 +Oceanographic elements +022164 +RMS 20 Hz Ku band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1305 +22 +Oceanographic elements +022165 +Number of 20 Hz valid points for Ku band significant wave height +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1306 +22 +Oceanographic elements +022166 +Ku band net instrumental correction for significant wave height +m +3 +-1000 +11 +m +3 +4 +Operational + + +1307 +22 +Oceanographic elements +022167 +Number of valid points for Ku band backscatter +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1308 +22 +Oceanographic elements +022168 +C band ocean range +m +3 +0 +31 +m +3 +10 +Operational + + +1309 +22 +Oceanographic elements +022169 +RMS of C band ocean range +m +3 +0 +16 +m +3 +5 +Operational + + +1310 +22 +Oceanographic elements +022170 +Number of 20 Hz valid points for C band +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1311 +22 +Oceanographic elements +022171 +C band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1312 +22 +Oceanographic elements +022172 +RMS 20 Hz C band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1313 +22 +Oceanographic elements +022173 +Number of 20 Hz valid points for C band significant wave height +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1314 +22 +Oceanographic elements +022174 +C band net instrumental correction for significant wave height +m +3 +-1000 +11 +m +3 +4 +Operational + + +1315 +22 +Oceanographic elements +022175 +Number of valid points for C band backscatter +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1316 +22 +Oceanographic elements +022177 +Height of XBT/XCTD launcher +m +0 +0 +6 +m +0 +3 +Operational + + +1317 +22 +Oceanographic elements +022178 +XBT/XCTD launcher type +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +1318 +22 +Oceanographic elements +022179 +Specific band significant wave height (negative reference) +similar to 0-22-190, but with a negative reference value +m +3 +-500 +16 +m +3 +6 +Operational + + +1319 +22 +Oceanographic elements +022182 +Water column height +(see Note 9) +m +3 +0 +23 +m +3 +7 +Operational + + +1320 +22 +Oceanographic elements +022184 +Water column height deviation from the reference value +m +3 +-2000 +12 +m +3 +4 +Operational + + +1321 +22 +Oceanographic elements +022185 +BPR transmission count +Numeric +0 +0 +10 +Numeric +0 +3 +Operational + + +1322 +22 +Oceanographic elements +022186 +Direction from which waves are coming +(see Note 11) +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1323 +22 +Oceanographic elements +022187 +Directional spread of wave +(see Note 12) +deg +0 +0 +9 +deg +0 +3 +Operational + + +1324 +22 +Oceanographic elements +022188 +Dissolved oxygen +umol/kg +3 +0 +19 +umol/kg +3 +6 +Operational + + +1325 +22 +Oceanographic elements +022189 +Specific band ocean range +m +3 +0 +31 +m +3 +10 +Operational + + +1326 +22 +Oceanographic elements +022190 +Specific band significant wave height +m +3 +0 +16 +m +3 +5 +Operational + + +1327 +22 +Oceanographic elements +022191 +RMS of specific band ocean range +m +4 +0 +16 +m +4 +5 +Operational + + +1328 +23 +Dispersal and transport +023001 +Accident early notification - article applicable +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1329 +23 +Dispersal and transport +023002 +Activity or facility involved in incident +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1330 +23 +Dispersal and transport +023003 +Type of release +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1331 +23 +Dispersal and transport +023004 +Countermeasures taken near border +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1332 +23 +Dispersal and transport +023005 +Cause of incident +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1333 +23 +Dispersal and transport +023006 +Incident situation +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1334 +23 +Dispersal and transport +023007 +Characteristics of release +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1335 +23 +Dispersal and transport +023008 +State of current release +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1336 +23 +Dispersal and transport +023009 +State of expected release +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1337 +23 +Dispersal and transport +023016 +Possibility of significant chemical toxic health effect +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1338 +23 +Dispersal and transport +023017 +Flow discharge of major recipient +m3/s +6 +0 +20 +m3/s +6 +7 +Operational + + +1339 +23 +Dispersal and transport +023018 +Release behaviour over time +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1340 +23 +Dispersal and transport +023019 +Actual release height +m +0 +-15000 +17 +m +0 +6 +Operational + + +1341 +23 +Dispersal and transport +023021 +Effective release height +m +0 +-15000 +17 +m +0 +6 +Operational + + +1342 +23 +Dispersal and transport +023022 +Distance of release point or site of incident +m +0 +0 +24 +m +0 +8 +Operational + + +1343 +23 +Dispersal and transport +023023 +Main transport speed in the atmosphere +m/s +1 +0 +12 +m/s +1 +4 +Operational + + +1344 +23 +Dispersal and transport +023024 +Main transport speed in water +m/s +2 +0 +13 +m/s +2 +4 +Operational + + +1345 +23 +Dispersal and transport +023025 +Main transport speed in ground water +m/s +2 +0 +13 +m/s +2 +4 +Operational + + +1346 +23 +Dispersal and transport +023027 +Main transport direction in the atmosphere +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1347 +23 +Dispersal and transport +023028 +Main transport direction in water +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1348 +23 +Dispersal and transport +023029 +Main transport direction in ground water +degree true +0 +0 +9 +degree true +0 +3 +Operational + + +1349 +23 +Dispersal and transport +023031 +Possibility that plume will encounter precipitation in State in which incident occurred +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1350 +23 +Dispersal and transport +023032 +Plume will encounter change in wind direction and/or speed flag +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1351 +23 +Dispersal and transport +023040 +Flow discharge - river +m3/s +1 +0 +22 +m3/s +1 +7 +Operational + + +1352 +23 +Dispersal and transport +023041 +Flow discharge - well +m3/s +3 +0 +16 +m3/s +3 +5 +Operational + + +1353 +24 +Radiological elements +024001 +Estimate of amount of radioactivity released up to specified time +Bq +-11 +0 +28 +Bq +-11 +9 +Operational + + +1354 +24 +Radiological elements +024002 +Estimated maximum potential release +Bq +-11 +0 +28 +Bq +-11 +9 +Operational + + +1355 +24 +Radiological elements +024003 +Composition of release +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1356 +24 +Radiological elements +024004 +Element name +CCITT IA5 +0 +0 +16 +Character +0 +2 +Operational + + +1357 +24 +Radiological elements +024005 +Isotope mass +Numeric +0 +0 +9 +Numeric +0 +3 +Operational + + +1358 +24 +Radiological elements +024011 +Dose +mSv +2 +0 +32 +mSv +2 +10 +Operational + + +1359 +24 +Radiological elements +024012 +Trajectory dose (defined location and expected time of arrival) +mSv +2 +0 +32 +mSv +2 +10 +Operational + + +1360 +24 +Radiological elements +024013 +Gamma dose in air along the main transport path (defined location and time period) +mSv +2 +0 +32 +mSv +2 +10 +Operational + + +1361 +24 +Radiological elements +024014 +Gamma radiation dose rate +(see Note 2) +nSv/h +1 +0 +14 +nSv/h +1 +4 +Operational + + +1362 +24 +Radiological elements +024021 +Air concentration (of named isotope type including gross beta) +Bq m-3 +2 +0 +32 +Bq m-3 +2 +10 +Operational + + +1363 +24 +Radiological elements +024022 +Concentration in precipitation (of named isotope type) +Bq/l +2 +0 +32 +Bq/l +2 +10 +Operational + + +1364 +24 +Radiological elements +024023 +Pulse rate of beta radiation +/s +1 +0 +14 +/s +1 +4 +Operational + + +1365 +24 +Radiological elements +024024 +Pulse rate of gamma radiation +/s +1 +0 +14 +/s +1 +4 +Operational + + +1366 +25 +Processing information +025001 +Range-gate length +m +-1 +0 +6 +m +-1 +2 +Operational + + +1367 +25 +Processing information +025002 +Number of gates averaged +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +1368 +25 +Processing information +025003 +Number of integrated pulses +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1369 +25 +Processing information +025004 +Echo processing +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1370 +25 +Processing information +025005 +Echo integration +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1371 +25 +Processing information +025006 +Z to R conversion +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1372 +25 +Processing information +025007 +Z to R conversion factor +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +1373 +25 +Processing information +025008 +Z to R conversion exponent +Numeric +2 +0 +9 +Numeric +2 +3 +Operational + + +1374 +25 +Processing information +025009 +Calibration method +(see Note 3) +Flag table +0 +0 +4 +Flag table +0 +2 +Operational + + +1375 +25 +Processing information +025010 +Clutter treatment +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1376 +25 +Processing information +025011 +Ground occultation correction (screening) +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1377 +25 +Processing information +025012 +Range attenuation correction +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1378 +25 +Processing information +025013 +Bright-band correction +Flag table +0 +0 +2 +Flag table +0 +1 +Operational + + +1379 +25 +Processing information +025014 +Azimuth clutter cut-off +(see Note 1) +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +1380 +25 +Processing information +025015 +Radome attenuation correction +Flag table +0 +0 +2 +Flag table +0 +1 +Operational + + +1381 +25 +Processing information +025016 +Clear-air attenuation correction +dB/m +5 +0 +6 +dB/m +5 +2 +Operational + + +1382 +25 +Processing information +025017 +Precipitation attenuation correction +Flag table +0 +0 +2 +Flag table +0 +1 +Operational + + +1383 +25 +Processing information +025018 +A to Z law for attenuation factor +Numeric +7 +0 +6 +Numeric +7 +2 +Operational + + +1384 +25 +Processing information +025019 +A to Z law for attenuation exponent +Numeric +2 +0 +7 +Numeric +2 +3 +Operational + + +1385 +25 +Processing information +025020 +Mean speed estimation +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1386 +25 +Processing information +025021 +Wind computation enhancement +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1387 +25 +Processing information +025022 +GHRSST rejection flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1388 +25 +Processing information +025023 +GHRSST confidence flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1389 +25 +Processing information +025024 +GHRSST data quality +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1390 +25 +Processing information +025025 +Battery voltage +V +1 +0 +9 +V +1 +3 +Operational + + +1391 +25 +Processing information +025026 +Battery voltage (large range) +V +1 +0 +12 +V +1 +4 +Operational + + +1392 +25 +Processing information +025028 +Operator or manufacturer defined parameter +Numeric +1 +-16384 +15 +Numeric +1 +5 +Operational + + +1393 +25 +Processing information +025029 +Calibration method +(see Note 3) +Flag table +0 +0 +6 +Flag table +0 +2 +Operational + + +1394 +25 +Processing information +025030 +Running mean sea-surface temperature usage +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1395 +25 +Processing information +025031 +NWP-generated vertical profile thinning method +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1396 +25 +Processing information +025032 +Wind profiler mode information +(see Note 2) +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1397 +25 +Processing information +025033 +Wind profiler submode information +(see Note 2) +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1398 +25 +Processing information +025034 +Wind profiler quality control test results +(see Note 2) +Flag table +0 +0 +4 +Flag table +0 +2 +Operational + + +1399 +25 +Processing information +025035 +Decision method for polarity +(see Note 5) +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1400 +25 +Processing information +025036 +Atmospherics location method +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1401 +25 +Processing information +025037 +SST bias +K +2 +-127 +8 +K +2 +3 +Operational + + +1402 +25 +Processing information +025038 +Difference between SST and analysis +K +1 +-127 +8 +K +1 +3 +Operational + + +1403 +25 +Processing information +025040 +CO2 wind product derivation +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1404 +25 +Processing information +025041 +Moving platform direction reporting method +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1405 +25 +Processing information +025042 +Moving platform speed reporting method +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1406 +25 +Processing information +025043 +Wave sampling interval (time) +s +4 +0 +15 +s +4 +5 +Operational + + +1407 +25 +Processing information +025044 +Wave sampling interval (space) +m +2 +0 +14 +m +2 +5 +Operational + + +1408 +25 +Processing information +025045 +HIRS channel combination +Flag table +0 +0 +21 +Flag table +0 +7 +Operational + + +1409 +25 +Processing information +025046 +MSU channel combination +Flag table +0 +0 +5 +Flag table +0 +2 +Operational + + +1410 +25 +Processing information +025047 +SSU channel combination +Flag table +0 +0 +4 +Flag table +0 +2 +Operational + + +1411 +25 +Processing information +025048 +AMSU-A channel combination +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1412 +25 +Processing information +025049 +AMSU-B channel combination +Flag table +0 +0 +6 +Flag table +0 +2 +Operational + + +1413 +25 +Processing information +025050 +Principal component score +Numeric +4 +-131072 +18 +Numeric +4 +6 +Operational + + +1414 +25 +Processing information +025051 +AVHRR channel combination +Flag table +0 +0 +7 +Flag table +0 +3 +Operational + + +1415 +25 +Processing information +025052 +Log10 of principal components normalized fit to data +Numeric +4 +0 +15 +Numeric +4 +5 +Operational + + +1416 +25 +Processing information +025053 +Observation quality +Flag table +0 +0 +12 +Flag table +0 +4 +Operational + + +1417 +25 +Processing information +025054 +SSMIS subframe ID number +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +1418 +25 +Processing information +025055 +Multiplexer housekeeping +K +2 +0 +16 +K +2 +5 +Operational + + +1419 +25 +Processing information +025060 +Software identification +(see Note 2) +Numeric +0 +0 +14 +Numeric +0 +5 +Operational + + +1420 +25 +Processing information +025061 +Software identification and version number +CCITT IA5 +0 +0 +96 +Character +0 +12 +Operational + + +1421 +25 +Processing information +025062 +Database identification +Numeric +0 +0 +14 +Numeric +0 +5 +Operational + + +1422 +25 +Processing information +025063 +Central processor or system identifier +(see Note 6) +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +1423 +25 +Processing information +025065 +Orientation correction (azimuth) +deg +2 +-1000 +11 +deg +2 +4 +Operational + + +1424 +25 +Processing information +025066 +Orientation correction (elevation) +deg +2 +-1000 +11 +deg +2 +4 +Operational + + +1425 +25 +Processing information +025067 +Radiosonde release point pressure correction +Pa +0 +-8000 +14 +Pa +0 +4 +Operational + + +1426 +25 +Processing information +025068 +Number of archive recomputes +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1427 +25 +Processing information +025069 +Flight level pressure corrections +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1428 +25 +Processing information +025070 +Major frame count +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +1429 +25 +Processing information +025071 +Frame count +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +1430 +25 +Processing information +025075 +Satellite antenna corrections version number +Numeric +0 +0 +5 +Numeric +0 +2 +Operational + + +1431 +25 +Processing information +025076 +Log10 of (temperature-radiance central wave number) for ATOVS +log (m-1) +8 +0 +30 +log (m-1) +8 +10 +Operational + + +1432 +25 +Processing information +025077 +Bandwidth correction coefficient 1 +Numeric +5 +-100000 +18 +Numeric +5 +7 +Operational + + +1433 +25 +Processing information +025078 +Bandwidth correction coefficient 2 +Numeric +5 +0 +17 +Numeric +5 +6 +Operational + + +1434 +25 +Processing information +025079 +Albedo-radiance solar filtered irradiance for ATOVS +W m-2 +4 +0 +24 +W m-2 +4 +8 +Operational + + +1435 +25 +Processing information +025080 +Albedo-radiance equivalent filter width for ATOVS +m +10 +0 +14 +m +10 +5 +Operational + + +1436 +25 +Processing information +025081 +Incidence angle +deg +3 +0 +17 +deg +3 +6 +Operational + + +1437 +25 +Processing information +025082 +Azimuth angle +deg +3 +0 +19 +deg +3 +6 +Operational + + +1438 +25 +Processing information +025083 +Faraday rotational angle +deg +3 +0 +19 +deg +3 +6 +Operational + + +1439 +25 +Processing information +025084 +Geometric rotational angle +deg +5 +0 +26 +deg +5 +8 +Operational + + +1440 +25 +Processing information +025085 +Fraction of clear pixels in HIRS FOV +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1441 +25 +Processing information +025086 +Depth correction indicator +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1442 +25 +Processing information +025090 +Orbit state flag +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1443 +25 +Processing information +025091 +Structure constant of the refraction index (Cn2) +dB +3 +-18192 +13 +dB +3 +5 +Operational + + +1444 +25 +Processing information +025092 +Acoustic propagation velocity +m/s +2 +28000 +14 +m/s +2 +5 +Operational + + +1445 +25 +Processing information +025093 +RASS computation correction +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1446 +25 +Processing information +025095 +Altimeter state flag +Flag table +0 +0 +2 +Flag table +0 +1 +Operational + + +1447 +25 +Processing information +025096 +Radiometer state flag +Flag table +0 +0 +5 +Flag table +0 +2 +Operational + + +1448 +25 +Processing information +025097 +Three-dimensional error estimate of the navigator orbit +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1449 +25 +Processing information +025098 +Altimeter data quality flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1450 +25 +Processing information +025099 +Altimeter correction quality flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1451 +25 +Processing information +025100 +XBT/XCTD fall rate equation coefficient a +Numeric +5 +0 +20 +Numeric +5 +6 +Operational + + +1452 +25 +Processing information +025101 +XBT/XCTD fall rate equation coefficient b +Numeric +5 +-500000 +21 +Numeric +5 +6 +Operational + + +1453 +25 +Processing information +025102 +Number of missing lines excluding data gaps +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1454 +25 +Processing information +025103 +Number of directional bins +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1455 +25 +Processing information +025104 +Number of wavelength bins +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1456 +25 +Processing information +025105 +First directional bin +deg +3 +0 +19 +deg +3 +6 +Operational + + +1457 +25 +Processing information +025106 +Directional bin step +deg +3 +0 +19 +deg +3 +6 +Operational + + +1458 +25 +Processing information +025107 +First wavelength bin +m +3 +0 +29 +m +3 +9 +Operational + + +1459 +25 +Processing information +025108 +Last wavelength bin +m +3 +0 +29 +m +3 +9 +Operational + + +1460 +25 +Processing information +025110 +Image processing summary +Flag table +0 +0 +10 +Flag table +0 +4 +Operational + + +1461 +25 +Processing information +025111 +Number of input data gaps +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1462 +25 +Processing information +025112 +Band specific altimeter data quality flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1463 +25 +Processing information +025113 +Band specific altimeter correction quality flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1464 +25 +Processing information +025120 +RA2-L2-processing flag +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1465 +25 +Processing information +025121 +RA2-L2-processing quality +% +0 +0 +7 +% +0 +3 +Operational + + +1466 +25 +Processing information +025122 +Hardware configuration for RF +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1467 +25 +Processing information +025123 +Hardware configuration for HPA +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1468 +25 +Processing information +025124 +MWR-L2-processing flag +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1469 +25 +Processing information +025125 +MWR-L2-processing quality +% +0 +0 +7 +% +0 +3 +Operational + + +1470 +25 +Processing information +025126 +Model dry tropospheric correction +m +3 +-32768 +16 +m +3 +5 +Operational + + +1471 +25 +Processing information +025127 +Inverted barometer correction +m +3 +-32768 +16 +m +3 +5 +Operational + + +1472 +25 +Processing information +025128 +Model wet tropospheric correction +m +3 +-32768 +16 +m +3 +5 +Operational + + +1473 +25 +Processing information +025129 +MWR derived wet tropospheric correction +m +3 +-32768 +16 +m +3 +5 +Operational + + +1474 +25 +Processing information +025130 +RA2 ionospheric correction on Ku band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1475 +25 +Processing information +025131 +Ionospheric correction from Doris on Ku band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1476 +25 +Processing information +025132 +Ionospheric correction from model on Ku band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1477 +25 +Processing information +025133 +Sea state bias correction on Ku band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1478 +25 +Processing information +025134 +RA2 ionospheric correction on S band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1479 +25 +Processing information +025135 +Ionospheric correction from Doris on S band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1480 +25 +Processing information +025136 +Ionospheric correction from model on S band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1481 +25 +Processing information +025137 +Sea state bias correction on S band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1482 +25 +Processing information +025138 +Average signal-to-noise ratio +Numeric +0 +-2048 +12 +Numeric +0 +4 +Operational + + +1483 +25 +Processing information +025140 +Start channel +Numeric +0 +0 +14 +Numeric +0 +5 +Operational + + +1484 +25 +Processing information +025141 +End channel +Numeric +0 +0 +14 +Numeric +0 +5 +Operational + + +1485 +25 +Processing information +025142 +Channel scale factor +Numeric +0 +0 +6 +Numeric +0 +2 +Operational + + +1486 +25 +Processing information +025143 +Linear coefficient +Numeric +6 +-5000000 +24 +Numeric +6 +8 +Operational + + +1487 +25 +Processing information +025148 +Coefficient of variation +Numeric +2 +-10000 +15 +Numeric +2 +5 +Operational + + +1488 +25 +Processing information +025149 +Optimal estimation cost +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1489 +25 +Processing information +025150 +Method of tropical cyclone intensity analysis using satellite data +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1490 +25 +Processing information +025160 +Ku band net instrumental correction +m +4 +-120000 +18 +m +4 +6 +Operational + + +1491 +25 +Processing information +025161 +C band net instrumental correction +m +4 +-120000 +18 +m +4 +6 +Operational + + +1492 +25 +Processing information +025162 +Sea state bias correction on C band +m +4 +-6000 +13 +m +4 +4 +Operational + + +1493 +25 +Processing information +025163 +Altimeter ionospheric correction on Ku band +m +3 +-32768 +16 +m +3 +5 +Operational + + +1494 +25 +Processing information +025164 +Radiometer wet tropospheric correction +m +4 +-5000 +13 +m +4 +4 +Operational + + +1495 +25 +Processing information +025165 +Ionospheric correction from model on specific band +m +4 +-32768 +16 +m +4 +5 +Operational + + +1496 +25 +Processing information +025166 +Sea state bias correction on specific band +m +4 +-32768 +16 +m +4 +5 +Operational + + +1497 +25 +Processing information +025167 +Specific band net instrumental correction +m +4 +-120000 +18 +m +4 +6 +Operational + + +1498 +25 +Processing information +025170 +Sampling interval (time) +s +0 +0 +10 +s +0 +4 +Operational + + +1499 +25 +Processing information +025171 +Sample averaging period +s +0 +0 +10 +s +0 +4 +Operational + + +1500 +25 +Processing information +025172 +Number of samples +Numeric +0 +0 +10 +Numeric +0 +4 +Operational + + +1501 +25 +Processing information +025174 +SMOS information flag +Flag table +0 +0 +14 +Flag table +0 +5 +Operational + + +1502 +25 +Processing information +025175 +Modified residual +(see Note 7) +Numeric +2 +0 +13 +Numeric +2 +4 +Operational + + +1503 +25 +Processing information +025180 +LRM per cent +% +2 +0 +16 +% +2 +5 +Operational + + +1504 +25 +Processing information +025181 +L2 processing flag +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1505 +25 +Processing information +025182 +L1 processing flag +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1506 +25 +Processing information +025183 +L1 processing quality +% +2 +0 +14 +% +2 +5 +Operational + + +1507 +25 +Processing information +025184 +L2 product status +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1508 +25 +Processing information +025185 +Encryption method +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +1509 +25 +Processing information +025186 +Encryption key version +CCITT IA5 +0 +0 +96 +Character +0 +12 +Operational + + +1510 +25 +Processing information +025187 +Confidence flag +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1511 +25 +Processing information +025188 +Method for reducing pressure to sea level +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1512 +25 +Processing information +025189 +Range cut-off wavelength +m +0 +1 +9 +m +0 +3 +Operational + + +1513 +25 +Processing information +025190 +Altimeter echo processing mode +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +1514 +25 +Processing information +025191 +Altimeter tracking mode +Code table +0 +0 +8 +Code table +0 +3 +Operational + + +1515 +26 +Non-coordinate location (time) +026001 +Principal time of daily reading in UTC of maximum temperature +h +1 +0 +12 +h +1 +3 +Operational + + +1516 +26 +Non-coordinate location (time) +026002 +Principal time of daily reading in UTC of minimum temperature +h +1 +0 +12 +h +1 +3 +Operational + + +1517 +26 +Non-coordinate location (time) +026003 +Time difference +min +0 +-1440 +12 +min +0 +4 +Operational + + +1518 +26 +Non-coordinate location (time) +026010 +Hours included +Flag table +0 +0 +26 +Flag table +0 +9 +Operational + + +1519 +26 +Non-coordinate location (time) +026020 +Duration of precipitation +min +0 +0 +11 +min +0 +4 +Operational + + +1520 +26 +Non-coordinate location (time) +026021 +Year +a +0 +0 +12 +a +0 +4 +Operational + + +1521 +26 +Non-coordinate location (time) +026022 +Month +mon +0 +0 +4 +mon +0 +2 +Operational + + +1522 +26 +Non-coordinate location (time) +026023 +Day +d +0 +0 +6 +d +0 +2 +Operational + + +1523 +26 +Non-coordinate location (time) +026030 +Measurement integration time +s +2 +0 +8 +s +2 +3 +Operational + + +1524 +27 +Non-coordinate location (horizontal - 1) +027001 +Latitude (high accuracy) +deg +5 +-9000000 +25 +deg +5 +7 +Operational + + +1525 +27 +Non-coordinate location (horizontal - 1) +027002 +Latitude (coarse accuracy) +deg +2 +-9000 +15 +deg +2 +4 +Operational + + +1526 +27 +Non-coordinate location (horizontal - 1) +027003 +Alternate latitude (coarse accuracy) +deg +2 +-9000 +15 +deg +2 +4 +Operational + + +1527 +27 +Non-coordinate location (horizontal - 1) +027004 +Alternate latitude (high accuracy) +deg +5 +-9000000 +25 +deg +5 +7 +Operational + + +1528 +27 +Non-coordinate location (horizontal - 1) +027010 +Footprint axis 1 +m +-1 +0 +14 +m +-1 +5 +Operational + + +1529 +27 +Non-coordinate location (horizontal - 1) +027020 +Satellite location counter +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +1530 +27 +Non-coordinate location (horizontal - 1) +027021 +Satellite sublocation dimension +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +1531 +27 +Non-coordinate location (horizontal - 1) +027031 +In direction of 0 degrees longitude, distance from the Earth's centre +m +2 +-1073741824 +31 +m +2 +10 +Operational + + +1532 +27 +Non-coordinate location (horizontal - 1) +027079 +Horizontal width of sampled volume +m +0 +0 +18 +m +0 +6 +Operational + + +1533 +27 +Non-coordinate location (horizontal - 1) +027080 +Viewing azimuth angle +degree true +2 +0 +16 +degree true +0 +5 +Operational + + +1534 +28 +Non-coordinate location (horizontal - 2) +028001 +Longitude (high accuracy) +deg +5 +-18000000 +26 +deg +5 +8 +Operational + + +1535 +28 +Non-coordinate location (horizontal - 2) +028002 +Longitude (coarse accuracy) +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +1536 +28 +Non-coordinate location (horizontal - 2) +028003 +Alternate longitude (coarse accuracy) +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +1537 +28 +Non-coordinate location (horizontal - 2) +028004 +Alternate longitude (high accuracy) +deg +5 +-18000000 +26 +deg +5 +8 +Operational + + +1538 +28 +Non-coordinate location (horizontal - 2) +028010 +Footprint axis 2 +m +-1 +0 +14 +m +-1 +5 +Operational + + +1539 +28 +Non-coordinate location (horizontal - 2) +028031 +In direction 90 degrees East, distance from the Earth's centre +m +2 +-1073741824 +31 +m +2 +10 +Operational + + +1540 +29 +Map data +029001 +Projection type +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1541 +29 +Map data +029002 +Coordinate grid type +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1542 +29 +Map data +029014 +Optional list of parameters for an external map projection library +CCITT IA5 +0 +0 +504 +Character +0 +63 +Operational + + +1543 +30 +Image +030001 +Pixel value (4 bits) +Numeric +0 +0 +4 +Numeric +0 +2 +Operational + + +1544 +30 +Image +030002 +Pixel value (8 bits) +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1545 +30 +Image +030004 +Pixel value (16 bits) +Numeric +0 +0 +16 +Numeric +0 +5 +Operational + + +1546 +30 +Image +030010 +Number of grid points +Numeric +0 +0 +13 +Numeric +0 +4 +Operational + + +1547 +30 +Image +030021 +Number of pixels per row +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +1548 +30 +Image +030022 +Number of pixels per column +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +1549 +30 +Image +030031 +Picture type +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1550 +30 +Image +030032 +Combination with other data +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1551 +30 +Image +030033 +Number of bins along the radial +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +1552 +30 +Image +030034 +Number of azimuths +Numeric +0 +0 +12 +Numeric +0 +4 +Operational + + +1553 +31 +Data description operator qualifiers +031000 +Short delayed descriptor replication factor +Numeric +0 +0 +1 +Operational + + +1554 +31 +Data description operator qualifiers +031001 +Delayed descriptor replication factor +Numeric +0 +0 +8 +Operational + + +1555 +31 +Data description operator qualifiers +031002 +Extended delayed descriptor replication factor +Numeric +0 +0 +16 +Operational + + +1556 +31 +Data description operator qualifiers +031011 +Delayed descriptor and data repetition factor +Numeric +0 +0 +8 +Operational + + +1557 +31 +Data description operator qualifiers +031012 +Extended delayed descriptor and data repetition factor +Numeric +0 +0 +16 +Operational + + +1558 +31 +Data description operator qualifiers +031021 +Associated field significance +Code table +0 +0 +6 +Operational + + +1559 +31 +Data description operator qualifiers +031031 +Data present indicator +Flag table +0 +0 +1 +Operational + + +1560 +33 +Quality information +033002 +Quality information +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1561 +33 +Quality information +033003 +Quality information +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1562 +33 +Quality information +033005 +Quality information (AWS data) +Flag table +0 +0 +30 +Flag table +0 +10 +Operational + + +1563 +33 +Quality information +033006 +Internal measurement status information (AWS) +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1564 +33 +Quality information +033007 +Per cent confidence +% +0 +0 +7 +% +0 +3 +Operational + + +1565 +33 +Quality information +033015 +Data quality-check indicator +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +1566 +33 +Quality information +033020 +Quality control indication of following value +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1567 +33 +Quality information +033021 +Quality of following value +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1568 +33 +Quality information +033022 +Quality of buoy satellite transmission +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1569 +33 +Quality information +033023 +Quality of buoy location +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1570 +33 +Quality information +033024 +Station elevation quality mark (for mobile stations) +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1571 +33 +Quality information +033025 +ACARS interpolated values indicator +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1572 +33 +Quality information +033026 +Moisture quality +Code table +0 +0 +6 +Code table +0 +2 +Operational + + +1573 +33 +Quality information +033027 +Location quality class (range of radius of 66 % confidence) +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1574 +33 +Quality information +033028 +Snapshot overall quality +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1575 +33 +Quality information +033030 +Scan line status flags for ATOVS +Flag table +0 +0 +24 +Flag table +0 +8 +Operational + + +1576 +33 +Quality information +033031 +Scan line quality flags for ATOVS +Flag table +0 +0 +24 +Flag table +0 +8 +Operational + + +1577 +33 +Quality information +033032 +Channel quality flags for ATOVS +Flag table +0 +0 +24 +Flag table +0 +8 +Operational + + +1578 +33 +Quality information +033033 +Field of view quality flags for ATOVS +Flag table +0 +0 +24 +Flag table +0 +8 +Operational + + +1579 +33 +Quality information +033035 +Manual/automatic quality control +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1580 +33 +Quality information +033036 +Nominal confidence threshold +% +0 +0 +7 +% +0 +3 +Operational + + +1581 +33 +Quality information +033037 +Wind correlation error +Flag table +0 +0 +20 +Flag table +0 +7 +Operational + + +1582 +33 +Quality information +033038 +Quality flags for ground-based GNSS data +Flag table +0 +0 +10 +Flag table +0 +4 +Operational + + +1583 +33 +Quality information +033039 +Quality flags for radio occultation data +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1584 +33 +Quality information +033040 +Confidence interval +% +0 +0 +7 +% +0 +3 +Operational + + +1585 +33 +Quality information +033041 +Attribute of following value +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1586 +33 +Quality information +033042 +Type of limit represented by following value +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1587 +33 +Quality information +033043 +AST confidence +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1588 +33 +Quality information +033044 +ASAR quality information +Flag table +0 +0 +15 +Flag table +0 +5 +Operational + + +1589 +33 +Quality information +033045 +Probability of following event +(see Notes 1 and 3) +% +0 +0 +7 +% +0 +3 +Operational + + +1590 +33 +Quality information +033046 +Conditional probability of following event with respect to specified conditioning event +(see Notes 1, 2 and 3) +% +0 +0 +7 +% +0 +3 +Operational + + +1591 +33 +Quality information +033047 +Measurement confidence data +Flag table +0 +0 +31 +Flag table +0 +11 +Operational + + +1592 +33 +Quality information +033048 +Confidence measure of SAR inversion +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1593 +33 +Quality information +033049 +Confidence measure of wind retrieval +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1594 +33 +Quality information +033050 +Global GTSPP quality flag +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1595 +33 +Quality information +033052 +S band ocean retracking quality +Flag table +0 +0 +21 +Flag table +0 +7 +Operational + + +1596 +33 +Quality information +033053 +Ku band ocean retracking quality +Flag table +0 +0 +21 +Flag table +0 +7 +Operational + + +1597 +33 +Quality information +033055 +Wind vector quality flag +Flag table +0 +0 +24 +Flag table +0 +8 +Operational + + +1598 +33 +Quality information +033056 +Sigma-0 quality flag +Flag table +0 +0 +24 +Flag table +0 +8 +Operational + + +1599 +33 +Quality information +033060 +GqisFlagQual - individual IASI-System quality flag +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1600 +33 +Quality information +033061 +GqisQualIndex - indicator for instrument noise performance (contributions from spectral and radiometric calibration) +% +0 +0 +7 +% +0 +3 +Operational + + +1601 +33 +Quality information +033062 +GqisQualIndexLoc - indicator for geometric quality index +% +0 +0 +7 +% +0 +3 +Operational + + +1602 +33 +Quality information +033063 +GqisQualIndexRad - indicator for instrument noise performance (contributions from radiometric calibration) +% +0 +0 +7 +% +0 +3 +Operational + + +1603 +33 +Quality information +033064 +GqisQualIndexSpect - indicator for instrument noise performance (contributions from spectral calibration) +% +0 +0 +7 +% +0 +3 +Operational + + +1604 +33 +Quality information +033065 +GqisSysTecSondQual - output of system TEC (Technical Expertise Centre) quality function +Numeric +0 +0 +24 +Numeric +0 +8 +Operational + + +1605 +33 +Quality information +033066 +AMV quality flag +Flag table +0 +0 +24 +Flag table +0 +8 +Operational + + +1606 +33 +Quality information +033070 +Total ozone quality +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1607 +33 +Quality information +033071 +Profile ozone quality +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1608 +33 +Quality information +033072 +Ozone error +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1609 +33 +Quality information +033075 +Scan-level quality flags +Flag table +0 +0 +13 +Flag table +0 +5 +Operational + + +1610 +33 +Quality information +033076 +Calibration quality flags +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1611 +33 +Quality information +033077 +Field-of-view quality flags +Flag table +0 +0 +19 +Flag table +0 +7 +Operational + + +1612 +33 +Quality information +033078 +Geolocation quality +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1613 +33 +Quality information +033079 +Granule level quality flags +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1614 +33 +Quality information +033080 +Scan level quality flags +Flag table +0 +0 +20 +Flag table +0 +7 +Operational + + +1615 +33 +Quality information +033081 +Channel data quality flags +Flag table +0 +0 +12 +Flag table +0 +4 +Operational + + +1616 +33 +Quality information +033082 +Geolocation quality flags +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1617 +33 +Quality information +033083 +Radiance data quality flags +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1618 +33 +Quality information +033084 +Pixel level quality flags +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1619 +33 +Quality information +033085 +Aerosol optical thickness quality flags +Flag table +0 +0 +18 +Flag table +0 +6 +Operational + + +1620 +33 +Quality information +033086 +Quality of pixel level retrieval +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1621 +33 +Quality information +033087 +Extent of satellite within South Atlantic anomaly (based on climatological data) +Code table +0 +0 +4 +Code table +0 +1 +Operational + + +1622 +33 +Quality information +033088 +Ozone total column quality flag +Flag table +0 +0 +18 +Flag table +0 +6 +Operational + + +1623 +33 +Quality information +033089 +Noise equivalent delta temperature (NEdT) quality indicators for warm target calibration +K +2 +0 +12 +K +2 +4 +Operational + + +1624 +33 +Quality information +033090 +NEdT quality indicators for cold target calibration +K +2 +0 +12 +K +2 +4 +Operational + + +1625 +33 +Quality information +033091 +NEdT quality indicators for overall calibration +K +2 +0 +12 +K +2 +4 +Operational + + +1626 +33 +Quality information +033092 +Band specific ocean quality flag +Flag table +0 +0 +9 +Flag table +0 +3 +Operational + + +1627 +33 +Quality information +033093 +Extended quality flags for ground-based GNSS data +Flag table +0 +0 +31 +Flag table +0 +31 +Operational + + +1628 +35 +Data monitoring information +035000 +FM and regional code number +Code table +0 +0 +10 +Code table +0 +3 +Operational + + +1629 +35 +Data monitoring information +035001 +Time frame for monitoring +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1630 +35 +Data monitoring information +035011 +Number of reports actually received +Numeric +0 +0 +14 +Numeric +0 +4 +Operational + + +1631 +35 +Data monitoring information +035021 +Bulletin being monitored (TTAAii) +CCITT IA5 +0 +0 +48 +Character +0 +6 +Operational + + +1632 +35 +Data monitoring information +035022 +Bulletin being monitored (YYGGgg) +CCITT IA5 +0 +0 +48 +Character +0 +6 +Operational + + +1633 +35 +Data monitoring information +035023 +Bulletin being monitored (CCCC) +CCITT IA5 +0 +0 +32 +Character +0 +4 +Operational + + +1634 +35 +Data monitoring information +035024 +Bulletin being monitored (BBB) +CCITT IA5 +0 +0 +24 +Character +0 +3 +Operational + + +1635 +35 +Data monitoring information +035030 +Discrepancies in the availability of expected data +Code table +0 +0 +4 +Code table +0 +1 +Operational + + +1636 +35 +Data monitoring information +035031 +Qualifier on monitoring results +Code table +0 +0 +7 +Code table +0 +2 +Operational + + +1637 +35 +Data monitoring information +035032 +Cause of missing data +Code table +0 +0 +4 +Code table +0 +1 +Operational + + +1638 +35 +Data monitoring information +035033 +Observation and collection deficiencies +Code table +0 +0 +7 +Code table +0 +2 +Operational + + +1639 +35 +Data monitoring information +035034 +Statistical trends for availability of data (during the survey period(s)) +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1640 +35 +Data monitoring information +035035 +Reason for termination +Code table +0 +0 +5 +Code table +0 +2 +Operational + + +1641 +40 +Satellite data +040001 +Surface soil moisture (ms) +% +1 +0 +10 +% +1 +4 +Operational + + +1642 +40 +Satellite data +040002 +Estimated error in surface soil moisture +% +1 +0 +10 +% +1 +4 +Operational + + +1643 +40 +Satellite data +040003 +Mean surface soil moisture +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1644 +40 +Satellite data +040004 +Rain fall detection +Numeric +3 +0 +10 +Numeric +3 +4 +Operational + + +1645 +40 +Satellite data +040005 +Soil moisture correction flag +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1646 +40 +Satellite data +040006 +Soil moisture processing flag +Flag table +0 +0 +16 +Flag table +0 +6 +Operational + + +1647 +40 +Satellite data +040007 +Soil moisture quality +% +1 +0 +10 +% +1 +4 +Operational + + +1648 +40 +Satellite data +040008 +Frozen land surface fraction +% +1 +0 +10 +% +1 +4 +Operational + + +1649 +40 +Satellite data +040009 +Inundation and wetland fraction +% +1 +0 +10 +% +1 +4 +Operational + + +1650 +40 +Satellite data +040010 +Topographic complexity +% +1 +0 +10 +% +1 +4 +Operational + + +1651 +40 +Satellite data +040011 +Interpolation flag +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1652 +40 +Satellite data +040012 +Radiometer data quality flag +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1653 +40 +Satellite data +040013 +Radiometer brightness temperature interpretation flag +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1654 +40 +Satellite data +040014 +High-frequency fluctuations of the sea-surface topography correction +m +4 +-3000 +13 +m +4 +4 +Operational + + +1655 +40 +Satellite data +040015 +Normalized differential vegetation index (NDVI) +Numeric +2 +-100 +8 +Numeric +2 +3 +Operational + + +1656 +40 +Satellite data +040016 +Residual RMS in band +Numeric +3 +0 +14 +Numeric +3 +5 +Operational + + +1657 +40 +Satellite data +040017 +Non-normalized principal component score +Numeric +0 +-1073741824 +31 +Numeric +0 +10 +Operational + + +1658 +40 +Satellite data +040018 +GIacAvgImagIIS - average of imager measurements +W m-2 sr-1 m +6 +0 +24 +W m-2 sr-1 m +6 +8 +Operational + + +1659 +40 +Satellite data +040019 +GIacVarImagIIS - variance of imager measurements +W m-2 sr-1 m +6 +0 +24 +W m-2 sr-1 m +6 +8 +Operational + + +1660 +40 +Satellite data +040020 +GqisFlagQualDetailed - quality flag for the system +Flag table +0 +0 +17 +Flag table +0 +6 +Operational + + +1661 +40 +Satellite data +040021 +Fraction of weighted AVHRR pixel in IASI FOV covered with snow/ice +% +0 +0 +7 +% +0 +3 +Operational + + +1662 +40 +Satellite data +040022 +Number of missing, bad or failed AVHRR pixels +Numeric +0 +0 +7 +Numeric +0 +3 +Operational + + +1663 +40 +Satellite data +040023 +Auxiliary altimeter state flags +Flag table +0 +0 +5 +Flag table +0 +2 +Operational + + +1664 +40 +Satellite data +040024 +Meteorological map availability +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1665 +40 +Satellite data +040025 +Interpolation flag for mean diurnal tide +Code table +0 +0 +2 +Code table +0 +1 +Operational + + +1666 +40 +Satellite data +040026 +Score quantization factor +Numeric +2 +0 +16 +Numeric +2 +5 +Operational + + +1667 +40 +Satellite data +040027 +Sun glint angle +deg +2 +-18000 +16 +deg +2 +5 +Operational + + +1668 +40 +Satellite data +040028 +GMI quality flag +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1669 +40 +Satellite data +040029 +Horizontal observation integration length +m +0 +0 +26 +m +0 +8 +Operational + + +1670 +40 +Satellite data +040030 +Horizontal line of sight wind +m/s +2 +-32767 +16 +m/s +2 +5 +Operational + + +1671 +40 +Satellite data +040031 +Error estimate of horizontal line of sight wind +m/s +2 +0 +15 +m/s +2 +5 +Operational + + +1672 +40 +Satellite data +040032 +Derivative wind to pressure +m s-1 Pa-1 +3 +-100000 +18 +m s-1 Pa-1 +3 +6 +Operational + + +1673 +40 +Satellite data +040033 +Derivative wind to temperature +m s-1 K-1 +3 +-100000 +18 +m s-1 K-1 +3 +6 +Operational + + +1674 +40 +Satellite data +040034 +Derivative wind to backscatter ratio +m/s +3 +-200000 +19 +m/s +3 +6 +Operational + + +1675 +40 +Satellite data +040035 +Satellite range +m +0 +380000 +18 +m +0 +6 +Operational + + +1676 +40 +Satellite data +040036 +Lidar L2b classification type +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1677 +40 +Satellite data +040037 +Backscatter ratio +Numeric +3 +500 +20 +Numeric +3 +7 +Operational + + +1678 +40 +Satellite data +040038 +Cloud particle size +m +7 +0 +28 +m +7 +6 +Operational + + +1679 +40 +Satellite data +040039 +Single look complex image intensity +Numeric +0 +-25 +5 +Numeric +0 +3 +Operational + + +1680 +40 +Satellite data +040040 +Single look complex image skewness +Numeric +2 +1 +13 +Numeric +0 +4 +Operational + + +1681 +40 +Satellite data +040041 +Single look complex image kurtosis +Numeric +2 +1 +13 +Numeric +0 +4 +Operational + + +1682 +40 +Satellite data +040042 +Single look complex image variance +Numeric +2 +1 +13 +Numeric +0 +4 +Operational + + +1683 +40 +Satellite data +040043 +Satellite manoeuvre indicator +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1684 +40 +Satellite data +040044 +Dust index +Numeric +1 +0 +8 +Numeric +1 +3 +Operational + + +1685 +40 +Satellite data +040045 +Cloud formation and height assignment +Flag table +0 +0 +5 +Flag table +0 +2 +Operational + + +1686 +40 +Satellite data +040046 +Cloudiness summary +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1687 +40 +Satellite data +040047 +Validation flag for IASI or IASI-NG level 1 product +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1688 +40 +Satellite data +040048 +Validation flag of AMSU-A level 1 data flow +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1689 +40 +Satellite data +040049 +Cloud tests executed and results +Flag table +0 +0 +16 +Flag table +0 +5 +Operational + + +1690 +40 +Satellite data +040050 +Retrieval initialisation +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1691 +40 +Satellite data +040051 +Convergence of the iterative retrieval +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1692 +40 +Satellite data +040052 +Indication of super-adiabatic and super-saturation in final retrieval +Flag table +0 +0 +8 +Flag table +0 +3 +Operational + + +1693 +40 +Satellite data +040053 +Number of iterations used for retrieval +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1694 +40 +Satellite data +040054 +Potential processing and inputs errors +Flag table +0 +0 +13 +Flag table +0 +4 +Operational + + +1695 +40 +Satellite data +040055 +Diagnostics on the retrieval +Flag table +0 +0 +21 +Flag table +0 +7 +Operational + + +1696 +40 +Satellite data +040056 +General retrieval quality +Code table +0 +0 +3 +Code table +0 +1 +Operational + + +1697 +40 +Satellite data +040057 +IASI level 2 retrieval flags +Flag table +0 +0 +31 +Flag table +0 +10 +Operational + + +1698 +40 +Satellite data +040058 +Number of vectors describing the characterization matrices +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1699 +40 +Satellite data +040059 +Number of layers actually retrieved +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1700 +40 +Satellite data +040060 +Number of profiles retrieved in scanline +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1701 +40 +Satellite data +040061 +Air partial columns on each retrieved layer +mol cm-2 +3 +0 +16 +mol cm-2 +3 +5 +Operational + + +1702 +40 +Satellite data +040062 +A-priori partial columns on each retrieved layer +mol cm-2 +10 +0 +16 +mol cm-2 +10 +5 +Operational + + +1703 +40 +Satellite data +040063 +Scaling vector multiplying the a priori vector in order to define the retrieved vector +Numeric +5 +0 +26 +Numeric +5 +8 +Operational + + +1704 +40 +Satellite data +040064 +Main eigenvalues of the sensitivity matrix +Numeric +6 +0 +31 +Numeric +6 +10 +Operational + + +1705 +40 +Satellite data +040065 +Main eigenvectors of the sensitivity matrix +Numeric +6 +-1000000000 +31 +Numeric +6 +10 +Operational + + +1706 +40 +Satellite data +040066 +Quality indicator for atmospheric water vapour +Numeric +1 +0 +8 +Numeric +1 +3 +Operational + + +1707 +40 +Satellite data +040067 +Quality indicator for atmospheric temperature +Numeric +1 +0 +8 +Numeric +1 +3 +Operational + + +1708 +40 +Satellite data +040068 +General retrieval quality flag for SO2 +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1709 +40 +Satellite data +040069 +PWLR estimated retrieval error for surface air temperature +K +4 +-1000000 +21 +K +4 +7 +Operational + + +1710 +40 +Satellite data +040070 +PWLR estimated retrieval error of surface dewpoint +K +4 +-1000000 +21 +K +4 +7 +Operational + + +1711 +40 +Satellite data +040071 +Retrieval error covariance matrix for ozone in principal component domain +Numeric +4 +-1000000 +21 +Numeric +4 +7 +Operational + + +1712 +40 +Satellite data +040072 +PWLR estimated retrieval quality indicator of atmospheric ozone +Numeric +1 +0 +8 +Numeric +1 +3 +Operational + + +1713 +40 +Satellite data +040073 +PWLR estimated retrieval error of surface skin temperature +K +1 +0 +8 +K +1 +3 +Operational + + +1714 +40 +Satellite data +040074 +General interferometry quality flags +Flag table +0 +0 +16 +Operational + + +1715 +41 +Oceanographic/biogeochemical parameters +041001 +pCO2 +Pa +3 +0 +18 +Pa +3 +6 +Operational + + +1716 +41 +Oceanographic/biogeochemical parameters +041002 +Fluorescence +kg l-1 +12 +0 +16 +kg l-1 +12 +5 +Operational + + +1717 +41 +Oceanographic/biogeochemical parameters +041003 +Dissolved nitrates +umol kg-1 +3 +0 +17 +umol kg-1 +3 +5 +Operational + + +1718 +41 +Oceanographic/biogeochemical parameters +041005 +Turbidity +NTU +2 +0 +12 +NTU +2 +4 +Operational + + +1719 +42 +Oceanographic elements +042001 +Dominant swell wave direction of spectral partition +deg +0 +0 +9 +deg +0 +3 +Operational + + +1720 +42 +Oceanographic elements +042002 +Significant swell wave height of spectral partition +m +1 +0 +9 +m +1 +3 +Operational + + +1721 +42 +Oceanographic elements +042003 +Dominant swell wavelength of spectral partition +m +2 +100 +17 +m +2 +6 +Operational + + +1722 +42 +Oceanographic elements +042004 +Confidence of inversion for each partition of swell wave spectra +Code table +0 +0 +4 +Code table +0 +2 +Operational + + +1723 +42 +Oceanographic elements +042005 +Ambiguity removal factor for swell wave partition +Numeric +5 +-100000 +18 +Numeric +5 +6 +Operational + + +1724 +42 +Oceanographic elements +042006 +Wave age +Numeric +2 +1 +8 +Numeric +2 +3 +Operational + + +1725 +42 +Oceanographic elements +042007 +Shortest ocean wavelength on spectral resolution +m +2 +0 +16 +m +2 +5 +Operational + + +1726 +42 +Oceanographic elements +042008 +Nonlinear inverse spectral width +m +2 +0 +16 +m +2 +5 +Operational + + +1727 +42 +Oceanographic elements +042009 +Bin partition reference +Numeric +0 +0 +8 +Numeric +0 +3 +Operational + + +1728 +42 +Oceanographic elements +042010 +Partition number +Numeric +0 +1 +4 +Numeric +0 +2 +Operational + + +1729 +42 +Oceanographic elements +042011 +a1 coefficient of the directional Fourier series +Numeric +4 +-20000 +15 +Numeric +4 +6 +Operational + + +1730 +42 +Oceanographic elements +042012 +b1 coefficient of the directional Fourier series +Numeric +4 +-20000 +15 +Numeric +4 +6 +Operational + + +1731 +42 +Oceanographic elements +042013 +a2 coefficient of the directional Fourier series +Numeric +4 +-20000 +15 +Numeric +4 +6 +Operational + + +1732 +42 +Oceanographic elements +042014 +b2 coefficient of the directional Fourier series +Numeric +4 +-20000 +15 +Numeric +4 +6 +Operational + + +1733 +42 +Oceanographic elements +042015 +Check factor K +Numeric +2 +0 +12 +Numeric +2 +4 +Operational + + diff --git a/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_33_0_0_TableA_en.xml b/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_33_0_0_TableA_en.xml new file mode 100644 index 0000000000..cf76f46e43 --- /dev/null +++ b/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_33_0_0_TableA_en.xml @@ -0,0 +1,201 @@ + + + +1 +0 +Surface data - land +Operational + + +2 +1 +Surface data - sea +Operational + + +3 +2 +Vertical soundings (other than satellite) +Operational + + +4 +3 +Vertical soundings (satellite) +Operational + + +5 +4 +Single level upper-air data (other than satellite) +Operational + + +6 +5 +Single level upper-air data (satellite) +Operational + + +7 +6 +Radar data +Operational + + +8 +7 +Synoptic features +Operational + + +9 +8 +Physical/chemical constituents +Operational + + +10 +9 +Dispersal and transport +Operational + + +11 +10 +Radiological data +Operational + + +12 +11 +BUFR tables, complete replacement or update +Operational + + +14 +12 +Surface data (satellite) +Operational + + +15 +13 +Forecasts +Operational + + +16 +14 +Warnings +Operational + + +17 +15-19 +Reserved +Operational + + +19 +20 +Status information +Operational + + +20 +21 +Radiances (satellite measured) +Operational + + +21 +22 +Radar (satellite) but not altimeter and scatterometer +Operational + + +22 +23 +Lidar (satellite) +Operational + + +23 +24 +Scatterometry (satellite) +Operational + + +24 +25 +Altimetry (satellite) +Operational + + +25 +26 +Spectrometry (satellite) +Operational + + +26 +27 +Gravity measurement (satellite) +Operational + + +27 +28 +Precision orbit (satellite) +Operational + + +28 +29 +Space environment (satellite) +Operational + + +29 +30 +Calibration datasets (satellite) +Operational + + +30 +31 +Oceanographic data +Operational + + +31 +32-100 +Reserved +Operational + + +32 +101 +Image data (satellite) +Operational + + +33 +102-239 +Reserved +Operational + + +34 +240-254 +For experimental use +Operational + + +35 +255 +Other category +Operational + + diff --git a/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_33_0_0_TableC_en.xml b/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_33_0_0_TableC_en.xml new file mode 100644 index 0000000000..294f7f7b7c --- /dev/null +++ b/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_33_0_0_TableC_en.xml @@ -0,0 +1,202 @@ + + + +1 +201YYY +Change data width +Add (YYY-128) bits to the data width given for each data element in Table B, other than CCITT IA5 (character) data, code or flag tables. +Operational + + +3 +202YYY +Change scale +Add YYY-128 to the scale for each data element in Table B, other than CCITT IA5 (character) data, code or flag tables. +Operational + + +5 +203YYY +Change reference values +Subsequent element descriptors define new reference values for corresponding Table B entries. Each new reference value is represented by YYY bits in the Data section. Definition of new reference values is concluded by coding this operator with YYY = 255. Negative reference values shall be represented by a positive integer with the left-most bit (bit 1) set to 1. +Operational + + +6 +204YYY +Add associated field +Precede each data element with YYY bits of information. This operation associates a data field (e.g. quality control information) of YYY bits with each data element. +Operational + + +7 +205YYY +Signify character +YYY characters (CCITT International Alphabet No. 5) are inserted as a data field of YYY x 8 bits in length. +Operational + + +9 +206YYY +Signify data width for the immediately following local descriptor +YYY bits of data are described by the immediately following descriptor. +Operational + + +10 +207YYY +Increase scale, reference value and data width +For Table B elements, which are not CCITT IA5 (character data), code tables, or flag tables: 1. Add YYY to the existing scale factor 2. Multiply the existing reference value by 10**YYY 3. Calculate ((10 x YYY) + 2) ÷ 3, disregard any fractional remainder and add the result to the existing bit width. +Operational + + +12 +208YYY +Change width of CCITT IA5 field +YYY characters from CCITT International Alphabet No. 5 (representing YYY x 8 bits in length) replace the specified data width given for each CCITT IA5 element in Table B. +Operational + + +14 +221YYY +Data not present +Data values present in Section 4 (Data section) corresponding to the following YYY descriptors shall be limited to data from Classes 01-09, and Class 31. +Operational + + +15 +222000 +Quality information follows +The values of Class 33 elements which follow relate to the data defined by the data present bit-map. +Operational + + +16 +223000 +Substituted values operator +The substituted values which follow relate to the data defined by the data present bit-map. +Operational + + +17 +223255 +Substituted values marker operator +This operator shall signify a data item containing a substituted value; the element descriptor for the substituted value is obtained by the application of the data present bit-map associated with the substituted values operator. +Operational + + +18 +224000 +First-order statistical values follow +The statistical values which follow relate to the data defined by the data present bit-map. +Operational + + +19 +224255 +First-order statistical values marker operator +This operator shall signify a data item containing a first-order statistical value of the type indicated by the preceding 0 08 023 element descriptor; the element descriptor to which the first-order statistic relates is obtained by the application of the data present bit-map associated with the first-order statistical values follow operator; first-order statistical values shall be represented as defined by this element descriptor. +Operational + + +20 +225000 +Difference statistical values follow +The statistical values which follow relate to the data defined by the data present bit-map. +Operational + + +21 +225255 +Difference statistical values marker operator +This operator shall signify a data item containing a difference statistical value of the type indicated by the preceding 0 08 024 element descriptor; the element descriptor to which the difference statistical value relates is obtained by the application of the data present bit-map associated with the difference statistical values follow operator; difference statistical values shall be represented as defined by this element descriptor, but with a reference value of -2**n and a data width of (n+1), where n is the data width given by the original descriptor. This special reference value allows the statistical difference values to be centred around zero. +Operational + + +22 +232000 +Replaced/retained values follow +The replaced/retained values which follow relate to the data defined by the data present bit-map. +Operational + + +23 +232255 +Replaced/retained value marker operator +This operator shall signify a data item containing the original of an element which has been replaced by a substituted value. The element descriptor for the retained value is obtained by the application of the data present bit-map associated with the substituted values operator. +Operational + + +24 +235000 +Cancel backward data reference +This operator terminates all previously defined back-ward reference and cancels any previously defined data present bit-map; it causes the next data present bit-map to refer to the data descriptors which immediately precede the operator to which it relates. +Operational + + +25 +236000 +Define data present bit-map +This operator defines the data present bit-map which follows for possible re-use; only one data present bit-map may be defined between this operator and the cancel use defined data present bit-map operator. +Operational + + +26 +237000 +Use defined data present bit-map +This operator causes the defined data present bit-map to be used again. +Operational + + +27 +237255 +Cancel use defined data present bit-map +This operator cancels the re-use of the defined data present bit-map. +Operational + + +28 +241000 +Define event +This operator denotes the beginning of the definition of an event +(see Note 19). +Operational + + +30 +241255 +Cancel define event +This operator denotes the conclusion of the event definition that was begun via the previous 2 41 000 operator. +Operational + + +32 +242000 +Define conditioning event +This operator denotes the beginning of the definition of a conditioning event +(see Note 19). +Operational + + +34 +242255 +Cancel define conditioning event +This operator denotes the conclusion of the conditioning event definition that was begun via the previous 2 42 000 operator. +Operational + + +36 +243000 +Categorical forecast values follow +The values which follow are categorical forecast values +(see Note 20). +Operational + + +38 +243255 +Cancel categorical forecast values follow +This operator denotes the conclusion of the definition of categorical forecast values that was begun via the previous 2 43 000 operator. +Operational + + diff --git a/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_33_0_0_TableD_en.xml b/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_33_0_0_TableD_en.xml new file mode 100644 index 0000000000..60b0f7bc62 --- /dev/null +++ b/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_33_0_0_TableD_en.xml @@ -0,0 +1,78487 @@ + + + +1 +00 +BUFR table entries sequences +300002 +000002 +Table A: data category description, line 1 +Operational + + +2 +00 +BUFR table entries sequences +300002 +000003 +Table A: data category description, line 2 +Operational + + +3 +00 +BUFR table entries sequences +300003 +(F, X, Y of descriptor to be added or defined) +000010 +F descriptor to be added or defined +Operational + + +4 +00 +BUFR table entries sequences +300003 +(F, X, Y of descriptor to be added or defined) +000011 +X descriptor to be added or defined +Operational + + +5 +00 +BUFR table entries sequences +300003 +(F, X, Y of descriptor to be added or defined) +000012 +Y descriptor to be added or defined +Operational + + +6 +00 +BUFR table entries sequences +300004 +300003 +F, X, Y of descriptor to be added or defined +Operational + + +7 +00 +BUFR table entries sequences +300004 +000013 +Element name, line 1 +Operational + + +8 +00 +BUFR table entries sequences +300004 +000014 +Element name, line 2 +Operational + + +9 +00 +BUFR table entries sequences +300004 +000015 +Units name +Operational + + +10 +00 +BUFR table entries sequences +300004 +000016 +Units scale sign +Operational + + +11 +00 +BUFR table entries sequences +300004 +000017 +Units scale +Operational + + +12 +00 +BUFR table entries sequences +300004 +000018 +Units reference sign +Operational + + +13 +00 +BUFR table entries sequences +300004 +000019 +Units reference value +Operational + + +14 +00 +BUFR table entries sequences +300004 +000020 +Element data width +Operational + + +15 +00 +BUFR table entries sequences +300010 +300003 +F, X, Y of descriptor to be added or defined +Operational + + +16 +00 +BUFR table entries sequences +300010 +101000 +Delayed replication of 1 descriptor +Operational + + +17 +00 +BUFR table entries sequences +300010 +031001 +Delayed descriptor replication factor +Operational + + +18 +00 +BUFR table entries sequences +300010 +000030 +Descriptor defining sequence +Operational + + +22 +00 +BUFR table entries sequences +300015 +(Code table definition) +000030 +Descriptor defining sequence +Operational + + +23 +00 +BUFR table entries sequences +300015 +(Code table definition) +102000 +Delayed replication of 2 descriptors +Operational + + +24 +00 +BUFR table entries sequences +300015 +(Code table definition) +031002 +Extended delayed descriptor replication factor +Operational + + +25 +00 +BUFR table entries sequences +300015 +(Code table definition) +000024 +Code figure +Operational + + +26 +00 +BUFR table entries sequences +300015 +(Code table definition) +000025 +Code figure meaning +Operational + + +31 +00 +BUFR table entries sequences +300016 +(Flag table definition) +000030 +Descriptor defining sequence +Operational + + +32 +00 +BUFR table entries sequences +300016 +(Flag table definition) +102000 +Delayed replication of 2 descriptors +Operational + + +33 +00 +BUFR table entries sequences +300016 +(Flag table definition) +031001 +Delayed descriptor replication factor +Operational + + +34 +00 +BUFR table entries sequences +300016 +(Flag table definition) +000026 +Bit number +Operational + + +35 +00 +BUFR table entries sequences +300016 +(Flag table definition) +000027 +Bit number meaning +Operational + + +40 +01 +Location and identification sequences +301001 +(WMO block and station numbers) +001001 +WMO block number +Operational + + +41 +01 +Location and identification sequences +301001 +(WMO block and station numbers) +001002 +WMO station number +Operational + + +42 +01 +Location and identification sequences +301002 +001003 +WMO Region number/geographical area +Operational + + +43 +01 +Location and identification sequences +301002 +001004 +WMO Region sub-area +Operational + + +44 +01 +Location and identification sequences +301002 +001005 +Buoy/platform identifier +Operational + + +45 +01 +Location and identification sequences +301003 +(Ship's call sign and motion) +001011 +Ship or mobile land station identifier +Ship's call sign +Operational + + +46 +01 +Location and identification sequences +301003 +(Ship's call sign and motion) +001012 +Direction of motion of moving observing platform +Operational + + +47 +01 +Location and identification sequences +301003 +(Ship's call sign and motion) +001013 +Speed of motion of moving observing platform +Operational + + +48 +01 +Location and identification sequences +301004 +(Surface station identification) +001001 +WMO block number +Operational + + +49 +01 +Location and identification sequences +301004 +(Surface station identification) +001002 +WMO station number +Operational + + +50 +01 +Location and identification sequences +301004 +(Surface station identification) +001015 +Station or site name +Operational + + +51 +01 +Location and identification sequences +301004 +(Surface station identification) +002001 +Type of station +Operational + + +52 +01 +Location and identification sequences +301005 +(Originating centre/sub-centre) +001035 +Originating centre +Operational + + +53 +01 +Location and identification sequences +301005 +(Originating centre/sub-centre) +001034 +Identification of originating/generating sub-centre +Operational + + +54 +01 +Location and identification sequences +301011 +(Year, month, day) +004001 +Year +Operational + + +55 +01 +Location and identification sequences +301011 +(Year, month, day) +004002 +Month +Operational + + +56 +01 +Location and identification sequences +301011 +(Year, month, day) +004003 +Day +Operational + + +57 +01 +Location and identification sequences +301012 +(Hour, minute) +004004 +Hour +Operational + + +58 +01 +Location and identification sequences +301012 +(Hour, minute) +004005 +Minute +Operational + + +59 +01 +Location and identification sequences +301013 +(Hour, minute, second) +004004 +Hour +Operational + + +60 +01 +Location and identification sequences +301013 +(Hour, minute, second) +004005 +Minute +Operational + + +61 +01 +Location and identification sequences +301013 +(Hour, minute, second) +004006 +Second +Operational + + +62 +01 +Location and identification sequences +301014 +(Time period) +102002 +Replicate 2 descriptors 2 times +Operational + + +63 +01 +Location and identification sequences +301014 +(Time period) +301011 +Year, month, day +Operational + + +64 +01 +Location and identification sequences +301014 +(Time period) +301012 +Hour, minute +Operational + + +65 +01 +Location and identification sequences +301018 +(Encrypted ship's call sign and encryption method) +001114 +Encrypted ship or mobile land station identifier (base64 encoding) +See Notes 2-4 +Operational + + +66 +01 +Location and identification sequences +301018 +(Encrypted ship's call sign and encryption method) +025185 +Encryption method +Operational + + +67 +01 +Location and identification sequences +301018 +(Encrypted ship's call sign and encryption method) +025186 +Encryption key version +Operational + + +68 +01 +Location and identification sequences +301021 +(Latitude/longitude (high accuracy)) +005001 +Latitude (high accuracy) +Operational + + +69 +01 +Location and identification sequences +301021 +(Latitude/longitude (high accuracy)) +006001 +Longitude (high accuracy) +Operational + + +70 +01 +Location and identification sequences +301022 +(Latitude/longitude (high accuracy), height of station) +005001 +Latitude (high accuracy) +Operational + + +71 +01 +Location and identification sequences +301022 +(Latitude/longitude (high accuracy), height of station) +006001 +Longitude (high accuracy) +Operational + + +72 +01 +Location and identification sequences +301022 +(Latitude/longitude (high accuracy), height of station) +007001 +Height of station +Operational + + +73 +01 +Location and identification sequences +301023 +(Latitude/longitude (coarse accuracy)) +005002 +Latitude (coarse accuracy) +Operational + + +74 +01 +Location and identification sequences +301023 +(Latitude/longitude (coarse accuracy)) +006002 +Longitude (coarse accuracy) +Operational + + +75 +01 +Location and identification sequences +301024 +(Latitude/longitude (coarse accuracy), height of station) +005002 +Latitude (coarse accuracy) +Operational + + +76 +01 +Location and identification sequences +301024 +(Latitude/longitude (coarse accuracy), height of station) +006002 +Longitude (coarse accuracy) +Operational + + +77 +01 +Location and identification sequences +301024 +(Latitude/longitude (coarse accuracy), height of station) +007001 +Height of station +Operational + + +78 +01 +Location and identification sequences +301025 +(Latitude/longitude (coarse accuracy), day/time) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +79 +01 +Location and identification sequences +301025 +(Latitude/longitude (coarse accuracy), day/time) +004003 +Day +Operational + + +80 +01 +Location and identification sequences +301025 +(Latitude/longitude (coarse accuracy), day/time) +301012 +Hour, minute +Operational + + +81 +01 +Location and identification sequences +301026 +(Latitude/longitude (high accuracy), time period (day, hour, minute)) +301021 +Latitude/longitude (high accuracy) +Operational + + +82 +01 +Location and identification sequences +301026 +(Latitude/longitude (high accuracy), time period (day, hour, minute)) +004003 +Day +Time period in days +Operational + + +83 +01 +Location and identification sequences +301026 +(Latitude/longitude (high accuracy), time period (day, hour, minute)) +004003 +Day +Operational + + +84 +01 +Location and identification sequences +301026 +(Latitude/longitude (high accuracy), time period (day, hour, minute)) +004004 +Hour +Time period in hours +Operational + + +85 +01 +Location and identification sequences +301026 +(Latitude/longitude (high accuracy), time period (day, hour, minute)) +004004 +Hour +Operational + + +86 +01 +Location and identification sequences +301026 +(Latitude/longitude (high accuracy), time period (day, hour, minute)) +004005 +Minute +Time period in minutes +Operational + + +87 +01 +Location and identification sequences +301026 +(Latitude/longitude (high accuracy), time period (day, hour, minute)) +004005 +Minute +Operational + + +88 +01 +Location and identification sequences +301027 +(Description of a feature in 3-D or 2-D) +008007 +Dimensional significance += 0 Point, = 1 Line, = 2 Area, = 3 Volume +Operational + + +89 +01 +Location and identification sequences +301027 +(Description of a feature in 3-D or 2-D) +101000 +Delayed replication of 1 descriptor +Operational + + +90 +01 +Location and identification sequences +301027 +(Description of a feature in 3-D or 2-D) +031001 +Delayed descriptor replication factor +(see Note 5) +Operational + + +91 +01 +Location and identification sequences +301027 +(Description of a feature in 3-D or 2-D) +301028 +Horizontal section of a feature described as a polygon, circle, line or point +Operational + + +92 +01 +Location and identification sequences +301027 +(Description of a feature in 3-D or 2-D) +008007 +Dimensional significance +Set to missing (cancel) +Operational + + +97 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +008040 +Flight level significance +Operational + + +98 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +033042 +Type of limit represented by following value +Operational + + +99 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +007010 +Flight level +Operational + + +100 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +101000 +Delayed replication of 1 descriptor +Operational + + +101 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +031002 +Extended delayed descriptor replication factor +(see Note 6) +Operational + + +102 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +103 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +019007 +Effective radius of feature +(see Note 7) +Operational + + +104 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +008040 +Flight level significance +Set to missing (cancel) +Operational + + +106 +01 +Location and identification sequences +301029 +(Identification) +001018 +Short station or site name +Operational + + +107 +01 +Location and identification sequences +301029 +(Identification) +002001 +Type of station +Operational + + +108 +01 +Location and identification sequences +301029 +(Identification) +301011 +Year, month, day +Operational + + +109 +01 +Location and identification sequences +301030 +(Identification - with physical location) +001018 +Short station or site name +Operational + + +110 +01 +Location and identification sequences +301030 +(Identification - with physical location) +002001 +Type of station +Operational + + +111 +01 +Location and identification sequences +301030 +(Identification - with physical location) +301011 +Year, month, day +Operational + + +112 +01 +Location and identification sequences +301030 +(Identification - with physical location) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +113 +01 +Location and identification sequences +301031 +(Identification and type of station, date/time, location (high accuracy), height of station) +301001 +WMO block and station numbers +Operational + + +114 +01 +Location and identification sequences +301031 +(Identification and type of station, date/time, location (high accuracy), height of station) +002001 +Type of station +Operational + + +115 +01 +Location and identification sequences +301031 +(Identification and type of station, date/time, location (high accuracy), height of station) +301011 +Year, month, day +Operational + + +116 +01 +Location and identification sequences +301031 +(Identification and type of station, date/time, location (high accuracy), height of station) +301012 +Hour, minute +Operational + + +117 +01 +Location and identification sequences +301031 +(Identification and type of station, date/time, location (high accuracy), height of station) +301022 +Latitude/longitude (high accuracy), height of station +Operational + + +118 +01 +Location and identification sequences +301032 +(Identification and type of station, date/time, location (coarse accuracy), height of station) +301001 +WMO block and station numbers +Operational + + +119 +01 +Location and identification sequences +301032 +(Identification and type of station, date/time, location (coarse accuracy), height of station) +002001 +Type of station +Operational + + +120 +01 +Location and identification sequences +301032 +(Identification and type of station, date/time, location (coarse accuracy), height of station) +301011 +Year, month, day +Operational + + +121 +01 +Location and identification sequences +301032 +(Identification and type of station, date/time, location (coarse accuracy), height of station) +301012 +Hour, minute +Operational + + +122 +01 +Location and identification sequences +301032 +(Identification and type of station, date/time, location (coarse accuracy), height of station) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +123 +01 +Location and identification sequences +301033 +(Buoy/platform - fixed) +001005 +Buoy/platform identifier +Operational + + +124 +01 +Location and identification sequences +301033 +(Buoy/platform - fixed) +002001 +Type of station +Operational + + +125 +01 +Location and identification sequences +301033 +(Buoy/platform - fixed) +301011 +Year, month, day +Operational + + +126 +01 +Location and identification sequences +301033 +(Buoy/platform - fixed) +301012 +Hour, minute +Operational + + +127 +01 +Location and identification sequences +301033 +(Buoy/platform - fixed) +301021 +Latitude/longitude (high accuracy) +Operational + + +128 +01 +Location and identification sequences +301034 +(Buoy/platform - fixed) +001005 +Buoy/platform identifier +Operational + + +129 +01 +Location and identification sequences +301034 +(Buoy/platform - fixed) +002001 +Type of station +Operational + + +130 +01 +Location and identification sequences +301034 +(Buoy/platform - fixed) +301011 +Year, month, day +Operational + + +131 +01 +Location and identification sequences +301034 +(Buoy/platform - fixed) +301012 +Hour, minute +Operational + + +132 +01 +Location and identification sequences +301034 +(Buoy/platform - fixed) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +133 +01 +Location and identification sequences +301035 +(Buoy/platform - moving) (see Note 8) +001005 +Buoy/platform identifier +Operational + + +134 +01 +Location and identification sequences +301035 +(Buoy/platform - moving) +001012 +Direction of motion of moving observing platform +Operational + + +135 +01 +Location and identification sequences +301035 +(Buoy/platform - moving) +001013 +Speed of motion of moving observing platform +Operational + + +136 +01 +Location and identification sequences +301035 +(Buoy/platform - moving) +002001 +Type of station +Operational + + +137 +01 +Location and identification sequences +301035 +(Buoy/platform - moving) +301011 +Year, month, day +Operational + + +138 +01 +Location and identification sequences +301035 +(Buoy/platform - moving) +301012 +Hour, minute +Operational + + +139 +01 +Location and identification sequences +301035 +(Buoy/platform - moving) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +140 +01 +Location and identification sequences +301036 +(Ship) +301003 +Ship's call sign and motion +Operational + + +141 +01 +Location and identification sequences +301036 +(Ship) +002001 +Type of station +Operational + + +142 +01 +Location and identification sequences +301036 +(Ship) +301011 +Year, month, day +Operational + + +143 +01 +Location and identification sequences +301036 +(Ship) +301012 +Hour, minute +Operational + + +144 +01 +Location and identification sequences +301036 +(Ship) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +145 +01 +Location and identification sequences +301037 +(Land station for vertical soundings) +301001 +WMO block and station numbers +Operational + + +146 +01 +Location and identification sequences +301037 +(Land station for vertical soundings) +002011 +Radiosonde type +Operational + + +147 +01 +Location and identification sequences +301037 +(Land station for vertical soundings) +002012 +Radiosonde computational method +Operational + + +148 +01 +Location and identification sequences +301037 +(Land station for vertical soundings) +301011 +Year, month, day +Operational + + +149 +01 +Location and identification sequences +301037 +(Land station for vertical soundings) +301012 +Hour, minute +Operational + + +150 +01 +Location and identification sequences +301037 +(Land station for vertical soundings) +301022 +Latitude/longitude (high accuracy), height of station +Operational + + +151 +01 +Location and identification sequences +301038 +(Land station for vertical soundings) +301001 +WMO block and station numbers +Operational + + +152 +01 +Location and identification sequences +301038 +(Land station for vertical soundings) +002011 +Radiosonde type +Operational + + +153 +01 +Location and identification sequences +301038 +(Land station for vertical soundings) +002012 +Radiosonde computational method +Operational + + +154 +01 +Location and identification sequences +301038 +(Land station for vertical soundings) +301011 +Year, month, day +Operational + + +155 +01 +Location and identification sequences +301038 +(Land station for vertical soundings) +301012 +Hour, minute +Operational + + +156 +01 +Location and identification sequences +301038 +(Land station for vertical soundings) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +157 +01 +Location and identification sequences +301039 +(Ship for vertical soundings) +301003 +Ship's call sign and motion +Operational + + +158 +01 +Location and identification sequences +301039 +(Ship for vertical soundings) +002011 +Radiosonde type +Operational + + +159 +01 +Location and identification sequences +301039 +(Ship for vertical soundings) +002012 +Radiosonde computational method +Operational + + +160 +01 +Location and identification sequences +301039 +(Ship for vertical soundings) +301011 +Year, month, day +Operational + + +161 +01 +Location and identification sequences +301039 +(Ship for vertical soundings) +301012 +Hour, minute +Operational + + +162 +01 +Location and identification sequences +301039 +(Ship for vertical soundings) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +163 +01 +Location and identification sequences +301040 +(Ship for vertical soundings) +301003 +Ship's call sign and motion +Operational + + +164 +01 +Location and identification sequences +301040 +(Ship for vertical soundings) +002011 +Radiosonde type +Operational + + +165 +01 +Location and identification sequences +301040 +(Ship for vertical soundings) +002012 +Radiosonde computational method +Operational + + +166 +01 +Location and identification sequences +301040 +(Ship for vertical soundings) +301011 +Year, month, day +Operational + + +167 +01 +Location and identification sequences +301040 +(Ship for vertical soundings) +301012 +Hour, minute +Operational + + +168 +01 +Location and identification sequences +301040 +(Ship for vertical soundings) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +169 +01 +Location and identification sequences +301041 +(Satellite identifier, instrument, data-processing technique, date/time) +001007 +Satellite identifier +Operational + + +170 +01 +Location and identification sequences +301041 +(Satellite identifier, instrument, data-processing technique, date/time) +002021 +Satellite instrument data used in processing +Operational + + +171 +01 +Location and identification sequences +301041 +(Satellite identifier, instrument, data-processing technique, date/time) +002022 +Satellite data-processing technique used +Operational + + +172 +01 +Location and identification sequences +301041 +(Satellite identifier, instrument, data-processing technique, date/time) +301011 +Year, month, day +Operational + + +173 +01 +Location and identification sequences +301041 +(Satellite identifier, instrument, data-processing technique, date/time) +301012 +Hour, minute +Operational + + +174 +01 +Location and identification sequences +301042 +(Satellite identifier, instrument, data-processing technique, date/time, location) +301041 +Satellite identifier, instrument, data-processing technique, date/time +Operational + + +175 +01 +Location and identification sequences +301042 +(Satellite identifier, instrument, data-processing technique, date/time, location) +301021 +Latitude/longitude (high accuracy) +Operational + + +176 +01 +Location and identification sequences +301043 +(Satellite identifier, wind computation method, date/time, location) +001007 +Satellite identifier +Operational + + +177 +01 +Location and identification sequences +301043 +(Satellite identifier, wind computation method, date/time, location) +002023 +Satellite-derived wind computation method +Operational + + +178 +01 +Location and identification sequences +301043 +(Satellite identifier, wind computation method, date/time, location) +301011 +Year, month, day +Operational + + +179 +01 +Location and identification sequences +301043 +(Satellite identifier, wind computation method, date/time, location) +301013 +Hour, minute, second +Operational + + +180 +01 +Location and identification sequences +301043 +(Satellite identifier, wind computation method, date/time, location) +301021 +Latitude/longitude (high accuracy) +Operational + + +181 +01 +Location and identification sequences +301044 +(Satellite identifier, humidity computation method, date/time, location) +001007 +Satellite identifier +Operational + + +182 +01 +Location and identification sequences +301044 +(Satellite identifier, humidity computation method, date/time, location) +002024 +Integrated mean humidity computational method +Operational + + +183 +01 +Location and identification sequences +301044 +(Satellite identifier, humidity computation method, date/time, location) +301011 +Year, month, day +Operational + + +184 +01 +Location and identification sequences +301044 +(Satellite identifier, humidity computation method, date/time, location) +301013 +Hour, minute, second +Operational + + +185 +01 +Location and identification sequences +301044 +(Satellite identifier, humidity computation method, date/time, location) +301021 +Latitude/longitude (high accuracy) +Operational + + +186 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +301011 +Year, month, day +Operational + + +187 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +301012 +Hour, minute +Operational + + +188 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +201138 +Change data width +16 bits long +Operational + + +189 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +202131 +Change scale +Scale: 3 +Operational + + +190 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +004006 +Second +Operational + + +191 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +201000 +Change data width +Cancel +Operational + + +192 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +202000 +Change scale +Cancel +Operational + + +193 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +304030 +Location of platform +Relative to the Earth’s centre +Operational + + +194 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +304031 +Speed of platform +Relative to the Earth’s centre +Operational + + +196 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +001007 +Satellite identifier +Operational + + +197 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +001012 +Direction of motion of moving observing platform +Operational + + +198 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +002048 +Satellite sensor indicator +Operational + + +199 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +021119 +Wind scatterometer geophysical model function +Operational + + +200 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +025060 +Software identification +Operational + + +201 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +202124 +Change scale +Operational + + +202 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +002026 +Cross-track resolution +Operational + + +203 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +002027 +Along-track resolution +Operational + + +204 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +202000 +Change scale +Cancel +Operational + + +205 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +005040 +Orbit number +Operational + + +207 +01 +Location and identification sequences +301047 +(ERS product header) +001007 +Satellite identifier +Operational + + +208 +01 +Location and identification sequences +301047 +(ERS product header) +025060 +Software identification +Operational + + +209 +01 +Location and identification sequences +301047 +(ERS product header) +001033 +Identification of originating/generating centre +Operational + + +210 +01 +Location and identification sequences +301047 +(ERS product header) +001034 +Identification of originating/generating sub-centre +Operational + + +211 +01 +Location and identification sequences +301047 +(ERS product header) +001012 +Direction of motion of moving observing platform +Operational + + +212 +01 +Location and identification sequences +301047 +(ERS product header) +301045 +Satellite location and velocity +Operational + + +213 +01 +Location and identification sequences +301047 +(ERS product header) +002021 +Satellite instrument data used in processing +Operational + + +214 +01 +Location and identification sequences +301047 +(ERS product header) +301011 +Year, month, day +Operational + + +215 +01 +Location and identification sequences +301047 +(ERS product header) +301012 +Hour, minute +Operational + + +216 +01 +Location and identification sequences +301047 +(ERS product header) +201138 +Change data width +16 bits long +Operational + + +217 +01 +Location and identification sequences +301047 +(ERS product header) +202131 +Change scale +Scale: 3 +Operational + + +218 +01 +Location and identification sequences +301047 +(ERS product header) +004006 +Second +Operational + + +219 +01 +Location and identification sequences +301047 +(ERS product header) +201000 +Change data width +Cancel +Operational + + +220 +01 +Location and identification sequences +301047 +(ERS product header) +202000 +Change scale +Cancel +Operational + + +221 +01 +Location and identification sequences +301047 +(ERS product header) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +223 +01 +Location and identification sequences +301048 +(Radar parameters) +002104 +Antenna polarization +Operational + + +224 +01 +Location and identification sequences +301048 +(Radar parameters) +002121 +Mean frequency +Operational + + +225 +01 +Location and identification sequences +301048 +(Radar parameters) +002113 +Number of azimuth looks +Operational + + +226 +01 +Location and identification sequences +301048 +(Radar parameters) +002026 +Cross-track resolution +Operational + + +227 +01 +Location and identification sequences +301048 +(Radar parameters) +002027 +Along-track resolution +Operational + + +228 +01 +Location and identification sequences +301048 +(Radar parameters) +002111 +Radar incidence angle +Operational + + +229 +01 +Location and identification sequences +301048 +(Radar parameters) +002140 +Satellite radar beam azimuth angle +Operational + + +230 +01 +Location and identification sequences +301048 +(Radar parameters) +202127 +Change scale +Scale: -1 +Operational + + +231 +01 +Location and identification sequences +301048 +(Radar parameters) +001013 +Speed of motion of moving observing platform +Radar platform velocity +Operational + + +232 +01 +Location and identification sequences +301048 +(Radar parameters) +202126 +Change scale +Scale: -2 +Operational + + +233 +01 +Location and identification sequences +301048 +(Radar parameters) +007001 +Height of station +Radar platform altitude +Operational + + +234 +01 +Location and identification sequences +301048 +(Radar parameters) +202000 +Change scale +Cancel +Operational + + +235 +01 +Location and identification sequences +301048 +(Radar parameters) +025010 +Clutter treatment +Operational + + +236 +01 +Location and identification sequences +301048 +(Radar parameters) +021064 +Clutter noise estimate +Operational + + +238 +01 +Location and identification sequences +301049 +(Radar beam data) +002111 +Radar incidence angle +Operational + + +239 +01 +Location and identification sequences +301049 +(Radar beam data) +002112 +Radar look angle +Operational + + +240 +01 +Location and identification sequences +301049 +(Radar beam data) +021062 +Backscatter +Operational + + +241 +01 +Location and identification sequences +301049 +(Radar beam data) +021063 +Radiometric resolution (noise value) +Operational + + +242 +01 +Location and identification sequences +301049 +(Radar beam data) +021065 +Missing packet counter +Operational + + +243 +01 +Location and identification sequences +301051 +(Flight number, navigational system, date/time, location, phase of flight) +001006 +Aircraft flight number +Operational + + +244 +01 +Location and identification sequences +301051 +(Flight number, navigational system, date/time, location, phase of flight) +002061 +Aircraft navigational system +Operational + + +245 +01 +Location and identification sequences +301051 +(Flight number, navigational system, date/time, location, phase of flight) +301011 +Year, month, day +Operational + + +246 +01 +Location and identification sequences +301051 +(Flight number, navigational system, date/time, location, phase of flight) +301012 +Hour, minute +Operational + + +247 +01 +Location and identification sequences +301051 +(Flight number, navigational system, date/time, location, phase of flight) +301021 +Latitude/longitude (high accuracy) +Operational + + +248 +01 +Location and identification sequences +301051 +(Flight number, navigational system, date/time, location, phase of flight) +008004 +Phase of aircraft flight +Operational + + +249 +01 +Location and identification sequences +301055 +(Identification and type of station, date/time, location (high accuracy), movement) +001005 +Buoy/platform identifier +Operational + + +250 +01 +Location and identification sequences +301055 +(Identification and type of station, date/time, location (high accuracy), movement) +002001 +Type of station +Operational + + +251 +01 +Location and identification sequences +301055 +(Identification and type of station, date/time, location (high accuracy), movement) +301011 +Year, month, day +Operational + + +252 +01 +Location and identification sequences +301055 +(Identification and type of station, date/time, location (high accuracy), movement) +301012 +Hour, minute +Operational + + +253 +01 +Location and identification sequences +301055 +(Identification and type of station, date/time, location (high accuracy), movement) +301021 +Latitude/longitude (high accuracy) +Operational + + +254 +01 +Location and identification sequences +301055 +(Identification and type of station, date/time, location (high accuracy), movement) +001012 +Direction of motion of moving observing platform +Operational + + +255 +01 +Location and identification sequences +301055 +(Identification and type of station, date/time, location (high accuracy), movement) +001014 +Platform drift speed (high precision) +Operational + + +256 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +001087 +WMO marine observing platform extended identifier +WMO number (extended 7 digit identifier) +Operational + + +257 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +001011 +Ship or mobile land station identifier +Call sign (where allocated) +Operational + + +258 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +001015 +Station or site name +Platform name +Operational + + +259 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +002008 +Type of offshore platform +Operational + + +260 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +002001 +Type of station +Operational + + +261 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +301011 +Year, month, day +Operational + + +262 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +301012 +Hour, minute +Operational + + +263 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +301021 +Latitude/longitude (high accuracy) +Operational + + +264 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +007030 +Height of station ground above mean sea level +Height of station platform above mean sea level +Operational + + +265 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +007031 +Height of barometer above mean sea level +Operational + + +266 +01 +Location and identification sequences +301058 +(Universal lightning event) +Date/time of lightning event +301011 +Year, month, day +Operational + + +267 +01 +Location and identification sequences +301058 +(Universal lightning event) +Date/time of lightning event +301012 +Hour, minute +Operational + + +268 +01 +Location and identification sequences +301058 +(Universal lightning event) +Date/time of lightning event +201152 +Change data width +Operational + + +269 +01 +Location and identification sequences +301058 +(Universal lightning event) +Date/time of lightning event +202135 +Change scale +Operational + + +270 +01 +Location and identification sequences +301058 +(Universal lightning event) +Date/time of lightning event +004006 +Second +Operational + + +271 +01 +Location and identification sequences +301058 +(Universal lightning event) +Date/time of lightning event +202000 +Change scale +Operational + + +272 +01 +Location and identification sequences +301058 +(Universal lightning event) +Date/time of lightning event +201000 +Change data width +Operational + + +273 +01 +Location and identification sequences +301058 +(Universal lightning event) +Horizontal and vertical coordinates of lightning event +301021 +Latitude/longitude (high accuracy) +Operational + + +274 +01 +Location and identification sequences +301058 +(Universal lightning event) +Horizontal and vertical coordinates of lightning event +020111 +x-axis error ellipse major component +Operational + + +275 +01 +Location and identification sequences +301058 +(Universal lightning event) +Horizontal and vertical coordinates of lightning event +020112 +y-axis error ellipse minor component +Operational + + +276 +01 +Location and identification sequences +301058 +(Universal lightning event) +Horizontal and vertical coordinates of lightning event +020113 +z-axis error ellipse component +Operational + + +277 +01 +Location and identification sequences +301058 +(Universal lightning event) +Horizontal and vertical coordinates of lightning event +020114 +Angle of x-axis in error ellipse +Operational + + +278 +01 +Location and identification sequences +301058 +(Universal lightning event) +Horizontal and vertical coordinates of lightning event +020115 +Angle of z-axis in error ellipse +Operational + + +279 +01 +Location and identification sequences +301058 +(Universal lightning event) +Horizontal and vertical coordinates of lightning event +020116 +Emission height of cloud stroke +Operational + + +280 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020117 +Amplitude of lightning strike +Operational + + +281 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020118 +Lightning detection error +Operational + + +282 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020119 +Lightning discharge polarity +Operational + + +283 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +025035 +Decision method for polarity +V or A +Operational + + +284 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020121 +Threshold value for polarity decision +Operational + + +285 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020122 +Threshold value for polarity decision +Operational + + +286 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020123 +Minimum threshold for detection +Operational + + +287 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020124 +Lightning stroke or flash +Operational + + +288 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +025175 +Modified residual +Operational + + +289 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020023 +Other weather phenomena +Cloud to ground or cloud to cloud identification +Operational + + +290 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +025063 +Central processor or system identifier +Operational + + +291 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +202136 +Change scale +Operational + + +292 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +201136 +Change data width +Operational + + +293 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +002121 +Mean frequency +Define centre frequency, if used +Operational + + +294 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +201000 +Change data width +Operational + + +295 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +202000 +Change scale +Operational + + +296 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +025061 +Software identification and version number +Operational + + +297 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +002184 +Type of lightning detection sensor +Operational + + +298 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +002189 +Capability to discriminate lightning strikes +Operational + + +299 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +025036 +Atmospherics location method +Operational + + +300 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +101000 +Delayed replication of 1 descriptor +Operational + + +301 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +031002 +Extended delayed descriptor replication factor +Number of sensors contributing +Operational + + +302 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +301059 +Identification of sensor site and instrumentation +Operational + + +304 +01 +Location and identification sequences +301059 +(Identification of sensor site and instrumentation) +301021 +Latitude/longitude (high accuracy) +Sensor +Operational + + +305 +01 +Location and identification sequences +301059 +(Identification of sensor site and instrumentation) +007030 +Height of station ground above mean sea level +Operational + + +306 +01 +Location and identification sequences +301059 +(Identification of sensor site and instrumentation) +007032 +Height of sensor above local ground (or deck of marine platform) +Sensor for lightning +Operational + + +307 +01 +Location and identification sequences +301062 +(Radar location(s)) +101000 +Delayed replication of 1 descriptor +Operational + + +308 +01 +Location and identification sequences +301062 +(Radar location(s)) +031001 +Delayed descriptor replication factor +Operational + + +309 +01 +Location and identification sequences +301062 +(Radar location(s)) +301001 +WMO block and station numbers +Operational + + +311 +01 +Location and identification sequences +301065 +(ACARS identification) +001006 +Aircraft flight number +(see Note 10) +Operational + + +312 +01 +Location and identification sequences +301065 +(ACARS identification) +001008 +Aircraft registration number or other identification +(see Note 10) +Operational + + +313 +01 +Location and identification sequences +301065 +(ACARS identification) +002001 +Type of station +Operational + + +314 +01 +Location and identification sequences +301065 +(ACARS identification) +002002 +Type of instrumentation for wind measurement +Operational + + +315 +01 +Location and identification sequences +301065 +(ACARS identification) +002005 +Precision of temperature observation +Operational + + +316 +01 +Location and identification sequences +301065 +(ACARS identification) +002062 +Type of aircraft data relay system +Operational + + +317 +01 +Location and identification sequences +301065 +(ACARS identification) +002070 +Original specification of latitude/longitude +Operational + + +318 +01 +Location and identification sequences +301065 +(ACARS identification) +002065 +ACARS ground-receiving station +Operational + + +319 +01 +Location and identification sequences +301066 +(ACARS location) +301011 +Year, month, day +Operational + + +320 +01 +Location and identification sequences +301066 +(ACARS location) +301013 +Hour, minute, second +Operational + + +321 +01 +Location and identification sequences +301066 +(ACARS location) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +322 +01 +Location and identification sequences +301066 +(ACARS location) +007004 +Pressure +Operational + + +323 +01 +Location and identification sequences +301066 +(ACARS location) +002064 +Aircraft roll angle quality +Operational + + +324 +01 +Location and identification sequences +301066 +(ACARS location) +008004 +Phase of aircraft flight +Operational + + +325 +01 +Location and identification sequences +301070 +(Ozone instrumentation - Brewer spectrophotometer) +002143 +Ozone instrument type +Operational + + +326 +01 +Location and identification sequences +301070 +(Ozone instrumentation - Brewer spectrophotometer) +002142 +Ozone instrument serial number/identification +Operational + + +327 +01 +Location and identification sequences +301070 +(Ozone instrumentation - Brewer spectrophotometer) +002144 +Light source type for Brewer spectrophotometer +Operational + + +328 +01 +Location and identification sequences +301071 +(Satellite identifier/Generating resolution) +001007 +Satellite identifier +Operational + + +329 +01 +Location and identification sequences +301071 +(Satellite identifier/Generating resolution) +001031 +Identification of originating/generating centre +Operational + + +330 +01 +Location and identification sequences +301071 +(Satellite identifier/Generating resolution) +002020 +Satellite classification +Operational + + +331 +01 +Location and identification sequences +301071 +(Satellite identifier/Generating resolution) +002028 +Segment size at nadir in x-direction +Operational + + +332 +01 +Location and identification sequences +301071 +(Satellite identifier/Generating resolution) +002029 +Segment size at nadir in y-direction +Operational + + +333 +01 +Location and identification sequences +301072 +(Satellite identification) +301071 +Satellite identifier/Generating resolution +Operational + + +334 +01 +Location and identification sequences +301072 +(Satellite identification) +301011 +Year, month, day +Operational + + +335 +01 +Location and identification sequences +301072 +(Satellite identification) +301013 +Hour, minute, second +Operational + + +336 +01 +Location and identification sequences +301072 +(Satellite identification) +301021 +Latitude/longitude (high accuracy) +Operational + + +337 +01 +Location and identification sequences +301074 +(Ozone instrumentation - Dobson spectrophotometer) +002143 +Ozone instrument type +Operational + + +338 +01 +Location and identification sequences +301074 +(Ozone instrumentation - Dobson spectrophotometer) +002142 +Ozone instrument serial number/identification +Operational + + +339 +01 +Location and identification sequences +301074 +(Ozone instrumentation - Dobson spectrophotometer) +002145 +Wavelength setting for Dobson instruments +Operational + + +340 +01 +Location and identification sequences +301074 +(Ozone instrumentation - Dobson spectrophotometer) +002146 +Source conditions for Dobson instruments +Operational + + +341 +01 +Location and identification sequences +301075 +(Sounding identification) +301001 +WMO block and station numbers +Operational + + +342 +01 +Location and identification sequences +301075 +(Sounding identification) +001015 +Station or site name +Operational + + +343 +01 +Location and identification sequences +301075 +(Sounding identification) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +344 +01 +Location and identification sequences +301075 +(Sounding identification) +008021 +Time significance += 18 Launch time +Operational + + +345 +01 +Location and identification sequences +301075 +(Sounding identification) +301011 +Year, month, day +Operational + + +346 +01 +Location and identification sequences +301075 +(Sounding identification) +301012 +Hour, minute +Operational + + +347 +01 +Location and identification sequences +301076 +(Ozone sounding instrumentation) +002011 +Radiosonde type +Operational + + +348 +01 +Location and identification sequences +301076 +(Ozone sounding instrumentation) +002143 +Ozone instrument type +Operational + + +349 +01 +Location and identification sequences +301076 +(Ozone sounding instrumentation) +002142 +Ozone instrument serial number/identification +Operational + + +350 +01 +Location and identification sequences +301089 +(National station identification) +001101 +State identifier +Operational + + +351 +01 +Location and identification sequences +301089 +(National station identification) +001102 +National station number +Operational + + +352 +01 +Location and identification sequences +301090 +(Surface station identification; time, horizontal and vertical coordinates) +301004 +Surface station identification +Operational + + +353 +01 +Location and identification sequences +301090 +(Surface station identification; time, horizontal and vertical coordinates) +301011 +Year, month, day +Operational + + +354 +01 +Location and identification sequences +301090 +(Surface station identification; time, horizontal and vertical coordinates) +301012 +Hour, minute +Operational + + +355 +01 +Location and identification sequences +301090 +(Surface station identification; time, horizontal and vertical coordinates) +301021 +Latitude/longitude (high accuracy) +Operational + + +356 +01 +Location and identification sequences +301090 +(Surface station identification; time, horizontal and vertical coordinates) +007030 +Height of station ground above mean sea level +Operational + + +357 +01 +Location and identification sequences +301090 +(Surface station identification; time, horizontal and vertical coordinates) +007031 +Height of barometer above mean sea level +Operational + + +358 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002180 +Main present weather detecting system +Operational + + +359 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002181 +Supplementary present weather sensor +Operational + + +360 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002182 +Visibility measurement system +Operational + + +361 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002183 +Cloud detection system +Operational + + +362 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002184 +Type of lightning detection sensor +Operational + + +363 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002179 +Type of sky condition algorithm +Operational + + +364 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002186 +Capability to detect precipitation phenomena +Operational + + +365 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002187 +Capability to detect other weather phenomena +Operational + + +366 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002188 +Capability to detect obscuration +Operational + + +367 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002189 +Capability to discriminate lightning strikes +Operational + + +368 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +001011 +Ship or mobile land station identifier +Operational + + +369 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +001003 +WMO Region number/geographical area +Operational + + +370 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +002001 +Type of station +Operational + + +371 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +301011 +Year, month, day +Operational + + +372 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +301012 +Hour, minute +Operational + + +373 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +301021 +Latitude/longitude (high accuracy) +Operational + + +374 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +007030 +Height of station ground above mean sea level +Operational + + +375 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +007031 +Height of barometer above mean sea level +Operational + + +376 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +033024 +Station elevation quality mark (for mobile stations) +Operational + + +377 +01 +Location and identification sequences +301093 +(Ship identification, movement, date/time, horizontal and vertical coordinates) +301036 +Ship +Ship identification +Operational + + +378 +01 +Location and identification sequences +301093 +(Ship identification, movement, date/time, horizontal and vertical coordinates) +007030 +Height of station ground above mean sea level +Operational + + +379 +01 +Location and identification sequences +301093 +(Ship identification, movement, date/time, horizontal and vertical coordinates) +007031 +Height of barometer above mean sea level +Operational + + +380 +01 +Location and identification sequences +301110 +(Identification of launch site and instrumentation for wind measurements) +301001 +WMO block and station numbers +Operational + + +381 +01 +Location and identification sequences +301110 +(Identification of launch site and instrumentation for wind measurements) +001011 +Ship or mobile land station identifier +Operational + + +382 +01 +Location and identification sequences +301110 +(Identification of launch site and instrumentation for wind measurements) +002011 +Radiosonde type +Operational + + +383 +01 +Location and identification sequences +301110 +(Identification of launch site and instrumentation for wind measurements) +002014 +Tracking technique/status of system used +Operational + + +384 +01 +Location and identification sequences +301110 +(Identification of launch site and instrumentation for wind measurements) +002003 +Type of measuring equipment used +Operational + + +385 +01 +Location and identification sequences +301111 +(Identification of launch site and instrumentation for P, T, U and wind measurements) +301001 +WMO block and station numbers +Operational + + +386 +01 +Location and identification sequences +301111 +(Identification of launch site and instrumentation for P, T, U and wind measurements) +001011 +Ship or mobile land station identifier +Operational + + +387 +01 +Location and identification sequences +301111 +(Identification of launch site and instrumentation for P, T, U and wind measurements) +002011 +Radiosonde type +Operational + + +388 +01 +Location and identification sequences +301111 +(Identification of launch site and instrumentation for P, T, U and wind measurements) +002013 +Solar and infrared radiation correction +Operational + + +389 +01 +Location and identification sequences +301111 +(Identification of launch site and instrumentation for P, T, U and wind measurements) +002014 +Tracking technique/status of system used +Operational + + +390 +01 +Location and identification sequences +301111 +(Identification of launch site and instrumentation for P, T, U and wind measurements) +002003 +Type of measuring equipment used +Operational + + +391 +01 +Location and identification sequences +301112 +(Identification of launch point and instrumentation of dropsonde) +001006 +Aircraft flight number +Operational + + +392 +01 +Location and identification sequences +301112 +(Identification of launch point and instrumentation of dropsonde) +002011 +Radiosonde type +Operational + + +393 +01 +Location and identification sequences +301112 +(Identification of launch point and instrumentation of dropsonde) +002013 +Solar and infrared radiation correction +Operational + + +394 +01 +Location and identification sequences +301112 +(Identification of launch point and instrumentation of dropsonde) +002014 +Tracking technique/status of system used +Operational + + +395 +01 +Location and identification sequences +301112 +(Identification of launch point and instrumentation of dropsonde) +002003 +Type of measuring equipment used +Operational + + +396 +01 +Location and identification sequences +301113 +(Date/time of launch) (see Note 11) +008021 +Time significance += 18 Launch time +Operational + + +397 +01 +Location and identification sequences +301113 +(Date/time of launch) +301011 +Year, month, day +Launch time +Operational + + +398 +01 +Location and identification sequences +301113 +(Date/time of launch) +301013 +Hour, minute, second +Launch time +Operational + + +399 +01 +Location and identification sequences +301114 +(Horizontal and vertical coordinates of launch site) +301021 +Latitude/longitude (high accuracy) +Operational + + +400 +01 +Location and identification sequences +301114 +(Horizontal and vertical coordinates of launch site) +007030 +Height of station ground above mean sea level +Operational + + +401 +01 +Location and identification sequences +301114 +(Horizontal and vertical coordinates of launch site) +007031 +Height of barometer above mean sea level +Operational + + +402 +01 +Location and identification sequences +301114 +(Horizontal and vertical coordinates of launch site) +007007 +Height +Release of sonde above mean sea level +Operational + + +403 +01 +Location and identification sequences +301114 +(Horizontal and vertical coordinates of launch site) +033024 +Station elevation quality mark (for mobile stations) +Operational + + +404 +01 +Location and identification sequences +301120 +(Radiosonde abbreviated header and launch information) +301001 +WMO block and station numbers +Operational + + +405 +01 +Location and identification sequences +301120 +(Radiosonde abbreviated header and launch information) +001094 +WBAN number +Operational + + +406 +01 +Location and identification sequences +301120 +(Radiosonde abbreviated header and launch information) +002011 +Radiosonde type +Operational + + +407 +01 +Location and identification sequences +301120 +(Radiosonde abbreviated header and launch information) +301121 +Radiosonde launch point location +Operational + + +408 +01 +Location and identification sequences +301121 +(Radiosonde launch point location) +008041 +Data significance += 3 Balloon launch point +Operational + + +409 +01 +Location and identification sequences +301121 +(Radiosonde launch point location) +301122 +Date/time (to hundredths of second) +Operational + + +410 +01 +Location and identification sequences +301121 +(Radiosonde launch point location) +301021 +Latitude/longitude (high accuracy) +Operational + + +411 +01 +Location and identification sequences +301121 +(Radiosonde launch point location) +007031 +Height of barometer above mean sea level +Operational + + +412 +01 +Location and identification sequences +301121 +(Radiosonde launch point location) +007007 +Height +Release of radiosonde above mean sea level +Operational + + +413 +01 +Location and identification sequences +301122 +(Date/time (to hundredths of second)) (see Note 11) +301011 +Year, month, day +Operational + + +414 +01 +Location and identification sequences +301122 +(Date/time (to hundredths of second)) +301012 +Hour, minute +Operational + + +415 +01 +Location and identification sequences +301122 +(Date/time (to hundredths of second)) +201135 +Change data width +Operational + + +416 +01 +Location and identification sequences +301122 +(Date/time (to hundredths of second)) +202130 +Change scale +Operational + + +417 +01 +Location and identification sequences +301122 +(Date/time (to hundredths of second)) +004006 +Second +Operational + + +418 +01 +Location and identification sequences +301122 +(Date/time (to hundredths of second)) +202000 +Change scale +Cancel +Operational + + +419 +01 +Location and identification sequences +301122 +(Date/time (to hundredths of second)) +201000 +Change data width +Cancel +Operational + + +421 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +102002 +Replicate 2 descriptors 2 times +Operational + + +422 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +008041 +Data significance += 0 Parent site, = 1 Observation site +Operational + + +423 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001062 +Short ICAO location indicator +Operational + + +424 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +301001 +WMO block and station numbers +Operational + + +425 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001094 +WBAN number +Operational + + +426 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002011 +Radiosonde type +Operational + + +427 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001018 +Short station or site name +Operational + + +428 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001095 +Observer identification +Operational + + +429 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +025061 +Software identification and version number +Operational + + +430 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +025068 +Number of archive recomputes +Operational + + +431 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001082 +Radiosonde ascension number +Operational + + +432 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001083 +Radiosonde release number +Operational + + +433 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001081 +Radiosonde serial number +Operational + + +434 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002067 +Radiosonde operating frequency +Operational + + +435 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002066 +Radiosonde ground receiving system +Operational + + +436 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002014 +Tracking technique/status of system used +Operational + + +437 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +025067 +Radiosonde release point pressure correction +Operational + + +438 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +025065 +Orientation correction (azimuth) +Operational + + +439 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +025066 +Orientation correction (elevation) +Operational + + +440 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002095 +Type of pressure sensor +Operational + + +441 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002096 +Type of temperature sensor +Operational + + +442 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002097 +Type of humidity sensor +Operational + + +443 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002016 +Radiosonde configuration +Operational + + +444 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002083 +Type of balloon shelter +Operational + + +445 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002080 +Balloon manufacturer +Operational + + +446 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002081 +Type of balloon +Operational + + +447 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001093 +Balloon lot number +Operational + + +448 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002084 +Type of gas used in balloon +Operational + + +449 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002085 +Amount of gas used in balloon +Operational + + +450 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002086 +Balloon flight train length +Operational + + +451 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002082 +Weight of balloon +Operational + + +452 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +008041 +Data significance += 2 Balloon manufacture date +Operational + + +453 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +301011 +Year, month, day +Operational + + +454 +01 +Location and identification sequences +301125 +(ASCAT header information) +001033 +Identification of originating/generating centre +Operational + + +455 +01 +Location and identification sequences +301125 +(ASCAT header information) +001034 +Identification of originating/generating sub-centre +Operational + + +456 +01 +Location and identification sequences +301125 +(ASCAT header information) +025060 +Software identification +Operational + + +457 +01 +Location and identification sequences +301125 +(ASCAT header information) +001007 +Satellite identifier +Operational + + +458 +01 +Location and identification sequences +301125 +(ASCAT header information) +002019 +Satellite instruments +Operational + + +459 +01 +Location and identification sequences +301125 +(ASCAT header information) +001012 +Direction of motion of moving observing platform +Operational + + +460 +01 +Location and identification sequences +301126 +(Sequence for representation of moored buoy identification) +001087 +WMO marine observing platform extended identifier +Operational + + +461 +01 +Location and identification sequences +301126 +(Sequence for representation of moored buoy identification) +001015 +Station or site name +Operational + + +462 +01 +Location and identification sequences +301126 +(Sequence for representation of moored buoy identification) +002149 +Type of data buoy +Operational + + +463 +01 +Location and identification sequences +301126 +(Sequence for representation of moored buoy identification) +301011 +Year, month, day +Operational + + +464 +01 +Location and identification sequences +301126 +(Sequence for representation of moored buoy identification) +301012 +Hour, minute +Operational + + +465 +01 +Location and identification sequences +301126 +(Sequence for representation of moored buoy identification) +301021 +Latitude/longitude (high accuracy) +Operational + + +466 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +001081 +Radiosonde serial number +Operational + + +467 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +001082 +Radiosonde ascension number +Operational + + +468 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +001083 +Radiosonde release number +Operational + + +469 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +001095 +Observer identification +Operational + + +470 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002015 +Radiosonde completeness +Operational + + +471 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002016 +Radiosonde configuration +Operational + + +472 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002017 +Correction algorithms for humidity measurements +Operational + + +473 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002066 +Radiosonde ground receiving system +Operational + + +474 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002067 +Radiosonde operating frequency +Operational + + +475 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002080 +Balloon manufacturer +Operational + + +476 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002081 +Type of balloon +Operational + + +477 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002082 +Weight of balloon +Operational + + +478 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002083 +Type of balloon shelter +Operational + + +479 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002084 +Type of gas used in balloon +Operational + + +480 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002085 +Amount of gas used in balloon +Operational + + +481 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002086 +Balloon flight train length +Operational + + +482 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002095 +Type of pressure sensor +Operational + + +483 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002096 +Type of temperature sensor +Operational + + +484 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002097 +Type of humidity sensor +Operational + + +485 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002103 +Radome +Operational + + +486 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002191 +Geopotential height calculation +Operational + + +487 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +025061 +Software identification and version number +Operational + + +488 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +035035 +Reason for termination +Reason for ascent termination +Operational + + +489 +01 +Location and identification sequences +301129 +(Observing satellite and instruments) +001007 +Satellite identifier +Operational + + +490 +01 +Location and identification sequences +301129 +(Observing satellite and instruments) +001031 +Identification of originating/generating centre +Operational + + +491 +01 +Location and identification sequences +301129 +(Observing satellite and instruments) +002019 +Satellite instruments +Operational + + +492 +01 +Location and identification sequences +301129 +(Observing satellite and instruments) +002020 +Satellite classification +Operational + + +493 +01 +Location and identification sequences +301130 +(High precision timestamp) +301011 +Year, month, day +Operational + + +494 +01 +Location and identification sequences +301130 +(High precision timestamp) +301012 +Hour, minute +Operational + + +495 +01 +Location and identification sequences +301130 +(High precision timestamp) +202131 +Change scale +Add 3 to scale +Operational + + +496 +01 +Location and identification sequences +301130 +(High precision timestamp) +201138 +Change data width +Add 10 to width +Operational + + +497 +01 +Location and identification sequences +301130 +(High precision timestamp) +004006 +Second +Operational + + +498 +01 +Location and identification sequences +301130 +(High precision timestamp) +201000 +Change scale +Cancel +Operational + + +499 +01 +Location and identification sequences +301130 +(High precision timestamp) +202000 +Change data width +Cancel +Operational + + +500 +01 +Location and identification sequences +301131 +(Pixel geolocation) +301021 +Latitude/longitude (high accuracy) +Operational + + +501 +01 +Location and identification sequences +301131 +(Pixel geolocation) +007024 +Satellite zenith angle +Operational + + +502 +01 +Location and identification sequences +301131 +(Pixel geolocation) +005021 +Bearing or azimuth +Operational + + +503 +01 +Location and identification sequences +301131 +(Pixel geolocation) +007025 +Solar zenith angle +Operational + + +504 +01 +Location and identification sequences +301131 +(Pixel geolocation) +005022 +Solar azimuth +Operational + + +505 +01 +Location and identification sequences +301150 +(WIGOS identifier) +001125 +WIGOS identifier series +Operational + + +506 +01 +Location and identification sequences +301150 +(WIGOS identifier) +001126 +WIGOS issuer of identifier +Operational + + +507 +01 +Location and identification sequences +301150 +(WIGOS identifier) +001127 +WIGOS issue number +Operational + + +508 +01 +Location and identification sequences +301150 +(WIGOS identifier) +001128 +WIGOS local identifier (character) +Operational + + +509 +02 +Meteorological sequences common to surface data +302001 +(Pressure and 3-hour pressure change) +010004 +Pressure +Station level +Operational + + +510 +02 +Meteorological sequences common to surface data +302001 +(Pressure and 3-hour pressure change) +010051 +Pressure reduced to mean sea level +Operational + + +511 +02 +Meteorological sequences common to surface data +302001 +(Pressure and 3-hour pressure change) +010061 +3-hour pressure change +Operational + + +512 +02 +Meteorological sequences common to surface data +302001 +(Pressure and 3-hour pressure change) +010063 +Characteristic of pressure tendency +Operational + + +513 +02 +Meteorological sequences common to surface data +302002 +(High altitude station) +010004 +Pressure +Station level +Operational + + +514 +02 +Meteorological sequences common to surface data +302002 +(High altitude station) +007004 +Pressure +Pressure level +Operational + + +515 +02 +Meteorological sequences common to surface data +302002 +(High altitude station) +010003 +Geopotential +Pressure level +Operational + + +516 +02 +Meteorological sequences common to surface data +302002 +(High altitude station) +010061 +3-hour pressure change +Operational + + +517 +02 +Meteorological sequences common to surface data +302002 +(High altitude station) +010063 +Characteristic of pressure tendency +Operational + + +518 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +011011 +Wind direction at 10 m +Operational + + +519 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +011012 +Wind speed at 10 m +Operational + + +520 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +012004 +Air temperature at 2 m +Operational + + +521 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +012006 +Dewpoint temperature at 2 m +Operational + + +522 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +013003 +Relative humidity +Operational + + +523 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +020001 +Horizontal visibility +Operational + + +524 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +020003 +Present weather +Operational + + +525 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +020004 +Past weather (1) +Operational + + +526 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +020005 +Past weather (2) +Operational + + +527 +02 +Meteorological sequences common to surface data +302004 +(General cloud information) +020010 +Cloud cover (total) +Operational + + +528 +02 +Meteorological sequences common to surface data +302004 +(General cloud information) +008002 +Vertical significance (surface observations) +Operational + + +529 +02 +Meteorological sequences common to surface data +302004 +(General cloud information) +020011 +Cloud amount +Operational + + +530 +02 +Meteorological sequences common to surface data +302004 +(General cloud information) +020013 +Height of base of cloud +Operational + + +531 +02 +Meteorological sequences common to surface data +302004 +(General cloud information) +020012 +Cloud type +Operational + + +532 +02 +Meteorological sequences common to surface data +302004 +(General cloud information) +020012 +Cloud type +Operational + + +533 +02 +Meteorological sequences common to surface data +302004 +(General cloud information) +020012 +Cloud type +Operational + + +534 +02 +Meteorological sequences common to surface data +302005 +(Cloud layer) +008002 +Vertical significance (surface observations) +Operational + + +535 +02 +Meteorological sequences common to surface data +302005 +(Cloud layer) +020011 +Cloud amount +Operational + + +536 +02 +Meteorological sequences common to surface data +302005 +(Cloud layer) +020012 +Cloud type +Operational + + +537 +02 +Meteorological sequences common to surface data +302005 +(Cloud layer) +020013 +Height of base of cloud +Operational + + +538 +02 +Meteorological sequences common to surface data +302006 +(Pressure and 24-hour pressure change) +010004 +Pressure +Station level +Operational + + +539 +02 +Meteorological sequences common to surface data +302006 +(Pressure and 24-hour pressure change) +010051 +Pressure reduced to mean sea level +Operational + + +540 +02 +Meteorological sequences common to surface data +302006 +(Pressure and 24-hour pressure change) +010062 +24-hour pressure change +Operational + + +541 +02 +Meteorological sequences common to surface data +302006 +(Pressure and 24-hour pressure change) +010063 +Characteristic of pressure tendency +Operational + + +542 +02 +Meteorological sequences common to surface data +302011 +(Low altitude station) +302001 +Pressure and 3-hour pressure change +Operational + + +543 +02 +Meteorological sequences common to surface data +302011 +(Low altitude station) +302003 +Wind, temperature, humidity, visibility, weather +Operational + + +544 +02 +Meteorological sequences common to surface data +302011 +(Low altitude station) +302004 +General cloud information +Significant cloud layer +Operational + + +545 +02 +Meteorological sequences common to surface data +302012 +(High altitude station) +302002 +High altitude station +Pressure and pressure change +Operational + + +546 +02 +Meteorological sequences common to surface data +302012 +(High altitude station) +302003 +Wind, temperature, humidity, visibility, weather +Operational + + +547 +02 +Meteorological sequences common to surface data +302012 +(High altitude station) +302004 +General cloud information +Significant cloud layer +Operational + + +548 +02 +Meteorological sequences common to surface data +302013 +(Basic surface report) +302006 +Pressure and 24-hour pressure change +Operational + + +549 +02 +Meteorological sequences common to surface data +302013 +(Basic surface report) +302003 +Wind, temperature, humidity, visibility, weather +Operational + + +550 +02 +Meteorological sequences common to surface data +302013 +(Basic surface report) +101000 +Delayed replication of 1 descriptor +Operational + + +551 +02 +Meteorological sequences common to surface data +302013 +(Basic surface report) +031001 +Delayed descriptor replication factor +Operational + + +552 +02 +Meteorological sequences common to surface data +302013 +(Basic surface report) +302005 +Cloud layer +Operational + + +557 +02 +Meteorological sequences common to surface data +302021 +(Waves) +022001 +Direction of waves +Operational + + +558 +02 +Meteorological sequences common to surface data +302021 +(Waves) +022011 +Period of waves +Operational + + +559 +02 +Meteorological sequences common to surface data +302021 +(Waves) +022021 +Height of waves +Operational + + +560 +02 +Meteorological sequences common to surface data +302022 +(Wind waves) +022002 +Direction of wind waves +Operational + + +561 +02 +Meteorological sequences common to surface data +302022 +(Wind waves) +022012 +Period of wind waves +Operational + + +562 +02 +Meteorological sequences common to surface data +302022 +(Wind waves) +022022 +Height of wind waves +Operational + + +563 +02 +Meteorological sequences common to surface data +302023 +(Swell waves) +022003 +Direction of swell waves +Operational + + +564 +02 +Meteorological sequences common to surface data +302023 +(Swell waves) +022013 +Period of swell waves +Operational + + +565 +02 +Meteorological sequences common to surface data +302023 +(Swell waves) +022023 +Height of swell waves +Operational + + +566 +02 +Meteorological sequences common to surface data +302024 +(Wind and swell waves) +302022 +Wind waves +Operational + + +567 +02 +Meteorological sequences common to surface data +302024 +(Wind and swell waves) +101002 +Replicate 1 descriptor 2 times +Operational + + +568 +02 +Meteorological sequences common to surface data +302024 +(Wind and swell waves) +302023 +Swell waves +2 systems of swell +Operational + + +569 +02 +Meteorological sequences common to surface data +302031 +(Pressure information) +302001 +Pressure and 3-hour pressure change +Operational + + +570 +02 +Meteorological sequences common to surface data +302031 +(Pressure information) +010062 +24-hour pressure change +Operational + + +571 +02 +Meteorological sequences common to surface data +302031 +(Pressure information) +007004 +Pressure +Standard level +Operational + + +572 +02 +Meteorological sequences common to surface data +302031 +(Pressure information) +010009 +Geopotential height +Operational + + +573 +02 +Meteorological sequences common to surface data +302032 +(Temperature and humidity data) +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature and humidity measurement +Operational + + +574 +02 +Meteorological sequences common to surface data +302032 +(Temperature and humidity data) +012101 +Temperature/air temperature +Scale: 2 +Operational + + +575 +02 +Meteorological sequences common to surface data +302032 +(Temperature and humidity data) +012103 +Dewpoint temperature +Scale: 2 +Operational + + +576 +02 +Meteorological sequences common to surface data +302032 +(Temperature and humidity data) +013003 +Relative humidity +Operational + + +577 +02 +Meteorological sequences common to surface data +302033 +(Visibility data) +007032 +Height of sensor above local ground (or deck of marine platform) +Visibility measurement +Operational + + +578 +02 +Meteorological sequences common to surface data +302033 +(Visibility data) +020001 +Horizontal visibility +Operational + + +579 +02 +Meteorological sequences common to surface data +302034 +(Precipitation past 24 hours) +007032 +Height of sensor above local ground (or deck of marine platform) +Precipitation measurement +Operational + + +580 +02 +Meteorological sequences common to surface data +302034 +(Precipitation past 24 hours) +013023 +Total precipitation past 24 hours +Operational + + +581 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +302032 +Temperature and humidity data +Operational + + +582 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +302033 +Visibility data +Operational + + +583 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +302034 +Precipitation past 24 hours +Operational + + +584 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +585 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +302004 +General cloud information +Operational + + +586 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +587 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +031001 +Delayed descriptor replication factor +Operational + + +588 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +302005 +Cloud layer +Individual cloud layer or mass +Operational + + +596 +02 +Meteorological sequences common to surface data +302036 +(Clouds with bases below station level) +105000 +Delayed replication of 5 descriptors +Operational + + +597 +02 +Meteorological sequences common to surface data +302036 +(Clouds with bases below station level) +031001 +Delayed descriptor replication factor +Operational + + +598 +02 +Meteorological sequences common to surface data +302036 +(Clouds with bases below station level) +008002 +Vertical significance (surface observations) +Operational + + +599 +02 +Meteorological sequences common to surface data +302036 +(Clouds with bases below station level) +020011 +Cloud amount +Operational + + +600 +02 +Meteorological sequences common to surface data +302036 +(Clouds with bases below station level) +020012 +Cloud type +Operational + + +601 +02 +Meteorological sequences common to surface data +302036 +(Clouds with bases below station level) +020014 +Height of top of cloud +Operational + + +602 +02 +Meteorological sequences common to surface data +302036 +(Clouds with bases below station level) +020017 +Cloud top description +Operational + + +609 +02 +Meteorological sequences common to surface data +302037 +(State of ground, snow depth, ground minimum temperature) +020062 +State of the ground (with or without snow) +Operational + + +610 +02 +Meteorological sequences common to surface data +302037 +(State of ground, snow depth, ground minimum temperature) +013013 +Total snow depth +Operational + + +611 +02 +Meteorological sequences common to surface data +302037 +(State of ground, snow depth, ground minimum temperature) +012113 +Ground minimum temperature, past 12 hours +Scale: 2 +Operational + + +612 +02 +Meteorological sequences common to surface data +302038 +(Present and past weather) +020003 +Present weather +Operational + + +613 +02 +Meteorological sequences common to surface data +302038 +(Present and past weather) +004024 +Time period or displacement +Hours +Operational + + +614 +02 +Meteorological sequences common to surface data +302038 +(Present and past weather) +020004 +Past weather (1) +Operational + + +615 +02 +Meteorological sequences common to surface data +302038 +(Present and past weather) +020005 +Past weather (2) +Operational + + +616 +02 +Meteorological sequences common to surface data +302039 +(Sunshine data (from 1 hour and 24 hour period)) +004024 +Time period or displacement +Hours +Operational + + +617 +02 +Meteorological sequences common to surface data +302039 +(Sunshine data (from 1 hour and 24 hour period)) +014031 +Total sunshine +Operational + + +618 +02 +Meteorological sequences common to surface data +302040 +(Precipitation measurement) +007032 +Height of sensor above local ground (or deck of marine platform) +Precipitation measurement +Operational + + +619 +02 +Meteorological sequences common to surface data +302040 +(Precipitation measurement) +102002 +Replicate 2 descriptors 2 times +Operational + + +620 +02 +Meteorological sequences common to surface data +302040 +(Precipitation measurement) +004024 +Time period or displacement +Hours +Operational + + +621 +02 +Meteorological sequences common to surface data +302040 +(Precipitation measurement) +013011 +Total precipitation/total water equivalent +Operational + + +622 +02 +Meteorological sequences common to surface data +302041 +(Extreme temperature data) +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +Operational + + +623 +02 +Meteorological sequences common to surface data +302041 +(Extreme temperature data) +004024 +Time period or displacement +Operational + + +624 +02 +Meteorological sequences common to surface data +302041 +(Extreme temperature data) +004024 +Time period or displacement +(see Notes 1 and 2) +Operational + + +625 +02 +Meteorological sequences common to surface data +302041 +(Extreme temperature data) +012111 +Maximum temperature, at height and over period specified +Scale: 2 +Operational + + +626 +02 +Meteorological sequences common to surface data +302041 +(Extreme temperature data) +004024 +Time period or displacement +Operational + + +627 +02 +Meteorological sequences common to surface data +302041 +(Extreme temperature data) +004024 +Time period or displacement +(see Note 2) +Operational + + +628 +02 +Meteorological sequences common to surface data +302041 +(Extreme temperature data) +012112 +Minimum temperature, at height and over period specified +Scale: 2 +Operational + + +629 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +007032 +Height of sensor above local ground (or deck of marine platform) +Wind measurement +Operational + + +630 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +002002 +Type of instrumentation for wind measurement +Operational + + +631 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +008021 +Time significance += 2 Time averaged +Operational + + +632 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +004025 +Time period or displacement += -10 minutes, or number of minutes after a significant change of wind +Operational + + +633 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +011001 +Wind direction +Operational + + +634 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +011002 +Wind speed +Operational + + +635 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +008021 +Time significance +Set to missing +Operational + + +636 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +103002 +Replicate 3 descriptors 2 times +Operational + + +637 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +004025 +Time period or displacement +Minutes +Operational + + +638 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +011043 +Maximum wind gust direction +Operational + + +639 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +011041 +Maximum wind gust speed +Operational + + +640 +02 +Meteorological sequences common to surface data +302043 +(Basic synoptic "period" data) +302038 +Present and past weather +Operational + + +641 +02 +Meteorological sequences common to surface data +302043 +(Basic synoptic "period" data) +101002 +Replicate 1 descriptor 2 times +Operational + + +642 +02 +Meteorological sequences common to surface data +302043 +(Basic synoptic "period" data) +302039 +Sunshine data (from 1 hour and 24 hour period) +Operational + + +643 +02 +Meteorological sequences common to surface data +302043 +(Basic synoptic "period" data) +302040 +Precipitation measurement +Operational + + +644 +02 +Meteorological sequences common to surface data +302043 +(Basic synoptic "period" data) +302041 +Extreme temperature data +Operational + + +645 +02 +Meteorological sequences common to surface data +302043 +(Basic synoptic "period" data) +302042 +Wind data +Operational + + +646 +02 +Meteorological sequences common to surface data +302043 +(Basic synoptic "period" data) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +647 +02 +Meteorological sequences common to surface data +302044 +(Evaporation data) +004024 +Time period or displacement +Hours +Operational + + +648 +02 +Meteorological sequences common to surface data +302044 +(Evaporation data) +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +Operational + + +649 +02 +Meteorological sequences common to surface data +302044 +(Evaporation data) +013033 +Evaporation/evapotranspiration +Operational + + +650 +02 +Meteorological sequences common to surface data +302045 +(Radiation data (from 1 hour and 24 hour period)) +004024 +Time period or displacement +Hours +Operational + + +651 +02 +Meteorological sequences common to surface data +302045 +(Radiation data (from 1 hour and 24 hour period)) +014002 +Long-wave radiation, integrated over period specified +Operational + + +652 +02 +Meteorological sequences common to surface data +302045 +(Radiation data (from 1 hour and 24 hour period)) +014004 +Short-wave radiation, integrated over period specified +Operational + + +653 +02 +Meteorological sequences common to surface data +302045 +(Radiation data (from 1 hour and 24 hour period)) +014016 +Net radiation, integrated over period specified +Operational + + +654 +02 +Meteorological sequences common to surface data +302045 +(Radiation data (from 1 hour and 24 hour period)) +014028 +Global solar radiation (high accuracy), integrated over period specified +Operational + + +655 +02 +Meteorological sequences common to surface data +302045 +(Radiation data (from 1 hour and 24 hour period)) +014029 +Diffuse solar radiation (high accuracy), integrated over period specified +Operational + + +656 +02 +Meteorological sequences common to surface data +302045 +(Radiation data (from 1 hour and 24 hour period)) +014030 +Direct solar radiation (high accuracy), integrated over period specified +Operational + + +657 +02 +Meteorological sequences common to surface data +302046 +(Temperature change) +004024 +Time period or displacement +Operational + + +658 +02 +Meteorological sequences common to surface data +302046 +(Temperature change) +004024 +Time period or displacement +(see Note 3) +Operational + + +659 +02 +Meteorological sequences common to surface data +302046 +(Temperature change) +012049 +Temperature change over specified period +Operational + + +660 +02 +Meteorological sequences common to surface data +302047 +(Direction of cloud drift) +102003 +Replicate 2 descriptors 3 times +Operational + + +661 +02 +Meteorological sequences common to surface data +302047 +(Direction of cloud drift) +008002 +Vertical significance (surface observations) +Operational + + +662 +02 +Meteorological sequences common to surface data +302047 +(Direction of cloud drift) +020054 +True direction from which a phenomenon or clouds are moving or in which they are observed +Operational + + +663 +02 +Meteorological sequences common to surface data +302048 +(Direction and elevation of cloud) +005021 +Bearing or azimuth +Operational + + +664 +02 +Meteorological sequences common to surface data +302048 +(Direction and elevation of cloud) +007021 +Elevation +Elevation angle +Operational + + +665 +02 +Meteorological sequences common to surface data +302048 +(Direction and elevation of cloud) +020012 +Cloud type +Operational + + +666 +02 +Meteorological sequences common to surface data +302048 +(Direction and elevation of cloud) +005021 +Bearing or azimuth +Set to missing (cancel) +Operational + + +667 +02 +Meteorological sequences common to surface data +302048 +(Direction and elevation of cloud) +007021 +Elevation +Set to missing (cancel) +Operational + + +668 +02 +Meteorological sequences common to surface data +302049 +(Cloud information reported with vertical soundings) +008002 +Vertical significance (surface observations) +Operational + + +669 +02 +Meteorological sequences common to surface data +302049 +(Cloud information reported with vertical soundings) +020011 +Cloud amount +Low or middle clouds Nh +Operational + + +670 +02 +Meteorological sequences common to surface data +302049 +(Cloud information reported with vertical soundings) +020013 +Height of base of cloud +h +Operational + + +671 +02 +Meteorological sequences common to surface data +302049 +(Cloud information reported with vertical soundings) +020012 +Cloud type +Low clouds CL +Operational + + +672 +02 +Meteorological sequences common to surface data +302049 +(Cloud information reported with vertical soundings) +020012 +Cloud type +Middle clouds CM +Operational + + +673 +02 +Meteorological sequences common to surface data +302049 +(Cloud information reported with vertical soundings) +020012 +Cloud type +High clouds CH +Operational + + +674 +02 +Meteorological sequences common to surface data +302049 +(Cloud information reported with vertical soundings) +008002 +Vertical significance (surface observations) +Set to missing +Operational + + +675 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +008041 +Data significance += 5 Surface observation displacement from launch point +Operational + + +676 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +005021 +Bearing or azimuth +Operational + + +677 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +007005 +Height increment +Operational + + +678 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +202130 +Change scale +Operational + + +679 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +006021 +Distance +Operational + + +680 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +202000 +Change scale +Cancel +Operational + + +681 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +008041 +Data significance += 4 Surface observation +Operational + + +682 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +201131 +Change data width +Operational + + +683 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +202129 +Change scale +Operational + + +684 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +002115 +Type of surface observing equipment +Operational + + +685 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +010004 +Pressure +Operational + + +686 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +002115 +Type of surface observing equipment +Operational + + +687 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +013003 +Relative humidity +Operational + + +688 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +202000 +Change scale +Cancel +Operational + + +689 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +201000 +Change data width +Cancel +Operational + + +690 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +002115 +Type of surface observing equipment +Operational + + +691 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +011001 +Wind direction +Operational + + +692 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +011002 +Wind speed +Operational + + +693 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +002115 +Type of surface observing equipment +Operational + + +694 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +102002 +Replicate 2 descriptors 2 times +Operational + + +695 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +012101 +Temperature/air temperature +Operational + + +696 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +004024 +Time period or displacement +Hours +Operational + + +697 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +002115 +Type of surface observing equipment +Operational + + +698 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +012103 +Dewpoint temperature +Operational + + +699 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +012102 +Wet-bulb temperature +Operational + + +700 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +101003 +Replicate 1 descriptor 3 times +Operational + + +701 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +020012 +Cloud type +Operational + + +702 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +020011 +Cloud amount +Operational + + +703 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +020013 +Height of base of cloud +Operational + + +704 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +101002 +Replicate 1 descriptor 2 times +Operational + + +705 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +020003 +Present weather +Operational + + +707 +02 +Meteorological sequences common to surface data +302051 +010004 +Pressure +Operational + + +708 +02 +Meteorological sequences common to surface data +302051 +010051 +Pressure reduced to mean sea level +Operational + + +709 +02 +Meteorological sequences common to surface data +302051 +007004 +Pressure +Vertical location +Operational + + +710 +02 +Meteorological sequences common to surface data +302051 +010003 +Geopotential +Operational + + +711 +02 +Meteorological sequences common to surface data +302051 +012004 +Air temperature at 2 m +Operational + + +712 +02 +Meteorological sequences common to surface data +302051 +012051 +Standard deviation temperature +Operational + + +713 +02 +Meteorological sequences common to surface data +302051 +012016 +Maximum temperature at 2 m, past 24 hours +Operational + + +714 +02 +Meteorological sequences common to surface data +302051 +012017 +Minimum temperature at 2 m, past 24 hours +Operational + + +715 +02 +Meteorological sequences common to surface data +302051 +013004 +Vapour pressure +Operational + + +716 +02 +Meteorological sequences common to surface data +302051 +102004 +Replicate 2 descriptors 4 times +Operational + + +717 +02 +Meteorological sequences common to surface data +302051 +008051 +Qualifier for number of missing values in calculation of statistic +Operational + + +718 +02 +Meteorological sequences common to surface data +302051 +008020 +Total number of missing entities (with respect to accumulation or average) +Operational + + +719 +02 +Meteorological sequences common to surface data +302052 +(Ship temperature and humidity data) +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature and humidity measurement +Operational + + +720 +02 +Meteorological sequences common to surface data +302052 +(Ship temperature and humidity data) +007033 +Height of sensor above water surface +Temperature and humidity measurement +Operational + + +721 +02 +Meteorological sequences common to surface data +302052 +(Ship temperature and humidity data) +012101 +Temperature/air temperature +Scale: 2 +Operational + + +722 +02 +Meteorological sequences common to surface data +302052 +(Ship temperature and humidity data) +002039 +Method of wet-bulb temperature measurement +Operational + + +723 +02 +Meteorological sequences common to surface data +302052 +(Ship temperature and humidity data) +012102 +Wet-bulb temperature +Scale: 2 +Operational + + +724 +02 +Meteorological sequences common to surface data +302052 +(Ship temperature and humidity data) +012103 +Dewpoint temperature +Scale: 2 +Operational + + +725 +02 +Meteorological sequences common to surface data +302052 +(Ship temperature and humidity data) +013003 +Relative humidity +Operational + + +726 +02 +Meteorological sequences common to surface data +302053 +(Ship visibility data) +007032 +Height of sensor above local ground (or deck of marine platform) +Visibility measurement +Operational + + +727 +02 +Meteorological sequences common to surface data +302053 +(Ship visibility data) +007033 +Height of sensor above water surface +Visibility measurement +Operational + + +728 +02 +Meteorological sequences common to surface data +302053 +(Ship visibility data) +020001 +Horizontal visibility +Operational + + +729 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +302052 +Ship temperature and humidity data +Operational + + +730 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +302053 +Ship visibility data +Operational + + +731 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +732 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +302034 +Precipitation past 24 hours +Operational + + +733 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +734 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +302004 +General cloud information +Operational + + +735 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +736 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +031001 +Delayed descriptor replication factor +Operational + + +737 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +302005 +Cloud layer +Operational + + +746 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020031 +Ice deposit (thickness) +Operational + + +747 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020032 +Rate of ice accretion (estimated) +Operational + + +748 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020033 +Cause of ice accretion +Operational + + +749 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020034 +Sea ice concentration +Operational + + +750 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020035 +Amount and type of ice +Operational + + +751 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020036 +Ice situation +Operational + + +752 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020037 +Ice development +Operational + + +753 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020038 +Bearing of ice edge +Operational + + +754 +02 +Meteorological sequences common to surface data +302056 +(Sea/water temperature) +002038 +Method of water temperature and/or salinity measurement +Operational + + +755 +02 +Meteorological sequences common to surface data +302056 +(Sea/water temperature) +007063 +Depth below sea/water surface (cm) +Sea-surface temperature measurement +Operational + + +756 +02 +Meteorological sequences common to surface data +302056 +(Sea/water temperature) +022043 +Sea/water temperature +Operational + + +757 +02 +Meteorological sequences common to surface data +302056 +(Sea/water temperature) +007063 +Depth below sea/water surface (cm) +Set to missing (cancel) +Operational + + +758 +02 +Meteorological sequences common to surface data +302057 +(Ship marine data) +302056 +Sea/water temperature +Sea-surface temperature, method of measurement, and depth below sea surface +Operational + + +759 +02 +Meteorological sequences common to surface data +302057 +(Ship marine data) +302021 +Waves +Operational + + +760 +02 +Meteorological sequences common to surface data +302057 +(Ship marine data) +302024 +Wind and swell waves +Operational + + +761 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +Operational + + +762 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +007033 +Height of sensor above water surface +Temperature measurement +Operational + + +763 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +004024 +Time period or displacement +Operational + + +764 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +004024 +Time period or displacement +(see Notes 1 and 2) +Operational + + +765 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +012111 +Maximum temperature, at height and over period specified +Scale: 2 +Operational + + +766 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +004024 +Time period or displacement +Operational + + +767 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +004024 +Time period or displacement +(see Note 2) +Operational + + +768 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +012112 +Minimum temperature, at height and over period specified +Scale: 2 +Operational + + +769 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +007032 +Height of sensor above local ground (or deck of marine platform) +Wind measurement +Operational + + +770 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +007033 +Height of sensor above water surface +Wind measurement +Operational + + +771 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +002002 +Type of instrumentation for wind measurement +Operational + + +772 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +008021 +Time significance += 2 Time averaged +Operational + + +773 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +004025 +Time period or displacement += -10 minutes, or number of minutes after a significant change of wind +Operational + + +774 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +011001 +Wind direction +Operational + + +775 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +011002 +Wind speed +Operational + + +776 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +008021 +Time significance +Set to missing +Operational + + +777 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +103002 +Replicate 3 descriptors 2 times +Operational + + +778 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +004025 +Time period or displacement +Minutes +Operational + + +779 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +011043 +Maximum wind gust direction +Operational + + +780 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +011041 +Maximum wind gust speed +Operational + + +781 +02 +Meteorological sequences common to surface data +302060 +(Ship "period" data) +302038 +Present and past weather +Operational + + +782 +02 +Meteorological sequences common to surface data +302060 +(Ship "period" data) +302040 +Precipitation measurement +Operational + + +783 +02 +Meteorological sequences common to surface data +302060 +(Ship "period" data) +302058 +Ship extreme temperature data +Operational + + +784 +02 +Meteorological sequences common to surface data +302060 +(Ship "period" data) +302059 +Ship wind data +Operational + + +785 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +025188 +Method for reducing pressure to sea level +Operational + + +786 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302001 +Pressure and 3-hour pressure change +Operational + + +787 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302093 +Extended ship temperature and humidity data +Operational + + +788 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +789 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +031000 +Short delayed descriptor replication factor +Operational + + +790 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302053 +Ship visibility data +Operational + + +791 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +792 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +793 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +794 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +031000 +Short delayed descriptor replication factor +Operational + + +795 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302004 +General cloud information +Operational + + +796 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +797 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +031001 +Delayed descriptor replication factor +Operational + + +798 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302005 +Cloud layer +Operational + + +799 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +800 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +801 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +031000 +Short delayed descriptor replication factor +Operational + + +802 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302055 +Icing and ice +Operational + + +803 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +804 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +031000 +Short delayed descriptor replication factor +Operational + + +805 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302056 +Sea/water temperature +Operational + + +806 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +807 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +031000 +Short delayed descriptor replication factor +Operational + + +808 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302021 +Waves +Operational + + +809 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +810 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +031000 +Short delayed descriptor replication factor +Operational + + +811 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302024 +Wind and swell waves +Operational + + +813 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +302038 +Present and past weather +Operational + + +814 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +101000 +Delayed replication of 1 descriptor +Operational + + +815 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +031000 +Short delayed descriptor replication factor +Operational + + +816 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +302040 +Precipitation measurement +Operational + + +817 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +101000 +Delayed replication of 1 descriptor +Operational + + +818 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +031000 +Short delayed descriptor replication factor +Operational + + +819 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +302034 +Precipitation past 24 hours +Operational + + +820 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +821 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +101000 +Delayed replication of 1 descriptor +Operational + + +822 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +031000 +Short delayed descriptor replication factor +Operational + + +823 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +302058 +Ship extreme temperature data +Operational + + +824 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +101000 +Delayed replication of 1 descriptor +Operational + + +825 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +031000 +Short delayed descriptor replication factor +Operational + + +826 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +302064 +Ship or other marine platform wind data +Operational + + +828 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +829 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +007033 +Height of sensor above water surface +Operational + + +830 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +002002 +Type of instrumentation for wind measurement +Operational + + +831 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +008021 +Time significance += 2 Time averaged +Operational + + +832 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +004025 +Time period or displacement +Operational + + +833 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +011001 +Wind direction +Operational + + +834 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +011002 +Wind speed +Operational + + +835 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +008021 +Time significance +Set to missing (cancel) +Operational + + +836 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +103000 +Delayed replication of 3 descriptors +Operational + + +837 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +031001 +Delayed descriptor replication factor +Operational + + +838 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +004025 +Time period or displacement +Operational + + +839 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +011043 +Maximum wind gust direction +Operational + + +840 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +011041 +Maximum wind gust speed +Operational + + +842 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020023 +Other weather phenomena +Operational + + +843 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020024 +Intensity of phenomena +Operational + + +844 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020027 +Phenomena occurrence +Operational + + +845 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020054 +True direction from which a phenomenon or clouds are moving or in which they are observed +Operational + + +846 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020023 +Other weather phenomena +Operational + + +847 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020027 +Phenomena occurrence +Operational + + +848 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020054 +True direction from which a phenomenon or clouds are moving or in which they are observed +Operational + + +849 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020025 +Obscuration +Operational + + +850 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020026 +Character of obscuration +Operational + + +851 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020027 +Phenomena occurrence +Operational + + +852 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020040 +Evolution of drift snow +Operational + + +853 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020066 +Maximum diameter of hailstones +Operational + + +854 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020027 +Phenomena occurrence +Operational + + +855 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020021 +Type of precipitation +Operational + + +856 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020067 +Diameter of deposit +Operational + + +857 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020027 +Phenomena occurrence +Operational + + +858 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +001023 +Observation sequence number +Operational + + +859 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional “instantaneous” data +004025 +Time period or displacement += 0 minutes +Operational + + +860 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional “instantaneous” data +002177 +Method of snow depth measurement += 0 Manual observation, = 1 Ultrasonic method, = 2 Video camera method, = 3 Laser method, 4-13 Reserved, = 14 Others, = 15 Missing value +Operational + + +861 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional present weather +101000 +Delayed replication of 1 descriptor +Operational + + +862 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional present weather +031001 +Delayed descriptor replication factor +Operational + + +863 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional present weather +020003 +Present weather +960ww, 961ww +Operational + + +864 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Visibility in different directions +103000 +Delayed replication of 3 descriptors +Operational + + +865 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Visibility in different directions +031001 +Delayed descriptor replication factor +Operational + + +866 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Visibility in different directions +005021 +Bearing or azimuth +981VV-988VV +Operational + + +867 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Visibility in different directions +020001 +Horizontal visibility +VV +Operational + + +868 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Visibility in different directions +005021 +Bearing or azimuth +Set to missing (cancel) +Operational + + +869 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +101000 +Delayed replication of 1 descriptor +Operational + + +870 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +031000 +Short delayed descriptor replication factor +Operational + + +871 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +302056 +Sea/water temperature +Sea-surface temperature, method of measurement, and depth below sea surface +Operational + + +872 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +103000 +Delayed replication of 3 descriptors +Operational + + +873 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +031000 +Short delayed descriptor replication factor +Operational + + +874 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +033041 +Attribute of following value +Operational + + +875 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +020058 +Visibility seawards from a coastal station +980VsVs +Operational + + +876 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +022061 +State of the sea +924SVs +Operational + + +877 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +101000 +Delayed replication of 1 descriptor +Operational + + +878 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +031000 +Short delayed descriptor replication factor +Operational + + +879 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +302022 +Wind waves +Operational + + +880 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +101000 +Delayed replication of 1 descriptor +Operational + + +881 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +031001 +Delayed descriptor replication factor +Operational + + +882 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +302023 +Swell waves +Operational + + +883 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +104000 +Delayed replication of 4 descriptors +Operational + + +884 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +031001 +Delayed descriptor replication factor +Operational + + +885 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +020054 +True direction from which a phenomenon or clouds are moving or in which they are observed +Da, Dp +Operational + + +886 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +020137 +Evolution of clouds +940Cn3 +Operational + + +887 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +020012 +Cloud type +941CDp, 943CLDp +Operational + + +888 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +020090 +Special clouds +993CsDa +Operational + + +889 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +103000 +Delayed replication of 3 descriptors +Operational + + +890 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +031001 +Delayed descriptor replication factor +Operational + + +891 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +020054 +True direction from which a phenomenon or clouds are moving or in which they are observed +Operational + + +892 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +020137 +Evolution of clouds +Operational + + +893 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +020136 +Supplementary cloud type +948C0Da, 949CaDa, 950Nmn3, 951Nvn4 +Operational + + +894 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional "period" data +004025 +Time period or displacement +Reference period of fresh fallen snow +Operational + + +895 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional "period" data +013012 +Depth of fresh snow +Operational + + +896 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +004025 +Time period or displacement += -60 minutes +Operational + + +897 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +011042 +Maximum wind speed (10-minute mean wind) +912ff 902tt 912ff .. mandatory ff >= 18 +Operational + + +898 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +104000 +Delayed replication of 4 descriptors +Operational + + +899 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +031001 +Delayed descriptor replication factor +Operational + + +900 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +008021 +Time significance += 30 Time of occurrence, = 17 Start of phenomenon +Operational + + +901 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +004025 +Time period or displacement += -xx | 902tt +Operational + + +902 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +011042 +Maximum wind speed (10-minute mean wind) +912ff +Operational + + +903 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +008021 +Time significance +Set to missing (cancel) +Operational + + +904 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +115000 +Delayed replication of 15 descriptors +Operational + + +905 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +031001 +Delayed descriptor replication factor +Operational + + +906 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +008021 +Time significance += 30 Time of occurrence, = 17 Start of phenomenon +Operational + + +907 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +004015 +Time increment += -xx1 +Operational + + +908 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +008021 +Time significance += 2 Time averaged +Operational + + +909 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +004025 +Time period or displacement += -10 minutes, or number of minutes after a significant change of wind +Operational + + +910 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +011001 +Wind direction +915dd +Operational + + +911 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +011002 +Wind speed +913ff +Operational + + +912 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +008021 +Time significance += 22 Time of occurrence of wind shift +Operational + + +913 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +004015 +Time increment += +xx2 +Operational + + +914 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +008021 +Time significance += 2 Time averaged +Operational + + +915 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +004025 +Time period or displacement += -10 minutes, or number of minutes after a significant change of wind +Operational + + +916 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +011001 +Wind direction +915dd +Operational + + +917 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +011002 +Wind speed +913ff +Operational + + +918 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +008021 +Time significance +Set to missing (cancel) +Operational + + +919 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +004025 +Time period or displacement += 0 minutes +Operational + + +920 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +004015 +Time increment += +(xx1-xx2) | Non negative to reset the time to the actual time +Operational + + +921 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional weather +103000 +Delayed replication of 3 descriptors +Operational + + +922 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional weather +031001 +Delayed descriptor replication factor +Operational + + +923 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional weather +004025 +Time period or displacement += -xx, i.e. from +Operational + + +924 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional weather +004025 +Time period or displacement += -xx, i.e. to +Operational + + +925 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional weather +020003 +Present weather +962ww, 963w1w1, 964ww, 965w1w1, 966ww, 967w1w1 +Operational + + +926 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +110000 +Delayed replication of 10 descriptors +Operational + + +927 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +031001 +Delayed descriptor replication factor +Operational + + +928 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +004025 +Time period or displacement += -xx, i.e. from +Operational + + +929 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +004025 +Time period or displacement += -xx, i.e. to +Operational + + +930 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +005021 +Bearing or azimuth +Da, Dp +Operational + + +931 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +005021 +Bearing or azimuth +Da, Dp +Operational + + +932 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +020054 +True direction from which a phenomenon or clouds are moving or in which they are observed +Da, Dp +Operational + + +933 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +020024 +Intensity of phenomena += 1 Light, = 2 Moderate, = 3 Heavy, = 4 Violent, = 5 Severe +Operational + + +934 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +020025 +Obscuration +Operational + + +935 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +020026 +Character of obscuration +Operational + + +936 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +020027 +Phenomena occurrence +Operational + + +937 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +020063 +Special phenomena +Operational + + +939 +02 +Meteorological sequences common to surface data +302069 +(Visibility data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +940 +02 +Meteorological sequences common to surface data +302069 +(Visibility data) +007033 +Height of sensor above water surface +Operational + + +941 +02 +Meteorological sequences common to surface data +302069 +(Visibility data) +033041 +Attribute of following value +Operational + + +942 +02 +Meteorological sequences common to surface data +302069 +(Visibility data) +020001 +Horizontal visibility +Operational + + +943 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +944 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +007033 +Height of sensor above water surface +Operational + + +945 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +011001 +Wind direction +Operational + + +946 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +011002 +Wind speed +Operational + + +947 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +011043 +Maximum wind gust direction +Operational + + +948 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +011041 +Maximum wind gust speed +Operational + + +949 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +011016 +Extreme counterclockwise wind direction of a variable wind +Operational + + +950 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +011017 +Extreme clockwise wind direction of a variable wind +Operational + + +951 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +952 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +007033 +Height of sensor above water surface +Operational + + +953 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +008021 +Time significance += 2 Time averaged +Operational + + +954 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +004025 +Time period or displacement += -10 minutes, or number of minutes after a significant change of wind, if any +Operational + + +955 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +011001 +Wind direction +Operational + + +956 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +011002 +Wind speed +Operational + + +957 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +008021 +Time significance +Set to missing +Operational + + +958 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +103002 +Replicate 3 descriptors 2 times +Operational + + +959 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +004025 +Time period or displacement += -10 minutes in the first replication, = -60 minutes in the second replication +Operational + + +960 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +011043 +Maximum wind gust direction +Operational + + +961 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +011041 +Maximum wind gust speed +Operational + + +962 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +004025 +Time period or displacement += -10 minutes +Operational + + +963 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +011016 +Extreme counterclockwise wind direction of a variable wind +Operational + + +964 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +011017 +Extreme clockwise wind direction of a variable wind +Operational + + +965 +02 +Meteorological sequences common to surface data +302072 +(Temperature and humidity data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +966 +02 +Meteorological sequences common to surface data +302072 +(Temperature and humidity data) +007033 +Height of sensor above water surface +Operational + + +967 +02 +Meteorological sequences common to surface data +302072 +(Temperature and humidity data) +012101 +Temperature/air temperature +Scale: 2 +Operational + + +968 +02 +Meteorological sequences common to surface data +302072 +(Temperature and humidity data) +012103 +Dewpoint temperature +Scale: 2 +Operational + + +969 +02 +Meteorological sequences common to surface data +302072 +(Temperature and humidity data) +013003 +Relative humidity +Operational + + +970 +02 +Meteorological sequences common to surface data +302073 +(Cloud data) +020010 +Cloud cover (total) +Operational + + +971 +02 +Meteorological sequences common to surface data +302073 +(Cloud data) +105004 +Replicate 5 descriptors 4 times +Operational + + +972 +02 +Meteorological sequences common to surface data +302073 +(Cloud data) +008002 +Vertical significance (surface observations) +Operational + + +973 +02 +Meteorological sequences common to surface data +302073 +(Cloud data) +020011 +Cloud amount +Operational + + +974 +02 +Meteorological sequences common to surface data +302073 +(Cloud data) +020012 +Cloud type +Operational + + +975 +02 +Meteorological sequences common to surface data +302073 +(Cloud data) +033041 +Attribute of following value +Operational + + +976 +02 +Meteorological sequences common to surface data +302073 +(Cloud data) +020013 +Height of base of cloud +Operational + + +977 +02 +Meteorological sequences common to surface data +302074 +(Present and past weather) +020003 +Present weather +Operational + + +978 +02 +Meteorological sequences common to surface data +302074 +(Present and past weather) +004025 +Time period or displacement +Operational + + +979 +02 +Meteorological sequences common to surface data +302074 +(Present and past weather) +020004 +Past weather (1) +Operational + + +980 +02 +Meteorological sequences common to surface data +302074 +(Present and past weather) +020005 +Past weather (2) +Operational + + +981 +02 +Meteorological sequences common to surface data +302075 +(Intensity of precipitation, size of precipitation element) +008021 +Time significance += 2 Time averaged +Operational + + +982 +02 +Meteorological sequences common to surface data +302075 +(Intensity of precipitation, size of precipitation element) +004025 +Time period or displacement += -10 minutes +Operational + + +983 +02 +Meteorological sequences common to surface data +302075 +(Intensity of precipitation, size of precipitation element) +013055 +Intensity of precipitation +Operational + + +984 +02 +Meteorological sequences common to surface data +302075 +(Intensity of precipitation, size of precipitation element) +013058 +Size of precipitating element +Operational + + +985 +02 +Meteorological sequences common to surface data +302075 +(Intensity of precipitation, size of precipitation element) +008021 +Time significance +Set to missing +Operational + + +986 +02 +Meteorological sequences common to surface data +302076 +(Precipitation, obscuration and other phenomena) +020021 +Type of precipitation +Operational + + +987 +02 +Meteorological sequences common to surface data +302076 +(Precipitation, obscuration and other phenomena) +020022 +Character of precipitation +Operational + + +988 +02 +Meteorological sequences common to surface data +302076 +(Precipitation, obscuration and other phenomena) +026020 +Duration of precipitation +Operational + + +989 +02 +Meteorological sequences common to surface data +302076 +(Precipitation, obscuration and other phenomena) +020023 +Other weather phenomena +Operational + + +990 +02 +Meteorological sequences common to surface data +302076 +(Precipitation, obscuration and other phenomena) +020024 +Intensity of phenomena +Operational + + +991 +02 +Meteorological sequences common to surface data +302076 +(Precipitation, obscuration and other phenomena) +020025 +Obscuration +Operational + + +992 +02 +Meteorological sequences common to surface data +302076 +(Precipitation, obscuration and other phenomena) +020026 +Character of obscuration +Operational + + +993 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +994 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +007033 +Height of sensor above water surface +Operational + + +995 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +004025 +Time period or displacement +Operational + + +996 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +012111 +Maximum temperature, at height and over period specified +Scale: 2 +Operational + + +997 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +012112 +Minimum temperature, at height and over period specified +Scale: 2 +Operational + + +998 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +007032 +Height of sensor above local ground (or deck of marine platform) +Ground temperature +Operational + + +999 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +004025 +Time period or displacement +Operational + + +1000 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +012112 +Minimum temperature, at height and over period specified +Scale: 2 | Ground temperature +Operational + + +1001 +02 +Meteorological sequences common to surface data +302078 +(State of ground and snow depth measurement) +002176 +Method of state of ground measurement +Operational + + +1002 +02 +Meteorological sequences common to surface data +302078 +(State of ground and snow depth measurement)) +020062 +State of the ground (with or without snow) +Operational + + +1003 +02 +Meteorological sequences common to surface data +302078 +(State of ground and snow depth measurement) +002177 +Method of snow depth measurement +Operational + + +1004 +02 +Meteorological sequences common to surface data +302078 +(State of ground and snow depth measurement) +013013 +Total snow depth +Operational + + +1005 +02 +Meteorological sequences common to surface data +302079 +(Precipitation measurement) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +1006 +02 +Meteorological sequences common to surface data +302079 +(Precipitation measurement) +002175 +Method of precipitation measurement +Operational + + +1007 +02 +Meteorological sequences common to surface data +302079 +(Precipitation measurement) +002178 +Method of liquid content measurement of precipitation +Operational + + +1008 +02 +Meteorological sequences common to surface data +302079 +(Precipitation measurement) +004025 +Time period or displacement +Operational + + +1009 +02 +Meteorological sequences common to surface data +302079 +(Precipitation measurement) +013011 +Total precipitation/total water equivalent +Operational + + +1010 +02 +Meteorological sequences common to surface data +302080 +(Evaporation measurement) +002185 +Method of evaporation measurement +Operational + + +1011 +02 +Meteorological sequences common to surface data +302080 +(Evaporation measurement) +004025 +Time period or displacement +Operational + + +1012 +02 +Meteorological sequences common to surface data +302080 +(Evaporation measurement) +013033 +Evaporation/evapotranspiration +Operational + + +1013 +02 +Meteorological sequences common to surface data +302081 +(Total sunshine data) +004025 +Time period or displacement +Operational + + +1014 +02 +Meteorological sequences common to surface data +302081 +(Total sunshine data) +014031 +Total sunshine +Operational + + +1015 +02 +Meteorological sequences common to surface data +302082 +(Radiation data) +004025 +Time period or displacement +Operational + + +1016 +02 +Meteorological sequences common to surface data +302082 +(Radiation data) +014002 +Long-wave radiation, integrated over period specified +Operational + + +1017 +02 +Meteorological sequences common to surface data +302082 +(Radiation data) +014004 +Short-wave radiation, integrated over period specified +Operational + + +1018 +02 +Meteorological sequences common to surface data +302082 +(Radiation data) +014016 +Net radiation, integrated over period specified +Operational + + +1019 +02 +Meteorological sequences common to surface data +302082 +(Radiation data) +014028 +Global solar radiation (high accuracy), integrated over period specified +Operational + + +1020 +02 +Meteorological sequences common to surface data +302082 +(Radiation data) +014029 +Diffuse solar radiation (high accuracy), integrated over period specified +Operational + + +1021 +02 +Meteorological sequences common to surface data +302082 +(Radiation data) +014030 +Direct solar radiation (high accuracy), integrated over period specified +Operational + + +1022 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +004025 +Time period or displacement +Operational + + +1023 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +008023 +First-order statistics +Operational + + +1024 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +010004 +Pressure +Operational + + +1025 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +011001 +Wind direction +Operational + + +1026 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +011002 +Wind speed +Operational + + +1027 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +012101 +Temperature/air temperature +Scale: 2 +Operational + + +1028 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +013003 +Relative humidity +Operational + + +1029 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +008023 +First-order statistics +Set to missing +Operational + + +1030 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +302031 +Pressure information +Operational + + +1031 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +302072 +Temperature and humidity data +Operational + + +1032 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +103000 +Delayed replication of 3 descriptors +Operational + + +1033 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +031000 +Short delayed descriptor replication factor +Operational + + +1034 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +101005 +Replicate 1 descriptor 5 times +Operational + + +1035 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +307063 +Depth below land surface and soil temperature +Operational + + +1036 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +007061 +Depth below land surface +Set to missing (cancel) +Operational + + +1037 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Visibility data +101000 +Delayed replication of 1 descriptor +Operational + + +1038 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Visibility data +031000 +Short delayed descriptor replication factor +Operational + + +1039 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Visibility data +302069 +Visibility data +Operational + + +1040 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Visibility data +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +1041 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Visibility data +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +1042 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Marine data +105000 +Delayed replication of 5 descriptors +Operational + + +1043 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Marine data +031000 +Short delayed descriptor replication factor +Operational + + +1044 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Marine data +020031 +Ice deposit (thickness) +Operational + + +1045 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Marine data +020032 +Rate of ice accretion (estimated) +Operational + + +1046 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Marine data +002038 +Method of water temperature and/or salinity measurement +Operational + + +1047 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Marine data +022043 +Sea/water temperature +Scale: 2 +Operational + + +1048 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Marine data +302021 +Waves +Operational + + +1049 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +State of ground and snow depth measurement +101000 +Delayed replication of 1 descriptor +Operational + + +1050 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +State of ground and snow depth measurement +031000 +Short delayed descriptor replication factor +Operational + + +1051 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +State of ground and snow depth measurement +302078 +State of ground and snow depth measurement +Operational + + +1052 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +State of ground and snow depth measurement +012113 +Ground minimum temperature, past 12 hours +Scale: 2 +Operational + + +1053 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +101000 +Delayed replication of 1 descriptor +Operational + + +1054 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +031000 +Short delayed descriptor replication factor +Operational + + +1055 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +302004 +General cloud information +Operational + + +1056 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +105000 +Delayed replication of 5 descriptors +Operational + + +1057 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +031001 +Delayed descriptor replication factor +Operational + + +1058 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +008002 +Vertical significance (surface observations) +Operational + + +1059 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +020011 +Cloud amount +Operational + + +1060 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +020012 +Cloud type +Operational + + +1061 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +033041 +Attribute of following value +Operational + + +1062 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +020013 +Height of base of cloud +Operational + + +1063 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +302036 +Clouds with bases below station level +Operational + + +1064 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Direction of cloud drift 6DLDMDH +101000 +Delayed replication of 1 descriptor +Operational + + +1065 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Direction of cloud drift 6DLDMDH +031000 +Short delayed descriptor replication factor +Operational + + +1066 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Direction of cloud drift 6DLDMDH +302047 +Direction of cloud drift +Operational + + +1067 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Direction of cloud drift 6DLDMDH +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +1068 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Direction and elevation of cloud 57CDaec +101000 +Delayed replication of 1 descriptor +Operational + + +1069 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Direction and elevation of cloud 57CDaec +031000 +Short delayed descriptor replication factor +Operational + + +1070 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Direction and elevation of cloud 57CDaec +302048 +Direction and elevation of cloud +Operational + + +1104 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Present and past weather data +105000 +Delayed replication of 5 descriptors +Operational + + +1105 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Present and past weather data +031000 +Short delayed descriptor replication factor +Operational + + +1106 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Present and past weather data +020003 +Present weather +Operational + + +1107 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Present and past weather data +103002 +Replicate 3 descriptors 2 times +Operational + + +1108 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Present and past weather data +004024 +Time period or displacement += -1 hour in the first replication, = -x hours in the second replication, x corresponding to the time period of W1W2 in the SYNOP report +Operational + + +1109 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Present and past weather data +020004 +Past weather (1) +Operational + + +1110 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Present and past weather data +020005 +Past weather (2) +Operational + + +1111 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Intensity of precipitation, size of precipitation element +101000 +Delayed replication of 1 descriptor +Operational + + +1112 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Intensity of precipitation, size of precipitation element +031000 +Short delayed descriptor replication factor +Operational + + +1113 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Intensity of precipitation, size of precipitation element +302175 +Intensity of precipitation, size of precipitation element +Operational + + +1114 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation, obscuration and other phenomena +102000 +Delayed replication of 2 descriptors +Operational + + +1115 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation, obscuration and other phenomena +031000 +Short delayed descriptor replication factor +Operational + + +1116 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation, obscuration and other phenomena +004025 +Time period or displacement += -10 minutes +Operational + + +1117 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation, obscuration and other phenomena +302076 +Precipitation, obscuration and other phenomena +Operational + + +1118 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Lightning data +102000 +Delayed replication of 2 descriptors +Operational + + +1119 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Lightning data +031000 +Short delayed descriptor replication factor +Operational + + +1120 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Lightning data +004025 +Time period or displacement += -10 minutes +Operational + + +1121 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Lightning data +013059 +Number of flashes (thunderstorm) +Operational + + +1122 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +1123 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +007033 +Height of sensor above water surface +Operational + + +1124 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +008021 +Time significance += 2 Time averaged +Operational + + +1125 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +004025 +Time period or displacement += -10 minutes, or number of minutes after a significant change of wind +Operational + + +1126 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +011001 +Wind direction +Operational + + +1127 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +011002 +Wind speed +Operational + + +1128 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +008021 +Time significance +Set to missing +Operational + + +1129 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +103003 +Replicate 3 descriptors 3 times +Operational + + +1130 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +004025 +Time period or displacement += -10 minutes in the first replication, = -60 minutes in the second replication, = -60x3 or 60x6 minutes in the third replication +Operational + + +1131 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +011043 +Maximum wind gust direction +Operational + + +1132 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +011041 +Maximum wind gust speed +Operational + + +1133 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +004025 +Time period or displacement += -10 minutes +Operational + + +1134 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +011016 +Extreme counterclockwise wind direction of a variable wind +Operational + + +1135 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +011017 +Extreme clockwise wind direction of a variable wind +Operational + + +1136 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Extreme temperature data +302077 +Extreme temperature data +Operational + + +1137 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Extreme temperature data +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +1138 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Extreme temperature data +302041 +Extreme temperature data +Operational + + +1139 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +106000 +Delayed replication of 6 descriptors +Operational + + +1140 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +031000 +Short delayed descriptor replication factor +Operational + + +1141 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +1142 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +002175 +Method of precipitation measurement +Operational + + +1143 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +002178 +Method of liquid content measurement of precipitation +Operational + + +1144 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +102005 +Replicate 2 descriptors 5 times +Operational + + +1145 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +004024 +Time period or displacement += -1 hour in the first replication, = -3, -6, -12 and -24 hours in the other replications +Operational + + +1146 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +013011 +Total precipitation/total water equivalent +Operational + + +1147 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +1148 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Evaporation data +103000 +Delayed replication of 3 descriptors +Operational + + +1149 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Evaporation data +031000 +Short delayed descriptor replication factor +Operational + + +1150 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Evaporation data +002185 +Method of evaporation measurement +Operational + + +1151 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Evaporation data +101002 +Replicate 1 descriptor 2 times +Operational + + +1152 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Evaporation data +302044 +Evaporation data +Operational + + +1153 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Total sunshine data +102000 +Delayed replication of 2 descriptors +Operational + + +1154 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Total sunshine data +031000 +Short delayed descriptor replication factor +Operational + + +1155 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Total sunshine data +101002 +Replicate 1 descriptor 2 times +Operational + + +1156 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Total sunshine data +302039 +Sunshine data (from 1 hour and 24 hour period) +Operational + + +1157 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Radiation data +102000 +Delayed replication of 2 descriptors +Operational + + +1158 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Radiation data +031000 +Short delayed descriptor replication factor +Operational + + +1159 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Radiation data +101002 +Replicate 1 descriptor 2 times +Operational + + +1160 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Radiation data +302045 +Radiation data (from 1 hour and 24 hour period) +Operational + + +1161 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Temperature change group 54g0sndT +101000 +Delayed replication of 1 descriptor +Operational + + +1162 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Temperature change group 54g0sndT +031000 +Short delayed descriptor replication factor +Operational + + +1163 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Temperature change group 54g0sndT +302046 +Temperature change +Operational + + +1164 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +First-order statistics of P, W, T, U data +101000 +Delayed replication of 1 descriptor +Operational + + +1165 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +First-order statistics of P, W, T, U data +031000 +Short delayed descriptor replication factor +Operational + + +1166 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +First-order statistics of P, W, T, U data +302083 +First-order statistics of P, W, T, U data +Operational + + +1220 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020101 +Locust (acridian) name +Ln +Operational + + +1221 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020102 +Locust (maturity) colour +Lc +Operational + + +1222 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020103 +Stage of development of locusts +Ld +Operational + + +1223 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020104 +Organization state of swarm or band of locusts +Lg +Operational + + +1224 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020105 +Size of swarm or band of locusts and duration of passage of swarm +sL +Operational + + +1225 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020106 +Locust population density +dL +Operational + + +1226 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020107 +Direction of movements of locust swarm +DL +Operational + + +1227 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020108 +Extent of vegetation +ve +Operational + + +1228 +02 +Meteorological sequences common to surface data +302090 +(Sea/water temperature high precision) +002038 +Method of water temperature and/or salinity measurement +Operational + + +1229 +02 +Meteorological sequences common to surface data +302090 +(Sea/water temperature high precision) +007063 +Depth below sea/water surface (cm) +Sea-surface temperature measurement +Operational + + +1230 +02 +Meteorological sequences common to surface data +302090 +(Sea/water temperature high precision) +022045 +Sea/water temperature +Operational + + +1231 +02 +Meteorological sequences common to surface data +302091 +(Sequence for representation of ancillary meteorological observations) +020001 +Horizontal visibility +Operational + + +1232 +02 +Meteorological sequences common to surface data +302091 +(Sequence for representation of ancillary meteorological observations) +004024 +Time period or displacement +Operational + + +1233 +02 +Meteorological sequences common to surface data +302091 +(Sequence for representation of ancillary meteorological observations) +013011 +Total precipitation/total water equivalent +Operational + + +1234 +02 +Meteorological sequences common to surface data +302092 +(VOSClim data elements) +011104 +True heading of aircraft, ship or other mobile platform +Ship’s true heading +Operational + + +1235 +02 +Meteorological sequences common to surface data +302092 +(VOSClim data elements) +001012 +Direction of motion of moving observing platform +Ship’s course over ground +Operational + + +1236 +02 +Meteorological sequences common to surface data +302092 +(VOSClim data elements) +001013 +Speed of motion of moving observing platform +Ship’s speed over ground +Operational + + +1237 +02 +Meteorological sequences common to surface data +302092 +(VOSClim data elements) +010038 +Maximum height of deck cargo above summer load line +Operational + + +1238 +02 +Meteorological sequences common to surface data +302092 +(VOSClim data elements) +010039 +Departure of reference level (summer maximum load line) from actual sea level +Operational + + +1239 +02 +Meteorological sequences common to surface data +302092 +(VOSClim data elements) +011007 +Relative wind direction (in degrees off bow) +Operational + + +1240 +02 +Meteorological sequences common to surface data +302092 +(VOSClim data elements) +011008 +Relative wind speed +Operational + + +1241 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +1242 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +007033 +Height of sensor above water surface +Operational + + +1243 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +303099 +Metadata common to temperature/humidity sensors +Operational + + +1244 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +012101 +Temperature/air temperature +Operational + + +1245 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +103000 +Delayed replication of 3 descriptors +Operational + + +1246 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +031000 +Short delayed descriptor replication factor +Set to 0 if no change from previous values, 1 if changes +Operational + + +1247 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +1248 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +007033 +Height of sensor above water surface +Operational + + +1249 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +303099 +Metadata common to temperature/humidity sensors +Operational + + +1250 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +002039 +Method of wet-bulb temperature measurement +Operational + + +1251 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +002097 +Type of humidity sensor +Operational + + +1252 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +003024 +Psychrometric coefficient +Set to missing if type of humidity sensor is not psychrometer +Operational + + +1253 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +003021 +Hygrometer heating +Operational + + +1254 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +012102 +Wet-bulb temperature +Operational + + +1255 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +012103 +Dewpoint temperature +Operational + + +1256 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +013003 +Relative humidity +Operational + + +1257 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +1258 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +1259 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +303099 +Metadata common to temperature/humidity sensors +Set all elements in sequence to missing (cancel) +Operational + + +1260 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +002039 +Method of wet-bulb temperature measurement +Set to missing (cancel) +Operational + + +1261 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +002097 +Type of humidity sensor +Set to missing (cancel) +Operational + + +1262 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +003021 +Hygrometer heating +Set to missing (cancel) +Operational + + +1263 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +003024 +Psychrometric coefficient +Set to missing (cancel) +Operational + + +1264 +02 +Meteorological sequences common to surface data +302175 +(Intensity of precipitation, size of precipitation element) +008021 +Time significance +Operational + + +1265 +02 +Meteorological sequences common to surface data +302175 +(Intensity of precipitation, size of precipitation element) +004025 +Time period or displacement +Operational + + +1266 +02 +Meteorological sequences common to surface data +302175 +(Intensity of precipitation, size of precipitation element) +013155 +Intensity of precipitation (high accuracy) +Operational + + +1267 +02 +Meteorological sequences common to surface data +302175 +(Intensity of precipitation, size of precipitation element) +013058 +Size of precipitating element +Operational + + +1268 +02 +Meteorological sequences common to surface data +302175 +(Intensity of precipitation, size of precipitation element) +008021 +Time significance +Operational + + +1269 +03 +Meteorological sequences common to vertical soundings data +303001 +007003 +Geopotential +Operational + + +1270 +03 +Meteorological sequences common to vertical soundings data +303001 +011001 +Wind direction +Operational + + +1271 +03 +Meteorological sequences common to vertical soundings data +303001 +011002 +Wind speed +Operational + + +1272 +03 +Meteorological sequences common to vertical soundings data +303002 +(Wind at pressure level) +007004 +Pressure +Operational + + +1273 +03 +Meteorological sequences common to vertical soundings data +303002 +(Wind at pressure level) +011001 +Wind direction +Operational + + +1274 +03 +Meteorological sequences common to vertical soundings data +303002 +(Wind at pressure level) +011002 +Wind speed +Operational + + +1275 +03 +Meteorological sequences common to vertical soundings data +303003 +007004 +Pressure +Operational + + +1276 +03 +Meteorological sequences common to vertical soundings data +303003 +010003 +Geopotential +Operational + + +1277 +03 +Meteorological sequences common to vertical soundings data +303003 +012001 +Temperature/air temperature +Operational + + +1278 +03 +Meteorological sequences common to vertical soundings data +303003 +012003 +Dewpoint temperature +Operational + + +1279 +03 +Meteorological sequences common to vertical soundings data +303004 +007004 +Pressure +Operational + + +1280 +03 +Meteorological sequences common to vertical soundings data +303004 +010003 +Geopotential +Operational + + +1281 +03 +Meteorological sequences common to vertical soundings data +303004 +012001 +Temperature/air temperature +Operational + + +1282 +03 +Meteorological sequences common to vertical soundings data +303004 +012003 +Dewpoint temperature +Operational + + +1283 +03 +Meteorological sequences common to vertical soundings data +303004 +011001 +Wind direction +Operational + + +1284 +03 +Meteorological sequences common to vertical soundings data +303004 +011002 +Wind speed +Operational + + +1285 +03 +Meteorological sequences common to vertical soundings data +303011 +(Wind at height) +007003 +Geopotential +Operational + + +1286 +03 +Meteorological sequences common to vertical soundings data +303011 +(Wind at height) +008001 +Vertical sounding significance +Operational + + +1287 +03 +Meteorological sequences common to vertical soundings data +303011 +(Wind at height) +011001 +Wind direction +Operational + + +1288 +03 +Meteorological sequences common to vertical soundings data +303011 +(Wind at height) +011002 +Wind speed +Operational + + +1289 +03 +Meteorological sequences common to vertical soundings data +303012 +(Wind at pressure level) +007004 +Pressure +Operational + + +1290 +03 +Meteorological sequences common to vertical soundings data +303012 +(Wind at pressure level) +008001 +Vertical sounding significance +Operational + + +1291 +03 +Meteorological sequences common to vertical soundings data +303012 +(Wind at pressure level) +011001 +Wind direction +Operational + + +1292 +03 +Meteorological sequences common to vertical soundings data +303012 +(Wind at pressure level) +011002 +Wind speed +Operational + + +1293 +03 +Meteorological sequences common to vertical soundings data +303013 +(Geopotential, temperature, humidity, wind at pressure level) +007004 +Pressure +Operational + + +1294 +03 +Meteorological sequences common to vertical soundings data +303013 +(Geopotential, temperature, humidity, wind at pressure level) +008001 +Vertical sounding significance +Operational + + +1295 +03 +Meteorological sequences common to vertical soundings data +303013 +(Geopotential, temperature, humidity, wind at pressure level) +010003 +Geopotential +Operational + + +1296 +03 +Meteorological sequences common to vertical soundings data +303013 +(Geopotential, temperature, humidity, wind at pressure level) +012001 +Temperature/air temperature +Operational + + +1297 +03 +Meteorological sequences common to vertical soundings data +303013 +(Geopotential, temperature, humidity, wind at pressure level) +013003 +Relative humidity +Operational + + +1298 +03 +Meteorological sequences common to vertical soundings data +303013 +(Geopotential, temperature, humidity, wind at pressure level) +011001 +Wind direction +Operational + + +1299 +03 +Meteorological sequences common to vertical soundings data +303013 +(Geopotential, temperature, humidity, wind at pressure level) +011002 +Wind speed +Operational + + +1300 +03 +Meteorological sequences common to vertical soundings data +303014 +(Geopotential, temperature, dewpoint temperature, wind at pressure level) +007004 +Pressure +Operational + + +1301 +03 +Meteorological sequences common to vertical soundings data +303014 +(Geopotential, temperature, dewpoint temperature, wind at pressure level) +008001 +Vertical sounding significance +Operational + + +1302 +03 +Meteorological sequences common to vertical soundings data +303014 +(Geopotential, temperature, dewpoint temperature, wind at pressure level) +010003 +Geopotential +Operational + + +1303 +03 +Meteorological sequences common to vertical soundings data +303014 +(Geopotential, temperature, dewpoint temperature, wind at pressure level) +012001 +Temperature/air temperature +Operational + + +1304 +03 +Meteorological sequences common to vertical soundings data +303014 +(Geopotential, temperature, dewpoint temperature, wind at pressure level) +012003 +Dewpoint temperature +Operational + + +1305 +03 +Meteorological sequences common to vertical soundings data +303014 +(Geopotential, temperature, dewpoint temperature, wind at pressure level) +011001 +Wind direction +Operational + + +1306 +03 +Meteorological sequences common to vertical soundings data +303014 +(Geopotential, temperature, dewpoint temperature, wind at pressure level) +011002 +Wind speed +Operational + + +1307 +03 +Meteorological sequences common to vertical soundings data +303021 +(Layer, quality) +007004 +Pressure +Define layer +Operational + + +1308 +03 +Meteorological sequences common to vertical soundings data +303021 +(Layer, quality) +007004 +Pressure +Operational + + +1309 +03 +Meteorological sequences common to vertical soundings data +303021 +(Layer, quality) +204007 +Add associated field +7 bits long +Operational + + +1310 +03 +Meteorological sequences common to vertical soundings data +303021 +(Layer, quality) +031021 +Associated field significance +Operational + + +1312 +03 +Meteorological sequences common to vertical soundings data +303022 +303021 +Layer, quality +Operational + + +1313 +03 +Meteorological sequences common to vertical soundings data +303022 +010003 +Geopotential +Layer mean thickness +Operational + + +1314 +03 +Meteorological sequences common to vertical soundings data +303022 +204000 +Add associated field +Cancel +Operational + + +1316 +03 +Meteorological sequences common to vertical soundings data +303023 +(Layer mean temperature) +303021 +Layer, quality +Operational + + +1317 +03 +Meteorological sequences common to vertical soundings data +303023 +(Layer mean temperature) +012001 +Temperature/air temperature +Layer mean +Operational + + +1318 +03 +Meteorological sequences common to vertical soundings data +303023 +(Layer mean temperature) +204000 +Add associated field +Cancel +Operational + + +1320 +03 +Meteorological sequences common to vertical soundings data +303024 +(Precipitable water) +303021 +Layer, quality +Operational + + +1321 +03 +Meteorological sequences common to vertical soundings data +303024 +(Precipitable water) +013016 +Precipitable water +Operational + + +1322 +03 +Meteorological sequences common to vertical soundings data +303024 +(Precipitable water) +204000 +Add associated field +Cancel +Operational + + +1324 +03 +Meteorological sequences common to vertical soundings data +303025 +(Satellite channel and brightness temperature) +002025 +Satellite channel(s) used in computation +Operational + + +1325 +03 +Meteorological sequences common to vertical soundings data +303025 +(Satellite channel and brightness temperature) +204007 +Add associated field +7 bits long +Operational + + +1326 +03 +Meteorological sequences common to vertical soundings data +303025 +(Satellite channel and brightness temperature) +031021 +Associated field significance +Operational + + +1327 +03 +Meteorological sequences common to vertical soundings data +303025 +(Satellite channel and brightness temperature) +012063 +Brightness temperature +Operational + + +1328 +03 +Meteorological sequences common to vertical soundings data +303025 +(Satellite channel and brightness temperature) +204000 +Add associated field +Cancel +Operational + + +1330 +03 +Meteorological sequences common to vertical soundings data +303026 +007004 +Pressure +Operational + + +1331 +03 +Meteorological sequences common to vertical soundings data +303026 +008003 +Vertical significance (satellite observations) +Operational + + +1332 +03 +Meteorological sequences common to vertical soundings data +303026 +204007 +Add associated field +7 bits long +Operational + + +1333 +03 +Meteorological sequences common to vertical soundings data +303026 +031021 +Associated field significance +Operational + + +1334 +03 +Meteorological sequences common to vertical soundings data +303026 +012001 +Temperature/air temperature +Operational + + +1335 +03 +Meteorological sequences common to vertical soundings data +303026 +204000 +Add associated field +Cancel +Operational + + +1337 +03 +Meteorological sequences common to vertical soundings data +303027 +007004 +Pressure +Operational + + +1338 +03 +Meteorological sequences common to vertical soundings data +303027 +204007 +Add associated field +7 bits long +Operational + + +1339 +03 +Meteorological sequences common to vertical soundings data +303027 +031021 +Associated field significance +Operational + + +1340 +03 +Meteorological sequences common to vertical soundings data +303027 +010003 +Geopotential +Operational + + +1341 +03 +Meteorological sequences common to vertical soundings data +303027 +204000 +Add associated field +Cancel +Operational + + +1343 +03 +Meteorological sequences common to vertical soundings data +303031 +(Significance data, land/sea, skin temperature) +007004 +Pressure +Operational + + +1344 +03 +Meteorological sequences common to vertical soundings data +303031 +(Significance data, land/sea, skin temperature) +008003 +Vertical significance (satellite observations) +Base of sounding +Operational + + +1345 +03 +Meteorological sequences common to vertical soundings data +303031 +(Significance data, land/sea, skin temperature) +007021 +Elevation +Local zenith +Operational + + +1346 +03 +Meteorological sequences common to vertical soundings data +303031 +(Significance data, land/sea, skin temperature) +007022 +Solar elevation +Solar zenith +Operational + + +1347 +03 +Meteorological sequences common to vertical soundings data +303031 +(Significance data, land/sea, skin temperature) +008012 +Land/sea qualifier +Operational + + +1348 +03 +Meteorological sequences common to vertical soundings data +303031 +(Significance data, land/sea, skin temperature) +012061 +Skin temperature +Operational + + +1349 +03 +Meteorological sequences common to vertical soundings data +303032 +(Cloud) +020011 +Cloud amount +Operational + + +1350 +03 +Meteorological sequences common to vertical soundings data +303032 +(Cloud) +020016 +Pressure at top of cloud +Operational + + +1351 +03 +Meteorological sequences common to vertical soundings data +303033 +(Cloud) +020010 +Cloud cover (total) +Operational + + +1352 +03 +Meteorological sequences common to vertical soundings data +303033 +(Cloud) +020016 +Pressure at top of cloud +Operational + + +1353 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +008041 +Data significance += 7 Flight level termination point +Operational + + +1354 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +004025 +Time period or displacement +Minutes +Operational + + +1355 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +004026 +Time period or displacement +Seconds +Operational + + +1356 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +301021 +Latitude/longitude (high accuracy) +Operational + + +1357 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +301122 +Date/time (to hundredths of second) +Operational + + +1358 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +201131 +Change data width +Operational + + +1359 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +202129 +Change scale +Operational + + +1360 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +025069 +Flight level pressure corrections +Operational + + +1361 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +007004 +Pressure +Operational + + +1362 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +013003 +Relative humidity +Operational + + +1363 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +202000 +Change scale +Cancel +Operational + + +1364 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +201000 +Change data width +Cancel +Operational + + +1365 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +002013 +Solar and infrared radiation correction +Operational + + +1366 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +012101 +Temperature/air temperature +Operational + + +1367 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +010009 +Geopotential height +Operational + + +1368 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +102002 +Replicate 2 descriptors 2 times +Operational + + +1369 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +008040 +Flight level significance +Operational + + +1370 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +035035 +Reason for termination +Operational + + +1372 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +002152 +Satellite instrument used in data processing +Operational + + +1373 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +002023 +Satellite-derived wind computation method +Operational + + +1374 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +007004 +Pressure +Operational + + +1375 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +011001 +Wind direction +Operational + + +1376 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +011002 +Wind speed +Operational + + +1377 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +002153 +Satellite channel centre frequency +Operational + + +1378 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +002154 +Satellite channel band width +Operational + + +1379 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +012071 +Coldest cluster temperature +Operational + + +1380 +03 +Meteorological sequences common to vertical soundings data +303050 +(Wind data at a pressure level with radiosonde position) +004086 +Long time period or displacement +Since launch time +Operational + + +1381 +03 +Meteorological sequences common to vertical soundings data +303050 +(Wind data at a pressure level with radiosonde position) +008042 +Extended vertical sounding significance +Operational + + +1382 +03 +Meteorological sequences common to vertical soundings data +303050 +(Wind data at a pressure level with radiosonde position) +007004 +Pressure +Operational + + +1383 +03 +Meteorological sequences common to vertical soundings data +303050 +(Wind data at a pressure level with radiosonde position) +005015 +Latitude displacement (high accuracy) +Since launch site +Operational + + +1384 +03 +Meteorological sequences common to vertical soundings data +303050 +(Wind data at a pressure level with radiosonde position) +006015 +Longitude displacement (high accuracy) +Since launch site +Operational + + +1385 +03 +Meteorological sequences common to vertical soundings data +303050 +(Wind data at a pressure level with radiosonde position) +011001 +Wind direction +Operational + + +1386 +03 +Meteorological sequences common to vertical soundings data +303050 +(Wind data at a pressure level with radiosonde position) +011002 +Wind speed +Operational + + +1387 +03 +Meteorological sequences common to vertical soundings data +303051 +(Wind shear data at a pressure level with radiosonde position) +004086 +Long time period or displacement +Since launch time +Operational + + +1388 +03 +Meteorological sequences common to vertical soundings data +303051 +(Wind shear data at a pressure level with radiosonde position) +008042 +Extended vertical sounding significance +Operational + + +1389 +03 +Meteorological sequences common to vertical soundings data +303051 +(Wind shear data at a pressure level with radiosonde position) +007004 +Pressure +Operational + + +1390 +03 +Meteorological sequences common to vertical soundings data +303051 +(Wind shear data at a pressure level with radiosonde position) +005015 +Latitude displacement (high accuracy) +Since launch site +Operational + + +1391 +03 +Meteorological sequences common to vertical soundings data +303051 +(Wind shear data at a pressure level with radiosonde position) +006015 +Longitude displacement (high accuracy) +Since launch site +Operational + + +1392 +03 +Meteorological sequences common to vertical soundings data +303051 +(Wind shear data at a pressure level with radiosonde position) +011061 +Absolute wind shear in 1 km layer below +Operational + + +1393 +03 +Meteorological sequences common to vertical soundings data +303051 +(Wind shear data at a pressure level with radiosonde position) +011062 +Absolute wind shear in 1 km layer above +Operational + + +1394 +03 +Meteorological sequences common to vertical soundings data +303052 +(Wind data at a height level with radiosonde position) +004086 +Long time period or displacement +Since launch time +Operational + + +1395 +03 +Meteorological sequences common to vertical soundings data +303052 +(Wind data at a height level with radiosonde position) +008042 +Extended vertical sounding significance +Operational + + +1396 +03 +Meteorological sequences common to vertical soundings data +303052 +(Wind data at a height level with radiosonde position) +007009 +Geopotential height +Operational + + +1397 +03 +Meteorological sequences common to vertical soundings data +303052 +(Wind data at a height level with radiosonde position) +005015 +Latitude displacement (high accuracy) +Since launch site +Operational + + +1398 +03 +Meteorological sequences common to vertical soundings data +303052 +(Wind data at a height level with radiosonde position) +006015 +Longitude displacement (high accuracy) +Since launch site +Operational + + +1399 +03 +Meteorological sequences common to vertical soundings data +303052 +(Wind data at a height level with radiosonde position) +011001 +Wind direction +Operational + + +1400 +03 +Meteorological sequences common to vertical soundings data +303052 +(Wind data at a height level with radiosonde position) +011002 +Wind speed +Operational + + +1401 +03 +Meteorological sequences common to vertical soundings data +303053 +(Wind shear data at a height level with radiosonde position) +004086 +Long time period or displacement +Since launch time +Operational + + +1402 +03 +Meteorological sequences common to vertical soundings data +303053 +(Wind shear data at a height level with radiosonde position) +008042 +Extended vertical sounding significance +Operational + + +1403 +03 +Meteorological sequences common to vertical soundings data +303053 +(Wind shear data at a height level with radiosonde position) +007009 +Geopotential height +Operational + + +1404 +03 +Meteorological sequences common to vertical soundings data +303053 +(Wind shear data at a height level with radiosonde position) +005015 +Latitude displacement (high accuracy) +Since launch site +Operational + + +1405 +03 +Meteorological sequences common to vertical soundings data +303053 +(Wind shear data at a height level with radiosonde position) +006015 +Longitude displacement (high accuracy) +Since launch site +Operational + + +1406 +03 +Meteorological sequences common to vertical soundings data +303053 +(Wind shear data at a height level with radiosonde position) +011061 +Absolute wind shear in 1 km layer below +Operational + + +1407 +03 +Meteorological sequences common to vertical soundings data +303053 +(Wind shear data at a height level with radiosonde position) +011062 +Absolute wind shear in 1 km layer above +Operational + + +1408 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +004086 +Long time period or displacement +Since launch time +Operational + + +1409 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +008042 +Extended vertical sounding significance +Operational + + +1410 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +007004 +Pressure +Operational + + +1411 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +010009 +Geopotential height +Operational + + +1412 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +005015 +Latitude displacement (high accuracy) +Since launch site +Operational + + +1413 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +006015 +Longitude displacement (high accuracy) +Since launch site +Operational + + +1414 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +012101 +Temperature/air temperature +Scale: 2 +Operational + + +1415 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +012103 +Dewpoint temperature +Scale: 2 +Operational + + +1416 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +011001 +Wind direction +Operational + + +1417 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +011002 +Wind speed +Operational + + +1418 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +004086 +Long time period or displacement +Since launch time +Operational + + +1419 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +008042 +Extended vertical sounding significance +Operational + + +1420 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +007009 +Geopotential height +Operational + + +1421 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +005015 +Latitude displacement (high accuracy) +Since launch site +Operational + + +1422 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +006015 +Longitude displacement (high accuracy) +Since launch site +Operational + + +1423 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +012101 +Temperature/air temperature +Scale: 2 +Operational + + +1424 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +013009 +Relative humidity +Operational + + +1425 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +012103 +Dewpoint temperature +Scale: 2 +Operational + + +1426 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +011001 +Wind direction +Operational + + +1427 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +011002 +Wind speed +Operational + + +1428 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +004086 +Long time period or displacement +Since launch time +Operational + + +1429 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +008042 +Extended vertical sounding significance +Operational + + +1430 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +207001 +Increase scale, reference value and data width +Operational + + +1431 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +007004 +Pressure +Scale: 0 +Operational + + +1432 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +010009 +Geopotential height +Scale: 1 +Operational + + +1433 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +1434 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +005015 +Latitude displacement (high accuracy) +Since launch site +Operational + + +1435 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +006015 +Longitude displacement (high accuracy) +Since launch site +Operational + + +1436 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +012101 +Temperature/air temperature +Scale: 2 +Operational + + +1437 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +012103 +Dewpoint temperature +Scale: 2 +Operational + + +1438 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +011001 +Wind direction +Operational + + +1439 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +011002 +Wind speed +Operational + + +1440 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003005 +Horizontal width of screen or shield (x) +Operational + + +1441 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003006 +Horizontal depth of screen or shield (y) +Operational + + +1442 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003007 +Vertical height of screen or shield (z) +Operational + + +1443 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +002096 +Type of temperature sensor +Operational + + +1444 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003022 +Instrument owner +Operational + + +1445 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003003 +Thermometer/hygrometer housing +Operational + + +1446 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003020 +Material for thermometer/hygrometer housing +Operational + + +1447 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003004 +Type of screen/shelter/radiation shield +Operational + + +1448 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003023 +Configuration of louvres for thermometer/hygrometer screen +Operational + + +1449 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003008 +Artificially ventilated screen or shield +Operational + + +1450 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003009 +Amount of forced ventilation at time of reading +Operational + + +1451 +04 +Meteorological sequences common to satellite observations +304001 +(Cloud top pressure, temperature, wind) +008003 +Vertical significance (satellite observations) +Operational + + +1452 +04 +Meteorological sequences common to satellite observations +304001 +(Cloud top pressure, temperature, wind) +010004 +Pressure +Operational + + +1453 +04 +Meteorological sequences common to satellite observations +304001 +(Cloud top pressure, temperature, wind) +012001 +Temperature/air temperature +Operational + + +1454 +04 +Meteorological sequences common to satellite observations +304001 +(Cloud top pressure, temperature, wind) +011001 +Wind direction +Operational + + +1455 +04 +Meteorological sequences common to satellite observations +304001 +(Cloud top pressure, temperature, wind) +011002 +Wind speed +Operational + + +1456 +04 +Meteorological sequences common to satellite observations +304002 +(Cloud top pressure, wind) +008003 +Vertical significance (satellite observations) +Operational + + +1457 +04 +Meteorological sequences common to satellite observations +304002 +(Cloud top pressure, wind) +010004 +Pressure +Operational + + +1458 +04 +Meteorological sequences common to satellite observations +304002 +(Cloud top pressure, wind) +011001 +Wind direction +Operational + + +1459 +04 +Meteorological sequences common to satellite observations +304002 +(Cloud top pressure, wind) +011002 +Wind speed +Operational + + +1460 +04 +Meteorological sequences common to satellite observations +304003 +(Surface temperature) +008003 +Vertical significance (satellite observations) +Operational + + +1461 +04 +Meteorological sequences common to satellite observations +304003 +(Surface temperature) +012001 +Temperature/air temperature +Operational + + +1462 +04 +Meteorological sequences common to satellite observations +304004 +(Cloud top pressure, cloud cover, temperature) +008003 +Vertical significance (satellite observations) +Operational + + +1463 +04 +Meteorological sequences common to satellite observations +304004 +(Cloud top pressure, cloud cover, temperature) +010004 +Pressure +Operational + + +1464 +04 +Meteorological sequences common to satellite observations +304004 +(Cloud top pressure, cloud cover, temperature) +020010 +Cloud cover (total) +Operational + + +1465 +04 +Meteorological sequences common to satellite observations +304004 +(Cloud top pressure, cloud cover, temperature) +012001 +Temperature/air temperature +Operational + + +1466 +04 +Meteorological sequences common to satellite observations +304005 +(Layer mean relative humidity) +002024 +Integrated mean humidity computational method +Operational + + +1467 +04 +Meteorological sequences common to satellite observations +304005 +(Layer mean relative humidity) +007004 +Pressure +Define layer +Operational + + +1468 +04 +Meteorological sequences common to satellite observations +304005 +(Layer mean relative humidity) +007004 +Pressure +Operational + + +1469 +04 +Meteorological sequences common to satellite observations +304005 +(Layer mean relative humidity) +013003 +Relative humidity +Operational + + +1470 +04 +Meteorological sequences common to satellite observations +304006 +(Radiation) +014001 +Long-wave radiation, integrated over 24 hours +Outgoing long-wave radiation +Operational + + +1471 +04 +Meteorological sequences common to satellite observations +304006 +(Radiation) +014001 +Long-wave radiation, integrated over 24 hours +Incoming long-wave radiation +Operational + + +1472 +04 +Meteorological sequences common to satellite observations +304006 +(Radiation) +014003 +Short-wave radiation, integrated over 24 hours +Outgoing short-wave radiation +Operational + + +1473 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +002163 +Height assignment method +Operational + + +1474 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +002164 +Tracer correlation method +Operational + + +1475 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +008012 +Land/sea qualifier +Operational + + +1476 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +007024 +Satellite zenith angle +Operational + + +1477 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +002057 +Origin of first-guess information for GOES-I/M soundings +Operational + + +1478 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +008021 +Time significance +Operational + + +1479 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004001 +Year +Operational + + +1480 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004002 +Month +Operational + + +1481 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004003 +Day +Operational + + +1482 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004004 +Hour +Operational + + +1483 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +008021 +Time significance +Operational + + +1484 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004024 +Time period or displacement +Operational + + +1485 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +110004 +Replicate 10 descriptors 4 times +Operational + + +1486 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +008021 +Time significance +Operational + + +1487 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004004 +Hour +Operational + + +1488 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004005 +Minute +Operational + + +1489 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004006 +Second +Operational + + +1490 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +008021 +Time significance +Operational + + +1491 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004004 +Hour +Operational + + +1492 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004005 +Minute +Operational + + +1493 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004006 +Second +Operational + + +1494 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +011001 +Wind direction +Operational + + +1495 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +011002 +Wind speed +Operational + + +1496 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +103010 +Replicate 3 descriptors 10 times +Operational + + +1497 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +002163 +Height assignment method +Operational + + +1498 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +007004 +Pressure +Operational + + +1499 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +012001 +Temperature/air temperature +Operational + + +1500 +04 +Meteorological sequences common to satellite observations +304030 +(Location of platform) +027031 +In direction of 0 degrees longitude, distance from the Earth's centre +Operational + + +1501 +04 +Meteorological sequences common to satellite observations +304030 +(Location of platform) +028031 +In direction 90 degrees East, distance from the Earth's centre +Operational + + +1502 +04 +Meteorological sequences common to satellite observations +304030 +(Location of platform) +010031 +In direction of the North Pole, distance from the Earth's centre +Operational + + +1503 +04 +Meteorological sequences common to satellite observations +304031 +(Speed of platform) +001041 +Absolute platform velocity - first component +Operational + + +1504 +04 +Meteorological sequences common to satellite observations +304031 +(Speed of platform) +001042 +Absolute platform velocity - second component +Operational + + +1505 +04 +Meteorological sequences common to satellite observations +304031 +(Speed of platform) +001043 +Absolute platform velocity - third component +Operational + + +1506 +04 +Meteorological sequences common to satellite observations +304032 +(Cloud fraction) +002153 +Satellite channel centre frequency +Operational + + +1507 +04 +Meteorological sequences common to satellite observations +304032 +(Cloud fraction) +002154 +Satellite channel band width +Operational + + +1508 +04 +Meteorological sequences common to satellite observations +304032 +(Cloud fraction) +020081 +Cloud amount in segment +Operational + + +1509 +04 +Meteorological sequences common to satellite observations +304032 +(Cloud fraction) +020082 +Amount segment cloud free +Operational + + +1510 +04 +Meteorological sequences common to satellite observations +304032 +(Cloud fraction) +020012 +Cloud type +Operational + + +1511 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +002152 +Satellite instrument used in data processing +Operational + + +1512 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +002166 +Radiance type +Operational + + +1513 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +002167 +Radiance computational method +Operational + + +1514 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +002153 +Satellite channel centre frequency +Operational + + +1515 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +002154 +Satellite channel band width +Operational + + +1516 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +012075 +Spectral radiance +Operational + + +1517 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +012076 +Radiance +Operational + + +1518 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +012063 +Brightness temperature +Operational + + +1519 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +102004 +Replicate 2 descriptors 4 times +Operational + + +1520 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +027001 +Latitude (high accuracy) +Operational + + +1521 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +028001 +Longitude (high accuracy) +Operational + + +1522 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +007022 +Solar elevation +Operational + + +1523 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +005043 +Field of view number +Operational + + +1524 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +020010 +Cloud cover (total) +Operational + + +1525 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +020016 +Pressure at top of cloud +Operational + + +1526 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +033003 +Quality information +Operational + + +1527 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +010040 +Number of retrieved layers +Operational + + +1528 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +002153 +Satellite channel centre frequency +Deprecated + + +1529 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +002154 +Satellite channel band width +Deprecated + + +1530 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +012063 +Brightness temperature +Deprecated + + +1531 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +008001 +Meteorological feature +Pixel type: clear +Deprecated + + +1532 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +012063 +Brightness temperature +Clear +Deprecated + + +1533 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +008001 +Meteorological feature +Pixel type: cloudy +Deprecated + + +1534 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +012063 +Brightness temperature +Cloudy +Deprecated + + +1535 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +008001 +Meteorological feature +Cancel +Deprecated + + +1536 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +008003 +Vertical significance (satellite observations) +Low cloud +Deprecated + + +1537 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +012063 +Brightness temperature +Low cloud +Deprecated + + +1538 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +008003 +Vertical significance (satellite observations) +Mid cloud +Deprecated + + +1539 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +012063 +Brightness temperature +Mid cloud +Deprecated + + +1540 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +008003 +Vertical significance (satellite observations) +High cloud +Deprecated + + +1541 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +012063 +Brightness temperature +High cloud +Deprecated + + +1542 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +008003 +Vertical significance (satellite observations) +Cancel +Deprecated + + +1543 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +020082 +Amount segment cloud free +Operational + + +1544 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +008012 +Land/sea qualifier +Sea +Operational + + +1545 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +020082 +Amount segment cloud free +Sea +Operational + + +1546 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +008012 +Land/sea qualifier +Cancel +Operational + + +1547 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +020081 +Cloud amount in segment +Operational + + +1548 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +008003 +Vertical significance (satellite observations) +Low cloud +Operational + + +1549 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +020081 +Cloud amount in segment +Low cloud +Operational + + +1550 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +008003 +Vertical significance (satellite observations) +Mid cloud +Operational + + +1551 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +020081 +Cloud amount in segment +Mid cloud +Operational + + +1552 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +008003 +Vertical significance (satellite observations) +High cloud +Operational + + +1553 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +020081 +Cloud amount in segment +High cloud +Operational + + +1554 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +008003 +Vertical significance (satellite observations) +Cancel +Operational + + +1555 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +002153 +Satellite channel centre frequency +Operational + + +1556 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +002154 +Satellite channel band width +Operational + + +1557 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +012063 +Brightness temperature +Operational + + +1558 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +008011 +Meteorological feature +Pixel type: clear +Operational + + +1559 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +012063 +Brightness temperature +Clear +Operational + + +1560 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +008011 +Meteorological feature +Pixel type: cloudy +Operational + + +1561 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +012063 +Brightness temperature +Cloudy +Operational + + +1562 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +008011 +Meteorological feature +Cancel +Operational + + +1563 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +008003 +Vertical significance (satellite observations) +Low cloud +Operational + + +1564 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +012063 +Brightness temperature +Low cloud +Operational + + +1565 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +008003 +Vertical significance (satellite observations) +Mid cloud +Operational + + +1566 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +012063 +Brightness temperature +Mid cloud +Operational + + +1567 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +008003 +Vertical significance (satellite observations) +High cloud +Operational + + +1568 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +012063 +Brightness temperature +High cloud +Operational + + +1580 +04 +Meteorological sequences common to satellite observations +304039 +(Radiance in channel) +201136 +Change data width +Add 8 to width +Operational + + +1581 +04 +Meteorological sequences common to satellite observations +304039 +(Radiance in channel) +005042 +Channel number +Operational + + +1582 +04 +Meteorological sequences common to satellite observations +304039 +(Radiance in channel) +201000 +Change data width +Cancel +Operational + + +1583 +04 +Meteorological sequences common to satellite observations +304039 +(Radiance in channel) +014046 +Scaled radiance +Operational + + +1584 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +025140 +Start channel +Operational + + +1585 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +025141 +End channel +Operational + + +1586 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +040026 +Score quantization factor +Operational + + +1587 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +040016 +Residual RMS in band +Operational + + +1588 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +025062 +Database identification +Operational + + +1589 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +101000 +Delayed replication of 1 descriptor +Operational + + +1590 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +031002 +Extended delayed descriptor replication factor +Operational + + +1591 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +040017 +Non-normalized principal component score +Operational + + +1592 +05 +Meteorological or hydrological sequences common to hydrological observations +305001 +(SADC-HYCOS single measurement) +011001 +Wind direction +Operational + + +1593 +05 +Meteorological or hydrological sequences common to hydrological observations +305001 +(SADC-HYCOS single measurement) +011002 +Wind speed +Operational + + +1594 +05 +Meteorological or hydrological sequences common to hydrological observations +305001 +(SADC-HYCOS single measurement) +013060 +Total accumulated precipitation +Operational + + +1595 +05 +Meteorological or hydrological sequences common to hydrological observations +305001 +(SADC-HYCOS single measurement) +013071 +Upstream water level +Operational + + +1596 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +301012 +Hour, minute +Operational + + +1597 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +012001 +Temperature/air temperature +Operational + + +1598 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013003 +Relative humidity +Operational + + +1599 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +014051 +Direct solar radiation integrated over last hour +Operational + + +1600 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013060 +Total accumulated precipitation +Operational + + +1601 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013072 +Downstream water level +Operational + + +1602 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013080 +Water pH +Operational + + +1603 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013081 +Water conductivity +Operational + + +1604 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013082 +Water temperature +Operational + + +1605 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013083 +Dissolved oxygen +Operational + + +1606 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013084 +Turbidity +Operational + + +1607 +05 +Meteorological or hydrological sequences common to hydrological observations +305003 +(SADC-HYCOS measurement array definition) +301012 +Hour, minute +First single measurement minus increment +Operational + + +1608 +05 +Meteorological or hydrological sequences common to hydrological observations +305003 +(SADC-HYCOS measurement array definition) +004065 +Short time increment +Time interval between measurements +Operational + + +1609 +05 +Meteorological or hydrological sequences common to hydrological observations +305003 +(SADC-HYCOS measurement array definition) +101000 +Delayed replication of 1 descriptor +Operational + + +1610 +05 +Meteorological or hydrological sequences common to hydrological observations +305003 +(SADC-HYCOS measurement array definition) +031001 +Delayed descriptor replication factor +Operational + + +1611 +05 +Meteorological or hydrological sequences common to hydrological observations +305003 +(SADC-HYCOS measurement array definition) +305001 +SADC-HYCOS single measurement +Operational + + +1616 +05 +Meteorological or hydrological sequences common to hydrological observations +305004 +(SADC-HYCOS report) +301030 +Identification - with physical location +Operational + + +1617 +05 +Meteorological or hydrological sequences common to hydrological observations +305004 +(SADC-HYCOS report) +305002 +SADC-HYCOS environmental measurement +Operational + + +1618 +05 +Meteorological or hydrological sequences common to hydrological observations +305004 +(SADC-HYCOS report) +305003 +SADC-HYCOS measurement array definition +Operational + + +1619 +05 +Meteorological or hydrological sequences common to hydrological observations +305006 +(MEDHYCOS measurement) +013072 +Downstream water level +Operational + + +1620 +05 +Meteorological or hydrological sequences common to hydrological observations +305006 +(MEDHYCOS measurement) +013082 +Water temperature +Operational + + +1621 +05 +Meteorological or hydrological sequences common to hydrological observations +305006 +(MEDHYCOS measurement) +013019 +Total precipitation past 1 hour +Operational + + +1622 +05 +Meteorological or hydrological sequences common to hydrological observations +305006 +(MEDHYCOS measurement) +012001 +Temperature/air temperature +Operational + + +1623 +05 +Meteorological or hydrological sequences common to hydrological observations +305006 +(MEDHYCOS measurement) +013073 +Maximum water level +Operational + + +1624 +05 +Meteorological or hydrological sequences common to hydrological observations +305006 +(MEDHYCOS measurement) +013060 +Total accumulated precipitation +Operational + + +1633 +05 +Meteorological or hydrological sequences common to hydrological observations +305007 +(MEDHYCOS report) +301029 +Identification +Operational + + +1634 +05 +Meteorological or hydrological sequences common to hydrological observations +305007 +(MEDHYCOS report) +301012 +Hour, minute +Time of first measurement +Operational + + +1635 +05 +Meteorological or hydrological sequences common to hydrological observations +305007 +(MEDHYCOS report) +004065 +Short time increment +Time interval between measurements +Operational + + +1636 +05 +Meteorological or hydrological sequences common to hydrological observations +305007 +(MEDHYCOS report) +101000 +Delayed replication of 1 descriptor +Operational + + +1637 +05 +Meteorological or hydrological sequences common to hydrological observations +305007 +(MEDHYCOS report) +031001 +Delayed descriptor replication factor +Operational + + +1638 +05 +Meteorological or hydrological sequences common to hydrological observations +305007 +(MEDHYCOS report) +305006 +MEDHYCOS measurement +Single measurement +Operational + + +1644 +05 +Meteorological or hydrological sequences common to hydrological observations +305008 +(AOCHYCOS - Chad measurement) +305006 +MEDHYCOS measurement +Same as MEDHYCOS type measurement +Operational + + +1645 +05 +Meteorological or hydrological sequences common to hydrological observations +305008 +(AOCHYCOS - Chad measurement) +012030 +Soil temperature +At -50 cm +Operational + + +1650 +05 +Meteorological or hydrological sequences common to hydrological observations +305009 +(AOCHYCOS - Chad report) +301029 +Identification +Operational + + +1651 +05 +Meteorological or hydrological sequences common to hydrological observations +305009 +(AOCHYCOS - Chad report) +301012 +Hour, minute +Time of first measurement +Operational + + +1652 +05 +Meteorological or hydrological sequences common to hydrological observations +305009 +(AOCHYCOS - Chad report) +004065 +Short time increment +Time interval between measurements +Operational + + +1653 +05 +Meteorological or hydrological sequences common to hydrological observations +305009 +(AOCHYCOS - Chad report) +101000 +Delayed replication of 1 descriptor +Operational + + +1654 +05 +Meteorological or hydrological sequences common to hydrological observations +305009 +(AOCHYCOS - Chad report) +031001 +Delayed descriptor replication factor +Operational + + +1655 +05 +Meteorological or hydrological sequences common to hydrological observations +305009 +(AOCHYCOS - Chad report) +305008 +AOCHYCOS - Chad measurement +Single measurement +Operational + + +1661 +05 +Meteorological or hydrological sequences common to hydrological observations +305010 +(MEDHYCOS-Measurement type 2) +305008 +AOCHYCOS - Chad measurement +Same as AOCHYCOS type measurement +Operational + + +1662 +05 +Meteorological or hydrological sequences common to hydrological observations +305010 +(MEDHYCOS-Measurement type 2) +002091 +Entry sensor 4/20 mA +No. 1 +Operational + + +1663 +05 +Meteorological or hydrological sequences common to hydrological observations +305010 +(MEDHYCOS-Measurement type 2) +002091 +Entry sensor 4/20 mA +No. 2 +Operational + + +1664 +05 +Meteorological or hydrological sequences common to hydrological observations +305011 +(MEDHYCOS report type 2) +301029 +Identification +Operational + + +1665 +05 +Meteorological or hydrological sequences common to hydrological observations +305011 +(MEDHYCOS report type 2) +301012 +Hour, minute +Time of first measurement +Operational + + +1666 +05 +Meteorological or hydrological sequences common to hydrological observations +305011 +(MEDHYCOS report type 2) +004065 +Short time increment +Time interval between measurements +Operational + + +1667 +05 +Meteorological or hydrological sequences common to hydrological observations +305011 +(MEDHYCOS report type 2) +101000 +Delayed replication of 1 descriptor +Operational + + +1668 +05 +Meteorological or hydrological sequences common to hydrological observations +305011 +(MEDHYCOS report type 2) +031001 +Delayed descriptor replication factor +Operational + + +1669 +05 +Meteorological or hydrological sequences common to hydrological observations +305011 +(MEDHYCOS report type 2) +305010 +MEDHYCOS-Measurement type 2 +Single measurement +Operational + + +1675 +05 +Meteorological or hydrological sequences common to hydrological observations +305016 +(Meteorological parameters associated with hydrological data) +014021 +Global solar radiation, integrated over period specified +Operational + + +1676 +05 +Meteorological or hydrological sequences common to hydrological observations +305016 +(Meteorological parameters associated with hydrological data) +007004 +Pressure +Atmospheric pressure +Operational + + +1677 +05 +Meteorological or hydrological sequences common to hydrological observations +305016 +(Meteorological parameters associated with hydrological data) +013003 +Relative humidity +Operational + + +1678 +05 +Meteorological or hydrological sequences common to hydrological observations +305016 +(Meteorological parameters associated with hydrological data) +011002 +Wind speed +Operational + + +1679 +05 +Meteorological or hydrological sequences common to hydrological observations +305016 +(Meteorological parameters associated with hydrological data) +011001 +Wind direction +Operational + + +1680 +05 +Meteorological or hydrological sequences common to hydrological observations +305016 +(Meteorological parameters associated with hydrological data) +011041 +Maximum wind gust speed +Operational + + +1681 +05 +Meteorological or hydrological sequences common to hydrological observations +305016 +(Meteorological parameters associated with hydrological data) +011043 +Maximum wind gust direction +Operational + + +1682 +05 +Meteorological or hydrological sequences common to hydrological observations +305017 +(Water quality measurement) +013080 +Water pH +Operational + + +1683 +05 +Meteorological or hydrological sequences common to hydrological observations +305017 +(Water quality measurement) +013081 +Water conductivity +Operational + + +1684 +05 +Meteorological or hydrological sequences common to hydrological observations +305017 +(Water quality measurement) +013083 +Dissolved oxygen +Operational + + +1685 +05 +Meteorological or hydrological sequences common to hydrological observations +305017 +(Water quality measurement) +013085 +Oxydation reduction potential (ORP) +Operational + + +1686 +05 +Meteorological or hydrological sequences common to hydrological observations +305017 +(Water quality measurement) +013084 +Turbidity +Operational + + +1687 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +301029 +Identification +Operational + + +1688 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +301012 +Hour, minute +Time of first measurement +Operational + + +1689 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +004065 +Short time increment +Hour increment +Operational + + +1690 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +103000 +Delayed replication of 3 descriptors +Operational + + +1691 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +031001 +Delayed descriptor replication factor +Operational + + +1692 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +305008 +AOCHYCOS-Chad measurement +Same as AOCHYCOS type measurement +Operational + + +1693 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +305016 +Meteorological parameters associated with hydrological data +Operational + + +1694 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +305017 +Water quality measurement +Operational + + +1702 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306001 +(Depth, temperature) +002032 +Indicator for digitization +Operational + + +1703 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306001 +(Depth, temperature) +102000 +Delayed replication of 2 descriptors +Operational + + +1704 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306001 +(Depth, temperature) +031001 +Delayed descriptor replication factor +Operational + + +1705 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306001 +(Depth, temperature) +007062 +Depth below sea/water surface +Operational + + +1706 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306001 +(Depth, temperature) +022042 +Sea/water temperature +Operational + + +1711 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306002 +(Current) +002031 +Duration and time of current measurement +Operational + + +1712 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306002 +(Current) +022004 +Direction of current +Operational + + +1713 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306002 +(Current) +022031 +Speed of current +Operational + + +1714 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306003 +(Surface wind and temperature) +002002 +Type of instrumentation for wind measurement +Operational + + +1715 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306003 +(Surface wind and temperature) +011011 +Wind direction at 10 m +Operational + + +1716 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306003 +(Surface wind and temperature) +011012 +Wind speed at 10 m +Operational + + +1717 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306003 +(Surface wind and temperature) +012004 +Air temperature at 2 m +Operational + + +1718 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306004 +(Depth, temperature, salinity) +002032 +Indicator for digitization +Operational + + +1719 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306004 +(Depth, temperature, salinity) +002033 +Method of salinity/depth measurement +Operational + + +1720 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306004 +(Depth, temperature, salinity) +103000 +Delayed replication of 3 descriptors +Operational + + +1721 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306004 +(Depth, temperature, salinity) +031001 +Delayed descriptor replication factor +Operational + + +1722 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306004 +(Depth, temperature, salinity) +007062 +Depth below sea/water surface +Operational + + +1723 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306004 +(Depth, temperature, salinity) +022043 +Sea/water temperature +Operational + + +1724 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306004 +(Depth, temperature, salinity) +022062 +Salinity +Operational + + +1731 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306005 +002031 +Duration and time of current measurement +Operational + + +1732 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306005 +103000 +Delayed replication of 3 descriptors +Operational + + +1733 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306005 +031001 +Delayed descriptor replication factor +Operational + + +1734 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306005 +007062 +Depth below sea/water surface +Operational + + +1735 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306005 +022004 +Direction of current +Operational + + +1736 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306005 +022031 +Speed of current +Operational + + +1742 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306006 +(Under water sounding (optional) parameters) +306003 +Surface wind and temperature +Operational + + +1743 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306006 +(Under water sounding (optional) parameters) +306002 +Current +Operational + + +1744 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306006 +(Under water sounding (optional) parameters) +022063 +Total water depth +Operational + + +1745 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306007 +(Buoy spare block parameters) +001012 +Direction of motion of moving observing platform +Operational + + +1746 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306007 +(Buoy spare block parameters) +001014 +Platform drift speed (high precision) +Operational + + +1747 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306007 +(Buoy spare block parameters) +306008 +Buoy instrumentation parameters +Operational + + +1748 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306007 +(Buoy spare block parameters) +004024 +Time period or displacement +Operational + + +1749 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306007 +(Buoy spare block parameters) +027003 +Alternate latitude (coarse accuracy) +Operational + + +1750 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306007 +(Buoy spare block parameters) +028003 +Alternate longitude (coarse accuracy) +Operational + + +1751 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306008 +(Buoy instrumentation parameters) +002034 +Drogue type +Operational + + +1752 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306008 +(Buoy instrumentation parameters) +002035 +Cable length +Operational + + +1753 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306008 +(Buoy instrumentation parameters) +002036 +Buoy type +Operational + + +1754 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306011 +(Sequence for representation of tide station identification, method of transmission, time the message is transmitted and reference time for reports in a time series) +301021 +Latitude/longitude (high accuracy) +Operational + + +1755 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306011 +(Sequence for representation of tide station identification, method of transmission, time the message is transmitted and reference time for reports in a time series) +001075 +Tide station identification +Alphanumeric ID (5 characters) +Operational + + +1756 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306011 +(Sequence for representation of tide station identification, method of transmission, time the message is transmitted and reference time for reports in a time series) +002147 +Method of transmission to collection centre +Operational + + +1757 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306011 +(Sequence for representation of tide station identification, method of transmission, time the message is transmitted and reference time for reports in a time series) +301011 +Year, month, day +Operational + + +1758 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306011 +(Sequence for representation of tide station identification, method of transmission, time the message is transmitted and reference time for reports in a time series) +301013 +Hour, minute, second +Operational + + +1759 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306012 +(Sequence for representation of sensor type, significant qualifier for sensor and status of operation) +002007 +Type of sensor for water level measuring instrument +Operational + + +1760 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306012 +(Sequence for representation of sensor type, significant qualifier for sensor and status of operation) +008015 +Significant qualifier for sensor +Operational + + +1761 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306012 +(Sequence for representation of sensor type, significant qualifier for sensor and status of operation) +008032 +Status of operation +Operational + + +1762 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306012 +(Sequence for representation of sensor type, significant qualifier for sensor and status of operation) +306029 +Sequence for representation of tsunameter sampling information for water column heights in the time series report +Operational + + +1763 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +306012 +Sequence for representation of sensor type, significant qualifier for sensor and status of operation +Operational + + +1764 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +301011 +Year, month, day +Reference date for the time series +Operational + + +1765 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +301013 +Hour, minute, second +Reference time for the time series +Operational + + +1766 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +022120 +Tide station automated water level check +Operational + + +1767 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +022121 +Tide station manual water level check +Operational + + +1768 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +004015 +Time increment +Added to reset the reference time +Operational + + +1769 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +004065 +Short time increment +Added to each data value in the time series +Operational + + +1770 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +102000 +Delayed replication of 2 descriptors +Operational + + +1771 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +031001 +Delayed descriptor replication factor +Operational + + +1772 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +022038 +Tidal elevation with respect to local chart datum +Operational + + +1773 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +022040 +Meteorological residual tidal elevation (surge or offset) +Operational + + +1784 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +306012 +Sequence for representation of sensor type, significant qualifier for sensor and status of operation +Operational + + +1785 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +301011 +Year, month, day +Reference date for the time series +Operational + + +1786 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +301013 +Hour, minute, second +Reference time for the time series +Operational + + +1787 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +022120 +Tide station automated water level check +Operational + + +1788 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +022121 +Tide station manual water level check +Operational + + +1789 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +004015 +Time increment +Added to reset the reference time +Operational + + +1790 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +004065 +Short time increment +Added to each data value in the time series +Operational + + +1791 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +101000 +Delayed replication of 1 descriptor +Operational + + +1792 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +031001 +Delayed descriptor replication factor +Operational + + +1793 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +022038 +Tidal elevation with respect to local chart datum +Operational + + +1803 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +301011 +Year, month, day +Reference date for the time series +Operational + + +1804 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +301013 +Hour, minute, second +Reference time for the time series +Operational + + +1805 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +010004 +Pressure +Station level +Operational + + +1806 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +010051 +Pressure reduced to mean sea level +Operational + + +1807 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +302032 +Temperature and humidity data +Operational + + +1808 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +1809 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +002002 +Type of instrumentation for wind measurement +Operational + + +1810 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +008021 +Time significance += 2 Time averaged +Operational + + +1811 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +004025 +Time period or displacement +E.g. = 1 for 1 minute, = 10 for 10 minutes +Operational + + +1812 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +011001 +Wind direction +Operational + + +1813 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +011002 +Wind speed +Operational + + +1814 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +004025 +Time period or displacement +In minutes +Operational + + +1815 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +011043 +Maximum wind gust direction +Operational + + +1816 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +011041 +Maximum wind gust speed +Operational + + +1817 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +025026 +Battery voltage (large range) +AWS battery voltage +Operational + + +1818 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +012060 +AWS enclosure internal temperature +Operational + + +1819 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +002032 +Indicator for digitization += 0 Fixed sensor depths +Operational + + +1820 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008034 +Temperature/salinity measurement qualifier +Operational + + +1821 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +106000 +Delayed replication of 6 descriptors +Operational + + +1822 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +031002 +Extended delayed descriptor replication factor +Number of depths +Operational + + +1823 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +007065 +Water pressure +In Pa +Operational + + +1824 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008080 +Qualifier for GTSPP quality flag +Operational + + +1825 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +033050 +Global GTSPP quality flag +Operational + + +1826 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +022045 +Sea/water temperature +In K to 3 decimal places +Operational + + +1827 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008080 +Qualifier for GTSPP quality flag +Operational + + +1828 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +033050 +Global GTSPP quality flag +Operational + + +1829 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008034 +Temperature/salinity measurement qualifier +Set to missing (cancel) +Operational + + +1830 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +002032 +Indicator for digitization += 0 Fixed sensor depths +Operational + + +1831 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008034 +Temperature/salinity measurement qualifier +Operational + + +1832 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +109000 +Delayed replication of 9 descriptors +Operational + + +1833 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +031002 +Extended delayed descriptor replication factor +Number of depths +Operational + + +1834 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +007065 +Water pressure +In Pa +Operational + + +1835 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008080 +Qualifier for GTSPP quality flag +Operational + + +1836 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +033050 +Global GTSPP quality flag +Operational + + +1837 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +022045 +Sea/water temperature +In K to 3 decimal places +Operational + + +1838 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008080 +Qualifier for GTSPP quality flag +Operational + + +1839 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +033050 +Global GTSPP quality flag +Operational + + +1840 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +022064 +Salinity +Operational + + +1841 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008080 +Qualifier for GTSPP quality flag +Operational + + +1842 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +033050 +Global GTSPP quality flag +Operational + + +1843 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008034 +Temperature/salinity measurement qualifier +Set to missing (cancel) +Operational + + +1844 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +001075 +Tide station identification +Alphanumeric +Operational + + +1845 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +301011 +Year, month, day +Operational + + +1846 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +301012 +Hour, minute +Operational + + +1847 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +022042 +Sea/water temperature +Operational + + +1848 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +022120 +Tide station automated water level check +Operational + + +1849 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +022121 +Tide station manual water level check +Operational + + +1850 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +004015 +Time increment +Minutes +(see Note 1) +Operational + + +1851 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +004065 +Short time increment +Operational + + +1861 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) (see Note 2) +001075 +Tide station identification +Alphanumeric +Operational + + +1862 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) +301011 +Year, month, day +Operational + + +1863 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) +301012 +Hour, minute +Operational + + +1864 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) +022042 +Sea/water temperature +Operational + + +1865 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) +022120 +Tide station automated water level check +Operational + + +1866 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) +022121 +Tide station manual water level check +Operational + + +1867 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) +004075 +Short time period or displacement +Operational + + +1868 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) +004065 +Short time increment +Operational + + +1869 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306021 +(Meteorological parameters in tide station) +001075 +Tide station identification +Alphanumeric +Operational + + +1870 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306021 +(Meteorological parameters in tide station) +301011 +Year, month, day +Operational + + +1871 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306021 +(Meteorological parameters in tide station) +301012 +Hour, minute +Operational + + +1872 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306021 +(Meteorological parameters in tide station) +022122 +Tide station automated meteorological data check +Operational + + +1873 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306021 +(Meteorological parameters in tide station) +022123 +Tide station manual meteorological data check +Operational + + +1874 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306021 +(Meteorological parameters in tide station) +012001 +Temperature/air temperature +Operational + + +1875 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306021 +(Meteorological parameters in tide station) +303002 +Wind at pressure level +Operational + + +1876 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306022 +(Tidal elevation) +001075 +Tide station identification +Operational + + +1877 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306022 +(Tidal elevation) +301011 +Year, month, day +Operational + + +1878 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306022 +(Tidal elevation) +301012 +Hour, minute +Operational + + +1879 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306022 +(Tidal elevation) +022038 +Tidal elevation with respect to local chart datum +Operational + + +1880 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306022 +(Tidal elevation) +022039 +Meteorological residual tidal elevation (surge or offset) +Operational + + +1881 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +001015 +Station or site name +Operational + + +1882 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +301023 +Latitude/longitude (coarse accuracy) +Operational + + +1883 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +301011 +Year, month, day +Operational + + +1884 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +301012 +Hour, minute +Operational + + +1885 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +022038 +Tidal elevation with respect to local chart datum +Operational + + +1886 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +022039 +Meteorological residual tidal elevation (surge or offset) +Operational + + +1887 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +022120 +Tide station automated water level check +Operational + + +1888 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +022121 +Tide station manual water level check +Operational + + +1889 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306024 +(Tide elevation series) (see Note 3) +306020 +Tide report identification, water level checks, time period or displacement, time increment +Operational + + +1890 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306024 +(Tide elevation series) +102006 +Replicate 2 descriptors 6 times +Operational + + +1891 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306024 +(Tide elevation series) +022038 +Tidal elevation with respect to local chart datum +Operational + + +1892 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306024 +(Tide elevation series) +022039 +Meteorological residual tidal elevation (surge or offset) +Operational + + +1893 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306025 +(Tide elevation series) +306019 +Tide report identification, water level checks, time increments +Operational + + +1894 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306025 +(Tide elevation series) +102006 +Replicate 2 descriptors 6 times +Operational + + +1895 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306025 +(Tide elevation series) +022038 +Tidal elevation with respect to local chart datum +Operational + + +1896 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306025 +(Tide elevation series) +022039 +Meteorological residual tidal elevation (surge or offset) +Operational + + +1897 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306027 +(Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system) +001005 +Buoy/platform identifier +Operational + + +1898 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306027 +(Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system) +001052 +Platform transmitter ID +Operational + + +1899 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306027 +(Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system) +002047 +Deep-ocean tsunameter type +Operational + + +1900 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306027 +(Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system) +301011 +Year, month, day +Time the message is transmitted to the ground system +Operational + + +1901 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306027 +(Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system) +301013 +Hour, minute, second +Operational + + +1902 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306028 +(Sequence for representation of time of observation and DART buoy position daily report) +306027 +Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system +Operational + + +1903 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306028 +(Sequence for representation of time of observation and DART buoy position daily report) +301011 +Year, month, day +Observation time +Operational + + +1904 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306028 +(Sequence for representation of time of observation and DART buoy position daily report) +301013 +Hour, minute, second +Operational + + +1905 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306028 +(Sequence for representation of time of observation and DART buoy position daily report) +301021 +Latitude/longitude (high accuracy) +Operational + + +1906 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306029 +(Sequence for representation of tsunameter sampling information for water column heights in the time series report) +025170 +Sampling interval (time) +Seconds +Operational + + +1907 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306029 +(Sequence for representation of tsunameter sampling information for water column heights in the time series report) +025171 +Sample averaging period +Seconds +Operational + + +1908 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306029 +(Sequence for representation of tsunameter sampling information for water column heights in the time series report) +025172 +Number of samples +Operational + + +1909 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +306027 +Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system +Operational + + +1910 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +306029 +Sequence for representation of tsunameter sampling information for water column heights in the time series report +Operational + + +1911 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +111000 +Delayed replication of 11 descriptors +Operational + + +1912 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +031001 +Delayed descriptor replication factor +Operational + + +1913 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +033002 +Quality information +Message status +Operational + + +1914 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +301011 +Year, month, day +Reference date/time for the time series +Operational + + +1915 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +301013 +Hour, minute, second +Operational + + +1916 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +025025 +Battery voltage +BPR CPU +Operational + + +1917 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +025025 +Battery voltage +Acoustic modem DSP +Operational + + +1918 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +025026 +Battery voltage (large range) +Acoustic modem +Operational + + +1919 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +022185 +BPR transmission count +Operational + + +1920 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +004015 +Time increment +Added to reset the reference time +Operational + + +1921 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +004065 +Short time increment +Added to each data value in the time series +Operational + + +1922 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +101004 +Replicate 1 descriptor 4 times +Operational + + +1923 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +022182 +Water column height +Operational + + +1938 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +306027 +Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system +Operational + + +1939 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +306029 +Sequence for representation of tsunameter sampling information for water column heights in the time series report +Operational + + +1940 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +001053 +Tsunameter report sequence number triggered by a tsunami event +Operational + + +1941 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +033002 +Quality information +Message status +Operational + + +1942 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +301011 +Year, month, day +Time when tsunami is detected +Operational + + +1943 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +301013 +Hour, minute, second +Operational + + +1944 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +301011 +Year, month, day +Reference date/time for the time series +Operational + + +1945 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +301013 +Hour, minute, second +Operational + + +1946 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +022185 +BPR transmission count +Operational + + +1947 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +022182 +Water column height +Determination of actual value reported in the time series +Operational + + +1948 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +004016 +Time increment +Added to reset the reference time +Operational + + +1949 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +004066 +Short time increment +Added to each data value in the time series +Operational + + +1950 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +101000 +Delayed replication of 1 descriptor +Operational + + +1951 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +031001 +Delayed descriptor replication factor +Operational + + +1952 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +022184 +Water column height deviation from the reference value +Operational + + +1967 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306033 +(Surface salinity) +002033 +Method of salinity/depth measurement +Operational + + +1968 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306033 +(Surface salinity) +007063 +Depth below sea/water surface (cm) +Operational + + +1969 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306033 +(Surface salinity) +022064 +Salinity +Operational + + +1970 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306034 +(Surface current) +002031 +Duration and time of current measurement +Operational + + +1971 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306034 +(Surface current) +003010 +Method of sea/water current measurement +Operational + + +1972 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306034 +(Surface current) +002040 +Method of removing velocity and motion of platform from current +Operational + + +1973 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306034 +(Surface current) +022005 +Direction of sea-surface current +Operational + + +1974 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306034 +(Surface current) +022032 +Speed of sea-surface current +Operational + + +1975 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +112000 +Delayed replication of 12 descriptors +Operational + + +1976 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +031002 +Extended delayed descriptor replication factor +Operational + + +1977 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +007062 +Depth below sea/water surface +In metres +Operational + + +1978 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +008080 +Qualifier for GTSPP quality flag += 13 Depth at a level +Operational + + +1979 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +033050 +Global GTSPP quality flag +Operational + + +1980 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +007065 +Water pressure +Operational + + +1981 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +008080 +Qualifier for GTSPP quality flag += 10 Pressure at a level +Operational + + +1982 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +033050 +Global GTSPP quality flag +Operational + + +1983 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +022043 +Sea/water temperature +Operational + + +1984 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +008080 +Qualifier for GTSPP quality flag += 11 Temperature at a level +Operational + + +1985 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +033050 +Global GTSPP quality flag +Operational + + +1986 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +022064 +Salinity += 12 Salinity at a level +Operational + + +1987 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +008080 +Qualifier for GTSPP quality flag +Operational + + +1988 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +033050 +Global GTSPP quality flag +Operational + + +1990 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +112000 +Delayed replication of 12 descriptors +Operational + + +1991 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +031002 +Extended delayed descriptor replication factor +Operational + + +1992 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +007062 +Depth below sea/water surface +In metres +Operational + + +1993 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +008080 +Qualifier for GTSPP quality flag += 13 Depth at a level +Operational + + +1994 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +033050 +Global GTSPP quality flag +Operational + + +1995 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +007065 +Water pressure +Operational + + +1996 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +008080 +Qualifier for GTSPP quality flag += 10 Pressure at a level +Operational + + +1997 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +033050 +Global GTSPP quality flag +Operational + + +1998 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +022031 +Speed of current +Operational + + +1999 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +008080 +Qualifier for GTSPP quality flag += 14 Current speed at a level +Operational + + +2000 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +033050 +Global GTSPP quality flag +Operational + + +2001 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +022004 +Direction of current +Operational + + +2002 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +008080 +Qualifier for GTSPP quality flag += 15 Current direction at a level +Operational + + +2003 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +033050 +Global GTSPP quality flag +Operational + + +2005 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +109000 +Delayed replication of 9 descriptors +Operational + + +2006 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +031002 +Extended delayed descriptor replication factor +Operational + + +2007 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +007062 +Depth below sea / water surface +Operational + + +2008 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +008080 +Qualifier for GTSPP quality flag += 13 Depth at a level +Operational + + +2009 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +033050 +Global GTSPP quality flag +Operational + + +2010 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +007065 +Water pressure +Operational + + +2011 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +008080 +Qualifier for GTSPP quality flag += 10 Pressure at a level +Operational + + +2012 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +033050 +Global GTSPP quality flag +Operational + + +2013 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +022188 +Dissolved oxygen +Operational + + +2014 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +008080 +Qualifier for GTSPP quality flag += 16 Dissolved oxygen at a level +Operational + + +2015 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +033050 +Global GTSPP quality flag +Operational + + +2017 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +010004 +Pressure +Operational + + +2018 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +010051 +Pressure reduced to mean sea level +Operational + + +2019 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +007033 +Height of sensor above water surface +Height of air temperature/humidity sensor +Operational + + +2020 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +012101 +Temperature/air temperature +At observation height +Operational + + +2021 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +012103 +Dewpoint temperature +At observation height +Operational + + +2022 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +013003 +Relative humidity +With respect to water at all temperatures +Operational + + +2023 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +007033 +Height of sensor above water surface +Height of wind speed sensor +Operational + + +2024 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +008021 +Time significance +=2 Time averaged +Operational + + +2025 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +004025 +Time period or displacement +Period over which winds are averaged +Operational + + +2026 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +011001 +Wind direction +At observation height +Operational + + +2027 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +011002 +Wind speed +At observation height +Operational + + +2028 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +008021 +Time significance +Set to missing (cancel) +Operational + + +2029 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +004025 +Time period or displacement +Time period over which maximum gust observed +Operational + + +2030 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +011041 +Maximum wind gust speed +Operational + + +2031 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +004025 +Time period or displacement +Set to missing (cancel) +Operational + + +2032 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +2033 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +002005 +Precision of temperature observation +Operational + + +2034 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +007063 +Depth below sea/water surface (cm) +Operational + + +2035 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +022049 +Sea-surface temperature +Operational + + +2036 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306039 +(Sequence for representation of basic wave measurements) +022078 +Duration of wave record +Operational + + +2037 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306039 +(Sequence for representation of basic wave measurements) +022070 +Significant wave height +Operational + + +2038 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306039 +(Sequence for representation of basic wave measurements) +022073 +Maximum wave height +Operational + + +2039 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306039 +(Sequence for representation of basic wave measurements) +022074 +Average wave period +Operational + + +2040 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306039 +(Sequence for representation of basic wave measurements) +022071 +Spectral peak wave period +Operational + + +2041 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306039 +(Sequence for representation of basic wave measurements) +022076 +Direction from which dominant waves are coming +Operational + + +2042 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306039 +(Sequence for representation of basic wave measurements) +022077 +Directional spread of dominant wave +Operational + + +2043 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022078 +Duration of wave record +Operational + + +2044 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022082 +Maximum non-directional spectral wave density +Operational + + +2045 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +106000 +Delayed replication of 6 descriptors +Operational + + +2046 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +031001 +Delayed descriptor replication factor +Number of frequency bins +Operational + + +2047 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022080 +Waveband central frequency +Operational + + +2048 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022069 +Spectral wave density +Operational + + +2049 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022086 +Mean direction from which waves are coming +Operational + + +2050 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022087 +Principal direction from which waves are coming +Operational + + +2051 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022088 +First normalized polar coordinate from Fourier coefficients +Operational + + +2052 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022089 +Second normalized polar coordinate from Fourier coefficients +Operational + + +2062 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306041 +(Depth and temperature profile (high accuracy/precision)) +002032 +Indicator for digitization += 0 Fixed sensor depths +Operational + + +2063 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306041 +(Depth and temperature profile (high accuracy/precision)) +102000 +Delayed replication of 2 descriptors +Operational + + +2064 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306041 +(Depth and temperature profile (high accuracy/precision)) +031001 +Delayed descriptor replication factor +Number of depths +Operational + + +2065 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306041 +(Depth and temperature profile (high accuracy/precision)) +007062 +Depth below sea/water surface +Operational + + +2066 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306041 +(Depth and temperature profile (high accuracy/precision)) +022043 +Sea/water temperature +Operational + + +2071 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306042 +(Wind measurement from drifting buoy) +002169 +Anemometer type +E.g. = 2 WOTAN, = 3 Sonic anemometer +Operational + + +2072 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306042 +(Wind measurement from drifting buoy) +007033 +Height of sensor above water surface +Height of anemometer above water surface or effective height for WOTAN +Operational + + +2073 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306042 +(Wind measurement from drifting buoy) +008021 +Time significance += 2 Time averaged +Operational + + +2074 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306042 +(Wind measurement from drifting buoy) +004025 +Time period or displacement +Averaging period in minutes +Operational + + +2075 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306042 +(Wind measurement from drifting buoy) +011001 +Wind direction +At measurement height +Operational + + +2076 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306042 +(Wind measurement from drifting buoy) +011002 +Wind speed +At measurement height +Operational + + +2077 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +041001 +pCO2 +Operational + + +2078 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +008043 +Atmospheric chemical or physical constituent type +Set to 3 (carbon dioxide) +Operational + + +2079 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +015028 +Mole fraction of atmospheric constituent/pollutant in dry air +Operational + + +2080 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +008043 +Atmospheric chemical or physical constituent type +Cancel +Operational + + +2081 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +013080 +Water pH +Operational + + +2082 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +041005 +Turbidity +Operational + + +2083 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +041003 +Dissolved nitrates +Operational + + +2084 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +022188 +Dissolved oxygen +Operational + + +2085 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +041002 +Fluorescence +Operational + + +2086 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +106000 +Delayed replication of 6 descriptors +Operational + + +2087 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +031000 +Short delayed replication factor +Operational + + +2088 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +004024 +Time period or displacement (hours) +Set to -1 (preceding hour) +Operational + + +2089 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +014002 +Long-wave radiation, integrated over period specified +Downwelling long-wave radiation +Operational + + +2090 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +014002 +Long-wave radiation, integrated over period specified +Upwelling long-wave radiation +Operational + + +2091 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +014012 +Net long-wave radiation, integrated over period specified +Operational + + +2092 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +014004 +Short-wave radiation, integrated over period specified +Operational + + +2093 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +004024 +Time period or displacement (hours) +Cancel +Operational + + +2140 +07 +Surface report sequences (land) +307001 +(Low altitude station) +301031 +Identification and type of station, date/time, location (high accuracy), height of station +Operational + + +2141 +07 +Surface report sequences (land) +307001 +(Low altitude station) +302011 +Low altitude station +Basic surface report +Operational + + +2142 +07 +Surface report sequences (land) +307002 +(Low altitude station) +301032 +Identification and type of station, date/time, location (coarse accuracy), height of station +Operational + + +2143 +07 +Surface report sequences (land) +307002 +(Low altitude station) +302011 +Low altitude station +Basic surface report +Operational + + +2144 +07 +Surface report sequences (land) +307003 +(Low altitude station) +307001 +Low altitude station +Location (high accuracy) and basic report +Operational + + +2145 +07 +Surface report sequences (land) +307003 +(Low altitude station) +101000 +Delayed replication of 1 descriptor +Operational + + +2146 +07 +Surface report sequences (land) +307003 +(Low altitude station) +031001 +Delayed descriptor replication factor +Operational + + +2147 +07 +Surface report sequences (land) +307003 +(Low altitude station) +302005 +Cloud layer +Operational + + +2151 +07 +Surface report sequences (land) +307004 +(Low altitude station) +307002 +Low altitude station +Location (coarse accuracy) and basic report +Operational + + +2152 +07 +Surface report sequences (land) +307004 +(Low altitude station) +101000 +Delayed replication of 1 descriptor +Operational + + +2153 +07 +Surface report sequences (land) +307004 +(Low altitude station) +031001 +Delayed descriptor replication factor +Operational + + +2154 +07 +Surface report sequences (land) +307004 +(Low altitude station) +302005 +Cloud layer +Operational + + +2158 +07 +Surface report sequences (land) +307005 +(Low altitude station) +307001 +Low altitude station +Location (high accuracy) and basic report +Operational + + +2159 +07 +Surface report sequences (land) +307005 +(Low altitude station) +101004 +Replicate 1 descriptor 4 times +Operational + + +2160 +07 +Surface report sequences (land) +307005 +(Low altitude station) +302005 +Cloud layer +4 layers +Operational + + +2161 +07 +Surface report sequences (land) +307006 +(Low altitude station) +307002 +Low altitude station +Location (coarse accuracy) and basic report +Operational + + +2162 +07 +Surface report sequences (land) +307006 +(Low altitude station) +101004 +Replicate 1 descriptor 4 times +Operational + + +2163 +07 +Surface report sequences (land) +307006 +(Low altitude station) +302005 +Cloud layer +4 layers +Operational + + +2164 +07 +Surface report sequences (land) +307007 +(High altitude station) +301031 +Identification and type of station, date/time, location (high accuracy), height of station +Operational + + +2165 +07 +Surface report sequences (land) +307007 +(High altitude station) +302012 +High altitude station +Basic surface report +Operational + + +2166 +07 +Surface report sequences (land) +307008 +(High altitude station) +301032 +Identification and type of station, date/time, location (coarse accuracy), height of station +Operational + + +2167 +07 +Surface report sequences (land) +307008 +(High altitude station) +302012 +High altitude station +Basic surface report +Operational + + +2168 +07 +Surface report sequences (land) +307009 +301031 +Identification and type of station, date/time, location (high accuracy), height of station +Operational + + +2169 +07 +Surface report sequences (land) +307009 +302013 +Basic surface report +Operational + + +2170 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +001063 +ICAO location indicator +Operational + + +2171 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +002001 +Type of station +Operational + + +2172 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +301011 +Year, month, day +YY +Operational + + +2173 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +301012 +Hour, minute +GG, gg +Operational + + +2174 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +2175 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +007006 +Height above station +Height of an anemometer +Operational + + +2176 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +011001 +Wind direction +Operational + + +2177 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +011016 +Extreme counterclockwise wind direction of a variable wind +Operational + + +2178 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +011017 +Extreme clockwise wind direction of a variable wind +Operational + + +2179 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +011002 +Wind speed +Operational + + +2180 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +011041 +Maximum wind gust speed +Operational + + +2181 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +007006 +Height above station +Height of a thermometer +Operational + + +2182 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +012001 +Temperature/air temperature +Operational + + +2183 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +012003 +Dewpoint temperature +Operational + + +2184 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +010052 +Altimeter setting (QNH) +Operational + + +2185 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +020009 +General weather indicator (TAF/METAR) +Operational + + +2186 +07 +Surface report sequences (land) +307012 +(Horizontal visibility) +103000 +Delayed replication of 3 descriptors +Operational + + +2187 +07 +Surface report sequences (land) +307012 +(Horizontal visibility) +031001 +Delayed descriptor replication factor +Up to 3 +Operational + + +2188 +07 +Surface report sequences (land) +307012 +(Horizontal visibility) +008023 +First-order statistics +Operational + + +2189 +07 +Surface report sequences (land) +307012 +(Horizontal visibility) +005021 +Bearing or azimuth +Direction of visibility observed +Operational + + +2190 +07 +Surface report sequences (land) +307012 +(Horizontal visibility) +020001 +Horizontal visibility +Operational + + +2195 +07 +Surface report sequences (land) +307013 +(Runway visual range) +106000 +Delayed replication of 6 descriptors +Operational + + +2196 +07 +Surface report sequences (land) +307013 +(Runway visual range) +031001 +Delayed descriptor replication factor +Up to 4 +Operational + + +2197 +07 +Surface report sequences (land) +307013 +(Runway visual range) +001064 +Runway designator +Operational + + +2198 +07 +Surface report sequences (land) +307013 +(Runway visual range) +008014 +Qualifier for runway visual range +Operational + + +2199 +07 +Surface report sequences (land) +307013 +(Runway visual range) +020061 +Runway visual range (RVR) +Operational + + +2200 +07 +Surface report sequences (land) +307013 +(Runway visual range) +008014 +Qualifier for runway visual range +Operational + + +2201 +07 +Surface report sequences (land) +307013 +(Runway visual range) +020061 +Runway visual range (RVR) +Operational + + +2202 +07 +Surface report sequences (land) +307013 +(Runway visual range) +020018 +Tendency of runway visual range +Operational + + +2210 +07 +Surface report sequences (land) +307014 +(Significant present or forecast weather) +101000 +Delayed replication of 1 descriptor +Operational + + +2211 +07 +Surface report sequences (land) +307014 +(Significant present or forecast weather) +031001 +Delayed descriptor replication factor +Up to 3 +Operational + + +2212 +07 +Surface report sequences (land) +307014 +(Significant present or forecast weather) +020019 +Significant present or forecast weather +Operational + + +2215 +07 +Surface report sequences (land) +307015 +(Clouds group(s)) +101000 +Delayed replication of 1 descriptor +Operational + + +2216 +07 +Surface report sequences (land) +307015 +(Clouds group(s)) +031001 +Delayed descriptor replication factor +Operational + + +2217 +07 +Surface report sequences (land) +307015 +(Clouds group(s)) +302005 +Cloud layer +NsNsNs, CC, hshshs +Operational + + +2218 +07 +Surface report sequences (land) +307015 +(Clouds group(s)) +020002 +Vertical visibility +Operational + + +2222 +07 +Surface report sequences (land) +307016 +(Significant recent weather phenomena) +101000 +Delayed replication of 1 descriptor +Operational + + +2223 +07 +Surface report sequences (land) +307016 +(Significant recent weather phenomena) +031001 +Delayed descriptor replication factor +Up to 3 +Operational + + +2224 +07 +Surface report sequences (land) +307016 +(Significant recent weather phenomena) +020020 +Significant recent weather phenomena +Operational + + +2227 +07 +Surface report sequences (land) +307017 +(Wind shear on runway(s)) +101000 +Delayed replication of 1 descriptor +Operational + + +2228 +07 +Surface report sequences (land) +307017 +(Wind shear on runway(s)) +031001 +Delayed descriptor replication factor +Operational + + +2229 +07 +Surface report sequences (land) +307017 +(Wind shear on runway(s)) +011070 +Designator of the runway affected by wind shear (including ALL) +Operational + + +2232 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +Operational + + +2233 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +102000 +Delayed replication of 2 descriptors +Operational + + +2234 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +031001 +Delayed descriptor replication factor +Up to 2 +Operational + + +2235 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +008017 +Qualifier of the time when the forecast change is expected +FM, TL, AT +Operational + + +2236 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +301012 +Hour, minute +GG, gg +Operational + + +2237 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +104000 +Delayed replication of 4 descriptors +Operational + + +2238 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +031001 +Delayed descriptor replication factor +Up to 1 +Operational + + +2239 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +007006 +Height above station +Operational + + +2240 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +011001 +Wind direction +Operational + + +2241 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +011002 +Wind speed +Operational + + +2242 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +011041 +Maximum wind gust speed +Operational + + +2243 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +020009 +General weather indicator (TAF/METAR) +Operational + + +2244 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +101000 +Delayed replication of 1 descriptor +Operational + + +2245 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +031001 +Delayed descriptor replication factor +Up to 1 +Operational + + +2246 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +020001 +Horizontal visibility +Operational + + +2247 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +307014 +Significant present or forecast weather +w´w´ +Operational + + +2261 +07 +Surface report sequences (land) +307020 +(Short METAR/SPECI) +307011 +Main part of data for representation of METAR/SPECI code in BUFR +Operational + + +2262 +07 +Surface report sequences (land) +307020 +(Short METAR/SPECI) +307014 +Significant present or forecast weather +w´w´ +Operational + + +2263 +07 +Surface report sequences (land) +307020 +(Short METAR/SPECI) +307016 +Significant recent weather phenomena +REw´w´ +Operational + + +2264 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307011 +Main part of data for representation of METAR/SPECI code in BUFR +Operational + + +2265 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307012 +Horizontal visibility +DvVVVV +Operational + + +2266 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307013 +Runway visual range +DRDR/VRVRVRVR +Operational + + +2267 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307014 +Significant present or forecast weather +w´w´ +Operational + + +2268 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307015 +Clouds group(s) +Operational + + +2269 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307016 +Significant recent weather phenomena +REw´w´ +Operational + + +2270 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307017 +Wind shear on runway(s) +Operational + + +2271 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307018 +Trend-type landing forecast +Operational + + +2272 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307015 +Clouds group(s) +Operational + + +2273 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +001015 +Station or site name +Operational + + +2274 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +301011 +Year, month, day +Operational + + +2275 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +301012 +Hour, minute +Operational + + +2276 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +301022 +Latitude/longitude (high accuracy), height of station +Operational + + +2277 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +008021 +Time significance += 23 Monitoring period +Operational + + +2278 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +004025 +Time period or displacement +Operational + + +2279 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +010004 +Pressure +Operational + + +2280 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +012001 +Temperature/air temperature +Operational + + +2281 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +013003 +Relative humidity +Operational + + +2282 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +033038 +Quality flags for ground-based GNSS data +Operational + + +2283 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +008022 +Total number (with respect to accumulation or average) +Number of GNSS satellites used +Operational + + +2284 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +106025 +Replicate 6 descriptors 25 times +Operational + + +2285 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +002020 +Satellite classification +Operational + + +2286 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +001050 +Platform transmitter ID number +Operational + + +2287 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +005021 +Bearing or azimuth +Operational + + +2288 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +007021 +Elevation +Operational + + +2289 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015031 +Atmospheric path delay in satellite signal +Operational + + +2290 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015032 +Estimated error in atmospheric path delay +Operational + + +2291 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +008060 +Sample scanning mode significance += 5 North/South +Operational + + +2292 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015033 +Difference in path delays for limb views at extremes of scan +Operational + + +2293 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015034 +Estimated error in path delay difference +Operational + + +2294 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +008060 +Sample scanning mode significance += 6 East/West +Operational + + +2295 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015033 +Difference in path delays for limb views at extremes of scan +Operational + + +2296 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015034 +Estimated error in path delay difference +Operational + + +2297 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015035 +Component of zenith path delay due to water vapour +Operational + + +2298 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +201131 +Change data width +Operational + + +2299 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +202129 +Change scale +Operational + + +2300 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +013016 +Precipitable water +Operational + + +2301 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +202000 +Change scale +Cancel +Operational + + +2302 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +201000 +Change data width +Cancel +Operational + + +2303 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015011 +Log10 of integrated electron density +Operational + + +2305 +07 +Surface report sequences (land) +307030 +(Ozone data - single observation) +015001 +Total ozone +Operational + + +2306 +07 +Surface report sequences (land) +307030 +(Ozone data - single observation) +015002 +Air mass (slant path at 22 km) +Operational + + +2307 +07 +Surface report sequences (land) +307031 +(Ozone data - averaged observations) +008022 +Total number (with respect to accumulation or average) +Number of measurements +Operational + + +2308 +07 +Surface report sequences (land) +307031 +(Ozone data - averaged observations) +008023 +First-order statistics += 4 Mean value +Operational + + +2309 +07 +Surface report sequences (land) +307031 +(Ozone data - averaged observations) +015001 +Total ozone +Average value of ozone measurement +Operational + + +2310 +07 +Surface report sequences (land) +307031 +(Ozone data - averaged observations) +008023 +First-order statistics += 9 Best estimate of standard deviation +Operational + + +2311 +07 +Surface report sequences (land) +307031 +(Ozone data - averaged observations) +015001 +Total ozone +Best estimate of standard deviation of the ozone measurement +Operational + + +2312 +07 +Surface report sequences (land) +307031 +(Ozone data - averaged observations) +008023 +First-order statistics += 11 Harmonic mean +Operational + + +2313 +07 +Surface report sequences (land) +307031 +(Ozone data - averaged observations) +015002 +Air mass (slant path at 22 km) +Harmonic mean value of the air-mass +Operational + + +2314 +07 +Surface report sequences (land) +307041 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation) +301001 +WMO block and station numbers +Operational + + +2315 +07 +Surface report sequences (land) +307041 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation) +001015 +Station or site name +Operational + + +2316 +07 +Surface report sequences (land) +307041 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +2317 +07 +Surface report sequences (land) +307041 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation) +301011 +Year, month, day +Ozone measurement +Operational + + +2318 +07 +Surface report sequences (land) +307041 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation) +301012 +Hour, minute +Ozone measurement +Operational + + +2319 +07 +Surface report sequences (land) +307041 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation) +301070 +Ozone instrumentation - Brewer spectrophotometer +Operational + + +2320 +07 +Surface report sequences (land) +307041 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation) +307030 +Ozone data - single observation +Operational + + +2321 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +301001 +WMO block and station numbers +Operational + + +2322 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +001015 +Station or site name +Operational + + +2323 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +2324 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +301011 +Year, month, day +Ozone measurement +Operational + + +2325 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +301012 +Hour, minute +Ozone measurement +Operational + + +2326 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +008021 +Time significance += 8 Ensemble mean +Operational + + +2327 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +004025 +Time period or displacement +Time period (minutes) for the computation of the average +Operational + + +2328 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +301070 +Ozone instrumentation - Brewer spectrophotometer +Operational + + +2329 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +307031 +Ozone data - averaged observations +Operational + + +2330 +07 +Surface report sequences (land) +307043 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation) +301001 +WMO block and station numbers +Operational + + +2331 +07 +Surface report sequences (land) +307043 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation) +001015 +Station or site name +Operational + + +2332 +07 +Surface report sequences (land) +307043 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +2333 +07 +Surface report sequences (land) +307043 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation) +301011 +Year, month, day +Ozone measurement +Operational + + +2334 +07 +Surface report sequences (land) +307043 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation) +301012 +Hour, minute +Ozone measurement +Operational + + +2335 +07 +Surface report sequences (land) +307043 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation) +301074 +Ozone instrumentation - Dobson spectrophotometer +Operational + + +2336 +07 +Surface report sequences (land) +307043 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation) +307030 +Ozone data - single observation +Operational + + +2337 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +301001 +WMO block and station numbers +Operational + + +2338 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +001015 +Station or site name +Operational + + +2339 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +2340 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +301011 +Year, month, day +Ozone measurement +Operational + + +2341 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +301012 +Hour, minute +Ozone measurement +Operational + + +2342 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +008021 +Time significance += 8 Ensemble mean +Operational + + +2343 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +004025 +Time period or displacement +Time period (minutes) for the computation of the average +Operational + + +2344 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +301074 +Ozone instrumentation - Dobson spectrophotometer +Operational + + +2345 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +307031 +Ozone data - averaged observations +Operational + + +2346 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +001063 +ICAO location indicator +CCCC +Operational + + +2347 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +008079 +Product status +METAR SPECI COR +Operational + + +2348 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +002001 +Type of station +AUTO +Operational + + +2349 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +301011 +Year, month, day +YY +Operational + + +2350 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +301012 +Hour, minute +GGgg +Operational + + +2351 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +301023 +Latitude/longitude (coarse accuracy) +Operational + + +2352 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +007030 +Height of station ground above mean sea level +Operational + + +2353 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +007031 +Height of barometer above mean sea level +Operational + + +2354 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +007032 +Height of sensor above local ground (or deck of marine platform) += 10 m (if the actual value is not available) +Operational + + +2355 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011001 +Wind direction +ddd +Operational + + +2356 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011016 +Extreme counterclockwise wind direction of a variable wind +dndndn +Operational + + +2357 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011017 +Extreme clockwise wind direction of a variable wind +dxdxdx +Operational + + +2358 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +008054 +Qualifier for wind speed or wind gusts +P +Operational + + +2359 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011083 +Wind speed +ff - km/h +(see Note 1) +Operational + + +2360 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011084 +Wind speed +ff - kt +(see Note 1) +Operational + + +2361 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011002 +Wind speed +ff - m/s +(see Note 1) +Operational + + +2362 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +008054 +Qualifier for wind speed or wind gusts +P +Operational + + +2363 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011085 +Maximum wind gust speed +fmfm - km/h +(see Note 2) +Operational + + +2364 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011086 +Maximum wind gust speed +fmfm - kt +(see Note 2) +Operational + + +2365 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011041 +Maximum wind gust speed +fmfm - m/s +(see Note 2) +Operational + + +2366 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +008054 +Qualifier for wind speed or wind gusts +Set to missing (cancel) +Operational + + +2367 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +007032 +Height of sensor above local ground (or deck of marine platform) += 2 m (if the actual value is not available) +Operational + + +2368 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +012023 +Temperature +T'T' - Celsius +Operational + + +2369 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +012024 +Dewpoint temperature +T'dT'd - Celsius +Operational + + +2370 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2371 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +010052 +Altimeter setting (QNH) +QPHPHPHPH +Operational + + +2372 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +020009 +General weather indicator (TAF/METAR) +CAVOK +Operational + + +2373 +07 +Surface report sequences (land) +307046 +(METAR/SPECI visibility) +020060 +Prevailing horizontal visibility +VVVV or VVVVNDV +Operational + + +2374 +07 +Surface report sequences (land) +307046 +(METAR/SPECI visibility) +102000 +Delayed replication of 2 descriptors +Operational + + +2375 +07 +Surface report sequences (land) +307046 +(METAR/SPECI visibility) +031001 +Delayed descriptor replication factor +Up to 2 +Operational + + +2376 +07 +Surface report sequences (land) +307046 +(METAR/SPECI visibility) +005021 +Bearing or azimuth +Direction of minimum visibility observed Dv +Operational + + +2377 +07 +Surface report sequences (land) +307046 +(METAR/SPECI visibility) +020059 +Minimum horizontal visibility +VNVNVNVN +Operational + + +2382 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +105000 +Delayed replication of 5 descriptors +Operational + + +2383 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +031001 +Delayed descriptor replication factor +Operational + + +2384 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +008002 +Vertical significance (surface observations) +Operational + + +2385 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +020011 +Cloud amount +NsNsNs +Operational + + +2386 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +020012 +Cloud type +CC +Operational + + +2387 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +020013 +Height of base of cloud +hshshs - m +Operational + + +2388 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +020092 +Height of base of cloud +hshshs - ft +Operational + + +2389 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +020002 +Vertical visibility +VVhshshs - m +Operational + + +2390 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +020091 +Vertical visibility +VVhshshs - ft +Operational + + +2399 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +TTTTT NOSIG +Operational + + +2400 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +102000 +Delayed replication of 2 descriptors +Operational + + +2401 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +031001 +Delayed descriptor replication factor += 0, 1 or 2 +Operational + + +2402 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +008017 +Qualifier of the time when the forecast change is expected +TT +Operational + + +2403 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +301012 +Hour, minute +GGgg +Operational + + +2404 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +112000 +Delayed replication of 12 descriptors +Operational + + +2405 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +031000 +Short delayed descriptor replication factor += 0 or 1 +Operational + + +2406 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +007032 +Height of sensor above local ground (or deck of marine platform) += 10 m (if the actual value is not available) +Operational + + +2407 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +011001 +Wind direction +ddd +Operational + + +2408 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +008054 +Qualifier for wind speed or wind gusts +P +Operational + + +2409 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +011083 +Wind speed +ff - km/h +(see Note 1) +Operational + + +2410 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +011084 +Wind speed +ff - kt +(see Note 1) +Operational + + +2411 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +011002 +Wind speed +ff - m/s +(see Note 1) +Operational + + +2412 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +008054 +Qualifier for wind speed or wind gusts +P +Operational + + +2413 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +011085 +Maximum wind gust speed +fmfm - km/h +(see Note 2) +Operational + + +2414 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +011086 +Maximum wind gust speed +fmfm - kt +(see Note 2) +Operational + + +2415 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +011041 +Maximum wind gust speed +fmfm - m/s +(see Note 2) +Operational + + +2416 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +008054 +Qualifier for wind speed or wind gusts +Set to missing (cancel) +Operational + + +2417 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2418 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +020009 +General weather indicator (TAF/METAR) +CAVOK NSW NSC +Operational + + +2419 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +101000 +Delayed replication of 1 descriptor +Operational + + +2420 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +031000 +Short delayed descriptor replication factor += 0 or 1 +Operational + + +2421 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +020060 +Prevailing horizontal visibility +VVVV +Operational + + +2422 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +307014 +Significant present and forecast weather +Weather intensity and phenomena w´w´ +Operational + + +2423 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +307047 +METAR/SPECI/TAF clouds, replacing 3 07 015 +NsNsNshshshs +Operational + + +2446 +07 +Surface report sequences (land) +307049 +(Sea conditions) +102000 +Delayed replication of 2 descriptors +Operational + + +2447 +07 +Surface report sequences (land) +307049 +(Sea conditions) +031000 +Short delayed descriptor replication factor += 0 or 1 +Operational + + +2448 +07 +Surface report sequences (land) +307049 +(Sea conditions) +022043 +Sea/water temperature +TsTs +Operational + + +2449 +07 +Surface report sequences (land) +307049 +(Sea conditions) +022021 +Height of waves + +Operational + + +2453 +07 +Surface report sequences (land) +307050 +(Runway state) +101000 +Delayed replication of 1 descriptor +Operational + + +2454 +07 +Surface report sequences (land) +307050 +(Runway state) +031000 +Short delayed descriptor replication factor += 0 or 1 +Operational + + +2455 +07 +Surface report sequences (land) +307050 +(Runway state) +020085 +General condition of runway +SNOCLO +Operational + + +2456 +07 +Surface report sequences (land) +307050 +(Runway state) +102000 +Delayed replication of 2 descriptors +Operational + + +2457 +07 +Surface report sequences (land) +307050 +(Runway state) +031001 +Delayed descriptor replication factor +Operational + + +2458 +07 +Surface report sequences (land) +307050 +(Runway state) +001064 +Runway designator +DRDR +Operational + + +2459 +07 +Surface report sequences (land) +307050 +(Runway state) +020085 +General condition of runway +CLRD// +Operational + + +2460 +07 +Surface report sequences (land) +307050 +(Runway state) +105000 +Delayed replication of 5 descriptors +Operational + + +2461 +07 +Surface report sequences (land) +307050 +(Runway state) +031001 +Delayed descriptor replication factor +Operational + + +2462 +07 +Surface report sequences (land) +307050 +(Runway state) +001064 +Runway designator +DRDR +Operational + + +2463 +07 +Surface report sequences (land) +307050 +(Runway state) +020086 +Runway deposits +ER +Operational + + +2464 +07 +Surface report sequences (land) +307050 +(Runway state) +020087 +Runway contamination +CR +Operational + + +2465 +07 +Surface report sequences (land) +307050 +(Runway state) +020088 +Depth of runway deposits +eReR +Operational + + +2466 +07 +Surface report sequences (land) +307050 +(Runway state) +020089 +Runway friction coefficient +BRBR +Operational + + +2478 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307045 +Main part of METAR/SPECI, replacing 3 07 011 +Operational + + +2479 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307046 +METAR/SPECI visibility +VVVV or VVVVNDV VNVNVNVNDV +Operational + + +2480 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307013 +Runway visual range +RDRDR/VRVRVRVR +Operational + + +2481 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307014 +Significant present and forecast weather +Weather intensity and phenomena w´w´ +Operational + + +2482 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307047 +METAR/SPECI/TAF clouds, replacing 3 07 015 +NsNsNshshshs +Operational + + +2483 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307016 +Significant recent weather phenomena +REw´w´ +Operational + + +2484 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307017 +Wind shear on runway(s) +WS RDRDR +Operational + + +2485 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307049 +Sea conditions +WTsTs/SS’ +Operational + + +2486 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307050 +Runway state +RDRDR/ERCReReRBRBR +Operational + + +2487 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +101000 +Delayed replication of 1 descriptor +Operational + + +2488 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +031001 +Delayed descriptor replication factor += 0 to 3 normally +Operational + + +2489 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307048 +Trend type forecast, replacing 3 07 018 +Operational + + +2501 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +001063 +ICAO location indicator +CCCC +Operational + + +2502 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +008039 +Time significance (aviation forecast) += 0 Issue time of forecast +Operational + + +2503 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +301011 +Year, month, day +YY +Operational + + +2504 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +301012 +Hour, minute +GGgg +Operational + + +2505 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +008079 +Product status +COR CNL AMD NIL +Operational + + +2506 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +008039 +Time significance (aviation forecast) += 1 Time of commencement of period of the forecast +Operational + + +2507 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +301011 +Year, month, day +Y1Y1 +Operational + + +2508 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +301012 +Hour, minute +G1G1 +Operational + + +2509 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +008039 +Time significance (aviation forecast) += 2 Time of ending of period of the forecast +Operational + + +2510 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +301011 +Year, month, day +Y2Y2 +Operational + + +2511 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +301012 +Hour, minute +G2G2 +Operational + + +2512 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +2513 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +007030 +Height of station ground above mean sea level +Operational + + +2514 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +007031 +Height of barometer above mean sea level +Operational + + +2515 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +007032 +Height of sensor above local ground (or deck of marine platform) += 10 m (if the actual value is not available) +Operational + + +2516 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +011001 +Wind direction +ddd +Operational + + +2517 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +008054 +Qualifier for wind speed or wind gusts +P +Operational + + +2518 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +011083 +Wind speed +ff - km/h +(see Note 1) +Operational + + +2519 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +011084 +Wind speed +ff - kt +(see Note 1) +Operational + + +2520 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +011002 +Wind speed +ff - m/s +(see Note 1) +Operational + + +2521 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +008054 +Qualifier for wind speed or wind gusts +P +Operational + + +2522 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +011085 +Maximum wind gust speed +fmfm - km/h +(see Note 2) +Operational + + +2523 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +011086 +Maximum wind gust speed +fmfm - kt +(see Note 2) +Operational + + +2524 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +011041 +Maximum wind gust speed +fmfm - m/s +(see Note 2) +Operational + + +2525 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +008054 +Qualifier for wind speed or wind gusts +Set to missing (cancel) +Operational + + +2526 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2527 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +020009 +General weather indicator (TAF/METAR) +CAVOK NSW NSC +Operational + + +2528 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +020060 +Prevailing horizontal visibility +VVVV +Operational + + +2529 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +307014 +Significant present and forecast weather +w´w´ +Operational + + +2530 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +307047 +METAR/SPECI/TAF clouds, replacing 3 07 015 +NsNsNshshshs +Operational + + +2531 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +007032 +Height of sensor above local ground (or deck of marine platform) += 2 m (if the actual value is not available) +Operational + + +2532 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +008039 +Time significance (aviation forecast) += 3 Forecast time of maximum temperature +Operational + + +2533 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +004003 +Day +Operational + + +2534 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +004004 +Hour +GFGF +Operational + + +2535 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +008023 +First-order statistics += 3 Minimum +Operational + + +2536 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +012023 +Temperature +TFTF - Celsius +Operational + + +2537 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +008039 +Time significance (aviation forecast) += 4 Forecast time of minimum temperature +Operational + + +2538 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +004003 +Day +Operational + + +2539 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +004004 +Hour +GFGF +Operational + + +2540 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +008023 +First-order statistics += 2 Maximum +Operational + + +2541 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +012023 +Temperature +TFTF - Celsius +Operational + + +2542 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +008023 +First-order statistics +Set to missing (cancel) +Operational + + +2543 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2544 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +033045 +Probability of following event +C2C2 +Operational + + +2545 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +TTTTTT +Operational + + +2546 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +008039 +Time significance (aviation forecast) += 5 Time of beginning of the forecast change +Operational + + +2547 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +004003 +Day +Operational + + +2548 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +301012 +Hour, minute +GGgg +Operational + + +2549 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +008039 +Time significance (aviation forecast) += 6 Time of ending of the forecast change +Operational + + +2550 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +004003 +Day +Operational + + +2551 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +301012 +Hour, minute +GeGe +Operational + + +2552 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +307053 +Forecast weather at an aerodrome +During or after change +Operational + + +2553 +07 +Surface report sequences (land) +307056 +(Aerodrome forecast - full TAF) +307052 +Aerodrome forecast identification and time interval +Operational + + +2554 +07 +Surface report sequences (land) +307056 +(Aerodrome forecast - full TAF) +307053 +Forecast weather at an aerodrome +Operational + + +2555 +07 +Surface report sequences (land) +307056 +(Aerodrome forecast - full TAF) +307054 +Forecast of extreme temperatures +Operational + + +2556 +07 +Surface report sequences (land) +307056 +(Aerodrome forecast - full TAF) +101000 +Delayed replication of 1 descriptor +Operational + + +2557 +07 +Surface report sequences (land) +307056 +(Aerodrome forecast - full TAF) +031001 +Delayed descriptor replication factor +Operational + + +2558 +07 +Surface report sequences (land) +307056 +(Aerodrome forecast - full TAF) +307055 +Change indicator and forecast changes +Operational + + +2564 +07 +Surface report sequences (land) +307060 +(Soil temperature below land surface) +007061 +Depth below land surface +Operational + + +2565 +07 +Surface report sequences (land) +307060 +(Soil temperature below land surface) +012030 +Soil temperature +Operational + + +2566 +07 +Surface report sequences (land) +307061 +(Soil temperature data at number of depths not exceeding five - high accuracy position) +301031 +Identification and type of station, date/time, location (high accuracy), height of station +Operational + + +2567 +07 +Surface report sequences (land) +307061 +(Soil temperature data at number of depths not exceeding five - high accuracy position) +101005 +Replicate 1 descriptor 5 times +Operational + + +2568 +07 +Surface report sequences (land) +307061 +(Soil temperature data at number of depths not exceeding five - high accuracy position) +307060 +Soil temperature below land surface +Operational + + +2569 +07 +Surface report sequences (land) +307062 +(Soil temperature data at number of depths not exceeding five - coarse accuracy position) +301032 +Identification and type of station, date/time, location (coarse accuracy), height of station +Operational + + +2570 +07 +Surface report sequences (land) +307062 +(Soil temperature data at number of depths not exceeding five - coarse accuracy position) +101005 +Replicate 1 descriptor 5 times +Operational + + +2571 +07 +Surface report sequences (land) +307062 +(Soil temperature data at number of depths not exceeding five - coarse accuracy position) +307060 +Soil temperature below land surface +Operational + + +2572 +07 +Surface report sequences (land) +307063 +(Depth below land surface and soil temperature) +007061 +Depth below land surface +Operational + + +2573 +07 +Surface report sequences (land) +307063 +(Depth below land surface and soil temperature) +012130 +Soil temperature +Scale: 2 +Operational + + +2574 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +301090 +Surface station identification; time, horizontal and vertical coordinates +(see Note 3) +Operational + + +2575 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +004074 +Short time period or displacement += UTC - LT +(see Note 3) +Operational + + +2576 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +004023 +Time period or displacement +Number of days in the month +Operational + + +2577 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +008023 +First-order statistics += 4 Mean value +Operational + + +2578 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +010004 +Pressure +Operational + + +2579 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +010051 +Pressure reduced to mean sea level +Operational + + +2580 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +007004 +Pressure +Standard level | Set to missing for lowland stations +Operational + + +2581 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +010009 +Geopotential height +Standard level | Set to missing for lowland stations +Operational + + +2582 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 4) +Operational + + +2583 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012101 +Temperature/air temperature +Operational + + +2584 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +002051 +Indicator to specify observing method for extreme temperatures +Operational + + +2585 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +004051 +Principal time of daily reading of maximum temperature +Operational + + +2586 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012118 +Maximum temperature at height specified, past 24 hours +Operational + + +2587 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +004052 +Principal time of daily reading of minimum temperature +Operational + + +2588 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012119 +Minimum temperature at height specified, past 24 hours +Operational + + +2589 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +013004 +Vapour pressure +Operational + + +2590 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +008023 +First-order statistics +Set to missing +Operational + + +2591 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012151 +Standard deviation of daily mean temperature +Operational + + +2592 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2593 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +102005 +Replicate 2 descriptors 5 times +Operational + + +2594 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +008050 +Qualifier for number of missing values in calculation of statistic += 1 Pressure, = 2 Temperature, = 4 Vapour pressure, = 7 Maximum temperature, = 8 Minimum temperature +Operational + + +2595 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +2596 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Sunshine duration +014032 +Total sunshine +Operational + + +2597 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Sunshine duration +014033 +Total sunshine +Operational + + +2598 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Sunshine duration +008050 +Qualifier for number of missing values in calculation of statistic += 6 Sunshine duration +Operational + + +2599 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Sunshine duration +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +2600 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Number of days of occurrence +102018 +Replicate 2 descriptors 18 times +Operational + + +2601 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Number of days of occurrence +008052 +Condition for which number of days of occurrence follows +Operational + + +2602 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Number of days of occurrence +008022 +Total number (with respect to accumulation or average) +Days +Operational + + +2603 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 4) +Operational + + +2604 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2605 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2606 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +012152 +Highest daily mean temperature +Operational + + +2607 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2608 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2609 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +012153 +Lowest daily mean temperature +Operational + + +2610 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2611 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2612 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008023 +First-order statistics += 2 Maximum value +Operational + + +2613 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +012101 +Temperature/air temperature +Operational + + +2614 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2615 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2616 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008023 +First-order statistics += 3 Minimum value +Operational + + +2617 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +012101 +Temperature/air temperature +Operational + + +2618 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008023 +First-order statistics +Set to missing +Operational + + +2619 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 4) +Operational + + +2620 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +002002 +Type of instrumentation for wind measurement +Operational + + +2621 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2622 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2623 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +011046 +Maximum instantaneous wind speed +Operational + + +2624 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier +Set to missing (cancel) +Operational + + +2625 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +004003 +Day += 1 +(see Note 5) +Operational + + +2626 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +004004 +Hour += 6 +(see Note 5) +Operational + + +2627 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +004023 +Time period or displacement +Number of days in the month +(see Note 5) +Operational + + +2628 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 4) +Operational + + +2629 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +013060 +Total accumulated precipitation +Operational + + +2630 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +013051 +Frequency group, precipitation +Operational + + +2631 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +2632 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +008050 +Qualifier for number of missing values in calculation of statistic += 5 Precipitation +Operational + + +2633 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +2634 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Number of days of occurrence +102006 +Replicate 2 descriptors 6 times +Operational + + +2635 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Number of days of occurrence +008052 +Condition for which number of days of occurrence follows +Operational + + +2636 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Number of days of occurrence +008022 +Total number (with respect to accumulation or average) +Days +Operational + + +2637 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme precipitation +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2638 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme precipitation +004003 +Day +Operational + + +2639 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme precipitation +013052 +Highest daily amount of precipitation +Operational + + +2640 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2641 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +004001 +Year +Beginning of the reference period +Operational + + +2642 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +004001 +Year +Ending of the reference period +Operational + + +2643 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +004002 +Month +Operational + + +2644 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +004003 +Day += 1 +(see Note 3) +Operational + + +2645 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +004004 +Hour += 0 +(see Note 3) +Operational + + +2646 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +004074 +Short time period or displacement += UTC - LT +(see Note 3) +Operational + + +2647 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +004022 +Time period or displacement += 1 +Operational + + +2648 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +008023 +First-order statistics += 4 Mean value +Operational + + +2649 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +010004 +Pressure +Operational + + +2650 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +010051 +Pressure reduced to mean sea level +Operational + + +2651 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +007004 +Pressure +Standard level +Operational + + +2652 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +010009 +Geopotential height +Standard level +Operational + + +2653 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 4) +Operational + + +2654 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +012101 +Temperature/air temperature +Operational + + +2655 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +002051 +Indicator to specify observing method for extreme temperatures += 2 +Operational + + +2656 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +004051 +Principal time of daily reading of maximum temperature +Operational + + +2657 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +012118 +Maximum temperature at height specified, past 24 hours +Operational + + +2658 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +004052 +Principal time of daily reading of minimum temperature +Operational + + +2659 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +012119 +Minimum temperature at height specified, past 24 hours +Operational + + +2660 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +013004 +Vapour pressure +Operational + + +2661 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +012151 +Standard deviation of daily mean temperature +Operational + + +2662 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2663 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normal of sunshine duration +014032 +Total sunshine +Operational + + +2664 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normal of sunshine duration +008023 +First-order statistics +Set to missing +Operational + + +2665 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +004001 +Year +Beginning of the reference period +Operational + + +2666 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +004001 +Year +Ending of the reference period +Operational + + +2667 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +004002 +Month +Operational + + +2668 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +004003 +Day += 1 +(see Note 5) +Operational + + +2669 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +004004 +Hour += 6 +(see Note 5) +Operational + + +2670 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +004022 +Time period or displacement += 1 +Operational + + +2671 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 4) +Operational + + +2672 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +008023 +First-order statistics += 4 Mean value +Operational + + +2673 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +013060 +Total accumulated precipitation +Operational + + +2674 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +2675 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +008023 +First-order statistics +Set to missing +Operational + + +2676 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +102008 +Replicate 2 descriptors 8 times +Operational + + +2677 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +008050 +Qualifier for number of missing values in calculation of statistic += 1 Pressure, = 2 Temperature, = 3 Extreme temperature, = 4 Vapour pressure, = 5 Precipitation, = 6 Sunshine duration, = 7 Maximum temperature, = 8 Minimum temperature +(see Note 6) +Operational + + +2678 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +008020 +Total number of missing entities (with respect to accumulation or average) +Years +(see Note 6) +Operational + + +2679 +07 +Surface report sequences (land) +307073 +(Representation of CLIMAT data of the actual month and for monthly normals) +307071 +Monthly values of a land station +Operational + + +2680 +07 +Surface report sequences (land) +307073 +(Representation of CLIMAT data of the actual month and for monthly normals) +307072 +Monthly normals for a land station +Operational + + +2681 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +301001 +WMO block and station numbers +Operational + + +2682 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +004001 +Year +Operational + + +2683 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +004002 +Month +Operational + + +2684 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +301021 +Latitude/longitude (high accuracy) +Operational + + +2685 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +007030 +Height of station ground above mean sea level +Operational + + +2686 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2687 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +112000 +Delayed replication of 12 descriptors +Operational + + +2688 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +031001 +Delayed descriptor replication factor +Set to the number of days in the particular month for which data are being reported +Operational + + +2689 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +004003 +Day +Operational + + +2690 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +004004 +Hour +Operational + + +2691 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +004024 +Time period or displacement +Typically set to -24 to denote the time period beginning 24 hours prior to and ending at the specified time +Operational + + +2692 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +102003 +Replicate 2 descriptors 3 times +Operational + + +2693 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +008023 +First-order statistics += 2 Daily maximum temperature, = 3 Daily minimum temperature, = 4 Daily mean temperature +Operational + + +2694 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +012101 +Temperature/air temperature +Operational + + +2695 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +008023 +First-order statistics +Set to missing (cancel) +Operational + + +2696 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +004004 +Hour +Operational + + +2697 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +004024 +Time period or displacement +Operational + + +2698 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +013060 +Total accumulated precipitation +Operational + + +2699 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +013012 +Depth of fresh snow +Operational + + +2700 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +013013 +Total snow depth +Operational + + +2702 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2703 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +004074 +Short time period or displacement +Operational + + +2704 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +004023 +Time period or displacement +Number of days in the month +Operational + + +2705 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +008023 +First-order statistics += 4 Mean value +Operational + + +2706 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +010004 +Pressure +Operational + + +2707 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +010051 +Pressure reduced to mean sea level +Operational + + +2708 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +007004 +Pressure +Standard level | Set to missing for lowland stations +Operational + + +2709 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +010009 +Geopotential height +Standard level | Set to missing for lowland stations +Operational + + +2710 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2711 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012101 +Temperature/air temperature +Operational + + +2712 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +002051 +Indicator to specify observing method for extreme temperatures +Operational + + +2713 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +004051 +Principal time of daily reading of maximum temperature +Operational + + +2714 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012118 +Maximum temperature at height specified, past 24 hours +Operational + + +2715 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +004052 +Principal time of daily reading of minimum temperature +Operational + + +2716 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012119 +Minimum temperature at height specified, past 24 hours +Operational + + +2717 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +013004 +Vapour pressure +Operational + + +2718 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +008023 +First-order statistics +Set to missing (cancel) +Operational + + +2719 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012151 +Standard deviation of daily mean temperature +Operational + + +2720 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2721 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days for which values are missing +102005 +Replicate 2 descriptors 5 times +Operational + + +2722 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days for which values are missing +008050 +Qualifier for number of missing values in calculation of statistic += 1 Pressure, = 2 Temperature, = 4 Vapour pressure, = 7 Maximum temperature, = 8 Minimum temperature +Operational + + +2723 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days for which values are missing +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +2724 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Sunshine duration +014032 +Total sunshine +Operational + + +2725 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Sunshine duration +014033 +Total sunshine +Operational + + +2726 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Sunshine duration +008050 +Qualifier for number of missing values in calculation of statistic += 6 Sunshine duration +Operational + + +2727 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Sunshine duration +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +2728 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days of occurrence +102018 +Replicate 2 descriptors 18 times +Operational + + +2729 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days of occurrence +008052 +Condition for which number of days of occurrence follows +Wind >= 10 m/s, wind >= 20 m/s, wind >= 30 m/s, maximum temperature < 273.15 K, maximum temperature >= 298.15 K, maximum temperature >= 303.15 K, maximum temperature >= 308.15 K, maximum temperature >= 313.15 K, minimum temperature < 273.15 K, sss > 0.00 m, sss > 0.01 m, sss > 0.10 m, sss > 0.50 m, horizontal visibility < 50 m, horizontal visibility < 100 m, horizontal visibility < 1 000 m, hail, thunderstorm +Operational + + +2730 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days of occurrence +008022 +Total number (with respect to accumulation or average) +Days +Operational + + +2731 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2732 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2733 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2734 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +012152 +Highest daily mean temperature +Operational + + +2735 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2736 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2737 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +012153 +Lowest daily mean temperature +Operational + + +2738 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2739 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2740 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008023 +First-order statistics += 2 Maximum value +Operational + + +2741 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +012101 +Temperature/air temperature +Operational + + +2742 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2743 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2744 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008023 +First-order statistics += 3 Minimum value +Operational + + +2745 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +012101 +Temperature/air temperature +Operational + + +2746 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008023 +First-order statistics +Set to missing (cancel) +Operational + + +2747 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2748 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +002002 +Type of instrumentation for wind measurement +Operational + + +2749 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2750 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2751 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +011046 +Maximum instantaneous wind speed +Operational + + +2752 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier +Set to missing (cancel) +Operational + + +2753 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +004003 +Day += 1 +Operational + + +2754 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +004004 +Hour += 0 +Operational + + +2755 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +004074 +Short time period or displacement +Operational + + +2756 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +004023 +Time period or displacement +Number of days in the month +Operational + + +2757 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2758 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +013060 +Total accumulated precipitation +Operational + + +2759 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +013051 +Frequency group, precipitation +Operational + + +2760 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +2761 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +008050 +Qualifier for number of missing values in calculation of statistic += 5 Precipitation +Operational + + +2762 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +2763 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days of occurrence +102006 +Replicate 2 descriptors 6 times +Operational + + +2764 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days of occurrence +008052 +Condition for which number of days of occurrence follows +Operational + + +2765 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days of occurrence +008022 +Total number (with respect to accumulation or average) +Days +Operational + + +2766 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme precipitation +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2767 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme precipitation +004003 +Day +Operational + + +2768 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme precipitation +013052 +Highest daily amount of precipitation +Operational + + +2769 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2770 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004001 +Year +Beginning of the reference period +Operational + + +2771 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004001 +Year +Ending of the reference period +Operational + + +2772 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004002 +Month +Operational + + +2773 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004003 +Day += 1 +Operational + + +2774 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004004 +Hour += 0 +Operational + + +2775 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004074 +Short time period or displacement +Operational + + +2776 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004022 +Time period or displacement += 1 +Operational + + +2777 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +008023 +First-order statistics += 4 Mean value +Operational + + +2778 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +010004 +Pressure +Operational + + +2779 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +010051 +Pressure reduced to mean sea level +Operational + + +2780 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +007004 +Pressure +Standard level +Operational + + +2781 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +010009 +Geopotential height +Standard level +Operational + + +2782 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2783 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +012101 +Temperature/air temperature +Operational + + +2784 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +002051 +Indicator to specify observing method for extreme temperatures +Operational + + +2785 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004051 +Principal time of daily reading of maximum temperature +Operational + + +2786 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +012118 +Maximum temperature at height specified, past 24 hours +Operational + + +2787 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004052 +Principal time of daily reading of minimum temperature +Operational + + +2788 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +012119 +Minimum temperature at height specified, past 24 hours +Operational + + +2789 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +013004 +Vapour pressure +Operational + + +2790 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +012151 +Standard deviation of daily mean temperature +Operational + + +2791 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2792 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +014032 +Total sunshine +Operational + + +2793 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +008023 +First-order statistics +Set to missing (cancel) +Operational + + +2794 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004001 +Year +Beginning of the reference period +Operational + + +2795 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004001 +Year +Ending of the reference period +Operational + + +2796 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004002 +Month +Operational + + +2797 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004003 +Day += 1 +Operational + + +2798 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004004 +Hour += 0 +Operational + + +2799 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004074 +Short time period or displacement +Operational + + +2800 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004022 +Time period or displacement += 1 +Operational + + +2801 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2802 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +008023 +First-order statistics += 4 Mean value +Operational + + +2803 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +013060 +Total accumulated precipitation +Operational + + +2804 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +2805 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +008023 +First-order statistics +Set to missing (cancel) +Operational + + +2806 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +102008 +Replicate 2 descriptors 8 times +Operational + + +2807 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +008050 +Qualifier for number of missing values in calculation of statistic +Pressure, temperature, extreme temperatures, vapour pressure, precipitation, sunshine duration, maximum temperature, minimum temperature +Operational + + +2808 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +008020 +Total number of missing entities (with respect to accumulation or average) +Years +Operational + + +2809 +07 +Surface report sequences (land) +307078 +(Sequence for representation of monthly values suitable for CLIMAT data in compliance with regional or national reporting practices) +307076 +Monthly values from a land station in compliance with regional or national reporting practices +Operational + + +2810 +07 +Surface report sequences (land) +307078 +(Sequence for representation of monthly values suitable for CLIMAT data in compliance with regional or national reporting practices) +307077 +Monthly normals for a land station in compliance with regional or national reporting practices +Operational + + +2811 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2812 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302031 +Pressure information +Operational + + +2813 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302035 +Basic synoptic "instantaneous" data +Operational + + +2814 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302036 +Clouds with bases below station level +Operational + + +2815 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +101000 +Delayed replication of 1 descriptor +Operational + + +2816 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +031000 +Short delayed descriptor replication factor +Operational + + +2817 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302047 +Direction of cloud drift +Operational + + +2818 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +008002 +Vertical significance (surface observations) +Operational + + +2819 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +101000 +Delayed replication of 1 descriptor +Operational + + +2820 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +031000 +Short delayed descriptor replication factor +Operational + + +2821 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302048 +Direction and elevation of cloud +Operational + + +2822 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2823 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +102000 +Delayed replication of 2 descriptors +Operational + + +2824 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +031000 +Short delayed descriptor replication factor +Operational + + +2825 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +022061 +State of the sea +Operational + + +2826 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +020058 +Visibility seawards from a coastal station +Operational + + +2827 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +101000 +Delayed replication of 1 descriptor +Operational + + +2828 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +031000 +Short delayed descriptor replication factor +Operational + + +2829 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302056 +Sea/water temperature +Sea/water surface temperature, method of measurement, depth below water surface +Operational + + +2830 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +101000 +Delayed replication of 1 descriptor +Operational + + +2831 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +031000 +Short delayed descriptor replication factor +Operational + + +2832 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302055 +Icing and ice +Operational + + +2833 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302043 +Basic synoptic "period" data +Operational + + +2834 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302044 +Evaporation data +Operational + + +2835 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +101000 +Delayed replication of 1 descriptor +Operational + + +2836 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +031001 +Delayed descriptor replication factor +Operational + + +2837 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2838 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +101000 +Delayed replication of 1 descriptor +Operational + + +2839 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +031000 +Short delayed descriptor replication factor +Operational + + +2840 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302046 +Temperature change +Operational + + +2864 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2865 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302031 +Pressure information +Operational + + +2866 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302035 +Basic synoptic "instantaneous" data +Operational + + +2867 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302036 +Clouds with bases below station level +Operational + + +2868 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302047 +Direction of cloud drift +Operational + + +2869 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +008002 +Vertical significance (surface observations) +Operational + + +2870 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302048 +Direction and elevation of cloud +Operational + + +2871 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2872 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302043 +Basic synoptic "period" data +Operational + + +2873 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302044 +Evaporation data +Operational + + +2874 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +101002 +Replicate 1 descriptor 2 times +Operational + + +2875 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2876 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302046 +Temperature change +Operational + + +2877 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2878 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302031 +Pressure information +Operational + + +2879 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302035 +Basic synoptic "instantaneous" data +Operational + + +2880 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302036 +Clouds with bases below station level +Operational + + +2881 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302047 +Direction of cloud drift +Operational + + +2882 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +2883 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302048 +Direction and elevation of cloud +Operational + + +2884 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2885 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +012122 +Ground minimum temperature of the preceding night +Operational + + +2886 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +013056 +Character and intensity of precipitation +Operational + + +2887 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +013057 +Time of beginning or end of precipitation +Operational + + +2888 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020101 +Locust (acridian) name +Operational + + +2889 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020102 +Locust (maturity) colour +Operational + + +2890 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020103 +Stage of development of locusts +Operational + + +2891 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020104 +Organization state of swarm or band of locusts +Operational + + +2892 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020105 +Size of swarm or band of locusts and duration of passage of swarm +Operational + + +2893 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020106 +Locust population density +Operational + + +2894 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020107 +Direction of movements of locust swarm +Operational + + +2895 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020108 +Extent of vegetation +Operational + + +2896 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302043 +Basic synoptic "period" data +Operational + + +2897 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302044 +Evaporation data +Operational + + +2898 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +101002 +Replicate 1 descriptor 2 times +Operational + + +2899 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2900 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302046 +Temperature change +Operational + + +2901 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2902 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302031 +Pressure information +Operational + + +2903 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302035 +Basic synoptic "instantaneous" data +Operational + + +2904 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302036 +Clouds with bases below station level +Operational + + +2905 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302047 +Direction of cloud drift +Operational + + +2906 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +2907 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302048 +Direction and elevation of cloud +Operational + + +2908 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2909 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +012121 +Ground minimum temperature +At the time of observation +Operational + + +2910 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +012122 +Ground minimum temperature of the preceding night +Operational + + +2911 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302043 +Basic synoptic "period" data +Operational + + +2912 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302044 +Evaporation data +Operational + + +2913 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +101002 +Replicate 1 descriptor 2 times +Operational + + +2914 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2915 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302046 +Temperature change +Operational + + +2916 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2917 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302031 +Pressure information +Operational + + +2918 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302035 +Basic synoptic "instantaneous" data +Operational + + +2919 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302036 +Clouds with bases below station level +Operational + + +2920 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302047 +Direction of cloud drift +Operational + + +2921 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +2922 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302048 +Direction and elevation of cloud +Operational + + +2923 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2924 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +012122 +Ground minimum temperature of the preceding night +Operational + + +2925 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302043 +Basic synoptic "period" data +Operational + + +2926 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302044 +Evaporation data +Operational + + +2927 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +101002 +Replicate 1 descriptor 2 times +Operational + + +2928 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2929 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302046 +Temperature change +Operational + + +2930 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2931 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302031 +Pressure information +Operational + + +2932 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302035 +Basic synoptic "instantaneous" data +Operational + + +2933 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302036 +Clouds with bases below station level +Operational + + +2934 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302047 +Direction of cloud drift +Operational + + +2935 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +2936 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302048 +Direction and elevation of cloud +Operational + + +2937 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2938 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +020055 +State of sky in the tropics +Operational + + +2939 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +101000 +Delayed replication of 1 descriptor +Operational + + +2940 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +031001 +Delayed descriptor replication factor +Operational + + +2941 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +205001 +Signify character +Character field of 1 character +Operational + + +2942 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302043 +Basic synoptic "period" data +Operational + + +2943 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302044 +Evaporation data +Operational + + +2944 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +101002 +Replicate 1 descriptor 2 times +Operational + + +2945 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2946 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302046 +Temperature change +Operational + + +2963 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2964 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302031 +Pressure information +Operational + + +2965 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302035 +Basic synoptic "instantaneous" data +Operational + + +2966 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302036 +Clouds with bases below station level +Operational + + +2967 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +2968 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2969 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302066 +Dangerous weather phenomena +Operational + + +2970 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302043 +Basic synoptic "period" data +Operational + + +2971 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302044 +Evaporation data +Operational + + +2972 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +101002 +Replicate 1 descriptor 2 times +Operational + + +2973 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2974 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Surface station identification, time, horizontal and vertical coordinates +301001 +WMO block and station numbers +IIiii +Operational + + +2975 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Surface station identification, time, horizontal and vertical coordinates +002001 +Type of station +ix +Operational + + +2976 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Surface station identification, time, horizontal and vertical coordinates +301011 +Year, month, day +YY +Operational + + +2977 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Surface station identification, time, horizontal and vertical coordinates +301012 +Hour, minute +GG, gg +Operational + + +2978 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Surface station identification, time, horizontal and vertical coordinates +301023 +Latitude/longitude (coarse accuracy) +Operational + + +2979 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Surface station identification, time, horizontal and vertical coordinates +007030 +Height of station ground above mean sea level +Operational + + +2980 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Surface station identification, time, horizontal and vertical coordinates +007031 +Height of barometer above mean sea level +Operational + + +2981 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Pressure data +302001 +Pressure and 3-hour pressure change +PoPoPoPo, PPPP, ppp, a +Operational + + +2982 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Pressure data +010062 +24-hour pressure change +p24p24p24 +Operational + + +2983 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Pressure data +007004 +Pressure +Standard level a3 = 925, 850, 700, ..hPa | Set to missing for lowland stations +Operational + + +2984 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Pressure data +010009 +Geopotential height +Standard level hhh | Set to missing for lowland stations +Operational + + +2985 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Temperature and humidity +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +Operational + + +2986 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Temperature and humidity +012101 +Temperature/air temperature +snTTT | Scale: 2 +Operational + + +2987 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Temperature and humidity +012103 +Dewpoint temperature +snTdTdTd | Scale: 2 +Operational + + +2988 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Temperature and humidity +013003 +Relative humidity +Operational + + +2989 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Temperature and humidity +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2990 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Visibility +020001 +Horizontal visibility +VV +Operational + + +2991 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Cloud data +302004 +General cloud information +Cloud cover (total) N: If N = 9, then 0 20 010 = 113, if N = /, then 0 20 010 = missing | Vertical significance: If CL are observed, then 0 08 002 = 7 | Low cloud: If CL are not observed and CM are observed, then 0 08 002 = 8 | Middle cloud: If only CH are observed, 0 08 002 = 0, if N = 9, then 0 08 002 = 5, if N = 0, then 0 08 002 = 62, if N = /, then 0 08 002 = missing | Cloud amount (of low or middle clouds) Nh: If N = 0, then 0 20 011 = 0, if N = 9, then 0 20 011 = 9, if N = /, then 0 20 011 = missing | Height of base of cloud h: If N = 0 or /, then 0 20 013 = missing | Cloud type (low clouds) CL: 0 20 012 = CL + 30, if N = 0, then 0 20 012 = 30, if N = 9 or /, then 0 20 012 = 62 | Cloud type (middle clouds) CM: 0 20 012 = CM + 20, if N = 0, then 0 20 012 = 20, if N = 9 or / or CM = /, then 0 20 012 = 61 | Cloud type (high clouds) CH: 0 20 012 = CH + 10, if N = 0, then 0 20 012 = 10, if N = 9 or / or CH = /, then 0 20 012 = 60 +Operational + + +2992 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Cloud data +101000 +Delayed replication of 1 descriptor +Operational + + +2993 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Cloud data +031001 +Delayed descriptor replication factor +Operational + + +2994 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Cloud data +302005 +Cloud layer +Vertical significance: In any Cb layer, 0 08 002 = 4, else in the first replication, if N = 9, then 0 08 002 = 5, if N = /, then 0 08 002 = missing, else 0 08 002 = 1, in the other replications 0 08 002 = 2, 3, 4 | Cloud amount Ns: In the first replication, if N = /, then 0 20 011 = missing, else 0 20 011 = Ns, in the other replications 0 20 011 = Ns | Cloud type C: If N = 9 or /, then 0 20 012 = missing, else 0 20 012 = C | Height of base of cloud hshs +Operational + + +3015 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Present and past weather +020003 +Present weather +ww +Operational + + +3016 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Present and past weather +004024 +Time period or displacement += -6 at 00, 06, 12, 18 UTC, = -3 at 03, 09,15, 21 UTC +Operational + + +3017 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Present and past weather +020004 +Past weather (1) +W1 +Operational + + +3018 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Present and past weather +020005 +Past weather (2) +W2 +Operational + + +3019 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Evaporation +004024 +Time period or displacement += -24 (hours) +Operational + + +3020 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Evaporation +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +iE +Operational + + +3021 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Evaporation +013033 +Evaporation/evapotranspiration +EEE +Operational + + +3022 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Sunshine +102002 +Replicate 2 descriptors 2 times +Operational + + +3023 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Sunshine +004024 +Time period or displacement += -24 (hours) in the first replication, = -1 (hour) in the second replication +Operational + + +3024 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Sunshine +014031 +Total sunshine +SSS in the first replication, SS in the second replication +Operational + + +3025 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Precipitation +102002 +Replicate 2 descriptors 2 times +Operational + + +3026 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Precipitation +004024 +Time period or displacement +tR +Operational + + +3027 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Precipitation +013011 +Total precipitation/total water equivalent +RRR | = 0 No precipitation, = -0.1 Trace +Operational + + +3028 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Extreme temperatures +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +Operational + + +3029 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Extreme temperatures +004024 +Time period or displacement += -12 (hours) +Operational + + +3030 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Extreme temperatures +012111 +Maximum temperature, at height and over period specified +snTxTxTx +Operational + + +3031 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Extreme temperatures +004024 +Time period or displacement += -12 (hours) +Operational + + +3032 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Extreme temperatures +012112 +Minimum temperature, at height and over period specified +snTnTnTn +Operational + + +3033 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Wind data +007032 +Height of sensor above local ground (or deck of marine platform) +Wind measurement +Operational + + +3034 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Wind data +002002 +Type of instrumentation for wind measurement +iw +Operational + + +3035 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Wind data +008021 +Time significance += 2 Time averaged +Operational + + +3036 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Wind data +004025 +Time period or displacement += -10 (minutes) or number of minutes after a significant change of wind, if any +Operational + + +3037 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Wind data +011001 +Wind direction +dd | If dd = 00 Calm or dd = 99 Variable, 0 11 001 = 0 +Operational + + +3038 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Wind data +011002 +Wind speed +ff +Operational + + +3039 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Wind data +008021 +Time significance +Set to missing (cancel) +Operational + + +3040 +07 +Surface report sequences (land) +307089 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data manually encoded in CREX) +307087 +"Instantaneous" parameters of sequence 3 07 089 +Operational + + +3041 +07 +Surface report sequences (land) +307089 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data manually encoded in CREX) +307088 +"Period" parameters of sequence 3 07 089 +Operational + + +3042 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +301092 +Mobile surface station identification, date/time, horizontal and vertical coordinates +Operational + + +3043 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302031 +Pressure information +Operational + + +3044 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302035 +Basic synoptic "instantaneous" data +Operational + + +3045 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302036 +Clouds with bases below station level +Operational + + +3046 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302047 +Direction of cloud drift +Operational + + +3047 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +008002 +Vertical significance (surface observations) +Operational + + +3048 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302048 +Direction and elevation of cloud +Operational + + +3049 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +3050 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302043 +Basic synoptic "period" data +Operational + + +3051 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302044 +Evaporation data +Operational + + +3052 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +101002 +Replicate 1 descriptor 2 times +Operational + + +3053 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +3054 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302046 +Temperature change +Operational + + +3055 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +301089 +National station identification +Operational + + +3056 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +301090 +Surface station identification; time, horizontal and vertical co-ordinates +Operational + + +3057 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +008010 +Surface qualifier (temperature data) +Operational + + +3058 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +301091 +Surface station instrumentation +Operational + + +3059 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302001 +Pressure and 3-hour pressure change +Operational + + +3060 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +007004 +Pressure +Standard level +Operational + + +3061 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +010009 +Geopotential height +Standard level +Operational + + +3062 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302072 +Temperature and humidity data +Operational + + +3063 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +103000 +Delayed replication of 3 descriptors +Operational + + +3064 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +3065 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101005 +Replicate 1 descriptor 5 times +Operational + + +3066 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +307063 +Depth below land surface and soil temperature +Operational + + +3067 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +007061 +Depth below land surface +Set to missing (cancel) +Operational + + +3068 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +3069 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +3070 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302069 +Visibility data +Operational + + +3071 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3072 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +3073 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +105000 +Delayed replication of 5 descriptors +Operational + + +3074 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +3075 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +020031 +Ice deposit (thickness) +Operational + + +3076 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +020032 +Rate of ice accretion (estimated) +Operational + + +3077 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +002038 +Method of water temperature and/or salinity measurement +Operational + + +3078 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +022043 +Sea/water temperature +Scale: 2 +Operational + + +3079 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302021 +Waves +Operational + + +3080 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +3081 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +3082 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302078 +State of ground and snow depth measurement +Operational + + +3083 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +3084 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +3085 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302073 +Cloud data +Operational + + +3086 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +3087 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +3088 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302074 +Present and past weather +Operational + + +3089 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +3090 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +3091 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302175 +Intensity of precipitation, size of precipitation element +Operational + + +3092 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +102000 +Delayed replication of 2 descriptors +Operational + + +3093 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +3094 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +004025 +Time period or displacement += -10 (minutes) +Operational + + +3095 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302076 +Precipitation, obscuration and other phenomena +Operational + + +3096 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302071 +Wind data from one-hour period +Operational + + +3097 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302077 +Extreme temperature data +Operational + + +3098 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +3099 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +3100 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +3101 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302079 +Precipitation measurement +Operational + + +3102 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3103 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +3104 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +3105 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302080 +Evaporation measurement +Operational + + +3106 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +3107 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +3108 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302081 +Total sunshine data +Operational + + +3109 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +3110 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +3111 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302082 +Radiation data +Operational + + +3112 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +102000 +Delayed replication of 2 descriptors +Operational + + +3113 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +3114 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +004025 +Time period or displacement += -10 (minutes) +Operational + + +3115 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +013059 +Number of flashes (thunderstorm) +Operational + + +3116 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +3117 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +3118 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302083 +First-order statistics of P, W, T, U data +Operational + + +3119 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +033005 +Quality information (AWS data) +Operational + + +3120 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +033006 +Internal measurement status information (AWS) +Operational + + +3173 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +301150 +WIGOS identifier +Operational + + +3174 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +301001 +WMO block and station numbers +Operational + + +3175 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +208040 +Change width of CCITT IA5 field +Operational + + +3176 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +001019 +Long station or site name +40 characters +Operational + + +3177 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +208000 +Change width of CCITT IA5 field +Operational + + +3178 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +301011 +Year, month, day +The time identification refers to the end of the n-minute period. +Operational + + +3179 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +301012 +Hour, minute +Operational + + +3180 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +301021 +Latitude/longitude (high accuracy) +Operational + + +3181 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007030 +Height of station ground above mean sea level +Operational + + +3182 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +001023 +Observation sequence number +Operational + + +3183 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +108000 +Delayed replication of 8 descriptors +Operational + + +3184 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +3185 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007031 +Height of barometer above mean sea level +Operational + + +3186 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3187 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +3188 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +010004 +Pressure +Measured value of the air pressure at the sensor location and sensor height +Operational + + +3189 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +010051 +Pressure reduced to mean sea level +Operational + + +3190 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007004 +Pressure +Standard level +Operational + + +3191 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +010009 +Geopotential height +Standard level +Operational + + +3192 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3193 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +115000 +Delayed replication of 15 descriptors +Operational + + +3194 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031001 +Delayed descriptor replication factor +Operational + + +3195 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +3196 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +008010 +Surface qualifier (temperature data) +Operational + + +3197 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3198 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +3199 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +012101 +Temperature/air-temperature +Scale: 2 +Operational + + +3200 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +012103 +Dewpoint temperature +Scale: 2 +Operational + + +3201 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +202129 +Change scale +Operational + + +3202 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +201132 +Change data width +Operational + + +3203 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +013003 +Relative humidity +Mandatory to report (presuming a humidity sensor is installed), data width 11 bits +Operational + + +3204 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +201000 +Change data width +Cancel +Operational + + +3205 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +202000 +Change scale +Cancel +Operational + + +3206 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +013009 +Relative humidity +Original measured value +Operational + + +3207 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3208 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3209 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +008010 +Surface qualifier (temperature data) +Set to missing (cancel) +Operational + + +3210 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +107000 +Delayed replication of 7 descriptors +Operational + + +3211 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031001 +Delayed descriptor replication factor +Operational + + +3212 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007061 +Depth below land surface +Operational + + +3213 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3214 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +3215 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +012130 +Soil temperature +Operational + + +3216 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +013111 +Soil moisture +Operational + + +3217 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3218 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007061 +Depth below land surface +Set to missing (cancel) +Operational + + +3219 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +105000 +Delayed replication of 5 descriptors +Operational + + +3220 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +3221 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +033041 +Attribute of following value +Operational + + +3222 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3223 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +3224 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +020001 +Horizontal visibility +Operational + + +3225 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3226 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +113000 +Delayed replication of 13 descriptors +Operational + + +3227 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +3228 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3229 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +3230 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +020010 +Cloud cover (total) +Operational + + +3231 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3232 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +107000 +Delayed replication of 7 descriptors +Operational + + +3233 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031001 +Delayed descriptor replication factor +Operational + + +3234 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +008002 +Vertical significance (surface observations) +Operational + + +3235 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3236 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +3237 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +020011 +Cloud amount +Operational + + +3238 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +020013 +Height of base of cloud +Operational + + +3239 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3240 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +3241 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +105000 +Delayed replication of 5 descriptors +Operational + + +3242 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +3243 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3244 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +3245 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +020062 +State of ground (with or without snow) +Operational + + +3246 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +013013 +Total snow depth +Operational + + +3247 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3248 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +105000 +Delayed replication of 5 descriptors +Operational + + +3249 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +3250 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +004025 +Time period or displacement += -n minutes +Operational + + +3251 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3252 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +3253 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +020003 +Present weather +Operational + + +3254 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3255 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +105000 +Delayed replication of 5 descriptors +Operational + + +3256 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +3257 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +004025 +Time period or displacement += -n minutes +Operational + + +3258 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3259 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +3260 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +013011 +Total precipitation/total water equivalent +Snow +Operational + + +3261 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3262 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +115000 +Delayed replication of 15 descriptors +Operational + + +3263 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031001 +Delayed descriptor replication factor +Operational + + +3264 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +3265 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +008021 +Time significance += 2 Time averaged +Operational + + +3266 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +004025 +Time period or displacement += -10 minutes, or number of minutes after a significant change of wind +Operational + + +3267 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3268 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +3269 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +011001 +Wind direction +Operational + + +3270 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +011002 +Wind speed +Operational + + +3271 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3272 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +008021 +Time significance +Set to missing (cancel) +Operational + + +3273 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3274 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +3275 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +011043 +Maximum wind gust direction +Operational + + +3276 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +011041 +Maximum wind gust speed +Operational + + +3277 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3278 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3279 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +105000 +Delayed replication of 5 descriptors +Operational + + +3280 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +3281 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +004025 +Time period or displacement += -n minutes (default n = 10) +Operational + + +3282 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3283 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +3284 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014031 +Total sunshine +Operational + + +3285 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3286 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +110000 +Delayed replication of 10 descriptors +Operational + + +3287 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Open or close (1/0) +Operational + + +3288 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +004025 +Time period or displacement += -n minutes (default n = 10) +Operational + + +3289 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3290 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +3291 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014002 +Long-wave radiation, integrated over period specified +Upward long-wave radiation | according to BUFR Table B, under Class 14, Note 2: negative values +Operational + + +3292 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014002 +Long-wave radiation, integrated over period specified +Downward long-wave radiation | according to BUFR Table B, under Class 14, Note 1: positive values +Operational + + +3293 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014004 +Short-wave radiation, integrated over period specified +Upward short-wave radiation | according to BUFR Table B, under Class 14, Note 2: negative values +Operational + + +3294 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014028 +Global solar radiation (high accuracy), integrated over period specified +Operational + + +3295 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014029 +Diffuse solar radiation (high accuracy), integrated over period specified +Operational + + +3296 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014030 +Direct solar radiation (high accuracy), integrated over period specified +Operational + + +3297 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3298 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +113000 +Delayed replication of 13 descriptors +Operational + + +3299 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +3300 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +004025 +Time period or displacement += -n minutes (default n = 10) +Operational + + +3301 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +002071 +Spectrographic wavelength +UV-A: 315 nm +Operational + + +3302 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +002072 +Spectrographic width +UV-A: 85 nm +Operational + + +3303 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3304 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +3305 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014072 +Global UV irradiation +Integrated over period specified | UV-A irradiation | according to BUFR Table B under Class 14, Note 8 (ISO 21348: UV-A wave length range 315 ≤ λ ≤400 nm) +Operational + + +3306 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3307 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +002071 +Spectrographic wavelength +UV-B: 280 nm +Operational + + +3308 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +002072 +Spectrographic width +UV-B: 35 nm +Operational + + +3309 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +3310 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Quality flag +Operational + + +3311 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014072 +Global UV irradiation +Integrated over period specified | UV-B irradiation | according to BUFR Table B under Class 14, Note 8 (ISO 21348 UV-B wave length range 280 ≤ λ ≤ 315 nm) +Operational + + +3312 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +3314 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +3315 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +301089 +National station identification +Operational + + +3316 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +008010 +Surface qualifier (temperature data) +Operational + + +3317 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +301091 +Surface station instrumentation +Operational + + +3318 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +302084 +"Instantaneous" data of sequence 3 07 096 +Operational + + +3319 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +302085 +"Period" data of sequence 3 07 096 +Operational + + +3320 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +033005 +Quality information (AWS data) +Operational + + +3321 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +033006 +Internal measurement status information (AWS) +Operational + + +3322 +07 +Surface report sequences (land) +307101 +(Snow observation) +301089 +National station identification +Operational + + +3323 +07 +Surface report sequences (land) +307101 +(Snow observation) +001019 +Long station or site name +Operational + + +3324 +07 +Surface report sequences (land) +307101 +(Snow observation) +002001 +Type of station +Operational + + +3325 +07 +Surface report sequences (land) +307101 +(Snow observation) +301011 +Year, month, day +Operational + + +3326 +07 +Surface report sequences (land) +307101 +(Snow observation) +301012 +Hour, minute +Operational + + +3327 +07 +Surface report sequences (land) +307101 +(Snow observation) +301021 +Latitude/longitude (high accuracy) +Operational + + +3328 +07 +Surface report sequences (land) +307101 +(Snow observation) +007030 +Height of station ground above mean sea level +Operational + + +3329 +07 +Surface report sequences (land) +307101 +(Snow observation) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +3330 +07 +Surface report sequences (land) +307101 +(Snow observation) +012101 +Temperature/air temperature +Operational + + +3331 +07 +Surface report sequences (land) +307101 +(Snow observation) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +3332 +07 +Surface report sequences (land) +307101 +(Snow observation) +002177 +Method of snow depth measurement +Operational + + +3333 +07 +Surface report sequences (land) +307101 +(Snow observation) +020062 +State of the ground (with or without snow) +Operational + + +3334 +07 +Surface report sequences (land) +307101 +(Snow observation) +013013 +Total snow depth +Operational + + +3335 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +301089 +National station identification +Operational + + +3336 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +001018 +Short station or site name +For identification of the road weather monitoring site +Operational + + +3337 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +001015 +Station or site name +Operational + + +3338 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +001104 +State/federal state identifier +Operational + + +3339 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +001105 +Highway designator +Operational + + +3340 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +001106 +Location along highway as indicated by position markers +Operational + + +3341 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +003017 +Extended type of station +Operational + + +3342 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +003018 +Type of road +Operational + + +3343 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +003019 +Type of construction +Operational + + +3344 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +301011 +Year, month, day +Operational + + +3345 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +301012 +Hour, minute +Operational + + +3346 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +301021 +Latitude/longitude (high accuracy) +Operational + + +3347 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +007030 +Height of station ground above mean sea level +Operational + + +3348 +07 +Surface report sequences (land) +307102 +(Road weather information) +Temperature, humidity and visibility data +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +3349 +07 +Surface report sequences (land) +307102 +(Road weather information) +Temperature, humidity and visibility data +012101 +Temperature/air temperature +Operational + + +3350 +07 +Surface report sequences (land) +307102 +(Road weather information) +Temperature, humidity and visibility data +012103 +Dewpoint temperature +Operational + + +3351 +07 +Surface report sequences (land) +307102 +(Road weather information) +Temperature, humidity and visibility data +013003 +Relative humidity +Operational + + +3352 +07 +Surface report sequences (land) +307102 +(Road weather information) +Temperature, humidity and visibility data +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3353 +07 +Surface report sequences (land) +307102 +(Road weather information) +Temperature, humidity and visibility data +020001 +Horizontal visibility +Operational + + +3354 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +109000 +Delayed replication of 9 descriptors +Operational + + +3355 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +031001 +Delayed descriptor replication factor +Operational + + +3356 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +003016 +Position of road sensors +Operational + + +3357 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +012128 +Road surface temperature +Operational + + +3358 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +102000 +Delayed replication of 2 descriptors +Operational + + +3359 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +031001 +Delayed descriptor replication factor +Operational + + +3360 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +007061 +Depth below land surface += 0.30 m in the first replication, = e.g. 0.15 or 0.07 m in the second replication +Operational + + +3361 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +012129 +Road subsurface temperature +Operational + + +3362 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +007061 +Depth below land surface +Set to missing (cancel) +Operational + + +3363 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +013116 +Water film thickness +Operational + + +3364 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +020138 +Road surface condition +Operational + + +3365 +07 +Surface report sequences (land) +307102 +(Road weather information) +Precipitation data +004025 +Time period or displacement += -15 minutes +Operational + + +3366 +07 +Surface report sequences (land) +307102 +(Road weather information) +Precipitation data +020024 +Intensity of phenomena +Intensity (light, moderate, heavy) of precipitation +Operational + + +3367 +07 +Surface report sequences (land) +307102 +(Road weather information) +Precipitation data +013055 +Intensity of precipitation +Operational + + +3368 +07 +Surface report sequences (land) +307102 +(Road weather information) +Precipitation data +020021 +Type of precipitation +Operational + + +3369 +07 +Surface report sequences (land) +307102 +(Road weather information) +Precipitation data +013011 +Total precipitation/total water equivalent +Operational + + +3370 +07 +Surface report sequences (land) +307102 +(Road weather information) +Wind data +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +3371 +07 +Surface report sequences (land) +307102 +(Road weather information) +Wind data +008021 +Time significance += 2 Time averaged +Operational + + +3372 +07 +Surface report sequences (land) +307102 +(Road weather information) +Wind data +004025 +Time period or displacement += -10 minutes +Operational + + +3373 +07 +Surface report sequences (land) +307102 +(Road weather information) +Wind data +011001 +Wind direction +Operational + + +3374 +07 +Surface report sequences (land) +307102 +(Road weather information) +Wind data +011002 +Wind speed +Operational + + +3375 +07 +Surface report sequences (land) +307102 +(Road weather information) +Wind data +008021 +Time significance +Set to missing (cancel) +Operational + + +3376 +07 +Surface report sequences (land) +307102 +(Road weather information) +Maximum wind gust +004025 +Time period or displacement +In minutes +Operational + + +3377 +07 +Surface report sequences (land) +307102 +(Road weather information) +Maximum wind gust +011043 +Maximum wind gust direction +Operational + + +3378 +07 +Surface report sequences (land) +307102 +(Road weather information) +Maximum wind gust +011041 +Maximum wind gust speed +Operational + + +3379 +07 +Surface report sequences (land) +307102 +(Road weather information) +State of functionality +033005 +Quality information (AWS data) +Operational + + +3381 +07 +Surface report sequences (land) +307103 +(Snow observation, snow density, snow water equivalent) +301150 +WIGOS identifier +Operational + + +3382 +07 +Surface report sequences (land) +307103 +(Snow observation, snow density, snow water equivalent) +307101 +Snow observation +Operational + + +3383 +07 +Surface report sequences (land) +307103 +(Snow observation, snow density, snow water equivalent) +013117 +Snow density (liquid water content) +Operational + + +3384 +07 +Surface report sequences (land) +307103 +(Snow observation, snow density, snow water equivalent) +003028 +Method of snow water equivalent measurement +Operational + + +3385 +07 +Surface report sequences (land) +307103 +(Snow observation, snow density, snow water equivalent) +013163 +Snow water equivalent +Operational + + +3386 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +301090 +Surface station identification, time, horizontal and vertical coordinates +Operational + + +3387 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302031 +Pressure information +Operational + + +3388 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302035 +Basic synoptic “instantaneous” data +Operational + + +3389 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302036 +Clouds with bases below station level +Operational + + +3390 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302047 +Direction of cloud drift +Operational + + +3391 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +3392 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302048 +Direction and elevation of cloud +Operational + + +3393 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302037 +State of ground, snow depth, ground minimum temperature +Past 12 hours +Operational + + +3394 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +012120 +Ground temperature +snT’gT’g +Operational + + +3395 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +012122 +Ground minimum temperature of the preceding night +snTgTg +Operational + + +3396 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302043 +Basic synoptic “period” data +Operational + + +3397 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302044 +Evaporation data +Operational + + +3398 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +101002 +Replicate 1 descriptor 2 times +Operational + + +3399 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +3400 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302046 +Temperature change +Operational + + +3401 +08 +Surface report sequences (sea) +308001 +(Buoy/platform - fixed) +301033 +Buoy/platform - fixed +Identification, type, date/time, position (high accuracy) +Operational + + +3402 +08 +Surface report sequences (sea) +308001 +(Buoy/platform - fixed) +302011 +Low altitude station +Basic surface report +Operational + + +3403 +08 +Surface report sequences (sea) +308001 +(Buoy/platform - fixed) +022042 +Sea/water temperature +Operational + + +3404 +08 +Surface report sequences (sea) +308002 +(Buoy/platform - fixed) +301034 +Buoy/platform - fixed +Identification, type, date/time, position (coarse accuracy) +Operational + + +3405 +08 +Surface report sequences (sea) +308002 +(Buoy/platform - fixed) +302011 +Low altitude station +Basic surface report +Operational + + +3406 +08 +Surface report sequences (sea) +308002 +(Buoy/platform - fixed) +022042 +Sea/water temperature +Operational + + +3407 +08 +Surface report sequences (sea) +308003 +(Buoy/platform - moving) (see Note 1) +301035 +Buoy/platform - moving +Identification, movement, type, date/time, position (coarse accuracy) +Operational + + +3408 +08 +Surface report sequences (sea) +308003 +(Buoy/platform - moving) +302011 +Low altitude station +Basic surface report +Operational + + +3409 +08 +Surface report sequences (sea) +308003 +(Buoy/platform - moving) +022042 +Sea/water temperature +Operational + + +3410 +08 +Surface report sequences (sea) +308004 +(Ship) +301036 +Ship +Identification, movement, type, date/time, position (coarse accuracy) +Operational + + +3411 +08 +Surface report sequences (sea) +308004 +(Ship) +302011 +Low altitude station +Basic surface report +Operational + + +3412 +08 +Surface report sequences (sea) +308004 +(Ship) +022042 +Sea/water temperature +Operational + + +3413 +08 +Surface report sequences (sea) +308005 +308004 +Ship +Basic ship report +Operational + + +3414 +08 +Surface report sequences (sea) +308005 +302024 +Wind and swell waves +Operational + + +3415 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +010004 +Pressure +Operational + + +3416 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +010061 +3-hour pressure change +Operational + + +3417 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +010063 +Characteristic of pressure tendency +Operational + + +3418 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +011001 +Wind direction +Operational + + +3419 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +011002 +Wind speed +Operational + + +3420 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +012004 +Air temperature at 2 m +Operational + + +3421 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +013003 +Relative humidity +Operational + + +3422 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +022042 +Sea/water temperature +Operational + + +3423 +08 +Surface report sequences (sea) +308007 +301055 +Identification and type of station, date/time, location (high accuracy), movement +Operational + + +3424 +08 +Surface report sequences (sea) +308007 +302011 +Low altitude station +Basic surface report +Operational + + +3425 +08 +Surface report sequences (sea) +308007 +007062 +Depth below sea/water surface +Operational + + +3426 +08 +Surface report sequences (sea) +308007 +022042 +Sea/water temperature +Operational + + +3427 +08 +Surface report sequences (sea) +308009 +(Sequence for representation of synoptic reports from a sea station suitable for SHIP data) +301093 +Ship identification, movement, date/time, horizontal and vertical coordinates +Operational + + +3428 +08 +Surface report sequences (sea) +308009 +(Sequence for representation of synoptic reports from a sea station suitable for SHIP data) +302001 +Pressure and 3-hour pressure change +Operational + + +3429 +08 +Surface report sequences (sea) +308009 +(Sequence for representation of synoptic reports from a sea station suitable for SHIP data) +302054 +Ship "instantaneous" data +Operational + + +3430 +08 +Surface report sequences (sea) +308009 +(Sequence for representation of synoptic reports from a sea station suitable for SHIP data) +008002 +Vertical significance (surface observations) +Operational + + +3431 +08 +Surface report sequences (sea) +308009 +(Sequence for representation of synoptic reports from a sea station suitable for SHIP data) +302055 +Icing and ice +Operational + + +3432 +08 +Surface report sequences (sea) +308009 +(Sequence for representation of synoptic reports from a sea station suitable for SHIP data) +302057 +Ship marine data +Operational + + +3433 +08 +Surface report sequences (sea) +308009 +(Sequence for representation of synoptic reports from a sea station suitable for SHIP data) +302060 +Ship "period" data +Operational + + +3434 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +001011 +Ship or mobile land station identifier +Operational + + +3435 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +113000 +Delayed replication of 13 descriptors +Operational + + +3436 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +031001 +Delayed descriptor replication factor +Operational + + +3437 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +301011 +Year, month, day +Operational + + +3438 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +301012 +Hour, minute +Operational + + +3439 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +301021 +Latitude/longitude (high accuracy) +Operational + + +3440 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +004080 +Averaging period for following value +Operational + + +3441 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +022049 +Sea-surface temperature +Operational + + +3442 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +004080 +Averaging period for following value +Operational + + +3443 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +022059 +Sea-surface salinity +Operational + + +3444 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +004080 +Averaging period for following value +Operational + + +3445 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +022005 +Direction of sea-surface current +Operational + + +3446 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +002042 +Indicator for sea-surface current speed +Operational + + +3447 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +022032 +Speed of sea-surface current +Operational + + +3448 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +002042 +Indicator for sea-surface current speed +Cancel +Operational + + +3449 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +004080 +Averaging period for following value +Cancel +Operational + + +3465 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +001011 +Ship or mobile land station identifier +Ship's call sign +Operational + + +3466 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +002001 +Type of station +Operational + + +3467 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +301011 +Year, month, day +(see Note 2) +Operational + + +3468 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +301012 +Hour, minute +(see Note 2) +Operational + + +3469 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +3470 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +007030 +Height of station ground above mean sea level +(see Note 3) +Operational + + +3471 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +007031 +Height of barometer above mean sea level +(see Note 3) +Operational + + +3472 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +004074 +Short time period or displacement) += UTC - LT +(see Note 2) +Operational + + +3473 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +004023 +Time period or displacement += Number of days in the month +Operational + + +3474 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics += 4 Mean value +Operational + + +3475 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +010051 +Pressure reduced to mean sea level +Operational + + +3476 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +(see Note 3) +Operational + + +3477 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Temperature measurement +(see Note 3) +Operational + + +3478 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +012101 +Temperature/air temperature +Operational + + +3479 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +013004 +Vapour pressure +Operational + + +3480 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3481 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +3482 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +302056 +Sea/water temperature +Sea-surface temperature, method of measurement, and depth below sea surface +Operational + + +3483 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics +Set to missing +Operational + + +3484 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +004003 +Day += 1 +(see Note 4) +Operational + + +3485 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +004004 +Hour += 6 +(see Note 4) +Operational + + +3486 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +004023 +Time period or displacement += Number of days in the month +(see Note 4) +Operational + + +3487 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 3) +Operational + + +3488 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +013060 +Total accumulated precipitation +Operational + + +3489 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +013051 +Frequency group, precipitation +Operational + + +3490 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +3491 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3492 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +004001 +Year +Beginning of the reference period +Operational + + +3493 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +004001 +Year +Ending of the reference period +Operational + + +3494 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +004002 +Month +Operational + + +3495 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +004003 +Day += 1 +(see Note 2) +Operational + + +3496 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +004004 +Hour += 0 +(see Note 2) +Operational + + +3497 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +004074 +Short time period or displacement += UTC - LT +(see Note 2) +Operational + + +3498 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +004022 +Time period or displacement += 1 +Operational + + +3499 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics += 4 Mean value +Operational + + +3500 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +010051 +Pressure reduced to mean sea level +Operational + + +3501 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +(see Note 3) +Operational + + +3502 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Temperature measurement +(see Note 3) +Operational + + +3503 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +012101 +Temperature/air temperature +Operational + + +3504 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +013004 +Vapour pressure +Operational + + +3505 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3506 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +3507 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +302056 +Sea/water temperature +Sea-surface temperature, method of measurement, and depth below sea surface +Operational + + +3508 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics +Set to missing +Operational + + +3509 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +004001 +Year +Beginning of the reference period +Operational + + +3510 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +004001 +Year +Ending of the reference period +Operational + + +3511 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +004002 +Month +Operational + + +3512 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +004003 +Day += 1 +(see Note 4) +Operational + + +3513 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +004004 +Hour += 6 +(see Note 4) +Operational + + +3514 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +004022 +Time period or displacement += 1 +Operational + + +3515 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Precipitation measurement +(see Note 3) +Operational + + +3516 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of precipitation +008023 +First-order statistics += 4 Mean value +Operational + + +3517 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of precipitation +013060 +Total accumulated precipitation +Operational + + +3518 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +3519 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of precipitation +008023 +First-order statistics +Set to missing +Operational + + +3520 +08 +Surface report sequences (sea) +308013 +(Representation of CLIMAT SHIP data of the actual month and for monthly normals) +308011 +Monthly values from an ocean weather station - CLIMAT SHIP +Operational + + +3521 +08 +Surface report sequences (sea) +308013 +(Representation of CLIMAT SHIP data of the actual month and for monthly normals) +308012 +Monthly normals for an ocean weather station +Operational + + +3522 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +101000 +Delayed replication of 1 descriptor +Operational + + +3523 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +031000 +Short delayed descriptor replication factor +Operational + + +3524 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +301018 +Encrypted ship’s call sign and encryption method +Operational + + +3525 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +003001 +Surface station type +Operational + + +3526 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +301093 +Ship identification, movement, date/time, horizontal and vertical coordinates +Operational + + +3527 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +208032 +Change width of CCITT IA5 field +Operational + + +3528 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +001079 +Unique identifier for the profile +32 characters | Unique ID for report +Operational + + +3529 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +208000 +Change width of CCITT IA5 +Cancel +Operational + + +3530 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +302062 +Ship “instantaneous” data +Operational + + +3531 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +302063 +Ship “period” data +Operational + + +3532 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +101000 +Delayed replication of 1 descriptor +Operational + + +3533 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +031000 +Short delayed descriptor replication factor +Operational + + +3534 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +302092 +VOSClim data elements +Operational + + +3535 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +101000 +Delayed replication of 1 descriptor +Operational + + +3536 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +031000 +Short delayed descriptor replication factor +Operational + + +3537 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +306033 +Surface salinity +Operational + + +3538 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +101000 +Delayed replication of 1 descriptor +Operational + + +3539 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +031000 +Short delayed descriptor replication factor +Operational + + +3540 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +306034 +Surface current +Operational + + +3541 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +101000 +Delayed replication of 1 descriptor +Operational + + +3542 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +031000 +Short delayed descriptor replication factor +Operational + + +3543 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +306043 +Marine biogeochemical and radiation observations +E-SURFMAR S-AWS observations +Operational + + +3544 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001003 +WMO Region number/geographical area +A1 - First digit of WMO number (e.g. 62024 => 6) +Operational + + +3545 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001020 +WMO Region sub-area +bw - Second digit of WMO number (e.g. 62024 => 2) +Operational + + +3546 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001005 +Buoy/platform identifier +nbnbnb - Last 3 digits of WMO number (e.g. 62024 => 024) +Operational + + +3547 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001011 +Ship or mobile land station identifier +D....D +Operational + + +3548 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001007 +Satellite identifier +I6I6I6 +Operational + + +3549 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001001 +WMO block number +II +Operational + + +3550 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001002 +WMO station number +iii - IIiii only apply to fixed sea stations +Operational + + +3551 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +002044 +Indicator for method of calculating spectral wave data +Im - Code table 1744 (WAVEOB), 0 02 044 (BUFR) +Operational + + +3552 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +002045 +Indicator for type of platform +Ip - Code table 1747 (WAVEOB), 0 02 045 (BUFR) +Operational + + +3553 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +301011 +Year, month, day +YYMMJ - Date of observation +Operational + + +3554 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +301012 +Hour, minute +GGgg - Time of observation +Operational + + +3555 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +301021 +Latitude/longitude (high accuracy) +QcLaLaLaLa LoLoLoLoLo +Operational + + +3556 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022063 +Total water depth +1hhhh +Operational + + +3557 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022076 +Direction from which dominant waves are coming +9dddd - Section 0 +Operational + + +3558 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022077 +Directional spread of dominant wave +dsds - section 0 +Operational + + +3559 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022094 +Total number of wave bands +111BTBT - Section 1 +Operational + + +3560 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +025043 +Wave sampling interval (time) +SSSS - Section 1 +Operational + + +3561 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022078 +Duration of wave record +D’D’D’D’ - Section 1 +Operational + + +3562 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +105002 +Replicate 5 descriptors 2 times +Replicate over sensor type +Operational + + +3563 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +002046 +Wave measurement instrumentation += 1 Heave sensor, = 2 Slope sensor +Operational + + +3564 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022070 +Significant wave height +2HsHsHsHs or 6HseHseHseHse - Section 0 +Operational + + +3565 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022071 +Spectral peak wave period +3PpPpPpPp or 7PspPspPspPsp - Section 0 +Operational + + +3566 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022073 +Maximum wave height +4HmHmHmHm +Operational + + +3567 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022074 +Average wave period +5PaPaPaPa or 8PsaPsaPsaPsa - Section 0 +Operational + + +3568 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +127000 +Delayed replication of 27 descriptors +Replication over sensor type +Operational + + +3569 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +(0,1,2) normally 1 +(see Note 5) +Operational + + +3570 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +002046 +Wave measurement instrumentation += 1 Heave sensor, = 2 Slope sensor +Operational + + +3571 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +x - Scale to be applied to following element descriptors +Operational + + +3572 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022102 +Scaled maximum non-directional spectral wave density by frequency +CmCmCm - Section 2 or CsmCsmCsm - Section 3 +Operational + + +3573 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +Set to missing +Operational + + +3574 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022084 +Band containing maximum non-directional spectral wave density +nmnm - Section 2 or nsmnsm - Section 3 +Operational + + +3575 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +120000 +Delayed replication of 20 descriptors +Replication over bands +Operational + + +3576 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +111BTBT - Section 1 (number of band) +Operational + + +3577 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022080 +Waveband central frequency +1f1f1f1f1x .... - Section 1 +Operational + + +3578 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022108 +Spectral wave density ratio +1c1c1c2c2 ... - Section 2 or 1cs1cs1cs2cs2 ... - Section 3 +Operational + + +3579 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022086 +Mean direction from which waves are coming +1da1da1 - Section 4 +Operational + + +3580 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022087 +Principal direction from which waves are coming +da2da2 - Section 4 +Operational + + +3581 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022088 +First normalized polar coordinate from Fourier coefficients +r1r1 - Section 4 +Operational + + +3582 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022089 +Second normalized polar coordinate from Fourier coefficients +r2r2 - Section 4 +Operational + + +3583 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +105000 +Delayed replication of 5 descriptors +(see Note 6) +Operational + + +3584 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +n - Section 5 (number of directions counted); = 0 if Ib = 1 (directional) +Operational + + +3585 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +x - Scale to be applied to following element descriptors +Operational + + +3586 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022104 +Scaled non-directional spectral wave density by frequency +1A1A1A1x ... - Section 5 +Operational + + +3587 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +Set to missing +Operational + + +3588 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022186 +Direction from which waves are coming +1d1d1 - Section 5 +(see Note 7) +Operational + + +3589 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022187 +Directional spread of wave +dsds - Section 5 +(see Note 7) +Operational + + +3590 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +105000 +Delayed replication of 5 descriptors +(see Note 8) +Operational + + +3591 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +n - Section 5 (number of directions counted); = 0 if Ib = 0 (non-directional) +Operational + + +3592 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +x - Scale to be applied to following element descriptors +Operational + + +3593 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022106 +Scaled directional spectral wave density by frequency +1A1A1A1x ... - Section 5 +Operational + + +3594 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +Set to missing +Operational + + +3595 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022186 +Direction from which waves are coming +1d1d1 - Section 5 +Operational + + +3596 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022187 +Directional spread of wave +dsds - Section 5 +Operational + + +3598 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001003 +WMO Region number/geographical area +A1 - First digit of WMO number (e.g. 62024 => 6) +Operational + + +3599 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001020 +WMO Region sub-area +bw - Second digit of WMO number (e.g. 62024 => 2) +Operational + + +3600 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001005 +Buoy/platform identifier +nbnbnb - Last 3 digits of WMO number (e.g. 62024 => 024) +Operational + + +3601 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001011 +Ship or mobile land station identifier +D....D +Operational + + +3602 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001007 +Satellite identifier +I6I6I6 +Operational + + +3603 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001001 +WMO block number +II +Operational + + +3604 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001002 +WMO station number +iii - IIiii only apply to fixed sea stations +Operational + + +3605 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +002044 +Indicator for method of calculating spectral wave data +Im - Code table 1744 (WAVEOB), 0 02 044 (BUFR) +Operational + + +3606 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +002045 +Indicator for type of platform +Ip - Code table 1747 (WAVEOB), 0 02 045 (BUFR) +Operational + + +3607 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +301011 +Year, month, day +YYMMJ - Date of observation +Operational + + +3608 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +301012 +Hour, minute +GGgg - Time of observation +Operational + + +3609 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +301021 +Latitude/longitude (high accuracy) +QcLaLaLaLa LoLoLoLoLo +Operational + + +3610 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022063 +Total water depth +1hhhh +Operational + + +3611 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022076 +Direction from which dominant waves are coming +9dddd - Section 0 +Operational + + +3612 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022077 +Directional spread of dominant wave +dsds - Section 0 +Operational + + +3613 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022094 +Total number of wave bands +111BTBT - Section 1 +Operational + + +3614 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +025044 +Wave sampling interval (space) +SSSS - Section 1 +Operational + + +3615 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022079 +Length of wave record +D’D’D’D’ - Section 1 +Operational + + +3616 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +105002 +Replicate 5 descriptors 2 times +Replication over sensor type +Operational + + +3617 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +002046 +Wave measurement instrumentation += 1 Heave sensor, = 2 Slope sensor +Operational + + +3618 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022070 +Significant wave height +2HsHsHsHs or 6HseHseHseHse - Section 0 +Operational + + +3619 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022072 +Spectral peak wavelength +3PpPpPpPp - Section 0 +Operational + + +3620 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022073 +Maximum wave height +4HmHmHmHm +Operational + + +3621 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022075 +Average wavelength +5PaPaPaPa - Section 0 +Operational + + +3622 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +127000 +Delayed replication of 27 descriptors +Replication over sensor type +Operational + + +3623 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +(0,1,2) normally 1 +(see Note 5) +Operational + + +3624 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +002046 +Wave measurement instrumentation += 1 Heave sensor, = 2 Slope sensor +Operational + + +3625 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +x - Scale to be applied to following element descriptors +Operational + + +3626 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022103 +Scaled maximum non-directional spectral wave density by wave number +CmCmCm - Section 2 or CsmCsmCsm - Section 3 +Operational + + +3627 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +Set to missing +Operational + + +3628 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022084 +Band containing maximum non-directional spectral wave density +nmnm - Section 2 or nsmnsm - Section 3 +Operational + + +3629 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +120000 +Delayed replication of 20 descriptors +Replication over band +Operational + + +3630 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +111BTBT - Section 1 (number of band) +Operational + + +3631 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022081 +Waveband central wave number +1f1f1f1f1x ... - Section 1 +Operational + + +3632 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022108 +Spectral wave density ratio +1c1c1c2c2 ... - Section 2 or 1cs1cs1cs2cs2 ... - Section 3 +Operational + + +3633 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022086 +Mean direction from which waves are coming +1da1da1 - Section 4 +Operational + + +3634 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022087 +Principal direction from which waves are coming +da2da2 - Section 4 +Operational + + +3635 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022088 +First normalized polar coordinate from Fourier coefficients +r1r1 - Section 4 +Operational + + +3636 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022089 +Second normalized polar coordinate from Fourier coefficients +r2r2 - Section 4 +Operational + + +3637 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +105000 +Delayed replication of 5 descriptors +(see Note 6) +Operational + + +3638 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +n - Section 5 (number of directions counted); = 0 if Ib = 1 (directional) +Operational + + +3639 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +x - Scale to be applied to following element descriptors +Operational + + +3640 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022105 +Scaled non-directional spectral wave density by wave number +1A1A1A1x ... - Section 5 +Operational + + +3641 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +Set to missing +Operational + + +3642 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022186 +Direction from which waves are coming +1d1d1 - Section 5 +(see Note 7) +Operational + + +3643 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022187 +Directional spread of wave +dsds - Section 5 +(see Note 7) +Operational + + +3644 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +105000 +Delayed replication of 5 descriptors +(see Note 8) +Operational + + +3645 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +n - Section 5 (number of directions counted); = 0 if Ib = 0 (non-directional) +Operational + + +3646 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +x - Scale to be applied to following element descriptors +Operational + + +3647 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022107 +Scaled directional spectral wave density by wave number +1A1A1A1x ... - Section 5 +Operational + + +3648 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +Set to missing +Operational + + +3649 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022186 +Direction from which waves are coming +1d1d1 - Section 5 +Operational + + +3650 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022187 +Directional spread of wave +dsds - Section 5 +Operational + + +3652 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +301056 +Sequence for platform identification, type, time and location of the observation report +Operational + + +3653 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302001 +Pressure and 3-hour pressure change +Operational + + +3654 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302052 +Ship temperature and humidity data +Operational + + +3655 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +101000 +Delayed replication of 1 descriptor +Operational + + +3656 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +031000 +Short delayed descriptor replication factor +Operational + + +3657 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302056 +Sea/water temperature +Optional +Operational + + +3658 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302064 +Ship or other marine platform wind data +(see Note) +Operational + + +3659 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302053 +Ship visibility data +Operational + + +3660 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +101000 +Delayed replication of 1 descriptor +Operational + + +3661 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +031000 +Short delayed descriptor replication factor +Operational + + +3662 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302004 +General cloud information +Optional +Operational + + +3663 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +101000 +Delayed replication of 1 descriptor +Operational + + +3664 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +031000 +Short delayed descriptor replication factor +Operational + + +3665 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302005 +Cloud layer +Optional +Operational + + +3666 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +101000 +Delayed replication of 1 descriptor +Operational + + +3667 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +031000 +Short delayed descriptor replication factor +Operational + + +3668 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302038 +Present and past weather +Optional +Operational + + +3669 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +101000 +Delayed replication of 1 descriptor +Operational + + +3670 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +031000 +Short delayed descriptor replication factor +Operational + + +3671 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +306039 +Sequence for representation of basic wave measurements +Optional +Operational + + +3672 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +301150 +WIGOS identifier +Operational + + +3673 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +301093 +Ship identification, movement, date/time, horizontal and vertical coordinates +Operational + + +3674 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +302001 +Pressure and 3-hour pressure change +Operational + + +3675 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +302072 +Temperature and humidity data +Operational + + +3676 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +101000 +Delayed replication of 1 descriptor +Operational + + +3677 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +031000 +Short delayed descriptor replication factor +Operational + + +3678 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +302056 +Sea/water temperature +Operational + + +3679 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +101000 +Delayed replication of 1 descriptor +Operational + + +3680 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +031000 +Short delayed descriptor replication factor +Operational + + +3681 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +302064 +Ship or other marine platform wind data +Operational + + +3682 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Station identification, date/time, horizontal and vertical coordinates +001011 +Ship or mobile land station identifier +Ship’s call sign +Operational + + +3683 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Station identification, date/time, horizontal and vertical coordinates +002001 +Type of station +Operational + + +3684 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Station identification, date/time, horizontal and vertical coordinates +301011 +Year, month, day +Operational + + +3685 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Station identification, date/time, horizontal and vertical coordinates +301012 +Hour, minute +Operational + + +3686 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Station identification, date/time, horizontal and vertical coordinates +301023 +Latitude/longitude (coarse accuracy) +Operational + + +3687 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Station identification, date/time, horizontal and vertical coordinates +007030 +Height of station ground above mean sea level +Operational + + +3688 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Station identification, date/time, horizontal and vertical coordinates +007031 +Height of barometer above mean sea level +Operational + + +3689 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +004074 +Short time period or displacement +Operational + + +3690 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +004023 +Time period or displacement +Number of days in the month +Operational + + +3691 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics += 4 Mean value +Operational + + +3692 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +010051 +Pressure reduced to mean sea level +Operational + + +3693 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +Operational + + +3694 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Temperature measurement +Operational + + +3695 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +012101 +Temperature/air temperature +Operational + + +3696 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +013004 +Vapour pressure +Operational + + +3697 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3698 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +3699 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +302056 +Sea/water temperature +Sea-surface temperature, method of measurement and depth below sea surface +Operational + + +3700 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics +Set to missing (cancel) +Operational + + +3701 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +004003 +Day += 1 +Operational + + +3702 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +004004 +Hour += 0 +Operational + + +3703 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +004074 +Short time period or displacement +Operational + + +3704 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +004023 +Time period or displacement +Number of days in the month +Operational + + +3705 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +3706 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +013060 +Total accumulated precipitation +Operational + + +3707 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +013051 +Frequency group, precipitation +Operational + + +3708 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +3709 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3710 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +004001 +Year +Beginning of the reference period +Operational + + +3711 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +004001 +Year +Ending of the reference period +Operational + + +3712 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +004002 +Month +Operational + + +3713 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +004003 +Day += 1 +Operational + + +3714 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +004004 +Hour += 0 +Operational + + +3715 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +004074 +Short time period or displacement +Operational + + +3716 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +004022 +Time period or displacement += 1 +Operational + + +3717 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics += 4 Mean value +Operational + + +3718 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +010051 +Pressure reduced to mean sea level +Operational + + +3719 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +Operational + + +3720 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Temperature measurement +Operational + + +3721 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +012101 +Temperature/air temperature +Operational + + +3722 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +013004 +Vapour pressure +Operational + + +3723 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3724 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +3725 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +302056 +Sea/water temperature +Sea-surface temperature, method of measurement and depth below sea surface +Operational + + +3726 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics +Set to missing (cancel) +Operational + + +3727 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004001 +Year +Beginning of the reference period +Operational + + +3728 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004001 +Year +Ending of the reference period +Operational + + +3729 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004002 +Month +Operational + + +3730 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004003 +Day += 1 +Operational + + +3731 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004004 +Hour += 0 +Operational + + +3732 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004074 +Short time period or displacement +Operational + + +3733 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004022 +Time period or displacement += 1 +Operational + + +3734 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Precipitation measurement +Operational + + +3735 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +008023 +First-order statistics += 4 Mean value +Operational + + +3736 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +013060 +Total accumulated precipitation +Operational + + +3737 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +3738 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +008023 +First-order statistics +Set to missing (cancel) +Operational + + +3739 +08 +Surface report sequences (sea) +308023 +(Sequence for representation of monthly values suitable for CLIMAT SHIP data in compliance with regional or national reporting practices) +308021 +Monthly values from an ocean weather station in compliance with regional or national reporting practices +Operational + + +3740 +08 +Surface report sequences (sea) +308023 +(Sequence for representation of monthly values suitable for CLIMAT SHIP data in compliance with regional or national reporting practices) +308022 +Monthly normals for an ocean weather station in compliance with regional or national reporting practices +Operational + + +3741 +09 +Vertical sounding sequences (conventional data) +309001 +(Vertical wind profile) +301037 +Land station for vertical soundings +Identification, etc. (land station, high accuracy position) +Operational + + +3742 +09 +Vertical sounding sequences (conventional data) +309001 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3743 +09 +Vertical sounding sequences (conventional data) +309001 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3744 +09 +Vertical sounding sequences (conventional data) +309001 +(Vertical wind profile) +303011 +Wind at height +Operational + + +3748 +09 +Vertical sounding sequences (conventional data) +309002 +(Vertical wind profile) +301038 +Land station for vertical soundings +Identification, etc. (land station, coarse accuracy position) +Operational + + +3749 +09 +Vertical sounding sequences (conventional data) +309002 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3750 +09 +Vertical sounding sequences (conventional data) +309002 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3751 +09 +Vertical sounding sequences (conventional data) +309002 +(Vertical wind profile) +303011 +Wind at height +Operational + + +3755 +09 +Vertical sounding sequences (conventional data) +309003 +(Vertical wind profile) +301037 +Land station for vertical soundings +Identification, etc. (land station, high accuracy position) +Operational + + +3756 +09 +Vertical sounding sequences (conventional data) +309003 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3757 +09 +Vertical sounding sequences (conventional data) +309003 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3758 +09 +Vertical sounding sequences (conventional data) +309003 +(Vertical wind profile) +303012 +Wind at pressure level +Operational + + +3762 +09 +Vertical sounding sequences (conventional data) +309004 +(Vertical wind profile) +301038 +Land station for vertical soundings +Identification, etc. (land station, coarse accuracy position) +Operational + + +3763 +09 +Vertical sounding sequences (conventional data) +309004 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3764 +09 +Vertical sounding sequences (conventional data) +309004 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3765 +09 +Vertical sounding sequences (conventional data) +309004 +(Vertical wind profile) +303012 +Wind at pressure level +Operational + + +3769 +09 +Vertical sounding sequences (conventional data) +309005 +(Vertical sounding with relative humidity) +301037 +Land station for vertical soundings +Identification, etc. (land station, high accuracy position) +Operational + + +3770 +09 +Vertical sounding sequences (conventional data) +309005 +(Vertical sounding with relative humidity) +302004 +General cloud information +Significant cloud layer +Operational + + +3771 +09 +Vertical sounding sequences (conventional data) +309005 +(Vertical sounding with relative humidity) +101000 +Delayed replication of 1 descriptor +Operational + + +3772 +09 +Vertical sounding sequences (conventional data) +309005 +(Vertical sounding with relative humidity) +031001 +Delayed descriptor replication factor +Operational + + +3773 +09 +Vertical sounding sequences (conventional data) +309005 +(Vertical sounding with relative humidity) +303013 +Geopotential, temperature, humidity, wind at pressure level +Operational + + +3778 +09 +Vertical sounding sequences (conventional data) +309006 +(Vertical sounding with relative humidity) +301038 +Land station for vertical soundings +Identification, etc. (land station, coarse accuracy position) +Operational + + +3779 +09 +Vertical sounding sequences (conventional data) +309006 +(Vertical sounding with relative humidity) +302004 +General cloud information +Significant cloud layer +Operational + + +3780 +09 +Vertical sounding sequences (conventional data) +309006 +(Vertical sounding with relative humidity) +101000 +Delayed replication of 1 descriptor +Operational + + +3781 +09 +Vertical sounding sequences (conventional data) +309006 +(Vertical sounding with relative humidity) +031001 +Delayed descriptor replication factor +Operational + + +3782 +09 +Vertical sounding sequences (conventional data) +309006 +(Vertical sounding with relative humidity) +303013 +Geopotential, temperature, humidity, wind at pressure level +Operational + + +3787 +09 +Vertical sounding sequences (conventional data) +309007 +(Vertical sounding with dewpoint data) +301037 +Land station for vertical soundings +Identification, etc. (land station, high accuracy position) +Operational + + +3788 +09 +Vertical sounding sequences (conventional data) +309007 +(Vertical sounding with dewpoint data) +302004 +General cloud information +Significant cloud layer +Operational + + +3789 +09 +Vertical sounding sequences (conventional data) +309007 +(Vertical sounding with dewpoint data) +101000 +Delayed replication of 1 descriptor +Operational + + +3790 +09 +Vertical sounding sequences (conventional data) +309007 +(Vertical sounding with dewpoint data) +031001 +Delayed descriptor replication factor +Operational + + +3791 +09 +Vertical sounding sequences (conventional data) +309007 +(Vertical sounding with dewpoint data) +303014 +Geopotential, temperature, dewpoint temperature, wind at pressure level +Operational + + +3796 +09 +Vertical sounding sequences (conventional data) +309008 +(Vertical sounding with dewpoint data) +301038 +Land station for vertical soundings +Identification, etc. (land station, coarse accuracy position) +Operational + + +3797 +09 +Vertical sounding sequences (conventional data) +309008 +(Vertical sounding with dewpoint data) +302004 +General cloud information +Significant cloud layer +Operational + + +3798 +09 +Vertical sounding sequences (conventional data) +309008 +(Vertical sounding with dewpoint data) +101000 +Delayed replication of 1 descriptor +Operational + + +3799 +09 +Vertical sounding sequences (conventional data) +309008 +(Vertical sounding with dewpoint data) +031001 +Delayed descriptor replication factor +Operational + + +3800 +09 +Vertical sounding sequences (conventional data) +309008 +(Vertical sounding with dewpoint data) +303014 +Geopotential, temperature, dewpoint temperature, wind at pressure level +Operational + + +3805 +09 +Vertical sounding sequences (conventional data) +309011 +(Vertical wind profile) +301039 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3806 +09 +Vertical sounding sequences (conventional data) +309011 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3807 +09 +Vertical sounding sequences (conventional data) +309011 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3808 +09 +Vertical sounding sequences (conventional data) +309011 +(Vertical wind profile) +303011 +Wind at height +Operational + + +3812 +09 +Vertical sounding sequences (conventional data) +309012 +(Vertical wind profile) +301039 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3813 +09 +Vertical sounding sequences (conventional data) +309012 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3814 +09 +Vertical sounding sequences (conventional data) +309012 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3815 +09 +Vertical sounding sequences (conventional data) +309012 +(Vertical wind profile) +303012 +Wind at pressure level +Operational + + +3819 +09 +Vertical sounding sequences (conventional data) +309013 +(Vertical sounding with relative humidity) +301039 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3820 +09 +Vertical sounding sequences (conventional data) +309013 +(Vertical sounding with relative humidity) +302004 +General cloud information +Significant cloud layer +Operational + + +3821 +09 +Vertical sounding sequences (conventional data) +309013 +(Vertical sounding with relative humidity) +101000 +Delayed replication of 1 descriptor +Operational + + +3822 +09 +Vertical sounding sequences (conventional data) +309013 +(Vertical sounding with relative humidity) +031001 +Delayed descriptor replication factor +Operational + + +3823 +09 +Vertical sounding sequences (conventional data) +309013 +(Vertical sounding with relative humidity) +303013 +Geopotential, temperature, humidity, wind at pressure level +Operational + + +3828 +09 +Vertical sounding sequences (conventional data) +309014 +(Vertical sounding with dewpoint data) +301039 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3829 +09 +Vertical sounding sequences (conventional data) +309014 +(Vertical sounding with dewpoint data) +302004 +General cloud information +Significant cloud layer +Operational + + +3830 +09 +Vertical sounding sequences (conventional data) +309014 +(Vertical sounding with dewpoint data) +101000 +Delayed replication of 1 descriptor +Operational + + +3831 +09 +Vertical sounding sequences (conventional data) +309014 +(Vertical sounding with dewpoint data) +031001 +Delayed descriptor replication factor +Operational + + +3832 +09 +Vertical sounding sequences (conventional data) +309014 +(Vertical sounding with dewpoint data) +303014 +Geopotential, temperature, dewpoint temperature, wind at pressure level +Operational + + +3837 +09 +Vertical sounding sequences (conventional data) +309015 +(Vertical wind profile) +301040 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3838 +09 +Vertical sounding sequences (conventional data) +309015 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3839 +09 +Vertical sounding sequences (conventional data) +309015 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3840 +09 +Vertical sounding sequences (conventional data) +309015 +(Vertical wind profile) +303011 +Wind at height +Operational + + +3844 +09 +Vertical sounding sequences (conventional data) +309016 +(Vertical wind profile) +301040 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3845 +09 +Vertical sounding sequences (conventional data) +309016 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3846 +09 +Vertical sounding sequences (conventional data) +309016 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3847 +09 +Vertical sounding sequences (conventional data) +309016 +(Vertical wind profile) +303012 +Wind at pressure level +Operational + + +3851 +09 +Vertical sounding sequences (conventional data) +309017 +(Vertical sounding with relative humidity) +301040 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3852 +09 +Vertical sounding sequences (conventional data) +309017 +(Vertical sounding with relative humidity) +302004 +General cloud information +Significant cloud layer +Operational + + +3853 +09 +Vertical sounding sequences (conventional data) +309017 +(Vertical sounding with relative humidity) +101000 +Delayed replication of 1 descriptor +Operational + + +3854 +09 +Vertical sounding sequences (conventional data) +309017 +(Vertical sounding with relative humidity) +031001 +Delayed descriptor replication factor +Operational + + +3855 +09 +Vertical sounding sequences (conventional data) +309017 +(Vertical sounding with relative humidity) +303013 +Geopotential, temperature, humidity, wind at pressure level +Operational + + +3860 +09 +Vertical sounding sequences (conventional data) +309018 +(Vertical sounding with dewpoint data) +301040 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3861 +09 +Vertical sounding sequences (conventional data) +309018 +(Vertical sounding with dewpoint data) +302004 +General cloud information +Significant cloud layer +Operational + + +3862 +09 +Vertical sounding sequences (conventional data) +309018 +(Vertical sounding with dewpoint data) +101000 +Delayed replication of 1 descriptor +Operational + + +3863 +09 +Vertical sounding sequences (conventional data) +309018 +(Vertical sounding with dewpoint data) +031001 +Delayed descriptor replication factor +Operational + + +3864 +09 +Vertical sounding sequences (conventional data) +309018 +(Vertical sounding with dewpoint data) +303014 +Geopotential, temperature, dewpoint temperature, wind at pressure level +Operational + + +3869 +09 +Vertical sounding sequences (conventional data) +309019 +(Wind profiler - wind data sounding) +301031 +Identification and type of station, date/time, location (high accuracy), height of station +Operational + + +3870 +09 +Vertical sounding sequences (conventional data) +309019 +(Wind profiler - wind data sounding) +002003 +Type of measuring equipment used +Operational + + +3871 +09 +Vertical sounding sequences (conventional data) +309019 +(Wind profiler - wind data sounding) +101000 +Delayed replication of 1 descriptor +Operational + + +3872 +09 +Vertical sounding sequences (conventional data) +309019 +(Wind profiler - wind data sounding) +031001 +Delayed descriptor replication factor +Operational + + +3873 +09 +Vertical sounding sequences (conventional data) +309019 +(Wind profiler - wind data sounding) +303011 +Wind at height +Operational + + +3878 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +301031 +Identification and type of station, date/time, location (high accuracy), height of station +Operational + + +3879 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +002003 +Type of measuring equipment used +Operational + + +3880 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +104000 +Delayed replication of 4 descriptors +Operational + + +3881 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +031001 +Delayed descriptor replication factor +Operational + + +3882 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +007003 +Geopotential +Operational + + +3883 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +011003 +u-component +Operational + + +3884 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +011004 +v-component +Operational + + +3885 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +011005 +w-component +Operational + + +3893 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +301001 +WMO block and station numbers +Operational + + +3894 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +005001 +Latitude (high accuracy) +Operational + + +3895 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +006001 +Longitude (high accuracy) +Operational + + +3896 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +007030 +Height of station ground above mean sea level +Operational + + +3897 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +301014 +Time period +Operational + + +3898 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +002003 +Type of measuring equipment used +Operational + + +3899 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +002121 +Mean frequency +Operational + + +3900 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +112000 +Delayed replication of 12 descriptors +Operational + + +3901 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +031001 +Delayed descriptor replication factor +Operational + + +3902 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +007007 +Height +Operational + + +3903 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +301021 +Latitude/longitude (high accuracy) +Operational + + +3904 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +011003 +u-component +Operational + + +3905 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +011110 +Uncertainty in u-component +Operational + + +3906 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +011004 +v-component +Operational + + +3907 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +011111 +Uncertainty in v-component +Operational + + +3908 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +033002 +Quality information +Operational + + +3909 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +011006 +w-component +Operational + + +3910 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +011112 +Uncertainty in w-component +Operational + + +3911 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +033002 +Quality information +Operational + + +3912 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +010071 +Vertical resolution +Operational + + +3913 +09 +Vertical sounding sequences (conventional data) +309021 +(Radar wind profiler wind data (product data)) +027079 +Horizontal width of sampled volume +Operational + + +3915 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +301001 +WMO block and station numbers +Operational + + +3916 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +005001 +Latitude (high accuracy) +Operational + + +3917 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +006001 +Longitude (high accuracy) +Operational + + +3918 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +007030 +Height of station ground above mean sea level +Operational + + +3919 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +301014 +Time period +Operational + + +3920 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +002003 +Type of measuring equipment used +Operational + + +3921 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +002121 +Mean frequency +Operational + + +3922 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +110000 +Delayed replication of 10 descriptors +Operational + + +3923 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +031001 +Delayed descriptor replication factor +Operational + + +3924 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +007007 +Height +Operational + + +3925 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +301021 +Latitude/longitude (high accuracy) +Operational + + +3926 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +012007 +Virtual temperature +Operational + + +3927 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +012008 +Uncertainty in virtual temperature +Operational + + +3928 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +033002 +Quality information +Operational + + +3929 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +011006 +w-component +Operational + + +3930 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +011112 +Uncertainty in w-component +Operational + + +3931 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +033002 +Quality information +Operational + + +3932 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +010071 +Vertical resolution +Operational + + +3933 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +027079 +Horizontal width of sampled volume +Operational + + +3935 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Header section +301001 +WMO block and station numbers +Operational + + +3936 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Header section +005001 +Latitude (high accuracy) +Operational + + +3937 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Header section +006001 +Longitude (high accuracy) +Operational + + +3938 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Header section +007030 +Height of station ground above mean sea level +Operational + + +3939 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Header section +301014 +Time period +Operational + + +3940 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Header section +002003 +Type of measuring equipment used +Operational + + +3941 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Cloud data section +302004 +General cloud information +Operational + + +3942 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Cloud data section +302005 +Cloud layer +Operational + + +3943 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +114000 +Delayed replication of 14 descriptors +Operational + + +3944 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +031001 +Delayed descriptor replication factor +Operational + + +3945 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +007007 +Height +Operational + + +3946 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +301021 +Latitude/longitude (high accuracy) +Operational + + +3947 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +101000 +Delayed replication of 1 descriptor +Operational + + +3948 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +031001 +Delayed descriptor replication factor +Number of wavelength measurements present in the data +Operational + + +3949 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +002121 +Mean frequency +Operational + + +3950 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +015063 +Attenuated backscatter +Operational + + +3951 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +015064 +Uncertainty in attenuated backscatter +Operational + + +3952 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +015065 +Particle backscatter coefficient +Operational + + +3953 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +015066 +Uncertainty in particle backscatter coefficient +Operational + + +3954 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +015067 +Particle extinction coefficient +Operational + + +3955 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +015068 +Uncertainty in particle extinction coefficient +Operational + + +3956 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +015069 +Particle lidar ratio +Operational + + +3957 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +015070 +Uncertainty in lidar ratio +Operational + + +3958 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +015071 +Particle depolarization ratio +Operational + + +3959 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +015072 +Uncertainty in depolarization ratio +Operational + + +3960 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +033002 +Quality information +Operational + + +3961 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +010071 +Vertical resolution +Operational + + +3962 +09 +Vertical sounding sequences (conventional data) +309023 +(Lidar sequence) +Backscatter data section +027079 +Horizontal width of sampled volume +Operational + + +3964 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) (see Note 1) +015004 +Ozone sounding correction factor (CF) +Operational + + +3965 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +015005 +Ozone p +Operational + + +3966 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +104000 +Delayed replication of 4 descriptors +Operational + + +3967 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +031001 +Delayed descriptor replication factor +Operational + + +3968 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +004015 +Time increment +Since launch time, if needed, in minutes +Operational + + +3969 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +008006 +Ozone vertical sounding significance +Operational + + +3970 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +007004 +Pressure +Operational + + +3971 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +015003 +Measured ozone partial pressure (sounding) +Operational + + +3979 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +015004 +Ozone sounding correction factor (CF) +Operational + + +3980 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +015005 +Ozone p +Operational + + +3981 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +104000 +Delayed replication of 4 descriptors +Operational + + +3982 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +031001 +Delayed descriptor replication factor +Operational + + +3983 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +004025 +Time period or displacement +Since launch time in minutes +Operational + + +3984 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +008006 +Ozone vertical sounding significance +Operational + + +3985 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +007004 +Pressure +Operational + + +3986 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +015003 +Measured ozone partial pressure (sounding) +Operational + + +3994 +09 +Vertical sounding sequences (conventional data) +309040 +(Ozone sounding not coupled to a ground-based spectrophotometer) (see Note 2) +301075 +Sounding identification +Operational + + +3995 +09 +Vertical sounding sequences (conventional data) +309040 +(Ozone sounding not coupled to a ground-based spectrophotometer) +301076 +Ozone sounding instrumentation +Operational + + +3996 +09 +Vertical sounding sequences (conventional data) +309040 +(Ozone sounding not coupled to a ground-based spectrophotometer) +309030 +Ozone sonde flight data +Operational + + +3997 +09 +Vertical sounding sequences (conventional data) +309041 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) (see Note 2) +307041 +Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation +Description of the ground-based part +Operational + + +3998 +09 +Vertical sounding sequences (conventional data) +309041 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +3999 +09 +Vertical sounding sequences (conventional data) +309041 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +301076 +Ozone sounding instrumentation +Operational + + +4000 +09 +Vertical sounding sequences (conventional data) +309041 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +309030 +Ozone sonde flight data +Operational + + +4001 +09 +Vertical sounding sequences (conventional data) +309042 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) (see Note 2) +307042 +Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations +Description of the ground-based part +Operational + + +4002 +09 +Vertical sounding sequences (conventional data) +309042 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +4003 +09 +Vertical sounding sequences (conventional data) +309042 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +301076 +Ozone sounding instrumentation +Operational + + +4004 +09 +Vertical sounding sequences (conventional data) +309042 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +309030 +Ozone sonde flight data +Operational + + +4005 +09 +Vertical sounding sequences (conventional data) +309043 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) (see Note 2) +307043 +Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation +Description of the ground-based part +Operational + + +4006 +09 +Vertical sounding sequences (conventional data) +309043 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +4007 +09 +Vertical sounding sequences (conventional data) +309043 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +301076 +Ozone sounding instrumentation +Operational + + +4008 +09 +Vertical sounding sequences (conventional data) +309043 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +309030 +Ozone sonde flight data +Operational + + +4009 +09 +Vertical sounding sequences (conventional data) +309044 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) (see Note 2) +307044 +Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations +Description of the ground-based part +Operational + + +4010 +09 +Vertical sounding sequences (conventional data) +309044 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +4011 +09 +Vertical sounding sequences (conventional data) +309044 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +301076 +Ozone sounding instrumentation +Operational + + +4012 +09 +Vertical sounding sequences (conventional data) +309044 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +309030 +Ozone sonde flight data +Operational + + +4013 +09 +Vertical sounding sequences (conventional data) +309045 +(Ozone sounding not coupled to a ground-based spectrophotometer) +301075 +Sounding identification +Operational + + +4014 +09 +Vertical sounding sequences (conventional data) +309045 +(Ozone sounding not coupled to a ground-based spectrophotometer) +301076 +Ozone sounding instrumentation +Operational + + +4015 +09 +Vertical sounding sequences (conventional data) +309045 +(Ozone sounding not coupled to a ground-based spectrophotometer) +309031 +Ozone sonde flight data +Operational + + +4016 +09 +Vertical sounding sequences (conventional data) +309046 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +307041 +Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation +Description of the ground-based part +Operational + + +4017 +09 +Vertical sounding sequences (conventional data) +309046 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +4018 +09 +Vertical sounding sequences (conventional data) +309046 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +301076 +Ozone sounding instrumentation +Operational + + +4019 +09 +Vertical sounding sequences (conventional data) +309046 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +309031 +Ozone sonde flight data +Operational + + +4020 +09 +Vertical sounding sequences (conventional data) +309047 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +307042 +Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations +Description of the ground-based part +Operational + + +4021 +09 +Vertical sounding sequences (conventional data) +309047 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +4022 +09 +Vertical sounding sequences (conventional data) +309047 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +301076 +Ozone sounding instrumentation +Operational + + +4023 +09 +Vertical sounding sequences (conventional data) +309047 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +309031 +Ozone sonde flight data +Operational + + +4024 +09 +Vertical sounding sequences (conventional data) +309048 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +307043 +Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation +Description of the ground-based part +Operational + + +4025 +09 +Vertical sounding sequences (conventional data) +309048 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +4026 +09 +Vertical sounding sequences (conventional data) +309048 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +301076 +Ozone sounding instrumentation +Operational + + +4027 +09 +Vertical sounding sequences (conventional data) +309048 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +309031 +Ozone sonde flight data +Operational + + +4028 +09 +Vertical sounding sequences (conventional data) +309049 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +307044 +Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations +Description of the ground-based part +Operational + + +4029 +09 +Vertical sounding sequences (conventional data) +309049 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +4030 +09 +Vertical sounding sequences (conventional data) +309049 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +301076 +Ozone sounding instrumentation +Operational + + +4031 +09 +Vertical sounding sequences (conventional data) +309049 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +309031 +Ozone sonde flight data +Operational + + +4032 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +301110 +Identification of launch site and instrumentation for wind measurements +Operational + + +4033 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +301113 +Date/time of launch +Operational + + +4034 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +301114 +Horizontal and vertical coordinates of launch site +Operational + + +4035 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +101000 +Delayed replication of 1 descriptor +Operational + + +4036 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +031002 +Extended delayed descriptor replication factor +Operational + + +4037 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +303050 +Wind data at a pressure level with radiosonde position +Operational + + +4038 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +101000 +Delayed replication of 1 descriptor +Operational + + +4039 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +031001 +Delayed descriptor replication factor +Operational + + +4040 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +303051 +Wind shear data at a pressure level with radiosonde position +Operational + + +4042 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +301110 +Identification of launch site and instrumentation for wind measurements +Operational + + +4043 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +301113 +Date/time of launch +Operational + + +4044 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +301114 +Horizontal and vertical coordinates of launch site +Operational + + +4045 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +101000 +Delayed replication of 1 descriptor +Operational + + +4046 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +031002 +Extended delayed descriptor replication factor +Operational + + +4047 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +303052 +Wind data at a height level with radiosonde position +Operational + + +4048 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +101000 +Delayed replication of 1 descriptor +Operational + + +4049 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +031001 +Delayed descriptor replication factor +Operational + + +4050 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +303053 +Wind shear data at a height level with radiosonde position +Operational + + +4052 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +301111 +Identification of launch site and instrumentation for P, T, U and wind measurements +Operational + + +4053 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +301113 +Date/time of launch +Operational + + +4054 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +301114 +Horizontal and vertical coordinates of launch site +Operational + + +4055 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +302049 +Cloud information reported with vertical soundings +Operational + + +4056 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +022043 +Sea/water temperature +Operational + + +4057 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +101000 +Delayed replication of 1 descriptor +Operational + + +4058 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +031002 +Extended delayed descriptor replication factor +Operational + + +4059 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +303054 +Temperature, dewpoint and wind data at a pressure level with radiosonde position +Operational + + +4060 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +101000 +Delayed replication of 1 descriptor +Operational + + +4061 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +031001 +Delayed descriptor replication factor +Operational + + +4062 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +303051 +Wind shear data at a pressure level with radiosonde position +Operational + + +4064 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +301112 +Identification of launch point and instrumentation of dropsonde +Operational + + +4065 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +301113 +Date/time of launch +Operational + + +4066 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +301114 +Horizontal and vertical coordinates of launch site +Operational + + +4067 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +101000 +Delayed replication of 1 descriptor +Operational + + +4068 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +031002 +Extended delayed descriptor replication factor +Operational + + +4069 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +303054 +Temperature, dewpoint and wind data at a pressure level with radiosonde position +Operational + + +4070 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +101000 +Delayed replication of 1 descriptor +Operational + + +4071 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +031001 +Delayed descriptor replication factor +Operational + + +4072 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +303051 +Wind shear data at a pressure level with radiosonde position +Operational + + +4074 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +301001 +WMO block and station numbers +Identification of launch site +Operational + + +4075 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +001011 +Ship or mobile land station identifier +Ship's call sign +Operational + + +4076 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +301011 +Year, month, day +Operational + + +4077 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +301012 +Hour, minute +Operational + + +4078 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4079 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +007030 +Height of station ground above mean sea level +Operational + + +4080 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +007031 +Height of barometer above mean sea level +Operational + + +4081 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +007007 +Height +Release of sonde above mean sea level +Operational + + +4082 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +004023 +Time period or displacement +Number of days in the month +Operational + + +4083 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +004059 +Times of observation used to compute the reported mean values +Operational + + +4084 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +115000 +Delayed replication of 15 descriptors +Operational + + +4085 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +031001 +Delayed descriptor replication factor +Operational + + +4086 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008001 +Vertical sounding significance +Operational + + +4087 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008023 +First-order statistics += 4 Mean value +Operational + + +4088 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +007004 +Pressure +Operational + + +4089 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +010009 +Geopotential height +Operational + + +4090 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +012101 +Temperature/air temperature +Operational + + +4091 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +012103 +Dewpoint temperature +Operational + + +4092 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008023 +First-order statistics += 32 Vector mean +Operational + + +4093 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +011001 +Wind direction +Operational + + +4094 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +011002 +Wind speed +Operational + + +4095 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008023 +First-order statistics +Set to missing +Operational + + +4096 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +011019 +Steadiness of wind +Operational + + +4097 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008050 +Qualifier for number of missing values in calculation of statistic += 2 Temperature +Operational + + +4098 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +4099 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008050 +Qualifier for number of missing values in calculation of statistic += 9 Wind +Operational + + +4100 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +4127 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +301111 +Identification of launch site and instrumentation for P, T, U and wind measurements +Operational + + +4128 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +025061 +Software identification and version number +Operational + + +4129 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +001081 +Radiosonde serial number +Operational + + +4130 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +001082 +Radiosonde ascension number +Operational + + +4131 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002067 +Radiosonde operating frequency +Operational + + +4132 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002095 +Type of pressure sensor +Operational + + +4133 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002096 +Type of temperature sensor +Operational + + +4134 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002097 +Type of humidity sensor +Operational + + +4135 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002081 +Type of balloon +Operational + + +4136 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002082 +Weight of balloon +Operational + + +4137 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002084 +Type of gas used in balloon +Operational + + +4138 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002191 +Geopotential height calculation +Operational + + +4139 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +301113 +Date/time of launch +(see Note 3) +Operational + + +4140 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +301114 +Horizontal and vertical coordinates of launch site +Operational + + +4141 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +010004 +Pressure +Operational + + +4142 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +302032 +Temperature and humidity data +Operational + + +4143 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +4144 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002002 +Type of instrumentation for wind measurement +Operational + + +4145 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +011001 +Wind direction +Operational + + +4146 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +011002 +Wind speed +Operational + + +4147 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +4148 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +020003 +Present weather +Operational + + +4149 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +302049 +Cloud information reported with vertical soundings +Operational + + +4150 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +022043 +Sea/water temperature +Operational + + +4151 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +101000 +Delayed replication of 1 descriptor +Operational + + +4152 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +031002 +Extended delayed descriptor replication factor +Operational + + +4153 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +303055 +Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position +(see Notes 4, 5 and 6) +Operational + + +4155 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +301150 +WIGOS identifier +Operational + + +4156 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +301111 +Identification of launch site and instrumentation for P, T, U and wind measurements +Operational + + +4157 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +301128 +Additional information on radiosonde ascent +Valid also for decent +Operational + + +4158 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +301113 +Date/time of launch +(see Note 10) +Operational + + +4159 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +008091 +Coordinates significance += 2 Start of observation +Operational + + +4160 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4161 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +007007 +Height +Begin of descending of radiosonde above mean sea level +Operational + + +4162 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +008091 +Coordinates significance +Set to missing (cancel) +Operational + + +4163 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +101000 +Delayed replication of 1 descriptor +Operational + + +4164 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +031002 +Extended delayed descriptor replication factor +Operational + + +4165 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +303056 +Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height +(see Notes 11 and 12) +Operational + + +4166 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +101000 +Delayed replication of 1 descriptor +Operational + + +4167 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +031001 +Delayed descriptor replication factor +Operational + + +4168 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +303051 +Wind shear data at a pressure level with radiosonde position +Operational + + +4169 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +301150 +WIGOS identifier +Operational + + +4170 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +301111 +Identification of launch site and instrumentation for P, T, U and wind measurements +Operational + + +4171 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +301128 +Additional information on radiosonde ascent +Operational + + +4172 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +301113 +Date/time of launch +Operational + + +4173 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +301114 +Horizontal and vertical coordinates of launch site +Operational + + +4174 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +302049 +Cloud information reported with vertical soundings +Operational + + +4175 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +022043 +Sea/water temperature +Operational + + +4176 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +101000 +Delayed replication of 1 descriptor +Operational + + +4177 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +031002 +Extended delayed descriptor replication factor +Operational + + +4178 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +303056 +Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height +Operational + + +4179 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +101000 +Delayed replication of 1 descriptor +Operational + + +4180 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +031001 +Delayed descriptor replication factor +Operational + + +4181 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +303051 +Wind shear data at a pressure level with radiosonde position +Operational + + +4182 +09 +Vertical sounding sequences (conventional data) +309060 +(Radiosonde complete registration and surface observation) +301123 +Radiosonde full header information +Operational + + +4183 +09 +Vertical sounding sequences (conventional data) +309060 +(Radiosonde complete registration and surface observation) +301121 +Radiosonde launch point location +Operational + + +4184 +09 +Vertical sounding sequences (conventional data) +309060 +(Radiosonde complete registration and surface observation) +302050 +Radiosonde surface observation +Operational + + +4185 +09 +Vertical sounding sequences (conventional data) +309060 +(Radiosonde complete registration and surface observation) +303040 +Radiosonde duration of flight and termination information +Operational + + +4186 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +301120 +Radiosonde abbreviated header and launch information +Operational + + +4187 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +008041 +Data significance += 6 Flight level observation +Operational + + +4188 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +301122 +Date/time (to hundredths of second) +Operational + + +4189 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +201131 +Change data width +Operational + + +4190 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +202129 +Change scale +Operational + + +4191 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +025069 +Flight level pressure corrections +Operational + + +4192 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +007004 +Pressure +Operational + + +4193 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +202000 +Change scale +Cancel +Operational + + +4194 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +201000 +Change data width +Cancel +Operational + + +4195 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033007 +Per cent confidence +Pressure +Operational + + +4196 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033035 +Manual/automatic quality control +Pressure +Operational + + +4197 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033015 +Data quality check indicator +Pressure +Operational + + +4198 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +013009 +Relative humidity +Operational + + +4199 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033007 +Per cent confidence +Relative humidity +Operational + + +4200 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033035 +Manual/automatic quality control +Relative humidity +Operational + + +4201 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033015 +Data quality check indicator +Relative humidity +Operational + + +4202 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +002013 +Solar and infrared radiation correction +Operational + + +4203 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +012101 +Temperature/air temperature +Operational + + +4204 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033007 +Per cent confidence +Temperature +Operational + + +4205 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033035 +Manual/automatic quality control +Temperature +Operational + + +4206 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033015 +Data quality check indicator +Temperature +Operational + + +4208 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +301120 +Radiosonde abbreviated header and launch information +Operational + + +4209 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +008041 +Data significance += 6 Flight level observation +Operational + + +4210 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +301122 +Date/time (to hundredths of second) +Operational + + +4211 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +005001 +Latitude (high accuracy) +Operational + + +4212 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033035 +Manual/automatic quality control +Latitude +Operational + + +4213 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033015 +Data quality check indicator +Latitude +Operational + + +4214 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +006001 +Longitude (high accuracy) +Operational + + +4215 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033035 +Manual/automatic quality control +Longitude +Operational + + +4216 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033015 +Data quality check indicator +Longitude +Operational + + +4217 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +007007 +Height +Operational + + +4218 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033035 +Manual/automatic quality control +Height +Operational + + +4219 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033015 +Data quality check indicator +Height +Operational + + +4220 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +011003 +u-component +Operational + + +4221 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033035 +Manual/automatic quality control +u-component +Operational + + +4222 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033015 +Data quality check indicator +u-component +Operational + + +4223 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +011004 +v-component +Operational + + +4224 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033035 +Manual/automatic quality control +v-component +Operational + + +4225 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033015 +Data quality check indicator +v-component +Operational + + +4226 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033007 +Per cent confidence +Raw GPS unsmoothed wind +Operational + + +4227 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +301120 +Radiosonde abbreviated header and launch information +Operational + + +4228 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +008041 +Data significance += 6 Flight level observation +Operational + + +4229 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +301122 +Date/time (to hundredths of second) +Operational + + +4230 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +005001 +Latitude (high accuracy) +Operational + + +4231 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033035 +Manual/automatic quality control +Latitude +Operational + + +4232 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033015 +Data quality check indicator +Latitude +Operational + + +4233 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +006001 +Longitude (high accuracy) +Operational + + +4234 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033035 +Manual/automatic quality control +Longitude +Operational + + +4235 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033015 +Data quality check indicator +Longitude +Operational + + +4236 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +007007 +Height +Operational + + +4237 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033035 +Manual/automatic quality control +Height +Operational + + +4238 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033015 +Data quality check indicator +Height +Operational + + +4239 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +011003 +u-component +Operational + + +4240 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033035 +Manual/automatic quality control +u-component +Operational + + +4241 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033015 +Data quality check indicator +u-component +Operational + + +4242 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +011004 +v-component +Operational + + +4243 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033035 +Manual/automatic quality control +v-component +Operational + + +4244 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033015 +Data quality check indicator +v-component +Operational + + +4245 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033007 +Per cent confidence +Raw GPS smoothed wind +Operational + + +4246 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +301120 +Radiosonde abbreviated header and launch information +Operational + + +4247 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +008041 +Data significance += 6 Flight level observation +Operational + + +4248 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +301122 +Date/time (to hundredths of second) +Operational + + +4249 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +201131 +Change data width +Operational + + +4250 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +202129 +Change scale +Operational + + +4251 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +104002 +Replicate 4 descriptors 2 times +Operational + + +4252 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +025069 +Flight level pressure corrections +Operational + + +4253 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +007004 +Pressure +Operational + + +4254 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033035 +Manual/automatic quality control +Pressure +Operational + + +4255 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033015 +Data quality check indicator +Pressure +Operational + + +4256 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +013003 +Relative humidity +Operational + + +4257 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033035 +Manual/automatic quality control +Relative humidity +Operational + + +4258 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033015 +Data quality check indicator +Relative humidity +Operational + + +4259 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +202000 +Change scale +Cancel +Operational + + +4260 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +201000 +Change data width +Cancel +Operational + + +4261 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +104002 +Replicate 4 descriptors 2 times +Operational + + +4262 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +002013 +Solar and infrared radiation correction +Operational + + +4263 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +012101 +Temperature/air temperature +Operational + + +4264 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033035 +Manual/automatic quality control +Temperature +Operational + + +4265 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033015 +Data quality check indicator +Temperature +Operational + + +4266 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +012103 +Dewpoint temperature +Operational + + +4267 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033035 +Manual/automatic quality control +Dewpoint temperature +Operational + + +4268 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033015 +Data quality check indicator +Dewpoint temperature +Operational + + +4269 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +010009 +Geopotential height +Operational + + +4270 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033035 +Manual/automatic quality control +Geopotential height +Operational + + +4271 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033015 +Data quality check indicator +Geopotential height +Operational + + +4273 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +301120 +Radiosonde abbreviated header and launch information +Operational + + +4274 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +008041 +Data significance += 6 Flight level observation +Operational + + +4275 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +301122 +Date/time (to hundredths of second) +Operational + + +4276 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +005001 +Latitude (high accuracy) +Operational + + +4277 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033035 +Manual/automatic quality control +Latitude +Operational + + +4278 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033015 +Data quality check indicator +Latitude +Operational + + +4279 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +006001 +Longitude (high accuracy) +Operational + + +4280 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033035 +Manual/automatic quality control +Longitude +Operational + + +4281 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033015 +Data quality check indicator +Longitude +Operational + + +4282 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +007007 +Height +Operational + + +4283 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033035 +Manual/automatic quality control +Height +Operational + + +4284 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033015 +Data quality check indicator +Height +Operational + + +4285 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +011003 +u-component +Operational + + +4286 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033035 +Manual/automatic quality control +u-component +Operational + + +4287 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033015 +Data quality check indicator +u-component +Operational + + +4288 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +011004 +v-component +Operational + + +4289 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033035 +Manual/automatic quality control +v-component +Operational + + +4290 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033015 +Data quality check indicator +v-component +Operational + + +4291 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +301120 +Radiosonde abbreviated header and launch information +Operational + + +4292 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +008041 +Data significance += 6 Flight level observation +Operational + + +4293 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +301122 +Date/time (to hundredths of second) +Operational + + +4294 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +008040 +Flight level significance +Operational + + +4295 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +201131 +Change data width +Operational + + +4296 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +202129 +Change scale +Operational + + +4297 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +025069 +Flight level pressure corrections +Operational + + +4298 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +007004 +Pressure +Operational + + +4299 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +013003 +Relative humidity +Operational + + +4300 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +202000 +Change scale +Cancel +Operational + + +4301 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +201000 +Change data width +Cancel +Operational + + +4302 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +002013 +Solar and infrared radiation correction +Operational + + +4303 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +012101 +Temperature/air temperature +Operational + + +4304 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +012103 +Dewpoint temperature +Operational + + +4305 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +010009 +Geopotential height +Operational + + +4306 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +010007 +Height +Operational + + +4307 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +011002 +Wind speed +Operational + + +4308 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +011001 +Wind direction +Operational + + +4310 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Identification +001035 +Originating centre +Operational + + +4311 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Identification +001032 +Generating application +Operational + + +4312 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Identification +001015 +Station or site name +Operational + + +4313 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Identification +001063 +ICAO location indicator +Operational + + +4314 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Identification +301001 +WMO block and station numbers +Operational + + +4315 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +301011 +Year, month, day +Operational + + +4316 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +301012 +Hour, minute +Reference time of the forecast (T-zero) +Operational + + +4317 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +301021 +Latitude/longitude (high accuracy) +Operational + + +4318 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +207001 +Increase scale, reference value and data width +Increase scale factor by 1; reference value and data width are recalculated in accordance with the Table C specification of operator 2 07 YYY +Operational + + +4319 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +010001 +Height of land surface +Station elevation (non coordinate) +(see Note 7) +Operational + + +4320 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4321 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +008086 +Vertical significance for NWP +Bit 9 set to 1 Virtual station height +Operational + + +4322 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +007030 +Height of station ground above mean sea level +Elevation of model terrain at the latitude/longitude of station. As qualified by 0 08 086, this value is both station and model specific. +Operational + + +4323 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Vertical profile metadata +025031 +NWP-generated vertical profile thinning method +(see Note 8) +Operational + + +4324 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Vertical profile metadata +008021 +Time significance += 4 Forecast, = 16 Analysis, = 27 First guess +Operational + + +4325 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Vertical profile metadata +004014 +Time increment +Validity time of the forecast expressed as a Delta T from reference time. In the case of an analysis or 00 hour forecast, the value is set to zero +Operational + + +4326 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Point data at station height (including column-integrated data) +010004 +Pressure +Operational + + +4327 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Point data at station height (including column-integrated data) +010051 +Pressure reduced to mean sea level +Operational + + +4328 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Point data at station height (including column-integrated data) +010009 +Geopotential height +Operational + + +4329 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Point data at station height (including column-integrated data) +020010 +Cloud cover (total) +Operational + + +4330 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Point data at station height (including column-integrated data) +013095 +Total column water vapour +Operational + + +4331 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Replication loop for levels +128000 +Delayed replication of 28 descriptors +Operational + + +4332 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Replication loop for levels +031002 +Extended delayed descriptor replication factor +The number of levels used in the vertical profile is determined by this replication. The number of levels is discretionary and comprises all agl levels and pressure levels +Operational + + +4333 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +113000 +Delayed replication of 13 descriptors +Operational + + +4334 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +031000 +Short delayed descriptor replication factor += 1 Vertical coordinate is pressure, = 0 Otherwise +Operational + + +4335 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +008086 +Vertical significance for NWP +Bit 1 set to 0 and other bits as appropriate +Operational + + +4336 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +007004 +Pressure +(see Note 9) +Operational + + +4337 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +011001 +Wind direction +Degrees true +Operational + + +4338 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +011002 +Wind speed +m/s +Operational + + +4339 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +012101 +Temperature/air temperature +Operational + + +4340 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +012102 +Wet-bulb temperature +Operational + + +4341 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +012103 +Dewpoint temperature +Operational + + +4342 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +010009 +Geopotential height +Operational + + +4343 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +103000 +Delayed replication of 3 descriptors +Operational + + +4344 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +031000 +Short delayed descriptor replication factor += 1 Optional enhanced model data is to be included +Operational + + +4345 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +011021 +Relative vorticity +Operational + + +4346 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +011022 +Divergence +Operational + + +4347 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +011005 +w-component +Vertical motion +Operational + + +4348 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 10 metres above ground level +104000 +Delayed replication of 4 descriptors +Operational + + +4349 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 10 metres above ground level +031000 +Short delayed descriptor replication factor += 1 Vertical coordinate is 10 metres above ground level, = 0 Otherwise +Operational + + +4350 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 10 metres above ground level +008086 +Vertical significance for NWP +Bit 1 set to 1, bit 8 set to 1 +Operational + + +4351 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 10 metres above ground level +007006 +Height above station += 10 m +Operational + + +4352 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 10 metres above ground level +011001 +Wind direction +Degrees true +Operational + + +4353 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 10 metres above ground level +011002 +Wind speed +m/s +Operational + + +4354 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 2 metres above ground level +105000 +Delayed replication of 5 descriptors +Operational + + +4355 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 2 metres above ground level +031000 +Short delayed descriptor replication factor += 1 Vertical coordinate is 2 metres above ground level, = 0 Otherwise +Operational + + +4356 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 2 metres above ground level +008086 +Vertical significance for NWP +Operational + + +4357 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 2 metres above ground level +007006 +Height above station += 2 m +Operational + + +4358 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 2 metres above ground level +012101 +Temperature/air temperature +Operational + + +4359 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 2 metres above ground level +012102 +Wet-bulb temperature +Operational + + +4360 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 2 metres above ground level +012103 +Dewpoint temperature +Operational + + +4362 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +301001 +WMO block and station numbers +Operational + + +4363 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +002014 +Tracking technique/status of system used +Operational + + +4364 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +002003 +Type of measuring equipment used +Operational + + +4365 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +301113 +Date/time of launch +Operational + + +4366 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +301114 +Horizontal and vertical coordinates of launch site +Operational + + +4367 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +4368 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +007030 +Height of station ground above mean sea level +Operational + + +4369 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +007007 +Height +Release of balloon +Operational + + +4370 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +103000 +Delayed replication of 3 descriptors +Operational + + +4371 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +031001 +Delayed descriptor replication factor +Operational + + +4372 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +007009 +Geopotential height +Operational + + +4373 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +011001 +Wind direction +Operational + + +4374 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +011002 +Wind speed +Operational + + +4387 +10 +Vertical sounding sequences (satellite data) +310001 +(Satellite - brightness temperature) +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +4388 +10 +Vertical sounding sequences (satellite data) +310001 +(Satellite - brightness temperature) +303031 +Significance data, land/sea, skin temperature +Operational + + +4389 +10 +Vertical sounding sequences (satellite data) +310001 +(Satellite - brightness temperature) +303032 +Cloud +Operational + + +4390 +10 +Vertical sounding sequences (satellite data) +310001 +(Satellite - brightness temperature) +101026 +Replicate 1 descriptor 26 times +Operational + + +4391 +10 +Vertical sounding sequences (satellite data) +310001 +(Satellite - brightness temperature) +303025 +Satellite channel and brightness temperature +Operational + + +4392 +10 +Vertical sounding sequences (satellite data) +310002 +(Satellite - low level) +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +4393 +10 +Vertical sounding sequences (satellite data) +310002 +(Satellite - low level) +303031 +Significance data, land/sea, skin temperature +Operational + + +4394 +10 +Vertical sounding sequences (satellite data) +310002 +(Satellite - low level) +303032 +Cloud +Operational + + +4395 +10 +Vertical sounding sequences (satellite data) +310002 +(Satellite - low level) +101009 +Replicate 1 descriptor 9 times +Operational + + +4396 +10 +Vertical sounding sequences (satellite data) +310002 +(Satellite - low level) +303023 +Layer mean temperature +Operational + + +4397 +10 +Vertical sounding sequences (satellite data) +310003 +(Satellite - high level) +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +4398 +10 +Vertical sounding sequences (satellite data) +310003 +(Satellite - high level) +303031 +Significance data, land/sea, skin temperature +Operational + + +4399 +10 +Vertical sounding sequences (satellite data) +310003 +(Satellite - high level) +303032 +Cloud +Operational + + +4400 +10 +Vertical sounding sequences (satellite data) +310003 +(Satellite - high level) +101006 +Replicate 1 descriptor 6 times +Operational + + +4401 +10 +Vertical sounding sequences (satellite data) +310003 +(Satellite - high level) +303023 +Layer mean temperature +Operational + + +4402 +10 +Vertical sounding sequences (satellite data) +310004 +(Satellite - precipitable water) +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +4403 +10 +Vertical sounding sequences (satellite data) +310004 +(Satellite - precipitable water) +303031 +Significance data, land/sea, skin temperature +Operational + + +4404 +10 +Vertical sounding sequences (satellite data) +310004 +(Satellite - precipitable water) +303032 +Cloud +Operational + + +4405 +10 +Vertical sounding sequences (satellite data) +310004 +(Satellite - precipitable water) +101003 +Replicate 1 descriptor 3 times +Operational + + +4406 +10 +Vertical sounding sequences (satellite data) +310004 +(Satellite - precipitable water) +303024 +Precipitable water +Operational + + +4407 +10 +Vertical sounding sequences (satellite data) +310005 +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +4408 +10 +Vertical sounding sequences (satellite data) +310005 +303031 +Significance data, land/sea, skin temperature +Operational + + +4409 +10 +Vertical sounding sequences (satellite data) +310005 +303033 +Cloud +Operational + + +4410 +10 +Vertical sounding sequences (satellite data) +310005 +101000 +Delayed replication of 1 descriptor +Operational + + +4411 +10 +Vertical sounding sequences (satellite data) +310005 +031001 +Delayed descriptor replication factor +Operational + + +4412 +10 +Vertical sounding sequences (satellite data) +310005 +303025 +Satellite channel and brightness temperature +Operational + + +4413 +10 +Vertical sounding sequences (satellite data) +310006 +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +4414 +10 +Vertical sounding sequences (satellite data) +310006 +303031 +Significance data, land/sea, skin temperature +Operational + + +4415 +10 +Vertical sounding sequences (satellite data) +310006 +303033 +Cloud +Operational + + +4416 +10 +Vertical sounding sequences (satellite data) +310006 +101000 +Delayed replication of 1 descriptor +Operational + + +4417 +10 +Vertical sounding sequences (satellite data) +310006 +031001 +Delayed descriptor replication factor +Operational + + +4418 +10 +Vertical sounding sequences (satellite data) +310006 +303023 +Layer mean temperature +Operational + + +4419 +10 +Vertical sounding sequences (satellite data) +310007 +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +4420 +10 +Vertical sounding sequences (satellite data) +310007 +303031 +Significance data, land/sea, skin temperature +Operational + + +4421 +10 +Vertical sounding sequences (satellite data) +310007 +303033 +Cloud +Operational + + +4422 +10 +Vertical sounding sequences (satellite data) +310007 +101000 +Delayed replication of 1 descriptor +Operational + + +4423 +10 +Vertical sounding sequences (satellite data) +310007 +031001 +Delayed descriptor replication factor +Operational + + +4424 +10 +Vertical sounding sequences (satellite data) +310007 +303024 +Precipitable water +Operational + + +4425 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +310011 +ATOVS field of view variables +Operational + + +4426 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +101019 +Replicate 1 descriptor 19 times +Operational + + +4427 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +310012 +ATOVS channel variables +Operational + + +4428 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +4429 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +025079 +Albedo-radiance solar filtered irradiance for ATOVS +Operational + + +4430 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +025080 +Albedo-radiance equivalent filter width for ATOVS +Operational + + +4431 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +033032 +Channel quality flags for ATOVS +Operational + + +4432 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +014045 +Channel radiance +Operational + + +4433 +10 +Vertical sounding sequences (satellite data) +310009 +(ATOVS AMSU-A report) +310011 +ATOVS field of view variables +Operational + + +4434 +10 +Vertical sounding sequences (satellite data) +310009 +(ATOVS AMSU-A report) +101015 +Replicate 1 descriptor 15 times +Operational + + +4435 +10 +Vertical sounding sequences (satellite data) +310009 +(ATOVS AMSU-A report) +310012 +ATOVS channel variables +Operational + + +4436 +10 +Vertical sounding sequences (satellite data) +310010 +(ATOVS AMSU-B/MHS report) +310011 +ATOVS field of view variables +Operational + + +4437 +10 +Vertical sounding sequences (satellite data) +310010 +(ATOVS AMSU-B/MHS report) +101005 +Replicate 1 descriptor 5 times +Operational + + +4438 +10 +Vertical sounding sequences (satellite data) +310010 +(ATOVS AMSU-B/MHS report) +310012 +ATOVS channel variables +Operational + + +4439 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +008070 +Vertical sounding product qualifier +Operational + + +4440 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +001033 +Identification of originating/generating centre +Operational + + +4441 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +001034 +Identification of originating/generating sub-centre +Operational + + +4442 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +008070 +Vertical sounding product qualifier +Operational + + +4443 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +001033 +Identification of originating/generating centre +Operational + + +4444 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +001034 +Identification of originating/generating sub-centre +Operational + + +4445 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +001007 +Satellite identifier +Operational + + +4446 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +002048 +Satellite sensor indicator +Operational + + +4447 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +005040 +Orbit number +Operational + + +4448 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +025075 +Satellite antenna corrections version number +Operational + + +4449 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +201133 +Change data width +Operational + + +4450 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +005041 +Scan line number +Operational + + +4451 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +201000 +Change data width +Operational + + +4452 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +005043 +Field of view number +Operational + + +4453 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +025070 +Major frame count +Operational + + +4454 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +033030 +Scan line status flags for ATOVS +Operational + + +4455 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +033031 +Scan line quality flags for ATOVS +Operational + + +4456 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +004001 +Year +Operational + + +4457 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +004002 +Month +Operational + + +4458 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +004003 +Day +Operational + + +4459 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +004004 +Hour +Operational + + +4460 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +004005 +Minute +Operational + + +4461 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +202131 +Change scale +Operational + + +4462 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +201138 +Change data width +Operational + + +4463 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +004006 +Second +Operational + + +4464 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +201000 +Change data width +Operational + + +4465 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +202000 +Change scale +Operational + + +4466 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +005001 +Latitude (high accuracy) +Operational + + +4467 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +006001 +Longitude (high accuracy) +Operational + + +4468 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +202126 +Change scale +Operational + + +4469 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +007001 +Height of station +Operational + + +4470 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +202000 +Change scale +Operational + + +4471 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +007024 +Satellite zenith angle +Operational + + +4472 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +005021 +Bearing or azimuth +Satellite azimuth +Operational + + +4473 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +007025 +Solar zenith angle +Operational + + +4474 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +005022 +Solar azimuth +Operational + + +4475 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +033033 +Field of view quality flags for ATOVS +Operational + + +4476 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +002151 +Radiometer identifier +Operational + + +4477 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +012064 +Instrument temperature +Operational + + +4478 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +002151 +Radiometer identifier +Operational + + +4479 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +012064 +Instrument temperature +Operational + + +4480 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +002151 +Radiometer identifier +Operational + + +4481 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +012064 +Instrument temperature +Operational + + +4482 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +002151 +Radiometer identifier +Operational + + +4483 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +012064 +Instrument temperature +Operational + + +4484 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +4485 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +025076 +Log10 of (temperature-radiance central wave number) for ATOVS +Operational + + +4486 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +025077 +Bandwidth correction coefficient 1 +Operational + + +4487 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +025078 +Bandwidth correction coefficient 2 +Operational + + +4488 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +033032 +Channel quality flags for ATOVS +Operational + + +4489 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +201132 +Change data width +Operational + + +4490 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +202129 +Change scale +Operational + + +4491 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +012063 +Brightness temperature +Operational + + +4492 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +202000 +Change scale +Operational + + +4493 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +201000 +Change data width +Operational + + +4494 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +001007 +Satellite identifier +Operational + + +4495 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +005040 +Orbit number +Operational + + +4496 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +004001 +Year +Operational + + +4497 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +004002 +Month +Operational + + +4498 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +004003 +Day +Operational + + +4499 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +004004 +Hour +Operational + + +4500 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +004005 +Minute +Operational + + +4501 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +004006 +Second +Operational + + +4502 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +005001 +Latitude (high accuracy) +Operational + + +4503 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +006001 +Longitude (high accuracy) +Operational + + +4504 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +007025 +Solar zenith angle +Operational + + +4505 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +005043 +Field of view number +Operational + + +4506 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +025085 +Fraction of clear pixels in HIRS FOV +Operational + + +4507 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +201131 +Change data width +Operational + + +4508 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +202129 +Change scale +Operational + + +4509 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +4510 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008023 +First-order statistics +Operational + + +4511 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4512 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +014027 +Albedo +Operational + + +4513 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4514 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +014027 +Albedo +Operational + + +4515 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +4516 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008023 +First-order statistics +Operational + + +4517 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4518 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +014027 +Albedo +Operational + + +4519 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4520 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +014027 +Albedo +Operational + + +4521 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +4522 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008023 +First-order statistics +Operational + + +4523 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4524 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +014027 +Albedo +Operational + + +4525 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4526 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +014027 +Albedo +Operational + + +4527 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +202000 +Change scale +Operational + + +4528 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +201000 +Change data width +Operational + + +4529 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +201132 +Change data width +Operational + + +4530 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +202129 +Change scale +Operational + + +4531 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +4532 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008023 +First-order statistics +Operational + + +4533 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4534 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4535 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4536 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4537 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +4538 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008023 +First-order statistics +Operational + + +4539 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4540 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4541 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4542 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4543 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008023 +First-order statistics +Operational + + +4544 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4545 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4546 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4547 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4548 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +4549 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008023 +First-order statistics +Operational + + +4550 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4551 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4552 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4553 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4554 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +202000 +Change scale +Operational + + +4555 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +201000 +Change data width +Operational + + +4556 +10 +Vertical sounding sequences (satellite data) +310014 +(Satellite - geostationary wind data) +301072 +Satellite identification +Satellite identification, date/time, latitude/longitude +Operational + + +4557 +10 +Vertical sounding sequences (satellite data) +310014 +(Satellite - geostationary wind data) +303041 +Wind sequence +Operational + + +4558 +10 +Vertical sounding sequences (satellite data) +310014 +(Satellite - geostationary wind data) +304011 +GOES-I/M info +Operational + + +4559 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +301072 +Satellite identification +Operational + + +4560 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +007024 +Satellite zenith angle +Operational + + +4561 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +010002 +Height +Operational + + +4562 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +303041 +Wind sequence +Operational + + +4563 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +101003 +Replicate 1 descriptor 3 times +Operational + + +4564 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +304032 +Cloud fraction +Operational + + +4565 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +002152 +Satellite instrument used in data processing +Operational + + +4566 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +002024 +Integrated mean humidity computational method +Operational + + +4567 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +007004 +Pressure +Operational + + +4568 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +007004 +Pressure +Operational + + +4569 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +013003 +Relative humidity +Operational + + +4570 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +101003 +Replicate 1 descriptor 3 times +Operational + + +4571 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +304033 +Clear sky radiance +Operational + + +4572 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +301072 +Satellite identification +Operational + + +4573 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +007024 +Satellite zenith angle +Operational + + +4574 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +010002 +Height +Operational + + +4575 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +303041 +Wind sequence +Operational + + +4576 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +101012 +Replicate 1 descriptor 12 times +Operational + + +4577 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +304032 +Cloud fraction +Operational + + +4578 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +002152 +Satellite instrument used in data processing +Operational + + +4579 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +002024 +Integrated mean humidity computational method +Operational + + +4580 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +007004 +Pressure +Operational + + +4581 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +007004 +Pressure +Operational + + +4582 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +013003 +Relative humidity +Operational + + +4583 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +101012 +Replicate 1 descriptor 12 times +Operational + + +4584 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +304033 +Clear sky radiance +Operational + + +4585 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +001007 +Satellite identifier +Operational + + +4586 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +005040 +Orbit number +Operational + + +4587 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +004001 +Year +Operational + + +4588 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +004043 +Day of the year +Operational + + +4589 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +004004 +Hour +Operational + + +4590 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +004005 +Minute +Operational + + +4591 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +004006 +Second +Operational + + +4592 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4593 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +026030 +Measurement integration time +Operational + + +4594 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4595 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +005002 +Latitude (coarse accuracy) +Operational + + +4596 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +006002 +Longitude (coarse accuracy) +Operational + + +4597 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +033072 +Ozone error +Operational + + +4598 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +007025 +Solar zenith angle +Operational + + +4599 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +005022 +Solar azimuth +Operational + + +4600 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4601 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +015001 +Total ozone +Operational + + +4602 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4603 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +008003 +Vertical significance (satellite observations) += 0 Surface +Operational + + +4604 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207001 +Increase scale, reference value and data width +Operational + + +4605 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +010004 +Pressure +Terrain +Operational + + +4606 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4607 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +4608 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +008003 +Vertical significance (satellite observations) += 2 Cloud top +Operational + + +4609 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +033042 +Type of limit represented by following value += 0 Exclusive lower limit +Operational + + +4610 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207001 +Increase scale, reference value and data width +Operational + + +4611 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +007004 +Pressure +Operational + + +4612 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4613 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4614 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +015001 +Total ozone +Below cloud top pressure +Operational + + +4615 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4616 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +4617 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4618 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +020081 +Cloud amount in segment +Cloud fraction +Operational + + +4619 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4620 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +020065 +Snow cover +Operational + + +4621 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +008029 +Surface type +Operational + + +4622 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207004 +Increase scale, reference value and data width +Operational + + +4623 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +015030 +Aerosol contamination index +Operational + + +4624 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4625 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +008075 +Ascending/descending orbit qualifier +Operational + + +4626 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +001007 +Satellite identifier +Operational + + +4627 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +002019 +Satellite instruments += 624 SBUV/2 +Operational + + +4628 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +301011 +Year, month, day +Operational + + +4629 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +301013 +Hour, minute, second +Operational + + +4630 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +4631 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +007025 +Solar zenith angle +Operational + + +4632 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008021 +Time significance += 28 Start of scan +Operational + + +4633 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +007025 +Solar zenith angle +Operational + + +4634 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008021 +Time significance += 29 End of scan +Operational + + +4635 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +007025 +Solar zenith angle +Operational + + +4636 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008021 +Time significance +Set to missing (cancel) +Operational + + +4637 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008029 +Surface type +Operational + + +4638 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +005040 +Orbit number +Operational + + +4639 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008075 +Ascending/descending orbit qualifier +Operational + + +4640 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008003 +Vertical significance (satellite observations) += 0 Surface +Operational + + +4641 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +010004 +Pressure += Terrain +Operational + + +4642 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +4643 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4644 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +015001 +Total ozone +Operational + + +4645 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4646 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +033070 +Total ozone quality +Operational + + +4647 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +015030 +Aerosol contamination index +Operational + + +4648 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4649 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +020081 +Cloud amount in segment +Cloud fraction +Operational + + +4650 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4651 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008003 +Vertical significance (satellite observations) += 2 Cloud top +Operational + + +4652 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +033042 +Type of limit represented by following value += 0 Exclusive lower limit +Operational + + +4653 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +007004 +Pressure +Operational + + +4654 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4655 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +015001 +Total ozone +Below cloud top pressure +Operational + + +4656 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4657 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +4658 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +113021 +Replicate 13 descriptors 21 times +Operational + + +4659 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +007004 +Pressure +Bottom of layer +Operational + + +4660 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +007004 +Pressure +Top of layer +Operational + + +4661 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4662 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008021 +Time significance += 27 First guess +Operational + + +4663 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +015005 +Ozone p +Operational + + +4664 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008021 +Time significance +Set to missing (cancel) +Operational + + +4665 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +015005 +Ozone p +Operational + + +4666 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +033007 +Per cent confidence +Operational + + +4667 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4668 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008026 +Matrix significance += 0 Row of averaging kernel matrix +Operational + + +4669 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +101020 +Replicate 1 descriptor 20 times +Operational + + +4670 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +025143 +Linear coefficient +Operational + + +4671 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008026 +Matrix significance +Set to missing (cancel) +Operational + + +4672 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008043 +Atmospheric chemical or physical constituent type += 0 Ozone +Operational + + +4673 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +109015 +Replicate 9 descriptors 15 times +Operational + + +4674 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +007004 +Pressure +Operational + + +4675 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008090 +Decimal scale of following significands +Operational + + +4676 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207006 +Increase scale, reference value and data width +Operational + + +4677 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +015008 +Significand of volumetric mixing ratio +Operational + + +4678 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4679 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008090 +Decimal scale of following significands +Set to missing (cancel) +Operational + + +4680 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4681 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +033007 +Per cent confidence +Operational + + +4682 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4683 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008043 +Atmospheric chemical or physical constituent type +Set to missing (cancel) +Operational + + +4684 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +033071 +Profile ozone quality +Operational + + +4685 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +108008 +Replicate 8 descriptors 8 times +Operational + + +4686 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +202124 +Change scale +Operational + + +4687 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +201107 +Change data width +Operational + + +4688 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +002071 +Spectrographic wavelength +Operational + + +4689 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +201000 +Change data width +Cancel +Operational + + +4690 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +202000 +Change scale +Cancel +Operational + + +4691 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4692 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +020081 +Cloud amount in segment +Cloud fraction +Operational + + +4693 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4694 +10 +Vertical sounding sequences (satellite data) +310020 +(Retrieved ozone data) +310022 +Satellite identifier, instrument and product type +Operational + + +4695 +10 +Vertical sounding sequences (satellite data) +310020 +(Retrieved ozone data) +301011 +Year, month, day +Operational + + +4696 +10 +Vertical sounding sequences (satellite data) +310020 +(Retrieved ozone data) +301013 +Hour, minute, second +Operational + + +4697 +10 +Vertical sounding sequences (satellite data) +310020 +(Retrieved ozone data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4698 +10 +Vertical sounding sequences (satellite data) +310020 +(Retrieved ozone data) +304034 +Latitude/longitude, solar elevation, number of layers +Operational + + +4699 +10 +Vertical sounding sequences (satellite data) +310020 +(Retrieved ozone data) +310021 +Integrated ozone density, height of defined layer +Operational + + +4700 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +108000 +Delayed replication of 8 descriptors +Operational + + +4701 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +031001 +Delayed descriptor replication factor +Operational + + +4702 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +201131 +Change data width +Operational + + +4703 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +202129 +Change scale +Operational + + +4704 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +007004 +Pressure +Operational + + +4705 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +007004 +Pressure +Operational + + +4706 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +202000 +Change scale +Cancel +Operational + + +4707 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +201000 +Change data width +Cancel +Operational + + +4708 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +015020 +Integrated ozone density +Operational + + +4709 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +010002 +Height +Operational + + +4710 +10 +Vertical sounding sequences (satellite data) +310022 +(Satellite identifier, instrument and product type) +001007 +Satellite identifier +Operational + + +4711 +10 +Vertical sounding sequences (satellite data) +310022 +(Satellite identifier, instrument and product type) +002019 +Satellite instruments +Operational + + +4712 +10 +Vertical sounding sequences (satellite data) +310022 +(Satellite identifier, instrument and product type) +001033 +Identification of originating/generating centre +Operational + + +4713 +10 +Vertical sounding sequences (satellite data) +310022 +(Satellite identifier, instrument and product type) +002172 +Product type for retrieved atmospheric gases +Operational + + +4714 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +301072 +Satellite identification +Operational + + +4715 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +030021 +Number of pixels per row +Operational + + +4716 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +030022 +Number of pixels per column +Operational + + +4717 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +008012 +Land/sea qualifier +Operational + + +4718 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +007024 +Satellite zenith angle +Operational + + +4719 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +007025 +Solar zenith angle +Operational + + +4720 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +010002 +Height +Operational + + +4721 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +101012 +Replicate 1 descriptor 12 times +Operational + + +4722 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +304032 +Cloud fraction +Operational + + +4723 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +105002 +Replicate 5 descriptors 2 times +Operational + + +4724 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +002152 +Satellite instrument used in data processing +Operational + + +4725 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +002024 +Integrated mean humidity computational method +Operational + + +4726 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +007004 +Pressure +Operational + + +4727 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +007004 +Pressure +Operational + + +4728 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +013003 +Relative humidity +Operational + + +4729 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +101012 +Replicate 1 descriptor 12 times +Operational + + +4730 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +304033 +Clear sky radiance +Operational + + +4731 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +301072 +Satellite identification +Operational + + +4732 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +030021 +Number of pixels per row +Operational + + +4733 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +030022 +Number of pixels per column +Operational + + +4734 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +008012 +Land/sea qualifier +Operational + + +4735 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +007024 +Satellite zenith angle +Operational + + +4736 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +007025 +Solar zenith angle +Operational + + +4737 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +010002 +Height +Operational + + +4738 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +101003 +Replicate 1 descriptor 3 times +Operational + + +4739 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +304032 +Cloud fraction +Operational + + +4740 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +105002 +Replicate 5 descriptors 2 times +Operational + + +4741 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +002152 +Satellite instrument used in data processing +Operational + + +4742 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +002024 +Integrated mean humidity computational method +Operational + + +4743 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +007004 +Pressure +Operational + + +4744 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +007004 +Pressure +Operational + + +4745 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +013003 +Relative humidity +Operational + + +4746 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +101003 +Replicate 1 descriptor 3 times +Operational + + +4747 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +304033 +Clear sky radiance +Operational + + +4748 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +001007 +Satellite identifier +Operational + + +4749 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +008021 +Time significance +Scan start +Operational + + +4750 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004001 +Year +Operational + + +4751 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004002 +Month +Operational + + +4752 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004003 +Day +Operational + + +4753 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004004 +Hour +Operational + + +4754 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004005 +Minute +Operational + + +4755 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201138 +Change data width +Operational + + +4756 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +202131 +Change scale +Operational + + +4757 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004006 +Second +Milliseconds +Operational + + +4758 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +202000 +Change scale +Operational + + +4759 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201000 +Change data width +Operational + + +4760 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201132 +Change data width +Operational + + +4761 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005041 +Scan line number +Scan number +Operational + + +4762 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201000 +Change data width +Operational + + +4763 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201129 +Change data width +Operational + + +4764 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005043 +Field of view number +Scene number +Operational + + +4765 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201000 +Change data width +Operational + + +4766 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005002 +Latitude (coarse accuracy) +Operational + + +4767 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +006002 +Longitude (coarse accuracy) +Operational + + +4768 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +013040 +Surface flag +Operational + + +4769 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +020029 +Rain flag +Operational + + +4770 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +104024 +Replicate 4 descriptors 24 times +Operational + + +4771 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005042 +Channel number +Operational + + +4772 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +012163 +Brightness temperature +Operational + + +4773 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +021083 +Warm target calibration +Operational + + +4774 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +021084 +Cold target calibration +Operational + + +4775 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +115003 +Replicate 15 descriptors 3 times +Operational + + +4776 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004001 +Year +Operational + + +4777 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004002 +Month +Operational + + +4778 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004003 +Day +Operational + + +4779 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201142 +Change data width +Operational + + +4780 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +202131 +Change scale +Operational + + +4781 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004026 +Time period or displacement +Ephemeris milliseconds +Operational + + +4782 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +202000 +Change scale +Operational + + +4783 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201000 +Change data width +Operational + + +4784 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005001 +Latitude (high accuracy) +Ephemeris +Operational + + +4785 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +006001 +Longitude (high accuracy) +Ephemeris +Operational + + +4786 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201138 +Change data width +Operational + + +4787 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +202129 +Change scale +Operational + + +4788 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +007001 +Height of station +Ephemeris +Operational + + +4789 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +202000 +Change scale +Operational + + +4790 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201000 +Change data width +Operational + + +4791 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +008021 +Time significance +Orbit start +Operational + + +4792 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004001 +Year +Operational + + +4793 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004002 +Month +Operational + + +4794 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004003 +Day +Operational + + +4795 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004004 +Hour +Operational + + +4796 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004005 +Minute +Operational + + +4797 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005040 +Orbit number +Operational + + +4798 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +101003 +Replicate 1 descriptor 3 times +Operational + + +4799 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +012070 +Warm load temperature +Operational + + +4800 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +025054 +SSMIS subframe ID number +Operational + + +4801 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +101004 +Replicate 1 descriptor 4 times +Operational + + +4802 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +025055 +Multiplexer housekeeping +Operational + + +4803 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +008007 +Dimensional significance +Line +Operational + + +4804 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +104028 +Replicate 4 descriptors 28 times +Operational + + +4805 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005002 +Latitude (coarse accuracy) +Operational + + +4806 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +006002 +Longitude (coarse accuracy) +Operational + + +4807 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +002111 +Radar incidence angle +Earth angle +Operational + + +4808 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005021 +Bearing or azimuth +Operational + + +4809 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +310022 +Satellite identifier, instrument and product type +Operational + + +4810 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +025060 +Software identification +Operational + + +4811 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008021 +Time significance += 17 Start of phenomenon +Operational + + +4812 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +301011 +Year, month, day +Operational + + +4813 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +301012 +Hour, minute +Operational + + +4814 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201138 +Change data width +16 bits long +Operational + + +4815 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +202131 +Change scale +Scale: 3 +Operational + + +4816 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +004006 +Second +Operational + + +4817 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +202000 +Change scale +Cancel +Operational + + +4818 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4819 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +033039 +Quality flags for radio occultation data +Operational + + +4820 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +033007 +Per cent confidence +Whole message +Operational + + +4821 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +304030 +Location of platform +Operational + + +4822 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +304031 +Speed of platform +Operational + + +4823 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +002020 +Satellite classification +Operational + + +4824 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +001050 +Platform transmitter ID number +Operational + + +4825 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +202127 +Change scale +Scale: 1 +Operational + + +4826 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +304030 +Location of platform +Operational + + +4827 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +202000 +Change scale +Cancel +Operational + + +4828 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +304031 +Speed of platform +Operational + + +4829 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201133 +Change data width +18 bits long +Operational + + +4830 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +202131 +Change scale +Scale: 3 +Operational + + +4831 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +004016 +Time increment +Operational + + +4832 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +202000 +Change scale +Cancel +Operational + + +4833 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4834 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4835 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +304030 +Location of platform +Operational + + +4836 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +010035 +Earth's local radius of curvature +Operational + + +4837 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +005021 +Bearing or azimuth +Operational + + +4838 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +010036 +Geoid undulation +Operational + + +4839 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +113000 +Delayed replication of 13 descriptors +Operational + + +4840 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +031002 +Extended delayed descriptor replication factor +Operational + + +4841 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4842 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +005021 +Bearing or azimuth +Operational + + +4843 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +108000 +Delayed replication of 8 descriptors +Operational + + +4844 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +031001 +Delayed descriptor replication factor +Operational + + +4845 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +002121 +Mean frequency +Operational + + +4846 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +007040 +Impact parameter +Operational + + +4847 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +015037 +Bending angle +Operational + + +4848 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics += 13 Root-mean-square +Operational + + +4849 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201125 +Change data width +20 bits long +Operational + + +4850 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +015037 +Bending angle +Operational + + +4851 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4852 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics +Set to missing +Operational + + +4853 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +033007 +Per cent confidence +All data for current replication +Operational + + +4854 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +108000 +Delayed replication of 8 descriptors +Operational + + +4855 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +031002 +Extended delayed descriptor replication factor +Operational + + +4856 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +007007 +Height +Operational + + +4857 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +015036 +Atmospheric refractivity +Operational + + +4858 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics += 13 Root-mean-square +Operational + + +4859 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201123 +Change data width +14 bits long +Operational + + +4860 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +015036 +Atmospheric refractivity +Operational + + +4861 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4862 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics +Set to missing +Operational + + +4863 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +033007 +Per cent confidence +All data for current height +Operational + + +4864 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +116000 +Delayed replication of 16 descriptors +Operational + + +4865 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +031002 +Extended delayed descriptor replication factor +Operational + + +4866 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +007009 +Geopotential height +Operational + + +4867 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +010004 +Pressure +Operational + + +4868 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +012001 +Temperature/air temperature +Operational + + +4869 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +013001 +Specific humidity +Operational + + +4870 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics += 13 Root-mean-square +Operational + + +4871 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201120 +Change data width +6 bits long +Operational + + +4872 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +010004 +Pressure +Operational + + +4873 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4874 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201122 +Change data width +6 bits long +Operational + + +4875 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +012001 +Temperature/air temperature +Operational + + +4876 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4877 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201123 +Change data width +9 bits long +Operational + + +4878 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +013001 +Specific humidity +Operational + + +4879 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4880 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics +Set to missing +Operational + + +4881 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +033007 +Per cent confidence +All data for current height +Operational + + +4882 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008003 +Vertical significance (satellite observations) += 0 Surface +Operational + + +4883 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +007009 +Geopotential height +Operational + + +4884 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +010004 +Pressure +Operational + + +4885 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics += 13 Root-mean-square +Operational + + +4886 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201120 +Change data width +6 bits long +Operational + + +4887 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +010004 +Pressure +Operational + + +4888 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4889 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics +Set to missing +Operational + + +4890 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +033007 +Per cent confidence +Surface data +Operational + + +4891 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +301071 +Satellite identifier/Generating resolution +Product information +Deprecated + + +4892 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +301011 +Year, month, day +Deprecated + + +4893 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +301013 +Hour, minute, second +Deprecated + + +4894 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +301021 +Latitude/longitude (high accuracy) +Deprecated + + +4895 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +030021 +Number of pixels per row +Deprecated + + +4896 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +030022 +Number of pixels per column +Deprecated + + +4897 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +010002 +Height +Orbit height +Deprecated + + +4898 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +304036 +Cloud coverage +Deprecated + + +4899 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +002152 +Satellite instrument used in data processing +Deprecated + + +4900 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +002167 +Radiance computational method +Deprecated + + +4901 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +101011 +Replicate 1 descriptor 11 times +Deprecated + + +4902 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +304035 +All sky radiance data +Deprecated + + +4903 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +301071 +Satellite identifier/Generating resolution +Product information +Operational + + +4904 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +301011 +Year, month, day +Operational + + +4905 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +301013 +Hour, minute, second +Operational + + +4906 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +301021 +Latitude/longitude (high accuracy) +Operational + + +4907 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +030021 +Number of pixels per row +Operational + + +4908 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +030022 +Number of pixels per column +Operational + + +4909 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +010002 +Height +Orbit height +Operational + + +4910 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +304036 +Cloud coverage +Operational + + +4911 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +002152 +Satellite instrument used in data processing +Operational + + +4912 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +002167 +Radiance computational method +Operational + + +4913 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +101011 +Replicate 1 descriptor 11 times +Operational + + +4914 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +304037 +All sky radiance data +Operational + + +4915 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +110000 +Delayed replication of 10 descriptors +Operational + + +4916 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +031001 +Delayed descriptor replication factor +Operational + + +4917 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +201138 +Change data width +Operational + + +4918 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +202130 +Change scale +Operational + + +4919 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +007004 +Pressure +Operational + + +4920 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +007004 +Pressure +Operational + + +4921 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +202000 +Change scale +Cancel +Operational + + +4922 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +201000 +Change data width +Cancel +Operational + + +4923 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +015020 +Integrated ozone density +Operational + + +4924 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +010002 +Height +Operational + + +4925 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +012101 +Temperature/air temperature +Operational + + +4926 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +013098 +Integrated water vapour density +Operational + + +4927 +10 +Vertical sounding sequences (satellite data) +310030 +(MIPAS or GOMOS instruments reporting) +310022 +Satellite identifier, instrument and product type +Operational + + +4928 +10 +Vertical sounding sequences (satellite data) +310030 +(MIPAS or GOMOS instruments reporting) +301011 +Year, month, day +Operational + + +4929 +10 +Vertical sounding sequences (satellite data) +310030 +(MIPAS or GOMOS instruments reporting) +301013 +Hour, minute, second +Operational + + +4930 +10 +Vertical sounding sequences (satellite data) +310030 +(MIPAS or GOMOS instruments reporting) +301021 +Latitude/longitude (high accuracy) +Operational + + +4931 +10 +Vertical sounding sequences (satellite data) +310030 +(MIPAS or GOMOS instruments reporting) +304034 +Latitude/longitude, solar elevation, number of layers +Operational + + +4932 +10 +Vertical sounding sequences (satellite data) +310030 +(MIPAS or GOMOS instruments reporting) +310029 +Layer, ozone, height, temperature and water vapour +Operational + + +4933 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310051 +Satellite position and instrument temperatures +Operational + + +4934 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310052 +Satellite instrument type and position +AIRS +Operational + + +4935 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +101000 +Delayed replication of 1 descriptor +Operational + + +4936 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +031002 +Extended delayed descriptor replication factor +Operational + + +4937 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310053 +Satellite channels and brightness temperatures with expanded channel set +AIRS +Operational + + +4938 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +101004 +Replicate 1 descriptor 4 times +Operational + + +4939 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310054 +Satellite visible channels and albedos with expanded channel set +Operational + + +4940 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +020010 +Cloud cover (total) +Operational + + +4941 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310052 +Satellite instrument type and position +AMSU-A +Operational + + +4942 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +101015 +Replicate 1 descriptor 15 times +Operational + + +4943 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310053 +Satellite channels and brightness temperatures with expanded channel set +AMSU-A +Operational + + +4944 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310052 +Satellite instrument type and position +HSB +Operational + + +4945 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +101005 +Replicate 1 descriptor 5 times +Operational + + +4946 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310053 +Satellite channels and brightness temperatures with expanded channel set +HSB +Operational + + +4947 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +001007 +Satellite identifier +Operational + + +4948 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +005040 +Orbit number +Operational + + +4949 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +201133 +Change data width +Operational + + +4950 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +005041 +Scan line number +Operational + + +4951 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +201000 +Change data width +Cancel +Operational + + +4952 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +201132 +Change data width +Operational + + +4953 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +025070 +Major frame count +Operational + + +4954 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +201000 +Change data width +Cancel +Operational + + +4955 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +202126 +Change scale +Operational + + +4956 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +007001 +Height of station +Operational + + +4957 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +202000 +Change scale +Cancel +Operational + + +4958 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +007025 +Solar zenith angle +Operational + + +4959 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +005022 +Solar azimuth +Operational + + +4960 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +102009 +Replicate 2 descriptors 9 times +Operational + + +4961 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +002151 +Radiometer identifier +Operational + + +4962 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +012064 +Instrument temperature +Operational + + +4963 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +002019 +Satellite instruments +Operational + + +4964 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +301011 +Year, month, day +Operational + + +4965 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +301012 +Hour, minute +Operational + + +4966 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +202131 +Change scale +Operational + + +4967 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +201138 +Change data width +Operational + + +4968 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +004006 +Second +Operational + + +4969 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +201000 +Change data width +Cancel +Operational + + +4970 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +202000 +Change scale +Cancel +Operational + + +4971 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +301021 +Latitude/longitude (high accuracy) +Operational + + +4972 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +007024 +Satellite zenith angle +Operational + + +4973 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +005021 +Bearing or azimuth +Operational + + +4974 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +005043 +Field of view number +Operational + + +4975 +10 +Vertical sounding sequences (satellite data) +310053 +(Satellite channels and brightness temperatures with expanded channel set) +201134 +Change data width +Operational + + +4976 +10 +Vertical sounding sequences (satellite data) +310053 +(Satellite channels and brightness temperatures with expanded channel set) +005042 +Channel number +Operational + + +4977 +10 +Vertical sounding sequences (satellite data) +310053 +(Satellite channels and brightness temperatures with expanded channel set) +201000 +Change data width +Cancel +Operational + + +4978 +10 +Vertical sounding sequences (satellite data) +310053 +(Satellite channels and brightness temperatures with expanded channel set) +025076 +Log10 of (temperature-radiance central wave number) for ATOVS +Operational + + +4979 +10 +Vertical sounding sequences (satellite data) +310053 +(Satellite channels and brightness temperatures with expanded channel set) +033032 +Channel quality flags for ATOVS +Operational + + +4980 +10 +Vertical sounding sequences (satellite data) +310053 +(Satellite channels and brightness temperatures with expanded channel set) +012163 +Brightness temperature +Scale: 2 +Operational + + +4981 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +201134 +Change data width +Operational + + +4982 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +005042 +Channel number +Operational + + +4983 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +201000 +Change data width +Cancel +Operational + + +4984 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +025076 +Log10 of (temperature-radiance central wave number) for ATOVS +Operational + + +4985 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +033032 +Channel quality flags for ATOVS +Operational + + +4986 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +201131 +Change data width +Operational + + +4987 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +202129 +Change scale +Operational + + +4988 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +102002 +Replicate 2 descriptors 2 times +Operational + + +4989 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +008023 +First-order statistics +Operational + + +4990 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +014027 +Albedo +Operational + + +4991 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +008023 +First-order statistics +Operational + + +4992 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +202000 +Change scale +Cancel +Operational + + +4993 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +201000 +Change data width +Cancel +Operational + + +4994 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +310051 +Satellite position and instrument temperatures +Operational + + +4995 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +310052 +Satellite instrument type and position +AIRS +Operational + + +4996 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +102020 +Replicate 2 descriptors 20 times +Operational + + +4997 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +025076 +Log10 of (temperature-radiance central wave number) for ATOVS +Operational + + +4998 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +025052 +Log10 of principal components normalized fit to data +Operational + + +4999 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +101000 +Delayed replication of 1 descriptor +Operational + + +5000 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +031002 +Extended delayed descriptor replication factor +Operational + + +5001 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +025050 +Principal component score +Satellite radiance +Operational + + +5002 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +001007 +Satellite identifier +Operational + + +5003 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +001033 +Identification of originating/generating centre +Operational + + +5004 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +002019 +Satellite instruments +Operational + + +5005 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +002020 +Satellite classification +Operational + + +5006 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +301011 +Year, month, day +Operational + + +5007 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +301012 +Hour, minute +Operational + + +5008 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +207003 +Increase scale, reference value and data width +Operational + + +5009 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +004006 +Second +Operational + + +5010 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5011 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +304030 +Location of platform +Operational + + +5012 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +301021 +Latitude/longitude (high accuracy) +Operational + + +5013 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +007024 +Satellite zenith angle +Operational + + +5014 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +005021 +Bearing or azimuth +Operational + + +5015 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +007025 +Solar zenith angle +Operational + + +5016 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +005022 +Solar azimuth +Operational + + +5017 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +008075 +Ascending/descending orbit qualifier +Operational + + +5018 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201133 +Change data width +Increase bit width +Operational + + +5019 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +005041 +Scan line number +Operational + + +5020 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201000 +Change data width +Cancel increase bit width +Operational + + +5021 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +005045 +Field of regard number +Operational + + +5022 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +005043 +Field of view number +Operational + + +5023 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +005040 +Orbit number +Operational + + +5024 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +010001 +Height of land surface +Operational + + +5025 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201129 +Change data width +Increase bit width +Operational + + +5026 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +007002 +Height or altitude +Operational + + +5027 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201000 +Change data width +Cancel increase bit width +Operational + + +5028 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +202127 +Change scale +Increase scale +Operational + + +5029 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201125 +Change data width +Increase bit width +Operational + + +5030 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +021166 +Land fraction +Operational + + +5031 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201000 +Change data width +Cancel increase bit width +Operational + + +5032 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +202000 +Change scale +Cancel increase scale +Operational + + +5033 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +008012 +Land/sea qualifier +Operational + + +5034 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +020010 +Cloud cover (total) +Operational + + +5035 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +020014 +Height of top of cloud +Operational + + +5036 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +002165 +Radiance type flags +Operational + + +5037 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +033075 +Scan-level quality flags +Operational + + +5038 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +107003 +Replicate 7 descriptors 3 times +Operational + + +5039 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +008076 +Type of band +Operational + + +5040 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +006029 +Wave number +Start of range +Operational + + +5041 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +006029 +Wave number +End of range +Operational + + +5042 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +025140 +Start channel +Operational + + +5043 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +025141 +End channel +Operational + + +5044 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +033076 +Calibration quality flags +Operational + + +5045 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +033077 +Field-of-view quality flags +Operational + + +5046 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +008076 +Type of band +Set to missing (cancel) +Operational + + +5047 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +033078 +Geolocation quality +Operational + + +5048 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +033003 +Quality information +Operational + + +5049 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +104000 +Delayed replication of 4 descriptors +Operational + + +5050 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +031002 +Extended delayed descriptor replication factor +Operational + + +5051 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201133 +Change data width +Increase bit width +Operational + + +5052 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +005042 +Channel number +Operational + + +5053 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201000 +Change data width +Cancel increase bit width +Operational + + +5054 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +014044 +Channel radiance +Operational + + +5055 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +001007 +Satellite identifier +Operational + + +5056 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +001033 +Identification of originating/generating centre +Operational + + +5057 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +001034 +Identification of originating/generating sub-centre +Operational + + +5058 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +002019 +Satellite instruments +Operational + + +5059 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +002020 +Satellite classification +Operational + + +5060 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +301011 +Year, month, day +Operational + + +5061 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +301012 +Hour, minute +Operational + + +5062 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +207003 +Increase scale, reference value and data width +Operational + + +5063 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +004006 +Second +Operational + + +5064 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5065 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +005040 +Orbit number +Operational + + +5066 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +005041 +Scan line number +Operational + + +5067 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +005043 +Field of view number +Operational + + +5068 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +033079 +Granule level quality flags +Operational + + +5069 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +033080 +Scan level quality flags +Operational + + +5070 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +033078 +Geolocation quality +Operational + + +5071 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +301021 +Latitude/longitude (high accuracy) +Operational + + +5072 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +201129 +Change data width +Increase bit width +Operational + + +5073 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +007002 +Height or altitude +Operational + + +5074 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +201000 +Change data width +Cancel increase bit width +Operational + + +5075 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +007024 +Satellite zenith angle +Operational + + +5076 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +005021 +Bearing or azimuth +Operational + + +5077 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +007025 +Solar zenith angle +Operational + + +5078 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +005022 +Solar azimuth +Operational + + +5079 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +025075 +Satellite antenna corrections version number +Operational + + +5080 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +111000 +Delayed replication of 11 descriptors +Operational + + +5081 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +031002 +Extended delayed descriptor replication factor +Operational + + +5082 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +005042 +Channel number +Operational + + +5083 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +202131 +Change scale +Increase scale by 3 +Operational + + +5084 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +002153 +Satellite channel centre frequency +Operational + + +5085 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +002154 +Satellite channel band width +Operational + + +5086 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +202000 +Change scale +Cancel increase scale +Operational + + +5087 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +002104 +Antenna polarization +Operational + + +5088 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +012066 +Antenna temperature +Operational + + +5089 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +012163 +Brightness temperature +Operational + + +5090 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +012158 +Noise-equivalent delta temperature while viewing cold target +Operational + + +5091 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +012159 +Noise-equivalent delta temperature while viewing warm target +Operational + + +5092 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +033081 +Channel data quality flags +Operational + + +5093 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +001007 +Satellite identifier +Operational + + +5094 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +001033 +Identification of originating/generating centre +Operational + + +5095 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +001034 +Identification of originating/generating sub-centre +Operational + + +5096 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +002019 +Satellite instruments +Operational + + +5097 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +002020 +Satellite classification +Operational + + +5098 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +301011 +Year, month, day +Operational + + +5099 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +301012 +Hour, minute +Operational + + +5100 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +207003 +Increase scale, reference value and data width +Operational + + +5101 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +004006 +Second +Operational + + +5102 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5103 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +005040 +Orbit number +Operational + + +5104 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +201133 +Change data width +Increase bit width +Operational + + +5105 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +005041 +Scan line number +Operational + + +5106 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +005043 +Field of view number +Operational + + +5107 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +201000 +Change data width +Cancel increase bit width +Operational + + +5108 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +008076 +Type of band +Operational + + +5109 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +033082 +Geolocation quality flags +Operational + + +5110 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +301021 +Latitude/longitude (high accuracy) +Operational + + +5111 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +201129 +Change data width +Increase bit width +Operational + + +5112 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +007002 +Height or altitude +Operational + + +5113 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +201000 +Change data width +Cancel increase bit width +Operational + + +5114 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +007024 +Satellite zenith angle +Operational + + +5115 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +005021 +Bearing or azimuth +Operational + + +5116 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +007025 +Solar zenith angle +Operational + + +5117 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +005022 +Solar azimuth +Operational + + +5118 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +008072 +Pixel(s) type +Operational + + +5119 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +008029 +Surface type +Operational + + +5120 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +105000 +Delayed replication of 5 descriptors +Operational + + +5121 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +031002 +Extended delayed descriptor replication factor +Operational + + +5122 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +005042 +Channel number +Operational + + +5123 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +002155 +Satellite channel wavelength +Operational + + +5124 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +033083 +Radiance data quality flags +Operational + + +5125 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +014043 +Channel radiance +Operational + + +5126 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +015042 +Reflectance +Operational + + +5127 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +001007 +Satellite identifier +Operational + + +5128 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +001033 +Identification of originating/generating centre +Operational + + +5129 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +001034 +Identification of originating/generating sub-centre +Operational + + +5130 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +002019 +Satellite instruments +Operational + + +5131 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +002020 +Satellite classification +Operational + + +5132 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +301011 +Year, month, day +Operational + + +5133 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +301012 +Hour, minute +Operational + + +5134 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +207003 +Increase scale, reference value and data width +Operational + + +5135 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +004006 +Second +Operational + + +5136 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5137 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +005040 +Orbit number +Operational + + +5138 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +201133 +Change data width +Increase bit width +Operational + + +5139 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +005041 +Scan line number +Operational + + +5140 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +005043 +Field of view number +Operational + + +5141 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +201000 +Change data width +Cancel increase bit width +Operational + + +5142 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +033082 +Geolocation quality flags +Operational + + +5143 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +301021 +Latitude/longitude (high accuracy) +Operational + + +5144 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +201129 +Change data width +Increase bit width +Operational + + +5145 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +007002 +Height or altitude +Operational + + +5146 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +201000 +Change data width +Cancel increase bit width +Operational + + +5147 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +007024 +Satellite zenith angle +Operational + + +5148 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +005021 +Bearing or azimuth +Operational + + +5149 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +007025 +Solar zenith angle +Operational + + +5150 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +005022 +Solar azimuth +Operational + + +5151 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +008075 +Ascending/descending orbit qualifier +Operational + + +5152 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +008013 +Day/night qualifier +Operational + + +5153 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +008072 +Pixel(s) type +Operational + + +5154 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +033084 +Pixel level quality flags +Operational + + +5155 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +007062 +Depth below sea/water surface +Operational + + +5156 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +033086 +Quality of pixel level retrieval +Operational + + +5157 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +022043 +Sea/water temperature +Operational + + +5158 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +007062 +Depth below sea/water surface +Top of layer +Operational + + +5159 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +007062 +Depth below sea/water surface +Bottom of layer +Operational + + +5160 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +033086 +Quality of pixel level retrieval +Operational + + +5161 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +022043 +Sea/water temperature +Operational + + +5162 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +001007 +Satellite identifier +Operational + + +5163 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +001033 +Identification of originating/generating centre +Operational + + +5164 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +001034 +Identification of originating/generating sub-centre +Operational + + +5165 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +002019 +Satellite instruments +Operational + + +5166 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +002020 +Satellite classification +Operational + + +5167 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +301011 +Year, month, day +Operational + + +5168 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +301012 +Hour, minute +Operational + + +5169 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +207003 +Increase scale, reference value and data width +Operational + + +5170 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +004006 +Second +Operational + + +5171 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5172 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +005040 +Orbit number +Operational + + +5173 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +201133 +Change data width +Operational + + +5174 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +005041 +Scan line number +Operational + + +5175 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +005043 +Field of view number +Operational + + +5176 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +201000 +Change data width +Cancel +Operational + + +5177 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +033082 +Geolocation quality flags +Operational + + +5178 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +301021 +Latitude/longitude (high accuracy) +Operational + + +5179 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +201129 +Change data width +Operational + + +5180 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +007002 +Height or altitude +Operational + + +5181 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +201000 +Change data width +Cancel +Operational + + +5182 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +007024 +Satellite zenith angle +Operational + + +5183 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +005021 +Bearing or azimuth +Operational + + +5184 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +007025 +Solar zenith angle +Operational + + +5185 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +005022 +Solar azimuth +Operational + + +5186 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +008075 +Ascending/descending orbit qualifier +Operational + + +5187 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +008029 +Surface type +Operational + + +5188 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +008046 +Atmospheric chemical or physical constituent type +Operational + + +5189 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +033085 +Aerosol optical thickness quality flags +Operational + + +5190 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +033086 +Quality of pixel level retrieval +Operational + + +5191 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +015049 +Aerosol Angstrom wavelength exponent +Operational + + +5192 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +033086 +Quality of pixel level retrieval +Operational + + +5193 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +102011 +Replicate 2 descriptors 11 times +Operational + + +5194 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +002155 +Satellite channel wavelength +Operational + + +5195 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +015062 +Aerosol optical thickness +Operational + + +5196 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +001007 +Satellite identifier +Operational + + +5197 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +001033 +Identification of originating/generating centre +Operational + + +5198 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +001034 +Identification of originating/generating sub-centre +Operational + + +5199 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +002019 +Satellite instruments +Operational + + +5200 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +002020 +Satellite classification +Operational + + +5201 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +301011 +Year, month, day +Operational + + +5202 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +301012 +Hour, minute +Operational + + +5203 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207003 +Increase scale, reference value and data width +Operational + + +5204 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +004006 +Second +Operational + + +5205 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5206 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +005040 +Orbit number +Operational + + +5207 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +033082 +Geolocation quality flags +Operational + + +5208 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +301021 +Latitude/longitude (high accuracy) +Operational + + +5209 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +201129 +Change data width +Operational + + +5210 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +007002 +Height or altitude +Operational + + +5211 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +201000 +Change data width +Cancel +Operational + + +5212 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +007024 +Satellite zenith angle +Operational + + +5213 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +005021 +Bearing or azimuth +Operational + + +5214 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +007025 +Solar zenith angle +Operational + + +5215 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +005022 +Solar azimuth +Operational + + +5216 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +008075 +Ascending/descending orbit qualifier +Operational + + +5217 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +033071 +Profile ozone quality +Operational + + +5218 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +033070 +Total ozone quality +Operational + + +5219 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +020021 +Type of precipitation +Operational + + +5220 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +015045 +Sulphur dioxide +Operational + + +5221 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +015046 +Volcano contamination index +Operational + + +5222 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +008065 +Sun-glint indicator +Operational + + +5223 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +033087 +Extent of satellite within South Atlantic anomaly +Operational + + +5224 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +008003 +Vertical significance (satellite observations) +Operational + + +5225 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +010004 +Pressure +Operational + + +5226 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +008003 +Vertical significance (satellite observations) +Operational + + +5227 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207002 +Increase scale, reference value and data width +Operational + + +5228 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +015001 +Total ozone +Operational + + +5229 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5230 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +105012 +Replicate 5 descriptors 12 times +Operational + + +5231 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +010040 +Number of retrieved layers +Operational + + +5232 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +010004 +Pressure +Operational + + +5233 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207003 +Increase scale, reference value and data width +Operational + + +5234 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +015005 +Ozone p +Operational + + +5235 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5236 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +008046 +Atmospheric chemical or physical constituent type +Operational + + +5237 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +107019 +Replicate 7 descriptors 19 times +Operational + + +5238 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +010040 +Number of retrieved layers +Operational + + +5239 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +010004 +Pressure +Operational + + +5240 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +008090 +Decimal scale of following significands +Operational + + +5241 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207006 +Increase scale, reference value and data width +Operational + + +5242 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +015008 +Significand of volumetric mixing ratio +Operational + + +5243 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5244 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +008090 +Decimal scale of following significands +Set to missing (cancel) +Operational + + +5245 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +001007 +Satellite identifier +Operational + + +5246 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +001033 +Identification of originating/generating centre +Operational + + +5247 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +001034 +Identification of originating/generating sub-centre +Operational + + +5248 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +002019 +Satellite instruments +Operational + + +5249 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +002020 +Satellite classification +Operational + + +5250 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +301011 +Year, month, day +Operational + + +5251 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +301012 +Hour, minute +Operational + + +5252 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207003 +Increase scale, reference value and data width +Operational + + +5253 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +004006 +Second +Operational + + +5254 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5255 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +005040 +Orbit number +Operational + + +5256 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +033082 +Geolocation quality flags +Operational + + +5257 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +301021 +Latitude/longitude (high accuracy) +Operational + + +5258 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +201129 +Change data width +Operational + + +5259 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +007002 +Height or altitude +Operational + + +5260 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +201000 +Change data width +Cancel +Operational + + +5261 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +007024 +Satellite zenith angle +Operational + + +5262 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +005021 +Bearing or azimuth +Operational + + +5263 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +007025 +Solar zenith angle +Operational + + +5264 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +005022 +Solar azimuth +Operational + + +5265 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +008075 +Ascending/descending orbit qualifier +Operational + + +5266 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +020081 +Cloud amount in segment +Cloud fraction +Operational + + +5267 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207004 +Increase scale, reference value and data width +Operational + + +5268 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +015030 +Aerosol contamination index +Operational + + +5269 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5270 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +020065 +Snow cover +Operational + + +5271 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +015041 +Sulphur dioxide index +Operational + + +5272 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +033086 +Quality of pixel level retrieval +Operational + + +5273 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +033087 +Extent of satellite within South Atlantic anomaly +Operational + + +5274 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +033088 +Ozone total column quality flag +Operational + + +5275 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +008003 +Vertical significance (satellite observations) += 0 Surface +Operational + + +5276 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207001 +Increase scale, reference value and data width +Operational + + +5277 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +007004 +Pressure +Operational + + +5278 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5279 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +5280 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207002 +Increase scale, reference value and data width +Operational + + +5281 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +015001 +Total ozone +Operational + + +5282 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5283 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +008003 +Vertical significance (satellite observations) += 2 Cloud top +Operational + + +5284 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +033042 +Type of limit represented by following value += 0 Exclusive lower limit (>) +Operational + + +5285 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207001 +Increase scale, reference value and data width +Operational + + +5286 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +007004 +Pressure +Cloud top pressure +Operational + + +5287 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5288 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207002 +Increase scale, reference value and data width +Operational + + +5289 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +015001 +Total ozone +Below cloud +Operational + + +5290 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5291 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +5292 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +001032 +Generating application += 0 First guess | Defined by local generating centre +Operational + + +5293 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207002 +Increase scale, reference value and data width +Operational + + +5294 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +015001 +Total ozone +First guess total column ozone +Operational + + +5295 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +5296 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Processing information +001033 +Identification of originating/generating centre +(see Note 2) +Operational + + +5297 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Processing information +001034 +Identification of originating/generating sub-centre +Operational + + +5298 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Processing information +025061 +Software identification and version number +Operational + + +5299 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Processing information +025062 +Database identification +Operational + + +5300 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Satellite/instrument identification +001007 +Satellite identifier +Operational + + +5301 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Satellite/instrument identification +002153 +Satellite channel centre frequency +Operational + + +5302 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Satellite/instrument identification +001012 +Direction of motion of moving observing platform +Operational + + +5303 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Satellite/instrument identification +201138 +Change data width +Operational + + +5304 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Satellite/instrument identification +002026 +Cross-track resolution +Operational + + +5305 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Satellite/instrument identification +002027 +Along-track resolution +Operational + + +5306 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Satellite/instrument identification +201000 +Cancel change data width +Operational + + +5307 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Methods +002028 +Segment size at nadir in x-direction +Target box size +Operational + + +5308 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Methods +002029 +Segment size at nadir in y-direction +Target box size +Operational + + +5309 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Methods +002161 +Wind processing method +Operational + + +5310 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Methods +002164 +Tracer correlation method +Operational + + +5311 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Methods +002023 +Satellite-derived wind computation method +Operational + + +5312 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Methods +008012 +Land/sea qualifier +Operational + + +5313 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Methods +008013 +Day/night qualifier +Operational + + +5314 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +001124 +Grid point identifier +Operational + + +5315 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +005001 +Latitude (high accuracy) +Operational + + +5316 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +006001 +Longitude (high accuracy) +Operational + + +5317 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +004001 +Year +Operational + + +5318 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +004002 +Month +Operational + + +5319 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +004003 +Day +Operational + + +5320 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +004004 +Hour +Operational + + +5321 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +004005 +Minute +Operational + + +5322 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +004006 +Second +Operational + + +5323 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +004086 +Long time period or displacement +Seconds +Operational + + +5324 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +011001 +Wind direction +Operational + + +5325 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +011002 +Wind speed +Operational + + +5326 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +011003 +u-component +Operational + + +5327 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +011004 +v-component +Operational + + +5328 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +002162 +Extended height assignment method +Operational + + +5329 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +007004 +Pressure +Operational + + +5330 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +012001 +Temperature/air temperature +Operational + + +5331 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +020014 +Height of top of cloud +Operational + + +5332 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +007024 +Satellite zenith angle +Operational + + +5333 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +001023 +Observation sequence number +Operational + + +5334 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +104000 +Delayed replication of 4 descriptors +Operational + + +5335 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +031001 +Delayed descriptor replication factor +Operational + + +5336 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +002162 +Extended height assignment method +Operational + + +5337 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +007004 +Pressure +Operational + + +5338 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +012001 +Temperature/air temperature +Operational + + +5339 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +020014 +Height of top of cloud +Operational + + +5340 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +113000 +Delayed replication of 13 descriptors +Operational + + +5341 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +031001 +Delayed descriptor replication factor +Operational + + +5342 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +004086 +Long time period or displacement +Seconds +Operational + + +5343 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +002020 +Satellite classification +Operational + + +5344 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +001007 +Satellite identifier +Operational + + +5345 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +002019 +Satellite instruments +Operational + + +5346 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +005042 +Channel number +Operational + + +5347 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +002153 +Satellite channel centre frequency +Operational + + +5348 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +005040 +Orbit number +Operational + + +5349 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +007024 +Satellite zenith angle +Operational + + +5350 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +005021 +Bearing or azimuth +Operational + + +5351 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +002162 +Extended height assignment method +Operational + + +5352 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +007004 +Pressure +Operational + + +5353 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +012001 +Temperature/air temperature +Operational + + +5354 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +020014 +Height of top of cloud +Operational + + +5355 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +119000 +Delayed replication of 19 descriptors +Operational + + +5356 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +031001 +Delayed descriptor replication factor +Operational + + +5357 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +004086 +Long time period or displacement +Seconds +Operational + + +5358 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +004086 +Long time period or displacement +Seconds +Operational + + +5359 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +005001 +Latitude (high accuracy) +Operational + + +5360 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +006001 +Longitude (high accuracy) +Operational + + +5361 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011003 +u-component +Operational + + +5362 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011004 +v-component +Operational + + +5363 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011113 +Tracking correlation of vector +Operational + + +5364 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +025148 +Coefficient of variation +Operational + + +5365 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +103000 +Delayed replication of 3 descriptors +Operational + + +5366 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +031001 +Delayed descriptor replication factor +Operational + + +5367 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +008023 +First order statistics +Operational + + +5368 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011003 +u-component +Operational + + +5369 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011004 +v-component +Operational + + +5370 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +008023 +First order statistics +Set to missing (cancel) +Operational + + +5371 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +103000 +Delayed replication of 3 descriptors +Operational + + +5372 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +031001 +Delayed descriptor replication factor +Operational + + +5373 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +020111 +x-axis error ellipse major component +Operational + + +5374 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +020112 +y-axis error ellipse minor component +Operational + + +5375 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +020114 +Angle of x-axis in error ellipse +Operational + + +5376 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +001033 +Identification of originating/generating centre +Operational + + +5377 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +008021 +Time significance += 27 First guess +Operational + + +5378 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +011095 +u-component of the model wind vector +Operational + + +5379 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +011096 +v-component of the model wind vector +Operational + + +5380 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +007004 +Pressure +Operational + + +5381 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +008021 +Time significance += 4 Forecast +Operational + + +5382 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +011095 +u-component of the model wind vector +Operational + + +5383 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +011096 +v-component of the model wind vector +Operational + + +5384 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +007004 +Pressure +Operational + + +5385 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +008021 +Time significance +Set to missing (cancel) +Operational + + +5386 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +008086 +Vertical significance for NWP += 10 Level of best fit +Operational + + +5387 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +011095 +u-component of the model wind vector +Operational + + +5388 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +011096 +v-component of the model wind vector +Operational + + +5389 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +007004 +Pressure +Operational + + +5390 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +008086 +Vertical significance for NWP +Set to missing (cancel) +Operational + + +5391 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +102004 +Replicate 2 descriptors 4 times +Operational + + +5392 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +001032 +Generating application +Operational + + +5393 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +033007 +Per cent confidence +Operational + + +5394 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +008092 +Measurement uncertainty expression += 0 Standard uncertainty +Operational + + +5395 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +011003 +u-component +Operational + + +5396 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +011004 +v-component +Operational + + +5397 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +007004 +Pressure +Operational + + +5398 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +008092 +Measurement uncertainty expression +Set to missing (cancel) +Operational + + +5399 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +033066 +AMV quality flag +Operational + + +5400 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020081 +Cloud amount in segment +Operational + + +5401 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020012 +Cloud type +Operational + + +5402 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020056 +Cloud phase +Operational + + +5403 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +117000 +Delayed replication of 17 descriptors +Operational + + +5404 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +031001 +Delayed descriptor replication factor +Operational + + +5405 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008023 +First order statistics +Operational + + +5406 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020016 +Pressure at top of cloud +Operational + + +5407 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008092 +Measurement uncertainty expression += 0 Standard uncertainty +Operational + + +5408 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008003 +Vertical significance (satellite observations) += 2 Cloud top +Operational + + +5409 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +012001 +Temperature/air temperature +Operational + + +5410 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +5411 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020016 +Pressure at top of cloud +Operational + + +5412 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008092 +Measurement uncertainty expression +Set to missing (cancel) +Operational + + +5413 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +025149 +Optimal estimation cost +Operational + + +5414 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020016 +Pressure at top of cloud +Operational + + +5415 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020014 +Height of top of cloud +Operational + + +5416 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +013093 +Cloud optical thickness +Operational + + +5417 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +013109 +Ice/liquid water path +Operational + + +5418 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +040038 +Cloud particle size +Operational + + +5419 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008011 +Meteorological feature += 12 Cloud +Operational + + +5420 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +014050 +Emissivity +Operational + + +5421 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +5422 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008023 +First order statistics +Set to missing (cancel) +Operational + + +5424 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +008070 +Vertical sounding product qualifier +Operational + + +5425 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +001033 +Identification of originating/generating centre +Operational + + +5426 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +001034 +Identification of originating/generating sub-centre +Operational + + +5427 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +001007 +Satellite identifier +Operational + + +5428 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +002019 +Satellite instruments +Operational + + +5429 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +012064 +Instrument temperature +Operational + + +5430 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +005040 +Orbit number +Operational + + +5431 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201136 +Change data width +Operational + + +5432 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +005041 +Scan line number +Operational + + +5433 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201000 +Change data width +Cancel +Operational + + +5434 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +005043 +Field of view number +Operational + + +5435 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +301011 +Year, month, day +Operational + + +5436 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +301012 +Hour, minute +Operational + + +5437 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201138 +Change data width +Operational + + +5438 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202131 +Change scale +Operational + + +5439 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +004006 +Second +Operational + + +5440 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202000 +Change scale +Cancel +Operational + + +5441 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201000 +Change data width +Cancel +Operational + + +5442 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +005001 +Latitude (high accuracy) +Operational + + +5443 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +006001 +Longitude (high accuracy) +Operational + + +5444 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202126 +Change scale +Operational + + +5445 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +007001 +Height of station +Operational + + +5446 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202000 +Change scale +Cancel +Operational + + +5447 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +010007 +Height +Operational + + +5448 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +007024 +Satellite zenith angle +Operational + + +5449 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +005021 +Bearing or azimuth +Operational + + +5450 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +007025 +Solar zenith angle +Operational + + +5451 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +005022 +Solar azimuth +Operational + + +5452 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +013040 +Surface flag +Operational + + +5453 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +012101 +Temperature/air temperature +Land or ocean surface temperature +Operational + + +5454 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201131 +Change data width +Operational + + +5455 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202129 +Change scale +Operational + + +5456 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +011011 +Wind direction at 10 m +Ocean surface wind +Operational + + +5457 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202000 +Change scale +Cancel +Operational + + +5458 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201000 +Change data width +Cancel +Operational + + +5459 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201130 +Change data width +Operational + + +5460 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202129 +Change scale +Operational + + +5461 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +011012 +Wind speed at 10 m +Ocean surface wind +Operational + + +5462 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202000 +Change scale +Cancel +Operational + + +5463 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201000 +Change data width +Cancel +Operational + + +5464 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +020029 +Rain flag +Operational + + +5465 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +020010 +Cloud cover (total) +Operational + + +5466 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +020014 +Height of top of cloud +Operational + + +5467 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +013162 +Cloud liquid water +Operational + + +5468 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +014050 +Emissivity +Operational + + +5469 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +005042 +Channel number +Operational + + +5470 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +201139 +Change data width +Operational + + +5471 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +002155 +Satellite channel wavelength +Operational + + +5472 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +201000 +Change data width +Cancel +Operational + + +5473 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +025077 +Bandwidth correction coefficient 1 +Operational + + +5474 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +025078 +Bandwidth correction coefficient 2 +Operational + + +5475 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +033007 +Per cent confidence +Operational + + +5476 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +201132 +Change data width +Operational + + +5477 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +202129 +Change scale +Operational + + +5478 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +012063 +Brightness temperature +Operational + + +5479 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +202000 +Change scale +Cancel +Operational + + +5480 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +201000 +Change data width +Cancel +Operational + + +5481 +10 +Vertical sounding sequences (satellite data) +310070 +(VASS MWTS report of FY-3) +310068 +VASS field of view variables +Operational + + +5482 +10 +Vertical sounding sequences (satellite data) +310070 +(VASS MWTS report of FY-3) +101013 +Replicate 1 descriptor 13 times +Operational + + +5483 +10 +Vertical sounding sequences (satellite data) +310070 +(VASS MWTS report of FY-3) +310069 +VASS channel variables +Operational + + +5484 +10 +Vertical sounding sequences (satellite data) +310071 +(VASS MWHS report of FY-3) +310068 +VASS field of view variables +Operational + + +5485 +10 +Vertical sounding sequences (satellite data) +310071 +(VASS MWHS report of FY-3) +101015 +Replicate 1 descriptor 15 times +Operational + + +5486 +10 +Vertical sounding sequences (satellite data) +310071 +(VASS MWHS report of FY-3) +310069 +VASS channel variables +Operational + + +5487 +10 +Vertical sounding sequences (satellite data) +310072 +(VASS IRAS report of FY-3) +310068 +VASS field of view variables +Operational + + +5488 +10 +Vertical sounding sequences (satellite data) +310072 +(VASS IRAS report of FY-3) +101026 +Replicate 1 descriptor 26 times +Operational + + +5489 +10 +Vertical sounding sequences (satellite data) +310072 +(VASS IRAS report of FY-3) +310069 +VASS channel variables +Operational + + +5490 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Processing information +001033 +Identification of originating/generating centre +Operational + + +5491 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Processing information +001034 +Identification of originating/generating sub-centre +Operational + + +5492 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Processing information +025061 +Software identification and version number +Operational + + +5493 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Processing information +025062 +Database identification +Operational + + +5494 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Satellite/instrument identification +001007 +Satellite identifier +Operational + + +5495 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Satellite/instrument identification +002153 +Satellite channel centre frequency +Operational + + +5496 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Satellite/instrument identification +001012 +Direction of motion of moving observing platform +Operational + + +5497 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Satellite/instrument identification +201138 +Change data width +Operational + + +5498 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Satellite/instrument identification +002026 +Cross-track resolution +Operational + + +5499 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Satellite/instrument identification +002027 +Along-track resolution +Operational + + +5500 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Satellite/instrument identification +201000 +Change data width +Cancel +Operational + + +5501 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Methods +002028 +Segment size at nadir in x-direction +Target box size +Operational + + +5502 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Methods +002029 +Segment size at nadir in y-direction +Target box size +Operational + + +5503 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Methods +002161 +Wind processing method +Operational + + +5504 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Methods +002164 +Tracer correlation method +Operational + + +5505 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Methods +002023 +Satellite derived wind computation method +Operational + + +5506 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Methods +008012 +Land/sea qualifier +Operational + + +5507 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Methods +008013 +Day/night qualifier +Operational + + +5508 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +001124 +Grid point identifier +Operational + + +5509 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +005001 +Latitude (high accuracy) +Operational + + +5510 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +006001 +Longitude (high accuracy) +Operational + + +5511 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +004001 +Year +Operational + + +5512 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +004002 +Month +Operational + + +5513 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +004003 +Day +Operational + + +5514 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +004004 +Hour +Operational + + +5515 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +004005 +Minute +Operational + + +5516 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +004006 +Second +Operational + + +5517 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +004086 +Long time period or displacement +Seconds +Operational + + +5518 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +002162 +Extended height assignment method +Operational + + +5519 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +007004 +Pressure +Operational + + +5520 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +011001 +Wind direction +Operational + + +5521 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +011002 +Wind speed +Operational + + +5522 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +011003 +u-component +Operational + + +5523 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +011004 +v-component +Operational + + +5524 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +012001 +Temperature/air temperature +Operational + + +5525 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +020014 +Height of top of cloud +Operational + + +5526 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +007024 +Satellite zenith angle +Operational + + +5527 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +001023 +Observation sequence number +Operational + + +5528 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +104000 +Delayed replication of 4 descriptors +Operational + + +5529 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +031001 +Delayed descriptor replication factor +Operational + + +5530 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +002162 +Extended height assignment method +Operational + + +5531 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +007004 +Pressure +Operational + + +5532 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +012001 +Temperature/air temperature +Operational + + +5533 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +020014 +Height of top of cloud +Operational + + +5534 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +113000 +Delayed replication of 13 descriptors +Operational + + +5535 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +031001 +Delayed descriptor replication factor +Operational + + +5536 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +004086 +Long time period or displacement +Seconds +Operational + + +5537 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +002020 +Satellite classification +Operational + + +5538 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +001007 +Satellite identifier +Operational + + +5539 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +002019 +Satellite instruments +Operational + + +5540 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +005042 +Channel number +Operational + + +5541 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +002153 +Satellite channel centre frequency +Operational + + +5542 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +005040 +Orbit number +Operational + + +5543 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +007024 +Satellite zenith angle +Operational + + +5544 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +005021 +Bearing or azimuth +Operational + + +5545 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +002162 +Extended height assignment method +Operational + + +5546 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +007004 +Pressure +Operational + + +5547 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +012001 +Temperature/air temperature +Operational + + +5548 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +020014 +Height of top of cloud +Operational + + +5549 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +119000 +Delayed replication of 19 descriptors +Operational + + +5550 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +031001 +Delayed descriptor replication factor +Operational + + +5551 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +004086 +Long time period or displacement +Seconds +Operational + + +5552 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +004086 +Long time period or displacement +Seconds +Operational + + +5553 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +005001 +Latitude (high accuracy) +Operational + + +5554 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +006001 +Longitude (high accuracy) +Operational + + +5555 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011003 +u-component +Operational + + +5556 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011004 +v-component +Operational + + +5557 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011113 +Tracking correlation of vector +Operational + + +5558 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +025148 +Coefficient of variation +Operational + + +5559 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +103000 +Delayed replication of 3 descriptors +Operational + + +5560 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +031001 +Delayed descriptor replication factor +Operational + + +5561 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +008023 +First order statistics +Operational + + +5562 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011003 +u-component +Operational + + +5563 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011004 +v-component +Operational + + +5564 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +008023 +First order statistics +Set to missing (cancel) +Operational + + +5565 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +103000 +Delayed replication of 3 descriptors +Operational + + +5566 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +031001 +Delayed descriptor replication factor +Operational + + +5567 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +020111 +x-axis error ellipse major component +Operational + + +5568 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +020112 +y-axis error ellipse minor component +Operational + + +5569 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +020114 +Angle of x-axis in error ellipse +Operational + + +5570 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +001033 +Identification of originating/generating centre +Operational + + +5571 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +008021 +Time significance += 27 First guess +Operational + + +5572 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +007004 +Pressure +Operational + + +5573 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +011095 +u-component of the model wind vector +Operational + + +5574 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +011096 +v-component of the model wind vector +Operational + + +5575 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +008021 +Time significance += 4 Forecast +Operational + + +5576 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +007004 +Pressure +Operational + + +5577 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +011095 +u-component of the model wind vector +Operational + + +5578 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +011096 +v-component of the model wind vector +Operational + + +5579 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +008021 +Time significance +Set to missing (cancel) +Operational + + +5580 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +008086 +Vertical significance for NWP += 10 Level of best fit +Operational + + +5581 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +007004 +Pressure +Operational + + +5582 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +011095 +u-component of the model wind vector +Operational + + +5583 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +011096 +v-component of the model wind vector +Operational + + +5584 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +008086 +Vertical significance for NWP +Set to missing (cancel) +Operational + + +5585 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +102004 +Replicate 2 descriptors 4 times +Operational + + +5586 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +001044 +Standard generating application +Operational + + +5587 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +033007 +Per cent confidence +Operational + + +5588 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +008092 +Measurement uncertainty expression += 0 Standard uncertainty +Operational + + +5589 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +007004 +Pressure +Operational + + +5590 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +011003 +u-component +Operational + + +5591 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +011004 +v-component +Operational + + +5592 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +008092 +Measurement uncertainty expression +Set to missing (cancel) +Operational + + +5593 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +033066 +AMV quality flag +Operational + + +5594 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020081 +Cloud amount in segment +Operational + + +5595 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020012 +Cloud type +Operational + + +5596 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020056 +Cloud phase +Operational + + +5597 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +117000 +Delayed replication of 17 descriptors +Operational + + +5598 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +031001 +Delayed descriptor replication factor +Operational + + +5599 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008023 +First order statistics +Operational + + +5600 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020016 +Pressure at the top of cloud +Operational + + +5601 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008092 +Measurement uncertainty expression += 0 Standard uncertainty +Operational + + +5602 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008003 +Vertical significance (satellite observations) += 2 Cloud top +Operational + + +5603 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +012001 +Temperature/air temperature +Operational + + +5604 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +5605 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020016 +Pressure at the top of cloud +Operational + + +5606 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008092 +Measurement uncertainty expression +Set to missing (cancel) +Operational + + +5607 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +025149 +Optimal estimation cost +Operational + + +5608 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020016 +Pressure at the top of cloud +Operational + + +5609 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020014 +Height of the top of cloud +Operational + + +5610 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +013093 +Cloud optical thickness +Operational + + +5611 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +013109 +Ice/liquid water path +Operational + + +5612 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +040038 +Cloud particle size +Operational + + +5613 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008011 +Meteorological feature += 12 Cloud +Operational + + +5614 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +014050 +Emissivity +Operational + + +5615 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +5616 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008023 +First order statistics +Set to missing (cancel) +Operational + + +5617 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +301051 +Flight number, navigational system, date/time, location, phase of flight +ASDAR +Operational + + +5618 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +007002 +Height or altitude +Operational + + +5619 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +012001 +Temperature/air temperature +Operational + + +5620 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +011001 +Wind direction +Operational + + +5621 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +011002 +Wind speed +Operational + + +5622 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +011031 +Degree of turbulence +Operational + + +5623 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +011032 +Height of base of turbulence +Operational + + +5624 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +011033 +Height of top of turbulence +Operational + + +5625 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +020041 +Airframe icing +Operational + + +5626 +11 +Single level report sequences (conventional data) +311002 +(ACARS reports) +301065 +ACARS identification +Operational + + +5627 +11 +Single level report sequences (conventional data) +311002 +(ACARS reports) +301066 +ACARS location +Operational + + +5628 +11 +Single level report sequences (conventional data) +311002 +(ACARS reports) +311003 +ACARS standard reported variables +Operational + + +5629 +11 +Single level report sequences (conventional data) +311002 +(ACARS reports) +311004 +ACARS supplementary reported variables +Operational + + +5630 +11 +Single level report sequences (conventional data) +311003 +(ACARS standard reported variables) +010070 +Indicated aircraft altitude +Operational + + +5631 +11 +Single level report sequences (conventional data) +311003 +(ACARS standard reported variables) +011001 +Wind direction +Operational + + +5632 +11 +Single level report sequences (conventional data) +311003 +(ACARS standard reported variables) +011002 +Wind speed +Operational + + +5633 +11 +Single level report sequences (conventional data) +311003 +(ACARS standard reported variables) +012001 +Temperature/air temperature +Operational + + +5634 +11 +Single level report sequences (conventional data) +311003 +(ACARS standard reported variables) +013002 +Mixing ratio +Operational + + +5635 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +101000 +Delayed replication of 1 descriptor +Operational + + +5636 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +031000 +Short delayed descriptor replication factor +Operational + + +5637 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +011034 +Vertical gust velocity +Operational + + +5638 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +101000 +Delayed replication of 1 descriptor +Operational + + +5639 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +031000 +Short delayed descriptor replication factor +Operational + + +5640 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +011035 +Vertical gust acceleration +Operational + + +5641 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +101000 +Delayed replication of 1 descriptor +Operational + + +5642 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +031000 +Short delayed descriptor replication factor +Operational + + +5643 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +011075 +Mean turbulence intensity (eddy dissipation rate) +Operational + + +5644 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +101000 +Delayed replication of 1 descriptor +Operational + + +5645 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +031000 +Short delayed descriptor replication factor +Operational + + +5646 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +011076 +Peak turbulence intensity (eddy dissipation rate) +Operational + + +5647 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +101000 +Delayed replication of 1 descriptor +Operational + + +5648 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +031000 +Short delayed descriptor replication factor +Operational + + +5649 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +033025 +ACARS interpolated values indicator +Operational + + +5650 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +101000 +Delayed replication of 1 descriptor +Operational + + +5651 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +031000 +Short delayed descriptor replication factor +Operational + + +5652 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +033026 +Moisture quality +Operational + + +5665 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +001008 +Aircraft registration number or other identification +Operational + + +5666 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +001023 +Observation sequence number +Operational + + +5667 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +301021 +Latitude/longitude (high accuracy) +Operational + + +5668 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +301011 +Year, month, day +Operational + + +5669 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +301013 +Hour, minute, second +Operational + + +5670 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +007010 +Flight level +Operational + + +5671 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +008009 +Detailed phase of flight +Operational + + +5672 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +011001 +Wind direction +Operational + + +5673 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +011002 +Wind speed +Operational + + +5674 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +011031 +Degree of turbulence +Operational + + +5675 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +011036 +Maximum derived equivalent vertical gust speed +Operational + + +5676 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +012101 +Temperature/air temperature +Operational + + +5677 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +033025 +ACARS interpolated values indicator +Operational + + +5678 +11 +Single level report sequences (conventional data) +311006 +(AMDAR data or aircraft data for one level without latitude/longitude) +007010 +Flight level +Operational + + +5679 +11 +Single level report sequences (conventional data) +311006 +(AMDAR data or aircraft data for one level without latitude/longitude) +011001 +Wind direction +Operational + + +5680 +11 +Single level report sequences (conventional data) +311006 +(AMDAR data or aircraft data for one level without latitude/longitude) +011002 +Wind speed +Operational + + +5681 +11 +Single level report sequences (conventional data) +311006 +(AMDAR data or aircraft data for one level without latitude/longitude) +002064 +Aircraft roll angle quality +Operational + + +5682 +11 +Single level report sequences (conventional data) +311006 +(AMDAR data or aircraft data for one level without latitude/longitude) +012101 +Temperature/air temperature +Operational + + +5683 +11 +Single level report sequences (conventional data) +311006 +(AMDAR data or aircraft data for one level without latitude/longitude) +012103 +Dewpoint temperature +Operational + + +5684 +11 +Single level report sequences (conventional data) +311007 +(Aircraft data for one level with latitude/longitude indicated) +007010 +Flight level +Operational + + +5685 +11 +Single level report sequences (conventional data) +311007 +(Aircraft data for one level with latitude/longitude indicated) +301021 +Latitude/longitude (high accuracy) +Operational + + +5686 +11 +Single level report sequences (conventional data) +311007 +(Aircraft data for one level with latitude/longitude indicated) +011001 +Wind direction +Operational + + +5687 +11 +Single level report sequences (conventional data) +311007 +(Aircraft data for one level with latitude/longitude indicated) +011002 +Wind speed +Operational + + +5688 +11 +Single level report sequences (conventional data) +311007 +(Aircraft data for one level with latitude/longitude indicated) +002064 +Aircraft roll angle quality +Operational + + +5689 +11 +Single level report sequences (conventional data) +311007 +(Aircraft data for one level with latitude/longitude indicated) +012101 +Temperature/air temperature +Operational + + +5690 +11 +Single level report sequences (conventional data) +311007 +(Aircraft data for one level with latitude/longitude indicated) +012103 +Dewpoint temperature +Operational + + +5691 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +001008 +Aircraft registration number or other identification +Operational + + +5692 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +301011 +Year, month, day +Operational + + +5693 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +301013 +Hour, minute, second +Operational + + +5694 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +301021 +Latitude/longitude (high accuracy) +Operational + + +5695 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +008004 +Phase of aircraft flight +Operational + + +5696 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +101000 +Delayed replication of 1 descriptor +Operational + + +5697 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +031001 +Delayed descriptor replication factor +Operational + + +5698 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +311006 +AMDAR data or aircraft data for one level without latitude/longitude +Operational + + +5706 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +001008 +Aircraft registration number or other identification +Operational + + +5707 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +301011 +Year, month, day +Operational + + +5708 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +301013 +Hour, minute, second +Operational + + +5709 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +301021 +Latitude/longitude (high accuracy) +Operational + + +5710 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +008004 +Phase of aircraft flight +Operational + + +5711 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +101000 +Delayed replication of 1 descriptor +Operational + + +5712 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +031001 +Delayed descriptor replication factor +Operational + + +5713 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +311007 +Aircraft data for one level with latitude/longitude indicated +Operational + + +5721 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +001008 +Aircraft registration number or other identification +Operational + + +5722 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +001023 +Observation sequence number +Operational + + +5723 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +001006 +Aircraft flight number +Operational + + +5724 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +001110 +Aircraft tail number +Operational + + +5725 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +001111 +Origination airport +Operational + + +5726 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +001112 +Destination airport +Operational + + +5727 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +204002 +Add associated field +2 bits long +Operational + + +5728 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031021 +Associated field significance += 8 Two bits quality information +Operational + + +5729 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +301011 +Year, month, day +Operational + + +5730 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +301013 +Hour, minute, second +Operational + + +5731 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +301021 +Latitude/longitude (high accuracy) +Operational + + +5732 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +007010 +Flight level +Pressure altitude +Operational + + +5733 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +010053 +Global navigation satellite system altitude +Operational + + +5734 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +008009 +Detailed phase of flight +Operational + + +5735 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011001 +Wind direction +Operational + + +5736 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011002 +Wind speed +Operational + + +5737 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +002064 +Aircraft roll angle quality +Operational + + +5738 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011100 +Aircraft true airspeed +Operational + + +5739 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011101 +Aircraft ground speed u-component +Operational + + +5740 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011102 +Aircraft ground speed v-component +Operational + + +5741 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011103 +Aircraft ground speed w-component +Operational + + +5742 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011104 +True heading of aircraft, ship or other mobile platform +True heading of aircraft +Operational + + +5743 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +012101 +Temperature/air temperature +Operational + + +5744 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +002170 +Aircraft humidity sensors +Operational + + +5745 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +201144 +Change data width +Operational + + +5746 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +202133 +Change scale +Operational + + +5747 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +013002 +Mixing ratio +Operational + + +5748 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +202000 +Change scale +Cancel +Operational + + +5749 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +201000 +Change data width +Cancel +Operational + + +5750 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +201135 +Change data width +Operational + + +5751 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +202130 +Change scale +Operational + + +5752 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +013003 +Relative humidity +Operational + + +5753 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +202000 +Change scale +Cancel +Operational + + +5754 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +201000 +Change data width +Cancel +Operational + + +5755 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +101000 +Delayed replication of 1 descriptor +Operational + + +5756 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031000 +Short delayed descriptor replication factor +Operational + + +5757 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +012103 +Dewpoint temperature +Operational + + +5758 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +033026 +Moisture quality +Operational + + +5759 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +101000 +Delayed replication of 1 descriptor +Operational + + +5760 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031000 +Short delayed descriptor replication factor +Operational + + +5761 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +020042 +Airframe icing present +Operational + + +5762 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +103000 +Delayed replication of 3 descriptors +Operational + + +5763 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031000 +Short delayed descriptor replication factor +Operational + + +5764 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +020043 +Peak liquid water content +Operational + + +5765 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +020044 +Average liquid water content +Operational + + +5766 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +020045 +Supercooled large droplet (SLD) conditions +Operational + + +5767 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +101000 +Delayed replication of 1 descriptor +Operational + + +5768 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031000 +Short delayed descriptor replication factor +Operational + + +5769 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +033025 +ACARS interpolated values indicator +Operational + + +5770 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +103000 +Delayed replication of 3 descriptors +Operational + + +5771 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031001 +Delayed descriptor replication factor +Operational + + +5772 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011075 +Mean turbulence intensity (eddy dissipation rate) +Operational + + +5773 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011076 +Peak turbulence intensity (eddy dissipation rate) +Operational + + +5774 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011039 +Extended time of occurrence of peak eddy dissipation rate +Operational + + +5775 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +102000 +Delayed replication of 2 descriptors +Operational + + +5776 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031000 +Short delayed descriptor replication factor +Operational + + +5777 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011037 +Turbulence index +EDR +Operational + + +5778 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011077 +Reporting interval or averaging time for eddy dissipation rate +Operational + + +5779 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +103000 +Delayed replication of 3 descriptors +Operational + + +5780 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031000 +Short delayed descriptor replication factor +Operational + + +5781 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011034 +Vertical gust velocity +Operational + + +5782 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011035 +Vertical gust acceleration +Operational + + +5783 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011036 +Maximum derived equivalent vertical gust speed +Operational + + +5784 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +204000 +Add associated field +Cancel +Operational + + +5785 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +119000 +Delayed replication of 19 descriptors +Operational + + +5786 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031001 +Delayed descriptor replication factor +Operational + + +5787 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +301011 +Year, month, day +Operational + + +5788 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +301013 +Hour, minute, second +Operational + + +5789 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +301021 +Latitude/longitude (high accuracy) +Operational + + +5790 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +007007 +Height +Operational + + +5791 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011105 +EDR algorithm version +Operational + + +5792 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +204007 +Add associated field +7 bits long +Operational + + +5793 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031021 +Associated field significance += 7 Percentage confidence +Operational + + +5794 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011076 +Peak turbulence intensity (eddy dissipation rate) +Operational + + +5795 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011075 +Mean turbulence intensity (eddy dissipation rate) +Operational + + +5796 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +204000 +Add associated field +Cancel +Operational + + +5797 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011106 +Running minimum confidence +Operational + + +5798 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011107 +Maximum number bad inputs +Operational + + +5799 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011108 +Peak location +Operational + + +5800 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011109 +Number of good EDR +Operational + + +5801 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +012101 +Temperature/air temperature +Operational + + +5802 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011001 +Wind direction +Operational + + +5803 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +201130 +Change data width +Operational + + +5804 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011084 +Wind speed +Operational + + +5805 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +201000 +Change data width +Cancel +Operational + + +5807 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +001023 +Observation sequence number +Operational + + +5808 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +008004 +Phase of aircraft flight +Operational + + +5809 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +301011 +Year, month, day +Operational + + +5810 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +301013 +Hour, minute, second +Operational + + +5811 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +005002 +Latitude (coarse accuracy) +Operational + + +5812 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +006002 +Longitude (coarse accuracy) +Operational + + +5813 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +007004 +Pressure +Operational + + +5814 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +011001 +Wind direction +Operational + + +5815 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +011002 +Wind speed +Operational + + +5816 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +012101 +Temperature/air temperature +Operational + + +5817 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +106000 +Delayed replication of 6 descriptors +Operational + + +5818 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +031001 +Delayed descriptor replication factor +Operational + + +5819 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +008046 +Atmospheric chemical or physical constituent type +Operational + + +5820 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +201139 +Change data width +20 bits long +Operational + + +5821 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +202126 +Change scale +Scale: 7 +Operational + + +5822 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +015026 +Concentration of pollutant (mol mol-1) +Operational + + +5823 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +202000 +Change scale +Cancel +Operational + + +5824 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +201000 +Change data width +Cancel +Operational + + +5825 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +106000 +Delayed replication of 6 descriptors +Operational + + +5826 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +031001 +Delayed descriptor replication factor +Operational + + +5827 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +008046 +Atmospheric chemical or physical constituent type +Operational + + +5828 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +201138 +Change data width +19 bits long +Operational + + +5829 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +202130 +Change scale +Scale: 11 +Operational + + +5830 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +015026 +Concentration of pollutant (mol mol-1) +Operational + + +5831 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +202000 +Change scale +Cancel +Operational + + +5832 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +201000 +Change data width +Cancel +Operational + + +5833 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +015052 +Log10 of number density of aerosol particles with diameter greater than 5 nm +Operational + + +5834 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +015053 +Log10 of number density of aerosol particles with diameter greater than 14 nm +Operational + + +5835 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +015054 +Log10 of number density of aerosol particles with diameter between 0.25 and 2.5 µm +Operational + + +5836 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +015055 +Non volatile aerosol ratio +Operational + + +5837 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +007004 +Pressure +Operational + + +5838 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +007004 +Pressure +Operational + + +5839 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +013099 +Log10 of integrated cloud particle density +Operational + + +5840 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +013100 +Log10 of integrated cloud particle area +Operational + + +5841 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +013101 +Log10 of integrated cloud particle volume +Operational + + +5843 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +301150 +WIGOS identifier +Operational + + +5844 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +001008 +Aircraft registration number or other identification +Operational + + +5845 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +001111 +Origination airport +To be reported in case of an ascent profile +Operational + + +5846 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +001112 +Destination airport +To be reported in case of an descent profile +Operational + + +5847 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +301011 +Year, month, day +Date/time and position of first level in profile (for ascent profile first report/take off, for descent profile last report/touch down) +Operational + + +5848 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +301013 +Hour, Min, second +Date/time and position of first level in profile (for ascent profile first report/take off, for descent profile last report/touch down) +Operational + + +5849 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +301021 +Latitude/Longitude +Date/time and position of first level in profile (for ascent profile first report/take off, for descent profile last report/touch down) +Operational + + +5850 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +008004 +Phase of flight +Ascent or descent profile +Operational + + +5851 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +110000 +Delayed replication of 10 descriptors +Operational + + +5852 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +031002 +Extended delayed descriptor replication factor +Number of levels following +Operational + + +5853 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +301011 +Year, month, day +Date of single level report +Operational + + +5854 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +301013 +Hour, Min, second +Time of single level report +Operational + + +5855 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +311007 +Aircraft data for one level with latitude/longitude indicated +Flight level = pressure altitude +Operational + + +5856 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +201144 +Change data width +Operational + + +5857 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +202133 +Change scale +Operational + + +5858 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +013002 +Mixing ratio +Originally measured value +Operational + + +5859 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +202000 +Cancel change scale +Operational + + +5860 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +201000 +Cancel change data width +Operational + + +5861 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +013003 +Relative humidity +Value derived from Mixing ratio, limited to ≤ 100% +Operational + + +5862 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +033026 +Moisture quality +Code table +Operational + + +5863 +12 +Single level report sequences (satellite data) +312001 +301043 +Satellite identifier, wind computation method, date/time, location +Operational + + +5864 +12 +Single level report sequences (satellite data) +312001 +304001 +Cloud top pressure, temperature, wind +Operational + + +5865 +12 +Single level report sequences (satellite data) +312002 +301043 +Satellite identifier, wind computation method, date/time, location +Operational + + +5866 +12 +Single level report sequences (satellite data) +312002 +304002 +Cloud top pressure, wind +Operational + + +5867 +12 +Single level report sequences (satellite data) +312003 +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +5868 +12 +Single level report sequences (satellite data) +312003 +304003 +Surface temperature +Operational + + +5869 +12 +Single level report sequences (satellite data) +312004 +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +5870 +12 +Single level report sequences (satellite data) +312004 +304004 +Cloud top pressure, cloud cover, temperature +Operational + + +5871 +12 +Single level report sequences (satellite data) +312005 +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +5872 +12 +Single level report sequences (satellite data) +312005 +020014 +Height of top of cloud +Operational + + +5873 +12 +Single level report sequences (satellite data) +312006 +301044 +Satellite identifier, humidity computation method, date/time, location +Operational + + +5874 +12 +Single level report sequences (satellite data) +312006 +304005 +Layer mean relative humidity +Operational + + +5875 +12 +Single level report sequences (satellite data) +312007 +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +5876 +12 +Single level report sequences (satellite data) +312007 +304006 +Radiation +Operational + + +5877 +12 +Single level report sequences (satellite data) +312010 +(Orbital information, Part I) +001007 +Satellite identifier +Operational + + +5878 +12 +Single level report sequences (satellite data) +312010 +(Orbital information, Part I) +005040 +Orbit number +Operational + + +5879 +12 +Single level report sequences (satellite data) +312010 +(Orbital information, Part I) +002021 +Satellite instrument data used in processing +Operational + + +5880 +12 +Single level report sequences (satellite data) +312010 +(Orbital information, Part I) +005041 +Scan line number +Operational + + +5881 +12 +Single level report sequences (satellite data) +312010 +(Orbital information, Part I) +004001 +Year +Operational + + +5882 +12 +Single level report sequences (satellite data) +312010 +(Orbital information, Part I) +004043 +Day of the year +Operational + + +5883 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +202131 +Change scale +Operational + + +5884 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +201149 +Change data width +Operational + + +5885 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +004006 +Second +Operational + + +5886 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +201000 +Change data width +Operational + + +5887 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +202126 +Change scale +Operational + + +5888 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +010002 +Height +Operational + + +5889 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +202000 +Change scale +Operational + + +5890 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +005043 +Field of view number +Operational + + +5891 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +005053 +Field of view number increment +Operational + + +5892 +12 +Single level report sequences (satellite data) +312012 +(HIRS brightness temperatures - channels 1-19) +202129 +Change scale +Operational + + +5893 +12 +Single level report sequences (satellite data) +312012 +(HIRS brightness temperatures - channels 1-19) +201132 +Change data width +Operational + + +5894 +12 +Single level report sequences (satellite data) +312012 +(HIRS brightness temperatures - channels 1-19) +101019 +Replicate 1 descriptor 19 times +Operational + + +5895 +12 +Single level report sequences (satellite data) +312012 +(HIRS brightness temperatures - channels 1-19) +012063 +Brightness temperature +Operational + + +5896 +12 +Single level report sequences (satellite data) +312012 +(HIRS brightness temperatures - channels 1-19) +201000 +Change data width +Operational + + +5897 +12 +Single level report sequences (satellite data) +312012 +(HIRS brightness temperatures - channels 1-19) +202000 +Change scale +Operational + + +5898 +12 +Single level report sequences (satellite data) +312013 +(HIRS brightness temperatures - channel 20) +005042 +Channel number +Operational + + +5899 +12 +Single level report sequences (satellite data) +312013 +(HIRS brightness temperatures - channel 20) +202129 +Change scale +Operational + + +5900 +12 +Single level report sequences (satellite data) +312013 +(HIRS brightness temperatures - channel 20) +201135 +Change data width +Operational + + +5901 +12 +Single level report sequences (satellite data) +312013 +(HIRS brightness temperatures - channel 20) +012063 +Brightness temperature +Operational + + +5902 +12 +Single level report sequences (satellite data) +312013 +(HIRS brightness temperatures - channel 20) +201000 +Change data width +Operational + + +5903 +12 +Single level report sequences (satellite data) +312013 +(HIRS brightness temperatures - channel 20) +202000 +Change scale +Operational + + +5904 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +312010 +Orbital information, Part I +Operational + + +5905 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +312011 +Orbital information, Part II +Operational + + +5906 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +105056 +Replicate 5 descriptors 56 times +Operational + + +5907 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5908 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +005042 +Channel number +Operational + + +5909 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +005052 +Channel number increment +Operational + + +5910 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +312012 +HIRS brightness temperatures - channels 1-19 +Operational + + +5911 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +312013 +HIRS brightness temperatures - channel 20 +Operational + + +5912 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +109011 +Replicate 9 descriptors 11 times +Operational + + +5913 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5914 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +005042 +Channel number +Operational + + +5915 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +005052 +Channel number increment +Operational + + +5916 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +202129 +Change scale +Operational + + +5917 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +201132 +Change data width +Operational + + +5918 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +101004 +Replicate 1 descriptor 4 times +Operational + + +5919 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +012063 +Brightness temperature +Operational + + +5920 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +202000 +Change scale +Operational + + +5921 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +201000 +Change data width +Operational + + +5922 +12 +Single level report sequences (satellite data) +312016 +(MSU satellite data) +312010 +Orbital information, Part I +Operational + + +5923 +12 +Single level report sequences (satellite data) +312016 +(MSU satellite data) +312011 +Orbital information, Part II +Operational + + +5924 +12 +Single level report sequences (satellite data) +312016 +(MSU satellite data) +312015 +MSU brightness temperatures - channels 1-4 +Operational + + +5925 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +109008 +Replicate 9 descriptors 8 times +Operational + + +5926 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5927 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +005042 +Channel number +Operational + + +5928 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +005052 +Channel number increment +Operational + + +5929 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +202129 +Change scale +Operational + + +5930 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +201132 +Change data width +Operational + + +5931 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +101003 +Replicate 1 descriptor 3 times +Operational + + +5932 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +012063 +Brightness temperature +Operational + + +5933 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +202000 +Change scale +Operational + + +5934 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +201000 +Change data width +Operational + + +5935 +12 +Single level report sequences (satellite data) +312018 +(SSU satellite data) +312010 +Orbital information, Part I +Operational + + +5936 +12 +Single level report sequences (satellite data) +312018 +(SSU satellite data) +312011 +Orbital information, Part II +Operational + + +5937 +12 +Single level report sequences (satellite data) +312018 +(SSU satellite data) +312017 +SSU brightness temperatures - channels 1-3 +Operational + + +5938 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +301047 +ERS product header +Operational + + +5939 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +301048 +Radar parameters +Operational + + +5940 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +015015 +Maximum image spectral component before normalization +Operational + + +5941 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +029002 +Coordinate grid type +Operational + + +5942 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +021076 +Representation of intensities +Operational + + +5943 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +106012 +Replicate 6 descriptors 12 times +Operational + + +5944 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +201129 +Change data width +14 bits long +Operational + + +5945 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +006030 +Wave number (spectral) +Operational + + +5946 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +201000 +Change data width +Cancel +Operational + + +5947 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +102012 +Replicate 2 descriptors 12 times +Operational + + +5948 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +005030 +Direction (spectral) +Operational + + +5949 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +021075 +Image spectrum intensity +Operational + + +5950 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +021066 +Wave scatterometer product confidence data +Operational + + +5951 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +301047 +ERS product header +Operational + + +5952 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +301048 +Radar parameters +Operational + + +5953 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +015015 +Maximum image spectral component before normalization +Operational + + +5954 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +029002 +Coordinate grid type +Operational + + +5955 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +021076 +Representation of intensities +Operational + + +5956 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +104012 +Replicate 4 descriptors 12 times +Operational + + +5957 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +006030 +Wave number (spectral) +Operational + + +5958 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +102012 +Replicate 2 descriptors 12 times +Operational + + +5959 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +005030 +Direction (spectral) +Operational + + +5960 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +021075 +Image spectrum intensity +Operational + + +5961 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +021066 +Wave scatterometer product confidence data +Operational + + +5962 +12 +Single level report sequences (satellite data) +312021 +(Wind scatterometer product) +301047 +ERS product header +Operational + + +5963 +12 +Single level report sequences (satellite data) +312021 +(Wind scatterometer product) +101003 +Replicate 1 descriptor 3 times +Operational + + +5964 +12 +Single level report sequences (satellite data) +312021 +(Wind scatterometer product) +301049 +Radar beam data +Operational + + +5965 +12 +Single level report sequences (satellite data) +312021 +(Wind scatterometer product) +011012 +Wind speed at 10 m +Operational + + +5966 +12 +Single level report sequences (satellite data) +312021 +(Wind scatterometer product) +011011 +Wind direction at 10 m +Operational + + +5967 +12 +Single level report sequences (satellite data) +312021 +(Wind scatterometer product) +021067 +Wind product confidence data +Operational + + +5968 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +301047 +ERS product header +Operational + + +5969 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +008022 +Total number (with respect to accumulation or average) +Number in average +Operational + + +5970 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +011012 +Wind speed at 10 m +Operational + + +5971 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +011050 +Standard deviation of horizontal wind speed +Operational + + +5972 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +022070 +Significant wave height +Operational + + +5973 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +022026 +Standard deviation of significant wave height +Operational + + +5974 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +312041 +Altitude +Operational + + +5975 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +010050 +Standard deviation altitude +Operational + + +5976 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +021068 +Radar altimeter product confidence data +Operational + + +5977 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +021071 +Peakiness +Operational + + +5978 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +021072 +Satellite altimeter calibration status +Operational + + +5979 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +021073 +Satellite altimeter instrument mode +Operational + + +5980 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +312042 +Altitude corrections +Operational + + +5981 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +021062 +Backscatter +Operational + + +5982 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +015011 +Log10 of integrated electron density +Operational + + +5983 +12 +Single level report sequences (satellite data) +312023 +(ATSR sea-surface temperature product) +301047 +ERS product header +Operational + + +5984 +12 +Single level report sequences (satellite data) +312023 +(ATSR sea-surface temperature product) +103003 +Replicate 3 descriptors 3 times +Operational + + +5985 +12 +Single level report sequences (satellite data) +312023 +(ATSR sea-surface temperature product) +008022 +Total number (with respect to accumulation or average) +Number in average +Operational + + +5986 +12 +Single level report sequences (satellite data) +312023 +(ATSR sea-surface temperature product) +012061 +Skin temperature +Operational + + +5987 +12 +Single level report sequences (satellite data) +312023 +(ATSR sea-surface temperature product) +022050 +Standard deviation sea-surface temperature +Operational + + +5988 +12 +Single level report sequences (satellite data) +312023 +(ATSR sea-surface temperature product) +021069 +SST product confidence data +Operational + + +5989 +12 +Single level report sequences (satellite data) +312023 +(ATSR sea-surface temperature product) +021085 +ATSR sea-surface temperature across-track band number +Operational + + +5990 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +312020 +Wave scatterometer product +Operational + + +5991 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +008060 +Sample scanning mode significance +Range +Operational + + +5992 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +008022 +Total number (with respect to accumulation or average) +Number in sample +Operational + + +5993 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +008060 +Sample scanning mode significance +Horizontal +Operational + + +5994 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +008022 +Total number (with respect to accumulation or average) +Number in sample +Operational + + +5995 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +025014 +Azimuth clutter cut-off +Operational + + +5996 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +022101 +Total energy (wavelength > 731m) at low wave numbers +Operational + + +5997 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +022097 +Mean wavelength > 731 m of image spectrum at low wave numbers +Operational + + +5998 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +022098 +Wavelength spread (wavelength > 731 m) at low wave numbers +Operational + + +5999 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +022099 +Mean direction at low wave numbers (wavelength > 731 m) +Operational + + +6000 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +022100 +Direction spread at low wave numbers (wavelength > 731 m) +Operational + + +6001 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +312019 +Wave scatterometer product with width change for wave number (spectral) +Operational + + +6002 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +008060 +Sample scanning mode significance +Range +Operational + + +6003 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +008022 +Total number (with respect to accumulation or average) +Number in sample +Operational + + +6004 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +008060 +Sample scanning mode significance +Horizontal +Operational + + +6005 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +008022 +Total number (with respect to accumulation or average) +Number in sample +Operational + + +6006 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +025014 +Azimuth clutter cut-off +Operational + + +6007 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +022101 +Total energy (wavelength > 731m) at low wave numbers +Operational + + +6008 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +022097 +Mean wavelength > 731 m of image spectrum at low wave numbers +Operational + + +6009 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +022098 +Wavelength spread (wavelength > 731 m) at low wave numbers +Operational + + +6010 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +022099 +Mean direction at low wave numbers (wavelength > 731 m) +Operational + + +6011 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +022100 +Direction spread at low wave numbers (wavelength > 731 m) +Operational + + +6012 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301046 +Satellite identifier, direction of motion, sensor, model function, software, resolution +Operational + + +6013 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301011 +Year, month, day +Operational + + +6014 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301013 +Hour, minute, second +Operational + + +6015 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6016 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +312031 +SEAWINDS wind +Operational + + +6017 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +101004 +Replicate 1 descriptor 4 times +Operational + + +6018 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +312030 +Wind, formal uncertainty, likelihood +Operational + + +6019 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +021110 +Number of inner-beam sigma-0 (forward of satellite) +Operational + + +6020 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6021 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +321027 +Radar specification, normalized radar cross-section, Kp variance coefficient +Operational + + +6022 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +021111 +Number of outer-beam sigma-0 (forward of satellite) +Operational + + +6023 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6024 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +321027 +Radar specification, normalized radar cross-section, Kp variance coefficient +Operational + + +6025 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +021112 +Number of inner-beam sigma-0 (aft of satellite) +Operational + + +6026 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6027 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +321027 +Radar specification, normalized radar cross-section, Kp variance coefficient +Operational + + +6028 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +021113 +Number of outer-beam sigma-0 (aft of satellite) +Operational + + +6029 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6030 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +321027 +Radar specification, normalized radar cross-section, Kp variance coefficient +Operational + + +6031 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +301047 +ERS product header +Operational + + +6032 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +105009 +Replicate 5 descriptors 9 times +Operational + + +6033 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +301023 +Latitude/longitude (coarse accuracy) +10-arcmin cell +Operational + + +6034 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +007021 +Elevation +Incidence angle nadir view | Set to zero +Operational + + +6035 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +012061 +Skin temperature +SST (nadir-only view) +Operational + + +6036 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +007021 +Elevation +Incidence angle dual view | Set to missing +Operational + + +6037 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +012061 +Skin temperature +SST (dual view) +Operational + + +6038 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +021085 +ATSR sea-surface temperature across-track band number +0-9 +Operational + + +6039 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +021070 +SST product confidence data (SADIST-2) +23-bit flag +Operational + + +6040 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301046 +Satellite identifier, direction of motion, sensor, model function, software, resolution +Operational + + +6041 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301011 +Year, month, day +Operational + + +6042 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301013 +Hour, minute, second +Operational + + +6043 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6044 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +008025 +Time difference qualifier +Operational + + +6045 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +201136 +Change data width +Operational + + +6046 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +004006 +Second +Operational + + +6047 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +201000 +Change data width +Cancel +Operational + + +6048 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +312031 +SEAWINDS wind +Operational + + +6049 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +312032 +SEAWINDS precipitation +Operational + + +6050 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +101004 +Replicate 1 descriptor 4 times +Operational + + +6051 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +312030 +Wind, formal uncertainty, likelihood +Operational + + +6052 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +101002 +Replicate 1 descriptor 2 times +Operational + + +6053 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +312033 +Antenna polarization, brightness temperature +Operational + + +6054 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +021110 +Number of inner-beam sigma-0 (forward of satellite) +Operational + + +6055 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6056 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +321028 +Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient +Operational + + +6057 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +021111 +Number of outer-beam sigma-0 (forward of satellite) +Operational + + +6058 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6059 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +321028 +Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient +Operational + + +6060 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +021112 +Number of inner-beam sigma-0 (aft of satellite) +Operational + + +6061 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6062 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +321028 +Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient +Operational + + +6063 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +021113 +Number of outer-beam sigma-0 (aft of satellite) +Operational + + +6064 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6065 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +321028 +Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient +Operational + + +6066 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +201130 +Change data width +Operational + + +6067 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +202129 +Change scale +Operational + + +6068 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +011012 +Wind speed at 10 m +Operational + + +6069 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +202000 +Change scale +Cancel +Operational + + +6070 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +201000 +Change data width +Cancel +Operational + + +6071 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +011052 +Formal uncertainty in wind speed +Operational + + +6072 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +201135 +Change data width +Operational + + +6073 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +202130 +Change scale +Operational + + +6074 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +011011 +Wind direction at 10 m +Operational + + +6075 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +202000 +Change scale +Cancel +Operational + + +6076 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +201000 +Change data width +Cancel +Operational + + +6077 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +011053 +Formal uncertainty in wind direction +Operational + + +6078 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +021104 +Likelihood computed for solution +Operational + + +6079 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +005034 +Along-track row number +Operational + + +6080 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +006034 +Cross-track cell number +Operational + + +6081 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +021109 +SEAWINDS wind vector cell quality +Operational + + +6082 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +011081 +Model wind direction at 10 m +Operational + + +6083 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +011082 +Model wind speed at 10 m +Operational + + +6084 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +021101 +Number of vector ambiguities +Operational + + +6085 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +021102 +Index of selected wind vector +Operational + + +6086 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +021103 +Total number of sigma-0 measurements +Operational + + +6087 +12 +Single level report sequences (satellite data) +312032 +(SEAWINDS precipitation) +021120 +Probability of rain +Operational + + +6088 +12 +Single level report sequences (satellite data) +312032 +(SEAWINDS precipitation) +021121 +SEAWINDS NOF rain index +Operational + + +6089 +12 +Single level report sequences (satellite data) +312032 +(SEAWINDS precipitation) +013055 +Intensity of precipitation +Operational + + +6090 +12 +Single level report sequences (satellite data) +312032 +(SEAWINDS precipitation) +021122 +Attenuation correction on sigma-0 (from tB) +Operational + + +6091 +12 +Single level report sequences (satellite data) +312033 +(Antenna polarization, brightness temperature) +002104 +Antenna polarization +Operational + + +6092 +12 +Single level report sequences (satellite data) +312033 +(Antenna polarization, brightness temperature) +008022 +Total number (with respect to accumulation or average) +Operational + + +6093 +12 +Single level report sequences (satellite data) +312033 +(Antenna polarization, brightness temperature) +012063 +Brightness temperature +Operational + + +6094 +12 +Single level report sequences (satellite data) +312033 +(Antenna polarization, brightness temperature) +012065 +Standard deviation brightness temperature +Operational + + +6095 +12 +Single level report sequences (satellite data) +312041 +(Altitude) +201141 +Change data width +28 bits long +Operational + + +6096 +12 +Single level report sequences (satellite data) +312041 +(Altitude) +202130 +Change scale +Scale: 2 +Operational + + +6097 +12 +Single level report sequences (satellite data) +312041 +(Altitude) +007001 +Height of station +Operational + + +6098 +12 +Single level report sequences (satellite data) +312041 +(Altitude) +201000 +Change data width +Cancel +Operational + + +6099 +12 +Single level report sequences (satellite data) +312041 +(Altitude) +202000 +Change scale +Cancel +Operational + + +6100 +12 +Single level report sequences (satellite data) +312042 +(Altitude corrections) +021077 +Altitude correction (ionosphere) +Operational + + +6101 +12 +Single level report sequences (satellite data) +312042 +(Altitude corrections) +021078 +Altitude correction (dry troposphere) +Operational + + +6102 +12 +Single level report sequences (satellite data) +312042 +(Altitude corrections) +021079 +Altitude correction (wet troposphere) +Operational + + +6103 +12 +Single level report sequences (satellite data) +312042 +(Altitude corrections) +021080 +Altitude correction (calibration constant) +Operational + + +6104 +12 +Single level report sequences (satellite data) +312042 +(Altitude corrections) +021081 +Open loop correction (height-time loop) +Operational + + +6105 +12 +Single level report sequences (satellite data) +312042 +(Altitude corrections) +021082 +Open loop correction (auto gain control) +Operational + + +6106 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +001007 +Satellite identifier +Operational + + +6107 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +002019 +Satellite instruments +Operational + + +6108 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +001096 +Station acquisition +Operational + + +6109 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +025061 +Software identification and version number +Operational + + +6110 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +005040 +Orbit number +Operational + + +6111 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +301011 +Year, month, day +Operational + + +6112 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +301013 +Hour, minute, second +Operational + + +6113 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +301021 +Latitude/longitude (high accuracy) +Operational + + +6114 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +007002 +Height or altitude +Operational + + +6115 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012180 +Averaged 12 micron BT for all clear pixels at nadir +Operational + + +6116 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012181 +Averaged 11 micron BT for all clear pixels at nadir +Operational + + +6117 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012182 +Averaged 3.7 micron BT for all clear pixels at nadir +Operational + + +6118 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012183 +Averaged 12 micron BT for all clear pixels, forward view +Operational + + +6119 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012184 +Averaged 11 micron BT for all clear pixels, forward view +Operational + + +6120 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012185 +Averaged 3.7 micron BT for all clear pixels, forward view +Operational + + +6121 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +002174 +Mean across-track pixel number +Operational + + +6122 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +021086 +Number of pixels in nadir only, average +Operational + + +6123 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012186 +Mean nadir sea-surface temperature +Operational + + +6124 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +021087 +Number of pixels in dual view, average +Operational + + +6125 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012187 +Mean dual view sea-surface temperature +Operational + + +6126 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +033043 +AST confidence +Operational + + +6127 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +001007 +Satellite identifier +Operational + + +6128 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +002019 +Satellite instruments +Operational + + +6129 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +001096 +Station acquisition +Operational + + +6130 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +025061 +Software identification and version number +Operational + + +6131 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +005040 +Orbit number +Operational + + +6132 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +301011 +Year, month, day +Operational + + +6133 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +301013 +Hour, minute, second +Operational + + +6134 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +301021 +Latitude/longitude (high accuracy) +Operational + + +6135 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +007025 +Solar zenith angle +Operational + + +6136 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +005022 +Solar azimuth +Operational + + +6137 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +010080 +Viewing zenith angle +Operational + + +6138 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +027080 +Viewing azimuth angle +Operational + + +6139 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +008003 +Vertical significance (satellite observations) +Operational + + +6140 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +007004 +Pressure +Operational + + +6141 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +013093 +Cloud optical thickness +Operational + + +6142 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +008003 +Vertical significance (satellite observations) +Operational + + +6143 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +201131 +Change data width +Operational + + +6144 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +202129 +Change scale +Operational + + +6145 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +007004 +Pressure +Operational + + +6146 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +007004 +Pressure +Operational + + +6147 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +202000 +Change scale +Cancel +Operational + + +6148 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +201000 +Change data width +Cancel +Operational + + +6149 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +013095 +Total column water vapour +Operational + + +6150 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +001007 +Satellite identifier +Operational + + +6151 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +002019 +Satellite instruments +Operational + + +6152 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +001096 +Station acquisition +Operational + + +6153 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025061 +Software identification and version number +Operational + + +6154 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +005040 +Orbit number +Operational + + +6155 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +008075 +Ascending/descending orbit qualifier +Operational + + +6156 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +301011 +Year, month, day +Operational + + +6157 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +301013 +Hour, minute, second +Operational + + +6158 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +301021 +Latitude/longitude (high accuracy) +Operational + + +6159 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +001012 +Direction of motion of moving observing platform +Operational + + +6160 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +201131 +Change data width +Operational + + +6161 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +001013 +Speed of motion of moving observing platform +Operational + + +6162 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +201000 +Change data width +Cancel +Operational + + +6163 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +010032 +Satellite distance to Earth's centre +Operational + + +6164 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +010033 +Altitude (platform to ellipsoid) +Operational + + +6165 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +010034 +Earth's radius +Operational + + +6166 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +007002 +Height or altitude +Operational + + +6167 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +008012 +Land/sea qualifier +Operational + + +6168 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025110 +Image processing summary +Operational + + +6169 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025111 +Number of input data gaps +Operational + + +6170 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025102 +Number of missing lines excluding data gaps +Operational + + +6171 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +002104 +Antenna polarization +Operational + + +6172 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025103 +Number of directional bins +Operational + + +6173 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025104 +Number of wavelength bins +Operational + + +6174 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025105 +First directional bin +Operational + + +6175 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025106 +Directional bin step +Operational + + +6176 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025107 +First wavelength bin +Operational + + +6177 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025108 +Last wavelength bin +Operational + + +6178 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +002111 +Radar incidence angle +Operational + + +6179 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +002121 +Mean frequency +Operational + + +6180 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +002026 +Cross-track resolution +Operational + + +6181 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +002027 +Along-track resolution +Operational + + +6182 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021130 +Spectrum total energy +Operational + + +6183 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021131 +Spectrum max energy +Operational + + +6184 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021132 +Direction of spectrum max on higher resolution grid +Operational + + +6185 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021133 +Wavelength of spectrum max on higher resolution grid +Operational + + +6186 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021064 +Clutter noise estimate +Operational + + +6187 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025014 +Azimuth clutter cut-off +Operational + + +6188 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021134 +Range resolution of cress covariance spectrum +Operational + + +6189 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +107018 +Replicate 7 descriptors 18 times +Operational + + +6190 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +005030 +Direction (spectral) +Operational + + +6191 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +105024 +Replicate 5 descriptors 24 times +Operational + + +6192 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +201130 +Change data width +Operational + + +6193 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +006030 +Wave number (spectral) +Operational + + +6194 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +201000 +Change data width +Cancel +Operational + + +6195 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021135 +Real part of cross spectra polar grid number of bins +Operational + + +6196 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021136 +Imaginary part of cross spectra polar grid number of bins +Operational + + +6197 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +033044 +ASAR quality information +Operational + + +6198 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +001007 +Satellite identifier +Operational + + +6199 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002019 +Satellite instruments +Operational + + +6200 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +001096 +Station acquisition +Operational + + +6201 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025061 +Software identification and version number +Operational + + +6202 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +005040 +Orbit number +Operational + + +6203 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025120 +RA2-L2-processing flag +Operational + + +6204 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025121 +RA2-L2-processing quality +Operational + + +6205 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025124 +MWR-L2-processing flag +Operational + + +6206 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025125 +MWR-L2-processing quality +Operational + + +6207 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025122 +Hardware configuration for RF +Operational + + +6208 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025123 +Hardware configuration for HPA +Operational + + +6209 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +301011 +Year, month, day +Operational + + +6210 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +301013 +Hour, minute, second +Operational + + +6211 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +301021 +Latitude/longitude (high accuracy) +Operational + + +6212 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +007002 +Height or altitude +Operational + + +6213 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002119 +RA-2 instrument operations +Operational + + +6214 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +033047 +Measurement confidence data +Operational + + +6215 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010081 +Altitude of COG above reference ellipsoid +Operational + + +6216 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010082 +Instantaneous altitude rate +Operational + + +6217 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010083 +Squared off nadir angle of the satellite from platform data +Operational + + +6218 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010084 +Squared off nadir angle of the satellite from waveform data +Operational + + +6219 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002116 +Percentage of 320 MHz band processed +Operational + + +6220 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002117 +Percentage of 80 MHz band processed +Operational + + +6221 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002118 +Percentage of 20 MHz band processed +Operational + + +6222 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002156 +Percentage of valid Ku ocean retracker measurements +Operational + + +6223 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002157 +Percentage of valid S ocean retracker measurements +Operational + + +6224 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +014055 +Solar activity index +Operational + + +6225 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022150 +Number of 18 Hz valid points for Ku band +Operational + + +6226 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022151 +Ku band ocean range +Operational + + +6227 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022152 +STD of 18 Hz Ku band ocean range +Operational + + +6228 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022153 +Number of 18 Hz valid points for S band +Operational + + +6229 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022154 +S band ocean range +Operational + + +6230 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022155 +STD of 18 Hz S band ocean range +Operational + + +6231 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022156 +Ku band significant wave height +Operational + + +6232 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022157 +STD of 18 Hz Ku band ocean range +Significant wave height +Operational + + +6233 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022158 +S band significant wave height +Operational + + +6234 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022159 +STD of 18 Hz S band significant wave height +Operational + + +6235 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021137 +Ku band corrected ocean backscatter coefficient +Operational + + +6236 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021138 +STD Ku band corrected ocean backscatter coefficient +Operational + + +6237 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021139 +Ku band net instrumental correction for AGC +Operational + + +6238 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021140 +S band corrected ocean backscatter coefficient +Operational + + +6239 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021141 +STD S band corrected ocean backscatter coefficient +Operational + + +6240 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021142 +S band net instrumental correction for AGC +Operational + + +6241 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010085 +Mean sea-surface height +Operational + + +6242 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010086 +Geoid's height +Operational + + +6243 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010087 +Ocean depth/land elevation +Operational + + +6244 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010088 +Total geocentric ocean tide height (solution 1) +Operational + + +6245 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010089 +Total geocentric ocean tide height (solution 2) +Operational + + +6246 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010090 +Long period tide height +Operational + + +6247 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010091 +Tidal loading height +Operational + + +6248 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010092 +Solid Earth tide height +Operational + + +6249 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010093 +Geocentric pole tide height +Operational + + +6250 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +011002 +Wind speed +Operational + + +6251 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025126 +Model dry tropospheric correction +Operational + + +6252 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025127 +Inverted barometer correction +Operational + + +6253 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025128 +Model wet tropospheric correction +Operational + + +6254 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025129 +MWR derived wet tropospheric correction +Operational + + +6255 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025130 +RA2 ionospheric correction on Ku band +Operational + + +6256 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025131 +Ionospheric correction from Doris on Ku band +Operational + + +6257 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025132 +Ionospheric correction from model on Ku band +Operational + + +6258 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025133 +Sea state bias correction on Ku band +Operational + + +6259 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025134 +RA2 ionospheric correction on S band +Operational + + +6260 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025135 +Ionospheric correction from Doris on S band +Operational + + +6261 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025136 +Ionospheric correction from model on S band +Operational + + +6262 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025137 +Sea state bias correction on S band +Operational + + +6263 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +013096 +MWR water vapour content +Operational + + +6264 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +013097 +MWR liquid water content +Operational + + +6265 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +011095 +u-component of the model wind vector +Operational + + +6266 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +011096 +v-component of the model wind vector +Operational + + +6267 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +012188 +Interpolated 23.8 GHz brightness T from MWR +Operational + + +6268 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +012189 +Interpolated 36.5 GHz brightness T from MWR +Operational + + +6269 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002158 +RA-2 instrument +Operational + + +6270 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002159 +MWR instrument +Operational + + +6271 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +033052 +S band ocean retracking quality +Operational + + +6272 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +033053 +Ku band ocean retracking quality +Operational + + +6273 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021143 +Ku band rain attenuation +Operational + + +6274 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021144 +Altimeter rain flag +Operational + + +6275 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +001007 +Satellite identifier +Operational + + +6276 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +002019 +Satellite instruments +Operational + + +6277 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +001096 +Station acquisition +Operational + + +6278 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025061 +Software identification and version number +Operational + + +6279 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +005040 +Orbit number +Operational + + +6280 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +008075 +Ascending/descending orbit qualifier +Operational + + +6281 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +301011 +Year, month, day +Operational + + +6282 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +301013 +Hour, minute, second +Operational + + +6283 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +301021 +Latitude/longitude (high accuracy) +Operational + + +6284 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +001012 +Direction of motion of moving observing platform +Operational + + +6285 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +201131 +Change data width +Operational + + +6286 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +001013 +Speed of motion of moving observing platform +Operational + + +6287 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +201000 +Change data width +Cancel +Operational + + +6288 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +010032 +Satellite distance to Earth's centre +Operational + + +6289 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +010033 +Altitude (platform to ellipsoid) +Operational + + +6290 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +010034 +Earth's radius +Operational + + +6291 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +007002 +Height or altitude +Operational + + +6292 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +008012 +Land/sea qualifier +Operational + + +6293 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025110 +Image processing summary +Operational + + +6294 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025111 +Number of input data gaps +Operational + + +6295 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025102 +Number of missing lines excluding data gaps +Operational + + +6296 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +002104 +Antenna polarization +Operational + + +6297 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025103 +Number of directional bins +Operational + + +6298 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025104 +Number of wavelength bins +Operational + + +6299 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025105 +First directional bin +Operational + + +6300 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025106 +Directional bin step +Operational + + +6301 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025107 +First wavelength bin +Operational + + +6302 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025108 +Last wavelength bin +Operational + + +6303 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +011001 +Wind direction +Operational + + +6304 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +011002 +Wind speed +Operational + + +6305 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +022160 +Normalized inverse wave age +Operational + + +6306 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025138 +Average signal-to-noise ratio +Operational + + +6307 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +201130 +Change data width +Operational + + +6308 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +202129 +Change scale +Operational + + +6309 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +022021 +Height of waves +Operational + + +6310 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +202000 +Change scale +Cancel +Operational + + +6311 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +201000 +Change data width +Cancel +Operational + + +6312 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +033048 +Confidence measure of SAR inversion +Operational + + +6313 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +033049 +Confidence measure of wind retrieval +Operational + + +6314 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +002026 +Cross-track resolution +Operational + + +6315 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +002027 +Along-track resolution +Operational + + +6316 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +021130 +Spectrum total energy +Operational + + +6317 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +021131 +Spectrum max energy +Operational + + +6318 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +021132 +Direction of spectrum max on higher resolution grid +Operational + + +6319 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +021133 +Wavelength of spectrum max on higher resolution grid +Operational + + +6320 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025014 +Azimuth clutter cut-off +Operational + + +6321 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +106036 +Replicate 6 descriptors 36 times +Operational + + +6322 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +005030 +Direction (spectral) +Operational + + +6323 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +104024 +Replicate 4 descriptors 24 times +Operational + + +6324 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +201130 +Change data width +Operational + + +6325 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +006030 +Wave number (spectral) +Operational + + +6326 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +201000 +Change data width +Cancel +Operational + + +6327 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +022161 +Wave spectra +Operational + + +6328 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +033044 +ASAR quality information +Operational + + +6329 +12 +Single level report sequences (satellite data) +312055 +(ASCAT level 1b cell information) +005033 +Pixel size on horizontal - 1 +Operational + + +6330 +12 +Single level report sequences (satellite data) +312055 +(ASCAT level 1b cell information) +005040 +Orbit number +Operational + + +6331 +12 +Single level report sequences (satellite data) +312055 +(ASCAT level 1b cell information) +006034 +Cross-track cell number +Operational + + +6332 +12 +Single level report sequences (satellite data) +312055 +(ASCAT level 1b cell information) +010095 +Height of atmosphere used +Operational + + +6333 +12 +Single level report sequences (satellite data) +312055 +(ASCAT level 1b cell information) +021157 +Loss per unit length of atmosphere used +Operational + + +6334 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +025060 +Software identification +Operational + + +6335 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +001032 +Generating application +Operational + + +6336 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +011082 +Model wind speed at 10 m +Operational + + +6337 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +011081 +Model wind direction at 10 m +Operational + + +6338 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +020095 +Ice probability +Operational + + +6339 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +020096 +Ice age ("A" parameter) +Operational + + +6340 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +021155 +Wind vector cell quality +Operational + + +6341 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +201133 +Change data width +Increase data width by 5 bits +Operational + + +6342 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +021101 +Number of vector ambiguities +Operational + + +6343 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +021102 +Index of selected wind vector +Operational + + +6344 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +201000 +Change data width +Cancel +Operational + + +6345 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +201130 +Change data width +Increase data width by 2 bits +Operational + + +6346 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +202129 +Change scale +Increase scaling by 10**1 +Operational + + +6347 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +011012 +Wind speed at 10 m +Operational + + +6348 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +202000 +Change scale +Cancel +Operational + + +6349 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +201000 +Change data width +Cancel +Operational + + +6350 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +201131 +Change data width +Increase data width by 3 bits +Operational + + +6351 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +202129 +Change scale +Increase scaling by 10**1 +Operational + + +6352 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +011011 +Wind direction at 10 m +Operational + + +6353 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +202000 +Change scale +Cancel +Operational + + +6354 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +201000 +Change data width +Cancel +Operational + + +6355 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +021156 +Backscatter distance +Operational + + +6356 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +021104 +Likelihood computed for solution +Operational + + +6357 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +301125 +ASCAT header information +Operational + + +6358 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +301011 +Year, month, day +Operational + + +6359 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +301013 +Hour, minute, second +Operational + + +6360 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +301021 +Latitude/longitude (high accuracy) +Operational + + +6361 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +312055 +ASCAT level 1b cell information +Operational + + +6362 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +021150 +Beam co-location +Operational + + +6363 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +101003 +Replicate 1 descriptor 3 times +Operational + + +6364 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +321030 +ASCAT sigma-0 information +Operational + + +6365 +12 +Single level report sequences (satellite data) +312059 +(Scatterometer wind data) +312056 +Scatterometer wind cell information +Operational + + +6366 +12 +Single level report sequences (satellite data) +312059 +(Scatterometer wind data) +101000 +Delayed replication of 1 descriptor +Operational + + +6367 +12 +Single level report sequences (satellite data) +312059 +(Scatterometer wind data) +031001 +Delayed descriptor replication factor +Operational + + +6368 +12 +Single level report sequences (satellite data) +312059 +(Scatterometer wind data) +312057 +Ambiguous wind data +Operational + + +6369 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +025060 +Software identification +Operational + + +6370 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +025062 +Database identification +Operational + + +6371 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040001 +Surface soil moisture (ms) +Operational + + +6372 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040002 +Estimated error in surface soil moisture +Operational + + +6373 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +021062 +Backscatter +Extrapolated backscatter at 40 deg incidence angle (sigma0_40) +Operational + + +6374 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +021151 +Estimated error in sigma-0 at 40 degrees incidence angle +Operational + + +6375 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +021152 +Slope at 40 degrees incidence angle +Operational + + +6376 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +021153 +Estimated error in slope at 40 degrees incidence angle +Operational + + +6377 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +021154 +Soil moisture sensitivity +Operational + + +6378 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +021062 +Backscatter +Dry backscatter +Operational + + +6379 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +021088 +Wet backscatter +Operational + + +6380 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040003 +Mean surface soil moisture +Operational + + +6381 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040004 +Rain fall detection +Operational + + +6382 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040005 +Soil moisture correction flag +Operational + + +6383 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040006 +Soil moisture processing flag +Operational + + +6384 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040007 +Soil moisture quality +Operational + + +6385 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +020065 +Snow cover +Operational + + +6386 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040008 +Frozen land surface fraction +Operational + + +6387 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040009 +Inundation and wetland fraction +Operational + + +6388 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040010 +Topographic complexity +Operational + + +6389 +12 +Single level report sequences (satellite data) +312061 +(ASCAT level 1b and level 2 data) +312058 +ASCAT level 1b data +Operational + + +6390 +12 +Single level report sequences (satellite data) +312061 +(ASCAT level 1b and level 2 data) +312060 +Scatterometer soil moisture data +Operational + + +6391 +12 +Single level report sequences (satellite data) +312061 +(ASCAT level 1b and level 2 data) +312059 +Scatterometer wind data +Operational + + +6392 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +001007 +Satellite identifier +Operational + + +6393 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +002019 +Satellite instruments +Operational + + +6394 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +001144 +Snapshot identifier +Operational + + +6395 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +001124 +Grid point identifier +Operational + + +6396 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +030010 +Number of grid points +Operational + + +6397 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +301011 +Year, month, day +Operational + + +6398 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +301013 +Hour, minute, second +Operational + + +6399 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +301021 +Latitude/longitude (high accuracy) +Operational + + +6400 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +007012 +Grid point altitude +Operational + + +6401 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +015012 +Total electron count per square metre +Operational + + +6402 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +012165 +Direct sun brightness temperature +Operational + + +6403 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +012166 +Snapshot accuracy +Operational + + +6404 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +012167 +Radiometric accuracy (pure polarization) +Operational + + +6405 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +012168 +Radiometric accuracy (cross polarization) +Operational + + +6406 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +027010 +Footprint axis 1 +Operational + + +6407 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +028010 +Footprint axis 2 +Operational + + +6408 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +002099 +Polarization +Operational + + +6409 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +013048 +Water fraction +Operational + + +6410 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +025081 +Incidence angle +Operational + + +6411 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +025082 +Azimuth angle +Operational + + +6412 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +025083 +Faraday rotational angle +Operational + + +6413 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +025084 +Geometric rotational angle +Operational + + +6414 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +012080 +Brightness temperature real part +Operational + + +6415 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +012081 +Brightness temperature imaginary part +Operational + + +6416 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +012082 +Pixel radiometric accuracy +Operational + + +6417 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +025174 +SMOS information flag +Operational + + +6418 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +033028 +Snapshot overall quality +Operational + + +6419 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +001007 +Satellite identifier +Operational + + +6420 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +002019 +Satellite instruments +Operational + + +6421 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +002139 +SIRAL instrument configuration +Operational + + +6422 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +001096 +Station acquisition +Acquisition station name +Operational + + +6423 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +001040 +Processing centre ID code +Operational + + +6424 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025061 +Software identification and version number +Operational + + +6425 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +005040 +Orbit number +Operational + + +6426 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +005044 +Satellite cycle number +Operational + + +6427 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +008075 +Ascending/descending orbit qualifier +Operational + + +6428 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +008077 +Radiometer sensed surface type +Operational + + +6429 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +004001 +Year +Operational + + +6430 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +004002 +Month +Operational + + +6431 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +004003 +Day +Operational + + +6432 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +004004 +Hour +Operational + + +6433 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +004005 +Minute +Operational + + +6434 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +004006 +Second +Operational + + +6435 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +005001 +Latitude (high accuracy) +Operational + + +6436 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +006001 +Longitude (high accuracy) +Operational + + +6437 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010081 +Altitude of COG above reference ellipsoid +Operational + + +6438 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022156 +Ku band significant wave height +Operational + + +6439 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022142 +Square of significant wave height +Operational + + +6440 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +101020 +Replicate 1 descriptor 20 times +Operational + + +6441 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022149 +20 Hz significant wave height squared +Operational + + +6442 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022143 +STD of 20 Hz SWH squared +Operational + + +6443 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022144 +Number of 20 Hz valid points for SWH squared +Operational + + +6444 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021137 +Ku band corrected ocean backscatter coefficient +Operational + + +6445 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +101020 +Replicate 1 descriptor 20 times +Operational + + +6446 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021181 +20 Hz ocean backscatter coefficient +Operational + + +6447 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021138 +STD Ku band corrected ocean backscatter coefficient +Operational + + +6448 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021180 +Number of 20 Hz valid points for ocean backscatter coefficient +Operational + + +6449 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021177 +Corrected OCOG backscatter coefficient +Operational + + +6450 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021178 +STD of 20 Hz OCOG backscatter coefficient +Operational + + +6451 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021179 +Number of 20 Hz valid points for OCOG backscatter coefficient +Operational + + +6452 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010079 +Off nadir angle of the satellite from platform data +Operational + + +6453 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010085 +Mean sea-surface height +Operational + + +6454 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010086 +Geoid's height +Operational + + +6455 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010087 +Ocean depth/land elevation +Operational + + +6456 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010089 +Total geocentric ocean tide height (solution 2) +Operational + + +6457 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010090 +Long period tide height +Operational + + +6458 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010091 +Tidal loading height +Operational + + +6459 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010092 +Solid Earth tide height +Operational + + +6460 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010093 +Geocentric pole tide height +Operational + + +6461 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +011097 +Wind speed from altimeter +Operational + + +6462 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021093 +Ku band peakiness +Average of 20 Hz values +Operational + + +6463 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +101020 +Replicate 1 descriptor 20 times +Operational + + +6464 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021182 +20 Hz Ku band peakiness +20 values +Operational + + +6465 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +033053 +Ku band ocean retracking quality +Operational + + +6466 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022151 +Ku band ocean range +Operational + + +6467 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022145 +STD of 20 Hz ocean range +Operational + + +6468 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022148 +Number of 20 Hz valid points for ocean range +Operational + + +6469 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022146 +OCOG range +Operational + + +6470 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022147 +STD of 20 Hz OCOG range +Operational + + +6471 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025126 +Model dry tropospheric correction +Operational + + +6472 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025128 +Model wet tropospheric correction +Operational + + +6473 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025127 +Inverted barometer correction +Operational + + +6474 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021176 +High frequency variability correction +Operational + + +6475 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025132 +Ionospheric correction from model on Ku band +Operational + + +6476 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025133 +Sea state bias correction on Ku band +Operational + + +6477 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025182 +L1 processing flag +Operational + + +6478 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025183 +L1 processing quality +Operational + + +6479 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025180 +LRM mode per cent +Operational + + +6480 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025184 +L2 product status +Operational + + +6481 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025181 +L2 processing flag +Operational + + +6482 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +033080 +Scan level quality flags +L2 processing quality +Operational + + +6483 +13 +Sequences common to image data +313009 +(Radar reflectivity values) +021001 +Horizontal reflectivity +Operational + + +6484 +13 +Sequences common to image data +313009 +(Radar reflectivity values) +101000 +Delayed replication of 1 descriptor +Operational + + +6485 +13 +Sequences common to image data +313009 +(Radar reflectivity values) +031001 +Delayed descriptor replication factor +Operational + + +6486 +13 +Sequences common to image data +313009 +(Radar reflectivity values) +021001 +Horizontal reflectivity +Operational + + +6487 +13 +Sequences common to image data +313010 +(Radar rainfall intensities) +021036 +Radar rainfall intensity +Operational + + +6488 +13 +Sequences common to image data +313010 +(Radar rainfall intensities) +101000 +Delayed replication of 1 descriptor +Operational + + +6489 +13 +Sequences common to image data +313010 +(Radar rainfall intensities) +031001 +Delayed descriptor replication factor +Operational + + +6490 +13 +Sequences common to image data +313010 +(Radar rainfall intensities) +021036 +Radar rainfall intensity +Operational + + +6491 +13 +Sequences common to image data +313031 +(Non run-length encoded row for Pixel value (4 bits)) +006002 +Longitude (coarse accuracy) +First longitude location minus one increment +Operational + + +6492 +13 +Sequences common to image data +313031 +(Non run-length encoded row for Pixel value (4 bits)) +006012 +Longitude increment (coarse accuracy) +Operational + + +6493 +13 +Sequences common to image data +313031 +(Non run-length encoded row for Pixel value (4 bits)) +101000 +Delayed replication of 1 descriptor +Operational + + +6494 +13 +Sequences common to image data +313031 +(Non run-length encoded row for Pixel value (4 bits)) +031002 +Extended delayed descriptor replication factor +Operational + + +6495 +13 +Sequences common to image data +313031 +(Non run-length encoded row for Pixel value (4 bits)) +030001 +Pixel value (4 bits) +Operational + + +6496 +13 +Sequences common to image data +313032 +(Non run-length encoded picture data for Pixel value (4 bits)) +005002 +Latitude (coarse accuracy) +First latitude location minus one increment +Operational + + +6497 +13 +Sequences common to image data +313032 +(Non run-length encoded picture data for Pixel value (4 bits)) +005012 +Latitude increment (coarse accuracy) +Signed value so cannot cross pole +Operational + + +6498 +13 +Sequences common to image data +313032 +(Non run-length encoded picture data for Pixel value (4 bits)) +101000 +Delayed replication of 1 descriptor +Operational + + +6499 +13 +Sequences common to image data +313032 +(Non run-length encoded picture data for Pixel value (4 bits)) +031002 +Extended delayed descriptor replication factor +Operational + + +6500 +13 +Sequences common to image data +313032 +(Non run-length encoded picture data for Pixel value (4 bits)) +313031 +Non run-length encoded row for Pixel value (4 bits) +Operational + + +6501 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +006002 +Longitude (coarse accuracy) +First longitude location minus one increment +Operational + + +6502 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +110000 +Delayed replication of 10 descriptors +Operational + + +6503 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +031001 +Delayed descriptor replication factor +Operational + + +6504 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +104000 +Delayed replication of 4 descriptors +Operational + + +6505 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +031001 +Delayed descriptor replication factor +Operational + + +6506 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +006012 +Longitude increment (coarse accuracy) +Operational + + +6507 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +101000 +Delayed replication of 1 descriptor +Operational + + +6508 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +031012 +Extended delayed descriptor and data repetition factor +Operational + + +6509 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +030001 +Pixel value (4 bits) +Operational + + +6510 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +006012 +Longitude increment (coarse accuracy) +Operational + + +6511 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +101000 +Delayed replication of 1 descriptor +Operational + + +6512 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +031001 +Delayed descriptor replication factor +Operational + + +6513 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +030001 +Pixel value (4 bits) +Operational + + +6514 +13 +Sequences common to image data +313042 +(Run-length encoded picture data for Pixel value (4 bits)) +005002 +Latitude (coarse accuracy) +First latitude location minus one increment +Operational + + +6515 +13 +Sequences common to image data +313042 +(Run-length encoded picture data for Pixel value (4 bits)) +005012 +Latitude increment (coarse accuracy) +Signed value so cannot cross pole +Operational + + +6516 +13 +Sequences common to image data +313042 +(Run-length encoded picture data for Pixel value (4 bits)) +101000 +Delayed replication of 1 descriptor +Operational + + +6517 +13 +Sequences common to image data +313042 +(Run-length encoded picture data for Pixel value (4 bits)) +031002 +Extended delayed descriptor replication factor +Operational + + +6518 +13 +Sequences common to image data +313042 +(Run-length encoded picture data for Pixel value (4 bits)) +313041 +Run-length encoded row for pixel value (4 bits) +Operational + + +6519 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +006002 +Longitude (coarse accuracy) +First longitude location minus one increment +Operational + + +6520 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +005002 +Latitude (coarse accuracy) +First latitude location minus one increment +Operational + + +6521 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +005012 +Latitude increment (coarse accuracy) +Operational + + +6522 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +112000 +Delayed replication of 12 descriptors +Operational + + +6523 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +031001 +Delayed descriptor replication factor +Operational + + +6524 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +110000 +Delayed replication of 10 descriptors +Operational + + +6525 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +031001 +Delayed descriptor replication factor +Operational + + +6526 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +104000 +Delayed replication of 4 descriptors +Operational + + +6527 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +031001 +Delayed descriptor replication factor +Operational + + +6528 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +006012 +Longitude increment (coarse accuracy) +Operational + + +6529 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +101000 +Delayed replication of 1 descriptor +Operational + + +6530 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +031011 +Delayed descriptor and data repetition factor +Operational + + +6531 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +030001 +Pixel value (4 bits) +Operational + + +6532 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +006012 +Longitude increment (coarse accuracy) +Operational + + +6533 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +101000 +Delayed replication of 1 descriptor +Operational + + +6534 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +031001 +Delayed descriptor replication factor +Operational + + +6535 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +030001 +Pixel value (4 bits) +Operational + + +6536 +15 +Oceanographic report sequences +315001 +(Typically reported underwater sounding without optional fields) +001011 +Ship or mobile land station identifier +Ship's call sign +Operational + + +6537 +15 +Oceanographic report sequences +315001 +(Typically reported underwater sounding without optional fields) +301011 +Year, month, day +Operational + + +6538 +15 +Oceanographic report sequences +315001 +(Typically reported underwater sounding without optional fields) +301012 +Hour, minute +Operational + + +6539 +15 +Oceanographic report sequences +315001 +(Typically reported underwater sounding without optional fields) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6540 +15 +Oceanographic report sequences +315001 +(Typically reported underwater sounding without optional fields) +306001 +Depth, temperature +Operational + + +6541 +15 +Oceanographic report sequences +315002 +(Typically reported underwater sounding without optional fields) +001011 +Ship or mobile land station identifier +Ship's call sign +Operational + + +6542 +15 +Oceanographic report sequences +315002 +(Typically reported underwater sounding without optional fields) +301011 +Year, month, day +Operational + + +6543 +15 +Oceanographic report sequences +315002 +(Typically reported underwater sounding without optional fields) +301012 +Hour, minute +Operational + + +6544 +15 +Oceanographic report sequences +315002 +(Typically reported underwater sounding without optional fields) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6545 +15 +Oceanographic report sequences +315002 +(Typically reported underwater sounding without optional fields) +306004 +Depth, temperature, salinity +Operational + + +6546 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +001087 +WMO marine observing platform extended identifier +Operational + + +6547 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +001085 +Observing platform manufacturer's model +Operational + + +6548 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +001086 +Observing platform manufacturer's serial number +Operational + + +6549 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +002036 +Buoy type +Operational + + +6550 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +002148 +Data collection and/or location system +Operational + + +6551 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +002149 +Type of data buoy +Operational + + +6552 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +022055 +Float cycle number +Operational + + +6553 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +022056 +Direction of profile +Operational + + +6554 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +022067 +Instrument type for water temperature/salinity profile measurement +Operational + + +6555 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +301011 +Year, month, day +Operational + + +6556 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +301012 +Hour, minute +Operational + + +6557 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +301021 +Latitude/longitude (high accuracy) +Operational + + +6558 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +008080 +Qualifier for GTSPP quality flag +Operational + + +6559 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +033050 +Global GTSPP quality flag +Operational + + +6560 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +109000 +Delayed replication of 9 descriptors +Operational + + +6561 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +031002 +Extended delayed descriptor replication factor +Operational + + +6562 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +007065 +Water pressure +Operational + + +6563 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +008080 +Qualifier for GTSPP quality flag +Operational + + +6564 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +033050 +Global GTSPP quality flag +Operational + + +6565 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +022045 +Sea/water temperature +Operational + + +6566 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +008080 +Qualifier for GTSPP quality flag +Operational + + +6567 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +033050 +Global GTSPP quality flag +Operational + + +6568 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +022064 +Salinity +Operational + + +6569 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +008080 +Qualifier for GTSPP quality flag +Operational + + +6570 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +033050 +Global GTSPP quality flag +Operational + + +6572 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001079 +Unique identifier for the profile +Hexadecimal string +Operational + + +6573 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001011 +Ship or mobile land station identifier +Ship's call sign +Operational + + +6574 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001103 +IMO Number. Unique Lloyd's register += 0 to 9999999 +Operational + + +6575 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001087 +WMO marine observing platform extended identifier +(see Note 1) +Operational + + +6576 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001019 +Long station or site name +Ship name +Operational + + +6577 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001080 +Ship line number according to SOOP +Operational + + +6578 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +005036 +Ship transect number according to SOOP +(see Note 2) +Operational + + +6579 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001036 +Agency in charge of operating the observing platform +Operational + + +6580 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001013 +Speed of motion of moving observing platform +Operational + + +6581 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001012 +Direction of motion of moving observing platform +Operational + + +6582 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +301011 +Year, month, day +Operational + + +6583 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +301012 +Hour, minute +Operational + + +6584 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +301021 +Latitude/longitude (high accuracy) +Operational + + +6585 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +6586 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +007033 +Height of sensor above water surface +Operational + + +6587 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +002002 +Type of instrumentation for wind measurement +Operational + + +6588 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +011002 +Wind speed +Operational + + +6589 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +011001 +Wind direction +Operational + + +6590 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +6591 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +007033 +Height of sensor above water surface +Operational + + +6592 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +012101 +Temperature/air temperature +Operational + + +6593 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +012103 +Dewpoint temperature +Operational + + +6594 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +6595 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +6596 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +302021 +Waves +Operational + + +6597 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +002031 +Duration and time of current measurement +Operational + + +6598 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +002030 +Method of current measurement +Operational + + +6599 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +022005 +Direction of sea-surface current +Operational + + +6600 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +022032 +Speed of sea-surface current +Operational + + +6601 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +022063 +Total water depth +Operational + + +6602 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +008080 +Qualifier for GTSPP quality flag +Operational + + +6603 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +033050 +Global GTSPP quality flag +Operational + + +6604 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +022178 +XBT/XCTD launcher type +Operational + + +6605 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +022177 +Height of XBT/XCTD launcher +Above sea level | 0 to 50 m in units of whole m +Operational + + +6606 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +022067 +Instrument type for water temperature/salinity profile measurement +Operational + + +6607 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +008041 +Data significance +Operational + + +6608 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +026021 +Year +Operational + + +6609 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +026022 +Month +Operational + + +6610 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +026023 +Day +Operational + + +6611 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +022068 +Water temperature profile recorder types +Operational + + +6612 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +025061 +Software identification and version number +Operational + + +6613 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +008041 +Data significance +Set to missing (cancel) +Operational + + +6614 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +008080 +Qualifier for GTSPP quality flag +Set to missing (cancel) +Operational + + +6615 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +002171 +Instrument serial number for water temperature profile measurement +Operational + + +6616 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +302090 +Sea/water temperature high precision +Operational + + +6617 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +002171 +Instrument serial number for water temperature profile measurement +Operational + + +6618 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +002032 +Indicator for digitization +(see Note 3) +Operational + + +6619 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +315005 +Water temperature profile (temperature profile observed by XBT or buoy) +Operational + + +6620 +15 +Oceanographic report sequences +315005 +(Water temperature profile (temperature profile observed by XBT or buoy) +106000 +Delayed replication of 6 descriptors +Operational + + +6621 +15 +Oceanographic report sequences +315005 +(Water temperature profile (Temperature profile observed by XBT or buoy) +031002 +Extended delayed descriptor replication factor +Operational + + +6622 +15 +Oceanographic report sequences +315005 +(Water temperature profile (Temperature profile observed by XBT or buoy) +007063 +Depth below sea/water surface (cm) +Operational + + +6623 +15 +Oceanographic report sequences +315005 +(Water temperature profile (Temperature profile observed by XBT or buoy) +008080 +Qualifier for GTSPP quality flag += 13 Water depth at a level +Operational + + +6624 +15 +Oceanographic report sequences +315005 +(Water temperature profile (Temperature profile observed by XBT or buoy) +033050 +Global GTSPP quality flag +Operational + + +6625 +15 +Oceanographic report sequences +315005 +(Water temperature profile (Temperature profile observed by XBT or buoy) +022043 +Sea/water temperature +Operational + + +6626 +15 +Oceanographic report sequences +315005 +(Water temperature profile (Temperature profile observed by XBT or buoy) +008080 +Qualifier for GTSPP quality flag += 11 Water temperature at a level +Operational + + +6627 +15 +Oceanographic report sequences +315005 +(Water temperature profile (Temperature profile observed by XBT or buoy) +033050 +Global GTSPP quality flag +Operational + + +6629 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +301003 +Ship’s call sign and motion +Operational + + +6630 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Extended identification +001019 +Long station or site name +Operational + + +6631 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Extended identification +001103 +IMO Number. Unique Lloyd's register +Values are restricted to between 0 and 9999999 +Operational + + +6632 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Extended identification +001087 +WMO marine observing platform extended identifier +Set to missing, if ship's call sign is reported +Operational + + +6633 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Cruise/ship line information +001036 +Agency in charge of operating the observing platform +Operational + + +6634 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Cruise/ship line information +001115 +Identifier of the cruise or mission under which the data were collected +Set to missing, if no cruise identifier is reported +Operational + + +6635 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Cruise/ship line information +001080 +Ship line number according to SOOP +Operational + + +6636 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Cruise/ship line information +005036 +Ship transect number according to SOOP +Operational + + +6637 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Cruise/ship line information +301011 +Year, month, day +Operational + + +6638 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Cruise/ship line information +301012 +Hour, minute +Operational + + +6639 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Cruise/ship line information +301021 +Latitude/longitude (high accuracy) +Operational + + +6640 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Profile information +001079 +Unique identifier for the profile +Operational + + +6641 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Profile information +001023 +Observation sequence number +Cast/station number along the line/transect +Operational + + +6642 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Profile information +022063 +Total water depth +Operational + + +6643 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface pressure +101000 +Delayed replication of 1 descriptor +Operational + + +6644 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface pressure +031000 +Short delayed descriptor replication factor +Operational + + +6645 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface pressure +302001 +Pressure and 3-hour pressure change +Operational + + +6646 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Waves +101000 +Delayed replication of 1 descriptor +Operational + + +6647 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Waves +031000 +Short delayed descriptor replication factor +Operational + + +6648 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Waves +302021 +Waves +Operational + + +6649 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and humidity data +101000 +Delayed replication of 1 descriptor +Operational + + +6650 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and humidity data +031000 +Short delayed descriptor replication factor +Operational + + +6651 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and humidity data +302052 +Ship temperature and humidity data +Operational + + +6652 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Wind data +101000 +Delayed replication of 1 descriptor +Operational + + +6653 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Wind data +031000 +Short delayed descriptor replication factor +Operational + + +6654 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Wind data +302059 +Ship wind data +Operational + + +6655 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface temperature, salinity and current +022067 +Instrument type for water temperature/salinity profile measurement +Operational + + +6656 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface temperature, salinity and current +002171 +Instrument serial number for water temperature profile measurement +Operational + + +6657 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface temperature, salinity and current +302090 +Sea/water temperature high precision +Surface temperature +Operational + + +6658 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface temperature, salinity and current +306033 +Surface salinity +Operational + + +6659 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface temperature, salinity and current +306034 +Surface current +Operational + + +6660 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface temperature, salinity and current +002171 +Instrument serial number for water temperature profile measurement +Set to missing (cancel) +Operational + + +6661 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface temperature, salinity and current +022067 +Instrument type for water temperature/salinity profile measurement +Set to missing (cancel) +Operational + + +6662 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +002038 +Method of water temperature and/or salinity measurement +Operational + + +6663 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +022067 +Instrument type for water temperature/salinity profile measurement +Operational + + +6664 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +022068 +Water temperature profile recorder types +Operational + + +6665 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +002171 +Instrument serial number for water temperature profile measurement +Operational + + +6666 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +002033 +Method of salinity/depth measurement +Operational + + +6667 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +002032 +Indicator for digitization +Operational + + +6668 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +022056 +Direction of profile +Operational + + +6669 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +003011 +Method of depth calculation +Operational + + +6670 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +306035 +Temperature and salinity profile +Operational + + +6671 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +107000 +Delayed replication of 7 descriptors +Operational + + +6672 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +031000 +Short delayed descriptor replication factor +Operational + + +6673 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +002032 +Indicator for digitization +Operational + + +6674 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +003010 +Method of sea/water current measurement +Operational + + +6675 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +002031 +Duration and time of current measurement +Operational + + +6676 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +002040 +Method of removing velocity and motion of platform from current +Operational + + +6677 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +022056 +Direction of profile +Operational + + +6678 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +003011 +Method of depth calculation +Operational + + +6679 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +306036 +Current profile +Operational + + +6680 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Dissolved oxygen profile data +104000 +Delayed replication of 4 descriptors +Operational + + +6681 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Dissolved oxygen profile data +031000 +Short delayed descriptor replication factor +Operational + + +6682 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Dissolved oxygen profile data +002032 +Indicator for digitization +Operational + + +6683 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Dissolved oxygen profile data +003012 +Instrument type/sensor for dissolved oxygen measurement +Operational + + +6684 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Dissolved oxygen profile data +003011 +Method of depth calculation +Operational + + +6685 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Dissolved oxygen profile data +306037 +Dissolved oxygen profile data +Operational + + +6737 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Buoy identification and location +301126 +Sequence for representation of moored buoy identification +Operational + + +6738 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Standard meteorological data +306038 +Sequence for representation of standard surface marine meteorological observations from moored buoys +For buoys equipped with more than 1 anemometer, the height of sensor should relate to the one being used +Operational + + +6739 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional ancillary meteorological data +101000 +Delayed replication of 1 descriptor +Operational + + +6740 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional ancillary meteorological data +031000 +Short delayed descriptor replication factor +Operational + + +6741 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional ancillary meteorological data +302091 +Sequence for representation of ancillary meteorological observations +Operational + + +6742 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional radiation measurements +101000 +Delayed replication of 1 descriptor +Operational + + +6743 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional radiation measurements +031000 +Short delayed descriptor replication factor +Operational + + +6744 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional radiation measurements +302082 +Radiation data +Operational + + +6745 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional basic wave measurements +101000 +Delayed replication of 1 descriptor +Operational + + +6746 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional basic wave measurements +031000 +Short delayed descriptor replication factor +Operational + + +6747 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional basic wave measurements +306039 +Sequence for representation of basic wave measurements +Operational + + +6748 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional spectral wave measurements +101000 +Delayed replication of 1 descriptor +Operational + + +6749 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional spectral wave measurements +031000 +Short delayed descriptor replication factor +Operational + + +6750 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional spectral wave measurements +306040 +Sequence for representation of detailed spectral wave measurements +Operational + + +6751 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature profile measurements +102000 +Delayed replication of 2 descriptors +Operational + + +6752 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature profile measurements +031000 +Short delayed descriptor replication factor +Operational + + +6753 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature profile measurements +002005 +Precision of temperature observation +Operational + + +6754 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature profile measurements +306041 +Depth and temperature profile (high accuracy/precision) +Operational + + +6755 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature and salinity profile measurements +102000 +Delayed replication of 2 descriptors +Operational + + +6756 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature and salinity profile measurements +031000 +Short delayed descriptor replication factor +Operational + + +6757 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature and salinity profile measurements +002005 +Precision of temperature observation +Operational + + +6758 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature and salinity profile measurements +306004 +Depth, temperature, salinity +Operational + + +6759 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional subsurface current measurements +101000 +Delayed replication of 1 descriptor +Operational + + +6760 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional subsurface current measurements +031000 +Short delayed descriptor replication factor +Operational + + +6761 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional subsurface current measurements +306005 +Subsurface current measurements +Operational + + +6780 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +001087 +WMO marine observing platform extended identifier +Operational + + +6781 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +001019 +Long station or site name +Operational + + +6782 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +002149 +Type of data buoy +Operational + + +6783 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Time/date of last known position +008021 +Time significance += 26 Time of last known position +Operational + + +6784 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Time/date of last known position +301011 +Year, month, day +Date of last known position +Operational + + +6785 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Time/date of last known position +301012 +Hour, minute +Time of last known position +Operational + + +6786 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +301021 +Latitude/longitude (high accuracy) +Operational + + +6787 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +208016 +Change width of CCITT IA5 field +Change to 16 characters +Operational + + +6788 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +001051 +Platform Transmitter ID number +Operational + + +6789 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +208000 +Change width of CCITT IA5 field +Cancel +Operational + + +6790 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +002148 +Data collection and/or location system += 1 Argos, = 8 Iridium and GPS, = 9 Argos-3 +Operational + + +6791 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +001012 +Direction of motion of moving observing platform +Platform drift direction +Operational + + +6792 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +001014 +Platform drift speed (high precision) +Speed of motion of moving observing platform +Operational + + +6793 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +033022 +Quality of buoy satellite transmission +Operational + + +6794 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +033023 +Quality of buoy location +Operational + + +6795 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +033027 +Location quality class (range of radius of 66% confidence) +Operational + + +6796 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +025026 +Battery voltage (large range) +Platform battery voltage +Operational + + +6797 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Drogue status +002034 +Drogue type +Operational + + +6798 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Drogue status +022060 +Lagrangian drifter drogue status +Operational + + +6799 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Drogue status +007070 +Drogue depth +Operational + + +6800 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Drogue status +002190 +Lagrangian drifter submergence (% time submerged) +Operational + + +6801 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Time/date of observation +008021 +Time significance += 25 Nominal reporting time +Operational + + +6802 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Time/date of observation +301011 +Year, month, day +Date of observation +Operational + + +6803 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Time/date of observation +301012 +Hour, minute +Time of observation +Operational + + +6804 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Surface temperature and salinity +002005 +Precision of temperature observation +Operational + + +6805 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Surface temperature and salinity +022043 +Sea/water temperature +Operational + + +6806 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Surface temperature and salinity +002033 +Method of salinity/depth measurement +Operational + + +6807 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Surface temperature and salinity +022059 +Sea-surface salinity +Operational + + +6808 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Surface type/ice information +008029 +Surface type +Operational + + +6809 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Surface type/ice information +013115 +Ice thickness +Operational + + +6810 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Optional temperature and salinity profile measurements +103000 +Delayed replication of 3 descriptors +Operational + + +6811 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Optional temperature and salinity profile measurements +031000 +Short delayed descriptor replication factor +Operational + + +6812 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Optional temperature and salinity profile measurements +002005 +Precision of temperature observation +Operational + + +6813 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Optional temperature and salinity profile measurements +306004 +Depth, temperature, salinity +Operational + + +6814 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Optional temperature and salinity profile measurements +002005 +Precision of temperature observation +Set to missing (cancel) +Operational + + +6815 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Pressure and air temperature data +010004 +Pressure +Operational + + +6816 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Pressure and air temperature data +010051 +Pressure reduced to mean sea level +Operational + + +6817 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Pressure and air temperature data +102000 +Delayed replication of 2 descriptors +Operational + + +6818 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Pressure and air temperature data +031000 +Short delayed descriptor replication factor +Operational + + +6819 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Pressure and air temperature data +007033 +Height of sensor above water surface +Operational + + +6820 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Pressure and air temperature data +012101 +Temperature/air temperature +Operational + + +6821 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Wind data +101000 +Delayed replication of 1 descriptor +Operational + + +6822 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Wind data +031000 +Short delayed descriptor replication factor +Operational + + +6823 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Wind data +306042 +Wind measurement from drifting buoy +Operational + + +6824 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Wave data +101000 +Delayed replication of 1 descriptor +Operational + + +6825 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Wave data +031000 +Short delayed descriptor replication factor +Operational + + +6826 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Wave data +306039 +Sequence for representation of basic wave measurements +Operational + + +6828 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +112000 +Delayed replication of 12 descriptors +Operational + + +6829 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +031001 +Delayed descriptor replication factor +Operational + + +6830 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +201144 +Change data width +Add 16 bits to the width for each data element in Table B +Operational + + +6831 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +202133 +Change scale +Add 5 to the scale for each data element in Table B +Operational + + +6832 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +022080 +Waveband central frequency (Hz) +Operational + + +6833 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +022096 +Spectral band width (Hz) +Operational + + +6834 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +022069 +Spectral wave density (m2 Hz-1) +Operational + + +6835 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +202000 +Change data width +Cancel +Operational + + +6836 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +201000 +Change scale +Cancel +Operational + + +6837 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +042011 +a1 coefficient of the directional Fourier series +First moment of the directional wave spectrum +Operational + + +6838 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +042012 +b1 coefficient of the directional Fourier series +First moment of the directional wave spectrum +Operational + + +6839 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +042013 +a2 coefficient of the directional Fourier series +Second moment of the directional wave spectrum +Operational + + +6840 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +042014 +b2 coefficient of the directional Fourier series +Second moment of the directional wave spectrum +Operational + + +6841 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +042015 +Check factor K +Inverse of wave ellipticity +Operational + + +6842 +16 +Synoptic feature sequences +316001 +301011 +Year, month, day +Operational + + +6843 +16 +Synoptic feature sequences +316001 +004004 +Hour +Operational + + +6844 +16 +Synoptic feature sequences +316001 +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6845 +16 +Synoptic feature sequences +316001 +001021 +Synoptic feature identifier +Operational + + +6846 +16 +Synoptic feature sequences +316001 +002041 +Method for estimating reports related to synoptic features +Operational + + +6847 +16 +Synoptic feature sequences +316001 +019001 +Type of synoptic feature +Operational + + +6848 +16 +Synoptic feature sequences +316001 +010051 +Pressure reduced to mean sea level +Operational + + +6849 +16 +Synoptic feature sequences +316001 +019002 +Effective radius of feature +Operational + + +6850 +16 +Synoptic feature sequences +316001 +019003 +Wind speed threshold +15 m s-1 typically +Operational + + +6851 +16 +Synoptic feature sequences +316001 +019004 +Effective radius with respect to wind speeds above threshold +Operational + + +6852 +16 +Synoptic feature sequences +316002 +(Header) +008021 +Time significance +Data time (analysis) +Operational + + +6853 +16 +Synoptic feature sequences +316002 +(Header) +004001 +Year +Operational + + +6854 +16 +Synoptic feature sequences +316002 +(Header) +004002 +Month +Operational + + +6855 +16 +Synoptic feature sequences +316002 +(Header) +004003 +Day +Operational + + +6856 +16 +Synoptic feature sequences +316002 +(Header) +004004 +Hour +Operational + + +6857 +16 +Synoptic feature sequences +316002 +(Header) +004005 +Minute +Operational + + +6858 +16 +Synoptic feature sequences +316002 +(Header) +001033 +Identification of originating/generating centre +Operational + + +6859 +16 +Synoptic feature sequences +316002 +(Header) +008021 +Time significance +Validity time (forecast) +Operational + + +6860 +16 +Synoptic feature sequences +316002 +(Header) +004001 +Year +Operational + + +6861 +16 +Synoptic feature sequences +316002 +(Header) +004002 +Month +Operational + + +6862 +16 +Synoptic feature sequences +316002 +(Header) +004003 +Day +Operational + + +6863 +16 +Synoptic feature sequences +316002 +(Header) +004004 +Hour +Operational + + +6864 +16 +Synoptic feature sequences +316002 +(Header) +004005 +Minute +Operational + + +6865 +16 +Synoptic feature sequences +316002 +(Header) +007002 +Height or altitude +Flight level (base of chart layer) +Operational + + +6866 +16 +Synoptic feature sequences +316002 +(Header) +007002 +Height or altitude +Flight level (top of chart layer) +Operational + + +6867 +16 +Synoptic feature sequences +316003 +(Jet stream) +110000 +Delayed replication of 10 descriptors +Operational + + +6868 +16 +Synoptic feature sequences +316003 +(Jet stream) +031001 +Delayed descriptor replication factor +Operational + + +6869 +16 +Synoptic feature sequences +316003 +(Jet stream) +008011 +Meteorological feature +Jet stream value +Operational + + +6870 +16 +Synoptic feature sequences +316003 +(Jet stream) +008007 +Dimensional significance +Value for line +Operational + + +6871 +16 +Synoptic feature sequences +316003 +(Jet stream) +104000 +Delayed replication of 4 descriptors +Operational + + +6872 +16 +Synoptic feature sequences +316003 +(Jet stream) +031001 +Delayed descriptor replication factor +Operational + + +6873 +16 +Synoptic feature sequences +316003 +(Jet stream) +005002 +Latitude (coarse accuracy) +Operational + + +6874 +16 +Synoptic feature sequences +316003 +(Jet stream) +006002 +Longitude (coarse accuracy) +Operational + + +6875 +16 +Synoptic feature sequences +316003 +(Jet stream) +010002 +Height +Flight level +Operational + + +6876 +16 +Synoptic feature sequences +316003 +(Jet stream) +011002 +Wind speed +Operational + + +6877 +16 +Synoptic feature sequences +316003 +(Jet stream) +008007 +Dimensional significance +Cancel +Operational + + +6878 +16 +Synoptic feature sequences +316003 +(Jet stream) +008011 +Meteorological feature +Cancel | End of object +Operational + + +6889 +16 +Synoptic feature sequences +316004 +(Turbulence) +111000 +Delayed replication of 11 descriptors +Operational + + +6890 +16 +Synoptic feature sequences +316004 +(Turbulence) +031001 +Delayed descriptor replication factor +Operational + + +6891 +16 +Synoptic feature sequences +316004 +(Turbulence) +008011 +Meteorological feature +Value for turbulence +Operational + + +6892 +16 +Synoptic feature sequences +316004 +(Turbulence) +008007 +Dimensional significance +Value for area +Operational + + +6893 +16 +Synoptic feature sequences +316004 +(Turbulence) +007002 +Height or altitude +Flight level (base of layer) +Operational + + +6894 +16 +Synoptic feature sequences +316004 +(Turbulence) +007002 +Height or altitude +Flight level (top of layer) +Operational + + +6895 +16 +Synoptic feature sequences +316004 +(Turbulence) +102000 +Delayed replication of 2 descriptors +Operational + + +6896 +16 +Synoptic feature sequences +316004 +(Turbulence) +031001 +Delayed descriptor replication factor +Operational + + +6897 +16 +Synoptic feature sequences +316004 +(Turbulence) +005002 +Latitude (coarse accuracy) +Operational + + +6898 +16 +Synoptic feature sequences +316004 +(Turbulence) +006002 +Longitude (coarse accuracy) +Operational + + +6899 +16 +Synoptic feature sequences +316004 +(Turbulence) +011031 +Degree of turbulence +(see Note 1) +Operational + + +6900 +16 +Synoptic feature sequences +316004 +(Turbulence) +008007 +Dimensional significance +Cancel +Operational + + +6901 +16 +Synoptic feature sequences +316004 +(Turbulence) +008011 +Meteorological feature +Cancel | End of object +Operational + + +6913 +16 +Synoptic feature sequences +316005 +(Storm) +108000 +Delayed replication of 8 descriptors +Operational + + +6914 +16 +Synoptic feature sequences +316005 +(Storm) +031001 +Delayed descriptor replication factor +Operational + + +6915 +16 +Synoptic feature sequences +316005 +(Storm) +008005 +Meteorological attribute significance +Storm centre +Operational + + +6916 +16 +Synoptic feature sequences +316005 +(Storm) +008007 +Dimensional significance +Value for point +Operational + + +6917 +16 +Synoptic feature sequences +316005 +(Storm) +005002 +Latitude (coarse accuracy) +Operational + + +6918 +16 +Synoptic feature sequences +316005 +(Storm) +006002 +Longitude (coarse accuracy) +Operational + + +6919 +16 +Synoptic feature sequences +316005 +(Storm) +001026 +WMO storm name +Use "UNKNOWN" for a sandstorm +Operational + + +6920 +16 +Synoptic feature sequences +316005 +(Storm) +019001 +Type of synoptic feature +Value for type of storm +Operational + + +6921 +16 +Synoptic feature sequences +316005 +(Storm) +008007 +Dimensional significance +Cancel +Operational + + +6922 +16 +Synoptic feature sequences +316005 +(Storm) +008005 +Meteorological attribute significance +Cancel | End of object +Operational + + +6932 +16 +Synoptic feature sequences +316006 +(Cloud) +112000 +Delayed replication of 12 descriptors +Operational + + +6933 +16 +Synoptic feature sequences +316006 +(Cloud) +031001 +Delayed descriptor replication factor +Operational + + +6934 +16 +Synoptic feature sequences +316006 +(Cloud) +008011 +Meteorological feature +Value for cloud +Operational + + +6935 +16 +Synoptic feature sequences +316006 +(Cloud) +008007 +Dimensional significance +Value for area +Operational + + +6936 +16 +Synoptic feature sequences +316006 +(Cloud) +007002 +Height or altitude +Flight level (base of layer) +Operational + + +6937 +16 +Synoptic feature sequences +316006 +(Cloud) +007002 +Height or altitude +Flight level (top of layer) +Operational + + +6938 +16 +Synoptic feature sequences +316006 +(Cloud) +102000 +Delayed replication of 2 descriptors +Operational + + +6939 +16 +Synoptic feature sequences +316006 +(Cloud) +031001 +Delayed descriptor replication factor +Operational + + +6940 +16 +Synoptic feature sequences +316006 +(Cloud) +005002 +Latitude (coarse accuracy) +Operational + + +6941 +16 +Synoptic feature sequences +316006 +(Cloud) +006002 +Longitude (coarse accuracy) +Operational + + +6942 +16 +Synoptic feature sequences +316006 +(Cloud) +020011 +Cloud amount +(see Note 2) +Operational + + +6943 +16 +Synoptic feature sequences +316006 +(Cloud) +020012 +Cloud type +Operational + + +6944 +16 +Synoptic feature sequences +316006 +(Cloud) +008007 +Dimensional significance +Cancel +Operational + + +6945 +16 +Synoptic feature sequences +316006 +(Cloud) +008011 +Meteorological feature +Cancel | End of object +Operational + + +6958 +16 +Synoptic feature sequences +316007 +(Front) +110000 +Delayed replication of 10 descriptors +Operational + + +6959 +16 +Synoptic feature sequences +316007 +(Front) +031001 +Delayed descriptor replication factor +Operational + + +6960 +16 +Synoptic feature sequences +316007 +(Front) +008011 +Meteorological feature +Value for type of front +(see Note 3) +Operational + + +6961 +16 +Synoptic feature sequences +316007 +(Front) +008007 +Dimensional significance +Value for line +Operational + + +6962 +16 +Synoptic feature sequences +316007 +(Front) +104000 +Delayed replication of 4 descriptors +Operational + + +6963 +16 +Synoptic feature sequences +316007 +(Front) +031001 +Delayed descriptor replication factor +Operational + + +6964 +16 +Synoptic feature sequences +316007 +(Front) +005002 +Latitude (coarse accuracy) +Operational + + +6965 +16 +Synoptic feature sequences +316007 +(Front) +006002 +Longitude (coarse accuracy) +Operational + + +6966 +16 +Synoptic feature sequences +316007 +(Front) +019005 +Direction of motion of feature +Operational + + +6967 +16 +Synoptic feature sequences +316007 +(Front) +019006 +Speed of motion of feature +Operational + + +6968 +16 +Synoptic feature sequences +316007 +(Front) +008007 +Dimensional significance +Cancel +Operational + + +6969 +16 +Synoptic feature sequences +316007 +(Front) +008011 +Meteorological feature +Cancel | End of object +Operational + + +6980 +16 +Synoptic feature sequences +316008 +(Tropopause) +111000 +Delayed replication of 11 descriptors +Operational + + +6981 +16 +Synoptic feature sequences +316008 +(Tropopause) +031001 +Delayed descriptor replication factor +Operational + + +6982 +16 +Synoptic feature sequences +316008 +(Tropopause) +008001 +Vertical sounding significance +Bit 3 set for tropopause +Operational + + +6983 +16 +Synoptic feature sequences +316008 +(Tropopause) +008007 +Dimensional significance +Value for point +Operational + + +6984 +16 +Synoptic feature sequences +316008 +(Tropopause) +008023 +First-order statistics +Type of tropopause value +(see Note 4) +Operational + + +6985 +16 +Synoptic feature sequences +316008 +(Tropopause) +103000 +Delayed replication of 3 descriptors +Operational + + +6986 +16 +Synoptic feature sequences +316008 +(Tropopause) +031001 +Delayed descriptor replication factor +Operational + + +6987 +16 +Synoptic feature sequences +316008 +(Tropopause) +005002 +Latitude (coarse accuracy) +Operational + + +6988 +16 +Synoptic feature sequences +316008 +(Tropopause) +006002 +Longitude (coarse accuracy) +Operational + + +6989 +16 +Synoptic feature sequences +316008 +(Tropopause) +010002 +Height +Operational + + +6990 +16 +Synoptic feature sequences +316008 +(Tropopause) +008023 +First-order statistics +Cancel +Operational + + +6991 +16 +Synoptic feature sequences +316008 +(Tropopause) +008007 +Dimensional significance +Cancel +Operational + + +6992 +16 +Synoptic feature sequences +316008 +(Tropopause) +008001 +Vertical sounding significance +Cancel | End of object +Operational + + +7004 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +111000 +Delayed replication of 11 descriptors +Operational + + +7005 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +031001 +Delayed descriptor replication factor +Operational + + +7006 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +008011 +Meteorological feature +Value for airframe icing +Operational + + +7007 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +008007 +Dimensional significance +Value for area +Operational + + +7008 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +007002 +Height or altitude +Flight level (base of layer) +Operational + + +7009 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +007002 +Height or altitude +Flight level (top of layer) +Operational + + +7010 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +102000 +Delayed replication of 2 descriptors +Operational + + +7011 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +031001 +Delayed descriptor replication factor +Operational + + +7012 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +005002 +Latitude (coarse accuracy) +Operational + + +7013 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +006002 +Longitude (coarse accuracy) +Operational + + +7014 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +020041 +Airframe icing +Type of airframe icing +Operational + + +7015 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +008007 +Dimensional significance +Cancel +Operational + + +7016 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +008011 +Meteorological feature +Cancel | End of object +Operational + + +7028 +16 +Synoptic feature sequences +316010 +(Name of feature) +107000 +Delayed replication of 7 descriptors +Operational + + +7029 +16 +Synoptic feature sequences +316010 +(Name of feature) +031001 +Delayed descriptor replication factor +Operational + + +7030 +16 +Synoptic feature sequences +316010 +(Name of feature) +008011 +Meteorological feature +Operational + + +7031 +16 +Synoptic feature sequences +316010 +(Name of feature) +008007 +Dimensional significance +Value for point +Operational + + +7032 +16 +Synoptic feature sequences +316010 +(Name of feature) +001022 +Name of feature +Operational + + +7033 +16 +Synoptic feature sequences +316010 +(Name of feature) +005002 +Latitude (coarse accuracy) +Operational + + +7034 +16 +Synoptic feature sequences +316010 +(Name of feature) +006002 +Longitude (coarse accuracy) +Operational + + +7035 +16 +Synoptic feature sequences +316010 +(Name of feature) +008007 +Dimensional significance +Cancel +Operational + + +7036 +16 +Synoptic feature sequences +316010 +(Name of feature) +008011 +Meteorological feature +Cancel | End of object +Operational + + +7045 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +117000 +Delayed replication of 17 descriptors +Operational + + +7046 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +031001 +Delayed descriptor replication factor +Operational + + +7047 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +008011 +Meteorological feature +Value for special clouds +Operational + + +7048 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +001022 +Name of feature +Volcano name +Operational + + +7049 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +008007 +Dimensional significance +Value for point +Operational + + +7050 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +102000 +Delayed replication of 2 descriptors +Operational + + +7051 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +031001 +Delayed descriptor replication factor +Operational + + +7052 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +005002 +Latitude (coarse accuracy) +Operational + + +7053 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +006002 +Longitude (coarse accuracy) +Operational + + +7054 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +008021 +Time significance +Eruption starting time +Operational + + +7055 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +004001 +Year +Operational + + +7056 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +004002 +Month +Operational + + +7057 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +004003 +Day +Operational + + +7058 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +004004 +Hour +Operational + + +7059 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +004005 +Minute +Operational + + +7060 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +020090 +Special clouds +Clouds from volcanic eruptions +Operational + + +7061 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +008021 +Time significance +Cancel +Operational + + +7062 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +008007 +Dimensional significance +Cancel +Operational + + +7063 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +008011 +Meteorological feature +Cancel | End of object +Operational + + +7081 +16 +Synoptic feature sequences +316020 +(Tropical storm identification) +001033 +Identification of originating/generating centre +Operational + + +7082 +16 +Synoptic feature sequences +316020 +(Tropical storm identification) +001025 +Storm identifier +Operational + + +7083 +16 +Synoptic feature sequences +316020 +(Tropical storm identification) +001027 +WMO long storm name +Operational + + +7084 +16 +Synoptic feature sequences +316020 +(Tropical storm identification) +301011 +Year, month, day +Operational + + +7085 +16 +Synoptic feature sequences +316020 +(Tropical storm identification) +301012 +Hour, minute +Operational + + +7086 +16 +Synoptic feature sequences +316021 +(Analysis data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +7087 +16 +Synoptic feature sequences +316021 +(Analysis data) +002041 +Method for estimating reports related to synoptic features +Operational + + +7088 +16 +Synoptic feature sequences +316021 +(Analysis data) +019001 +Type of synoptic feature +Operational + + +7089 +16 +Synoptic feature sequences +316021 +(Analysis data) +019007 +Effective radius of feature +Operational + + +7090 +16 +Synoptic feature sequences +316021 +(Analysis data) +019005 +Direction of motion of feature +Operational + + +7091 +16 +Synoptic feature sequences +316021 +(Analysis data) +019006 +Speed of motion of feature +Operational + + +7092 +16 +Synoptic feature sequences +316021 +(Analysis data) +019008 +Vertical extent of circulation +Operational + + +7093 +16 +Synoptic feature sequences +316021 +(Analysis data) +008005 +Meteorological attribute significance += 1 Storm centre +Operational + + +7094 +16 +Synoptic feature sequences +316021 +(Analysis data) +010004 +Pressure +Storm centre by virtue of preceding significance qualifier +Operational + + +7095 +16 +Synoptic feature sequences +316021 +(Analysis data) +008005 +Meteorological attribute significance += 2 Outer limit or edge of feature +Operational + + +7096 +16 +Synoptic feature sequences +316021 +(Analysis data) +010004 +Pressure +Outer limit +Operational + + +7097 +16 +Synoptic feature sequences +316021 +(Analysis data) +019007 +Effective radius of feature +Outer limit +Operational + + +7098 +16 +Synoptic feature sequences +316021 +(Analysis data) +008005 +Meteorological attribute significance += 3 Location of maximum wind +Operational + + +7099 +16 +Synoptic feature sequences +316021 +(Analysis data) +008021 +Time significance +Time averaged +Operational + + +7100 +16 +Synoptic feature sequences +316021 +(Analysis data) +004075 +Short time period or displacement +Minutes +Operational + + +7101 +16 +Synoptic feature sequences +316021 +(Analysis data) +011040 +Maximum wind speed (mean wind) +Operational + + +7102 +16 +Synoptic feature sequences +316021 +(Analysis data) +019007 +Effective radius of feature +Maximum wind +Operational + + +7103 +16 +Synoptic feature sequences +316021 +(Analysis data) +105004 +Replicate 5 descriptors 4 times +Operational + + +7104 +16 +Synoptic feature sequences +316021 +(Analysis data) +005021 +Bearing or azimuth +Starting +Operational + + +7105 +16 +Synoptic feature sequences +316021 +(Analysis data) +005021 +Bearing or azimuth +Ending +Operational + + +7106 +16 +Synoptic feature sequences +316021 +(Analysis data) +102002 +Replicate 2 descriptors 2 times +Operational + + +7107 +16 +Synoptic feature sequences +316021 +(Analysis data) +019003 +Wind speed threshold +Operational + + +7108 +16 +Synoptic feature sequences +316021 +(Analysis data) +019004 +Effective radius with respect to wind speeds above threshold +Operational + + +7109 +16 +Synoptic feature sequences +316022 +(Forecast data) +001032 +Generating application +NWP model name, etc. code table defined by originating/generating centre +Operational + + +7110 +16 +Synoptic feature sequences +316022 +(Forecast data) +002041 +Method for estimating reports related to synoptic features +Operational + + +7111 +16 +Synoptic feature sequences +316022 +(Forecast data) +019001 +Type of synoptic feature +Operational + + +7112 +16 +Synoptic feature sequences +316022 +(Forecast data) +019010 +Method for tracking the centre of synoptic feature +Operational + + +7113 +16 +Synoptic feature sequences +316022 +(Forecast data) +118000 +Delayed replication of 18 descriptors +Operational + + +7114 +16 +Synoptic feature sequences +316022 +(Forecast data) +031001 +Delayed descriptor replication factor +Operational + + +7115 +16 +Synoptic feature sequences +316022 +(Forecast data) +008021 +Time significance +Forecast +Operational + + +7116 +16 +Synoptic feature sequences +316022 +(Forecast data) +004014 +Time increment +Hours +Operational + + +7117 +16 +Synoptic feature sequences +316022 +(Forecast data) +008005 +Meteorological attribute significance +Surface synoptic feature +Operational + + +7118 +16 +Synoptic feature sequences +316022 +(Forecast data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +7119 +16 +Synoptic feature sequences +316022 +(Forecast data) +019005 +Direction of motion of feature +Operational + + +7120 +16 +Synoptic feature sequences +316022 +(Forecast data) +019006 +Speed of motion of feature +Operational + + +7121 +16 +Synoptic feature sequences +316022 +(Forecast data) +010004 +Pressure +Operational + + +7122 +16 +Synoptic feature sequences +316022 +(Forecast data) +011041 +Maximum wind gust speed +For example, used in the United States +Operational + + +7123 +16 +Synoptic feature sequences +316022 +(Forecast data) +008021 +Time significance +Forecast time averaged +Operational + + +7124 +16 +Synoptic feature sequences +316022 +(Forecast data) +004075 +Short time period or displacement +Minutes +Operational + + +7125 +16 +Synoptic feature sequences +316022 +(Forecast data) +011040 +Maximum wind speed (mean wind) +Operational + + +7126 +16 +Synoptic feature sequences +316022 +(Forecast data) +019008 +Vertical extent of circulation +Operational + + +7127 +16 +Synoptic feature sequences +316022 +(Forecast data) +105004 +Replicate 5 descriptors 4 times +Operational + + +7128 +16 +Synoptic feature sequences +316022 +(Forecast data) +005021 +Bearing or azimuth +Starting +Operational + + +7129 +16 +Synoptic feature sequences +316022 +(Forecast data) +005021 +Bearing or azimuth +Ending +Operational + + +7130 +16 +Synoptic feature sequences +316022 +(Forecast data) +102002 +Replicate 2 descriptors 2 times +Operational + + +7131 +16 +Synoptic feature sequences +316022 +(Forecast data) +019003 +Wind speed threshold +Operational + + +7132 +16 +Synoptic feature sequences +316022 +(Forecast data) +019004 +Effective radius with respect to wind speeds above threshold +Operational + + +7156 +16 +Synoptic feature sequences +316026 +(Tropical storm analysis information) +316020 +Tropical storm identification +Operational + + +7157 +16 +Synoptic feature sequences +316026 +(Tropical storm analysis information) +316021 +Analysis data +Operational + + +7158 +16 +Synoptic feature sequences +316027 +(Tropical storm forecast information) +316020 +Tropical storm identification +Operational + + +7159 +16 +Synoptic feature sequences +316027 +(Tropical storm forecast information) +316022 +Forecast data +Operational + + +7160 +16 +Synoptic feature sequences +316030 +(SIGMET header) +301014 +Time period +For which SIGMET is valid +Operational + + +7161 +16 +Synoptic feature sequences +316030 +(SIGMET header) +001037 +SIGMET sequence identifier +Operational + + +7162 +16 +Synoptic feature sequences +316030 +(SIGMET header) +010064 +SIGMET cruising level +Operational + + +7163 +16 +Synoptic feature sequences +316030 +(SIGMET header) +008019 +Qualifier for following centre identifier += 1 ATS unit serving FIR +Operational + + +7164 +16 +Synoptic feature sequences +316030 +(SIGMET header) +001062 +Short ICAO location indicator +Operational + + +7165 +16 +Synoptic feature sequences +316030 +(SIGMET header) +008019 +Qualifier for following centre identifier += 2 FIR, = 3 UIR, = 4 CTA +Operational + + +7166 +16 +Synoptic feature sequences +316030 +(SIGMET header) +001065 +ICAO region identifier +Operational + + +7167 +16 +Synoptic feature sequences +316030 +(SIGMET header) +008019 +Qualifier for following centre identifier += 6 MWO +Operational + + +7168 +16 +Synoptic feature sequences +316030 +(SIGMET header) +001062 +Short ICAO location indicator +Operational + + +7169 +16 +Synoptic feature sequences +316030 +(SIGMET header) +008019 +Qualifier for following centre identifier +Set to missing (cancel) +Operational + + +7170 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +008021 +Time significance += 16 Analysis, = 4 Forecast +Operational + + +7171 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +301011 +Year, month, day +Operational + + +7172 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +301012 +Hour, minute +Operational + + +7173 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +301027 +Description of a feature in 3-D or 2-D +Operational + + +7174 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +019005 +Direction of motion of feature +Operational + + +7175 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +019006 +Speed of motion of feature +Operational + + +7176 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +020028 +Expected change in intensity +Operational + + +7177 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +008021 +Time significance +Set to missing (cancel) +Operational + + +7178 +16 +Synoptic feature sequences +316032 +(SIGMET, Forecast position) +008021 +Time significance += 4 Forecast +Operational + + +7179 +16 +Synoptic feature sequences +316032 +(SIGMET, Forecast position) +301011 +Year, month, day +Operational + + +7180 +16 +Synoptic feature sequences +316032 +(SIGMET, Forecast position) +301012 +Hour, minute +Operational + + +7181 +16 +Synoptic feature sequences +316032 +(SIGMET, Forecast position) +301027 +Description of a feature in 3-D or 2-D +Operational + + +7182 +16 +Synoptic feature sequences +316032 +(SIGMET, Forecast position) +008021 +Time significance +Set to missing (cancel) +Operational + + +7183 +16 +Synoptic feature sequences +316033 +(SIGMET, Outlook) +008021 +Time significance += 4 Forecast +Operational + + +7184 +16 +Synoptic feature sequences +316033 +(SIGMET, Outlook) +301011 +Year, month, day +Operational + + +7185 +16 +Synoptic feature sequences +316033 +(SIGMET, Outlook) +301012 +Hour, minute +Operational + + +7186 +16 +Synoptic feature sequences +316033 +(SIGMET, Outlook) +101000 +Delayed replication of 1 descriptor +Operational + + +7187 +16 +Synoptic feature sequences +316033 +(SIGMET, Outlook) +031001 +Delayed descriptor replication factor +Operational + + +7188 +16 +Synoptic feature sequences +316033 +(SIGMET, Outlook) +301027 +Description of a feature in 3-D or 2-D +Operational + + +7189 +16 +Synoptic feature sequences +316033 +(SIGMET, Outlook) +008021 +Time significance +Set to missing (cancel) +Operational + + +7196 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +008079 +Product status += 0 Normal issue, = 1 Correction +Operational + + +7197 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +316030 +SIGMET header +Operational + + +7198 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +008011 +Meteorological feature += 17 Volcano +Operational + + +7199 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +001022 +Name of feature +Operational + + +7200 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +008007 +Dimensional significance += 0 Point +Operational + + +7201 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +7202 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +008007 +Dimensional significance +Set to missing (cancel) +Operational + + +7203 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +020090 +Special clouds += 5 Clouds from volcanic eruptions +Operational + + +7204 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +316031 +SIGMET, Observed or forecast location and motion +Operational + + +7205 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +101000 +Delayed replication of 1 descriptor +Operational + + +7206 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +031000 +Short delayed descriptor replication factor +Operational + + +7207 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +316032 +SIGMET, Forecast position +Operational + + +7208 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +101000 +Delayed replication of 1 descriptor +Operational + + +7209 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +031001 +Delayed descriptor replication factor +Operational + + +7210 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +316033 +SIGMET, Outlook +Operational + + +7211 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +7212 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +008079 +Product status +Set to missing (cancel) +Operational + + +7228 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +008079 +Product status += 0 Normal issue, = 1 Correction +Operational + + +7229 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +316030 +SIGMET header +Operational + + +7230 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +008011 +Meteorological feature += 21 Thunderstorm +Operational + + +7231 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +020023 +Other weather phenomena +Bit 2 = Squalls or all 18 bits = Missing +Operational + + +7232 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +020021 +Type of precipitation +Bit 14 = Hail or all 30 bits = Missing +Operational + + +7233 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +020008 +Cloud distribution for aviation += 15 OBSC, = 16 EMBD, = 12 FRQ, = 31 Missing +Operational + + +7234 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +316031 +SIGMET, Observed or forecast location and motion +Operational + + +7235 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +7236 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +008079 +Product status +Set to missing (cancel) +Operational + + +7237 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +008079 +Product status += 0 Normal issue, = 1 Correction +Operational + + +7238 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +316030 +SIGMET header +Operational + + +7239 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +008011 +Meteorological feature += 22 Tropical cyclone +Operational + + +7240 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +001027 +WMO long storm name +Operational + + +7241 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +316031 +SIGMET, Observed or forecast location and motion +Operational + + +7242 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +101000 +Delayed replication of 1 descriptor +Operational + + +7243 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +031000 +Short delayed descriptor replication factor +Operational + + +7244 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +316032 +SIGMET, Forecast position +Operational + + +7245 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +101000 +Delayed replication of 1 descriptor +Operational + + +7246 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +031001 +Delayed descriptor replication factor +Operational + + +7247 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +316033 +SIGMET, Outlook +Operational + + +7248 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +7249 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +008079 +Product status +Set to missing (cancel) +Operational + + +7261 +16 +Synoptic feature sequences +316037 +(Turbulence SIGMET) +008079 +Product status += 0 Normal issue, = 1 Correction +Operational + + +7262 +16 +Synoptic feature sequences +316037 +(Turbulence SIGMET) +316030 +SIGMET header +Operational + + +7263 +16 +Synoptic feature sequences +316037 +(Turbulence SIGMET) +008011 +Meteorological feature += 13 Turbulence +Operational + + +7264 +16 +Synoptic feature sequences +316037 +(Turbulence SIGMET) +011031 +Degree of turbulence += 10 Moderate, = 11 Severe +Operational + + +7265 +16 +Synoptic feature sequences +316037 +(Turbulence SIGMET) +316031 +SIGMET, Observed or forecast location and motion +Operational + + +7266 +16 +Synoptic feature sequences +316037 +(Turbulence SIGMET) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +7267 +16 +Synoptic feature sequences +316037 +(Turbulence SIGMET) +008079 +Product status +Set to missing (cancel) +Operational + + +7268 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +008079 +Product status += 0 Normal issue, = 1 Correction +Operational + + +7269 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +316030 +SIGMET header +Operational + + +7270 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +008011 +Meteorological feature += 15 Airframe icing +Operational + + +7271 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +020041 +Airframe icing += 7 Severe +Operational + + +7272 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +020021 +Type of precipitation +Bit 3 = Liquid freezing or all 30 bits = Missing +Operational + + +7273 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +316031 +SIGMET, Observed or forecast location and motion +Operational + + +7274 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +7275 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +008079 +Product status +Set to missing (cancel) +Operational + + +7276 +16 +Synoptic feature sequences +316039 +(Mountain wave, duststorm or sandstorm SIGMET) +008079 +Product status += 0 Normal issue, = 1 Correction +Operational + + +7277 +16 +Synoptic feature sequences +316039 +(Mountain wave, duststorm or sandstorm SIGMET) +316030 +SIGMET header +Operational + + +7278 +16 +Synoptic feature sequences +316039 +(Mountain wave, duststorm or sandstorm SIGMET) +008011 +Meteorological feature += 23 Mountain wave, = 24 Duststorm, = 25 Sandstorm +Operational + + +7279 +16 +Synoptic feature sequences +316039 +(Mountain wave, duststorm or sandstorm SIGMET) +020024 +Intensity of phenomena += 3 Heavy, = 5 Severe +Operational + + +7280 +16 +Synoptic feature sequences +316039 +(Mountain wave, duststorm or sandstorm SIGMET) +316031 +SIGMET, Observed or forecast location and motion +Operational + + +7281 +16 +Synoptic feature sequences +316039 +(Mountain wave, duststorm or sandstorm SIGMET) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +7282 +16 +Synoptic feature sequences +316039 +(Mountain wave, duststorm or sandstorm SIGMET) +008079 +Product status +Set to missing (cancel) +Operational + + +7283 +16 +Synoptic feature sequences +316040 +(Cancellation of SIGMET) +316030 +SIGMET header +Operational + + +7284 +16 +Synoptic feature sequences +316040 +(Cancellation of SIGMET) +008079 +Product status += 4 Cancellation +Operational + + +7285 +16 +Synoptic feature sequences +316040 +(Cancellation of SIGMET) +301014 +Time period +Of the SIGMET to be cancelled +Operational + + +7286 +16 +Synoptic feature sequences +316040 +(Cancellation of SIGMET) +001037 +SIGMET sequence identifier +Of the SIGMET to be cancelled +Operational + + +7287 +16 +Synoptic feature sequences +316040 +(Cancellation of SIGMET) +010064 +SIGMET cruising level +Of the SIGMET to be cancelled +Operational + + +7288 +16 +Synoptic feature sequences +316040 +(Cancellation of SIGMET) +008079 +Product status +Set to missing (cancel) +Operational + + +7289 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +301001 +WMO block and station numbers +Operational + + +7290 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +301011 +Year, month, day +Operational + + +7291 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +301012 +Hour, minute +Operational + + +7292 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +002160 +Wavelength of the radar +Operational + + +7293 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +008005 +Meteorological attribute significance += 1 +Operational + + +7294 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +005002 +Latitude (coarse accuracy) +Operational + + +7295 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +006002 +Longitude (coarse accuracy) +Operational + + +7296 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +008005 +Meteorological attribute significance +Cancel +Operational + + +7297 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019100 +Time interval to calculate the movement of the tropical cyclone +Operational + + +7298 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019005 +Direction of motion of feature +Operational + + +7299 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019006 +Speed of motion of feature +Operational + + +7300 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019101 +Accuracy of the position of the centre of the tropical cyclone +Operational + + +7301 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019102 +Shape and definition of the eye of the tropical cyclone +Operational + + +7302 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019103 +Diameter of major axis of the eye of the tropical cyclone +Operational + + +7303 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019104 +Change in character of the eye during the 30 minutes +Operational + + +7304 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019105 +Distance between the end of spiral band and the centre +Operational + + +7305 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +301005 +Originating centre/sub-centre +Operational + + +7306 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +301011 +Year, month, day +Operational + + +7307 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +301012 +Hour, minute +Operational + + +7308 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +001007 +Satellite identifier +Operational + + +7309 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +025150 +Method of tropical cyclone intensity analysis using satellite data +Operational + + +7310 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +122000 +Delayed replication of 22 descriptors +Operational + + +7311 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +031001 +Delayed descriptor replication factor +Operational + + +7312 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +001027 +WMO long storm name +Operational + + +7313 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019150 +Typhoon International Common Number (Typhoon Committee) +Operational + + +7314 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019106 +Identification number of tropical cyclone +Operational + + +7315 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +008005 +Meteorological attribute significance += 1 +Operational + + +7316 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +005002 +Latitude (coarse accuracy) +Operational + + +7317 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +006002 +Longitude (coarse accuracy) +Operational + + +7318 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +008005 +Meteorological attribute significance +Cancel +Operational + + +7319 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019107 +Time interval over which the movement of the tropical cyclone has been calculated +Operational + + +7320 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019005 +Direction of motion of feature +Operational + + +7321 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019006 +Speed of motion of feature +Operational + + +7322 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019108 +Accuracy of geographical position of the tropical cyclone +Operational + + +7323 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019109 +Mean diameter of the overcast cloud of the tropical cyclone +Operational + + +7324 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019110 +Apparent 24-hour change in intensity of the tropical cyclone +Operational + + +7325 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019111 +Current Intensity (CI) number of the tropical cyclone +Operational + + +7326 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019112 +Data Tropical (DT) number of the tropical cyclone +Operational + + +7327 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019113 +Cloud pattern type of the DT-number +Operational + + +7328 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019114 +Model Expected Tropical (MET) number of the tropical cyclone +Operational + + +7329 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019115 +Trend of the past 24-hour change (+: Developed, -: Weakened) +Operational + + +7330 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019116 +Pattern Tropical (PT) number of the tropical cyclone +Operational + + +7331 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019117 +Cloud picture type of the PT-number +Operational + + +7332 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019118 +Final Tropical (T) number of the tropical cyclone +Operational + + +7333 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019119 +Type of the final T-number +Operational + + +7362 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +301011 +Year, month, day +Operational + + +7363 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +301012 +Hour, minute +Operational + + +7364 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Position of squall line centre +005002 +Latitude (coarse accuracy) +Operational + + +7365 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Position of squall line centre +006002 +Longitude (coarse accuracy) +Operational + + +7366 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Position of squall line centre +019005 +Direction of motion of feature +Operational + + +7367 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Position of squall line centre +019006 +Speed of motion of feature +Operational + + +7368 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - North point +005002 +Latitude (coarse accuracy) +Operational + + +7369 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - North point +006002 +Longitude (coarse accuracy) +Operational + + +7370 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - South point +005002 +Latitude (coarse accuracy) +Operational + + +7371 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - South point +006002 +Longitude (coarse accuracy) +Operational + + +7372 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +004074 +Short time period or displacement +Period of validity +Operational + + +7373 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +020048 +Evolution of feature +Operational + + +7374 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +011041 +Maximum wind gust speed +Maximum burst expected +Operational + + +7375 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +013055 +Intensity of precipitation +Intensity of rain expected +Operational + + +7376 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +301011 +Year, month, day +Operational + + +7377 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +301012 +Hour, minute +Operational + + +7378 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Position of squall line centre +005002 +Latitude (coarse accuracy) +Operational + + +7379 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Position of squall line centre +006002 +Longitude (coarse accuracy) +Operational + + +7380 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Position of squall line centre +019005 +Direction of motion of feature +Operational + + +7381 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Position of squall line centre +019006 +Speed of motion of feature +Operational + + +7382 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - North points +102000 +Delayed replication of 2 descriptors +Operational + + +7383 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - North points +031001 +Delayed descriptor replication factor +Operational + + +7384 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - North points +005002 +Latitude (coarse accuracy) +Operational + + +7385 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - North points +006002 +Longitude (coarse accuracy) +Operational + + +7386 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - South points +102000 +Delayed replication of 2 descriptors +Operational + + +7387 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - South points +031001 +Delayed descriptor replication factor +Operational + + +7388 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - South points +005002 +Latitude (coarse accuracy) +Operational + + +7389 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - South points +006002 +Longitude (coarse accuracy) +Operational + + +7390 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +004074 +Short time period or displacement +Period of validity +Operational + + +7391 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +020048 +Evolution of feature +Operational + + +7392 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +011041 +Maximum wind gust speed +Maximum burst expected +Operational + + +7393 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +013055 +Intensity of precipitation +Intensity of rain expected +Operational + + +7410 +16 +Synoptic feature sequences +316071 +(Graphical AIRMET Sierra) +301014 +Time period +For which AIRMET is valid +Operational + + +7411 +16 +Synoptic feature sequences +316071 +(Graphical AIRMET Sierra) +101000 +Delayed replication of 1 descriptor +Operational + + +7412 +16 +Synoptic feature sequences +316071 +(Graphical AIRMET Sierra) +031002 +Extended delayed descriptor replication factor +Operational + + +7413 +16 +Synoptic feature sequences +316071 +(Graphical AIRMET Sierra) +316075 +GFA IFR ceiling and visibility +Operational + + +7414 +16 +Synoptic feature sequences +316071 +(Graphical AIRMET Sierra) +101000 +Delayed replication of 1 descriptor +Operational + + +7415 +16 +Synoptic feature sequences +316071 +(Graphical AIRMET Sierra) +031002 +Extended delayed descriptor replication factor +Operational + + +7416 +16 +Synoptic feature sequences +316071 +(Graphical AIRMET Sierra) +316076 +GFA mountain obscuration +Operational + + +7418 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +301014 +Time period +For which AIRMET is valid +Operational + + +7419 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +101000 +Delayed replication of 1 descriptor +Operational + + +7420 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +031002 +Extended delayed descriptor replication factor +Operational + + +7421 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +316077 +GFA turbulence +Operational + + +7422 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +101000 +Delayed replication of 1 descriptor +Operational + + +7423 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +031002 +Extended delayed descriptor replication factor +Operational + + +7424 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +316078 +GFA strong surface wind +Operational + + +7425 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +101000 +Delayed replication of 1 descriptor +Operational + + +7426 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +031002 +Extended delayed descriptor replication factor +Operational + + +7427 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +316079 +GFA low-level wind shear +Operational + + +7429 +16 +Synoptic feature sequences +316073 +(Graphical AIRMET Zulu) +301014 +Time period +For which AIRMET is valid +Operational + + +7430 +16 +Synoptic feature sequences +316073 +(Graphical AIRMET Zulu) +101000 +Delayed replication of 1 descriptor +Operational + + +7431 +16 +Synoptic feature sequences +316073 +(Graphical AIRMET Zulu) +031002 +Extended delayed descriptor replication factor +Operational + + +7432 +16 +Synoptic feature sequences +316073 +(Graphical AIRMET Zulu) +316080 +GFA icing +Operational + + +7433 +16 +Synoptic feature sequences +316073 +(Graphical AIRMET Zulu) +101000 +Delayed replication of 1 descriptor +Operational + + +7434 +16 +Synoptic feature sequences +316073 +(Graphical AIRMET Zulu) +031002 +Extended delayed descriptor replication factor +Operational + + +7435 +16 +Synoptic feature sequences +316073 +(Graphical AIRMET Zulu) +316081 +GFA freezing level +Operational + + +7437 +16 +Synoptic feature sequences +316074 +(GFA identifier and observed/forecast location) +001039 +Graphical Area Forecast (GFA) sequence identifier +Operational + + +7438 +16 +Synoptic feature sequences +316074 +(GFA identifier and observed/forecast location) +008021 +Time significance += 4 Forecast, = 16 Analysis +Operational + + +7439 +16 +Synoptic feature sequences +316074 +(GFA identifier and observed/forecast location) +301014 +Time period +For which hazard is being observed/forecast +Operational + + +7440 +16 +Synoptic feature sequences +316074 +(GFA identifier and observed/forecast location) +301027 +Description of a feature in 3-D or 2-D +Operational + + +7441 +16 +Synoptic feature sequences +316074 +(GFA identifier and observed/forecast location) +008021 +Time significance +Set to missing (cancel) +Operational + + +7442 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +008079 +Product status += 0 Normal, = 1 COR, = 2 AMD, = 3 COR AMD, = 4 CNL +Operational + + +7443 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +008041 +Data significance += 8 IFR ceiling and visibility +Operational + + +7444 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +316074 +GFA identifier and observed/forecast location +Operational + + +7445 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +020006 +Flight rules += 1 IFR +Operational + + +7446 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +033042 +Type of limit represented by following value += 2 Exclusive upper limit, = 7 Missing +Operational + + +7447 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +020013 +Height of base of cloud +Operational + + +7448 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +033042 +Type of limit represented by following value += 2 Exclusive upper limit, = 7 Missing +Operational + + +7449 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +020001 +Horizontal visibility +Operational + + +7450 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +020025 +Obscuration +Operational + + +7451 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +020026 +Character of obscuration += 6 Blowing, = 15 Missing +Operational + + +7452 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +008041 +Data significance +Set to missing (cancel) +Operational + + +7453 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +008079 +Product status +Set to missing (cancel) +Operational + + +7454 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +008079 +Product status += 0 Normal, = 1 COR, = 2 AMD, = 3 COR AMD, = 4 CNL +Operational + + +7455 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +008041 +Data significance += 9 Mountain obscuration +Operational + + +7456 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +316074 +GFA identifier and observed/forecast location +Operational + + +7457 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +020006 +Flight rules += 1 IFR +Operational + + +7458 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +020025 +Obscuration +Operational + + +7459 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +020026 +Character of obscuration += 6 Blowing, = 15 Missing +Operational + + +7460 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +008041 +Data significance +Set to missing (cancel) +Operational + + +7461 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +008079 +Product status +Set to missing (cancel) +Operational + + +7462 +16 +Synoptic feature sequences +316077 +(GFA turbulence) +008079 +Product status += 0 Normal, = 1 COR, = 2 AMD, = 3 COR AMD, = 4 CNL +Operational + + +7463 +16 +Synoptic feature sequences +316077 +(GFA turbulence) +008011 +Meteorological feature += 13 Turbulence +Operational + + +7464 +16 +Synoptic feature sequences +316077 +(GFA turbulence) +316074 +GFA identifier and observed/forecast location +Operational + + +7465 +16 +Synoptic feature sequences +316077 +(GFA turbulence) +011031 +Degree of turbulence += 6 Moderate +Operational + + +7466 +16 +Synoptic feature sequences +316077 +(GFA turbulence) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +7467 +16 +Synoptic feature sequences +316077 +(GFA turbulence) +008079 +Product status +Set to missing (cancel) +Operational + + +7468 +16 +Synoptic feature sequences +316078 +(GFA strong surface wind) +008079 +Product status += 0 Normal, = 1 COR, = 2 AMD, = 3 COR AMD, = 4 CNL +Operational + + +7469 +16 +Synoptic feature sequences +316078 +(GFA strong surface wind) +008041 +Data significance += 10 Strong surface wind +Operational + + +7470 +16 +Synoptic feature sequences +316078 +(GFA strong surface wind) +316074 +GFA identifier and observed/forecast location +Operational + + +7471 +16 +Synoptic feature sequences +316078 +(GFA strong surface wind) +033042 +Type of limit represented by following value += 0 Exclusive lower limit +Operational + + +7472 +16 +Synoptic feature sequences +316078 +(GFA strong surface wind) +011012 +Wind speed at 10 m +Operational + + +7473 +16 +Synoptic feature sequences +316078 +(GFA strong surface wind) +008041 +Data significance +Set to missing (cancel) +Operational + + +7474 +16 +Synoptic feature sequences +316078 +(GFA strong surface wind) +008079 +Product status +Set to missing (cancel) +Operational + + +7475 +16 +Synoptic feature sequences +316079 +(GFA low-level wind shear) +008079 +Product status += 0 Normal, = 1 COR, = 2 AMD, = 3 COR AMD, = 4 CNL +Operational + + +7476 +16 +Synoptic feature sequences +316079 +(GFA low-level wind shear) +008011 +Meteorological feature += 16 Phenomenon +Operational + + +7477 +16 +Synoptic feature sequences +316079 +(GFA low-level wind shear) +316074 +GFA identifier and observed/forecast location +Operational + + +7478 +16 +Synoptic feature sequences +316079 +(GFA low-level wind shear) +020023 +Other weather phenomena +Bit 12 = Wind shear +Operational + + +7479 +16 +Synoptic feature sequences +316079 +(GFA low-level wind shear) +020024 +Intensity of phenomena +Operational + + +7480 +16 +Synoptic feature sequences +316079 +(GFA low-level wind shear) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +7481 +16 +Synoptic feature sequences +316079 +(GFA low-level wind shear) +008079 +Product status +Set to missing (cancel) +Operational + + +7482 +16 +Synoptic feature sequences +316080 +(GFA icing) +008079 +Product status += 0 Normal, = 1 COR, = 2 AMD, = 3 COR AMD, = 4 CNL +Operational + + +7483 +16 +Synoptic feature sequences +316080 +(GFA icing) +008011 +Meteorological feature += 15 Airframe icing +Operational + + +7484 +16 +Synoptic feature sequences +316080 +(GFA icing) +316074 +GFA identifier and observed/forecast location +Operational + + +7485 +16 +Synoptic feature sequences +316080 +(GFA icing) +020041 +Airframe icing += 4 Moderate icing +Operational + + +7486 +16 +Synoptic feature sequences +316080 +(GFA icing) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +7487 +16 +Synoptic feature sequences +316080 +(GFA icing) +008079 +Product status +Set to missing (cancel) +Operational + + +7488 +16 +Synoptic feature sequences +316081 +(GFA freezing level) +008079 +Product status += 0 Normal, = 1 COR, = 2 AMD, = 3 COR AMD, = 4 CNL +Operational + + +7489 +16 +Synoptic feature sequences +316081 +(GFA freezing level) +008041 +Data significance += 11 Freezing level, = 12 Multiple freezing level +Operational + + +7490 +16 +Synoptic feature sequences +316081 +(GFA freezing level) +316074 +GFA identifier and observed/forecast location +Operational + + +7491 +16 +Synoptic feature sequences +316081 +(GFA freezing level) +008041 +Data significance +Set to missing (cancel) +Operational + + +7492 +16 +Synoptic feature sequences +316081 +(GFA freezing level) +008079 +Product status +Set to missing (cancel) +Operational + + +7493 +18 +Radiological report sequences +318001 +301025 +Latitude/longitude (coarse accuracy), day/time +Operational + + +7494 +18 +Radiological report sequences +318001 +024011 +Dose +Operational + + +7495 +18 +Radiological report sequences +318003 +301026 +Latitude/longitude (high accuracy), time period (day, hour, minute) +Operational + + +7496 +18 +Radiological report sequences +318003 +024005 +Isotope mass +Operational + + +7497 +18 +Radiological report sequences +318003 +024004 +Element name +Operational + + +7498 +18 +Radiological report sequences +318003 +024021 +Air concentration (of named isotope type including gross beta) +Operational + + +7499 +18 +Radiological report sequences +318004 +301025 +Latitude/longitude (coarse accuracy), day/time +Operational + + +7500 +18 +Radiological report sequences +318004 +004023 +Time period or displacement +Operational + + +7501 +18 +Radiological report sequences +318004 +013011 +Total precipitation/total water equivalent +Operational + + +7502 +18 +Radiological report sequences +318004 +024005 +Isotope mass +Operational + + +7503 +18 +Radiological report sequences +318004 +024004 +Element name +Operational + + +7504 +18 +Radiological report sequences +318004 +024022 +Concentration in precipitation (of named isotope type) +Operational + + +7505 +21 +Radar report sequences +321001 +(Wind profiler - antenna characteristics) +002101 +Type of antenna +Operational + + +7506 +21 +Radar report sequences +321001 +(Wind profiler - antenna characteristics) +002114 +Antenna effective surface area +Operational + + +7507 +21 +Radar report sequences +321001 +(Wind profiler - antenna characteristics) +002105 +Maximum antenna gain +Operational + + +7508 +21 +Radar report sequences +321001 +(Wind profiler - antenna characteristics) +002106 +3-dB beamwidth +Operational + + +7509 +21 +Radar report sequences +321001 +(Wind profiler - antenna characteristics) +002107 +Sidelobe suppression +Operational + + +7510 +21 +Radar report sequences +321001 +(Wind profiler - antenna characteristics) +002121 +Mean frequency +Operational + + +7511 +21 +Radar report sequences +321003 +(Wind profiler - moment data) +021051 +Signal power above 1 mW +Operational + + +7512 +21 +Radar report sequences +321003 +(Wind profiler - moment data) +021014 +Doppler mean velocity (radial) +Operational + + +7513 +21 +Radar report sequences +321003 +(Wind profiler - moment data) +021017 +Doppler velocity spectral width +Operational + + +7514 +21 +Radar report sequences +321003 +(Wind profiler - moment data) +021030 +Signal to noise ratio +Operational + + +7515 +21 +Radar report sequences +321004 +(Wind profiler - moment data sounding) +301031 +Identification and type of station, date/time, location (high accuracy), height of station +Operational + + +7516 +21 +Radar report sequences +321004 +(Wind profiler - moment data sounding) +002003 +Type of measuring equipment used +Operational + + +7517 +21 +Radar report sequences +321004 +(Wind profiler - moment data sounding) +101000 +Delayed replication of 1 descriptor +Operational + + +7518 +21 +Radar report sequences +321004 +(Wind profiler - moment data sounding) +031001 +Delayed descriptor replication factor +Operational + + +7519 +21 +Radar report sequences +321004 +(Wind profiler - moment data sounding) +321003 +Wind profiler - moment data +Operational + + +7520 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +025004 +Echo processing +Operational + + +7521 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002121 +Mean frequency +Operational + + +7522 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002122 +Frequency agility range +Operational + + +7523 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002123 +Peak power +Operational + + +7524 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002124 +Average power +Operational + + +7525 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002125 +Pulse repetition frequency +Operational + + +7526 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002126 +Pulse width +Operational + + +7527 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002127 +Receiver intermediate frequency +Operational + + +7528 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002128 +Intermediate frequency bandwidth +Operational + + +7529 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002129 +Minimum detectable signal +Operational + + +7530 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002130 +Dynamic range +Operational + + +7531 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002131 +Sensitivity time control (STC) +Operational + + +7532 +21 +Radar report sequences +321006 +(Integration characteristics) +025001 +Range-gate length +Operational + + +7533 +21 +Radar report sequences +321006 +(Integration characteristics) +025002 +Number of gates averaged +Operational + + +7534 +21 +Radar report sequences +321006 +(Integration characteristics) +025003 +Number of integrated pulses +Operational + + +7535 +21 +Radar report sequences +321006 +(Integration characteristics) +025005 +Echo integration +Operational + + +7536 +21 +Radar report sequences +321007 +(Corrections) +025009 +Calibration method +Operational + + +7537 +21 +Radar report sequences +321007 +(Corrections) +025010 +Clutter treatment +Operational + + +7538 +21 +Radar report sequences +321007 +(Corrections) +025011 +Ground occultation correction (screening) +Operational + + +7539 +21 +Radar report sequences +321007 +(Corrections) +025012 +Range attenuation correction +Operational + + +7540 +21 +Radar report sequences +321007 +(Corrections) +025013 +Bright-band correction +Operational + + +7541 +21 +Radar report sequences +321007 +(Corrections) +025015 +Radome attenuation correction +Operational + + +7542 +21 +Radar report sequences +321007 +(Corrections) +025016 +Clear-air attenuation correction +Operational + + +7543 +21 +Radar report sequences +321007 +(Corrections) +025017 +Precipitation attenuation correction +Operational + + +7544 +21 +Radar report sequences +321008 +(Z to R conversion) +025006 +Z to R conversion +Operational + + +7545 +21 +Radar report sequences +321008 +(Z to R conversion) +025007 +Z to R conversion factor +Operational + + +7546 +21 +Radar report sequences +321008 +(Z to R conversion) +025008 +Z to R conversion exponent +Operational + + +7547 +21 +Radar report sequences +321009 +(A to Z law) +025018 +A to Z law for attenuation factor +Operational + + +7548 +21 +Radar report sequences +321009 +(A to Z law) +025019 +A to Z law for attenuation exponent +Operational + + +7549 +21 +Radar report sequences +321010 +(Antenna characteristics) +002101 +Type of antenna +Operational + + +7550 +21 +Radar report sequences +321010 +(Antenna characteristics) +007002 +Height or altitude +Altitude of the tower base +Operational + + +7551 +21 +Radar report sequences +321010 +(Antenna characteristics) +002102 +Antenna height above tower base +Operational + + +7552 +21 +Radar report sequences +321010 +(Antenna characteristics) +002103 +Radome +Operational + + +7553 +21 +Radar report sequences +321010 +(Antenna characteristics) +002104 +Antenna polarization +Operational + + +7554 +21 +Radar report sequences +321010 +(Antenna characteristics) +002105 +Maximum antenna gain +Operational + + +7555 +21 +Radar report sequences +321010 +(Antenna characteristics) +002106 +3-dB beamwidth +Operational + + +7556 +21 +Radar report sequences +321010 +(Antenna characteristics) +002107 +Sidelobe suppression +Operational + + +7557 +21 +Radar report sequences +321010 +(Antenna characteristics) +002108 +Crosspol discrimination (on axis) +Operational + + +7558 +21 +Radar report sequences +321010 +(Antenna characteristics) +002109 +Antenna speed (azimuth) +Operational + + +7559 +21 +Radar report sequences +321010 +(Antenna characteristics) +002110 +Antenna speed (elevation) +Operational + + +7560 +21 +Radar report sequences +321010 +(Antenna characteristics) +002132 +Azimuth pointing accuracy +Operational + + +7561 +21 +Radar report sequences +321010 +(Antenna characteristics) +002133 +Elevation pointing accuracy +Operational + + +7562 +21 +Radar report sequences +321011 +(General characteristics) +030031 +Picture type +Operational + + +7563 +21 +Radar report sequences +321011 +(General characteristics) +030032 +Combination with other data +Operational + + +7564 +21 +Radar report sequences +321011 +(General characteristics) +029002 +Coordinate grid type +Operational + + +7565 +21 +Radar report sequences +321012 +(Antenna elevations) +101000 +Delayed replication of 1 descriptor +Operational + + +7566 +21 +Radar report sequences +321012 +(Antenna elevations) +031001 +Delayed descriptor replication factor +Operational + + +7567 +21 +Radar report sequences +321012 +(Antenna elevations) +002135 +Antenna elevation +Operational + + +7568 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +002003 +Type of measuring equipment used +Operational + + +7569 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +002101 +Type of antenna +Operational + + +7570 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +201130 +Change data width +8 bits long +Operational + + +7571 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +002106 +3-dB beamwidth +Operational + + +7572 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +201000 +Change data width +Cancel +Operational + + +7573 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +201132 +Change data width +11 bits long +Operational + + +7574 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +202130 +Change scale +Scale: -6 +Operational + + +7575 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +002121 +Mean frequency +Operational + + +7576 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +202000 +Change scale +Cancel +Operational + + +7577 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +201000 +Change data width +Cancel +Operational + + +7578 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +201133 +Change data width +11 bits long +Operational + + +7579 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +202129 +Change scale +Scale: 0 +Operational + + +7580 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +025001 +Range-gate length +Operational + + +7581 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +202000 +Change scale +Cancel +Operational + + +7582 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +201000 +Change data width +Cancel +Operational + + +7583 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +007007 +Height +Operational + + +7584 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +204001 +Add associated field +1 bit long +Operational + + +7585 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +031021 +Associated field significance +Operational + + +7586 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +011001 +Wind direction +Operational + + +7587 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +204000 +Add associated field +Cancel +Operational + + +7588 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +011002 +Wind speed +Operational + + +7589 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +204001 +Add associated field +1 bit long +Operational + + +7590 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +031021 +Associated field significance +Operational + + +7591 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +011006 +w-component +Operational + + +7592 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +204000 +Add associated field +Cancel +Operational + + +7593 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +021030 +Signal to noise ratio +Operational + + +7594 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +007007 +Height +Operational + + +7595 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +021091 +Radar signal Doppler spectrum 0th moment +Operational + + +7596 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +021030 +Signal to noise ratio +Operational + + +7597 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +202129 +Change scale +Scale: 2 +Operational + + +7598 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +021014 +Doppler mean velocity (radial) +Operational + + +7599 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +201129 +Change data width +9 bits long +Operational + + +7600 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +021017 +Doppler velocity spectral width +Operational + + +7601 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +202000 +Change scale +Cancel +Operational + + +7602 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +201000 +Change data width +Cancel +Operational + + +7603 +21 +Radar report sequences +321024 +(RASS-mode: processed-data RASS) +007007 +Height +Operational + + +7604 +21 +Radar report sequences +321024 +(RASS-mode: processed-data RASS) +204001 +Add associated field +1 bit long +Operational + + +7605 +21 +Radar report sequences +321024 +(RASS-mode: processed-data RASS) +031021 +Associated field significance +Operational + + +7606 +21 +Radar report sequences +321024 +(RASS-mode: processed-data RASS) +012007 +Virtual temperature +Operational + + +7607 +21 +Radar report sequences +321024 +(RASS-mode: processed-data RASS) +011006 +w-component +Operational + + +7608 +21 +Radar report sequences +321024 +(RASS-mode: processed-data RASS) +204000 +Add associated field +Cancel +Operational + + +7609 +21 +Radar report sequences +321024 +(RASS-mode: processed-data RASS) +021030 +Signal to noise ratio +Operational + + +7610 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +007007 +Height +Operational + + +7611 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +021091 +Radar signal Doppler spectrum 0th moment +Operational + + +7612 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +021030 +Signal to noise ratio +Operational + + +7613 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +202129 +Change scale +Scale: 2 +Operational + + +7614 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +021014 +Doppler mean velocity (radial) +Operational + + +7615 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +201129 +Change data width +9 bits long +Operational + + +7616 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +021017 +Doppler velocity spectral width +Operational + + +7617 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +202000 +Change scale +Cancel +Operational + + +7618 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +201000 +Change data width +Cancel +Operational + + +7619 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +021092 +RASS signal Doppler spectrum 0th moment, referring to RASS signal +Operational + + +7620 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +021030 +Signal to noise ratio +Referring to RASS signal +Operational + + +7621 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +025092 +Acoustic propagation velocity +Operational + + +7622 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +201129 +Change data width +9 bits long +Operational + + +7623 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +202129 +Change scale +Scale: 2 +Operational + + +7624 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +021017 +Doppler velocity spectral width +Referring to RASS signal +Operational + + +7625 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +202000 +Change scale +Cancel +Operational + + +7626 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +201000 +Change data width +Cancel +Operational + + +7627 +21 +Radar report sequences +321026 +(RASS data - fluxes) +007007 +Height +Operational + + +7628 +21 +Radar report sequences +321026 +(RASS data - fluxes) +204001 +Add associated field +1 bit long +Operational + + +7629 +21 +Radar report sequences +321026 +(RASS data - fluxes) +031021 +Associated field significance +Operational + + +7630 +21 +Radar report sequences +321026 +(RASS data - fluxes) +012007 +Virtual temperature +Operational + + +7631 +21 +Radar report sequences +321026 +(RASS data - fluxes) +025091 +Structure constant of the refraction index (Cn2) +Operational + + +7632 +21 +Radar report sequences +321026 +(RASS data - fluxes) +011071 +Turbulent vertical momentum flux +Operational + + +7633 +21 +Radar report sequences +321026 +(RASS data - fluxes) +011072 +Turbulent vertical buoyancy flux +Operational + + +7634 +21 +Radar report sequences +321026 +(RASS data - fluxes) +011073 +Turbulent kinetic energy +Operational + + +7635 +21 +Radar report sequences +321026 +(RASS data - fluxes) +011074 +Dissipation energy +Operational + + +7636 +21 +Radar report sequences +321026 +(RASS data - fluxes) +204000 +Add associated field +Cancel +Operational + + +7637 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021118 +Attenuation correction on sigma-0 +Operational + + +7638 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +202129 +Change scale +Operational + + +7639 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +201132 +Change data width +Operational + + +7640 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +002112 +Radar look angle +Operational + + +7641 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +201000 +Change data width +Cancel +Operational + + +7642 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +201131 +Change data width +Operational + + +7643 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +002111 +Radar incidence angle +Operational + + +7644 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +201000 +Change data width +Cancel +Operational + + +7645 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +202000 +Change scale +Cancel +Operational + + +7646 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +002104 +Antenna polarization +Operational + + +7647 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021105 +Normalized radar cross-section +Operational + + +7648 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021106 +Kp variance coefficient (alpha) +Operational + + +7649 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021107 +Kp variance coefficient (beta) +Operational + + +7650 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021114 +Kp variance coefficient (gamma) +Operational + + +7651 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021115 +SEAWINDS sigma-0 quality +Operational + + +7652 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021116 +SEAWINDS sigma-0 mode +Operational + + +7653 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +008018 +SEAWINDS land/ice surface type +Operational + + +7654 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021117 +Sigma-0 variance quality control +Operational + + +7655 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021118 +Attenuation correction on sigma-0 +Operational + + +7656 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +202129 +Change scale +Operational + + +7657 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +201132 +Change data width +Operational + + +7658 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +002112 +Radar look angle +Operational + + +7659 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +201000 +Change data width +Cancel +Operational + + +7660 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +201131 +Change data width +Operational + + +7661 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +002111 +Radar incidence angle +Operational + + +7662 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +201000 +Change data width +Cancel +Operational + + +7663 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +202000 +Change scale +Cancel +Operational + + +7664 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +002104 +Antenna polarization +Operational + + +7665 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021123 +SEAWINDS normalized radar cross-section +Operational + + +7666 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021106 +Kp variance coefficient (alpha) +Operational + + +7667 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021107 +Kp variance coefficient (beta) +Operational + + +7668 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021114 +Kp variance coefficient (gamma) +Operational + + +7669 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021115 +SEAWINDS sigma-0 quality +Operational + + +7670 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021116 +SEAWINDS sigma-0 mode +Operational + + +7671 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +008018 +SEAWINDS land/ice surface type +Operational + + +7672 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021117 +Sigma-0 variance quality control +Operational + + +7673 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +008085 +Beam identifier +Operational + + +7674 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +202129 +Change scale +Increase scale by 101 +Operational + + +7675 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +201131 +Change data width +Increase width by 3 bits +Operational + + +7676 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +002111 +Radar incidence angle +Operational + + +7677 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +201000 +Change data width +Cancel +Operational + + +7678 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +202000 +Change scale +Cancel +Operational + + +7679 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +002134 +Antenna beam azimuth +Operational + + +7680 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021062 +Backscatter +Operational + + +7681 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021063 +Radiometric resolution (noise value) +Operational + + +7682 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021158 +ASCAT Kp estimate quality +Operational + + +7683 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021159 +ASCAT sigma-0 usability +Operational + + +7684 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021160 +ASCAT use of synthetic data +Operational + + +7685 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021161 +ASCAT synthetic data quantity +Operational + + +7686 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021162 +ASCAT satellite orbit and attitude quality +Operational + + +7687 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021163 +ASCAT solar array reflection contamination +Operational + + +7688 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021164 +ASCAT telemetry presence and quality +Operational + + +7689 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021165 +ASCAT extrapolated reference function presence +Operational + + +7690 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021166 +Land fraction +Operational + + +7691 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +001007 +Satellite identifier +Operational + + +7692 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +002019 +Satellite instruments +Operational + + +7693 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +004001 +Year +Operational + + +7694 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +004002 +Month +Operational + + +7695 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +004003 +Day +Operational + + +7696 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +004004 +Hour +Operational + + +7697 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +004005 +Minute +Operational + + +7698 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +004006 +Second +Operational + + +7699 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +005001 +Latitude (high accuracy) +Operational + + +7700 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +006001 +Longitude (high accuracy) +Operational + + +7701 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +027001 +Latitude (high accuracy) +Operational + + +7702 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +028001 +Longitude (high accuracy) +Operational + + +7703 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +027001 +Latitude (high accuracy) +Operational + + +7704 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +028001 +Longitude (high accuracy) +Operational + + +7705 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +027001 +Latitude (high accuracy) +Operational + + +7706 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +028001 +Longitude (high accuracy) +Operational + + +7707 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +027001 +Latitude (high accuracy) +Operational + + +7708 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +028001 +Longitude (high accuracy) +Operational + + +7709 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +010001 +Height of land surface +Operational + + +7710 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +014019 +Surface albedo +Operational + + +7711 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +007025 +Solar zenith angle +Operational + + +7712 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +010080 +Viewing zenith angle +Operational + + +7713 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +005023 +Sun to satellite azimuth difference +Operational + + +7714 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +020010 +Cloud cover (total) +Operational + + +7715 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +008003 +Vertical significance (satellite observations) +Operational + + +7716 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +007004 +Pressure +Operational + + +7717 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +014026 +Albedo at the top of clouds +Operational + + +7718 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +020014 +Height of top of cloud +Operational + + +7719 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +013093 +Cloud optical thickness +Operational + + +7720 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +105000 +Delayed replication of 5 descriptors +Operational + + +7721 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +031001 +Delayed descriptor replication factor +Operational + + +7722 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +007004 +Pressure +Operational + + +7723 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +007004 +Pressure +Operational + + +7724 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +008043 +Atmospheric chemical or physical constituent type +Operational + + +7725 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +008044 +CAS registry number +Operational + + +7726 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +015021 +Integrated mass density +Operational + + +7809 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +001007 +Satellite identifier +Operational + + +7810 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +001031 +Identification of originating/generating centre +Operational + + +7811 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +002019 +Satellite instruments +Operational + + +7812 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +002020 +Satellite classification +Operational + + +7813 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +004001 +Year +Operational + + +7814 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +004002 +Month +Operational + + +7815 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +004003 +Day +Operational + + +7816 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +004004 +Hour +Operational + + +7817 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +004005 +Minute +Operational + + +7818 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +202131 +Change scale +Add 3 to scale +Operational + + +7819 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +201138 +Change data width +Add 10 to width +Operational + + +7820 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +004006 +Second +Operational + + +7821 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +201000 +Change data width +Cancel +Operational + + +7822 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +202000 +Change scale +Cancel +Operational + + +7823 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +005001 +Latitude (high accuracy) +Operational + + +7824 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +006001 +Longitude (high accuracy) +Operational + + +7825 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +007024 +Satellite zenith angle +Operational + + +7826 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +005021 +Bearing or azimuth +Operational + + +7827 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +007025 +Solar zenith angle +Operational + + +7828 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +005022 +Solar azimuth +Operational + + +7829 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +005043 +Field of view number +Operational + + +7830 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +005040 +Orbit number +Operational + + +7831 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +201133 +Change data width +Add 5 to width +Operational + + +7832 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +005041 +Scan line number +Operational + + +7833 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +201000 +Change data width +Cancel +Operational + + +7834 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +201132 +Change data width +Add 4 to width +Operational + + +7835 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +025070 +Major frame count +Operational + + +7836 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +201000 +Change data width +Cancel +Operational + + +7837 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +202126 +Change scale +Subtract 2 from scale +Operational + + +7838 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +007001 +Height of station +Operational + + +7839 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +202000 +Change scale +Cancel +Operational + + +7840 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +033060 +GqisFlagQual - individual IASI-System quality flag +Operational + + +7841 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +033061 +GqisQualIndex - indicator for instrument noise performance (contributions from spectral and radiometric calibration) +Operational + + +7842 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +033062 +GqisQualIndexLoc - indicator for geometric quality index +Operational + + +7843 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +033063 +GqisQualIndexRad - indicator for instrument noise performance (contributions from radiometric calibration) +Operational + + +7844 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +033064 +GqisQualIndexSpect - indicator for instrument noise performance (contributions from spectral calibration) +Operational + + +7845 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +033065 +GqisSysTecSondQual - output of system TEC (Technical Expertise Centre) quality function +Operational + + +7846 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +101010 +Replicate 1 descriptor 10 times +Operational + + +7847 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +340002 +Band description +Operational + + +7848 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +101087 +Replicate 1 descriptor 87 times +Operational + + +7849 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +340003 +IASI Level 1c 100 channels +Operational + + +7850 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +002019 +Satellite instruments +Operational + + +7851 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +025051 +AVHRR channel combination +Operational + + +7852 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +101007 +Replicate 1 descriptor 7 times +Operational + + +7853 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +340004 +IASI Level 1c AVHRR single scene +Operational + + +7854 +40 +Additional satellite report sequences +340002 +(Band description) +025140 +Start channel +Operational + + +7855 +40 +Additional satellite report sequences +340002 +(Band description) +025141 +End channel +Operational + + +7856 +40 +Additional satellite report sequences +340002 +(Band description) +025142 +Channel scale factor +Operational + + +7857 +40 +Additional satellite report sequences +340003 +(IASI Level 1c 100 channels) +104100 +Replicate 4 descriptors 100 times +Operational + + +7858 +40 +Additional satellite report sequences +340003 +(IASI Level 1c 100 channels) +201136 +Change data width +Add 8 to width +Operational + + +7859 +40 +Additional satellite report sequences +340003 +(IASI Level 1c 100 channels) +005042 +Channel number +Operational + + +7860 +40 +Additional satellite report sequences +340003 +(IASI Level 1c 100 channels) +201000 +Change data width +Cancel +Operational + + +7861 +40 +Additional satellite report sequences +340003 +(IASI Level 1c 100 channels) +014046 +Scaled radiance +Operational + + +7862 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +005060 +Y angular position from centre of gravity +Operational + + +7863 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +005061 +Z angular position from centre of gravity +Operational + + +7864 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +025085 +Fraction of clear pixels in HIRS FOV +Operational + + +7865 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +105006 +Replicate 5 descriptors 6 times +Operational + + +7866 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +005042 +Channel number +Operational + + +7867 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +025142 +Channel scale factor +Operational + + +7868 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +014047 +Scaled mean AVHRR radiance +Operational + + +7869 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +025142 +Channel scale factor +Operational + + +7870 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +014048 +Scaled standard deviation AVHRR radiance +Operational + + +7871 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +001007 +Satellite identifier +Operational + + +7872 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +002019 +Satellite instruments +Operational + + +7873 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +001096 +Station acquisition +Operational + + +7874 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +025061 +Software identification and version number +Operational + + +7875 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +005044 +Satellite cycle number +Operational + + +7876 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +005040 +Orbit number +Operational + + +7877 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +001030 +Numerical model identifier +Operational + + +7878 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Datation +004001 +Year +Operational + + +7879 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Datation +004002 +Month +Operational + + +7880 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Datation +004003 +Day +Operational + + +7881 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Datation +004004 +Hour +Operational + + +7882 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Datation +004005 +Minute +Operational + + +7883 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Datation +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +7884 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Location and surface type +005001 +Latitude (high accuracy) +Operational + + +7885 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Location and surface type +006001 +Longitude (high accuracy) +Operational + + +7886 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Location and surface type +008029 +Surface type +Operational + + +7887 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Location and surface type +008074 +Altimeter echo type +Operational + + +7888 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Location and surface type +008077 +Radiometer sensed surface type +Operational + + +7889 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +040011 +Interpolation flag +Operational + + +7890 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +025097 +Three-dimensional error estimate of the navigator orbit +Operational + + +7891 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +025095 +Altimeter state flag +Operational + + +7892 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +025098 +Altimeter data quality flag +Operational + + +7893 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +025099 +Altimeter correction quality flag +Operational + + +7894 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +021144 +Altimeter rain flag +Operational + + +7895 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +025096 +Radiometer state flag +Operational + + +7896 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +040012 +Radiometer data quality flag +Operational + + +7897 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +040013 +Radiometer brightness temperature interpretation flag +Operational + + +7898 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +021169 +Ice presence indicator +Operational + + +7899 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022151 +Ku band ocean range +Operational + + +7900 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022162 +RMS of 20 Hz Ku band ocean range +Operational + + +7901 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022163 +Number of 20 Hz valid points for Ku band +Operational + + +7902 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +025160 +Ku band net instrumental correction +Operational + + +7903 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +025133 +Sea state bias correction on Ku band +Operational + + +7904 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022156 +Ku band significant wave height +Operational + + +7905 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022164 +RMS 20 Hz Ku band significant wave height +Operational + + +7906 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022165 +Number of 20 Hz valid points for Ku band significant wave height +Operational + + +7907 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022166 +Ku band net instrumental correction for significant wave height +Operational + + +7908 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +021137 +Ku band corrected ocean backscatter coefficient +Operational + + +7909 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +021138 +STD Ku band corrected ocean backscatter coefficient +Operational + + +7910 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022167 +Number of valid points for Ku band backscatter +Operational + + +7911 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +021139 +Ku band net instrumental correction for AGC +Operational + + +7912 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +021118 +Attenuation correction on sigma-0 +Operational + + +7913 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +021145 +Ku band automatic gain control +Operational + + +7914 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +021146 +RMS Ku band automatic gain control +Operational + + +7915 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +021147 +Number of valid points for Ku band automatic gain control +Operational + + +7916 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022168 +C band ocean range +Operational + + +7917 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022169 +RMS of C band ocean range +Operational + + +7918 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022170 +Number of 20 Hz valid points for C band +Operational + + +7919 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +025161 +C band net instrumental correction +Operational + + +7920 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +025162 +Sea state bias correction on C band +Operational + + +7921 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022171 +C band significant wave height +Operational + + +7922 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022172 +RMS 20 Hz C band significant wave height +Operational + + +7923 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022173 +Number of 20 Hz valid points for C band significant wave height +Operational + + +7924 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022174 +C band net instrumental correction for significant wave height +Operational + + +7925 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +021170 +C band corrected ocean backscatter coefficient +Operational + + +7926 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +021171 +RMS C band corrected ocean backscatter coefficient +Operational + + +7927 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022175 +Number of valid points for C band backscatter +Operational + + +7928 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +021172 +C band net instrumental correction for AGC +Operational + + +7929 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +021118 +Attenuation correction on sigma-0 +Operational + + +7930 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +021173 +C band automatic gain control +Operational + + +7931 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +021174 +RMS C band automatic gain control +Operational + + +7932 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +021175 +Number of valid points for C band automatic gain control +Operational + + +7933 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +002153 +Satellite channel centre frequency +Operational + + +7934 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +012063 +Brightness temperature +Operational + + +7935 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +002153 +Satellite channel centre frequency +Operational + + +7936 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +012063 +Brightness temperature +Operational + + +7937 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +002153 +Satellite channel centre frequency +Operational + + +7938 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +012063 +Brightness temperature +Operational + + +7939 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +013090 +Radiometer water vapour content +Operational + + +7940 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +013091 +Radiometer liquid content +Operational + + +7941 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Wind +007002 +Height or altitude +Operational + + +7942 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Wind +011097 +Wind speed from altimeter +Operational + + +7943 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Wind +011098 +Wind speed from radiometer +Operational + + +7944 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Wind +007002 +Height or altitude +Operational + + +7945 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Wind +011095 +u-component of the model wind vector +Operational + + +7946 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Wind +011096 +v-component of the model wind vector +Operational + + +7947 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010096 +Mean dynamic topography +Operational + + +7948 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010081 +Altitude of COG above reference ellipsoid +Operational + + +7949 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010082 +Instantaneous altitude rate +Operational + + +7950 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010083 +Squared off nadir angle of the satellite from platform data +Operational + + +7951 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010101 +Squared off nadir angle of the satellite from waveform data +Operational + + +7952 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +025132 +Ionospheric correction from model on Ku band +Operational + + +7953 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +025163 +Altimeter ionospheric correction on Ku band +Operational + + +7954 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +025126 +Model dry tropospheric correction +Operational + + +7955 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +025128 +Model wet tropospheric correction +Operational + + +7956 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +025164 +Radiometer wet tropospheric correction +Operational + + +7957 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010085 +Mean sea-surface height +Operational + + +7958 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010097 +Mean sea-surface height from altimeter only +Operational + + +7959 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010086 +Geoid's height +Operational + + +7960 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010087 +Ocean depth/land elevation +Operational + + +7961 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010092 +Solid Earth tide height +Operational + + +7962 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010088 +Total geocentric ocean tide height (solution 1) +Operational + + +7963 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010089 +Total geocentric ocean tide height (solution 2) +Operational + + +7964 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010098 +Loading tide height geocentric ocean tide solution 1 +Operational + + +7965 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010099 +Loading tide height geocentric ocean tide solution 2 +Operational + + +7966 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010090 +Long period tide height +Operational + + +7967 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010100 +Non-equilibrium long period tide height +Operational + + +7968 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010093 +Geocentric pole tide height +Operational + + +7969 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +025127 +Inverted barometer correction +Sea-surface height correction due to pressure loading +Operational + + +7970 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +040014 +High-frequency fluctuations of the sea-surface topography correction +Operational + + +7971 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +001007 +Satellite identifier +Operational + + +7972 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +001031 +Identification of originating/generating centre +Operational + + +7973 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +002019 +Satellite instruments +Operational + + +7974 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +002020 +Satellite classification +Operational + + +7975 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +004001 +Year +Operational + + +7976 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +004002 +Month +Operational + + +7977 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +004003 +Day +Operational + + +7978 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +004004 +Hour +Operational + + +7979 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +004005 +Minute +Operational + + +7980 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +202131 +Change scale +Add 3 to scale +Operational + + +7981 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +201138 +Change data width +Add 10 to width +Operational + + +7982 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +004006 +Second +Operational + + +7983 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +201000 +Change data width +Cancel +Operational + + +7984 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +202000 +Change scale +Cancel +Operational + + +7985 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +005001 +Latitude (high accuracy) +Operational + + +7986 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +006001 +Longitude (high accuracy) +Operational + + +7987 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +007024 +Satellite zenith angle +Operational + + +7988 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +005021 +Bearing or azimuth +Operational + + +7989 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +007025 +Solar zenith angle +Operational + + +7990 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +005022 +Solar azimuth +Operational + + +7991 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +005043 +Field of view number +Operational + + +7992 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +005040 +Orbit number +Operational + + +7993 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +201133 +Change data width +Add 5 to width +Operational + + +7994 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +005041 +Scan line number +Operational + + +7995 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +201000 +Change data width +Cancel +Operational + + +7996 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +201132 +Change data width +Add 4 to width +Operational + + +7997 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +025070 +Major frame count +Operational + + +7998 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +201000 +Change data width +Cancel +Operational + + +7999 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +202126 +Change scale +Subtract 2 from scale +Operational + + +8000 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +007001 +Height of station +Operational + + +8001 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +202000 +Change scale +Cancel +Operational + + +8002 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +103003 +Replicate 3 descriptors 3 times +Operational + + +8003 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +025140 +Start channel +Operational + + +8004 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +025141 +End channel +Operational + + +8005 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +033060 +GqisFlagQual - individual IASI-System quality flag +Operational + + +8006 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +033061 +GqisQualIndex - indicator for instrument noise performance (contributions from spectral and radiometric calibration) +Operational + + +8007 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +033062 +GqisQualIndexLoc - indicator for geometric quality index +Operational + + +8008 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +033063 +GqisQualIndexRad - indicator for instrument noise performance (contributions from radiometric calibration) +Operational + + +8009 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +033064 +GqisQualIndexSpect - indicator for instrument noise performance (contributions from spectral calibration) +Operational + + +8010 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +033065 +GqisSysTecSondQual - output of system TEC (Technical Expertise Centre) quality function +Operational + + +8011 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +040020 +GqisFlagQualDetailed - quality flag for the system +Operational + + +8012 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +101010 +Replicate 1 descriptor 10 times +Operational + + +8013 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +340002 +Band description +Operational + + +8014 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +101087 +Replicate 1 descriptor 87 times +Operational + + +8015 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +340003 +IASI Level 1c 100 channels +Operational + + +8016 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +002019 +Satellite instruments +Operational + + +8017 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +025051 +AVHRR channel combination +Operational + + +8018 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +101007 +Replicate 1 descriptor 7 times +Operational + + +8019 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +340004 +IASI Level 1c AVHRR single scene +Operational + + +8020 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +020081 +Cloud amount in segment +Operational + + +8021 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +008029 +Surface type +Operational + + +8022 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +020083 +Amount of segment covered by scene +Operational + + +8023 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +008029 +Surface type +Operational + + +8024 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +040018 +GIacAvgImagIIS - average of imager measurements +Operational + + +8025 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +040019 +GIacVarImagIIS - variance of imager measurements +Operational + + +8026 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +040021 +Fraction of weighted AVHRR pixel in IASI FOV covered with snow/ice +Operational + + +8027 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +040022 +Number of missing, bad or failed AVHRR pixels +Operational + + +8028 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Satellite processing information +001007 +Satellite identifier +Operational + + +8029 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Satellite processing information +001031 +Identification of originating/generating centre +Operational + + +8030 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Satellite processing information +002019 +Satellite instruments +Operational + + +8031 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Satellite processing information +002020 +Satellite classification +Operational + + +8032 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +004001 +Year +Operational + + +8033 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +004002 +Month +Operational + + +8034 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +004003 +Day +Operational + + +8035 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +004004 +Hour +Operational + + +8036 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +004005 +Minute +Operational + + +8037 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +202131 +Change scale +Add 3 to scale +Operational + + +8038 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +201138 +Change data width +Add 10 to width +Operational + + +8039 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +004006 +Second +Operational + + +8040 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +201000 +Change data width +Cancel +Operational + + +8041 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +202000 +Change scale +Cancel +Operational + + +8042 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +005001 +Latitude (high accuracy) +Operational + + +8043 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +006001 +Longitude (high accuracy) +Operational + + +8044 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +007024 +Satellite zenith angle +Operational + + +8045 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +005021 +Bearing or azimuth +Operational + + +8046 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +007025 +Solar zenith angle +Operational + + +8047 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +005022 +Solar azimuth +Operational + + +8048 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +005043 +Field of view number +Operational + + +8049 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +005040 +Orbit number +Operational + + +8050 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +201133 +Change data width +Add 5 to width +Operational + + +8051 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +005041 +Scan line number +Operational + + +8052 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +201000 +Change data width +Cancel +Operational + + +8053 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +201132 +Change data width +Add 4 to width +Operational + + +8054 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +025070 +Major frame count +Operational + + +8055 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +201000 +Change data width +Cancel +Operational + + +8056 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +202126 +Change scale +Subtract 2 from scale +Operational + + +8057 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +007001 +Height of station +Operational + + +8058 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +202000 +Change scale +Cancel +Operational + + +8059 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +103003 +Replicate 3 descriptors 3 times +Operational + + +8060 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +025140 +Start channel +Operational + + +8061 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +025141 +End channel +Operational + + +8062 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +033060 +GqisFlagQual - individual IASI-System quality flag +Operational + + +8063 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +033061 +GqisQualIndex - indicator for instrument noise performance (contributions from spectral and radiometric calibration) +Operational + + +8064 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +033062 +GqisQualIndexLoc - indicator for geometric quality index +Operational + + +8065 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +033063 +GqisQualIndexRad - indicator for instrument noise performance (contributions from radiometric calibration) +Operational + + +8066 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +033064 +GqisQualIndexSpect - indicator for instrument noise performance (contributions from spectral calibration) +Operational + + +8067 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +033065 +GqisSysTecSondQual - output of system TEC (Technical Expertise Centre) quality function +Operational + + +8068 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +040020 +GqisFlagQualDetailed - quality flag for the system +Operational + + +8069 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +101010 +Replicate 1 descriptor 10 times +Operational + + +8070 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +340002 +Band description +Operational + + +8071 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +104000 +Delayed replication of 4 descriptors +Operational + + +8072 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +031002 +Extended delayed descriptor replication factor +Operational + + +8073 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +201136 +Change data width +Add 8 to width +Operational + + +8074 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +005042 +Channel number +Operational + + +8075 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +201000 +Change data width +Cancel +Operational + + +8076 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +014046 +Scaled radiance +Operational + + +8077 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Instrument band definition +108003 +Replicate 8 descriptors 3 times +Operational + + +8078 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Instrument band definition +025140 +Start channel +Operational + + +8079 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Instrument band definition +025141 +End channel +Operational + + +8080 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Instrument band definition +040026 +Score quantization factor +Operational + + +8081 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Instrument band definition +040016 +Residual RMS in band +Operational + + +8082 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Instrument band definition +025062 +Database identification +Operational + + +8083 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Principal component scores for band +101000 +Delayed replication of 1 descriptor +Operational + + +8084 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Principal component scores for band +031002 +Extended delayed descriptor replication factor +Operational + + +8085 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Principal component scores for band +040017 +Non-normalized principal component score +Operational + + +8086 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +002019 +Satellite instruments +Operational + + +8087 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +025051 +AVHRR channel combination +Operational + + +8088 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +101007 +Replicate 1 descriptor 7 times +Operational + + +8089 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +340004 +IASI Level 1c AVHRR single scene +Operational + + +8090 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +020081 +Cloud amount in segment +Operational + + +8091 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +008029 +Surface type +Operational + + +8092 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +020083 +Amount of segment covered by scene +Operational + + +8093 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +008029 +Surface type +Operational + + +8094 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +040018 +GIacAvgImagIIS - average of imager measurements +Operational + + +8095 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +040019 +GIacVarImagIIS - variance of imager measurements +Operational + + +8096 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +040021 +Fraction of weighted AVHRR pixel in IASI FOV covered with snow/ice +Operational + + +8097 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +040022 +Number of missing, bad or failed AVHRR pixels +Operational + + +8098 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +001007 +Satellite identifier +Operational + + +8099 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +001031 +Identification of originating/generating centre +Operational + + +8100 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +002019 +Satellite instruments +Operational + + +8101 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +002020 +Satellite classification +Operational + + +8102 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +301011 +Year, month, day +Operational + + +8103 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +301013 +Hour, minute, second +Operational + + +8104 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +005040 +Orbit number +Operational + + +8105 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +201136 +Change data width +Add 8 to width +Operational + + +8106 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +005041 +Scan line number +Operational + + +8107 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +201000 +Change data width +Cancel +Operational + + +8108 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +025071 +Frame count +Operational + + +8109 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +005001 +Latitude (high accuracy) +Operational + + +8110 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +005001 +Latitude (high accuracy) +Operational + + +8111 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +006001 +Longitude (high accuracy) +Operational + + +8112 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +006001 +Longitude (high accuracy) +Operational + + +8113 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +107064 +Replicate 7 descriptors 64 times +Operational + + +8114 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +106032 +Replicate 6 descriptors 32 times +Operational + + +8115 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +008012 +Land/sea qualifier +Operational + + +8116 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +008013 +Day/night qualifier +Operational + + +8117 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +008065 +Sun-glint indicator +Operational + + +8118 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +008072 +Pixel(s) type +Operational + + +8119 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +013039 +Terrain type (ice/snow) +Operational + + +8120 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +040015 +Normalized differential vegetation index (NDVI) +Operational + + +8121 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Satellite +001007 +Satellite identifier +Operational + + +8122 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Satellite +002019 +Satellite instruments +Operational + + +8123 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Satellite +001096 +Station acquisition +Operational + + +8124 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Satellite +025061 +Software identification and version number +Operational + + +8125 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Satellite +005044 +Satellite cycle number +Operational + + +8126 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Satellite +005040 +Orbit number +Operational + + +8127 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Satellite +001030 +Numerical model identifier +Operational + + +8128 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Datation +004001 +Year +Operational + + +8129 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Datation +004002 +Month +Operational + + +8130 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Datation +004003 +Day +Operational + + +8131 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Datation +004004 +Hour +Operational + + +8132 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Datation +004005 +Minute +Operational + + +8133 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Datation +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +8134 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Location and surface type +005001 +Latitude (high accuracy) +Operational + + +8135 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Location and surface type +006001 +Longitude (high accuracy) +Operational + + +8136 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Location and surface type +008029 +Surface type +Operational + + +8137 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Location and surface type +008074 +Altimeter echo type +Operational + + +8138 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Location and surface type +008077 +Radiometer sensed surface type +Operational + + +8139 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +040011 +Interpolation flag +Operational + + +8140 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +025097 +Three-dimensional error estimate of the navigator orbit +Operational + + +8141 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +025095 +Altimeter state flag +Operational + + +8142 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +025098 +Altimeter data quality flag +Operational + + +8143 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +025099 +Altimeter correction quality flag +Operational + + +8144 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +021144 +Altimeter rain flag +Operational + + +8145 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +025096 +Radiometer state flag +Operational + + +8146 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +040012 +Radiometer data quality flag +Operational + + +8147 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +040013 +Radiometer brightness temperature interpretation flag +Operational + + +8148 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +021169 +Ice presence indicator +Operational + + +8149 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +040023 +Auxiliary altimeter state flags +Operational + + +8150 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +040024 +Meteorological map availability +Operational + + +8151 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +040025 +Interpolation flag for mean diurnal tide +Operational + + +8152 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022151 +Ku band ocean range +Operational + + +8153 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022162 +RMS of 20 Hz Ku band ocean range +Operational + + +8154 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022163 +Number of 20 Hz valid points for Ku band +Operational + + +8155 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +025160 +Ku band net instrumental correction +Operational + + +8156 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +025133 +Sea state bias correction on Ku band +Operational + + +8157 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022156 +Ku band significant wave height +Operational + + +8158 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022164 +RMS 20 Hz Ku band significant wave height +Operational + + +8159 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022165 +Number of 20 Hz valid points for Ku band significant wave height +Operational + + +8160 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022166 +Ku band net instrumental correction for significant wave height +Operational + + +8161 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +021137 +Ku band corrected ocean backscatter coefficient +Operational + + +8162 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +021138 +STD Ku band corrected ocean backscatter coefficient +Operational + + +8163 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022167 +Number of valid points for Ku band backscatter +Operational + + +8164 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +021139 +Ku band net instrumental correction for AGC +Operational + + +8165 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +021118 +Attenuation correction on sigma-0 +Operational + + +8166 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +021145 +Ku band automatic gain control +Operational + + +8167 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +021146 +RMS Ku band automatic gain control +Operational + + +8168 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +021147 +Number of valid points for Ku band automatic gain control +Operational + + +8169 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022168 +C band ocean range +Operational + + +8170 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022169 +RMS of C band ocean range +Operational + + +8171 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022170 +Number of 20 Hz valid points for C band +Operational + + +8172 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +025161 +C band net instrumental correction +Operational + + +8173 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +025162 +Sea state bias correction on C band +Operational + + +8174 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022171 +C band significant wave height +Operational + + +8175 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022172 +RMS 20 Hz C band significant wave height +Operational + + +8176 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022173 +Number of 20 Hz valid points for C band significant wave height +Operational + + +8177 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022174 +C band net instrumental correction for significant wave height +Operational + + +8178 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +021170 +C band corrected ocean backscatter coefficient +Operational + + +8179 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +021171 +RMS C band corrected ocean backscatter coefficient +Operational + + +8180 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022175 +Number of valid points for C band backscatter +Operational + + +8181 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +021172 +C band net instrumental correction for AGC +Operational + + +8182 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +021118 +Attenuation correction on sigma-0 +Operational + + +8183 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +021173 +C band automatic gain control +Operational + + +8184 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +021174 +RMS C band automatic gain control +Operational + + +8185 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +021175 +Number of valid points for C band automatic gain control +Operational + + +8186 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +002153 +Satellite channel centre frequency +Operational + + +8187 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +012063 +Brightness temperature +Operational + + +8188 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +002153 +Satellite channel centre frequency +Operational + + +8189 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +012063 +Brightness temperature +Operational + + +8190 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +002153 +Satellite channel centre frequency +Operational + + +8191 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +012063 +Brightness temperature +Operational + + +8192 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +013090 +Radiometer water vapour content +Operational + + +8193 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +013091 +Radiometer liquid content +Operational + + +8194 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Wind +007002 +Height or altitude +Operational + + +8195 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Wind +011097 +Wind speed from altimeter +Operational + + +8196 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Wind +011098 +Wind speed from radiometer +Operational + + +8197 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Wind +007002 +Height or altitude +Operational + + +8198 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Wind +011095 +u-component of the model wind vector +Operational + + +8199 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Wind +011096 +v-component of the model wind vector +Operational + + +8200 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010096 +Mean dynamic topography +Operational + + +8201 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010081 +Altitude of COG above reference ellipsoid +Operational + + +8202 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010082 +Instantaneous altitude rate +Operational + + +8203 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010083 +Squared off nadir angle of the satellite from platform data +Operational + + +8204 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010101 +Squared off nadir angle of the satellite from waveform data +Operational + + +8205 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +025132 +Ionospheric correction from model on Ku band +Operational + + +8206 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +025163 +Altimeter ionospheric correction on Ku band +Operational + + +8207 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +025126 +Model dry tropospheric correction +Operational + + +8208 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +025128 +Model wet tropospheric correction +Operational + + +8209 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +025164 +Radiometer wet tropospheric correction +Operational + + +8210 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010085 +Mean sea-surface height +Operational + + +8211 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010097 +Mean sea-surface height from altimeter only +Operational + + +8212 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010086 +Geoid's height +Operational + + +8213 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010087 +Ocean depth/land elevation +Operational + + +8214 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010092 +Solid Earth tide height +Operational + + +8215 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010088 +Total geocentric ocean tide height (solution 1) +Operational + + +8216 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010089 +Total geocentric ocean tide height (solution 2) +Operational + + +8217 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010098 +Loading tide height geocentric ocean tide solution 1 +Operational + + +8218 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010099 +Loading tide height geocentric ocean tide solution 2 +Operational + + +8219 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010090 +Long period tide height +Operational + + +8220 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010100 +Non-equilibrium long period tide height +Operational + + +8221 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010093 +Geocentric pole tide height +Operational + + +8222 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +025127 +Inverted barometer correction +Sea-surface height correction due to pressure loading +Operational + + +8223 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +040014 +High-frequency fluctuations of the sea-surface topography correction +Operational + + +8224 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010102 +Sea-surface height anomaly +Operational + + +8225 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +001007 +Satellite identifier +Operational + + +8226 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +002019 +Satellite instruments +Operational + + +8227 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +001096 +Station acquisition +Operational + + +8228 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025061 +Software identification and version number +Operational + + +8229 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +005044 +Satellite cycle number +Operational + + +8230 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +005040 +Orbit number +Operational + + +8231 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +001030 +Numerical model identifier +Operational + + +8232 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +004001 +Year +Operational + + +8233 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +004002 +Month +Operational + + +8234 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +004003 +Day +Operational + + +8235 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +004004 +Hour +Operational + + +8236 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +004005 +Minute +Operational + + +8237 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +8238 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +005001 +Latitude (high accuracy) +Operational + + +8239 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +006001 +Longitude (high accuracy) +Operational + + +8240 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +008029 +Surface type +Operational + + +8241 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +008077 +Radiometer sensed surface type +Operational + + +8242 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +040011 +Interpolation flag +Operational + + +8243 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025097 +Three-dimensional error estimate of the navigator orbit +Operational + + +8244 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025112 +Band specific altimeter data quality flag +Operational + + +8245 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025113 +Band specific altimeter correction quality flag +Operational + + +8246 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021148 +Trailing edge variation flag +Operational + + +8247 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021169 +Ice presence indicator +Operational + + +8248 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +040024 +Meteorological map availability +Operational + + +8249 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +040025 +Interpolation flag for mean diurnal tide +Operational + + +8250 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +002153 +Satellite channel centre frequency +Operational + + +8251 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022189 +Specific band ocean range +Operational + + +8252 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022191 +RMS of specific band ocean range +Operational + + +8253 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022130 +Number of valid points for specific band +Operational + + +8254 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025167 +Specific band net instrumental correction +Operational + + +8255 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025166 +Sea state bias correction on specific band +Operational + + +8256 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022190 +Specific band significant wave height +Operational + + +8257 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022131 +RMS specific band significant wave height +Operational + + +8258 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022132 +Number of valid points for specific band significant wave height +Operational + + +8259 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022133 +Specific band net instrument correction for significant wave height +Operational + + +8260 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021183 +Specific band corrected ocean backscatter coefficient +Operational + + +8261 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021184 +STD specific band corrected ocean backscatter coefficient +Operational + + +8262 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022134 +Number of valid points for specific band backscatter +Operational + + +8263 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021185 +Specific band net instrumental correction for AGC +Operational + + +8264 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021118 +Attenuation correction on sigma-0 +Operational + + +8265 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021186 +Specific band automatic gain control +Operational + + +8266 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021187 +RMS specific band automatic gain control +Operational + + +8267 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021188 +Number of valid points for specific band automatic gain control +Operational + + +8268 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +002153 +Satellite channel centre frequency +Operational + + +8269 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +012063 +Brightness temperature +Operational + + +8270 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +002153 +Satellite channel centre frequency +Operational + + +8271 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +012063 +Brightness temperature +Operational + + +8272 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +013090 +Radiometer water vapour content +Operational + + +8273 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +013160 +Radiometer liquid content +Operational + + +8274 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +007002 +Height or altitude +Operational + + +8275 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +011097 +Wind speed from altimeter +Operational + + +8276 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +007002 +Height or altitude +Operational + + +8277 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +011095 +u-component of the model wind vector +Operational + + +8278 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +011096 +v-component of the model wind vector +Operational + + +8279 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010096 +Mean dynamic topography +Operational + + +8280 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010081 +Altitude of COG above reference ellipsoid +Operational + + +8281 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010082 +Instantaneous altitude rate +Operational + + +8282 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010083 +Squared off-nadir angle of the satellite from platform data +Operational + + +8283 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010101 +Squared off-nadir angle of the satellite from waveform data +Operational + + +8284 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +002153 +Satellite channel centre frequency +Operational + + +8285 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025165 +Ionospheric correction from model on specific band +Operational + + +8286 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025126 +Model dry tropospheric correction +Operational + + +8287 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025128 +Model wet tropospheric correction +Operational + + +8288 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025164 +Radiometer wet tropospheric correction +Operational + + +8289 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010085 +Mean sea-surface height +Operational + + +8290 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010086 +Geoid's height +Operational + + +8291 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010087 +Ocean depth/land elevation +Operational + + +8292 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010092 +Solid Earth tide height +Operational + + +8293 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010088 +Total geocentric ocean tide height (solution 1) +Operational + + +8294 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010089 +Total geocentric ocean tide height (solution 2) +Operational + + +8295 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010098 +Loading tide height geocentric ocean tide solution 1 +Operational + + +8296 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010099 +Loading tide height geocentric ocean tide solution 2 +Operational + + +8297 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010090 +Long period tide height +Operational + + +8298 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010100 +Non-equilibrium long period tide height +Operational + + +8299 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010093 +Geocentric pole tide height +Operational + + +8300 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025127 +Inverted barometer correction +Operational + + +8301 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +040014 +High-frequency fluctuations of the sea-surface topography correction +Operational + + +8302 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010102 +Sea-surface height anomaly +Operational + + +8303 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +001007 +Satellite identifier +Operational + + +8304 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +002019 +Satellite instruments +Operational + + +8305 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +008091 +Coordinates significance += 0 Satellite coordinates +Operational + + +8306 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005001 +Latitude (high accuracy) +Operational + + +8307 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +006001 +Longitude (high accuracy) +Operational + + +8308 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +007002 +Height or altitude +Operational + + +8309 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005063 +Spacecraft roll +Operational + + +8310 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005064 +Spacecraft pitch +Operational + + +8311 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005066 +Spacecraft yaw +Operational + + +8312 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005041 +Scan line number +Operational + + +8313 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005067 +Number of scan lines +Operational + + +8314 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +301011 +Year, month, day +Operational + + +8315 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +301012 +Hour, minute +Operational + + +8316 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +8317 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +008091 +Coordinates significance += 1 Observation coordinates +Operational + + +8318 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005001 +Latitude (high accuracy) +Operational + + +8319 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +006001 +Longitude (high accuracy) +Operational + + +8320 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +107000 +Delayed replication of 7 descriptors +Operational + + +8321 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +031001 +Delayed descriptor replication factor +Operational + + +8322 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005042 +Channel number +Operational + + +8323 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +002153 +Satellite channel centre frequency +Operational + + +8324 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +002104 +Antenna polarization +Operational + + +8325 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +040028 +GMI quality flag +Operational + + +8326 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +007024 +Satellite zenith angle +Operational + + +8327 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +040027 +Sun glint angle +Operational + + +8328 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +012063 +Brightness temperature +Operational + + +8330 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +001007 +Satellite identifier +Operational + + +8331 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +002019 +Satellite instruments +Operational + + +8332 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +001033 +Identification of originating/generating centre +Operational + + +8333 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +001034 +Identification of originating/generating sub-centre +Operational + + +8334 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004001 +Year +Operational + + +8335 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004002 +Month +Operational + + +8336 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004003 +Day +Operational + + +8337 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004004 +Hour +Operational + + +8338 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004005 +Minute +Operational + + +8339 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +8340 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005068 +Profile number +Operational + + +8341 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005070 +Observation identifier +Operational + + +8342 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005069 +Receiver channel +Operational + + +8343 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040036 +Lidar L2b classification type +Operational + + +8344 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +008091 +Coordinates significance += 2 Start of observation +Operational + + +8345 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005001 +Latitude (high accuracy) +Operational + + +8346 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +006001 +Longitude (high accuracy) +Operational + + +8347 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004016 +Time increment +Operational + + +8348 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +008091 +Coordinates significance += 3 End of observation +Operational + + +8349 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005001 +Latitude (high accuracy) +Operational + + +8350 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +006001 +Longitude (high accuracy) +Operational + + +8351 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004016 +Time increment +Operational + + +8352 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +008091 +Coordinates significance += 4 Horizontal centre of gravity of observation +Operational + + +8353 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005001 +Latitude (high accuracy) +Operational + + +8354 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +006001 +Longitude (high accuracy) +Operational + + +8355 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004016 +Time increment +Operational + + +8356 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +008091 +Coordinates significance += 6 Top of observation +Operational + + +8357 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +007071 +Height (high resolution) +Operational + + +8358 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005021 +Bearing or azimuth +Operational + + +8359 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +007021 +Elevation +Operational + + +8360 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040035 +Satellite range +Operational + + +8361 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +008091 +Coordinates significance += 7 Bottom of observation +Operational + + +8362 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +007071 +Height (high resolution) +Operational + + +8363 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005021 +Bearing or azimuth +Operational + + +8364 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +007021 +Elevation +Operational + + +8365 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040035 +Satellite range +Operational + + +8366 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +008091 +Coordinates significance += 5 Vertical centre of gravity of observation +Operational + + +8367 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +007071 +Height (high resolution) +Operational + + +8368 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005021 +Bearing or azimuth +Operational + + +8369 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +007021 +Elevation +Operational + + +8370 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040035 +Satellite range +Operational + + +8371 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040029 +Horizontal observation integration length +Operational + + +8372 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040030 +Horizontal line of sight wind +Operational + + +8373 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040031 +Error estimate of horizontal line of sight wind +Operational + + +8374 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +025187 +Confidence flag +Operational + + +8375 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +010004 +Pressure +Operational + + +8376 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +012001 +Temperature/air temperature +Operational + + +8377 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040037 +Backscatter ratio +Operational + + +8378 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040032 +Derivative wind to pressure +Operational + + +8379 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040033 +Derivative wind to temperature +Operational + + +8380 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040034 +Derivative wind to backscatter ratio +Operational + + +8381 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +001007 +Satellite identifier +Operational + + +8382 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +002019 +Satellite instruments +Operational + + +8383 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +301011 +Year, month, day +Operational + + +8384 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +301012 +Hour, minute +Operational + + +8385 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +8386 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +201133 +Change data width +Increase bit width +Operational + + +8387 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +005041 +Scan line number +Operational + + +8388 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +201000 +Change data width +Cancel increase bit width +Operational + + +8389 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +201130 +Change data width +Increase bit width +Operational + + +8390 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +005043 +Field of view number +Operational + + +8391 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +201000 +Change data width +Cancel increase bit width +Operational + + +8392 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +207001 +Increase scale, reference value and data width +Operational + + +8393 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +005002 +Latitude (coarse accuracy) +Operational + + +8394 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +006002 +Longitude (coarse accuracy) +Operational + + +8395 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +8396 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +040027 +Sun glint angle +Operational + + +8397 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +013040 +Surface flag +Operational + + +8398 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +021120 +Probability of rain +Operational + + +8399 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +207003 +Increase scale, reference value and data width +Operational + + +8400 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +102003 +Replicate 2 descriptors 3 times +Operational + + +8401 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +002186 +Capability to detect precipitation phenomena +Set bit 1 = unknown/unspecified (total precipitation) in the first replication, Set bit 6 = solid precipitation in the second replication, Set bit 24 = convective precipitation in the third replication +Operational + + +8402 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +013155 +Intensity of precipitation (high accuracy) +Operational + + +8403 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +8404 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +033003 +Quality information +Operational + + +8405 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +301129 +Observing satellite and instruments +Operational + + +8406 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +301130 +High precision timestamp +Operational + + +8407 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +301131 +Pixel geolocation +Operational + + +8408 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +202134 +Change scale +Add 6 to scale +Operational + + +8409 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +007001 +Height of station +Operational + + +8410 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +202000 +Change scale +Cancel +Operational + + +8411 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +101000 +Delayed replicator of 1 descriptor +Operational + + +8412 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +031002 +Extended delayed descriptor replication factor +Operational + + +8413 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +340002 +Band description +Operational + + +8414 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +101000 +Delayed replication of 1 descriptor +Operational + + +8415 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +031002 +Extended delayed descriptor replication factor +Operational + + +8416 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +304039 +Radiance in channel +Operational + + +8417 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +101000 +Delayed replicator of 1 descriptor +Operational + + +8418 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +031002 +Extended delayed descriptor replication factor +Operational + + +8419 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +304040 +Principal component score in band +Operational + + +8420 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +001007 +Satellite identifier += 61 Sentinel 3A or = 65 Sentinel 3B +Operational + + +8421 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +002019 +Satellite instruments +178 (SRAL) +Operational + + +8422 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +005044 +Satellite cycle number +Operational + + +8423 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +001096 +Station acquisition +Operational + + +8424 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +005040 +Orbit number +Operational + + +8425 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +001040 +Processing centre ID code +Operational + + +8426 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025061 +Software identification and version number +Operational + + +8427 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025182 +L1 processing flag +Operational + + +8428 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025183 +L1 processing quality +Operational + + +8429 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025181 +L2 processing flag +Operational + + +8430 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025184 +L2 product status +Operational + + +8431 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +301011 +Year, month, day +Operational + + +8432 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +301013 +Hour, minute, second +Operational + + +8433 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +8434 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +301021 +Latitude/longitude (high accuracy) +Operational + + +8435 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +005063 +Spacecraft roll +Operational + + +8436 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +005064 +Spacecraft pitch +Operational + + +8437 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +005066 +Spacecraft yaw +Operational + + +8438 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010081 +Altitude of COG above reference ellipsoid +Operational + + +8439 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010082 +Instantaneous altitude rate +Operational + + +8440 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008075 +Ascending/descending orbit qualifier +Operational + + +8441 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025090 +Orbit state flag +Operational + + +8442 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008029 +Surface type +Operational + + +8443 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +201137 +Change data width +Increase data width by 9 bits +Operational + + +8444 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +202129 +Change scale +Add 1 to scale +Operational + + +8445 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +006021 +Distance +Operational + + +8446 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +202000 +Change scale +Cancel +Operational + + +8447 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +201000 +Change data width +Cancel +Operational + + +8448 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010087 +Ocean depth/land elevation +Operational + + +8449 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025096 +Radiometer state flag +Operational + + +8450 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +040012 +Radiometer data quality flag +Operational + + +8451 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008077 +Radiometer sensed surface type +Operational + + +8452 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +104002 +Replicate 4 descriptors 2 times +Operational + + +8453 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +002153 +Satellite channel centre frequency +Operational + + +8454 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +012063 +Brightness temperature +Operational + + +8455 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +012065 +Standard deviation brightness temperature +Operational + + +8456 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +040013 +Radiometer brightness temperature interpretation flag +Operational + + +8457 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +007002 +Height or altitude +Operational + + +8458 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +011098 +Wind speed from radiometer +Operational + + +8459 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013090 +Radiometer water vapour content +Operational + + +8460 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013091 +Radiometer liquid content +Operational + + +8461 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025164 +Radiometer wet tropospheric correction +Operational + + +8462 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025095 +Altimeter state flag +Operational + + +8463 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +040023 +Auxiliary altimeter state flags +Operational + + +8464 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025113 +Band specific altimeter correction quality flag +Operational + + +8465 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008074 +Altimeter echo type +Operational + + +8466 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025190 +Altimeter echo processing mode +Operational + + +8467 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021144 +Altimeter rain flag +Operational + + +8468 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025191 +Altimeter tracking mode +Operational + + +8469 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021143 +Ku band rain attenuation +Operational + + +8470 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013055 +Intensity of precipitation +Operational + + +8471 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021169 +Ice presence indicator +Operational + + +8472 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010101 +Squared off-nadir angle of the satellite from waveform data +Operational + + +8473 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +015012 +Total electron count per square metre +Operational + + +8474 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +007002 +Height or altitude +Operational + + +8475 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +011097 +Wind speed from altimeter +Operational + + +8476 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +040024 +Meteorological map availability +Operational + + +8477 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +007002 +Height or altitude +Operational + + +8478 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025126 +Model dry tropospheric correction +Operational + + +8479 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025128 +Model wet tropospheric correction +Operational + + +8480 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +040011 +Interpolation flag +Operational + + +8481 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +007002 +Height or altitude +Operational + + +8482 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +011095 +u-component of the model wind vector +Operational + + +8483 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +011096 +v-component of the model wind vector +Operational + + +8484 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010088 +Total geocentric ocean tide height (solution 1) +Operational + + +8485 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010089 +Total geocentric ocean tide height (solution 2) +Operational + + +8486 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010090 +Long period tide height +Operational + + +8487 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010092 +Solid Earth tide height +Operational + + +8488 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010093 +Geocentric pole tide height +Operational + + +8489 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010098 +Loading tide height geocentric ocean tide solution 1 +Operational + + +8490 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010099 +Loading tide height geocentric ocean tide solution 2 +Operational + + +8491 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010100 +Non-equilibrium long period tide height +Operational + + +8492 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025127 +Inverted barometer correction +Operational + + +8493 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +040014 +High-frequency fluctuations of the sea-surface topography correction +Operational + + +8494 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010085 +Mean sea-surface height +Operational + + +8495 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010086 +Geoid's height +Operational + + +8496 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010096 +Mean dynamic topography +Operational + + +8497 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010103 +Mean dynamic topography accuracy +Operational + + +8498 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010102 +Sea-surface height anomaly +Operational + + +8499 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022080 +Waveband central frequency +Operational + + +8500 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008076 +Type of band +Operational + + +8501 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022189 +Specific band ocean range +Operational + + +8502 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022191 +RMS of specific band ocean range +Operational + + +8503 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022130 +Number of valid points for specific band +Operational + + +8504 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025165 +Ionospheric correction from model on specific band +Operational + + +8505 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025166 +Sea state bias correction on specific band +Operational + + +8506 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025167 +Specific band net instrumental correction +Operational + + +8507 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021183 +Specific band corrected ocean backscatter coefficient +Operational + + +8508 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021184 +STD specific band corrected ocean backscatter coefficient +Operational + + +8509 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022134 +Number of valid points for specific band backscatter +Operational + + +8510 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021122 +Attenuation correction on sigma-0 (from tB) +Operational + + +8511 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022190 +Specific band significant wave height +Operational + + +8512 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022131 +RMS specific band significant wave height +Operational + + +8513 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022132 +Number of valid points for specific band significant wave height +Operational + + +8514 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022133 +Specific band net instrument correction for significant wave height +Operational + + +8515 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021186 +Specific band automatic gain control +Operational + + +8516 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021187 +RMS specific band automatic gain control +Operational + + +8517 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021188 +Number of valid points for specific band automatic gain control +Operational + + +8518 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021185 +Specific band net instrumental correction for AGC +Operational + + +8519 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025112 +Band specific altimeter data quality flag +Operational + + +8520 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025113 +Band specific altimeter correction quality flag +Operational + + +8521 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +033092 +Band specific ocean quality flag +Operational + + +8522 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008076 +Type of band +Operational + + +8523 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022189 +Specific band ocean range +Operational + + +8524 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022191 +RMS of specific band ocean range +Operational + + +8525 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022130 +Number of valid points for specific band +Operational + + +8526 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025165 +Ionospheric correction from model on specific band +Operational + + +8527 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025166 +Sea state bias correction on specific band +Operational + + +8528 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025167 +Specific band net instrumental correction +Operational + + +8529 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021183 +Specific band corrected ocean backscatter coefficient +Operational + + +8530 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021184 +STD specific band corrected ocean backscatter coefficient +Operational + + +8531 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022134 +Number of valid points for specific band backscatter +Operational + + +8532 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021122 +Attenuation correction on sigma-0 (from tB) +Operational + + +8533 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022190 +Specific band significant wave height +Operational + + +8534 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022131 +RMS specific band significant wave height +Operational + + +8535 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022132 +Number of valid points for specific band significant wave height +Operational + + +8536 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022133 +Specific band net instrument correction for significant wave height +Operational + + +8537 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021186 +Specific band automatic gain control +Operational + + +8538 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021187 +RMS specific band automatic gain control +Operational + + +8539 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021188 +Number of valid points for specific band automatic gain control +Operational + + +8540 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021185 +Specific band net instrumental correction for AGC +Operational + + +8541 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025112 +Band specific altimeter data quality flag +Operational + + +8542 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025113 +Band specific altimeter correction quality flag +Operational + + +8543 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +033092 +Band specific ocean quality flag +Operational + + +8544 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025190 +Altimeter echo processing mode +Operational + + +8545 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +011097 +Wind speed from altimeter +Operational + + +8546 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013090 +Radiometer water vapour content +Operational + + +8547 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013091 +Radiometer liquid content +Operational + + +8548 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021143 +Ku band rain attenuation +Operational + + +8549 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021184 +STD specific band corrected ocean backscatter coefficient +Operational + + +8550 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025128 +Model wet tropospheric correction +Operational + + +8551 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025163 +Altimeter ionospheric correction on Ku band +Operational + + +8552 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025164 +Radiometer wet tropospheric correction +Operational + + +8553 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010102 +Sea-surface height anomaly +Operational + + +8554 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022189 +Specific band ocean range +Operational + + +8555 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022191 +RMS of specific band ocean range +Operational + + +8556 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022130 +Number of valid points for specific band +Operational + + +8557 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025166 +Sea state bias correction on specific band +Operational + + +8558 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021183 +Specific band corrected ocean backscatter coefficient +Operational + + +8559 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021184 +STD specific band corrected ocean backscatter coefficient +Operational + + +8560 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022134 +Number of valid points for specific band backscatter +Operational + + +8561 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022190 +Specific band significant wave height +Operational + + +8562 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022131 +RMS specific band significant wave height +Operational + + +8563 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022132 +Number of valid points for specific band significant wave height +Operational + + +8564 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025112 +Band specific altimeter data quality flag +Operational + + +8565 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025113 +Band specific altimeter correction quality flag +Operational + + +8566 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +033092 +Band specific ocean quality flag +Operational + + +8567 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008049 +Number of observations +Operational + + +8568 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022080 +Waveband central frequency +Operational + + +8569 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +134021 +Replicate 34 descriptors 21 times +Operational + + +8570 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +301011 +Year, month, day +Operational + + +8571 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +301013 +Hour, minute, second +Operational + + +8572 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +8573 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +301021 +Latitude/longitude (high accuracy) +Operational + + +8574 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010081 +Altitude of COG above reference ellipsoid +Operational + + +8575 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010082 +Instantaneous altitude rate +Operational + + +8576 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008029 +Surface type +Operational + + +8577 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +201137 +Change data width +Add 9 bits to data width +Operational + + +8578 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +202129 +Change scale +Add 1 to scale +Operational + + +8579 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +006021 +Distance +Operational + + +8580 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +202000 +Change scale +Cancel +Operational + + +8581 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +201000 +Change data width +Cancel +Operational + + +8582 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025191 +Altimeter tracking mode +Operational + + +8583 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021071 +Peakiness +Operational + + +8584 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010085 +Mean sea-surface height +Operational + + +8585 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +040011 +Interpolation flag +Operational + + +8586 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010102 +Sea-surface height anomaly +Operational + + +8587 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022189 +Specific band ocean range +Operational + + +8588 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022146 +OCOG range +Operational + + +8589 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025165 +Ionospheric correction from model on specific band +Operational + + +8590 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025167 +Specific band net instrumental correction +Operational + + +8591 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021183 +Specific band corrected ocean backscatter coefficient +Operational + + +8592 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022190 +Specific band significant wave height +Operational + + +8593 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022133 +Specific band net instrument correction for significant wave height +Operational + + +8594 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021177 +Corrected OCOG backscatter coefficient +Operational + + +8595 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021185 +Specific band net instrumental correction for AGC +Operational + + +8596 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013164 +Sea ice freeboard +Operational + + +8597 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +202126 +Change scale +Subtract 2 bits from scale +Operational + + +8598 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022046 +Sea ice fraction +Operational + + +8599 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +202000 +Change scale +Cancel +Operational + + +8600 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013117 +Snow density (liquid water content) +Operational + + +8601 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013013 +Total snow depth +Operational + + +8602 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025112 +Band specific altimeter data quality flag +Operational + + +8603 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +033092 +Band specific ocean quality flag +Operational + + diff --git a/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_37_0_0_TableA_en.xml b/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_37_0_0_TableA_en.xml new file mode 100644 index 0000000000..2cc052f284 --- /dev/null +++ b/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_37_0_0_TableA_en.xml @@ -0,0 +1,207 @@ + + + +1 +0 +Surface data - land +Operational + + +2 +1 +Surface data - sea +Operational + + +3 +2 +Vertical soundings (other than satellite) +Operational + + +4 +3 +Vertical soundings (satellite) +Operational + + +5 +4 +Single level upper-air data (other than satellite) +Operational + + +6 +5 +Single level upper-air data (satellite) +Operational + + +7 +6 +Radar data +Operational + + +8 +7 +Synoptic features +Operational + + +9 +8 +Physical/chemical constituents +Operational + + +10 +9 +Dispersal and transport +Operational + + +11 +10 +Radiological data +Operational + + +12 +11 +BUFR tables, complete replacement or update +Operational + + +13 +12 +Surface data (satellite) +Operational + + +14 +13 +Forecasts +Operational + + +15 +14 +Warnings +Operational + + +16 +15-19 +Reserved +Operational + + +17 +20 +Status information +Operational + + +18 +21 +Radiances (satellite measured) +Operational + + +19 +22 +Radar (satellite) but not altimeter and scatterometer +Operational + + +20 +23 +Lidar (satellite) +Operational + + +21 +24 +Scatterometry (satellite) +Operational + + +22 +25 +Altimetry (satellite) +Operational + + +23 +26 +Spectrometry (satellite) +Operational + + +24 +27 +Gravity measurement (satellite) +Operational + + +25 +28 +Precision orbit (satellite) +Operational + + +26 +29 +Space environment (satellite) +Operational + + +27 +30 +Calibration datasets (satellite) +Operational + + +28 +31 +Oceanographic data +Operational + + +29 +32 +Lidar (ground-based) +Operational + + +30 +33-100 +Reserved +Operational + + +31 +101 +Image data (satellite) +Operational + + +32 +102-239 +Reserved +Operational + + +33 +240-254 +For experimental use +Operational + + +34 +255 +Other category +Operational + + diff --git a/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_37_0_0_TableC_en.xml b/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_37_0_0_TableC_en.xml new file mode 100644 index 0000000000..e84eda24e9 --- /dev/null +++ b/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_37_0_0_TableC_en.xml @@ -0,0 +1,202 @@ + + + +1 +201YYY +Change data width +Add (YYY-128) bits to the data width given for each data element in Table B, other than CCITT IA5 (character) data, code or flag tables. +Operational + + +2 +202YYY +Change scale +Add YYY-128 to the scale for each data element in Table B, other than CCITT IA5 (character) data, code or flag tables. +Operational + + +3 +203YYY +Change reference values +Subsequent element descriptors define new reference values for corresponding Table B entries. Each new reference value is represented by YYY bits in the Data section. Definition of new reference values is concluded by coding this operator with YYY = 255. Negative reference values shall be represented by a positive integer with the left-most bit (bit 1) set to 1. +Operational + + +4 +204YYY +Add associated field +Precede each data element with YYY bits of information. This operation associates a data field (e.g. quality control information) of YYY bits with each data element. +Operational + + +5 +205YYY +Signify character +YYY characters (CCITT International Alphabet No. 5) are inserted as a data field of YYY x 8 bits in length. +Operational + + +6 +206YYY +Signify data width for the immediately following local descriptor +YYY bits of data are described by the immediately following descriptor. +Operational + + +7 +207YYY +Increase scale, reference value and data width +For Table B elements, which are not CCITT IA5 (character data), code tables, or flag tables: 1. Add YYY to the existing scale factor 2. Multiply the existing reference value by 10**YYY 3. Calculate ((10 x YYY) + 2) ÷ 3, disregard any fractional remainder and add the result to the existing bit width. +Operational + + +8 +208YYY +Change width of CCITT IA5 field +YYY characters from CCITT International Alphabet No. 5 (representing YYY x 8 bits in length) replace the specified data width given for each CCITT IA5 element in Table B. +Operational + + +9 +221YYY +Data not present +Data values present in Section 4 (Data section) corresponding to the following YYY descriptors shall be limited to data from Classes 01-09, and Class 31. +Operational + + +10 +222000 +Quality information follows +The values of Class 33 elements which follow relate to the data defined by the data present bit-map. +Operational + + +11 +223000 +Substituted values operator +The substituted values which follow relate to the data defined by the data present bit-map. +Operational + + +12 +223255 +Substituted values marker operator +This operator shall signify a data item containing a substituted value; the element descriptor for the substituted value is obtained by the application of the data present bit-map associated with the substituted values operator. +Operational + + +13 +224000 +First-order statistical values follow +The statistical values which follow relate to the data defined by the data present bit-map. +Operational + + +14 +224255 +First-order statistical values marker operator +This operator shall signify a data item containing a first-order statistical value of the type indicated by the preceding 0 08 023 element descriptor; the element descriptor to which the first-order statistic relates is obtained by the application of the data present bit-map associated with the first-order statistical values follow operator; first-order statistical values shall be represented as defined by this element descriptor. +Operational + + +15 +225000 +Difference statistical values follow +The statistical values which follow relate to the data defined by the data present bit-map. +Operational + + +16 +225255 +Difference statistical values marker operator +This operator shall signify a data item containing a difference statistical value of the type indicated by the preceding 0 08 024 element descriptor; the element descriptor to which the difference statistical value relates is obtained by the application of the data present bit-map associated with the difference statistical values follow operator; difference statistical values shall be represented as defined by this element descriptor, but with a reference value of -2n and a data width of (n+1), where n is the data width given by the original descriptor. This special reference value allows the statistical difference values to be centred around zero. +Operational + + +17 +232000 +Replaced/retained values follow +The replaced/retained values which follow relate to the data defined by the data present bit-map. +Operational + + +18 +232255 +Replaced/retained value marker operator +This operator shall signify a data item containing the original of an element which has been replaced by a substituted value. The element descriptor for the retained value is obtained by the application of the data present bit-map associated with the substituted values operator. +Operational + + +19 +235000 +Cancel backward data reference +This operator terminates all previously defined back-ward reference and cancels any previously defined data present bit-map; it causes the next data present bit-map to refer to the data descriptors which immediately precede the operator to which it relates. +Operational + + +20 +236000 +Define data present bit-map +This operator defines the data present bit-map which follows for possible re-use; only one data present bit-map may be defined between this operator and the cancel use defined data present bit-map operator. +Operational + + +21 +237000 +Use defined data present bit-map +This operator causes the defined data present bit-map to be used again. +Operational + + +22 +237255 +Cancel use defined data present bit-map +This operator cancels the re-use of the defined data present bit-map. +Operational + + +23 +241000 +Define event +This operator denotes the beginning of the definition of an event +(see Note 19). +Operational + + +24 +241255 +Cancel define event +This operator denotes the conclusion of the event definition that was begun via the previous 2 41 000 operator. +Operational + + +25 +242000 +Define conditioning event +This operator denotes the beginning of the definition of a conditioning event +(see Note 19). +Operational + + +26 +242255 +Cancel define conditioning event +This operator denotes the conclusion of the conditioning event definition that was begun via the previous 2 42 000 operator. +Operational + + +27 +243000 +Categorical forecast values follow +The values which follow are categorical forecast values +(see Note 20). +Operational + + +28 +243255 +Cancel categorical forecast values follow +This operator denotes the conclusion of the definition of categorical forecast values that was begun via the previous 2 43 000 operator. +Operational + + diff --git a/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_37_0_0_TableD_en.xml b/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_37_0_0_TableD_en.xml new file mode 100644 index 0000000000..d474ab0dcc --- /dev/null +++ b/bufr/src/main/resources/resources/bufrTables/wmo/BUFR_37_0_0_TableD_en.xml @@ -0,0 +1,84260 @@ + + + +1 +00 +BUFR table entries sequences +300002 +000002 +Table A: data category description, line 1 +Operational + + +2 +00 +BUFR table entries sequences +300002 +000003 +Table A: data category description, line 2 +Operational + + +3 +00 +BUFR table entries sequences +300003 +(F, X, Y of descriptor to be added or defined) +000010 +F descriptor to be added or defined +Operational + + +4 +00 +BUFR table entries sequences +300003 +(F, X, Y of descriptor to be added or defined) +000011 +X descriptor to be added or defined +Operational + + +5 +00 +BUFR table entries sequences +300003 +(F, X, Y of descriptor to be added or defined) +000012 +Y descriptor to be added or defined +Operational + + +6 +00 +BUFR table entries sequences +300004 +300003 +F, X, Y of descriptor to be added or defined +Operational + + +7 +00 +BUFR table entries sequences +300004 +000013 +Element name, line 1 +Operational + + +8 +00 +BUFR table entries sequences +300004 +000014 +Element name, line 2 +Operational + + +9 +00 +BUFR table entries sequences +300004 +000015 +Units name +Operational + + +10 +00 +BUFR table entries sequences +300004 +000016 +Units scale sign +Operational + + +11 +00 +BUFR table entries sequences +300004 +000017 +Units scale +Operational + + +12 +00 +BUFR table entries sequences +300004 +000018 +Units reference sign +Operational + + +13 +00 +BUFR table entries sequences +300004 +000019 +Units reference value +Operational + + +14 +00 +BUFR table entries sequences +300004 +000020 +Element data width +Operational + + +15 +00 +BUFR table entries sequences +300010 +300003 +F, X, Y of descriptor to be added or defined +Operational + + +16 +00 +BUFR table entries sequences +300010 +101000 +Delayed replication of 1 descriptor +Operational + + +17 +00 +BUFR table entries sequences +300010 +031001 +Delayed descriptor replication factor +Operational + + +18 +00 +BUFR table entries sequences +300010 +000030 +Descriptor defining sequence +Operational + + +19 +00 +BUFR table entries sequences +300015 +(Code table definition) +000030 +Descriptor defining sequence +Operational + + +20 +00 +BUFR table entries sequences +300015 +(Code table definition) +102000 +Delayed replication of 2 descriptors +Operational + + +21 +00 +BUFR table entries sequences +300015 +(Code table definition) +031002 +Extended delayed descriptor replication factor +Operational + + +22 +00 +BUFR table entries sequences +300015 +(Code table definition) +000024 +Code figure +Operational + + +23 +00 +BUFR table entries sequences +300015 +(Code table definition) +000025 +Code figure meaning +Operational + + +24 +00 +BUFR table entries sequences +300016 +(Flag table definition) +000030 +Descriptor defining sequence +Operational + + +25 +00 +BUFR table entries sequences +300016 +(Flag table definition) +102000 +Delayed replication of 2 descriptors +Operational + + +26 +00 +BUFR table entries sequences +300016 +(Flag table definition) +031001 +Delayed descriptor replication factor +Operational + + +27 +00 +BUFR table entries sequences +300016 +(Flag table definition) +000026 +Bit number +Operational + + +28 +00 +BUFR table entries sequences +300016 +(Flag table definition) +000027 +Bit number meaning +Operational + + +29 +01 +Location and identification sequences +301001 +(WMO block and station numbers) +001001 +WMO block number +Operational + + +30 +01 +Location and identification sequences +301001 +(WMO block and station numbers) +001002 +WMO station number +Operational + + +31 +01 +Location and identification sequences +301002 +001003 +WMO Region number/geographical area +Operational + + +32 +01 +Location and identification sequences +301002 +001004 +WMO Region sub-area +Operational + + +33 +01 +Location and identification sequences +301002 +001005 +Buoy/platform identifier +Operational + + +34 +01 +Location and identification sequences +301003 +(Ship's call sign and motion) +001011 +Ship or mobile land station identifier +Ship's call sign +Operational + + +35 +01 +Location and identification sequences +301003 +(Ship's call sign and motion) +001012 +Direction of motion of moving observing platform +Operational + + +36 +01 +Location and identification sequences +301003 +(Ship's call sign and motion) +001013 +Speed of motion of moving observing platform +Operational + + +37 +01 +Location and identification sequences +301004 +(Surface station identification) +001001 +WMO block number +Operational + + +38 +01 +Location and identification sequences +301004 +(Surface station identification) +001002 +WMO station number +Operational + + +39 +01 +Location and identification sequences +301004 +(Surface station identification) +001015 +Station or site name +Operational + + +40 +01 +Location and identification sequences +301004 +(Surface station identification) +002001 +Type of station +Operational + + +41 +01 +Location and identification sequences +301005 +(Originating centre/sub-centre) +001035 +Originating centre +Operational + + +42 +01 +Location and identification sequences +301005 +(Originating centre/sub-centre) +001034 +Identification of originating/generating sub-centre +Operational + + +43 +01 +Location and identification sequences +301011 +(Year, month, day) +004001 +Year +Operational + + +44 +01 +Location and identification sequences +301011 +(Year, month, day) +004002 +Month +Operational + + +45 +01 +Location and identification sequences +301011 +(Year, month, day) +004003 +Day +Operational + + +46 +01 +Location and identification sequences +301012 +(Hour, minute) +004004 +Hour +Operational + + +47 +01 +Location and identification sequences +301012 +(Hour, minute) +004005 +Minute +Operational + + +48 +01 +Location and identification sequences +301013 +(Hour, minute, second) +004004 +Hour +Operational + + +49 +01 +Location and identification sequences +301013 +(Hour, minute, second) +004005 +Minute +Operational + + +50 +01 +Location and identification sequences +301013 +(Hour, minute, second) +004006 +Second +Operational + + +51 +01 +Location and identification sequences +301014 +(Time period) +102002 +Replicate 2 descriptors 2 times +Operational + + +52 +01 +Location and identification sequences +301014 +(Time period) +301011 +Year, month, day +Operational + + +53 +01 +Location and identification sequences +301014 +(Time period) +301012 +Hour, minute +Operational + + +54 +01 +Location and identification sequences +301018 +(Encrypted ship's call sign and encryption method) +001114 +Encrypted ship or mobile land station identifier (base64 encoding) +See Notes 2-4 +Operational + + +55 +01 +Location and identification sequences +301018 +(Encrypted ship's call sign and encryption method) +025185 +Encryption method +Operational + + +56 +01 +Location and identification sequences +301018 +(Encrypted ship's call sign and encryption method) +025186 +Encryption key version +Operational + + +57 +01 +Location and identification sequences +301021 +(Latitude/longitude (high accuracy)) +005001 +Latitude (high accuracy) +Operational + + +58 +01 +Location and identification sequences +301021 +(Latitude/longitude (high accuracy)) +006001 +Longitude (high accuracy) +Operational + + +59 +01 +Location and identification sequences +301022 +(Latitude/longitude (high accuracy), height of station) +005001 +Latitude (high accuracy) +Operational + + +60 +01 +Location and identification sequences +301022 +(Latitude/longitude (high accuracy), height of station) +006001 +Longitude (high accuracy) +Operational + + +61 +01 +Location and identification sequences +301022 +(Latitude/longitude (high accuracy), height of station) +007001 +Height of station +Operational + + +62 +01 +Location and identification sequences +301023 +(Latitude/longitude (coarse accuracy)) +005002 +Latitude (coarse accuracy) +Operational + + +63 +01 +Location and identification sequences +301023 +(Latitude/longitude (coarse accuracy)) +006002 +Longitude (coarse accuracy) +Operational + + +64 +01 +Location and identification sequences +301024 +(Latitude/longitude (coarse accuracy), height of station) +005002 +Latitude (coarse accuracy) +Operational + + +65 +01 +Location and identification sequences +301024 +(Latitude/longitude (coarse accuracy), height of station) +006002 +Longitude (coarse accuracy) +Operational + + +66 +01 +Location and identification sequences +301024 +(Latitude/longitude (coarse accuracy), height of station) +007001 +Height of station +Operational + + +67 +01 +Location and identification sequences +301025 +(Latitude/longitude (coarse accuracy), day/time) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +68 +01 +Location and identification sequences +301025 +(Latitude/longitude (coarse accuracy), day/time) +004003 +Day +Operational + + +69 +01 +Location and identification sequences +301025 +(Latitude/longitude (coarse accuracy), day/time) +301012 +Hour, minute +Operational + + +70 +01 +Location and identification sequences +301026 +(Latitude/longitude (high accuracy), time period (day, hour, minute)) +301021 +Latitude/longitude (high accuracy) +Operational + + +71 +01 +Location and identification sequences +301026 +(Latitude/longitude (high accuracy), time period (day, hour, minute)) +004003 +Day +Time period in days +Operational + + +72 +01 +Location and identification sequences +301026 +(Latitude/longitude (high accuracy), time period (day, hour, minute)) +004003 +Day +Operational + + +73 +01 +Location and identification sequences +301026 +(Latitude/longitude (high accuracy), time period (day, hour, minute)) +004004 +Hour +Time period in hours +Operational + + +74 +01 +Location and identification sequences +301026 +(Latitude/longitude (high accuracy), time period (day, hour, minute)) +004004 +Hour +Operational + + +75 +01 +Location and identification sequences +301026 +(Latitude/longitude (high accuracy), time period (day, hour, minute)) +004005 +Minute +Time period in minutes +Operational + + +76 +01 +Location and identification sequences +301026 +(Latitude/longitude (high accuracy), time period (day, hour, minute)) +004005 +Minute +Operational + + +77 +01 +Location and identification sequences +301027 +(Description of a feature in 3-D or 2-D) +008007 +Dimensional significance += 0 Point, = 1 Line, = 2 Area, = 3 Volume +Operational + + +78 +01 +Location and identification sequences +301027 +(Description of a feature in 3-D or 2-D) +101000 +Delayed replication of 1 descriptor +Operational + + +79 +01 +Location and identification sequences +301027 +(Description of a feature in 3-D or 2-D) +031001 +Delayed descriptor replication factor +(see Note 5) +Operational + + +80 +01 +Location and identification sequences +301027 +(Description of a feature in 3-D or 2-D) +301028 +Horizontal section of a feature described as a polygon, circle, line or point +Operational + + +81 +01 +Location and identification sequences +301027 +(Description of a feature in 3-D or 2-D) +008007 +Dimensional significance +Set to missing (cancel) +Operational + + +82 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +008040 +Flight level significance +Operational + + +83 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +033042 +Type of limit represented by following value +Operational + + +84 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +007010 +Flight level +Operational + + +85 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +101000 +Delayed replication of 1 descriptor +Operational + + +86 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +031002 +Extended delayed descriptor replication factor +(see Note 6) +Operational + + +87 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +88 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +019007 +Effective radius of feature +(see Note 7) +Operational + + +89 +01 +Location and identification sequences +301028 +(Horizontal section of a feature described as a polygon, circle, line or point) +008040 +Flight level significance +Set to missing (cancel) +Operational + + +90 +01 +Location and identification sequences +301029 +(Identification) +001018 +Short station or site name +Operational + + +91 +01 +Location and identification sequences +301029 +(Identification) +002001 +Type of station +Operational + + +92 +01 +Location and identification sequences +301029 +(Identification) +301011 +Year, month, day +Operational + + +93 +01 +Location and identification sequences +301030 +(Identification - with physical location) +001018 +Short station or site name +Operational + + +94 +01 +Location and identification sequences +301030 +(Identification - with physical location) +002001 +Type of station +Operational + + +95 +01 +Location and identification sequences +301030 +(Identification - with physical location) +301011 +Year, month, day +Operational + + +96 +01 +Location and identification sequences +301030 +(Identification - with physical location) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +97 +01 +Location and identification sequences +301031 +(Identification and type of station, date/time, location (high accuracy), height of station) +301001 +WMO block and station numbers +Operational + + +98 +01 +Location and identification sequences +301031 +(Identification and type of station, date/time, location (high accuracy), height of station) +002001 +Type of station +Operational + + +99 +01 +Location and identification sequences +301031 +(Identification and type of station, date/time, location (high accuracy), height of station) +301011 +Year, month, day +Operational + + +100 +01 +Location and identification sequences +301031 +(Identification and type of station, date/time, location (high accuracy), height of station) +301012 +Hour, minute +Operational + + +101 +01 +Location and identification sequences +301031 +(Identification and type of station, date/time, location (high accuracy), height of station) +301022 +Latitude/longitude (high accuracy), height of station +Operational + + +102 +01 +Location and identification sequences +301032 +(Identification and type of station, date/time, location (coarse accuracy), height of station) +301001 +WMO block and station numbers +Operational + + +103 +01 +Location and identification sequences +301032 +(Identification and type of station, date/time, location (coarse accuracy), height of station) +002001 +Type of station +Operational + + +104 +01 +Location and identification sequences +301032 +(Identification and type of station, date/time, location (coarse accuracy), height of station) +301011 +Year, month, day +Operational + + +105 +01 +Location and identification sequences +301032 +(Identification and type of station, date/time, location (coarse accuracy), height of station) +301012 +Hour, minute +Operational + + +106 +01 +Location and identification sequences +301032 +(Identification and type of station, date/time, location (coarse accuracy), height of station) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +107 +01 +Location and identification sequences +301033 +(Buoy/platform - fixed) +001005 +Buoy/platform identifier +Operational + + +108 +01 +Location and identification sequences +301033 +(Buoy/platform - fixed) +002001 +Type of station +Operational + + +109 +01 +Location and identification sequences +301033 +(Buoy/platform - fixed) +301011 +Year, month, day +Operational + + +110 +01 +Location and identification sequences +301033 +(Buoy/platform - fixed) +301012 +Hour, minute +Operational + + +111 +01 +Location and identification sequences +301033 +(Buoy/platform - fixed) +301021 +Latitude/longitude (high accuracy) +Operational + + +112 +01 +Location and identification sequences +301034 +(Buoy/platform - fixed) +001005 +Buoy/platform identifier +Operational + + +113 +01 +Location and identification sequences +301034 +(Buoy/platform - fixed) +002001 +Type of station +Operational + + +114 +01 +Location and identification sequences +301034 +(Buoy/platform - fixed) +301011 +Year, month, day +Operational + + +115 +01 +Location and identification sequences +301034 +(Buoy/platform - fixed) +301012 +Hour, minute +Operational + + +116 +01 +Location and identification sequences +301034 +(Buoy/platform - fixed) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +117 +01 +Location and identification sequences +301035 +(Buoy/platform - moving) (see Note 8) +001005 +Buoy/platform identifier +Operational + + +118 +01 +Location and identification sequences +301035 +(Buoy/platform - moving) +001012 +Direction of motion of moving observing platform +Operational + + +119 +01 +Location and identification sequences +301035 +(Buoy/platform - moving) +001013 +Speed of motion of moving observing platform +Operational + + +120 +01 +Location and identification sequences +301035 +(Buoy/platform - moving) +002001 +Type of station +Operational + + +121 +01 +Location and identification sequences +301035 +(Buoy/platform - moving) +301011 +Year, month, day +Operational + + +122 +01 +Location and identification sequences +301035 +(Buoy/platform - moving) +301012 +Hour, minute +Operational + + +123 +01 +Location and identification sequences +301035 +(Buoy/platform - moving) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +124 +01 +Location and identification sequences +301036 +(Ship) +301003 +Ship's call sign and motion +Operational + + +125 +01 +Location and identification sequences +301036 +(Ship) +002001 +Type of station +Operational + + +126 +01 +Location and identification sequences +301036 +(Ship) +301011 +Year, month, day +Operational + + +127 +01 +Location and identification sequences +301036 +(Ship) +301012 +Hour, minute +Operational + + +128 +01 +Location and identification sequences +301036 +(Ship) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +129 +01 +Location and identification sequences +301037 +(Land station for vertical soundings) +301001 +WMO block and station numbers +Operational + + +130 +01 +Location and identification sequences +301037 +(Land station for vertical soundings) +002011 +Radiosonde type +Operational + + +131 +01 +Location and identification sequences +301037 +(Land station for vertical soundings) +002012 +Radiosonde computational method +Operational + + +132 +01 +Location and identification sequences +301037 +(Land station for vertical soundings) +301011 +Year, month, day +Operational + + +133 +01 +Location and identification sequences +301037 +(Land station for vertical soundings) +301012 +Hour, minute +Operational + + +134 +01 +Location and identification sequences +301037 +(Land station for vertical soundings) +301022 +Latitude/longitude (high accuracy), height of station +Operational + + +135 +01 +Location and identification sequences +301038 +(Land station for vertical soundings) +301001 +WMO block and station numbers +Operational + + +136 +01 +Location and identification sequences +301038 +(Land station for vertical soundings) +002011 +Radiosonde type +Operational + + +137 +01 +Location and identification sequences +301038 +(Land station for vertical soundings) +002012 +Radiosonde computational method +Operational + + +138 +01 +Location and identification sequences +301038 +(Land station for vertical soundings) +301011 +Year, month, day +Operational + + +139 +01 +Location and identification sequences +301038 +(Land station for vertical soundings) +301012 +Hour, minute +Operational + + +140 +01 +Location and identification sequences +301038 +(Land station for vertical soundings) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +141 +01 +Location and identification sequences +301039 +(Ship for vertical soundings) +301003 +Ship's call sign and motion +Operational + + +142 +01 +Location and identification sequences +301039 +(Ship for vertical soundings) +002011 +Radiosonde type +Operational + + +143 +01 +Location and identification sequences +301039 +(Ship for vertical soundings) +002012 +Radiosonde computational method +Operational + + +144 +01 +Location and identification sequences +301039 +(Ship for vertical soundings) +301011 +Year, month, day +Operational + + +145 +01 +Location and identification sequences +301039 +(Ship for vertical soundings) +301012 +Hour, minute +Operational + + +146 +01 +Location and identification sequences +301039 +(Ship for vertical soundings) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +147 +01 +Location and identification sequences +301040 +(Ship for vertical soundings) +301003 +Ship's call sign and motion +Operational + + +148 +01 +Location and identification sequences +301040 +(Ship for vertical soundings) +002011 +Radiosonde type +Operational + + +149 +01 +Location and identification sequences +301040 +(Ship for vertical soundings) +002012 +Radiosonde computational method +Operational + + +150 +01 +Location and identification sequences +301040 +(Ship for vertical soundings) +301011 +Year, month, day +Operational + + +151 +01 +Location and identification sequences +301040 +(Ship for vertical soundings) +301012 +Hour, minute +Operational + + +152 +01 +Location and identification sequences +301040 +(Ship for vertical soundings) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +153 +01 +Location and identification sequences +301041 +(Satellite identifier, instrument, data-processing technique, date/time) +001007 +Satellite identifier +Operational + + +154 +01 +Location and identification sequences +301041 +(Satellite identifier, instrument, data-processing technique, date/time) +002021 +Satellite instrument data used in processing +Operational + + +155 +01 +Location and identification sequences +301041 +(Satellite identifier, instrument, data-processing technique, date/time) +002022 +Satellite data-processing technique used +Operational + + +156 +01 +Location and identification sequences +301041 +(Satellite identifier, instrument, data-processing technique, date/time) +301011 +Year, month, day +Operational + + +157 +01 +Location and identification sequences +301041 +(Satellite identifier, instrument, data-processing technique, date/time) +301012 +Hour, minute +Operational + + +158 +01 +Location and identification sequences +301042 +(Satellite identifier, instrument, data-processing technique, date/time, location) +301041 +Satellite identifier, instrument, data-processing technique, date/time +Operational + + +159 +01 +Location and identification sequences +301042 +(Satellite identifier, instrument, data-processing technique, date/time, location) +301021 +Latitude/longitude (high accuracy) +Operational + + +160 +01 +Location and identification sequences +301043 +(Satellite identifier, wind computation method, date/time, location) +001007 +Satellite identifier +Operational + + +161 +01 +Location and identification sequences +301043 +(Satellite identifier, wind computation method, date/time, location) +002023 +Satellite-derived wind computation method +Operational + + +162 +01 +Location and identification sequences +301043 +(Satellite identifier, wind computation method, date/time, location) +301011 +Year, month, day +Operational + + +163 +01 +Location and identification sequences +301043 +(Satellite identifier, wind computation method, date/time, location) +301013 +Hour, minute, second +Operational + + +164 +01 +Location and identification sequences +301043 +(Satellite identifier, wind computation method, date/time, location) +301021 +Latitude/longitude (high accuracy) +Operational + + +165 +01 +Location and identification sequences +301044 +(Satellite identifier, humidity computation method, date/time, location) +001007 +Satellite identifier +Operational + + +166 +01 +Location and identification sequences +301044 +(Satellite identifier, humidity computation method, date/time, location) +002024 +Integrated mean humidity computational method +Operational + + +167 +01 +Location and identification sequences +301044 +(Satellite identifier, humidity computation method, date/time, location) +301011 +Year, month, day +Operational + + +168 +01 +Location and identification sequences +301044 +(Satellite identifier, humidity computation method, date/time, location) +301013 +Hour, minute, second +Operational + + +169 +01 +Location and identification sequences +301044 +(Satellite identifier, humidity computation method, date/time, location) +301021 +Latitude/longitude (high accuracy) +Operational + + +170 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +301011 +Year, month, day +Operational + + +171 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +301012 +Hour, minute +Operational + + +172 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +201138 +Change data width +16 bits long +Operational + + +173 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +202131 +Change scale +Scale: 3 +Operational + + +174 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +004006 +Second +Operational + + +175 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +201000 +Change data width +Cancel +Operational + + +176 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +202000 +Change scale +Cancel +Operational + + +177 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +304030 +Location of platform +Relative to the Earth’s centre +Operational + + +178 +01 +Location and identification sequences +301045 +(Satellite location and velocity) +304031 +Speed of platform +Relative to the Earth’s centre +Operational + + +179 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +001007 +Satellite identifier +Operational + + +180 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +001012 +Direction of motion of moving observing platform +Operational + + +181 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +002048 +Satellite sensor indicator +Operational + + +182 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +021119 +Wind scatterometer geophysical model function +Operational + + +183 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +025060 +Software identification +Operational + + +184 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +202124 +Change scale +Operational + + +185 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +002026 +Cross-track resolution +Operational + + +186 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +002027 +Along-track resolution +Operational + + +187 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +202000 +Change scale +Cancel +Operational + + +188 +01 +Location and identification sequences +301046 +(Satellite identifier, direction of motion, sensor, model function, software, resolution) +005040 +Orbit number +Operational + + +189 +01 +Location and identification sequences +301047 +(ERS product header) +001007 +Satellite identifier +Operational + + +190 +01 +Location and identification sequences +301047 +(ERS product header) +025060 +Software identification +Operational + + +191 +01 +Location and identification sequences +301047 +(ERS product header) +001033 +Identification of originating/generating centre +Operational + + +192 +01 +Location and identification sequences +301047 +(ERS product header) +001034 +Identification of originating/generating sub-centre +Operational + + +193 +01 +Location and identification sequences +301047 +(ERS product header) +001012 +Direction of motion of moving observing platform +Operational + + +194 +01 +Location and identification sequences +301047 +(ERS product header) +301045 +Satellite location and velocity +Operational + + +195 +01 +Location and identification sequences +301047 +(ERS product header) +002021 +Satellite instrument data used in processing +Operational + + +196 +01 +Location and identification sequences +301047 +(ERS product header) +301011 +Year, month, day +Operational + + +197 +01 +Location and identification sequences +301047 +(ERS product header) +301012 +Hour, minute +Operational + + +198 +01 +Location and identification sequences +301047 +(ERS product header) +201138 +Change data width +16 bits long +Operational + + +199 +01 +Location and identification sequences +301047 +(ERS product header) +202131 +Change scale +Scale: 3 +Operational + + +200 +01 +Location and identification sequences +301047 +(ERS product header) +004006 +Second +Operational + + +201 +01 +Location and identification sequences +301047 +(ERS product header) +201000 +Change data width +Cancel +Operational + + +202 +01 +Location and identification sequences +301047 +(ERS product header) +202000 +Change scale +Cancel +Operational + + +203 +01 +Location and identification sequences +301047 +(ERS product header) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +204 +01 +Location and identification sequences +301048 +(Radar parameters) +002104 +Antenna polarization +Operational + + +205 +01 +Location and identification sequences +301048 +(Radar parameters) +002121 +Mean frequency +Operational + + +206 +01 +Location and identification sequences +301048 +(Radar parameters) +002113 +Number of azimuth looks +Operational + + +207 +01 +Location and identification sequences +301048 +(Radar parameters) +002026 +Cross-track resolution +Operational + + +208 +01 +Location and identification sequences +301048 +(Radar parameters) +002027 +Along-track resolution +Operational + + +209 +01 +Location and identification sequences +301048 +(Radar parameters) +002111 +Radar incidence angle +Operational + + +210 +01 +Location and identification sequences +301048 +(Radar parameters) +002140 +Satellite radar beam azimuth angle +Operational + + +211 +01 +Location and identification sequences +301048 +(Radar parameters) +202127 +Change scale +Scale: -1 +Operational + + +212 +01 +Location and identification sequences +301048 +(Radar parameters) +001013 +Speed of motion of moving observing platform +Radar platform velocity +Operational + + +213 +01 +Location and identification sequences +301048 +(Radar parameters) +202126 +Change scale +Scale: -2 +Operational + + +214 +01 +Location and identification sequences +301048 +(Radar parameters) +007001 +Height of station +Radar platform altitude +Operational + + +215 +01 +Location and identification sequences +301048 +(Radar parameters) +202000 +Change scale +Cancel +Operational + + +216 +01 +Location and identification sequences +301048 +(Radar parameters) +025010 +Clutter treatment +Operational + + +217 +01 +Location and identification sequences +301048 +(Radar parameters) +021064 +Clutter noise estimate +Operational + + +218 +01 +Location and identification sequences +301049 +(Radar beam data) +002111 +Radar incidence angle +Operational + + +219 +01 +Location and identification sequences +301049 +(Radar beam data) +002112 +Radar look angle +Operational + + +220 +01 +Location and identification sequences +301049 +(Radar beam data) +021062 +Backscatter +Operational + + +221 +01 +Location and identification sequences +301049 +(Radar beam data) +021063 +Radiometric resolution (noise value) +Operational + + +222 +01 +Location and identification sequences +301049 +(Radar beam data) +021065 +Missing packet counter +Operational + + +223 +01 +Location and identification sequences +301051 +(Flight number, navigational system, date/time, location, phase of flight) +001006 +Aircraft flight number +Operational + + +224 +01 +Location and identification sequences +301051 +(Flight number, navigational system, date/time, location, phase of flight) +002061 +Aircraft navigational system +Operational + + +225 +01 +Location and identification sequences +301051 +(Flight number, navigational system, date/time, location, phase of flight) +301011 +Year, month, day +Operational + + +226 +01 +Location and identification sequences +301051 +(Flight number, navigational system, date/time, location, phase of flight) +301012 +Hour, minute +Operational + + +227 +01 +Location and identification sequences +301051 +(Flight number, navigational system, date/time, location, phase of flight) +301021 +Latitude/longitude (high accuracy) +Operational + + +228 +01 +Location and identification sequences +301051 +(Flight number, navigational system, date/time, location, phase of flight) +008004 +Phase of aircraft flight +Operational + + +229 +01 +Location and identification sequences +301055 +(Identification and type of station, date/time, location (high accuracy), movement) +001005 +Buoy/platform identifier +Operational + + +230 +01 +Location and identification sequences +301055 +(Identification and type of station, date/time, location (high accuracy), movement) +002001 +Type of station +Operational + + +231 +01 +Location and identification sequences +301055 +(Identification and type of station, date/time, location (high accuracy), movement) +301011 +Year, month, day +Operational + + +232 +01 +Location and identification sequences +301055 +(Identification and type of station, date/time, location (high accuracy), movement) +301012 +Hour, minute +Operational + + +233 +01 +Location and identification sequences +301055 +(Identification and type of station, date/time, location (high accuracy), movement) +301021 +Latitude/longitude (high accuracy) +Operational + + +234 +01 +Location and identification sequences +301055 +(Identification and type of station, date/time, location (high accuracy), movement) +001012 +Direction of motion of moving observing platform +Operational + + +235 +01 +Location and identification sequences +301055 +(Identification and type of station, date/time, location (high accuracy), movement) +001014 +Platform drift speed (high precision) +Operational + + +236 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +001087 +WMO marine observing platform extended identifier +WMO number (extended 7 digit identifier) +Operational + + +237 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +001011 +Ship or mobile land station identifier +Call sign (where allocated) +Operational + + +238 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +001015 +Station or site name +Platform name +Operational + + +239 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +002008 +Type of offshore platform +Operational + + +240 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +002001 +Type of station +Operational + + +241 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +301011 +Year, month, day +Operational + + +242 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +301012 +Hour, minute +Operational + + +243 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +301021 +Latitude/longitude (high accuracy) +Operational + + +244 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +007030 +Height of station ground above mean sea level +Height of station platform above mean sea level +Operational + + +245 +01 +Location and identification sequences +301056 +(Sequence for platform identification, type, time and location of the observation report) +007031 +Height of barometer above mean sea level +Operational + + +246 +01 +Location and identification sequences +301058 +(Universal lightning event) +Date/time of lightning event +301011 +Year, month, day +Operational + + +247 +01 +Location and identification sequences +301058 +(Universal lightning event) +Date/time of lightning event +301012 +Hour, minute +Operational + + +248 +01 +Location and identification sequences +301058 +(Universal lightning event) +Date/time of lightning event +201152 +Change data width +Operational + + +249 +01 +Location and identification sequences +301058 +(Universal lightning event) +Date/time of lightning event +202135 +Change scale +Operational + + +250 +01 +Location and identification sequences +301058 +(Universal lightning event) +Date/time of lightning event +004006 +Second +Operational + + +251 +01 +Location and identification sequences +301058 +(Universal lightning event) +Date/time of lightning event +202000 +Change scale +Operational + + +252 +01 +Location and identification sequences +301058 +(Universal lightning event) +Date/time of lightning event +201000 +Change data width +Operational + + +253 +01 +Location and identification sequences +301058 +(Universal lightning event) +Horizontal and vertical coordinates of lightning event +301021 +Latitude/longitude (high accuracy) +Operational + + +254 +01 +Location and identification sequences +301058 +(Universal lightning event) +Horizontal and vertical coordinates of lightning event +020111 +x-axis error ellipse major component +Operational + + +255 +01 +Location and identification sequences +301058 +(Universal lightning event) +Horizontal and vertical coordinates of lightning event +020112 +y-axis error ellipse minor component +Operational + + +256 +01 +Location and identification sequences +301058 +(Universal lightning event) +Horizontal and vertical coordinates of lightning event +020113 +z-axis error ellipse component +Operational + + +257 +01 +Location and identification sequences +301058 +(Universal lightning event) +Horizontal and vertical coordinates of lightning event +020114 +Angle of x-axis in error ellipse +Operational + + +258 +01 +Location and identification sequences +301058 +(Universal lightning event) +Horizontal and vertical coordinates of lightning event +020115 +Angle of z-axis in error ellipse +Operational + + +259 +01 +Location and identification sequences +301058 +(Universal lightning event) +Horizontal and vertical coordinates of lightning event +020116 +Emission height of cloud stroke +Operational + + +260 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020117 +Amplitude of lightning strike +Operational + + +261 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020118 +Lightning detection error +Operational + + +262 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020119 +Lightning discharge polarity +Operational + + +263 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +025035 +Decision method for polarity +V or A +Operational + + +264 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020121 +Threshold value for polarity decision +Operational + + +265 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020122 +Threshold value for polarity decision +Operational + + +266 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020123 +Minimum threshold for detection +Operational + + +267 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020124 +Lightning stroke or flash +Operational + + +268 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +025175 +Modified residual +Operational + + +269 +01 +Location and identification sequences +301058 +(Universal lightning event) +Emission information +020023 +Other weather phenomena +Cloud to ground or cloud to cloud identification +Operational + + +270 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +025063 +Central processor or system identifier +Operational + + +271 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +202136 +Change scale +Operational + + +272 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +201136 +Change data width +Operational + + +273 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +002121 +Mean frequency +Define centre frequency, if used +Operational + + +274 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +201000 +Change data width +Operational + + +275 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +202000 +Change scale +Operational + + +276 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +025061 +Software identification and version number +Operational + + +277 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +002184 +Type of lightning detection sensor +Operational + + +278 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +002189 +Capability to discriminate lightning strikes +Operational + + +279 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +025036 +Atmospherics location method +Operational + + +280 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +101000 +Delayed replication of 1 descriptor +Operational + + +281 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +031002 +Extended delayed descriptor replication factor +Number of sensors contributing +Operational + + +282 +01 +Location and identification sequences +301058 +(Universal lightning event) +Sensor processing +301059 +Identification of sensor site and instrumentation +Operational + + +283 +01 +Location and identification sequences +301059 +(Identification of sensor site and instrumentation) +301021 +Latitude/longitude (high accuracy) +Sensor +Operational + + +284 +01 +Location and identification sequences +301059 +(Identification of sensor site and instrumentation) +007030 +Height of station ground above mean sea level +Operational + + +285 +01 +Location and identification sequences +301059 +(Identification of sensor site and instrumentation) +007032 +Height of sensor above local ground (or deck of marine platform) +Sensor for lightning +Operational + + +286 +01 +Location and identification sequences +301062 +(Radar location(s)) +101000 +Delayed replication of 1 descriptor +Operational + + +287 +01 +Location and identification sequences +301062 +(Radar location(s)) +031001 +Delayed descriptor replication factor +Operational + + +288 +01 +Location and identification sequences +301062 +(Radar location(s)) +301001 +WMO block and station numbers +Operational + + +289 +01 +Location and identification sequences +301065 +(ACARS identification) +001006 +Aircraft flight number +(see Note 10) +Operational + + +290 +01 +Location and identification sequences +301065 +(ACARS identification) +001008 +Aircraft registration number or other identification +(see Note 10) +Operational + + +291 +01 +Location and identification sequences +301065 +(ACARS identification) +002001 +Type of station +Operational + + +292 +01 +Location and identification sequences +301065 +(ACARS identification) +002002 +Type of instrumentation for wind measurement +Operational + + +293 +01 +Location and identification sequences +301065 +(ACARS identification) +002005 +Precision of temperature observation +Operational + + +294 +01 +Location and identification sequences +301065 +(ACARS identification) +002062 +Type of aircraft data relay system +Operational + + +295 +01 +Location and identification sequences +301065 +(ACARS identification) +002070 +Original specification of latitude/longitude +Operational + + +296 +01 +Location and identification sequences +301065 +(ACARS identification) +002065 +ACARS ground-receiving station +Operational + + +297 +01 +Location and identification sequences +301066 +(ACARS location) +301011 +Year, month, day +Operational + + +298 +01 +Location and identification sequences +301066 +(ACARS location) +301013 +Hour, minute, second +Operational + + +299 +01 +Location and identification sequences +301066 +(ACARS location) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +300 +01 +Location and identification sequences +301066 +(ACARS location) +007004 +Pressure +Operational + + +301 +01 +Location and identification sequences +301066 +(ACARS location) +002064 +Aircraft roll angle quality +Operational + + +302 +01 +Location and identification sequences +301066 +(ACARS location) +008004 +Phase of aircraft flight +Operational + + +303 +01 +Location and identification sequences +301070 +(Ozone instrumentation - Brewer spectrophotometer) +002143 +Ozone instrument type +Operational + + +304 +01 +Location and identification sequences +301070 +(Ozone instrumentation - Brewer spectrophotometer) +002142 +Ozone instrument serial number/identification +Operational + + +305 +01 +Location and identification sequences +301070 +(Ozone instrumentation - Brewer spectrophotometer) +002144 +Light source type for Brewer spectrophotometer +Operational + + +306 +01 +Location and identification sequences +301071 +(Satellite identifier/Generating resolution) +001007 +Satellite identifier +Operational + + +307 +01 +Location and identification sequences +301071 +(Satellite identifier/Generating resolution) +001031 +Identification of originating/generating centre +Operational + + +308 +01 +Location and identification sequences +301071 +(Satellite identifier/Generating resolution) +002020 +Satellite classification +Operational + + +309 +01 +Location and identification sequences +301071 +(Satellite identifier/Generating resolution) +002028 +Segment size at nadir in x-direction +Operational + + +310 +01 +Location and identification sequences +301071 +(Satellite identifier/Generating resolution) +002029 +Segment size at nadir in y-direction +Operational + + +311 +01 +Location and identification sequences +301072 +(Satellite identification) +301071 +Satellite identifier/Generating resolution +Operational + + +312 +01 +Location and identification sequences +301072 +(Satellite identification) +301011 +Year, month, day +Operational + + +313 +01 +Location and identification sequences +301072 +(Satellite identification) +301013 +Hour, minute, second +Operational + + +314 +01 +Location and identification sequences +301072 +(Satellite identification) +301021 +Latitude/longitude (high accuracy) +Operational + + +315 +01 +Location and identification sequences +301074 +(Ozone instrumentation - Dobson spectrophotometer) +002143 +Ozone instrument type +Operational + + +316 +01 +Location and identification sequences +301074 +(Ozone instrumentation - Dobson spectrophotometer) +002142 +Ozone instrument serial number/identification +Operational + + +317 +01 +Location and identification sequences +301074 +(Ozone instrumentation - Dobson spectrophotometer) +002145 +Wavelength setting for Dobson instruments +Operational + + +318 +01 +Location and identification sequences +301074 +(Ozone instrumentation - Dobson spectrophotometer) +002146 +Source conditions for Dobson instruments +Operational + + +319 +01 +Location and identification sequences +301075 +(Sounding identification) +301001 +WMO block and station numbers +Operational + + +320 +01 +Location and identification sequences +301075 +(Sounding identification) +001015 +Station or site name +Operational + + +321 +01 +Location and identification sequences +301075 +(Sounding identification) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +322 +01 +Location and identification sequences +301075 +(Sounding identification) +008021 +Time significance += 18 Launch time +Operational + + +323 +01 +Location and identification sequences +301075 +(Sounding identification) +301011 +Year, month, day +Operational + + +324 +01 +Location and identification sequences +301075 +(Sounding identification) +301012 +Hour, minute +Operational + + +325 +01 +Location and identification sequences +301076 +(Ozone sounding instrumentation) +002011 +Radiosonde type +Operational + + +326 +01 +Location and identification sequences +301076 +(Ozone sounding instrumentation) +002143 +Ozone instrument type +Operational + + +327 +01 +Location and identification sequences +301076 +(Ozone sounding instrumentation) +002142 +Ozone instrument serial number/identification +Operational + + +328 +01 +Location and identification sequences +301089 +(National station identification) +001101 +State identifier +Operational + + +329 +01 +Location and identification sequences +301089 +(National station identification) +001102 +National station number +Operational + + +330 +01 +Location and identification sequences +301090 +(Surface station identification; time, horizontal and vertical coordinates) +301004 +Surface station identification +Operational + + +331 +01 +Location and identification sequences +301090 +(Surface station identification; time, horizontal and vertical coordinates) +301011 +Year, month, day +Operational + + +332 +01 +Location and identification sequences +301090 +(Surface station identification; time, horizontal and vertical coordinates) +301012 +Hour, minute +Operational + + +333 +01 +Location and identification sequences +301090 +(Surface station identification; time, horizontal and vertical coordinates) +301021 +Latitude/longitude (high accuracy) +Operational + + +334 +01 +Location and identification sequences +301090 +(Surface station identification; time, horizontal and vertical coordinates) +007030 +Height of station ground above mean sea level +Operational + + +335 +01 +Location and identification sequences +301090 +(Surface station identification; time, horizontal and vertical coordinates) +007031 +Height of barometer above mean sea level +Operational + + +336 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002180 +Main present weather detecting system +Operational + + +337 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002181 +Supplementary present weather sensor +Operational + + +338 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002182 +Visibility measurement system +Operational + + +339 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002183 +Cloud detection system +Operational + + +340 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002184 +Type of lightning detection sensor +Operational + + +341 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002179 +Type of sky condition algorithm +Operational + + +342 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002186 +Capability to detect precipitation phenomena +Operational + + +343 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002187 +Capability to detect other weather phenomena +Operational + + +344 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002188 +Capability to detect obscuration +Operational + + +345 +01 +Location and identification sequences +301091 +(Surface station instrumentation) +002189 +Capability to discriminate lightning strikes +Operational + + +346 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +001011 +Ship or mobile land station identifier +Operational + + +347 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +001003 +WMO Region number/geographical area +Operational + + +348 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +002001 +Type of station +Operational + + +349 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +301011 +Year, month, day +Operational + + +350 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +301012 +Hour, minute +Operational + + +351 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +301021 +Latitude/longitude (high accuracy) +Operational + + +352 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +007030 +Height of station ground above mean sea level +Operational + + +353 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +007031 +Height of barometer above mean sea level +Operational + + +354 +01 +Location and identification sequences +301092 +(Mobile surface station identification, date/time, horizontal and vertical coordinates) +033024 +Station elevation quality mark (for mobile stations) +Operational + + +355 +01 +Location and identification sequences +301093 +(Ship identification, movement, date/time, horizontal and vertical coordinates) +301036 +Ship +Ship identification +Operational + + +356 +01 +Location and identification sequences +301093 +(Ship identification, movement, date/time, horizontal and vertical coordinates) +007030 +Height of station ground above mean sea level +Operational + + +357 +01 +Location and identification sequences +301093 +(Ship identification, movement, date/time, horizontal and vertical coordinates) +007031 +Height of barometer above mean sea level +Operational + + +358 +01 +Location and identification sequences +301110 +(Identification of launch site and instrumentation for wind measurements) +301001 +WMO block and station numbers +Operational + + +359 +01 +Location and identification sequences +301110 +(Identification of launch site and instrumentation for wind measurements) +001011 +Ship or mobile land station identifier +Operational + + +360 +01 +Location and identification sequences +301110 +(Identification of launch site and instrumentation for wind measurements) +002011 +Radiosonde type +Operational + + +361 +01 +Location and identification sequences +301110 +(Identification of launch site and instrumentation for wind measurements) +002014 +Tracking technique/status of system used +Operational + + +362 +01 +Location and identification sequences +301110 +(Identification of launch site and instrumentation for wind measurements) +002003 +Type of measuring equipment used +Operational + + +363 +01 +Location and identification sequences +301111 +(Identification of launch site and instrumentation for P, T, U and wind measurements) +301001 +WMO block and station numbers +Operational + + +364 +01 +Location and identification sequences +301111 +(Identification of launch site and instrumentation for P, T, U and wind measurements) +001011 +Ship or mobile land station identifier +Operational + + +365 +01 +Location and identification sequences +301111 +(Identification of launch site and instrumentation for P, T, U and wind measurements) +002011 +Radiosonde type +Operational + + +366 +01 +Location and identification sequences +301111 +(Identification of launch site and instrumentation for P, T, U and wind measurements) +002013 +Solar and infrared radiation correction +Operational + + +367 +01 +Location and identification sequences +301111 +(Identification of launch site and instrumentation for P, T, U and wind measurements) +002014 +Tracking technique/status of system used +Operational + + +368 +01 +Location and identification sequences +301111 +(Identification of launch site and instrumentation for P, T, U and wind measurements) +002003 +Type of measuring equipment used +Operational + + +369 +01 +Location and identification sequences +301112 +(Identification of launch point and instrumentation of dropsonde) +001006 +Aircraft flight number +Operational + + +370 +01 +Location and identification sequences +301112 +(Identification of launch point and instrumentation of dropsonde) +002011 +Radiosonde type +Operational + + +371 +01 +Location and identification sequences +301112 +(Identification of launch point and instrumentation of dropsonde) +002013 +Solar and infrared radiation correction +Operational + + +372 +01 +Location and identification sequences +301112 +(Identification of launch point and instrumentation of dropsonde) +002014 +Tracking technique/status of system used +Operational + + +373 +01 +Location and identification sequences +301112 +(Identification of launch point and instrumentation of dropsonde) +002003 +Type of measuring equipment used +Operational + + +374 +01 +Location and identification sequences +301113 +(Date/time of launch) (see Note 11) +008021 +Time significance += 18 Launch time +Operational + + +375 +01 +Location and identification sequences +301113 +(Date/time of launch) +301011 +Year, month, day +Launch time +Operational + + +376 +01 +Location and identification sequences +301113 +(Date/time of launch) +301013 +Hour, minute, second +Launch time +Operational + + +377 +01 +Location and identification sequences +301114 +(Horizontal and vertical coordinates of launch site) +301021 +Latitude/longitude (high accuracy) +Operational + + +378 +01 +Location and identification sequences +301114 +(Horizontal and vertical coordinates of launch site) +007030 +Height of station ground above mean sea level +Operational + + +379 +01 +Location and identification sequences +301114 +(Horizontal and vertical coordinates of launch site) +007031 +Height of barometer above mean sea level +Operational + + +380 +01 +Location and identification sequences +301114 +(Horizontal and vertical coordinates of launch site) +007007 +Height +Release of sonde above mean sea level +Operational + + +381 +01 +Location and identification sequences +301114 +(Horizontal and vertical coordinates of launch site) +033024 +Station elevation quality mark (for mobile stations) +Operational + + +382 +01 +Location and identification sequences +301120 +(Radiosonde abbreviated header and launch information) +301001 +WMO block and station numbers +Operational + + +383 +01 +Location and identification sequences +301120 +(Radiosonde abbreviated header and launch information) +001094 +WBAN number +Operational + + +384 +01 +Location and identification sequences +301120 +(Radiosonde abbreviated header and launch information) +002011 +Radiosonde type +Operational + + +385 +01 +Location and identification sequences +301120 +(Radiosonde abbreviated header and launch information) +301121 +Radiosonde launch point location +Operational + + +386 +01 +Location and identification sequences +301121 +(Radiosonde launch point location) +008041 +Data significance += 3 Balloon launch point +Operational + + +387 +01 +Location and identification sequences +301121 +(Radiosonde launch point location) +301122 +Date/time (to hundredths of second) +Operational + + +388 +01 +Location and identification sequences +301121 +(Radiosonde launch point location) +301021 +Latitude/longitude (high accuracy) +Operational + + +389 +01 +Location and identification sequences +301121 +(Radiosonde launch point location) +007031 +Height of barometer above mean sea level +Operational + + +390 +01 +Location and identification sequences +301121 +(Radiosonde launch point location) +007007 +Height +Release of radiosonde above mean sea level +Operational + + +391 +01 +Location and identification sequences +301122 +(Date/time (to hundredths of second)) (see Note 11) +301011 +Year, month, day +Operational + + +392 +01 +Location and identification sequences +301122 +(Date/time (to hundredths of second)) +301012 +Hour, minute +Operational + + +393 +01 +Location and identification sequences +301122 +(Date/time (to hundredths of second)) +201135 +Change data width +Operational + + +394 +01 +Location and identification sequences +301122 +(Date/time (to hundredths of second)) +202130 +Change scale +Operational + + +395 +01 +Location and identification sequences +301122 +(Date/time (to hundredths of second)) +004006 +Second +Operational + + +396 +01 +Location and identification sequences +301122 +(Date/time (to hundredths of second)) +202000 +Change scale +Cancel +Operational + + +397 +01 +Location and identification sequences +301122 +(Date/time (to hundredths of second)) +201000 +Change data width +Cancel +Operational + + +398 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +102002 +Replicate 2 descriptors 2 times +Operational + + +399 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +008041 +Data significance += 0 Parent site, = 1 Observation site +Operational + + +400 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001062 +Short ICAO location indicator +Operational + + +401 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +301001 +WMO block and station numbers +Operational + + +402 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001094 +WBAN number +Operational + + +403 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002011 +Radiosonde type +Operational + + +404 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001018 +Short station or site name +Operational + + +405 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001095 +Observer identification +Operational + + +406 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +025061 +Software identification and version number +Operational + + +407 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +025068 +Number of archive recomputes +Operational + + +408 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001082 +Radiosonde ascension number +Operational + + +409 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001083 +Radiosonde release number +Operational + + +410 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001081 +Radiosonde serial number +Operational + + +411 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002067 +Radiosonde operating frequency +Operational + + +412 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002066 +Radiosonde ground receiving system +Operational + + +413 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002014 +Tracking technique/status of system used +Operational + + +414 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +025067 +Radiosonde release point pressure correction +Operational + + +415 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +025065 +Orientation correction (azimuth) +Operational + + +416 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +025066 +Orientation correction (elevation) +Operational + + +417 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002095 +Type of pressure sensor +Operational + + +418 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002096 +Type of temperature sensor +Operational + + +419 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002097 +Type of humidity sensor +Operational + + +420 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002016 +Radiosonde configuration +Operational + + +421 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002083 +Type of balloon shelter +Operational + + +422 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002080 +Balloon manufacturer +Operational + + +423 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002081 +Type of balloon +Operational + + +424 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +001093 +Balloon lot number +Operational + + +425 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002084 +Type of gas used in balloon +Operational + + +426 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002085 +Amount of gas used in balloon +Operational + + +427 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002086 +Balloon flight train length +Operational + + +428 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +002082 +Weight of balloon +Operational + + +429 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +008041 +Data significance += 2 Balloon manufacture date +Operational + + +430 +01 +Location and identification sequences +301123 +(Radiosonde full header information) +301011 +Year, month, day +Operational + + +431 +01 +Location and identification sequences +301125 +(ASCAT header information) +001033 +Identification of originating/generating centre +Operational + + +432 +01 +Location and identification sequences +301125 +(ASCAT header information) +001034 +Identification of originating/generating sub-centre +Operational + + +433 +01 +Location and identification sequences +301125 +(ASCAT header information) +025060 +Software identification +Operational + + +434 +01 +Location and identification sequences +301125 +(ASCAT header information) +001007 +Satellite identifier +Operational + + +435 +01 +Location and identification sequences +301125 +(ASCAT header information) +002019 +Satellite instruments +Operational + + +436 +01 +Location and identification sequences +301125 +(ASCAT header information) +001012 +Direction of motion of moving observing platform +Operational + + +437 +01 +Location and identification sequences +301126 +(Sequence for representation of moored buoy identification) +001087 +WMO marine observing platform extended identifier +Operational + + +438 +01 +Location and identification sequences +301126 +(Sequence for representation of moored buoy identification) +001015 +Station or site name +Operational + + +439 +01 +Location and identification sequences +301126 +(Sequence for representation of moored buoy identification) +002149 +Type of data buoy +Operational + + +440 +01 +Location and identification sequences +301126 +(Sequence for representation of moored buoy identification) +301011 +Year, month, day +Operational + + +441 +01 +Location and identification sequences +301126 +(Sequence for representation of moored buoy identification) +301012 +Hour, minute +Operational + + +442 +01 +Location and identification sequences +301126 +(Sequence for representation of moored buoy identification) +301021 +Latitude/longitude (high accuracy) +Operational + + +443 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +001081 +Radiosonde serial number +Operational + + +444 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +001082 +Radiosonde ascension number +Operational + + +445 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +001083 +Radiosonde release number +Operational + + +446 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +001095 +Observer identification +Operational + + +447 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002015 +Radiosonde completeness +Operational + + +448 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002016 +Radiosonde configuration +Operational + + +449 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002017 +Correction algorithms for humidity measurements +Operational + + +450 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002066 +Radiosonde ground receiving system +Operational + + +451 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002067 +Radiosonde operating frequency +Operational + + +452 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002080 +Balloon manufacturer +Operational + + +453 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002081 +Type of balloon +Operational + + +454 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002082 +Weight of balloon +Operational + + +455 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002083 +Type of balloon shelter +Operational + + +456 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002084 +Type of gas used in balloon +Operational + + +457 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002085 +Amount of gas used in balloon +Operational + + +458 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002086 +Balloon flight train length +Operational + + +459 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002095 +Type of pressure sensor +Operational + + +460 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002096 +Type of temperature sensor +Operational + + +461 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002097 +Type of humidity sensor +Operational + + +462 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002103 +Radome +Operational + + +463 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +002191 +Geopotential height calculation +Operational + + +464 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +025061 +Software identification and version number +Operational + + +465 +01 +Location and identification sequences +301128 +(Additional information on radiosonde ascent) +035035 +Reason for termination +Reason for ascent termination +Operational + + +466 +01 +Location and identification sequences +301129 +(Observing satellite and instruments) +001007 +Satellite identifier +Operational + + +467 +01 +Location and identification sequences +301129 +(Observing satellite and instruments) +001031 +Identification of originating/generating centre +Operational + + +468 +01 +Location and identification sequences +301129 +(Observing satellite and instruments) +002019 +Satellite instruments +Operational + + +469 +01 +Location and identification sequences +301129 +(Observing satellite and instruments) +002020 +Satellite classification +Operational + + +470 +01 +Location and identification sequences +301130 +(High precision timestamp) +301011 +Year, month, day +Operational + + +471 +01 +Location and identification sequences +301130 +(High precision timestamp) +301012 +Hour, minute +Operational + + +472 +01 +Location and identification sequences +301130 +(High precision timestamp) +202131 +Change scale +Add 3 to scale +Operational + + +473 +01 +Location and identification sequences +301130 +(High precision timestamp) +201138 +Change data width +Add 10 to width +Operational + + +474 +01 +Location and identification sequences +301130 +(High precision timestamp) +004006 +Second +Operational + + +475 +01 +Location and identification sequences +301130 +(High precision timestamp) +201000 +Change scale +Cancel +Operational + + +476 +01 +Location and identification sequences +301130 +(High precision timestamp) +202000 +Change data width +Cancel +Operational + + +477 +01 +Location and identification sequences +301131 +(Pixel geolocation) +301021 +Latitude/longitude (high accuracy) +Operational + + +478 +01 +Location and identification sequences +301131 +(Pixel geolocation) +007024 +Satellite zenith angle +Operational + + +479 +01 +Location and identification sequences +301131 +(Pixel geolocation) +005021 +Bearing or azimuth +Operational + + +480 +01 +Location and identification sequences +301131 +(Pixel geolocation) +007025 +Solar zenith angle +Operational + + +481 +01 +Location and identification sequences +301131 +(Pixel geolocation) +005022 +Solar azimuth +Operational + + +482 +01 +Location and identification sequences +301132 +(Common header sequence) +301150 +WIGOS identifiers +Operational + + +483 +01 +Location and identification sequences +301132 +(Common header sequence) +301001 +WMO block and station numbers +Operational + + +484 +01 +Location and identification sequences +301132 +(Common header sequence) +301021 +Latitude/longitude (high accuracy) (see Note 12) +Sensor +(12) The latitude and longitude descriptors 0 05 001 and 0 06 001 indicate the position of the instrument and not the measurement itself (which is separately encoded in the associated data sequence). +Operational + + +485 +01 +Location and identification sequences +301132 +(Common header sequence) +007030 +Height of station ground above mean sea level +Operational + + +486 +01 +Location and identification sequences +301132 +(Common header sequence) +008021 +Time significance += 29 End of scan or time of ending +Operational + + +487 +01 +Location and identification sequences +301132 +(Common header sequence) +301011 +Year, month, day +Operational + + +488 +01 +Location and identification sequences +301132 +(Common header sequence) +301012 +Hour, minute +Operational + + +489 +01 +Location and identification sequences +301132 +(Common header sequence) +002006 +Upper air remote sensing instrument type +Operational + + +490 +01 +Location and identification sequences +301132 +(Common header sequence) +001079 +Unique identifier for the profile +Operational + + +491 +01 +Location and identification sequences +301132 +(Common header sequence) +001085 +Observing platform manufacturer's mode +Operational + + +492 +01 +Location and identification sequences +301150 +(WIGOS identifier) +001125 +WIGOS identifier series +Operational + + +493 +01 +Location and identification sequences +301150 +(WIGOS identifier) +001126 +WIGOS issuer of identifier +Operational + + +494 +01 +Location and identification sequences +301150 +(WIGOS identifier) +001127 +WIGOS issue number +Operational + + +495 +01 +Location and identification sequences +301150 +(WIGOS identifier) +001128 +WIGOS local identifier (character) +Operational + + +496 +02 +Meteorological sequences common to surface data +302001 +(Pressure and 3-hour pressure change) +010004 +Pressure +Station level +Operational + + +497 +02 +Meteorological sequences common to surface data +302001 +(Pressure and 3-hour pressure change) +010051 +Pressure reduced to mean sea level +Operational + + +498 +02 +Meteorological sequences common to surface data +302001 +(Pressure and 3-hour pressure change) +010061 +3-hour pressure change +Operational + + +499 +02 +Meteorological sequences common to surface data +302001 +(Pressure and 3-hour pressure change) +010063 +Characteristic of pressure tendency +Operational + + +500 +02 +Meteorological sequences common to surface data +302002 +(High altitude station) +010004 +Pressure +Station level +Operational + + +501 +02 +Meteorological sequences common to surface data +302002 +(High altitude station) +007004 +Pressure +Pressure level +Operational + + +502 +02 +Meteorological sequences common to surface data +302002 +(High altitude station) +010003 +Geopotential +Pressure level +Operational + + +503 +02 +Meteorological sequences common to surface data +302002 +(High altitude station) +010061 +3-hour pressure change +Operational + + +504 +02 +Meteorological sequences common to surface data +302002 +(High altitude station) +010063 +Characteristic of pressure tendency +Operational + + +505 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +011011 +Wind direction at 10 m +Operational + + +506 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +011012 +Wind speed at 10 m +Operational + + +507 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +012004 +Air temperature at 2 m +Operational + + +508 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +012006 +Dewpoint temperature at 2 m +Operational + + +509 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +013003 +Relative humidity +Operational + + +510 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +020001 +Horizontal visibility +Operational + + +511 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +020003 +Present weather +Operational + + +512 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +020004 +Past weather (1) +Operational + + +513 +02 +Meteorological sequences common to surface data +302003 +(Wind, temperature, humidity, visibility, weather) +020005 +Past weather (2) +Operational + + +514 +02 +Meteorological sequences common to surface data +302004 +(General cloud information) +020010 +Cloud cover (total) +Operational + + +515 +02 +Meteorological sequences common to surface data +302004 +(General cloud information) +008002 +Vertical significance (surface observations) +Operational + + +516 +02 +Meteorological sequences common to surface data +302004 +(General cloud information) +020011 +Cloud amount +Operational + + +517 +02 +Meteorological sequences common to surface data +302004 +(General cloud information) +020013 +Height of base of cloud +Operational + + +518 +02 +Meteorological sequences common to surface data +302004 +(General cloud information) +020012 +Cloud type +Operational + + +519 +02 +Meteorological sequences common to surface data +302004 +(General cloud information) +020012 +Cloud type +Operational + + +520 +02 +Meteorological sequences common to surface data +302004 +(General cloud information) +020012 +Cloud type +Operational + + +521 +02 +Meteorological sequences common to surface data +302005 +(Cloud layer) +008002 +Vertical significance (surface observations) +Operational + + +522 +02 +Meteorological sequences common to surface data +302005 +(Cloud layer) +020011 +Cloud amount +Operational + + +523 +02 +Meteorological sequences common to surface data +302005 +(Cloud layer) +020012 +Cloud type +Operational + + +524 +02 +Meteorological sequences common to surface data +302005 +(Cloud layer) +020013 +Height of base of cloud +Operational + + +525 +02 +Meteorological sequences common to surface data +302006 +(Pressure and 24-hour pressure change) +010004 +Pressure +Station level +Operational + + +526 +02 +Meteorological sequences common to surface data +302006 +(Pressure and 24-hour pressure change) +010051 +Pressure reduced to mean sea level +Operational + + +527 +02 +Meteorological sequences common to surface data +302006 +(Pressure and 24-hour pressure change) +010062 +24-hour pressure change +Operational + + +528 +02 +Meteorological sequences common to surface data +302006 +(Pressure and 24-hour pressure change) +010063 +Characteristic of pressure tendency +Operational + + +529 +02 +Meteorological sequences common to surface data +302011 +(Low altitude station) +302001 +Pressure and 3-hour pressure change +Operational + + +530 +02 +Meteorological sequences common to surface data +302011 +(Low altitude station) +302003 +Wind, temperature, humidity, visibility, weather +Operational + + +531 +02 +Meteorological sequences common to surface data +302011 +(Low altitude station) +302004 +General cloud information +Significant cloud layer +Operational + + +532 +02 +Meteorological sequences common to surface data +302012 +(High altitude station) +302002 +High altitude station +Pressure and pressure change +Operational + + +533 +02 +Meteorological sequences common to surface data +302012 +(High altitude station) +302003 +Wind, temperature, humidity, visibility, weather +Operational + + +534 +02 +Meteorological sequences common to surface data +302012 +(High altitude station) +302004 +General cloud information +Significant cloud layer +Operational + + +535 +02 +Meteorological sequences common to surface data +302013 +(Basic surface report) +302006 +Pressure and 24-hour pressure change +Operational + + +536 +02 +Meteorological sequences common to surface data +302013 +(Basic surface report) +302003 +Wind, temperature, humidity, visibility, weather +Operational + + +537 +02 +Meteorological sequences common to surface data +302013 +(Basic surface report) +101000 +Delayed replication of 1 descriptor +Operational + + +538 +02 +Meteorological sequences common to surface data +302013 +(Basic surface report) +031001 +Delayed descriptor replication factor +Operational + + +539 +02 +Meteorological sequences common to surface data +302013 +(Basic surface report) +302005 +Cloud layer +Operational + + +540 +02 +Meteorological sequences common to surface data +302021 +(Waves) +022001 +Direction of waves +Operational + + +541 +02 +Meteorological sequences common to surface data +302021 +(Waves) +022011 +Period of waves +Operational + + +542 +02 +Meteorological sequences common to surface data +302021 +(Waves) +022021 +Height of waves +Operational + + +543 +02 +Meteorological sequences common to surface data +302022 +(Wind waves) +022002 +Direction of wind waves +Operational + + +544 +02 +Meteorological sequences common to surface data +302022 +(Wind waves) +022012 +Period of wind waves +Operational + + +545 +02 +Meteorological sequences common to surface data +302022 +(Wind waves) +022022 +Height of wind waves +Operational + + +546 +02 +Meteorological sequences common to surface data +302023 +(Swell waves) +022003 +Direction of swell waves +Operational + + +547 +02 +Meteorological sequences common to surface data +302023 +(Swell waves) +022013 +Period of swell waves +Operational + + +548 +02 +Meteorological sequences common to surface data +302023 +(Swell waves) +022023 +Height of swell waves +Operational + + +549 +02 +Meteorological sequences common to surface data +302024 +(Wind and swell waves) +302022 +Wind waves +Operational + + +550 +02 +Meteorological sequences common to surface data +302024 +(Wind and swell waves) +101002 +Replicate 1 descriptor 2 times +Operational + + +551 +02 +Meteorological sequences common to surface data +302024 +(Wind and swell waves) +302023 +Swell waves +2 systems of swell +Operational + + +552 +02 +Meteorological sequences common to surface data +302031 +(Pressure information) +302001 +Pressure and 3-hour pressure change +Operational + + +553 +02 +Meteorological sequences common to surface data +302031 +(Pressure information) +010062 +24-hour pressure change +Operational + + +554 +02 +Meteorological sequences common to surface data +302031 +(Pressure information) +007004 +Pressure +Standard level +Operational + + +555 +02 +Meteorological sequences common to surface data +302031 +(Pressure information) +010009 +Geopotential height +Operational + + +556 +02 +Meteorological sequences common to surface data +302032 +(Temperature and humidity data) +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature and humidity measurement +Operational + + +557 +02 +Meteorological sequences common to surface data +302032 +(Temperature and humidity data) +012101 +Temperature/air temperature +Scale: 2 +Operational + + +558 +02 +Meteorological sequences common to surface data +302032 +(Temperature and humidity data) +012103 +Dewpoint temperature +Scale: 2 +Operational + + +559 +02 +Meteorological sequences common to surface data +302032 +(Temperature and humidity data) +013003 +Relative humidity +Operational + + +560 +02 +Meteorological sequences common to surface data +302033 +(Visibility data) +007032 +Height of sensor above local ground (or deck of marine platform) +Visibility measurement +Operational + + +561 +02 +Meteorological sequences common to surface data +302033 +(Visibility data) +020001 +Horizontal visibility +Operational + + +562 +02 +Meteorological sequences common to surface data +302034 +(Precipitation past 24 hours) +007032 +Height of sensor above local ground (or deck of marine platform) +Precipitation measurement +Operational + + +563 +02 +Meteorological sequences common to surface data +302034 +(Precipitation past 24 hours) +013023 +Total precipitation past 24 hours +Operational + + +564 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +302032 +Temperature and humidity data +Operational + + +565 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +302033 +Visibility data +Operational + + +566 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +302034 +Precipitation past 24 hours +Operational + + +567 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +568 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +302004 +General cloud information +Operational + + +569 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +570 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +031001 +Delayed descriptor replication factor +Operational + + +571 +02 +Meteorological sequences common to surface data +302035 +(Basic synoptic "instantaneous" data) +302005 +Cloud layer +Individual cloud layer or mass +Operational + + +572 +02 +Meteorological sequences common to surface data +302036 +(Clouds with bases below station level) +105000 +Delayed replication of 5 descriptors +Operational + + +573 +02 +Meteorological sequences common to surface data +302036 +(Clouds with bases below station level) +031001 +Delayed descriptor replication factor +Operational + + +574 +02 +Meteorological sequences common to surface data +302036 +(Clouds with bases below station level) +008002 +Vertical significance (surface observations) +Operational + + +575 +02 +Meteorological sequences common to surface data +302036 +(Clouds with bases below station level) +020011 +Cloud amount +Operational + + +576 +02 +Meteorological sequences common to surface data +302036 +(Clouds with bases below station level) +020012 +Cloud type +Operational + + +577 +02 +Meteorological sequences common to surface data +302036 +(Clouds with bases below station level) +020014 +Height of top of cloud +Operational + + +578 +02 +Meteorological sequences common to surface data +302036 +(Clouds with bases below station level) +020017 +Cloud top description +Operational + + +579 +02 +Meteorological sequences common to surface data +302037 +(State of ground, snow depth, ground minimum temperature) +020062 +State of the ground (with or without snow) +Operational + + +580 +02 +Meteorological sequences common to surface data +302037 +(State of ground, snow depth, ground minimum temperature) +013013 +Total snow depth +Operational + + +581 +02 +Meteorological sequences common to surface data +302037 +(State of ground, snow depth, ground minimum temperature) +012113 +Ground minimum temperature, past 12 hours +Scale: 2 +Operational + + +582 +02 +Meteorological sequences common to surface data +302038 +(Present and past weather) +020003 +Present weather +Operational + + +583 +02 +Meteorological sequences common to surface data +302038 +(Present and past weather) +004024 +Time period or displacement +Hours +Operational + + +584 +02 +Meteorological sequences common to surface data +302038 +(Present and past weather) +020004 +Past weather (1) +Operational + + +585 +02 +Meteorological sequences common to surface data +302038 +(Present and past weather) +020005 +Past weather (2) +Operational + + +586 +02 +Meteorological sequences common to surface data +302039 +(Sunshine data (from 1 hour and 24 hour period)) +004024 +Time period or displacement +Hours +Operational + + +587 +02 +Meteorological sequences common to surface data +302039 +(Sunshine data (from 1 hour and 24 hour period)) +014031 +Total sunshine +Operational + + +588 +02 +Meteorological sequences common to surface data +302040 +(Precipitation measurement) +007032 +Height of sensor above local ground (or deck of marine platform) +Precipitation measurement +Operational + + +589 +02 +Meteorological sequences common to surface data +302040 +(Precipitation measurement) +102002 +Replicate 2 descriptors 2 times +Operational + + +590 +02 +Meteorological sequences common to surface data +302040 +(Precipitation measurement) +004024 +Time period or displacement +Hours +Operational + + +591 +02 +Meteorological sequences common to surface data +302040 +(Precipitation measurement) +013011 +Total precipitation/total water equivalent +Operational + + +592 +02 +Meteorological sequences common to surface data +302041 +(Extreme temperature data) +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +Operational + + +593 +02 +Meteorological sequences common to surface data +302041 +(Extreme temperature data) +004024 +Time period or displacement +Operational + + +594 +02 +Meteorological sequences common to surface data +302041 +(Extreme temperature data) +004024 +Time period or displacement +(see Notes 1 and 2) +Operational + + +595 +02 +Meteorological sequences common to surface data +302041 +(Extreme temperature data) +012111 +Maximum temperature, at height and over period specified +Scale: 2 +Operational + + +596 +02 +Meteorological sequences common to surface data +302041 +(Extreme temperature data) +004024 +Time period or displacement +Operational + + +597 +02 +Meteorological sequences common to surface data +302041 +(Extreme temperature data) +004024 +Time period or displacement +(see Note 2) +Operational + + +598 +02 +Meteorological sequences common to surface data +302041 +(Extreme temperature data) +012112 +Minimum temperature, at height and over period specified +Scale: 2 +Operational + + +599 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +007032 +Height of sensor above local ground (or deck of marine platform) +Wind measurement +Operational + + +600 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +002002 +Type of instrumentation for wind measurement +Operational + + +601 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +008021 +Time significance += 2 Time averaged +Operational + + +602 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +004025 +Time period or displacement += -10 minutes, or number of minutes after a significant change of wind +Operational + + +603 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +011001 +Wind direction +Operational + + +604 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +011002 +Wind speed +Operational + + +605 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +008021 +Time significance +Set to missing +Operational + + +606 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +103002 +Replicate 3 descriptors 2 times +Operational + + +607 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +004025 +Time period or displacement +Minutes +Operational + + +608 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +011043 +Maximum wind gust direction +Operational + + +609 +02 +Meteorological sequences common to surface data +302042 +(Wind data) +011041 +Maximum wind gust speed +Operational + + +610 +02 +Meteorological sequences common to surface data +302043 +(Basic synoptic "period" data) +302038 +Present and past weather +Operational + + +611 +02 +Meteorological sequences common to surface data +302043 +(Basic synoptic "period" data) +101002 +Replicate 1 descriptor 2 times +Operational + + +612 +02 +Meteorological sequences common to surface data +302043 +(Basic synoptic "period" data) +302039 +Sunshine data (from 1 hour and 24 hour period) +Operational + + +613 +02 +Meteorological sequences common to surface data +302043 +(Basic synoptic "period" data) +302040 +Precipitation measurement +Operational + + +614 +02 +Meteorological sequences common to surface data +302043 +(Basic synoptic "period" data) +302041 +Extreme temperature data +Operational + + +615 +02 +Meteorological sequences common to surface data +302043 +(Basic synoptic "period" data) +302042 +Wind data +Operational + + +616 +02 +Meteorological sequences common to surface data +302043 +(Basic synoptic "period" data) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +617 +02 +Meteorological sequences common to surface data +302044 +(Evaporation data) +004024 +Time period or displacement +Hours +Operational + + +618 +02 +Meteorological sequences common to surface data +302044 +(Evaporation data) +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +Operational + + +619 +02 +Meteorological sequences common to surface data +302044 +(Evaporation data) +013033 +Evaporation/evapotranspiration +Operational + + +620 +02 +Meteorological sequences common to surface data +302045 +(Radiation data (from 1 hour and 24 hour period)) +004024 +Time period or displacement +Hours +Operational + + +621 +02 +Meteorological sequences common to surface data +302045 +(Radiation data (from 1 hour and 24 hour period)) +014002 +Long-wave radiation, integrated over period specified +Operational + + +622 +02 +Meteorological sequences common to surface data +302045 +(Radiation data (from 1 hour and 24 hour period)) +014004 +Short-wave radiation, integrated over period specified +Operational + + +623 +02 +Meteorological sequences common to surface data +302045 +(Radiation data (from 1 hour and 24 hour period)) +014016 +Net radiation, integrated over period specified +Operational + + +624 +02 +Meteorological sequences common to surface data +302045 +(Radiation data (from 1 hour and 24 hour period)) +014028 +Global solar radiation (high accuracy), integrated over period specified +Operational + + +625 +02 +Meteorological sequences common to surface data +302045 +(Radiation data (from 1 hour and 24 hour period)) +014029 +Diffuse solar radiation (high accuracy), integrated over period specified +Operational + + +626 +02 +Meteorological sequences common to surface data +302045 +(Radiation data (from 1 hour and 24 hour period)) +014030 +Direct solar radiation (high accuracy), integrated over period specified +Operational + + +627 +02 +Meteorological sequences common to surface data +302046 +(Temperature change) +004024 +Time period or displacement +Operational + + +628 +02 +Meteorological sequences common to surface data +302046 +(Temperature change) +004024 +Time period or displacement +(see Note 3) +Operational + + +629 +02 +Meteorological sequences common to surface data +302046 +(Temperature change) +012049 +Temperature change over specified period +Operational + + +630 +02 +Meteorological sequences common to surface data +302047 +(Direction of cloud drift) +102003 +Replicate 2 descriptors 3 times +Operational + + +631 +02 +Meteorological sequences common to surface data +302047 +(Direction of cloud drift) +008002 +Vertical significance (surface observations) +Operational + + +632 +02 +Meteorological sequences common to surface data +302047 +(Direction of cloud drift) +020054 +True direction from which a phenomenon or clouds are moving or in which they are observed +Operational + + +633 +02 +Meteorological sequences common to surface data +302048 +(Direction and elevation of cloud) +005021 +Bearing or azimuth +Operational + + +634 +02 +Meteorological sequences common to surface data +302048 +(Direction and elevation of cloud) +007021 +Elevation +Elevation angle +Operational + + +635 +02 +Meteorological sequences common to surface data +302048 +(Direction and elevation of cloud) +020012 +Cloud type +Operational + + +636 +02 +Meteorological sequences common to surface data +302048 +(Direction and elevation of cloud) +005021 +Bearing or azimuth +Set to missing (cancel) +Operational + + +637 +02 +Meteorological sequences common to surface data +302048 +(Direction and elevation of cloud) +007021 +Elevation +Set to missing (cancel) +Operational + + +638 +02 +Meteorological sequences common to surface data +302049 +(Cloud information reported with vertical soundings) +008002 +Vertical significance (surface observations) +Operational + + +639 +02 +Meteorological sequences common to surface data +302049 +(Cloud information reported with vertical soundings) +020011 +Cloud amount +Low or middle clouds Nh +Operational + + +640 +02 +Meteorological sequences common to surface data +302049 +(Cloud information reported with vertical soundings) +020013 +Height of base of cloud +h +Operational + + +641 +02 +Meteorological sequences common to surface data +302049 +(Cloud information reported with vertical soundings) +020012 +Cloud type +Low clouds CL +Operational + + +642 +02 +Meteorological sequences common to surface data +302049 +(Cloud information reported with vertical soundings) +020012 +Cloud type +Middle clouds CM +Operational + + +643 +02 +Meteorological sequences common to surface data +302049 +(Cloud information reported with vertical soundings) +020012 +Cloud type +High clouds CH +Operational + + +644 +02 +Meteorological sequences common to surface data +302049 +(Cloud information reported with vertical soundings) +008002 +Vertical significance (surface observations) +Set to missing +Operational + + +645 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +008041 +Data significance += 5 Surface observation displacement from launch point +Operational + + +646 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +005021 +Bearing or azimuth +Operational + + +647 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +007005 +Height increment +Operational + + +648 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +202130 +Change scale +Operational + + +649 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +006021 +Distance +Operational + + +650 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +202000 +Change scale +Cancel +Operational + + +651 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +008041 +Data significance += 4 Surface observation +Operational + + +652 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +201131 +Change data width +Operational + + +653 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +202129 +Change scale +Operational + + +654 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +002115 +Type of surface observing equipment +Operational + + +655 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +010004 +Pressure +Operational + + +656 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +002115 +Type of surface observing equipment +Operational + + +657 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +013003 +Relative humidity +Operational + + +658 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +202000 +Change scale +Cancel +Operational + + +659 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +201000 +Change data width +Cancel +Operational + + +660 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +002115 +Type of surface observing equipment +Operational + + +661 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +011001 +Wind direction +Operational + + +662 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +011002 +Wind speed +Operational + + +663 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +002115 +Type of surface observing equipment +Operational + + +664 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +102002 +Replicate 2 descriptors 2 times +Operational + + +665 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +012101 +Temperature/air temperature +Operational + + +666 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +004024 +Time period or displacement +Hours +Operational + + +667 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +002115 +Type of surface observing equipment +Operational + + +668 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +012103 +Dewpoint temperature +Operational + + +669 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +012102 +Wet-bulb temperature +Operational + + +670 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +101003 +Replicate 1 descriptor 3 times +Operational + + +671 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +020012 +Cloud type +Operational + + +672 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +020011 +Cloud amount +Operational + + +673 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +020013 +Height of base of cloud +Operational + + +674 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +101002 +Replicate 1 descriptor 2 times +Operational + + +675 +02 +Meteorological sequences common to surface data +302050 +(Radiosonde surface observation) +020003 +Present weather +Operational + + +676 +02 +Meteorological sequences common to surface data +302051 +010004 +Pressure +Operational + + +677 +02 +Meteorological sequences common to surface data +302051 +010051 +Pressure reduced to mean sea level +Operational + + +678 +02 +Meteorological sequences common to surface data +302051 +007004 +Pressure +Vertical location +Operational + + +679 +02 +Meteorological sequences common to surface data +302051 +010003 +Geopotential +Operational + + +680 +02 +Meteorological sequences common to surface data +302051 +012004 +Air temperature at 2 m +Operational + + +681 +02 +Meteorological sequences common to surface data +302051 +012051 +Standard deviation temperature +Operational + + +682 +02 +Meteorological sequences common to surface data +302051 +012016 +Maximum temperature at 2 m, past 24 hours +Operational + + +683 +02 +Meteorological sequences common to surface data +302051 +012017 +Minimum temperature at 2 m, past 24 hours +Operational + + +684 +02 +Meteorological sequences common to surface data +302051 +013004 +Vapour pressure +Operational + + +685 +02 +Meteorological sequences common to surface data +302051 +102004 +Replicate 2 descriptors 4 times +Operational + + +686 +02 +Meteorological sequences common to surface data +302051 +008051 +Qualifier for number of missing values in calculation of statistic +Operational + + +687 +02 +Meteorological sequences common to surface data +302051 +008020 +Total number of missing entities (with respect to accumulation or average) +Operational + + +688 +02 +Meteorological sequences common to surface data +302052 +(Ship temperature and humidity data) +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature and humidity measurement +Operational + + +689 +02 +Meteorological sequences common to surface data +302052 +(Ship temperature and humidity data) +007033 +Height of sensor above water surface +Temperature and humidity measurement +Operational + + +690 +02 +Meteorological sequences common to surface data +302052 +(Ship temperature and humidity data) +012101 +Temperature/air temperature +Scale: 2 +Operational + + +691 +02 +Meteorological sequences common to surface data +302052 +(Ship temperature and humidity data) +002039 +Method of wet-bulb temperature measurement +Operational + + +692 +02 +Meteorological sequences common to surface data +302052 +(Ship temperature and humidity data) +012102 +Wet-bulb temperature +Scale: 2 +Operational + + +693 +02 +Meteorological sequences common to surface data +302052 +(Ship temperature and humidity data) +012103 +Dewpoint temperature +Scale: 2 +Operational + + +694 +02 +Meteorological sequences common to surface data +302052 +(Ship temperature and humidity data) +013003 +Relative humidity +Operational + + +695 +02 +Meteorological sequences common to surface data +302053 +(Ship visibility data) +007032 +Height of sensor above local ground (or deck of marine platform) +Visibility measurement +Operational + + +696 +02 +Meteorological sequences common to surface data +302053 +(Ship visibility data) +007033 +Height of sensor above water surface +Visibility measurement +Operational + + +697 +02 +Meteorological sequences common to surface data +302053 +(Ship visibility data) +020001 +Horizontal visibility +Operational + + +698 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +302052 +Ship temperature and humidity data +Operational + + +699 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +302053 +Ship visibility data +Operational + + +700 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +701 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +302034 +Precipitation past 24 hours +Operational + + +702 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +703 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +302004 +General cloud information +Operational + + +704 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +705 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +031001 +Delayed descriptor replication factor +Operational + + +706 +02 +Meteorological sequences common to surface data +302054 +(Ship "instantaneous" data) +302005 +Cloud layer +Operational + + +707 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020031 +Ice deposit (thickness) +Operational + + +708 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020032 +Rate of ice accretion (estimated) +Operational + + +709 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020033 +Cause of ice accretion +Operational + + +710 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020034 +Sea ice concentration +Operational + + +711 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020035 +Amount and type of ice +Operational + + +712 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020036 +Ice situation +Operational + + +713 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020037 +Ice development +Operational + + +714 +02 +Meteorological sequences common to surface data +302055 +(Icing and ice) +020038 +Bearing of ice edge +Operational + + +715 +02 +Meteorological sequences common to surface data +302056 +(Sea/water temperature) +002038 +Method of water temperature and/or salinity measurement +Operational + + +716 +02 +Meteorological sequences common to surface data +302056 +(Sea/water temperature) +007063 +Depth below sea/water surface (cm) +Sea-surface temperature measurement +Operational + + +717 +02 +Meteorological sequences common to surface data +302056 +(Sea/water temperature) +022043 +Sea/water temperature +Operational + + +718 +02 +Meteorological sequences common to surface data +302056 +(Sea/water temperature) +007063 +Depth below sea/water surface (cm) +Set to missing (cancel) +Operational + + +719 +02 +Meteorological sequences common to surface data +302057 +(Ship marine data) +302056 +Sea/water temperature +Sea-surface temperature, method of measurement, and depth below sea surface +Operational + + +720 +02 +Meteorological sequences common to surface data +302057 +(Ship marine data) +302021 +Waves +Operational + + +721 +02 +Meteorological sequences common to surface data +302057 +(Ship marine data) +302024 +Wind and swell waves +Operational + + +722 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +Operational + + +723 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +007033 +Height of sensor above water surface +Temperature measurement +Operational + + +724 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +004024 +Time period or displacement +Operational + + +725 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +004024 +Time period or displacement +(see Notes 1 and 2) +Operational + + +726 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +012111 +Maximum temperature, at height and over period specified +Scale: 2 +Operational + + +727 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +004024 +Time period or displacement +Operational + + +728 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +004024 +Time period or displacement +(see Note 2) +Operational + + +729 +02 +Meteorological sequences common to surface data +302058 +(Ship extreme temperature data) +012112 +Minimum temperature, at height and over period specified +Scale: 2 +Operational + + +730 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +007032 +Height of sensor above local ground (or deck of marine platform) +Wind measurement +Operational + + +731 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +007033 +Height of sensor above water surface +Wind measurement +Operational + + +732 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +002002 +Type of instrumentation for wind measurement +Operational + + +733 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +008021 +Time significance += 2 Time averaged +Operational + + +734 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +004025 +Time period or displacement += -10 minutes, or number of minutes after a significant change of wind +Operational + + +735 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +011001 +Wind direction +Operational + + +736 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +011002 +Wind speed +Operational + + +737 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +008021 +Time significance +Set to missing +Operational + + +738 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +103002 +Replicate 3 descriptors 2 times +Operational + + +739 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +004025 +Time period or displacement +Minutes +Operational + + +740 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +011043 +Maximum wind gust direction +Operational + + +741 +02 +Meteorological sequences common to surface data +302059 +(Ship wind data) +011041 +Maximum wind gust speed +Operational + + +742 +02 +Meteorological sequences common to surface data +302060 +(Ship "period" data) +302038 +Present and past weather +Operational + + +743 +02 +Meteorological sequences common to surface data +302060 +(Ship "period" data) +302040 +Precipitation measurement +Operational + + +744 +02 +Meteorological sequences common to surface data +302060 +(Ship "period" data) +302058 +Ship extreme temperature data +Operational + + +745 +02 +Meteorological sequences common to surface data +302060 +(Ship "period" data) +302059 +Ship wind data +Operational + + +746 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +025188 +Method for reducing pressure to sea level +Operational + + +747 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302001 +Pressure and 3-hour pressure change +Operational + + +748 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302093 +Extended ship temperature and humidity data +Operational + + +749 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +750 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +031000 +Short delayed descriptor replication factor +Operational + + +751 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302053 +Ship visibility data +Operational + + +752 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +753 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +754 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +755 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +031000 +Short delayed descriptor replication factor +Operational + + +756 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302004 +General cloud information +Operational + + +757 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +758 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +031001 +Delayed descriptor replication factor +Operational + + +759 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302005 +Cloud layer +Operational + + +760 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +761 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +762 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +031000 +Short delayed descriptor replication factor +Operational + + +763 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302055 +Icing and ice +Operational + + +764 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +765 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +031000 +Short delayed descriptor replication factor +Operational + + +766 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302056 +Sea/water temperature +Operational + + +767 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +768 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +031000 +Short delayed descriptor replication factor +Operational + + +769 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302021 +Waves +Operational + + +770 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +101000 +Delayed replication of 1 descriptor +Operational + + +771 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +031000 +Short delayed descriptor replication factor +Operational + + +772 +02 +Meteorological sequences common to surface data +302062 +(Ship "instantaneous" data) +302024 +Wind and swell waves +Operational + + +773 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +302038 +Present and past weather +Operational + + +774 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +101000 +Delayed replication of 1 descriptor +Operational + + +775 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +031000 +Short delayed descriptor replication factor +Operational + + +776 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +302040 +Precipitation measurement +Operational + + +777 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +101000 +Delayed replication of 1 descriptor +Operational + + +778 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +031000 +Short delayed descriptor replication factor +Operational + + +779 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +302034 +Precipitation past 24 hours +Operational + + +780 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +781 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +101000 +Delayed replication of 1 descriptor +Operational + + +782 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +031000 +Short delayed descriptor replication factor +Operational + + +783 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +302058 +Ship extreme temperature data +Operational + + +784 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +101000 +Delayed replication of 1 descriptor +Operational + + +785 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +031000 +Short delayed descriptor replication factor +Operational + + +786 +02 +Meteorological sequences common to surface data +302063 +(Ship "period" data) +302064 +Ship or other marine platform wind data +Operational + + +787 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +788 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +007033 +Height of sensor above water surface +Operational + + +789 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +002002 +Type of instrumentation for wind measurement +Operational + + +790 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +008021 +Time significance += 2 Time averaged +Operational + + +791 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +004025 +Time period or displacement +Operational + + +792 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +011001 +Wind direction +Operational + + +793 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +011002 +Wind speed +Operational + + +794 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +008021 +Time significance +Set to missing (cancel) +Operational + + +795 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +103000 +Delayed replication of 3 descriptors +Operational + + +796 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +031001 +Delayed descriptor replication factor +Operational + + +797 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +004025 +Time period or displacement +Operational + + +798 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +011043 +Maximum wind gust direction +Operational + + +799 +02 +Meteorological sequences common to surface data +302064 +(Ship or other marine platform wind data) +011041 +Maximum wind gust speed +Operational + + +800 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020023 +Other weather phenomena +Operational + + +801 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020024 +Intensity of phenomena +Operational + + +802 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020027 +Phenomena occurrence +Operational + + +803 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020054 +True direction from which a phenomenon or clouds are moving or in which they are observed +Operational + + +804 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020023 +Other weather phenomena +Operational + + +805 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020027 +Phenomena occurrence +Operational + + +806 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020054 +True direction from which a phenomenon or clouds are moving or in which they are observed +Operational + + +807 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020025 +Obscuration +Operational + + +808 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020026 +Character of obscuration +Operational + + +809 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020027 +Phenomena occurrence +Operational + + +810 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020040 +Evolution of drift snow +Operational + + +811 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020066 +Maximum diameter of hailstones +Operational + + +812 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020027 +Phenomena occurrence +Operational + + +813 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020021 +Type of precipitation +Operational + + +814 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020067 +Diameter of deposit +Operational + + +815 +02 +Meteorological sequences common to surface data +302066 +(Dangerous weather phenomena) +020027 +Phenomena occurrence +Operational + + +816 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +001023 +Observation sequence number +Operational + + +817 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional “instantaneous” data +004025 +Time period or displacement += 0 minutes +Operational + + +818 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional “instantaneous” data +002177 +Method of snow depth measurement += 0 Manual observation, = 1 Ultrasonic method, = 2 Video camera method, = 3 Laser method, 4-13 Reserved, = 14 Others, = 15 Missing value +Operational + + +819 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional present weather +101000 +Delayed replication of 1 descriptor +Operational + + +820 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional present weather +031001 +Delayed descriptor replication factor +Operational + + +821 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional present weather +020003 +Present weather +960ww, 961ww +Operational + + +822 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Visibility in different directions +103000 +Delayed replication of 3 descriptors +Operational + + +823 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Visibility in different directions +031001 +Delayed descriptor replication factor +Operational + + +824 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Visibility in different directions +005021 +Bearing or azimuth +981VV-988VV +Operational + + +825 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Visibility in different directions +020001 +Horizontal visibility +VV +Operational + + +826 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Visibility in different directions +005021 +Bearing or azimuth +Set to missing (cancel) +Operational + + +827 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +101000 +Delayed replication of 1 descriptor +Operational + + +828 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +031000 +Short delayed descriptor replication factor +Operational + + +829 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +302056 +Sea/water temperature +Sea-surface temperature, method of measurement, and depth below sea surface +Operational + + +830 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +103000 +Delayed replication of 3 descriptors +Operational + + +831 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +031000 +Short delayed descriptor replication factor +Operational + + +832 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +033041 +Attribute of following value +Operational + + +833 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +020058 +Visibility seawards from a coastal station +980VsVs +Operational + + +834 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +022061 +State of the sea +924SVs +Operational + + +835 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +101000 +Delayed replication of 1 descriptor +Operational + + +836 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +031000 +Short delayed descriptor replication factor +Operational + + +837 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +302022 +Wind waves +Operational + + +838 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +101000 +Delayed replication of 1 descriptor +Operational + + +839 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +031001 +Delayed descriptor replication factor +Operational + + +840 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Sea data (observations from a coastal station) +302023 +Swell waves +Operational + + +841 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +104000 +Delayed replication of 4 descriptors +Operational + + +842 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +031001 +Delayed descriptor replication factor +Operational + + +843 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +020054 +True direction from which a phenomenon or clouds are moving or in which they are observed +Da, Dp +Operational + + +844 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +020137 +Evolution of clouds +940Cn3 +Operational + + +845 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +020012 +Cloud type +941CDp, 943CLDp +Operational + + +846 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +020090 +Special clouds +993CsDa +Operational + + +847 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +103000 +Delayed replication of 3 descriptors +Operational + + +848 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +031001 +Delayed descriptor replication factor +Operational + + +849 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +020054 +True direction from which a phenomenon or clouds are moving or in which they are observed +Operational + + +850 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +020137 +Evolution of clouds +Operational + + +851 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Clouds +020136 +Supplementary cloud type +948C0Da, 949CaDa, 950Nmn3, 951Nvn4 +Operational + + +852 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional "period" data +004025 +Time period or displacement +Reference period of fresh fallen snow +Operational + + +853 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional "period" data +013012 +Depth of fresh snow +Operational + + +854 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +004025 +Time period or displacement += -60 minutes +Operational + + +855 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +011042 +Maximum wind speed (10-minute mean wind) +912ff 902tt 912ff .. mandatory ff >= 18 +Operational + + +856 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +104000 +Delayed replication of 4 descriptors +Operational + + +857 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +031001 +Delayed descriptor replication factor +Operational + + +858 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +008021 +Time significance += 30 Time of occurrence, = 17 Start of phenomenon +Operational + + +859 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +004025 +Time period or displacement += -xx | 902tt +Operational + + +860 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +011042 +Maximum wind speed (10-minute mean wind) +912ff +Operational + + +861 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional wind data +008021 +Time significance +Set to missing (cancel) +Operational + + +862 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +115000 +Delayed replication of 15 descriptors +Operational + + +863 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +031001 +Delayed descriptor replication factor +Operational + + +864 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +008021 +Time significance += 30 Time of occurrence, = 17 Start of phenomenon +Operational + + +865 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +004015 +Time increment += -xx1 +Operational + + +866 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +008021 +Time significance += 2 Time averaged +Operational + + +867 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +004025 +Time period or displacement += -10 minutes, or number of minutes after a significant change of wind +Operational + + +868 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +011001 +Wind direction +915dd +Operational + + +869 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +011002 +Wind speed +913ff +Operational + + +870 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +008021 +Time significance += 22 Time of occurrence of wind shift +Operational + + +871 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +004015 +Time increment += +xx2 +Operational + + +872 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +008021 +Time significance += 2 Time averaged +Operational + + +873 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +004025 +Time period or displacement += -10 minutes, or number of minutes after a significant change of wind +Operational + + +874 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +011001 +Wind direction +915dd +Operational + + +875 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +011002 +Wind speed +913ff +Operational + + +876 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +008021 +Time significance +Set to missing (cancel) +Operational + + +877 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +004025 +Time period or displacement += 0 minutes +Operational + + +878 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Significant change in wind speed and/or direction +004015 +Time increment += +(xx1-xx2) | Non negative to reset the time to the actual time +Operational + + +879 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional weather +103000 +Delayed replication of 3 descriptors +Operational + + +880 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional weather +031001 +Delayed descriptor replication factor +Operational + + +881 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional weather +004025 +Time period or displacement += -xx, i.e. from +Operational + + +882 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional weather +004025 +Time period or displacement += -xx, i.e. to +Operational + + +883 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional weather +020003 +Present weather +962ww, 963w1w1, 964ww, 965w1w1, 966ww, 967w1w1 +Operational + + +884 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +110000 +Delayed replication of 10 descriptors +Operational + + +885 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +031001 +Delayed descriptor replication factor +Operational + + +886 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +004025 +Time period or displacement += -xx, i.e. from +Operational + + +887 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +004025 +Time period or displacement += -xx, i.e. to +Operational + + +888 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +005021 +Bearing or azimuth +Da, Dp +Operational + + +889 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +005021 +Bearing or azimuth +Da, Dp +Operational + + +890 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +020054 +True direction from which a phenomenon or clouds are moving or in which they are observed +Da, Dp +Operational + + +891 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +020024 +Intensity of phenomena += 1 Light, = 2 Moderate, = 3 Heavy, = 4 Violent, = 5 Severe +Operational + + +892 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +020025 +Obscuration +Operational + + +893 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +020026 +Character of obscuration +Operational + + +894 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +020027 +Phenomena occurrence +Operational + + +895 +02 +Meteorological sequences common to surface data +302067 +(Additional synoptical parameters) +Additional 9SPSPspsp groups +020063 +Special phenomena +Operational + + +896 +02 +Meteorological sequences common to surface data +302069 +(Visibility data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +897 +02 +Meteorological sequences common to surface data +302069 +(Visibility data) +007033 +Height of sensor above water surface +Operational + + +898 +02 +Meteorological sequences common to surface data +302069 +(Visibility data) +033041 +Attribute of following value +Operational + + +899 +02 +Meteorological sequences common to surface data +302069 +(Visibility data) +020001 +Horizontal visibility +Operational + + +900 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +901 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +007033 +Height of sensor above water surface +Operational + + +902 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +011001 +Wind direction +Operational + + +903 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +011002 +Wind speed +Operational + + +904 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +011043 +Maximum wind gust direction +Operational + + +905 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +011041 +Maximum wind gust speed +Operational + + +906 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +011016 +Extreme counterclockwise wind direction of a variable wind +Operational + + +907 +02 +Meteorological sequences common to surface data +302070 +(Wind data) +011017 +Extreme clockwise wind direction of a variable wind +Operational + + +908 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +909 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +007033 +Height of sensor above water surface +Operational + + +910 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +008021 +Time significance += 2 Time averaged +Operational + + +911 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +004025 +Time period or displacement += -10 minutes, or number of minutes after a significant change of wind, if any +Operational + + +912 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +011001 +Wind direction +Operational + + +913 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +011002 +Wind speed +Operational + + +914 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +008021 +Time significance +Set to missing +Operational + + +915 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +103002 +Replicate 3 descriptors 2 times +Operational + + +916 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +004025 +Time period or displacement += -10 minutes in the first replication, = -60 minutes in the second replication +Operational + + +917 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +011043 +Maximum wind gust direction +Operational + + +918 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +011041 +Maximum wind gust speed +Operational + + +919 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +004025 +Time period or displacement += -10 minutes +Operational + + +920 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +011016 +Extreme counterclockwise wind direction of a variable wind +Operational + + +921 +02 +Meteorological sequences common to surface data +302071 +(Wind data from one-hour period) +011017 +Extreme clockwise wind direction of a variable wind +Operational + + +922 +02 +Meteorological sequences common to surface data +302072 +(Temperature and humidity data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +923 +02 +Meteorological sequences common to surface data +302072 +(Temperature and humidity data) +007033 +Height of sensor above water surface +Operational + + +924 +02 +Meteorological sequences common to surface data +302072 +(Temperature and humidity data) +012101 +Temperature/air temperature +Scale: 2 +Operational + + +925 +02 +Meteorological sequences common to surface data +302072 +(Temperature and humidity data) +012103 +Dewpoint temperature +Scale: 2 +Operational + + +926 +02 +Meteorological sequences common to surface data +302072 +(Temperature and humidity data) +013003 +Relative humidity +Operational + + +927 +02 +Meteorological sequences common to surface data +302073 +(Cloud data) +020010 +Cloud cover (total) +Operational + + +928 +02 +Meteorological sequences common to surface data +302073 +(Cloud data) +105004 +Replicate 5 descriptors 4 times +Operational + + +929 +02 +Meteorological sequences common to surface data +302073 +(Cloud data) +008002 +Vertical significance (surface observations) +Operational + + +930 +02 +Meteorological sequences common to surface data +302073 +(Cloud data) +020011 +Cloud amount +Operational + + +931 +02 +Meteorological sequences common to surface data +302073 +(Cloud data) +020012 +Cloud type +Operational + + +932 +02 +Meteorological sequences common to surface data +302073 +(Cloud data) +033041 +Attribute of following value +Operational + + +933 +02 +Meteorological sequences common to surface data +302073 +(Cloud data) +020013 +Height of base of cloud +Operational + + +934 +02 +Meteorological sequences common to surface data +302074 +(Present and past weather) +020003 +Present weather +Operational + + +935 +02 +Meteorological sequences common to surface data +302074 +(Present and past weather) +004025 +Time period or displacement +Operational + + +936 +02 +Meteorological sequences common to surface data +302074 +(Present and past weather) +020004 +Past weather (1) +Operational + + +937 +02 +Meteorological sequences common to surface data +302074 +(Present and past weather) +020005 +Past weather (2) +Operational + + +938 +02 +Meteorological sequences common to surface data +302075 +(Intensity of precipitation, size of precipitation element) +008021 +Time significance += 2 Time averaged +Operational + + +939 +02 +Meteorological sequences common to surface data +302075 +(Intensity of precipitation, size of precipitation element) +004025 +Time period or displacement += -10 minutes +Operational + + +940 +02 +Meteorological sequences common to surface data +302075 +(Intensity of precipitation, size of precipitation element) +013055 +Intensity of precipitation +Operational + + +941 +02 +Meteorological sequences common to surface data +302075 +(Intensity of precipitation, size of precipitation element) +013058 +Size of precipitating element +Operational + + +942 +02 +Meteorological sequences common to surface data +302075 +(Intensity of precipitation, size of precipitation element) +008021 +Time significance +Set to missing +Operational + + +943 +02 +Meteorological sequences common to surface data +302076 +(Precipitation, obscuration and other phenomena) +020021 +Type of precipitation +Operational + + +944 +02 +Meteorological sequences common to surface data +302076 +(Precipitation, obscuration and other phenomena) +020022 +Character of precipitation +Operational + + +945 +02 +Meteorological sequences common to surface data +302076 +(Precipitation, obscuration and other phenomena) +026020 +Duration of precipitation +Operational + + +946 +02 +Meteorological sequences common to surface data +302076 +(Precipitation, obscuration and other phenomena) +020023 +Other weather phenomena +Operational + + +947 +02 +Meteorological sequences common to surface data +302076 +(Precipitation, obscuration and other phenomena) +020024 +Intensity of phenomena +Operational + + +948 +02 +Meteorological sequences common to surface data +302076 +(Precipitation, obscuration and other phenomena) +020025 +Obscuration +Operational + + +949 +02 +Meteorological sequences common to surface data +302076 +(Precipitation, obscuration and other phenomena) +020026 +Character of obscuration +Operational + + +950 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +951 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +007033 +Height of sensor above water surface +Operational + + +952 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +004025 +Time period or displacement +Operational + + +953 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +012111 +Maximum temperature, at height and over period specified +Scale: 2 +Operational + + +954 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +012112 +Minimum temperature, at height and over period specified +Scale: 2 +Operational + + +955 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +007032 +Height of sensor above local ground (or deck of marine platform) +Ground temperature +Operational + + +956 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +004025 +Time period or displacement +Operational + + +957 +02 +Meteorological sequences common to surface data +302077 +(Extreme temperature data) +012112 +Minimum temperature, at height and over period specified +Scale: 2 | Ground temperature +Operational + + +958 +02 +Meteorological sequences common to surface data +302078 +(State of ground and snow depth measurement) +002176 +Method of state of ground measurement +Operational + + +959 +02 +Meteorological sequences common to surface data +302078 +(State of ground and snow depth measurement)) +020062 +State of the ground (with or without snow) +Operational + + +960 +02 +Meteorological sequences common to surface data +302078 +(State of ground and snow depth measurement) +002177 +Method of snow depth measurement +Operational + + +961 +02 +Meteorological sequences common to surface data +302078 +(State of ground and snow depth measurement) +013013 +Total snow depth +Operational + + +962 +02 +Meteorological sequences common to surface data +302079 +(Precipitation measurement) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +963 +02 +Meteorological sequences common to surface data +302079 +(Precipitation measurement) +002175 +Method of precipitation measurement +Operational + + +964 +02 +Meteorological sequences common to surface data +302079 +(Precipitation measurement) +002178 +Method of liquid content measurement of precipitation +Operational + + +965 +02 +Meteorological sequences common to surface data +302079 +(Precipitation measurement) +004025 +Time period or displacement +Operational + + +966 +02 +Meteorological sequences common to surface data +302079 +(Precipitation measurement) +013011 +Total precipitation/total water equivalent +Operational + + +967 +02 +Meteorological sequences common to surface data +302080 +(Evaporation measurement) +002185 +Method of evaporation measurement +Operational + + +968 +02 +Meteorological sequences common to surface data +302080 +(Evaporation measurement) +004025 +Time period or displacement +Operational + + +969 +02 +Meteorological sequences common to surface data +302080 +(Evaporation measurement) +013033 +Evaporation/evapotranspiration +Operational + + +970 +02 +Meteorological sequences common to surface data +302081 +(Total sunshine data) +004025 +Time period or displacement +Operational + + +971 +02 +Meteorological sequences common to surface data +302081 +(Total sunshine data) +014031 +Total sunshine +Operational + + +972 +02 +Meteorological sequences common to surface data +302082 +(Radiation data) +004025 +Time period or displacement +Operational + + +973 +02 +Meteorological sequences common to surface data +302082 +(Radiation data) +014002 +Long-wave radiation, integrated over period specified +Operational + + +974 +02 +Meteorological sequences common to surface data +302082 +(Radiation data) +014004 +Short-wave radiation, integrated over period specified +Operational + + +975 +02 +Meteorological sequences common to surface data +302082 +(Radiation data) +014016 +Net radiation, integrated over period specified +Operational + + +976 +02 +Meteorological sequences common to surface data +302082 +(Radiation data) +014028 +Global solar radiation (high accuracy), integrated over period specified +Operational + + +977 +02 +Meteorological sequences common to surface data +302082 +(Radiation data) +014029 +Diffuse solar radiation (high accuracy), integrated over period specified +Operational + + +978 +02 +Meteorological sequences common to surface data +302082 +(Radiation data) +014030 +Direct solar radiation (high accuracy), integrated over period specified +Operational + + +979 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +004025 +Time period or displacement +Operational + + +980 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +008023 +First-order statistics +Operational + + +981 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +010004 +Pressure +Operational + + +982 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +011001 +Wind direction +Operational + + +983 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +011002 +Wind speed +Operational + + +984 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +012101 +Temperature/air temperature +Scale: 2 +Operational + + +985 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +013003 +Relative humidity +Operational + + +986 +02 +Meteorological sequences common to surface data +302083 +(First-order statistics of P, W, T, U data) +008023 +First-order statistics +Set to missing +Operational + + +987 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +302031 +Pressure information +Operational + + +988 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +302072 +Temperature and humidity data +Operational + + +989 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +103000 +Delayed replication of 3 descriptors +Operational + + +990 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +031000 +Short delayed descriptor replication factor +Operational + + +991 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +101005 +Replicate 1 descriptor 5 times +Operational + + +992 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +307063 +Depth below land surface and soil temperature +Operational + + +993 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +007061 +Depth below land surface +Set to missing (cancel) +Operational + + +994 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Visibility data +101000 +Delayed replication of 1 descriptor +Operational + + +995 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Visibility data +031000 +Short delayed descriptor replication factor +Operational + + +996 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Visibility data +302069 +Visibility data +Operational + + +997 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Visibility data +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +998 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Visibility data +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +999 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Marine data +105000 +Delayed replication of 5 descriptors +Operational + + +1000 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Marine data +031000 +Short delayed descriptor replication factor +Operational + + +1001 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Marine data +020031 +Ice deposit (thickness) +Operational + + +1002 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Marine data +020032 +Rate of ice accretion (estimated) +Operational + + +1003 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Marine data +002038 +Method of water temperature and/or salinity measurement +Operational + + +1004 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Marine data +022043 +Sea/water temperature +Scale: 2 +Operational + + +1005 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Marine data +302021 +Waves +Operational + + +1006 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +State of ground and snow depth measurement +101000 +Delayed replication of 1 descriptor +Operational + + +1007 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +State of ground and snow depth measurement +031000 +Short delayed descriptor replication factor +Operational + + +1008 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +State of ground and snow depth measurement +302078 +State of ground and snow depth measurement +Operational + + +1009 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +State of ground and snow depth measurement +012113 +Ground minimum temperature, past 12 hours +Scale: 2 +Operational + + +1010 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +101000 +Delayed replication of 1 descriptor +Operational + + +1011 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +031000 +Short delayed descriptor replication factor +Operational + + +1012 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +302004 +General cloud information +Operational + + +1013 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +105000 +Delayed replication of 5 descriptors +Operational + + +1014 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +031001 +Delayed descriptor replication factor +Operational + + +1015 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +008002 +Vertical significance (surface observations) +Operational + + +1016 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +020011 +Cloud amount +Operational + + +1017 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +020012 +Cloud type +Operational + + +1018 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +033041 +Attribute of following value +Operational + + +1019 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +020013 +Height of base of cloud +Operational + + +1020 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Cloud data +302036 +Clouds with bases below station level +Operational + + +1021 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Direction of cloud drift 6DLDMDH +101000 +Delayed replication of 1 descriptor +Operational + + +1022 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Direction of cloud drift 6DLDMDH +031000 +Short delayed descriptor replication factor +Operational + + +1023 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Direction of cloud drift 6DLDMDH +302047 +Direction of cloud drift +Operational + + +1024 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Direction of cloud drift 6DLDMDH +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +1025 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Direction and elevation of cloud 57CDaec +101000 +Delayed replication of 1 descriptor +Operational + + +1026 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Direction and elevation of cloud 57CDaec +031000 +Short delayed descriptor replication factor +Operational + + +1027 +02 +Meteorological sequences common to surface data +302084 +("Instantaneous" data of sequence 3 07 096) +Direction and elevation of cloud 57CDaec +302048 +Direction and elevation of cloud +Operational + + +1028 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Present and past weather data +105000 +Delayed replication of 5 descriptors +Operational + + +1029 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Present and past weather data +031000 +Short delayed descriptor replication factor +Operational + + +1030 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Present and past weather data +020003 +Present weather +Operational + + +1031 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Present and past weather data +103002 +Replicate 3 descriptors 2 times +Operational + + +1032 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Present and past weather data +004024 +Time period or displacement += -1 hour in the first replication, = -x hours in the second replication, x corresponding to the time period of W1W2 in the SYNOP report +Operational + + +1033 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Present and past weather data +020004 +Past weather (1) +Operational + + +1034 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Present and past weather data +020005 +Past weather (2) +Operational + + +1035 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Intensity of precipitation, size of precipitation element +101000 +Delayed replication of 1 descriptor +Operational + + +1036 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Intensity of precipitation, size of precipitation element +031000 +Short delayed descriptor replication factor +Operational + + +1037 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Intensity of precipitation, size of precipitation element +302175 +Intensity of precipitation, size of precipitation element +Operational + + +1038 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation, obscuration and other phenomena +102000 +Delayed replication of 2 descriptors +Operational + + +1039 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation, obscuration and other phenomena +031000 +Short delayed descriptor replication factor +Operational + + +1040 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation, obscuration and other phenomena +004025 +Time period or displacement += -10 minutes +Operational + + +1041 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation, obscuration and other phenomena +302076 +Precipitation, obscuration and other phenomena +Operational + + +1042 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Lightning data +102000 +Delayed replication of 2 descriptors +Operational + + +1043 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Lightning data +031000 +Short delayed descriptor replication factor +Operational + + +1044 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Lightning data +004025 +Time period or displacement += -10 minutes +Operational + + +1045 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Lightning data +013059 +Number of flashes (thunderstorm) +Operational + + +1046 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +1047 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +007033 +Height of sensor above water surface +Operational + + +1048 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +008021 +Time significance += 2 Time averaged +Operational + + +1049 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +004025 +Time period or displacement += -10 minutes, or number of minutes after a significant change of wind +Operational + + +1050 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +011001 +Wind direction +Operational + + +1051 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +011002 +Wind speed +Operational + + +1052 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +008021 +Time significance +Set to missing +Operational + + +1053 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +103003 +Replicate 3 descriptors 3 times +Operational + + +1054 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +004025 +Time period or displacement += -10 minutes in the first replication, = -60 minutes in the second replication, = -60x3 or 60x6 minutes in the third replication +Operational + + +1055 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +011043 +Maximum wind gust direction +Operational + + +1056 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +011041 +Maximum wind gust speed +Operational + + +1057 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +004025 +Time period or displacement += -10 minutes +Operational + + +1058 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +011016 +Extreme counterclockwise wind direction of a variable wind +Operational + + +1059 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Wind data +011017 +Extreme clockwise wind direction of a variable wind +Operational + + +1060 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Extreme temperature data +302077 +Extreme temperature data +Operational + + +1061 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Extreme temperature data +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +1062 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Extreme temperature data +302041 +Extreme temperature data +Operational + + +1063 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +106000 +Delayed replication of 6 descriptors +Operational + + +1064 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +031000 +Short delayed descriptor replication factor +Operational + + +1065 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +1066 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +002175 +Method of precipitation measurement +Operational + + +1067 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +002178 +Method of liquid content measurement of precipitation +Operational + + +1068 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +102005 +Replicate 2 descriptors 5 times +Operational + + +1069 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +004024 +Time period or displacement += -1 hour in the first replication, = -3, -6, -12 and -24 hours in the other replications +Operational + + +1070 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +013011 +Total precipitation/total water equivalent +Operational + + +1071 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Precipitation measurement +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +1072 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Evaporation data +103000 +Delayed replication of 3 descriptors +Operational + + +1073 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Evaporation data +031000 +Short delayed descriptor replication factor +Operational + + +1074 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Evaporation data +002185 +Method of evaporation measurement +Operational + + +1075 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Evaporation data +101002 +Replicate 1 descriptor 2 times +Operational + + +1076 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Evaporation data +302044 +Evaporation data +Operational + + +1077 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Total sunshine data +102000 +Delayed replication of 2 descriptors +Operational + + +1078 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Total sunshine data +031000 +Short delayed descriptor replication factor +Operational + + +1079 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Total sunshine data +101002 +Replicate 1 descriptor 2 times +Operational + + +1080 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Total sunshine data +302039 +Sunshine data (from 1 hour and 24 hour period) +Operational + + +1081 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Radiation data +102000 +Delayed replication of 2 descriptors +Operational + + +1082 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Radiation data +031000 +Short delayed descriptor replication factor +Operational + + +1083 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Radiation data +101002 +Replicate 1 descriptor 2 times +Operational + + +1084 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Radiation data +302045 +Radiation data (from 1 hour and 24 hour period) +Operational + + +1085 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Temperature change group 54g0sndT +101000 +Delayed replication of 1 descriptor +Operational + + +1086 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Temperature change group 54g0sndT +031000 +Short delayed descriptor replication factor +Operational + + +1087 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +Temperature change group 54g0sndT +302046 +Temperature change +Operational + + +1088 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +First-order statistics of P, W, T, U data +101000 +Delayed replication of 1 descriptor +Operational + + +1089 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +First-order statistics of P, W, T, U data +031000 +Short delayed descriptor replication factor +Operational + + +1090 +02 +Meteorological sequences common to surface data +302085 +("Period" data of sequence 3 07 096) +First-order statistics of P, W, T, U data +302083 +First-order statistics of P, W, T, U data +Operational + + +1091 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020101 +Locust (acridian) name +Ln +Operational + + +1092 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020102 +Locust (maturity) colour +Lc +Operational + + +1093 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020103 +Stage of development of locusts +Ld +Operational + + +1094 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020104 +Organization state of swarm or band of locusts +Lg +Operational + + +1095 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020105 +Size of swarm or band of locusts and duration of passage of swarm +sL +Operational + + +1096 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020106 +Locust population density +dL +Operational + + +1097 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020107 +Direction of movements of locust swarm +DL +Operational + + +1098 +02 +Meteorological sequences common to surface data +302089 +(Locust information) +020108 +Extent of vegetation +ve +Operational + + +1099 +02 +Meteorological sequences common to surface data +302090 +(Sea/water temperature high precision) +002038 +Method of water temperature and/or salinity measurement +Operational + + +1100 +02 +Meteorological sequences common to surface data +302090 +(Sea/water temperature high precision) +007063 +Depth below sea/water surface (cm) +Sea-surface temperature measurement +Operational + + +1101 +02 +Meteorological sequences common to surface data +302090 +(Sea/water temperature high precision) +022045 +Sea/water temperature +Operational + + +1102 +02 +Meteorological sequences common to surface data +302091 +(Sequence for representation of ancillary meteorological observations) +020001 +Horizontal visibility +Operational + + +1103 +02 +Meteorological sequences common to surface data +302091 +(Sequence for representation of ancillary meteorological observations) +004024 +Time period or displacement +Operational + + +1104 +02 +Meteorological sequences common to surface data +302091 +(Sequence for representation of ancillary meteorological observations) +013011 +Total precipitation/total water equivalent +Operational + + +1105 +02 +Meteorological sequences common to surface data +302092 +(VOSClim data elements) +011104 +True heading of aircraft, ship or other mobile platform +Ship’s true heading +Operational + + +1106 +02 +Meteorological sequences common to surface data +302092 +(VOSClim data elements) +001012 +Direction of motion of moving observing platform +Ship’s course over ground +Operational + + +1107 +02 +Meteorological sequences common to surface data +302092 +(VOSClim data elements) +001013 +Speed of motion of moving observing platform +Ship’s speed over ground +Operational + + +1108 +02 +Meteorological sequences common to surface data +302092 +(VOSClim data elements) +010038 +Maximum height of deck cargo above summer load line +Operational + + +1109 +02 +Meteorological sequences common to surface data +302092 +(VOSClim data elements) +010039 +Departure of reference level (summer maximum load line) from actual sea level +Operational + + +1110 +02 +Meteorological sequences common to surface data +302092 +(VOSClim data elements) +011007 +Relative wind direction (in degrees off bow) +Operational + + +1111 +02 +Meteorological sequences common to surface data +302092 +(VOSClim data elements) +011008 +Relative wind speed +Operational + + +1112 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +1113 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +007033 +Height of sensor above water surface +Operational + + +1114 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +303099 +Metadata common to temperature/humidity sensors +Operational + + +1115 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +012101 +Temperature/air temperature +Operational + + +1116 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +103000 +Delayed replication of 3 descriptors +Operational + + +1117 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +031000 +Short delayed descriptor replication factor +Set to 0 if no change from previous values, 1 if changes +Operational + + +1118 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +1119 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +007033 +Height of sensor above water surface +Operational + + +1120 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +303099 +Metadata common to temperature/humidity sensors +Operational + + +1121 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +002039 +Method of wet-bulb temperature measurement +Operational + + +1122 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +002097 +Type of humidity sensor +Operational + + +1123 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +003024 +Psychrometric coefficient +Set to missing if type of humidity sensor is not psychrometer +Operational + + +1124 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +003021 +Hygrometer heating +Operational + + +1125 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +012102 +Wet-bulb temperature +Operational + + +1126 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +012103 +Dewpoint temperature +Operational + + +1127 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +013003 +Relative humidity +Operational + + +1128 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +1129 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +1130 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +303099 +Metadata common to temperature/humidity sensors +Set all elements in sequence to missing (cancel) +Operational + + +1131 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +002039 +Method of wet-bulb temperature measurement +Set to missing (cancel) +Operational + + +1132 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +002097 +Type of humidity sensor +Set to missing (cancel) +Operational + + +1133 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +003021 +Hygrometer heating +Set to missing (cancel) +Operational + + +1134 +02 +Meteorological sequences common to surface data +302093 +(Extended ship temperature and humidity data) +003024 +Psychrometric coefficient +Set to missing (cancel) +Operational + + +1135 +02 +Meteorological sequences common to surface data +302175 +(Intensity of precipitation, size of precipitation element) +008021 +Time significance +Operational + + +1136 +02 +Meteorological sequences common to surface data +302175 +(Intensity of precipitation, size of precipitation element) +004025 +Time period or displacement +Operational + + +1137 +02 +Meteorological sequences common to surface data +302175 +(Intensity of precipitation, size of precipitation element) +013155 +Intensity of precipitation (high accuracy) +Operational + + +1138 +02 +Meteorological sequences common to surface data +302175 +(Intensity of precipitation, size of precipitation element) +013058 +Size of precipitating element +Operational + + +1139 +02 +Meteorological sequences common to surface data +302175 +(Intensity of precipitation, size of precipitation element) +008021 +Time significance +Operational + + +1140 +03 +Meteorological sequences common to vertical soundings data +303001 +007003 +Geopotential +Operational + + +1141 +03 +Meteorological sequences common to vertical soundings data +303001 +011001 +Wind direction +Operational + + +1142 +03 +Meteorological sequences common to vertical soundings data +303001 +011002 +Wind speed +Operational + + +1143 +03 +Meteorological sequences common to vertical soundings data +303002 +(Wind at pressure level) +007004 +Pressure +Operational + + +1144 +03 +Meteorological sequences common to vertical soundings data +303002 +(Wind at pressure level) +011001 +Wind direction +Operational + + +1145 +03 +Meteorological sequences common to vertical soundings data +303002 +(Wind at pressure level) +011002 +Wind speed +Operational + + +1146 +03 +Meteorological sequences common to vertical soundings data +303003 +007004 +Pressure +Operational + + +1147 +03 +Meteorological sequences common to vertical soundings data +303003 +010003 +Geopotential +Operational + + +1148 +03 +Meteorological sequences common to vertical soundings data +303003 +012001 +Temperature/air temperature +Operational + + +1149 +03 +Meteorological sequences common to vertical soundings data +303003 +012003 +Dewpoint temperature +Operational + + +1150 +03 +Meteorological sequences common to vertical soundings data +303004 +007004 +Pressure +Operational + + +1151 +03 +Meteorological sequences common to vertical soundings data +303004 +010003 +Geopotential +Operational + + +1152 +03 +Meteorological sequences common to vertical soundings data +303004 +012001 +Temperature/air temperature +Operational + + +1153 +03 +Meteorological sequences common to vertical soundings data +303004 +012003 +Dewpoint temperature +Operational + + +1154 +03 +Meteorological sequences common to vertical soundings data +303004 +011001 +Wind direction +Operational + + +1155 +03 +Meteorological sequences common to vertical soundings data +303004 +011002 +Wind speed +Operational + + +1156 +03 +Meteorological sequences common to vertical soundings data +303011 +(Wind at height) +007003 +Geopotential +Operational + + +1157 +03 +Meteorological sequences common to vertical soundings data +303011 +(Wind at height) +008001 +Vertical sounding significance +Operational + + +1158 +03 +Meteorological sequences common to vertical soundings data +303011 +(Wind at height) +011001 +Wind direction +Operational + + +1159 +03 +Meteorological sequences common to vertical soundings data +303011 +(Wind at height) +011002 +Wind speed +Operational + + +1160 +03 +Meteorological sequences common to vertical soundings data +303012 +(Wind at pressure level) +007004 +Pressure +Operational + + +1161 +03 +Meteorological sequences common to vertical soundings data +303012 +(Wind at pressure level) +008001 +Vertical sounding significance +Operational + + +1162 +03 +Meteorological sequences common to vertical soundings data +303012 +(Wind at pressure level) +011001 +Wind direction +Operational + + +1163 +03 +Meteorological sequences common to vertical soundings data +303012 +(Wind at pressure level) +011002 +Wind speed +Operational + + +1164 +03 +Meteorological sequences common to vertical soundings data +303013 +(Geopotential, temperature, humidity, wind at pressure level) +007004 +Pressure +Operational + + +1165 +03 +Meteorological sequences common to vertical soundings data +303013 +(Geopotential, temperature, humidity, wind at pressure level) +008001 +Vertical sounding significance +Operational + + +1166 +03 +Meteorological sequences common to vertical soundings data +303013 +(Geopotential, temperature, humidity, wind at pressure level) +010003 +Geopotential +Operational + + +1167 +03 +Meteorological sequences common to vertical soundings data +303013 +(Geopotential, temperature, humidity, wind at pressure level) +012001 +Temperature/air temperature +Operational + + +1168 +03 +Meteorological sequences common to vertical soundings data +303013 +(Geopotential, temperature, humidity, wind at pressure level) +013003 +Relative humidity +Operational + + +1169 +03 +Meteorological sequences common to vertical soundings data +303013 +(Geopotential, temperature, humidity, wind at pressure level) +011001 +Wind direction +Operational + + +1170 +03 +Meteorological sequences common to vertical soundings data +303013 +(Geopotential, temperature, humidity, wind at pressure level) +011002 +Wind speed +Operational + + +1171 +03 +Meteorological sequences common to vertical soundings data +303014 +(Geopotential, temperature, dewpoint temperature, wind at pressure level) +007004 +Pressure +Operational + + +1172 +03 +Meteorological sequences common to vertical soundings data +303014 +(Geopotential, temperature, dewpoint temperature, wind at pressure level) +008001 +Vertical sounding significance +Operational + + +1173 +03 +Meteorological sequences common to vertical soundings data +303014 +(Geopotential, temperature, dewpoint temperature, wind at pressure level) +010003 +Geopotential +Operational + + +1174 +03 +Meteorological sequences common to vertical soundings data +303014 +(Geopotential, temperature, dewpoint temperature, wind at pressure level) +012001 +Temperature/air temperature +Operational + + +1175 +03 +Meteorological sequences common to vertical soundings data +303014 +(Geopotential, temperature, dewpoint temperature, wind at pressure level) +012003 +Dewpoint temperature +Operational + + +1176 +03 +Meteorological sequences common to vertical soundings data +303014 +(Geopotential, temperature, dewpoint temperature, wind at pressure level) +011001 +Wind direction +Operational + + +1177 +03 +Meteorological sequences common to vertical soundings data +303014 +(Geopotential, temperature, dewpoint temperature, wind at pressure level) +011002 +Wind speed +Operational + + +1178 +03 +Meteorological sequences common to vertical soundings data +303021 +(Layer, quality) +007004 +Pressure +Define layer +Operational + + +1179 +03 +Meteorological sequences common to vertical soundings data +303021 +(Layer, quality) +007004 +Pressure +Operational + + +1180 +03 +Meteorological sequences common to vertical soundings data +303021 +(Layer, quality) +204007 +Add associated field +7 bits long +Operational + + +1181 +03 +Meteorological sequences common to vertical soundings data +303021 +(Layer, quality) +031021 +Associated field significance +Operational + + +1182 +03 +Meteorological sequences common to vertical soundings data +303022 +303021 +Layer, quality +Operational + + +1183 +03 +Meteorological sequences common to vertical soundings data +303022 +010003 +Geopotential +Layer mean thickness +Operational + + +1184 +03 +Meteorological sequences common to vertical soundings data +303022 +204000 +Add associated field +Cancel +Operational + + +1185 +03 +Meteorological sequences common to vertical soundings data +303023 +(Layer mean temperature) +303021 +Layer, quality +Operational + + +1186 +03 +Meteorological sequences common to vertical soundings data +303023 +(Layer mean temperature) +012001 +Temperature/air temperature +Layer mean +Operational + + +1187 +03 +Meteorological sequences common to vertical soundings data +303023 +(Layer mean temperature) +204000 +Add associated field +Cancel +Operational + + +1188 +03 +Meteorological sequences common to vertical soundings data +303024 +(Precipitable water) +303021 +Layer, quality +Operational + + +1189 +03 +Meteorological sequences common to vertical soundings data +303024 +(Precipitable water) +013016 +Precipitable water +Operational + + +1190 +03 +Meteorological sequences common to vertical soundings data +303024 +(Precipitable water) +204000 +Add associated field +Cancel +Operational + + +1191 +03 +Meteorological sequences common to vertical soundings data +303025 +(Satellite channel and brightness temperature) +002025 +Satellite channel(s) used in computation +Operational + + +1192 +03 +Meteorological sequences common to vertical soundings data +303025 +(Satellite channel and brightness temperature) +204007 +Add associated field +7 bits long +Operational + + +1193 +03 +Meteorological sequences common to vertical soundings data +303025 +(Satellite channel and brightness temperature) +031021 +Associated field significance +Operational + + +1194 +03 +Meteorological sequences common to vertical soundings data +303025 +(Satellite channel and brightness temperature) +012063 +Brightness temperature +Operational + + +1195 +03 +Meteorological sequences common to vertical soundings data +303025 +(Satellite channel and brightness temperature) +204000 +Add associated field +Cancel +Operational + + +1196 +03 +Meteorological sequences common to vertical soundings data +303026 +007004 +Pressure +Operational + + +1197 +03 +Meteorological sequences common to vertical soundings data +303026 +008003 +Vertical significance (satellite observations) +Operational + + +1198 +03 +Meteorological sequences common to vertical soundings data +303026 +204007 +Add associated field +7 bits long +Operational + + +1199 +03 +Meteorological sequences common to vertical soundings data +303026 +031021 +Associated field significance +Operational + + +1200 +03 +Meteorological sequences common to vertical soundings data +303026 +012001 +Temperature/air temperature +Operational + + +1201 +03 +Meteorological sequences common to vertical soundings data +303026 +204000 +Add associated field +Cancel +Operational + + +1202 +03 +Meteorological sequences common to vertical soundings data +303027 +007004 +Pressure +Operational + + +1203 +03 +Meteorological sequences common to vertical soundings data +303027 +204007 +Add associated field +7 bits long +Operational + + +1204 +03 +Meteorological sequences common to vertical soundings data +303027 +031021 +Associated field significance +Operational + + +1205 +03 +Meteorological sequences common to vertical soundings data +303027 +010003 +Geopotential +Operational + + +1206 +03 +Meteorological sequences common to vertical soundings data +303027 +204000 +Add associated field +Cancel +Operational + + +1207 +03 +Meteorological sequences common to vertical soundings data +303031 +(Significance data, land/sea, skin temperature) +007004 +Pressure +Operational + + +1208 +03 +Meteorological sequences common to vertical soundings data +303031 +(Significance data, land/sea, skin temperature) +008003 +Vertical significance (satellite observations) +Base of sounding +Operational + + +1209 +03 +Meteorological sequences common to vertical soundings data +303031 +(Significance data, land/sea, skin temperature) +007021 +Elevation +Local zenith +Operational + + +1210 +03 +Meteorological sequences common to vertical soundings data +303031 +(Significance data, land/sea, skin temperature) +007022 +Solar elevation +Solar zenith +Operational + + +1211 +03 +Meteorological sequences common to vertical soundings data +303031 +(Significance data, land/sea, skin temperature) +008012 +Land/sea qualifier +Operational + + +1212 +03 +Meteorological sequences common to vertical soundings data +303031 +(Significance data, land/sea, skin temperature) +012061 +Skin temperature +Operational + + +1213 +03 +Meteorological sequences common to vertical soundings data +303032 +(Cloud) +020011 +Cloud amount +Operational + + +1214 +03 +Meteorological sequences common to vertical soundings data +303032 +(Cloud) +020016 +Pressure at top of cloud +Operational + + +1215 +03 +Meteorological sequences common to vertical soundings data +303033 +(Cloud) +020010 +Cloud cover (total) +Operational + + +1216 +03 +Meteorological sequences common to vertical soundings data +303033 +(Cloud) +020016 +Pressure at top of cloud +Operational + + +1217 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +008041 +Data significance += 7 Flight level termination point +Operational + + +1218 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +004025 +Time period or displacement +Minutes +Operational + + +1219 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +004026 +Time period or displacement +Seconds +Operational + + +1220 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +301021 +Latitude/longitude (high accuracy) +Operational + + +1221 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +301122 +Date/time (to hundredths of second) +Operational + + +1222 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +201131 +Change data width +Operational + + +1223 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +202129 +Change scale +Operational + + +1224 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +025069 +Flight level pressure corrections +Operational + + +1225 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +007004 +Pressure +Operational + + +1226 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +013003 +Relative humidity +Operational + + +1227 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +202000 +Change scale +Cancel +Operational + + +1228 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +201000 +Change data width +Cancel +Operational + + +1229 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +002013 +Solar and infrared radiation correction +Operational + + +1230 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +012101 +Temperature/air temperature +Operational + + +1231 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +010009 +Geopotential height +Operational + + +1232 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +102002 +Replicate 2 descriptors 2 times +Operational + + +1233 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +008040 +Flight level significance +Operational + + +1234 +03 +Meteorological sequences common to vertical soundings data +303040 +(Radiosonde duration of flight and termination information) +035035 +Reason for termination +Operational + + +1235 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +002152 +Satellite instrument used in data processing +Operational + + +1236 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +002023 +Satellite-derived wind computation method +Operational + + +1237 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +007004 +Pressure +Operational + + +1238 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +011001 +Wind direction +Operational + + +1239 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +011002 +Wind speed +Operational + + +1240 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +002153 +Satellite channel centre frequency +Operational + + +1241 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +002154 +Satellite channel band width +Operational + + +1242 +03 +Meteorological sequences common to vertical soundings data +303041 +(Wind sequence) +012071 +Coldest cluster temperature +Operational + + +1243 +03 +Meteorological sequences common to vertical soundings data +303050 +(Wind data at a pressure level with radiosonde position) +004086 +Long time period or displacement +Since launch time +Operational + + +1244 +03 +Meteorological sequences common to vertical soundings data +303050 +(Wind data at a pressure level with radiosonde position) +008042 +Extended vertical sounding significance +Operational + + +1245 +03 +Meteorological sequences common to vertical soundings data +303050 +(Wind data at a pressure level with radiosonde position) +007004 +Pressure +Operational + + +1246 +03 +Meteorological sequences common to vertical soundings data +303050 +(Wind data at a pressure level with radiosonde position) +005015 +Latitude displacement (high accuracy) +Since launch site +Operational + + +1247 +03 +Meteorological sequences common to vertical soundings data +303050 +(Wind data at a pressure level with radiosonde position) +006015 +Longitude displacement (high accuracy) +Since launch site +Operational + + +1248 +03 +Meteorological sequences common to vertical soundings data +303050 +(Wind data at a pressure level with radiosonde position) +011001 +Wind direction +Operational + + +1249 +03 +Meteorological sequences common to vertical soundings data +303050 +(Wind data at a pressure level with radiosonde position) +011002 +Wind speed +Operational + + +1250 +03 +Meteorological sequences common to vertical soundings data +303051 +(Wind shear data at a pressure level with radiosonde position) +004086 +Long time period or displacement +Since launch time +Operational + + +1251 +03 +Meteorological sequences common to vertical soundings data +303051 +(Wind shear data at a pressure level with radiosonde position) +008042 +Extended vertical sounding significance +Operational + + +1252 +03 +Meteorological sequences common to vertical soundings data +303051 +(Wind shear data at a pressure level with radiosonde position) +007004 +Pressure +Operational + + +1253 +03 +Meteorological sequences common to vertical soundings data +303051 +(Wind shear data at a pressure level with radiosonde position) +005015 +Latitude displacement (high accuracy) +Since launch site +Operational + + +1254 +03 +Meteorological sequences common to vertical soundings data +303051 +(Wind shear data at a pressure level with radiosonde position) +006015 +Longitude displacement (high accuracy) +Since launch site +Operational + + +1255 +03 +Meteorological sequences common to vertical soundings data +303051 +(Wind shear data at a pressure level with radiosonde position) +011061 +Absolute wind shear in 1 km layer below +Operational + + +1256 +03 +Meteorological sequences common to vertical soundings data +303051 +(Wind shear data at a pressure level with radiosonde position) +011062 +Absolute wind shear in 1 km layer above +Operational + + +1257 +03 +Meteorological sequences common to vertical soundings data +303052 +(Wind data at a height level with radiosonde position) +004086 +Long time period or displacement +Since launch time +Operational + + +1258 +03 +Meteorological sequences common to vertical soundings data +303052 +(Wind data at a height level with radiosonde position) +008042 +Extended vertical sounding significance +Operational + + +1259 +03 +Meteorological sequences common to vertical soundings data +303052 +(Wind data at a height level with radiosonde position) +007009 +Geopotential height +Operational + + +1260 +03 +Meteorological sequences common to vertical soundings data +303052 +(Wind data at a height level with radiosonde position) +005015 +Latitude displacement (high accuracy) +Since launch site +Operational + + +1261 +03 +Meteorological sequences common to vertical soundings data +303052 +(Wind data at a height level with radiosonde position) +006015 +Longitude displacement (high accuracy) +Since launch site +Operational + + +1262 +03 +Meteorological sequences common to vertical soundings data +303052 +(Wind data at a height level with radiosonde position) +011001 +Wind direction +Operational + + +1263 +03 +Meteorological sequences common to vertical soundings data +303052 +(Wind data at a height level with radiosonde position) +011002 +Wind speed +Operational + + +1264 +03 +Meteorological sequences common to vertical soundings data +303053 +(Wind shear data at a height level with radiosonde position) +004086 +Long time period or displacement +Since launch time +Operational + + +1265 +03 +Meteorological sequences common to vertical soundings data +303053 +(Wind shear data at a height level with radiosonde position) +008042 +Extended vertical sounding significance +Operational + + +1266 +03 +Meteorological sequences common to vertical soundings data +303053 +(Wind shear data at a height level with radiosonde position) +007009 +Geopotential height +Operational + + +1267 +03 +Meteorological sequences common to vertical soundings data +303053 +(Wind shear data at a height level with radiosonde position) +005015 +Latitude displacement (high accuracy) +Since launch site +Operational + + +1268 +03 +Meteorological sequences common to vertical soundings data +303053 +(Wind shear data at a height level with radiosonde position) +006015 +Longitude displacement (high accuracy) +Since launch site +Operational + + +1269 +03 +Meteorological sequences common to vertical soundings data +303053 +(Wind shear data at a height level with radiosonde position) +011061 +Absolute wind shear in 1 km layer below +Operational + + +1270 +03 +Meteorological sequences common to vertical soundings data +303053 +(Wind shear data at a height level with radiosonde position) +011062 +Absolute wind shear in 1 km layer above +Operational + + +1271 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +004086 +Long time period or displacement +Since launch time +Operational + + +1272 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +008042 +Extended vertical sounding significance +Operational + + +1273 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +007004 +Pressure +Operational + + +1274 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +010009 +Geopotential height +Operational + + +1275 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +005015 +Latitude displacement (high accuracy) +Since launch site +Operational + + +1276 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +006015 +Longitude displacement (high accuracy) +Since launch site +Operational + + +1277 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +012101 +Temperature/air temperature +Scale: 2 +Operational + + +1278 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +012103 +Dewpoint temperature +Scale: 2 +Operational + + +1279 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +011001 +Wind direction +Operational + + +1280 +03 +Meteorological sequences common to vertical soundings data +303054 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position) +011002 +Wind speed +Operational + + +1281 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +004086 +Long time period or displacement +Since launch time +Operational + + +1282 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +008042 +Extended vertical sounding significance +Operational + + +1283 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +007009 +Geopotential height +Operational + + +1284 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +005015 +Latitude displacement (high accuracy) +Since launch site +Operational + + +1285 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +006015 +Longitude displacement (high accuracy) +Since launch site +Operational + + +1286 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +012101 +Temperature/air temperature +Scale: 2 +Operational + + +1287 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +013009 +Relative humidity +Operational + + +1288 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +012103 +Dewpoint temperature +Scale: 2 +Operational + + +1289 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +011001 +Wind direction +Operational + + +1290 +03 +Meteorological sequences common to vertical soundings data +303055 +(Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position) +011002 +Wind speed +Operational + + +1291 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +004086 +Long time period or displacement +Since launch time +Operational + + +1292 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +008042 +Extended vertical sounding significance +Operational + + +1293 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +207001 +Increase scale, reference value and data width +Operational + + +1294 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +007004 +Pressure +Scale: 0 +Operational + + +1295 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +010009 +Geopotential height +Scale: 1 +Operational + + +1296 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +1297 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +005015 +Latitude displacement (high accuracy) +Since launch site +Operational + + +1298 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +006015 +Longitude displacement (high accuracy) +Since launch site +Operational + + +1299 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +012101 +Temperature/air temperature +Scale: 2 +Operational + + +1300 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +012103 +Dewpoint temperature +Scale: 2 +Operational + + +1301 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +011001 +Wind direction +Operational + + +1302 +03 +Meteorological sequences common to vertical soundings data +303056 +(Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height) +011002 +Wind speed +Operational + + +1303 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003005 +Horizontal width of screen or shield (x) +Operational + + +1304 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003006 +Horizontal depth of screen or shield (y) +Operational + + +1305 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003007 +Vertical height of screen or shield (z) +Operational + + +1306 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +002096 +Type of temperature sensor +Operational + + +1307 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003022 +Instrument owner +Operational + + +1308 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003003 +Thermometer/hygrometer housing +Operational + + +1309 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003020 +Material for thermometer/hygrometer housing +Operational + + +1310 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003004 +Type of screen/shelter/radiation shield +Operational + + +1311 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003023 +Configuration of louvres for thermometer/hygrometer screen +Operational + + +1312 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003008 +Artificially ventilated screen or shield +Operational + + +1313 +03 +Meteorological sequences common to vertical soundings data +303099 +(Metadata common to temperature/humidity sensors) +003009 +Amount of forced ventilation at time of reading +Operational + + +1314 +04 +Meteorological sequences common to satellite observations +304001 +(Cloud top pressure, temperature, wind) +008003 +Vertical significance (satellite observations) +Operational + + +1315 +04 +Meteorological sequences common to satellite observations +304001 +(Cloud top pressure, temperature, wind) +010004 +Pressure +Operational + + +1316 +04 +Meteorological sequences common to satellite observations +304001 +(Cloud top pressure, temperature, wind) +012001 +Temperature/air temperature +Operational + + +1317 +04 +Meteorological sequences common to satellite observations +304001 +(Cloud top pressure, temperature, wind) +011001 +Wind direction +Operational + + +1318 +04 +Meteorological sequences common to satellite observations +304001 +(Cloud top pressure, temperature, wind) +011002 +Wind speed +Operational + + +1319 +04 +Meteorological sequences common to satellite observations +304002 +(Cloud top pressure, wind) +008003 +Vertical significance (satellite observations) +Operational + + +1320 +04 +Meteorological sequences common to satellite observations +304002 +(Cloud top pressure, wind) +010004 +Pressure +Operational + + +1321 +04 +Meteorological sequences common to satellite observations +304002 +(Cloud top pressure, wind) +011001 +Wind direction +Operational + + +1322 +04 +Meteorological sequences common to satellite observations +304002 +(Cloud top pressure, wind) +011002 +Wind speed +Operational + + +1323 +04 +Meteorological sequences common to satellite observations +304003 +(Surface temperature) +008003 +Vertical significance (satellite observations) +Operational + + +1324 +04 +Meteorological sequences common to satellite observations +304003 +(Surface temperature) +012001 +Temperature/air temperature +Operational + + +1325 +04 +Meteorological sequences common to satellite observations +304004 +(Cloud top pressure, cloud cover, temperature) +008003 +Vertical significance (satellite observations) +Operational + + +1326 +04 +Meteorological sequences common to satellite observations +304004 +(Cloud top pressure, cloud cover, temperature) +010004 +Pressure +Operational + + +1327 +04 +Meteorological sequences common to satellite observations +304004 +(Cloud top pressure, cloud cover, temperature) +020010 +Cloud cover (total) +Operational + + +1328 +04 +Meteorological sequences common to satellite observations +304004 +(Cloud top pressure, cloud cover, temperature) +012001 +Temperature/air temperature +Operational + + +1329 +04 +Meteorological sequences common to satellite observations +304005 +(Layer mean relative humidity) +002024 +Integrated mean humidity computational method +Operational + + +1330 +04 +Meteorological sequences common to satellite observations +304005 +(Layer mean relative humidity) +007004 +Pressure +Define layer +Operational + + +1331 +04 +Meteorological sequences common to satellite observations +304005 +(Layer mean relative humidity) +007004 +Pressure +Operational + + +1332 +04 +Meteorological sequences common to satellite observations +304005 +(Layer mean relative humidity) +013003 +Relative humidity +Operational + + +1333 +04 +Meteorological sequences common to satellite observations +304006 +(Radiation) +014001 +Long-wave radiation, integrated over 24 hours +Outgoing long-wave radiation +Operational + + +1334 +04 +Meteorological sequences common to satellite observations +304006 +(Radiation) +014001 +Long-wave radiation, integrated over 24 hours +Incoming long-wave radiation +Operational + + +1335 +04 +Meteorological sequences common to satellite observations +304006 +(Radiation) +014003 +Short-wave radiation, integrated over 24 hours +Outgoing short-wave radiation +Operational + + +1336 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +002163 +Height assignment method +Operational + + +1337 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +002164 +Tracer correlation method +Operational + + +1338 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +008012 +Land/sea qualifier +Operational + + +1339 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +007024 +Satellite zenith angle +Operational + + +1340 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +002057 +Origin of first-guess information for GOES-I/M soundings +Operational + + +1341 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +008021 +Time significance +Operational + + +1342 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004001 +Year +Operational + + +1343 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004002 +Month +Operational + + +1344 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004003 +Day +Operational + + +1345 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004004 +Hour +Operational + + +1346 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +008021 +Time significance +Operational + + +1347 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004024 +Time period or displacement +Operational + + +1348 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +110004 +Replicate 10 descriptors 4 times +Operational + + +1349 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +008021 +Time significance +Operational + + +1350 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004004 +Hour +Operational + + +1351 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004005 +Minute +Operational + + +1352 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004006 +Second +Operational + + +1353 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +008021 +Time significance +Operational + + +1354 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004004 +Hour +Operational + + +1355 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004005 +Minute +Operational + + +1356 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +004006 +Second +Operational + + +1357 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +011001 +Wind direction +Operational + + +1358 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +011002 +Wind speed +Operational + + +1359 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +103010 +Replicate 3 descriptors 10 times +Operational + + +1360 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +002163 +Height assignment method +Operational + + +1361 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +007004 +Pressure +Operational + + +1362 +04 +Meteorological sequences common to satellite observations +304011 +(GOES-I/M info) +012001 +Temperature/air temperature +Operational + + +1363 +04 +Meteorological sequences common to satellite observations +304030 +(Location of platform) +027031 +In direction of 0 degrees longitude, distance from the Earth's centre +Operational + + +1364 +04 +Meteorological sequences common to satellite observations +304030 +(Location of platform) +028031 +In direction 90 degrees East, distance from the Earth's centre +Operational + + +1365 +04 +Meteorological sequences common to satellite observations +304030 +(Location of platform) +010031 +In direction of the North Pole, distance from the Earth's centre +Operational + + +1366 +04 +Meteorological sequences common to satellite observations +304031 +(Speed of platform) +001041 +Absolute platform velocity - first component +Operational + + +1367 +04 +Meteorological sequences common to satellite observations +304031 +(Speed of platform) +001042 +Absolute platform velocity - second component +Operational + + +1368 +04 +Meteorological sequences common to satellite observations +304031 +(Speed of platform) +001043 +Absolute platform velocity - third component +Operational + + +1369 +04 +Meteorological sequences common to satellite observations +304032 +(Cloud fraction) +002153 +Satellite channel centre frequency +Operational + + +1370 +04 +Meteorological sequences common to satellite observations +304032 +(Cloud fraction) +002154 +Satellite channel band width +Operational + + +1371 +04 +Meteorological sequences common to satellite observations +304032 +(Cloud fraction) +020081 +Cloud amount in segment +Operational + + +1372 +04 +Meteorological sequences common to satellite observations +304032 +(Cloud fraction) +020082 +Amount segment cloud free +Operational + + +1373 +04 +Meteorological sequences common to satellite observations +304032 +(Cloud fraction) +020012 +Cloud type +Operational + + +1374 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +002152 +Satellite instrument used in data processing +Operational + + +1375 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +002166 +Radiance type +Operational + + +1376 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +002167 +Radiance computational method +Operational + + +1377 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +002153 +Satellite channel centre frequency +Operational + + +1378 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +002154 +Satellite channel band width +Operational + + +1379 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +012075 +Spectral radiance +Operational + + +1380 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +012076 +Radiance +Operational + + +1381 +04 +Meteorological sequences common to satellite observations +304033 +(Clear sky radiance) +012063 +Brightness temperature +Operational + + +1382 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +102004 +Replicate 2 descriptors 4 times +Operational + + +1383 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +027001 +Latitude (high accuracy) +Operational + + +1384 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +028001 +Longitude (high accuracy) +Operational + + +1385 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +007022 +Solar elevation +Operational + + +1386 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +005043 +Field of view number +Operational + + +1387 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +020010 +Cloud cover (total) +Operational + + +1388 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +020016 +Pressure at top of cloud +Operational + + +1389 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +033003 +Quality information +Operational + + +1390 +04 +Meteorological sequences common to satellite observations +304034 +(Latitude/longitude, solar elevation, number of layers) +010040 +Number of retrieved layers +Operational + + +1391 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +002153 +Satellite channel centre frequency +Deprecated + + +1392 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +002154 +Satellite channel band width +Deprecated + + +1393 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +012063 +Brightness temperature +Deprecated + + +1394 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +008001 +Meteorological feature +Pixel type: clear +Deprecated + + +1395 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +012063 +Brightness temperature +Clear +Deprecated + + +1396 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +008001 +Meteorological feature +Pixel type: cloudy +Deprecated + + +1397 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +012063 +Brightness temperature +Cloudy +Deprecated + + +1398 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +008001 +Meteorological feature +Cancel +Deprecated + + +1399 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +008003 +Vertical significance (satellite observations) +Low cloud +Deprecated + + +1400 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +012063 +Brightness temperature +Low cloud +Deprecated + + +1401 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +008003 +Vertical significance (satellite observations) +Mid cloud +Deprecated + + +1402 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +012063 +Brightness temperature +Mid cloud +Deprecated + + +1403 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +008003 +Vertical significance (satellite observations) +High cloud +Deprecated + + +1404 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +012063 +Brightness temperature +High cloud +Deprecated + + +1405 +04 +Meteorological sequences common to satellite observations +304035 +(All sky radiance data) +008003 +Vertical significance (satellite observations) +Cancel +Deprecated + + +1406 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +020082 +Amount segment cloud free +Operational + + +1407 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +008012 +Land/sea qualifier +Sea +Operational + + +1408 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +020082 +Amount segment cloud free +Sea +Operational + + +1409 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +008012 +Land/sea qualifier +Cancel +Operational + + +1410 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +020081 +Cloud amount in segment +Operational + + +1411 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +008003 +Vertical significance (satellite observations) +Low cloud +Operational + + +1412 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +020081 +Cloud amount in segment +Low cloud +Operational + + +1413 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +008003 +Vertical significance (satellite observations) +Mid cloud +Operational + + +1414 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +020081 +Cloud amount in segment +Mid cloud +Operational + + +1415 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +008003 +Vertical significance (satellite observations) +High cloud +Operational + + +1416 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +020081 +Cloud amount in segment +High cloud +Operational + + +1417 +04 +Meteorological sequences common to satellite observations +304036 +(Cloud coverage) +008003 +Vertical significance (satellite observations) +Cancel +Operational + + +1418 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +002153 +Satellite channel centre frequency +Operational + + +1419 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +002154 +Satellite channel band width +Operational + + +1420 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +012063 +Brightness temperature +Operational + + +1421 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +008011 +Meteorological feature +Pixel type: clear +Operational + + +1422 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +012063 +Brightness temperature +Clear +Operational + + +1423 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +008011 +Meteorological feature +Pixel type: cloudy +Operational + + +1424 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +012063 +Brightness temperature +Cloudy +Operational + + +1425 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +008011 +Meteorological feature +Cancel +Operational + + +1426 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +008003 +Vertical significance (satellite observations) +Low cloud +Operational + + +1427 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +012063 +Brightness temperature +Low cloud +Operational + + +1428 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +008003 +Vertical significance (satellite observations) +Mid cloud +Operational + + +1429 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +012063 +Brightness temperature +Mid cloud +Operational + + +1430 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +008003 +Vertical significance (satellite observations) +High cloud +Operational + + +1431 +04 +Meteorological sequences common to satellite observations +304037 +(All sky radiance data) +012063 +Brightness temperature +High cloud +Operational + + +1432 +04 +Meteorological sequences common to satellite observations +304039 +(Radiance in channel) +201136 +Change data width +Add 8 to width +Operational + + +1433 +04 +Meteorological sequences common to satellite observations +304039 +(Radiance in channel) +005042 +Channel number +Operational + + +1434 +04 +Meteorological sequences common to satellite observations +304039 +(Radiance in channel) +201000 +Change data width +Cancel +Operational + + +1435 +04 +Meteorological sequences common to satellite observations +304039 +(Radiance in channel) +014046 +Scaled radiance +Operational + + +1436 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +025140 +Start channel +Operational + + +1437 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +025141 +End channel +Operational + + +1438 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +040026 +Score quantization factor +Operational + + +1439 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +040016 +Residual RMS in band +Operational + + +1440 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +025062 +Database identification +Operational + + +1441 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +101000 +Delayed replication of 1 descriptor +Operational + + +1442 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +031002 +Extended delayed descriptor replication factor +Operational + + +1443 +04 +Meteorological sequences common to satellite observations +304040 +(Principal component score in band) +040017 +Non-normalized principal component score +Operational + + +1444 +05 +Meteorological or hydrological sequences common to hydrological observations +305001 +(SADC-HYCOS single measurement) +011001 +Wind direction +Operational + + +1445 +05 +Meteorological or hydrological sequences common to hydrological observations +305001 +(SADC-HYCOS single measurement) +011002 +Wind speed +Operational + + +1446 +05 +Meteorological or hydrological sequences common to hydrological observations +305001 +(SADC-HYCOS single measurement) +013060 +Total accumulated precipitation +Operational + + +1447 +05 +Meteorological or hydrological sequences common to hydrological observations +305001 +(SADC-HYCOS single measurement) +013071 +Upstream water level +Operational + + +1448 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +301012 +Hour, minute +Operational + + +1449 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +012001 +Temperature/air temperature +Operational + + +1450 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013003 +Relative humidity +Operational + + +1451 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +014051 +Direct solar radiation integrated over last hour +Operational + + +1452 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013060 +Total accumulated precipitation +Operational + + +1453 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013072 +Downstream water level +Operational + + +1454 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013080 +Water pH +Operational + + +1455 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013081 +Water conductivity +Operational + + +1456 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013082 +Water temperature +Operational + + +1457 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013083 +Dissolved oxygen +Operational + + +1458 +05 +Meteorological or hydrological sequences common to hydrological observations +305002 +(SADC-HYCOS environmental measurement) +013084 +Turbidity +Operational + + +1459 +05 +Meteorological or hydrological sequences common to hydrological observations +305003 +(SADC-HYCOS measurement array definition) +301012 +Hour, minute +First single measurement minus increment +Operational + + +1460 +05 +Meteorological or hydrological sequences common to hydrological observations +305003 +(SADC-HYCOS measurement array definition) +004065 +Short time increment +Time interval between measurements +Operational + + +1461 +05 +Meteorological or hydrological sequences common to hydrological observations +305003 +(SADC-HYCOS measurement array definition) +101000 +Delayed replication of 1 descriptor +Operational + + +1462 +05 +Meteorological or hydrological sequences common to hydrological observations +305003 +(SADC-HYCOS measurement array definition) +031001 +Delayed descriptor replication factor +Operational + + +1463 +05 +Meteorological or hydrological sequences common to hydrological observations +305003 +(SADC-HYCOS measurement array definition) +305001 +SADC-HYCOS single measurement +Operational + + +1464 +05 +Meteorological or hydrological sequences common to hydrological observations +305004 +(SADC-HYCOS report) +301030 +Identification - with physical location +Operational + + +1465 +05 +Meteorological or hydrological sequences common to hydrological observations +305004 +(SADC-HYCOS report) +305002 +SADC-HYCOS environmental measurement +Operational + + +1466 +05 +Meteorological or hydrological sequences common to hydrological observations +305004 +(SADC-HYCOS report) +305003 +SADC-HYCOS measurement array definition +Operational + + +1467 +05 +Meteorological or hydrological sequences common to hydrological observations +305006 +(MEDHYCOS measurement) +013072 +Downstream water level +Operational + + +1468 +05 +Meteorological or hydrological sequences common to hydrological observations +305006 +(MEDHYCOS measurement) +013082 +Water temperature +Operational + + +1469 +05 +Meteorological or hydrological sequences common to hydrological observations +305006 +(MEDHYCOS measurement) +013019 +Total precipitation past 1 hour +Operational + + +1470 +05 +Meteorological or hydrological sequences common to hydrological observations +305006 +(MEDHYCOS measurement) +012001 +Temperature/air temperature +Operational + + +1471 +05 +Meteorological or hydrological sequences common to hydrological observations +305006 +(MEDHYCOS measurement) +013073 +Maximum water level +Operational + + +1472 +05 +Meteorological or hydrological sequences common to hydrological observations +305006 +(MEDHYCOS measurement) +013060 +Total accumulated precipitation +Operational + + +1473 +05 +Meteorological or hydrological sequences common to hydrological observations +305007 +(MEDHYCOS report) +301029 +Identification +Operational + + +1474 +05 +Meteorological or hydrological sequences common to hydrological observations +305007 +(MEDHYCOS report) +301012 +Hour, minute +Time of first measurement +Operational + + +1475 +05 +Meteorological or hydrological sequences common to hydrological observations +305007 +(MEDHYCOS report) +004065 +Short time increment +Time interval between measurements +Operational + + +1476 +05 +Meteorological or hydrological sequences common to hydrological observations +305007 +(MEDHYCOS report) +101000 +Delayed replication of 1 descriptor +Operational + + +1477 +05 +Meteorological or hydrological sequences common to hydrological observations +305007 +(MEDHYCOS report) +031001 +Delayed descriptor replication factor +Operational + + +1478 +05 +Meteorological or hydrological sequences common to hydrological observations +305007 +(MEDHYCOS report) +305006 +MEDHYCOS measurement +Single measurement +Operational + + +1479 +05 +Meteorological or hydrological sequences common to hydrological observations +305008 +(AOCHYCOS - Chad measurement) +305006 +MEDHYCOS measurement +Same as MEDHYCOS type measurement +Operational + + +1480 +05 +Meteorological or hydrological sequences common to hydrological observations +305008 +(AOCHYCOS - Chad measurement) +012030 +Soil temperature +At -50 cm +Operational + + +1481 +05 +Meteorological or hydrological sequences common to hydrological observations +305009 +(AOCHYCOS - Chad report) +301029 +Identification +Operational + + +1482 +05 +Meteorological or hydrological sequences common to hydrological observations +305009 +(AOCHYCOS - Chad report) +301012 +Hour, minute +Time of first measurement +Operational + + +1483 +05 +Meteorological or hydrological sequences common to hydrological observations +305009 +(AOCHYCOS - Chad report) +004065 +Short time increment +Time interval between measurements +Operational + + +1484 +05 +Meteorological or hydrological sequences common to hydrological observations +305009 +(AOCHYCOS - Chad report) +101000 +Delayed replication of 1 descriptor +Operational + + +1485 +05 +Meteorological or hydrological sequences common to hydrological observations +305009 +(AOCHYCOS - Chad report) +031001 +Delayed descriptor replication factor +Operational + + +1486 +05 +Meteorological or hydrological sequences common to hydrological observations +305009 +(AOCHYCOS - Chad report) +305008 +AOCHYCOS - Chad measurement +Single measurement +Operational + + +1487 +05 +Meteorological or hydrological sequences common to hydrological observations +305010 +(MEDHYCOS-Measurement type 2) +305008 +AOCHYCOS - Chad measurement +Same as AOCHYCOS type measurement +Operational + + +1488 +05 +Meteorological or hydrological sequences common to hydrological observations +305010 +(MEDHYCOS-Measurement type 2) +002091 +Entry sensor 4/20 mA +No. 1 +Operational + + +1489 +05 +Meteorological or hydrological sequences common to hydrological observations +305010 +(MEDHYCOS-Measurement type 2) +002091 +Entry sensor 4/20 mA +No. 2 +Operational + + +1490 +05 +Meteorological or hydrological sequences common to hydrological observations +305011 +(MEDHYCOS report type 2) +301029 +Identification +Operational + + +1491 +05 +Meteorological or hydrological sequences common to hydrological observations +305011 +(MEDHYCOS report type 2) +301012 +Hour, minute +Time of first measurement +Operational + + +1492 +05 +Meteorological or hydrological sequences common to hydrological observations +305011 +(MEDHYCOS report type 2) +004065 +Short time increment +Time interval between measurements +Operational + + +1493 +05 +Meteorological or hydrological sequences common to hydrological observations +305011 +(MEDHYCOS report type 2) +101000 +Delayed replication of 1 descriptor +Operational + + +1494 +05 +Meteorological or hydrological sequences common to hydrological observations +305011 +(MEDHYCOS report type 2) +031001 +Delayed descriptor replication factor +Operational + + +1495 +05 +Meteorological or hydrological sequences common to hydrological observations +305011 +(MEDHYCOS report type 2) +305010 +MEDHYCOS-Measurement type 2 +Single measurement +Operational + + +1496 +05 +Meteorological or hydrological sequences common to hydrological observations +305016 +(Meteorological parameters associated with hydrological data) +014021 +Global solar radiation, integrated over period specified +Operational + + +1497 +05 +Meteorological or hydrological sequences common to hydrological observations +305016 +(Meteorological parameters associated with hydrological data) +007004 +Pressure +Atmospheric pressure +Operational + + +1498 +05 +Meteorological or hydrological sequences common to hydrological observations +305016 +(Meteorological parameters associated with hydrological data) +013003 +Relative humidity +Operational + + +1499 +05 +Meteorological or hydrological sequences common to hydrological observations +305016 +(Meteorological parameters associated with hydrological data) +011002 +Wind speed +Operational + + +1500 +05 +Meteorological or hydrological sequences common to hydrological observations +305016 +(Meteorological parameters associated with hydrological data) +011001 +Wind direction +Operational + + +1501 +05 +Meteorological or hydrological sequences common to hydrological observations +305016 +(Meteorological parameters associated with hydrological data) +011041 +Maximum wind gust speed +Operational + + +1502 +05 +Meteorological or hydrological sequences common to hydrological observations +305016 +(Meteorological parameters associated with hydrological data) +011043 +Maximum wind gust direction +Operational + + +1503 +05 +Meteorological or hydrological sequences common to hydrological observations +305017 +(Water quality measurement) +013080 +Water pH +Operational + + +1504 +05 +Meteorological or hydrological sequences common to hydrological observations +305017 +(Water quality measurement) +013081 +Water conductivity +Operational + + +1505 +05 +Meteorological or hydrological sequences common to hydrological observations +305017 +(Water quality measurement) +013083 +Dissolved oxygen +Operational + + +1506 +05 +Meteorological or hydrological sequences common to hydrological observations +305017 +(Water quality measurement) +013085 +Oxydation reduction potential (ORP) +Operational + + +1507 +05 +Meteorological or hydrological sequences common to hydrological observations +305017 +(Water quality measurement) +013084 +Turbidity +Operational + + +1508 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +301029 +Identification +Operational + + +1509 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +301012 +Hour, minute +Time of first measurement +Operational + + +1510 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +004065 +Short time increment +Hour increment +Operational + + +1511 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +103000 +Delayed replication of 3 descriptors +Operational + + +1512 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +031001 +Delayed descriptor replication factor +Operational + + +1513 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +305008 +AOCHYCOS-Chad measurement +Same as AOCHYCOS type measurement +Operational + + +1514 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +305016 +Meteorological parameters associated with hydrological data +Operational + + +1515 +05 +Meteorological or hydrological sequences common to hydrological observations +305018 +(MEDHYCOS report with meteorology and water quality data) +305017 +Water quality measurement +Operational + + +1516 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306001 +(Depth, temperature) +002032 +Indicator for digitization +Operational + + +1517 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306001 +(Depth, temperature) +102000 +Delayed replication of 2 descriptors +Operational + + +1518 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306001 +(Depth, temperature) +031001 +Delayed descriptor replication factor +Operational + + +1519 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306001 +(Depth, temperature) +007062 +Depth below sea/water surface +Operational + + +1520 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306001 +(Depth, temperature) +022042 +Sea/water temperature +Operational + + +1521 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306002 +(Current) +002031 +Duration and time of current measurement +Operational + + +1522 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306002 +(Current) +022004 +Direction of current +Operational + + +1523 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306002 +(Current) +022031 +Speed of current +Operational + + +1524 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306003 +(Surface wind and temperature) +002002 +Type of instrumentation for wind measurement +Operational + + +1525 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306003 +(Surface wind and temperature) +011011 +Wind direction at 10 m +Operational + + +1526 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306003 +(Surface wind and temperature) +011012 +Wind speed at 10 m +Operational + + +1527 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306003 +(Surface wind and temperature) +012004 +Air temperature at 2 m +Operational + + +1528 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306004 +(Depth, temperature, salinity) +002032 +Indicator for digitization +Operational + + +1529 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306004 +(Depth, temperature, salinity) +002033 +Method of salinity/depth measurement +Operational + + +1530 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306004 +(Depth, temperature, salinity) +103000 +Delayed replication of 3 descriptors +Operational + + +1531 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306004 +(Depth, temperature, salinity) +031001 +Delayed descriptor replication factor +Operational + + +1532 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306004 +(Depth, temperature, salinity) +007062 +Depth below sea/water surface +Operational + + +1533 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306004 +(Depth, temperature, salinity) +022043 +Sea/water temperature +Operational + + +1534 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306004 +(Depth, temperature, salinity) +022062 +Salinity +Operational + + +1535 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306005 +002031 +Duration and time of current measurement +Operational + + +1536 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306005 +103000 +Delayed replication of 3 descriptors +Operational + + +1537 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306005 +031001 +Delayed descriptor replication factor +Operational + + +1538 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306005 +007062 +Depth below sea/water surface +Operational + + +1539 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306005 +022004 +Direction of current +Operational + + +1540 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306005 +022031 +Speed of current +Operational + + +1541 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306006 +(Under water sounding (optional) parameters) +306003 +Surface wind and temperature +Operational + + +1542 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306006 +(Under water sounding (optional) parameters) +306002 +Current +Operational + + +1543 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306006 +(Under water sounding (optional) parameters) +022063 +Total water depth +Operational + + +1544 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306007 +(Buoy spare block parameters) +001012 +Direction of motion of moving observing platform +Operational + + +1545 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306007 +(Buoy spare block parameters) +001014 +Platform drift speed (high precision) +Operational + + +1546 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306007 +(Buoy spare block parameters) +306008 +Buoy instrumentation parameters +Operational + + +1547 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306007 +(Buoy spare block parameters) +004024 +Time period or displacement +Operational + + +1548 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306007 +(Buoy spare block parameters) +027003 +Alternate latitude (coarse accuracy) +Operational + + +1549 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306007 +(Buoy spare block parameters) +028003 +Alternate longitude (coarse accuracy) +Operational + + +1550 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306008 +(Buoy instrumentation parameters) +002034 +Drogue type +Operational + + +1551 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306008 +(Buoy instrumentation parameters) +002035 +Cable length +Operational + + +1552 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306008 +(Buoy instrumentation parameters) +002036 +Buoy type +Operational + + +1553 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306011 +(Sequence for representation of tide station identification, method of transmission, time the message is transmitted and reference time for reports in a time series) +301021 +Latitude/longitude (high accuracy) +Operational + + +1554 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306011 +(Sequence for representation of tide station identification, method of transmission, time the message is transmitted and reference time for reports in a time series) +001075 +Tide station identification +Alphanumeric ID (5 characters) +Operational + + +1555 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306011 +(Sequence for representation of tide station identification, method of transmission, time the message is transmitted and reference time for reports in a time series) +002147 +Method of transmission to collection centre +Operational + + +1556 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306011 +(Sequence for representation of tide station identification, method of transmission, time the message is transmitted and reference time for reports in a time series) +301011 +Year, month, day +Operational + + +1557 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306011 +(Sequence for representation of tide station identification, method of transmission, time the message is transmitted and reference time for reports in a time series) +301013 +Hour, minute, second +Operational + + +1558 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306012 +(Sequence for representation of sensor type, significant qualifier for sensor and status of operation) +002007 +Type of sensor for water level measuring instrument +Operational + + +1559 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306012 +(Sequence for representation of sensor type, significant qualifier for sensor and status of operation) +008015 +Significant qualifier for sensor +Operational + + +1560 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306012 +(Sequence for representation of sensor type, significant qualifier for sensor and status of operation) +008032 +Status of operation +Operational + + +1561 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306012 +(Sequence for representation of sensor type, significant qualifier for sensor and status of operation) +306029 +Sequence for representation of tsunameter sampling information for water column heights in the time series report +Operational + + +1562 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +306012 +Sequence for representation of sensor type, significant qualifier for sensor and status of operation +Operational + + +1563 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +301011 +Year, month, day +Reference date for the time series +Operational + + +1564 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +301013 +Hour, minute, second +Reference time for the time series +Operational + + +1565 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +022120 +Tide station automated water level check +Operational + + +1566 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +022121 +Tide station manual water level check +Operational + + +1567 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +004015 +Time increment +Added to reset the reference time +Operational + + +1568 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +004065 +Short time increment +Added to each data value in the time series +Operational + + +1569 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +102000 +Delayed replication of 2 descriptors +Operational + + +1570 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +031001 +Delayed descriptor replication factor +Operational + + +1571 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +022038 +Tidal elevation with respect to local chart datum +Operational + + +1572 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306013 +(Sequence for representation of water level and residual in the time series) +022040 +Meteorological residual tidal elevation (surge or offset) +Operational + + +1573 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +306012 +Sequence for representation of sensor type, significant qualifier for sensor and status of operation +Operational + + +1574 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +301011 +Year, month, day +Reference date for the time series +Operational + + +1575 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +301013 +Hour, minute, second +Reference time for the time series +Operational + + +1576 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +022120 +Tide station automated water level check +Operational + + +1577 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +022121 +Tide station manual water level check +Operational + + +1578 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +004015 +Time increment +Added to reset the reference time +Operational + + +1579 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +004065 +Short time increment +Added to each data value in the time series +Operational + + +1580 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +101000 +Delayed replication of 1 descriptor +Operational + + +1581 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +031001 +Delayed descriptor replication factor +Operational + + +1582 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306014 +(Sequence for representation of water level in the time series, similar to 3 06 013 but with no residual) +022038 +Tidal elevation with respect to local chart datum +Operational + + +1583 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +301011 +Year, month, day +Reference date for the time series +Operational + + +1584 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +301013 +Hour, minute, second +Reference time for the time series +Operational + + +1585 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +010004 +Pressure +Station level +Operational + + +1586 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +010051 +Pressure reduced to mean sea level +Operational + + +1587 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +302032 +Temperature and humidity data +Operational + + +1588 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +1589 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +002002 +Type of instrumentation for wind measurement +Operational + + +1590 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +008021 +Time significance += 2 Time averaged +Operational + + +1591 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +004025 +Time period or displacement +E.g. = 1 for 1 minute, = 10 for 10 minutes +Operational + + +1592 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +011001 +Wind direction +Operational + + +1593 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +011002 +Wind speed +Operational + + +1594 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +004025 +Time period or displacement +In minutes +Operational + + +1595 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +011043 +Maximum wind gust direction +Operational + + +1596 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +011041 +Maximum wind gust speed +Operational + + +1597 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +025026 +Battery voltage (large range) +AWS battery voltage +Operational + + +1598 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306016 +(Sequence for representation of ancillary meteorological data associated with water level data) +012060 +AWS enclosure internal temperature +Operational + + +1599 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +002032 +Indicator for digitization += 0 Fixed sensor depths +Operational + + +1600 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008034 +Temperature/salinity measurement qualifier +Operational + + +1601 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +106000 +Delayed replication of 6 descriptors +Operational + + +1602 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +031002 +Extended delayed descriptor replication factor +Number of depths +Operational + + +1603 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +007065 +Water pressure +In Pa +Operational + + +1604 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008080 +Qualifier for GTSPP quality flag +Operational + + +1605 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +033050 +Global GTSPP quality flag +Operational + + +1606 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +022045 +Sea/water temperature +In K to 3 decimal places +Operational + + +1607 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008080 +Qualifier for GTSPP quality flag +Operational + + +1608 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +033050 +Global GTSPP quality flag +Operational + + +1609 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306017 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008034 +Temperature/salinity measurement qualifier +Set to missing (cancel) +Operational + + +1610 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +002032 +Indicator for digitization += 0 Fixed sensor depths +Operational + + +1611 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008034 +Temperature/salinity measurement qualifier +Operational + + +1612 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +109000 +Delayed replication of 9 descriptors +Operational + + +1613 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +031002 +Extended delayed descriptor replication factor +Number of depths +Operational + + +1614 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +007065 +Water pressure +In Pa +Operational + + +1615 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008080 +Qualifier for GTSPP quality flag +Operational + + +1616 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +033050 +Global GTSPP quality flag +Operational + + +1617 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +022045 +Sea/water temperature +In K to 3 decimal places +Operational + + +1618 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008080 +Qualifier for GTSPP quality flag +Operational + + +1619 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +033050 +Global GTSPP quality flag +Operational + + +1620 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +022064 +Salinity +Operational + + +1621 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008080 +Qualifier for GTSPP quality flag +Operational + + +1622 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +033050 +Global GTSPP quality flag +Operational + + +1623 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306018 +(Subsurface temperature profile (high accuracy/precision) with quality flags) +008034 +Temperature/salinity measurement qualifier +Set to missing (cancel) +Operational + + +1624 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +001075 +Tide station identification +Alphanumeric +Operational + + +1625 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +301011 +Year, month, day +Operational + + +1626 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +301012 +Hour, minute +Operational + + +1627 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +022042 +Sea/water temperature +Operational + + +1628 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +022120 +Tide station automated water level check +Operational + + +1629 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +022121 +Tide station manual water level check +Operational + + +1630 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +004015 +Time increment +Minutes +(see Note 1) +Operational + + +1631 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306019 +(Tide report identification, water level checks, time increments) +004065 +Short time increment +Operational + + +1632 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) (see Note 2) +001075 +Tide station identification +Alphanumeric +Operational + + +1633 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) +301011 +Year, month, day +Operational + + +1634 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) +301012 +Hour, minute +Operational + + +1635 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) +022042 +Sea/water temperature +Operational + + +1636 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) +022120 +Tide station automated water level check +Operational + + +1637 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) +022121 +Tide station manual water level check +Operational + + +1638 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) +004075 +Short time period or displacement +Operational + + +1639 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306020 +(Tide report identification, water level checks, time period or displacement, time increment) +004065 +Short time increment +Operational + + +1640 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306021 +(Meteorological parameters in tide station) +001075 +Tide station identification +Alphanumeric +Operational + + +1641 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306021 +(Meteorological parameters in tide station) +301011 +Year, month, day +Operational + + +1642 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306021 +(Meteorological parameters in tide station) +301012 +Hour, minute +Operational + + +1643 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306021 +(Meteorological parameters in tide station) +022122 +Tide station automated meteorological data check +Operational + + +1644 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306021 +(Meteorological parameters in tide station) +022123 +Tide station manual meteorological data check +Operational + + +1645 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306021 +(Meteorological parameters in tide station) +012001 +Temperature/air temperature +Operational + + +1646 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306021 +(Meteorological parameters in tide station) +303002 +Wind at pressure level +Operational + + +1647 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306022 +(Tidal elevation) +001075 +Tide station identification +Operational + + +1648 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306022 +(Tidal elevation) +301011 +Year, month, day +Operational + + +1649 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306022 +(Tidal elevation) +301012 +Hour, minute +Operational + + +1650 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306022 +(Tidal elevation) +022038 +Tidal elevation with respect to local chart datum +Operational + + +1651 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306022 +(Tidal elevation) +022039 +Meteorological residual tidal elevation (surge or offset) +Operational + + +1652 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +001015 +Station or site name +Operational + + +1653 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +301023 +Latitude/longitude (coarse accuracy) +Operational + + +1654 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +301011 +Year, month, day +Operational + + +1655 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +301012 +Hour, minute +Operational + + +1656 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +022038 +Tidal elevation with respect to local chart datum +Operational + + +1657 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +022039 +Meteorological residual tidal elevation (surge or offset) +Operational + + +1658 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +022120 +Tide station automated water level check +Operational + + +1659 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306023 +022121 +Tide station manual water level check +Operational + + +1660 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306024 +(Tide elevation series) (see Note 3) +306020 +Tide report identification, water level checks, time period or displacement, time increment +Operational + + +1661 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306024 +(Tide elevation series) +102006 +Replicate 2 descriptors 6 times +Operational + + +1662 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306024 +(Tide elevation series) +022038 +Tidal elevation with respect to local chart datum +Operational + + +1663 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306024 +(Tide elevation series) +022039 +Meteorological residual tidal elevation (surge or offset) +Operational + + +1664 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306025 +(Tide elevation series) +306019 +Tide report identification, water level checks, time increments +Operational + + +1665 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306025 +(Tide elevation series) +102006 +Replicate 2 descriptors 6 times +Operational + + +1666 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306025 +(Tide elevation series) +022038 +Tidal elevation with respect to local chart datum +Operational + + +1667 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306025 +(Tide elevation series) +022039 +Meteorological residual tidal elevation (surge or offset) +Operational + + +1668 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306027 +(Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system) +001005 +Buoy/platform identifier +Operational + + +1669 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306027 +(Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system) +001052 +Platform transmitter ID +Operational + + +1670 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306027 +(Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system) +002047 +Deep-ocean tsunameter type +Operational + + +1671 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306027 +(Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system) +301011 +Year, month, day +Time the message is transmitted to the ground system +Operational + + +1672 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306027 +(Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system) +301013 +Hour, minute, second +Operational + + +1673 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306028 +(Sequence for representation of time of observation and DART buoy position daily report) +306027 +Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system +Operational + + +1674 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306028 +(Sequence for representation of time of observation and DART buoy position daily report) +301011 +Year, month, day +Observation time +Operational + + +1675 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306028 +(Sequence for representation of time of observation and DART buoy position daily report) +301013 +Hour, minute, second +Operational + + +1676 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306028 +(Sequence for representation of time of observation and DART buoy position daily report) +301021 +Latitude/longitude (high accuracy) +Operational + + +1677 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306029 +(Sequence for representation of tsunameter sampling information for water column heights in the time series report) +025170 +Sampling interval (time) +Seconds +Operational + + +1678 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306029 +(Sequence for representation of tsunameter sampling information for water column heights in the time series report) +025171 +Sample averaging period +Seconds +Operational + + +1679 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306029 +(Sequence for representation of tsunameter sampling information for water column heights in the time series report) +025172 +Number of samples +Operational + + +1680 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +306027 +Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system +Operational + + +1681 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +306029 +Sequence for representation of tsunameter sampling information for water column heights in the time series report +Operational + + +1682 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +111000 +Delayed replication of 11 descriptors +Operational + + +1683 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +031001 +Delayed descriptor replication factor +Operational + + +1684 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +033002 +Quality information +Message status +Operational + + +1685 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +301011 +Year, month, day +Reference date/time for the time series +Operational + + +1686 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +301013 +Hour, minute, second +Operational + + +1687 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +025025 +Battery voltage +BPR CPU +Operational + + +1688 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +025025 +Battery voltage +Acoustic modem DSP +Operational + + +1689 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +025026 +Battery voltage (large range) +Acoustic modem +Operational + + +1690 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +022185 +BPR transmission count +Operational + + +1691 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +004015 +Time increment +Added to reset the reference time +Operational + + +1692 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +004065 +Short time increment +Added to each data value in the time series +Operational + + +1693 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +101004 +Replicate 1 descriptor 4 times +Operational + + +1694 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306030 +(Sequence for representation of DART buoy standard hourly report) +022182 +Water column height +Operational + + +1695 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +306027 +Sequence for representation of DART buoy identification, transmitter ID, type of tsunameter and the time the message is transmitted to the ground system +Operational + + +1696 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +306029 +Sequence for representation of tsunameter sampling information for water column heights in the time series report +Operational + + +1697 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +001053 +Tsunameter report sequence number triggered by a tsunami event +Operational + + +1698 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +033002 +Quality information +Message status +Operational + + +1699 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +301011 +Year, month, day +Time when tsunami is detected +Operational + + +1700 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +301013 +Hour, minute, second +Operational + + +1701 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +301011 +Year, month, day +Reference date/time for the time series +Operational + + +1702 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +301013 +Hour, minute, second +Operational + + +1703 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +022185 +BPR transmission count +Operational + + +1704 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +022182 +Water column height +Determination of actual value reported in the time series +Operational + + +1705 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +004016 +Time increment +Added to reset the reference time +Operational + + +1706 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +004066 +Short time increment +Added to each data value in the time series +Operational + + +1707 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +101000 +Delayed replication of 1 descriptor +Operational + + +1708 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +031001 +Delayed descriptor replication factor +Operational + + +1709 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306031 +(Sequence for representation of DART buoy tsunami event reports and extended tsunami event reports) +022184 +Water column height deviation from the reference value +Operational + + +1710 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306033 +(Surface salinity) +002033 +Method of salinity/depth measurement +Operational + + +1711 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306033 +(Surface salinity) +007063 +Depth below sea/water surface (cm) +Operational + + +1712 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306033 +(Surface salinity) +022064 +Salinity +Operational + + +1713 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306034 +(Surface current) +002031 +Duration and time of current measurement +Operational + + +1714 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306034 +(Surface current) +003010 +Method of sea/water current measurement +Operational + + +1715 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306034 +(Surface current) +002040 +Method of removing velocity and motion of platform from current +Operational + + +1716 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306034 +(Surface current) +022005 +Direction of sea-surface current +Operational + + +1717 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306034 +(Surface current) +022032 +Speed of sea-surface current +Operational + + +1718 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +112000 +Delayed replication of 12 descriptors +Operational + + +1719 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +031002 +Extended delayed descriptor replication factor +Operational + + +1720 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +007062 +Depth below sea/water surface +In metres +Operational + + +1721 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +008080 +Qualifier for GTSPP quality flag += 13 Depth at a level +Operational + + +1722 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +033050 +Global GTSPP quality flag +Operational + + +1723 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +007065 +Water pressure +Operational + + +1724 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +008080 +Qualifier for GTSPP quality flag += 10 Pressure at a level +Operational + + +1725 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +033050 +Global GTSPP quality flag +Operational + + +1726 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +022043 +Sea/water temperature +Operational + + +1727 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +008080 +Qualifier for GTSPP quality flag += 11 Temperature at a level +Operational + + +1728 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +033050 +Global GTSPP quality flag +Operational + + +1729 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +022064 +Salinity += 12 Salinity at a level +Operational + + +1730 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +008080 +Qualifier for GTSPP quality flag +Operational + + +1731 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306035 +(Temperature and salinity profile) +033050 +Global GTSPP quality flag +Operational + + +1732 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +112000 +Delayed replication of 12 descriptors +Operational + + +1733 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +031002 +Extended delayed descriptor replication factor +Operational + + +1734 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +007062 +Depth below sea/water surface +In metres +Operational + + +1735 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +008080 +Qualifier for GTSPP quality flag += 13 Depth at a level +Operational + + +1736 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +033050 +Global GTSPP quality flag +Operational + + +1737 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +007065 +Water pressure +Operational + + +1738 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +008080 +Qualifier for GTSPP quality flag += 10 Pressure at a level +Operational + + +1739 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +033050 +Global GTSPP quality flag +Operational + + +1740 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +022031 +Speed of current +Operational + + +1741 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +008080 +Qualifier for GTSPP quality flag += 14 Current speed at a level +Operational + + +1742 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +033050 +Global GTSPP quality flag +Operational + + +1743 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +022004 +Direction of current +Operational + + +1744 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +008080 +Qualifier for GTSPP quality flag += 15 Current direction at a level +Operational + + +1745 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306036 +(Current profile) +033050 +Global GTSPP quality flag +Operational + + +1746 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +109000 +Delayed replication of 9 descriptors +Operational + + +1747 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +031002 +Extended delayed descriptor replication factor +Operational + + +1748 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +007062 +Depth below sea / water surface +Operational + + +1749 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +008080 +Qualifier for GTSPP quality flag += 13 Depth at a level +Operational + + +1750 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +033050 +Global GTSPP quality flag +Operational + + +1751 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +007065 +Water pressure +Operational + + +1752 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +008080 +Qualifier for GTSPP quality flag += 10 Pressure at a level +Operational + + +1753 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +033050 +Global GTSPP quality flag +Operational + + +1754 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +022188 +Dissolved oxygen +Operational + + +1755 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +008080 +Qualifier for GTSPP quality flag += 16 Dissolved oxygen at a level +Operational + + +1756 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306037 +(Dissolved oxygen profile data) +033050 +Global GTSPP quality flag +Operational + + +1757 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +010004 +Pressure +Operational + + +1758 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +010051 +Pressure reduced to mean sea level +Operational + + +1759 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +007033 +Height of sensor above water surface +Height of air temperature/humidity sensor +Operational + + +1760 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +012101 +Temperature/air temperature +At observation height +Operational + + +1761 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +012103 +Dewpoint temperature +At observation height +Operational + + +1762 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +013003 +Relative humidity +With respect to water at all temperatures +Operational + + +1763 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +007033 +Height of sensor above water surface +Height of wind speed sensor +Operational + + +1764 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +008021 +Time significance +=2 Time averaged +Operational + + +1765 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +004025 +Time period or displacement +Period over which winds are averaged +Operational + + +1766 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +011001 +Wind direction +At observation height +Operational + + +1767 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +011002 +Wind speed +At observation height +Operational + + +1768 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +008021 +Time significance +Set to missing (cancel) +Operational + + +1769 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +004025 +Time period or displacement +Time period over which maximum gust observed +Operational + + +1770 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +011041 +Maximum wind gust speed +Operational + + +1771 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +004025 +Time period or displacement +Set to missing (cancel) +Operational + + +1772 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +1773 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +002005 +Precision of temperature observation +Operational + + +1774 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +007063 +Depth below sea/water surface (cm) +Operational + + +1775 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306038 +(Sequence for representation of standard surface marine meteorological observations from moored buoys) +022049 +Sea-surface temperature +Operational + + +1776 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306039 +(Sequence for representation of basic wave measurements) +022078 +Duration of wave record +Operational + + +1777 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306039 +(Sequence for representation of basic wave measurements) +022070 +Significant wave height +Operational + + +1778 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306039 +(Sequence for representation of basic wave measurements) +022073 +Maximum wave height +Operational + + +1779 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306039 +(Sequence for representation of basic wave measurements) +022074 +Average wave period +Operational + + +1780 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306039 +(Sequence for representation of basic wave measurements) +022071 +Spectral peak wave period +Operational + + +1781 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306039 +(Sequence for representation of basic wave measurements) +022076 +Direction from which dominant waves are coming +Operational + + +1782 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306039 +(Sequence for representation of basic wave measurements) +022077 +Directional spread of dominant wave +Operational + + +1783 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022078 +Duration of wave record +Operational + + +1784 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022082 +Maximum non-directional spectral wave density +Operational + + +1785 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +106000 +Delayed replication of 6 descriptors +Operational + + +1786 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +031001 +Delayed descriptor replication factor +Number of frequency bins +Operational + + +1787 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022080 +Waveband central frequency +Operational + + +1788 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022069 +Spectral wave density +Operational + + +1789 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022086 +Mean direction from which waves are coming +Operational + + +1790 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022087 +Principal direction from which waves are coming +Operational + + +1791 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022088 +First normalized polar coordinate from Fourier coefficients +Operational + + +1792 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306040 +(Sequence for representation of detailed spectral wave measurements) +022089 +Second normalized polar coordinate from Fourier coefficients +Operational + + +1793 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306041 +(Depth and temperature profile (high accuracy/precision)) +002032 +Indicator for digitization += 0 Fixed sensor depths +Operational + + +1794 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306041 +(Depth and temperature profile (high accuracy/precision)) +102000 +Delayed replication of 2 descriptors +Operational + + +1795 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306041 +(Depth and temperature profile (high accuracy/precision)) +031001 +Delayed descriptor replication factor +Number of depths +Operational + + +1796 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306041 +(Depth and temperature profile (high accuracy/precision)) +007062 +Depth below sea/water surface +Operational + + +1797 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306041 +(Depth and temperature profile (high accuracy/precision)) +022043 +Sea/water temperature +Operational + + +1798 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306042 +(Wind measurement from drifting buoy) +002169 +Anemometer type +E.g. = 2 WOTAN, = 3 Sonic anemometer +Operational + + +1799 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306042 +(Wind measurement from drifting buoy) +007033 +Height of sensor above water surface +Height of anemometer above water surface or effective height for WOTAN +Operational + + +1800 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306042 +(Wind measurement from drifting buoy) +008021 +Time significance += 2 Time averaged +Operational + + +1801 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306042 +(Wind measurement from drifting buoy) +004025 +Time period or displacement +Averaging period in minutes +Operational + + +1802 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306042 +(Wind measurement from drifting buoy) +011001 +Wind direction +At measurement height +Operational + + +1803 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306042 +(Wind measurement from drifting buoy) +011002 +Wind speed +At measurement height +Operational + + +1804 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +041001 +pCO2 +Operational + + +1805 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +008043 +Atmospheric chemical or physical constituent type +Set to 3 (carbon dioxide) +Operational + + +1806 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +015028 +Mole fraction of atmospheric constituent/pollutant in dry air +Operational + + +1807 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +008043 +Atmospheric chemical or physical constituent type +Cancel +Operational + + +1808 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +013080 +Water pH +Operational + + +1809 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +041005 +Turbidity +Operational + + +1810 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +041003 +Dissolved nitrates +Operational + + +1811 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +022188 +Dissolved oxygen +Operational + + +1812 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +041002 +Fluorescence +Operational + + +1813 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +106000 +Delayed replication of 6 descriptors +Operational + + +1814 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +031000 +Short delayed replication factor +Operational + + +1815 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +004024 +Time period or displacement (hours) +Set to -1 (preceding hour) +Operational + + +1816 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +014002 +Long-wave radiation, integrated over period specified +Downwelling long-wave radiation +Operational + + +1817 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +014002 +Long-wave radiation, integrated over period specified +Upwelling long-wave radiation +Operational + + +1818 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +014012 +Net long-wave radiation, integrated over period specified +Operational + + +1819 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +014004 +Short-wave radiation, integrated over period specified +Operational + + +1820 +06 +Meteorological or oceanographic sequences common to oceanographic observations +306043 +(Marine biogeochemical and radiation observations) +004024 +Time period or displacement (hours) +Cancel +Operational + + +1821 +07 +Surface report sequences (land) +307001 +(Low altitude station) +301031 +Identification and type of station, date/time, location (high accuracy), height of station +Operational + + +1822 +07 +Surface report sequences (land) +307001 +(Low altitude station) +302011 +Low altitude station +Basic surface report +Operational + + +1823 +07 +Surface report sequences (land) +307002 +(Low altitude station) +301032 +Identification and type of station, date/time, location (coarse accuracy), height of station +Operational + + +1824 +07 +Surface report sequences (land) +307002 +(Low altitude station) +302011 +Low altitude station +Basic surface report +Operational + + +1825 +07 +Surface report sequences (land) +307003 +(Low altitude station) +307001 +Low altitude station +Location (high accuracy) and basic report +Operational + + +1826 +07 +Surface report sequences (land) +307003 +(Low altitude station) +101000 +Delayed replication of 1 descriptor +Operational + + +1827 +07 +Surface report sequences (land) +307003 +(Low altitude station) +031001 +Delayed descriptor replication factor +Operational + + +1828 +07 +Surface report sequences (land) +307003 +(Low altitude station) +302005 +Cloud layer +Operational + + +1829 +07 +Surface report sequences (land) +307004 +(Low altitude station) +307002 +Low altitude station +Location (coarse accuracy) and basic report +Operational + + +1830 +07 +Surface report sequences (land) +307004 +(Low altitude station) +101000 +Delayed replication of 1 descriptor +Operational + + +1831 +07 +Surface report sequences (land) +307004 +(Low altitude station) +031001 +Delayed descriptor replication factor +Operational + + +1832 +07 +Surface report sequences (land) +307004 +(Low altitude station) +302005 +Cloud layer +Operational + + +1833 +07 +Surface report sequences (land) +307005 +(Low altitude station) +307001 +Low altitude station +Location (high accuracy) and basic report +Operational + + +1834 +07 +Surface report sequences (land) +307005 +(Low altitude station) +101004 +Replicate 1 descriptor 4 times +Operational + + +1835 +07 +Surface report sequences (land) +307005 +(Low altitude station) +302005 +Cloud layer +4 layers +Operational + + +1836 +07 +Surface report sequences (land) +307006 +(Low altitude station) +307002 +Low altitude station +Location (coarse accuracy) and basic report +Operational + + +1837 +07 +Surface report sequences (land) +307006 +(Low altitude station) +101004 +Replicate 1 descriptor 4 times +Operational + + +1838 +07 +Surface report sequences (land) +307006 +(Low altitude station) +302005 +Cloud layer +4 layers +Operational + + +1839 +07 +Surface report sequences (land) +307007 +(High altitude station) +301031 +Identification and type of station, date/time, location (high accuracy), height of station +Operational + + +1840 +07 +Surface report sequences (land) +307007 +(High altitude station) +302012 +High altitude station +Basic surface report +Operational + + +1841 +07 +Surface report sequences (land) +307008 +(High altitude station) +301032 +Identification and type of station, date/time, location (coarse accuracy), height of station +Operational + + +1842 +07 +Surface report sequences (land) +307008 +(High altitude station) +302012 +High altitude station +Basic surface report +Operational + + +1843 +07 +Surface report sequences (land) +307009 +301031 +Identification and type of station, date/time, location (high accuracy), height of station +Operational + + +1844 +07 +Surface report sequences (land) +307009 +302013 +Basic surface report +Operational + + +1845 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +001063 +ICAO location indicator +Operational + + +1846 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +002001 +Type of station +Operational + + +1847 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +301011 +Year, month, day +YY +Operational + + +1848 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +301012 +Hour, minute +GG, gg +Operational + + +1849 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +1850 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +007006 +Height above station +Height of an anemometer +Operational + + +1851 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +011001 +Wind direction +Operational + + +1852 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +011016 +Extreme counterclockwise wind direction of a variable wind +Operational + + +1853 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +011017 +Extreme clockwise wind direction of a variable wind +Operational + + +1854 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +011002 +Wind speed +Operational + + +1855 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +011041 +Maximum wind gust speed +Operational + + +1856 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +007006 +Height above station +Height of a thermometer +Operational + + +1857 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +012001 +Temperature/air temperature +Operational + + +1858 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +012003 +Dewpoint temperature +Operational + + +1859 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +010052 +Altimeter setting (QNH) +Operational + + +1860 +07 +Surface report sequences (land) +307011 +(Main part of data for representation of METAR/SPECI code in BUFR) +020009 +General weather indicator (TAF/METAR) +Operational + + +1861 +07 +Surface report sequences (land) +307012 +(Horizontal visibility) +103000 +Delayed replication of 3 descriptors +Operational + + +1862 +07 +Surface report sequences (land) +307012 +(Horizontal visibility) +031001 +Delayed descriptor replication factor +Up to 3 +Operational + + +1863 +07 +Surface report sequences (land) +307012 +(Horizontal visibility) +008023 +First-order statistics +Operational + + +1864 +07 +Surface report sequences (land) +307012 +(Horizontal visibility) +005021 +Bearing or azimuth +Direction of visibility observed +Operational + + +1865 +07 +Surface report sequences (land) +307012 +(Horizontal visibility) +020001 +Horizontal visibility +Operational + + +1866 +07 +Surface report sequences (land) +307013 +(Runway visual range) +106000 +Delayed replication of 6 descriptors +Operational + + +1867 +07 +Surface report sequences (land) +307013 +(Runway visual range) +031001 +Delayed descriptor replication factor +Up to 4 +Operational + + +1868 +07 +Surface report sequences (land) +307013 +(Runway visual range) +001064 +Runway designator +Operational + + +1869 +07 +Surface report sequences (land) +307013 +(Runway visual range) +008014 +Qualifier for runway visual range +Operational + + +1870 +07 +Surface report sequences (land) +307013 +(Runway visual range) +020061 +Runway visual range (RVR) +Operational + + +1871 +07 +Surface report sequences (land) +307013 +(Runway visual range) +008014 +Qualifier for runway visual range +Operational + + +1872 +07 +Surface report sequences (land) +307013 +(Runway visual range) +020061 +Runway visual range (RVR) +Operational + + +1873 +07 +Surface report sequences (land) +307013 +(Runway visual range) +020018 +Tendency of runway visual range +Operational + + +1874 +07 +Surface report sequences (land) +307014 +(Significant present or forecast weather) +101000 +Delayed replication of 1 descriptor +Operational + + +1875 +07 +Surface report sequences (land) +307014 +(Significant present or forecast weather) +031001 +Delayed descriptor replication factor +Up to 3 +Operational + + +1876 +07 +Surface report sequences (land) +307014 +(Significant present or forecast weather) +020019 +Significant present or forecast weather +Operational + + +1877 +07 +Surface report sequences (land) +307015 +(Clouds group(s)) +101000 +Delayed replication of 1 descriptor +Operational + + +1878 +07 +Surface report sequences (land) +307015 +(Clouds group(s)) +031001 +Delayed descriptor replication factor +Operational + + +1879 +07 +Surface report sequences (land) +307015 +(Clouds group(s)) +302005 +Cloud layer +NsNsNs, CC, hshshs +Operational + + +1880 +07 +Surface report sequences (land) +307015 +(Clouds group(s)) +020002 +Vertical visibility +Operational + + +1881 +07 +Surface report sequences (land) +307016 +(Significant recent weather phenomena) +101000 +Delayed replication of 1 descriptor +Operational + + +1882 +07 +Surface report sequences (land) +307016 +(Significant recent weather phenomena) +031001 +Delayed descriptor replication factor +Up to 3 +Operational + + +1883 +07 +Surface report sequences (land) +307016 +(Significant recent weather phenomena) +020020 +Significant recent weather phenomena +Operational + + +1884 +07 +Surface report sequences (land) +307017 +(Wind shear on runway(s)) +101000 +Delayed replication of 1 descriptor +Operational + + +1885 +07 +Surface report sequences (land) +307017 +(Wind shear on runway(s)) +031001 +Delayed descriptor replication factor +Operational + + +1886 +07 +Surface report sequences (land) +307017 +(Wind shear on runway(s)) +011070 +Designator of the runway affected by wind shear (including ALL) +Operational + + +1887 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +Operational + + +1888 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +102000 +Delayed replication of 2 descriptors +Operational + + +1889 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +031001 +Delayed descriptor replication factor +Up to 2 +Operational + + +1890 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +008017 +Qualifier of the time when the forecast change is expected +FM, TL, AT +Operational + + +1891 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +301012 +Hour, minute +GG, gg +Operational + + +1892 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +104000 +Delayed replication of 4 descriptors +Operational + + +1893 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +031001 +Delayed descriptor replication factor +Up to 1 +Operational + + +1894 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +007006 +Height above station +Operational + + +1895 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +011001 +Wind direction +Operational + + +1896 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +011002 +Wind speed +Operational + + +1897 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +011041 +Maximum wind gust speed +Operational + + +1898 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +020009 +General weather indicator (TAF/METAR) +Operational + + +1899 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +101000 +Delayed replication of 1 descriptor +Operational + + +1900 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +031001 +Delayed descriptor replication factor +Up to 1 +Operational + + +1901 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +020001 +Horizontal visibility +Operational + + +1902 +07 +Surface report sequences (land) +307018 +(Trend-type landing forecast) +307014 +Significant present or forecast weather +w´w´ +Operational + + +1903 +07 +Surface report sequences (land) +307020 +(Short METAR/SPECI) +307011 +Main part of data for representation of METAR/SPECI code in BUFR +Operational + + +1904 +07 +Surface report sequences (land) +307020 +(Short METAR/SPECI) +307014 +Significant present or forecast weather +w´w´ +Operational + + +1905 +07 +Surface report sequences (land) +307020 +(Short METAR/SPECI) +307016 +Significant recent weather phenomena +REw´w´ +Operational + + +1906 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307011 +Main part of data for representation of METAR/SPECI code in BUFR +Operational + + +1907 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307012 +Horizontal visibility +DvVVVV +Operational + + +1908 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307013 +Runway visual range +DRDR/VRVRVRVR +Operational + + +1909 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307014 +Significant present or forecast weather +w´w´ +Operational + + +1910 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307015 +Clouds group(s) +Operational + + +1911 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307016 +Significant recent weather phenomena +REw´w´ +Operational + + +1912 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307017 +Wind shear on runway(s) +Operational + + +1913 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307018 +Trend-type landing forecast +Operational + + +1914 +07 +Surface report sequences (land) +307021 +(Total sequence for representation of METAR/SPECI code in BUFR) +307015 +Clouds group(s) +Operational + + +1915 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +001015 +Station or site name +Operational + + +1916 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +301011 +Year, month, day +Operational + + +1917 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +301012 +Hour, minute +Operational + + +1918 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +301022 +Latitude/longitude (high accuracy), height of station +Operational + + +1919 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +008021 +Time significance += 23 Monitoring period +Operational + + +1920 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +004025 +Time period or displacement +Operational + + +1921 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +010004 +Pressure +Operational + + +1922 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +012001 +Temperature/air temperature +Operational + + +1923 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +013003 +Relative humidity +Operational + + +1924 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +033038 +Quality flags for ground-based GNSS data +Operational + + +1925 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +008022 +Total number (with respect to accumulation or average) +Number of GNSS satellites used +Operational + + +1926 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +106025 +Replicate 6 descriptors 25 times +Operational + + +1927 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +002020 +Satellite classification +Operational + + +1928 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +001050 +Platform transmitter ID number +Operational + + +1929 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +005021 +Bearing or azimuth +Operational + + +1930 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +007021 +Elevation +Operational + + +1931 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015031 +Atmospheric path delay in satellite signal +Operational + + +1932 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015032 +Estimated error in atmospheric path delay +Operational + + +1933 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +008060 +Sample scanning mode significance += 5 North/South +Operational + + +1934 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015033 +Difference in path delays for limb views at extremes of scan +Operational + + +1935 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015034 +Estimated error in path delay difference +Operational + + +1936 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +008060 +Sample scanning mode significance += 6 East/West +Operational + + +1937 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015033 +Difference in path delays for limb views at extremes of scan +Operational + + +1938 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015034 +Estimated error in path delay difference +Operational + + +1939 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015035 +Component of zenith path delay due to water vapour +Operational + + +1940 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +201131 +Change data width +Operational + + +1941 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +202129 +Change scale +Operational + + +1942 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +013016 +Precipitable water +Operational + + +1943 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +202000 +Change scale +Cancel +Operational + + +1944 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +201000 +Change data width +Cancel +Operational + + +1945 +07 +Surface report sequences (land) +307022 +(Ground-based GNSS data) +015011 +Log10 of integrated electron density +Operational + + +1946 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +301150 +WIGOS identifier +Operational + + +1947 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +001015 +Station or site name +Operational + + +1948 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +001040 +Processing centre ID code +GNSS processing centre +Operational + + +1949 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +008021 +Time significance += 30 Time of occurrence +Operational + + +1950 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +301011 +Year, month, day +Operational + + +1951 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +301013 +Hour, minute, second +Operational + + +1952 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +301022 +Latitude/longitude (high accuracy), height of station +Operational + + +1953 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +010036 +Geoid undulation +Geoid height above WGS-84 ellipsoid, ±150 m to 1 cm +Operational + + +1954 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +025061 +Software identification and version number +GNSS processing software, software version +Operational + + +1955 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +010004 +Pressure +Operational + + +1956 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +012001 +Temperature/air temperature +Operational + + +1957 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +013003 +Relative humidity +Operational + + +1958 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +120000 +Delayed replication of 20 descriptors +Operational + + +1959 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +031000 +Short delayed descriptor replication factor +Operational + + +1960 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +025060 +Software identification +Operational + + +1961 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +008021 +Time significance + = 2 Time averaged +Operational + + +1962 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +004025 +Time period or displacement +Operational + + +1963 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +115000 +Delayed replication of 15 descriptors +Operational + + +1964 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +031001 +Delayed descriptor replication factor +Operational + + +1965 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +015079 +Zenith path delay due to neutral atmosphere +Operational + + +1966 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +015080 +Estimated error in neutral atmosphere zenith path delay +Operational + + +1967 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +008022 +Total number (with respect to accumulation or average) +Operational + + +1968 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +033093 +Extended quality flags for ground-based GNSS data +Operational + + +1969 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +015089 +Zenith path delay due to neutral hydrostatic atmosphere +Operational + + +1970 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +015035 +Component of zenith path delay due to water vapour +Operational + + +1971 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +102002 +Replicate 2 descriptors 2 times +Operational + + +1972 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +008060 +Sample scanning mode significance += 5 north/south or =6 east/west +Operational + + +1973 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +015083 +GNSS derived neutral atmosphere gradient +Operational + + +1974 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +201131 +Change data width +Operational + + +1975 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +202129 +Change scale +Operational + + +1976 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +013016 +Precipitable water +Operational + + +1977 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +202000 +Change scale +Cancel +Operational + + +1978 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +201000 +Change data width +Cancel +Operational + + +1979 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Zenith Total Delay +015011 +Log10 of integrated electron density +Operational + + +1980 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +131000 +Delayed replication of 31 descriptors +Operational + + +1981 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +031000 +Short delayed descriptor replication factor +Operational + + +1982 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +025060 +Software identification +Operational + + +1983 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +008021 +Time significance +Set to missing +Operational + + +1984 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +004025 +Time period or displacement += 0 +Operational + + +1985 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +033093 +Extended quality flags for ground-based GNSS data +Operational + + +1986 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +125000 +Delayed replication of 25 descriptors +Operational + + +1987 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +031001 +Delayed descriptor replication factor +Number of GNSS satellites used +Operational + + +1988 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +002020 +Satellite classification +Operational + + +1989 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +001050 +Platform transmitter ID number +Operational + + +1990 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +001150 +Coordinate reference system += 5 ECF coordinate system +Operational + + +1991 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +202127 +Change scale +Operational + + +1992 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +304030 +Location of platform +Operational + + +1993 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +202000 +Change scale +Operational + + +1994 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +005021 +Bearing or azimuth +Operational + + +1995 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +007021 +Elevation +Operational + + +1996 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015038 +Path delay due to neutral atmosphere +Operational + + +1997 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015039 +Estimated error in neutral atmosphere path delay +Operational + + +1998 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015090 +Path delay due to neutral hydrostatic atmosphere +Operational + + +1999 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015081 +Wet path delay due to neutral atmosphere +Operational + + +2000 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015082 +Path integrated water vapour +Operational + + +2001 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015079 +Zenith path delay due to neutral atmosphere +Operational + + +2002 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015089 +Zenith path delay due to neutral hydrostatic atmosphere +Operational + + +2003 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015035 +Component of zenith path delay due to water vapour +Operational + + +2004 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +102002 +Replicate 2 descriptors 2 times +Operational + + +2005 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +008060 +Sample scanning mode significance += 5 north/south or = 6 east/west +Operational + + +2006 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015083 +GNSS derived neutral atmosphere gradient +Operational + + +2007 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015084 +GNSS least squares residual +Operational + + +2008 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015085 +GNSS multi-path delay +Operational + + +2009 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015086 +GNSS hydrostatic mapping function +Operational + + +2010 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015087 +GNSS wet mapping function +Operational + + +2011 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015088 +GNSS gradient mapping function +Operational + + +2012 +07 +Surface report sequences (land) +307024 +(Ground-based GNSS data - slant total delay) +Slant Total Delay +015011 +Log10 of integrated electron density +Operational + + +2013 +07 +Surface report sequences (land) +307030 +(Ozone data - single observation) +015001 +Total ozone +Operational + + +2014 +07 +Surface report sequences (land) +307030 +(Ozone data - single observation) +015002 +Air mass (slant path at 22 km) +Operational + + +2015 +07 +Surface report sequences (land) +307031 +(Ozone data - averaged observations) +008022 +Total number (with respect to accumulation or average) +Number of measurements +Operational + + +2016 +07 +Surface report sequences (land) +307031 +(Ozone data - averaged observations) +008023 +First-order statistics += 4 Mean value +Operational + + +2017 +07 +Surface report sequences (land) +307031 +(Ozone data - averaged observations) +015001 +Total ozone +Average value of ozone measurement +Operational + + +2018 +07 +Surface report sequences (land) +307031 +(Ozone data - averaged observations) +008023 +First-order statistics += 9 Best estimate of standard deviation +Operational + + +2019 +07 +Surface report sequences (land) +307031 +(Ozone data - averaged observations) +015001 +Total ozone +Best estimate of standard deviation of the ozone measurement +Operational + + +2020 +07 +Surface report sequences (land) +307031 +(Ozone data - averaged observations) +008023 +First-order statistics += 11 Harmonic mean +Operational + + +2021 +07 +Surface report sequences (land) +307031 +(Ozone data - averaged observations) +015002 +Air mass (slant path at 22 km) +Harmonic mean value of the air-mass +Operational + + +2022 +07 +Surface report sequences (land) +307041 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation) +301001 +WMO block and station numbers +Operational + + +2023 +07 +Surface report sequences (land) +307041 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation) +001015 +Station or site name +Operational + + +2024 +07 +Surface report sequences (land) +307041 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +2025 +07 +Surface report sequences (land) +307041 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation) +301011 +Year, month, day +Ozone measurement +Operational + + +2026 +07 +Surface report sequences (land) +307041 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation) +301012 +Hour, minute +Ozone measurement +Operational + + +2027 +07 +Surface report sequences (land) +307041 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation) +301070 +Ozone instrumentation - Brewer spectrophotometer +Operational + + +2028 +07 +Surface report sequences (land) +307041 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation) +307030 +Ozone data - single observation +Operational + + +2029 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +301001 +WMO block and station numbers +Operational + + +2030 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +001015 +Station or site name +Operational + + +2031 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +2032 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +301011 +Year, month, day +Ozone measurement +Operational + + +2033 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +301012 +Hour, minute +Ozone measurement +Operational + + +2034 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +008021 +Time significance += 8 Ensemble mean +Operational + + +2035 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +004025 +Time period or displacement +Time period (minutes) for the computation of the average +Operational + + +2036 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +301070 +Ozone instrumentation - Brewer spectrophotometer +Operational + + +2037 +07 +Surface report sequences (land) +307042 +(Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations) +307031 +Ozone data - averaged observations +Operational + + +2038 +07 +Surface report sequences (land) +307043 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation) +301001 +WMO block and station numbers +Operational + + +2039 +07 +Surface report sequences (land) +307043 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation) +001015 +Station or site name +Operational + + +2040 +07 +Surface report sequences (land) +307043 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +2041 +07 +Surface report sequences (land) +307043 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation) +301011 +Year, month, day +Ozone measurement +Operational + + +2042 +07 +Surface report sequences (land) +307043 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation) +301012 +Hour, minute +Ozone measurement +Operational + + +2043 +07 +Surface report sequences (land) +307043 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation) +301074 +Ozone instrumentation - Dobson spectrophotometer +Operational + + +2044 +07 +Surface report sequences (land) +307043 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation) +307030 +Ozone data - single observation +Operational + + +2045 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +301001 +WMO block and station numbers +Operational + + +2046 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +001015 +Station or site name +Operational + + +2047 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +301024 +Latitude/longitude (coarse accuracy), height of station +Operational + + +2048 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +301011 +Year, month, day +Ozone measurement +Operational + + +2049 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +301012 +Hour, minute +Ozone measurement +Operational + + +2050 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +008021 +Time significance += 8 Ensemble mean +Operational + + +2051 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +004025 +Time period or displacement +Time period (minutes) for the computation of the average +Operational + + +2052 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +301074 +Ozone instrumentation - Dobson spectrophotometer +Operational + + +2053 +07 +Surface report sequences (land) +307044 +(Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations) +307031 +Ozone data - averaged observations +Operational + + +2054 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +001063 +ICAO location indicator +CCCC +Operational + + +2055 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +008079 +Product status +METAR SPECI COR +Operational + + +2056 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +002001 +Type of station +AUTO +Operational + + +2057 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +301011 +Year, month, day +YY +Operational + + +2058 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +301012 +Hour, minute +GGgg +Operational + + +2059 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +301023 +Latitude/longitude (coarse accuracy) +Operational + + +2060 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +007030 +Height of station ground above mean sea level +Operational + + +2061 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +007031 +Height of barometer above mean sea level +Operational + + +2062 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +007032 +Height of sensor above local ground (or deck of marine platform) += 10 m (if the actual value is not available) +Operational + + +2063 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011001 +Wind direction +ddd +Operational + + +2064 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011016 +Extreme counterclockwise wind direction of a variable wind +dndndn +Operational + + +2065 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011017 +Extreme clockwise wind direction of a variable wind +dxdxdx +Operational + + +2066 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +008054 +Qualifier for wind speed or wind gusts +P +Operational + + +2067 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011083 +Wind speed +ff - km/h +(see Note 1) +Operational + + +2068 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011084 +Wind speed +ff - kt +(see Note 1) +Operational + + +2069 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011002 +Wind speed +ff - m/s +(see Note 1) +Operational + + +2070 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +008054 +Qualifier for wind speed or wind gusts +P +Operational + + +2071 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011085 +Maximum wind gust speed +fmfm - km/h +(see Note 2) +Operational + + +2072 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011086 +Maximum wind gust speed +fmfm - kt +(see Note 2) +Operational + + +2073 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +011041 +Maximum wind gust speed +fmfm - m/s +(see Note 2) +Operational + + +2074 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +008054 +Qualifier for wind speed or wind gusts +Set to missing (cancel) +Operational + + +2075 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +007032 +Height of sensor above local ground (or deck of marine platform) += 2 m (if the actual value is not available) +Operational + + +2076 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +012023 +Temperature +T'T' - Celsius +Operational + + +2077 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +012024 +Dewpoint temperature +T'dT'd - Celsius +Operational + + +2078 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2079 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +010052 +Altimeter setting (QNH) +QPHPHPHPH +Operational + + +2080 +07 +Surface report sequences (land) +307045 +(Main part of METAR/SPECI), replacing 3 07 011 +020009 +General weather indicator (TAF/METAR) +CAVOK +Operational + + +2081 +07 +Surface report sequences (land) +307046 +(METAR/SPECI visibility) +020060 +Prevailing horizontal visibility +VVVV or VVVVNDV +Operational + + +2082 +07 +Surface report sequences (land) +307046 +(METAR/SPECI visibility) +102000 +Delayed replication of 2 descriptors +Operational + + +2083 +07 +Surface report sequences (land) +307046 +(METAR/SPECI visibility) +031001 +Delayed descriptor replication factor +Up to 2 +Operational + + +2084 +07 +Surface report sequences (land) +307046 +(METAR/SPECI visibility) +005021 +Bearing or azimuth +Direction of minimum visibility observed Dv +Operational + + +2085 +07 +Surface report sequences (land) +307046 +(METAR/SPECI visibility) +020059 +Minimum horizontal visibility +VNVNVNVN +Operational + + +2086 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +105000 +Delayed replication of 5 descriptors +Operational + + +2087 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +031001 +Delayed descriptor replication factor +Operational + + +2088 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +008002 +Vertical significance (surface observations) +Operational + + +2089 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +020011 +Cloud amount +NsNsNs +Operational + + +2090 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +020012 +Cloud type +CC +Operational + + +2091 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +020013 +Height of base of cloud +hshshs - m +Operational + + +2092 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +020092 +Height of base of cloud +hshshs - ft +Operational + + +2093 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +020002 +Vertical visibility +VVhshshs - m +Operational + + +2094 +07 +Surface report sequences (land) +307047 +(METAR/SPECI/TAF clouds), replacing 3 07 015 +020091 +Vertical visibility +VVhshshs - ft +Operational + + +2095 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +TTTTT NOSIG +Operational + + +2096 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +102000 +Delayed replication of 2 descriptors +Operational + + +2097 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +031001 +Delayed descriptor replication factor += 0, 1 or 2 +Operational + + +2098 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +008017 +Qualifier of the time when the forecast change is expected +TT +Operational + + +2099 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +301012 +Hour, minute +GGgg +Operational + + +2100 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +112000 +Delayed replication of 12 descriptors +Operational + + +2101 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +031000 +Short delayed descriptor replication factor += 0 or 1 +Operational + + +2102 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +007032 +Height of sensor above local ground (or deck of marine platform) += 10 m (if the actual value is not available) +Operational + + +2103 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +011001 +Wind direction +ddd +Operational + + +2104 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +008054 +Qualifier for wind speed or wind gusts +P +Operational + + +2105 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +011083 +Wind speed +ff - km/h +(see Note 1) +Operational + + +2106 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +011084 +Wind speed +ff - kt +(see Note 1) +Operational + + +2107 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +011002 +Wind speed +ff - m/s +(see Note 1) +Operational + + +2108 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +008054 +Qualifier for wind speed or wind gusts +P +Operational + + +2109 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +011085 +Maximum wind gust speed +fmfm - km/h +(see Note 2) +Operational + + +2110 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +011086 +Maximum wind gust speed +fmfm - kt +(see Note 2) +Operational + + +2111 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +011041 +Maximum wind gust speed +fmfm - m/s +(see Note 2) +Operational + + +2112 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +008054 +Qualifier for wind speed or wind gusts +Set to missing (cancel) +Operational + + +2113 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2114 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +020009 +General weather indicator (TAF/METAR) +CAVOK NSW NSC +Operational + + +2115 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +101000 +Delayed replication of 1 descriptor +Operational + + +2116 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +031000 +Short delayed descriptor replication factor += 0 or 1 +Operational + + +2117 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +020060 +Prevailing horizontal visibility +VVVV +Operational + + +2118 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +307014 +Significant present and forecast weather +Weather intensity and phenomena w´w´ +Operational + + +2119 +07 +Surface report sequences (land) +307048 +(Trend type forecast), replacing 3 07 018 +307047 +METAR/SPECI/TAF clouds, replacing 3 07 015 +NsNsNshshshs +Operational + + +2120 +07 +Surface report sequences (land) +307049 +(Sea conditions) +102000 +Delayed replication of 2 descriptors +Operational + + +2121 +07 +Surface report sequences (land) +307049 +(Sea conditions) +031000 +Short delayed descriptor replication factor += 0 or 1 +Operational + + +2122 +07 +Surface report sequences (land) +307049 +(Sea conditions) +022043 +Sea/water temperature +TsTs +Operational + + +2123 +07 +Surface report sequences (land) +307049 +(Sea conditions) +022021 +Height of waves + +Operational + + +2124 +07 +Surface report sequences (land) +307050 +(Runway state) +101000 +Delayed replication of 1 descriptor +Operational + + +2125 +07 +Surface report sequences (land) +307050 +(Runway state) +031000 +Short delayed descriptor replication factor += 0 or 1 +Operational + + +2126 +07 +Surface report sequences (land) +307050 +(Runway state) +020085 +General condition of runway +SNOCLO +Operational + + +2127 +07 +Surface report sequences (land) +307050 +(Runway state) +102000 +Delayed replication of 2 descriptors +Operational + + +2128 +07 +Surface report sequences (land) +307050 +(Runway state) +031001 +Delayed descriptor replication factor +Operational + + +2129 +07 +Surface report sequences (land) +307050 +(Runway state) +001064 +Runway designator +DRDR +Operational + + +2130 +07 +Surface report sequences (land) +307050 +(Runway state) +020085 +General condition of runway +CLRD// +Operational + + +2131 +07 +Surface report sequences (land) +307050 +(Runway state) +105000 +Delayed replication of 5 descriptors +Operational + + +2132 +07 +Surface report sequences (land) +307050 +(Runway state) +031001 +Delayed descriptor replication factor +Operational + + +2133 +07 +Surface report sequences (land) +307050 +(Runway state) +001064 +Runway designator +DRDR +Operational + + +2134 +07 +Surface report sequences (land) +307050 +(Runway state) +020086 +Runway deposits +ER +Operational + + +2135 +07 +Surface report sequences (land) +307050 +(Runway state) +020087 +Runway contamination +CR +Operational + + +2136 +07 +Surface report sequences (land) +307050 +(Runway state) +020088 +Depth of runway deposits +eReR +Operational + + +2137 +07 +Surface report sequences (land) +307050 +(Runway state) +020089 +Runway friction coefficient +BRBR +Operational + + +2138 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307045 +Main part of METAR/SPECI, replacing 3 07 011 +Operational + + +2139 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307046 +METAR/SPECI visibility +VVVV or VVVVNDV VNVNVNVNDV +Operational + + +2140 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307013 +Runway visual range +RDRDR/VRVRVRVR +Operational + + +2141 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307014 +Significant present and forecast weather +Weather intensity and phenomena w´w´ +Operational + + +2142 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307047 +METAR/SPECI/TAF clouds, replacing 3 07 015 +NsNsNshshshs +Operational + + +2143 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307016 +Significant recent weather phenomena +REw´w´ +Operational + + +2144 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307017 +Wind shear on runway(s) +WS RDRDR +Operational + + +2145 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307049 +Sea conditions +WTsTs/SS’ +Operational + + +2146 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307050 +Runway state +RDRDR/ERCReReRBRBR +Operational + + +2147 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +101000 +Delayed replication of 1 descriptor +Operational + + +2148 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +031001 +Delayed descriptor replication factor += 0 to 3 normally +Operational + + +2149 +07 +Surface report sequences (land) +307051 +(Full METAR/SPECI), replacing 3 07 021 +307048 +Trend type forecast, replacing 3 07 018 +Operational + + +2150 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +001063 +ICAO location indicator +CCCC +Operational + + +2151 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +008039 +Time significance (aviation forecast) += 0 Issue time of forecast +Operational + + +2152 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +301011 +Year, month, day +YY +Operational + + +2153 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +301012 +Hour, minute +GGgg +Operational + + +2154 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +008079 +Product status +COR CNL AMD NIL +Operational + + +2155 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +008039 +Time significance (aviation forecast) += 1 Time of commencement of period of the forecast +Operational + + +2156 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +301011 +Year, month, day +Y1Y1 +Operational + + +2157 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +301012 +Hour, minute +G1G1 +Operational + + +2158 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +008039 +Time significance (aviation forecast) += 2 Time of ending of period of the forecast +Operational + + +2159 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +301011 +Year, month, day +Y2Y2 +Operational + + +2160 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +301012 +Hour, minute +G2G2 +Operational + + +2161 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +2162 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +007030 +Height of station ground above mean sea level +Operational + + +2163 +07 +Surface report sequences (land) +307052 +(Aerodrome forecast identification and time interval) +007031 +Height of barometer above mean sea level +Operational + + +2164 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +007032 +Height of sensor above local ground (or deck of marine platform) += 10 m (if the actual value is not available) +Operational + + +2165 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +011001 +Wind direction +ddd +Operational + + +2166 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +008054 +Qualifier for wind speed or wind gusts +P +Operational + + +2167 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +011083 +Wind speed +ff - km/h +(see Note 1) +Operational + + +2168 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +011084 +Wind speed +ff - kt +(see Note 1) +Operational + + +2169 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +011002 +Wind speed +ff - m/s +(see Note 1) +Operational + + +2170 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +008054 +Qualifier for wind speed or wind gusts +P +Operational + + +2171 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +011085 +Maximum wind gust speed +fmfm - km/h +(see Note 2) +Operational + + +2172 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +011086 +Maximum wind gust speed +fmfm - kt +(see Note 2) +Operational + + +2173 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +011041 +Maximum wind gust speed +fmfm - m/s +(see Note 2) +Operational + + +2174 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +008054 +Qualifier for wind speed or wind gusts +Set to missing (cancel) +Operational + + +2175 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2176 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +020009 +General weather indicator (TAF/METAR) +CAVOK NSW NSC +Operational + + +2177 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +020060 +Prevailing horizontal visibility +VVVV +Operational + + +2178 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +307014 +Significant present and forecast weather +w´w´ +Operational + + +2179 +07 +Surface report sequences (land) +307053 +(Forecast weather at an aerodrome) +307047 +METAR/SPECI/TAF clouds, replacing 3 07 015 +NsNsNshshshs +Operational + + +2180 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +007032 +Height of sensor above local ground (or deck of marine platform) += 2 m (if the actual value is not available) +Operational + + +2181 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +008039 +Time significance (aviation forecast) += 3 Forecast time of maximum temperature +Operational + + +2182 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +004003 +Day +Operational + + +2183 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +004004 +Hour +GFGF +Operational + + +2184 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +008023 +First-order statistics += 3 Minimum +Operational + + +2185 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +012023 +Temperature +TFTF - Celsius +Operational + + +2186 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +008039 +Time significance (aviation forecast) += 4 Forecast time of minimum temperature +Operational + + +2187 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +004003 +Day +Operational + + +2188 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +004004 +Hour +GFGF +Operational + + +2189 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +008023 +First-order statistics += 2 Maximum +Operational + + +2190 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +012023 +Temperature +TFTF - Celsius +Operational + + +2191 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +008023 +First-order statistics +Set to missing (cancel) +Operational + + +2192 +07 +Surface report sequences (land) +307054 +(Forecast of extreme temperatures) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2193 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +033045 +Probability of following event +C2C2 +Operational + + +2194 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +008016 +Change qualifier of a trend-type forecast or an aerodrome forecast +TTTTTT +Operational + + +2195 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +008039 +Time significance (aviation forecast) += 5 Time of beginning of the forecast change +Operational + + +2196 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +004003 +Day +Operational + + +2197 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +301012 +Hour, minute +GGgg +Operational + + +2198 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +008039 +Time significance (aviation forecast) += 6 Time of ending of the forecast change +Operational + + +2199 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +004003 +Day +Operational + + +2200 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +301012 +Hour, minute +GeGe +Operational + + +2201 +07 +Surface report sequences (land) +307055 +(Change indicator and forecast changes) +307053 +Forecast weather at an aerodrome +During or after change +Operational + + +2202 +07 +Surface report sequences (land) +307056 +(Aerodrome forecast - full TAF) +307052 +Aerodrome forecast identification and time interval +Operational + + +2203 +07 +Surface report sequences (land) +307056 +(Aerodrome forecast - full TAF) +307053 +Forecast weather at an aerodrome +Operational + + +2204 +07 +Surface report sequences (land) +307056 +(Aerodrome forecast - full TAF) +307054 +Forecast of extreme temperatures +Operational + + +2205 +07 +Surface report sequences (land) +307056 +(Aerodrome forecast - full TAF) +101000 +Delayed replication of 1 descriptor +Operational + + +2206 +07 +Surface report sequences (land) +307056 +(Aerodrome forecast - full TAF) +031001 +Delayed descriptor replication factor +Operational + + +2207 +07 +Surface report sequences (land) +307056 +(Aerodrome forecast - full TAF) +307055 +Change indicator and forecast changes +Operational + + +2208 +07 +Surface report sequences (land) +307060 +(Soil temperature below land surface) +007061 +Depth below land surface +Operational + + +2209 +07 +Surface report sequences (land) +307060 +(Soil temperature below land surface) +012030 +Soil temperature +Operational + + +2210 +07 +Surface report sequences (land) +307061 +(Soil temperature data at number of depths not exceeding five - high accuracy position) +301031 +Identification and type of station, date/time, location (high accuracy), height of station +Operational + + +2211 +07 +Surface report sequences (land) +307061 +(Soil temperature data at number of depths not exceeding five - high accuracy position) +101005 +Replicate 1 descriptor 5 times +Operational + + +2212 +07 +Surface report sequences (land) +307061 +(Soil temperature data at number of depths not exceeding five - high accuracy position) +307060 +Soil temperature below land surface +Operational + + +2213 +07 +Surface report sequences (land) +307062 +(Soil temperature data at number of depths not exceeding five - coarse accuracy position) +301032 +Identification and type of station, date/time, location (coarse accuracy), height of station +Operational + + +2214 +07 +Surface report sequences (land) +307062 +(Soil temperature data at number of depths not exceeding five - coarse accuracy position) +101005 +Replicate 1 descriptor 5 times +Operational + + +2215 +07 +Surface report sequences (land) +307062 +(Soil temperature data at number of depths not exceeding five - coarse accuracy position) +307060 +Soil temperature below land surface +Operational + + +2216 +07 +Surface report sequences (land) +307063 +(Depth below land surface and soil temperature) +007061 +Depth below land surface +Operational + + +2217 +07 +Surface report sequences (land) +307063 +(Depth below land surface and soil temperature) +012130 +Soil temperature +Scale: 2 +Operational + + +2218 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +301090 +Surface station identification; time, horizontal and vertical coordinates +(see Note 3) +Operational + + +2219 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +004074 +Short time period or displacement += UTC - LT +(see Note 3) +Operational + + +2220 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +004023 +Time period or displacement +Number of days in the month +Operational + + +2221 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +008023 +First-order statistics += 4 Mean value +Operational + + +2222 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +010004 +Pressure +Operational + + +2223 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +010051 +Pressure reduced to mean sea level +Operational + + +2224 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +007004 +Pressure +Standard level | Set to missing for lowland stations +Operational + + +2225 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +010009 +Geopotential height +Standard level | Set to missing for lowland stations +Operational + + +2226 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 4) +Operational + + +2227 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012101 +Temperature/air temperature +Operational + + +2228 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +002051 +Indicator to specify observing method for extreme temperatures +Operational + + +2229 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +004051 +Principal time of daily reading of maximum temperature +Operational + + +2230 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012118 +Maximum temperature at height specified, past 24 hours +Operational + + +2231 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +004052 +Principal time of daily reading of minimum temperature +Operational + + +2232 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012119 +Minimum temperature at height specified, past 24 hours +Operational + + +2233 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +013004 +Vapour pressure +Operational + + +2234 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +008023 +First-order statistics +Set to missing +Operational + + +2235 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012151 +Standard deviation of daily mean temperature +Operational + + +2236 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2237 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +102005 +Replicate 2 descriptors 5 times +Operational + + +2238 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +008050 +Qualifier for number of missing values in calculation of statistic += 1 Pressure, = 2 Temperature, = 4 Vapour pressure, = 7 Maximum temperature, = 8 Minimum temperature +Operational + + +2239 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +2240 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Sunshine duration +014032 +Total sunshine +Operational + + +2241 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Sunshine duration +014033 +Total sunshine +Operational + + +2242 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Sunshine duration +008050 +Qualifier for number of missing values in calculation of statistic += 6 Sunshine duration +Operational + + +2243 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Sunshine duration +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +2244 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Number of days of occurrence +102018 +Replicate 2 descriptors 18 times +Operational + + +2245 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Number of days of occurrence +008052 +Condition for which number of days of occurrence follows +Operational + + +2246 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Number of days of occurrence +008022 +Total number (with respect to accumulation or average) +Days +Operational + + +2247 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 4) +Operational + + +2248 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2249 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2250 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +012152 +Highest daily mean temperature +Operational + + +2251 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2252 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2253 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +012153 +Lowest daily mean temperature +Operational + + +2254 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2255 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2256 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008023 +First-order statistics += 2 Maximum value +Operational + + +2257 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +012101 +Temperature/air temperature +Operational + + +2258 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2259 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2260 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008023 +First-order statistics += 3 Minimum value +Operational + + +2261 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +012101 +Temperature/air temperature +Operational + + +2262 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008023 +First-order statistics +Set to missing +Operational + + +2263 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 4) +Operational + + +2264 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +002002 +Type of instrumentation for wind measurement +Operational + + +2265 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2266 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2267 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +011046 +Maximum instantaneous wind speed +Operational + + +2268 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier +Set to missing (cancel) +Operational + + +2269 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +004003 +Day += 1 +(see Note 5) +Operational + + +2270 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +004004 +Hour += 6 +(see Note 5) +Operational + + +2271 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +004023 +Time period or displacement +Number of days in the month +(see Note 5) +Operational + + +2272 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 4) +Operational + + +2273 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +013060 +Total accumulated precipitation +Operational + + +2274 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +013051 +Frequency group, precipitation +Operational + + +2275 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +2276 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +008050 +Qualifier for number of missing values in calculation of statistic += 5 Precipitation +Operational + + +2277 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Precipitation +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +2278 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Number of days of occurrence +102006 +Replicate 2 descriptors 6 times +Operational + + +2279 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Number of days of occurrence +008052 +Condition for which number of days of occurrence follows +Operational + + +2280 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Number of days of occurrence +008022 +Total number (with respect to accumulation or average) +Days +Operational + + +2281 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme precipitation +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2282 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme precipitation +004003 +Day +Operational + + +2283 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme precipitation +013052 +Highest daily amount of precipitation +Operational + + +2284 +07 +Surface report sequences (land) +307071 +(Monthly values of a land station) +Occurrence of extreme precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2285 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +004001 +Year +Beginning of the reference period +Operational + + +2286 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +004001 +Year +Ending of the reference period +Operational + + +2287 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +004002 +Month +Operational + + +2288 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +004003 +Day += 1 +(see Note 3) +Operational + + +2289 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +004004 +Hour += 0 +(see Note 3) +Operational + + +2290 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +004074 +Short time period or displacement += UTC - LT +(see Note 3) +Operational + + +2291 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +004022 +Time period or displacement += 1 +Operational + + +2292 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +008023 +First-order statistics += 4 Mean value +Operational + + +2293 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +010004 +Pressure +Operational + + +2294 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +010051 +Pressure reduced to mean sea level +Operational + + +2295 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +007004 +Pressure +Standard level +Operational + + +2296 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +010009 +Geopotential height +Standard level +Operational + + +2297 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 4) +Operational + + +2298 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +012101 +Temperature/air temperature +Operational + + +2299 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +002051 +Indicator to specify observing method for extreme temperatures += 2 +Operational + + +2300 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +004051 +Principal time of daily reading of maximum temperature +Operational + + +2301 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +012118 +Maximum temperature at height specified, past 24 hours +Operational + + +2302 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +004052 +Principal time of daily reading of minimum temperature +Operational + + +2303 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +012119 +Minimum temperature at height specified, past 24 hours +Operational + + +2304 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +013004 +Vapour pressure +Operational + + +2305 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +012151 +Standard deviation of daily mean temperature +Operational + + +2306 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of monthly mean pressure, temperature, vapour pressure and of standard deviation +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2307 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normal of sunshine duration +014032 +Total sunshine +Operational + + +2308 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normal of sunshine duration +008023 +First-order statistics +Set to missing +Operational + + +2309 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +004001 +Year +Beginning of the reference period +Operational + + +2310 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +004001 +Year +Ending of the reference period +Operational + + +2311 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +004002 +Month +Operational + + +2312 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +004003 +Day += 1 +(see Note 5) +Operational + + +2313 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +004004 +Hour += 6 +(see Note 5) +Operational + + +2314 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +004022 +Time period or displacement += 1 +Operational + + +2315 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 4) +Operational + + +2316 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +008023 +First-order statistics += 4 Mean value +Operational + + +2317 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +013060 +Total accumulated precipitation +Operational + + +2318 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +2319 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +008023 +First-order statistics +Set to missing +Operational + + +2320 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +102008 +Replicate 2 descriptors 8 times +Operational + + +2321 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +008050 +Qualifier for number of missing values in calculation of statistic += 1 Pressure, = 2 Temperature, = 3 Extreme temperature, = 4 Vapour pressure, = 5 Precipitation, = 6 Sunshine duration, = 7 Maximum temperature, = 8 Minimum temperature +(see Note 6) +Operational + + +2322 +07 +Surface report sequences (land) +307072 +(Monthly normals for a land station) +Normals of precipitation +008020 +Total number of missing entities (with respect to accumulation or average) +Years +(see Note 6) +Operational + + +2323 +07 +Surface report sequences (land) +307073 +(Representation of CLIMAT data of the actual month and for monthly normals) +307071 +Monthly values of a land station +Operational + + +2324 +07 +Surface report sequences (land) +307073 +(Representation of CLIMAT data of the actual month and for monthly normals) +307072 +Monthly normals for a land station +Operational + + +2325 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +301001 +WMO block and station numbers +Operational + + +2326 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +004001 +Year +Operational + + +2327 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +004002 +Month +Operational + + +2328 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +301021 +Latitude/longitude (high accuracy) +Operational + + +2329 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +007030 +Height of station ground above mean sea level +Operational + + +2330 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2331 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +112000 +Delayed replication of 12 descriptors +Operational + + +2332 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +031001 +Delayed descriptor replication factor +Set to the number of days in the particular month for which data are being reported +Operational + + +2333 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +004003 +Day +Operational + + +2334 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +004004 +Hour +Operational + + +2335 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +004024 +Time period or displacement +Typically set to -24 to denote the time period beginning 24 hours prior to and ending at the specified time +Operational + + +2336 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +102003 +Replicate 2 descriptors 3 times +Operational + + +2337 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +008023 +First-order statistics += 2 Daily maximum temperature, = 3 Daily minimum temperature, = 4 Daily mean temperature +Operational + + +2338 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +012101 +Temperature/air temperature +Operational + + +2339 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +008023 +First-order statistics +Set to missing (cancel) +Operational + + +2340 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +004004 +Hour +Operational + + +2341 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +004024 +Time period or displacement +Operational + + +2342 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +013060 +Total accumulated precipitation +Operational + + +2343 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +013012 +Depth of fresh snow +Operational + + +2344 +07 +Surface report sequences (land) +307074 +(Supplemental daily temperature and precipitation values for monthly climate report) +013013 +Total snow depth +Operational + + +2345 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2346 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +004074 +Short time period or displacement +Operational + + +2347 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +004023 +Time period or displacement +Number of days in the month +Operational + + +2348 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +008023 +First-order statistics += 4 Mean value +Operational + + +2349 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +010004 +Pressure +Operational + + +2350 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +010051 +Pressure reduced to mean sea level +Operational + + +2351 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +007004 +Pressure +Standard level | Set to missing for lowland stations +Operational + + +2352 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +010009 +Geopotential height +Standard level | Set to missing for lowland stations +Operational + + +2353 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2354 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012101 +Temperature/air temperature +Operational + + +2355 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +002051 +Indicator to specify observing method for extreme temperatures +Operational + + +2356 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +004051 +Principal time of daily reading of maximum temperature +Operational + + +2357 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012118 +Maximum temperature at height specified, past 24 hours +Operational + + +2358 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +004052 +Principal time of daily reading of minimum temperature +Operational + + +2359 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012119 +Minimum temperature at height specified, past 24 hours +Operational + + +2360 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +013004 +Vapour pressure +Operational + + +2361 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +008023 +First-order statistics +Set to missing (cancel) +Operational + + +2362 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +012151 +Standard deviation of daily mean temperature +Operational + + +2363 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, extreme temperatures and vapour pressure +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2364 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days for which values are missing +102005 +Replicate 2 descriptors 5 times +Operational + + +2365 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days for which values are missing +008050 +Qualifier for number of missing values in calculation of statistic += 1 Pressure, = 2 Temperature, = 4 Vapour pressure, = 7 Maximum temperature, = 8 Minimum temperature +Operational + + +2366 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days for which values are missing +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +2367 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Sunshine duration +014032 +Total sunshine +Operational + + +2368 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Sunshine duration +014033 +Total sunshine +Operational + + +2369 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Sunshine duration +008050 +Qualifier for number of missing values in calculation of statistic += 6 Sunshine duration +Operational + + +2370 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Sunshine duration +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +2371 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days of occurrence +102018 +Replicate 2 descriptors 18 times +Operational + + +2372 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days of occurrence +008052 +Condition for which number of days of occurrence follows +Wind >= 10 m/s, wind >= 20 m/s, wind >= 30 m/s, maximum temperature < 273.15 K, maximum temperature >= 298.15 K, maximum temperature >= 303.15 K, maximum temperature >= 308.15 K, maximum temperature >= 313.15 K, minimum temperature < 273.15 K, sss > 0.00 m, sss > 0.01 m, sss > 0.10 m, sss > 0.50 m, horizontal visibility < 50 m, horizontal visibility < 100 m, horizontal visibility < 1 000 m, hail, thunderstorm +Operational + + +2373 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days of occurrence +008022 +Total number (with respect to accumulation or average) +Days +Operational + + +2374 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2375 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2376 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2377 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +012152 +Highest daily mean temperature +Operational + + +2378 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2379 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2380 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +012153 +Lowest daily mean temperature +Operational + + +2381 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2382 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2383 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008023 +First-order statistics += 2 Maximum value +Operational + + +2384 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +012101 +Temperature/air temperature +Operational + + +2385 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2386 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2387 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008023 +First-order statistics += 3 Minimum value +Operational + + +2388 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +012101 +Temperature/air temperature +Operational + + +2389 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008023 +First-order statistics +Set to missing (cancel) +Operational + + +2390 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2391 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +002002 +Type of instrumentation for wind measurement +Operational + + +2392 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2393 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +004003 +Day +Operational + + +2394 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +011046 +Maximum instantaneous wind speed +Operational + + +2395 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme values of temperature and wind speed +008053 +Day of occurrence qualifier +Set to missing (cancel) +Operational + + +2396 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +004003 +Day += 1 +Operational + + +2397 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +004004 +Hour += 0 +Operational + + +2398 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +004074 +Short time period or displacement +Operational + + +2399 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +004023 +Time period or displacement +Number of days in the month +Operational + + +2400 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2401 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +013060 +Total accumulated precipitation +Operational + + +2402 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +013051 +Frequency group, precipitation +Operational + + +2403 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +2404 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +008050 +Qualifier for number of missing values in calculation of statistic += 5 Precipitation +Operational + + +2405 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Precipitation +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +2406 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days of occurrence +102006 +Replicate 2 descriptors 6 times +Operational + + +2407 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days of occurrence +008052 +Condition for which number of days of occurrence follows +Operational + + +2408 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Number of days of occurrence +008022 +Total number (with respect to accumulation or average) +Days +Operational + + +2409 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme precipitation +008053 +Day of occurrence qualifier += 0 On 1 day only, = 1 On 2 or more days +Operational + + +2410 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme precipitation +004003 +Day +Operational + + +2411 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme precipitation +013052 +Highest daily amount of precipitation +Operational + + +2412 +07 +Surface report sequences (land) +307076 +(Monthly values from a land station in compliance with regional or national reporting practices) +Occurrence of extreme precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2413 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004001 +Year +Beginning of the reference period +Operational + + +2414 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004001 +Year +Ending of the reference period +Operational + + +2415 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004002 +Month +Operational + + +2416 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004003 +Day += 1 +Operational + + +2417 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004004 +Hour += 0 +Operational + + +2418 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004074 +Short time period or displacement +Operational + + +2419 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004022 +Time period or displacement += 1 +Operational + + +2420 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +008023 +First-order statistics += 4 Mean value +Operational + + +2421 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +010004 +Pressure +Operational + + +2422 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +010051 +Pressure reduced to mean sea level +Operational + + +2423 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +007004 +Pressure +Standard level +Operational + + +2424 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +010009 +Geopotential height +Standard level +Operational + + +2425 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2426 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +012101 +Temperature/air temperature +Operational + + +2427 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +002051 +Indicator to specify observing method for extreme temperatures +Operational + + +2428 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004051 +Principal time of daily reading of maximum temperature +Operational + + +2429 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +012118 +Maximum temperature at height specified, past 24 hours +Operational + + +2430 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +004052 +Principal time of daily reading of minimum temperature +Operational + + +2431 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +012119 +Minimum temperature at height specified, past 24 hours +Operational + + +2432 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +013004 +Vapour pressure +Operational + + +2433 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +012151 +Standard deviation of daily mean temperature +Operational + + +2434 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2435 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +014032 +Total sunshine +Operational + + +2436 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +008023 +First-order statistics +Set to missing (cancel) +Operational + + +2437 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004001 +Year +Beginning of the reference period +Operational + + +2438 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004001 +Year +Ending of the reference period +Operational + + +2439 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004002 +Month +Operational + + +2440 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004003 +Day += 1 +Operational + + +2441 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004004 +Hour += 0 +Operational + + +2442 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004074 +Short time period or displacement +Operational + + +2443 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004022 +Time period or displacement += 1 +Operational + + +2444 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2445 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +008023 +First-order statistics += 4 Mean value +Operational + + +2446 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +013060 +Total accumulated precipitation +Operational + + +2447 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +2448 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +008023 +First-order statistics +Set to missing (cancel) +Operational + + +2449 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +102008 +Replicate 2 descriptors 8 times +Operational + + +2450 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +008050 +Qualifier for number of missing values in calculation of statistic +Pressure, temperature, extreme temperatures, vapour pressure, precipitation, sunshine duration, maximum temperature, minimum temperature +Operational + + +2451 +07 +Surface report sequences (land) +307077 +(Monthly normals for a land station in compliance with regional or national reporting practices) +Normals of precipitation +008020 +Total number of missing entities (with respect to accumulation or average) +Years +Operational + + +2452 +07 +Surface report sequences (land) +307078 +(Sequence for representation of monthly values suitable for CLIMAT data in compliance with regional or national reporting practices) +307076 +Monthly values from a land station in compliance with regional or national reporting practices +Operational + + +2453 +07 +Surface report sequences (land) +307078 +(Sequence for representation of monthly values suitable for CLIMAT data in compliance with regional or national reporting practices) +307077 +Monthly normals for a land station in compliance with regional or national reporting practices +Operational + + +2454 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2455 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302031 +Pressure information +Operational + + +2456 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302035 +Basic synoptic "instantaneous" data +Operational + + +2457 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302036 +Clouds with bases below station level +Operational + + +2458 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +101000 +Delayed replication of 1 descriptor +Operational + + +2459 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +031000 +Short delayed descriptor replication factor +Operational + + +2460 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302047 +Direction of cloud drift +Operational + + +2461 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +008002 +Vertical significance (surface observations) +Operational + + +2462 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +101000 +Delayed replication of 1 descriptor +Operational + + +2463 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +031000 +Short delayed descriptor replication factor +Operational + + +2464 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302048 +Direction and elevation of cloud +Operational + + +2465 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2466 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +102000 +Delayed replication of 2 descriptors +Operational + + +2467 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +031000 +Short delayed descriptor replication factor +Operational + + +2468 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +022061 +State of the sea +Operational + + +2469 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +020058 +Visibility seawards from a coastal station +Operational + + +2470 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +101000 +Delayed replication of 1 descriptor +Operational + + +2471 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +031000 +Short delayed descriptor replication factor +Operational + + +2472 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302056 +Sea/water temperature +Sea/water surface temperature, method of measurement, depth below water surface +Operational + + +2473 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +101000 +Delayed replication of 1 descriptor +Operational + + +2474 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +031000 +Short delayed descriptor replication factor +Operational + + +2475 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302055 +Icing and ice +Operational + + +2476 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302043 +Basic synoptic "period" data +Operational + + +2477 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302044 +Evaporation data +Operational + + +2478 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +101000 +Delayed replication of 1 descriptor +Operational + + +2479 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +031001 +Delayed descriptor replication factor +Operational + + +2480 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2481 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +101000 +Delayed replication of 1 descriptor +Operational + + +2482 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +031000 +Short delayed descriptor replication factor +Operational + + +2483 +07 +Surface report sequences (land) +307079 +(Sequence for representation of synoptic reports from fixed land stations suitable for SYNOP data and for maritime data from coastal stations) +302046 +Temperature change +Operational + + +2484 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2485 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302031 +Pressure information +Operational + + +2486 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302035 +Basic synoptic "instantaneous" data +Operational + + +2487 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302036 +Clouds with bases below station level +Operational + + +2488 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302047 +Direction of cloud drift +Operational + + +2489 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +008002 +Vertical significance (surface observations) +Operational + + +2490 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302048 +Direction and elevation of cloud +Operational + + +2491 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2492 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302043 +Basic synoptic "period" data +Operational + + +2493 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302044 +Evaporation data +Operational + + +2494 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +101002 +Replicate 1 descriptor 2 times +Operational + + +2495 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2496 +07 +Surface report sequences (land) +307080 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data) +302046 +Temperature change +Operational + + +2497 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2498 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302031 +Pressure information +Operational + + +2499 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302035 +Basic synoptic "instantaneous" data +Operational + + +2500 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302036 +Clouds with bases below station level +Operational + + +2501 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302047 +Direction of cloud drift +Operational + + +2502 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +2503 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302048 +Direction and elevation of cloud +Operational + + +2504 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2505 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +012122 +Ground minimum temperature of the preceding night +Operational + + +2506 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +013056 +Character and intensity of precipitation +Operational + + +2507 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +013057 +Time of beginning or end of precipitation +Operational + + +2508 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020101 +Locust (acridian) name +Operational + + +2509 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020102 +Locust (maturity) colour +Operational + + +2510 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020103 +Stage of development of locusts +Operational + + +2511 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020104 +Organization state of swarm or band of locusts +Operational + + +2512 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020105 +Size of swarm or band of locusts and duration of passage of swarm +Operational + + +2513 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020106 +Locust population density +Operational + + +2514 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020107 +Direction of movements of locust swarm +Operational + + +2515 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +020108 +Extent of vegetation +Operational + + +2516 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302043 +Basic synoptic "period" data +Operational + + +2517 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302044 +Evaporation data +Operational + + +2518 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +101002 +Replicate 1 descriptor 2 times +Operational + + +2519 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2520 +07 +Surface report sequences (land) +307081 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA I) +302046 +Temperature change +Operational + + +2521 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2522 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302031 +Pressure information +Operational + + +2523 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302035 +Basic synoptic "instantaneous" data +Operational + + +2524 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302036 +Clouds with bases below station level +Operational + + +2525 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302047 +Direction of cloud drift +Operational + + +2526 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +2527 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302048 +Direction and elevation of cloud +Operational + + +2528 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2529 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +012121 +Ground minimum temperature +At the time of observation +Operational + + +2530 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +012122 +Ground minimum temperature of the preceding night +Operational + + +2531 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302043 +Basic synoptic "period" data +Operational + + +2532 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302044 +Evaporation data +Operational + + +2533 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +101002 +Replicate 1 descriptor 2 times +Operational + + +2534 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2535 +07 +Surface report sequences (land) +307082 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) (see Note 7) +302046 +Temperature change +Operational + + +2536 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2537 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302031 +Pressure information +Operational + + +2538 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302035 +Basic synoptic "instantaneous" data +Operational + + +2539 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302036 +Clouds with bases below station level +Operational + + +2540 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302047 +Direction of cloud drift +Operational + + +2541 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +2542 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302048 +Direction and elevation of cloud +Operational + + +2543 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2544 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +012122 +Ground minimum temperature of the preceding night +Operational + + +2545 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302043 +Basic synoptic "period" data +Operational + + +2546 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302044 +Evaporation data +Operational + + +2547 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +101002 +Replicate 1 descriptor 2 times +Operational + + +2548 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2549 +07 +Surface report sequences (land) +307083 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA III) +302046 +Temperature change +Operational + + +2550 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2551 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302031 +Pressure information +Operational + + +2552 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302035 +Basic synoptic "instantaneous" data +Operational + + +2553 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302036 +Clouds with bases below station level +Operational + + +2554 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302047 +Direction of cloud drift +Operational + + +2555 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +2556 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302048 +Direction and elevation of cloud +Operational + + +2557 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2558 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +020055 +State of sky in the tropics +Operational + + +2559 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +101000 +Delayed replication of 1 descriptor +Operational + + +2560 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +031001 +Delayed descriptor replication factor +Operational + + +2561 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +205001 +Signify character +Character field of 1 character +Operational + + +2562 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302043 +Basic synoptic "period" data +Operational + + +2563 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302044 +Evaporation data +Operational + + +2564 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +101002 +Replicate 1 descriptor 2 times +Operational + + +2565 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2566 +07 +Surface report sequences (land) +307084 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA IV) +302046 +Temperature change +Operational + + +2567 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2568 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302031 +Pressure information +Operational + + +2569 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302035 +Basic synoptic "instantaneous" data +Operational + + +2570 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302036 +Clouds with bases below station level +Operational + + +2571 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +2572 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2573 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302066 +Dangerous weather phenomena +Operational + + +2574 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302043 +Basic synoptic "period" data +Operational + + +2575 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302044 +Evaporation data +Operational + + +2576 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +101002 +Replicate 1 descriptor 2 times +Operational + + +2577 +07 +Surface report sequences (land) +307086 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA VI) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2578 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Surface station identification, time, horizontal and vertical coordinates +301001 +WMO block and station numbers +IIiii +Operational + + +2579 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Surface station identification, time, horizontal and vertical coordinates +002001 +Type of station +ix +Operational + + +2580 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Surface station identification, time, horizontal and vertical coordinates +301011 +Year, month, day +YY +Operational + + +2581 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Surface station identification, time, horizontal and vertical coordinates +301012 +Hour, minute +GG, gg +Operational + + +2582 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Surface station identification, time, horizontal and vertical coordinates +301023 +Latitude/longitude (coarse accuracy) +Operational + + +2583 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Surface station identification, time, horizontal and vertical coordinates +007030 +Height of station ground above mean sea level +Operational + + +2584 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Surface station identification, time, horizontal and vertical coordinates +007031 +Height of barometer above mean sea level +Operational + + +2585 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Pressure data +302001 +Pressure and 3-hour pressure change +PoPoPoPo, PPPP, ppp, a +Operational + + +2586 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Pressure data +010062 +24-hour pressure change +p24p24p24 +Operational + + +2587 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Pressure data +007004 +Pressure +Standard level a3 = 925, 850, 700, ..hPa | Set to missing for lowland stations +Operational + + +2588 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Pressure data +010009 +Geopotential height +Standard level hhh | Set to missing for lowland stations +Operational + + +2589 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Temperature and humidity +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +Operational + + +2590 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Temperature and humidity +012101 +Temperature/air temperature +snTTT | Scale: 2 +Operational + + +2591 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Temperature and humidity +012103 +Dewpoint temperature +snTdTdTd | Scale: 2 +Operational + + +2592 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Temperature and humidity +013003 +Relative humidity +Operational + + +2593 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Temperature and humidity +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2594 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Visibility +020001 +Horizontal visibility +VV +Operational + + +2595 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Cloud data +302004 +General cloud information +Cloud cover (total) N: If N = 9, then 0 20 010 = 113, if N = /, then 0 20 010 = missing | Vertical significance: If CL are observed, then 0 08 002 = 7 | Low cloud: If CL are not observed and CM are observed, then 0 08 002 = 8 | Middle cloud: If only CH are observed, 0 08 002 = 0, if N = 9, then 0 08 002 = 5, if N = 0, then 0 08 002 = 62, if N = /, then 0 08 002 = missing | Cloud amount (of low or middle clouds) Nh: If N = 0, then 0 20 011 = 0, if N = 9, then 0 20 011 = 9, if N = /, then 0 20 011 = missing | Height of base of cloud h: If N = 0 or /, then 0 20 013 = missing | Cloud type (low clouds) CL: 0 20 012 = CL + 30, if N = 0, then 0 20 012 = 30, if N = 9 or /, then 0 20 012 = 62 | Cloud type (middle clouds) CM: 0 20 012 = CM + 20, if N = 0, then 0 20 012 = 20, if N = 9 or / or CM = /, then 0 20 012 = 61 | Cloud type (high clouds) CH: 0 20 012 = CH + 10, if N = 0, then 0 20 012 = 10, if N = 9 or / or CH = /, then 0 20 012 = 60 +Operational + + +2596 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Cloud data +101000 +Delayed replication of 1 descriptor +Operational + + +2597 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Cloud data +031001 +Delayed descriptor replication factor +Operational + + +2598 +07 +Surface report sequences (land) +307087 +("Instantaneous" parameters of sequence 3 07 089) +Cloud data +302005 +Cloud layer +Vertical significance: In any Cb layer, 0 08 002 = 4, else in the first replication, if N = 9, then 0 08 002 = 5, if N = /, then 0 08 002 = missing, else 0 08 002 = 1, in the other replications 0 08 002 = 2, 3, 4 | Cloud amount Ns: In the first replication, if N = /, then 0 20 011 = missing, else 0 20 011 = Ns, in the other replications 0 20 011 = Ns | Cloud type C: If N = 9 or /, then 0 20 012 = missing, else 0 20 012 = C | Height of base of cloud hshs +Operational + + +2599 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Present and past weather +020003 +Present weather +ww +Operational + + +2600 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Present and past weather +004024 +Time period or displacement += -6 at 00, 06, 12, 18 UTC, = -3 at 03, 09,15, 21 UTC +Operational + + +2601 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Present and past weather +020004 +Past weather (1) +W1 +Operational + + +2602 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Present and past weather +020005 +Past weather (2) +W2 +Operational + + +2603 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Evaporation +004024 +Time period or displacement += -24 (hours) +Operational + + +2604 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Evaporation +002004 +Type of instrumentation for evaporation measurement or type of crop for which evapotranspiration is reported +iE +Operational + + +2605 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Evaporation +013033 +Evaporation/evapotranspiration +EEE +Operational + + +2606 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Sunshine +102002 +Replicate 2 descriptors 2 times +Operational + + +2607 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Sunshine +004024 +Time period or displacement += -24 (hours) in the first replication, = -1 (hour) in the second replication +Operational + + +2608 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Sunshine +014031 +Total sunshine +SSS in the first replication, SS in the second replication +Operational + + +2609 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Precipitation +102002 +Replicate 2 descriptors 2 times +Operational + + +2610 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Precipitation +004024 +Time period or displacement +tR +Operational + + +2611 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Precipitation +013011 +Total precipitation/total water equivalent +RRR | = 0 No precipitation, = -0.1 Trace +Operational + + +2612 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Extreme temperatures +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +Operational + + +2613 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Extreme temperatures +004024 +Time period or displacement += -12 (hours) +Operational + + +2614 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Extreme temperatures +012111 +Maximum temperature, at height and over period specified +snTxTxTx +Operational + + +2615 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Extreme temperatures +004024 +Time period or displacement += -12 (hours) +Operational + + +2616 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Extreme temperatures +012112 +Minimum temperature, at height and over period specified +snTnTnTn +Operational + + +2617 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Wind data +007032 +Height of sensor above local ground (or deck of marine platform) +Wind measurement +Operational + + +2618 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Wind data +002002 +Type of instrumentation for wind measurement +iw +Operational + + +2619 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Wind data +008021 +Time significance += 2 Time averaged +Operational + + +2620 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Wind data +004025 +Time period or displacement += -10 (minutes) or number of minutes after a significant change of wind, if any +Operational + + +2621 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Wind data +011001 +Wind direction +dd | If dd = 00 Calm or dd = 99 Variable, 0 11 001 = 0 +Operational + + +2622 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Wind data +011002 +Wind speed +ff +Operational + + +2623 +07 +Surface report sequences (land) +307088 +("Period" parameters of sequence 3 07 089) +Wind data +008021 +Time significance +Set to missing (cancel) +Operational + + +2624 +07 +Surface report sequences (land) +307089 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data manually encoded in CREX) +307087 +"Instantaneous" parameters of sequence 3 07 089 +Operational + + +2625 +07 +Surface report sequences (land) +307089 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data manually encoded in CREX) +307088 +"Period" parameters of sequence 3 07 089 +Operational + + +2626 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +301092 +Mobile surface station identification, date/time, horizontal and vertical coordinates +Operational + + +2627 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302031 +Pressure information +Operational + + +2628 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302035 +Basic synoptic "instantaneous" data +Operational + + +2629 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302036 +Clouds with bases below station level +Operational + + +2630 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302047 +Direction of cloud drift +Operational + + +2631 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +008002 +Vertical significance (surface observations) +Operational + + +2632 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302048 +Direction and elevation of cloud +Operational + + +2633 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302037 +State of ground, snow depth, ground minimum temperature +Operational + + +2634 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302043 +Basic synoptic "period" data +Operational + + +2635 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302044 +Evaporation data +Operational + + +2636 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +101002 +Replicate 1 descriptor 2 times +Operational + + +2637 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2638 +07 +Surface report sequences (land) +307090 +(Sequence for representation of synoptic reports from a mobile land station suitable for SYNOP MOBIL data) +302046 +Temperature change +Operational + + +2639 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +301089 +National station identification +Operational + + +2640 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +301090 +Surface station identification; time, horizontal and vertical co-ordinates +Operational + + +2641 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +008010 +Surface qualifier (temperature data) +Operational + + +2642 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +301091 +Surface station instrumentation +Operational + + +2643 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302001 +Pressure and 3-hour pressure change +Operational + + +2644 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +007004 +Pressure +Standard level +Operational + + +2645 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +010009 +Geopotential height +Standard level +Operational + + +2646 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302072 +Temperature and humidity data +Operational + + +2647 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +103000 +Delayed replication of 3 descriptors +Operational + + +2648 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +2649 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101005 +Replicate 1 descriptor 5 times +Operational + + +2650 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +307063 +Depth below land surface and soil temperature +Operational + + +2651 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +007061 +Depth below land surface +Set to missing (cancel) +Operational + + +2652 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +2653 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +2654 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302069 +Visibility data +Operational + + +2655 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2656 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +2657 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +105000 +Delayed replication of 5 descriptors +Operational + + +2658 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +2659 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +020031 +Ice deposit (thickness) +Operational + + +2660 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +020032 +Rate of ice accretion (estimated) +Operational + + +2661 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +002038 +Method of water temperature and/or salinity measurement +Operational + + +2662 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +022043 +Sea/water temperature +Scale: 2 +Operational + + +2663 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302021 +Waves +Operational + + +2664 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +2665 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +2666 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302078 +State of ground and snow depth measurement +Operational + + +2667 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +2668 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +2669 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302073 +Cloud data +Operational + + +2670 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +2671 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +2672 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302074 +Present and past weather +Operational + + +2673 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +2674 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +2675 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302175 +Intensity of precipitation, size of precipitation element +Operational + + +2676 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +102000 +Delayed replication of 2 descriptors +Operational + + +2677 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +2678 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +004025 +Time period or displacement += -10 (minutes) +Operational + + +2679 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302076 +Precipitation, obscuration and other phenomena +Operational + + +2680 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302071 +Wind data from one-hour period +Operational + + +2681 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302077 +Extreme temperature data +Operational + + +2682 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +2683 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +2684 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +2685 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302079 +Precipitation measurement +Operational + + +2686 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2687 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +2688 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +2689 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302080 +Evaporation measurement +Operational + + +2690 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +2691 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +2692 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302081 +Total sunshine data +Operational + + +2693 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +2694 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +2695 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302082 +Radiation data +Operational + + +2696 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +102000 +Delayed replication of 2 descriptors +Operational + + +2697 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +2698 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +004025 +Time period or displacement += -10 (minutes) +Operational + + +2699 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +013059 +Number of flashes (thunderstorm) +Operational + + +2700 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +101000 +Delayed replication of 1 descriptor +Operational + + +2701 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +031000 +Short delayed descriptor replication factor +Operational + + +2702 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +302083 +First-order statistics of P, W, T, U data +Operational + + +2703 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +033005 +Quality information (AWS data) +Operational + + +2704 +07 +Surface report sequences (land) +307091 +(BUFR template for surface observations from one-hour period with national and WMO station identification) +033006 +Internal measurement status information (AWS) +Operational + + +2705 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +301150 +WIGOS identifier +Operational + + +2706 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +301001 +WMO block and station numbers +Operational + + +2707 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +208040 +Change width of CCITT IA5 field +Operational + + +2708 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +001019 +Long station or site name +40 characters +Operational + + +2709 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +208000 +Change width of CCITT IA5 field +Operational + + +2710 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +301011 +Year, month, day +The time identification refers to the end of the n-minute period. +Operational + + +2711 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +301012 +Hour, minute +Operational + + +2712 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +301021 +Latitude/longitude (high accuracy) +Operational + + +2713 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007030 +Height of station ground above mean sea level +Operational + + +2714 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +001023 +Observation sequence number +Operational + + +2715 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +108000 +Delayed replication of 8 descriptors +Operational + + +2716 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +2717 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007031 +Height of barometer above mean sea level +Operational + + +2718 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2719 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +2720 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +010004 +Pressure +Measured value of the air pressure at the sensor location and sensor height +Operational + + +2721 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +010051 +Pressure reduced to mean sea level +Operational + + +2722 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007004 +Pressure +Standard level +Operational + + +2723 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +010009 +Geopotential height +Standard level +Operational + + +2724 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2725 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +115000 +Delayed replication of 15 descriptors +Operational + + +2726 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031001 +Delayed descriptor replication factor +Operational + + +2727 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2728 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +008010 +Surface qualifier (temperature data) +Operational + + +2729 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2730 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +2731 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +012101 +Temperature/air-temperature +Scale: 2 +Operational + + +2732 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +012103 +Dewpoint temperature +Scale: 2 +Operational + + +2733 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +202129 +Change scale +Operational + + +2734 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +201132 +Change data width +Operational + + +2735 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +013003 +Relative humidity +Mandatory to report (presuming a humidity sensor is installed), data width 11 bits +Operational + + +2736 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +201000 +Change data width +Cancel +Operational + + +2737 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +202000 +Change scale +Cancel +Operational + + +2738 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +013009 +Relative humidity +Original measured value +Operational + + +2739 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2740 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2741 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +008010 +Surface qualifier (temperature data) +Set to missing (cancel) +Operational + + +2742 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +107000 +Delayed replication of 7 descriptors +Operational + + +2743 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031001 +Delayed descriptor replication factor +Operational + + +2744 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007061 +Depth below land surface +Operational + + +2745 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2746 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +2747 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +012130 +Soil temperature +Operational + + +2748 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +013111 +Soil moisture +Operational + + +2749 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2750 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007061 +Depth below land surface +Set to missing (cancel) +Operational + + +2751 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +105000 +Delayed replication of 5 descriptors +Operational + + +2752 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +2753 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +033041 +Attribute of following value +Operational + + +2754 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2755 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +2756 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +020001 +Horizontal visibility +Operational + + +2757 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2758 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +113000 +Delayed replication of 13 descriptors +Operational + + +2759 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +2760 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2761 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +2762 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +020010 +Cloud cover (total) +Operational + + +2763 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2764 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +107000 +Delayed replication of 7 descriptors +Operational + + +2765 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031001 +Delayed descriptor replication factor +Operational + + +2766 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +008002 +Vertical significance (surface observations) +Operational + + +2767 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2768 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +2769 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +020011 +Cloud amount +Operational + + +2770 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +020013 +Height of base of cloud +Operational + + +2771 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2772 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +2773 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +105000 +Delayed replication of 5 descriptors +Operational + + +2774 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +2775 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2776 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +2777 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +020062 +State of ground (with or without snow) +Operational + + +2778 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +013013 +Total snow depth +Operational + + +2779 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2780 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +105000 +Delayed replication of 5 descriptors +Operational + + +2781 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +2782 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +004025 +Time period or displacement += -n minutes +Operational + + +2783 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2784 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +2785 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +020003 +Present weather +Operational + + +2786 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2787 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +105000 +Delayed replication of 5 descriptors +Operational + + +2788 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +2789 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +004025 +Time period or displacement += -n minutes +Operational + + +2790 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2791 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +2792 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +013011 +Total precipitation/total water equivalent +Snow +Operational + + +2793 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2794 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +115000 +Delayed replication of 15 descriptors +Operational + + +2795 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031001 +Delayed descriptor replication factor +Operational + + +2796 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2797 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +008021 +Time significance += 2 Time averaged +Operational + + +2798 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +004025 +Time period or displacement += -10 minutes, or number of minutes after a significant change of wind +Operational + + +2799 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2800 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +2801 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +011001 +Wind direction +Operational + + +2802 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +011002 +Wind speed +Operational + + +2803 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2804 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +008021 +Time significance +Set to missing (cancel) +Operational + + +2805 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2806 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +2807 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +011043 +Maximum wind gust direction +Operational + + +2808 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +011041 +Maximum wind gust speed +Operational + + +2809 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2810 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2811 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +105000 +Delayed replication of 5 descriptors +Operational + + +2812 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +2813 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +004025 +Time period or displacement += -n minutes (default n = 10) +Operational + + +2814 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2815 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +2816 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014031 +Total sunshine +Operational + + +2817 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2818 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +110000 +Delayed replication of 10 descriptors +Operational + + +2819 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Open or close (1/0) +Operational + + +2820 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +004025 +Time period or displacement += -n minutes (default n = 10) +Operational + + +2821 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2822 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +2823 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014002 +Long-wave radiation, integrated over period specified +Upward long-wave radiation | according to BUFR Table B, under Class 14, Note 2: negative values +Operational + + +2824 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014002 +Long-wave radiation, integrated over period specified +Downward long-wave radiation | according to BUFR Table B, under Class 14, Note 1: positive values +Operational + + +2825 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014004 +Short-wave radiation, integrated over period specified +Upward short-wave radiation | according to BUFR Table B, under Class 14, Note 2: negative values +Operational + + +2826 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014028 +Global solar radiation (high accuracy), integrated over period specified +Operational + + +2827 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014029 +Diffuse solar radiation (high accuracy), integrated over period specified +Operational + + +2828 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014030 +Direct solar radiation (high accuracy), integrated over period specified +Operational + + +2829 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2830 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +113000 +Delayed replication of 13 descriptors +Operational + + +2831 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031000 +Short delayed descriptor replication factor +Operational + + +2832 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +004025 +Time period or displacement += -n minutes (default n = 10) +Operational + + +2833 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +002071 +Spectrographic wavelength +UV-A: 315 nm +Operational + + +2834 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +002072 +Spectrographic width +UV-A: 85 nm +Operational + + +2835 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2836 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Operational + + +2837 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014072 +Global UV irradiation +Integrated over period specified | UV-A irradiation | according to BUFR Table B under Class 14, Note 8 (ISO 21348: UV-A wave length range 315 ≤ λ ≤400 nm) +Operational + + +2838 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2839 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +002071 +Spectrographic wavelength +UV-B: 280 nm +Operational + + +2840 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +002072 +Spectrographic width +UV-B: 35 nm +Operational + + +2841 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204018 +Add associated field +Operational + + +2842 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +031021 +Associated field significance +Quality flag +Operational + + +2843 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +014072 +Global UV irradiation +Integrated over period specified | UV-B irradiation | according to BUFR Table B under Class 14, Note 8 (ISO 21348 UV-B wave length range 280 ≤ λ ≤ 315 nm) +Operational + + +2844 +07 +Surface report sequences (land) +307092 +(BUFR template for surface observations from n-minute period) +204000 +Add associated field +Cancel +Operational + + +2845 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +301090 +Surface station identification; time, horizontal and vertical coordinates +Operational + + +2846 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +301089 +National station identification +Operational + + +2847 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +008010 +Surface qualifier (temperature data) +Operational + + +2848 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +301091 +Surface station instrumentation +Operational + + +2849 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +302084 +"Instantaneous" data of sequence 3 07 096 +Operational + + +2850 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +302085 +"Period" data of sequence 3 07 096 +Operational + + +2851 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +033005 +Quality information (AWS data) +Operational + + +2852 +07 +Surface report sequences (land) +307096 +(Sequence for representation of SYNOP with supplementary information on one-hour observations) +033006 +Internal measurement status information (AWS) +Operational + + +2853 +07 +Surface report sequences (land) +307101 +(Snow observation) +301089 +National station identification +Operational + + +2854 +07 +Surface report sequences (land) +307101 +(Snow observation) +001019 +Long station or site name +Operational + + +2855 +07 +Surface report sequences (land) +307101 +(Snow observation) +002001 +Type of station +Operational + + +2856 +07 +Surface report sequences (land) +307101 +(Snow observation) +301011 +Year, month, day +Operational + + +2857 +07 +Surface report sequences (land) +307101 +(Snow observation) +301012 +Hour, minute +Operational + + +2858 +07 +Surface report sequences (land) +307101 +(Snow observation) +301021 +Latitude/longitude (high accuracy) +Operational + + +2859 +07 +Surface report sequences (land) +307101 +(Snow observation) +007030 +Height of station ground above mean sea level +Operational + + +2860 +07 +Surface report sequences (land) +307101 +(Snow observation) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2861 +07 +Surface report sequences (land) +307101 +(Snow observation) +012101 +Temperature/air temperature +Operational + + +2862 +07 +Surface report sequences (land) +307101 +(Snow observation) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2863 +07 +Surface report sequences (land) +307101 +(Snow observation) +002177 +Method of snow depth measurement +Operational + + +2864 +07 +Surface report sequences (land) +307101 +(Snow observation) +020062 +State of the ground (with or without snow) +Operational + + +2865 +07 +Surface report sequences (land) +307101 +(Snow observation) +013013 +Total snow depth +Operational + + +2866 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +301089 +National station identification +Operational + + +2867 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +001018 +Short station or site name +For identification of the road weather monitoring site +Operational + + +2868 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +001015 +Station or site name +Operational + + +2869 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +001104 +State/federal state identifier +Operational + + +2870 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +001105 +Highway designator +Operational + + +2871 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +001106 +Location along highway as indicated by position markers +Operational + + +2872 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +003017 +Extended type of station +Operational + + +2873 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +003018 +Type of road +Operational + + +2874 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +003019 +Type of construction +Operational + + +2875 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +301011 +Year, month, day +Operational + + +2876 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +301012 +Hour, minute +Operational + + +2877 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +301021 +Latitude/longitude (high accuracy) +Operational + + +2878 +07 +Surface report sequences (land) +307102 +(Road weather information) +Station identification +007030 +Height of station ground above mean sea level +Operational + + +2879 +07 +Surface report sequences (land) +307102 +(Road weather information) +Temperature, humidity and visibility data +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2880 +07 +Surface report sequences (land) +307102 +(Road weather information) +Temperature, humidity and visibility data +012101 +Temperature/air temperature +Operational + + +2881 +07 +Surface report sequences (land) +307102 +(Road weather information) +Temperature, humidity and visibility data +012103 +Dewpoint temperature +Operational + + +2882 +07 +Surface report sequences (land) +307102 +(Road weather information) +Temperature, humidity and visibility data +013003 +Relative humidity +Operational + + +2883 +07 +Surface report sequences (land) +307102 +(Road weather information) +Temperature, humidity and visibility data +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2884 +07 +Surface report sequences (land) +307102 +(Road weather information) +Temperature, humidity and visibility data +020001 +Horizontal visibility +Operational + + +2885 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +109000 +Delayed replication of 9 descriptors +Operational + + +2886 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +031001 +Delayed descriptor replication factor +Operational + + +2887 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +003016 +Position of road sensors +Operational + + +2888 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +012128 +Road surface temperature +Operational + + +2889 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +102000 +Delayed replication of 2 descriptors +Operational + + +2890 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +031001 +Delayed descriptor replication factor +Operational + + +2891 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +007061 +Depth below land surface += 0.30 m in the first replication, = e.g. 0.15 or 0.07 m in the second replication +Operational + + +2892 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +012129 +Road subsurface temperature +Operational + + +2893 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +007061 +Depth below land surface +Set to missing (cancel) +Operational + + +2894 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +013116 +Water film thickness +Operational + + +2895 +07 +Surface report sequences (land) +307102 +(Road weather information) +Road temperature and other data +020138 +Road surface condition +Operational + + +2896 +07 +Surface report sequences (land) +307102 +(Road weather information) +Precipitation data +004025 +Time period or displacement += -15 minutes +Operational + + +2897 +07 +Surface report sequences (land) +307102 +(Road weather information) +Precipitation data +020024 +Intensity of phenomena +Intensity (light, moderate, heavy) of precipitation +Operational + + +2898 +07 +Surface report sequences (land) +307102 +(Road weather information) +Precipitation data +013055 +Intensity of precipitation +Operational + + +2899 +07 +Surface report sequences (land) +307102 +(Road weather information) +Precipitation data +020021 +Type of precipitation +Operational + + +2900 +07 +Surface report sequences (land) +307102 +(Road weather information) +Precipitation data +013011 +Total precipitation/total water equivalent +Operational + + +2901 +07 +Surface report sequences (land) +307102 +(Road weather information) +Wind data +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +2902 +07 +Surface report sequences (land) +307102 +(Road weather information) +Wind data +008021 +Time significance += 2 Time averaged +Operational + + +2903 +07 +Surface report sequences (land) +307102 +(Road weather information) +Wind data +004025 +Time period or displacement += -10 minutes +Operational + + +2904 +07 +Surface report sequences (land) +307102 +(Road weather information) +Wind data +011001 +Wind direction +Operational + + +2905 +07 +Surface report sequences (land) +307102 +(Road weather information) +Wind data +011002 +Wind speed +Operational + + +2906 +07 +Surface report sequences (land) +307102 +(Road weather information) +Wind data +008021 +Time significance +Set to missing (cancel) +Operational + + +2907 +07 +Surface report sequences (land) +307102 +(Road weather information) +Maximum wind gust +004025 +Time period or displacement +In minutes +Operational + + +2908 +07 +Surface report sequences (land) +307102 +(Road weather information) +Maximum wind gust +011043 +Maximum wind gust direction +Operational + + +2909 +07 +Surface report sequences (land) +307102 +(Road weather information) +Maximum wind gust +011041 +Maximum wind gust speed +Operational + + +2910 +07 +Surface report sequences (land) +307102 +(Road weather information) +State of functionality +033005 +Quality information (AWS data) +Operational + + +2911 +07 +Surface report sequences (land) +307103 +(Snow observation, snow density, snow water equivalent) +301150 +WIGOS identifier +Operational + + +2912 +07 +Surface report sequences (land) +307103 +(Snow observation, snow density, snow water equivalent) +307101 +Snow observation +Operational + + +2913 +07 +Surface report sequences (land) +307103 +(Snow observation, snow density, snow water equivalent) +013117 +Snow density (liquid water content) +Operational + + +2914 +07 +Surface report sequences (land) +307103 +(Snow observation, snow density, snow water equivalent) +003028 +Method of snow water equivalent measurement +Operational + + +2915 +07 +Surface report sequences (land) +307103 +(Snow observation, snow density, snow water equivalent) +013163 +Snow water equivalent +Operational + + +2916 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +301090 +Surface station identification, time, horizontal and vertical coordinates +Operational + + +2917 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302031 +Pressure information +Operational + + +2918 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302035 +Basic synoptic “instantaneous” data +Operational + + +2919 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302036 +Clouds with bases below station level +Operational + + +2920 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302047 +Direction of cloud drift +Operational + + +2921 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +008002 +Vertical significance (surface observations) +Set to missing (cancel) +Operational + + +2922 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302048 +Direction and elevation of cloud +Operational + + +2923 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302037 +State of ground, snow depth, ground minimum temperature +Past 12 hours +Operational + + +2924 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +012120 +Ground temperature +snT’gT’g +Operational + + +2925 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +012122 +Ground minimum temperature of the preceding night +snTgTg +Operational + + +2926 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302043 +Basic synoptic “period” data +Operational + + +2927 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302044 +Evaporation data +Operational + + +2928 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +101002 +Replicate 1 descriptor 2 times +Operational + + +2929 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302045 +Radiation data (from 1 hour and 24-hour period) +Operational + + +2930 +07 +Surface report sequences (land) +307182 +(Sequence for representation of synoptic reports from a fixed land station suitable for SYNOP data in compliance with reporting practices in RA II) +302046 +Temperature change +Operational + + +2931 +08 +Surface report sequences (sea) +308001 +(Buoy/platform - fixed) +301033 +Buoy/platform - fixed +Identification, type, date/time, position (high accuracy) +Operational + + +2932 +08 +Surface report sequences (sea) +308001 +(Buoy/platform - fixed) +302011 +Low altitude station +Basic surface report +Operational + + +2933 +08 +Surface report sequences (sea) +308001 +(Buoy/platform - fixed) +022042 +Sea/water temperature +Operational + + +2934 +08 +Surface report sequences (sea) +308002 +(Buoy/platform - fixed) +301034 +Buoy/platform - fixed +Identification, type, date/time, position (coarse accuracy) +Operational + + +2935 +08 +Surface report sequences (sea) +308002 +(Buoy/platform - fixed) +302011 +Low altitude station +Basic surface report +Operational + + +2936 +08 +Surface report sequences (sea) +308002 +(Buoy/platform - fixed) +022042 +Sea/water temperature +Operational + + +2937 +08 +Surface report sequences (sea) +308003 +(Buoy/platform - moving) (see Note 1) +301035 +Buoy/platform - moving +Identification, movement, type, date/time, position (coarse accuracy) +Operational + + +2938 +08 +Surface report sequences (sea) +308003 +(Buoy/platform - moving) +302011 +Low altitude station +Basic surface report +Operational + + +2939 +08 +Surface report sequences (sea) +308003 +(Buoy/platform - moving) +022042 +Sea/water temperature +Operational + + +2940 +08 +Surface report sequences (sea) +308004 +(Ship) +301036 +Ship +Identification, movement, type, date/time, position (coarse accuracy) +Operational + + +2941 +08 +Surface report sequences (sea) +308004 +(Ship) +302011 +Low altitude station +Basic surface report +Operational + + +2942 +08 +Surface report sequences (sea) +308004 +(Ship) +022042 +Sea/water temperature +Operational + + +2943 +08 +Surface report sequences (sea) +308005 +308004 +Ship +Basic ship report +Operational + + +2944 +08 +Surface report sequences (sea) +308005 +302024 +Wind and swell waves +Operational + + +2945 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +010004 +Pressure +Operational + + +2946 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +010061 +3-hour pressure change +Operational + + +2947 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +010063 +Characteristic of pressure tendency +Operational + + +2948 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +011001 +Wind direction +Operational + + +2949 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +011002 +Wind speed +Operational + + +2950 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +012004 +Air temperature at 2 m +Operational + + +2951 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +013003 +Relative humidity +Operational + + +2952 +08 +Surface report sequences (sea) +308006 +(Buoy Section 1 optional parameters) +022042 +Sea/water temperature +Operational + + +2953 +08 +Surface report sequences (sea) +308007 +301055 +Identification and type of station, date/time, location (high accuracy), movement +Operational + + +2954 +08 +Surface report sequences (sea) +308007 +302011 +Low altitude station +Basic surface report +Operational + + +2955 +08 +Surface report sequences (sea) +308007 +007062 +Depth below sea/water surface +Operational + + +2956 +08 +Surface report sequences (sea) +308007 +022042 +Sea/water temperature +Operational + + +2957 +08 +Surface report sequences (sea) +308009 +(Sequence for representation of synoptic reports from a sea station suitable for SHIP data) +301093 +Ship identification, movement, date/time, horizontal and vertical coordinates +Operational + + +2958 +08 +Surface report sequences (sea) +308009 +(Sequence for representation of synoptic reports from a sea station suitable for SHIP data) +302001 +Pressure and 3-hour pressure change +Operational + + +2959 +08 +Surface report sequences (sea) +308009 +(Sequence for representation of synoptic reports from a sea station suitable for SHIP data) +302054 +Ship "instantaneous" data +Operational + + +2960 +08 +Surface report sequences (sea) +308009 +(Sequence for representation of synoptic reports from a sea station suitable for SHIP data) +008002 +Vertical significance (surface observations) +Operational + + +2961 +08 +Surface report sequences (sea) +308009 +(Sequence for representation of synoptic reports from a sea station suitable for SHIP data) +302055 +Icing and ice +Operational + + +2962 +08 +Surface report sequences (sea) +308009 +(Sequence for representation of synoptic reports from a sea station suitable for SHIP data) +302057 +Ship marine data +Operational + + +2963 +08 +Surface report sequences (sea) +308009 +(Sequence for representation of synoptic reports from a sea station suitable for SHIP data) +302060 +Ship "period" data +Operational + + +2964 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +001011 +Ship or mobile land station identifier +Operational + + +2965 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +113000 +Delayed replication of 13 descriptors +Operational + + +2966 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +031001 +Delayed descriptor replication factor +Operational + + +2967 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +301011 +Year, month, day +Operational + + +2968 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +301012 +Hour, minute +Operational + + +2969 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +301021 +Latitude/longitude (high accuracy) +Operational + + +2970 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +004080 +Averaging period for following value +Operational + + +2971 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +022049 +Sea-surface temperature +Operational + + +2972 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +004080 +Averaging period for following value +Operational + + +2973 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +022059 +Sea-surface salinity +Operational + + +2974 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +004080 +Averaging period for following value +Operational + + +2975 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +022005 +Direction of sea-surface current +Operational + + +2976 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +002042 +Indicator for sea-surface current speed +Operational + + +2977 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +022032 +Speed of sea-surface current +Operational + + +2978 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +002042 +Indicator for sea-surface current speed +Cancel +Operational + + +2979 +08 +Surface report sequences (sea) +308010 +(TRACKOB template) +004080 +Averaging period for following value +Cancel +Operational + + +2980 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +001011 +Ship or mobile land station identifier +Ship's call sign +Operational + + +2981 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +002001 +Type of station +Operational + + +2982 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +301011 +Year, month, day +(see Note 2) +Operational + + +2983 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +301012 +Hour, minute +(see Note 2) +Operational + + +2984 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +2985 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +007030 +Height of station ground above mean sea level +(see Note 3) +Operational + + +2986 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +007031 +Height of barometer above mean sea level +(see Note 3) +Operational + + +2987 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +004074 +Short time period or displacement) += UTC - LT +(see Note 2) +Operational + + +2988 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +004023 +Time period or displacement += Number of days in the month +Operational + + +2989 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics += 4 Mean value +Operational + + +2990 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +010051 +Pressure reduced to mean sea level +Operational + + +2991 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +(see Note 3) +Operational + + +2992 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Temperature measurement +(see Note 3) +Operational + + +2993 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +012101 +Temperature/air temperature +Operational + + +2994 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +013004 +Vapour pressure +Operational + + +2995 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +2996 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +2997 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +302056 +Sea/water temperature +Sea-surface temperature, method of measurement, and depth below sea surface +Operational + + +2998 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics +Set to missing +Operational + + +2999 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +004003 +Day += 1 +(see Note 4) +Operational + + +3000 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +004004 +Hour += 6 +(see Note 4) +Operational + + +3001 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +004023 +Time period or displacement += Number of days in the month +(see Note 4) +Operational + + +3002 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +(see Note 3) +Operational + + +3003 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +013060 +Total accumulated precipitation +Operational + + +3004 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +013051 +Frequency group, precipitation +Operational + + +3005 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +3006 +08 +Surface report sequences (sea) +308011 +(Monthly values from an ocean weather station - CLIMAT SHIP) +Precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3007 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +004001 +Year +Beginning of the reference period +Operational + + +3008 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +004001 +Year +Ending of the reference period +Operational + + +3009 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +004002 +Month +Operational + + +3010 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +004003 +Day += 1 +(see Note 2) +Operational + + +3011 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +004004 +Hour += 0 +(see Note 2) +Operational + + +3012 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +004074 +Short time period or displacement += UTC - LT +(see Note 2) +Operational + + +3013 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +004022 +Time period or displacement += 1 +Operational + + +3014 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics += 4 Mean value +Operational + + +3015 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +010051 +Pressure reduced to mean sea level +Operational + + +3016 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +(see Note 3) +Operational + + +3017 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Temperature measurement +(see Note 3) +Operational + + +3018 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +012101 +Temperature/air temperature +Operational + + +3019 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +013004 +Vapour pressure +Operational + + +3020 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3021 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +3022 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +302056 +Sea/water temperature +Sea-surface temperature, method of measurement, and depth below sea surface +Operational + + +3023 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics +Set to missing +Operational + + +3024 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +004001 +Year +Beginning of the reference period +Operational + + +3025 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +004001 +Year +Ending of the reference period +Operational + + +3026 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +004002 +Month +Operational + + +3027 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +004003 +Day += 1 +(see Note 4) +Operational + + +3028 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +004004 +Hour += 6 +(see Note 4) +Operational + + +3029 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of monthly mean pressure, temperature, vapour pressure and sea/water temperature +004022 +Time period or displacement += 1 +Operational + + +3030 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Precipitation measurement +(see Note 3) +Operational + + +3031 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of precipitation +008023 +First-order statistics += 4 Mean value +Operational + + +3032 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of precipitation +013060 +Total accumulated precipitation +Operational + + +3033 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +3034 +08 +Surface report sequences (sea) +308012 +(Monthly normals for an ocean weather station) +Normals of precipitation +008023 +First-order statistics +Set to missing +Operational + + +3035 +08 +Surface report sequences (sea) +308013 +(Representation of CLIMAT SHIP data of the actual month and for monthly normals) +308011 +Monthly values from an ocean weather station - CLIMAT SHIP +Operational + + +3036 +08 +Surface report sequences (sea) +308013 +(Representation of CLIMAT SHIP data of the actual month and for monthly normals) +308012 +Monthly normals for an ocean weather station +Operational + + +3037 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +101000 +Delayed replication of 1 descriptor +Operational + + +3038 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +031000 +Short delayed descriptor replication factor +Operational + + +3039 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +301018 +Encrypted ship’s call sign and encryption method +Operational + + +3040 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +003001 +Surface station type +Operational + + +3041 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +301093 +Ship identification, movement, date/time, horizontal and vertical coordinates +Operational + + +3042 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +208032 +Change width of CCITT IA5 field +Operational + + +3043 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +001079 +Unique identifier for the profile +32 characters | Unique ID for report +Operational + + +3044 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +208000 +Change width of CCITT IA5 +Cancel +Operational + + +3045 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +302062 +Ship “instantaneous” data +Operational + + +3046 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +302063 +Ship “period” data +Operational + + +3047 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +101000 +Delayed replication of 1 descriptor +Operational + + +3048 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +031000 +Short delayed descriptor replication factor +Operational + + +3049 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +302092 +VOSClim data elements +Operational + + +3050 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +101000 +Delayed replication of 1 descriptor +Operational + + +3051 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +031000 +Short delayed descriptor replication factor +Operational + + +3052 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +306033 +Surface salinity +Operational + + +3053 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +101000 +Delayed replication of 1 descriptor +Operational + + +3054 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +031000 +Short delayed descriptor replication factor +Operational + + +3055 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +306034 +Surface current +Operational + + +3056 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +101000 +Delayed replication of 1 descriptor +Operational + + +3057 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +031000 +Short delayed descriptor replication factor +Operational + + +3058 +08 +Surface report sequences (sea) +308014 +(Synoptic reports from sea stations suitable for VOS observation data) +306043 +Marine biogeochemical and radiation observations +E-SURFMAR S-AWS observations +Operational + + +3059 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001003 +WMO Region number/geographical area +A1 - First digit of WMO number (e.g. 62024 => 6) +Operational + + +3060 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001020 +WMO Region sub-area +bw - Second digit of WMO number (e.g. 62024 => 2) +Operational + + +3061 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001005 +Buoy/platform identifier +nbnbnb - Last 3 digits of WMO number (e.g. 62024 => 024) +Operational + + +3062 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001011 +Ship or mobile land station identifier +D....D +Operational + + +3063 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001007 +Satellite identifier +I6I6I6 +Operational + + +3064 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001001 +WMO block number +II +Operational + + +3065 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001002 +WMO station number +iii - IIiii only apply to fixed sea stations +Operational + + +3066 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +002044 +Indicator for method of calculating spectral wave data +Im - Code table 1744 (WAVEOB), 0 02 044 (BUFR) +Operational + + +3067 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +002045 +Indicator for type of platform +Ip - Code table 1747 (WAVEOB), 0 02 045 (BUFR) +Operational + + +3068 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +301011 +Year, month, day +YYMMJ - Date of observation +Operational + + +3069 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +301012 +Hour, minute +GGgg - Time of observation +Operational + + +3070 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +301021 +Latitude/longitude (high accuracy) +QcLaLaLaLa LoLoLoLoLo +Operational + + +3071 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022063 +Total water depth +1hhhh +Operational + + +3072 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022076 +Direction from which dominant waves are coming +9dddd - Section 0 +Operational + + +3073 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022077 +Directional spread of dominant wave +dsds - section 0 +Operational + + +3074 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022094 +Total number of wave bands +111BTBT - Section 1 +Operational + + +3075 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +025043 +Wave sampling interval (time) +SSSS - Section 1 +Operational + + +3076 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022078 +Duration of wave record +D’D’D’D’ - Section 1 +Operational + + +3077 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +105002 +Replicate 5 descriptors 2 times +Replicate over sensor type +Operational + + +3078 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +002046 +Wave measurement instrumentation += 1 Heave sensor, = 2 Slope sensor +Operational + + +3079 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022070 +Significant wave height +2HsHsHsHs or 6HseHseHseHse - Section 0 +Operational + + +3080 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022071 +Spectral peak wave period +3PpPpPpPp or 7PspPspPspPsp - Section 0 +Operational + + +3081 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022073 +Maximum wave height +4HmHmHmHm +Operational + + +3082 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022074 +Average wave period +5PaPaPaPa or 8PsaPsaPsaPsa - Section 0 +Operational + + +3083 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +127000 +Delayed replication of 27 descriptors +Replication over sensor type +Operational + + +3084 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +(0,1,2) normally 1 +(see Note 5) +Operational + + +3085 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +002046 +Wave measurement instrumentation += 1 Heave sensor, = 2 Slope sensor +Operational + + +3086 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +x - Scale to be applied to following element descriptors +Operational + + +3087 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022102 +Scaled maximum non-directional spectral wave density by frequency +CmCmCm - Section 2 or CsmCsmCsm - Section 3 +Operational + + +3088 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +Set to missing +Operational + + +3089 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022084 +Band containing maximum non-directional spectral wave density +nmnm - Section 2 or nsmnsm - Section 3 +Operational + + +3090 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +120000 +Delayed replication of 20 descriptors +Replication over bands +Operational + + +3091 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +111BTBT - Section 1 (number of band) +Operational + + +3092 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022080 +Waveband central frequency +1f1f1f1f1x .... - Section 1 +Operational + + +3093 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022108 +Spectral wave density ratio +1c1c1c2c2 ... - Section 2 or 1cs1cs1cs2cs2 ... - Section 3 +Operational + + +3094 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022086 +Mean direction from which waves are coming +1da1da1 - Section 4 +Operational + + +3095 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022087 +Principal direction from which waves are coming +da2da2 - Section 4 +Operational + + +3096 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022088 +First normalized polar coordinate from Fourier coefficients +r1r1 - Section 4 +Operational + + +3097 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022089 +Second normalized polar coordinate from Fourier coefficients +r2r2 - Section 4 +Operational + + +3098 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +105000 +Delayed replication of 5 descriptors +(see Note 6) +Operational + + +3099 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +n - Section 5 (number of directions counted); = 0 if Ib = 1 (directional) +Operational + + +3100 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +x - Scale to be applied to following element descriptors +Operational + + +3101 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022104 +Scaled non-directional spectral wave density by frequency +1A1A1A1x ... - Section 5 +Operational + + +3102 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +Set to missing +Operational + + +3103 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022186 +Direction from which waves are coming +1d1d1 - Section 5 +(see Note 7) +Operational + + +3104 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022187 +Directional spread of wave +dsds - Section 5 +(see Note 7) +Operational + + +3105 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +105000 +Delayed replication of 5 descriptors +(see Note 8) +Operational + + +3106 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +n - Section 5 (number of directions counted); = 0 if Ib = 0 (non-directional) +Operational + + +3107 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +x - Scale to be applied to following element descriptors +Operational + + +3108 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022106 +Scaled directional spectral wave density by frequency +1A1A1A1x ... - Section 5 +Operational + + +3109 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +Set to missing +Operational + + +3110 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022186 +Direction from which waves are coming +1d1d1 - Section 5 +Operational + + +3111 +08 +Surface report sequences (sea) +308015 +(Template for WAVEOB data expressed as frequency (Ia = 0 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022187 +Directional spread of wave +dsds - Section 5 +Operational + + +3112 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001003 +WMO Region number/geographical area +A1 - First digit of WMO number (e.g. 62024 => 6) +Operational + + +3113 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001020 +WMO Region sub-area +bw - Second digit of WMO number (e.g. 62024 => 2) +Operational + + +3114 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001005 +Buoy/platform identifier +nbnbnb - Last 3 digits of WMO number (e.g. 62024 => 024) +Operational + + +3115 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001011 +Ship or mobile land station identifier +D....D +Operational + + +3116 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001007 +Satellite identifier +I6I6I6 +Operational + + +3117 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001001 +WMO block number +II +Operational + + +3118 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +001002 +WMO station number +iii - IIiii only apply to fixed sea stations +Operational + + +3119 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +002044 +Indicator for method of calculating spectral wave data +Im - Code table 1744 (WAVEOB), 0 02 044 (BUFR) +Operational + + +3120 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +002045 +Indicator for type of platform +Ip - Code table 1747 (WAVEOB), 0 02 045 (BUFR) +Operational + + +3121 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +301011 +Year, month, day +YYMMJ - Date of observation +Operational + + +3122 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +301012 +Hour, minute +GGgg - Time of observation +Operational + + +3123 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Identification (WAVEOB Section 0) +301021 +Latitude/longitude (high accuracy) +QcLaLaLaLa LoLoLoLoLo +Operational + + +3124 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022063 +Total water depth +1hhhh +Operational + + +3125 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022076 +Direction from which dominant waves are coming +9dddd - Section 0 +Operational + + +3126 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022077 +Directional spread of dominant wave +dsds - Section 0 +Operational + + +3127 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022094 +Total number of wave bands +111BTBT - Section 1 +Operational + + +3128 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +025044 +Wave sampling interval (space) +SSSS - Section 1 +Operational + + +3129 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022079 +Length of wave record +D’D’D’D’ - Section 1 +Operational + + +3130 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +105002 +Replicate 5 descriptors 2 times +Replication over sensor type +Operational + + +3131 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +002046 +Wave measurement instrumentation += 1 Heave sensor, = 2 Slope sensor +Operational + + +3132 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022070 +Significant wave height +2HsHsHsHs or 6HseHseHseHse - Section 0 +Operational + + +3133 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022072 +Spectral peak wavelength +3PpPpPpPp - Section 0 +Operational + + +3134 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022073 +Maximum wave height +4HmHmHmHm +Operational + + +3135 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Basic data (WAVEOB Section 0) +022075 +Average wavelength +5PaPaPaPa - Section 0 +Operational + + +3136 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +127000 +Delayed replication of 27 descriptors +Replication over sensor type +Operational + + +3137 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +(0,1,2) normally 1 +(see Note 5) +Operational + + +3138 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +002046 +Wave measurement instrumentation += 1 Heave sensor, = 2 Slope sensor +Operational + + +3139 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +x - Scale to be applied to following element descriptors +Operational + + +3140 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022103 +Scaled maximum non-directional spectral wave density by wave number +CmCmCm - Section 2 or CsmCsmCsm - Section 3 +Operational + + +3141 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +Set to missing +Operational + + +3142 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022084 +Band containing maximum non-directional spectral wave density +nmnm - Section 2 or nsmnsm - Section 3 +Operational + + +3143 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +120000 +Delayed replication of 20 descriptors +Replication over band +Operational + + +3144 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +111BTBT - Section 1 (number of band) +Operational + + +3145 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022081 +Waveband central wave number +1f1f1f1f1x ... - Section 1 +Operational + + +3146 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022108 +Spectral wave density ratio +1c1c1c2c2 ... - Section 2 or 1cs1cs1cs2cs2 ... - Section 3 +Operational + + +3147 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022086 +Mean direction from which waves are coming +1da1da1 - Section 4 +Operational + + +3148 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022087 +Principal direction from which waves are coming +da2da2 - Section 4 +Operational + + +3149 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022088 +First normalized polar coordinate from Fourier coefficients +r1r1 - Section 4 +Operational + + +3150 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022089 +Second normalized polar coordinate from Fourier coefficients +r2r2 - Section 4 +Operational + + +3151 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +105000 +Delayed replication of 5 descriptors +(see Note 6) +Operational + + +3152 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +n - Section 5 (number of directions counted); = 0 if Ib = 1 (directional) +Operational + + +3153 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +x - Scale to be applied to following element descriptors +Operational + + +3154 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022105 +Scaled non-directional spectral wave density by wave number +1A1A1A1x ... - Section 5 +Operational + + +3155 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +Set to missing +Operational + + +3156 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022186 +Direction from which waves are coming +1d1d1 - Section 5 +(see Note 7) +Operational + + +3157 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022187 +Directional spread of wave +dsds - Section 5 +(see Note 7) +Operational + + +3158 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +105000 +Delayed replication of 5 descriptors +(see Note 8) +Operational + + +3159 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +031001 +Delayed descriptor replication factor +n - Section 5 (number of directions counted); = 0 if Ib = 0 (non-directional) +Operational + + +3160 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +x - Scale to be applied to following element descriptors +Operational + + +3161 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022107 +Scaled directional spectral wave density by wave number +1A1A1A1x ... - Section 5 +Operational + + +3162 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +008090 +Decimal scale of following significands +Set to missing +Operational + + +3163 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022186 +Direction from which waves are coming +1d1d1 - Section 5 +Operational + + +3164 +08 +Surface report sequences (sea) +308016 +(Template for WAVEOB data expressed as the wave number (Ia = 1 in FM-65 WAVEOB) +Spectral data (WAVEOB Sections 1-5) +022187 +Directional spread of wave +dsds - Section 5 +Operational + + +3165 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +301056 +Sequence for platform identification, type, time and location of the observation report +Operational + + +3166 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302001 +Pressure and 3-hour pressure change +Operational + + +3167 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302052 +Ship temperature and humidity data +Operational + + +3168 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +101000 +Delayed replication of 1 descriptor +Operational + + +3169 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +031000 +Short delayed descriptor replication factor +Operational + + +3170 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302056 +Sea/water temperature +Optional +Operational + + +3171 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302064 +Ship or other marine platform wind data +(see Note) +Operational + + +3172 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302053 +Ship visibility data +Operational + + +3173 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +101000 +Delayed replication of 1 descriptor +Operational + + +3174 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +031000 +Short delayed descriptor replication factor +Operational + + +3175 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302004 +General cloud information +Optional +Operational + + +3176 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +101000 +Delayed replication of 1 descriptor +Operational + + +3177 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +031000 +Short delayed descriptor replication factor +Operational + + +3178 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302005 +Cloud layer +Optional +Operational + + +3179 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +101000 +Delayed replication of 1 descriptor +Operational + + +3180 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +031000 +Short delayed descriptor replication factor +Operational + + +3181 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +302038 +Present and past weather +Optional +Operational + + +3182 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +101000 +Delayed replication of 1 descriptor +Operational + + +3183 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +031000 +Short delayed descriptor replication factor +Operational + + +3184 +08 +Surface report sequences (sea) +308017 +(Sequence for reporting observations from offshore platforms) +306039 +Sequence for representation of basic wave measurements +Optional +Operational + + +3185 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +301150 +WIGOS identifier +Operational + + +3186 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +301093 +Ship identification, movement, date/time, horizontal and vertical coordinates +Operational + + +3187 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +302001 +Pressure and 3-hour pressure change +Operational + + +3188 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +302072 +Temperature and humidity data +Operational + + +3189 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +101000 +Delayed replication of 1 descriptor +Operational + + +3190 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +031000 +Short delayed descriptor replication factor +Operational + + +3191 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +302056 +Sea/water temperature +Operational + + +3192 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +101000 +Delayed replication of 1 descriptor +Operational + + +3193 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +031000 +Short delayed descriptor replication factor +Operational + + +3194 +08 +Surface report sequences (sea) +308018 +(Sequence for reporting of basic ship AWS observations) +302064 +Ship or other marine platform wind data +Operational + + +3195 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Station identification, date/time, horizontal and vertical coordinates +001011 +Ship or mobile land station identifier +Ship’s call sign +Operational + + +3196 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Station identification, date/time, horizontal and vertical coordinates +002001 +Type of station +Operational + + +3197 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Station identification, date/time, horizontal and vertical coordinates +301011 +Year, month, day +Operational + + +3198 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Station identification, date/time, horizontal and vertical coordinates +301012 +Hour, minute +Operational + + +3199 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Station identification, date/time, horizontal and vertical coordinates +301023 +Latitude/longitude (coarse accuracy) +Operational + + +3200 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Station identification, date/time, horizontal and vertical coordinates +007030 +Height of station ground above mean sea level +Operational + + +3201 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Station identification, date/time, horizontal and vertical coordinates +007031 +Height of barometer above mean sea level +Operational + + +3202 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +004074 +Short time period or displacement +Operational + + +3203 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +004023 +Time period or displacement +Number of days in the month +Operational + + +3204 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics += 4 Mean value +Operational + + +3205 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +010051 +Pressure reduced to mean sea level +Operational + + +3206 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +Operational + + +3207 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Temperature measurement +Operational + + +3208 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +012101 +Temperature/air temperature +Operational + + +3209 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +013004 +Vapour pressure +Operational + + +3210 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3211 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +3212 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +302056 +Sea/water temperature +Sea-surface temperature, method of measurement and depth below sea surface +Operational + + +3213 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Monthly mean values of pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics +Set to missing (cancel) +Operational + + +3214 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +004003 +Day += 1 +Operational + + +3215 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +004004 +Hour += 0 +Operational + + +3216 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +004074 +Short time period or displacement +Operational + + +3217 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +004023 +Time period or displacement +Number of days in the month +Operational + + +3218 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +3219 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +013060 +Total accumulated precipitation +Operational + + +3220 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +013051 +Frequency group, precipitation +Operational + + +3221 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +3222 +08 +Surface report sequences (sea) +308021 +(Monthly values from an ocean weather station in compliance with regional or national reporting practices) +Precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3223 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +004001 +Year +Beginning of the reference period +Operational + + +3224 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +004001 +Year +Ending of the reference period +Operational + + +3225 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +004002 +Month +Operational + + +3226 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +004003 +Day += 1 +Operational + + +3227 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +004004 +Hour += 0 +Operational + + +3228 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +004074 +Short time period or displacement +Operational + + +3229 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +004022 +Time period or displacement += 1 +Operational + + +3230 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics += 4 Mean value +Operational + + +3231 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +010051 +Pressure reduced to mean sea level +Operational + + +3232 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Temperature measurement +Operational + + +3233 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Temperature measurement +Operational + + +3234 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +012101 +Temperature/air temperature +Operational + + +3235 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +013004 +Vapour pressure +Operational + + +3236 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3237 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +3238 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +302056 +Sea/water temperature +Sea-surface temperature, method of measurement and depth below sea surface +Operational + + +3239 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of pressure, temperature, vapour pressure and sea/water temperature +008023 +First-order statistics +Set to missing (cancel) +Operational + + +3240 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004001 +Year +Beginning of the reference period +Operational + + +3241 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004001 +Year +Ending of the reference period +Operational + + +3242 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004002 +Month +Operational + + +3243 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004003 +Day += 1 +Operational + + +3244 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004004 +Hour += 0 +Operational + + +3245 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004074 +Short time period or displacement +Operational + + +3246 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004022 +Time period or displacement += 1 +Operational + + +3247 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +007032 +Height of sensor above local ground (or deck of marine platform) +Precipitation measurement +Operational + + +3248 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +008023 +First-order statistics += 4 Mean value +Operational + + +3249 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +013060 +Total accumulated precipitation +Operational + + +3250 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +004053 +Number of days with precipitation equal to or more than 1 mm +Operational + + +3251 +08 +Surface report sequences (sea) +308022 +(Monthly normals for an ocean weather station in compliance with regional or national reporting practices) +Normals of precipitation +008023 +First-order statistics +Set to missing (cancel) +Operational + + +3252 +08 +Surface report sequences (sea) +308023 +(Sequence for representation of monthly values suitable for CLIMAT SHIP data in compliance with regional or national reporting practices) +308021 +Monthly values from an ocean weather station in compliance with regional or national reporting practices +Operational + + +3253 +08 +Surface report sequences (sea) +308023 +(Sequence for representation of monthly values suitable for CLIMAT SHIP data in compliance with regional or national reporting practices) +308022 +Monthly normals for an ocean weather station in compliance with regional or national reporting practices +Operational + + +3254 +09 +Vertical sounding sequences (conventional data) +309001 +(Vertical wind profile) +301037 +Land station for vertical soundings +Identification, etc. (land station, high accuracy position) +Operational + + +3255 +09 +Vertical sounding sequences (conventional data) +309001 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3256 +09 +Vertical sounding sequences (conventional data) +309001 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3257 +09 +Vertical sounding sequences (conventional data) +309001 +(Vertical wind profile) +303011 +Wind at height +Operational + + +3258 +09 +Vertical sounding sequences (conventional data) +309002 +(Vertical wind profile) +301038 +Land station for vertical soundings +Identification, etc. (land station, coarse accuracy position) +Operational + + +3259 +09 +Vertical sounding sequences (conventional data) +309002 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3260 +09 +Vertical sounding sequences (conventional data) +309002 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3261 +09 +Vertical sounding sequences (conventional data) +309002 +(Vertical wind profile) +303011 +Wind at height +Operational + + +3262 +09 +Vertical sounding sequences (conventional data) +309003 +(Vertical wind profile) +301037 +Land station for vertical soundings +Identification, etc. (land station, high accuracy position) +Operational + + +3263 +09 +Vertical sounding sequences (conventional data) +309003 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3264 +09 +Vertical sounding sequences (conventional data) +309003 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3265 +09 +Vertical sounding sequences (conventional data) +309003 +(Vertical wind profile) +303012 +Wind at pressure level +Operational + + +3266 +09 +Vertical sounding sequences (conventional data) +309004 +(Vertical wind profile) +301038 +Land station for vertical soundings +Identification, etc. (land station, coarse accuracy position) +Operational + + +3267 +09 +Vertical sounding sequences (conventional data) +309004 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3268 +09 +Vertical sounding sequences (conventional data) +309004 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3269 +09 +Vertical sounding sequences (conventional data) +309004 +(Vertical wind profile) +303012 +Wind at pressure level +Operational + + +3270 +09 +Vertical sounding sequences (conventional data) +309005 +(Vertical sounding with relative humidity) +301037 +Land station for vertical soundings +Identification, etc. (land station, high accuracy position) +Operational + + +3271 +09 +Vertical sounding sequences (conventional data) +309005 +(Vertical sounding with relative humidity) +302004 +General cloud information +Significant cloud layer +Operational + + +3272 +09 +Vertical sounding sequences (conventional data) +309005 +(Vertical sounding with relative humidity) +101000 +Delayed replication of 1 descriptor +Operational + + +3273 +09 +Vertical sounding sequences (conventional data) +309005 +(Vertical sounding with relative humidity) +031001 +Delayed descriptor replication factor +Operational + + +3274 +09 +Vertical sounding sequences (conventional data) +309005 +(Vertical sounding with relative humidity) +303013 +Geopotential, temperature, humidity, wind at pressure level +Operational + + +3275 +09 +Vertical sounding sequences (conventional data) +309006 +(Vertical sounding with relative humidity) +301038 +Land station for vertical soundings +Identification, etc. (land station, coarse accuracy position) +Operational + + +3276 +09 +Vertical sounding sequences (conventional data) +309006 +(Vertical sounding with relative humidity) +302004 +General cloud information +Significant cloud layer +Operational + + +3277 +09 +Vertical sounding sequences (conventional data) +309006 +(Vertical sounding with relative humidity) +101000 +Delayed replication of 1 descriptor +Operational + + +3278 +09 +Vertical sounding sequences (conventional data) +309006 +(Vertical sounding with relative humidity) +031001 +Delayed descriptor replication factor +Operational + + +3279 +09 +Vertical sounding sequences (conventional data) +309006 +(Vertical sounding with relative humidity) +303013 +Geopotential, temperature, humidity, wind at pressure level +Operational + + +3280 +09 +Vertical sounding sequences (conventional data) +309007 +(Vertical sounding with dewpoint data) +301037 +Land station for vertical soundings +Identification, etc. (land station, high accuracy position) +Operational + + +3281 +09 +Vertical sounding sequences (conventional data) +309007 +(Vertical sounding with dewpoint data) +302004 +General cloud information +Significant cloud layer +Operational + + +3282 +09 +Vertical sounding sequences (conventional data) +309007 +(Vertical sounding with dewpoint data) +101000 +Delayed replication of 1 descriptor +Operational + + +3283 +09 +Vertical sounding sequences (conventional data) +309007 +(Vertical sounding with dewpoint data) +031001 +Delayed descriptor replication factor +Operational + + +3284 +09 +Vertical sounding sequences (conventional data) +309007 +(Vertical sounding with dewpoint data) +303014 +Geopotential, temperature, dewpoint temperature, wind at pressure level +Operational + + +3285 +09 +Vertical sounding sequences (conventional data) +309008 +(Vertical sounding with dewpoint data) +301038 +Land station for vertical soundings +Identification, etc. (land station, coarse accuracy position) +Operational + + +3286 +09 +Vertical sounding sequences (conventional data) +309008 +(Vertical sounding with dewpoint data) +302004 +General cloud information +Significant cloud layer +Operational + + +3287 +09 +Vertical sounding sequences (conventional data) +309008 +(Vertical sounding with dewpoint data) +101000 +Delayed replication of 1 descriptor +Operational + + +3288 +09 +Vertical sounding sequences (conventional data) +309008 +(Vertical sounding with dewpoint data) +031001 +Delayed descriptor replication factor +Operational + + +3289 +09 +Vertical sounding sequences (conventional data) +309008 +(Vertical sounding with dewpoint data) +303014 +Geopotential, temperature, dewpoint temperature, wind at pressure level +Operational + + +3290 +09 +Vertical sounding sequences (conventional data) +309011 +(Vertical wind profile) +301039 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3291 +09 +Vertical sounding sequences (conventional data) +309011 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3292 +09 +Vertical sounding sequences (conventional data) +309011 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3293 +09 +Vertical sounding sequences (conventional data) +309011 +(Vertical wind profile) +303011 +Wind at height +Operational + + +3294 +09 +Vertical sounding sequences (conventional data) +309012 +(Vertical wind profile) +301039 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3295 +09 +Vertical sounding sequences (conventional data) +309012 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3296 +09 +Vertical sounding sequences (conventional data) +309012 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3297 +09 +Vertical sounding sequences (conventional data) +309012 +(Vertical wind profile) +303012 +Wind at pressure level +Operational + + +3298 +09 +Vertical sounding sequences (conventional data) +309013 +(Vertical sounding with relative humidity) +301039 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3299 +09 +Vertical sounding sequences (conventional data) +309013 +(Vertical sounding with relative humidity) +302004 +General cloud information +Significant cloud layer +Operational + + +3300 +09 +Vertical sounding sequences (conventional data) +309013 +(Vertical sounding with relative humidity) +101000 +Delayed replication of 1 descriptor +Operational + + +3301 +09 +Vertical sounding sequences (conventional data) +309013 +(Vertical sounding with relative humidity) +031001 +Delayed descriptor replication factor +Operational + + +3302 +09 +Vertical sounding sequences (conventional data) +309013 +(Vertical sounding with relative humidity) +303013 +Geopotential, temperature, humidity, wind at pressure level +Operational + + +3303 +09 +Vertical sounding sequences (conventional data) +309014 +(Vertical sounding with dewpoint data) +301039 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3304 +09 +Vertical sounding sequences (conventional data) +309014 +(Vertical sounding with dewpoint data) +302004 +General cloud information +Significant cloud layer +Operational + + +3305 +09 +Vertical sounding sequences (conventional data) +309014 +(Vertical sounding with dewpoint data) +101000 +Delayed replication of 1 descriptor +Operational + + +3306 +09 +Vertical sounding sequences (conventional data) +309014 +(Vertical sounding with dewpoint data) +031001 +Delayed descriptor replication factor +Operational + + +3307 +09 +Vertical sounding sequences (conventional data) +309014 +(Vertical sounding with dewpoint data) +303014 +Geopotential, temperature, dewpoint temperature, wind at pressure level +Operational + + +3308 +09 +Vertical sounding sequences (conventional data) +309015 +(Vertical wind profile) +301040 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3309 +09 +Vertical sounding sequences (conventional data) +309015 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3310 +09 +Vertical sounding sequences (conventional data) +309015 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3311 +09 +Vertical sounding sequences (conventional data) +309015 +(Vertical wind profile) +303011 +Wind at height +Operational + + +3312 +09 +Vertical sounding sequences (conventional data) +309016 +(Vertical wind profile) +301040 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3313 +09 +Vertical sounding sequences (conventional data) +309016 +(Vertical wind profile) +101000 +Delayed replication of 1 descriptor +Operational + + +3314 +09 +Vertical sounding sequences (conventional data) +309016 +(Vertical wind profile) +031001 +Delayed descriptor replication factor +Operational + + +3315 +09 +Vertical sounding sequences (conventional data) +309016 +(Vertical wind profile) +303012 +Wind at pressure level +Operational + + +3316 +09 +Vertical sounding sequences (conventional data) +309017 +(Vertical sounding with relative humidity) +301040 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3317 +09 +Vertical sounding sequences (conventional data) +309017 +(Vertical sounding with relative humidity) +302004 +General cloud information +Significant cloud layer +Operational + + +3318 +09 +Vertical sounding sequences (conventional data) +309017 +(Vertical sounding with relative humidity) +101000 +Delayed replication of 1 descriptor +Operational + + +3319 +09 +Vertical sounding sequences (conventional data) +309017 +(Vertical sounding with relative humidity) +031001 +Delayed descriptor replication factor +Operational + + +3320 +09 +Vertical sounding sequences (conventional data) +309017 +(Vertical sounding with relative humidity) +303013 +Geopotential, temperature, humidity, wind at pressure level +Operational + + +3321 +09 +Vertical sounding sequences (conventional data) +309018 +(Vertical sounding with dewpoint data) +301040 +Ship for vertical soundings +Ship's identification, etc. +Operational + + +3322 +09 +Vertical sounding sequences (conventional data) +309018 +(Vertical sounding with dewpoint data) +302004 +General cloud information +Significant cloud layer +Operational + + +3323 +09 +Vertical sounding sequences (conventional data) +309018 +(Vertical sounding with dewpoint data) +101000 +Delayed replication of 1 descriptor +Operational + + +3324 +09 +Vertical sounding sequences (conventional data) +309018 +(Vertical sounding with dewpoint data) +031001 +Delayed descriptor replication factor +Operational + + +3325 +09 +Vertical sounding sequences (conventional data) +309018 +(Vertical sounding with dewpoint data) +303014 +Geopotential, temperature, dewpoint temperature, wind at pressure level +Operational + + +3326 +09 +Vertical sounding sequences (conventional data) +309019 +(Wind profiler - wind data sounding) +301031 +Identification and type of station, date/time, location (high accuracy), height of station +Operational + + +3327 +09 +Vertical sounding sequences (conventional data) +309019 +(Wind profiler - wind data sounding) +002003 +Type of measuring equipment used +Operational + + +3328 +09 +Vertical sounding sequences (conventional data) +309019 +(Wind profiler - wind data sounding) +101000 +Delayed replication of 1 descriptor +Operational + + +3329 +09 +Vertical sounding sequences (conventional data) +309019 +(Wind profiler - wind data sounding) +031001 +Delayed descriptor replication factor +Operational + + +3330 +09 +Vertical sounding sequences (conventional data) +309019 +(Wind profiler - wind data sounding) +303011 +Wind at height +Operational + + +3331 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +301031 +Identification and type of station, date/time, location (high accuracy), height of station +Operational + + +3332 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +002003 +Type of measuring equipment used +Operational + + +3333 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +104000 +Delayed replication of 4 descriptors +Operational + + +3334 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +031001 +Delayed descriptor replication factor +Operational + + +3335 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +007003 +Geopotential +Operational + + +3336 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +011003 +u-component +Operational + + +3337 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +011004 +v-component +Operational + + +3338 +09 +Vertical sounding sequences (conventional data) +309020 +(Wind profiler - Cartesian coordinates) +011005 +w-component +Operational + + +3339 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +301001 +WMO block and station numbers +Operational + + +3340 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +005001 +Latitude (high accuracy) +Operational + + +3341 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +006001 +Longitude (high accuracy) +Operational + + +3342 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +007030 +Height of station ground above mean sea level +Operational + + +3343 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +301014 +Time period +Operational + + +3344 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +002003 +Type of measuring equipment used +Operational + + +3345 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +002121 +Mean frequency +Operational + + +3346 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +112000 +Delayed replication of 12 descriptors +Operational + + +3347 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +031001 +Delayed descriptor replication factor +Operational + + +3348 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +007007 +Height +Operational + + +3349 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +301021 +Latitude/longitude (high accuracy) +Operational + + +3350 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +011003 +u-component +Operational + + +3351 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +011110 +Uncertainty in u-component +Operational + + +3352 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +011004 +v-component +Operational + + +3353 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +011111 +Uncertainty in v-component +Operational + + +3354 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +033002 +Quality information +Operational + + +3355 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +011006 +w-component +Operational + + +3356 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +011112 +Uncertainty in w-component +Operational + + +3357 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +033002 +Quality information +Operational + + +3358 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +010071 +Vertical resolution +Operational + + +3359 +09 +Vertical sounding sequences (conventional data) +309021 +(Single wavelength wind profiler wind data (product data)) +027079 +Horizontal width of sampled volume +Operational + + +3360 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +301001 +WMO block and station numbers +(See Note 20) +Operational + + +3361 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +005001 +Latitude (high accuracy) +Operational + + +3362 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +006001 +Longitude (high accuracy) +Operational + + +3363 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +007030 +Height of station ground above mean sea level +Operational + + +3364 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +301014 +Time period +Operational + + +3365 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +002003 +Type of measuring equipment used +Operational + + +3366 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +002121 +Mean frequency +Operational + + +3367 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +110000 +Delayed replication of 10 descriptors +Operational + + +3368 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +031001 +Delayed descriptor replication factor +Operational + + +3369 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +007007 +Height +Operational + + +3370 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +301021 +Latitude/longitude (high accuracy) +Operational + + +3371 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +012007 +Virtual temperature +Operational + + +3372 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +012008 +Uncertainty in virtual temperature +Operational + + +3373 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +033002 +Quality information +Operational + + +3374 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +011006 +w-component +Operational + + +3375 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +011112 +Uncertainty in w-component +Operational + + +3376 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +033002 +Quality information +Operational + + +3377 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +010071 +Vertical resolution +Operational + + +3378 +09 +Vertical sounding sequences (conventional data) +309022 +(RASS virtual temperature (product data)) +027079 +Horizontal width of sampled volume +Operational + + +3379 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Header section +301001 +WMO block and station numbers +(See Note 20) +Operational + + +3380 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Header section +005001 +Latitude (high accuracy) +Operational + + +3381 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Header section +006001 +Longitude (high accuracy) +Operational + + +3382 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Header section +007030 +Height of station ground above mean sea level +Operational + + +3383 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Header section +301014 +Time period +Operational + + +3384 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Header section +002003 +Type of measuring equipment used +Operational + + +3385 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Cloud data section +302004 +General cloud information +Operational + + +3386 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Cloud data section +302005 +Cloud layer +Operational + + +3387 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +114000 +Delayed replication of 14 descriptors +Operational + + +3388 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +031001 +Delayed descriptor replication factor +Operational + + +3389 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +007007 +Height +Operational + + +3390 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +301021 +Latitude/longitude (high accuracy) +Operational + + +3391 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +101000 +Delayed replication of 1 descriptor +Operational + + +3392 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +031001 +Delayed descriptor replication factor +Number of wavelength measurements present in the data +Operational + + +3393 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +002121 +Mean frequency +Operational + + +3394 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +015063 +Attenuated backscatter +Operational + + +3395 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +015064 +Uncertainty in attenuated backscatter +Operational + + +3396 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +015065 +Particle backscatter coefficient +Operational + + +3397 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +015066 +Uncertainty in particle backscatter coefficient +Operational + + +3398 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +015067 +Particle extinction coefficient +Operational + + +3399 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +015068 +Uncertainty in particle extinction coefficient +Operational + + +3400 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +015069 +Particle lidar ratio +Operational + + +3401 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +015070 +Uncertainty in lidar ratio +Operational + + +3402 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +015071 +Particle depolarization ratio +Operational + + +3403 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +015072 +Uncertainty in depolarization ratio +Operational + + +3404 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +033002 +Quality information +Operational + + +3405 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +010071 +Vertical resolution +Operational + + +3406 +09 +Vertical sounding sequences (conventional data) +309023 +(Single wavelength elastic backscatter lidar sequence) +Backscatter data section +027079 +Horizontal width of sampled volume +Operational + + +3407 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +301132 +Common header sequence +Operational + + +3408 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +201151 +Change data width (by YYY-128 bit places) +Operational + + +3409 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +202130 +Change scale (by YYY-128 places) +Operational + + +3410 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +002121 +Mean frequency +Operational + + +3411 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +202000 +Cancel scale change +Operational + + +3412 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +201000 +Cancel data width change +Operational + + +3413 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +008021 +Time significance += 2 Time averaged +Operational + + +3414 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +004025 +Time period or displacement +(see Note 13) +Operational + + +3415 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +109000 +Delayed replication of 9 descriptors +Operational + + +3416 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +031002 +Extended delayed descriptor replication factor +Operational + + +3417 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +007007 +Height +(see Note 14) +Operational + + +3418 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +301021 +Latitude/longitude (high accuracy) +(see Note 15) +Operational + + +3419 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +011003 +u-component +Operational + + +3420 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +011004 +v-component +Operational + + +3421 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +033002 +Quality information +(16) The Quality information descriptor 0 33 002 at this point relates to the w-component 0 11 006. It is given for each respective gate of the profile measurement. +Operational + + +3422 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +011006 +w-component +Operational + + +3423 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +033002 +Quality information +Operational + + +3424 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +010071 +Vertical resolution +Operational + + +3425 +09 +Vertical sounding sequences (conventional data) +309024 +(Single wavelength wind profiler wind data sequence (product data)) +027079 +Horizontal width of sampled volume +Operational + + +3426 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +301132 +Common Header Sequence +Operational + + +3427 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +201151 +Change data width +Operational + + +3428 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +202130 +Change scale +Operational + + +3429 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +002121 +Mean frequency +Operational + + +3430 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +202000 +Cancel scale change +Operational + + +3431 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +201000 +Cancel data width change +Operational + + +3432 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +008021 +Time significance += 2 Time averaged +Operational + + +3433 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +004025 +Time period or displacement +(see Note 13) +Operational + + +3434 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +106000 +Delayed replication of 6 descriptors +Operational + + +3435 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +031002 +Extended delayed descriptor replication factor +Operational + + +3436 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +007007 +Height +(see Note 15) +Operational + + +3437 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +301021 +Latitude/longitude (high accuracy) +(see Note 15) +Operational + + +3438 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +012007 +Virtual temperature +Operational + + +3439 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +033002 +Quality information +(17) The Quality information descriptor 0 33 002 relates to the virtual temperature 0 12 007. It is given for each respective gate of the profile measurement. +Operational + + +3440 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +010071 +Vertical resolution +Operational + + +3441 +09 +Vertical sounding sequences (conventional data) +309025 +(RASS virtual temperature sequence (product data)) +027079 +Horizontal width of sampled volume +Operational + + +3442 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +301132 +Common header sequence +Operational + + +3443 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +302004 +General cloud information +Operational + + +3444 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +302005 +Cloud layer +Operational + + +3445 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +008092 +Measurement uncertainty expression +(see Note 18) The Measurement uncertainty expression and significance descriptors 0 08 092 and 0 08 093 relate to all parameter uncertainties provided in the backscatter data section. +Operational + + +3446 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +008093 +Measurement uncertainty significance +(see Note 15) +Operational + + +3447 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +008021 +Time significance += 2 Time averaged +Operational + + +3448 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +004025 +Time period or displacement +(see Note 13) +Operational + + +3449 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +201138 +Change data width +Operational + + +3450 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +202126 +Change scale +Operational + + +3451 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +002121 +Mean frequency +Operational + + +3452 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +202000 +Cancel scale change +Operational + + +3453 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +201000 +Cancel data width change +Operational + + +3454 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +115000 +Delayed replication of 15 descriptors +Operational + + +3455 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +031002 +Extended delayed replication factor +Operational + + +3456 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +007007 +Height +(see Note 15) +Operational + + +3457 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +301021 +Latitude/longitude (high accuracy) += 2 Time averaged +Operational + + +3458 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +015073 +Attenuated backscatter +Operational + + +3459 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +015064 +Uncertainty in attenuated backscatter +Operational + + +3460 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +015074 +Particle backscatter coefficient +Operational + + +3461 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +015066 +Uncertainty in particle backscatter coefficient +Operational + + +3462 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +015075 +Particle extinction coefficient +Operational + + +3463 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +015068 +Uncertainty in particle extinction coefficient +Operational + + +3464 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +015076 +Particle lidar ratio +Operational + + +3465 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +015077 +Uncertainty in lidar ratio +Operational + + +3466 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +015078 +Particle depolarization ratio +Operational + + +3467 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +015072 +Uncertainty in depolarization ratio +Operational + + +3468 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +033002 +Quality information +(19) The Quality information descriptor 0 33 002 relates to all parameters provided in the Backscatter data section and is given for each respective vertical bin of the profile measurement. +Operational + + +3469 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +010071 +Vertical resolution +Operational + + +3470 +09 +Vertical sounding sequences (conventional data) +309026 +(Single wavelength elastic backscatter lidar sequence) +027079 +Horizontal width of sampled volume +Operational + + +3471 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +301132 +Common header sequence +Operational + + +3472 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +008043 +Atmospheric chemical or physical constituent type +Operational + + +3473 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +025061 +Software Version Number +Operational + + +3474 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +302004 +General cloud information +Operational + + +3475 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +302005 +Cloud layer +Operational + + +3476 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +008092 +Measurement uncertainty expression +(see Note 18) +Operational + + +3477 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +008093 +Measurement uncertainty significance +(see Note 15) +Operational + + +3478 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +008021 +Time significance += 2 Time averaged +Operational + + +3479 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +004025 +Time period or displacement +(see Note 13) +Operational + + +3480 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +118000 +Delayed replication of 18 descriptors +Operational + + +3481 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +031001 +Delayed replication factor +Operational + + +3482 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +002090 +Instrument wavelength +Operational + + +3483 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +115000 +Delayed replication of 15 descriptors +Operational + + +3484 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +031002 +Extended delayed replication factor +Operational + + +3485 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +007007 +Height +(see Note 15) +Operational + + +3486 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +301021 +Latitude/longitude (high accuracy) += 2 Time averaged +Operational + + +3487 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +015073 +Attenuated backscatter +Operational + + +3488 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +015064 +Uncertainty in attenuated backscatter +Operational + + +3489 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +015074 +Particle backscatter coefficient +Operational + + +3490 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +015066 +Uncertainty in particle backscatter coefficient +Operational + + +3491 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +015075 +Particle extinction coefficient +Operational + + +3492 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +015068 +Uncertainty in particle extinction coefficient +Operational + + +3493 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +015076 +Particle lidar ratio +Operational + + +3494 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +015077 +Uncertainty in lidar ratio +Operational + + +3495 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +015078 +Particle depolarization ratio +Operational + + +3496 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +015072 +Uncertainty in depolarization ratio +Operational + + +3497 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +033002 +Quality information +(see Note 19) +Operational + + +3498 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +010071 +Vertical resolution +Operational + + +3499 +09 +Vertical sounding sequences (conventional data) +309027 +(Multi wavelength ground-based lidar sequence) +027079 +Horizontal width of sampled volume +Operational + + +3500 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +015004 +Ozone sounding correction factor (CF) +Operational + + +3501 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +015005 +Ozone p +Operational + + +3502 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +104000 +Delayed replication of 4 descriptors +Operational + + +3503 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +031001 +Delayed descriptor replication factor +Operational + + +3504 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +004015 +Time increment +Since launch time, if needed, in minutes +Operational + + +3505 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +008006 +Ozone vertical sounding significance +Operational + + +3506 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +007004 +Pressure +Operational + + +3507 +09 +Vertical sounding sequences (conventional data) +309030 +(Ozone sonde flight data) +015003 +Measured ozone partial pressure (sounding) +Operational + + +3508 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +015004 +Ozone sounding correction factor (CF) +Operational + + +3509 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +015005 +Ozone p +Operational + + +3510 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +104000 +Delayed replication of 4 descriptors +Operational + + +3511 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +031001 +Delayed descriptor replication factor +Operational + + +3512 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +004025 +Time period or displacement +Since launch time in minutes +Operational + + +3513 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +008006 +Ozone vertical sounding significance +Operational + + +3514 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +007004 +Pressure +Operational + + +3515 +09 +Vertical sounding sequences (conventional data) +309031 +(Ozone sonde flight data) +015003 +Measured ozone partial pressure (sounding) +Operational + + +3516 +09 +Vertical sounding sequences (conventional data) +309040 +(Ozone sounding not coupled to a ground-based spectrophotometer) +301075 +Sounding identification +Operational + + +3517 +09 +Vertical sounding sequences (conventional data) +309040 +(Ozone sounding not coupled to a ground-based spectrophotometer) +301076 +Ozone sounding instrumentation +Operational + + +3518 +09 +Vertical sounding sequences (conventional data) +309040 +(Ozone sounding not coupled to a ground-based spectrophotometer) +309030 +Ozone sonde flight data +Operational + + +3519 +09 +Vertical sounding sequences (conventional data) +309041 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +307041 +Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation +Description of the ground-based part +Operational + + +3520 +09 +Vertical sounding sequences (conventional data) +309041 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +3521 +09 +Vertical sounding sequences (conventional data) +309041 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +301076 +Ozone sounding instrumentation +Operational + + +3522 +09 +Vertical sounding sequences (conventional data) +309041 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +309030 +Ozone sonde flight data +Operational + + +3523 +09 +Vertical sounding sequences (conventional data) +309042 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +307042 +Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations +Description of the ground-based part +Operational + + +3524 +09 +Vertical sounding sequences (conventional data) +309042 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +3525 +09 +Vertical sounding sequences (conventional data) +309042 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +301076 +Ozone sounding instrumentation +Operational + + +3526 +09 +Vertical sounding sequences (conventional data) +309042 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +309030 +Ozone sonde flight data +Operational + + +3527 +09 +Vertical sounding sequences (conventional data) +309043 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +307043 +Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation +Description of the ground-based part +Operational + + +3528 +09 +Vertical sounding sequences (conventional data) +309043 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +3529 +09 +Vertical sounding sequences (conventional data) +309043 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +301076 +Ozone sounding instrumentation +Operational + + +3530 +09 +Vertical sounding sequences (conventional data) +309043 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +309030 +Ozone sonde flight data +Operational + + +3531 +09 +Vertical sounding sequences (conventional data) +309044 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +307044 +Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations +Description of the ground-based part +Operational + + +3532 +09 +Vertical sounding sequences (conventional data) +309044 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +3533 +09 +Vertical sounding sequences (conventional data) +309044 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +301076 +Ozone sounding instrumentation +Operational + + +3534 +09 +Vertical sounding sequences (conventional data) +309044 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +309030 +Ozone sonde flight data +Operational + + +3535 +09 +Vertical sounding sequences (conventional data) +309045 +(Ozone sounding not coupled to a ground-based spectrophotometer) +301075 +Sounding identification +Operational + + +3536 +09 +Vertical sounding sequences (conventional data) +309045 +(Ozone sounding not coupled to a ground-based spectrophotometer) +301076 +Ozone sounding instrumentation +Operational + + +3537 +09 +Vertical sounding sequences (conventional data) +309045 +(Ozone sounding not coupled to a ground-based spectrophotometer) +309031 +Ozone sonde flight data +Operational + + +3538 +09 +Vertical sounding sequences (conventional data) +309046 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +307041 +Total ozone measurement from a Brewer ground-based spectrophotometer obtained from a single observation +Description of the ground-based part +Operational + + +3539 +09 +Vertical sounding sequences (conventional data) +309046 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +3540 +09 +Vertical sounding sequences (conventional data) +309046 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +301076 +Ozone sounding instrumentation +Operational + + +3541 +09 +Vertical sounding sequences (conventional data) +309046 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is a single value) +309031 +Ozone sonde flight data +Operational + + +3542 +09 +Vertical sounding sequences (conventional data) +309047 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +307042 +Total ozone measurement from a Brewer ground-based spectrophotometer obtained from averaged observations +Description of the ground-based part +Operational + + +3543 +09 +Vertical sounding sequences (conventional data) +309047 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +3544 +09 +Vertical sounding sequences (conventional data) +309047 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +301076 +Ozone sounding instrumentation +Operational + + +3545 +09 +Vertical sounding sequences (conventional data) +309047 +(Ozone sounding coupled to measurements from a Brewer ground-based spectrophotometer; the total ozone obtained from the Brewer is an averaged value) +309031 +Ozone sonde flight data +Operational + + +3546 +09 +Vertical sounding sequences (conventional data) +309048 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +307043 +Total ozone measurement from a Dobson ground-based spectrophotometer obtained from a single observation +Description of the ground-based part +Operational + + +3547 +09 +Vertical sounding sequences (conventional data) +309048 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +3548 +09 +Vertical sounding sequences (conventional data) +309048 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +301076 +Ozone sounding instrumentation +Operational + + +3549 +09 +Vertical sounding sequences (conventional data) +309048 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is a single value) +309031 +Ozone sonde flight data +Operational + + +3550 +09 +Vertical sounding sequences (conventional data) +309049 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +307044 +Total ozone measurement from a Dobson ground-based spectrophotometer obtained from averaged observations +Description of the ground-based part +Operational + + +3551 +09 +Vertical sounding sequences (conventional data) +309049 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +301075 +Sounding identification +Identification of the ozone sounding part +Operational + + +3552 +09 +Vertical sounding sequences (conventional data) +309049 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +301076 +Ozone sounding instrumentation +Operational + + +3553 +09 +Vertical sounding sequences (conventional data) +309049 +(Ozone sounding coupled to measurements from a Dobson ground-based spectrophotometer; the total ozone obtained from the Dobson is an averaged value) +309031 +Ozone sonde flight data +Operational + + +3554 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +301110 +Identification of launch site and instrumentation for wind measurements +Operational + + +3555 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +301113 +Date/time of launch +Operational + + +3556 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +301114 +Horizontal and vertical coordinates of launch site +Operational + + +3557 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +101000 +Delayed replication of 1 descriptor +Operational + + +3558 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +031002 +Extended delayed descriptor replication factor +Operational + + +3559 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +303050 +Wind data at a pressure level with radiosonde position +Operational + + +3560 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +101000 +Delayed replication of 1 descriptor +Operational + + +3561 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +031001 +Delayed descriptor replication factor +Operational + + +3562 +09 +Vertical sounding sequences (conventional data) +309050 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with pressure as the vertical coordinate) +303051 +Wind shear data at a pressure level with radiosonde position +Operational + + +3563 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +301110 +Identification of launch site and instrumentation for wind measurements +Operational + + +3564 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +301113 +Date/time of launch +Operational + + +3565 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +301114 +Horizontal and vertical coordinates of launch site +Operational + + +3566 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +101000 +Delayed replication of 1 descriptor +Operational + + +3567 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +031002 +Extended delayed descriptor replication factor +Operational + + +3568 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +303052 +Wind data at a height level with radiosonde position +Operational + + +3569 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +101000 +Delayed replication of 1 descriptor +Operational + + +3570 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +031001 +Delayed descriptor replication factor +Operational + + +3571 +09 +Vertical sounding sequences (conventional data) +309051 +(Sequence for representation of PILOT, PILOT SHIP and PILOT MOBIL observation type data with height as the vertical coordinate) +303053 +Wind shear data at a height level with radiosonde position +Operational + + +3572 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +301111 +Identification of launch site and instrumentation for P, T, U and wind measurements +Operational + + +3573 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +301113 +Date/time of launch +Operational + + +3574 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +301114 +Horizontal and vertical coordinates of launch site +Operational + + +3575 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +302049 +Cloud information reported with vertical soundings +Operational + + +3576 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +022043 +Sea/water temperature +Operational + + +3577 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +101000 +Delayed replication of 1 descriptor +Operational + + +3578 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +031002 +Extended delayed descriptor replication factor +Operational + + +3579 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +303054 +Temperature, dewpoint and wind data at a pressure level with radiosonde position +Operational + + +3580 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +101000 +Delayed replication of 1 descriptor +Operational + + +3581 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +031001 +Delayed descriptor replication factor +Operational + + +3582 +09 +Vertical sounding sequences (conventional data) +309052 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data) +303051 +Wind shear data at a pressure level with radiosonde position +Operational + + +3583 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +301112 +Identification of launch point and instrumentation of dropsonde +Operational + + +3584 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +301113 +Date/time of launch +Operational + + +3585 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +301114 +Horizontal and vertical coordinates of launch site +Operational + + +3586 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +101000 +Delayed replication of 1 descriptor +Operational + + +3587 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +031002 +Extended delayed descriptor replication factor +Operational + + +3588 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +303054 +Temperature, dewpoint and wind data at a pressure level with radiosonde position +Operational + + +3589 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +101000 +Delayed replication of 1 descriptor +Operational + + +3590 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +031001 +Delayed descriptor replication factor +Operational + + +3591 +09 +Vertical sounding sequences (conventional data) +309053 +(Sequence for representation of TEMP DROP observation type data) +303051 +Wind shear data at a pressure level with radiosonde position +Operational + + +3592 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +301001 +WMO block and station numbers +Identification of launch site +Operational + + +3593 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +001011 +Ship or mobile land station identifier +Ship's call sign +Operational + + +3594 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +301011 +Year, month, day +Operational + + +3595 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +301012 +Hour, minute +Operational + + +3596 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +301021 +Latitude/longitude (high accuracy) +Operational + + +3597 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +007030 +Height of station ground above mean sea level +Operational + + +3598 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +007031 +Height of barometer above mean sea level +Operational + + +3599 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +007007 +Height +Release of sonde above mean sea level +Operational + + +3600 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +004023 +Time period or displacement +Number of days in the month +Operational + + +3601 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +004059 +Times of observation used to compute the reported mean values +Operational + + +3602 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +115000 +Delayed replication of 15 descriptors +Operational + + +3603 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +031001 +Delayed descriptor replication factor +Operational + + +3604 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008001 +Vertical sounding significance +Operational + + +3605 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008023 +First-order statistics += 4 Mean value +Operational + + +3606 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +007004 +Pressure +Operational + + +3607 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +010009 +Geopotential height +Operational + + +3608 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +012101 +Temperature/air temperature +Operational + + +3609 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +012103 +Dewpoint temperature +Operational + + +3610 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008023 +First-order statistics += 32 Vector mean +Operational + + +3611 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +011001 +Wind direction +Operational + + +3612 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +011002 +Wind speed +Operational + + +3613 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008023 +First-order statistics +Set to missing +Operational + + +3614 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +011019 +Steadiness of wind +Operational + + +3615 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008050 +Qualifier for number of missing values in calculation of statistic += 2 Temperature +Operational + + +3616 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +3617 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008050 +Qualifier for number of missing values in calculation of statistic += 9 Wind +Operational + + +3618 +09 +Vertical sounding sequences (conventional data) +309054 +(Sequence for representation of CLIMAT TEMP and CLIMAT TEMP SHIP data) +Monthly mean data +008020 +Total number of missing entities (with respect to accumulation or average) +Days +Operational + + +3619 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +301111 +Identification of launch site and instrumentation for P, T, U and wind measurements +Operational + + +3620 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +025061 +Software identification and version number +Operational + + +3621 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +001081 +Radiosonde serial number +Operational + + +3622 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +001082 +Radiosonde ascension number +Operational + + +3623 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002067 +Radiosonde operating frequency +Operational + + +3624 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002095 +Type of pressure sensor +Operational + + +3625 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002096 +Type of temperature sensor +Operational + + +3626 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002097 +Type of humidity sensor +Operational + + +3627 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002081 +Type of balloon +Operational + + +3628 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002082 +Weight of balloon +Operational + + +3629 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002084 +Type of gas used in balloon +Operational + + +3630 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002191 +Geopotential height calculation +Operational + + +3631 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +301113 +Date/time of launch +(see Note 3) +Operational + + +3632 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +301114 +Horizontal and vertical coordinates of launch site +Operational + + +3633 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +010004 +Pressure +Operational + + +3634 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +302032 +Temperature and humidity data +Operational + + +3635 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +3636 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +002002 +Type of instrumentation for wind measurement +Operational + + +3637 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +011001 +Wind direction +Operational + + +3638 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +011002 +Wind speed +Operational + + +3639 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +3640 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +020003 +Present weather +Operational + + +3641 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +302049 +Cloud information reported with vertical soundings +Operational + + +3642 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +022043 +Sea/water temperature +Operational + + +3643 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +101000 +Delayed replication of 1 descriptor +Operational + + +3644 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +031002 +Extended delayed descriptor replication factor +Operational + + +3645 +09 +Vertical sounding sequences (conventional data) +309055 +(Template for the representation of high resolution radiosonde data with geopotential height as the vertical coordinate) +303055 +Temperature, dewpoint, relative humidity and wind data at a height level with radiosonde position +(see Notes 4, 5 and 6) +Operational + + +3646 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +301150 +WIGOS identifier +Operational + + +3647 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +301111 +Identification of launch site and instrumentation for P, T, U and wind measurements +Operational + + +3648 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +301128 +Additional information on radiosonde ascent +Valid also for decent +Operational + + +3649 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +301113 +Date/time of launch +(see Note 10) +Operational + + +3650 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +008091 +Coordinates significance += 2 Start of observation +Operational + + +3651 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +301021 +Latitude/longitude (high accuracy) +Operational + + +3652 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +007007 +Height +Begin of descending of radiosonde above mean sea level +Operational + + +3653 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +008091 +Coordinates significance +Set to missing (cancel) +Operational + + +3654 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +101000 +Delayed replication of 1 descriptor +Operational + + +3655 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +031002 +Extended delayed descriptor replication factor +Operational + + +3656 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +303056 +Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height +(see Notes 11 and 12) +Operational + + +3657 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +101000 +Delayed replication of 1 descriptor +Operational + + +3658 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +031001 +Delayed descriptor replication factor +Operational + + +3659 +09 +Vertical sounding sequences (conventional data) +309056 +(Sequence for representation of radiosonde descent data) +303051 +Wind shear data at a pressure level with radiosonde position +Operational + + +3660 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +301150 +WIGOS identifier +Operational + + +3661 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +301111 +Identification of launch site and instrumentation for P, T, U and wind measurements +Operational + + +3662 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +301128 +Additional information on radiosonde ascent +Operational + + +3663 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +301113 +Date/time of launch +Operational + + +3664 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +301114 +Horizontal and vertical coordinates of launch site +Operational + + +3665 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +302049 +Cloud information reported with vertical soundings +Operational + + +3666 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +022043 +Sea/water temperature +Operational + + +3667 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +101000 +Delayed replication of 1 descriptor +Operational + + +3668 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +031002 +Extended delayed descriptor replication factor +Operational + + +3669 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +303056 +Temperature, dewpoint and wind data at a pressure level with radiosonde position and higher precision of pressure and geopotential height +Operational + + +3670 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +101000 +Delayed replication of 1 descriptor +Operational + + +3671 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +031001 +Delayed descriptor replication factor +Operational + + +3672 +09 +Vertical sounding sequences (conventional data) +309057 +(Sequence for representation of TEMP, TEMP SHIP and TEMP MOBIL observation type data with higher precision of pressure and geopotential height) +303051 +Wind shear data at a pressure level with radiosonde position +Operational + + +3673 +09 +Vertical sounding sequences (conventional data) +309060 +(Radiosonde complete registration and surface observation) +301123 +Radiosonde full header information +Operational + + +3674 +09 +Vertical sounding sequences (conventional data) +309060 +(Radiosonde complete registration and surface observation) +301121 +Radiosonde launch point location +Operational + + +3675 +09 +Vertical sounding sequences (conventional data) +309060 +(Radiosonde complete registration and surface observation) +302050 +Radiosonde surface observation +Operational + + +3676 +09 +Vertical sounding sequences (conventional data) +309060 +(Radiosonde complete registration and surface observation) +303040 +Radiosonde duration of flight and termination information +Operational + + +3677 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +301120 +Radiosonde abbreviated header and launch information +Operational + + +3678 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +008041 +Data significance += 6 Flight level observation +Operational + + +3679 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +301122 +Date/time (to hundredths of second) +Operational + + +3680 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +201131 +Change data width +Operational + + +3681 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +202129 +Change scale +Operational + + +3682 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +025069 +Flight level pressure corrections +Operational + + +3683 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +007004 +Pressure +Operational + + +3684 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +202000 +Change scale +Cancel +Operational + + +3685 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +201000 +Change data width +Cancel +Operational + + +3686 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033007 +Per cent confidence +Pressure +Operational + + +3687 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033035 +Manual/automatic quality control +Pressure +Operational + + +3688 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033015 +Data quality check indicator +Pressure +Operational + + +3689 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +013009 +Relative humidity +Operational + + +3690 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033007 +Per cent confidence +Relative humidity +Operational + + +3691 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033035 +Manual/automatic quality control +Relative humidity +Operational + + +3692 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033015 +Data quality check indicator +Relative humidity +Operational + + +3693 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +002013 +Solar and infrared radiation correction +Operational + + +3694 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +012101 +Temperature/air temperature +Operational + + +3695 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033007 +Per cent confidence +Temperature +Operational + + +3696 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033035 +Manual/automatic quality control +Temperature +Operational + + +3697 +09 +Vertical sounding sequences (conventional data) +309061 +(Raw PTU) +033015 +Data quality check indicator +Temperature +Operational + + +3698 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +301120 +Radiosonde abbreviated header and launch information +Operational + + +3699 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +008041 +Data significance += 6 Flight level observation +Operational + + +3700 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +301122 +Date/time (to hundredths of second) +Operational + + +3701 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +005001 +Latitude (high accuracy) +Operational + + +3702 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033035 +Manual/automatic quality control +Latitude +Operational + + +3703 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033015 +Data quality check indicator +Latitude +Operational + + +3704 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +006001 +Longitude (high accuracy) +Operational + + +3705 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033035 +Manual/automatic quality control +Longitude +Operational + + +3706 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033015 +Data quality check indicator +Longitude +Operational + + +3707 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +007007 +Height +Operational + + +3708 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033035 +Manual/automatic quality control +Height +Operational + + +3709 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033015 +Data quality check indicator +Height +Operational + + +3710 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +011003 +u-component +Operational + + +3711 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033035 +Manual/automatic quality control +u-component +Operational + + +3712 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033015 +Data quality check indicator +u-component +Operational + + +3713 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +011004 +v-component +Operational + + +3714 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033035 +Manual/automatic quality control +v-component +Operational + + +3715 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033015 +Data quality check indicator +v-component +Operational + + +3716 +09 +Vertical sounding sequences (conventional data) +309062 +(Raw GPS unsmoothed wind) +033007 +Per cent confidence +Raw GPS unsmoothed wind +Operational + + +3717 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +301120 +Radiosonde abbreviated header and launch information +Operational + + +3718 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +008041 +Data significance += 6 Flight level observation +Operational + + +3719 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +301122 +Date/time (to hundredths of second) +Operational + + +3720 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +005001 +Latitude (high accuracy) +Operational + + +3721 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033035 +Manual/automatic quality control +Latitude +Operational + + +3722 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033015 +Data quality check indicator +Latitude +Operational + + +3723 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +006001 +Longitude (high accuracy) +Operational + + +3724 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033035 +Manual/automatic quality control +Longitude +Operational + + +3725 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033015 +Data quality check indicator +Longitude +Operational + + +3726 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +007007 +Height +Operational + + +3727 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033035 +Manual/automatic quality control +Height +Operational + + +3728 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033015 +Data quality check indicator +Height +Operational + + +3729 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +011003 +u-component +Operational + + +3730 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033035 +Manual/automatic quality control +u-component +Operational + + +3731 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033015 +Data quality check indicator +u-component +Operational + + +3732 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +011004 +v-component +Operational + + +3733 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033035 +Manual/automatic quality control +v-component +Operational + + +3734 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033015 +Data quality check indicator +v-component +Operational + + +3735 +09 +Vertical sounding sequences (conventional data) +309063 +(Raw GPS smoothed wind) +033007 +Per cent confidence +Raw GPS smoothed wind +Operational + + +3736 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +301120 +Radiosonde abbreviated header and launch information +Operational + + +3737 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +008041 +Data significance += 6 Flight level observation +Operational + + +3738 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +301122 +Date/time (to hundredths of second) +Operational + + +3739 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +201131 +Change data width +Operational + + +3740 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +202129 +Change scale +Operational + + +3741 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +104002 +Replicate 4 descriptors 2 times +Operational + + +3742 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +025069 +Flight level pressure corrections +Operational + + +3743 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +007004 +Pressure +Operational + + +3744 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033035 +Manual/automatic quality control +Pressure +Operational + + +3745 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033015 +Data quality check indicator +Pressure +Operational + + +3746 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +013003 +Relative humidity +Operational + + +3747 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033035 +Manual/automatic quality control +Relative humidity +Operational + + +3748 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033015 +Data quality check indicator +Relative humidity +Operational + + +3749 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +202000 +Change scale +Cancel +Operational + + +3750 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +201000 +Change data width +Cancel +Operational + + +3751 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +104002 +Replicate 4 descriptors 2 times +Operational + + +3752 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +002013 +Solar and infrared radiation correction +Operational + + +3753 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +012101 +Temperature/air temperature +Operational + + +3754 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033035 +Manual/automatic quality control +Temperature +Operational + + +3755 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033015 +Data quality check indicator +Temperature +Operational + + +3756 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +012103 +Dewpoint temperature +Operational + + +3757 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033035 +Manual/automatic quality control +Dewpoint temperature +Operational + + +3758 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033015 +Data quality check indicator +Dewpoint temperature +Operational + + +3759 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +010009 +Geopotential height +Operational + + +3760 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033035 +Manual/automatic quality control +Geopotential height +Operational + + +3761 +09 +Vertical sounding sequences (conventional data) +309064 +(Processed PTU) +033015 +Data quality check indicator +Geopotential height +Operational + + +3762 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +301120 +Radiosonde abbreviated header and launch information +Operational + + +3763 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +008041 +Data significance += 6 Flight level observation +Operational + + +3764 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +301122 +Date/time (to hundredths of second) +Operational + + +3765 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +005001 +Latitude (high accuracy) +Operational + + +3766 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033035 +Manual/automatic quality control +Latitude +Operational + + +3767 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033015 +Data quality check indicator +Latitude +Operational + + +3768 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +006001 +Longitude (high accuracy) +Operational + + +3769 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033035 +Manual/automatic quality control +Longitude +Operational + + +3770 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033015 +Data quality check indicator +Longitude +Operational + + +3771 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +007007 +Height +Operational + + +3772 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033035 +Manual/automatic quality control +Height +Operational + + +3773 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033015 +Data quality check indicator +Height +Operational + + +3774 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +011003 +u-component +Operational + + +3775 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033035 +Manual/automatic quality control +u-component +Operational + + +3776 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033015 +Data quality check indicator +u-component +Operational + + +3777 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +011004 +v-component +Operational + + +3778 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033035 +Manual/automatic quality control +v-component +Operational + + +3779 +09 +Vertical sounding sequences (conventional data) +309065 +(Processed GPS) +033015 +Data quality check indicator +v-component +Operational + + +3780 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +301120 +Radiosonde abbreviated header and launch information +Operational + + +3781 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +008041 +Data significance += 6 Flight level observation +Operational + + +3782 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +301122 +Date/time (to hundredths of second) +Operational + + +3783 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +008040 +Flight level significance +Operational + + +3784 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +201131 +Change data width +Operational + + +3785 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +202129 +Change scale +Operational + + +3786 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +025069 +Flight level pressure corrections +Operational + + +3787 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +007004 +Pressure +Operational + + +3788 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +013003 +Relative humidity +Operational + + +3789 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +202000 +Change scale +Cancel +Operational + + +3790 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +201000 +Change data width +Cancel +Operational + + +3791 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +002013 +Solar and infrared radiation correction +Operational + + +3792 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +012101 +Temperature/air temperature +Operational + + +3793 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +012103 +Dewpoint temperature +Operational + + +3794 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +010009 +Geopotential height +Operational + + +3795 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +010007 +Height +Operational + + +3796 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +011002 +Wind speed +Operational + + +3797 +09 +Vertical sounding sequences (conventional data) +309066 +(Standard and significant levels) +011001 +Wind direction +Operational + + +3798 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Identification +001035 +Originating centre +Operational + + +3799 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Identification +001032 +Generating application +Operational + + +3800 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Identification +001015 +Station or site name +Operational + + +3801 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Identification +001063 +ICAO location indicator +Operational + + +3802 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Identification +301001 +WMO block and station numbers +Operational + + +3803 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +301011 +Year, month, day +Operational + + +3804 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +301012 +Hour, minute +Reference time of the forecast (T-zero) +Operational + + +3805 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +301021 +Latitude/longitude (high accuracy) +Operational + + +3806 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +207001 +Increase scale, reference value and data width +Increase scale factor by 1; reference value and data width are recalculated in accordance with the Table C specification of operator 2 07 YYY +Operational + + +3807 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +010001 +Height of land surface +Station elevation (non coordinate) +(see Note 7) +Operational + + +3808 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +207000 +Increase scale, reference value and data width +Cancel +Operational + + +3809 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +008086 +Vertical significance for NWP +Bit 9 set to 1 Virtual station height +Operational + + +3810 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Location and reference time +007030 +Height of station ground above mean sea level +Elevation of model terrain at the latitude/longitude of station. As qualified by 0 08 086, this value is both station and model specific. +Operational + + +3811 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Vertical profile metadata +025031 +NWP-generated vertical profile thinning method +(see Note 8) +Operational + + +3812 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Vertical profile metadata +008021 +Time significance += 4 Forecast, = 16 Analysis, = 27 First guess +Operational + + +3813 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Vertical profile metadata +004014 +Time increment +Validity time of the forecast expressed as a Delta T from reference time. In the case of an analysis or 00 hour forecast, the value is set to zero +Operational + + +3814 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Point data at station height (including column-integrated data) +010004 +Pressure +Operational + + +3815 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Point data at station height (including column-integrated data) +010051 +Pressure reduced to mean sea level +Operational + + +3816 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Point data at station height (including column-integrated data) +010009 +Geopotential height +Operational + + +3817 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Point data at station height (including column-integrated data) +020010 +Cloud cover (total) +Operational + + +3818 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Point data at station height (including column-integrated data) +013095 +Total column water vapour +Operational + + +3819 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Replication loop for levels +128000 +Delayed replication of 28 descriptors +Operational + + +3820 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Replication loop for levels +031002 +Extended delayed descriptor replication factor +The number of levels used in the vertical profile is determined by this replication. The number of levels is discretionary and comprises all agl levels and pressure levels +Operational + + +3821 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +113000 +Delayed replication of 13 descriptors +Operational + + +3822 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +031000 +Short delayed descriptor replication factor += 1 Vertical coordinate is pressure, = 0 Otherwise +Operational + + +3823 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +008086 +Vertical significance for NWP +Bit 1 set to 0 and other bits as appropriate +Operational + + +3824 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +007004 +Pressure +(see Note 9) +Operational + + +3825 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +011001 +Wind direction +Degrees true +Operational + + +3826 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +011002 +Wind speed +m/s +Operational + + +3827 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +012101 +Temperature/air temperature +Operational + + +3828 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +012102 +Wet-bulb temperature +Operational + + +3829 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +012103 +Dewpoint temperature +Operational + + +3830 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +010009 +Geopotential height +Operational + + +3831 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +103000 +Delayed replication of 3 descriptors +Operational + + +3832 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +031000 +Short delayed descriptor replication factor += 1 Optional enhanced model data is to be included +Operational + + +3833 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +011021 +Relative vorticity +Operational + + +3834 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +011022 +Divergence +Operational + + +3835 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data on pressure coordinates +011005 +w-component +Vertical motion +Operational + + +3836 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 10 metres above ground level +104000 +Delayed replication of 4 descriptors +Operational + + +3837 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 10 metres above ground level +031000 +Short delayed descriptor replication factor += 1 Vertical coordinate is 10 metres above ground level, = 0 Otherwise +Operational + + +3838 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 10 metres above ground level +008086 +Vertical significance for NWP +Bit 1 set to 1, bit 8 set to 1 +Operational + + +3839 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 10 metres above ground level +007006 +Height above station += 10 m +Operational + + +3840 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 10 metres above ground level +011001 +Wind direction +Degrees true +Operational + + +3841 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 10 metres above ground level +011002 +Wind speed +m/s +Operational + + +3842 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 2 metres above ground level +105000 +Delayed replication of 5 descriptors +Operational + + +3843 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 2 metres above ground level +031000 +Short delayed descriptor replication factor += 1 Vertical coordinate is 2 metres above ground level, = 0 Otherwise +Operational + + +3844 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 2 metres above ground level +008086 +Vertical significance for NWP +Operational + + +3845 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 2 metres above ground level +007006 +Height above station += 2 m +Operational + + +3846 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 2 metres above ground level +012101 +Temperature/air temperature +Operational + + +3847 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 2 metres above ground level +012102 +Wet-bulb temperature +Operational + + +3848 +09 +Vertical sounding sequences (conventional data) +309070 +(Vertical profile for numerical weather prediction data) +Data at 2 metres above ground level +012103 +Dewpoint temperature +Operational + + +3849 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +301001 +WMO block and station numbers +Operational + + +3850 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +002014 +Tracking technique/status of system used +Operational + + +3851 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +002003 +Type of measuring equipment used +Operational + + +3852 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +301113 +Date/time of launch +Operational + + +3853 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +301114 +Horizontal and vertical coordinates of launch site +Operational + + +3854 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +3855 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +007030 +Height of station ground above mean sea level +Operational + + +3856 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +007007 +Height +Release of balloon +Operational + + +3857 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +103000 +Delayed replication of 3 descriptors +Operational + + +3858 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +031001 +Delayed descriptor replication factor +Operational + + +3859 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +007009 +Geopotential height +Operational + + +3860 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +011001 +Wind direction +Operational + + +3861 +09 +Vertical sounding sequences (conventional data) +309071 +(Sequence for representation of PILOT in the area of ASECNA) +011002 +Wind speed +Operational + + +3862 +10 +Vertical sounding sequences (satellite data) +310001 +(Satellite - brightness temperature) +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +3863 +10 +Vertical sounding sequences (satellite data) +310001 +(Satellite - brightness temperature) +303031 +Significance data, land/sea, skin temperature +Operational + + +3864 +10 +Vertical sounding sequences (satellite data) +310001 +(Satellite - brightness temperature) +303032 +Cloud +Operational + + +3865 +10 +Vertical sounding sequences (satellite data) +310001 +(Satellite - brightness temperature) +101026 +Replicate 1 descriptor 26 times +Operational + + +3866 +10 +Vertical sounding sequences (satellite data) +310001 +(Satellite - brightness temperature) +303025 +Satellite channel and brightness temperature +Operational + + +3867 +10 +Vertical sounding sequences (satellite data) +310002 +(Satellite - low level) +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +3868 +10 +Vertical sounding sequences (satellite data) +310002 +(Satellite - low level) +303031 +Significance data, land/sea, skin temperature +Operational + + +3869 +10 +Vertical sounding sequences (satellite data) +310002 +(Satellite - low level) +303032 +Cloud +Operational + + +3870 +10 +Vertical sounding sequences (satellite data) +310002 +(Satellite - low level) +101009 +Replicate 1 descriptor 9 times +Operational + + +3871 +10 +Vertical sounding sequences (satellite data) +310002 +(Satellite - low level) +303023 +Layer mean temperature +Operational + + +3872 +10 +Vertical sounding sequences (satellite data) +310003 +(Satellite - high level) +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +3873 +10 +Vertical sounding sequences (satellite data) +310003 +(Satellite - high level) +303031 +Significance data, land/sea, skin temperature +Operational + + +3874 +10 +Vertical sounding sequences (satellite data) +310003 +(Satellite - high level) +303032 +Cloud +Operational + + +3875 +10 +Vertical sounding sequences (satellite data) +310003 +(Satellite - high level) +101006 +Replicate 1 descriptor 6 times +Operational + + +3876 +10 +Vertical sounding sequences (satellite data) +310003 +(Satellite - high level) +303023 +Layer mean temperature +Operational + + +3877 +10 +Vertical sounding sequences (satellite data) +310004 +(Satellite - precipitable water) +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +3878 +10 +Vertical sounding sequences (satellite data) +310004 +(Satellite - precipitable water) +303031 +Significance data, land/sea, skin temperature +Operational + + +3879 +10 +Vertical sounding sequences (satellite data) +310004 +(Satellite - precipitable water) +303032 +Cloud +Operational + + +3880 +10 +Vertical sounding sequences (satellite data) +310004 +(Satellite - precipitable water) +101003 +Replicate 1 descriptor 3 times +Operational + + +3881 +10 +Vertical sounding sequences (satellite data) +310004 +(Satellite - precipitable water) +303024 +Precipitable water +Operational + + +3882 +10 +Vertical sounding sequences (satellite data) +310005 +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +3883 +10 +Vertical sounding sequences (satellite data) +310005 +303031 +Significance data, land/sea, skin temperature +Operational + + +3884 +10 +Vertical sounding sequences (satellite data) +310005 +303033 +Cloud +Operational + + +3885 +10 +Vertical sounding sequences (satellite data) +310005 +101000 +Delayed replication of 1 descriptor +Operational + + +3886 +10 +Vertical sounding sequences (satellite data) +310005 +031001 +Delayed descriptor replication factor +Operational + + +3887 +10 +Vertical sounding sequences (satellite data) +310005 +303025 +Satellite channel and brightness temperature +Operational + + +3888 +10 +Vertical sounding sequences (satellite data) +310006 +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +3889 +10 +Vertical sounding sequences (satellite data) +310006 +303031 +Significance data, land/sea, skin temperature +Operational + + +3890 +10 +Vertical sounding sequences (satellite data) +310006 +303033 +Cloud +Operational + + +3891 +10 +Vertical sounding sequences (satellite data) +310006 +101000 +Delayed replication of 1 descriptor +Operational + + +3892 +10 +Vertical sounding sequences (satellite data) +310006 +031001 +Delayed descriptor replication factor +Operational + + +3893 +10 +Vertical sounding sequences (satellite data) +310006 +303023 +Layer mean temperature +Operational + + +3894 +10 +Vertical sounding sequences (satellite data) +310007 +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +3895 +10 +Vertical sounding sequences (satellite data) +310007 +303031 +Significance data, land/sea, skin temperature +Operational + + +3896 +10 +Vertical sounding sequences (satellite data) +310007 +303033 +Cloud +Operational + + +3897 +10 +Vertical sounding sequences (satellite data) +310007 +101000 +Delayed replication of 1 descriptor +Operational + + +3898 +10 +Vertical sounding sequences (satellite data) +310007 +031001 +Delayed descriptor replication factor +Operational + + +3899 +10 +Vertical sounding sequences (satellite data) +310007 +303024 +Precipitable water +Operational + + +3900 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +310011 +ATOVS field of view variables +Operational + + +3901 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +101019 +Replicate 1 descriptor 19 times +Operational + + +3902 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +310012 +ATOVS channel variables +Operational + + +3903 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +3904 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +025079 +Albedo-radiance solar filtered irradiance for ATOVS +Operational + + +3905 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +025080 +Albedo-radiance equivalent filter width for ATOVS +Operational + + +3906 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +033032 +Channel quality flags for ATOVS +Operational + + +3907 +10 +Vertical sounding sequences (satellite data) +310008 +(ATOVS HIRS report) +014045 +Channel radiance +Operational + + +3908 +10 +Vertical sounding sequences (satellite data) +310009 +(ATOVS AMSU-A report) +310011 +ATOVS field of view variables +Operational + + +3909 +10 +Vertical sounding sequences (satellite data) +310009 +(ATOVS AMSU-A report) +101015 +Replicate 1 descriptor 15 times +Operational + + +3910 +10 +Vertical sounding sequences (satellite data) +310009 +(ATOVS AMSU-A report) +310012 +ATOVS channel variables +Operational + + +3911 +10 +Vertical sounding sequences (satellite data) +310010 +(ATOVS AMSU-B/MHS report) +310011 +ATOVS field of view variables +Operational + + +3912 +10 +Vertical sounding sequences (satellite data) +310010 +(ATOVS AMSU-B/MHS report) +101005 +Replicate 1 descriptor 5 times +Operational + + +3913 +10 +Vertical sounding sequences (satellite data) +310010 +(ATOVS AMSU-B/MHS report) +310012 +ATOVS channel variables +Operational + + +3914 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +008070 +Vertical sounding product qualifier +Operational + + +3915 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +001033 +Identification of originating/generating centre +Operational + + +3916 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +001034 +Identification of originating/generating sub-centre +Operational + + +3917 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +008070 +Vertical sounding product qualifier +Operational + + +3918 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +001033 +Identification of originating/generating centre +Operational + + +3919 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +001034 +Identification of originating/generating sub-centre +Operational + + +3920 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +001007 +Satellite identifier +Operational + + +3921 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +002048 +Satellite sensor indicator +Operational + + +3922 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +005040 +Orbit number +Operational + + +3923 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +025075 +Satellite antenna corrections version number +Operational + + +3924 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +201133 +Change data width +Operational + + +3925 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +005041 +Scan line number +Operational + + +3926 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +201000 +Change data width +Operational + + +3927 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +005043 +Field of view number +Operational + + +3928 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +025070 +Major frame count +Operational + + +3929 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +033030 +Scan line status flags for ATOVS +Operational + + +3930 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +033031 +Scan line quality flags for ATOVS +Operational + + +3931 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +004001 +Year +Operational + + +3932 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +004002 +Month +Operational + + +3933 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +004003 +Day +Operational + + +3934 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +004004 +Hour +Operational + + +3935 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +004005 +Minute +Operational + + +3936 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +202131 +Change scale +Operational + + +3937 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +201138 +Change data width +Operational + + +3938 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +004006 +Second +Operational + + +3939 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +201000 +Change data width +Operational + + +3940 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +202000 +Change scale +Operational + + +3941 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +005001 +Latitude (high accuracy) +Operational + + +3942 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +006001 +Longitude (high accuracy) +Operational + + +3943 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +202126 +Change scale +Operational + + +3944 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +007001 +Height of station +Operational + + +3945 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +202000 +Change scale +Operational + + +3946 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +007024 +Satellite zenith angle +Operational + + +3947 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +005021 +Bearing or azimuth +Satellite azimuth +Operational + + +3948 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +007025 +Solar zenith angle +Operational + + +3949 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +005022 +Solar azimuth +Operational + + +3950 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +033033 +Field of view quality flags for ATOVS +Operational + + +3951 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +002151 +Radiometer identifier +Operational + + +3952 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +012064 +Instrument temperature +Operational + + +3953 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +002151 +Radiometer identifier +Operational + + +3954 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +012064 +Instrument temperature +Operational + + +3955 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +002151 +Radiometer identifier +Operational + + +3956 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +012064 +Instrument temperature +Operational + + +3957 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +002151 +Radiometer identifier +Operational + + +3958 +10 +Vertical sounding sequences (satellite data) +310011 +(ATOVS field of view variables) +012064 +Instrument temperature +Operational + + +3959 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +3960 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +025076 +Log10 of (temperature-radiance central wave number) for ATOVS +Operational + + +3961 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +025077 +Bandwidth correction coefficient 1 +Operational + + +3962 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +025078 +Bandwidth correction coefficient 2 +Operational + + +3963 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +033032 +Channel quality flags for ATOVS +Operational + + +3964 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +201132 +Change data width +Operational + + +3965 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +202129 +Change scale +Operational + + +3966 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +012063 +Brightness temperature +Operational + + +3967 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +202000 +Change scale +Operational + + +3968 +10 +Vertical sounding sequences (satellite data) +310012 +(ATOVS channel variables) +201000 +Change data width +Operational + + +3969 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +001007 +Satellite identifier +Operational + + +3970 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +005040 +Orbit number +Operational + + +3971 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +004001 +Year +Operational + + +3972 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +004002 +Month +Operational + + +3973 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +004003 +Day +Operational + + +3974 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +004004 +Hour +Operational + + +3975 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +004005 +Minute +Operational + + +3976 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +004006 +Second +Operational + + +3977 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +005001 +Latitude (high accuracy) +Operational + + +3978 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +006001 +Longitude (high accuracy) +Operational + + +3979 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +007025 +Solar zenith angle +Operational + + +3980 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +005043 +Field of view number +Operational + + +3981 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +025085 +Fraction of clear pixels in HIRS FOV +Operational + + +3982 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +201131 +Change data width +Operational + + +3983 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +202129 +Change scale +Operational + + +3984 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +3985 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008023 +First-order statistics +Operational + + +3986 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +3987 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +014027 +Albedo +Operational + + +3988 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +3989 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +014027 +Albedo +Operational + + +3990 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +3991 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008023 +First-order statistics +Operational + + +3992 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +3993 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +014027 +Albedo +Operational + + +3994 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +3995 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +014027 +Albedo +Operational + + +3996 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +3997 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008023 +First-order statistics +Operational + + +3998 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +3999 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +014027 +Albedo +Operational + + +4000 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4001 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +014027 +Albedo +Operational + + +4002 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +202000 +Change scale +Operational + + +4003 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +201000 +Change data width +Operational + + +4004 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +201132 +Change data width +Operational + + +4005 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +202129 +Change scale +Operational + + +4006 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +4007 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008023 +First-order statistics +Operational + + +4008 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4009 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4010 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4011 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4012 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +4013 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008023 +First-order statistics +Operational + + +4014 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4015 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4016 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4017 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4018 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008023 +First-order statistics +Operational + + +4019 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4020 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4021 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4022 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4023 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +002150 +TOVS/ATOVS/AVHRR instrumentation channel number +Operational + + +4024 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008023 +First-order statistics +Operational + + +4025 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4026 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4027 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +008072 +Pixel(s) type +Operational + + +4028 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +012063 +Brightness temperature +Operational + + +4029 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +202000 +Change scale +Operational + + +4030 +10 +Vertical sounding sequences (satellite data) +310013 +(AVHRR (GAC) report) +201000 +Change data width +Operational + + +4031 +10 +Vertical sounding sequences (satellite data) +310014 +(Satellite - geostationary wind data) +301072 +Satellite identification +Satellite identification, date/time, latitude/longitude +Operational + + +4032 +10 +Vertical sounding sequences (satellite data) +310014 +(Satellite - geostationary wind data) +303041 +Wind sequence +Operational + + +4033 +10 +Vertical sounding sequences (satellite data) +310014 +(Satellite - geostationary wind data) +304011 +GOES-I/M info +Operational + + +4034 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +301072 +Satellite identification +Operational + + +4035 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +007024 +Satellite zenith angle +Operational + + +4036 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +010002 +Height +Operational + + +4037 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +303041 +Wind sequence +Operational + + +4038 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +101003 +Replicate 1 descriptor 3 times +Operational + + +4039 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +304032 +Cloud fraction +Operational + + +4040 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +002152 +Satellite instrument used in data processing +Operational + + +4041 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +002024 +Integrated mean humidity computational method +Operational + + +4042 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +007004 +Pressure +Operational + + +4043 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +007004 +Pressure +Operational + + +4044 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +013003 +Relative humidity +Operational + + +4045 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +101003 +Replicate 1 descriptor 3 times +Operational + + +4046 +10 +Vertical sounding sequences (satellite data) +310015 +(Meteosat radiance data) +304033 +Clear sky radiance +Operational + + +4047 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +301072 +Satellite identification +Operational + + +4048 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +007024 +Satellite zenith angle +Operational + + +4049 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +010002 +Height +Operational + + +4050 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +303041 +Wind sequence +Operational + + +4051 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +101012 +Replicate 1 descriptor 12 times +Operational + + +4052 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +304032 +Cloud fraction +Operational + + +4053 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +002152 +Satellite instrument used in data processing +Operational + + +4054 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +002024 +Integrated mean humidity computational method +Operational + + +4055 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +007004 +Pressure +Operational + + +4056 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +007004 +Pressure +Operational + + +4057 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +013003 +Relative humidity +Operational + + +4058 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +101012 +Replicate 1 descriptor 12 times +Operational + + +4059 +10 +Vertical sounding sequences (satellite data) +310016 +(Meteosat Second Generation (MSG) radiance data) +304033 +Clear sky radiance +Operational + + +4060 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +001007 +Satellite identifier +Operational + + +4061 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +005040 +Orbit number +Operational + + +4062 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +004001 +Year +Operational + + +4063 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +004043 +Day of the year +Operational + + +4064 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +004004 +Hour +Operational + + +4065 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +004005 +Minute +Operational + + +4066 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +004006 +Second +Operational + + +4067 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4068 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +026030 +Measurement integration time +Operational + + +4069 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4070 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +005002 +Latitude (coarse accuracy) +Operational + + +4071 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +006002 +Longitude (coarse accuracy) +Operational + + +4072 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +033072 +Ozone error +Operational + + +4073 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +007025 +Solar zenith angle +Operational + + +4074 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +005022 +Solar azimuth +Operational + + +4075 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4076 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +015001 +Total ozone +Operational + + +4077 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4078 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +008003 +Vertical significance (satellite observations) += 0 Surface +Operational + + +4079 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207001 +Increase scale, reference value and data width +Operational + + +4080 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +010004 +Pressure +Terrain +Operational + + +4081 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4082 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +4083 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +008003 +Vertical significance (satellite observations) += 2 Cloud top +Operational + + +4084 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +033042 +Type of limit represented by following value += 0 Exclusive lower limit +Operational + + +4085 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207001 +Increase scale, reference value and data width +Operational + + +4086 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +007004 +Pressure +Operational + + +4087 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4088 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4089 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +015001 +Total ozone +Below cloud top pressure +Operational + + +4090 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4091 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +4092 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4093 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +020081 +Cloud amount in segment +Cloud fraction +Operational + + +4094 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4095 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +020065 +Snow cover +Operational + + +4096 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +008029 +Surface type +Operational + + +4097 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207004 +Increase scale, reference value and data width +Operational + + +4098 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +015030 +Aerosol contamination index +Operational + + +4099 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4100 +10 +Vertical sounding sequences (satellite data) +310018 +(Ozone data) +008075 +Ascending/descending orbit qualifier +Operational + + +4101 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +001007 +Satellite identifier +Operational + + +4102 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +002019 +Satellite instruments += 624 SBUV/2 +Operational + + +4103 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +301011 +Year, month, day +Operational + + +4104 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +301013 +Hour, minute, second +Operational + + +4105 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +4106 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +007025 +Solar zenith angle +Operational + + +4107 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008021 +Time significance += 28 Start of scan +Operational + + +4108 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +007025 +Solar zenith angle +Operational + + +4109 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008021 +Time significance += 29 End of scan +Operational + + +4110 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +007025 +Solar zenith angle +Operational + + +4111 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008021 +Time significance +Set to missing (cancel) +Operational + + +4112 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008029 +Surface type +Operational + + +4113 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +005040 +Orbit number +Operational + + +4114 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008075 +Ascending/descending orbit qualifier +Operational + + +4115 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008003 +Vertical significance (satellite observations) += 0 Surface +Operational + + +4116 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +010004 +Pressure += Terrain +Operational + + +4117 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +4118 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4119 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +015001 +Total ozone +Operational + + +4120 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4121 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +033070 +Total ozone quality +Operational + + +4122 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +015030 +Aerosol contamination index +Operational + + +4123 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4124 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +020081 +Cloud amount in segment +Cloud fraction +Operational + + +4125 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4126 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008003 +Vertical significance (satellite observations) += 2 Cloud top +Operational + + +4127 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +033042 +Type of limit represented by following value += 0 Exclusive lower limit +Operational + + +4128 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +007004 +Pressure +Operational + + +4129 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4130 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +015001 +Total ozone +Below cloud top pressure +Operational + + +4131 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4132 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +4133 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +113021 +Replicate 13 descriptors 21 times +Operational + + +4134 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +007004 +Pressure +Bottom of layer +Operational + + +4135 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +007004 +Pressure +Top of layer +Operational + + +4136 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4137 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008021 +Time significance += 27 First guess +Operational + + +4138 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +015005 +Ozone p +Operational + + +4139 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008021 +Time significance +Set to missing (cancel) +Operational + + +4140 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +015005 +Ozone p +Operational + + +4141 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +033007 +Per cent confidence +Operational + + +4142 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4143 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008026 +Matrix significance += 0 Row of averaging kernel matrix +Operational + + +4144 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +101020 +Replicate 1 descriptor 20 times +Operational + + +4145 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +025143 +Linear coefficient +Operational + + +4146 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008026 +Matrix significance +Set to missing (cancel) +Operational + + +4147 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008043 +Atmospheric chemical or physical constituent type += 0 Ozone +Operational + + +4148 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +109015 +Replicate 9 descriptors 15 times +Operational + + +4149 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +007004 +Pressure +Operational + + +4150 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008090 +Decimal scale of following significands +Operational + + +4151 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207006 +Increase scale, reference value and data width +Operational + + +4152 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +015008 +Significand of volumetric mixing ratio +Operational + + +4153 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4154 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008090 +Decimal scale of following significands +Set to missing (cancel) +Operational + + +4155 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4156 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +033007 +Per cent confidence +Operational + + +4157 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4158 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +008043 +Atmospheric chemical or physical constituent type +Set to missing (cancel) +Operational + + +4159 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +033071 +Profile ozone quality +Operational + + +4160 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +108008 +Replicate 8 descriptors 8 times +Operational + + +4161 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +202124 +Change scale +Operational + + +4162 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +201107 +Change data width +Operational + + +4163 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +002071 +Spectrographic wavelength +Operational + + +4164 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +201000 +Change data width +Cancel +Operational + + +4165 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +202000 +Change scale +Cancel +Operational + + +4166 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207002 +Increase scale, reference value and data width +Operational + + +4167 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +020081 +Cloud amount in segment +Cloud fraction +Operational + + +4168 +10 +Vertical sounding sequences (satellite data) +310019 +(Ozone data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4169 +10 +Vertical sounding sequences (satellite data) +310020 +(Retrieved ozone data) +310022 +Satellite identifier, instrument and product type +Operational + + +4170 +10 +Vertical sounding sequences (satellite data) +310020 +(Retrieved ozone data) +301011 +Year, month, day +Operational + + +4171 +10 +Vertical sounding sequences (satellite data) +310020 +(Retrieved ozone data) +301013 +Hour, minute, second +Operational + + +4172 +10 +Vertical sounding sequences (satellite data) +310020 +(Retrieved ozone data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4173 +10 +Vertical sounding sequences (satellite data) +310020 +(Retrieved ozone data) +304034 +Latitude/longitude, solar elevation, number of layers +Operational + + +4174 +10 +Vertical sounding sequences (satellite data) +310020 +(Retrieved ozone data) +310021 +Integrated ozone density, height of defined layer +Operational + + +4175 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +108000 +Delayed replication of 8 descriptors +Operational + + +4176 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +031001 +Delayed descriptor replication factor +Operational + + +4177 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +201131 +Change data width +Operational + + +4178 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +202129 +Change scale +Operational + + +4179 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +007004 +Pressure +Operational + + +4180 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +007004 +Pressure +Operational + + +4181 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +202000 +Change scale +Cancel +Operational + + +4182 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +201000 +Change data width +Cancel +Operational + + +4183 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +015020 +Integrated ozone density +Operational + + +4184 +10 +Vertical sounding sequences (satellite data) +310021 +(Integrated ozone density, height of defined layer) +010002 +Height +Operational + + +4185 +10 +Vertical sounding sequences (satellite data) +310022 +(Satellite identifier, instrument and product type) +001007 +Satellite identifier +Operational + + +4186 +10 +Vertical sounding sequences (satellite data) +310022 +(Satellite identifier, instrument and product type) +002019 +Satellite instruments +Operational + + +4187 +10 +Vertical sounding sequences (satellite data) +310022 +(Satellite identifier, instrument and product type) +001033 +Identification of originating/generating centre +Operational + + +4188 +10 +Vertical sounding sequences (satellite data) +310022 +(Satellite identifier, instrument and product type) +002172 +Product type for retrieved atmospheric gases +Operational + + +4189 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +301072 +Satellite identification +Operational + + +4190 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +030021 +Number of pixels per row +Operational + + +4191 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +030022 +Number of pixels per column +Operational + + +4192 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +008012 +Land/sea qualifier +Operational + + +4193 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +007024 +Satellite zenith angle +Operational + + +4194 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +007025 +Solar zenith angle +Operational + + +4195 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +010002 +Height +Operational + + +4196 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +101012 +Replicate 1 descriptor 12 times +Operational + + +4197 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +304032 +Cloud fraction +Operational + + +4198 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +105002 +Replicate 5 descriptors 2 times +Operational + + +4199 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +002152 +Satellite instrument used in data processing +Operational + + +4200 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +002024 +Integrated mean humidity computational method +Operational + + +4201 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +007004 +Pressure +Operational + + +4202 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +007004 +Pressure +Operational + + +4203 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +013003 +Relative humidity +Operational + + +4204 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +101012 +Replicate 1 descriptor 12 times +Operational + + +4205 +10 +Vertical sounding sequences (satellite data) +310023 +(Geostationary multi-channel satellite radiance data) +304033 +Clear sky radiance +Operational + + +4206 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +301072 +Satellite identification +Operational + + +4207 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +030021 +Number of pixels per row +Operational + + +4208 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +030022 +Number of pixels per column +Operational + + +4209 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +008012 +Land/sea qualifier +Operational + + +4210 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +007024 +Satellite zenith angle +Operational + + +4211 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +007025 +Solar zenith angle +Operational + + +4212 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +010002 +Height +Operational + + +4213 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +101003 +Replicate 1 descriptor 3 times +Operational + + +4214 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +304032 +Cloud fraction +Operational + + +4215 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +105002 +Replicate 5 descriptors 2 times +Operational + + +4216 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +002152 +Satellite instrument used in data processing +Operational + + +4217 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +002024 +Integrated mean humidity computational method +Operational + + +4218 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +007004 +Pressure +Operational + + +4219 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +007004 +Pressure +Operational + + +4220 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +013003 +Relative humidity +Operational + + +4221 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +101003 +Replicate 1 descriptor 3 times +Operational + + +4222 +10 +Vertical sounding sequences (satellite data) +310024 +(Geostationary three-channel satellite radiance data) +304033 +Clear sky radiance +Operational + + +4223 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +001007 +Satellite identifier +Operational + + +4224 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +008021 +Time significance +Scan start +Operational + + +4225 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004001 +Year +Operational + + +4226 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004002 +Month +Operational + + +4227 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004003 +Day +Operational + + +4228 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004004 +Hour +Operational + + +4229 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004005 +Minute +Operational + + +4230 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201138 +Change data width +Operational + + +4231 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +202131 +Change scale +Operational + + +4232 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004006 +Second +Milliseconds +Operational + + +4233 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +202000 +Change scale +Operational + + +4234 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201000 +Change data width +Operational + + +4235 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201132 +Change data width +Operational + + +4236 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005041 +Scan line number +Scan number +Operational + + +4237 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201000 +Change data width +Operational + + +4238 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201129 +Change data width +Operational + + +4239 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005043 +Field of view number +Scene number +Operational + + +4240 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201000 +Change data width +Operational + + +4241 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005002 +Latitude (coarse accuracy) +Operational + + +4242 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +006002 +Longitude (coarse accuracy) +Operational + + +4243 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +013040 +Surface flag +Operational + + +4244 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +020029 +Rain flag +Operational + + +4245 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +104024 +Replicate 4 descriptors 24 times +Operational + + +4246 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005042 +Channel number +Operational + + +4247 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +012163 +Brightness temperature +Operational + + +4248 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +021083 +Warm target calibration +Operational + + +4249 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +021084 +Cold target calibration +Operational + + +4250 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +115003 +Replicate 15 descriptors 3 times +Operational + + +4251 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004001 +Year +Operational + + +4252 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004002 +Month +Operational + + +4253 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004003 +Day +Operational + + +4254 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201142 +Change data width +Operational + + +4255 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +202131 +Change scale +Operational + + +4256 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004026 +Time period or displacement +Ephemeris milliseconds +Operational + + +4257 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +202000 +Change scale +Operational + + +4258 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201000 +Change data width +Operational + + +4259 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005001 +Latitude (high accuracy) +Ephemeris +Operational + + +4260 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +006001 +Longitude (high accuracy) +Ephemeris +Operational + + +4261 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201138 +Change data width +Operational + + +4262 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +202129 +Change scale +Operational + + +4263 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +007001 +Height of station +Ephemeris +Operational + + +4264 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +202000 +Change scale +Operational + + +4265 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +201000 +Change data width +Operational + + +4266 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +008021 +Time significance +Orbit start +Operational + + +4267 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004001 +Year +Operational + + +4268 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004002 +Month +Operational + + +4269 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004003 +Day +Operational + + +4270 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004004 +Hour +Operational + + +4271 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +004005 +Minute +Operational + + +4272 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005040 +Orbit number +Operational + + +4273 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +101003 +Replicate 1 descriptor 3 times +Operational + + +4274 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +012070 +Warm load temperature +Operational + + +4275 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +025054 +SSMIS subframe ID number +Operational + + +4276 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +101004 +Replicate 1 descriptor 4 times +Operational + + +4277 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +025055 +Multiplexer housekeeping +Operational + + +4278 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +008007 +Dimensional significance +Line +Operational + + +4279 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +104028 +Replicate 4 descriptors 28 times +Operational + + +4280 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005002 +Latitude (coarse accuracy) +Operational + + +4281 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +006002 +Longitude (coarse accuracy) +Operational + + +4282 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +002111 +Radar incidence angle +Earth angle +Operational + + +4283 +10 +Vertical sounding sequences (satellite data) +310025 +(SSMIS temperature data record) +005021 +Bearing or azimuth +Operational + + +4284 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +310022 +Satellite identifier, instrument and product type +Operational + + +4285 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +025060 +Software identification +Operational + + +4286 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008021 +Time significance += 17 Start of phenomenon +Operational + + +4287 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +301011 +Year, month, day +Operational + + +4288 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +301012 +Hour, minute +Operational + + +4289 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201138 +Change data width +16 bits long +Operational + + +4290 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +202131 +Change scale +Scale: 3 +Operational + + +4291 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +004006 +Second +Operational + + +4292 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +202000 +Change scale +Cancel +Operational + + +4293 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4294 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +033039 +Quality flags for radio occultation data +Operational + + +4295 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +033007 +Per cent confidence +Whole message +Operational + + +4296 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +304030 +Location of platform +Operational + + +4297 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +304031 +Speed of platform +Operational + + +4298 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +002020 +Satellite classification +Operational + + +4299 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +001050 +Platform transmitter ID number +Operational + + +4300 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +202127 +Change scale +Scale: 1 +Operational + + +4301 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +304030 +Location of platform +Operational + + +4302 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +202000 +Change scale +Cancel +Operational + + +4303 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +304031 +Speed of platform +Operational + + +4304 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201133 +Change data width +18 bits long +Operational + + +4305 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +202131 +Change scale +Scale: 3 +Operational + + +4306 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +004016 +Time increment +Operational + + +4307 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +202000 +Change scale +Cancel +Operational + + +4308 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4309 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4310 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +304030 +Location of platform +Operational + + +4311 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +010035 +Earth's local radius of curvature +Operational + + +4312 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +005021 +Bearing or azimuth +Operational + + +4313 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +010036 +Geoid undulation +Operational + + +4314 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +113000 +Delayed replication of 13 descriptors +Operational + + +4315 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +031002 +Extended delayed descriptor replication factor +Operational + + +4316 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4317 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +005021 +Bearing or azimuth +Operational + + +4318 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +108000 +Delayed replication of 8 descriptors +Operational + + +4319 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +031001 +Delayed descriptor replication factor +Operational + + +4320 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +002121 +Mean frequency +Operational + + +4321 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +007040 +Impact parameter +Operational + + +4322 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +015037 +Bending angle +Operational + + +4323 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics += 13 Root-mean-square +Operational + + +4324 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201125 +Change data width +20 bits long +Operational + + +4325 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +015037 +Bending angle +Operational + + +4326 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4327 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics +Set to missing +Operational + + +4328 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +033007 +Per cent confidence +All data for current replication +Operational + + +4329 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +108000 +Delayed replication of 8 descriptors +Operational + + +4330 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +031002 +Extended delayed descriptor replication factor +Operational + + +4331 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +007007 +Height +Operational + + +4332 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +015036 +Atmospheric refractivity +Operational + + +4333 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics += 13 Root-mean-square +Operational + + +4334 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201123 +Change data width +14 bits long +Operational + + +4335 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +015036 +Atmospheric refractivity +Operational + + +4336 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4337 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics +Set to missing +Operational + + +4338 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +033007 +Per cent confidence +All data for current height +Operational + + +4339 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +116000 +Delayed replication of 16 descriptors +Operational + + +4340 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +031002 +Extended delayed descriptor replication factor +Operational + + +4341 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +007009 +Geopotential height +Operational + + +4342 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +010004 +Pressure +Operational + + +4343 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +012001 +Temperature/air temperature +Operational + + +4344 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +013001 +Specific humidity +Operational + + +4345 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics += 13 Root-mean-square +Operational + + +4346 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201120 +Change data width +6 bits long +Operational + + +4347 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +010004 +Pressure +Operational + + +4348 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4349 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201122 +Change data width +6 bits long +Operational + + +4350 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +012001 +Temperature/air temperature +Operational + + +4351 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4352 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201123 +Change data width +9 bits long +Operational + + +4353 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +013001 +Specific humidity +Operational + + +4354 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4355 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics +Set to missing +Operational + + +4356 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +033007 +Per cent confidence +All data for current height +Operational + + +4357 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008003 +Vertical significance (satellite observations) += 0 Surface +Operational + + +4358 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +007009 +Geopotential height +Operational + + +4359 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +010004 +Pressure +Operational + + +4360 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics += 13 Root-mean-square +Operational + + +4361 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201120 +Change data width +6 bits long +Operational + + +4362 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +010004 +Pressure +Operational + + +4363 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +201000 +Change data width +Cancel +Operational + + +4364 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +008023 +First-order statistics +Set to missing +Operational + + +4365 +10 +Vertical sounding sequences (satellite data) +310026 +(Satellite radio occultation data) +033007 +Per cent confidence +Surface data +Operational + + +4366 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +301071 +Satellite identifier/Generating resolution +Product information +Deprecated + + +4367 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +301011 +Year, month, day +Deprecated + + +4368 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +301013 +Hour, minute, second +Deprecated + + +4369 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +301021 +Latitude/longitude (high accuracy) +Deprecated + + +4370 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +030021 +Number of pixels per row +Deprecated + + +4371 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +030022 +Number of pixels per column +Deprecated + + +4372 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +010002 +Height +Orbit height +Deprecated + + +4373 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +304036 +Cloud coverage +Deprecated + + +4374 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +002152 +Satellite instrument used in data processing +Deprecated + + +4375 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +002167 +Radiance computational method +Deprecated + + +4376 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +101011 +Replicate 1 descriptor 11 times +Deprecated + + +4377 +10 +Vertical sounding sequences (satellite data) +310027 +(All sky radiance product main sequence) +304035 +All sky radiance data +Deprecated + + +4378 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +301071 +Satellite identifier/Generating resolution +Product information +Operational + + +4379 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +301011 +Year, month, day +Operational + + +4380 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +301013 +Hour, minute, second +Operational + + +4381 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +301021 +Latitude/longitude (high accuracy) +Operational + + +4382 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +030021 +Number of pixels per row +Operational + + +4383 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +030022 +Number of pixels per column +Operational + + +4384 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +010002 +Height +Orbit height +Operational + + +4385 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +304036 +Cloud coverage +Operational + + +4386 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +002152 +Satellite instrument used in data processing +Operational + + +4387 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +002167 +Radiance computational method +Operational + + +4388 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +101011 +Replicate 1 descriptor 11 times +Operational + + +4389 +10 +Vertical sounding sequences (satellite data) +310028 +(All sky radiance product main sequence) +304037 +All sky radiance data +Operational + + +4390 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +110000 +Delayed replication of 10 descriptors +Operational + + +4391 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +031001 +Delayed descriptor replication factor +Operational + + +4392 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +201138 +Change data width +Operational + + +4393 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +202130 +Change scale +Operational + + +4394 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +007004 +Pressure +Operational + + +4395 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +007004 +Pressure +Operational + + +4396 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +202000 +Change scale +Cancel +Operational + + +4397 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +201000 +Change data width +Cancel +Operational + + +4398 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +015020 +Integrated ozone density +Operational + + +4399 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +010002 +Height +Operational + + +4400 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +012101 +Temperature/air temperature +Operational + + +4401 +10 +Vertical sounding sequences (satellite data) +310029 +(Layer, ozone, height, temperature and water vapour) +013098 +Integrated water vapour density +Operational + + +4402 +10 +Vertical sounding sequences (satellite data) +310030 +(MIPAS or GOMOS instruments reporting) +310022 +Satellite identifier, instrument and product type +Operational + + +4403 +10 +Vertical sounding sequences (satellite data) +310030 +(MIPAS or GOMOS instruments reporting) +301011 +Year, month, day +Operational + + +4404 +10 +Vertical sounding sequences (satellite data) +310030 +(MIPAS or GOMOS instruments reporting) +301013 +Hour, minute, second +Operational + + +4405 +10 +Vertical sounding sequences (satellite data) +310030 +(MIPAS or GOMOS instruments reporting) +301021 +Latitude/longitude (high accuracy) +Operational + + +4406 +10 +Vertical sounding sequences (satellite data) +310030 +(MIPAS or GOMOS instruments reporting) +304034 +Latitude/longitude, solar elevation, number of layers +Operational + + +4407 +10 +Vertical sounding sequences (satellite data) +310030 +(MIPAS or GOMOS instruments reporting) +310029 +Layer, ozone, height, temperature and water vapour +Operational + + +4408 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310051 +Satellite position and instrument temperatures +Operational + + +4409 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310052 +Satellite instrument type and position +AIRS +Operational + + +4410 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +101000 +Delayed replication of 1 descriptor +Operational + + +4411 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +031002 +Extended delayed descriptor replication factor +Operational + + +4412 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310053 +Satellite channels and brightness temperatures with expanded channel set +AIRS +Operational + + +4413 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +101004 +Replicate 1 descriptor 4 times +Operational + + +4414 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310054 +Satellite visible channels and albedos with expanded channel set +Operational + + +4415 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +020010 +Cloud cover (total) +Operational + + +4416 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310052 +Satellite instrument type and position +AMSU-A +Operational + + +4417 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +101015 +Replicate 1 descriptor 15 times +Operational + + +4418 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310053 +Satellite channels and brightness temperatures with expanded channel set +AMSU-A +Operational + + +4419 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310052 +Satellite instrument type and position +HSB +Operational + + +4420 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +101005 +Replicate 1 descriptor 5 times +Operational + + +4421 +10 +Vertical sounding sequences (satellite data) +310050 +(Satellite collocated 1C reports with 3 instruments) +310053 +Satellite channels and brightness temperatures with expanded channel set +HSB +Operational + + +4422 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +001007 +Satellite identifier +Operational + + +4423 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +005040 +Orbit number +Operational + + +4424 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +201133 +Change data width +Operational + + +4425 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +005041 +Scan line number +Operational + + +4426 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +201000 +Change data width +Cancel +Operational + + +4427 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +201132 +Change data width +Operational + + +4428 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +025070 +Major frame count +Operational + + +4429 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +201000 +Change data width +Cancel +Operational + + +4430 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +202126 +Change scale +Operational + + +4431 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +007001 +Height of station +Operational + + +4432 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +202000 +Change scale +Cancel +Operational + + +4433 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +007025 +Solar zenith angle +Operational + + +4434 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +005022 +Solar azimuth +Operational + + +4435 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +102009 +Replicate 2 descriptors 9 times +Operational + + +4436 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +002151 +Radiometer identifier +Operational + + +4437 +10 +Vertical sounding sequences (satellite data) +310051 +(Satellite position and instrument temperatures) +012064 +Instrument temperature +Operational + + +4438 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +002019 +Satellite instruments +Operational + + +4439 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +301011 +Year, month, day +Operational + + +4440 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +301012 +Hour, minute +Operational + + +4441 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +202131 +Change scale +Operational + + +4442 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +201138 +Change data width +Operational + + +4443 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +004006 +Second +Operational + + +4444 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +201000 +Change data width +Cancel +Operational + + +4445 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +202000 +Change scale +Cancel +Operational + + +4446 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +301021 +Latitude/longitude (high accuracy) +Operational + + +4447 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +007024 +Satellite zenith angle +Operational + + +4448 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +005021 +Bearing or azimuth +Operational + + +4449 +10 +Vertical sounding sequences (satellite data) +310052 +(Satellite instrument type and position) +005043 +Field of view number +Operational + + +4450 +10 +Vertical sounding sequences (satellite data) +310053 +(Satellite channels and brightness temperatures with expanded channel set) +201134 +Change data width +Operational + + +4451 +10 +Vertical sounding sequences (satellite data) +310053 +(Satellite channels and brightness temperatures with expanded channel set) +005042 +Channel number +Operational + + +4452 +10 +Vertical sounding sequences (satellite data) +310053 +(Satellite channels and brightness temperatures with expanded channel set) +201000 +Change data width +Cancel +Operational + + +4453 +10 +Vertical sounding sequences (satellite data) +310053 +(Satellite channels and brightness temperatures with expanded channel set) +025076 +Log10 of (temperature-radiance central wave number) for ATOVS +Operational + + +4454 +10 +Vertical sounding sequences (satellite data) +310053 +(Satellite channels and brightness temperatures with expanded channel set) +033032 +Channel quality flags for ATOVS +Operational + + +4455 +10 +Vertical sounding sequences (satellite data) +310053 +(Satellite channels and brightness temperatures with expanded channel set) +012163 +Brightness temperature +Scale: 2 +Operational + + +4456 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +201134 +Change data width +Operational + + +4457 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +005042 +Channel number +Operational + + +4458 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +201000 +Change data width +Cancel +Operational + + +4459 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +025076 +Log10 of (temperature-radiance central wave number) for ATOVS +Operational + + +4460 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +033032 +Channel quality flags for ATOVS +Operational + + +4461 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +201131 +Change data width +Operational + + +4462 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +202129 +Change scale +Operational + + +4463 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +102002 +Replicate 2 descriptors 2 times +Operational + + +4464 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +008023 +First-order statistics +Operational + + +4465 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +014027 +Albedo +Operational + + +4466 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +008023 +First-order statistics +Operational + + +4467 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +202000 +Change scale +Cancel +Operational + + +4468 +10 +Vertical sounding sequences (satellite data) +310054 +(Satellite visible channels and albedos with expanded channel set) +201000 +Change data width +Cancel +Operational + + +4469 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +310051 +Satellite position and instrument temperatures +Operational + + +4470 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +310052 +Satellite instrument type and position +AIRS +Operational + + +4471 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +102020 +Replicate 2 descriptors 20 times +Operational + + +4472 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +025076 +Log10 of (temperature-radiance central wave number) for ATOVS +Operational + + +4473 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +025052 +Log10 of principal components normalized fit to data +Operational + + +4474 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +101000 +Delayed replication of 1 descriptor +Operational + + +4475 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +031002 +Extended delayed descriptor replication factor +Operational + + +4476 +10 +Vertical sounding sequences (satellite data) +310055 +(Satellite radiance/channel principal components) +025050 +Principal component score +Satellite radiance +Operational + + +4477 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +001007 +Satellite identifier +Operational + + +4478 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +001033 +Identification of originating/generating centre +Operational + + +4479 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +002019 +Satellite instruments +Operational + + +4480 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +002020 +Satellite classification +Operational + + +4481 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +301011 +Year, month, day +Operational + + +4482 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +301012 +Hour, minute +Operational + + +4483 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +207003 +Increase scale, reference value and data width +Operational + + +4484 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +004006 +Second +Operational + + +4485 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4486 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +304030 +Location of platform +Operational + + +4487 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4488 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +007024 +Satellite zenith angle +Operational + + +4489 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +005021 +Bearing or azimuth +Operational + + +4490 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +007025 +Solar zenith angle +Operational + + +4491 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +005022 +Solar azimuth +Operational + + +4492 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +008075 +Ascending/descending orbit qualifier +Operational + + +4493 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201133 +Change data width +Increase bit width +Operational + + +4494 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +005041 +Scan line number +Operational + + +4495 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201000 +Change data width +Cancel increase bit width +Operational + + +4496 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +005045 +Field of regard number +Operational + + +4497 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +005043 +Field of view number +Operational + + +4498 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +005040 +Orbit number +Operational + + +4499 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +010001 +Height of land surface +Operational + + +4500 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201129 +Change data width +Increase bit width +Operational + + +4501 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +007002 +Height or altitude +Operational + + +4502 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201000 +Change data width +Cancel increase bit width +Operational + + +4503 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +202127 +Change scale +Increase scale +Operational + + +4504 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201125 +Change data width +Increase bit width +Operational + + +4505 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +021166 +Land fraction +Operational + + +4506 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201000 +Change data width +Cancel increase bit width +Operational + + +4507 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +202000 +Change scale +Cancel increase scale +Operational + + +4508 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +008012 +Land/sea qualifier +Operational + + +4509 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +020010 +Cloud cover (total) +Operational + + +4510 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +020014 +Height of top of cloud +Operational + + +4511 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +002165 +Radiance type flags +Operational + + +4512 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +033075 +Scan-level quality flags +Operational + + +4513 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +107003 +Replicate 7 descriptors 3 times +Operational + + +4514 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +008076 +Type of band +Operational + + +4515 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +006029 +Wave number +Start of range +Operational + + +4516 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +006029 +Wave number +End of range +Operational + + +4517 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +025140 +Start channel +Operational + + +4518 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +025141 +End channel +Operational + + +4519 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +033076 +Calibration quality flags +Operational + + +4520 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +033077 +Field-of-view quality flags +Operational + + +4521 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +008076 +Type of band +Set to missing (cancel) +Operational + + +4522 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +033078 +Geolocation quality +Operational + + +4523 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +033003 +Quality information +Operational + + +4524 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +104000 +Delayed replication of 4 descriptors +Operational + + +4525 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +031002 +Extended delayed descriptor replication factor +Operational + + +4526 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201133 +Change data width +Increase bit width +Operational + + +4527 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +005042 +Channel number +Operational + + +4528 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +201000 +Change data width +Cancel increase bit width +Operational + + +4529 +10 +Vertical sounding sequences (satellite data) +310060 +(CrIS (Cross-Track Infrared Sounder) radiance data) +014044 +Channel radiance +Operational + + +4530 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +001007 +Satellite identifier +Operational + + +4531 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +001033 +Identification of originating/generating centre +Operational + + +4532 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +001034 +Identification of originating/generating sub-centre +Operational + + +4533 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +002019 +Satellite instruments +Operational + + +4534 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +002020 +Satellite classification +Operational + + +4535 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +301011 +Year, month, day +Operational + + +4536 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +301012 +Hour, minute +Operational + + +4537 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +207003 +Increase scale, reference value and data width +Operational + + +4538 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +004006 +Second +Operational + + +4539 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4540 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +005040 +Orbit number +Operational + + +4541 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +005041 +Scan line number +Operational + + +4542 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +005043 +Field of view number +Operational + + +4543 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +033079 +Granule level quality flags +Operational + + +4544 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +033080 +Scan level quality flags +Operational + + +4545 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +033078 +Geolocation quality +Operational + + +4546 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4547 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +201129 +Change data width +Increase bit width +Operational + + +4548 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +007002 +Height or altitude +Operational + + +4549 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +201000 +Change data width +Cancel increase bit width +Operational + + +4550 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +007024 +Satellite zenith angle +Operational + + +4551 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +005021 +Bearing or azimuth +Operational + + +4552 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +007025 +Solar zenith angle +Operational + + +4553 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +005022 +Solar azimuth +Operational + + +4554 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +025075 +Satellite antenna corrections version number +Operational + + +4555 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +111000 +Delayed replication of 11 descriptors +Operational + + +4556 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +031002 +Extended delayed descriptor replication factor +Operational + + +4557 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +005042 +Channel number +Operational + + +4558 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +202131 +Change scale +Increase scale by 3 +Operational + + +4559 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +002153 +Satellite channel centre frequency +Operational + + +4560 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +002154 +Satellite channel band width +Operational + + +4561 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +202000 +Change scale +Cancel increase scale +Operational + + +4562 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +002104 +Antenna polarization +Operational + + +4563 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +012066 +Antenna temperature +Operational + + +4564 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +012163 +Brightness temperature +Operational + + +4565 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +012158 +Noise-equivalent delta temperature while viewing cold target +Operational + + +4566 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +012159 +Noise-equivalent delta temperature while viewing warm target +Operational + + +4567 +10 +Vertical sounding sequences (satellite data) +310061 +(ATMS (Advanced Technology Microwave Sounder) data) +033081 +Channel data quality flags +Operational + + +4568 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +001007 +Satellite identifier +Operational + + +4569 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +001033 +Identification of originating/generating centre +Operational + + +4570 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +001034 +Identification of originating/generating sub-centre +Operational + + +4571 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +002019 +Satellite instruments +Operational + + +4572 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +002020 +Satellite classification +Operational + + +4573 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +301011 +Year, month, day +Operational + + +4574 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +301012 +Hour, minute +Operational + + +4575 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +207003 +Increase scale, reference value and data width +Operational + + +4576 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +004006 +Second +Operational + + +4577 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4578 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +005040 +Orbit number +Operational + + +4579 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +201133 +Change data width +Increase bit width +Operational + + +4580 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +005041 +Scan line number +Operational + + +4581 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +005043 +Field of view number +Operational + + +4582 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +201000 +Change data width +Cancel increase bit width +Operational + + +4583 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +008076 +Type of band +Operational + + +4584 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +033082 +Geolocation quality flags +Operational + + +4585 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4586 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +201129 +Change data width +Increase bit width +Operational + + +4587 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +007002 +Height or altitude +Operational + + +4588 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +201000 +Change data width +Cancel increase bit width +Operational + + +4589 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +007024 +Satellite zenith angle +Operational + + +4590 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +005021 +Bearing or azimuth +Operational + + +4591 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +007025 +Solar zenith angle +Operational + + +4592 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +005022 +Solar azimuth +Operational + + +4593 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +008072 +Pixel(s) type +Operational + + +4594 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +008029 +Surface type +Operational + + +4595 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +105000 +Delayed replication of 5 descriptors +Operational + + +4596 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +031002 +Extended delayed descriptor replication factor +Operational + + +4597 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +005042 +Channel number +Operational + + +4598 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +002155 +Satellite channel wavelength +Operational + + +4599 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +033083 +Radiance data quality flags +Operational + + +4600 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +014043 +Channel radiance +Operational + + +4601 +10 +Vertical sounding sequences (satellite data) +310062 +(VIIRS (Visible/Infrared Imager Radiometer Suite) data) +015042 +Reflectance +Operational + + +4602 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +001007 +Satellite identifier +Operational + + +4603 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +001033 +Identification of originating/generating centre +Operational + + +4604 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +001034 +Identification of originating/generating sub-centre +Operational + + +4605 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +002019 +Satellite instruments +Operational + + +4606 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +002020 +Satellite classification +Operational + + +4607 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +301011 +Year, month, day +Operational + + +4608 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +301012 +Hour, minute +Operational + + +4609 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +207003 +Increase scale, reference value and data width +Operational + + +4610 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +004006 +Second +Operational + + +4611 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4612 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +005040 +Orbit number +Operational + + +4613 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +201133 +Change data width +Increase bit width +Operational + + +4614 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +005041 +Scan line number +Operational + + +4615 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +005043 +Field of view number +Operational + + +4616 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +201000 +Change data width +Cancel increase bit width +Operational + + +4617 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +033082 +Geolocation quality flags +Operational + + +4618 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4619 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +201129 +Change data width +Increase bit width +Operational + + +4620 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +007002 +Height or altitude +Operational + + +4621 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +201000 +Change data width +Cancel increase bit width +Operational + + +4622 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +007024 +Satellite zenith angle +Operational + + +4623 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +005021 +Bearing or azimuth +Operational + + +4624 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +007025 +Solar zenith angle +Operational + + +4625 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +005022 +Solar azimuth +Operational + + +4626 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +008075 +Ascending/descending orbit qualifier +Operational + + +4627 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +008013 +Day/night qualifier +Operational + + +4628 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +008072 +Pixel(s) type +Operational + + +4629 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +033084 +Pixel level quality flags +Operational + + +4630 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +007062 +Depth below sea/water surface +Operational + + +4631 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +033086 +Quality of pixel level retrieval +Operational + + +4632 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +022043 +Sea/water temperature +Operational + + +4633 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +007062 +Depth below sea/water surface +Top of layer +Operational + + +4634 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +007062 +Depth below sea/water surface +Bottom of layer +Operational + + +4635 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +033086 +Quality of pixel level retrieval +Operational + + +4636 +10 +Vertical sounding sequences (satellite data) +310063 +(SST (Sea-surface temperature) data) +022043 +Sea/water temperature +Operational + + +4637 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +001007 +Satellite identifier +Operational + + +4638 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +001033 +Identification of originating/generating centre +Operational + + +4639 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +001034 +Identification of originating/generating sub-centre +Operational + + +4640 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +002019 +Satellite instruments +Operational + + +4641 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +002020 +Satellite classification +Operational + + +4642 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +301011 +Year, month, day +Operational + + +4643 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +301012 +Hour, minute +Operational + + +4644 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +207003 +Increase scale, reference value and data width +Operational + + +4645 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +004006 +Second +Operational + + +4646 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4647 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +005040 +Orbit number +Operational + + +4648 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +201133 +Change data width +Operational + + +4649 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +005041 +Scan line number +Operational + + +4650 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +005043 +Field of view number +Operational + + +4651 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +201000 +Change data width +Cancel +Operational + + +4652 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +033082 +Geolocation quality flags +Operational + + +4653 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4654 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +201129 +Change data width +Operational + + +4655 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +007002 +Height or altitude +Operational + + +4656 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +201000 +Change data width +Cancel +Operational + + +4657 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +007024 +Satellite zenith angle +Operational + + +4658 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +005021 +Bearing or azimuth +Operational + + +4659 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +007025 +Solar zenith angle +Operational + + +4660 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +005022 +Solar azimuth +Operational + + +4661 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +008075 +Ascending/descending orbit qualifier +Operational + + +4662 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +008029 +Surface type +Operational + + +4663 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +008046 +Atmospheric chemical or physical constituent type +Operational + + +4664 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +033085 +Aerosol optical thickness quality flags +Operational + + +4665 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +033086 +Quality of pixel level retrieval +Operational + + +4666 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +015049 +Aerosol Angstrom wavelength exponent +Operational + + +4667 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +033086 +Quality of pixel level retrieval +Operational + + +4668 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +102011 +Replicate 2 descriptors 11 times +Operational + + +4669 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +002155 +Satellite channel wavelength +Operational + + +4670 +10 +Vertical sounding sequences (satellite data) +310064 +(AOT (Aerosol optical thickness) data) +015062 +Aerosol optical thickness +Operational + + +4671 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +001007 +Satellite identifier +Operational + + +4672 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +001033 +Identification of originating/generating centre +Operational + + +4673 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +001034 +Identification of originating/generating sub-centre +Operational + + +4674 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +002019 +Satellite instruments +Operational + + +4675 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +002020 +Satellite classification +Operational + + +4676 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +301011 +Year, month, day +Operational + + +4677 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +301012 +Hour, minute +Operational + + +4678 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207003 +Increase scale, reference value and data width +Operational + + +4679 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +004006 +Second +Operational + + +4680 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4681 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +005040 +Orbit number +Operational + + +4682 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +033082 +Geolocation quality flags +Operational + + +4683 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4684 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +201129 +Change data width +Operational + + +4685 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +007002 +Height or altitude +Operational + + +4686 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +201000 +Change data width +Cancel +Operational + + +4687 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +007024 +Satellite zenith angle +Operational + + +4688 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +005021 +Bearing or azimuth +Operational + + +4689 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +007025 +Solar zenith angle +Operational + + +4690 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +005022 +Solar azimuth +Operational + + +4691 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +008075 +Ascending/descending orbit qualifier +Operational + + +4692 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +033071 +Profile ozone quality +Operational + + +4693 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +033070 +Total ozone quality +Operational + + +4694 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +020021 +Type of precipitation +Operational + + +4695 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +015045 +Sulphur dioxide +Operational + + +4696 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +015046 +Volcano contamination index +Operational + + +4697 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +008065 +Sun-glint indicator +Operational + + +4698 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +033087 +Extent of satellite within South Atlantic anomaly +Operational + + +4699 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +008003 +Vertical significance (satellite observations) +Operational + + +4700 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +010004 +Pressure +Operational + + +4701 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +008003 +Vertical significance (satellite observations) +Operational + + +4702 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207002 +Increase scale, reference value and data width +Operational + + +4703 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +015001 +Total ozone +Operational + + +4704 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4705 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +105012 +Replicate 5 descriptors 12 times +Operational + + +4706 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +010040 +Number of retrieved layers +Operational + + +4707 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +010004 +Pressure +Operational + + +4708 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207003 +Increase scale, reference value and data width +Operational + + +4709 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +015005 +Ozone p +Operational + + +4710 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4711 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +008046 +Atmospheric chemical or physical constituent type +Operational + + +4712 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +107019 +Replicate 7 descriptors 19 times +Operational + + +4713 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +010040 +Number of retrieved layers +Operational + + +4714 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +010004 +Pressure +Operational + + +4715 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +008090 +Decimal scale of following significands +Operational + + +4716 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207006 +Increase scale, reference value and data width +Operational + + +4717 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +015008 +Significand of volumetric mixing ratio +Operational + + +4718 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4719 +10 +Vertical sounding sequences (satellite data) +310065 +(OMPS (Ozone mapping and profiler suite) nadir profile data) +008090 +Decimal scale of following significands +Set to missing (cancel) +Operational + + +4720 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +001007 +Satellite identifier +Operational + + +4721 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +001033 +Identification of originating/generating centre +Operational + + +4722 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +001034 +Identification of originating/generating sub-centre +Operational + + +4723 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +002019 +Satellite instruments +Operational + + +4724 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +002020 +Satellite classification +Operational + + +4725 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +301011 +Year, month, day +Operational + + +4726 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +301012 +Hour, minute +Operational + + +4727 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207003 +Increase scale, reference value and data width +Operational + + +4728 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +004006 +Second +Operational + + +4729 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4730 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +005040 +Orbit number +Operational + + +4731 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +033082 +Geolocation quality flags +Operational + + +4732 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +301021 +Latitude/longitude (high accuracy) +Operational + + +4733 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +201129 +Change data width +Operational + + +4734 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +007002 +Height or altitude +Operational + + +4735 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +201000 +Change data width +Cancel +Operational + + +4736 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +007024 +Satellite zenith angle +Operational + + +4737 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +005021 +Bearing or azimuth +Operational + + +4738 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +007025 +Solar zenith angle +Operational + + +4739 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +005022 +Solar azimuth +Operational + + +4740 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +008075 +Ascending/descending orbit qualifier +Operational + + +4741 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +020081 +Cloud amount in segment +Cloud fraction +Operational + + +4742 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207004 +Increase scale, reference value and data width +Operational + + +4743 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +015030 +Aerosol contamination index +Operational + + +4744 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4745 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +020065 +Snow cover +Operational + + +4746 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +015041 +Sulphur dioxide index +Operational + + +4747 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +033086 +Quality of pixel level retrieval +Operational + + +4748 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +033087 +Extent of satellite within South Atlantic anomaly +Operational + + +4749 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +033088 +Ozone total column quality flag +Operational + + +4750 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +008003 +Vertical significance (satellite observations) += 0 Surface +Operational + + +4751 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207001 +Increase scale, reference value and data width +Operational + + +4752 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +007004 +Pressure +Operational + + +4753 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4754 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +4755 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207002 +Increase scale, reference value and data width +Operational + + +4756 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +015001 +Total ozone +Operational + + +4757 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4758 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +008003 +Vertical significance (satellite observations) += 2 Cloud top +Operational + + +4759 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +033042 +Type of limit represented by following value += 0 Exclusive lower limit (>) +Operational + + +4760 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207001 +Increase scale, reference value and data width +Operational + + +4761 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +007004 +Pressure +Cloud top pressure +Operational + + +4762 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4763 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207002 +Increase scale, reference value and data width +Operational + + +4764 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +015001 +Total ozone +Below cloud +Operational + + +4765 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4766 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +4767 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +001032 +Generating application += 0 First guess | Defined by local generating centre +Operational + + +4768 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207002 +Increase scale, reference value and data width +Operational + + +4769 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +015001 +Total ozone +First guess total column ozone +Operational + + +4770 +10 +Vertical sounding sequences (satellite data) +310066 +(OMPS (Ozone mapping and profiler suite) total column data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +4771 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Processing information +001033 +Identification of originating/generating centre +(see Note 2) +Operational + + +4772 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Processing information +001034 +Identification of originating/generating sub-centre +Operational + + +4773 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Processing information +025061 +Software identification and version number +Operational + + +4774 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Processing information +025062 +Database identification +Operational + + +4775 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Satellite/instrument identification +001007 +Satellite identifier +Operational + + +4776 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Satellite/instrument identification +002153 +Satellite channel centre frequency +Operational + + +4777 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Satellite/instrument identification +001012 +Direction of motion of moving observing platform +Operational + + +4778 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Satellite/instrument identification +201138 +Change data width +Operational + + +4779 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Satellite/instrument identification +002026 +Cross-track resolution +Operational + + +4780 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Satellite/instrument identification +002027 +Along-track resolution +Operational + + +4781 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Satellite/instrument identification +201000 +Cancel change data width +Operational + + +4782 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Methods +002028 +Segment size at nadir in x-direction +Target box size +Operational + + +4783 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Methods +002029 +Segment size at nadir in y-direction +Target box size +Operational + + +4784 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Methods +002161 +Wind processing method +Operational + + +4785 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Methods +002164 +Tracer correlation method +Operational + + +4786 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Methods +002023 +Satellite-derived wind computation method +Operational + + +4787 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Methods +008012 +Land/sea qualifier +Operational + + +4788 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Methods +008013 +Day/night qualifier +Operational + + +4789 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +001124 +Grid point identifier +Operational + + +4790 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +005001 +Latitude (high accuracy) +Operational + + +4791 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +006001 +Longitude (high accuracy) +Operational + + +4792 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +004001 +Year +Operational + + +4793 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +004002 +Month +Operational + + +4794 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +004003 +Day +Operational + + +4795 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +004004 +Hour +Operational + + +4796 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +004005 +Minute +Operational + + +4797 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +004006 +Second +Operational + + +4798 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +004086 +Long time period or displacement +Seconds +Operational + + +4799 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +011001 +Wind direction +Operational + + +4800 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +011002 +Wind speed +Operational + + +4801 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +011003 +u-component +Operational + + +4802 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +011004 +v-component +Operational + + +4803 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +002162 +Extended height assignment method +Operational + + +4804 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +007004 +Pressure +Operational + + +4805 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +012001 +Temperature/air temperature +Operational + + +4806 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +020014 +Height of top of cloud +Operational + + +4807 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +007024 +Satellite zenith angle +Operational + + +4808 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +001023 +Observation sequence number +Operational + + +4809 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +104000 +Delayed replication of 4 descriptors +Operational + + +4810 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +031001 +Delayed descriptor replication factor +Operational + + +4811 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +002162 +Extended height assignment method +Operational + + +4812 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +007004 +Pressure +Operational + + +4813 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +012001 +Temperature/air temperature +Operational + + +4814 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV data +020014 +Height of top of cloud +Operational + + +4815 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +113000 +Delayed replication of 13 descriptors +Operational + + +4816 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +031001 +Delayed descriptor replication factor +Operational + + +4817 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +004086 +Long time period or displacement +Seconds +Operational + + +4818 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +002020 +Satellite classification +Operational + + +4819 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +001007 +Satellite identifier +Operational + + +4820 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +002019 +Satellite instruments +Operational + + +4821 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +005042 +Channel number +Operational + + +4822 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +002153 +Satellite channel centre frequency +Operational + + +4823 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +005040 +Orbit number +Operational + + +4824 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +007024 +Satellite zenith angle +Operational + + +4825 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +005021 +Bearing or azimuth +Operational + + +4826 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +002162 +Extended height assignment method +Operational + + +4827 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +007004 +Pressure +Operational + + +4828 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +012001 +Temperature/air temperature +Operational + + +4829 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Image information (for each image used) +020014 +Height of top of cloud +Operational + + +4830 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +119000 +Delayed replication of 19 descriptors +Operational + + +4831 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +031001 +Delayed descriptor replication factor +Operational + + +4832 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +004086 +Long time period or displacement +Seconds +Operational + + +4833 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +004086 +Long time period or displacement +Seconds +Operational + + +4834 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +005001 +Latitude (high accuracy) +Operational + + +4835 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +006001 +Longitude (high accuracy) +Operational + + +4836 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011003 +u-component +Operational + + +4837 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011004 +v-component +Operational + + +4838 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011113 +Tracking correlation of vector +Operational + + +4839 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +025148 +Coefficient of variation +Operational + + +4840 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +103000 +Delayed replication of 3 descriptors +Operational + + +4841 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +031001 +Delayed descriptor replication factor +Operational + + +4842 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +008023 +First order statistics +Operational + + +4843 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011003 +u-component +Operational + + +4844 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011004 +v-component +Operational + + +4845 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +008023 +First order statistics +Set to missing (cancel) +Operational + + +4846 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +103000 +Delayed replication of 3 descriptors +Operational + + +4847 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +031001 +Delayed descriptor replication factor +Operational + + +4848 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +020111 +x-axis error ellipse major component +Operational + + +4849 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +020112 +y-axis error ellipse minor component +Operational + + +4850 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +020114 +Angle of x-axis in error ellipse +Operational + + +4851 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +001033 +Identification of originating/generating centre +Operational + + +4852 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +008021 +Time significance += 27 First guess +Operational + + +4853 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +011095 +u-component of the model wind vector +Operational + + +4854 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +011096 +v-component of the model wind vector +Operational + + +4855 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +007004 +Pressure +Operational + + +4856 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +008021 +Time significance += 4 Forecast +Operational + + +4857 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +011095 +u-component of the model wind vector +Operational + + +4858 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +011096 +v-component of the model wind vector +Operational + + +4859 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +007004 +Pressure +Operational + + +4860 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +008021 +Time significance +Set to missing (cancel) +Operational + + +4861 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +008086 +Vertical significance for NWP += 10 Level of best fit +Operational + + +4862 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +011095 +u-component of the model wind vector +Operational + + +4863 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +011096 +v-component of the model wind vector +Operational + + +4864 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +007004 +Pressure +Operational + + +4865 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Corresponding forecast data +008086 +Vertical significance for NWP +Set to missing (cancel) +Operational + + +4866 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +102004 +Replicate 2 descriptors 4 times +Operational + + +4867 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +001032 +Generating application +Operational + + +4868 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +033007 +Per cent confidence +Operational + + +4869 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +008092 +Measurement uncertainty expression += 0 Standard uncertainty +Operational + + +4870 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +011003 +u-component +Operational + + +4871 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +011004 +v-component +Operational + + +4872 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +007004 +Pressure +Operational + + +4873 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +008092 +Measurement uncertainty expression +Set to missing (cancel) +Operational + + +4874 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Final AMV quality +033066 +AMV quality flag +Operational + + +4875 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020081 +Cloud amount in segment +Operational + + +4876 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020012 +Cloud type +Operational + + +4877 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020056 +Cloud phase +Operational + + +4878 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +117000 +Delayed replication of 17 descriptors +Operational + + +4879 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +031001 +Delayed descriptor replication factor +Operational + + +4880 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008023 +First order statistics +Operational + + +4881 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020016 +Pressure at top of cloud +Operational + + +4882 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008092 +Measurement uncertainty expression += 0 Standard uncertainty +Operational + + +4883 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008003 +Vertical significance (satellite observations) += 2 Cloud top +Operational + + +4884 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +012001 +Temperature/air temperature +Operational + + +4885 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +4886 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020016 +Pressure at top of cloud +Operational + + +4887 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008092 +Measurement uncertainty expression +Set to missing (cancel) +Operational + + +4888 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +025149 +Optimal estimation cost +Operational + + +4889 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020016 +Pressure at top of cloud +Operational + + +4890 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020014 +Height of top of cloud +Operational + + +4891 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +013093 +Cloud optical thickness +Operational + + +4892 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +013109 +Ice/liquid water path +Operational + + +4893 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +040038 +Cloud particle size +Operational + + +4894 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008011 +Meteorological feature += 12 Cloud +Operational + + +4895 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +014050 +Emissivity +Operational + + +4896 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +4897 +10 +Vertical sounding sequences (satellite data) +310067 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008023 +First order statistics +Set to missing (cancel) +Operational + + +4898 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +008070 +Vertical sounding product qualifier +Operational + + +4899 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +001033 +Identification of originating/generating centre +Operational + + +4900 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +001034 +Identification of originating/generating sub-centre +Operational + + +4901 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +001007 +Satellite identifier +Operational + + +4902 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +002019 +Satellite instruments +Operational + + +4903 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +012064 +Instrument temperature +Operational + + +4904 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +005040 +Orbit number +Operational + + +4905 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201136 +Change data width +Operational + + +4906 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +005041 +Scan line number +Operational + + +4907 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201000 +Change data width +Cancel +Operational + + +4908 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +005043 +Field of view number +Operational + + +4909 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +301011 +Year, month, day +Operational + + +4910 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +301012 +Hour, minute +Operational + + +4911 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201138 +Change data width +Operational + + +4912 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202131 +Change scale +Operational + + +4913 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +004006 +Second +Operational + + +4914 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202000 +Change scale +Cancel +Operational + + +4915 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201000 +Change data width +Cancel +Operational + + +4916 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +005001 +Latitude (high accuracy) +Operational + + +4917 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +006001 +Longitude (high accuracy) +Operational + + +4918 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202126 +Change scale +Operational + + +4919 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +007001 +Height of station +Operational + + +4920 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202000 +Change scale +Cancel +Operational + + +4921 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +010007 +Height +Operational + + +4922 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +007024 +Satellite zenith angle +Operational + + +4923 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +005021 +Bearing or azimuth +Operational + + +4924 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +007025 +Solar zenith angle +Operational + + +4925 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +005022 +Solar azimuth +Operational + + +4926 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +013040 +Surface flag +Operational + + +4927 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +012101 +Temperature/air temperature +Land or ocean surface temperature +Operational + + +4928 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201131 +Change data width +Operational + + +4929 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202129 +Change scale +Operational + + +4930 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +011011 +Wind direction at 10 m +Ocean surface wind +Operational + + +4931 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202000 +Change scale +Cancel +Operational + + +4932 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201000 +Change data width +Cancel +Operational + + +4933 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201130 +Change data width +Operational + + +4934 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202129 +Change scale +Operational + + +4935 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +011012 +Wind speed at 10 m +Ocean surface wind +Operational + + +4936 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +202000 +Change scale +Cancel +Operational + + +4937 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +201000 +Change data width +Cancel +Operational + + +4938 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +020029 +Rain flag +Operational + + +4939 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +020010 +Cloud cover (total) +Operational + + +4940 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +020014 +Height of top of cloud +Operational + + +4941 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +013162 +Cloud liquid water +Operational + + +4942 +10 +Vertical sounding sequences (satellite data) +310068 +(VASS field of view variables) +014050 +Emissivity +Operational + + +4943 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +005042 +Channel number +Operational + + +4944 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +201139 +Change data width +Operational + + +4945 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +002155 +Satellite channel wavelength +Operational + + +4946 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +201000 +Change data width +Cancel +Operational + + +4947 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +025077 +Bandwidth correction coefficient 1 +Operational + + +4948 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +025078 +Bandwidth correction coefficient 2 +Operational + + +4949 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +033007 +Per cent confidence +Operational + + +4950 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +201132 +Change data width +Operational + + +4951 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +202129 +Change scale +Operational + + +4952 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +012063 +Brightness temperature +Operational + + +4953 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +202000 +Change scale +Cancel +Operational + + +4954 +10 +Vertical sounding sequences (satellite data) +310069 +(VASS channel variables) +201000 +Change data width +Cancel +Operational + + +4955 +10 +Vertical sounding sequences (satellite data) +310070 +(VASS MWTS report of FY-3) +310068 +VASS field of view variables +Operational + + +4956 +10 +Vertical sounding sequences (satellite data) +310070 +(VASS MWTS report of FY-3) +101013 +Replicate 1 descriptor 13 times +Operational + + +4957 +10 +Vertical sounding sequences (satellite data) +310070 +(VASS MWTS report of FY-3) +310069 +VASS channel variables +Operational + + +4958 +10 +Vertical sounding sequences (satellite data) +310071 +(VASS MWHS report of FY-3) +310068 +VASS field of view variables +Operational + + +4959 +10 +Vertical sounding sequences (satellite data) +310071 +(VASS MWHS report of FY-3) +101015 +Replicate 1 descriptor 15 times +Operational + + +4960 +10 +Vertical sounding sequences (satellite data) +310071 +(VASS MWHS report of FY-3) +310069 +VASS channel variables +Operational + + +4961 +10 +Vertical sounding sequences (satellite data) +310072 +(VASS IRAS report of FY-3) +310068 +VASS field of view variables +Operational + + +4962 +10 +Vertical sounding sequences (satellite data) +310072 +(VASS IRAS report of FY-3) +101026 +Replicate 1 descriptor 26 times +Operational + + +4963 +10 +Vertical sounding sequences (satellite data) +310072 +(VASS IRAS report of FY-3) +310069 +VASS channel variables +Operational + + +4964 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Processing information +001033 +Identification of originating/generating centre +Operational + + +4965 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Processing information +001034 +Identification of originating/generating sub-centre +Operational + + +4966 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Processing information +025061 +Software identification and version number +Operational + + +4967 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Processing information +025062 +Database identification +Operational + + +4968 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Satellite/instrument identification +001007 +Satellite identifier +Operational + + +4969 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Satellite/instrument identification +002153 +Satellite channel centre frequency +Operational + + +4970 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Satellite/instrument identification +001012 +Direction of motion of moving observing platform +Operational + + +4971 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Satellite/instrument identification +201138 +Change data width +Operational + + +4972 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Satellite/instrument identification +002026 +Cross-track resolution +Operational + + +4973 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Satellite/instrument identification +002027 +Along-track resolution +Operational + + +4974 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Satellite/instrument identification +201000 +Change data width +Cancel +Operational + + +4975 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Methods +002028 +Segment size at nadir in x-direction +Target box size +Operational + + +4976 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Methods +002029 +Segment size at nadir in y-direction +Target box size +Operational + + +4977 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Methods +002161 +Wind processing method +Operational + + +4978 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Methods +002164 +Tracer correlation method +Operational + + +4979 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Methods +002023 +Satellite derived wind computation method +Operational + + +4980 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Methods +008012 +Land/sea qualifier +Operational + + +4981 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Methods +008013 +Day/night qualifier +Operational + + +4982 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +001124 +Grid point identifier +Operational + + +4983 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +005001 +Latitude (high accuracy) +Operational + + +4984 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +006001 +Longitude (high accuracy) +Operational + + +4985 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +004001 +Year +Operational + + +4986 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +004002 +Month +Operational + + +4987 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +004003 +Day +Operational + + +4988 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +004004 +Hour +Operational + + +4989 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +004005 +Minute +Operational + + +4990 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +004006 +Second +Operational + + +4991 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +004086 +Long time period or displacement +Seconds +Operational + + +4992 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +002162 +Extended height assignment method +Operational + + +4993 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +007004 +Pressure +Operational + + +4994 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +011001 +Wind direction +Operational + + +4995 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +011002 +Wind speed +Operational + + +4996 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +011003 +u-component +Operational + + +4997 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +011004 +v-component +Operational + + +4998 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +012001 +Temperature/air temperature +Operational + + +4999 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +020014 +Height of top of cloud +Operational + + +5000 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +007024 +Satellite zenith angle +Operational + + +5001 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +001023 +Observation sequence number +Operational + + +5002 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +104000 +Delayed replication of 4 descriptors +Operational + + +5003 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +031001 +Delayed descriptor replication factor +Operational + + +5004 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +002162 +Extended height assignment method +Operational + + +5005 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +007004 +Pressure +Operational + + +5006 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +012001 +Temperature/air temperature +Operational + + +5007 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV data +020014 +Height of top of cloud +Operational + + +5008 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +113000 +Delayed replication of 13 descriptors +Operational + + +5009 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +031001 +Delayed descriptor replication factor +Operational + + +5010 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +004086 +Long time period or displacement +Seconds +Operational + + +5011 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +002020 +Satellite classification +Operational + + +5012 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +001007 +Satellite identifier +Operational + + +5013 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +002019 +Satellite instruments +Operational + + +5014 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +005042 +Channel number +Operational + + +5015 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +002153 +Satellite channel centre frequency +Operational + + +5016 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +005040 +Orbit number +Operational + + +5017 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +007024 +Satellite zenith angle +Operational + + +5018 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +005021 +Bearing or azimuth +Operational + + +5019 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +002162 +Extended height assignment method +Operational + + +5020 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +007004 +Pressure +Operational + + +5021 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +012001 +Temperature/air temperature +Operational + + +5022 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Image information (for each image used) +020014 +Height of top of cloud +Operational + + +5023 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +119000 +Delayed replication of 19 descriptors +Operational + + +5024 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +031001 +Delayed descriptor replication factor +Operational + + +5025 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +004086 +Long time period or displacement +Seconds +Operational + + +5026 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +004086 +Long time period or displacement +Seconds +Operational + + +5027 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +005001 +Latitude (high accuracy) +Operational + + +5028 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +006001 +Longitude (high accuracy) +Operational + + +5029 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011003 +u-component +Operational + + +5030 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011004 +v-component +Operational + + +5031 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011113 +Tracking correlation of vector +Operational + + +5032 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +025148 +Coefficient of variation +Operational + + +5033 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +103000 +Delayed replication of 3 descriptors +Operational + + +5034 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +031001 +Delayed descriptor replication factor +Operational + + +5035 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +008023 +First order statistics +Operational + + +5036 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011003 +u-component +Operational + + +5037 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +011004 +v-component +Operational + + +5038 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +008023 +First order statistics +Set to missing (cancel) +Operational + + +5039 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +103000 +Delayed replication of 3 descriptors +Operational + + +5040 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +031001 +Delayed descriptor replication factor +Operational + + +5041 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +020111 +x-axis error ellipse major component +Operational + + +5042 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +020112 +y-axis error ellipse minor component +Operational + + +5043 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Intermediate vectors (for each component vector) +020114 +Angle of x-axis in error ellipse +Operational + + +5044 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +001033 +Identification of originating/generating centre +Operational + + +5045 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +008021 +Time significance += 27 First guess +Operational + + +5046 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +007004 +Pressure +Operational + + +5047 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +011095 +u-component of the model wind vector +Operational + + +5048 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +011096 +v-component of the model wind vector +Operational + + +5049 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +008021 +Time significance += 4 Forecast +Operational + + +5050 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +007004 +Pressure +Operational + + +5051 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +011095 +u-component of the model wind vector +Operational + + +5052 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +011096 +v-component of the model wind vector +Operational + + +5053 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +008021 +Time significance +Set to missing (cancel) +Operational + + +5054 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +008086 +Vertical significance for NWP += 10 Level of best fit +Operational + + +5055 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +007004 +Pressure +Operational + + +5056 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +011095 +u-component of the model wind vector +Operational + + +5057 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +011096 +v-component of the model wind vector +Operational + + +5058 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Corresponding forecast data +008086 +Vertical significance for NWP +Set to missing (cancel) +Operational + + +5059 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +102004 +Replicate 2 descriptors 4 times +Operational + + +5060 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +001044 +Standard generating application +Operational + + +5061 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +033007 +Per cent confidence +Operational + + +5062 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +008092 +Measurement uncertainty expression += 0 Standard uncertainty +Operational + + +5063 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +007004 +Pressure +Operational + + +5064 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +011003 +u-component +Operational + + +5065 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +011004 +v-component +Operational + + +5066 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +008092 +Measurement uncertainty expression +Set to missing (cancel) +Operational + + +5067 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Final AMV quality +033066 +AMV quality flag +Operational + + +5068 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020081 +Cloud amount in segment +Operational + + +5069 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020012 +Cloud type +Operational + + +5070 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020056 +Cloud phase +Operational + + +5071 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +117000 +Delayed replication of 17 descriptors +Operational + + +5072 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +031001 +Delayed descriptor replication factor +Operational + + +5073 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008023 +First order statistics +Operational + + +5074 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020016 +Pressure at the top of cloud +Operational + + +5075 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008092 +Measurement uncertainty expression += 0 Standard uncertainty +Operational + + +5076 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008003 +Vertical significance (satellite observations) += 2 Cloud top +Operational + + +5077 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +012001 +Temperature/air temperature +Operational + + +5078 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008003 +Vertical significance (satellite observations) +Set to missing (cancel) +Operational + + +5079 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020016 +Pressure at the top of cloud +Operational + + +5080 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008092 +Measurement uncertainty expression +Set to missing (cancel) +Operational + + +5081 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +025149 +Optimal estimation cost +Operational + + +5082 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020016 +Pressure at the top of cloud +Operational + + +5083 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +020014 +Height of the top of cloud +Operational + + +5084 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +013093 +Cloud optical thickness +Operational + + +5085 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +013109 +Ice/liquid water path +Operational + + +5086 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +040038 +Cloud particle size +Operational + + +5087 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008011 +Meteorological feature += 12 Cloud +Operational + + +5088 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +014050 +Emissivity +Operational + + +5089 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +5090 +10 +Vertical sounding sequences (satellite data) +310077 +(Satellite-derived winds) +Cloud data and microphysics (refers to the nominal image used for height assignment) +008023 +First order statistics +Set to missing (cancel) +Operational + + +5091 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +301051 +Flight number, navigational system, date/time, location, phase of flight +ASDAR +Operational + + +5092 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +007002 +Height or altitude +Operational + + +5093 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +012001 +Temperature/air temperature +Operational + + +5094 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +011001 +Wind direction +Operational + + +5095 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +011002 +Wind speed +Operational + + +5096 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +011031 +Degree of turbulence +Operational + + +5097 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +011032 +Height of base of turbulence +Operational + + +5098 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +011033 +Height of top of turbulence +Operational + + +5099 +11 +Single level report sequences (conventional data) +311001 +(Aircraft reports) +020041 +Airframe icing +Operational + + +5100 +11 +Single level report sequences (conventional data) +311002 +(ACARS reports) +301065 +ACARS identification +Operational + + +5101 +11 +Single level report sequences (conventional data) +311002 +(ACARS reports) +301066 +ACARS location +Operational + + +5102 +11 +Single level report sequences (conventional data) +311002 +(ACARS reports) +311003 +ACARS standard reported variables +Operational + + +5103 +11 +Single level report sequences (conventional data) +311002 +(ACARS reports) +311004 +ACARS supplementary reported variables +Operational + + +5104 +11 +Single level report sequences (conventional data) +311003 +(ACARS standard reported variables) +010070 +Indicated aircraft altitude +Operational + + +5105 +11 +Single level report sequences (conventional data) +311003 +(ACARS standard reported variables) +011001 +Wind direction +Operational + + +5106 +11 +Single level report sequences (conventional data) +311003 +(ACARS standard reported variables) +011002 +Wind speed +Operational + + +5107 +11 +Single level report sequences (conventional data) +311003 +(ACARS standard reported variables) +012001 +Temperature/air temperature +Operational + + +5108 +11 +Single level report sequences (conventional data) +311003 +(ACARS standard reported variables) +013002 +Mixing ratio +Operational + + +5109 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +101000 +Delayed replication of 1 descriptor +Operational + + +5110 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +031000 +Short delayed descriptor replication factor +Operational + + +5111 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +011034 +Vertical gust velocity +Operational + + +5112 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +101000 +Delayed replication of 1 descriptor +Operational + + +5113 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +031000 +Short delayed descriptor replication factor +Operational + + +5114 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +011035 +Vertical gust acceleration +Operational + + +5115 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +101000 +Delayed replication of 1 descriptor +Operational + + +5116 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +031000 +Short delayed descriptor replication factor +Operational + + +5117 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +011075 +Mean turbulence intensity (eddy dissipation rate) +Operational + + +5118 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +101000 +Delayed replication of 1 descriptor +Operational + + +5119 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +031000 +Short delayed descriptor replication factor +Operational + + +5120 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +011076 +Peak turbulence intensity (eddy dissipation rate) +Operational + + +5121 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +101000 +Delayed replication of 1 descriptor +Operational + + +5122 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +031000 +Short delayed descriptor replication factor +Operational + + +5123 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +033025 +ACARS interpolated values indicator +Operational + + +5124 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +101000 +Delayed replication of 1 descriptor +Operational + + +5125 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +031000 +Short delayed descriptor replication factor +Operational + + +5126 +11 +Single level report sequences (conventional data) +311004 +(ACARS supplementary reported variables) +033026 +Moisture quality +Operational + + +5127 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +001008 +Aircraft registration number or other identification +Operational + + +5128 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +001023 +Observation sequence number +Operational + + +5129 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +301021 +Latitude/longitude (high accuracy) +Operational + + +5130 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +301011 +Year, month, day +Operational + + +5131 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +301013 +Hour, minute, second +Operational + + +5132 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +007010 +Flight level +Operational + + +5133 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +008009 +Detailed phase of flight +Operational + + +5134 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +011001 +Wind direction +Operational + + +5135 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +011002 +Wind speed +Operational + + +5136 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +011031 +Degree of turbulence +Operational + + +5137 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +011036 +Maximum derived equivalent vertical gust speed +Operational + + +5138 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +012101 +Temperature/air temperature +Operational + + +5139 +11 +Single level report sequences (conventional data) +311005 +(Standard AMDAR reports) +033025 +ACARS interpolated values indicator +Operational + + +5140 +11 +Single level report sequences (conventional data) +311006 +(AMDAR data or aircraft data for one level without latitude/longitude) +007010 +Flight level +Operational + + +5141 +11 +Single level report sequences (conventional data) +311006 +(AMDAR data or aircraft data for one level without latitude/longitude) +011001 +Wind direction +Operational + + +5142 +11 +Single level report sequences (conventional data) +311006 +(AMDAR data or aircraft data for one level without latitude/longitude) +011002 +Wind speed +Operational + + +5143 +11 +Single level report sequences (conventional data) +311006 +(AMDAR data or aircraft data for one level without latitude/longitude) +002064 +Aircraft roll angle quality +Operational + + +5144 +11 +Single level report sequences (conventional data) +311006 +(AMDAR data or aircraft data for one level without latitude/longitude) +012101 +Temperature/air temperature +Operational + + +5145 +11 +Single level report sequences (conventional data) +311006 +(AMDAR data or aircraft data for one level without latitude/longitude) +012103 +Dewpoint temperature +Operational + + +5146 +11 +Single level report sequences (conventional data) +311007 +(Aircraft data for one level with latitude/longitude indicated) +007010 +Flight level +Operational + + +5147 +11 +Single level report sequences (conventional data) +311007 +(Aircraft data for one level with latitude/longitude indicated) +301021 +Latitude/longitude (high accuracy) +Operational + + +5148 +11 +Single level report sequences (conventional data) +311007 +(Aircraft data for one level with latitude/longitude indicated) +011001 +Wind direction +Operational + + +5149 +11 +Single level report sequences (conventional data) +311007 +(Aircraft data for one level with latitude/longitude indicated) +011002 +Wind speed +Operational + + +5150 +11 +Single level report sequences (conventional data) +311007 +(Aircraft data for one level with latitude/longitude indicated) +002064 +Aircraft roll angle quality +Operational + + +5151 +11 +Single level report sequences (conventional data) +311007 +(Aircraft data for one level with latitude/longitude indicated) +012101 +Temperature/air temperature +Operational + + +5152 +11 +Single level report sequences (conventional data) +311007 +(Aircraft data for one level with latitude/longitude indicated) +012103 +Dewpoint temperature +Operational + + +5153 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +001008 +Aircraft registration number or other identification +Operational + + +5154 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +301011 +Year, month, day +Operational + + +5155 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +301013 +Hour, minute, second +Operational + + +5156 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +301021 +Latitude/longitude (high accuracy) +Operational + + +5157 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +008004 +Phase of aircraft flight +Operational + + +5158 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +101000 +Delayed replication of 1 descriptor +Operational + + +5159 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +031001 +Delayed descriptor replication factor +Operational + + +5160 +11 +Single level report sequences (conventional data) +311008 +(Aircraft ascent/descent profile without latitude/longitude indicated at each level) +311006 +AMDAR data or aircraft data for one level without latitude/longitude +Operational + + +5161 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +001008 +Aircraft registration number or other identification +Operational + + +5162 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +301011 +Year, month, day +Operational + + +5163 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +301013 +Hour, minute, second +Operational + + +5164 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +301021 +Latitude/longitude (high accuracy) +Operational + + +5165 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +008004 +Phase of aircraft flight +Operational + + +5166 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +101000 +Delayed replication of 1 descriptor +Operational + + +5167 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +031001 +Delayed descriptor replication factor +Operational + + +5168 +11 +Single level report sequences (conventional data) +311009 +(Aircraft ascent/descent profile with latitude/longitude given for each level) +311007 +Aircraft data for one level with latitude/longitude indicated +Operational + + +5169 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +001008 +Aircraft registration number or other identification +Operational + + +5170 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +001023 +Observation sequence number +Operational + + +5171 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +001006 +Aircraft flight number +Operational + + +5172 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +001110 +Aircraft tail number +Operational + + +5173 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +001111 +Origination airport +Operational + + +5174 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +001112 +Destination airport +Operational + + +5175 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +204002 +Add associated field +2 bits long +Operational + + +5176 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031021 +Associated field significance += 8 Two bits quality information +Operational + + +5177 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +301011 +Year, month, day +Operational + + +5178 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +301013 +Hour, minute, second +Operational + + +5179 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +301021 +Latitude/longitude (high accuracy) +Operational + + +5180 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +007010 +Flight level +Pressure altitude +Operational + + +5181 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +010053 +Global navigation satellite system altitude +Operational + + +5182 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +008009 +Detailed phase of flight +Operational + + +5183 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011001 +Wind direction +Operational + + +5184 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011002 +Wind speed +Operational + + +5185 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +002064 +Aircraft roll angle quality +Operational + + +5186 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011100 +Aircraft true airspeed +Operational + + +5187 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011101 +Aircraft ground speed u-component +Operational + + +5188 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011102 +Aircraft ground speed v-component +Operational + + +5189 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011103 +Aircraft ground speed w-component +Operational + + +5190 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011104 +True heading of aircraft, ship or other mobile platform +True heading of aircraft +Operational + + +5191 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +012101 +Temperature/air temperature +Operational + + +5192 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +002170 +Aircraft humidity sensors +Operational + + +5193 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +201144 +Change data width +Operational + + +5194 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +202133 +Change scale +Operational + + +5195 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +013002 +Mixing ratio +Operational + + +5196 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +202000 +Change scale +Cancel +Operational + + +5197 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +201000 +Change data width +Cancel +Operational + + +5198 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +201135 +Change data width +Operational + + +5199 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +202130 +Change scale +Operational + + +5200 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +013003 +Relative humidity +Operational + + +5201 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +202000 +Change scale +Cancel +Operational + + +5202 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +201000 +Change data width +Cancel +Operational + + +5203 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +101000 +Delayed replication of 1 descriptor +Operational + + +5204 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031000 +Short delayed descriptor replication factor +Operational + + +5205 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +012103 +Dewpoint temperature +Operational + + +5206 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +033026 +Moisture quality +Operational + + +5207 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +101000 +Delayed replication of 1 descriptor +Operational + + +5208 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031000 +Short delayed descriptor replication factor +Operational + + +5209 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +020042 +Airframe icing present +Operational + + +5210 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +103000 +Delayed replication of 3 descriptors +Operational + + +5211 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031000 +Short delayed descriptor replication factor +Operational + + +5212 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +020043 +Peak liquid water content +Operational + + +5213 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +020044 +Average liquid water content +Operational + + +5214 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +020045 +Supercooled large droplet (SLD) conditions +Operational + + +5215 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +101000 +Delayed replication of 1 descriptor +Operational + + +5216 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031000 +Short delayed descriptor replication factor +Operational + + +5217 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +033025 +ACARS interpolated values indicator +Operational + + +5218 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +103000 +Delayed replication of 3 descriptors +Operational + + +5219 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031001 +Delayed descriptor replication factor +Operational + + +5220 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011075 +Mean turbulence intensity (eddy dissipation rate) +Operational + + +5221 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011076 +Peak turbulence intensity (eddy dissipation rate) +Operational + + +5222 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011039 +Extended time of occurrence of peak eddy dissipation rate +Operational + + +5223 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +102000 +Delayed replication of 2 descriptors +Operational + + +5224 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031000 +Short delayed descriptor replication factor +Operational + + +5225 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011037 +Turbulence index +EDR +Operational + + +5226 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011077 +Reporting interval or averaging time for eddy dissipation rate +Operational + + +5227 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +103000 +Delayed replication of 3 descriptors +Operational + + +5228 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031000 +Short delayed descriptor replication factor +Operational + + +5229 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011034 +Vertical gust velocity +Operational + + +5230 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011035 +Vertical gust acceleration +Operational + + +5231 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011036 +Maximum derived equivalent vertical gust speed +Operational + + +5232 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +204000 +Add associated field +Cancel +Operational + + +5233 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +119000 +Delayed replication of 19 descriptors +Operational + + +5234 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031001 +Delayed descriptor replication factor +Operational + + +5235 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +301011 +Year, month, day +Operational + + +5236 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +301013 +Hour, minute, second +Operational + + +5237 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +301021 +Latitude/longitude (high accuracy) +Operational + + +5238 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +007007 +Height +Operational + + +5239 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011105 +EDR algorithm version +Operational + + +5240 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +204007 +Add associated field +7 bits long +Operational + + +5241 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +031021 +Associated field significance += 7 Percentage confidence +Operational + + +5242 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011076 +Peak turbulence intensity (eddy dissipation rate) +Operational + + +5243 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011075 +Mean turbulence intensity (eddy dissipation rate) +Operational + + +5244 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +204000 +Add associated field +Cancel +Operational + + +5245 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011106 +Running minimum confidence +Operational + + +5246 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011107 +Maximum number bad inputs +Operational + + +5247 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011108 +Peak location +Operational + + +5248 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011109 +Number of good EDR +Operational + + +5249 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +012101 +Temperature/air temperature +Operational + + +5250 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011001 +Wind direction +Operational + + +5251 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +201130 +Change data width +Operational + + +5252 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +011084 +Wind speed +Operational + + +5253 +11 +Single level report sequences (conventional data) +311010 +(BUFR template for AMDAR, version 7) +201000 +Change data width +Cancel +Operational + + +5254 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +001023 +Observation sequence number +Operational + + +5255 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +008004 +Phase of aircraft flight +Operational + + +5256 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +301011 +Year, month, day +Operational + + +5257 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +301013 +Hour, minute, second +Operational + + +5258 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +005002 +Latitude (coarse accuracy) +Operational + + +5259 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +006002 +Longitude (coarse accuracy) +Operational + + +5260 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +007004 +Pressure +Operational + + +5261 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +011001 +Wind direction +Operational + + +5262 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +011002 +Wind speed +Operational + + +5263 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +012101 +Temperature/air temperature +Operational + + +5264 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +106000 +Delayed replication of 6 descriptors +Operational + + +5265 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +031001 +Delayed descriptor replication factor +Operational + + +5266 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +008046 +Atmospheric chemical or physical constituent type +Operational + + +5267 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +201139 +Change data width +20 bits long +Operational + + +5268 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +202126 +Change scale +Scale: 7 +Operational + + +5269 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +015026 +Concentration of pollutant (mol mol-1) +Operational + + +5270 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +202000 +Change scale +Cancel +Operational + + +5271 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +201000 +Change data width +Cancel +Operational + + +5272 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +106000 +Delayed replication of 6 descriptors +Operational + + +5273 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +031001 +Delayed descriptor replication factor +Operational + + +5274 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +008046 +Atmospheric chemical or physical constituent type +Operational + + +5275 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +201138 +Change data width +19 bits long +Operational + + +5276 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +202130 +Change scale +Scale: 11 +Operational + + +5277 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +015026 +Concentration of pollutant (mol mol-1) +Operational + + +5278 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +202000 +Change scale +Cancel +Operational + + +5279 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +201000 +Change data width +Cancel +Operational + + +5280 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +015052 +Log10 of number density of aerosol particles with diameter greater than 5 nm +Operational + + +5281 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +015053 +Log10 of number density of aerosol particles with diameter greater than 14 nm +Operational + + +5282 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +015054 +Log10 of number density of aerosol particles with diameter between 0.25 and 2.5 µm +Operational + + +5283 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +015055 +Non volatile aerosol ratio +Operational + + +5284 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +007004 +Pressure +Operational + + +5285 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +007004 +Pressure +Operational + + +5286 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +013099 +Log10 of integrated cloud particle density +Operational + + +5287 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +013100 +Log10 of integrated cloud particle area +Operational + + +5288 +11 +Single level report sequences (conventional data) +311011 +(IAGOS template for a single observation), version 2 +013101 +Log10 of integrated cloud particle volume +Operational + + +5289 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +301150 +WIGOS identifier +Operational + + +5290 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +001008 +Aircraft registration number or other identification +Operational + + +5291 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +001111 +Origination airport +To be reported in case of an ascent profile +Operational + + +5292 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +001112 +Destination airport +To be reported in case of an descent profile +Operational + + +5293 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +301011 +Year, month, day +Date/time and position of first level in profile (for ascent profile first report/take off, for descent profile last report/touch down) +Operational + + +5294 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +301013 +Hour, Min, second +Date/time and position of first level in profile (for ascent profile first report/take off, for descent profile last report/touch down) +Operational + + +5295 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +301021 +Latitude/Longitude +Date/time and position of first level in profile (for ascent profile first report/take off, for descent profile last report/touch down) +Operational + + +5296 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +008004 +Phase of flight +Ascent or descent profile +Operational + + +5297 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +110000 +Delayed replication of 10 descriptors +Operational + + +5298 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +031002 +Extended delayed descriptor replication factor +Number of levels following +Operational + + +5299 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +301011 +Year, month, day +Date of single level report +Operational + + +5300 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +301013 +Hour, Min, second +Time of single level report +Operational + + +5301 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +311007 +Aircraft data for one level with latitude/longitude indicated +Flight level = pressure altitude +Operational + + +5302 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +201144 +Change data width +Operational + + +5303 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +202133 +Change scale +Operational + + +5304 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +013002 +Mixing ratio +Originally measured value +Operational + + +5305 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +202000 +Cancel change scale +Operational + + +5306 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +201000 +Cancel change data width +Operational + + +5307 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +013003 +Relative humidity +Value derived from Mixing ratio, limited to ≤ 100% +Operational + + +5308 +11 +Single level report sequences (conventional data) +311012 +(BUFR template for aircraft ascent/descent profile with latitude and longitude given for each level) +(Aircraft ascent/descent profile data for one level with lat. long. Indicated) +033026 +Moisture quality +Code table +Operational + + +5309 +12 +Single level report sequences (satellite data) +312001 +301043 +Satellite identifier, wind computation method, date/time, location +Operational + + +5310 +12 +Single level report sequences (satellite data) +312001 +304001 +Cloud top pressure, temperature, wind +Operational + + +5311 +12 +Single level report sequences (satellite data) +312002 +301043 +Satellite identifier, wind computation method, date/time, location +Operational + + +5312 +12 +Single level report sequences (satellite data) +312002 +304002 +Cloud top pressure, wind +Operational + + +5313 +12 +Single level report sequences (satellite data) +312003 +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +5314 +12 +Single level report sequences (satellite data) +312003 +304003 +Surface temperature +Operational + + +5315 +12 +Single level report sequences (satellite data) +312004 +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +5316 +12 +Single level report sequences (satellite data) +312004 +304004 +Cloud top pressure, cloud cover, temperature +Operational + + +5317 +12 +Single level report sequences (satellite data) +312005 +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +5318 +12 +Single level report sequences (satellite data) +312005 +020014 +Height of top of cloud +Operational + + +5319 +12 +Single level report sequences (satellite data) +312006 +301044 +Satellite identifier, humidity computation method, date/time, location +Operational + + +5320 +12 +Single level report sequences (satellite data) +312006 +304005 +Layer mean relative humidity +Operational + + +5321 +12 +Single level report sequences (satellite data) +312007 +301042 +Satellite identifier, instrument, data-processing technique, date/time, location +Operational + + +5322 +12 +Single level report sequences (satellite data) +312007 +304006 +Radiation +Operational + + +5323 +12 +Single level report sequences (satellite data) +312010 +(Orbital information, Part I) +001007 +Satellite identifier +Operational + + +5324 +12 +Single level report sequences (satellite data) +312010 +(Orbital information, Part I) +005040 +Orbit number +Operational + + +5325 +12 +Single level report sequences (satellite data) +312010 +(Orbital information, Part I) +002021 +Satellite instrument data used in processing +Operational + + +5326 +12 +Single level report sequences (satellite data) +312010 +(Orbital information, Part I) +005041 +Scan line number +Operational + + +5327 +12 +Single level report sequences (satellite data) +312010 +(Orbital information, Part I) +004001 +Year +Operational + + +5328 +12 +Single level report sequences (satellite data) +312010 +(Orbital information, Part I) +004043 +Day of the year +Operational + + +5329 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +202131 +Change scale +Operational + + +5330 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +201149 +Change data width +Operational + + +5331 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +004006 +Second +Operational + + +5332 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +201000 +Change data width +Operational + + +5333 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +202126 +Change scale +Operational + + +5334 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +010002 +Height +Operational + + +5335 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +202000 +Change scale +Operational + + +5336 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +005043 +Field of view number +Operational + + +5337 +12 +Single level report sequences (satellite data) +312011 +(Orbital information, Part II) +005053 +Field of view number increment +Operational + + +5338 +12 +Single level report sequences (satellite data) +312012 +(HIRS brightness temperatures - channels 1-19) +202129 +Change scale +Operational + + +5339 +12 +Single level report sequences (satellite data) +312012 +(HIRS brightness temperatures - channels 1-19) +201132 +Change data width +Operational + + +5340 +12 +Single level report sequences (satellite data) +312012 +(HIRS brightness temperatures - channels 1-19) +101019 +Replicate 1 descriptor 19 times +Operational + + +5341 +12 +Single level report sequences (satellite data) +312012 +(HIRS brightness temperatures - channels 1-19) +012063 +Brightness temperature +Operational + + +5342 +12 +Single level report sequences (satellite data) +312012 +(HIRS brightness temperatures - channels 1-19) +201000 +Change data width +Operational + + +5343 +12 +Single level report sequences (satellite data) +312012 +(HIRS brightness temperatures - channels 1-19) +202000 +Change scale +Operational + + +5344 +12 +Single level report sequences (satellite data) +312013 +(HIRS brightness temperatures - channel 20) +005042 +Channel number +Operational + + +5345 +12 +Single level report sequences (satellite data) +312013 +(HIRS brightness temperatures - channel 20) +202129 +Change scale +Operational + + +5346 +12 +Single level report sequences (satellite data) +312013 +(HIRS brightness temperatures - channel 20) +201135 +Change data width +Operational + + +5347 +12 +Single level report sequences (satellite data) +312013 +(HIRS brightness temperatures - channel 20) +012063 +Brightness temperature +Operational + + +5348 +12 +Single level report sequences (satellite data) +312013 +(HIRS brightness temperatures - channel 20) +201000 +Change data width +Operational + + +5349 +12 +Single level report sequences (satellite data) +312013 +(HIRS brightness temperatures - channel 20) +202000 +Change scale +Operational + + +5350 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +312010 +Orbital information, Part I +Operational + + +5351 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +312011 +Orbital information, Part II +Operational + + +5352 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +105056 +Replicate 5 descriptors 56 times +Operational + + +5353 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5354 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +005042 +Channel number +Operational + + +5355 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +005052 +Channel number increment +Operational + + +5356 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +312012 +HIRS brightness temperatures - channels 1-19 +Operational + + +5357 +12 +Single level report sequences (satellite data) +312014 +(HIRS satellite data) +312013 +HIRS brightness temperatures - channel 20 +Operational + + +5358 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +109011 +Replicate 9 descriptors 11 times +Operational + + +5359 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5360 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +005042 +Channel number +Operational + + +5361 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +005052 +Channel number increment +Operational + + +5362 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +202129 +Change scale +Operational + + +5363 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +201132 +Change data width +Operational + + +5364 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +101004 +Replicate 1 descriptor 4 times +Operational + + +5365 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +012063 +Brightness temperature +Operational + + +5366 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +202000 +Change scale +Operational + + +5367 +12 +Single level report sequences (satellite data) +312015 +(MSU brightness temperatures - channels 1-4) +201000 +Change data width +Operational + + +5368 +12 +Single level report sequences (satellite data) +312016 +(MSU satellite data) +312010 +Orbital information, Part I +Operational + + +5369 +12 +Single level report sequences (satellite data) +312016 +(MSU satellite data) +312011 +Orbital information, Part II +Operational + + +5370 +12 +Single level report sequences (satellite data) +312016 +(MSU satellite data) +312015 +MSU brightness temperatures - channels 1-4 +Operational + + +5371 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +109008 +Replicate 9 descriptors 8 times +Operational + + +5372 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5373 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +005042 +Channel number +Operational + + +5374 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +005052 +Channel number increment +Operational + + +5375 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +202129 +Change scale +Operational + + +5376 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +201132 +Change data width +Operational + + +5377 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +101003 +Replicate 1 descriptor 3 times +Operational + + +5378 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +012063 +Brightness temperature +Operational + + +5379 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +202000 +Change scale +Operational + + +5380 +12 +Single level report sequences (satellite data) +312017 +(SSU brightness temperatures - channels 1-3) +201000 +Change data width +Operational + + +5381 +12 +Single level report sequences (satellite data) +312018 +(SSU satellite data) +312010 +Orbital information, Part I +Operational + + +5382 +12 +Single level report sequences (satellite data) +312018 +(SSU satellite data) +312011 +Orbital information, Part II +Operational + + +5383 +12 +Single level report sequences (satellite data) +312018 +(SSU satellite data) +312017 +SSU brightness temperatures - channels 1-3 +Operational + + +5384 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +301047 +ERS product header +Operational + + +5385 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +301048 +Radar parameters +Operational + + +5386 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +015015 +Maximum image spectral component before normalization +Operational + + +5387 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +029002 +Coordinate grid type +Operational + + +5388 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +021076 +Representation of intensities +Operational + + +5389 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +106012 +Replicate 6 descriptors 12 times +Operational + + +5390 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +201129 +Change data width +14 bits long +Operational + + +5391 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +006030 +Wave number (spectral) +Operational + + +5392 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +201000 +Change data width +Cancel +Operational + + +5393 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +102012 +Replicate 2 descriptors 12 times +Operational + + +5394 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +005030 +Direction (spectral) +Operational + + +5395 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +021075 +Image spectrum intensity +Operational + + +5396 +12 +Single level report sequences (satellite data) +312019 +(Wave scatterometer product with width change for wave number (spectral)) +021066 +Wave scatterometer product confidence data +Operational + + +5397 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +301047 +ERS product header +Operational + + +5398 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +301048 +Radar parameters +Operational + + +5399 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +015015 +Maximum image spectral component before normalization +Operational + + +5400 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +029002 +Coordinate grid type +Operational + + +5401 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +021076 +Representation of intensities +Operational + + +5402 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +104012 +Replicate 4 descriptors 12 times +Operational + + +5403 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +006030 +Wave number (spectral) +Operational + + +5404 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +102012 +Replicate 2 descriptors 12 times +Operational + + +5405 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +005030 +Direction (spectral) +Operational + + +5406 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +021075 +Image spectrum intensity +Operational + + +5407 +12 +Single level report sequences (satellite data) +312020 +(Wave scatterometer product) +021066 +Wave scatterometer product confidence data +Operational + + +5408 +12 +Single level report sequences (satellite data) +312021 +(Wind scatterometer product) +301047 +ERS product header +Operational + + +5409 +12 +Single level report sequences (satellite data) +312021 +(Wind scatterometer product) +101003 +Replicate 1 descriptor 3 times +Operational + + +5410 +12 +Single level report sequences (satellite data) +312021 +(Wind scatterometer product) +301049 +Radar beam data +Operational + + +5411 +12 +Single level report sequences (satellite data) +312021 +(Wind scatterometer product) +011012 +Wind speed at 10 m +Operational + + +5412 +12 +Single level report sequences (satellite data) +312021 +(Wind scatterometer product) +011011 +Wind direction at 10 m +Operational + + +5413 +12 +Single level report sequences (satellite data) +312021 +(Wind scatterometer product) +021067 +Wind product confidence data +Operational + + +5414 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +301047 +ERS product header +Operational + + +5415 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +008022 +Total number (with respect to accumulation or average) +Number in average +Operational + + +5416 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +011012 +Wind speed at 10 m +Operational + + +5417 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +011050 +Standard deviation of horizontal wind speed +Operational + + +5418 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +022070 +Significant wave height +Operational + + +5419 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +022026 +Standard deviation of significant wave height +Operational + + +5420 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +312041 +Altitude +Operational + + +5421 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +010050 +Standard deviation altitude +Operational + + +5422 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +021068 +Radar altimeter product confidence data +Operational + + +5423 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +021071 +Peakiness +Operational + + +5424 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +021072 +Satellite altimeter calibration status +Operational + + +5425 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +021073 +Satellite altimeter instrument mode +Operational + + +5426 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +312042 +Altitude corrections +Operational + + +5427 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +021062 +Backscatter +Operational + + +5428 +12 +Single level report sequences (satellite data) +312022 +(Radar altimeter product) +015011 +Log10 of integrated electron density +Operational + + +5429 +12 +Single level report sequences (satellite data) +312023 +(ATSR sea-surface temperature product) +301047 +ERS product header +Operational + + +5430 +12 +Single level report sequences (satellite data) +312023 +(ATSR sea-surface temperature product) +103003 +Replicate 3 descriptors 3 times +Operational + + +5431 +12 +Single level report sequences (satellite data) +312023 +(ATSR sea-surface temperature product) +008022 +Total number (with respect to accumulation or average) +Number in average +Operational + + +5432 +12 +Single level report sequences (satellite data) +312023 +(ATSR sea-surface temperature product) +012061 +Skin temperature +Operational + + +5433 +12 +Single level report sequences (satellite data) +312023 +(ATSR sea-surface temperature product) +022050 +Standard deviation sea-surface temperature +Operational + + +5434 +12 +Single level report sequences (satellite data) +312023 +(ATSR sea-surface temperature product) +021069 +SST product confidence data +Operational + + +5435 +12 +Single level report sequences (satellite data) +312023 +(ATSR sea-surface temperature product) +021085 +ATSR sea-surface temperature across-track band number +Operational + + +5436 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +312020 +Wave scatterometer product +Operational + + +5437 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +008060 +Sample scanning mode significance +Range +Operational + + +5438 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +008022 +Total number (with respect to accumulation or average) +Number in sample +Operational + + +5439 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +008060 +Sample scanning mode significance +Horizontal +Operational + + +5440 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +008022 +Total number (with respect to accumulation or average) +Number in sample +Operational + + +5441 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +025014 +Azimuth clutter cut-off +Operational + + +5442 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +022101 +Total energy (wavelength > 731m) at low wave numbers +Operational + + +5443 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +022097 +Mean wavelength > 731 m of image spectrum at low wave numbers +Operational + + +5444 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +022098 +Wavelength spread (wavelength > 731 m) at low wave numbers +Operational + + +5445 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +022099 +Mean direction at low wave numbers (wavelength > 731 m) +Operational + + +5446 +12 +Single level report sequences (satellite data) +312024 +(Wave scatterometer product enhanced) +022100 +Direction spread at low wave numbers (wavelength > 731 m) +Operational + + +5447 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +312019 +Wave scatterometer product with width change for wave number (spectral) +Operational + + +5448 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +008060 +Sample scanning mode significance +Range +Operational + + +5449 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +008022 +Total number (with respect to accumulation or average) +Number in sample +Operational + + +5450 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +008060 +Sample scanning mode significance +Horizontal +Operational + + +5451 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +008022 +Total number (with respect to accumulation or average) +Number in sample +Operational + + +5452 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +025014 +Azimuth clutter cut-off +Operational + + +5453 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +022101 +Total energy (wavelength > 731m) at low wave numbers +Operational + + +5454 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +022097 +Mean wavelength > 731 m of image spectrum at low wave numbers +Operational + + +5455 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +022098 +Wavelength spread (wavelength > 731 m) at low wave numbers +Operational + + +5456 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +022099 +Mean direction at low wave numbers (wavelength > 731 m) +Operational + + +5457 +12 +Single level report sequences (satellite data) +312025 +(Wave scatterometer enhanced product (with change of width for wave number (spectral)) +022100 +Direction spread at low wave numbers (wavelength > 731 m) +Operational + + +5458 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301046 +Satellite identifier, direction of motion, sensor, model function, software, resolution +Operational + + +5459 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301011 +Year, month, day +Operational + + +5460 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301013 +Hour, minute, second +Operational + + +5461 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5462 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +312031 +SEAWINDS wind +Operational + + +5463 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +101004 +Replicate 1 descriptor 4 times +Operational + + +5464 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +312030 +Wind, formal uncertainty, likelihood +Operational + + +5465 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +021110 +Number of inner-beam sigma-0 (forward of satellite) +Operational + + +5466 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5467 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +321027 +Radar specification, normalized radar cross-section, Kp variance coefficient +Operational + + +5468 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +021111 +Number of outer-beam sigma-0 (forward of satellite) +Operational + + +5469 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5470 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +321027 +Radar specification, normalized radar cross-section, Kp variance coefficient +Operational + + +5471 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +021112 +Number of inner-beam sigma-0 (aft of satellite) +Operational + + +5472 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5473 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +321027 +Radar specification, normalized radar cross-section, Kp variance coefficient +Operational + + +5474 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +021113 +Number of outer-beam sigma-0 (aft of satellite) +Operational + + +5475 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5476 +12 +Single level report sequences (satellite data) +312026 +(QUIKSCAT data) +321027 +Radar specification, normalized radar cross-section, Kp variance coefficient +Operational + + +5477 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +301047 +ERS product header +Operational + + +5478 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +105009 +Replicate 5 descriptors 9 times +Operational + + +5479 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +301023 +Latitude/longitude (coarse accuracy) +10-arcmin cell +Operational + + +5480 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +007021 +Elevation +Incidence angle nadir view | Set to zero +Operational + + +5481 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +012061 +Skin temperature +SST (nadir-only view) +Operational + + +5482 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +007021 +Elevation +Incidence angle dual view | Set to missing +Operational + + +5483 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +012061 +Skin temperature +SST (dual view) +Operational + + +5484 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +021085 +ATSR sea-surface temperature across-track band number +0-9 +Operational + + +5485 +12 +Single level report sequences (satellite data) +312027 +(ATSR SST product (SADIST-2)) +021070 +SST product confidence data (SADIST-2) +23-bit flag +Operational + + +5486 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301046 +Satellite identifier, direction of motion, sensor, model function, software, resolution +Operational + + +5487 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301011 +Year, month, day +Operational + + +5488 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301013 +Hour, minute, second +Operational + + +5489 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5490 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +008025 +Time difference qualifier +Operational + + +5491 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +201136 +Change data width +Operational + + +5492 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +004006 +Second +Operational + + +5493 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +201000 +Change data width +Cancel +Operational + + +5494 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +312031 +SEAWINDS wind +Operational + + +5495 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +312032 +SEAWINDS precipitation +Operational + + +5496 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +101004 +Replicate 1 descriptor 4 times +Operational + + +5497 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +312030 +Wind, formal uncertainty, likelihood +Operational + + +5498 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +101002 +Replicate 1 descriptor 2 times +Operational + + +5499 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +312033 +Antenna polarization, brightness temperature +Operational + + +5500 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +021110 +Number of inner-beam sigma-0 (forward of satellite) +Operational + + +5501 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5502 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +321028 +Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient +Operational + + +5503 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +021111 +Number of outer-beam sigma-0 (forward of satellite) +Operational + + +5504 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5505 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +321028 +Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient +Operational + + +5506 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +021112 +Number of inner-beam sigma-0 (aft of satellite) +Operational + + +5507 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5508 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +321028 +Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient +Operational + + +5509 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +021113 +Number of outer-beam sigma-0 (aft of satellite) +Operational + + +5510 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5511 +12 +Single level report sequences (satellite data) +312028 +(SEAWINDS QUIKSCAT data) +321028 +Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient +Operational + + +5512 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +301046 +Satellite identifier, direction of motion, sensor, model function, software, resolution +Operational + + +5513 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +301011 +Year, month, day +Operational + + +5514 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +301013 +Hour, minute, second +Operational + + +5515 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5516 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +008025 +Time difference qualifier +Operational + + +5517 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +201136 +Change data width +Operational + + +5518 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +004006 +Second +Operational + + +5519 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +201000 +Cancel change data width +Operational + + +5520 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +005034 +Along-track row number +Operational + + +5521 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +201129 +Change data width +Operational + + +5522 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +006034 +Cross-track cell number +Operational + + +5523 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +201000 +Cancel change data width +Operational + + +5524 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +033055 +Wind vector quality flag +Operational + + +5525 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +011081 +Model wind direction at 10 m +Operational + + +5526 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +011082 +Model wind speed at 10 m +Operational + + +5527 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +021101 +Number of vector ambiguities +Operational + + +5528 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +021102 +Index of selected wind vector +Operational + + +5529 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +021103 +Total number of sigma-0 measurements +Operational + + +5530 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +312032 +SEAWINDS precipitation +Operational + + +5531 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +101004 +Replicate 1 descriptor 4 times +Operational + + +5532 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +312030 +Wind, formal uncertainty, likelihood +Operational + + +5533 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +101002 +Replicate 1 descriptor 2 times +Operational + + +5534 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +312033 +Antenna polarization, brightness temperature +Operational + + +5535 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +021110 +Number of inner-beam sigma-0 (forward of satellite) +Operational + + +5536 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5537 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +321028 +Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient +Operational + + +5538 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +021111 +Number of outer-beam sigma-0 (forward of satellite) +Operational + + +5539 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5540 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +321028 +Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient +Operational + + +5541 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +021112 +Number of inner-beam sigma-0 (aft of satellite) +Operational + + +5542 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5543 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +321028 +Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient +Operational + + +5544 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +021113 +Number of outer-beam sigma-0 (aft of satellite) +Operational + + +5545 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5546 +12 +Single level report sequences (satellite data) +312029 +(Scatterometer level 2b data) +321028 +Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient +Operational + + +5547 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +201130 +Change data width +Operational + + +5548 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +202129 +Change scale +Operational + + +5549 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +011012 +Wind speed at 10 m +Operational + + +5550 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +202000 +Change scale +Cancel +Operational + + +5551 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +201000 +Change data width +Cancel +Operational + + +5552 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +011052 +Formal uncertainty in wind speed +Operational + + +5553 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +201135 +Change data width +Operational + + +5554 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +202130 +Change scale +Operational + + +5555 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +011011 +Wind direction at 10 m +Operational + + +5556 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +202000 +Change scale +Cancel +Operational + + +5557 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +201000 +Change data width +Cancel +Operational + + +5558 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +011053 +Formal uncertainty in wind direction +Operational + + +5559 +12 +Single level report sequences (satellite data) +312030 +(Wind, formal uncertainty, likelihood) +021104 +Likelihood computed for solution +Operational + + +5560 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +005034 +Along-track row number +Operational + + +5561 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +006034 +Cross-track cell number +Operational + + +5562 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +021109 +SEAWINDS wind vector cell quality +Operational + + +5563 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +011081 +Model wind direction at 10 m +Operational + + +5564 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +011082 +Model wind speed at 10 m +Operational + + +5565 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +021101 +Number of vector ambiguities +Operational + + +5566 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +021102 +Index of selected wind vector +Operational + + +5567 +12 +Single level report sequences (satellite data) +312031 +(SEAWINDS wind) +021103 +Total number of sigma-0 measurements +Operational + + +5568 +12 +Single level report sequences (satellite data) +312032 +(SEAWINDS precipitation) +021120 +Probability of rain +Operational + + +5569 +12 +Single level report sequences (satellite data) +312032 +(SEAWINDS precipitation) +021121 +SEAWINDS NOF rain index +Operational + + +5570 +12 +Single level report sequences (satellite data) +312032 +(SEAWINDS precipitation) +013055 +Intensity of precipitation +Operational + + +5571 +12 +Single level report sequences (satellite data) +312032 +(SEAWINDS precipitation) +021122 +Attenuation correction on sigma-0 (from tB) +Operational + + +5572 +12 +Single level report sequences (satellite data) +312033 +(Antenna polarization, brightness temperature) +002104 +Antenna polarization +Operational + + +5573 +12 +Single level report sequences (satellite data) +312033 +(Antenna polarization, brightness temperature) +008022 +Total number (with respect to accumulation or average) +Operational + + +5574 +12 +Single level report sequences (satellite data) +312033 +(Antenna polarization, brightness temperature) +012063 +Brightness temperature +Operational + + +5575 +12 +Single level report sequences (satellite data) +312033 +(Antenna polarization, brightness temperature) +012065 +Standard deviation brightness temperature +Operational + + +5576 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +301046 +Satellite identifier, direction of motion, sensor, model function, software, resolution +Operational + + +5577 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +301011 +Year, month, day +Operational + + +5578 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +301013 +Hour, minute, second +Operational + + +5579 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5580 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +008025 +Time difference qualifier +Operational + + +5581 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +201136 +Change data width +Operational + + +5582 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +004006 +Second +Operational + + +5583 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +201000 +Change data width +Operational + + +5584 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +312031 +Scatterometer wind +Operational + + +5585 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +312032 +Scatterometer precipitation +Operational + + +5586 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +101004 +Replicate 1 descriptor 4 times +Operational + + +5587 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +312030 +Wind, formal uncertainty, likelihood +Operational + + +5588 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +101002 +Replicate 1 descriptor 2 times +Operational + + +5589 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +312033 +Antenna polarization, brightness temperature +Operational + + +5590 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +103018 +Replicate 3 descriptor 18 times +Operational + + +5591 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +021110 +Number of inner-beam sigma-0 (forward of satellite) +Operational + + +5592 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +5593 +12 +Single level report sequences (satellite data) +312034 +(CFOSAT scatterometer data) +321028 +Radar specification, normalized radar cross-section, Kp variance coefficient +Operational + + +5594 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +001007 +Satellite identifier +Operational + + +5595 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +001031 +Identification of originating/generating centre +Operational + + +5596 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +002048 +Satellite sensor indicator +Operational + + +5597 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +202124 +Change scale +Operational + + +5598 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +002026 +Cross-track resolution +Operational + + +5599 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +002027 +Along-track resolution +Operational + + +5600 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +202000 +Cancel change scale +Operational + + +5601 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +005040 +Orbit number +Operational + + +5602 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +004001 +Year +Operational + + +5603 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +004002 +Month +Operational + + +5604 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +004003 +Day +Operational + + +5605 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +004004 +Hour +Operational + + +5606 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +004005 +Minute +Operational + + +5607 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +004006 +Second +Operational + + +5608 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +005002 +Latitude (coarse accuracy) +Operational + + +5609 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +006002 +Longitude (coarse accuracy) +Operational + + +5610 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +005034 +Along-track row number +Operational + + +5611 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +006031 +Column number +Operational + + +5612 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +201129 +Change data width +Operational + + +5613 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +006034 +Cross-track cell number +Operational + + +5614 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +201000 +Cancel change data width +Operational + + +5615 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +005021 +Bearing or azimuth +Operational + + +5616 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +002111 +Radar incidence angle +Operational + + +5617 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +012063 +Brightness temperature +Operational + + +5618 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +021095 +Kp coefficient A +Operational + + +5619 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +021096 +Kp coefficient B +Operational + + +5620 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +021097 +Kp coefficient C +Operational + + +5621 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +021030 +Signal to noise ratio +Operational + + +5622 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +021105 +Normalized radar cross-section +Operational + + +5623 +12 +Single level report sequences (satellite data) +312035 +(Scatterometer level 2a data) +033056 +Sigma-0 quality flag +Operational + + +5624 +12 +Single level report sequences (satellite data) +312041 +(Altitude) +201141 +Change data width +28 bits long +Operational + + +5625 +12 +Single level report sequences (satellite data) +312041 +(Altitude) +202130 +Change scale +Scale: 2 +Operational + + +5626 +12 +Single level report sequences (satellite data) +312041 +(Altitude) +007001 +Height of station +Operational + + +5627 +12 +Single level report sequences (satellite data) +312041 +(Altitude) +201000 +Change data width +Cancel +Operational + + +5628 +12 +Single level report sequences (satellite data) +312041 +(Altitude) +202000 +Change scale +Cancel +Operational + + +5629 +12 +Single level report sequences (satellite data) +312042 +(Altitude corrections) +021077 +Altitude correction (ionosphere) +Operational + + +5630 +12 +Single level report sequences (satellite data) +312042 +(Altitude corrections) +021078 +Altitude correction (dry troposphere) +Operational + + +5631 +12 +Single level report sequences (satellite data) +312042 +(Altitude corrections) +021079 +Altitude correction (wet troposphere) +Operational + + +5632 +12 +Single level report sequences (satellite data) +312042 +(Altitude corrections) +021080 +Altitude correction (calibration constant) +Operational + + +5633 +12 +Single level report sequences (satellite data) +312042 +(Altitude corrections) +021081 +Open loop correction (height-time loop) +Operational + + +5634 +12 +Single level report sequences (satellite data) +312042 +(Altitude corrections) +021082 +Open loop correction (auto gain control) +Operational + + +5635 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +001007 +Satellite identifier +Operational + + +5636 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +002019 +Satellite instruments +Operational + + +5637 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +001096 +Station acquisition +Operational + + +5638 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +025061 +Software identification and version number +Operational + + +5639 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +005040 +Orbit number +Operational + + +5640 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +301011 +Year, month, day +Operational + + +5641 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +301013 +Hour, minute, second +Operational + + +5642 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +301021 +Latitude/longitude (high accuracy) +Operational + + +5643 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +007002 +Height or altitude +Operational + + +5644 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012180 +Averaged 12 micron BT for all clear pixels at nadir +Operational + + +5645 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012181 +Averaged 11 micron BT for all clear pixels at nadir +Operational + + +5646 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012182 +Averaged 3.7 micron BT for all clear pixels at nadir +Operational + + +5647 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012183 +Averaged 12 micron BT for all clear pixels, forward view +Operational + + +5648 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012184 +Averaged 11 micron BT for all clear pixels, forward view +Operational + + +5649 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012185 +Averaged 3.7 micron BT for all clear pixels, forward view +Operational + + +5650 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +002174 +Mean across-track pixel number +Operational + + +5651 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +021086 +Number of pixels in nadir only, average +Operational + + +5652 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012186 +Mean nadir sea-surface temperature +Operational + + +5653 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +021087 +Number of pixels in dual view, average +Operational + + +5654 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +012187 +Mean dual view sea-surface temperature +Operational + + +5655 +12 +Single level report sequences (satellite data) +312045 +(AATSR sea-surface temperatures) +033043 +AST confidence +Operational + + +5656 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +001007 +Satellite identifier +Operational + + +5657 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +002019 +Satellite instruments +Operational + + +5658 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +001096 +Station acquisition +Operational + + +5659 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +025061 +Software identification and version number +Operational + + +5660 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +005040 +Orbit number +Operational + + +5661 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +301011 +Year, month, day +Operational + + +5662 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +301013 +Hour, minute, second +Operational + + +5663 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +301021 +Latitude/longitude (high accuracy) +Operational + + +5664 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +007025 +Solar zenith angle +Operational + + +5665 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +005022 +Solar azimuth +Operational + + +5666 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +010080 +Viewing zenith angle +Operational + + +5667 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +027080 +Viewing azimuth angle +Operational + + +5668 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +008003 +Vertical significance (satellite observations) +Operational + + +5669 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +007004 +Pressure +Operational + + +5670 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +013093 +Cloud optical thickness +Operational + + +5671 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +008003 +Vertical significance (satellite observations) +Operational + + +5672 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +201131 +Change data width +Operational + + +5673 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +202129 +Change scale +Operational + + +5674 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +007004 +Pressure +Operational + + +5675 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +007004 +Pressure +Operational + + +5676 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +202000 +Change scale +Cancel +Operational + + +5677 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +201000 +Change data width +Cancel +Operational + + +5678 +12 +Single level report sequences (satellite data) +312050 +(MERIS instrument reporting) +013095 +Total column water vapour +Operational + + +5679 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +001007 +Satellite identifier +Operational + + +5680 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +002019 +Satellite instruments +Operational + + +5681 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +001096 +Station acquisition +Operational + + +5682 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025061 +Software identification and version number +Operational + + +5683 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +005040 +Orbit number +Operational + + +5684 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +008075 +Ascending/descending orbit qualifier +Operational + + +5685 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +301011 +Year, month, day +Operational + + +5686 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +301013 +Hour, minute, second +Operational + + +5687 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +301021 +Latitude/longitude (high accuracy) +Operational + + +5688 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +001012 +Direction of motion of moving observing platform +Operational + + +5689 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +201131 +Change data width +Operational + + +5690 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +001013 +Speed of motion of moving observing platform +Operational + + +5691 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +201000 +Change data width +Cancel +Operational + + +5692 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +010032 +Satellite distance to Earth's centre +Operational + + +5693 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +010033 +Altitude (platform to ellipsoid) +Operational + + +5694 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +010034 +Earth's radius +Operational + + +5695 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +007002 +Height or altitude +Operational + + +5696 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +008012 +Land/sea qualifier +Operational + + +5697 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025110 +Image processing summary +Operational + + +5698 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025111 +Number of input data gaps +Operational + + +5699 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025102 +Number of missing lines excluding data gaps +Operational + + +5700 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +002104 +Antenna polarization +Operational + + +5701 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025103 +Number of directional bins +Operational + + +5702 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025104 +Number of wavelength bins +Operational + + +5703 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025105 +First directional bin +Operational + + +5704 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025106 +Directional bin step +Operational + + +5705 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025107 +First wavelength bin +Operational + + +5706 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025108 +Last wavelength bin +Operational + + +5707 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +002111 +Radar incidence angle +Operational + + +5708 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +002121 +Mean frequency +Operational + + +5709 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +002026 +Cross-track resolution +Operational + + +5710 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +002027 +Along-track resolution +Operational + + +5711 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021130 +Spectrum total energy +Operational + + +5712 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021131 +Spectrum max energy +Operational + + +5713 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021132 +Direction of spectrum max on higher resolution grid +Operational + + +5714 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021133 +Wavelength of spectrum max on higher resolution grid +Operational + + +5715 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021064 +Clutter noise estimate +Operational + + +5716 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +025014 +Azimuth clutter cut-off +Operational + + +5717 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021134 +Range resolution of cress covariance spectrum +Operational + + +5718 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +107018 +Replicate 7 descriptors 18 times +Operational + + +5719 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +005030 +Direction (spectral) +Operational + + +5720 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +105024 +Replicate 5 descriptors 24 times +Operational + + +5721 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +201130 +Change data width +Operational + + +5722 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +006030 +Wave number (spectral) +Operational + + +5723 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +201000 +Change data width +Cancel +Operational + + +5724 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021135 +Real part of cross spectra polar grid number of bins +Operational + + +5725 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +021136 +Imaginary part of cross spectra polar grid number of bins +Operational + + +5726 +12 +Single level report sequences (satellite data) +312051 +(Ocean cross spectra - WVS) +033044 +ASAR quality information +Operational + + +5727 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +001007 +Satellite identifier +Operational + + +5728 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002019 +Satellite instruments +Operational + + +5729 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +001096 +Station acquisition +Operational + + +5730 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025061 +Software identification and version number +Operational + + +5731 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +005040 +Orbit number +Operational + + +5732 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025120 +RA2-L2-processing flag +Operational + + +5733 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025121 +RA2-L2-processing quality +Operational + + +5734 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025124 +MWR-L2-processing flag +Operational + + +5735 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025125 +MWR-L2-processing quality +Operational + + +5736 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025122 +Hardware configuration for RF +Operational + + +5737 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025123 +Hardware configuration for HPA +Operational + + +5738 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +301011 +Year, month, day +Operational + + +5739 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +301013 +Hour, minute, second +Operational + + +5740 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +301021 +Latitude/longitude (high accuracy) +Operational + + +5741 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +007002 +Height or altitude +Operational + + +5742 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002119 +RA-2 instrument operations +Operational + + +5743 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +033047 +Measurement confidence data +Operational + + +5744 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010081 +Altitude of COG above reference ellipsoid +Operational + + +5745 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010082 +Instantaneous altitude rate +Operational + + +5746 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010083 +Squared off nadir angle of the satellite from platform data +Operational + + +5747 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010084 +Squared off nadir angle of the satellite from waveform data +Operational + + +5748 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002116 +Percentage of 320 MHz band processed +Operational + + +5749 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002117 +Percentage of 80 MHz band processed +Operational + + +5750 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002118 +Percentage of 20 MHz band processed +Operational + + +5751 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002156 +Percentage of valid Ku ocean retracker measurements +Operational + + +5752 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002157 +Percentage of valid S ocean retracker measurements +Operational + + +5753 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +014055 +Solar activity index +Operational + + +5754 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022150 +Number of 18 Hz valid points for Ku band +Operational + + +5755 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022151 +Ku band ocean range +Operational + + +5756 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022152 +STD of 18 Hz Ku band ocean range +Operational + + +5757 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022153 +Number of 18 Hz valid points for S band +Operational + + +5758 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022154 +S band ocean range +Operational + + +5759 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022155 +STD of 18 Hz S band ocean range +Operational + + +5760 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022156 +Ku band significant wave height +Operational + + +5761 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022157 +STD of 18 Hz Ku band ocean range +Significant wave height +Operational + + +5762 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022158 +S band significant wave height +Operational + + +5763 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +022159 +STD of 18 Hz S band significant wave height +Operational + + +5764 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021137 +Ku band corrected ocean backscatter coefficient +Operational + + +5765 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021138 +STD Ku band corrected ocean backscatter coefficient +Operational + + +5766 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021139 +Ku band net instrumental correction for AGC +Operational + + +5767 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021140 +S band corrected ocean backscatter coefficient +Operational + + +5768 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021141 +STD S band corrected ocean backscatter coefficient +Operational + + +5769 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021142 +S band net instrumental correction for AGC +Operational + + +5770 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010085 +Mean sea-surface height +Operational + + +5771 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010086 +Geoid's height +Operational + + +5772 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010087 +Ocean depth/land elevation +Operational + + +5773 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010088 +Total geocentric ocean tide height (solution 1) +Operational + + +5774 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010089 +Total geocentric ocean tide height (solution 2) +Operational + + +5775 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010090 +Long period tide height +Operational + + +5776 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010091 +Tidal loading height +Operational + + +5777 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010092 +Solid Earth tide height +Operational + + +5778 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +010093 +Geocentric pole tide height +Operational + + +5779 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +011002 +Wind speed +Operational + + +5780 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025126 +Model dry tropospheric correction +Operational + + +5781 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025127 +Inverted barometer correction +Operational + + +5782 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025128 +Model wet tropospheric correction +Operational + + +5783 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025129 +MWR derived wet tropospheric correction +Operational + + +5784 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025130 +RA2 ionospheric correction on Ku band +Operational + + +5785 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025131 +Ionospheric correction from Doris on Ku band +Operational + + +5786 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025132 +Ionospheric correction from model on Ku band +Operational + + +5787 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025133 +Sea state bias correction on Ku band +Operational + + +5788 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025134 +RA2 ionospheric correction on S band +Operational + + +5789 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025135 +Ionospheric correction from Doris on S band +Operational + + +5790 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025136 +Ionospheric correction from model on S band +Operational + + +5791 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +025137 +Sea state bias correction on S band +Operational + + +5792 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +013096 +MWR water vapour content +Operational + + +5793 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +013097 +MWR liquid water content +Operational + + +5794 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +011095 +u-component of the model wind vector +Operational + + +5795 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +011096 +v-component of the model wind vector +Operational + + +5796 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +012188 +Interpolated 23.8 GHz brightness T from MWR +Operational + + +5797 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +012189 +Interpolated 36.5 GHz brightness T from MWR +Operational + + +5798 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002158 +RA-2 instrument +Operational + + +5799 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +002159 +MWR instrument +Operational + + +5800 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +033052 +S band ocean retracking quality +Operational + + +5801 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +033053 +Ku band ocean retracking quality +Operational + + +5802 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021143 +Ku band rain attenuation +Operational + + +5803 +12 +Single level report sequences (satellite data) +312052 +(RA2 - radar altimeter-2) +021144 +Altimeter rain flag +Operational + + +5804 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +001007 +Satellite identifier +Operational + + +5805 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +002019 +Satellite instruments +Operational + + +5806 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +001096 +Station acquisition +Operational + + +5807 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025061 +Software identification and version number +Operational + + +5808 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +005040 +Orbit number +Operational + + +5809 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +008075 +Ascending/descending orbit qualifier +Operational + + +5810 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +301011 +Year, month, day +Operational + + +5811 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +301013 +Hour, minute, second +Operational + + +5812 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +301021 +Latitude/longitude (high accuracy) +Operational + + +5813 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +001012 +Direction of motion of moving observing platform +Operational + + +5814 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +201131 +Change data width +Operational + + +5815 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +001013 +Speed of motion of moving observing platform +Operational + + +5816 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +201000 +Change data width +Cancel +Operational + + +5817 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +010032 +Satellite distance to Earth's centre +Operational + + +5818 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +010033 +Altitude (platform to ellipsoid) +Operational + + +5819 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +010034 +Earth's radius +Operational + + +5820 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +007002 +Height or altitude +Operational + + +5821 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +008012 +Land/sea qualifier +Operational + + +5822 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025110 +Image processing summary +Operational + + +5823 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025111 +Number of input data gaps +Operational + + +5824 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025102 +Number of missing lines excluding data gaps +Operational + + +5825 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +002104 +Antenna polarization +Operational + + +5826 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025103 +Number of directional bins +Operational + + +5827 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025104 +Number of wavelength bins +Operational + + +5828 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025105 +First directional bin +Operational + + +5829 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025106 +Directional bin step +Operational + + +5830 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025107 +First wavelength bin +Operational + + +5831 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025108 +Last wavelength bin +Operational + + +5832 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +011001 +Wind direction +Operational + + +5833 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +011002 +Wind speed +Operational + + +5834 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +022160 +Normalized inverse wave age +Operational + + +5835 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025138 +Average signal-to-noise ratio +Operational + + +5836 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +201130 +Change data width +Operational + + +5837 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +202129 +Change scale +Operational + + +5838 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +022021 +Height of waves +Operational + + +5839 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +202000 +Change scale +Cancel +Operational + + +5840 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +201000 +Change data width +Cancel +Operational + + +5841 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +033048 +Confidence measure of SAR inversion +Operational + + +5842 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +033049 +Confidence measure of wind retrieval +Operational + + +5843 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +002026 +Cross-track resolution +Operational + + +5844 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +002027 +Along-track resolution +Operational + + +5845 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +021130 +Spectrum total energy +Operational + + +5846 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +021131 +Spectrum max energy +Operational + + +5847 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +021132 +Direction of spectrum max on higher resolution grid +Operational + + +5848 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +021133 +Wavelength of spectrum max on higher resolution grid +Operational + + +5849 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +025014 +Azimuth clutter cut-off +Operational + + +5850 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +106036 +Replicate 6 descriptors 36 times +Operational + + +5851 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +005030 +Direction (spectral) +Operational + + +5852 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +104024 +Replicate 4 descriptors 24 times +Operational + + +5853 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +201130 +Change data width +Operational + + +5854 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +006030 +Wave number (spectral) +Operational + + +5855 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +201000 +Change data width +Cancel +Operational + + +5856 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +022161 +Wave spectra +Operational + + +5857 +12 +Single level report sequences (satellite data) +312053 +(Ocean wave spectra) +033044 +ASAR quality information +Operational + + +5858 +12 +Single level report sequences (satellite data) +312055 +(ASCAT level 1b cell information) +005033 +Pixel size on horizontal - 1 +Operational + + +5859 +12 +Single level report sequences (satellite data) +312055 +(ASCAT level 1b cell information) +005040 +Orbit number +Operational + + +5860 +12 +Single level report sequences (satellite data) +312055 +(ASCAT level 1b cell information) +006034 +Cross-track cell number +Operational + + +5861 +12 +Single level report sequences (satellite data) +312055 +(ASCAT level 1b cell information) +010095 +Height of atmosphere used +Operational + + +5862 +12 +Single level report sequences (satellite data) +312055 +(ASCAT level 1b cell information) +021157 +Loss per unit length of atmosphere used +Operational + + +5863 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +025060 +Software identification +Operational + + +5864 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +001032 +Generating application +Operational + + +5865 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +011082 +Model wind speed at 10 m +Operational + + +5866 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +011081 +Model wind direction at 10 m +Operational + + +5867 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +020095 +Ice probability +Operational + + +5868 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +020096 +Ice age ("A" parameter) +Operational + + +5869 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +021155 +Wind vector cell quality +Operational + + +5870 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +201133 +Change data width +Increase data width by 5 bits +Operational + + +5871 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +021101 +Number of vector ambiguities +Operational + + +5872 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +021102 +Index of selected wind vector +Operational + + +5873 +12 +Single level report sequences (satellite data) +312056 +(Scatterometer wind cell information) +201000 +Change data width +Cancel +Operational + + +5874 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +201130 +Change data width +Increase data width by 2 bits +Operational + + +5875 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +202129 +Change scale +Increase scaling by 10**1 +Operational + + +5876 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +011012 +Wind speed at 10 m +Operational + + +5877 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +202000 +Change scale +Cancel +Operational + + +5878 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +201000 +Change data width +Cancel +Operational + + +5879 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +201131 +Change data width +Increase data width by 3 bits +Operational + + +5880 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +202129 +Change scale +Increase scaling by 10**1 +Operational + + +5881 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +011011 +Wind direction at 10 m +Operational + + +5882 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +202000 +Change scale +Cancel +Operational + + +5883 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +201000 +Change data width +Cancel +Operational + + +5884 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +021156 +Backscatter distance +Operational + + +5885 +12 +Single level report sequences (satellite data) +312057 +(Ambiguous wind data) +021104 +Likelihood computed for solution +Operational + + +5886 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +301125 +ASCAT header information +Operational + + +5887 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +301011 +Year, month, day +Operational + + +5888 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +301013 +Hour, minute, second +Operational + + +5889 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +301021 +Latitude/longitude (high accuracy) +Operational + + +5890 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +312055 +ASCAT level 1b cell information +Operational + + +5891 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +021150 +Beam co-location +Operational + + +5892 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +101003 +Replicate 1 descriptor 3 times +Operational + + +5893 +12 +Single level report sequences (satellite data) +312058 +(ASCAT level 1b data) +321030 +ASCAT sigma-0 information +Operational + + +5894 +12 +Single level report sequences (satellite data) +312059 +(Scatterometer wind data) +312056 +Scatterometer wind cell information +Operational + + +5895 +12 +Single level report sequences (satellite data) +312059 +(Scatterometer wind data) +101000 +Delayed replication of 1 descriptor +Operational + + +5896 +12 +Single level report sequences (satellite data) +312059 +(Scatterometer wind data) +031001 +Delayed descriptor replication factor +Operational + + +5897 +12 +Single level report sequences (satellite data) +312059 +(Scatterometer wind data) +312057 +Ambiguous wind data +Operational + + +5898 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +025060 +Software identification +Operational + + +5899 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +025062 +Database identification +Operational + + +5900 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040001 +Surface soil moisture (ms) +Operational + + +5901 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040002 +Estimated error in surface soil moisture +Operational + + +5902 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +021062 +Backscatter +Extrapolated backscatter at 40 deg incidence angle (sigma0_40) +Operational + + +5903 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +021151 +Estimated error in sigma-0 at 40 degrees incidence angle +Operational + + +5904 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +021152 +Slope at 40 degrees incidence angle +Operational + + +5905 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +021153 +Estimated error in slope at 40 degrees incidence angle +Operational + + +5906 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +021154 +Soil moisture sensitivity +Operational + + +5907 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +021062 +Backscatter +Dry backscatter +Operational + + +5908 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +021088 +Wet backscatter +Operational + + +5909 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040003 +Mean surface soil moisture +Operational + + +5910 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040004 +Rain fall detection +Operational + + +5911 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040005 +Soil moisture correction flag +Operational + + +5912 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040006 +Soil moisture processing flag +Operational + + +5913 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040007 +Soil moisture quality +Operational + + +5914 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +020065 +Snow cover +Operational + + +5915 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040008 +Frozen land surface fraction +Operational + + +5916 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040009 +Inundation and wetland fraction +Operational + + +5917 +12 +Single level report sequences (satellite data) +312060 +(Scatterometer soil moisture data) +040010 +Topographic complexity +Operational + + +5918 +12 +Single level report sequences (satellite data) +312061 +(ASCAT level 1b and level 2 data) +312058 +ASCAT level 1b data +Operational + + +5919 +12 +Single level report sequences (satellite data) +312061 +(ASCAT level 1b and level 2 data) +312060 +Scatterometer soil moisture data +Operational + + +5920 +12 +Single level report sequences (satellite data) +312061 +(ASCAT level 1b and level 2 data) +312059 +Scatterometer wind data +Operational + + +5921 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +001007 +Satellite identifier +Operational + + +5922 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +002019 +Satellite instruments +Operational + + +5923 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +001144 +Snapshot identifier +Operational + + +5924 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +001124 +Grid point identifier +Operational + + +5925 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +030010 +Number of grid points +Operational + + +5926 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +301011 +Year, month, day +Operational + + +5927 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +301013 +Hour, minute, second +Operational + + +5928 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +301021 +Latitude/longitude (high accuracy) +Operational + + +5929 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +007012 +Grid point altitude +Operational + + +5930 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +015012 +Total electron count per square metre +Operational + + +5931 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +012165 +Direct sun brightness temperature +Operational + + +5932 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +012166 +Snapshot accuracy +Operational + + +5933 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +012167 +Radiometric accuracy (pure polarization) +Operational + + +5934 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +012168 +Radiometric accuracy (cross polarization) +Operational + + +5935 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +027010 +Footprint axis 1 +Operational + + +5936 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +028010 +Footprint axis 2 +Operational + + +5937 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +002099 +Polarization +Operational + + +5938 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +013048 +Water fraction +Operational + + +5939 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +025081 +Incidence angle +Operational + + +5940 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +025082 +Azimuth angle +Operational + + +5941 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +025083 +Faraday rotational angle +Operational + + +5942 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +025084 +Geometric rotational angle +Operational + + +5943 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +012080 +Brightness temperature real part +Operational + + +5944 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +012081 +Brightness temperature imaginary part +Operational + + +5945 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +012082 +Pixel radiometric accuracy +Operational + + +5946 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +025174 +SMOS information flag +Operational + + +5947 +12 +Single level report sequences (satellite data) +312070 +(SMOS data) +033028 +Snapshot overall quality +Operational + + +5948 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +001007 +Satellite identifier +Operational + + +5949 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +002019 +Satellite instruments +Operational + + +5950 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +002139 +SIRAL instrument configuration +Operational + + +5951 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +001096 +Station acquisition +Acquisition station name +Operational + + +5952 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +001040 +Processing centre ID code +Operational + + +5953 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025061 +Software identification and version number +Operational + + +5954 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +005040 +Orbit number +Operational + + +5955 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +005044 +Satellite cycle number +Operational + + +5956 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +008075 +Ascending/descending orbit qualifier +Operational + + +5957 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +008077 +Radiometer sensed surface type +Operational + + +5958 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +004001 +Year +Operational + + +5959 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +004002 +Month +Operational + + +5960 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +004003 +Day +Operational + + +5961 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +004004 +Hour +Operational + + +5962 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +004005 +Minute +Operational + + +5963 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +004006 +Second +Operational + + +5964 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +005001 +Latitude (high accuracy) +Operational + + +5965 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +006001 +Longitude (high accuracy) +Operational + + +5966 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010081 +Altitude of COG above reference ellipsoid +Operational + + +5967 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022156 +Ku band significant wave height +Operational + + +5968 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022142 +Square of significant wave height +Operational + + +5969 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +101020 +Replicate 1 descriptor 20 times +Operational + + +5970 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022149 +20 Hz significant wave height squared +Operational + + +5971 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022143 +STD of 20 Hz SWH squared +Operational + + +5972 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022144 +Number of 20 Hz valid points for SWH squared +Operational + + +5973 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021137 +Ku band corrected ocean backscatter coefficient +Operational + + +5974 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +101020 +Replicate 1 descriptor 20 times +Operational + + +5975 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021181 +20 Hz ocean backscatter coefficient +Operational + + +5976 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021138 +STD Ku band corrected ocean backscatter coefficient +Operational + + +5977 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021180 +Number of 20 Hz valid points for ocean backscatter coefficient +Operational + + +5978 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021177 +Corrected OCOG backscatter coefficient +Operational + + +5979 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021178 +STD of 20 Hz OCOG backscatter coefficient +Operational + + +5980 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021179 +Number of 20 Hz valid points for OCOG backscatter coefficient +Operational + + +5981 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010079 +Off nadir angle of the satellite from platform data +Operational + + +5982 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010085 +Mean sea-surface height +Operational + + +5983 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010086 +Geoid's height +Operational + + +5984 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010087 +Ocean depth/land elevation +Operational + + +5985 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010089 +Total geocentric ocean tide height (solution 2) +Operational + + +5986 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010090 +Long period tide height +Operational + + +5987 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010091 +Tidal loading height +Operational + + +5988 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010092 +Solid Earth tide height +Operational + + +5989 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +010093 +Geocentric pole tide height +Operational + + +5990 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +011097 +Wind speed from altimeter +Operational + + +5991 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021093 +Ku band peakiness +Average of 20 Hz values +Operational + + +5992 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +101020 +Replicate 1 descriptor 20 times +Operational + + +5993 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021182 +20 Hz Ku band peakiness +20 values +Operational + + +5994 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +033053 +Ku band ocean retracking quality +Operational + + +5995 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022151 +Ku band ocean range +Operational + + +5996 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022145 +STD of 20 Hz ocean range +Operational + + +5997 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022148 +Number of 20 Hz valid points for ocean range +Operational + + +5998 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022146 +OCOG range +Operational + + +5999 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +022147 +STD of 20 Hz OCOG range +Operational + + +6000 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025126 +Model dry tropospheric correction +Operational + + +6001 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025128 +Model wet tropospheric correction +Operational + + +6002 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025127 +Inverted barometer correction +Operational + + +6003 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +021176 +High frequency variability correction +Operational + + +6004 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025132 +Ionospheric correction from model on Ku band +Operational + + +6005 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025133 +Sea state bias correction on Ku band +Operational + + +6006 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025182 +L1 processing flag +Operational + + +6007 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025183 +L1 processing quality +Operational + + +6008 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025180 +LRM mode per cent +Operational + + +6009 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025184 +L2 product status +Operational + + +6010 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +025181 +L2 processing flag +Operational + + +6011 +12 +Single level report sequences (satellite data) +312071 +(CryoSat-2 SIRAL altimeter) +033080 +Scan level quality flags +L2 processing quality +Operational + + +6012 +13 +Sequences common to image data +313009 +(Radar reflectivity values) +021001 +Horizontal reflectivity +Operational + + +6013 +13 +Sequences common to image data +313009 +(Radar reflectivity values) +101000 +Delayed replication of 1 descriptor +Operational + + +6014 +13 +Sequences common to image data +313009 +(Radar reflectivity values) +031001 +Delayed descriptor replication factor +Operational + + +6015 +13 +Sequences common to image data +313009 +(Radar reflectivity values) +021001 +Horizontal reflectivity +Operational + + +6016 +13 +Sequences common to image data +313010 +(Radar rainfall intensities) +021036 +Radar rainfall intensity +Operational + + +6017 +13 +Sequences common to image data +313010 +(Radar rainfall intensities) +101000 +Delayed replication of 1 descriptor +Operational + + +6018 +13 +Sequences common to image data +313010 +(Radar rainfall intensities) +031001 +Delayed descriptor replication factor +Operational + + +6019 +13 +Sequences common to image data +313010 +(Radar rainfall intensities) +021036 +Radar rainfall intensity +Operational + + +6020 +13 +Sequences common to image data +313031 +(Non run-length encoded row for Pixel value (4 bits)) +006002 +Longitude (coarse accuracy) +First longitude location minus one increment +Operational + + +6021 +13 +Sequences common to image data +313031 +(Non run-length encoded row for Pixel value (4 bits)) +006012 +Longitude increment (coarse accuracy) +Operational + + +6022 +13 +Sequences common to image data +313031 +(Non run-length encoded row for Pixel value (4 bits)) +101000 +Delayed replication of 1 descriptor +Operational + + +6023 +13 +Sequences common to image data +313031 +(Non run-length encoded row for Pixel value (4 bits)) +031002 +Extended delayed descriptor replication factor +Operational + + +6024 +13 +Sequences common to image data +313031 +(Non run-length encoded row for Pixel value (4 bits)) +030001 +Pixel value (4 bits) +Operational + + +6025 +13 +Sequences common to image data +313032 +(Non run-length encoded picture data for Pixel value (4 bits)) +005002 +Latitude (coarse accuracy) +First latitude location minus one increment +Operational + + +6026 +13 +Sequences common to image data +313032 +(Non run-length encoded picture data for Pixel value (4 bits)) +005012 +Latitude increment (coarse accuracy) +Signed value so cannot cross pole +Operational + + +6027 +13 +Sequences common to image data +313032 +(Non run-length encoded picture data for Pixel value (4 bits)) +101000 +Delayed replication of 1 descriptor +Operational + + +6028 +13 +Sequences common to image data +313032 +(Non run-length encoded picture data for Pixel value (4 bits)) +031002 +Extended delayed descriptor replication factor +Operational + + +6029 +13 +Sequences common to image data +313032 +(Non run-length encoded picture data for Pixel value (4 bits)) +313031 +Non run-length encoded row for Pixel value (4 bits) +Operational + + +6030 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +006002 +Longitude (coarse accuracy) +First longitude location minus one increment +Operational + + +6031 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +110000 +Delayed replication of 10 descriptors +Operational + + +6032 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +031001 +Delayed descriptor replication factor +Operational + + +6033 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +104000 +Delayed replication of 4 descriptors +Operational + + +6034 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +031001 +Delayed descriptor replication factor +Operational + + +6035 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +006012 +Longitude increment (coarse accuracy) +Operational + + +6036 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +101000 +Delayed replication of 1 descriptor +Operational + + +6037 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +031012 +Extended delayed descriptor and data repetition factor +Operational + + +6038 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +030001 +Pixel value (4 bits) +Operational + + +6039 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +006012 +Longitude increment (coarse accuracy) +Operational + + +6040 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +101000 +Delayed replication of 1 descriptor +Operational + + +6041 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +031001 +Delayed descriptor replication factor +Operational + + +6042 +13 +Sequences common to image data +313041 +(Run-length encoded row for Pixel value (4 bits)) +030001 +Pixel value (4 bits) +Operational + + +6043 +13 +Sequences common to image data +313042 +(Run-length encoded picture data for Pixel value (4 bits)) +005002 +Latitude (coarse accuracy) +First latitude location minus one increment +Operational + + +6044 +13 +Sequences common to image data +313042 +(Run-length encoded picture data for Pixel value (4 bits)) +005012 +Latitude increment (coarse accuracy) +Signed value so cannot cross pole +Operational + + +6045 +13 +Sequences common to image data +313042 +(Run-length encoded picture data for Pixel value (4 bits)) +101000 +Delayed replication of 1 descriptor +Operational + + +6046 +13 +Sequences common to image data +313042 +(Run-length encoded picture data for Pixel value (4 bits)) +031002 +Extended delayed descriptor replication factor +Operational + + +6047 +13 +Sequences common to image data +313042 +(Run-length encoded picture data for Pixel value (4 bits)) +313041 +Run-length encoded row for pixel value (4 bits) +Operational + + +6048 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +006002 +Longitude (coarse accuracy) +First longitude location minus one increment +Operational + + +6049 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +005002 +Latitude (coarse accuracy) +First latitude location minus one increment +Operational + + +6050 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +005012 +Latitude increment (coarse accuracy) +Operational + + +6051 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +112000 +Delayed replication of 12 descriptors +Operational + + +6052 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +031001 +Delayed descriptor replication factor +Operational + + +6053 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +110000 +Delayed replication of 10 descriptors +Operational + + +6054 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +031001 +Delayed descriptor replication factor +Operational + + +6055 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +104000 +Delayed replication of 4 descriptors +Operational + + +6056 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +031001 +Delayed descriptor replication factor +Operational + + +6057 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +006012 +Longitude increment (coarse accuracy) +Operational + + +6058 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +101000 +Delayed replication of 1 descriptor +Operational + + +6059 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +031011 +Delayed descriptor and data repetition factor +Operational + + +6060 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +030001 +Pixel value (4 bits) +Operational + + +6061 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +006012 +Longitude increment (coarse accuracy) +Operational + + +6062 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +101000 +Delayed replication of 1 descriptor +Operational + + +6063 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +031001 +Delayed descriptor replication factor +Operational + + +6064 +13 +Sequences common to image data +313043 +(Run-length encoded picture data for pixel value (4 bits), regular grid) +030001 +Pixel value (4 bits) +Operational + + +6065 +15 +Oceanographic report sequences +315001 +(Typically reported underwater sounding without optional fields) +001011 +Ship or mobile land station identifier +Ship's call sign +Operational + + +6066 +15 +Oceanographic report sequences +315001 +(Typically reported underwater sounding without optional fields) +301011 +Year, month, day +Operational + + +6067 +15 +Oceanographic report sequences +315001 +(Typically reported underwater sounding without optional fields) +301012 +Hour, minute +Operational + + +6068 +15 +Oceanographic report sequences +315001 +(Typically reported underwater sounding without optional fields) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6069 +15 +Oceanographic report sequences +315001 +(Typically reported underwater sounding without optional fields) +306001 +Depth, temperature +Operational + + +6070 +15 +Oceanographic report sequences +315002 +(Typically reported underwater sounding without optional fields) +001011 +Ship or mobile land station identifier +Ship's call sign +Operational + + +6071 +15 +Oceanographic report sequences +315002 +(Typically reported underwater sounding without optional fields) +301011 +Year, month, day +Operational + + +6072 +15 +Oceanographic report sequences +315002 +(Typically reported underwater sounding without optional fields) +301012 +Hour, minute +Operational + + +6073 +15 +Oceanographic report sequences +315002 +(Typically reported underwater sounding without optional fields) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6074 +15 +Oceanographic report sequences +315002 +(Typically reported underwater sounding without optional fields) +306004 +Depth, temperature, salinity +Operational + + +6075 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +001087 +WMO marine observing platform extended identifier +Operational + + +6076 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +001085 +Observing platform manufacturer's model +Operational + + +6077 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +001086 +Observing platform manufacturer's serial number +Operational + + +6078 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +002036 +Buoy type +Operational + + +6079 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +002148 +Data collection and/or location system +Operational + + +6080 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +002149 +Type of data buoy +Operational + + +6081 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +022055 +Float cycle number +Operational + + +6082 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +022056 +Direction of profile +Operational + + +6083 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +022067 +Instrument type for water temperature/salinity profile measurement +Operational + + +6084 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +301011 +Year, month, day +Operational + + +6085 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +301012 +Hour, minute +Operational + + +6086 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +301021 +Latitude/longitude (high accuracy) +Operational + + +6087 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +008080 +Qualifier for GTSPP quality flag +Operational + + +6088 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +033050 +Global GTSPP quality flag +Operational + + +6089 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +109000 +Delayed replication of 9 descriptors +Operational + + +6090 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +031002 +Extended delayed descriptor replication factor +Operational + + +6091 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +007065 +Water pressure +Operational + + +6092 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +008080 +Qualifier for GTSPP quality flag +Operational + + +6093 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +033050 +Global GTSPP quality flag +Operational + + +6094 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +022045 +Sea/water temperature +Operational + + +6095 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +008080 +Qualifier for GTSPP quality flag +Operational + + +6096 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +033050 +Global GTSPP quality flag +Operational + + +6097 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +022064 +Salinity +Operational + + +6098 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +008080 +Qualifier for GTSPP quality flag +Operational + + +6099 +15 +Oceanographic report sequences +315003 +(Temperature and salinity profile observed by profile floats) +033050 +Global GTSPP quality flag +Operational + + +6100 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001079 +Unique identifier for the profile +Hexadecimal string +Operational + + +6101 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001011 +Ship or mobile land station identifier +Ship's call sign +Operational + + +6102 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001103 +IMO Number. Unique Lloyd's register += 0 to 9999999 +Operational + + +6103 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001087 +WMO marine observing platform extended identifier +(see Note 1) +Operational + + +6104 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001019 +Long station or site name +Ship name +Operational + + +6105 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001080 +Ship line number according to SOOP +Operational + + +6106 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +005036 +Ship transect number according to SOOP +(see Note 2) +Operational + + +6107 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001036 +Agency in charge of operating the observing platform +Operational + + +6108 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001013 +Speed of motion of moving observing platform +Operational + + +6109 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +001012 +Direction of motion of moving observing platform +Operational + + +6110 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +301011 +Year, month, day +Operational + + +6111 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +301012 +Hour, minute +Operational + + +6112 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +301021 +Latitude/longitude (high accuracy) +Operational + + +6113 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +6114 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +007033 +Height of sensor above water surface +Operational + + +6115 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +002002 +Type of instrumentation for wind measurement +Operational + + +6116 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +011002 +Wind speed +Operational + + +6117 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +011001 +Wind direction +Operational + + +6118 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +007032 +Height of sensor above local ground (or deck of marine platform) +Operational + + +6119 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +007033 +Height of sensor above water surface +Operational + + +6120 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +012101 +Temperature/air temperature +Operational + + +6121 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +012103 +Dewpoint temperature +Operational + + +6122 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +007032 +Height of sensor above local ground (or deck of marine platform) +Set to missing (cancel) +Operational + + +6123 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +007033 +Height of sensor above water surface +Set to missing (cancel) +Operational + + +6124 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +302021 +Waves +Operational + + +6125 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +002031 +Duration and time of current measurement +Operational + + +6126 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +002030 +Method of current measurement +Operational + + +6127 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +022005 +Direction of sea-surface current +Operational + + +6128 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +022032 +Speed of sea-surface current +Operational + + +6129 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +022063 +Total water depth +Operational + + +6130 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +008080 +Qualifier for GTSPP quality flag +Operational + + +6131 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +033050 +Global GTSPP quality flag +Operational + + +6132 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +022178 +XBT/XCTD launcher type +Operational + + +6133 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +022177 +Height of XBT/XCTD launcher +Above sea level | 0 to 50 m in units of whole m +Operational + + +6134 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +022067 +Instrument type for water temperature/salinity profile measurement +Operational + + +6135 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +008041 +Data significance +Operational + + +6136 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +026021 +Year +Operational + + +6137 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +026022 +Month +Operational + + +6138 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +026023 +Day +Operational + + +6139 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +022068 +Water temperature profile recorder types +Operational + + +6140 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +025061 +Software identification and version number +Operational + + +6141 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +008041 +Data significance +Set to missing (cancel) +Operational + + +6142 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +008080 +Qualifier for GTSPP quality flag +Set to missing (cancel) +Operational + + +6143 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +002171 +Instrument serial number for water temperature profile measurement +Operational + + +6144 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +302090 +Sea/water temperature high precision +Operational + + +6145 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +002171 +Instrument serial number for water temperature profile measurement +Operational + + +6146 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +002032 +Indicator for digitization +(see Note 3) +Operational + + +6147 +15 +Oceanographic report sequences +315004 +(XBT temperature profile data sequence) +315005 +Water temperature profile (temperature profile observed by XBT or buoy) +Operational + + +6148 +15 +Oceanographic report sequences +315005 +(Water temperature profile (temperature profile observed by XBT or buoy) +106000 +Delayed replication of 6 descriptors +Operational + + +6149 +15 +Oceanographic report sequences +315005 +(Water temperature profile (Temperature profile observed by XBT or buoy) +031002 +Extended delayed descriptor replication factor +Operational + + +6150 +15 +Oceanographic report sequences +315005 +(Water temperature profile (Temperature profile observed by XBT or buoy) +007063 +Depth below sea/water surface (cm) +Operational + + +6151 +15 +Oceanographic report sequences +315005 +(Water temperature profile (Temperature profile observed by XBT or buoy) +008080 +Qualifier for GTSPP quality flag += 13 Water depth at a level +Operational + + +6152 +15 +Oceanographic report sequences +315005 +(Water temperature profile (Temperature profile observed by XBT or buoy) +033050 +Global GTSPP quality flag +Operational + + +6153 +15 +Oceanographic report sequences +315005 +(Water temperature profile (Temperature profile observed by XBT or buoy) +022043 +Sea/water temperature +Operational + + +6154 +15 +Oceanographic report sequences +315005 +(Water temperature profile (Temperature profile observed by XBT or buoy) +008080 +Qualifier for GTSPP quality flag += 11 Water temperature at a level +Operational + + +6155 +15 +Oceanographic report sequences +315005 +(Water temperature profile (Temperature profile observed by XBT or buoy) +033050 +Global GTSPP quality flag +Operational + + +6156 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +301003 +Ship’s call sign and motion +Operational + + +6157 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Extended identification +001019 +Long station or site name +Operational + + +6158 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Extended identification +001103 +IMO Number. Unique Lloyd's register +Values are restricted to between 0 and 9999999 +Operational + + +6159 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Extended identification +001087 +WMO marine observing platform extended identifier +Set to missing, if ship's call sign is reported +Operational + + +6160 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Cruise/ship line information +001036 +Agency in charge of operating the observing platform +Operational + + +6161 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Cruise/ship line information +001115 +Identifier of the cruise or mission under which the data were collected +Set to missing, if no cruise identifier is reported +Operational + + +6162 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Cruise/ship line information +001080 +Ship line number according to SOOP +Operational + + +6163 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Cruise/ship line information +005036 +Ship transect number according to SOOP +Operational + + +6164 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Cruise/ship line information +301011 +Year, month, day +Operational + + +6165 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Cruise/ship line information +301012 +Hour, minute +Operational + + +6166 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Cruise/ship line information +301021 +Latitude/longitude (high accuracy) +Operational + + +6167 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Profile information +001079 +Unique identifier for the profile +Operational + + +6168 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Profile information +001023 +Observation sequence number +Cast/station number along the line/transect +Operational + + +6169 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Profile information +022063 +Total water depth +Operational + + +6170 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface pressure +101000 +Delayed replication of 1 descriptor +Operational + + +6171 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface pressure +031000 +Short delayed descriptor replication factor +Operational + + +6172 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface pressure +302001 +Pressure and 3-hour pressure change +Operational + + +6173 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Waves +101000 +Delayed replication of 1 descriptor +Operational + + +6174 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Waves +031000 +Short delayed descriptor replication factor +Operational + + +6175 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Waves +302021 +Waves +Operational + + +6176 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and humidity data +101000 +Delayed replication of 1 descriptor +Operational + + +6177 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and humidity data +031000 +Short delayed descriptor replication factor +Operational + + +6178 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and humidity data +302052 +Ship temperature and humidity data +Operational + + +6179 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Wind data +101000 +Delayed replication of 1 descriptor +Operational + + +6180 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Wind data +031000 +Short delayed descriptor replication factor +Operational + + +6181 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Wind data +302059 +Ship wind data +Operational + + +6182 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface temperature, salinity and current +022067 +Instrument type for water temperature/salinity profile measurement +Operational + + +6183 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface temperature, salinity and current +002171 +Instrument serial number for water temperature profile measurement +Operational + + +6184 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface temperature, salinity and current +302090 +Sea/water temperature high precision +Surface temperature +Operational + + +6185 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface temperature, salinity and current +306033 +Surface salinity +Operational + + +6186 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface temperature, salinity and current +306034 +Surface current +Operational + + +6187 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface temperature, salinity and current +002171 +Instrument serial number for water temperature profile measurement +Set to missing (cancel) +Operational + + +6188 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Surface temperature, salinity and current +022067 +Instrument type for water temperature/salinity profile measurement +Set to missing (cancel) +Operational + + +6189 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +002038 +Method of water temperature and/or salinity measurement +Operational + + +6190 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +022067 +Instrument type for water temperature/salinity profile measurement +Operational + + +6191 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +022068 +Water temperature profile recorder types +Operational + + +6192 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +002171 +Instrument serial number for water temperature profile measurement +Operational + + +6193 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +002033 +Method of salinity/depth measurement +Operational + + +6194 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +002032 +Indicator for digitization +Operational + + +6195 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +022056 +Direction of profile +Operational + + +6196 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +003011 +Method of depth calculation +Operational + + +6197 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Temperature and salinity profile data +306035 +Temperature and salinity profile +Operational + + +6198 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +107000 +Delayed replication of 7 descriptors +Operational + + +6199 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +031000 +Short delayed descriptor replication factor +Operational + + +6200 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +002032 +Indicator for digitization +Operational + + +6201 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +003010 +Method of sea/water current measurement +Operational + + +6202 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +002031 +Duration and time of current measurement +Operational + + +6203 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +002040 +Method of removing velocity and motion of platform from current +Operational + + +6204 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +022056 +Direction of profile +Operational + + +6205 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +003011 +Method of depth calculation +Operational + + +6206 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Current profile data +306036 +Current profile +Operational + + +6207 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Dissolved oxygen profile data +104000 +Delayed replication of 4 descriptors +Operational + + +6208 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Dissolved oxygen profile data +031000 +Short delayed descriptor replication factor +Operational + + +6209 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Dissolved oxygen profile data +002032 +Indicator for digitization +Operational + + +6210 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Dissolved oxygen profile data +003012 +Instrument type/sensor for dissolved oxygen measurement +Operational + + +6211 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Dissolved oxygen profile data +003011 +Method of depth calculation +Operational + + +6212 +15 +Oceanographic report sequences +315007 +(Sequence for representation of data derived from a ship-based lowered instrument measuring subsurface sea/water temperature, salinity and current profiles) +Dissolved oxygen profile data +306037 +Dissolved oxygen profile data +Operational + + +6213 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Buoy identification and location +301126 +Sequence for representation of moored buoy identification +Operational + + +6214 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Standard meteorological data +306038 +Sequence for representation of standard surface marine meteorological observations from moored buoys +For buoys equipped with more than 1 anemometer, the height of sensor should relate to the one being used +Operational + + +6215 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional ancillary meteorological data +101000 +Delayed replication of 1 descriptor +Operational + + +6216 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional ancillary meteorological data +031000 +Short delayed descriptor replication factor +Operational + + +6217 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional ancillary meteorological data +302091 +Sequence for representation of ancillary meteorological observations +Operational + + +6218 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional radiation measurements +101000 +Delayed replication of 1 descriptor +Operational + + +6219 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional radiation measurements +031000 +Short delayed descriptor replication factor +Operational + + +6220 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional radiation measurements +302082 +Radiation data +Operational + + +6221 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional basic wave measurements +101000 +Delayed replication of 1 descriptor +Operational + + +6222 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional basic wave measurements +031000 +Short delayed descriptor replication factor +Operational + + +6223 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional basic wave measurements +306039 +Sequence for representation of basic wave measurements +Operational + + +6224 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional spectral wave measurements +101000 +Delayed replication of 1 descriptor +Operational + + +6225 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional spectral wave measurements +031000 +Short delayed descriptor replication factor +Operational + + +6226 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional spectral wave measurements +306040 +Sequence for representation of detailed spectral wave measurements +Operational + + +6227 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature profile measurements +102000 +Delayed replication of 2 descriptors +Operational + + +6228 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature profile measurements +031000 +Short delayed descriptor replication factor +Operational + + +6229 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature profile measurements +002005 +Precision of temperature observation +Operational + + +6230 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature profile measurements +306041 +Depth and temperature profile (high accuracy/precision) +Operational + + +6231 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature and salinity profile measurements +102000 +Delayed replication of 2 descriptors +Operational + + +6232 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature and salinity profile measurements +031000 +Short delayed descriptor replication factor +Operational + + +6233 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature and salinity profile measurements +002005 +Precision of temperature observation +Operational + + +6234 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional temperature and salinity profile measurements +306004 +Depth, temperature, salinity +Operational + + +6235 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional subsurface current measurements +101000 +Delayed replication of 1 descriptor +Operational + + +6236 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional subsurface current measurements +031000 +Short delayed descriptor replication factor +Operational + + +6237 +15 +Oceanographic report sequences +315008 +(Sequence for the representation of data from moored buoys) +Optional subsurface current measurements +306005 +Subsurface current measurements +Operational + + +6238 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +001087 +WMO marine observing platform extended identifier +Operational + + +6239 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +001019 +Long station or site name +Operational + + +6240 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +002149 +Type of data buoy +Operational + + +6241 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Time/date of last known position +008021 +Time significance += 26 Time of last known position +Operational + + +6242 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Time/date of last known position +301011 +Year, month, day +Date of last known position +Operational + + +6243 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Time/date of last known position +301012 +Hour, minute +Time of last known position +Operational + + +6244 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +301021 +Latitude/longitude (high accuracy) +Operational + + +6245 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +208016 +Change width of CCITT IA5 field +Change to 16 characters +Operational + + +6246 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +001051 +Platform Transmitter ID number +Operational + + +6247 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +208000 +Change width of CCITT IA5 field +Cancel +Operational + + +6248 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +002148 +Data collection and/or location system += 1 Argos, = 8 Iridium and GPS, = 9 Argos-3 +Operational + + +6249 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +001012 +Direction of motion of moving observing platform +Platform drift direction +Operational + + +6250 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +001014 +Platform drift speed (high precision) +Speed of motion of moving observing platform +Operational + + +6251 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +033022 +Quality of buoy satellite transmission +Operational + + +6252 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +033023 +Quality of buoy location +Operational + + +6253 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +033027 +Location quality class (range of radius of 66% confidence) +Operational + + +6254 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Location and location quality +025026 +Battery voltage (large range) +Platform battery voltage +Operational + + +6255 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Drogue status +002034 +Drogue type +Operational + + +6256 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Drogue status +022060 +Lagrangian drifter drogue status +Operational + + +6257 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Drogue status +007070 +Drogue depth +Operational + + +6258 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Drogue status +002190 +Lagrangian drifter submergence (% time submerged) +Operational + + +6259 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Time/date of observation +008021 +Time significance += 25 Nominal reporting time +Operational + + +6260 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Time/date of observation +301011 +Year, month, day +Date of observation +Operational + + +6261 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Time/date of observation +301012 +Hour, minute +Time of observation +Operational + + +6262 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Surface temperature and salinity +002005 +Precision of temperature observation +Operational + + +6263 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Surface temperature and salinity +022043 +Sea/water temperature +Operational + + +6264 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Surface temperature and salinity +002033 +Method of salinity/depth measurement +Operational + + +6265 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Surface temperature and salinity +022059 +Sea-surface salinity +Operational + + +6266 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Surface type/ice information +008029 +Surface type +Operational + + +6267 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Surface type/ice information +013115 +Ice thickness +Operational + + +6268 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Optional temperature and salinity profile measurements +103000 +Delayed replication of 3 descriptors +Operational + + +6269 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Optional temperature and salinity profile measurements +031000 +Short delayed descriptor replication factor +Operational + + +6270 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Optional temperature and salinity profile measurements +002005 +Precision of temperature observation +Operational + + +6271 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Optional temperature and salinity profile measurements +306004 +Depth, temperature, salinity +Operational + + +6272 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Optional temperature and salinity profile measurements +002005 +Precision of temperature observation +Set to missing (cancel) +Operational + + +6273 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Pressure and air temperature data +010004 +Pressure +Operational + + +6274 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Pressure and air temperature data +010051 +Pressure reduced to mean sea level +Operational + + +6275 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Pressure and air temperature data +102000 +Delayed replication of 2 descriptors +Operational + + +6276 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Pressure and air temperature data +031000 +Short delayed descriptor replication factor +Operational + + +6277 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Pressure and air temperature data +007033 +Height of sensor above water surface +Operational + + +6278 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Pressure and air temperature data +012101 +Temperature/air temperature +Operational + + +6279 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Wind data +101000 +Delayed replication of 1 descriptor +Operational + + +6280 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Wind data +031000 +Short delayed descriptor replication factor +Operational + + +6281 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Wind data +306042 +Wind measurement from drifting buoy +Operational + + +6282 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Wave data +101000 +Delayed replication of 1 descriptor +Operational + + +6283 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Wave data +031000 +Short delayed descriptor replication factor +Operational + + +6284 +15 +Oceanographic report sequences +315009 +(Sequence for the representation of data from drifting buoys) +Wave data +306039 +Sequence for representation of basic wave measurements +Operational + + +6285 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +112000 +Delayed replication of 12 descriptors +Operational + + +6286 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +031001 +Delayed descriptor replication factor +Operational + + +6287 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +201144 +Change data width +Add 16 bits to the width for each data element in Table B +Operational + + +6288 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +202133 +Change scale +Add 5 to the scale for each data element in Table B +Operational + + +6289 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +022080 +Waveband central frequency (Hz) +Operational + + +6290 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +022096 +Spectral band width (Hz) +Operational + + +6291 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +022069 +Spectral wave density (m2 Hz-1) +Operational + + +6292 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +202000 +Change data width +Cancel +Operational + + +6293 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +201000 +Change scale +Cancel +Operational + + +6294 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +042011 +a1 coefficient of the directional Fourier series +First moment of the directional wave spectrum +Operational + + +6295 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +042012 +b1 coefficient of the directional Fourier series +First moment of the directional wave spectrum +Operational + + +6296 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +042013 +a2 coefficient of the directional Fourier series +Second moment of the directional wave spectrum +Operational + + +6297 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +042014 +b2 coefficient of the directional Fourier series +Second moment of the directional wave spectrum +Operational + + +6298 +15 +Oceanographic report sequences +315010 +(First five Fourier components of the wave spectrum) +042015 +Check factor K +Inverse of wave ellipticity +Operational + + +6299 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +301150 +WIGOS identifier +Operational + + +6300 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +001087 +WMO marine observing platform extended identifier +Operational + + +6301 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +001036 +Agency in charge of operating the observing platform +Operational + + +6302 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +001085 +Observing platform manufacturer’s model +Operational + + +6303 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +001086 +Observing platform manufacturer’s serial number +Operational + + +6304 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +003001 +Surface station type +Operational + + +6305 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +208032 +Change width of CCITT IA5 field +Operational + + +6306 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +001079 +Unique ID for profile +UUID for report, 32-character hex string +Operational + + +6307 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +208000 +Change width of CCITT IA5 field +Operational + + +6308 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +301011 +Year, month, day +Operational + + +6309 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +301012 +Hour, minute +Operational + + +6310 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +301021 +Latitude/longitude (high accuracy) +Operational + + +6311 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +001012 +Direction of motion of moving observing platform +Operational + + +6312 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +001014 +Platform drift speed (high precision) +Operational + + +6313 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +011104 +True heading of aircraft, ship or other mobile platform +Operational + + +6314 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +103000 +Delayed replication of 3 descriptor +Operational + + +6315 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +031000 +Short delayed descriptor replication factor +Operational + + +6316 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +007031 +Height of barometer above mean sea level +Operational + + +6317 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +306038 +Sequence for representation of standard surface marine meteorological observations from moored buoys +Operational + + +6318 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +012161 +Skin temperature +Operational + + +6319 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +101000 +Delayed replication of 1 descriptor +Operational + + +6320 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +031000 +Short delayed descriptor replication factor +Operational + + +6321 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +306034 +Surface current +Operational + + +6322 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +101000 +Delayed replication of 1 descriptor +Operational + + +6323 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +031000 +Short delayed descriptor replication factor +Operational + + +6324 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +306039 +Sequence for representation of basic wave measurements +Operational + + +6325 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +101000 +Delayed replication of 1 descriptor +Operational + + +6326 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +031000 +Short delayed descriptor replication factor +Operational + + +6327 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +306033 +Surface salinity +Operational + + +6328 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +101000 +Delayed replication of 1 descriptor +Operational + + +6329 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +031000 +Short delayed descriptor replication factor +Operational + + +6330 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +306041 +Depth and temperature profile (high accuracy/precision) +Operational + + +6331 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +101000 +Delayed replication of 1 descriptor +Operational + + +6332 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +031000 +Short delayed descriptor replication factor +Operational + + +6333 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +306004 +Depth, temperature, salinity +Operational + + +6334 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +101000 +Delayed replication of 1 descriptor +Operational + + +6335 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +031000 +Short delayed descriptor replication factor +Operational + + +6336 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +306005 +Sub-surface current measurements +Operational + + +6337 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +105000 +Delayed replication of 5 descriptors +Operational + + +6338 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +031000 +Short delayed descriptor replication factor +Operational + + +6339 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +041001 +pCO2 +Operational + + +6340 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +008043 +Atmospheric chemical or physical constituent type +Operational + + +6341 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +015028 +Mole fraction of atmospheric constituent/pollutant in dry air +Operational + + +6342 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +008043 +Atmospheric chemical or physical constituent type +Operational + + +6343 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +013080 +Water pH +Operational + + +6344 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +104000 +Delayed replication of 4 descriptors +Operational + + +6345 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +031000 +Short delayed descriptor replication factor +Operational + + +6346 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +041005 +Turbidity +Operational + + +6347 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +041003 +Dissolved nitrates +Operational + + +6348 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +022188 +Dissolved oxygen +Operational + + +6349 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +041002 +Fluorescence +Operational + + +6350 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +101000 +Delayed replication of 1 descriptor +Operational + + +6351 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +031000 +Short delayed descriptor replication factor +Operational + + +6352 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +306040 +Sequence for representation of detailed spectral wave measurements +Operational + + +6353 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +104000 +Delayed replication of 4 descriptors +Operational + + +6354 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +031000 +Short delayed descriptor replication factor +Operational + + +6355 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +008021 +Time significance +Operational + + +6356 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +004025 +Time period or displacement +Operational + + +6357 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +014017 +Instantaneous long-wave radiation +Operational + + +6358 +15 +Oceanographic report sequences +315011 +(Met-ocean observations from autonomous surface vehicles) +014018 +Instantaneous short-wave radiation +Operational + + +6359 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +301150 +WIGOS identifier +Operational + + +6360 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +001087 +WMO marine observing platform extended identifier +WMO number where assigned +Operational + + +6361 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +208032 +Change width of CCITT IA5 +change width to 32 characters +Operational + + +6362 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +001019 +Ship or mobile land station identifier +Platform ID, e.g. ct145-933-BAT2-18 (max 32 characters) +Operational + + +6363 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +208000 +Change width of CCITT IA5 +Cancel change width +Operational + + +6364 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +003001 +Surface station type +10 (Marine animal) +Operational + + +6365 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +022067 +Instrument type for water temperature and/or salinity measurement +set to 995 (attached to marine animal) +Operational + + +6366 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +001051 +Platform transmitter ID number +e.g. Argos PTT +Operational + + +6367 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +002148 +Data collection and/or location system +Operational + + +6368 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +112000 +Delayed replication of 12 descriptors +Operational + + +6369 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +031001 +Delayed descriptor replication factor +Operational + + +6370 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +008021 +Time significance +set to 26, time of last known position +Operational + + +6371 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +301011 +Year, month, day +Operational + + +6372 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +301012 +Hour, minute +Operational + + +6373 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +301021 +Latitude/longitude (high accuracy) +Operational + + +6374 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +001012 +Direction of motion of moving observing platform +Operational + + +6375 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +001014 +Platform drift speed (high precision) +Operational + + +6376 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +033022 +Quality of buoy satellite transmission +Operational + + +6377 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +033023 +Quality buoy location +Operational + + +6378 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +033027 +Location quality class (range of radius of 66% confidence) +Operational + + +6379 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +007063 +Depth below sea/water surface +Operational + + +6380 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +022045 +Sea/water temperature +Operational + + +6381 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +008021 +Time significance +Set to missing/cancel +Operational + + +6382 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +107000 +Delayed replication of 7 descriptors +Operational + + +6383 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +031001 +Delayed descriptor replication factor +Operational + + +6384 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +301011 +Year, month, day +Operational + + +6385 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +301012 +Hour, minute +Operational + + +6386 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +301021 +Latitude/longitude (high accuracy) +Operational + + +6387 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +001079 +Unique identifier for the profile +Profile ID +Operational + + +6388 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +001023 +Observation sequence number +Upcast number +Operational + + +6389 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +022056 +Direction of profile +Set to 0 (ascending/upwards) +Operational + + +6390 +15 +Oceanographic report sequences +315013 +(Sequence for reporting trajectory profile data from marine animal tags) +306035 +Temperature and salinity profile +Operational + + +6391 +16 +Synoptic feature sequences +316001 +301011 +Year, month, day +Operational + + +6392 +16 +Synoptic feature sequences +316001 +004004 +Hour +Operational + + +6393 +16 +Synoptic feature sequences +316001 +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6394 +16 +Synoptic feature sequences +316001 +001021 +Synoptic feature identifier +Operational + + +6395 +16 +Synoptic feature sequences +316001 +002041 +Method for estimating reports related to synoptic features +Operational + + +6396 +16 +Synoptic feature sequences +316001 +019001 +Type of synoptic feature +Operational + + +6397 +16 +Synoptic feature sequences +316001 +010051 +Pressure reduced to mean sea level +Operational + + +6398 +16 +Synoptic feature sequences +316001 +019002 +Effective radius of feature +Operational + + +6399 +16 +Synoptic feature sequences +316001 +019003 +Wind speed threshold +15 m s-1 typically +Operational + + +6400 +16 +Synoptic feature sequences +316001 +019004 +Effective radius with respect to wind speeds above threshold +Operational + + +6401 +16 +Synoptic feature sequences +316002 +(Header) +008021 +Time significance +Data time (analysis) +Operational + + +6402 +16 +Synoptic feature sequences +316002 +(Header) +004001 +Year +Operational + + +6403 +16 +Synoptic feature sequences +316002 +(Header) +004002 +Month +Operational + + +6404 +16 +Synoptic feature sequences +316002 +(Header) +004003 +Day +Operational + + +6405 +16 +Synoptic feature sequences +316002 +(Header) +004004 +Hour +Operational + + +6406 +16 +Synoptic feature sequences +316002 +(Header) +004005 +Minute +Operational + + +6407 +16 +Synoptic feature sequences +316002 +(Header) +001033 +Identification of originating/generating centre +Operational + + +6408 +16 +Synoptic feature sequences +316002 +(Header) +008021 +Time significance +Validity time (forecast) +Operational + + +6409 +16 +Synoptic feature sequences +316002 +(Header) +004001 +Year +Operational + + +6410 +16 +Synoptic feature sequences +316002 +(Header) +004002 +Month +Operational + + +6411 +16 +Synoptic feature sequences +316002 +(Header) +004003 +Day +Operational + + +6412 +16 +Synoptic feature sequences +316002 +(Header) +004004 +Hour +Operational + + +6413 +16 +Synoptic feature sequences +316002 +(Header) +004005 +Minute +Operational + + +6414 +16 +Synoptic feature sequences +316002 +(Header) +007002 +Height or altitude +Flight level (base of chart layer) +Operational + + +6415 +16 +Synoptic feature sequences +316002 +(Header) +007002 +Height or altitude +Flight level (top of chart layer) +Operational + + +6416 +16 +Synoptic feature sequences +316003 +(Jet stream) +110000 +Delayed replication of 10 descriptors +Operational + + +6417 +16 +Synoptic feature sequences +316003 +(Jet stream) +031001 +Delayed descriptor replication factor +Operational + + +6418 +16 +Synoptic feature sequences +316003 +(Jet stream) +008011 +Meteorological feature +Jet stream value +Operational + + +6419 +16 +Synoptic feature sequences +316003 +(Jet stream) +008007 +Dimensional significance +Value for line +Operational + + +6420 +16 +Synoptic feature sequences +316003 +(Jet stream) +104000 +Delayed replication of 4 descriptors +Operational + + +6421 +16 +Synoptic feature sequences +316003 +(Jet stream) +031001 +Delayed descriptor replication factor +Operational + + +6422 +16 +Synoptic feature sequences +316003 +(Jet stream) +005002 +Latitude (coarse accuracy) +Operational + + +6423 +16 +Synoptic feature sequences +316003 +(Jet stream) +006002 +Longitude (coarse accuracy) +Operational + + +6424 +16 +Synoptic feature sequences +316003 +(Jet stream) +010002 +Height +Flight level +Operational + + +6425 +16 +Synoptic feature sequences +316003 +(Jet stream) +011002 +Wind speed +Operational + + +6426 +16 +Synoptic feature sequences +316003 +(Jet stream) +008007 +Dimensional significance +Cancel +Operational + + +6427 +16 +Synoptic feature sequences +316003 +(Jet stream) +008011 +Meteorological feature +Cancel | End of object +Operational + + +6428 +16 +Synoptic feature sequences +316004 +(Turbulence) +111000 +Delayed replication of 11 descriptors +Operational + + +6429 +16 +Synoptic feature sequences +316004 +(Turbulence) +031001 +Delayed descriptor replication factor +Operational + + +6430 +16 +Synoptic feature sequences +316004 +(Turbulence) +008011 +Meteorological feature +Value for turbulence +Operational + + +6431 +16 +Synoptic feature sequences +316004 +(Turbulence) +008007 +Dimensional significance +Value for area +Operational + + +6432 +16 +Synoptic feature sequences +316004 +(Turbulence) +007002 +Height or altitude +Flight level (base of layer) +Operational + + +6433 +16 +Synoptic feature sequences +316004 +(Turbulence) +007002 +Height or altitude +Flight level (top of layer) +Operational + + +6434 +16 +Synoptic feature sequences +316004 +(Turbulence) +102000 +Delayed replication of 2 descriptors +Operational + + +6435 +16 +Synoptic feature sequences +316004 +(Turbulence) +031001 +Delayed descriptor replication factor +Operational + + +6436 +16 +Synoptic feature sequences +316004 +(Turbulence) +005002 +Latitude (coarse accuracy) +Operational + + +6437 +16 +Synoptic feature sequences +316004 +(Turbulence) +006002 +Longitude (coarse accuracy) +Operational + + +6438 +16 +Synoptic feature sequences +316004 +(Turbulence) +011031 +Degree of turbulence +(see Note 1) +Operational + + +6439 +16 +Synoptic feature sequences +316004 +(Turbulence) +008007 +Dimensional significance +Cancel +Operational + + +6440 +16 +Synoptic feature sequences +316004 +(Turbulence) +008011 +Meteorological feature +Cancel | End of object +Operational + + +6441 +16 +Synoptic feature sequences +316005 +(Storm) +108000 +Delayed replication of 8 descriptors +Operational + + +6442 +16 +Synoptic feature sequences +316005 +(Storm) +031001 +Delayed descriptor replication factor +Operational + + +6443 +16 +Synoptic feature sequences +316005 +(Storm) +008005 +Meteorological attribute significance +Storm centre +Operational + + +6444 +16 +Synoptic feature sequences +316005 +(Storm) +008007 +Dimensional significance +Value for point +Operational + + +6445 +16 +Synoptic feature sequences +316005 +(Storm) +005002 +Latitude (coarse accuracy) +Operational + + +6446 +16 +Synoptic feature sequences +316005 +(Storm) +006002 +Longitude (coarse accuracy) +Operational + + +6447 +16 +Synoptic feature sequences +316005 +(Storm) +001026 +WMO storm name +Use "UNKNOWN" for a sandstorm +Operational + + +6448 +16 +Synoptic feature sequences +316005 +(Storm) +019001 +Type of synoptic feature +Value for type of storm +Operational + + +6449 +16 +Synoptic feature sequences +316005 +(Storm) +008007 +Dimensional significance +Cancel +Operational + + +6450 +16 +Synoptic feature sequences +316005 +(Storm) +008005 +Meteorological attribute significance +Cancel | End of object +Operational + + +6451 +16 +Synoptic feature sequences +316006 +(Cloud) +112000 +Delayed replication of 12 descriptors +Operational + + +6452 +16 +Synoptic feature sequences +316006 +(Cloud) +031001 +Delayed descriptor replication factor +Operational + + +6453 +16 +Synoptic feature sequences +316006 +(Cloud) +008011 +Meteorological feature +Value for cloud +Operational + + +6454 +16 +Synoptic feature sequences +316006 +(Cloud) +008007 +Dimensional significance +Value for area +Operational + + +6455 +16 +Synoptic feature sequences +316006 +(Cloud) +007002 +Height or altitude +Flight level (base of layer) +Operational + + +6456 +16 +Synoptic feature sequences +316006 +(Cloud) +007002 +Height or altitude +Flight level (top of layer) +Operational + + +6457 +16 +Synoptic feature sequences +316006 +(Cloud) +102000 +Delayed replication of 2 descriptors +Operational + + +6458 +16 +Synoptic feature sequences +316006 +(Cloud) +031001 +Delayed descriptor replication factor +Operational + + +6459 +16 +Synoptic feature sequences +316006 +(Cloud) +005002 +Latitude (coarse accuracy) +Operational + + +6460 +16 +Synoptic feature sequences +316006 +(Cloud) +006002 +Longitude (coarse accuracy) +Operational + + +6461 +16 +Synoptic feature sequences +316006 +(Cloud) +020011 +Cloud amount +(see Note 2) +Operational + + +6462 +16 +Synoptic feature sequences +316006 +(Cloud) +020012 +Cloud type +Operational + + +6463 +16 +Synoptic feature sequences +316006 +(Cloud) +008007 +Dimensional significance +Cancel +Operational + + +6464 +16 +Synoptic feature sequences +316006 +(Cloud) +008011 +Meteorological feature +Cancel | End of object +Operational + + +6465 +16 +Synoptic feature sequences +316007 +(Front) +110000 +Delayed replication of 10 descriptors +Operational + + +6466 +16 +Synoptic feature sequences +316007 +(Front) +031001 +Delayed descriptor replication factor +Operational + + +6467 +16 +Synoptic feature sequences +316007 +(Front) +008011 +Meteorological feature +Value for type of front +(see Note 3) +Operational + + +6468 +16 +Synoptic feature sequences +316007 +(Front) +008007 +Dimensional significance +Value for line +Operational + + +6469 +16 +Synoptic feature sequences +316007 +(Front) +104000 +Delayed replication of 4 descriptors +Operational + + +6470 +16 +Synoptic feature sequences +316007 +(Front) +031001 +Delayed descriptor replication factor +Operational + + +6471 +16 +Synoptic feature sequences +316007 +(Front) +005002 +Latitude (coarse accuracy) +Operational + + +6472 +16 +Synoptic feature sequences +316007 +(Front) +006002 +Longitude (coarse accuracy) +Operational + + +6473 +16 +Synoptic feature sequences +316007 +(Front) +019005 +Direction of motion of feature +Operational + + +6474 +16 +Synoptic feature sequences +316007 +(Front) +019006 +Speed of motion of feature +Operational + + +6475 +16 +Synoptic feature sequences +316007 +(Front) +008007 +Dimensional significance +Cancel +Operational + + +6476 +16 +Synoptic feature sequences +316007 +(Front) +008011 +Meteorological feature +Cancel | End of object +Operational + + +6477 +16 +Synoptic feature sequences +316008 +(Tropopause) +111000 +Delayed replication of 11 descriptors +Operational + + +6478 +16 +Synoptic feature sequences +316008 +(Tropopause) +031001 +Delayed descriptor replication factor +Operational + + +6479 +16 +Synoptic feature sequences +316008 +(Tropopause) +008001 +Vertical sounding significance +Bit 3 set for tropopause +Operational + + +6480 +16 +Synoptic feature sequences +316008 +(Tropopause) +008007 +Dimensional significance +Value for point +Operational + + +6481 +16 +Synoptic feature sequences +316008 +(Tropopause) +008023 +First-order statistics +Type of tropopause value +(see Note 4) +Operational + + +6482 +16 +Synoptic feature sequences +316008 +(Tropopause) +103000 +Delayed replication of 3 descriptors +Operational + + +6483 +16 +Synoptic feature sequences +316008 +(Tropopause) +031001 +Delayed descriptor replication factor +Operational + + +6484 +16 +Synoptic feature sequences +316008 +(Tropopause) +005002 +Latitude (coarse accuracy) +Operational + + +6485 +16 +Synoptic feature sequences +316008 +(Tropopause) +006002 +Longitude (coarse accuracy) +Operational + + +6486 +16 +Synoptic feature sequences +316008 +(Tropopause) +010002 +Height +Operational + + +6487 +16 +Synoptic feature sequences +316008 +(Tropopause) +008023 +First-order statistics +Cancel +Operational + + +6488 +16 +Synoptic feature sequences +316008 +(Tropopause) +008007 +Dimensional significance +Cancel +Operational + + +6489 +16 +Synoptic feature sequences +316008 +(Tropopause) +008001 +Vertical sounding significance +Cancel | End of object +Operational + + +6490 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +111000 +Delayed replication of 11 descriptors +Operational + + +6491 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +031001 +Delayed descriptor replication factor +Operational + + +6492 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +008011 +Meteorological feature +Value for airframe icing +Operational + + +6493 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +008007 +Dimensional significance +Value for area +Operational + + +6494 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +007002 +Height or altitude +Flight level (base of layer) +Operational + + +6495 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +007002 +Height or altitude +Flight level (top of layer) +Operational + + +6496 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +102000 +Delayed replication of 2 descriptors +Operational + + +6497 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +031001 +Delayed descriptor replication factor +Operational + + +6498 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +005002 +Latitude (coarse accuracy) +Operational + + +6499 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +006002 +Longitude (coarse accuracy) +Operational + + +6500 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +020041 +Airframe icing +Type of airframe icing +Operational + + +6501 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +008007 +Dimensional significance +Cancel +Operational + + +6502 +16 +Synoptic feature sequences +316009 +(Airframe icing area) +008011 +Meteorological feature +Cancel | End of object +Operational + + +6503 +16 +Synoptic feature sequences +316010 +(Name of feature) +107000 +Delayed replication of 7 descriptors +Operational + + +6504 +16 +Synoptic feature sequences +316010 +(Name of feature) +031001 +Delayed descriptor replication factor +Operational + + +6505 +16 +Synoptic feature sequences +316010 +(Name of feature) +008011 +Meteorological feature +Operational + + +6506 +16 +Synoptic feature sequences +316010 +(Name of feature) +008007 +Dimensional significance +Value for point +Operational + + +6507 +16 +Synoptic feature sequences +316010 +(Name of feature) +001022 +Name of feature +Operational + + +6508 +16 +Synoptic feature sequences +316010 +(Name of feature) +005002 +Latitude (coarse accuracy) +Operational + + +6509 +16 +Synoptic feature sequences +316010 +(Name of feature) +006002 +Longitude (coarse accuracy) +Operational + + +6510 +16 +Synoptic feature sequences +316010 +(Name of feature) +008007 +Dimensional significance +Cancel +Operational + + +6511 +16 +Synoptic feature sequences +316010 +(Name of feature) +008011 +Meteorological feature +Cancel | End of object +Operational + + +6512 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +117000 +Delayed replication of 17 descriptors +Operational + + +6513 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +031001 +Delayed descriptor replication factor +Operational + + +6514 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +008011 +Meteorological feature +Value for special clouds +Operational + + +6515 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +001022 +Name of feature +Volcano name +Operational + + +6516 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +008007 +Dimensional significance +Value for point +Operational + + +6517 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +102000 +Delayed replication of 2 descriptors +Operational + + +6518 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +031001 +Delayed descriptor replication factor +Operational + + +6519 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +005002 +Latitude (coarse accuracy) +Operational + + +6520 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +006002 +Longitude (coarse accuracy) +Operational + + +6521 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +008021 +Time significance +Eruption starting time +Operational + + +6522 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +004001 +Year +Operational + + +6523 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +004002 +Month +Operational + + +6524 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +004003 +Day +Operational + + +6525 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +004004 +Hour +Operational + + +6526 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +004005 +Minute +Operational + + +6527 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +020090 +Special clouds +Clouds from volcanic eruptions +Operational + + +6528 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +008021 +Time significance +Cancel +Operational + + +6529 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +008007 +Dimensional significance +Cancel +Operational + + +6530 +16 +Synoptic feature sequences +316011 +(Volcano erupting) +008011 +Meteorological feature +Cancel | End of object +Operational + + +6531 +16 +Synoptic feature sequences +316020 +(Tropical storm identification) +001033 +Identification of originating/generating centre +Operational + + +6532 +16 +Synoptic feature sequences +316020 +(Tropical storm identification) +001025 +Storm identifier +Operational + + +6533 +16 +Synoptic feature sequences +316020 +(Tropical storm identification) +001027 +WMO long storm name +Operational + + +6534 +16 +Synoptic feature sequences +316020 +(Tropical storm identification) +301011 +Year, month, day +Operational + + +6535 +16 +Synoptic feature sequences +316020 +(Tropical storm identification) +301012 +Hour, minute +Operational + + +6536 +16 +Synoptic feature sequences +316021 +(Analysis data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6537 +16 +Synoptic feature sequences +316021 +(Analysis data) +002041 +Method for estimating reports related to synoptic features +Operational + + +6538 +16 +Synoptic feature sequences +316021 +(Analysis data) +019001 +Type of synoptic feature +Operational + + +6539 +16 +Synoptic feature sequences +316021 +(Analysis data) +019007 +Effective radius of feature +Operational + + +6540 +16 +Synoptic feature sequences +316021 +(Analysis data) +019005 +Direction of motion of feature +Operational + + +6541 +16 +Synoptic feature sequences +316021 +(Analysis data) +019006 +Speed of motion of feature +Operational + + +6542 +16 +Synoptic feature sequences +316021 +(Analysis data) +019008 +Vertical extent of circulation +Operational + + +6543 +16 +Synoptic feature sequences +316021 +(Analysis data) +008005 +Meteorological attribute significance += 1 Storm centre +Operational + + +6544 +16 +Synoptic feature sequences +316021 +(Analysis data) +010004 +Pressure +Storm centre by virtue of preceding significance qualifier +Operational + + +6545 +16 +Synoptic feature sequences +316021 +(Analysis data) +008005 +Meteorological attribute significance += 2 Outer limit or edge of feature +Operational + + +6546 +16 +Synoptic feature sequences +316021 +(Analysis data) +010004 +Pressure +Outer limit +Operational + + +6547 +16 +Synoptic feature sequences +316021 +(Analysis data) +019007 +Effective radius of feature +Outer limit +Operational + + +6548 +16 +Synoptic feature sequences +316021 +(Analysis data) +008005 +Meteorological attribute significance += 3 Location of maximum wind +Operational + + +6549 +16 +Synoptic feature sequences +316021 +(Analysis data) +008021 +Time significance +Time averaged +Operational + + +6550 +16 +Synoptic feature sequences +316021 +(Analysis data) +004075 +Short time period or displacement +Minutes +Operational + + +6551 +16 +Synoptic feature sequences +316021 +(Analysis data) +011040 +Maximum wind speed (mean wind) +Operational + + +6552 +16 +Synoptic feature sequences +316021 +(Analysis data) +019007 +Effective radius of feature +Maximum wind +Operational + + +6553 +16 +Synoptic feature sequences +316021 +(Analysis data) +105004 +Replicate 5 descriptors 4 times +Operational + + +6554 +16 +Synoptic feature sequences +316021 +(Analysis data) +005021 +Bearing or azimuth +Starting +Operational + + +6555 +16 +Synoptic feature sequences +316021 +(Analysis data) +005021 +Bearing or azimuth +Ending +Operational + + +6556 +16 +Synoptic feature sequences +316021 +(Analysis data) +102002 +Replicate 2 descriptors 2 times +Operational + + +6557 +16 +Synoptic feature sequences +316021 +(Analysis data) +019003 +Wind speed threshold +Operational + + +6558 +16 +Synoptic feature sequences +316021 +(Analysis data) +019004 +Effective radius with respect to wind speeds above threshold +Operational + + +6559 +16 +Synoptic feature sequences +316022 +(Forecast data) +001032 +Generating application +NWP model name, etc. code table defined by originating/generating centre +Operational + + +6560 +16 +Synoptic feature sequences +316022 +(Forecast data) +002041 +Method for estimating reports related to synoptic features +Operational + + +6561 +16 +Synoptic feature sequences +316022 +(Forecast data) +019001 +Type of synoptic feature +Operational + + +6562 +16 +Synoptic feature sequences +316022 +(Forecast data) +019010 +Method for tracking the centre of synoptic feature +Operational + + +6563 +16 +Synoptic feature sequences +316022 +(Forecast data) +118000 +Delayed replication of 18 descriptors +Operational + + +6564 +16 +Synoptic feature sequences +316022 +(Forecast data) +031001 +Delayed descriptor replication factor +Operational + + +6565 +16 +Synoptic feature sequences +316022 +(Forecast data) +008021 +Time significance +Forecast +Operational + + +6566 +16 +Synoptic feature sequences +316022 +(Forecast data) +004014 +Time increment +Hours +Operational + + +6567 +16 +Synoptic feature sequences +316022 +(Forecast data) +008005 +Meteorological attribute significance +Surface synoptic feature +Operational + + +6568 +16 +Synoptic feature sequences +316022 +(Forecast data) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6569 +16 +Synoptic feature sequences +316022 +(Forecast data) +019005 +Direction of motion of feature +Operational + + +6570 +16 +Synoptic feature sequences +316022 +(Forecast data) +019006 +Speed of motion of feature +Operational + + +6571 +16 +Synoptic feature sequences +316022 +(Forecast data) +010004 +Pressure +Operational + + +6572 +16 +Synoptic feature sequences +316022 +(Forecast data) +011041 +Maximum wind gust speed +For example, used in the United States +Operational + + +6573 +16 +Synoptic feature sequences +316022 +(Forecast data) +008021 +Time significance +Forecast time averaged +Operational + + +6574 +16 +Synoptic feature sequences +316022 +(Forecast data) +004075 +Short time period or displacement +Minutes +Operational + + +6575 +16 +Synoptic feature sequences +316022 +(Forecast data) +011040 +Maximum wind speed (mean wind) +Operational + + +6576 +16 +Synoptic feature sequences +316022 +(Forecast data) +019008 +Vertical extent of circulation +Operational + + +6577 +16 +Synoptic feature sequences +316022 +(Forecast data) +105004 +Replicate 5 descriptors 4 times +Operational + + +6578 +16 +Synoptic feature sequences +316022 +(Forecast data) +005021 +Bearing or azimuth +Starting +Operational + + +6579 +16 +Synoptic feature sequences +316022 +(Forecast data) +005021 +Bearing or azimuth +Ending +Operational + + +6580 +16 +Synoptic feature sequences +316022 +(Forecast data) +102002 +Replicate 2 descriptors 2 times +Operational + + +6581 +16 +Synoptic feature sequences +316022 +(Forecast data) +019003 +Wind speed threshold +Operational + + +6582 +16 +Synoptic feature sequences +316022 +(Forecast data) +019004 +Effective radius with respect to wind speeds above threshold +Operational + + +6583 +16 +Synoptic feature sequences +316026 +(Tropical storm analysis information) +316020 +Tropical storm identification +Operational + + +6584 +16 +Synoptic feature sequences +316026 +(Tropical storm analysis information) +316021 +Analysis data +Operational + + +6585 +16 +Synoptic feature sequences +316027 +(Tropical storm forecast information) +316020 +Tropical storm identification +Operational + + +6586 +16 +Synoptic feature sequences +316027 +(Tropical storm forecast information) +316022 +Forecast data +Operational + + +6587 +16 +Synoptic feature sequences +316030 +(SIGMET header) +301014 +Time period +For which SIGMET is valid +Operational + + +6588 +16 +Synoptic feature sequences +316030 +(SIGMET header) +001037 +SIGMET sequence identifier +Operational + + +6589 +16 +Synoptic feature sequences +316030 +(SIGMET header) +010064 +SIGMET cruising level +Operational + + +6590 +16 +Synoptic feature sequences +316030 +(SIGMET header) +008019 +Qualifier for following centre identifier += 1 ATS unit serving FIR +Operational + + +6591 +16 +Synoptic feature sequences +316030 +(SIGMET header) +001062 +Short ICAO location indicator +Operational + + +6592 +16 +Synoptic feature sequences +316030 +(SIGMET header) +008019 +Qualifier for following centre identifier += 2 FIR, = 3 UIR, = 4 CTA +Operational + + +6593 +16 +Synoptic feature sequences +316030 +(SIGMET header) +001065 +ICAO region identifier +Operational + + +6594 +16 +Synoptic feature sequences +316030 +(SIGMET header) +008019 +Qualifier for following centre identifier += 6 MWO +Operational + + +6595 +16 +Synoptic feature sequences +316030 +(SIGMET header) +001062 +Short ICAO location indicator +Operational + + +6596 +16 +Synoptic feature sequences +316030 +(SIGMET header) +008019 +Qualifier for following centre identifier +Set to missing (cancel) +Operational + + +6597 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +008021 +Time significance += 16 Analysis, = 4 Forecast +Operational + + +6598 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +301011 +Year, month, day +Operational + + +6599 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +301012 +Hour, minute +Operational + + +6600 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +301027 +Description of a feature in 3-D or 2-D +Operational + + +6601 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +019005 +Direction of motion of feature +Operational + + +6602 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +019006 +Speed of motion of feature +Operational + + +6603 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +020028 +Expected change in intensity +Operational + + +6604 +16 +Synoptic feature sequences +316031 +(SIGMET, Observed or forecast location and motion) +008021 +Time significance +Set to missing (cancel) +Operational + + +6605 +16 +Synoptic feature sequences +316032 +(SIGMET, Forecast position) +008021 +Time significance += 4 Forecast +Operational + + +6606 +16 +Synoptic feature sequences +316032 +(SIGMET, Forecast position) +301011 +Year, month, day +Operational + + +6607 +16 +Synoptic feature sequences +316032 +(SIGMET, Forecast position) +301012 +Hour, minute +Operational + + +6608 +16 +Synoptic feature sequences +316032 +(SIGMET, Forecast position) +301027 +Description of a feature in 3-D or 2-D +Operational + + +6609 +16 +Synoptic feature sequences +316032 +(SIGMET, Forecast position) +008021 +Time significance +Set to missing (cancel) +Operational + + +6610 +16 +Synoptic feature sequences +316033 +(SIGMET, Outlook) +008021 +Time significance += 4 Forecast +Operational + + +6611 +16 +Synoptic feature sequences +316033 +(SIGMET, Outlook) +301011 +Year, month, day +Operational + + +6612 +16 +Synoptic feature sequences +316033 +(SIGMET, Outlook) +301012 +Hour, minute +Operational + + +6613 +16 +Synoptic feature sequences +316033 +(SIGMET, Outlook) +101000 +Delayed replication of 1 descriptor +Operational + + +6614 +16 +Synoptic feature sequences +316033 +(SIGMET, Outlook) +031001 +Delayed descriptor replication factor +Operational + + +6615 +16 +Synoptic feature sequences +316033 +(SIGMET, Outlook) +301027 +Description of a feature in 3-D or 2-D +Operational + + +6616 +16 +Synoptic feature sequences +316033 +(SIGMET, Outlook) +008021 +Time significance +Set to missing (cancel) +Operational + + +6617 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +008079 +Product status += 0 Normal issue, = 1 Correction +Operational + + +6618 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +316030 +SIGMET header +Operational + + +6619 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +008011 +Meteorological feature += 17 Volcano +Operational + + +6620 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +001022 +Name of feature +Operational + + +6621 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +008007 +Dimensional significance += 0 Point +Operational + + +6622 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6623 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +008007 +Dimensional significance +Set to missing (cancel) +Operational + + +6624 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +020090 +Special clouds += 5 Clouds from volcanic eruptions +Operational + + +6625 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +316031 +SIGMET, Observed or forecast location and motion +Operational + + +6626 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +101000 +Delayed replication of 1 descriptor +Operational + + +6627 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +031000 +Short delayed descriptor replication factor +Operational + + +6628 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +316032 +SIGMET, Forecast position +Operational + + +6629 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +101000 +Delayed replication of 1 descriptor +Operational + + +6630 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +031001 +Delayed descriptor replication factor +Operational + + +6631 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +316033 +SIGMET, Outlook +Operational + + +6632 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +6633 +16 +Synoptic feature sequences +316034 +(Volcanic Ash SIGMET) +008079 +Product status +Set to missing (cancel) +Operational + + +6634 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +008079 +Product status += 0 Normal issue, = 1 Correction +Operational + + +6635 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +316030 +SIGMET header +Operational + + +6636 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +008011 +Meteorological feature += 21 Thunderstorm +Operational + + +6637 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +020023 +Other weather phenomena +Bit 2 = Squalls or all 18 bits = Missing +Operational + + +6638 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +020021 +Type of precipitation +Bit 14 = Hail or all 30 bits = Missing +Operational + + +6639 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +020008 +Cloud distribution for aviation += 15 OBSC, = 16 EMBD, = 12 FRQ, = 31 Missing +Operational + + +6640 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +316031 +SIGMET, Observed or forecast location and motion +Operational + + +6641 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +6642 +16 +Synoptic feature sequences +316035 +(Thunderstorm SIGMET) +008079 +Product status +Set to missing (cancel) +Operational + + +6643 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +008079 +Product status += 0 Normal issue, = 1 Correction +Operational + + +6644 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +316030 +SIGMET header +Operational + + +6645 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +008011 +Meteorological feature += 22 Tropical cyclone +Operational + + +6646 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +001027 +WMO long storm name +Operational + + +6647 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +316031 +SIGMET, Observed or forecast location and motion +Operational + + +6648 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +101000 +Delayed replication of 1 descriptor +Operational + + +6649 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +031000 +Short delayed descriptor replication factor +Operational + + +6650 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +316032 +SIGMET, Forecast position +Operational + + +6651 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +101000 +Delayed replication of 1 descriptor +Operational + + +6652 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +031001 +Delayed descriptor replication factor +Operational + + +6653 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +316033 +SIGMET, Outlook +Operational + + +6654 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +6655 +16 +Synoptic feature sequences +316036 +(Tropical cyclone SIGMET) +008079 +Product status +Set to missing (cancel) +Operational + + +6656 +16 +Synoptic feature sequences +316037 +(Turbulence SIGMET) +008079 +Product status += 0 Normal issue, = 1 Correction +Operational + + +6657 +16 +Synoptic feature sequences +316037 +(Turbulence SIGMET) +316030 +SIGMET header +Operational + + +6658 +16 +Synoptic feature sequences +316037 +(Turbulence SIGMET) +008011 +Meteorological feature += 13 Turbulence +Operational + + +6659 +16 +Synoptic feature sequences +316037 +(Turbulence SIGMET) +011031 +Degree of turbulence += 10 Moderate, = 11 Severe +Operational + + +6660 +16 +Synoptic feature sequences +316037 +(Turbulence SIGMET) +316031 +SIGMET, Observed or forecast location and motion +Operational + + +6661 +16 +Synoptic feature sequences +316037 +(Turbulence SIGMET) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +6662 +16 +Synoptic feature sequences +316037 +(Turbulence SIGMET) +008079 +Product status +Set to missing (cancel) +Operational + + +6663 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +008079 +Product status += 0 Normal issue, = 1 Correction +Operational + + +6664 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +316030 +SIGMET header +Operational + + +6665 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +008011 +Meteorological feature += 15 Airframe icing +Operational + + +6666 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +020041 +Airframe icing += 7 Severe +Operational + + +6667 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +020021 +Type of precipitation +Bit 3 = Liquid freezing or all 30 bits = Missing +Operational + + +6668 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +316031 +SIGMET, Observed or forecast location and motion +Operational + + +6669 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +6670 +16 +Synoptic feature sequences +316038 +(Icing SIGMET) +008079 +Product status +Set to missing (cancel) +Operational + + +6671 +16 +Synoptic feature sequences +316039 +(Mountain wave, duststorm or sandstorm SIGMET) +008079 +Product status += 0 Normal issue, = 1 Correction +Operational + + +6672 +16 +Synoptic feature sequences +316039 +(Mountain wave, duststorm or sandstorm SIGMET) +316030 +SIGMET header +Operational + + +6673 +16 +Synoptic feature sequences +316039 +(Mountain wave, duststorm or sandstorm SIGMET) +008011 +Meteorological feature += 23 Mountain wave, = 24 Duststorm, = 25 Sandstorm +Operational + + +6674 +16 +Synoptic feature sequences +316039 +(Mountain wave, duststorm or sandstorm SIGMET) +020024 +Intensity of phenomena += 3 Heavy, = 5 Severe +Operational + + +6675 +16 +Synoptic feature sequences +316039 +(Mountain wave, duststorm or sandstorm SIGMET) +316031 +SIGMET, Observed or forecast location and motion +Operational + + +6676 +16 +Synoptic feature sequences +316039 +(Mountain wave, duststorm or sandstorm SIGMET) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +6677 +16 +Synoptic feature sequences +316039 +(Mountain wave, duststorm or sandstorm SIGMET) +008079 +Product status +Set to missing (cancel) +Operational + + +6678 +16 +Synoptic feature sequences +316040 +(Cancellation of SIGMET) +316030 +SIGMET header +Operational + + +6679 +16 +Synoptic feature sequences +316040 +(Cancellation of SIGMET) +008079 +Product status += 4 Cancellation +Operational + + +6680 +16 +Synoptic feature sequences +316040 +(Cancellation of SIGMET) +301014 +Time period +Of the SIGMET to be cancelled +Operational + + +6681 +16 +Synoptic feature sequences +316040 +(Cancellation of SIGMET) +001037 +SIGMET sequence identifier +Of the SIGMET to be cancelled +Operational + + +6682 +16 +Synoptic feature sequences +316040 +(Cancellation of SIGMET) +010064 +SIGMET cruising level +Of the SIGMET to be cancelled +Operational + + +6683 +16 +Synoptic feature sequences +316040 +(Cancellation of SIGMET) +008079 +Product status +Set to missing (cancel) +Operational + + +6684 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +301001 +WMO block and station numbers +Operational + + +6685 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +301011 +Year, month, day +Operational + + +6686 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +301012 +Hour, minute +Operational + + +6687 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +002160 +Wavelength of the radar +Operational + + +6688 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +008005 +Meteorological attribute significance += 1 +Operational + + +6689 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +005002 +Latitude (coarse accuracy) +Operational + + +6690 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +006002 +Longitude (coarse accuracy) +Operational + + +6691 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +008005 +Meteorological attribute significance +Cancel +Operational + + +6692 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019100 +Time interval to calculate the movement of the tropical cyclone +Operational + + +6693 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019005 +Direction of motion of feature +Operational + + +6694 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019006 +Speed of motion of feature +Operational + + +6695 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019101 +Accuracy of the position of the centre of the tropical cyclone +Operational + + +6696 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019102 +Shape and definition of the eye of the tropical cyclone +Operational + + +6697 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019103 +Diameter of major axis of the eye of the tropical cyclone +Operational + + +6698 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019104 +Change in character of the eye during the 30 minutes +Operational + + +6699 +16 +Synoptic feature sequences +316050 +(RADOB template - Part A: Information on tropical cyclone) +019105 +Distance between the end of spiral band and the centre +Operational + + +6700 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +301005 +Originating centre/sub-centre +Operational + + +6701 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +301011 +Year, month, day +Operational + + +6702 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +301012 +Hour, minute +Operational + + +6703 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +001007 +Satellite identifier +Operational + + +6704 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +025150 +Method of tropical cyclone intensity analysis using satellite data +Operational + + +6705 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +122000 +Delayed replication of 22 descriptors +Operational + + +6706 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +031001 +Delayed descriptor replication factor +Operational + + +6707 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +001027 +WMO long storm name +Operational + + +6708 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019150 +Typhoon International Common Number (Typhoon Committee) +Operational + + +6709 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019106 +Identification number of tropical cyclone +Operational + + +6710 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +008005 +Meteorological attribute significance += 1 +Operational + + +6711 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +005002 +Latitude (coarse accuracy) +Operational + + +6712 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +006002 +Longitude (coarse accuracy) +Operational + + +6713 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +008005 +Meteorological attribute significance +Cancel +Operational + + +6714 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019107 +Time interval over which the movement of the tropical cyclone has been calculated +Operational + + +6715 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019005 +Direction of motion of feature +Operational + + +6716 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019006 +Speed of motion of feature +Operational + + +6717 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019108 +Accuracy of geographical position of the tropical cyclone +Operational + + +6718 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019109 +Mean diameter of the overcast cloud of the tropical cyclone +Operational + + +6719 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019110 +Apparent 24-hour change in intensity of the tropical cyclone +Operational + + +6720 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019111 +Current Intensity (CI) number of the tropical cyclone +Operational + + +6721 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019112 +Data Tropical (DT) number of the tropical cyclone +Operational + + +6722 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019113 +Cloud pattern type of the DT-number +Operational + + +6723 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019114 +Model Expected Tropical (MET) number of the tropical cyclone +Operational + + +6724 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019115 +Trend of the past 24-hour change (+: Developed, -: Weakened) +Operational + + +6725 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019116 +Pattern Tropical (PT) number of the tropical cyclone +Operational + + +6726 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019117 +Cloud picture type of the PT-number +Operational + + +6727 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019118 +Final Tropical (T) number of the tropical cyclone +Operational + + +6728 +16 +Synoptic feature sequences +316052 +(SAREP template - Part A: Information on tropical cyclone) +019119 +Type of the final T-number +Operational + + +6729 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +301011 +Year, month, day +Operational + + +6730 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +301012 +Hour, minute +Operational + + +6731 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Position of squall line centre +005002 +Latitude (coarse accuracy) +Operational + + +6732 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Position of squall line centre +006002 +Longitude (coarse accuracy) +Operational + + +6733 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Position of squall line centre +019005 +Direction of motion of feature +Operational + + +6734 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Position of squall line centre +019006 +Speed of motion of feature +Operational + + +6735 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - North point +005002 +Latitude (coarse accuracy) +Operational + + +6736 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - North point +006002 +Longitude (coarse accuracy) +Operational + + +6737 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - South point +005002 +Latitude (coarse accuracy) +Operational + + +6738 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - South point +006002 +Longitude (coarse accuracy) +Operational + + +6739 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +004074 +Short time period or displacement +Period of validity +Operational + + +6740 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +020048 +Evolution of feature +Operational + + +6741 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +011041 +Maximum wind gust speed +Maximum burst expected +Operational + + +6742 +16 +Synoptic feature sequences +316060 +(Definition of squall line (by 3 points: Centre, North, South) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +013055 +Intensity of precipitation +Intensity of rain expected +Operational + + +6743 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +301011 +Year, month, day +Operational + + +6744 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +301012 +Hour, minute +Operational + + +6745 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Position of squall line centre +005002 +Latitude (coarse accuracy) +Operational + + +6746 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Position of squall line centre +006002 +Longitude (coarse accuracy) +Operational + + +6747 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Position of squall line centre +019005 +Direction of motion of feature +Operational + + +6748 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Position of squall line centre +019006 +Speed of motion of feature +Operational + + +6749 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - North points +102000 +Delayed replication of 2 descriptors +Operational + + +6750 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - North points +031001 +Delayed descriptor replication factor +Operational + + +6751 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - North points +005002 +Latitude (coarse accuracy) +Operational + + +6752 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - North points +006002 +Longitude (coarse accuracy) +Operational + + +6753 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - South points +102000 +Delayed replication of 2 descriptors +Operational + + +6754 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - South points +031001 +Delayed descriptor replication factor +Operational + + +6755 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - South points +005002 +Latitude (coarse accuracy) +Operational + + +6756 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - South points +006002 +Longitude (coarse accuracy) +Operational + + +6757 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +004074 +Short time period or displacement +Period of validity +Operational + + +6758 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +020048 +Evolution of feature +Operational + + +6759 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +011041 +Maximum wind gust speed +Maximum burst expected +Operational + + +6760 +16 +Synoptic feature sequences +316061 +(Definition of squall line (by centre and several points: North points and South points) and forecasted trajectory and evolution) +Amplitude of feature from most external points to centre point - Evolution +013055 +Intensity of precipitation +Intensity of rain expected +Operational + + +6761 +16 +Synoptic feature sequences +316071 +(Graphical AIRMET Sierra) +301014 +Time period +For which AIRMET is valid +Operational + + +6762 +16 +Synoptic feature sequences +316071 +(Graphical AIRMET Sierra) +101000 +Delayed replication of 1 descriptor +Operational + + +6763 +16 +Synoptic feature sequences +316071 +(Graphical AIRMET Sierra) +031002 +Extended delayed descriptor replication factor +Operational + + +6764 +16 +Synoptic feature sequences +316071 +(Graphical AIRMET Sierra) +316075 +GFA IFR ceiling and visibility +Operational + + +6765 +16 +Synoptic feature sequences +316071 +(Graphical AIRMET Sierra) +101000 +Delayed replication of 1 descriptor +Operational + + +6766 +16 +Synoptic feature sequences +316071 +(Graphical AIRMET Sierra) +031002 +Extended delayed descriptor replication factor +Operational + + +6767 +16 +Synoptic feature sequences +316071 +(Graphical AIRMET Sierra) +316076 +GFA mountain obscuration +Operational + + +6768 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +301014 +Time period +For which AIRMET is valid +Operational + + +6769 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +101000 +Delayed replication of 1 descriptor +Operational + + +6770 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +031002 +Extended delayed descriptor replication factor +Operational + + +6771 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +316077 +GFA turbulence +Operational + + +6772 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +101000 +Delayed replication of 1 descriptor +Operational + + +6773 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +031002 +Extended delayed descriptor replication factor +Operational + + +6774 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +316078 +GFA strong surface wind +Operational + + +6775 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +101000 +Delayed replication of 1 descriptor +Operational + + +6776 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +031002 +Extended delayed descriptor replication factor +Operational + + +6777 +16 +Synoptic feature sequences +316072 +(Graphical AIRMET Tango) +316079 +GFA low-level wind shear +Operational + + +6778 +16 +Synoptic feature sequences +316073 +(Graphical AIRMET Zulu) +301014 +Time period +For which AIRMET is valid +Operational + + +6779 +16 +Synoptic feature sequences +316073 +(Graphical AIRMET Zulu) +101000 +Delayed replication of 1 descriptor +Operational + + +6780 +16 +Synoptic feature sequences +316073 +(Graphical AIRMET Zulu) +031002 +Extended delayed descriptor replication factor +Operational + + +6781 +16 +Synoptic feature sequences +316073 +(Graphical AIRMET Zulu) +316080 +GFA icing +Operational + + +6782 +16 +Synoptic feature sequences +316073 +(Graphical AIRMET Zulu) +101000 +Delayed replication of 1 descriptor +Operational + + +6783 +16 +Synoptic feature sequences +316073 +(Graphical AIRMET Zulu) +031002 +Extended delayed descriptor replication factor +Operational + + +6784 +16 +Synoptic feature sequences +316073 +(Graphical AIRMET Zulu) +316081 +GFA freezing level +Operational + + +6785 +16 +Synoptic feature sequences +316074 +(GFA identifier and observed/forecast location) +001039 +Graphical Area Forecast (GFA) sequence identifier +Operational + + +6786 +16 +Synoptic feature sequences +316074 +(GFA identifier and observed/forecast location) +008021 +Time significance += 4 Forecast, = 16 Analysis +Operational + + +6787 +16 +Synoptic feature sequences +316074 +(GFA identifier and observed/forecast location) +301014 +Time period +For which hazard is being observed/forecast +Operational + + +6788 +16 +Synoptic feature sequences +316074 +(GFA identifier and observed/forecast location) +301027 +Description of a feature in 3-D or 2-D +Operational + + +6789 +16 +Synoptic feature sequences +316074 +(GFA identifier and observed/forecast location) +008021 +Time significance +Set to missing (cancel) +Operational + + +6790 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +008079 +Product status += 0 Normal, = 1 COR, = 2 AMD, = 3 COR AMD, = 4 CNL +Operational + + +6791 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +008041 +Data significance += 8 IFR ceiling and visibility +Operational + + +6792 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +316074 +GFA identifier and observed/forecast location +Operational + + +6793 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +020006 +Flight rules += 1 IFR +Operational + + +6794 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +033042 +Type of limit represented by following value += 2 Exclusive upper limit, = 7 Missing +Operational + + +6795 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +020013 +Height of base of cloud +Operational + + +6796 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +033042 +Type of limit represented by following value += 2 Exclusive upper limit, = 7 Missing +Operational + + +6797 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +020001 +Horizontal visibility +Operational + + +6798 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +020025 +Obscuration +Operational + + +6799 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +020026 +Character of obscuration += 6 Blowing, = 15 Missing +Operational + + +6800 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +008041 +Data significance +Set to missing (cancel) +Operational + + +6801 +16 +Synoptic feature sequences +316075 +(GFA IFR ceiling and visibility) +008079 +Product status +Set to missing (cancel) +Operational + + +6802 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +008079 +Product status += 0 Normal, = 1 COR, = 2 AMD, = 3 COR AMD, = 4 CNL +Operational + + +6803 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +008041 +Data significance += 9 Mountain obscuration +Operational + + +6804 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +316074 +GFA identifier and observed/forecast location +Operational + + +6805 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +020006 +Flight rules += 1 IFR +Operational + + +6806 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +020025 +Obscuration +Operational + + +6807 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +020026 +Character of obscuration += 6 Blowing, = 15 Missing +Operational + + +6808 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +008041 +Data significance +Set to missing (cancel) +Operational + + +6809 +16 +Synoptic feature sequences +316076 +(GFA mountain obscuration) +008079 +Product status +Set to missing (cancel) +Operational + + +6810 +16 +Synoptic feature sequences +316077 +(GFA turbulence) +008079 +Product status += 0 Normal, = 1 COR, = 2 AMD, = 3 COR AMD, = 4 CNL +Operational + + +6811 +16 +Synoptic feature sequences +316077 +(GFA turbulence) +008011 +Meteorological feature += 13 Turbulence +Operational + + +6812 +16 +Synoptic feature sequences +316077 +(GFA turbulence) +316074 +GFA identifier and observed/forecast location +Operational + + +6813 +16 +Synoptic feature sequences +316077 +(GFA turbulence) +011031 +Degree of turbulence += 6 Moderate +Operational + + +6814 +16 +Synoptic feature sequences +316077 +(GFA turbulence) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +6815 +16 +Synoptic feature sequences +316077 +(GFA turbulence) +008079 +Product status +Set to missing (cancel) +Operational + + +6816 +16 +Synoptic feature sequences +316078 +(GFA strong surface wind) +008079 +Product status += 0 Normal, = 1 COR, = 2 AMD, = 3 COR AMD, = 4 CNL +Operational + + +6817 +16 +Synoptic feature sequences +316078 +(GFA strong surface wind) +008041 +Data significance += 10 Strong surface wind +Operational + + +6818 +16 +Synoptic feature sequences +316078 +(GFA strong surface wind) +316074 +GFA identifier and observed/forecast location +Operational + + +6819 +16 +Synoptic feature sequences +316078 +(GFA strong surface wind) +033042 +Type of limit represented by following value += 0 Exclusive lower limit +Operational + + +6820 +16 +Synoptic feature sequences +316078 +(GFA strong surface wind) +011012 +Wind speed at 10 m +Operational + + +6821 +16 +Synoptic feature sequences +316078 +(GFA strong surface wind) +008041 +Data significance +Set to missing (cancel) +Operational + + +6822 +16 +Synoptic feature sequences +316078 +(GFA strong surface wind) +008079 +Product status +Set to missing (cancel) +Operational + + +6823 +16 +Synoptic feature sequences +316079 +(GFA low-level wind shear) +008079 +Product status += 0 Normal, = 1 COR, = 2 AMD, = 3 COR AMD, = 4 CNL +Operational + + +6824 +16 +Synoptic feature sequences +316079 +(GFA low-level wind shear) +008011 +Meteorological feature += 16 Phenomenon +Operational + + +6825 +16 +Synoptic feature sequences +316079 +(GFA low-level wind shear) +316074 +GFA identifier and observed/forecast location +Operational + + +6826 +16 +Synoptic feature sequences +316079 +(GFA low-level wind shear) +020023 +Other weather phenomena +Bit 12 = Wind shear +Operational + + +6827 +16 +Synoptic feature sequences +316079 +(GFA low-level wind shear) +020024 +Intensity of phenomena +Operational + + +6828 +16 +Synoptic feature sequences +316079 +(GFA low-level wind shear) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +6829 +16 +Synoptic feature sequences +316079 +(GFA low-level wind shear) +008079 +Product status +Set to missing (cancel) +Operational + + +6830 +16 +Synoptic feature sequences +316080 +(GFA icing) +008079 +Product status += 0 Normal, = 1 COR, = 2 AMD, = 3 COR AMD, = 4 CNL +Operational + + +6831 +16 +Synoptic feature sequences +316080 +(GFA icing) +008011 +Meteorological feature += 15 Airframe icing +Operational + + +6832 +16 +Synoptic feature sequences +316080 +(GFA icing) +316074 +GFA identifier and observed/forecast location +Operational + + +6833 +16 +Synoptic feature sequences +316080 +(GFA icing) +020041 +Airframe icing += 4 Moderate icing +Operational + + +6834 +16 +Synoptic feature sequences +316080 +(GFA icing) +008011 +Meteorological feature +Set to missing (cancel) +Operational + + +6835 +16 +Synoptic feature sequences +316080 +(GFA icing) +008079 +Product status +Set to missing (cancel) +Operational + + +6836 +16 +Synoptic feature sequences +316081 +(GFA freezing level) +008079 +Product status += 0 Normal, = 1 COR, = 2 AMD, = 3 COR AMD, = 4 CNL +Operational + + +6837 +16 +Synoptic feature sequences +316081 +(GFA freezing level) +008041 +Data significance += 11 Freezing level, = 12 Multiple freezing level +Operational + + +6838 +16 +Synoptic feature sequences +316081 +(GFA freezing level) +316074 +GFA identifier and observed/forecast location +Operational + + +6839 +16 +Synoptic feature sequences +316081 +(GFA freezing level) +008041 +Data significance +Set to missing (cancel) +Operational + + +6840 +16 +Synoptic feature sequences +316081 +(GFA freezing level) +008079 +Product status +Set to missing (cancel) +Operational + + +6841 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +001033 +Identification of originating/generating centre +Operational + + +6842 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +001034 +Identification of originating/generating sub-centre +Operational + + +6843 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +001032 +Generating application +Operational + + +6844 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +001025 +Storm identifier +Operational + + +6845 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +001027 +WMO long storm name +Operational + + +6846 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +001090 +Technique for making up initial perturbations +Operational + + +6847 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +001091 +Ensemble member number +Operational + + +6848 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +001092 +Type of ensemble forecast +Operational + + +6849 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +301011 +Year, month, day +Operational + + +6850 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +301012 +Hour, minute +Operational + + +6851 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +008005 +Meteorological attribute significance +Operational + + +6852 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6853 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +008005 +Meteorological attribute significance +Operational + + +6854 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6855 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +010051 +Pressure reduced to mean sea level +Operational + + +6856 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +008005 +Meteorological attribute significance +Operational + + +6857 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6858 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +011012 +Wind speed at 10 m +Operational + + +6859 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +107003 +Delayed replication of 7 descriptors +Operational + + +6860 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +019003 +Wind speed threshold +Operational + + +6861 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +105004 +Delayed replication of 5 descriptors +Operational + + +6862 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +005021 +Bearing or azimuth +Operational + + +6863 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +005021 +Bearing or azimuth +Operational + + +6864 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +201131 +Change data width +Operational + + +6865 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +019004 +Effective radius with respect to wind speeds above threshold +Operational + + +6866 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +201000 +Change data width +Set to missing (cancel) +Operational + + +6867 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +116000 +Delayed replication of 16 descriptors +Operational + + +6868 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +031001 +Delayed descriptor replication factor +Operational + + +6869 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +008021 +Time significance +Operational + + +6870 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +004024 +Time period or displacement +Operational + + +6871 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +008005 +Meteorological attribute significance +Operational + + +6872 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6873 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +010051 +Pressure reduced to mean sea level +Operational + + +6874 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +008005 +Meteorological attribute significance +Operational + + +6875 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +301023 +Latitude/longitude (coarse accuracy) +Operational + + +6876 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +011012 +Wind speed at 10 m +Operational + + +6877 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +107003 +Delayed replication of 7 descriptors +Operational + + +6878 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +019003 +Wind speed threshold +Operational + + +6879 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +105004 +Delayed replication of 5 descriptors +Operational + + +6880 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +005021 +Bearing or azimuth +Operational + + +6881 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +005021 +Bearing or azimuth +Operational + + +6882 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +201131 +Change data width +Operational + + +6883 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +019004 +Effective radius with respect to wind speeds above threshold +Operational + + +6884 +16 +Synoptic feature sequences +316082 +(Tropical cyclone track and wind radii) +201000 +Change data width +Set to missing (cancel) +Operational + + +6885 +18 +Radiological report sequences +318001 +301025 +Latitude/longitude (coarse accuracy), day/time +Operational + + +6886 +18 +Radiological report sequences +318001 +024011 +Dose +Operational + + +6887 +18 +Radiological report sequences +318003 +301026 +Latitude/longitude (high accuracy), time period (day, hour, minute) +Operational + + +6888 +18 +Radiological report sequences +318003 +024005 +Isotope mass +Operational + + +6889 +18 +Radiological report sequences +318003 +024004 +Element name +Operational + + +6890 +18 +Radiological report sequences +318003 +024021 +Air concentration (of named isotope type including gross beta) +Operational + + +6891 +18 +Radiological report sequences +318004 +301025 +Latitude/longitude (coarse accuracy), day/time +Operational + + +6892 +18 +Radiological report sequences +318004 +004023 +Time period or displacement +Operational + + +6893 +18 +Radiological report sequences +318004 +013011 +Total precipitation/total water equivalent +Operational + + +6894 +18 +Radiological report sequences +318004 +024005 +Isotope mass +Operational + + +6895 +18 +Radiological report sequences +318004 +024004 +Element name +Operational + + +6896 +18 +Radiological report sequences +318004 +024022 +Concentration in precipitation (of named isotope type) +Operational + + +6897 +21 +Radar report sequences +321001 +(Wind profiler - antenna characteristics) +002101 +Type of antenna +Operational + + +6898 +21 +Radar report sequences +321001 +(Wind profiler - antenna characteristics) +002114 +Antenna effective surface area +Operational + + +6899 +21 +Radar report sequences +321001 +(Wind profiler - antenna characteristics) +002105 +Maximum antenna gain +Operational + + +6900 +21 +Radar report sequences +321001 +(Wind profiler - antenna characteristics) +002106 +3-dB beamwidth +Operational + + +6901 +21 +Radar report sequences +321001 +(Wind profiler - antenna characteristics) +002107 +Sidelobe suppression +Operational + + +6902 +21 +Radar report sequences +321001 +(Wind profiler - antenna characteristics) +002121 +Mean frequency +Operational + + +6903 +21 +Radar report sequences +321003 +(Wind profiler - moment data) +021051 +Signal power above 1 mW +Operational + + +6904 +21 +Radar report sequences +321003 +(Wind profiler - moment data) +021014 +Doppler mean velocity (radial) +Operational + + +6905 +21 +Radar report sequences +321003 +(Wind profiler - moment data) +021017 +Doppler velocity spectral width +Operational + + +6906 +21 +Radar report sequences +321003 +(Wind profiler - moment data) +021030 +Signal to noise ratio +Operational + + +6907 +21 +Radar report sequences +321004 +(Wind profiler - moment data sounding) +301031 +Identification and type of station, date/time, location (high accuracy), height of station +Operational + + +6908 +21 +Radar report sequences +321004 +(Wind profiler - moment data sounding) +002003 +Type of measuring equipment used +Operational + + +6909 +21 +Radar report sequences +321004 +(Wind profiler - moment data sounding) +101000 +Delayed replication of 1 descriptor +Operational + + +6910 +21 +Radar report sequences +321004 +(Wind profiler - moment data sounding) +031001 +Delayed descriptor replication factor +Operational + + +6911 +21 +Radar report sequences +321004 +(Wind profiler - moment data sounding) +321003 +Wind profiler - moment data +Operational + + +6912 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +025004 +Echo processing +Operational + + +6913 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002121 +Mean frequency +Operational + + +6914 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002122 +Frequency agility range +Operational + + +6915 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002123 +Peak power +Operational + + +6916 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002124 +Average power +Operational + + +6917 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002125 +Pulse repetition frequency +Operational + + +6918 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002126 +Pulse width +Operational + + +6919 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002127 +Receiver intermediate frequency +Operational + + +6920 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002128 +Intermediate frequency bandwidth +Operational + + +6921 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002129 +Minimum detectable signal +Operational + + +6922 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002130 +Dynamic range +Operational + + +6923 +21 +Radar report sequences +321005 +(Transmitter-receiver characteristics) +002131 +Sensitivity time control (STC) +Operational + + +6924 +21 +Radar report sequences +321006 +(Integration characteristics) +025001 +Range-gate length +Operational + + +6925 +21 +Radar report sequences +321006 +(Integration characteristics) +025002 +Number of gates averaged +Operational + + +6926 +21 +Radar report sequences +321006 +(Integration characteristics) +025003 +Number of integrated pulses +Operational + + +6927 +21 +Radar report sequences +321006 +(Integration characteristics) +025005 +Echo integration +Operational + + +6928 +21 +Radar report sequences +321007 +(Corrections) +025009 +Calibration method +Operational + + +6929 +21 +Radar report sequences +321007 +(Corrections) +025010 +Clutter treatment +Operational + + +6930 +21 +Radar report sequences +321007 +(Corrections) +025011 +Ground occultation correction (screening) +Operational + + +6931 +21 +Radar report sequences +321007 +(Corrections) +025012 +Range attenuation correction +Operational + + +6932 +21 +Radar report sequences +321007 +(Corrections) +025013 +Bright-band correction +Operational + + +6933 +21 +Radar report sequences +321007 +(Corrections) +025015 +Radome attenuation correction +Operational + + +6934 +21 +Radar report sequences +321007 +(Corrections) +025016 +Clear-air attenuation correction +Operational + + +6935 +21 +Radar report sequences +321007 +(Corrections) +025017 +Precipitation attenuation correction +Operational + + +6936 +21 +Radar report sequences +321008 +(Z to R conversion) +025006 +Z to R conversion +Operational + + +6937 +21 +Radar report sequences +321008 +(Z to R conversion) +025007 +Z to R conversion factor +Operational + + +6938 +21 +Radar report sequences +321008 +(Z to R conversion) +025008 +Z to R conversion exponent +Operational + + +6939 +21 +Radar report sequences +321009 +(A to Z law) +025018 +A to Z law for attenuation factor +Operational + + +6940 +21 +Radar report sequences +321009 +(A to Z law) +025019 +A to Z law for attenuation exponent +Operational + + +6941 +21 +Radar report sequences +321010 +(Antenna characteristics) +002101 +Type of antenna +Operational + + +6942 +21 +Radar report sequences +321010 +(Antenna characteristics) +007002 +Height or altitude +Altitude of the tower base +Operational + + +6943 +21 +Radar report sequences +321010 +(Antenna characteristics) +002102 +Antenna height above tower base +Operational + + +6944 +21 +Radar report sequences +321010 +(Antenna characteristics) +002103 +Radome +Operational + + +6945 +21 +Radar report sequences +321010 +(Antenna characteristics) +002104 +Antenna polarization +Operational + + +6946 +21 +Radar report sequences +321010 +(Antenna characteristics) +002105 +Maximum antenna gain +Operational + + +6947 +21 +Radar report sequences +321010 +(Antenna characteristics) +002106 +3-dB beamwidth +Operational + + +6948 +21 +Radar report sequences +321010 +(Antenna characteristics) +002107 +Sidelobe suppression +Operational + + +6949 +21 +Radar report sequences +321010 +(Antenna characteristics) +002108 +Crosspol discrimination (on axis) +Operational + + +6950 +21 +Radar report sequences +321010 +(Antenna characteristics) +002109 +Antenna speed (azimuth) +Operational + + +6951 +21 +Radar report sequences +321010 +(Antenna characteristics) +002110 +Antenna speed (elevation) +Operational + + +6952 +21 +Radar report sequences +321010 +(Antenna characteristics) +002132 +Azimuth pointing accuracy +Operational + + +6953 +21 +Radar report sequences +321010 +(Antenna characteristics) +002133 +Elevation pointing accuracy +Operational + + +6954 +21 +Radar report sequences +321011 +(General characteristics) +030031 +Picture type +Operational + + +6955 +21 +Radar report sequences +321011 +(General characteristics) +030032 +Combination with other data +Operational + + +6956 +21 +Radar report sequences +321011 +(General characteristics) +029002 +Coordinate grid type +Operational + + +6957 +21 +Radar report sequences +321012 +(Antenna elevations) +101000 +Delayed replication of 1 descriptor +Operational + + +6958 +21 +Radar report sequences +321012 +(Antenna elevations) +031001 +Delayed descriptor replication factor +Operational + + +6959 +21 +Radar report sequences +321012 +(Antenna elevations) +002135 +Antenna elevation +Operational + + +6960 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +002003 +Type of measuring equipment used +Operational + + +6961 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +002101 +Type of antenna +Operational + + +6962 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +201130 +Change data width +8 bits long +Operational + + +6963 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +002106 +3-dB beamwidth +Operational + + +6964 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +201000 +Change data width +Cancel +Operational + + +6965 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +201132 +Change data width +11 bits long +Operational + + +6966 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +202130 +Change scale +Scale: -6 +Operational + + +6967 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +002121 +Mean frequency +Operational + + +6968 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +202000 +Change scale +Cancel +Operational + + +6969 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +201000 +Change data width +Cancel +Operational + + +6970 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +201133 +Change data width +11 bits long +Operational + + +6971 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +202129 +Change scale +Scale: 0 +Operational + + +6972 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +025001 +Range-gate length +Operational + + +6973 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +202000 +Change scale +Cancel +Operational + + +6974 +21 +Radar report sequences +321021 +(Basic information (system/site header) on wind profiler/RASS) +201000 +Change data width +Cancel +Operational + + +6975 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +007007 +Height +Operational + + +6976 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +204001 +Add associated field +1 bit long +Operational + + +6977 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +031021 +Associated field significance +Operational + + +6978 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +011001 +Wind direction +Operational + + +6979 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +204000 +Add associated field +Cancel +Operational + + +6980 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +011002 +Wind speed +Operational + + +6981 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +204001 +Add associated field +1 bit long +Operational + + +6982 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +031021 +Associated field significance +Operational + + +6983 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +011006 +w-component +Operational + + +6984 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +204000 +Add associated field +Cancel +Operational + + +6985 +21 +Radar report sequences +321022 +(Wind profiler: processed-data winds) +021030 +Signal to noise ratio +Operational + + +6986 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +007007 +Height +Operational + + +6987 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +021091 +Radar signal Doppler spectrum 0th moment +Operational + + +6988 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +021030 +Signal to noise ratio +Operational + + +6989 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +202129 +Change scale +Scale: 2 +Operational + + +6990 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +021014 +Doppler mean velocity (radial) +Operational + + +6991 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +201129 +Change data width +9 bits long +Operational + + +6992 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +021017 +Doppler velocity spectral width +Operational + + +6993 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +202000 +Change scale +Cancel +Operational + + +6994 +21 +Radar report sequences +321023 +(Wind profiler: raw-data winds) +201000 +Change data width +Cancel +Operational + + +6995 +21 +Radar report sequences +321024 +(RASS-mode: processed-data RASS) +007007 +Height +Operational + + +6996 +21 +Radar report sequences +321024 +(RASS-mode: processed-data RASS) +204001 +Add associated field +1 bit long +Operational + + +6997 +21 +Radar report sequences +321024 +(RASS-mode: processed-data RASS) +031021 +Associated field significance +Operational + + +6998 +21 +Radar report sequences +321024 +(RASS-mode: processed-data RASS) +012007 +Virtual temperature +Operational + + +6999 +21 +Radar report sequences +321024 +(RASS-mode: processed-data RASS) +011006 +w-component +Operational + + +7000 +21 +Radar report sequences +321024 +(RASS-mode: processed-data RASS) +204000 +Add associated field +Cancel +Operational + + +7001 +21 +Radar report sequences +321024 +(RASS-mode: processed-data RASS) +021030 +Signal to noise ratio +Operational + + +7002 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +007007 +Height +Operational + + +7003 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +021091 +Radar signal Doppler spectrum 0th moment +Operational + + +7004 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +021030 +Signal to noise ratio +Operational + + +7005 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +202129 +Change scale +Scale: 2 +Operational + + +7006 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +021014 +Doppler mean velocity (radial) +Operational + + +7007 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +201129 +Change data width +9 bits long +Operational + + +7008 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +021017 +Doppler velocity spectral width +Operational + + +7009 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +202000 +Change scale +Cancel +Operational + + +7010 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +201000 +Change data width +Cancel +Operational + + +7011 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +021092 +RASS signal Doppler spectrum 0th moment, referring to RASS signal +Operational + + +7012 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +021030 +Signal to noise ratio +Referring to RASS signal +Operational + + +7013 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +025092 +Acoustic propagation velocity +Operational + + +7014 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +201129 +Change data width +9 bits long +Operational + + +7015 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +202129 +Change scale +Scale: 2 +Operational + + +7016 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +021017 +Doppler velocity spectral width +Referring to RASS signal +Operational + + +7017 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +202000 +Change scale +Cancel +Operational + + +7018 +21 +Radar report sequences +321025 +(RASS-mode: raw-data RASS) +201000 +Change data width +Cancel +Operational + + +7019 +21 +Radar report sequences +321026 +(RASS data - fluxes) +007007 +Height +Operational + + +7020 +21 +Radar report sequences +321026 +(RASS data - fluxes) +204001 +Add associated field +1 bit long +Operational + + +7021 +21 +Radar report sequences +321026 +(RASS data - fluxes) +031021 +Associated field significance +Operational + + +7022 +21 +Radar report sequences +321026 +(RASS data - fluxes) +012007 +Virtual temperature +Operational + + +7023 +21 +Radar report sequences +321026 +(RASS data - fluxes) +025091 +Structure constant of the refraction index (Cn2) +Operational + + +7024 +21 +Radar report sequences +321026 +(RASS data - fluxes) +011071 +Turbulent vertical momentum flux +Operational + + +7025 +21 +Radar report sequences +321026 +(RASS data - fluxes) +011072 +Turbulent vertical buoyancy flux +Operational + + +7026 +21 +Radar report sequences +321026 +(RASS data - fluxes) +011073 +Turbulent kinetic energy +Operational + + +7027 +21 +Radar report sequences +321026 +(RASS data - fluxes) +011074 +Dissipation energy +Operational + + +7028 +21 +Radar report sequences +321026 +(RASS data - fluxes) +204000 +Add associated field +Cancel +Operational + + +7029 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021118 +Attenuation correction on sigma-0 +Operational + + +7030 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +202129 +Change scale +Operational + + +7031 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +201132 +Change data width +Operational + + +7032 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +002112 +Radar look angle +Operational + + +7033 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +201000 +Change data width +Cancel +Operational + + +7034 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +201131 +Change data width +Operational + + +7035 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +002111 +Radar incidence angle +Operational + + +7036 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +201000 +Change data width +Cancel +Operational + + +7037 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +202000 +Change scale +Cancel +Operational + + +7038 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +002104 +Antenna polarization +Operational + + +7039 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021105 +Normalized radar cross-section +Operational + + +7040 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021106 +Kp variance coefficient (alpha) +Operational + + +7041 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021107 +Kp variance coefficient (beta) +Operational + + +7042 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021114 +Kp variance coefficient (gamma) +Operational + + +7043 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021115 +SEAWINDS sigma-0 quality +Operational + + +7044 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021116 +SEAWINDS sigma-0 mode +Operational + + +7045 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +008018 +SEAWINDS land/ice surface type +Operational + + +7046 +21 +Radar report sequences +321027 +(Radar specification, normalized radar cross-section, Kp variance coefficient) +021117 +Sigma-0 variance quality control +Operational + + +7047 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021118 +Attenuation correction on sigma-0 +Operational + + +7048 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +202129 +Change scale +Operational + + +7049 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +201132 +Change data width +Operational + + +7050 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +002112 +Radar look angle +Operational + + +7051 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +201000 +Change data width +Cancel +Operational + + +7052 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +201131 +Change data width +Operational + + +7053 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +002111 +Radar incidence angle +Operational + + +7054 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +201000 +Change data width +Cancel +Operational + + +7055 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +202000 +Change scale +Cancel +Operational + + +7056 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +002104 +Antenna polarization +Operational + + +7057 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021123 +SEAWINDS normalized radar cross-section +Operational + + +7058 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021106 +Kp variance coefficient (alpha) +Operational + + +7059 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021107 +Kp variance coefficient (beta) +Operational + + +7060 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021114 +Kp variance coefficient (gamma) +Operational + + +7061 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021115 +SEAWINDS sigma-0 quality +Operational + + +7062 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021116 +SEAWINDS sigma-0 mode +Operational + + +7063 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +008018 +SEAWINDS land/ice surface type +Operational + + +7064 +21 +Radar report sequences +321028 +(Radar specification, SEAWINDS normalized radar cross-section, Kp variance coefficient) +021117 +Sigma-0 variance quality control +Operational + + +7065 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +008085 +Beam identifier +Operational + + +7066 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +202129 +Change scale +Increase scale by 101 +Operational + + +7067 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +201131 +Change data width +Increase width by 3 bits +Operational + + +7068 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +002111 +Radar incidence angle +Operational + + +7069 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +201000 +Change data width +Cancel +Operational + + +7070 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +202000 +Change scale +Cancel +Operational + + +7071 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +002134 +Antenna beam azimuth +Operational + + +7072 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021062 +Backscatter +Operational + + +7073 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021063 +Radiometric resolution (noise value) +Operational + + +7074 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021158 +ASCAT Kp estimate quality +Operational + + +7075 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021159 +ASCAT sigma-0 usability +Operational + + +7076 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021160 +ASCAT use of synthetic data +Operational + + +7077 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021161 +ASCAT synthetic data quantity +Operational + + +7078 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021162 +ASCAT satellite orbit and attitude quality +Operational + + +7079 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021163 +ASCAT solar array reflection contamination +Operational + + +7080 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021164 +ASCAT telemetry presence and quality +Operational + + +7081 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021165 +ASCAT extrapolated reference function presence +Operational + + +7082 +21 +Radar report sequences +321030 +(ASCAT sigma-0 information) +021166 +Land fraction +Operational + + +7083 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +001007 +Satellite identifier +Operational + + +7084 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +002019 +Satellite instruments +Operational + + +7085 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +004001 +Year +Operational + + +7086 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +004002 +Month +Operational + + +7087 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +004003 +Day +Operational + + +7088 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +004004 +Hour +Operational + + +7089 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +004005 +Minute +Operational + + +7090 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +004006 +Second +Operational + + +7091 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +005001 +Latitude (high accuracy) +Operational + + +7092 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +006001 +Longitude (high accuracy) +Operational + + +7093 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +027001 +Latitude (high accuracy) +Operational + + +7094 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +028001 +Longitude (high accuracy) +Operational + + +7095 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +027001 +Latitude (high accuracy) +Operational + + +7096 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +028001 +Longitude (high accuracy) +Operational + + +7097 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +027001 +Latitude (high accuracy) +Operational + + +7098 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +028001 +Longitude (high accuracy) +Operational + + +7099 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +027001 +Latitude (high accuracy) +Operational + + +7100 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +028001 +Longitude (high accuracy) +Operational + + +7101 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +010001 +Height of land surface +Operational + + +7102 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +014019 +Surface albedo +Operational + + +7103 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +007025 +Solar zenith angle +Operational + + +7104 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +010080 +Viewing zenith angle +Operational + + +7105 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +005023 +Sun to satellite azimuth difference +Operational + + +7106 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +020010 +Cloud cover (total) +Operational + + +7107 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +008003 +Vertical significance (satellite observations) +Operational + + +7108 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +007004 +Pressure +Operational + + +7109 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +014026 +Albedo at the top of clouds +Operational + + +7110 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +020014 +Height of top of cloud +Operational + + +7111 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +013093 +Cloud optical thickness +Operational + + +7112 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +105000 +Delayed replication of 5 descriptors +Operational + + +7113 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +031001 +Delayed descriptor replication factor +Operational + + +7114 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +007004 +Pressure +Operational + + +7115 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +007004 +Pressure +Operational + + +7116 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +008043 +Atmospheric chemical or physical constituent type +Operational + + +7117 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +008044 +CAS registry number +Operational + + +7118 +22 +Chemical and aerosol sequences +322028 +(METOP GOME-2) +015021 +Integrated mass density +Operational + + +7119 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +001007 +Satellite identifier +Operational + + +7120 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +001031 +Identification of originating/generating centre +Operational + + +7121 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +002019 +Satellite instruments +Operational + + +7122 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +002020 +Satellite classification +Operational + + +7123 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +004001 +Year +Operational + + +7124 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +004002 +Month +Operational + + +7125 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +004003 +Day +Operational + + +7126 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +004004 +Hour +Operational + + +7127 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +004005 +Minute +Operational + + +7128 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +202131 +Change scale +Add 3 to scale +Operational + + +7129 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +201138 +Change data width +Add 10 to width +Operational + + +7130 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +004006 +Second +Operational + + +7131 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +201000 +Change data width +Cancel +Operational + + +7132 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +202000 +Change scale +Cancel +Operational + + +7133 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +005001 +Latitude (high accuracy) +Operational + + +7134 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +006001 +Longitude (high accuracy) +Operational + + +7135 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +007024 +Satellite zenith angle +Operational + + +7136 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +005021 +Bearing or azimuth +Operational + + +7137 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +007025 +Solar zenith angle +Operational + + +7138 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +005022 +Solar azimuth +Operational + + +7139 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +005043 +Field of view number +Operational + + +7140 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +005040 +Orbit number +Operational + + +7141 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +201133 +Change data width +Add 5 to width +Operational + + +7142 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +005041 +Scan line number +Operational + + +7143 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +201000 +Change data width +Cancel +Operational + + +7144 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +201132 +Change data width +Add 4 to width +Operational + + +7145 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +025070 +Major frame count +Operational + + +7146 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +201000 +Change data width +Cancel +Operational + + +7147 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +202126 +Change scale +Subtract 2 from scale +Operational + + +7148 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +007001 +Height of station +Operational + + +7149 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +202000 +Change scale +Cancel +Operational + + +7150 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +033060 +GqisFlagQual - individual IASI-System quality flag +Operational + + +7151 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +033061 +GqisQualIndex - indicator for instrument noise performance (contributions from spectral and radiometric calibration) +Operational + + +7152 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +033062 +GqisQualIndexLoc - indicator for geometric quality index +Operational + + +7153 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +033063 +GqisQualIndexRad - indicator for instrument noise performance (contributions from radiometric calibration) +Operational + + +7154 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +033064 +GqisQualIndexSpect - indicator for instrument noise performance (contributions from spectral calibration) +Operational + + +7155 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +033065 +GqisSysTecSondQual - output of system TEC (Technical Expertise Centre) quality function +Operational + + +7156 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +101010 +Replicate 1 descriptor 10 times +Operational + + +7157 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +340002 +Band description +Operational + + +7158 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +101087 +Replicate 1 descriptor 87 times +Operational + + +7159 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +340003 +IASI Level 1c 100 channels +Operational + + +7160 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +002019 +Satellite instruments +Operational + + +7161 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +025051 +AVHRR channel combination +Operational + + +7162 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +101007 +Replicate 1 descriptor 7 times +Operational + + +7163 +40 +Additional satellite report sequences +340001 +(IASI Level 1c data) +340004 +IASI Level 1c AVHRR single scene +Operational + + +7164 +40 +Additional satellite report sequences +340002 +(Band description) +025140 +Start channel +Operational + + +7165 +40 +Additional satellite report sequences +340002 +(Band description) +025141 +End channel +Operational + + +7166 +40 +Additional satellite report sequences +340002 +(Band description) +025142 +Channel scale factor +Operational + + +7167 +40 +Additional satellite report sequences +340003 +(IASI Level 1c 100 channels) +104100 +Replicate 4 descriptors 100 times +Operational + + +7168 +40 +Additional satellite report sequences +340003 +(IASI Level 1c 100 channels) +201136 +Change data width +Add 8 to width +Operational + + +7169 +40 +Additional satellite report sequences +340003 +(IASI Level 1c 100 channels) +005042 +Channel number +Operational + + +7170 +40 +Additional satellite report sequences +340003 +(IASI Level 1c 100 channels) +201000 +Change data width +Cancel +Operational + + +7171 +40 +Additional satellite report sequences +340003 +(IASI Level 1c 100 channels) +014046 +Scaled radiance +Operational + + +7172 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +005060 +Y angular position from centre of gravity +Operational + + +7173 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +005061 +Z angular position from centre of gravity +Operational + + +7174 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +025085 +Fraction of clear pixels in HIRS FOV +Operational + + +7175 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +105006 +Replicate 5 descriptors 6 times +Operational + + +7176 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +005042 +Channel number +Operational + + +7177 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +025142 +Channel scale factor +Operational + + +7178 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +014047 +Scaled mean AVHRR radiance +Operational + + +7179 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +025142 +Channel scale factor +Operational + + +7180 +40 +Additional satellite report sequences +340004 +(IASI Level 1c AVHRR single scene) +014048 +Scaled standard deviation AVHRR radiance +Operational + + +7181 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +001007 +Satellite identifier +Operational + + +7182 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +002019 +Satellite instruments +Operational + + +7183 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +001096 +Station acquisition +Operational + + +7184 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +025061 +Software identification and version number +Operational + + +7185 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +005044 +Satellite cycle number +Operational + + +7186 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +005040 +Orbit number +Operational + + +7187 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +001030 +Numerical model identifier +Operational + + +7188 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Datation +004001 +Year +Operational + + +7189 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Datation +004002 +Month +Operational + + +7190 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Datation +004003 +Day +Operational + + +7191 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Datation +004004 +Hour +Operational + + +7192 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Datation +004005 +Minute +Operational + + +7193 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Datation +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +7194 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Location and surface type +005001 +Latitude (high accuracy) +Operational + + +7195 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Location and surface type +006001 +Longitude (high accuracy) +Operational + + +7196 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Location and surface type +008029 +Surface type +Operational + + +7197 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Location and surface type +008074 +Altimeter echo type +Operational + + +7198 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Location and surface type +008077 +Radiometer sensed surface type +Operational + + +7199 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +040011 +Interpolation flag +Operational + + +7200 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +025097 +Three-dimensional error estimate of the navigator orbit +Operational + + +7201 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +025095 +Altimeter state flag +Operational + + +7202 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +025098 +Altimeter data quality flag +Operational + + +7203 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +025099 +Altimeter correction quality flag +Operational + + +7204 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +021144 +Altimeter rain flag +Operational + + +7205 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +025096 +Radiometer state flag +Operational + + +7206 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +040012 +Radiometer data quality flag +Operational + + +7207 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +040013 +Radiometer brightness temperature interpretation flag +Operational + + +7208 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Flags +021169 +Ice presence indicator +Operational + + +7209 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022151 +Ku band ocean range +Operational + + +7210 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022162 +RMS of 20 Hz Ku band ocean range +Operational + + +7211 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022163 +Number of 20 Hz valid points for Ku band +Operational + + +7212 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +025160 +Ku band net instrumental correction +Operational + + +7213 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +025133 +Sea state bias correction on Ku band +Operational + + +7214 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022156 +Ku band significant wave height +Operational + + +7215 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022164 +RMS 20 Hz Ku band significant wave height +Operational + + +7216 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022165 +Number of 20 Hz valid points for Ku band significant wave height +Operational + + +7217 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022166 +Ku band net instrumental correction for significant wave height +Operational + + +7218 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +021137 +Ku band corrected ocean backscatter coefficient +Operational + + +7219 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +021138 +STD Ku band corrected ocean backscatter coefficient +Operational + + +7220 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +022167 +Number of valid points for Ku band backscatter +Operational + + +7221 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +021139 +Ku band net instrumental correction for AGC +Operational + + +7222 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +021118 +Attenuation correction on sigma-0 +Operational + + +7223 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +021145 +Ku band automatic gain control +Operational + + +7224 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +021146 +RMS Ku band automatic gain control +Operational + + +7225 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: Ku band +021147 +Number of valid points for Ku band automatic gain control +Operational + + +7226 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022168 +C band ocean range +Operational + + +7227 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022169 +RMS of C band ocean range +Operational + + +7228 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022170 +Number of 20 Hz valid points for C band +Operational + + +7229 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +025161 +C band net instrumental correction +Operational + + +7230 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +025162 +Sea state bias correction on C band +Operational + + +7231 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022171 +C band significant wave height +Operational + + +7232 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022172 +RMS 20 Hz C band significant wave height +Operational + + +7233 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022173 +Number of 20 Hz valid points for C band significant wave height +Operational + + +7234 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022174 +C band net instrumental correction for significant wave height +Operational + + +7235 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +021170 +C band corrected ocean backscatter coefficient +Operational + + +7236 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +021171 +RMS C band corrected ocean backscatter coefficient +Operational + + +7237 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +022175 +Number of valid points for C band backscatter +Operational + + +7238 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +021172 +C band net instrumental correction for AGC +Operational + + +7239 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +021118 +Attenuation correction on sigma-0 +Operational + + +7240 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +021173 +C band automatic gain control +Operational + + +7241 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +021174 +RMS C band automatic gain control +Operational + + +7242 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Altimeter: C band +021175 +Number of valid points for C band automatic gain control +Operational + + +7243 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +002153 +Satellite channel centre frequency +Operational + + +7244 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +012063 +Brightness temperature +Operational + + +7245 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +002153 +Satellite channel centre frequency +Operational + + +7246 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +012063 +Brightness temperature +Operational + + +7247 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +002153 +Satellite channel centre frequency +Operational + + +7248 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +012063 +Brightness temperature +Operational + + +7249 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +013090 +Radiometer water vapour content +Operational + + +7250 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Radiometer +013091 +Radiometer liquid content +Operational + + +7251 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Wind +007002 +Height or altitude +Operational + + +7252 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Wind +011097 +Wind speed from altimeter +Operational + + +7253 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Wind +011098 +Wind speed from radiometer +Operational + + +7254 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Wind +007002 +Height or altitude +Operational + + +7255 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Wind +011095 +u-component of the model wind vector +Operational + + +7256 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Wind +011096 +v-component of the model wind vector +Operational + + +7257 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010096 +Mean dynamic topography +Operational + + +7258 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010081 +Altitude of COG above reference ellipsoid +Operational + + +7259 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010082 +Instantaneous altitude rate +Operational + + +7260 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010083 +Squared off nadir angle of the satellite from platform data +Operational + + +7261 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010101 +Squared off nadir angle of the satellite from waveform data +Operational + + +7262 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +025132 +Ionospheric correction from model on Ku band +Operational + + +7263 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +025163 +Altimeter ionospheric correction on Ku band +Operational + + +7264 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +025126 +Model dry tropospheric correction +Operational + + +7265 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +025128 +Model wet tropospheric correction +Operational + + +7266 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +025164 +Radiometer wet tropospheric correction +Operational + + +7267 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010085 +Mean sea-surface height +Operational + + +7268 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010097 +Mean sea-surface height from altimeter only +Operational + + +7269 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010086 +Geoid's height +Operational + + +7270 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010087 +Ocean depth/land elevation +Operational + + +7271 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010092 +Solid Earth tide height +Operational + + +7272 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010088 +Total geocentric ocean tide height (solution 1) +Operational + + +7273 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010089 +Total geocentric ocean tide height (solution 2) +Operational + + +7274 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010098 +Loading tide height geocentric ocean tide solution 1 +Operational + + +7275 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010099 +Loading tide height geocentric ocean tide solution 2 +Operational + + +7276 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010090 +Long period tide height +Operational + + +7277 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010100 +Non-equilibrium long period tide height +Operational + + +7278 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +010093 +Geocentric pole tide height +Operational + + +7279 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +025127 +Inverted barometer correction +Sea-surface height correction due to pressure loading +Operational + + +7280 +40 +Additional satellite report sequences +340005 +(JASON2 OGDR data) +Dynamic topography +040014 +High-frequency fluctuations of the sea-surface topography correction +Operational + + +7281 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +001007 +Satellite identifier +Operational + + +7282 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +001031 +Identification of originating/generating centre +Operational + + +7283 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +002019 +Satellite instruments +Operational + + +7284 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +002020 +Satellite classification +Operational + + +7285 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +004001 +Year +Operational + + +7286 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +004002 +Month +Operational + + +7287 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +004003 +Day +Operational + + +7288 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +004004 +Hour +Operational + + +7289 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +004005 +Minute +Operational + + +7290 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +202131 +Change scale +Add 3 to scale +Operational + + +7291 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +201138 +Change data width +Add 10 to width +Operational + + +7292 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +004006 +Second +Operational + + +7293 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +201000 +Change data width +Cancel +Operational + + +7294 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +202000 +Change scale +Cancel +Operational + + +7295 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +005001 +Latitude (high accuracy) +Operational + + +7296 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +006001 +Longitude (high accuracy) +Operational + + +7297 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +007024 +Satellite zenith angle +Operational + + +7298 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +005021 +Bearing or azimuth +Operational + + +7299 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +007025 +Solar zenith angle +Operational + + +7300 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +005022 +Solar azimuth +Operational + + +7301 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +005043 +Field of view number +Operational + + +7302 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +005040 +Orbit number +Operational + + +7303 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +201133 +Change data width +Add 5 to width +Operational + + +7304 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +005041 +Scan line number +Operational + + +7305 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +201000 +Change data width +Cancel +Operational + + +7306 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +201132 +Change data width +Add 4 to width +Operational + + +7307 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +025070 +Major frame count +Operational + + +7308 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +201000 +Change data width +Cancel +Operational + + +7309 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +202126 +Change scale +Subtract 2 from scale +Operational + + +7310 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +007001 +Height of station +Operational + + +7311 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +202000 +Change scale +Cancel +Operational + + +7312 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +103003 +Replicate 3 descriptors 3 times +Operational + + +7313 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +025140 +Start channel +Operational + + +7314 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +025141 +End channel +Operational + + +7315 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +033060 +GqisFlagQual - individual IASI-System quality flag +Operational + + +7316 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +033061 +GqisQualIndex - indicator for instrument noise performance (contributions from spectral and radiometric calibration) +Operational + + +7317 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +033062 +GqisQualIndexLoc - indicator for geometric quality index +Operational + + +7318 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +033063 +GqisQualIndexRad - indicator for instrument noise performance (contributions from radiometric calibration) +Operational + + +7319 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +033064 +GqisQualIndexSpect - indicator for instrument noise performance (contributions from spectral calibration) +Operational + + +7320 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +033065 +GqisSysTecSondQual - output of system TEC (Technical Expertise Centre) quality function +Operational + + +7321 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +040020 +GqisFlagQualDetailed - quality flag for the system +Operational + + +7322 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +101010 +Replicate 1 descriptor 10 times +Operational + + +7323 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +340002 +Band description +Operational + + +7324 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +101087 +Replicate 1 descriptor 87 times +Operational + + +7325 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +340003 +IASI Level 1c 100 channels +Operational + + +7326 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +002019 +Satellite instruments +Operational + + +7327 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +025051 +AVHRR channel combination +Operational + + +7328 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +101007 +Replicate 1 descriptor 7 times +Operational + + +7329 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +340004 +IASI Level 1c AVHRR single scene +Operational + + +7330 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +020081 +Cloud amount in segment +Operational + + +7331 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +008029 +Surface type +Operational + + +7332 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +020083 +Amount of segment covered by scene +Operational + + +7333 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +008029 +Surface type +Operational + + +7334 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +040018 +GIacAvgImagIIS - average of imager measurements +Operational + + +7335 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +040019 +GIacVarImagIIS - variance of imager measurements +Operational + + +7336 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +040021 +Fraction of weighted AVHRR pixel in IASI FOV covered with snow/ice +Operational + + +7337 +40 +Additional satellite report sequences +340007 +(IASI Level 1c data (all channels)) +040022 +Number of missing, bad or failed AVHRR pixels +Operational + + +7338 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Satellite processing information +001007 +Satellite identifier +Operational + + +7339 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Satellite processing information +001031 +Identification of originating/generating centre +Operational + + +7340 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Satellite processing information +002019 +Satellite instruments +Operational + + +7341 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Satellite processing information +002020 +Satellite classification +Operational + + +7342 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +004001 +Year +Operational + + +7343 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +004002 +Month +Operational + + +7344 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +004003 +Day +Operational + + +7345 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +004004 +Hour +Operational + + +7346 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +004005 +Minute +Operational + + +7347 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +202131 +Change scale +Add 3 to scale +Operational + + +7348 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +201138 +Change data width +Add 10 to width +Operational + + +7349 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +004006 +Second +Operational + + +7350 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +201000 +Change data width +Cancel +Operational + + +7351 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Date and time +202000 +Change scale +Cancel +Operational + + +7352 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +005001 +Latitude (high accuracy) +Operational + + +7353 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +006001 +Longitude (high accuracy) +Operational + + +7354 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +007024 +Satellite zenith angle +Operational + + +7355 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +005021 +Bearing or azimuth +Operational + + +7356 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +007025 +Solar zenith angle +Operational + + +7357 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +005022 +Solar azimuth +Operational + + +7358 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +005043 +Field of view number +Operational + + +7359 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +005040 +Orbit number +Operational + + +7360 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +201133 +Change data width +Add 5 to width +Operational + + +7361 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +005041 +Scan line number +Operational + + +7362 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +201000 +Change data width +Cancel +Operational + + +7363 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +201132 +Change data width +Add 4 to width +Operational + + +7364 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +025070 +Major frame count +Operational + + +7365 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +201000 +Change data width +Cancel +Operational + + +7366 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +202126 +Change scale +Subtract 2 from scale +Operational + + +7367 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +007001 +Height of station +Operational + + +7368 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Location information +202000 +Change scale +Cancel +Operational + + +7369 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +103003 +Replicate 3 descriptors 3 times +Operational + + +7370 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +025140 +Start channel +Operational + + +7371 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +025141 +End channel +Operational + + +7372 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +033060 +GqisFlagQual - individual IASI-System quality flag +Operational + + +7373 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +033061 +GqisQualIndex - indicator for instrument noise performance (contributions from spectral and radiometric calibration) +Operational + + +7374 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +033062 +GqisQualIndexLoc - indicator for geometric quality index +Operational + + +7375 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +033063 +GqisQualIndexRad - indicator for instrument noise performance (contributions from radiometric calibration) +Operational + + +7376 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +033064 +GqisQualIndexSpect - indicator for instrument noise performance (contributions from spectral calibration) +Operational + + +7377 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +033065 +GqisSysTecSondQual - output of system TEC (Technical Expertise Centre) quality function +Operational + + +7378 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Quality information +040020 +GqisFlagQualDetailed - quality flag for the system +Operational + + +7379 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +101010 +Replicate 1 descriptor 10 times +Operational + + +7380 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +340002 +Band description +Operational + + +7381 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +104000 +Delayed replication of 4 descriptors +Operational + + +7382 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +031002 +Extended delayed descriptor replication factor +Operational + + +7383 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +201136 +Change data width +Add 8 to width +Operational + + +7384 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +005042 +Channel number +Operational + + +7385 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +201000 +Change data width +Cancel +Operational + + +7386 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +IASI subset of channels +014046 +Scaled radiance +Operational + + +7387 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Instrument band definition +108003 +Replicate 8 descriptors 3 times +Operational + + +7388 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Instrument band definition +025140 +Start channel +Operational + + +7389 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Instrument band definition +025141 +End channel +Operational + + +7390 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Instrument band definition +040026 +Score quantization factor +Operational + + +7391 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Instrument band definition +040016 +Residual RMS in band +Operational + + +7392 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Instrument band definition +025062 +Database identification +Operational + + +7393 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Principal component scores for band +101000 +Delayed replication of 1 descriptor +Operational + + +7394 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Principal component scores for band +031002 +Extended delayed descriptor replication factor +Operational + + +7395 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +Principal component scores for band +040017 +Non-normalized principal component score +Operational + + +7396 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +002019 +Satellite instruments +Operational + + +7397 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +025051 +AVHRR channel combination +Operational + + +7398 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +101007 +Replicate 1 descriptor 7 times +Operational + + +7399 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +340004 +IASI Level 1c AVHRR single scene +Operational + + +7400 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +020081 +Cloud amount in segment +Operational + + +7401 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +008029 +Surface type +Operational + + +7402 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +020083 +Amount of segment covered by scene +Operational + + +7403 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +008029 +Surface type +Operational + + +7404 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +040018 +GIacAvgImagIIS - average of imager measurements +Operational + + +7405 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +040019 +GIacVarImagIIS - variance of imager measurements +Operational + + +7406 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +040021 +Fraction of weighted AVHRR pixel in IASI FOV covered with snow/ice +Operational + + +7407 +40 +Additional satellite report sequences +340008 +(IASI sequence combining PC scores, channel selection and enhanced data) +AVHRR scene analysis +040022 +Number of missing, bad or failed AVHRR pixels +Operational + + +7408 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +001007 +Satellite identifier +Operational + + +7409 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +001031 +Identification of originating/generating centre +Operational + + +7410 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +002019 +Satellite instruments +Operational + + +7411 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +002020 +Satellite classification +Operational + + +7412 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +301011 +Year, month, day +Operational + + +7413 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +301013 +Hour, minute, second +Operational + + +7414 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +005040 +Orbit number +Operational + + +7415 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +201136 +Change data width +Add 8 to width +Operational + + +7416 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +005041 +Scan line number +Operational + + +7417 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +201000 +Change data width +Cancel +Operational + + +7418 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +025071 +Frame count +Operational + + +7419 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +005001 +Latitude (high accuracy) +Operational + + +7420 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +005001 +Latitude (high accuracy) +Operational + + +7421 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +006001 +Longitude (high accuracy) +Operational + + +7422 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +006001 +Longitude (high accuracy) +Operational + + +7423 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +107064 +Replicate 7 descriptors 64 times +Operational + + +7424 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +106032 +Replicate 6 descriptors 32 times +Operational + + +7425 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +008012 +Land/sea qualifier +Operational + + +7426 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +008013 +Day/night qualifier +Operational + + +7427 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +008065 +Sun-glint indicator +Operational + + +7428 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +008072 +Pixel(s) type +Operational + + +7429 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +013039 +Terrain type (ice/snow) +Operational + + +7430 +40 +Additional satellite report sequences +340009 +(Normalized differential vegetation index (NDVI)) +040015 +Normalized differential vegetation index (NDVI) +Operational + + +7431 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Satellite +001007 +Satellite identifier +Operational + + +7432 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Satellite +002019 +Satellite instruments +Operational + + +7433 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Satellite +001096 +Station acquisition +Operational + + +7434 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Satellite +025061 +Software identification and version number +Operational + + +7435 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Satellite +005044 +Satellite cycle number +Operational + + +7436 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Satellite +005040 +Orbit number +Operational + + +7437 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Satellite +001030 +Numerical model identifier +Operational + + +7438 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Datation +004001 +Year +Operational + + +7439 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Datation +004002 +Month +Operational + + +7440 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Datation +004003 +Day +Operational + + +7441 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Datation +004004 +Hour +Operational + + +7442 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Datation +004005 +Minute +Operational + + +7443 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Datation +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +7444 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Location and surface type +005001 +Latitude (high accuracy) +Operational + + +7445 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Location and surface type +006001 +Longitude (high accuracy) +Operational + + +7446 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Location and surface type +008029 +Surface type +Operational + + +7447 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Location and surface type +008074 +Altimeter echo type +Operational + + +7448 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Location and surface type +008077 +Radiometer sensed surface type +Operational + + +7449 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +040011 +Interpolation flag +Operational + + +7450 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +025097 +Three-dimensional error estimate of the navigator orbit +Operational + + +7451 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +025095 +Altimeter state flag +Operational + + +7452 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +025098 +Altimeter data quality flag +Operational + + +7453 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +025099 +Altimeter correction quality flag +Operational + + +7454 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +021144 +Altimeter rain flag +Operational + + +7455 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +025096 +Radiometer state flag +Operational + + +7456 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +040012 +Radiometer data quality flag +Operational + + +7457 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +040013 +Radiometer brightness temperature interpretation flag +Operational + + +7458 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +021169 +Ice presence indicator +Operational + + +7459 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +040023 +Auxiliary altimeter state flags +Operational + + +7460 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +040024 +Meteorological map availability +Operational + + +7461 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Flags +040025 +Interpolation flag for mean diurnal tide +Operational + + +7462 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022151 +Ku band ocean range +Operational + + +7463 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022162 +RMS of 20 Hz Ku band ocean range +Operational + + +7464 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022163 +Number of 20 Hz valid points for Ku band +Operational + + +7465 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +025160 +Ku band net instrumental correction +Operational + + +7466 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +025133 +Sea state bias correction on Ku band +Operational + + +7467 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022156 +Ku band significant wave height +Operational + + +7468 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022164 +RMS 20 Hz Ku band significant wave height +Operational + + +7469 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022165 +Number of 20 Hz valid points for Ku band significant wave height +Operational + + +7470 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022166 +Ku band net instrumental correction for significant wave height +Operational + + +7471 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +021137 +Ku band corrected ocean backscatter coefficient +Operational + + +7472 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +021138 +STD Ku band corrected ocean backscatter coefficient +Operational + + +7473 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +022167 +Number of valid points for Ku band backscatter +Operational + + +7474 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +021139 +Ku band net instrumental correction for AGC +Operational + + +7475 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +021118 +Attenuation correction on sigma-0 +Operational + + +7476 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +021145 +Ku band automatic gain control +Operational + + +7477 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +021146 +RMS Ku band automatic gain control +Operational + + +7478 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: Ku band +021147 +Number of valid points for Ku band automatic gain control +Operational + + +7479 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022168 +C band ocean range +Operational + + +7480 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022169 +RMS of C band ocean range +Operational + + +7481 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022170 +Number of 20 Hz valid points for C band +Operational + + +7482 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +025161 +C band net instrumental correction +Operational + + +7483 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +025162 +Sea state bias correction on C band +Operational + + +7484 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022171 +C band significant wave height +Operational + + +7485 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022172 +RMS 20 Hz C band significant wave height +Operational + + +7486 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022173 +Number of 20 Hz valid points for C band significant wave height +Operational + + +7487 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022174 +C band net instrumental correction for significant wave height +Operational + + +7488 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +021170 +C band corrected ocean backscatter coefficient +Operational + + +7489 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +021171 +RMS C band corrected ocean backscatter coefficient +Operational + + +7490 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +022175 +Number of valid points for C band backscatter +Operational + + +7491 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +021172 +C band net instrumental correction for AGC +Operational + + +7492 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +021118 +Attenuation correction on sigma-0 +Operational + + +7493 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +021173 +C band automatic gain control +Operational + + +7494 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +021174 +RMS C band automatic gain control +Operational + + +7495 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Altimeter: C band +021175 +Number of valid points for C band automatic gain control +Operational + + +7496 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +002153 +Satellite channel centre frequency +Operational + + +7497 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +012063 +Brightness temperature +Operational + + +7498 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +002153 +Satellite channel centre frequency +Operational + + +7499 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +012063 +Brightness temperature +Operational + + +7500 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +002153 +Satellite channel centre frequency +Operational + + +7501 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +012063 +Brightness temperature +Operational + + +7502 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +013090 +Radiometer water vapour content +Operational + + +7503 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Radiometer +013091 +Radiometer liquid content +Operational + + +7504 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Wind +007002 +Height or altitude +Operational + + +7505 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Wind +011097 +Wind speed from altimeter +Operational + + +7506 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Wind +011098 +Wind speed from radiometer +Operational + + +7507 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Wind +007002 +Height or altitude +Operational + + +7508 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Wind +011095 +u-component of the model wind vector +Operational + + +7509 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Wind +011096 +v-component of the model wind vector +Operational + + +7510 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010096 +Mean dynamic topography +Operational + + +7511 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010081 +Altitude of COG above reference ellipsoid +Operational + + +7512 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010082 +Instantaneous altitude rate +Operational + + +7513 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010083 +Squared off nadir angle of the satellite from platform data +Operational + + +7514 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010101 +Squared off nadir angle of the satellite from waveform data +Operational + + +7515 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +025132 +Ionospheric correction from model on Ku band +Operational + + +7516 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +025163 +Altimeter ionospheric correction on Ku band +Operational + + +7517 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +025126 +Model dry tropospheric correction +Operational + + +7518 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +025128 +Model wet tropospheric correction +Operational + + +7519 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +025164 +Radiometer wet tropospheric correction +Operational + + +7520 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010085 +Mean sea-surface height +Operational + + +7521 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010097 +Mean sea-surface height from altimeter only +Operational + + +7522 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010086 +Geoid's height +Operational + + +7523 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010087 +Ocean depth/land elevation +Operational + + +7524 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010092 +Solid Earth tide height +Operational + + +7525 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010088 +Total geocentric ocean tide height (solution 1) +Operational + + +7526 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010089 +Total geocentric ocean tide height (solution 2) +Operational + + +7527 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010098 +Loading tide height geocentric ocean tide solution 1 +Operational + + +7528 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010099 +Loading tide height geocentric ocean tide solution 2 +Operational + + +7529 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010090 +Long period tide height +Operational + + +7530 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010100 +Non-equilibrium long period tide height +Operational + + +7531 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010093 +Geocentric pole tide height +Operational + + +7532 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +025127 +Inverted barometer correction +Sea-surface height correction due to pressure loading +Operational + + +7533 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +040014 +High-frequency fluctuations of the sea-surface topography correction +Operational + + +7534 +40 +Additional satellite report sequences +340010 +(JASON-2 OGDR data) +Dynamic topography +010102 +Sea-surface height anomaly +Operational + + +7535 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +001007 +Satellite identifier +Operational + + +7536 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +002019 +Satellite instruments +Operational + + +7537 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +001096 +Station acquisition +Operational + + +7538 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025061 +Software identification and version number +Operational + + +7539 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +005044 +Satellite cycle number +Operational + + +7540 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +005040 +Orbit number +Operational + + +7541 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +001030 +Numerical model identifier +Operational + + +7542 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +004001 +Year +Operational + + +7543 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +004002 +Month +Operational + + +7544 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +004003 +Day +Operational + + +7545 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +004004 +Hour +Operational + + +7546 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +004005 +Minute +Operational + + +7547 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +7548 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +005001 +Latitude (high accuracy) +Operational + + +7549 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +006001 +Longitude (high accuracy) +Operational + + +7550 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +008029 +Surface type +Operational + + +7551 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +008077 +Radiometer sensed surface type +Operational + + +7552 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +040011 +Interpolation flag +Operational + + +7553 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025097 +Three-dimensional error estimate of the navigator orbit +Operational + + +7554 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025112 +Band specific altimeter data quality flag +Operational + + +7555 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025113 +Band specific altimeter correction quality flag +Operational + + +7556 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021148 +Trailing edge variation flag +Operational + + +7557 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021169 +Ice presence indicator +Operational + + +7558 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +040024 +Meteorological map availability +Operational + + +7559 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +040025 +Interpolation flag for mean diurnal tide +Operational + + +7560 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +002153 +Satellite channel centre frequency +Operational + + +7561 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022189 +Specific band ocean range +Operational + + +7562 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022191 +RMS of specific band ocean range +Operational + + +7563 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022130 +Number of valid points for specific band +Operational + + +7564 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025167 +Specific band net instrumental correction +Operational + + +7565 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025166 +Sea state bias correction on specific band +Operational + + +7566 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022190 +Specific band significant wave height +Operational + + +7567 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022131 +RMS specific band significant wave height +Operational + + +7568 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022132 +Number of valid points for specific band significant wave height +Operational + + +7569 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022133 +Specific band net instrument correction for significant wave height +Operational + + +7570 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021183 +Specific band corrected ocean backscatter coefficient +Operational + + +7571 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021184 +STD specific band corrected ocean backscatter coefficient +Operational + + +7572 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +022134 +Number of valid points for specific band backscatter +Operational + + +7573 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021185 +Specific band net instrumental correction for AGC +Operational + + +7574 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021118 +Attenuation correction on sigma-0 +Operational + + +7575 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021186 +Specific band automatic gain control +Operational + + +7576 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021187 +RMS specific band automatic gain control +Operational + + +7577 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +021188 +Number of valid points for specific band automatic gain control +Operational + + +7578 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +002153 +Satellite channel centre frequency +Operational + + +7579 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +012063 +Brightness temperature +Operational + + +7580 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +002153 +Satellite channel centre frequency +Operational + + +7581 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +012063 +Brightness temperature +Operational + + +7582 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +013090 +Radiometer water vapour content +Operational + + +7583 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +013160 +Radiometer liquid content +Operational + + +7584 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +007002 +Height or altitude +Operational + + +7585 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +011097 +Wind speed from altimeter +Operational + + +7586 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +007002 +Height or altitude +Operational + + +7587 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +011095 +u-component of the model wind vector +Operational + + +7588 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +011096 +v-component of the model wind vector +Operational + + +7589 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010096 +Mean dynamic topography +Operational + + +7590 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010081 +Altitude of COG above reference ellipsoid +Operational + + +7591 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010082 +Instantaneous altitude rate +Operational + + +7592 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010083 +Squared off-nadir angle of the satellite from platform data +Operational + + +7593 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010101 +Squared off-nadir angle of the satellite from waveform data +Operational + + +7594 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +002153 +Satellite channel centre frequency +Operational + + +7595 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025165 +Ionospheric correction from model on specific band +Operational + + +7596 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025126 +Model dry tropospheric correction +Operational + + +7597 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025128 +Model wet tropospheric correction +Operational + + +7598 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025164 +Radiometer wet tropospheric correction +Operational + + +7599 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010085 +Mean sea-surface height +Operational + + +7600 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010086 +Geoid's height +Operational + + +7601 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010087 +Ocean depth/land elevation +Operational + + +7602 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010092 +Solid Earth tide height +Operational + + +7603 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010088 +Total geocentric ocean tide height (solution 1) +Operational + + +7604 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010089 +Total geocentric ocean tide height (solution 2) +Operational + + +7605 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010098 +Loading tide height geocentric ocean tide solution 1 +Operational + + +7606 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010099 +Loading tide height geocentric ocean tide solution 2 +Operational + + +7607 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010090 +Long period tide height +Operational + + +7608 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010100 +Non-equilibrium long period tide height +Operational + + +7609 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010093 +Geocentric pole tide height +Operational + + +7610 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +025127 +Inverted barometer correction +Operational + + +7611 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +040014 +High-frequency fluctuations of the sea-surface topography correction +Operational + + +7612 +40 +Additional satellite report sequences +340011 +(SARAL Altika) +010102 +Sea-surface height anomaly +Operational + + +7613 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +001007 +Satellite identifier +Operational + + +7614 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +002019 +Satellite instruments +Operational + + +7615 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +008091 +Coordinates significance += 0 Satellite coordinates +Operational + + +7616 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005001 +Latitude (high accuracy) +Operational + + +7617 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +006001 +Longitude (high accuracy) +Operational + + +7618 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +007002 +Height or altitude +Operational + + +7619 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005063 +Spacecraft roll +Operational + + +7620 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005064 +Spacecraft pitch +Operational + + +7621 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005066 +Spacecraft yaw +Operational + + +7622 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005041 +Scan line number +Operational + + +7623 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005067 +Number of scan lines +Operational + + +7624 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +301011 +Year, month, day +Operational + + +7625 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +301012 +Hour, minute +Operational + + +7626 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +7627 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +008091 +Coordinates significance += 1 Observation coordinates +Operational + + +7628 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005001 +Latitude (high accuracy) +Operational + + +7629 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +006001 +Longitude (high accuracy) +Operational + + +7630 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +107000 +Delayed replication of 7 descriptors +Operational + + +7631 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +031001 +Delayed descriptor replication factor +Operational + + +7632 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +005042 +Channel number +Operational + + +7633 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +002153 +Satellite channel centre frequency +Operational + + +7634 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +002104 +Antenna polarization +Operational + + +7635 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +040028 +GMI quality flag +Operational + + +7636 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +007024 +Satellite zenith angle +Operational + + +7637 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +040027 +Sun glint angle +Operational + + +7638 +40 +Additional satellite report sequences +340012 +(GPM Microwave Imager (GMI)) +012063 +Brightness temperature +Operational + + +7639 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +001007 +Satellite identifier +Operational + + +7640 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +002019 +Satellite instruments +Operational + + +7641 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +001033 +Identification of originating/generating centre +Operational + + +7642 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +001034 +Identification of originating/generating sub-centre +Operational + + +7643 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004001 +Year +Operational + + +7644 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004002 +Month +Operational + + +7645 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004003 +Day +Operational + + +7646 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004004 +Hour +Operational + + +7647 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004005 +Minute +Operational + + +7648 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +7649 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005068 +Profile number +Operational + + +7650 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005070 +Observation identifier +Operational + + +7651 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005069 +Receiver channel +Operational + + +7652 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040036 +Lidar L2b classification type +Operational + + +7653 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +008091 +Coordinates significance += 2 Start of observation +Operational + + +7654 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005001 +Latitude (high accuracy) +Operational + + +7655 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +006001 +Longitude (high accuracy) +Operational + + +7656 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004016 +Time increment +Operational + + +7657 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +008091 +Coordinates significance += 3 End of observation +Operational + + +7658 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005001 +Latitude (high accuracy) +Operational + + +7659 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +006001 +Longitude (high accuracy) +Operational + + +7660 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004016 +Time increment +Operational + + +7661 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +008091 +Coordinates significance += 4 Horizontal centre of gravity of observation +Operational + + +7662 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005001 +Latitude (high accuracy) +Operational + + +7663 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +006001 +Longitude (high accuracy) +Operational + + +7664 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +004016 +Time increment +Operational + + +7665 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +008091 +Coordinates significance += 6 Top of observation +Operational + + +7666 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +007071 +Height (high resolution) +Operational + + +7667 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005021 +Bearing or azimuth +Operational + + +7668 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +007021 +Elevation +Operational + + +7669 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040035 +Satellite range +Operational + + +7670 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +008091 +Coordinates significance += 7 Bottom of observation +Operational + + +7671 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +007071 +Height (high resolution) +Operational + + +7672 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005021 +Bearing or azimuth +Operational + + +7673 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +007021 +Elevation +Operational + + +7674 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040035 +Satellite range +Operational + + +7675 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +008091 +Coordinates significance += 5 Vertical centre of gravity of observation +Operational + + +7676 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +007071 +Height (high resolution) +Operational + + +7677 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +005021 +Bearing or azimuth +Operational + + +7678 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +007021 +Elevation +Operational + + +7679 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040035 +Satellite range +Operational + + +7680 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040029 +Horizontal observation integration length +Operational + + +7681 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040030 +Horizontal line of sight wind +Operational + + +7682 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040031 +Error estimate of horizontal line of sight wind +Operational + + +7683 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +025187 +Confidence flag +Operational + + +7684 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +010004 +Pressure +Operational + + +7685 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +012001 +Temperature/air temperature +Operational + + +7686 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040037 +Backscatter ratio +Operational + + +7687 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040032 +Derivative wind to pressure +Operational + + +7688 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040033 +Derivative wind to temperature +Operational + + +7689 +40 +Additional satellite report sequences +340013 +(Atmospheric Laser Doppler Instrument (ALADIN) L2b data) +040034 +Derivative wind to backscatter ratio +Operational + + +7690 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +001007 +Satellite identifier +Operational + + +7691 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +002019 +Satellite instruments +Operational + + +7692 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +301011 +Year, month, day +Operational + + +7693 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +301012 +Hour, minute +Operational + + +7694 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +7695 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +201133 +Change data width +Increase bit width +Operational + + +7696 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +005041 +Scan line number +Operational + + +7697 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +201000 +Change data width +Cancel increase bit width +Operational + + +7698 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +201130 +Change data width +Increase bit width +Operational + + +7699 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +005043 +Field of view number +Operational + + +7700 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +201000 +Change data width +Cancel increase bit width +Operational + + +7701 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +207001 +Increase scale, reference value and data width +Operational + + +7702 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +005002 +Latitude (coarse accuracy) +Operational + + +7703 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +006002 +Longitude (coarse accuracy) +Operational + + +7704 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +7705 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +040027 +Sun glint angle +Operational + + +7706 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +013040 +Surface flag +Operational + + +7707 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +021120 +Probability of rain +Operational + + +7708 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +207003 +Increase scale, reference value and data width +Operational + + +7709 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +102003 +Replicate 2 descriptors 3 times +Operational + + +7710 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +002186 +Capability to detect precipitation phenomena +Set bit 1 = unknown/unspecified (total precipitation) in the first replication, Set bit 6 = solid precipitation in the second replication, Set bit 24 = convective precipitation in the third replication +Operational + + +7711 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +013155 +Intensity of precipitation (high accuracy) +Operational + + +7712 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +207000 +Increase scale, reference value and data width +Cancel +Operational + + +7713 +40 +Additional satellite report sequences +340015 +(Global Precipitation Measurement (GPM) precipitation data) +033003 +Quality information +Operational + + +7714 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +301129 +Observing satellite and instruments +Operational + + +7715 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +301130 +High precision timestamp +Operational + + +7716 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +301131 +Pixel geolocation +Operational + + +7717 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +202134 +Change scale +Add 6 to scale +Operational + + +7718 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +007001 +Height of station +Operational + + +7719 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +202000 +Change scale +Cancel +Operational + + +7720 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +101000 +Delayed replicator of 1 descriptor +Operational + + +7721 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +031002 +Extended delayed descriptor replication factor +Operational + + +7722 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +340002 +Band description +Operational + + +7723 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +101000 +Delayed replication of 1 descriptor +Operational + + +7724 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +031002 +Extended delayed descriptor replication factor +Operational + + +7725 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +304039 +Radiance in channel +Operational + + +7726 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +101000 +Delayed replicator of 1 descriptor +Operational + + +7727 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +031002 +Extended delayed descriptor replication factor +Operational + + +7728 +40 +Additional satellite report sequences +340016 +(Principal component scores, channel selection and enhanced data collected on board a geostationary platform) +304040 +Principal component score in band +Operational + + +7729 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +001007 +Satellite identifier += 61 Sentinel 3A or = 65 Sentinel 3B +Operational + + +7730 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +002019 +Satellite instruments +178 (SRAL) +Operational + + +7731 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +005044 +Satellite cycle number +Operational + + +7732 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +001096 +Station acquisition +Operational + + +7733 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +005040 +Orbit number +Operational + + +7734 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +001040 +Processing centre ID code +Operational + + +7735 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025061 +Software identification and version number +Operational + + +7736 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025182 +L1 processing flag +Operational + + +7737 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025183 +L1 processing quality +Operational + + +7738 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025181 +L2 processing flag +Operational + + +7739 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025184 +L2 product status +Operational + + +7740 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +301011 +Year, month, day +Operational + + +7741 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +301013 +Hour, minute, second +Operational + + +7742 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +7743 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +301021 +Latitude/longitude (high accuracy) +Operational + + +7744 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +005063 +Spacecraft roll +Operational + + +7745 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +005064 +Spacecraft pitch +Operational + + +7746 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +005066 +Spacecraft yaw +Operational + + +7747 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010081 +Altitude of COG above reference ellipsoid +Operational + + +7748 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010082 +Instantaneous altitude rate +Operational + + +7749 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008075 +Ascending/descending orbit qualifier +Operational + + +7750 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025090 +Orbit state flag +Operational + + +7751 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008029 +Surface type +Operational + + +7752 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +201137 +Change data width +Increase data width by 9 bits +Operational + + +7753 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +202129 +Change scale +Add 1 to scale +Operational + + +7754 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +006021 +Distance +Operational + + +7755 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +202000 +Change scale +Cancel +Operational + + +7756 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +201000 +Change data width +Cancel +Operational + + +7757 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010087 +Ocean depth/land elevation +Operational + + +7758 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025096 +Radiometer state flag +Operational + + +7759 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +040012 +Radiometer data quality flag +Operational + + +7760 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008077 +Radiometer sensed surface type +Operational + + +7761 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +104002 +Replicate 4 descriptors 2 times +Operational + + +7762 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +002153 +Satellite channel centre frequency +Operational + + +7763 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +012063 +Brightness temperature +Operational + + +7764 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +012065 +Standard deviation brightness temperature +Operational + + +7765 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +040013 +Radiometer brightness temperature interpretation flag +Operational + + +7766 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +007002 +Height or altitude +Operational + + +7767 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +011098 +Wind speed from radiometer +Operational + + +7768 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013090 +Radiometer water vapour content +Operational + + +7769 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013091 +Radiometer liquid content +Operational + + +7770 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025164 +Radiometer wet tropospheric correction +Operational + + +7771 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025095 +Altimeter state flag +Operational + + +7772 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +040023 +Auxiliary altimeter state flags +Operational + + +7773 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025113 +Band specific altimeter correction quality flag +Operational + + +7774 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008074 +Altimeter echo type +Operational + + +7775 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025190 +Altimeter echo processing mode +Operational + + +7776 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021144 +Altimeter rain flag +Operational + + +7777 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025191 +Altimeter tracking mode +Operational + + +7778 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021143 +Ku band rain attenuation +Operational + + +7779 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013055 +Intensity of precipitation +Operational + + +7780 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021169 +Ice presence indicator +Operational + + +7781 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010101 +Squared off-nadir angle of the satellite from waveform data +Operational + + +7782 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +015012 +Total electron count per square metre +Operational + + +7783 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +007002 +Height or altitude +Operational + + +7784 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +011097 +Wind speed from altimeter +Operational + + +7785 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +040024 +Meteorological map availability +Operational + + +7786 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +007002 +Height or altitude +Operational + + +7787 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025126 +Model dry tropospheric correction +Operational + + +7788 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025128 +Model wet tropospheric correction +Operational + + +7789 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +040011 +Interpolation flag +Operational + + +7790 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +007002 +Height or altitude +Operational + + +7791 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +011095 +u-component of the model wind vector +Operational + + +7792 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +011096 +v-component of the model wind vector +Operational + + +7793 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010088 +Total geocentric ocean tide height (solution 1) +Operational + + +7794 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010089 +Total geocentric ocean tide height (solution 2) +Operational + + +7795 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010090 +Long period tide height +Operational + + +7796 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010092 +Solid Earth tide height +Operational + + +7797 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010093 +Geocentric pole tide height +Operational + + +7798 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010098 +Loading tide height geocentric ocean tide solution 1 +Operational + + +7799 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010099 +Loading tide height geocentric ocean tide solution 2 +Operational + + +7800 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010100 +Non-equilibrium long period tide height +Operational + + +7801 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025127 +Inverted barometer correction +Operational + + +7802 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +040014 +High-frequency fluctuations of the sea-surface topography correction +Operational + + +7803 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010085 +Mean sea-surface height +Operational + + +7804 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010086 +Geoid's height +Operational + + +7805 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010096 +Mean dynamic topography +Operational + + +7806 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010103 +Mean dynamic topography accuracy +Operational + + +7807 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010102 +Sea-surface height anomaly +Operational + + +7808 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022080 +Waveband central frequency +Operational + + +7809 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008076 +Type of band +Operational + + +7810 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022189 +Specific band ocean range +Operational + + +7811 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022191 +RMS of specific band ocean range +Operational + + +7812 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022130 +Number of valid points for specific band +Operational + + +7813 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025165 +Ionospheric correction from model on specific band +Operational + + +7814 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025166 +Sea state bias correction on specific band +Operational + + +7815 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025167 +Specific band net instrumental correction +Operational + + +7816 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021183 +Specific band corrected ocean backscatter coefficient +Operational + + +7817 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021184 +STD specific band corrected ocean backscatter coefficient +Operational + + +7818 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022134 +Number of valid points for specific band backscatter +Operational + + +7819 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021122 +Attenuation correction on sigma-0 (from tB) +Operational + + +7820 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022190 +Specific band significant wave height +Operational + + +7821 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022131 +RMS specific band significant wave height +Operational + + +7822 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022132 +Number of valid points for specific band significant wave height +Operational + + +7823 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022133 +Specific band net instrument correction for significant wave height +Operational + + +7824 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021186 +Specific band automatic gain control +Operational + + +7825 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021187 +RMS specific band automatic gain control +Operational + + +7826 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021188 +Number of valid points for specific band automatic gain control +Operational + + +7827 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021185 +Specific band net instrumental correction for AGC +Operational + + +7828 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025112 +Band specific altimeter data quality flag +Operational + + +7829 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025113 +Band specific altimeter correction quality flag +Operational + + +7830 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +033092 +Band specific ocean quality flag +Operational + + +7831 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008076 +Type of band +Operational + + +7832 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022189 +Specific band ocean range +Operational + + +7833 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022191 +RMS of specific band ocean range +Operational + + +7834 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022130 +Number of valid points for specific band +Operational + + +7835 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025165 +Ionospheric correction from model on specific band +Operational + + +7836 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025166 +Sea state bias correction on specific band +Operational + + +7837 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025167 +Specific band net instrumental correction +Operational + + +7838 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021183 +Specific band corrected ocean backscatter coefficient +Operational + + +7839 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021184 +STD specific band corrected ocean backscatter coefficient +Operational + + +7840 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022134 +Number of valid points for specific band backscatter +Operational + + +7841 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021122 +Attenuation correction on sigma-0 (from tB) +Operational + + +7842 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022190 +Specific band significant wave height +Operational + + +7843 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022131 +RMS specific band significant wave height +Operational + + +7844 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022132 +Number of valid points for specific band significant wave height +Operational + + +7845 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022133 +Specific band net instrument correction for significant wave height +Operational + + +7846 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021186 +Specific band automatic gain control +Operational + + +7847 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021187 +RMS specific band automatic gain control +Operational + + +7848 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021188 +Number of valid points for specific band automatic gain control +Operational + + +7849 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021185 +Specific band net instrumental correction for AGC +Operational + + +7850 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025112 +Band specific altimeter data quality flag +Operational + + +7851 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025113 +Band specific altimeter correction quality flag +Operational + + +7852 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +033092 +Band specific ocean quality flag +Operational + + +7853 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025190 +Altimeter echo processing mode +Operational + + +7854 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +011097 +Wind speed from altimeter +Operational + + +7855 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013090 +Radiometer water vapour content +Operational + + +7856 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013091 +Radiometer liquid content +Operational + + +7857 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021143 +Ku band rain attenuation +Operational + + +7858 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021184 +STD specific band corrected ocean backscatter coefficient +Operational + + +7859 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025128 +Model wet tropospheric correction +Operational + + +7860 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025163 +Altimeter ionospheric correction on Ku band +Operational + + +7861 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025164 +Radiometer wet tropospheric correction +Operational + + +7862 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010102 +Sea-surface height anomaly +Operational + + +7863 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022189 +Specific band ocean range +Operational + + +7864 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022191 +RMS of specific band ocean range +Operational + + +7865 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022130 +Number of valid points for specific band +Operational + + +7866 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025166 +Sea state bias correction on specific band +Operational + + +7867 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021183 +Specific band corrected ocean backscatter coefficient +Operational + + +7868 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021184 +STD specific band corrected ocean backscatter coefficient +Operational + + +7869 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022134 +Number of valid points for specific band backscatter +Operational + + +7870 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022190 +Specific band significant wave height +Operational + + +7871 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022131 +RMS specific band significant wave height +Operational + + +7872 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022132 +Number of valid points for specific band significant wave height +Operational + + +7873 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025112 +Band specific altimeter data quality flag +Operational + + +7874 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025113 +Band specific altimeter correction quality flag +Operational + + +7875 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +033092 +Band specific ocean quality flag +Operational + + +7876 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008049 +Number of observations +Operational + + +7877 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022080 +Waveband central frequency +Operational + + +7878 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +134021 +Replicate 34 descriptors 21 times +Operational + + +7879 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +301011 +Year, month, day +Operational + + +7880 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +301013 +Hour, minute, second +Operational + + +7881 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +7882 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +301021 +Latitude/longitude (high accuracy) +Operational + + +7883 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010081 +Altitude of COG above reference ellipsoid +Operational + + +7884 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010082 +Instantaneous altitude rate +Operational + + +7885 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +008029 +Surface type +Operational + + +7886 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +201137 +Change data width +Add 9 bits to data width +Operational + + +7887 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +202129 +Change scale +Add 1 to scale +Operational + + +7888 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +006021 +Distance +Operational + + +7889 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +202000 +Change scale +Cancel +Operational + + +7890 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +201000 +Change data width +Cancel +Operational + + +7891 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025191 +Altimeter tracking mode +Operational + + +7892 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021071 +Peakiness +Operational + + +7893 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010085 +Mean sea-surface height +Operational + + +7894 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +040011 +Interpolation flag +Operational + + +7895 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +010102 +Sea-surface height anomaly +Operational + + +7896 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022189 +Specific band ocean range +Operational + + +7897 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022146 +OCOG range +Operational + + +7898 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025165 +Ionospheric correction from model on specific band +Operational + + +7899 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025167 +Specific band net instrumental correction +Operational + + +7900 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021183 +Specific band corrected ocean backscatter coefficient +Operational + + +7901 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022190 +Specific band significant wave height +Operational + + +7902 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022133 +Specific band net instrument correction for significant wave height +Operational + + +7903 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021177 +Corrected OCOG backscatter coefficient +Operational + + +7904 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +021185 +Specific band net instrumental correction for AGC +Operational + + +7905 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013164 +Sea ice freeboard +Operational + + +7906 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +202126 +Change scale +Subtract 2 bits from scale +Operational + + +7907 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +022046 +Sea ice fraction +Operational + + +7908 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +202000 +Change scale +Cancel +Operational + + +7909 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013117 +Snow density (liquid water content) +Operational + + +7910 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +013013 +Total snow depth +Operational + + +7911 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +025112 +Band specific altimeter data quality flag +Operational + + +7912 +40 +Additional satellite report sequences +340017 +(Sentinel-3 (S3) level 2 water product) +033092 +Band specific ocean quality flag +Operational + + +7913 +40 +Additional satellite report sequences +340018 +(Infrared Fourier spectrometer - 2 (IKFS-2) spectra) +301129 +Observing satellite and instruments +Operational + + +7914 +40 +Additional satellite report sequences +340018 +(Infrared Fourier spectrometer - 2 (IKFS-2) spectra) +301130 +High precision timestamp +Operational + + +7915 +40 +Additional satellite report sequences +340018 +(Infrared Fourier spectrometer - 2 (IKFS-2) spectra) +301131 +Pixel geolocation +Operational + + +7916 +40 +Additional satellite report sequences +340018 +(Infrared Fourier spectrometer - 2 (IKFS-2) spectra) +007072 +Scan angle +Operational + + +7917 +40 +Additional satellite report sequences +340018 +(Infrared Fourier spectrometer - 2 (IKFS-2) spectra) +040074 +General interferometry quality flags +Operational + + +7918 +40 +Additional satellite report sequences +340018 +(Infrared Fourier spectrometer - 2 (IKFS-2) spectra) +104000 +Delayed repetition of 4 descriptors +Repeat for all channels +Operational + + +7919 +40 +Additional satellite report sequences +340018 +(Infrared Fourier spectrometer - 2 (IKFS-2) spectra) +031002 +Extended delayed descriptor replication factor +Operational + + +7920 +40 +Additional satellite report sequences +340018 +(Infrared Fourier spectrometer - 2 (IKFS-2) spectra) +201136 +Change data width +Operational + + +7921 +40 +Additional satellite report sequences +340018 +(Infrared Fourier spectrometer - 2 (IKFS-2) spectra) +005042 +Channel number +Operational + + +7922 +40 +Additional satellite report sequences +340018 +(Infrared Fourier spectrometer - 2 (IKFS-2) spectra) +201000 +Change data width +Operational + + +7923 +40 +Additional satellite report sequences +340018 +(Infrared Fourier spectrometer - 2 (IKFS-2) spectra) +014044 +Channel radiance +Operational + + +7924 +40 +Additional satellite report sequences +340019 +(Altimeter product) +340020 +Satellite general values +Operational + + +7925 +40 +Additional satellite report sequences +340019 +(Altimeter product) +340021 +General radiometer values +Operational + + +7926 +40 +Additional satellite report sequences +340019 +(Altimeter product) +340022 +Altimeter model values +Operational + + +7927 +40 +Additional satellite report sequences +340019 +(Altimeter product) +340023 +Altimeter main values +Operational + + +7928 +40 +Additional satellite report sequences +340020 +(Satellite general values) +001007 +Satellite identifier +Operational + + +7929 +40 +Additional satellite report sequences +340020 +(Satellite general values) +002019 +Satellite instruments +Operational + + +7930 +40 +Additional satellite report sequences +340020 +(Satellite general values) +005044 +Satellite cycle number +Operational + + +7931 +40 +Additional satellite report sequences +340020 +(Satellite general values) +001096 +Station acquisition +Operational + + +7932 +40 +Additional satellite report sequences +340020 +(Satellite general values) +005040 +Orbit number +Operational + + +7933 +40 +Additional satellite report sequences +340020 +(Satellite general values) +001040 +Processing centre ID code +Operational + + +7934 +40 +Additional satellite report sequences +340020 +(Satellite general values) +025061 +Software identification and version number +Operational + + +7935 +40 +Additional satellite report sequences +340020 +(Satellite general values) +025182 +L1 processing flag +Operational + + +7936 +40 +Additional satellite report sequences +340020 +(Satellite general values) +025183 +L1 processing quality +Operational + + +7937 +40 +Additional satellite report sequences +340020 +(Satellite general values) +025181 +L2 processing flag +Operational + + +7938 +40 +Additional satellite report sequences +340020 +(Satellite general values) +025184 +L2 product status +Operational + + +7939 +40 +Additional satellite report sequences +340020 +(Satellite general values) +008075 +Ascending/descending orbit qualifier +Operational + + +7940 +40 +Additional satellite report sequences +340020 +(Satellite general values) +025090 +Orbit state flag +Operational + + +7941 +40 +Additional satellite report sequences +340020 +(Satellite general values) +301011 +Date +Operational + + +7942 +40 +Additional satellite report sequences +340020 +(Satellite general values) +301013 +Time +Operational + + +7943 +40 +Additional satellite report sequences +340020 +(Satellite general values) +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +7944 +40 +Additional satellite report sequences +340020 +(Satellite general values) +301021 +Latitude and longitude (high resolution) +Operational + + +7945 +40 +Additional satellite report sequences +340020 +(Satellite general values) +005063 +Spacecraft roll +Operational + + +7946 +40 +Additional satellite report sequences +340020 +(Satellite general values) +005064 +Spacecraft pitch +Operational + + +7947 +40 +Additional satellite report sequences +340020 +(Satellite general values) +005066 +Spacecraft yaw +Operational + + +7948 +40 +Additional satellite report sequences +340020 +(Satellite general values) +010081 +Altitude of cog above reference ellipsoid +Operational + + +7949 +40 +Additional satellite report sequences +340020 +(Satellite general values) +010082 +Instantaneous altitude rate +Operational + + +7950 +40 +Additional satellite report sequences +340021 +(General radiometer values) +040012 +Radiometer data quality flag +Operational + + +7951 +40 +Additional satellite report sequences +340021 +(General radiometer values) +008077 +Radiometer sensed surface type +Operational + + +7952 +40 +Additional satellite report sequences +340021 +(General radiometer values) +104000 +Delayed replication +Operational + + +7953 +40 +Additional satellite report sequences +340021 +(General radiometer values) +031001 +Delayed descriptor replication factor +Operational + + +7954 +40 +Additional satellite report sequences +340021 +(General radiometer values) +002153 +Satellite channel centre frequency +Operational + + +7955 +40 +Additional satellite report sequences +340021 +(General radiometer values) +012063 +Brightness temperature +Operational + + +7956 +40 +Additional satellite report sequences +340021 +(General radiometer values) +012065 +Standard deviation brightness temperature +Operational + + +7957 +40 +Additional satellite report sequences +340021 +(General radiometer values) +040013 +Radiometer brightness temperature interpretation flag +Operational + + +7958 +40 +Additional satellite report sequences +340021 +(General radiometer values) +007002 +Height or altitude +Operational + + +7959 +40 +Additional satellite report sequences +340021 +(General radiometer values) +011098 +Wind speed from radiometer +Operational + + +7960 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +008029 +Surface type +Operational + + +7961 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +201137 +Change data width +Operational + + +7962 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +202129 +Change data scale +Operational + + +7963 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +006021 +Distance +Operational + + +7964 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +202000 +Reset scale +Operational + + +7965 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +201000 +Reset width +Operational + + +7966 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +010087 +Ocean depth/land elevation +Operational + + +7967 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +040024 +Meteorological map availability +Operational + + +7968 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +007002 +Height or altitude +Operational + + +7969 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +025126 +Model dry tropospheric correction +Operational + + +7970 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +025128 +Model wet tropospheric correction +Operational + + +7971 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +040011 +Interpolation flag +Operational + + +7972 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +007002 +Height or altitude +Operational + + +7973 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +011095 +U-component of the model wind vector +Operational + + +7974 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +011096 +V-component of the model wind vector +Operational + + +7975 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +010088 +Total geocentric ocean tide height (solution 1) +Operational + + +7976 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +010089 +Total geocentric ocean tide height (solution 2) +Operational + + +7977 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +010090 +Long period tide height +Operational + + +7978 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +010092 +Solid Earth tide height +Operational + + +7979 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +010093 +Geocentric pole tide height +Operational + + +7980 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +010098 +Loading tide height geocentric ocean tide solution 1 +Operational + + +7981 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +010099 +Loading tide height geocentric ocean tide solution 2 +Operational + + +7982 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +010100 +Non-equilibrium long period tide height +Operational + + +7983 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +025127 +Inverted barometer correction +Operational + + +7984 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +040014 +High-frequency fluctuations of the sea-surface topography correction +Operational + + +7985 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +001030 +Numerical model identifier +Operational + + +7986 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +010085 +Mean sea-surface height +Operational + + +7987 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +001030 +Numerical model identifier +Operational + + +7988 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +010085 +Mean sea-surface height +Operational + + +7989 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +010086 +Geoid's height +Operational + + +7990 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +010096 +Mean dynamic topography +Operational + + +7991 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +010103 +Mean dynamic topography accuracy +Operational + + +7992 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +021169 +Ice presence indicator +Operational + + +7993 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +013055 +Intensity of precipitation +Operational + + +7994 +40 +Additional satellite report sequences +340022 +(Altimeter model values) +025165 +Ionospheric correction from model on specific band +Operational + + +7995 +40 +Additional satellite report sequences +340023 +(Altimeter main values) +025095 +Altimeter state flag +Operational + + +7996 +40 +Additional satellite report sequences +340023 +(Altimeter main values) +040023 +Auxiliary altimeter state flags +Operational + + +7997 +40 +Additional satellite report sequences +340023 +(Altimeter main values) +008074 +Altimeter echo type +Operational + + +7998 +40 +Additional satellite report sequences +340023 +(Altimeter main values) +340024 +1 Hz C and Ku band values +Operational + + +7999 +40 +Additional satellite report sequences +340023 +(Altimeter main values) +340024 +1 Hz C and Ku band values +Operational + + +8000 +40 +Additional satellite report sequences +340023 +(Altimeter main values) +340024 +1 Hz C and Ku band values +Operational + + +8001 +40 +Additional satellite report sequences +340023 +(Altimeter main values) +340025 +20 Hz C and Ku band values +Operational + + +8002 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +022080 +Waveband central frequency +Operational + + +8003 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +008076 +Type of band +Operational + + +8004 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +025190 +Altimeter echo processing mode +Operational + + +8005 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +010102 +Sea-surface height anomaly +Operational + + +8006 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +022189 +Specific band ocean range +Operational + + +8007 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +022191 +RMS of specific band ocean range +Operational + + +8008 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +022130 +Number of valid points for specific band +Operational + + +8009 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +025167 +Specific band net instrumental correction +Operational + + +8010 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +025163 +Altimeter ionospheric correction on Ku band +Operational + + +8011 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +015012 +Total electron count per square metre +Operational + + +8012 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +025164 +Radiometer wet tropospheric correction +Operational + + +8013 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +013090 +Radiometer water vapour content +Operational + + +8014 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +013091 +Radiometer liquid content +Operational + + +8015 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +025166 +Sea state bias correction on specific band +Operational + + +8016 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +007002 +Height or altitude +Operational + + +8017 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +011097 +Wind speed from altimeter +Operational + + +8018 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +021183 +Specific band corrected ocean backscatter coefficient +Operational + + +8019 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +021184 +STD specific band corrected ocean backscatter coefficient +Operational + + +8020 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +022134 +Number of valid points for specific band backscatter +Operational + + +8021 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +021122 +Attenuation correction on sigma-0 (from tB) +Operational + + +8022 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +021186 +Specific band automatic gain control +Operational + + +8023 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +021187 +RMS specific band automatic gain control +Operational + + +8024 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +021188 +Number of valid points for specific band automatic gain control +Operational + + +8025 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +201131 +Change data width +Operational + + +8026 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +021185 +Specific band net instrumental correction for AGC +Operational + + +8027 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +201000 +Reset width +Operational + + +8028 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +022179 +Specific band significant wave height +Operational + + +8029 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +022131 +RMS specific band significant wave height +Operational + + +8030 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +022132 +Number of valid points for specific band significant wave height +Operational + + +8031 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +022133 +Specific band net instrument correction for significant wave height +Operational + + +8032 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +021144 +Altimeter rain flag +Operational + + +8033 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +025191 +Altimeter tracking mode +Operational + + +8034 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +021143 +Ku band rain attenuation +Operational + + +8035 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +010101 +Squared off-nadir angle of the satellite from waveform data +Operational + + +8036 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +025112 +Band specific altimeter data quality flag +Operational + + +8037 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +025113 +Band specific altimeter correction quality flag +Operational + + +8038 +40 +Additional satellite report sequences +340024 +(1 Hz C and Ku band values) +033092 +Band specific ocean quality flag +Operational + + +8039 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +008049 +Number of observations +Operational + + +8040 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +022080 +Waveband central frequency +Operational + + +8041 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +008076 +Type of band +Operational + + +8042 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +025190 +Altimeter echo processing mode +Operational + + +8043 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +146021 +Replication +Operational + + +8044 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +301011 +Date +Operational + + +8045 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +301013 +Time +Operational + + +8046 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +004007 +Seconds within a minute (microsecond accuracy) +Operational + + +8047 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +301021 +Latitude and longitude (high resolution) +Operational + + +8048 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +010081 +Altitude of cog above reference ellipsoid +Operational + + +8049 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +010082 +Instantaneous altitude rate +Operational + + +8050 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +008029 +Surface type +Operational + + +8051 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +201137 +Change data width +Operational + + +8052 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +202129 +Change data scale +Operational + + +8053 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +006021 +Distance +Operational + + +8054 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +202000 +Reset scale +Operational + + +8055 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +201000 +Reset width +Operational + + +8056 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +025191 +Altimeter tracking mode +Operational + + +8057 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +021071 +Peakiness +Operational + + +8058 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +001030 +Numerical model identifier +Operational + + +8059 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +010085 +Mean sea-surface height +Operational + + +8060 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +001030 +Numerical model identifier +Operational + + +8061 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +010085 +Mean sea-surface height +Operational + + +8062 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +040011 +Interpolation flag +Operational + + +8063 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +010088 +Total geocentric ocean tide height (solution 1) +Operational + + +8064 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +010089 +Total geocentric ocean tide height (solution 2) +Operational + + +8065 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +025164 +Radiometer wet tropospheric correction +Operational + + +8066 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +007002 +Height or altitude +Operational + + +8067 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +025126 +Model dry tropospheric correction +Operational + + +8068 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +025128 +Model wet tropospheric correction +Operational + + +8069 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +010102 +Sea-surface height anomaly +Operational + + +8070 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +022189 +Specific band ocean range +Operational + + +8071 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +025167 +Specific band net instrumental correction +Operational + + +8072 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +025163 +Altimeter ionospheric correction on Ku band +Operational + + +8073 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +021183 +Specific band corrected ocean backscatter coefficient +Operational + + +8074 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +201131 +Change data width +Operational + + +8075 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +021185 +Specific band net instrumental correction for AGC +Operational + + +8076 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +201000 +Reset width +Operational + + +8077 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +022179 +Specific band significant wave height +Operational + + +8078 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +022133 +Specific band net instrument correction for significant wave height +Operational + + +8079 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +022146 +OCOG range +Operational + + +8080 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +021189 +Corrected OCOG backscatter coefficient +Operational + + +8081 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +013163 +Snow water equivalent +Operational + + +8082 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +202126 +Change data scale +Operational + + +8083 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +022046 +Sea-ice fraction +Operational + + +8084 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +202000 +Reset scale +Operational + + +8085 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +013117 +Snow density (liquid water content) +Operational + + +8086 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +013013 +Total snow depth +Operational + + +8087 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +025112 +Band specific altimeter data quality flag +Operational + + +8088 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +025113 +Band specific altimeter correction quality flag +Operational + + +8089 +40 +Additional satellite report sequences +340025 +(20 Hz C and Ku band values) +033092 +Band specific ocean quality flag +Operational + + diff --git a/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CodeTableGen.java b/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CodeTableGen.java index 5f81d2f278..00364ef4c7 100644 --- a/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CodeTableGen.java +++ b/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CodeTableGen.java @@ -95,7 +95,7 @@ private boolean readOneCode(boolean first) throws IOException { // try to pretty print the WORD xml - static public void prettyPrint() throws IOException { + public static void prettyPrint() throws IOException { org.jdom2.Document doc; try { SAXBuilder builder = new SAXBuilder(); @@ -121,7 +121,7 @@ static public void prettyPrint() throws IOException { /////////////////////////////////////////////////////////////////////// - static public void transform(Element elem, Element telem) { + public static void transform(Element elem, Element telem) { String name = elem.getName(); if (name.equals("sub-section") || name.equals("tc")) { @@ -166,7 +166,7 @@ static boolean hasAncestor(Element e, String name) { // tranform the WORD xml into something more pareseable // unfortunately, we then have to hand-edit the result // next time, probably beter to start with the NCEP HTML pages - static public void passOne() throws IOException { + public static void passOne() throws IOException { org.jdom2.Document orgDoc; try { SAXBuilder builder = new SAXBuilder(); @@ -248,7 +248,7 @@ else if (kinds.startsWith("bit")) // pass 2 - transform the hand-edited XML to its final form - static public void passTwo() throws IOException { + public static void passTwo() throws IOException { org.jdom2.Document tdoc; try { SAXBuilder builder = new SAXBuilder(); @@ -334,7 +334,7 @@ static int parseAll(String text) { } // pass 3 - look for problems - static public void passThree() throws IOException { + public static void passThree() throws IOException { org.jdom2.Document tdoc; try { SAXBuilder builder = new SAXBuilder(); @@ -367,7 +367,7 @@ static public void passThree() throws IOException { static Formatter f = new Formatter(System.out); - static public void main(String args[]) throws IOException { + public static void main(String args[]) throws IOException { // passTwo(); passThree(); } diff --git a/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CompareCodeTables.java b/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CompareCodeTables.java index cee4d7b83d..226fbc850d 100644 --- a/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CompareCodeTables.java +++ b/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CompareCodeTables.java @@ -215,7 +215,7 @@ boolean equiv(String org1, String org2) { } - static public void main(String args[]) throws IOException { + public static void main(String args[]) throws IOException { Map wmoMap = new TreeMap(); CompareCodeTables ct = new CompareCodeTables(); ct.readWmoCsv("C:/docs/BC_CodeFlagTable.csv", wmoMap); diff --git a/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CompareTableB.java b/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CompareTableB.java index f10b035673..78c11bd759 100644 --- a/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CompareTableB.java +++ b/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CompareTableB.java @@ -134,7 +134,7 @@ public void compareBrit() throws IOException { compare2(robbMap, bmTable); } - static public void mainBrit(String args[]) throws IOException { + public static void mainBrit(String args[]) throws IOException { CompareTableB ct = new CompareTableB(); ct.compareBrit(); } @@ -202,7 +202,7 @@ void readWmoCsv(String filename, Map map) throws IOException { System.out.printf("%s lines=%d elems=%d avg name len=%d%n", filename, count, n, avg / n); } - static public void main(String args[]) throws IOException { + public static void main(String args[]) throws IOException { CompareTableB ct = new CompareTableB(); Map wmoMap = new TreeMap(); ct.readWmoCsv("C:/docs/BC_TableB.csv", wmoMap); @@ -551,7 +551,7 @@ String compare(TableB.Descriptor f1, TableB.Descriptor f2) { return sb.toString(); } - static public void main2(String args[]) throws IOException { + public static void main2(String args[]) throws IOException { CompareTableB ct = new CompareTableB(); ct.compareAll(); } diff --git a/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CompareTableD.java b/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CompareTableD.java index 5b01c2a464..505800e2d8 100644 --- a/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CompareTableD.java +++ b/bufr/src/test/java/ucar/nc2/iosp/bufr/tables/CompareTableD.java @@ -290,7 +290,7 @@ String fxy(int fxy) { return f + "-" + x + "-" + y; } - static public void main(String args[]) throws IOException { + public static void main(String args[]) throws IOException { CompareTableD ct = new CompareTableD(); ct.readWmoCsv("C:/docs/B_TableD.csv", wmoMap); ct.readTable(); diff --git a/cdm-test-utils/README.md b/cdm-test-utils/README.md index 66043b19b9..26f92b204f 100644 --- a/cdm-test-utils/README.md +++ b/cdm-test-utils/README.md @@ -6,7 +6,7 @@ Published for internal use by other THREDDS projects. ## Inclusion of third-party software This project contains source code from [JUnit](https://github.com/junit-team/junit4), version 4.12. -The license for JUnit is available in `docs/src/private/licenses/third-party/junit/`. +The license for JUnit is available in `third-party-licenses/junit/`. ### Details of use: diff --git a/cdm-test-utils/src/main/java/ucar/unidata/util/test/Assert2.java b/cdm-test-utils/src/main/java/ucar/unidata/util/test/Assert2.java index 67f57c57c9..eaf77ea272 100644 --- a/cdm-test-utils/src/main/java/ucar/unidata/util/test/Assert2.java +++ b/cdm-test-utils/src/main/java/ucar/unidata/util/test/Assert2.java @@ -108,7 +108,7 @@ protected void assertElementsEqual(Object expected, Object actual) { // The following methods come from the JUnit project, specifically the org.junit.Assert class. // JUnit is licensed under Eclipse Public License 1.0. A copy of the license can be found at - // docs/src/private/licenses/third-party/junit/LICENSE-junit.txt + // third-party-licenses/junit/ private static void failNotEquals(String message, Object expected, Object actual) { Assert.fail(format(message, expected, actual)); diff --git a/cdm-test-utils/src/main/java/ucar/unidata/util/test/UnitTestCommon.java b/cdm-test-utils/src/main/java/ucar/unidata/util/test/UnitTestCommon.java index 8809a4a0b7..04607014ac 100644 --- a/cdm-test-utils/src/main/java/ucar/unidata/util/test/UnitTestCommon.java +++ b/cdm-test-utils/src/main/java/ucar/unidata/util/test/UnitTestCommon.java @@ -209,16 +209,6 @@ public String modify(String text) { ////////////////////////////////////////////////// // Instance variables - // System properties - protected boolean prop_ascii = true; - protected boolean prop_diff = true; - protected boolean prop_baseline = false; - protected boolean prop_visual = false; - protected boolean prop_debug = DEBUG; - protected boolean prop_generate = true; - protected String prop_controls = null; - protected boolean prop_display = false; - protected String title = "Testing"; protected String name = "testcommon"; @@ -231,32 +221,6 @@ public UnitTestCommon() { public UnitTestCommon(String name) { this.title = name; - setSystemProperties(); - } - - /** - * Try to get the system properties - */ - protected void setSystemProperties() { - if (System.getProperty("nodiff") != null) - prop_diff = false; - if (System.getProperty("baseline") != null) - prop_baseline = true; - if (System.getProperty("nogenerate") != null) - prop_generate = false; - if (System.getProperty("debug") != null) - prop_debug = true; - if (System.getProperty("visual") != null) - prop_visual = true; - if (System.getProperty("ascii") != null) - prop_ascii = true; - if (System.getProperty("utf8") != null) - prop_ascii = false; - if (System.getProperty("hasdisplay") != null) - prop_display = true; - if (prop_baseline && prop_diff) - prop_diff = false; - prop_controls = System.getProperty("controls", ""); } ////////////////////////////////////////////////// @@ -379,12 +343,10 @@ protected void unbindstd() { // Copy result into the a specified dir public static void writefile(String path, String content) throws IOException { - File f = new File(path); - if (f.exists()) - f.delete(); - FileWriter out = new FileWriter(f); - out.write(content); - out.close(); + // We need to set the Charset to UTF-8, but that is not possible + // until JDK level 11, so fake it. + byte utf8[] = content.getBytes("UTF-8"); + writefile(path, utf8); } // Copy result into the a specified dir @@ -616,75 +578,4 @@ protected static boolean check(int code, int[] ok) { return false; } - /* - * // Replacement for stderr & stdout - * static public class STDIO - * { - * public STDIO(String name) - * { - * } - * - * public void - * printf(String format, Object... args) - * { - * System.err.println(String.format(format, args)); - * } - * - * public void - * println(String msg) - * { - * printf("%s%n", msg); - * } - * - * public void - * print(String msg) - * { - * printf("%s", msg); - * } - * - * public void - * flush() - * { - * } - * } - * - * static public STDIO stderr = new STDIO("test"); - * static public STDIO stdout = new STDIO("test"); - * - * static TemporaryFolder temporaryfolder = null; - * - * static public File - * makeTemporaryDir(String name) - * throws IOException - * { - * if(temporaryfolder == null) - * temporaryfolder = new TemporaryFolder(); - * return temporaryfolder.newFolder(name); - * } - * - * static public File - * makeTemporaryFile(String name) - * throws IOException - * { - * if(temporaryfolder == null) - * temporaryfolder = new TemporaryFolder(); - * return temporaryfolder.newFile(name); - * } - * static public void - * logify(String s) - * { - * StringReader rs = new StringReader(s); - * BufferedReader r = new BufferedReader(rs); - * String line = null; - * for(; ; ) { - * try { - * line = r.readLine(); - * } catch (IOException ioe) { - * break; - * } - * if(line == null) break; - * System.err.println(line); - * } - * } - */ } diff --git a/cdm-test/src/test/java/SevenZip/CRC.java b/cdm-test/src/test/java/SevenZip/CRC.java index bd3e73801d..9ae97cb1d4 100644 --- a/cdm-test/src/test/java/SevenZip/CRC.java +++ b/cdm-test/src/test/java/SevenZip/CRC.java @@ -3,7 +3,7 @@ package SevenZip; public class CRC { - static public int[] Table = new int[256]; + public static int[] Table = new int[256]; static { for (int i = 0; i < 256; i++) { diff --git a/cdm-test/src/test/java/SevenZip/Compression/RangeCoder/Encoder.java b/cdm-test/src/test/java/SevenZip/Compression/RangeCoder/Encoder.java index b73e4321c2..46a00394e3 100644 --- a/cdm-test/src/test/java/SevenZip/Compression/RangeCoder/Encoder.java +++ b/cdm-test/src/test/java/SevenZip/Compression/RangeCoder/Encoder.java @@ -114,15 +114,15 @@ public void Encode(short[] probs, int index, int symbol) throws IOException { } } - static public int GetPrice(int Prob, int symbol) { + public static int GetPrice(int Prob, int symbol) { return ProbPrices[(((Prob - symbol) ^ ((-symbol))) & (kBitModelTotal - 1)) >>> kNumMoveReducingBits]; } - static public int GetPrice0(int Prob) { + public static int GetPrice0(int Prob) { return ProbPrices[Prob >>> kNumMoveReducingBits]; } - static public int GetPrice1(int Prob) { + public static int GetPrice1(int Prob) { return ProbPrices[(kBitModelTotal - Prob) >>> kNumMoveReducingBits]; } } diff --git a/cdm-test/src/test/java/SevenZip/LzmaAlone.java b/cdm-test/src/test/java/SevenZip/LzmaAlone.java index 84968e02ec..d6925396ba 100644 --- a/cdm-test/src/test/java/SevenZip/LzmaAlone.java +++ b/cdm-test/src/test/java/SevenZip/LzmaAlone.java @@ -1,7 +1,7 @@ package SevenZip; public class LzmaAlone { - static public class CommandLine { + public static class CommandLine { public static final int kEncode = 0; public static final int kDecode = 1; public static final int kBenchmak = 2; diff --git a/cdm-test/src/test/java/SevenZip/LzmaBench.java b/cdm-test/src/test/java/SevenZip/LzmaBench.java index f6b864bf3c..14ed7961b4 100644 --- a/cdm-test/src/test/java/SevenZip/LzmaBench.java +++ b/cdm-test/src/test/java/SevenZip/LzmaBench.java @@ -269,7 +269,7 @@ static void PrintResults(int dictionarySize, long elapsedTime, long size, boolea PrintRating(rating); } - static public int LzmaBenchmark(int numIterations, int dictionarySize) throws Exception { + public static int LzmaBenchmark(int numIterations, int dictionarySize) throws Exception { if (numIterations <= 0) return 0; if (dictionarySize < (1 << 18)) { diff --git a/cdm-test/src/test/java/ucar/nc2/TestCheckFileType.java b/cdm-test/src/test/java/ucar/nc2/TestCheckFileType.java index b64e04f9df..5ceb192808 100644 --- a/cdm-test/src/test/java/ucar/nc2/TestCheckFileType.java +++ b/cdm-test/src/test/java/ucar/nc2/TestCheckFileType.java @@ -33,7 +33,7 @@ public class TestCheckFileType extends UnitTestCommon { static final String PREFIX = "thredds/public/testdata/"; @Parameterized.Parameters(name = "{1}") - static public List getTestParameters() { + public static List getTestParameters() { List result = new ArrayList<>(); result.add(new Object[] {NCheader.NC_FORMAT_NETCDF3, "testData.nc"}); result.add(new Object[] {NCheader.NC_FORMAT_64BIT_OFFSET, "nc_test_cdf2.nc"}); diff --git a/cdm-test/src/test/java/ucar/nc2/TestSequence.java b/cdm-test/src/test/java/ucar/nc2/TestSequence.java index 6e6780a5d6..69cbbf1c8b 100644 --- a/cdm-test/src/test/java/ucar/nc2/TestSequence.java +++ b/cdm-test/src/test/java/ucar/nc2/TestSequence.java @@ -36,16 +36,12 @@ import org.junit.Assert; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import ucar.ma2.*; -import ucar.nc2.dataset.NetcdfDataset; import ucar.nc2.dataset.NetcdfDatasets; import ucar.unidata.util.test.category.NeedsCdmUnitTest; import ucar.unidata.util.test.TestDir; import java.io.File; import java.io.IOException; -import java.lang.invoke.MethodHandles; import java.util.Arrays; import java.util.List; @@ -56,7 +52,6 @@ * @since Nov 10, 2009 */ public class TestSequence { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); @Test @Category(NeedsCdmUnitTest.class) diff --git a/cdm-test/src/test/java/ucar/nc2/dt/grid/TestReadandCount.java b/cdm-test/src/test/java/ucar/nc2/dt/grid/TestReadandCount.java index 6024c672d6..1f8ca19b2e 100644 --- a/cdm-test/src/test/java/ucar/nc2/dt/grid/TestReadandCount.java +++ b/cdm-test/src/test/java/ucar/nc2/dt/grid/TestReadandCount.java @@ -123,7 +123,7 @@ public void openAsGridAndCount() throws Exception { doOne(dir, name, ngrids, ncoordSys, ncoordAxes, nVertCooordAxes); } - static public void doOne(String dir, String name, int ngrids, int ncoordSys, int ncoordAxes, int nVertCooordAxes) + public static void doOne(String dir, String name, int ngrids, int ncoordSys, int ncoordAxes, int nVertCooordAxes) throws Exception { System.out.printf("test read GridDataset= %s%s%n", dir, name); ucar.nc2.dt.grid.GridDataset gridDs = GridDataset.open(dir + name); diff --git a/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestCoverageFileWriterP.java b/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestCoverageFileWriterP.java index f842e007b1..54808f71d0 100644 --- a/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestCoverageFileWriterP.java +++ b/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestCoverageFileWriterP.java @@ -85,7 +85,7 @@ public TestCoverageFileWriterP(String endpoint, FeatureType type, List c @Test public void writeTestFile() throws IOException, InvalidRangeException { // skip test requiring netcdf4 if not present. - if (version.isNetdf4format() && !NetcdfClibrary.isLibraryPresent()) { + if (version.isNetcdf4Format() && !NetcdfClibrary.isLibraryPresent()) { return; } System.out.printf("Test Dataset %s type %s%n", endpoint, type); diff --git a/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestCoverageHorizSubset.java b/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestCoverageHorizSubset.java index b4a8989320..35684d4ba0 100644 --- a/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestCoverageHorizSubset.java +++ b/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestCoverageHorizSubset.java @@ -21,6 +21,7 @@ import ucar.nc2.grib.collection.Grib; import ucar.nc2.time.CalendarDate; import ucar.nc2.util.Misc; +import ucar.nc2.util.Optional; import ucar.unidata.geoloc.*; import ucar.unidata.util.test.category.NeedsCdmUnitTest; import ucar.unidata.util.test.category.NeedsExternalResource; @@ -132,7 +133,7 @@ public void testLongitudeSubset() throws Exception { @Category(NeedsExternalResource.class) public void testCdmRemoteSubset() throws Exception { String filename = - "cdmremote:https://thredds-dev.unidata.ucar.edu/thredds/cdmremote/grib/NCEP/NAM/CONUS_40km/conduit/best"; + "cdmremote:https://thredds-test.unidata.ucar.edu/thredds/cdmremote/grib/NCEP/NAM/CONUS_40km/conduit/best"; System.out.printf("open %s%n", filename); try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(filename)) { @@ -274,10 +275,10 @@ public void testLongitudeSubsetWithHorizontalStride() throws IOException, Invali public void shouldSubsetLongitudeAndLatitude() { // longitude is regularPoint with spacing 60, so boundaries should be -121 and 119 final double[] lonValues = new double[] {-91.0, -31.0, 29.0, 89.0}; - final CoverageCoordAxis1D lonAxis = createCoverageCoordAxis1D(AxisType.Lon, lonValues); + final CoverageCoordAxis1D lonAxis = createCoverageCoordAxis1D(AxisType.Lon, lonValues, Spacing.regularPoint); final double[] latValues = new double[] {-90.0, 0.0, 90.0}; - final CoverageCoordAxis1D latAxis = createCoverageCoordAxis1D(AxisType.Lat, latValues); + final CoverageCoordAxis1D latAxis = createCoverageCoordAxis1D(AxisType.Lat, latValues, Spacing.regularPoint); final HorizCoordSys horizCoordSys = HorizCoordSys.factory(null, null, latAxis, lonAxis, null); final LatLonRect boundingBox = horizCoordSys.calcLatLonBoundingBox(); @@ -293,10 +294,10 @@ public void shouldSubsetLongitudeAndLatitude() { public void shouldSubsetEntireWorld() { // longitude is regularPoint with spacing 60, so boundaries should be -181=179 and 179 final double[] lonValues = new double[] {-151.0, -91.0, -31.0, 29.0, 89.0, 149.0}; - final CoverageCoordAxis1D lonAxis = createCoverageCoordAxis1D(AxisType.Lon, lonValues); + final CoverageCoordAxis1D lonAxis = createCoverageCoordAxis1D(AxisType.Lon, lonValues, Spacing.regularPoint); final double[] latValues = new double[] {-90.0, 0.0, 90.0}; - final CoverageCoordAxis1D latAxis = createCoverageCoordAxis1D(AxisType.Lat, latValues); + final CoverageCoordAxis1D latAxis = createCoverageCoordAxis1D(AxisType.Lat, latValues, Spacing.regularPoint); final HorizCoordSys horizCoordSys = HorizCoordSys.factory(null, null, latAxis, lonAxis, null); final LatLonRect boundingBox = horizCoordSys.calcLatLonBoundingBox(); @@ -308,10 +309,34 @@ public void shouldSubsetEntireWorld() { assertThat(boundingBox.getLatMax()).isEqualTo(90.0); } - private CoverageCoordAxis1D createCoverageCoordAxis1D(AxisType type, double[] values) { + @Test + public void shouldSubsetAllLongitudes() { + final double[] lonValues = new double[] {0.0, 90.0, 180.0, 270.0}; + final CoverageCoordAxis1D lonAxis = createCoverageCoordAxis1D(AxisType.Lon, lonValues, Spacing.regularInterval); + final double[] latValues = new double[] {-90.0, -45.0, 0.0, 45.0}; + final CoverageCoordAxis1D latAxis = createCoverageCoordAxis1D(AxisType.Lat, latValues, Spacing.regularInterval); + final HorizCoordSys horizCoordSys = HorizCoordSys.factory(null, null, latAxis, lonAxis, null); + + // request partial latitudes and all longitudes but shifted from the start of the longitude axis + final LatLonRect latLon = new LatLonRect(LatLonPoint.create(-45, -180), 10.0, 360.0); + final SubsetParams subsetParams = new SubsetParams().setLatLonBoundingBox(latLon); + final Optional subsetHorizCoordSys = horizCoordSys.subset(subsetParams); + assertThat(subsetHorizCoordSys.isPresent()).isTrue(); + + final LatLonRect subsetBoundingBox = subsetHorizCoordSys.get().calcLatLonBoundingBox(); + assertThat(subsetBoundingBox).isNotNull(); + final CoverageCoordAxis1D subsetLonAxis = subsetHorizCoordSys.get().getXAxis(); + final CoverageCoordAxis1D subsetLatAxis = subsetHorizCoordSys.get().getYAxis(); + assertThat(subsetLonAxis.getCoordEdgeFirst()).isEqualTo(0.0); + assertThat(subsetLonAxis.getCoordEdgeLast()).isEqualTo(360.0); + assertThat(subsetLatAxis.getCoordEdgeFirst()).isEqualTo(-45.0); + assertThat(subsetLatAxis.getCoordEdgeLast()).isEqualTo(0.0); + } + + private CoverageCoordAxis1D createCoverageCoordAxis1D(AxisType type, double[] values, Spacing spacing) { final CoverageCoordAxisBuilder coordAxisBuilder = new CoverageCoordAxisBuilder("name", "unit", "description", - DataType.DOUBLE, type, null, CoverageCoordAxis.DependenceType.independent, null, Spacing.regularPoint, - values.length, values[0], values[values.length - 1], values[1] - values[0], values, null); + DataType.DOUBLE, type, null, CoverageCoordAxis.DependenceType.independent, null, spacing, values.length, + values[0], values[values.length - 1], values[1] - values[0], values, null); return new CoverageCoordAxis1D(coordAxisBuilder); } diff --git a/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestGribCoverageRead.java b/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestGribCoverageRead.java index d569cf80bf..53c4533952 100644 --- a/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestGribCoverageRead.java +++ b/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestGribCoverageRead.java @@ -4,6 +4,8 @@ */ package ucar.nc2.ft.coverage; +import static com.google.common.truth.Truth.assertThat; + import java.util.Arrays; import org.junit.Assert; import org.junit.Test; @@ -11,11 +13,15 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ucar.ma2.Array; +import ucar.ma2.IndexIterator; import ucar.ma2.InvalidRangeException; import ucar.nc2.constants.FeatureType; import ucar.nc2.ft2.coverage.*; import ucar.nc2.time.CalendarDate; +import ucar.nc2.time.CalendarDateRange; import ucar.nc2.util.Misc; +import ucar.unidata.geoloc.LatLonPoint; +import ucar.unidata.geoloc.LatLonRect; import ucar.unidata.util.test.Assert2; import ucar.unidata.util.test.category.NeedsCdmUnitTest; import ucar.unidata.util.test.TestDir; @@ -229,4 +235,30 @@ public void TestPofPRead() throws IOException, InvalidRangeException { Assert2.assertNearlyEquals(0.18079996f, val); } } + + @Test + public void shouldNotReturnNaNsWhenReadingMRMSData() throws IOException, InvalidRangeException { + String endpoint = TestDir.cdmUnitTestDir + "gribCollections/mrms/MRMS_CONUS_BaseReflectivity_20230914_1750.grib2"; + + try (FeatureDatasetCoverage featureDatasetCoverage = CoverageDatasetFactory.open(endpoint)) { + assertThat(featureDatasetCoverage).isNotNull(); + CoverageCollection coverageCollection = featureDatasetCoverage.getCoverageCollections().get(0); + + String coverageName = "MergedReflectivityComposite_altitude_above_msl"; + Coverage coverage = coverageCollection.findCoverage(coverageName); + + CalendarDate start = CalendarDate.parseISOformat(null, "2023-09-14T17:50:16Z"); + CalendarDate end = CalendarDate.parseISOformat(null, "2023-09-14T17:58:42Z"); + CalendarDateRange dateRange = CalendarDateRange.of(start, end); + LatLonRect latLonRect = new LatLonRect(LatLonPoint.create(30, -90), LatLonPoint.create(30.01, -89.99)); + SubsetParams subset = new SubsetParams().setTimeRange(dateRange).setLatLonBoundingBox(latLonRect); + + GeoReferencedArray geo = coverage.readData(subset); + Array data = geo.getData(); + IndexIterator iterator = data.getIndexIterator(); + while (iterator.hasNext()) { + assertThat(iterator.getFloatNext()).isNotNaN(); + } + } + } } diff --git a/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestRdaCoordsMatchGbx.java b/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestRdaCoordsMatchGbx.java index 3bead0ecb5..db18082cd1 100644 --- a/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestRdaCoordsMatchGbx.java +++ b/cdm-test/src/test/java/ucar/nc2/ft/coverage/TestRdaCoordsMatchGbx.java @@ -35,13 +35,13 @@ public class TestRdaCoordsMatchGbx { private static final boolean showFileCounters = true; @BeforeClass - static public void before() { + public static void before() { Grib.setDebugFlags(new DebugFlagsImpl("Grib/debugGbxIndexOnly")); countersAll = GribCoordsMatchGbx.getCounters(); } @AfterClass - static public void after() { + public static void after() { Grib.setDebugFlags(new DebugFlagsImpl()); System.out.printf("countersAll = %s%n", countersAll); } diff --git a/cdm-test/src/test/java/ucar/nc2/ft/point/TestCFPointDatasets.java b/cdm-test/src/test/java/ucar/nc2/ft/point/TestCFPointDatasets.java index 029c39a74c..9abb78a51a 100644 --- a/cdm-test/src/test/java/ucar/nc2/ft/point/TestCFPointDatasets.java +++ b/cdm-test/src/test/java/ucar/nc2/ft/point/TestCFPointDatasets.java @@ -35,7 +35,7 @@ @RunWith(Parameterized.class) public class TestCFPointDatasets { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - static public String CFpointObs_topdir = TestDir.cdmLocalFromTestDataDir + "point/"; + public static String CFpointObs_topdir = TestDir.cdmLocalFromTestDataDir + "point/"; public static List getPointDatasets() { List result = new ArrayList<>(); diff --git a/cdm-test/src/test/java/ucar/nc2/ft/point/TestCfDocDsgExamples.java b/cdm-test/src/test/java/ucar/nc2/ft/point/TestCfDocDsgExamples.java index c3f29ef9a7..0e7422ec8e 100644 --- a/cdm-test/src/test/java/ucar/nc2/ft/point/TestCfDocDsgExamples.java +++ b/cdm-test/src/test/java/ucar/nc2/ft/point/TestCfDocDsgExamples.java @@ -4,8 +4,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import ucar.nc2.NetcdfFile; import ucar.nc2.constants.FeatureType; import ucar.nc2.dataset.NetcdfDatasets; @@ -16,7 +14,6 @@ import java.io.File; import java.io.FilenameFilter; import java.io.IOException; -import java.lang.invoke.MethodHandles; import java.util.ArrayList; import java.util.List; @@ -28,7 +25,6 @@ */ @RunWith(Parameterized.class) public class TestCfDocDsgExamples { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); private static final String cfDocDsgExamplesDir = TestDir.cdmLocalFromTestDataDir + "cfDocDsgExamples/"; private static List getPointDatasets() { diff --git a/cdm-test/src/test/java/ucar/nc2/ft/point/TestPreCFpointDatasets.java b/cdm-test/src/test/java/ucar/nc2/ft/point/TestPreCFpointDatasets.java index 19b018a2b2..94336c831f 100644 --- a/cdm-test/src/test/java/ucar/nc2/ft/point/TestPreCFpointDatasets.java +++ b/cdm-test/src/test/java/ucar/nc2/ft/point/TestPreCFpointDatasets.java @@ -31,7 +31,7 @@ @RunWith(Parameterized.class) public class TestPreCFpointDatasets { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - static public String CFpointObs_pre16 = TestDir.cdmLocalFromTestDataDir + "pointPre1.6/"; + public static String CFpointObs_pre16 = TestDir.cdmLocalFromTestDataDir + "pointPre1.6/"; @Parameterized.Parameters(name = "{0}") public static List getTestParameters() { diff --git a/cdm-test/src/test/java/ucar/nc2/grib/TestCoordinatesMatchGbx.java b/cdm-test/src/test/java/ucar/nc2/grib/TestCoordinatesMatchGbx.java index acc15437a8..c9aa630943 100644 --- a/cdm-test/src/test/java/ucar/nc2/grib/TestCoordinatesMatchGbx.java +++ b/cdm-test/src/test/java/ucar/nc2/grib/TestCoordinatesMatchGbx.java @@ -30,7 +30,7 @@ public class TestCoordinatesMatchGbx { private static final boolean showFileCounters = false; @BeforeClass - static public void before() { + public static void before() { Grib.setDebugFlags(new DebugFlagsImpl("Grib/debugGbxIndexOnly")); countersAll = GribCoordsMatchGbx.getCounters(); @@ -39,7 +39,7 @@ static public void before() { } @AfterClass - static public void after() { + public static void after() { Grib.setDebugFlags(new DebugFlagsImpl()); logger.debug("countersAll = {}", countersAll); Variable.permitCaching = true; diff --git a/cdm-test/src/test/java/ucar/nc2/grib/TestCoordinatesMatchGbxP.java b/cdm-test/src/test/java/ucar/nc2/grib/TestCoordinatesMatchGbxP.java index 2553ea79de..ef6018e4c9 100644 --- a/cdm-test/src/test/java/ucar/nc2/grib/TestCoordinatesMatchGbxP.java +++ b/cdm-test/src/test/java/ucar/nc2/grib/TestCoordinatesMatchGbxP.java @@ -34,13 +34,13 @@ public class TestCoordinatesMatchGbxP { private static final boolean showFileCounters = true; @BeforeClass - static public void before() { + public static void before() { Grib.setDebugFlags(new DebugFlagsImpl("Grib/debugGbxIndexOnly")); countersAll = GribCoordsMatchGbx.getCounters(); } @AfterClass - static public void after() { + public static void after() { Grib.setDebugFlags(new DebugFlagsImpl()); System.out.printf("countersAll = %s%n", countersAll); } diff --git a/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionCoordinates.java b/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionCoordinates.java index 4d8a10f136..5efe7a39c4 100644 --- a/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionCoordinates.java +++ b/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionCoordinates.java @@ -4,6 +4,9 @@ */ package ucar.nc2.grib; +import static com.google.common.truth.Truth.assertThat; + +import java.util.List; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -14,6 +17,7 @@ import thredds.featurecollection.FeatureCollectionType; import thredds.inventory.CollectionUpdateType; import ucar.ma2.ArrayDouble; +import ucar.nc2.Dimension; import ucar.nc2.Variable; import ucar.nc2.dataset.*; import ucar.nc2.grib.collection.*; @@ -36,7 +40,7 @@ public class TestGribCollectionCoordinates { private static CollectionUpdateType updateMode = CollectionUpdateType.always; @BeforeClass - static public void before() throws IOException { + public static void before() throws IOException { GribIosp.debugIndexOnlyCount = 0; GribCollectionImmutable.countGC = 0; PartitionCollectionImmutable.countPC = 0; @@ -48,34 +52,8 @@ static public void before() throws IOException { } @AfterClass - static public void after() { + public static void after() { Grib.setDebugFlags(new DebugFlagsImpl()); - /* - * Formatter out = new Formatter(System.out); - * - * FileCacheIF cache = GribCdmIndex.gribCollectionCache; - * if (cache != null) { - * cache.showTracking(out); - * cache.showCache(out); - * cache.clearCache(false); - * } - * - * FileCacheIF rafCache = RandomAccessFile.getGlobalFileCache(); - * if (rafCache != null) { - * rafCache.showCache(out); - * } - * - * System.out.printf(" countGC=%7d%n", GribCollectionImmutable.countGC); - * System.out.printf(" countPC=%7d%n", PartitionCollectionImmutable.countPC); - * System.out.printf(" countDataAccess=%7d%n", GribIosp.debugIndexOnlyCount); - * System.out.printf(" total files needed=%7d%n", GribCollectionImmutable.countGC + - * PartitionCollectionImmutable.countPC + GribIosp.debugIndexOnlyCount); - * - * FileCache.shutdown(); - * RandomAccessFile.setGlobalFileCache(null); - * TestDir.checkLeaks(); - * RandomAccessFile.setDebugLeaks(false); - */ } ///////////////////////////////////////////////////////// @@ -92,7 +70,7 @@ public void testExtraCoordinates() throws IOException { boolean changed = GribCdmIndex.updateGribCollection(config, CollectionUpdateType.always, logger); String topLevelIndex = GribCdmIndex.getTopIndexFileFromConfig(config).getAbsolutePath(); - System.out.printf("changed = %s%n", changed); + logger.debug("changed = {}", changed); boolean ok = true; @@ -102,8 +80,8 @@ public void testExtraCoordinates() throws IOException { if (!stdname.equalsIgnoreCase("time")) continue; - System.out.printf(" %s == %s%n", vds.getFullName(), vds.getClass().getName()); - assert vds instanceof CoordinateAxis : vds.getFullName(); + logger.debug(" {} == {}", vds.getFullName(), vds.getClass().getName()); + assertThat((Object) vds).isInstanceOf(CoordinateAxis.class); // test that zero Intervals are removed if (vds instanceof CoordinateAxis1D) { @@ -112,7 +90,7 @@ public void testExtraCoordinates() throws IOException { for (int i = 0; i < axis.getSize(); i++) { double[] bound = axis.getCoordBounds(i); if (bound[0] == bound[1]) { - System.out.printf("ERR1 %s(%d) = [%f,%f]%n", vds.getFullName(), i, bound[0], bound[1]); + logger.debug("ERR1 {}({}) = [{},{}]", vds.getFullName(), i, bound[0], bound[1]); ok = false; } } @@ -127,7 +105,7 @@ public void testExtraCoordinates() throws IOException { double start = bounds.get(i, j, 0); double end = bounds.get(i, j, 1); if (start == end) { - System.out.printf("ERR2 %s(%d,%d) = [%f,%f]%n", vds.getFullName(), i, j, start, end); + logger.debug("ERR2 {}({},{}) = [{},{}]", vds.getFullName(), i, j, start, end); ok = false; } } @@ -136,7 +114,7 @@ public void testExtraCoordinates() throws IOException { } } - assert ok; + assertThat(ok).isTrue(); } // make sure Best reftimes always increase @@ -147,7 +125,7 @@ public void testBestReftimeMonotonic() throws IOException { TestDir.cdmUnitTestDir + "gribCollections/gfs_2p5deg/.*grib2", null, null, null, "file", null); boolean changed = GribCdmIndex.updateGribCollection(config, updateMode, logger); - System.out.printf("changed = %s%n", changed); + logger.debug("changed = {}", changed); String topLevelIndex = GribCdmIndex.getTopIndexFileFromConfig(config).getAbsolutePath(); boolean ok = true; @@ -157,8 +135,8 @@ public void testBestReftimeMonotonic() throws IOException { if (!stdname.equalsIgnoreCase("forecast_reference_time")) continue; - System.out.printf(" %s == %s%n", vds.getFullName(), vds.getClass().getName()); - assert vds instanceof CoordinateAxis1D : vds.getFullName(); + logger.debug(" {} == {}", vds.getFullName(), vds.getClass().getName()); + assertThat((Object) vds).isInstanceOf(CoordinateAxis.class); CoordinateAxis1D axis = (CoordinateAxis1D) vds; // test that values are monotonic @@ -166,7 +144,7 @@ public void testBestReftimeMonotonic() throws IOException { for (int i = 0; i < axis.getSize(); i++) { double val = axis.getCoordValue(i); if (i > 0 && (val < last)) { - System.out.printf(" %s(%d) == %f < %f%n", vds.getFullName(), i, val, last); + logger.debug(" {}({}) == {} < {}", vds.getFullName(), i, val, last); ok = false; } last = val; @@ -174,9 +152,18 @@ public void testBestReftimeMonotonic() throws IOException { } } - assert ok; + assertThat(ok).isTrue(); } + @Test + public void shouldNotAddScalarReftimeDimension() throws IOException { + final String path = TestDir.cdmUnitTestDir + "gribCollections/mrms/MRMS_CONUS_BaseReflectivity_20230918_1700.grib2"; - + try (NetcdfDataset ds = NetcdfDatasets.openDataset(path)) { + final List dimensions = ds.getRootGroup().getDimensions(); + for (Dimension dimension : dimensions) { + assertThat(dimension.getName()).doesNotContain("reftime"); + } + } + } } diff --git a/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionMissing.java b/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionMissing.java index 00ab9bb4d1..6ca625cb0c 100644 --- a/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionMissing.java +++ b/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionMissing.java @@ -69,7 +69,7 @@ public class TestGribCollectionMissing { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); @BeforeClass - static public void before() { + public static void before() { GribIosp.debugIndexOnlyCount = 0; GribCollectionImmutable.countGC = 0; PartitionCollectionImmutable.countPC = 0; @@ -81,7 +81,7 @@ static public void before() { } @AfterClass - static public void after() { + public static void after() { Grib.setDebugFlags(new DebugFlagsImpl()); Formatter out = new Formatter(System.out); @@ -322,7 +322,7 @@ private static void read(GridDatatype gdt, Count count, int rtIndex, int tIndex, count.nread++; } - static public class Count { + public static class Count { int nread; int nmiss; int nerrs; diff --git a/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionTimeUnits.java b/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionTimeUnits.java index ef42b1dc6c..97dd97f8ac 100644 --- a/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionTimeUnits.java +++ b/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionTimeUnits.java @@ -63,9 +63,9 @@ public void shouldConvertTimeToHoursInGrib2Collection() throws IOException { MIXED_UNITS_SPEC, null, null, null, "file", null); setTimeUnitConversionFromMinutesToHours(config); - // hours get rounded down due to refdate being on the half hour - final double[] valuesInHours = new double[] {5.0, 11.0, 17.0, 23.0, 29.0, 35.0, 41.0, 47.0, 53.0, 59.0, 65.0, 71.0}; - checkVariableNameAndTimeAxis(config, "6_Hour", "time2", "Hour", valuesInHours); + // hours get rounded up due to refdate being on the half hour + final double[] valuesInHours = new double[] {6.0, 13.0, 19.0, 25.0, 31.0, 37.0, 43.0, 49.0, 55.0, 61.0, 67.0, 73.0}; + checkVariableNameAndTimeAxis(config, "6_Hour", "time4", "Hour", valuesInHours); } private void setTimeUnitConversionFromMinutesToHours(FeatureCollectionConfig config) { diff --git a/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionsBig.java b/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionsBig.java index 0cee94d8fe..7d6ef13da6 100644 --- a/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionsBig.java +++ b/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionsBig.java @@ -66,7 +66,7 @@ public class TestGribCollectionsBig { // String topdir = "B:/rdavm"; // use for local windows to get around samba bug @BeforeClass - static public void before() { + public static void before() { GribIosp.debugIndexOnlyCount = 0; GribCollectionImmutable.countGC = 0; PartitionCollectionImmutable.countPC = 0; @@ -78,7 +78,7 @@ static public void before() { } @AfterClass - static public void after() { + public static void after() { Grib.setDebugFlags(new DebugFlagsImpl()); Formatter out = new Formatter(System.out); diff --git a/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionsDense.java b/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionsDense.java index db3f57f62d..e577a5ed45 100644 --- a/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionsDense.java +++ b/cdm-test/src/test/java/ucar/nc2/grib/TestGribCollectionsDense.java @@ -65,7 +65,7 @@ public class TestGribCollectionsDense { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); @BeforeClass - static public void before() { + public static void before() { GribIosp.debugIndexOnlyCount = 0; GribCollectionImmutable.countGC = 0; PartitionCollectionImmutable.countPC = 0; @@ -77,7 +77,7 @@ static public void before() { } @AfterClass - static public void after() { + public static void after() { Grib.setDebugFlags(new DebugFlagsImpl()); Formatter out = new Formatter(System.out); diff --git a/cdm-test/src/test/java/ucar/nc2/grib/TestGribIndexCreation.java b/cdm-test/src/test/java/ucar/nc2/grib/TestGribIndexCreation.java index 45653eed80..36b3e3b527 100644 --- a/cdm-test/src/test/java/ucar/nc2/grib/TestGribIndexCreation.java +++ b/cdm-test/src/test/java/ucar/nc2/grib/TestGribIndexCreation.java @@ -44,7 +44,7 @@ public class TestGribIndexCreation { private static CollectionUpdateType updateMode = CollectionUpdateType.always; @BeforeClass - static public void before() { + public static void before() { GribIosp.debugIndexOnlyCount = 0; GribCollectionImmutable.countGC = 0; PartitionCollectionImmutable.countPC = 0; @@ -61,7 +61,7 @@ static public void before() { } @AfterClass - static public void after() { + public static void after() { Grib.setDebugFlags(new DebugFlagsImpl()); Formatter out = new Formatter(System.out); diff --git a/cdm-test/src/test/java/ucar/nc2/grib/TestGribIndexCreationOther.java b/cdm-test/src/test/java/ucar/nc2/grib/TestGribIndexCreationOther.java index 74a5646731..0c73f75a44 100644 --- a/cdm-test/src/test/java/ucar/nc2/grib/TestGribIndexCreationOther.java +++ b/cdm-test/src/test/java/ucar/nc2/grib/TestGribIndexCreationOther.java @@ -34,7 +34,7 @@ public class TestGribIndexCreationOther { private static final boolean show = false; @BeforeClass - static public void before() { + public static void before() { GribIosp.debugIndexOnlyCount = 0; GribCollectionImmutable.countGC = 0; PartitionCollectionImmutable.countPC = 0; @@ -46,7 +46,7 @@ static public void before() { } @AfterClass - static public void after() { + public static void after() { Grib.setDebugFlags(new DebugFlagsImpl()); Formatter out = new Formatter(System.out); diff --git a/cdm-test/src/test/java/ucar/nc2/grib/TestGribIndexLocation.java b/cdm-test/src/test/java/ucar/nc2/grib/TestGribIndexLocation.java new file mode 100644 index 0000000000..4a674932c2 --- /dev/null +++ b/cdm-test/src/test/java/ucar/nc2/grib/TestGribIndexLocation.java @@ -0,0 +1,163 @@ +package ucar.nc2.grib; + +import static com.google.common.truth.Truth.assertThat; + +import java.io.File; +import java.io.IOException; +import java.lang.invoke.MethodHandles; +import java.nio.file.Files; +import java.util.Arrays; +import java.util.List; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import thredds.filesystem.MFileOS; +import thredds.inventory.CollectionUpdateType; +import thredds.inventory.MFile; +import ucar.nc2.util.DiskCache2; + +@RunWith(Parameterized.class) +public class TestGribIndexLocation { + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + private static final String DATA_DIR = "../grib/src/test/data/"; + private static final String INDEX_DIR = "../grib/src/test/data/index/"; + + @Parameterized.Parameters(name = "{0}") + public static List getTestParameters() { + return Arrays.asList(new Object[][] { + + {"radar_national.grib1"}, + + {"cosmo-eu.grib2"}, + + }); + } + + private final String filename; + private final String indexFilename; + private final boolean isGrib1; + + public TestGribIndexLocation(String filename) { + this.filename = filename; + this.indexFilename = filename + GribIndex.GBX9_IDX; + this.isGrib1 = filename.endsWith(".grib1"); + } + + @Rule + public final TemporaryFolder tempCacheFolder = new TemporaryFolder(); + + @Rule + public final TemporaryFolder tempFolder = new TemporaryFolder(); + + @Before + public void setCacheLocation() { + System.getProperties().setProperty("nj22.cache", tempCacheFolder.getRoot().getPath()); + } + + @After + public void unsetCacheLocation() { + System.clearProperty("nj22.cache"); + } + + @Test + public void shouldCreateIndexInLocationOfDataFile() throws IOException { + useCache(false); + + final MFile copiedFile = new MFileOS(copyToTempFolder(DATA_DIR + filename).getPath()); + + final GribIndex index = + GribIndex.readOrCreateIndexFromSingleFile(isGrib1, copiedFile, CollectionUpdateType.always, logger); + assertThat(index).isNotNull(); + assertThat(index.getNRecords()).isNotEqualTo(0); + + assertTempFolderHasSize(2); + assertTempFolderHas(copiedFile.getName() + GribIndex.GBX9_IDX); + } + + @Test + public void shouldUseIndexInLocationOfDataFile() throws IOException { + useCache(false); + + final MFile copiedFile = new MFileOS(copyToTempFolder(DATA_DIR + filename).getPath()); + final File copiedIndexFile = copyToTempFolder(INDEX_DIR + indexFilename); + assertThat(copiedIndexFile.setLastModified(0)).isTrue(); + + final GribIndex index = + GribIndex.readOrCreateIndexFromSingleFile(isGrib1, copiedFile, CollectionUpdateType.nocheck, logger); + assertThat(index).isNotNull(); + assertThat(index.getNRecords()).isNotEqualTo(0); + + assertTempFolderHasSize(2); + assertTempFolderHas(copiedFile.getName() + GribIndex.GBX9_IDX); + assertThat(copiedIndexFile.lastModified()).isEqualTo(0); + } + + @Test + public void shouldCreateIndexInDefaultCache() throws IOException { + final DiskCache2 diskCache = useCache(true); + + final MFile copiedFile = new MFileOS(copyToTempFolder(DATA_DIR + filename).getPath()); + + final GribIndex index = + GribIndex.readOrCreateIndexFromSingleFile(isGrib1, copiedFile, CollectionUpdateType.always, logger); + assertThat(index).isNotNull(); + assertThat(index.getNRecords()).isNotEqualTo(0); + + assertTempFolderHasSize(1); + assertThat(diskCache.getCacheFile(copiedFile.getPath() + GribIndex.GBX9_IDX).exists()).isTrue(); + } + + @Test + public void shouldReuseCachedIndex() throws IOException { + final DiskCache2 diskCache = useCache(true); + + final MFile copiedFile = new MFileOS(copyToTempFolder(DATA_DIR + filename).getPath()); + + final GribIndex index = + GribIndex.readOrCreateIndexFromSingleFile(isGrib1, copiedFile, CollectionUpdateType.always, logger); + assertThat(index).isNotNull(); + assertThat(diskCache.getCacheFile(copiedFile.getPath() + GribIndex.GBX9_IDX).exists()).isTrue(); + final long cacheLastModified = diskCache.getCacheFile(copiedFile.getPath() + GribIndex.GBX9_IDX).lastModified(); + + final GribIndex rereadIndex = + GribIndex.readOrCreateIndexFromSingleFile(isGrib1, copiedFile, CollectionUpdateType.never, logger); + assertThat(rereadIndex).isNotNull(); + final File rereadCachedIndex = diskCache.getCacheFile(copiedFile.getPath() + GribIndex.GBX9_IDX); + assertThat(rereadCachedIndex.lastModified()).isEqualTo(cacheLastModified); + } + + // Helper functions + static DiskCache2 useCache(boolean useCache) { + final DiskCache2 diskCache = GribIndexCache.getDiskCache2(); + diskCache.setNeverUseCache(!useCache); + diskCache.setAlwaysUseCache(useCache); + return diskCache; + } + + private File copyToTempFolder(String filename) throws IOException { + final File file = new File(filename); + final File copiedFile = new File(tempFolder.getRoot(), file.getName()); + Files.copy(file.toPath(), copiedFile.toPath()); + assertTempFolderHas(copiedFile.getName()); + return copiedFile; + } + + private void assertTempFolderHas(String filename) { + final File[] filesInFolder = tempFolder.getRoot().listFiles(); + assertThat(filesInFolder).isNotNull(); + assertThat(Arrays.stream(filesInFolder).anyMatch(file -> file.getName().equals(filename))).isTrue(); + } + + private void assertTempFolderHasSize(int size) { + final File[] filesInFolder = tempFolder.getRoot().listFiles(); + assertThat(filesInFolder).isNotNull(); + assertThat(filesInFolder.length).isEqualTo(size); + } +} diff --git a/cdm-test/src/test/java/ucar/nc2/grib/TestGribIndexLocationS3.java b/cdm-test/src/test/java/ucar/nc2/grib/TestGribIndexLocationS3.java new file mode 100644 index 0000000000..9eef8a1fcb --- /dev/null +++ b/cdm-test/src/test/java/ucar/nc2/grib/TestGribIndexLocationS3.java @@ -0,0 +1,110 @@ +package ucar.nc2.grib; + +import static com.google.common.truth.Truth.assertThat; +import static ucar.nc2.grib.TestGribIndexLocation.useCache; + +import java.io.File; +import java.io.IOException; +import java.lang.invoke.MethodHandles; +import java.util.Arrays; +import java.util.List; +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import thredds.inventory.CollectionUpdateType; +import thredds.inventory.MFile; +import thredds.inventory.s3.MFileS3; +import ucar.nc2.util.DiskCache2; + +@RunWith(Parameterized.class) +public class TestGribIndexLocationS3 { + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + private static final String BUCKET = "cdms3:thredds-test-data"; + private static final String S3_DIR_WITHOUT_INDEX = BUCKET + "?" + "test-grib-without-index/"; + private static final String FRAGMENT = "#delimiter=/"; + + @Parameterized.Parameters(name = "{0}") + public static List getTestParameters() { + return Arrays.asList(new Object[][] { + + {"radar_national.grib1", ""}, + + {"radar_national.grib1", FRAGMENT}, + + {"cosmo-eu.grib2", ""}, + + {"cosmo-eu.grib2", FRAGMENT}, + + }); + } + + private final String filename; + private final String indexFilename; + private final boolean isGrib1; + + public TestGribIndexLocationS3(String filename, String fragment) { + this.filename = filename + fragment; + this.indexFilename = filename + GribIndex.GBX9_IDX; + this.isGrib1 = filename.endsWith(".grib1"); + } + + @Rule + public final TemporaryFolder tempCacheFolder = new TemporaryFolder(); + + @Rule + public final TemporaryFolder tempFolder = new TemporaryFolder(); + + @Before + public void setCacheLocation() { + System.getProperties().setProperty("nj22.cache", tempCacheFolder.getRoot().getPath()); + } + + @After + public void unsetCacheLocation() { + System.clearProperty("nj22.cache"); + } + + @Test + public void shouldCreateIndexInDefaultCache() throws IOException { + final DiskCache2 diskCache = useCache(true); + + // Check that index file does not exist + final MFile s3FileIndex = new MFileS3(S3_DIR_WITHOUT_INDEX + indexFilename); + assertThat(s3FileIndex.exists()).isFalse(); + + final MFile s3File = new MFileS3(S3_DIR_WITHOUT_INDEX + filename); + + final GribIndex index = + GribIndex.readOrCreateIndexFromSingleFile(isGrib1, s3File, CollectionUpdateType.always, logger); + assertThat(index).isNotNull(); + assertThat(index.getNRecords()).isNotEqualTo(0); + + assertThat(diskCache.getCacheFile(s3File.getPath() + GribIndex.GBX9_IDX).exists()).isTrue(); + } + + @Test + public void shouldReuseCachedIndex() throws IOException { + final DiskCache2 diskCache = useCache(true); + + final MFile s3File = new MFileS3(S3_DIR_WITHOUT_INDEX + filename); + + final GribIndex index = + GribIndex.readOrCreateIndexFromSingleFile(isGrib1, s3File, CollectionUpdateType.always, logger); + assertThat(index).isNotNull(); + assertThat(diskCache.getCacheFile(s3File.getPath() + GribIndex.GBX9_IDX).exists()).isTrue(); + final long cacheLastModified = diskCache.getCacheFile(s3File.getPath() + GribIndex.GBX9_IDX).lastModified(); + + final GribIndex rereadIndex = + GribIndex.readOrCreateIndexFromSingleFile(isGrib1, s3File, CollectionUpdateType.never, logger); + assertThat(rereadIndex).isNotNull(); + final File rereadCachedIndex = diskCache.getCacheFile(s3File.getPath() + GribIndex.GBX9_IDX); + assertThat(rereadCachedIndex.lastModified()).isEqualTo(cacheLastModified); + } +} diff --git a/cdm-test/src/test/java/ucar/nc2/iosp/bufr/ScannerPqact.java b/cdm-test/src/test/java/ucar/nc2/iosp/bufr/ScannerPqact.java index 951f53cde2..904ef75a65 100644 --- a/cdm-test/src/test/java/ucar/nc2/iosp/bufr/ScannerPqact.java +++ b/cdm-test/src/test/java/ucar/nc2/iosp/bufr/ScannerPqact.java @@ -290,7 +290,7 @@ public int compare(Pqact o1, Pqact o2) { static Formatter out = new Formatter(System.out); // LOOK turn this into a test - static public void main(String args[]) throws IOException { + public static void main(String args[]) throws IOException { // read pattern matching readPqactTable("D:/bufr/pqact.txt"); diff --git a/cdm-test/src/test/java/ucar/nc2/iosp/grib/TestIntervalsTimeCoords2D.java b/cdm-test/src/test/java/ucar/nc2/iosp/grib/TestIntervalsTimeCoords2D.java index 7f0c5cb9bf..f2f8da0678 100644 --- a/cdm-test/src/test/java/ucar/nc2/iosp/grib/TestIntervalsTimeCoords2D.java +++ b/cdm-test/src/test/java/ucar/nc2/iosp/grib/TestIntervalsTimeCoords2D.java @@ -57,7 +57,6 @@ @Category(NeedsCdmUnitTest.class) public class TestIntervalsTimeCoords2D { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - private static final double TOLERANCE = 1e-6; @Parameterized.Parameters(name = "{0}") public static Collection getTestParameters() throws IOException { @@ -133,7 +132,8 @@ public void checkTimeIntervalCoordinates() throws Exception { } assertThat(start).isEqualTo(bounds[idx][0]); assertThat(end).isEqualTo(bounds[idx][1]); - assertThat(coordinateValue).isWithin(TOLERANCE).of(end); + assertThat(coordinateValue).isAtMost(end); + assertThat(coordinateValue).isAtLeast(start); idx++; } diff --git a/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4eos.java b/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4eos.java index 4a18ec6860..056eed7900 100644 --- a/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4eos.java +++ b/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4eos.java @@ -32,7 +32,7 @@ public class TestH4eos { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - static public String testDir = TestDir.cdmUnitTestDir + "formats/hdf4/eos/"; + public static String testDir = TestDir.cdmUnitTestDir + "formats/hdf4/eos/"; // test the coordSysBuilder - check if grid exists @Test diff --git a/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4misc.java b/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4misc.java index fc471b50df..c37db4fca6 100644 --- a/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4misc.java +++ b/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4misc.java @@ -29,7 +29,7 @@ @Category(NeedsCdmUnitTest.class) public class TestH4misc { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - static public String testDir = TestDir.cdmUnitTestDir + "formats/hdf4/"; + public static String testDir = TestDir.cdmUnitTestDir + "formats/hdf4/"; @Test public void testUnsigned() throws IOException, InvalidRangeException { diff --git a/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4readAll.java b/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4readAll.java index 3c683cf46b..a159d294a2 100644 --- a/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4readAll.java +++ b/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4readAll.java @@ -33,7 +33,7 @@ public class TestH4readAll { static private String testDir = TestDir.cdmUnitTestDir + "formats/hdf4/"; @AfterClass - static public void after() { + public static void after() { H4header.setDebugFlags(new DebugFlagsImpl("")); // make sure debug flags are off } diff --git a/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4readAndCount.java b/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4readAndCount.java index e172143250..a2f1c87e4a 100644 --- a/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4readAndCount.java +++ b/cdm-test/src/test/java/ucar/nc2/iosp/hdf4/TestH4readAndCount.java @@ -29,7 +29,7 @@ public class TestH4readAndCount { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - static public String testDir = TestDir.cdmUnitTestDir + "formats/hdf4/"; + public static String testDir = TestDir.cdmUnitTestDir + "formats/hdf4/"; @Parameterized.Parameters(name = "{0}") public static List getTestParameters() { diff --git a/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5OddTypes.java b/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5OddTypes.java index 4d3a30f519..1cf8568951 100644 --- a/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5OddTypes.java +++ b/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5OddTypes.java @@ -30,10 +30,10 @@ */ public class TestH5OddTypes { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - static public String testDir = TestH5.testDir; + public static String testDir = TestH5.testDir; @AfterClass - static public void after() { + public static void after() { H5header.setDebugFlags(new DebugFlagsImpl("")); // make sure debug flags are off } diff --git a/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5ReadAndCount.java b/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5ReadAndCount.java index 46864a916e..22e2e9d1ce 100644 --- a/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5ReadAndCount.java +++ b/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5ReadAndCount.java @@ -27,7 +27,7 @@ @Category(NeedsCdmUnitTest.class) public class TestH5ReadAndCount { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - static public String testDir = TestH5.testDir; + public static String testDir = TestH5.testDir; @Parameterized.Parameters(name = "{0}") public static List getTestParameters() { diff --git a/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5npoess.java b/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5npoess.java index 522087a089..8ffd10df68 100644 --- a/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5npoess.java +++ b/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5npoess.java @@ -29,7 +29,7 @@ public class TestH5npoess { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); @AfterClass - static public void after() { + public static void after() { H5header.setDebugFlags(new DebugFlagsImpl("")); // make sure debug flags are off } diff --git a/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5readAll.java b/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5readAll.java index 872859fde5..2d7d889b66 100644 --- a/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5readAll.java +++ b/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestH5readAll.java @@ -30,7 +30,7 @@ public class TestH5readAll { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); @AfterClass - static public void after() { + public static void after() { H5header.setDebugFlags(new DebugFlagsImpl("")); // make sure debug flags are off } diff --git a/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestN4problems.java b/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestN4problems.java index 42091d0391..e27c8a3550 100644 --- a/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestN4problems.java +++ b/cdm-test/src/test/java/ucar/nc2/iosp/hdf5/TestN4problems.java @@ -34,7 +34,7 @@ public class TestN4problems { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); @AfterClass - static public void after() { + public static void after() { H5header.setDebugFlags(new DebugFlagsImpl("")); // make sure debug flags are off } diff --git a/cdm-test/src/test/java/ucar/nc2/util/net/Json.java b/cdm-test/src/test/java/ucar/nc2/util/net/Json.java index d5683c5b67..6a4be40b90 100644 --- a/cdm-test/src/test/java/ucar/nc2/util/net/Json.java +++ b/cdm-test/src/test/java/ucar/nc2/util/net/Json.java @@ -31,14 +31,14 @@ abstract public class Json { ////////////////////////////////////////////////// - static public Object parse(String text) throws IOException { + public static Object parse(String text) throws IOException { Parser parser = new Parser(); return parser.parse(text); } ////////////////////////////////////////////////// - static protected class Parser { + protected static class Parser { public Parser() {} @@ -160,17 +160,17 @@ else if (tokens.ttype != COMMA) } } - static public String toString(Object o) { + public static String toString(Object o) { return toString(o, ""); } - static public String toString(Object o, String demark) { + public static String toString(Object o, String demark) { StringBuilder buf = new StringBuilder(); toStringR(o, buf, demark, 0); return buf.toString(); } - static protected void toStringR(Object o, StringBuilder buf, String demark, int indent) { + protected static void toStringR(Object o, StringBuilder buf, String demark, int indent) { boolean first = true; if (o instanceof List) { List list = (List) o; @@ -230,7 +230,7 @@ static protected void toStringR(Object o, StringBuilder buf, String demark, int static String blanks = " "; - static protected String indent(int n) { + protected static String indent(int n) { while (n > blanks.length()) { blanks = blanks + blanks; } diff --git a/cdm-test/src/timing/java/timing/IO/TimeCompression.java b/cdm-test/src/timing/java/timing/IO/TimeCompression.java index e112069fb3..843ad273ea 100644 --- a/cdm-test/src/timing/java/timing/IO/TimeCompression.java +++ b/cdm-test/src/timing/java/timing/IO/TimeCompression.java @@ -55,13 +55,13 @@ public class TimeCompression { static boolean debug = false; - static public void main(String[] args) throws IOException { + public static void main(String[] args) throws IOException { testCompressRandom(); testCompressFile("D:/data/NAM_CONUS_80km_20070501_1200.nc"); testCompressFile("D:/data/NAM_CONUS_80km_20070501_1200.nc"); } - static public void testCompressFile(String filename) throws IOException { + public static void testCompressFile(String filename) throws IOException { compressFile(filename, "C:/temp/tempFile.compress1", true); compressFile(filename, "C:/temp/tempFile.gzip", false); @@ -70,7 +70,7 @@ static public void testCompressFile(String filename) throws IOException { } // test Deflater on real files - static public void compressFile(String filenameIn, String filenameOut, boolean inflate) throws IOException { + public static void compressFile(String filenameIn, String filenameOut, boolean inflate) throws IOException { long lenIn = new File(filenameIn).length(); if (debug) System.out.println("read " + filenameIn + " len = " + lenIn); @@ -100,7 +100,7 @@ static public void compressFile(String filenameIn, String filenameOut, boolean i System.out.println(" " + name + " took = " + took + " sec; rate = " + rate + "Mb/sec; compress = " + ratio); } - static public void uncompressFile(String filenameIn, String filenameOut, boolean inflate) throws IOException { + public static void uncompressFile(String filenameIn, String filenameOut, boolean inflate) throws IOException { long lenIn = new File(filenameIn).length(); if (debug) System.out.println("read compressed file= " + filenameIn + " len = " + lenIn); @@ -132,7 +132,7 @@ static public void uncompressFile(String filenameIn, String filenameOut, boolean ///////////////////////////////////////////////////////////// // random floats - static public void testCompressRandom() throws IOException { + public static void testCompressRandom() throws IOException { deflateRandom("C:/temp/tempFile.compress1", false); deflateRandom("C:/temp/tempFile.compress2", true); @@ -147,7 +147,7 @@ static public void testCompressRandom() throws IOException { } // test DeflaterOutputStream - write 1M random floats - static public void deflateRandom(String filenameOut, boolean buffer) throws IOException { + public static void deflateRandom(String filenameOut, boolean buffer) throws IOException { FileOutputStream fout = new FileOutputStream(filenameOut); OutputStream out = new DeflaterOutputStream(fout); if (buffer) @@ -169,7 +169,7 @@ static public void deflateRandom(String filenameOut, boolean buffer) throws IOEx } // test GZIPOutputStream - write 1M random floats - static public void gzipRandom(String filenameOut, boolean buffer) throws IOException { + public static void gzipRandom(String filenameOut, boolean buffer) throws IOException { FileOutputStream fout = new FileOutputStream(filenameOut); OutputStream out = new GZIPOutputStream(fout); if (buffer) @@ -191,7 +191,7 @@ static public void gzipRandom(String filenameOut, boolean buffer) throws IOExcep } // test InflaterInputStream - static public void inflateRandom(String filename, boolean buffer) throws IOException { + public static void inflateRandom(String filename, boolean buffer) throws IOException { FileInputStream fin = new FileInputStream(filename); InputStream in = new InflaterInputStream(fin); if (buffer) @@ -213,7 +213,7 @@ static public void inflateRandom(String filename, boolean buffer) throws IOExcep } // test InflaterInputStream - static public void unzipRandom(String filename, boolean buffer) throws IOException { + public static void unzipRandom(String filename, boolean buffer) throws IOException { FileInputStream fin = new FileInputStream(filename); InputStream in = new GZIPInputStream(fin); if (buffer) @@ -235,7 +235,7 @@ static public void unzipRandom(String filename, boolean buffer) throws IOExcepti } // test DeflaterOutputStream - static public void main2(String[] args) throws IOException { + public static void main2(String[] args) throws IOException { String filenameIn = "C:/temp/tempFile2"; String filenameOut = "C:/temp/tempFile2.compress2"; diff --git a/cdm-test/src/timing/java/timing/IO/TimeDigest.java b/cdm-test/src/timing/java/timing/IO/TimeDigest.java index e69b166f07..7a1041b5c3 100644 --- a/cdm-test/src/timing/java/timing/IO/TimeDigest.java +++ b/cdm-test/src/timing/java/timing/IO/TimeDigest.java @@ -10,7 +10,7 @@ import java.util.Set; public class TimeDigest { - static public void main(String args[]) { + public static void main(String args[]) { testDigest(); } diff --git a/cdm-test/src/timing/java/timing/Stat.java b/cdm-test/src/timing/java/timing/Stat.java index f4fb34f589..ee45a43f1f 100644 --- a/cdm-test/src/timing/java/timing/Stat.java +++ b/cdm-test/src/timing/java/timing/Stat.java @@ -12,7 +12,7 @@ public class Stat { static private HashMap map = new HashMap(); - static public Stat factory(String name) { + public static Stat factory(String name) { Stat s = map.get(name); if (s == null) { s = new Stat(name, false); diff --git a/cdm-test/src/timing/java/ucar/nc2/ReadRaw.java b/cdm-test/src/timing/java/ucar/nc2/ReadRaw.java index f47846439a..9d5389c6ea 100644 --- a/cdm-test/src/timing/java/ucar/nc2/ReadRaw.java +++ b/cdm-test/src/timing/java/ucar/nc2/ReadRaw.java @@ -160,7 +160,7 @@ public void run(String filename) throws IOException { } - static public void main(String args[]) throws IOException { + public static void main(String args[]) throws IOException { new ReadRaw(); } } diff --git a/cdm-test/src/timing/java/ucar/nc2/TimeRecords2.java b/cdm-test/src/timing/java/ucar/nc2/TimeRecords2.java index 3952a4c050..63103c658b 100644 --- a/cdm-test/src/timing/java/ucar/nc2/TimeRecords2.java +++ b/cdm-test/src/timing/java/ucar/nc2/TimeRecords2.java @@ -43,7 +43,7 @@ static private void readOneVariable(NetcdfFile ncfile, String varName) throws IO System.out.println(" readOneVariable took=" + took + " secs (" + total + ")"); } - static public void main(String[] args) throws IOException { + public static void main(String[] args) throws IOException { doOne("C:/data/metars/Surface_METAR_20070326_0000.col.nc", "parent_index"); doOne("C:/data/metars/Surface_METAR_20070326_0000.nc", "parent_index"); } diff --git a/cdm-test/src/timing/java/ucar/nc2/util/xml/TestMetarEncoding.java b/cdm-test/src/timing/java/ucar/nc2/util/xml/TestMetarEncoding.java index 0c910b066b..5889eb2174 100644 --- a/cdm-test/src/timing/java/ucar/nc2/util/xml/TestMetarEncoding.java +++ b/cdm-test/src/timing/java/ucar/nc2/util/xml/TestMetarEncoding.java @@ -137,7 +137,7 @@ public void run() { runC(); } - static public void main(String[] args) { + public static void main(String[] args) { Calendar c = Calendar.getInstance(); // contains current startup time // c.add(Calendar.SECOND, 30); // starting in 30 seconds Timer timer = new Timer(); diff --git a/cdm/core/build.gradle b/cdm/core/build.gradle index 6386298aad..369a4cc19e 100644 --- a/cdm/core/build.gradle +++ b/cdm/core/build.gradle @@ -10,6 +10,8 @@ apply plugin: 'groovy' // For Spock tests. dependencies { api enforcedPlatform(project(':netcdf-java-platform')) + implementation 'commons-math:commons-math' + testImplementation enforcedPlatform(project(':netcdf-java-testing-platform')) compile project(':udunits') diff --git a/cdm/core/src/main/java/thredds/client/catalog/ServiceType.java b/cdm/core/src/main/java/thredds/client/catalog/ServiceType.java index dec63a1ba1..774b28143c 100644 --- a/cdm/core/src/main/java/thredds/client/catalog/ServiceType.java +++ b/cdm/core/src/main/java/thredds/client/catalog/ServiceType.java @@ -17,7 +17,7 @@ public enum ServiceType { CdmrFeature("Provides coordinate subsetting on remote CDM Feature Datasets, using ncstream.", AccessType.DataAccess, "cdmrFeature"), // Compound, // - DAP4("Access dataset through OPeNDAP using the DAP4 protocol.", AccessType.DataAccess, "dap4"), // + DAP4("Access dataset using the DAP4 protocol.", AccessType.DataAccess, "dap4"), // DODS, // deprecated File, // deprecated FTP, // diff --git a/cdm/core/src/main/java/thredds/client/catalog/builder/CatalogBuilder.java b/cdm/core/src/main/java/thredds/client/catalog/builder/CatalogBuilder.java index 1eb908b602..339a3b256c 100644 --- a/cdm/core/src/main/java/thredds/client/catalog/builder/CatalogBuilder.java +++ b/cdm/core/src/main/java/thredds/client/catalog/builder/CatalogBuilder.java @@ -59,12 +59,28 @@ public Catalog buildFromLocation(String location, URI baseURI) { } this.baseURI = baseURI; + try { + validatePort(baseURI); + } catch (IllegalArgumentException e) { + errlog.format("Invalid port number = '%s' err='%s'%n ", baseURI.toASCIIString(), e.getMessage()); + logger.error("Invalid port number = '{}' err='{}}'", baseURI.toASCIIString(), e.getMessage()); + fatalError = true; + return null; + } readXML(location); return fatalError ? null : makeCatalog(); } public Catalog buildFromURI(URI uri) { this.baseURI = uri; + try { + validatePort(baseURI); + } catch (IllegalArgumentException e) { + errlog.format("Invalid port number = '%s' err='%s'%n ", baseURI.toASCIIString(), e.getMessage()); + logger.error("Invalid port number = '{}' err='{}}'", baseURI.toASCIIString(), e.getMessage()); + fatalError = true; + return null; + } readXML(uri); return fatalError ? null : makeCatalog(); } @@ -78,6 +94,14 @@ public Catalog buildFromCatref(CatalogRef catref) { return null; } this.baseURI = catrefURI; + try { + validatePort(baseURI); + } catch (IllegalArgumentException e) { + errlog.format("Invalid port number = '%s' err='%s'%n ", baseURI.toASCIIString(), e.getMessage()); + logger.error("Invalid port number = '{}' err='{}}'", baseURI.toASCIIString(), e.getMessage()); + fatalError = true; + return null; + } Catalog result = buildFromURI(catrefURI); catref.setRead(!fatalError); return fatalError ? null : result; @@ -85,22 +109,71 @@ public Catalog buildFromCatref(CatalogRef catref) { public Catalog buildFromString(String catalogAsString, URI docBaseUri) { this.baseURI = docBaseUri; + try { + validatePort(baseURI); + } catch (IllegalArgumentException e) { + errlog.format("Invalid port number = '%s' err='%s'%n ", baseURI.toASCIIString(), e.getMessage()); + logger.error("Invalid port number = '{}' err='{}}'", baseURI.toASCIIString(), e.getMessage()); + fatalError = true; + return null; + } readXMLfromString(catalogAsString); return fatalError ? null : makeCatalog(); } public Catalog buildFromStream(InputStream stream, URI docBaseUri) { this.baseURI = docBaseUri; + try { + validatePort(baseURI); + } catch (IllegalArgumentException e) { + errlog.format("Invalid port number = '%s' err='%s'%n ", baseURI.toASCIIString(), e.getMessage()); + logger.error("Invalid port number = '{}' err='{}}'", baseURI.toASCIIString(), e.getMessage()); + fatalError = true; + return null; + } readXML(stream); return fatalError ? null : makeCatalog(); } public Catalog buildFromJdom(Element root, URI docBaseUri) { this.baseURI = docBaseUri; + try { + validatePort(baseURI); + } catch (IllegalArgumentException e) { + errlog.format("Invalid port number = '%s' err='%s'%n ", baseURI.toASCIIString(), e.getMessage()); + logger.error("Invalid port number = '{}' err='{}}'", baseURI.toASCIIString(), e.getMessage()); + fatalError = true; + return null; + } readCatalog(root); return fatalError ? null : makeCatalog(); } + /* + * Validates port number of given URI. + * URI already meets RFC 2396 to pass creation. + * We are checking to make sure port # isn't something nefarious. + * + * @param baseURI java.net.URI to validate + * + * @throws IllegalArgumentException if URI port number if + * + * @see + */ + private void validatePort(URI baseURI) throws IllegalArgumentException { + int port = baseURI.getPort(); + // -1 means port undefined + if (port != -1) { + // TCP/IP port numbers below 1024 are only for root user. + if (port < 1024) { + if (port != 80 && port != 443) { + throw new IllegalArgumentException( + "User requesting access to catalog on non-valid root-privileged port: " + Integer.toString(port)); + } + } + } + } + public String getErrorMessage() { return errlog.toString(); } @@ -330,8 +403,8 @@ private void readXML(InputStream stream) { } private void logError(Exception e, String message) { - errlog.format(message + ", err=" + e); - logger.error(message); + errlog.format(message); + logger.error(message + ", err=" + e); if (logger.isTraceEnabled()) { e.printStackTrace(); } diff --git a/cdm/core/src/main/java/thredds/filesystem/MFileOS.java b/cdm/core/src/main/java/thredds/filesystem/MFileOS.java index 76ca060529..3bb3e7ff1a 100644 --- a/cdm/core/src/main/java/thredds/filesystem/MFileOS.java +++ b/cdm/core/src/main/java/thredds/filesystem/MFileOS.java @@ -53,7 +53,7 @@ public MFileOS(java.io.File file) { } public MFileOS(String filename) { - this.file = new File(filename); + this.file = new File(filename.replaceFirst("^file:", "")); this.lastModified = file.lastModified(); } @@ -139,4 +139,9 @@ public void writeToStream(OutputStream outputStream, long offset, long maxBytes) public File getFile() { return file; } + + @Override + public MFileOS getChild(String newFilename) { + return new MFileOS(new File(file, newFilename)); + } } diff --git a/cdm/core/src/main/java/thredds/filesystem/MFileOS7.java b/cdm/core/src/main/java/thredds/filesystem/MFileOS7.java index e47e980341..5a04a5ca85 100644 --- a/cdm/core/src/main/java/thredds/filesystem/MFileOS7.java +++ b/cdm/core/src/main/java/thredds/filesystem/MFileOS7.java @@ -141,6 +141,11 @@ public void writeToStream(OutputStream outputStream, long offset, long maxBytes) } } + @Override + public MFileOS7 getChild(String newFilename) { + throw new UnsupportedOperationException("MFileOS7::getChild not implemented. Filename: " + getName()); + } + public Path getNioPath() { return path; } diff --git a/cdm/core/src/main/java/thredds/inventory/CollectionManagerCatalog.java b/cdm/core/src/main/java/thredds/inventory/CollectionManagerCatalog.java index 9844c002df..70c408db6e 100644 --- a/cdm/core/src/main/java/thredds/inventory/CollectionManagerCatalog.java +++ b/cdm/core/src/main/java/thredds/inventory/CollectionManagerCatalog.java @@ -168,6 +168,11 @@ public void writeToStream(OutputStream outputStream) { public void writeToStream(OutputStream outputStream, long offset, long maxBytes) { throw new UnsupportedOperationException("Writing MFileRemote not implemented. Filename: " + getName()); } + + @Override + public MFileRemote getChild(String newFilename) { + throw new UnsupportedOperationException("MFileRemote::getChild not implemented. Filename: " + getName()); + } } /////////////////////////////// diff --git a/cdm/core/src/main/java/thredds/inventory/MFile.java b/cdm/core/src/main/java/thredds/inventory/MFile.java index e0d3fd7604..d144f8cbf6 100644 --- a/cdm/core/src/main/java/thredds/inventory/MFile.java +++ b/cdm/core/src/main/java/thredds/inventory/MFile.java @@ -9,6 +9,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import javax.annotation.Nullable; /** * An abstraction for java.io.File / java.nio.file.Path @@ -95,4 +96,13 @@ default boolean isReadable() { * @param maxBytes the maximum number of bytes to copy */ void writeToStream(OutputStream outputStream, long offset, long maxBytes) throws IOException; + + /** + * Get child MFile of this MFile + * + * @param newFileName the relative file path of the new MFile + * @return the new MFile or null if the file can't be resolved + */ + @Nullable + MFile getChild(String newFileName); } diff --git a/cdm/core/src/main/java/thredds/inventory/MFileProvider.java b/cdm/core/src/main/java/thredds/inventory/MFileProvider.java index bb6dd417e2..6dbbec42a5 100644 --- a/cdm/core/src/main/java/thredds/inventory/MFileProvider.java +++ b/cdm/core/src/main/java/thredds/inventory/MFileProvider.java @@ -6,7 +6,7 @@ package thredds.inventory; import java.io.IOException; -import javax.annotation.Nullable; +import javax.annotation.Nonnull; /** * A Service Provider of {@link thredds.inventory.MFile}. @@ -22,12 +22,11 @@ default boolean canProvide(String location) { } /** - * Create an {@link thredds.inventory.MFile} from a given location if it exists and is readable, otherwise return - * null. + * Create an {@link thredds.inventory.MFile} from a given location, the file may or may not exist * * @param location location of a file or . * @return {@link thredds.inventory.MFile} */ - @Nullable + @Nonnull MFile create(String location) throws IOException; } diff --git a/cdm/core/src/main/java/thredds/inventory/MFiles.java b/cdm/core/src/main/java/thredds/inventory/MFiles.java index b07d5a99c1..c982da6952 100644 --- a/cdm/core/src/main/java/thredds/inventory/MFiles.java +++ b/cdm/core/src/main/java/thredds/inventory/MFiles.java @@ -7,6 +7,7 @@ import java.io.IOException; import java.util.ServiceLoader; +import javax.annotation.Nonnull; import javax.annotation.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,14 +23,13 @@ public class MFiles { private static final Logger logger = LoggerFactory.getLogger(NcmlReader.class); /** - * Create an {@link thredds.inventory.MFile} from a given location if it exists and is readable, otherwise return - * null. + * Create an {@link thredds.inventory.MFile} from a given location, the file may or may not exist * * @param location location of file (local or remote) to be used to back the MFile object * @return {@link thredds.inventory.MFile} */ - @Nullable - public static MFile create(String location) { + @Nonnull + public static MFile create(@Nonnull String location) { MFileProvider mFileProvider = null; // look for dynamically loaded MFileProviders @@ -40,12 +40,30 @@ public static MFile create(String location) { } } - MFile mfile = null; try { - mfile = mFileProvider != null ? mFileProvider.create(location) : MFileOS.getExistingFile(location); + if (mFileProvider != null) { + return mFileProvider.create(location); + } } catch (IOException ioe) { logger.error("Error creating MFile at {}.", location, ioe); } - return mfile; + return new MFileOS(location); + } + + /** + * Create an {@link thredds.inventory.MFile} from a given location if it exists, otherwise return + * null. + * + * @param location location of file (local or remote) to be used to back the MFile object + * @return {@link thredds.inventory.MFile} + */ + @Nullable + public static MFile createIfExists(String location) { + if (location == null) { + return null; + } + + final MFile mFile = create(location); + return mFile.exists() ? mFile : null; } } diff --git a/cdm/core/src/main/java/ucar/ma2/Array.java b/cdm/core/src/main/java/ucar/ma2/Array.java index 8fc516cc75..fc0b52d446 100644 --- a/cdm/core/src/main/java/ucar/ma2/Array.java +++ b/cdm/core/src/main/java/ucar/ma2/Array.java @@ -377,6 +377,61 @@ public static Array makeArrayRankPlusOne(Array org) { return factory(org.getDataType(), shape, org.getStorage()); } + /** + * Combine list of Arrays by copying the underlying Arrays into a single primitive array + * + * @param dataType the DataType + * @param shape the shape of the combined array + * @param arrays non-empty list of arrays of the same dataType to combine + * @return a new Array containing data from the arrays + * @throws IllegalArgumentException if arrays is empty or if it contains ArrayStructures with different Members + */ + public static Array factoryCopy(DataType dataType, int[] shape, List arrays) { + if (arrays.isEmpty()) { + throw new IllegalArgumentException("Expected a non-empty list of Arrays to combine"); + } + if (arrays.size() == 1) { + return factory(dataType, shape, arrays.get(0).getStorage()); + } + final long size = Index.computeSize(shape); + if (size > Integer.MAX_VALUE) { + throw new OutOfMemoryError("Could not combine Arrays"); + } + if (dataType == DataType.STRUCTURE) { + return combineArrayStructures(size, arrays); + } + return combinePrimitiveArrays(dataType, shape, arrays); + } + + private static Array combinePrimitiveArrays(DataType dataType, int[] shape, List arrays) { + final Array combinedArray = factory(dataType, shape); + + int start = 0; + for (Array array : arrays) { + Array.arraycopy(array, 0, combinedArray, start, (int) array.getSize()); + start += array.getSize(); + } + return combinedArray; + } + + private static Array combineArrayStructures(long size, List arrays) { + final StructureData[] combinedStructureData = new StructureData[(int) size]; + final StructureMembers members = ((ArrayStructure) arrays.get(0)).getStructureMembers(); + + if (arrays.stream().anyMatch(array -> !((ArrayStructure) array).getStructureMembers().equals(members))) { + throw new IllegalArgumentException("Expected ArrayStructures to be combined to have the same members"); + } + + int count = 0; + for (Array array : arrays) { + final ArrayStructure arrayStructure = (ArrayStructure) array; + for (StructureData structureData : arrayStructure) { + combinedStructureData[count++] = structureData; + } + } + return new ArrayStructureW(members, new int[] {count}, combinedStructureData); + } + ///////////////////////////////////////////////////// protected final DataType dataType; protected final Index indexCalc; diff --git a/cdm/core/src/main/java/ucar/ma2/ArrayBoolean.java b/cdm/core/src/main/java/ucar/ma2/ArrayBoolean.java index a2b5503e2a..6a198dfed3 100644 --- a/cdm/core/src/main/java/ucar/ma2/ArrayBoolean.java +++ b/cdm/core/src/main/java/ucar/ma2/ArrayBoolean.java @@ -87,16 +87,19 @@ public ArrayBoolean(int[] dimensions) { } /** create new Array with given indexImpl and same backing store */ + @Override protected Array createView(Index index) { return ArrayBoolean.factory(index, storage); } /* Get underlying primitive array storage. CAUTION! You may invalidate your warrentee! */ + @Override public Object getStorage() { return storage; } // copy from javaArray to storage using the iterator: used by factory( Object); + @Override protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { boolean[] ja = (boolean[]) javaArray; for (boolean aJa : ja) @@ -104,6 +107,7 @@ protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { } // copy to javaArray from storage using the iterator: used by copyToNDJavaArray; + @Override protected void copyTo1DJavaArray(IndexIterator iter, Object javaArray) { boolean[] ja = (boolean[]) javaArray; for (int i = 0; i < ja.length; i++) @@ -111,6 +115,7 @@ protected void copyTo1DJavaArray(IndexIterator iter, Object javaArray) { } /** Return the element class type */ + @Override public Class getElementType() { return boolean.class; } @@ -126,160 +131,196 @@ public void set(Index i, boolean value) { } /** not legal, throw ForbiddenConversionException */ + @Override public double getDouble(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setDouble(Index i, double value) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public float getFloat(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setFloat(Index i, float value) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public long getLong(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setLong(Index i, long value) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public int getInt(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setInt(Index i, int value) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public short getShort(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setShort(Index i, short value) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public byte getByte(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setByte(Index i, byte value) { throw new ForbiddenConversionException(); } + @Override public boolean getBoolean(Index i) { return storage[i.currentElement()]; } + @Override public void setBoolean(Index i, boolean value) { storage[i.currentElement()] = value; } /** not legal, throw ForbiddenConversionException */ + @Override public char getChar(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setChar(Index i, char value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(Index i) { return storage[i.currentElement()]; } + @Override public void setObject(Index i, Object value) { storage[i.currentElement()] = (Boolean) value; } // package private : mostly for iterators + @Override public double getDouble(int index) { throw new ForbiddenConversionException(); } + @Override public void setDouble(int index, double value) { throw new ForbiddenConversionException(); } + @Override public float getFloat(int index) { throw new ForbiddenConversionException(); } + @Override public void setFloat(int index, float value) { throw new ForbiddenConversionException(); } + @Override public long getLong(int index) { throw new ForbiddenConversionException(); } + @Override public void setLong(int index, long value) { throw new ForbiddenConversionException(); } + @Override public int getInt(int index) { throw new ForbiddenConversionException(); } + @Override public void setInt(int index, int value) { throw new ForbiddenConversionException(); } + @Override public short getShort(int index) { throw new ForbiddenConversionException(); } + @Override public void setShort(int index, short value) { throw new ForbiddenConversionException(); } + @Override public byte getByte(int index) { throw new ForbiddenConversionException(); } + @Override public void setByte(int index, byte value) { throw new ForbiddenConversionException(); } + @Override public char getChar(int index) { throw new ForbiddenConversionException(); } + @Override public void setChar(int index, char value) { throw new ForbiddenConversionException(); } + @Override public boolean getBoolean(int index) { return storage[index]; } + @Override public void setBoolean(int index, boolean value) { storage[index] = value; } + @Override public Object getObject(int index) { return getBoolean(index); } + @Override public void setObject(int index, Object value) { storage[index] = (Boolean) value; } diff --git a/cdm/core/src/main/java/ucar/ma2/ArrayByte.java b/cdm/core/src/main/java/ucar/ma2/ArrayByte.java index f860e08fa5..5937ee4d37 100644 --- a/cdm/core/src/main/java/ucar/ma2/ArrayByte.java +++ b/cdm/core/src/main/java/ucar/ma2/ArrayByte.java @@ -88,15 +88,18 @@ public ArrayByte(int[] dimensions, boolean isUnsigned) { storage = new byte[(int) ima.getSize()]; } + @Override protected Array createView(Index index) { return ArrayByte.factory(index, isUnsigned(), storage); } + @Override public Object getStorage() { return storage; } // copy from javaArray to storage using the iterator: used by factory( Object); + @Override protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { byte[] ja = (byte[]) javaArray; for (byte aJa : ja) @@ -104,6 +107,7 @@ protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { } // copy to javaArray from storage using the iterator: used by copyToNDJavaArray; + @Override protected void copyTo1DJavaArray(IndexIterator iter, Object javaArray) { byte[] ja = (byte[]) javaArray; for (int i = 0; i < ja.length; i++) @@ -115,6 +119,7 @@ public ByteBuffer getDataAsByteBuffer() { return getDataAsByteBuffer(null); } + @Override public ByteBuffer getDataAsByteBuffer(ByteOrder order) {// order irrelevant here return ByteBuffer.wrap((byte[]) get1DJavaArray(getDataType())); } @@ -122,6 +127,7 @@ public ByteBuffer getDataAsByteBuffer(ByteOrder order) {// order irrelevant here /** * Return the element class type */ + @Override public Class getElementType() { return byte.class; } @@ -146,64 +152,78 @@ public void set(Index i, byte value) { storage[i.currentElement()] = value; } + @Override public double getDouble(Index i) { byte val = storage[i.currentElement()]; return (double) (isUnsigned() ? DataType.unsignedByteToShort(val) : val); } + @Override public void setDouble(Index i, double value) { storage[i.currentElement()] = (byte) value; } + @Override public float getFloat(Index i) { byte val = storage[i.currentElement()]; return (float) (isUnsigned() ? DataType.unsignedByteToShort(val) : val); } + @Override public void setFloat(Index i, float value) { storage[i.currentElement()] = (byte) value; } + @Override public long getLong(Index i) { byte val = storage[i.currentElement()]; return (long) (isUnsigned() ? DataType.unsignedByteToShort(val) : val); } + @Override public void setLong(Index i, long value) { storage[i.currentElement()] = (byte) value; } + @Override public int getInt(Index i) { byte val = storage[i.currentElement()]; return (int) (isUnsigned() ? DataType.unsignedByteToShort(val) : val); } + @Override public void setInt(Index i, int value) { storage[i.currentElement()] = (byte) value; } + @Override public short getShort(Index i) { byte val = storage[i.currentElement()]; return (isUnsigned() ? DataType.unsignedByteToShort(val) : val); } + @Override public void setShort(Index i, short value) { storage[i.currentElement()] = (byte) value; } + @Override public byte getByte(Index i) { return storage[i.currentElement()]; } + @Override public void setByte(Index i, byte value) { storage[i.currentElement()] = value; } + @Override public char getChar(Index i) { byte val = storage[i.currentElement()]; return (char) (isUnsigned() ? DataType.unsignedByteToShort(val) : val); } + @Override public void setChar(Index i, char value) { storage[i.currentElement()] = (byte) value; } @@ -211,6 +231,7 @@ public void setChar(Index i, char value) { /** * not legal, throw ForbiddenConversionException */ + @Override public boolean getBoolean(Index i) { throw new ForbiddenConversionException(); } @@ -218,93 +239,114 @@ public boolean getBoolean(Index i) { /** * not legal, throw ForbiddenConversionException */ + @Override public void setBoolean(Index i, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(Index i) { return storage[i.currentElement()]; } + @Override public void setObject(Index i, Object value) { storage[i.currentElement()] = ((Number) value).byteValue(); } // package private : mostly for iterators + @Override public double getDouble(int index) { byte val = storage[index]; return (double) (isUnsigned() ? DataType.unsignedByteToShort(val) : val); } + @Override public void setDouble(int index, double value) { storage[index] = (byte) value; } + @Override public float getFloat(int index) { byte val = storage[index]; return (float) (isUnsigned() ? DataType.unsignedByteToShort(val) : val); } + @Override public void setFloat(int index, float value) { storage[index] = (byte) value; } + @Override public long getLong(int index) { byte val = storage[index]; return (long) (isUnsigned() ? DataType.unsignedByteToShort(val) : val); } + @Override public void setLong(int index, long value) { storage[index] = (byte) value; } + @Override public int getInt(int index) { byte val = storage[index]; return (int) (isUnsigned() ? DataType.unsignedByteToShort(val) : val); } + @Override public void setInt(int index, int value) { storage[index] = (byte) value; } + @Override public short getShort(int index) { byte val = storage[index]; return (isUnsigned() ? DataType.unsignedByteToShort(val) : val); } + @Override public void setShort(int index, short value) { storage[index] = (byte) value; } + @Override public byte getByte(int index) { return storage[index]; } + @Override public void setByte(int index, byte value) { storage[index] = value; } + @Override public char getChar(int index) { byte val = storage[index]; return (char) (isUnsigned() ? DataType.unsignedByteToShort(val) : val); } + @Override public void setChar(int index, char value) { storage[index] = (byte) value; } + @Override public boolean getBoolean(int index) { throw new ForbiddenConversionException(); } + @Override public void setBoolean(int index, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(int index) { return getByte(index); } + @Override public void setObject(int index, Object value) { storage[index] = ((Number) value).byteValue(); } diff --git a/cdm/core/src/main/java/ucar/ma2/ArrayChar.java b/cdm/core/src/main/java/ucar/ma2/ArrayChar.java index 78e624ba18..7542158923 100644 --- a/cdm/core/src/main/java/ucar/ma2/ArrayChar.java +++ b/cdm/core/src/main/java/ucar/ma2/ArrayChar.java @@ -101,16 +101,19 @@ public ArrayChar(String s) { /** * create new Array with given indexImpl and same backing store */ + @Override protected Array createView(Index index) { return ArrayChar.factory(index, storage); } // used only by copyTo1DJavaArray + @Override public Object getStorage() { return storage; } // copy from javaArray to storage using the iterator: used by factory( Object); + @Override protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { char[] ja = (char[]) javaArray; for (char aJa : ja) @@ -118,6 +121,7 @@ protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { } // copy to javaArray from storage using the iterator: used by copyToNDJavaArray; + @Override protected void copyTo1DJavaArray(IndexIterator iter, Object javaArray) { char[] ja = (char[]) javaArray; for (int i = 0; i < ja.length; i++) @@ -143,6 +147,7 @@ public ByteBuffer getDataAsByteBuffer() { /** * Return the element class type */ + @Override public Class getElementType() { return char.class; } @@ -161,58 +166,72 @@ public void set(Index i, char value) { storage[i.currentElement()] = value; } + @Override public double getDouble(Index i) { return (double) storage[i.currentElement()]; } + @Override public void setDouble(Index i, double value) { storage[i.currentElement()] = (char) value; } + @Override public float getFloat(Index i) { return (float) storage[i.currentElement()]; } + @Override public void setFloat(Index i, float value) { storage[i.currentElement()] = (char) value; } + @Override public long getLong(Index i) { return (long) storage[i.currentElement()]; } + @Override public void setLong(Index i, long value) { storage[i.currentElement()] = (char) value; } + @Override public int getInt(Index i) { return (int) storage[i.currentElement()]; } + @Override public void setInt(Index i, int value) { storage[i.currentElement()] = (char) value; } + @Override public short getShort(Index i) { return (short) storage[i.currentElement()]; } + @Override public void setShort(Index i, short value) { storage[i.currentElement()] = (char) value; } + @Override public byte getByte(Index i) { return (byte) storage[i.currentElement()]; } + @Override public void setByte(Index i, byte value) { storage[i.currentElement()] = (char) value; } + @Override public char getChar(Index i) { return storage[i.currentElement()]; } + @Override public void setChar(Index i, char value) { storage[i.currentElement()] = value; } @@ -220,6 +239,7 @@ public void setChar(Index i, char value) { /** * not legal, throw ForbiddenConversionException */ + @Override public boolean getBoolean(Index i) { throw new ForbiddenConversionException(); } @@ -227,14 +247,17 @@ public boolean getBoolean(Index i) { /** * not legal, throw ForbiddenConversionException */ + @Override public void setBoolean(Index i, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(Index i) { return storage[i.currentElement()]; } + @Override public void setObject(Index i, Object value) { storage[i.currentElement()] = (Character) value; } @@ -420,74 +443,92 @@ public void setString(Index ima, String val) { // package private : mostly for iterators + @Override public double getDouble(int index) { return (double) storage[index]; } + @Override public void setDouble(int index, double value) { storage[index] = (char) value; } + @Override public float getFloat(int index) { return storage[index]; } + @Override public void setFloat(int index, float value) { storage[index] = (char) value; } + @Override public long getLong(int index) { return (long) storage[index]; } + @Override public void setLong(int index, long value) { storage[index] = (char) value; } + @Override public int getInt(int index) { return (int) storage[index]; } + @Override public void setInt(int index, int value) { storage[index] = (char) value; } + @Override public short getShort(int index) { return (short) storage[index]; } + @Override public void setShort(int index, short value) { storage[index] = (char) value; } + @Override public byte getByte(int index) { return (byte) storage[index]; } + @Override public void setByte(int index, byte value) { storage[index] = (char) (value & 0xFF); } + @Override public char getChar(int index) { return storage[index]; } + @Override public void setChar(int index, char value) { storage[index] = value; } + @Override public boolean getBoolean(int index) { throw new ForbiddenConversionException(); } + @Override public void setBoolean(int index, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(int index) { return getChar(index); } + @Override public void setObject(int index, Object value) { storage[index] = (Character) value; } diff --git a/cdm/core/src/main/java/ucar/ma2/ArrayDouble.java b/cdm/core/src/main/java/ucar/ma2/ArrayDouble.java index 215db55acc..7433f957cb 100644 --- a/cdm/core/src/main/java/ucar/ma2/ArrayDouble.java +++ b/cdm/core/src/main/java/ucar/ma2/ArrayDouble.java @@ -69,6 +69,7 @@ public ArrayDouble(int[] shape) { /** create new Array with given indexImpl and the same backing store */ + @Override protected Array createView(Index index) { return ArrayDouble.factory(index, storageD); } @@ -91,11 +92,13 @@ protected Array createView(Index index) { } /* Get underlying primitive array storage. CAUTION! You may invalidate your warrentee! */ + @Override public Object getStorage() { return storageD; } // copy from javaArray to storage using the iterator: used by factory( Object); + @Override protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { double[] ja = (double[]) javaArray; for (double aJa : ja) @@ -103,12 +106,14 @@ protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { } // copy to javaArray from storage using the iterator: used by copyToNDJavaArray; + @Override protected void copyTo1DJavaArray(IndexIterator iter, Object javaArray) { double[] ja = (double[]) javaArray; for (int i = 0; i < ja.length; i++) ja[i] = iter.getDoubleNext(); } + @Override public ByteBuffer getDataAsByteBuffer() { ByteBuffer bb = ByteBuffer.allocate((int) (8 * getSize())); DoubleBuffer ib = bb.asDoubleBuffer(); @@ -117,6 +122,7 @@ public ByteBuffer getDataAsByteBuffer() { } /** Return the element class type */ + @Override public Class getElementType() { return double.class; } @@ -131,149 +137,185 @@ public void set(Index i, double value) { storageD[i.currentElement()] = value; } + @Override public double getDouble(Index i) { return storageD[i.currentElement()]; } + @Override public void setDouble(Index i, double value) { storageD[i.currentElement()] = value; } + @Override public float getFloat(Index i) { return (float) storageD[i.currentElement()]; } + @Override public void setFloat(Index i, float value) { storageD[i.currentElement()] = (double) value; } + @Override public long getLong(Index i) { return (long) storageD[i.currentElement()]; } + @Override public void setLong(Index i, long value) { storageD[i.currentElement()] = (double) value; } + @Override public int getInt(Index i) { return (int) storageD[i.currentElement()]; } + @Override public void setInt(Index i, int value) { storageD[i.currentElement()] = (double) value; } + @Override public short getShort(Index i) { return (short) storageD[i.currentElement()]; } + @Override public void setShort(Index i, short value) { storageD[i.currentElement()] = (double) value; } + @Override public byte getByte(Index i) { return (byte) storageD[i.currentElement()]; } + @Override public void setByte(Index i, byte value) { storageD[i.currentElement()] = (double) value; } + @Override public char getChar(Index i) { return (char) storageD[i.currentElement()]; } + @Override public void setChar(Index i, char value) { storageD[i.currentElement()] = (double) value; } /** not legal, throw ForbiddenConversionException */ + @Override public boolean getBoolean(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setBoolean(Index i, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(Index i) { return storageD[i.currentElement()]; } + @Override public void setObject(Index i, Object value) { storageD[i.currentElement()] = ((Number) value).doubleValue(); } // trusted, assumes that individual dimension lengths have been checked + @Override public double getDouble(int index) { return storageD[index]; } + @Override public void setDouble(int index, double value) { storageD[index] = value; } + @Override public float getFloat(int index) { return (float) storageD[index]; } + @Override public void setFloat(int index, float value) { storageD[index] = (double) value; } + @Override public long getLong(int index) { return (long) storageD[index]; } + @Override public void setLong(int index, long value) { storageD[index] = (double) value; } + @Override public int getInt(int index) { return (int) storageD[index]; } + @Override public void setInt(int index, int value) { storageD[index] = (double) value; } + @Override public short getShort(int index) { return (short) storageD[index]; } + @Override public void setShort(int index, short value) { storageD[index] = (double) value; } + @Override public byte getByte(int index) { return (byte) storageD[index]; } + @Override public void setByte(int index, byte value) { storageD[index] = (double) value; } + @Override public char getChar(int index) { return (char) storageD[index]; } + @Override public void setChar(int index, char value) { storageD[index] = (double) value; } + @Override public boolean getBoolean(int index) { throw new ForbiddenConversionException(); } + @Override public void setBoolean(int index, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(int index) { return getDouble(index); } + @Override public void setObject(int index, Object value) { storageD[index] = ((Number) value).doubleValue(); } diff --git a/cdm/core/src/main/java/ucar/ma2/ArrayFloat.java b/cdm/core/src/main/java/ucar/ma2/ArrayFloat.java index f3e733fe37..d820c5cdfd 100644 --- a/cdm/core/src/main/java/ucar/ma2/ArrayFloat.java +++ b/cdm/core/src/main/java/ucar/ma2/ArrayFloat.java @@ -89,16 +89,19 @@ public ArrayFloat(int[] dimensions) { } /** create new Array with given indexImpl and same backing store */ + @Override protected Array createView(Index index) { return ArrayFloat.factory(index, storage); } /* Get underlying primitive array storage. CAUTION! You may invalidate your warrentee! */ + @Override public Object getStorage() { return storage; } // copy from javaArray to storage using the iterator: used by factory( Object); + @Override protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { float[] ja = (float[]) javaArray; for (float aJa : ja) @@ -106,12 +109,14 @@ protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { } // copy to javaArray from storage using the iterator: used by copyToNDJavaArray; + @Override protected void copyTo1DJavaArray(IndexIterator iter, Object javaArray) { float[] ja = (float[]) javaArray; for (int i = 0; i < ja.length; i++) ja[i] = iter.getFloatNext(); } + @Override public ByteBuffer getDataAsByteBuffer() { ByteBuffer bb = ByteBuffer.allocate((int) (4 * getSize())); FloatBuffer ib = bb.asFloatBuffer(); @@ -120,6 +125,7 @@ public ByteBuffer getDataAsByteBuffer() { } /** Return the element class type */ + @Override public Class getElementType() { return float.class; } @@ -134,149 +140,185 @@ public void set(Index i, float value) { storage[i.currentElement()] = value; } + @Override public double getDouble(Index i) { return (double) storage[i.currentElement()]; } + @Override public void setDouble(Index i, double value) { storage[i.currentElement()] = (float) value; } + @Override public float getFloat(Index i) { return storage[i.currentElement()]; } + @Override public void setFloat(Index i, float value) { storage[i.currentElement()] = value; } + @Override public long getLong(Index i) { return (long) storage[i.currentElement()]; } + @Override public void setLong(Index i, long value) { storage[i.currentElement()] = (float) value; } + @Override public int getInt(Index i) { return (int) storage[i.currentElement()]; } + @Override public void setInt(Index i, int value) { storage[i.currentElement()] = (float) value; } + @Override public short getShort(Index i) { return (short) storage[i.currentElement()]; } + @Override public void setShort(Index i, short value) { storage[i.currentElement()] = (float) value; } + @Override public byte getByte(Index i) { return (byte) storage[i.currentElement()]; } + @Override public void setByte(Index i, byte value) { storage[i.currentElement()] = (float) value; } + @Override public char getChar(Index i) { return (char) storage[i.currentElement()]; } + @Override public void setChar(Index i, char value) { storage[i.currentElement()] = (float) value; } /** not legal, throw ForbiddenConversionException */ + @Override public boolean getBoolean(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setBoolean(Index i, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(Index i) { return storage[i.currentElement()]; } + @Override public void setObject(Index i, Object value) { storage[i.currentElement()] = ((Number) value).floatValue(); } // package private : mostly for iterators + @Override public double getDouble(int index) { return (double) storage[index]; } + @Override public void setDouble(int index, double value) { storage[index] = (float) value; } + @Override public float getFloat(int index) { return storage[index]; } + @Override public void setFloat(int index, float value) { storage[index] = value; } + @Override public long getLong(int index) { return (long) storage[index]; } + @Override public void setLong(int index, long value) { storage[index] = (float) value; } + @Override public int getInt(int index) { return (int) storage[index]; } + @Override public void setInt(int index, int value) { storage[index] = (float) value; } + @Override public short getShort(int index) { return (short) storage[index]; } + @Override public void setShort(int index, short value) { storage[index] = (float) value; } + @Override public byte getByte(int index) { return (byte) storage[index]; } + @Override public void setByte(int index, byte value) { storage[index] = (float) value; } + @Override public char getChar(int index) { return (char) storage[index]; } + @Override public void setChar(int index, char value) { storage[index] = (float) value; } + @Override public boolean getBoolean(int index) { throw new ForbiddenConversionException(); } + @Override public void setBoolean(int index, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(int index) { return getFloat(index); } + @Override public void setObject(int index, Object value) { storage[index] = ((Number) value).floatValue(); } diff --git a/cdm/core/src/main/java/ucar/ma2/ArrayInt.java b/cdm/core/src/main/java/ucar/ma2/ArrayInt.java index 4ea7b951fa..b46faa2687 100644 --- a/cdm/core/src/main/java/ucar/ma2/ArrayInt.java +++ b/cdm/core/src/main/java/ucar/ma2/ArrayInt.java @@ -93,16 +93,19 @@ public ArrayInt(int[] dimensions, boolean isUnsigned) { /** * create new Array with given indexImpl and same backing store */ + @Override protected Array createView(Index index) { return ArrayInt.factory(index, isUnsigned(), storage); } /* Get underlying primitive array storage. CAUTION! You may invalidate your warrentee! */ + @Override public Object getStorage() { return storage; } // copy from javaArray to storage using the iterator: used by factory( Object); + @Override protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { int[] ja = (int[]) javaArray; for (int aJa : ja) @@ -110,16 +113,19 @@ protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { } // copy to javaArray from storage using the iterator: used by copyToNDJavaArray; + @Override protected void copyTo1DJavaArray(IndexIterator iter, Object javaArray) { int[] ja = (int[]) javaArray; for (int i = 0; i < ja.length; i++) ja[i] = iter.getIntNext(); } + @Override public ByteBuffer getDataAsByteBuffer() { return getDataAsByteBuffer(null); } + @Override public ByteBuffer getDataAsByteBuffer(ByteOrder order) { ByteBuffer bb = super.getDataAsByteBuffer((int) (4 * getSize()), order); IntBuffer ib = bb.asIntBuffer(); @@ -130,6 +136,7 @@ public ByteBuffer getDataAsByteBuffer(ByteOrder order) { /** * Return the element class type */ + @Override public Class getElementType() { return int.class; } @@ -154,61 +161,75 @@ public void set(Index i, int value) { storage[i.currentElement()] = value; } + @Override public double getDouble(Index i) { int val = storage[i.currentElement()]; return (double) (isUnsigned() ? DataType.unsignedIntToLong(val) : val); } + @Override public void setDouble(Index i, double value) { storage[i.currentElement()] = (int) value; } + @Override public float getFloat(Index i) { int val = storage[i.currentElement()]; return (float) (isUnsigned() ? DataType.unsignedIntToLong(val) : val); } + @Override public void setFloat(Index i, float value) { storage[i.currentElement()] = (int) value; } + @Override public long getLong(Index i) { int val = storage[i.currentElement()]; return (isUnsigned() ? DataType.unsignedIntToLong(val) : val); } + @Override public void setLong(Index i, long value) { storage[i.currentElement()] = (int) value; } + @Override public int getInt(Index i) { return storage[i.currentElement()]; } + @Override public void setInt(Index i, int value) { storage[i.currentElement()] = value; } + @Override public short getShort(Index i) { return (short) storage[i.currentElement()]; } + @Override public void setShort(Index i, short value) { storage[i.currentElement()] = (int) value; } + @Override public byte getByte(Index i) { return (byte) storage[i.currentElement()]; } + @Override public void setByte(Index i, byte value) { storage[i.currentElement()] = (int) value; } + @Override public char getChar(Index i) { return (char) storage[i.currentElement()]; } + @Override public void setChar(Index i, char value) { storage[i.currentElement()] = (int) value; } @@ -216,6 +237,7 @@ public void setChar(Index i, char value) { /** * not legal, throw ForbiddenConversionException */ + @Override public boolean getBoolean(Index i) { throw new ForbiddenConversionException(); } @@ -223,90 +245,111 @@ public boolean getBoolean(Index i) { /** * not legal, throw ForbiddenConversionException */ + @Override public void setBoolean(Index i, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(Index i) { return storage[i.currentElement()]; } + @Override public void setObject(Index i, Object value) { storage[i.currentElement()] = ((Number) value).intValue(); } // package private : mostly for iterators + @Override public double getDouble(int index) { int val = storage[index]; return (double) (isUnsigned() ? DataType.unsignedIntToLong(val) : val); } + @Override public void setDouble(int index, double value) { storage[index] = (int) value; } + @Override public float getFloat(int index) { int val = storage[index]; return (float) (isUnsigned() ? DataType.unsignedIntToLong(val) : val); } + @Override public void setFloat(int index, float value) { storage[index] = (int) value; } + @Override public long getLong(int index) { int val = storage[index]; return (isUnsigned() ? DataType.unsignedIntToLong(val) : val); } + @Override public void setLong(int index, long value) { storage[index] = (int) value; } + @Override public int getInt(int index) { return storage[index]; } + @Override public void setInt(int index, int value) { storage[index] = value; } + @Override public short getShort(int index) { return (short) storage[index]; } + @Override public void setShort(int index, short value) { storage[index] = (int) value; } + @Override public byte getByte(int index) { return (byte) storage[index]; } + @Override public void setByte(int index, byte value) { storage[index] = (int) value; } + @Override public char getChar(int index) { return (char) storage[index]; } + @Override public void setChar(int index, char value) { storage[index] = (int) value; } + @Override public boolean getBoolean(int index) { throw new ForbiddenConversionException(); } + @Override public void setBoolean(int index, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(int index) { return getInt(index); } + @Override public void setObject(int index, Object value) { storage[index] = ((Number) value).intValue(); } diff --git a/cdm/core/src/main/java/ucar/ma2/ArrayLong.java b/cdm/core/src/main/java/ucar/ma2/ArrayLong.java index bc672584e1..c5a5eaba1d 100644 --- a/cdm/core/src/main/java/ucar/ma2/ArrayLong.java +++ b/cdm/core/src/main/java/ucar/ma2/ArrayLong.java @@ -90,16 +90,19 @@ public ArrayLong(int[] dimensions, boolean isUnsigned) { } /** create new Array with given indexImpl and same backing store */ + @Override protected Array createView(Index index) { return ArrayLong.factory(index, isUnsigned(), storage); } /* Get underlying primitive array storage. CAUTION! You may invalidate your warrentee! */ + @Override public Object getStorage() { return storage; } // copy from javaArray to storage using the iterator: used by factory( Object); + @Override protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { long[] ja = (long[]) javaArray; for (long aJa : ja) @@ -107,16 +110,19 @@ protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { } // copy to javaArray from storage using the iterator: used by copyToNDJavaArray; + @Override protected void copyTo1DJavaArray(IndexIterator iter, Object javaArray) { long[] ja = (long[]) javaArray; for (int i = 0; i < ja.length; i++) ja[i] = iter.getLongNext(); } + @Override public ByteBuffer getDataAsByteBuffer() { return getDataAsByteBuffer(null); } + @Override public ByteBuffer getDataAsByteBuffer(ByteOrder order) { ByteBuffer bb = super.getDataAsByteBuffer((int) (8 * getSize()), order); LongBuffer ib = bb.asLongBuffer(); @@ -125,6 +131,7 @@ public ByteBuffer getDataAsByteBuffer(ByteOrder order) { } /** Return the element class type */ + @Override public Class getElementType() { return long.class; } @@ -139,149 +146,185 @@ public void set(Index i, long value) { storage[i.currentElement()] = value; } + @Override public double getDouble(Index i) { return (double) storage[i.currentElement()]; } + @Override public void setDouble(Index i, double value) { storage[i.currentElement()] = (long) value; } + @Override public float getFloat(Index i) { return (float) storage[i.currentElement()]; } + @Override public void setFloat(Index i, float value) { storage[i.currentElement()] = (long) value; } + @Override public long getLong(Index i) { return storage[i.currentElement()]; } + @Override public void setLong(Index i, long value) { storage[i.currentElement()] = value; } + @Override public int getInt(Index i) { return (int) storage[i.currentElement()]; } + @Override public void setInt(Index i, int value) { storage[i.currentElement()] = (long) value; } + @Override public short getShort(Index i) { return (short) storage[i.currentElement()]; } + @Override public void setShort(Index i, short value) { storage[i.currentElement()] = (long) value; } + @Override public byte getByte(Index i) { return (byte) storage[i.currentElement()]; } + @Override public void setByte(Index i, byte value) { storage[i.currentElement()] = (long) value; } + @Override public char getChar(Index i) { return (char) storage[i.currentElement()]; } + @Override public void setChar(Index i, char value) { storage[i.currentElement()] = (long) value; } /** not legal, throw ForbiddenConversionException */ + @Override public boolean getBoolean(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setBoolean(Index i, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(Index i) { return storage[i.currentElement()]; } + @Override public void setObject(Index i, Object value) { storage[i.currentElement()] = ((Number) value).longValue(); } // package private : mostly for iterators + @Override public double getDouble(int index) { return (double) storage[index]; } + @Override public void setDouble(int index, double value) { storage[index] = (long) value; } + @Override public float getFloat(int index) { return storage[index]; } + @Override public void setFloat(int index, float value) { storage[index] = (long) value; } + @Override public long getLong(int index) { return storage[index]; } + @Override public void setLong(int index, long value) { storage[index] = value; } + @Override public int getInt(int index) { return (int) storage[index]; } + @Override public void setInt(int index, int value) { storage[index] = (long) value; } + @Override public short getShort(int index) { return (short) storage[index]; } + @Override public void setShort(int index, short value) { storage[index] = (long) value; } + @Override public byte getByte(int index) { return (byte) storage[index]; } + @Override public void setByte(int index, byte value) { storage[index] = (long) value; } + @Override public char getChar(int index) { return (char) storage[index]; } + @Override public void setChar(int index, char value) { storage[index] = (long) value; } + @Override public boolean getBoolean(int index) { throw new ForbiddenConversionException(); } + @Override public void setBoolean(int index, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(int index) { return getLong(index); } + @Override public void setObject(int index, Object value) { storage[index] = ((Number) value).longValue(); } diff --git a/cdm/core/src/main/java/ucar/ma2/ArrayObject.java b/cdm/core/src/main/java/ucar/ma2/ArrayObject.java index 20d513b69d..10598eaf27 100644 --- a/cdm/core/src/main/java/ucar/ma2/ArrayObject.java +++ b/cdm/core/src/main/java/ucar/ma2/ArrayObject.java @@ -105,6 +105,7 @@ public ArrayObject(DataType dtype, Class elementType, boolean isVlen, int[] shap } /** create new Array with given indexImpl and the same backing store */ + @Override protected Array createView(Index index) { return ArrayObject.factory(dataType, elementType, isVlen, index, storage); } @@ -117,11 +118,13 @@ public Array copy() { } /** Get underlying primitive array storage. CAUTION! You may invalidate your warrentee! */ + @Override public Object getStorage() { return storage; } // copy from javaArray to storage using the iterator: used by factory( Object); + @Override protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { Object[] ja = (Object[]) javaArray; for (Object aJa : ja) @@ -129,6 +132,7 @@ protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { } // copy to javaArray from storage using the iterator: used by copyToNDJavaArray; + @Override protected void copyTo1DJavaArray(IndexIterator iter, Object javaArray) { Object[] ja = (Object[]) javaArray; for (int i = 0; i < ja.length; i++) @@ -147,163 +151,199 @@ public boolean isVlen() { } /** not legal, throw ForbiddenConversionException */ + @Override public double getDouble(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setDouble(Index i, double value) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public float getFloat(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setFloat(Index i, float value) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public long getLong(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setLong(Index i, long value) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public int getInt(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setInt(Index i, int value) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public short getShort(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setShort(Index i, short value) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public byte getByte(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setByte(Index i, byte value) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public boolean getBoolean(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setBoolean(Index i, boolean value) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public char getChar(Index i) { throw new ForbiddenConversionException(); } /** not legal, throw ForbiddenConversionException */ + @Override public void setChar(Index i, char value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(Index i) { return storage[i.currentElement()]; } + @Override public void setObject(Index i, Object value) { storage[i.currentElement()] = value; } // trusted, assumes that individual dimension lengths have been checked // package private : mostly for iterators + @Override public double getDouble(int index) { throw new ForbiddenConversionException(); } + @Override public void setDouble(int index, double value) { throw new ForbiddenConversionException(); } + @Override public float getFloat(int index) { throw new ForbiddenConversionException(); } + @Override public void setFloat(int index, float value) { throw new ForbiddenConversionException(); } + @Override public long getLong(int index) { throw new ForbiddenConversionException(); } + @Override public void setLong(int index, long value) { throw new ForbiddenConversionException(); } + @Override public int getInt(int index) { throw new ForbiddenConversionException(); } + @Override public void setInt(int index, int value) { throw new ForbiddenConversionException(); } + @Override public short getShort(int index) { throw new ForbiddenConversionException(); } + @Override public void setShort(int index, short value) { throw new ForbiddenConversionException(); } + @Override public byte getByte(int index) { throw new ForbiddenConversionException(); } + @Override public void setByte(int index, byte value) { throw new ForbiddenConversionException(); } + @Override public char getChar(int index) { throw new ForbiddenConversionException(); } + @Override public void setChar(int index, char value) { throw new ForbiddenConversionException(); } + @Override public boolean getBoolean(int index) { throw new ForbiddenConversionException(); } + @Override public void setBoolean(int index, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(int index) { return storage[index]; } + @Override public void setObject(int index, Object value) { storage[index] = value; } diff --git a/cdm/core/src/main/java/ucar/ma2/ArrayRagged.java b/cdm/core/src/main/java/ucar/ma2/ArrayRagged.java index 4880cc79fa..cf4ad6e703 100644 --- a/cdm/core/src/main/java/ucar/ma2/ArrayRagged.java +++ b/cdm/core/src/main/java/ucar/ma2/ArrayRagged.java @@ -17,6 +17,7 @@ protected ArrayRagged(int[] shape) { } + @Override public Class getElementType() { return null; // To change body of implemented methods use File | Settings | File Templates. } @@ -24,20 +25,24 @@ public Class getElementType() { /** * DO NOT USE, throws UnsupportedOperationException */ + @Override protected Array createView(Index index) { if (index.getSize() == getSize()) return this; throw new UnsupportedOperationException(); } + @Override public Object getStorage() { return null; // To change body of implemented methods use File | Settings | File Templates. }// used to create Array from java array + @Override protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { // To change body of implemented methods use File | Settings | File Templates. } + @Override protected void copyTo1DJavaArray(IndexIterator iter, Object javaArray) { // To change body of implemented methods use File | Settings | File Templates. } @@ -47,6 +52,7 @@ protected void copyTo1DJavaArray(IndexIterator iter, Object javaArray) { /** * DO NOT USE, throws UnsupportedOperationException */ + @Override public Array copy() { throw new UnsupportedOperationException(); } @@ -54,6 +60,7 @@ public Array copy() { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public double getDouble(Index i) { throw new ForbiddenConversionException(); } @@ -61,6 +68,7 @@ public double getDouble(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setDouble(Index i, double value) { throw new ForbiddenConversionException(); } @@ -68,6 +76,7 @@ public void setDouble(Index i, double value) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public float getFloat(Index i) { throw new ForbiddenConversionException(); } @@ -75,6 +84,7 @@ public float getFloat(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setFloat(Index i, float value) { throw new ForbiddenConversionException(); } @@ -82,6 +92,7 @@ public void setFloat(Index i, float value) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public long getLong(Index i) { throw new ForbiddenConversionException(); } @@ -89,6 +100,7 @@ public long getLong(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setLong(Index i, long value) { throw new ForbiddenConversionException(); } @@ -96,6 +108,7 @@ public void setLong(Index i, long value) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public int getInt(Index i) { throw new ForbiddenConversionException(); } @@ -103,6 +116,7 @@ public int getInt(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setInt(Index i, int value) { throw new ForbiddenConversionException(); } @@ -110,6 +124,7 @@ public void setInt(Index i, int value) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public short getShort(Index i) { throw new ForbiddenConversionException(); } @@ -117,6 +132,7 @@ public short getShort(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setShort(Index i, short value) { throw new ForbiddenConversionException(); } @@ -124,6 +140,7 @@ public void setShort(Index i, short value) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public byte getByte(Index i) { throw new ForbiddenConversionException(); } @@ -131,6 +148,7 @@ public byte getByte(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setByte(Index i, byte value) { throw new ForbiddenConversionException(); } @@ -138,6 +156,7 @@ public void setByte(Index i, byte value) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public boolean getBoolean(Index i) { throw new ForbiddenConversionException(); } @@ -145,14 +164,17 @@ public boolean getBoolean(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setBoolean(Index i, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(Index ima) { return null; // To change body of implemented methods use File | Settings | File Templates. } + @Override public void setObject(Index ima, Object value) { // To change body of implemented methods use File | Settings | File Templates. } @@ -160,6 +182,7 @@ public void setObject(Index ima, Object value) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public char getChar(Index i) { throw new ForbiddenConversionException(); } @@ -167,80 +190,99 @@ public char getChar(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setChar(Index i, char value) { throw new ForbiddenConversionException(); } // trusted, assumes that individual dimension lengths have been checked // package private : mostly for iterators + @Override public double getDouble(int index) { throw new ForbiddenConversionException(); } + @Override public void setDouble(int index, double value) { throw new ForbiddenConversionException(); } + @Override public float getFloat(int index) { throw new ForbiddenConversionException(); } + @Override public void setFloat(int index, float value) { throw new ForbiddenConversionException(); } + @Override public long getLong(int index) { throw new ForbiddenConversionException(); } + @Override public void setLong(int index, long value) { throw new ForbiddenConversionException(); } + @Override public int getInt(int index) { throw new ForbiddenConversionException(); } + @Override public void setInt(int index, int value) { throw new ForbiddenConversionException(); } + @Override public short getShort(int index) { throw new ForbiddenConversionException(); } + @Override public void setShort(int index, short value) { throw new ForbiddenConversionException(); } + @Override public byte getByte(int index) { throw new ForbiddenConversionException(); } + @Override public void setByte(int index, byte value) { throw new ForbiddenConversionException(); } + @Override public char getChar(int index) { throw new ForbiddenConversionException(); } + @Override public void setChar(int index, char value) { throw new ForbiddenConversionException(); } + @Override public boolean getBoolean(int index) { throw new ForbiddenConversionException(); } + @Override public void setBoolean(int index, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(int elem) { return null; // To change body of implemented methods use File | Settings | File Templates. } + @Override public void setObject(int elem, Object value) { // To change body of implemented methods use File | Settings | File Templates. } diff --git a/cdm/core/src/main/java/ucar/ma2/ArrayShort.java b/cdm/core/src/main/java/ucar/ma2/ArrayShort.java index 58600b2984..4e17d2e0f7 100644 --- a/cdm/core/src/main/java/ucar/ma2/ArrayShort.java +++ b/cdm/core/src/main/java/ucar/ma2/ArrayShort.java @@ -92,16 +92,19 @@ public ArrayShort(int[] dimensions, boolean isUnsigned) { /** * create new Array with given indexImpl and same backing store */ + @Override protected Array createView(Index index) { return ArrayShort.factory(index, isUnsigned(), storage); } /* Get underlying primitive array storage. CAUTION! You may invalidate your warrentee! */ + @Override public Object getStorage() { return storage; } // copy from javaArray to storage using the iterator: used by factory( Object); + @Override protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { short[] ja = (short[]) javaArray; for (short aJa : ja) @@ -109,16 +112,19 @@ protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { } // copy to javaArray from storage using the iterator: used by copyToNDJavaArray; + @Override protected void copyTo1DJavaArray(IndexIterator iter, Object javaArray) { short[] ja = (short[]) javaArray; for (int i = 0; i < ja.length; i++) ja[i] = iter.getShortNext(); } + @Override public ByteBuffer getDataAsByteBuffer() { return getDataAsByteBuffer(null); } + @Override public ByteBuffer getDataAsByteBuffer(ByteOrder order) { ByteBuffer bb = super.getDataAsByteBuffer((int) (2 * getSize()), order); ShortBuffer ib = bb.asShortBuffer(); @@ -129,6 +135,7 @@ public ByteBuffer getDataAsByteBuffer(ByteOrder order) { /** * Return the element class type */ + @Override public Class getElementType() { return short.class; } @@ -153,63 +160,77 @@ public void set(Index i, short value) { storage[i.currentElement()] = value; } + @Override public double getDouble(Index i) { short val = storage[i.currentElement()]; return (double) (isUnsigned() ? DataType.unsignedShortToInt(val) : val); } + @Override public void setDouble(Index i, double value) { storage[i.currentElement()] = (short) value; } + @Override public float getFloat(Index i) { short val = storage[i.currentElement()]; return (float) (isUnsigned() ? DataType.unsignedShortToInt(val) : val); } + @Override public void setFloat(Index i, float value) { storage[i.currentElement()] = (short) value; } + @Override public long getLong(Index i) { short val = storage[i.currentElement()]; return (long) (isUnsigned() ? DataType.unsignedShortToInt(val) : val); } + @Override public void setLong(Index i, long value) { storage[i.currentElement()] = (short) value; } + @Override public int getInt(Index i) { short val = storage[i.currentElement()]; return (isUnsigned() ? DataType.unsignedShortToInt(val) : val); } + @Override public void setInt(Index i, int value) { storage[i.currentElement()] = (short) value; } + @Override public short getShort(Index i) { return storage[i.currentElement()]; } + @Override public void setShort(Index i, short value) { storage[i.currentElement()] = value; } + @Override public byte getByte(Index i) { return (byte) storage[i.currentElement()]; } + @Override public void setByte(Index i, byte value) { storage[i.currentElement()] = (short) value; } + @Override public char getChar(Index i) { short val = storage[i.currentElement()]; return (char) (isUnsigned() ? DataType.unsignedShortToInt(val) : val); } + @Override public void setChar(Index i, char value) { storage[i.currentElement()] = (short) value; } @@ -217,6 +238,7 @@ public void setChar(Index i, char value) { /** * not legal, throw ForbiddenConversionException */ + @Override public boolean getBoolean(Index i) { throw new ForbiddenConversionException(); } @@ -224,92 +246,113 @@ public boolean getBoolean(Index i) { /** * not legal, throw ForbiddenConversionException */ + @Override public void setBoolean(Index i, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(Index i) { return storage[i.currentElement()]; // Short } + @Override public void setObject(Index i, Object value) { storage[i.currentElement()] = ((Number) value).shortValue(); } // package private : mostly for iterators + @Override public double getDouble(int index) { short val = storage[index]; return (double) (isUnsigned() ? DataType.unsignedShortToInt(val) : val); } + @Override public void setDouble(int index, double value) { storage[index] = (short) value; } + @Override public float getFloat(int index) { short val = storage[index]; return (float) (isUnsigned() ? DataType.unsignedShortToInt(val) : val); } + @Override public void setFloat(int index, float value) { storage[index] = (short) value; } + @Override public long getLong(int index) { short val = storage[index]; return (long) (isUnsigned() ? DataType.unsignedShortToInt(val) : val); } + @Override public void setLong(int index, long value) { storage[index] = (short) value; } + @Override public int getInt(int index) { short val = storage[index]; return (isUnsigned() ? DataType.unsignedShortToInt(val) : val); } + @Override public void setInt(int index, int value) { storage[index] = (short) value; } + @Override public short getShort(int index) { return storage[index]; } + @Override public void setShort(int index, short value) { storage[index] = value; } + @Override public byte getByte(int index) { return (byte) storage[index]; } + @Override public void setByte(int index, byte value) { storage[index] = (short) value; } + @Override public char getChar(int index) { short val = storage[index]; return (char) (isUnsigned() ? DataType.unsignedShortToInt(val) : val); } + @Override public void setChar(int index, char value) { storage[index] = (short) value; } + @Override public boolean getBoolean(int index) { throw new ForbiddenConversionException(); } + @Override public void setBoolean(int index, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(int index) { return getShort(index); } + @Override public void setObject(int index, Object value) { storage[index] = ((Number) value).shortValue(); } diff --git a/cdm/core/src/main/java/ucar/ma2/ArrayString.java b/cdm/core/src/main/java/ucar/ma2/ArrayString.java index bc57793768..3706a9c7a8 100644 --- a/cdm/core/src/main/java/ucar/ma2/ArrayString.java +++ b/cdm/core/src/main/java/ucar/ma2/ArrayString.java @@ -92,16 +92,20 @@ public ArrayString(int[] dimensions) { /** * create new Array with given indexImpl and same backing store */ + @Override + protected Array createView(Index index) { return ArrayString.factory(index, storage); } /* Get underlying primitive array storage. CAUTION! You may invalidate your warranty! */ + @Override public Object getStorage() { return storage; } // copy from javaArray to storage using the iterator: used by factory( Object); + @Override protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { String[] ja = (String[]) javaArray; for (String aJa : ja) @@ -109,12 +113,14 @@ protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { } // copy to javaArray from storage using the iterator: used by copyToNDJavaArray; + @Override protected void copyTo1DJavaArray(IndexIterator iter, Object javaArray) { String[] ja = (String[]) javaArray; for (int i = 0; i < ja.length; i++) ja[i] = (String) iter.getObjectNext(); } + @Override public ByteBuffer getDataAsByteBuffer() { // Store strings as null terminated character sequences int totalsize = 0; @@ -133,6 +139,7 @@ public ByteBuffer getDataAsByteBuffer() { /** * Return the element class type */ + @Override public Class getElementType() { return String.class; } @@ -154,6 +161,7 @@ public void set(Index i, String value) { /** * not legal, throw ForbiddenConversionException */ + @Override public double getDouble(Index i) { throw new ForbiddenConversionException(); } @@ -161,6 +169,7 @@ public double getDouble(Index i) { /** * not legal, throw ForbiddenConversionException */ + @Override public void setDouble(Index i, double value) { throw new ForbiddenConversionException(); } @@ -168,6 +177,7 @@ public void setDouble(Index i, double value) { /** * not legal, throw ForbiddenConversionException */ + @Override public float getFloat(Index i) { throw new ForbiddenConversionException(); } @@ -175,6 +185,7 @@ public float getFloat(Index i) { /** * not legal, throw ForbiddenConversionException */ + @Override public void setFloat(Index i, float value) { throw new ForbiddenConversionException(); } @@ -182,6 +193,7 @@ public void setFloat(Index i, float value) { /** * not legal, throw ForbiddenConversionException */ + @Override public long getLong(Index i) { throw new ForbiddenConversionException(); } @@ -189,6 +201,7 @@ public long getLong(Index i) { /** * not legal, throw ForbiddenConversionException */ + @Override public void setLong(Index i, long value) { throw new ForbiddenConversionException(); } @@ -196,6 +209,7 @@ public void setLong(Index i, long value) { /** * not legal, throw ForbiddenConversionException */ + @Override public int getInt(Index i) { throw new ForbiddenConversionException(); } @@ -203,6 +217,7 @@ public int getInt(Index i) { /** * not legal, throw ForbiddenConversionException */ + @Override public void setInt(Index i, int value) { throw new ForbiddenConversionException(); } @@ -210,6 +225,7 @@ public void setInt(Index i, int value) { /** * not legal, throw ForbiddenConversionException */ + @Override public short getShort(Index i) { throw new ForbiddenConversionException(); } @@ -217,6 +233,7 @@ public short getShort(Index i) { /** * not legal, throw ForbiddenConversionException */ + @Override public void setShort(Index i, short value) { throw new ForbiddenConversionException(); } @@ -224,6 +241,7 @@ public void setShort(Index i, short value) { /** * not legal, throw ForbiddenConversionException */ + @Override public byte getByte(Index i) { throw new ForbiddenConversionException(); } @@ -231,6 +249,7 @@ public byte getByte(Index i) { /** * not legal, throw ForbiddenConversionException */ + @Override public void setByte(Index i, byte value) { throw new ForbiddenConversionException(); } @@ -238,6 +257,7 @@ public void setByte(Index i, byte value) { /** * not legal, throw ForbiddenConversionException */ + @Override public boolean getBoolean(Index i) { throw new ForbiddenConversionException(); } @@ -245,6 +265,7 @@ public boolean getBoolean(Index i) { /** * not legal, throw ForbiddenConversionException */ + @Override public void setBoolean(Index i, boolean value) { throw new ForbiddenConversionException(); } @@ -252,6 +273,7 @@ public void setBoolean(Index i, boolean value) { /** * not legal, throw ForbiddenConversionException */ + @Override public char getChar(Index i) { throw new ForbiddenConversionException(); } @@ -259,87 +281,108 @@ public char getChar(Index i) { /** * not legal, throw ForbiddenConversionException */ + @Override public void setChar(Index i, char value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(Index i) { return storage[i.currentElement()]; } + @Override public void setObject(Index i, Object value) { storage[i.currentElement()] = ((String) value); } // package private : mostly for iterators + @Override public double getDouble(int index) { throw new ForbiddenConversionException(); } + @Override public void setDouble(int index, double value) { throw new ForbiddenConversionException(); } + @Override public float getFloat(int index) { throw new ForbiddenConversionException(); } + @Override public void setFloat(int index, float value) { throw new ForbiddenConversionException(); } + @Override public long getLong(int index) { throw new ForbiddenConversionException(); } + @Override public void setLong(int index, long value) { throw new ForbiddenConversionException(); } + @Override public int getInt(int index) { throw new ForbiddenConversionException(); } + @Override public void setInt(int index, int value) { throw new ForbiddenConversionException(); } + @Override public short getShort(int index) { throw new ForbiddenConversionException(); } + @Override public void setShort(int index, short value) { throw new ForbiddenConversionException(); } + @Override public byte getByte(int index) { throw new ForbiddenConversionException(); } + @Override public void setByte(int index, byte value) { throw new ForbiddenConversionException(); } + @Override public char getChar(int index) { throw new ForbiddenConversionException(); } + @Override public void setChar(int index, char value) { throw new ForbiddenConversionException(); } + @Override public boolean getBoolean(int index) { throw new ForbiddenConversionException(); } + @Override public void setBoolean(int index, boolean value) { throw new ForbiddenConversionException(); } + @Override public Object getObject(int index) { return storage[index]; } + @Override public void setObject(int index, Object value) { storage[index] = (String) value; } diff --git a/cdm/core/src/main/java/ucar/ma2/ArrayStructure.java b/cdm/core/src/main/java/ucar/ma2/ArrayStructure.java index b177865993..a62641e50e 100644 --- a/cdm/core/src/main/java/ucar/ma2/ArrayStructure.java +++ b/cdm/core/src/main/java/ucar/ma2/ArrayStructure.java @@ -109,6 +109,7 @@ protected ArrayStructure(StructureMembers members, Index ima) { } // copy from javaArray to storage using the iterator: used by factory( Object); + @Override protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { Object[] ja = (Object[]) javaArray; for (Object aJa : ja) @@ -116,12 +117,14 @@ protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { } // copy to javaArray from storage using the iterator: used by copyToNDJavaArray; + @Override protected void copyTo1DJavaArray(IndexIterator iter, Object javaArray) { Object[] ja = (Object[]) javaArray; for (int i = 0; i < ja.length; i++) ja[i] = iter.getObjectNext(); } + @Override public Class getElementType() { return StructureData.class; } @@ -174,6 +177,7 @@ public long getSizeBytes() { * @param i which one to get, specified by an Index. * @return object of type StructureData. */ + @Override public Object getObject(Index i) { return getObject(i.currentElement()); } @@ -184,6 +188,7 @@ public Object getObject(Index i) { * @param i which one to set, specified by an Index. * @param value must be type StructureData. */ + @Override public void setObject(Index i, Object value) { setObject(i.currentElement(), value); } @@ -194,6 +199,7 @@ public void setObject(Index i, Object value) { * @param index which one to get, specified by an integer. * @return object of type StructureData. */ + @Override public Object getObject(int index) { return getStructureData(index); } @@ -204,6 +210,7 @@ public Object getObject(int index) { * @param index which one to set. * @param value must be type StructureData. */ + @Override public void setObject(int index, Object value) { if (sdata == null) sdata = new StructureData[nelems]; @@ -236,6 +243,7 @@ public StructureData getStructureData(int index) { return sdata[index]; } + @Override public Object getStorage() { // this fills the sdata array for (int i = 0; i < nelems; i++) @@ -254,6 +262,7 @@ public int getStructureSize() { return members.getStructureSize(); } + @Override public Iterator iterator() { // throws java.io.IOException { return new ArrayStructureIterator(); } @@ -1041,6 +1050,7 @@ public Array sectionNoReduce(List ranges) { /** * DO NOT USE, throws UnsupportedOperationException */ + @Override public Array copy() { throw new UnsupportedOperationException(); } @@ -1048,6 +1058,7 @@ public Array copy() { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public double getDouble(Index i) { throw new ForbiddenConversionException(); } @@ -1055,6 +1066,7 @@ public double getDouble(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setDouble(Index i, double value) { throw new ForbiddenConversionException(); } @@ -1062,6 +1074,7 @@ public void setDouble(Index i, double value) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public float getFloat(Index i) { throw new ForbiddenConversionException(); } @@ -1069,6 +1082,7 @@ public float getFloat(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setFloat(Index i, float value) { throw new ForbiddenConversionException(); } @@ -1083,6 +1097,7 @@ public long getLong(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setLong(Index i, long value) { throw new ForbiddenConversionException(); } @@ -1090,6 +1105,7 @@ public void setLong(Index i, long value) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public int getInt(Index i) { throw new ForbiddenConversionException(); } @@ -1097,6 +1113,7 @@ public int getInt(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setInt(Index i, int value) { throw new ForbiddenConversionException(); } @@ -1104,6 +1121,7 @@ public void setInt(Index i, int value) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public short getShort(Index i) { throw new ForbiddenConversionException(); } @@ -1111,6 +1129,7 @@ public short getShort(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setShort(Index i, short value) { throw new ForbiddenConversionException(); } @@ -1118,6 +1137,7 @@ public void setShort(Index i, short value) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public byte getByte(Index i) { throw new ForbiddenConversionException(); } @@ -1125,6 +1145,7 @@ public byte getByte(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setByte(Index i, byte value) { throw new ForbiddenConversionException(); } @@ -1132,6 +1153,7 @@ public void setByte(Index i, byte value) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public boolean getBoolean(Index i) { throw new ForbiddenConversionException(); } @@ -1139,6 +1161,7 @@ public boolean getBoolean(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setBoolean(Index i, boolean value) { throw new ForbiddenConversionException(); } @@ -1146,6 +1169,7 @@ public void setBoolean(Index i, boolean value) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public char getChar(Index i) { throw new ForbiddenConversionException(); } @@ -1153,72 +1177,89 @@ public char getChar(Index i) { /** * DO NOT USE, throw ForbiddenConversionException */ + @Override public void setChar(Index i, char value) { throw new ForbiddenConversionException(); } // trusted, assumes that individual dimension lengths have been checked // package private : mostly for iterators + @Override public double getDouble(int index) { throw new ForbiddenConversionException(); } + @Override public void setDouble(int index, double value) { throw new ForbiddenConversionException(); } + @Override public float getFloat(int index) { throw new ForbiddenConversionException(); } + @Override public void setFloat(int index, float value) { throw new ForbiddenConversionException(); } + @Override public long getLong(int index) { throw new ForbiddenConversionException(); } + @Override public void setLong(int index, long value) { throw new ForbiddenConversionException(); } + @Override public int getInt(int index) { throw new ForbiddenConversionException(); } + @Override public void setInt(int index, int value) { throw new ForbiddenConversionException(); } + @Override public short getShort(int index) { throw new ForbiddenConversionException(); } + @Override public void setShort(int index, short value) { throw new ForbiddenConversionException(); } + @Override public byte getByte(int index) { throw new ForbiddenConversionException(); } + @Override public void setByte(int index, byte value) { throw new ForbiddenConversionException(); } + @Override public char getChar(int index) { throw new ForbiddenConversionException(); } + @Override public void setChar(int index, char value) { throw new ForbiddenConversionException(); } + @Override public boolean getBoolean(int index) { throw new ForbiddenConversionException(); } + @Override public void setBoolean(int index, boolean value) { throw new ForbiddenConversionException(); } diff --git a/cdm/core/src/main/java/ucar/ma2/DataType.java b/cdm/core/src/main/java/ucar/ma2/DataType.java index 785985d2ab..aec577383e 100644 --- a/cdm/core/src/main/java/ucar/ma2/DataType.java +++ b/cdm/core/src/main/java/ucar/ma2/DataType.java @@ -35,6 +35,7 @@ public enum DataType { OPAQUE("opaque", 1, ByteBuffer.class, false), // byte blobs + // TODO deprecate and remove in v6? OBJECT("object", 1, Object.class, false), // added for use with Array UBYTE("ubyte", 1, byte.class, true), // unsigned byte diff --git a/cdm/core/src/main/java/ucar/ma2/Index.java b/cdm/core/src/main/java/ucar/ma2/Index.java index 11f6ebb0a6..0efe0856d8 100644 --- a/cdm/core/src/main/java/ucar/ma2/Index.java +++ b/cdm/core/src/main/java/ucar/ma2/Index.java @@ -570,10 +570,10 @@ public Index set(int[] index) { throw new ArrayIndexOutOfBoundsException(); if (rank == 0) return this; - int prefixrank = (hasvlen ? rank : rank - 1); + int prefixrank = (hasvlen ? rank - 1 : rank); System.arraycopy(index, 0, current, 0, prefixrank); if (hasvlen) - current[prefixrank] = -1; + current[rank] = -1; // ?? return this; } diff --git a/cdm/core/src/main/java/ucar/ma2/StructureMembers.java b/cdm/core/src/main/java/ucar/ma2/StructureMembers.java index 142d0a99ef..afc9dff7e5 100644 --- a/cdm/core/src/main/java/ucar/ma2/StructureMembers.java +++ b/cdm/core/src/main/java/ucar/ma2/StructureMembers.java @@ -8,8 +8,10 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import java.util.ArrayList; +import java.util.Arrays; import java.util.Formatter; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; import javax.annotation.Nullable; import ucar.nc2.util.Indent; @@ -155,6 +157,19 @@ public String toString() { .add("structureSize", structureSize).toString(); } + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof StructureMembers)) { + return false; + } + StructureMembers other = (StructureMembers) o; + return getName().equals(other.getName()) && getStructureSize() == other.getStructureSize() + && getMembers().size() == other.getMembers().size() + && getMembers().stream().allMatch(m -> m.equals(other.findMember(m.getName()))); + } + /** A member of a StructureData. */ public final static class Member { // TODO make these final and immutable in 6. @@ -337,6 +352,20 @@ public boolean isScalar() { return size == 1; } + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof Member)) { + return false; + } + Member other = (Member) o; + return getFullName().equals(other.getName()) && Objects.equals(getDescription(), other.getDescription()) + && Objects.equals(getUnitsString(), other.getUnitsString()) && getDataType() == other.getDataType() + && getSize() == other.getSize() && Arrays.equals(getShape(), other.getShape()) + && Objects.equals(getStructureMembers(), other.getStructureMembers()); + } + //////////////////////////////////////////////// // these should not really be public @@ -431,6 +460,10 @@ public String toString() { } } + public static MemberBuilder memberBuilder() { + return new MemberBuilder(); + } + public static class MemberBuilder { private String name, desc, units; private DataType dtype; diff --git a/cdm/core/src/main/java/ucar/nc2/Attribute.java b/cdm/core/src/main/java/ucar/nc2/Attribute.java index b8dca41f7a..4f9335eb99 100644 --- a/cdm/core/src/main/java/ucar/nc2/Attribute.java +++ b/cdm/core/src/main/java/ucar/nc2/Attribute.java @@ -38,7 +38,7 @@ public class Attribute extends CDMNode { /** @deprecated move to jni.Nc4Iosp */ @Deprecated - static final String[] SPECIALS = + public static final String[] SPECIALS = {CDM.NCPROPERTIES, CDM.ISNETCDF4, CDM.SUPERBLOCKVERSION, CDM.DAP4_LITTLE_ENDIAN, CDM.EDU_UCAR_PREFIX}; /** diff --git a/cdm/core/src/main/java/ucar/nc2/Dimension.java b/cdm/core/src/main/java/ucar/nc2/Dimension.java index a5bfc510b1..051c237ee6 100644 --- a/cdm/core/src/main/java/ucar/nc2/Dimension.java +++ b/cdm/core/src/main/java/ucar/nc2/Dimension.java @@ -457,9 +457,6 @@ public void setLength(int n) { } else if (isUnlimited) { if (n < 0) throw new IllegalArgumentException("Unlimited Dimension length =" + n + " must >= 0"); - } else { - if (n < 1) - throw new IllegalArgumentException("Dimension length =" + n + " must be > 0"); } this.length = n; } diff --git a/cdm/core/src/main/java/ucar/nc2/EnumTypedef.java b/cdm/core/src/main/java/ucar/nc2/EnumTypedef.java index 7a4cfdccd9..0f07b8fb9f 100644 --- a/cdm/core/src/main/java/ucar/nc2/EnumTypedef.java +++ b/cdm/core/src/main/java/ucar/nc2/EnumTypedef.java @@ -135,7 +135,7 @@ protected void writeCDL(Formatter out, Indent indent, boolean strict) { basetype = ""; break; default: - assert false : "Internal error"; + throw new IllegalStateException("Unexpected basetype = " + basetype); } out.format("%s%senum %s { ", indent, basetype, name); int count = 0; diff --git a/cdm/core/src/main/java/ucar/nc2/Group.java b/cdm/core/src/main/java/ucar/nc2/Group.java index e73edd8277..30b5cad001 100755 --- a/cdm/core/src/main/java/ucar/nc2/Group.java +++ b/cdm/core/src/main/java/ucar/nc2/Group.java @@ -2,8 +2,10 @@ * Copyright (c) 1998-2018 University Corporation for Atmospheric Research/Unidata * See LICENSE for license information. */ + package ucar.nc2; +import static java.util.Optional.ofNullable; import static ucar.nc2.NetcdfFiles.reservedFullName; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -18,6 +20,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ucar.ma2.DataType; +import ucar.nc2.constants.CDM; import ucar.nc2.util.EscapeStrings; import ucar.nc2.util.Indent; import java.util.ArrayList; @@ -316,7 +319,7 @@ public String findAttributeString(String attName, String defaultValue) { /** @deprecated Use attributes() */ @Deprecated public java.util.List getAttributes() { - return AttributeContainer.filter(attributes, Attribute.SPECIALS).getAttributes(); + return AttributeContainer.filter(attributes, CDM.SPECIALS).getAttributes(); } /** @deprecated Use attributes() */ @@ -374,20 +377,51 @@ public boolean removeAttributeIgnoreCase(String attName) { //////////////////////////////////////////////////////////////////////// - /** Find a Enumeration in this or a parent Group, using its short name. */ + /** Find a Enumeration in this Group, using its short name. */ @Nullable public EnumTypedef findEnumeration(String name) { + return findEnumeration(name, false); // Keep the old behavior + } + + /** Find a Enumeration in this or optionally the parent Groups, using its short name. */ + @Nullable + public EnumTypedef findEnumeration(String name, boolean searchup) { if (name == null) return null; // name = NetcdfFile.makeNameUnescaped(name); - for (EnumTypedef d : enumTypedefs) { + // search this group's EnumTypedefs + for (EnumTypedef d : this.getEnumTypedefs()) { if (name.equals(d.getShortName())) return d; } - Group parent = getParentGroup(); - if (parent != null) - return parent.findEnumeration(name); + if (searchup) { + Group parent = getParentGroup(); + if (parent != null) + return parent.findEnumeration(name, searchup); + } + return null; + } + /** + * Locate an enum type definition that is structurally + * similar to the template type def. The Enum names are ignored. + * + * @param template match this enum type def + * @param searchup if true, then search this group and then parent groups. + */ + public EnumTypedef findSimilarEnumTypedef(EnumTypedef template, boolean searchup) { + assert (template != null); + // search this group builders's EnumTypedefs but with constraint on name + EnumTypedef ed = enumTypedefs.stream().filter(e -> e.equalsMapOnly(template)).findFirst().orElse(null); + if (ed != null) + return ed; + // Optionally search parents + if (searchup) { + Group gb = getParentGroup(); + if (gb != null) + ed = gb.findSimilarEnumTypedef(template, searchup); + return ed; + } return null; } @@ -515,7 +549,7 @@ void writeCDL(Formatter out, Indent indent, boolean strict) { for (Attribute att : attributes) { // String name = strict ? NetcdfFile.escapeNameCDL(getShortName()) : getShortName(); - if (!Attribute.isspecial(att)) { + if (!CDM.isspecial(att)) { out.format("%s", indent); att.writeCDL(out, strict, null); out.format(";"); @@ -1114,6 +1148,61 @@ public Group.Builder commonParent(Group.Builder other) { return other; } + /** + * Locate an enum type definition that is structurally + * similar to the template type def. The Enum names are ignored. + * + * @param template match this enum type def + * @param searchup if true, then search this group and then parent groups. + */ + public Optional findSimilarEnumTypedef(EnumTypedef template, boolean searchup) { + Optional ed = Optional.empty(); + assert (template != null); + // search this group builders's EnumTypedefs but with constraint on name + ed = this.enumTypedefs.stream().filter(e -> (e.equalsMapOnly(template))).findFirst(); + if (ed.isPresent()) + return ed; + // Optionally search parents + if (searchup) { + Group.Builder gb = getParentGroup(); + if (gb != null) + ed = gb.findSimilarEnumTypedef(template, searchup); + if (ed.isPresent()) + return ed; + } + return Optional.empty(); + } + + /** Find a Enumeration in this Group Builder, using its short name. */ + public Optional findEnumTypedef(String name) { + // Keep the old behavior + return findEnumTypedef(name, false); + } + + /** + * Find a Enumeration in this or a parent Group Builder, using its short name. + * + * @param name for which to search + * @param searchup if true, then search this group and then parent groups. + */ + public Optional findEnumTypedef(String name, boolean searchup) { + if (name == null) + return Optional.empty(); + // search this group builders's EnumTypedefs + Optional ed = this.enumTypedefs.stream().filter(e -> e.shortName.equals(name)).findFirst(); + if (ed.isPresent()) + return ed; + // Optionally search parents + if (searchup) { + Group.Builder gb = getParentGroup(); + if (gb != null) + ed = gb.findEnumTypedef(name, searchup); + if (ed.isPresent()) + return ed; + } + return Optional.empty(); + } + public Builder addEnumTypedef(EnumTypedef typedef) { Preconditions.checkNotNull(typedef); enumTypedefs.add(typedef); @@ -1131,7 +1220,7 @@ public Builder addEnumTypedefs(Collection typedefs) { * Return new or existing. */ public EnumTypedef findOrAddEnumTypedef(String name, Map map) { - Optional opt = findEnumTypedef(name); + Optional opt = findEnumTypedef(name); // Find in this group if (opt.isPresent()) { return opt.get(); } else { @@ -1141,10 +1230,6 @@ public EnumTypedef findOrAddEnumTypedef(String name, Map map) { } } - public Optional findEnumTypedef(String name) { - return this.enumTypedefs.stream().filter(e -> e.shortName.equals(name)).findFirst(); - } - /** Add a Variable, throw error if one of the same name if it exists. */ public Builder addVariable(Variable.Builder variable) { Preconditions.checkNotNull(variable); @@ -1301,7 +1386,7 @@ private List getDimensionsFor(Group.Builder gb, Variable.Builder v if (dim.isShared()) { Dimension sharedDim = gb.findDimension(dim.getShortName()).orElse(null); if (sharedDim == null) { - throw new IllegalStateException(String.format("Shared Dimension %s does not exist in a parent proup", dim)); + throw new IllegalStateException(String.format("Shared Dimension %s does not exist in a parent group", dim)); } else { dims.add(sharedDim); } diff --git a/cdm/core/src/main/java/ucar/nc2/NetcdfFileSubclass.java b/cdm/core/src/main/java/ucar/nc2/NetcdfFileSubclass.java index a3448a246f..95a3afa0ff 100644 --- a/cdm/core/src/main/java/ucar/nc2/NetcdfFileSubclass.java +++ b/cdm/core/src/main/java/ucar/nc2/NetcdfFileSubclass.java @@ -16,7 +16,9 @@ * * @author caron * @since 10/29/2014 + * @deprecated Use NetcdfFile.builder(). Remove in v6 */ +@Deprecated public class NetcdfFileSubclass extends NetcdfFile { public NetcdfFileSubclass() {} diff --git a/cdm/core/src/main/java/ucar/nc2/NetcdfFiles.java b/cdm/core/src/main/java/ucar/nc2/NetcdfFiles.java index 9aa9c3dba2..24c6131c04 100644 --- a/cdm/core/src/main/java/ucar/nc2/NetcdfFiles.java +++ b/cdm/core/src/main/java/ucar/nc2/NetcdfFiles.java @@ -70,7 +70,7 @@ public class NetcdfFiles { registerIOProvider("ucar.nc2.internal.iosp.hdf5.H5iospNew"); } catch (Throwable e) { if (loadWarnings) - log.info("Cant load class H5iosp", e); + log.info("Cant load class H5iospNew", e); } try { registerIOProvider("ucar.nc2.stream.NcStreamIosp"); @@ -265,7 +265,7 @@ public static NetcdfFile open(String location, int buffer_size, ucar.nc2.util.Ca * @param buffer_size RandomAccessFile buffer size, if <= 0, use default size * @param cancelTask allow task to be cancelled; may be null. * @param iospMessage special iosp tweaking (sent before open is called), may be null - * @return NetcdfFile object, or null if cant find IOServiceProver + * @return NetcdfFile object, or null if can't find IOServiceProver * @throws IOException if error */ public static NetcdfFile open(String location, int buffer_size, ucar.nc2.util.CancelTask cancelTask, @@ -290,7 +290,7 @@ public static NetcdfFile open(String location, int buffer_size, ucar.nc2.util.Ca * @param iospMessage special iosp tweaking (sent before open is called), may be null * @return NetcdfFile object, or null if cant find IOServiceProver * @throws IOException if read error - * @throws ClassNotFoundException cannat find iospClassName in thye class path + * @throws ClassNotFoundException cannot find iospClassName in the class path * @throws InstantiationException if class cannot be instantiated * @throws IllegalAccessException if class is not accessible */ @@ -400,7 +400,7 @@ private static ucar.unidata.io.RandomAccessFile downloadAndDecompress(ucar.unida * @return RandomAccessFile for the object at location */ public static ucar.unidata.io.RandomAccessFile getRaf(String location, int buffer_size) throws IOException { - String uriString = location.trim(); + String uriString = removeFragment(location.trim()); if (buffer_size <= 0) buffer_size = default_buffersize; @@ -473,6 +473,10 @@ public static ucar.unidata.io.RandomAccessFile getRaf(String location, int buffe return raf; } + private static String removeFragment(String uriString) { + return uriString.split("#")[0]; + } + private static boolean looksCompressed(String filename) { // return true if filename ends with a compressed suffix or contains a compressed suffix followed by a delimiter // (i.e. path to a compressed entry) @@ -801,7 +805,7 @@ private static IOServiceProvider getIosp(ucar.unidata.io.RandomAccessFile raf) t return null; } - private static NetcdfFile build(IOServiceProvider spi, ucar.unidata.io.RandomAccessFile raf, String location, + public static NetcdfFile build(IOServiceProvider spi, ucar.unidata.io.RandomAccessFile raf, String location, ucar.nc2.util.CancelTask cancelTask) throws IOException { NetcdfFile.Builder builder = NetcdfFile.builder().setIosp((AbstractIOServiceProvider) spi).setLocation(location); diff --git a/cdm/core/src/main/java/ucar/nc2/ParsedSectionSpec.java b/cdm/core/src/main/java/ucar/nc2/ParsedSectionSpec.java index 08b684b39c..dfc1c84978 100644 --- a/cdm/core/src/main/java/ucar/nc2/ParsedSectionSpec.java +++ b/cdm/core/src/main/java/ucar/nc2/ParsedSectionSpec.java @@ -174,6 +174,14 @@ public ParsedSectionSpec() { this.child = null; } + public Variable getVariable() { + return v; + } + + public Section getArraySection() { + return section; + } + @Override public String toString() { return "ParsedSectionSpec{" + "v=" + v.getFullName() + ", section=" + section + ", child=" + child + '}'; diff --git a/cdm/core/src/main/java/ucar/nc2/Structure.java b/cdm/core/src/main/java/ucar/nc2/Structure.java index 65ab45900b..9ed363de5f 100644 --- a/cdm/core/src/main/java/ucar/nc2/Structure.java +++ b/cdm/core/src/main/java/ucar/nc2/Structure.java @@ -23,6 +23,7 @@ import ucar.ma2.StructureData; import ucar.ma2.StructureDataIterator; import ucar.ma2.StructureMembers; +import ucar.nc2.constants.CDM; import ucar.nc2.util.Indent; /** @@ -135,6 +136,8 @@ public boolean isSubset() { } // for section and slice + /** @deprecated Use {@link #toBuilder()} */ + @Deprecated @Override protected Structure copy() { return new Structure(this); @@ -635,7 +638,7 @@ protected void writeCDL(Formatter buf, Indent indent, boolean useFullName, boole buf.format(";%s%n", extraInfo()); for (Attribute att : attributes()) { - if (Attribute.isspecial(att)) + if (CDM.isspecial(att)) continue; buf.format("%s", indent); att.writeCDL(buf, strict, getShortName()); diff --git a/cdm/core/src/main/java/ucar/nc2/Variable.java b/cdm/core/src/main/java/ucar/nc2/Variable.java index 19d6b98060..a872f50088 100644 --- a/cdm/core/src/main/java/ucar/nc2/Variable.java +++ b/cdm/core/src/main/java/ucar/nc2/Variable.java @@ -454,7 +454,7 @@ public Variable reduce(List dims) { return sliceV.build(getParentGroupOrRoot()); } - /** @deprecated Use Variable.toBuilder() */ + /** @deprecated Use {@link #toBuilder()} */ @Deprecated protected Variable copy() { return new Variable(this); @@ -1025,7 +1025,7 @@ else if (dataType.isEnum()) { indent.incr(); for (Attribute att : attributes()) { - if (Attribute.isspecial(att)) + if (CDM.isspecial(att)) continue; buf.format("%s", indent); att.writeCDL(buf, strict, getShortName()); @@ -1830,7 +1830,7 @@ protected Variable(Builder builder, Group parentGroup) { this.cache = builder.cache; if (this.dataType.isEnum()) { - this.enumTypedef = this.group.findEnumeration(builder.enumTypeName); + this.enumTypedef = this.group.findEnumeration(builder.enumTypeName, true); if (this.enumTypedef == null) { throw new IllegalStateException( String.format("EnumTypedef '%s' does not exist in a parent Group", builder.enumTypeName)); @@ -1844,7 +1844,7 @@ protected Variable(Builder builder, Group parentGroup) { if (dim.isShared()) { Dimension sharedDim = this.group.findDimension(dim.getShortName()); if (sharedDim == null) { - throw new IllegalStateException(String.format("Shared Dimension %s does not exist in a parent proup", dim)); + throw new IllegalStateException(String.format("Shared Dimension %s does not exist in a parent group", dim)); } else { dims.add(sharedDim); } diff --git a/cdm/core/src/main/java/ucar/nc2/constants/AxisType.java b/cdm/core/src/main/java/ucar/nc2/constants/AxisType.java index 9b8d3a2229..9636be7fa7 100644 --- a/cdm/core/src/main/java/ucar/nc2/constants/AxisType.java +++ b/cdm/core/src/main/java/ucar/nc2/constants/AxisType.java @@ -12,7 +12,7 @@ */ public enum AxisType { RunTime(0, "R"), // runtime / reference time - Ensemble(2, "E"), Time(1, "T"), GeoX(5, "X"), GeoY(4, "Y"), GeoZ(3, "Z"), // typically "dimensionless" vertical + Ensemble(1, "E"), Time(2, "T"), GeoX(5, "X"), GeoY(4, "Y"), GeoZ(3, "Z"), // typically "dimensionless" vertical // coordinate Lat(4, "Y"), Lon(5, "X"), Height(3, "Z"), // vertical height coordinate Pressure(3, "Z"), // vertical pressure coordinate diff --git a/cdm/core/src/main/java/ucar/nc2/constants/CDM.java b/cdm/core/src/main/java/ucar/nc2/constants/CDM.java index 21f06b01c9..bf8c7ac393 100644 --- a/cdm/core/src/main/java/ucar/nc2/constants/CDM.java +++ b/cdm/core/src/main/java/ucar/nc2/constants/CDM.java @@ -5,6 +5,8 @@ package ucar.nc2.constants; +import ucar.nc2.Attribute; + /** * CDM constants. * @@ -54,14 +56,35 @@ public class CDM { public static final String TIME_OFFSET = "time offset from runtime"; public static final String TIME_OFFSET_HOUR = "hoursFrom0z"; public static final String RUNTIME_COORDINATE = "runtimeCoordinate"; + public static final String STANDARDIZE = "standardize"; + public static final String NORMALIZE = "normalize"; + + // Special attributes + + private static final String SPECIALPREFIX = "_"; - // Special Attribute Names used in jni.Nc4Iosp + // Define Special attributes that should be suppressed public static final String NCPROPERTIES = "_NCProperties"; public static final String ISNETCDF4 = "_IsNetcdf4"; public static final String SUPERBLOCKVERSION = "_SuperblockVersion"; + + public static final String[] SPECIALS = {NCPROPERTIES, ISNETCDF4, SUPERBLOCKVERSION}; + public static final String DAP4_LITTLE_ENDIAN = "_DAP4_Little_Endian"; public static final String EDU_UCAR_PREFIX = "_edu.ucar"; + public static boolean isspecial(Attribute a) { + String nm = a.getShortName(); + if (nm.startsWith(SPECIALPREFIX)) { + /* Check for selected special attributes */ + for (String s : SPECIALS) { + if (nm.startsWith(s)) + return true; /* is special */ + } + } + return false; /* is not special */ + } + // class not interface, per Bloch edition 2 item 19 private CDM() {} // disable instantiation } diff --git a/cdm/core/src/main/java/ucar/nc2/constants/CF.java b/cdm/core/src/main/java/ucar/nc2/constants/CF.java index 7fdf8a7162..25daa631e7 100644 --- a/cdm/core/src/main/java/ucar/nc2/constants/CF.java +++ b/cdm/core/src/main/java/ucar/nc2/constants/CF.java @@ -118,6 +118,8 @@ public class CF { public static final String GRID_MAPPING_NAME = "grid_mapping_name"; public static final String GRID_NORTH_POLE_LATITUDE = "grid_north_pole_latitude"; // rotated grid public static final String GRID_NORTH_POLE_LONGITUDE = "grid_north_pole_longitude"; // rotated grid + public static final String ROTATED_LATITUDE = "rotated_latitude"; + public static final String ROTATED_LONGITUDE = "rotated_longitude"; public static final String INVERSE_FLATTENING = "inverse_flattening"; public static final String LATITUDE_OF_PROJECTION_ORIGIN = "latitude_of_projection_origin"; public static final String LONGITUDE_OF_PROJECTION_ORIGIN = "longitude_of_projection_origin"; @@ -163,6 +165,9 @@ public class CF { public static final String PROJECTION_X_COORDINATE = "projection_x_coordinate"; public static final String PROJECTION_Y_COORDINATE = "projection_y_coordinate"; + public static final String PROJECTION_X_ANG_COORDINATE = "projection_x_angular_coordinate"; + public static final String PROJECTION_Y_ANG_COORDINATE = "projection_y_angular_coordinate"; + // cf_role public static final String PROFILE_ID = "profile_id"; public static final String TIMESERIES_ID = "timeseries_id"; // alias STATION_ID diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/CoordTransBuilder.java b/cdm/core/src/main/java/ucar/nc2/dataset/CoordTransBuilder.java index c21578917c..c8c9c68e51 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/CoordTransBuilder.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/CoordTransBuilder.java @@ -8,6 +8,8 @@ import java.util.ArrayList; import java.util.Formatter; import javax.annotation.Nullable; + +import com.google.common.collect.ImmutableList; import ucar.ma2.DataType; import ucar.ma2.Array; import ucar.nc2.AttributeContainer; @@ -151,7 +153,7 @@ private static class Transform { /** * Make a CoordinateTransform object from the parameters in a Coordinate Transform Variable, using an intrinsic or * registered CoordTransBuilder. - * + * * @param ds enclosing dataset, only used for vertical transforms * @param ctv the Coordinate Transform Variable - container for the transform parameters * @param parseInfo pass back information about the parsing. @@ -161,6 +163,23 @@ private static class Transform { @Nullable public static CoordinateTransform makeCoordinateTransform(NetcdfDataset ds, AttributeContainer ctv, Formatter parseInfo, Formatter errInfo) { + return makeCoordinateTransform(ds, ctv, parseInfo, errInfo, ds.getCoordinateAxes()); + } + + /** + * Make a CoordinateTransform object from the parameters in a Coordinate Transform Variable, using an intrinsic or + * registered CoordTransBuilder. + * + * @param ds enclosing dataset, only used for vertical transforms + * @param ctv the Coordinate Transform Variable - container for the transform parameters + * @param parseInfo pass back information about the parsing. + * @param errInfo pass back error information. + * @param coordAxes any precomputed coordinate axes + * @return CoordinateTransform, or null if failure. + */ + @Nullable + public static CoordinateTransform makeCoordinateTransform(NetcdfDataset ds, AttributeContainer ctv, + Formatter parseInfo, Formatter errInfo, ImmutableList coordAxes) { // standard name String transform_name = ctv.findAttributeString("transform_name", null); if (null == transform_name) @@ -220,7 +239,7 @@ public static CoordinateTransform makeCoordinateTransform(NetcdfDataset ds, Attr } else if (builderObject instanceof HorizTransformBuilderIF) { HorizTransformBuilderIF horizBuilder = (HorizTransformBuilderIF) builderObject; horizBuilder.setErrorBuffer(errInfo); - String units = AbstractTransformBuilder.getGeoCoordinateUnits(ds, ctv); // barfola + String units = AbstractTransformBuilder.getGeoCoordinateUnits(ds, ctv, coordAxes); // barfola ct = horizBuilder.makeCoordinateTransform(ctv, units); } else { diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis.java b/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis.java index f90b01b58a..6589f511a0 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis.java @@ -146,7 +146,8 @@ public CoordinateAxis copyNoCache() { } // for section and slice - + /** @deprecated Use {@link #toBuilder()} */ + @Deprecated @Override protected CoordinateAxis copy() { return new CoordinateAxis(this.ncd, this); diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis1D.java b/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis1D.java index bd26a4f92b..da8cae0767 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis1D.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis1D.java @@ -181,7 +181,8 @@ public CoordinateAxis1D section(Range r) throws InvalidRangeException { } // for section and slice - + /** @deprecated Use {@link #toBuilder()} */ + @Deprecated @Override protected CoordinateAxis1D copy() { return new CoordinateAxis1D(this.ncd, this); @@ -865,6 +866,7 @@ protected void readValues() { } coords = (double[]) data.get1DJavaArray(DataType.DOUBLE); + this.wasRead = true; // IndexIterator iter = data.getIndexIterator(); // while (iter.hasNext()) // coords[count++] = iter.getDoubleNext(); diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis1DTime.java b/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis1DTime.java index a059134411..1852cf943b 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis1DTime.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis1DTime.java @@ -65,6 +65,8 @@ else if (org.getDataType() == DataType.STRING) //////////////////////////////////////////////////////////////// // for section and slice + /** @deprecated Use {@link #toBuilder()} */ + @Deprecated @Override protected CoordinateAxis1DTime copy() { return new CoordinateAxis1DTime(this.ncd, this); @@ -335,12 +337,17 @@ private CoordinateAxis1DTime(NetcdfDataset ncd, VariableDS org, Formatter errMes int ncoords = (int) org.getSize(); List result = new ArrayList<>(ncoords); - Array data = org.read(); + if (org instanceof CoordinateAxis1D) { + coords = ((CoordinateAxis1D) org).getCoordValues(); + } else { + Array data = org.read(); + coords = (double[]) data.get1DJavaArray(DataType.DOUBLE); + } + this.wasRead = true; int count = 0; - IndexIterator ii = data.getIndexIterator(); for (int i = 0; i < ncoords; i++) { - double val = ii.getDoubleNext(); + double val = coords[i]; if (Double.isNaN(val)) continue; // WTF ?? result.add(helper.makeCalendarDateFromOffset(val)); @@ -353,12 +360,11 @@ private CoordinateAxis1DTime(NetcdfDataset ncd, VariableDS org, Formatter errMes setDimension(0, localDim); // set the shortened values - Array shortData = Array.factory(data.getDataType(), new int[] {count}); + Array shortData = Array.factory(org.getDataType(), new int[] {count}); Index ima = shortData.getIndex(); int count2 = 0; - ii = data.getIndexIterator(); for (int i = 0; i < ncoords; i++) { - double val = ii.getDoubleNext(); + double val = coords[i]; if (Double.isNaN(val)) continue; shortData.setDouble(ima.set0(count2), val); diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis2D.java b/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis2D.java index 8e43cdbd0a..a9382399cb 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis2D.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateAxis2D.java @@ -40,6 +40,8 @@ public CoordinateAxis2D(NetcdfDataset ncd, VariableDS vds) { } // for section and slice + /** @deprecated Use {@link #toBuilder()} */ + @Deprecated @Override protected CoordinateAxis2D copy() { return new CoordinateAxis2D(this.ncd, this); diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateTransform.java b/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateTransform.java index 2b21667e73..3f10fb5f4d 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateTransform.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/CoordinateTransform.java @@ -245,6 +245,10 @@ public T setPreBuilt(CoordinateTransform preBuilt) { } public CoordinateTransform build(NetcdfDataset ncd) { + return build(ncd, ncd.getCoordinateAxes()); + } + + public CoordinateTransform build(NetcdfDataset ncd, ImmutableList coordAxes) { if (built) throw new IllegalStateException("already built " + name); built = true; @@ -254,8 +258,8 @@ public CoordinateTransform build(NetcdfDataset ncd) { } // All this trouble because we need ncd before we can build. - CoordinateTransform ct = - CoordTransBuilder.makeCoordinateTransform(ncd, attributeContainer, new Formatter(), new Formatter()); + CoordinateTransform ct = CoordTransBuilder.makeCoordinateTransform(ncd, attributeContainer, new Formatter(), + new Formatter(), coordAxes); if (ct != null) { // ct.name = this.name; // LOOK why is this commented out? Dont know name until this point? Not going to // work.... diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/DatasetUrl.java b/cdm/core/src/main/java/ucar/nc2/dataset/DatasetUrl.java index a333a49a74..8e5f1a5fa4 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/DatasetUrl.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/DatasetUrl.java @@ -10,7 +10,11 @@ import static java.net.HttpURLConnection.HTTP_UNAUTHORIZED; import com.google.common.annotations.VisibleForTesting; import javax.annotation.Nullable; + +import com.google.common.collect.Multimap; import thredds.client.catalog.ServiceType; +import thredds.inventory.MFile; +import thredds.inventory.MFiles; import ucar.httpservices.HTTPFactory; import ucar.httpservices.HTTPMethod; import ucar.nc2.util.EscapeStrings; @@ -57,9 +61,11 @@ public static List getProtocols(String url) { StringBuilder buf = new StringBuilder(url); // If there are any leading protocols, then they must stop at the first '/'. int slashpos = buf.indexOf("/"); - // Check special case of file: with no slashes after file: + // Check special cases of file: or cdms3: with no slashes after: if (url.startsWith("file:") && "/\\".indexOf(url.charAt(5)) < 0) { allprotocols.add("file"); + } else if (url.startsWith("cdms3:") && "/\\".indexOf(url.charAt(6)) < 0) { + allprotocols.add("cdms3"); } else if (slashpos >= 0) { // Remove everything after the first slash buf.delete(slashpos + 1, buf.length()); @@ -126,7 +132,7 @@ public static DatasetUrl findDatasetUrl(String orgLocation) throws IOException { } pos = location.lastIndexOf('?'); String query = null; - if (pos >= 0) { + if (pos >= 0 && !leadProtocol.equals("cdms3")) { query = trueUrl.substring(pos + 1); trueUrl = trueUrl.substring(0, pos); } @@ -145,9 +151,10 @@ public static DatasetUrl findDatasetUrl(String orgLocation) throws IOException { // - we have file:// or file:; we need to see if // the extension can help, otherwise, start defaulting. // - we have a simple url: e.g. http://... ; contact the server - if (leadProtocol.equals("file")) { + if (leadProtocol.equals("file") || leadProtocol.equals("cdms3")) { serviceType = decodePathExtension(trueUrl); // look at the path extension - if (serviceType == null && checkIfNcml(new File(location))) { + // If it's a S3 file, it is expensive to peak inside to check if it's ncml, so we will only check extension + if (serviceType == null && !leadProtocol.equals("cdms3") && checkIfNcml(new File(location))) { serviceType = ServiceType.NCML; } } else { @@ -161,11 +168,10 @@ public static DatasetUrl findDatasetUrl(String orgLocation) throws IOException { } } } - if (serviceType == ServiceType.NCML) { // ?? // If lead protocol was null, then pretend it was a file // Note that technically, this should be 'file://' - trueUrl = (allProtocols.isEmpty() ? "file:" + trueUrl : location); + trueUrl = (allProtocols.isEmpty() ? "file:" + trueUrl : trueUrl); } // Add back the query and fragment (if any) @@ -287,9 +293,10 @@ private static ServiceType decodePathExtension(String path) { if (path.endsWith(".dds") || path.endsWith(".das") || path.endsWith(".dods")) return ServiceType.OPENDAP; - if (path.endsWith(".dmr") || path.endsWith(".dap") || path.endsWith(".dsr")) + if (path.matches("^.*[.](dmr|dap|dsr)([.](xml|html))?$")) return ServiceType.DAP4; + // This has to be last so that DAP4 request are not mis-identified as NCML. if (path.endsWith(".xml") || path.endsWith(".ncml")) return ServiceType.NCML; return null; @@ -365,7 +372,7 @@ private static ServiceType disambiguateHttp(String location) throws IOException checkDap2 = true; } - if (location.contains("dap4")) { + if (location.contains("dap4") || location.contains("d4ts")) { ServiceType result = checkIfDap4(location); if (result != null) return result; @@ -445,28 +452,26 @@ private static ServiceType checkIfDods(String location) throws IOException { // check for dmr private static ServiceType checkIfDap4(String location) throws IOException { - // Strip off any trailing DAP4 prefix - if (location.endsWith(".dap")) - location = location.substring(0, location.length() - ".dap".length()); - else if (location.endsWith(".dmr")) - location = location.substring(0, location.length() - ".dmr".length()); - else if (location.endsWith(".dmr.xml")) - location = location.substring(0, location.length() - ".dmr.xml".length()); - else if (location.endsWith(".dsr")) - location = location.substring(0, location.length() - ".dsr".length()); - try (HTTPMethod method = HTTPFactory.Get(location + ".dmr.xml")) { + if (location.matches("^.*[.](dmr|dap|dsr)([.](xml|html))?$")) { + // Strip off any trailing DAP4 suffix(es) + if (location.endsWith(".xml")) + location = location.substring(0, location.length() - ".xml".length()); + else if (location.endsWith(".html")) + location = location.substring(0, location.length() - ".html".length()); + // location must end with dap, dmr, or dsr; strip it off + location = location.substring(0, location.length() - ".dxx".length()); + } + location = location + ".dsr.xml"; // get known dap4 response + try (HTTPMethod method = HTTPFactory.Get(location)) { int status = method.execute(); if (status == HTTP_OK) { - Optional value = method.getResponseHeaderValue("Content-Type"); + Optional value = method.getResponseHeaderValue("Content-Description"); if (value.isPresent()) { - if (value.get().startsWith("application/vnd.opendap.org")) + if (value.get().contains("application/vnd.opendap.dap4")) return ServiceType.DAP4; } } - if (status == HTTP_UNAUTHORIZED || status == HTTP_FORBIDDEN) - throw new IOException("Unauthorized to open dataset " + location); - - // not dods + // not dap4 return null; } } diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/EnhanceScaleMissingUnsigned.java b/cdm/core/src/main/java/ucar/nc2/dataset/EnhanceScaleMissingUnsigned.java index 16fc11a629..7175820f6d 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/EnhanceScaleMissingUnsigned.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/EnhanceScaleMissingUnsigned.java @@ -31,14 +31,14 @@ *
  • Values will be {@link DataType#widenNumber widened}, which effectively reinterprets signed data as unsigned * data.
  • *
  • To accommodate the unsigned conversion, the variable's data type will be changed to the - * {@link EnhanceScaleMissingUnsignedImpl#nextLarger(DataType) next larger type}.
  • + * {@link ucar.nc2.filter.FilterHelpers#nextLarger(DataType) next larger type}. * * *

    Implementation rules for scale/offset

    * *
      *
    1. If scale_factor and/or add_offset variable attributes are present, then this is a "packed" Variable.
    2. - *
    3. The data type of the variable will be set to the {@link EnhanceScaleMissingUnsignedImpl#largestOf largest of}: + *
    4. The data type of the variable will be set to the {@link ucar.nc2.filter.FilterHelpers#largestOf largest of}: *
        *
      • the original data type
      • *
      • the unsigned conversion type, if applicable
      • @@ -117,7 +117,9 @@ * * @author caron * @author cwardgar + * @deprecated use implementations in Filter package */ +@Deprecated public interface EnhanceScaleMissingUnsigned extends IsMissingEvaluator { /** true if Variable data will be converted using scale and offset */ boolean hasScaleOffset(); diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/EnhanceScaleMissingUnsignedImpl.java b/cdm/core/src/main/java/ucar/nc2/dataset/EnhanceScaleMissingUnsignedImpl.java deleted file mode 100644 index 7a296e4b90..0000000000 --- a/cdm/core/src/main/java/ucar/nc2/dataset/EnhanceScaleMissingUnsignedImpl.java +++ /dev/null @@ -1,628 +0,0 @@ -/* - * Copyright (c) 1998-2020 John Caron and University Corporation for Atmospheric Research/Unidata - * See LICENSE for license information. - */ -package ucar.nc2.dataset; - -import java.util.Set; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ucar.ma2.*; -import ucar.nc2.*; -import ucar.nc2.constants.CDM; -import ucar.nc2.constants.DataFormatType; -import ucar.nc2.dataset.NetcdfDataset.Enhance; -import ucar.nc2.iosp.netcdf3.N3iosp; -import ucar.nc2.util.Misc; -import javax.annotation.Nonnull; -import java.lang.invoke.MethodHandles; -import java.util.Arrays; -import static ucar.ma2.DataType.*; - -/** - * Implementation of EnhanceScaleMissingUnsigned for unsigned data, scale/offset packed data, and missing data. - * - * @author caron - * @author cwardgar - * @see EnhanceScaleMissingUnsigned - */ -class EnhanceScaleMissingUnsignedImpl implements EnhanceScaleMissingUnsigned { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - - private DataType origDataType, unsignedConversionType, scaledOffsetType; - - // defaults from NetcdfDataset modes - private boolean invalidDataIsMissing = NetcdfDataset.invalidDataIsMissing; - private boolean fillValueIsMissing = NetcdfDataset.fillValueIsMissing; - private boolean missingDataIsMissing = NetcdfDataset.missingDataIsMissing; - - private boolean useScaleOffset; - private double scale = 1.0, offset; - - private boolean hasValidRange, hasValidMin, hasValidMax; - private double validMin = -Double.MAX_VALUE, validMax = Double.MAX_VALUE; - - private boolean hasFillValue; - private double fillValue; // LOOK: making it double not really correct. What about CHAR? - - private boolean hasMissingValue; - private double[] missingValue; // LOOK: also wrong to make double, for the same reason. - - private DataType.Signedness signedness; - - - /** - * Constructor, when you dont want anything done. - */ - EnhanceScaleMissingUnsignedImpl() {} - - /** - * Constructor, default values. - * - * @param forVar the Variable to decorate. - */ - EnhanceScaleMissingUnsignedImpl(VariableDS forVar, Set enhancements) { - this(forVar, enhancements, NetcdfDataset.fillValueIsMissing, NetcdfDataset.invalidDataIsMissing, - NetcdfDataset.missingDataIsMissing); - } - - /** - * Constructor. - * If scale/offset attributes are found, remove them from the decorated variable. - * - * @param forVar the Variable to decorate. - * @param fillValueIsMissing use _FillValue for isMissing() - * @param invalidDataIsMissing use valid_range for isMissing() - * @param missingDataIsMissing use missing_value for isMissing() - */ - EnhanceScaleMissingUnsignedImpl(VariableDS forVar, Set enhancements, boolean fillValueIsMissing, - boolean invalidDataIsMissing, boolean missingDataIsMissing) { - this.fillValueIsMissing = fillValueIsMissing; - this.invalidDataIsMissing = invalidDataIsMissing; - this.missingDataIsMissing = missingDataIsMissing; - - this.origDataType = forVar.getDataType(); - this.unsignedConversionType = origDataType; - - // unsignedConversionType is initialized to origDataType, and origDataType may be a non-integral type that doesn't - // have an "unsigned flavor" (such as FLOAT and DOUBLE). Furthermore, unsignedConversionType may start out as - // integral, but then be widened to non-integral (i.e. LONG -> DOUBLE). For these reasons, we cannot rely upon - // unsignedConversionType to store the signedness of the variable. We need a separate field. - this.signedness = origDataType.getSignedness(); - - // In the event of conflict, "unsigned" wins. Potential conflicts include: - // 1. origDataType is unsigned, but variable has "_Unsigned == false" attribute. - // 2. origDataType is signed, but variable has "_Unsigned == true" attribute. - if (signedness == Signedness.SIGNED) { - String unsignedAtt = forVar.attributes().findAttributeString(CDM.UNSIGNED, null); - if (unsignedAtt != null && unsignedAtt.equalsIgnoreCase("true")) { - this.signedness = Signedness.UNSIGNED; - } - } - - if (signedness == Signedness.UNSIGNED) { - // We may need a larger data type to hold the results of the unsigned conversion. - this.unsignedConversionType = nextLarger(origDataType).withSignedness(Signedness.UNSIGNED); - logger.debug("assign unsignedConversionType = {}", unsignedConversionType); - } - - DataType scaleType = null, offsetType = null, validType = null; - logger.debug("{} for Variable = {}", getClass().getSimpleName(), forVar.getShortName()); - - Attribute scaleAtt = forVar.findAttribute(CDM.SCALE_FACTOR); - if (scaleAtt != null && !scaleAtt.isString()) { - scaleType = getAttributeDataType(scaleAtt); - scale = convertUnsigned(scaleAtt.getNumericValue(), scaleType).doubleValue(); - useScaleOffset = enhancements.contains(Enhance.ApplyScaleOffset); - logger.debug("scale = {} type = {}", scale, scaleType); - } - - Attribute offsetAtt = forVar.findAttribute(CDM.ADD_OFFSET); - if (offsetAtt != null && !offsetAtt.isString()) { - offsetType = getAttributeDataType(offsetAtt); - offset = convertUnsigned(offsetAtt.getNumericValue(), offsetType).doubleValue(); - useScaleOffset = enhancements.contains(Enhance.ApplyScaleOffset); - logger.debug("offset = {}", offset); - } - - ////// missing data : valid_range. assume here its in units of unpacked data. correct this below - Attribute validRangeAtt = forVar.findAttribute(CDM.VALID_RANGE); - if (validRangeAtt != null && !validRangeAtt.isString() && validRangeAtt.getLength() > 1) { - validType = getAttributeDataType(validRangeAtt); - validMin = convertUnsigned(validRangeAtt.getNumericValue(0), validType).doubleValue(); - validMax = convertUnsigned(validRangeAtt.getNumericValue(1), validType).doubleValue(); - hasValidRange = true; - logger.debug("valid_range = {} {}", validMin, validMax); - } - - Attribute validMinAtt = forVar.findAttribute(CDM.VALID_MIN); - Attribute validMaxAtt = forVar.findAttribute(CDM.VALID_MAX); - - // Only process the valid_min and valid_max attributes if valid_range isn't present. - if (!hasValidRange) { - if (validMinAtt != null && !validMinAtt.isString()) { - validType = getAttributeDataType(validMinAtt); - validMin = convertUnsigned(validMinAtt.getNumericValue(), validType).doubleValue(); - hasValidMin = true; - logger.debug("valid_min = {}", validMin); - } - - if (validMaxAtt != null && !validMaxAtt.isString()) { - validType = largestOf(validType, getAttributeDataType(validMaxAtt)); - validMax = convertUnsigned(validMaxAtt.getNumericValue(), validType).doubleValue(); - hasValidMax = true; - logger.debug("valid_min = {}", validMax); - } - - if (hasValidMin && hasValidMax) { - hasValidRange = true; - } - } - - /// _FillValue - Attribute fillValueAtt = forVar.findAttribute(CDM.FILL_VALUE); - if (fillValueAtt != null && !fillValueAtt.isString()) { - DataType fillType = getAttributeDataType(fillValueAtt); - fillValue = convertUnsigned(fillValueAtt.getNumericValue(), fillType).doubleValue(); - fillValue = applyScaleOffset(fillValue); // This will fail when _FillValue is CHAR. - hasFillValue = true; - } else { - // No _FillValue attribute found. Instead, if file is NetCDF and variable is numeric, use the default fill value. - String fileTypeId = forVar.orgFileTypeId; - boolean isNetcdfIosp = DataFormatType.NETCDF.getDescription().equals(fileTypeId) - || DataFormatType.NETCDF4.getDescription().equals(fileTypeId); - - if (isNetcdfIosp) { - if (unsignedConversionType.isNumeric()) { - fillValue = applyScaleOffset(N3iosp.getFillValueDefault(unsignedConversionType)); - hasFillValue = true; - } - } - } - - /// missing_value - Attribute missingValueAtt = forVar.findAttribute(CDM.MISSING_VALUE); - if (missingValueAtt != null) { - if (missingValueAtt.isString()) { - String svalue = missingValueAtt.getStringValue(); - if (origDataType == DataType.CHAR) { - missingValue = new double[1]; - if (svalue.isEmpty()) { - missingValue[0] = 0; - } else { - missingValue[0] = svalue.charAt(0); - } - - hasMissingValue = true; - } else { // not a CHAR - try to fix problem where they use a numeric value as a String attribute - try { - missingValue = new double[1]; - missingValue[0] = Double.parseDouble(svalue); - hasMissingValue = true; - } catch (NumberFormatException ex) { - logger.debug("String missing_value not parseable as double = {}", missingValueAtt.getStringValue()); - } - } - } else { // not a string - DataType missType = getAttributeDataType(missingValueAtt); - - missingValue = new double[missingValueAtt.getLength()]; - for (int i = 0; i < missingValue.length; i++) { - missingValue[i] = convertUnsigned(missingValueAtt.getNumericValue(i), missType).doubleValue(); - missingValue[i] = applyScaleOffset(missingValue[i]); - } - logger.debug("missing_data: {}", Arrays.toString(missingValue)); - - for (double mv : missingValue) { - if (!Double.isNaN(mv)) { - hasMissingValue = true; // dont need to do anything if its already a NaN - break; - } - } - } - } - - /// assign convertedDataType if needed - if (useScaleOffset) { - scaledOffsetType = largestOf(unsignedConversionType, scaleType, offsetType).withSignedness(signedness); - logger.debug("assign scaledOffsetType = {}", scaledOffsetType); - - // validData may be packed or unpacked - if (hasValidData()) { - if (rank(validType) == rank(largestOf(scaleType, offsetType)) - && rank(validType) > rank(unsignedConversionType)) { - // If valid_range is the same type as the wider of scale_factor and add_offset, PLUS - // it is wider than the (packed) data, we know that the valid_range values were stored as unpacked. - // We already assumed that this was the case when we first read the attribute values, so there's - // nothing for us to do here. - } else { - // Otherwise, the valid_range values were stored as packed. So now we must unpack them. - if (hasValidRange || hasValidMin) { - validMin = applyScaleOffset(validMin); - } - if (hasValidRange || hasValidMax) { - validMax = applyScaleOffset(validMax); - } - } - // During the scaling process, it is possible that the valid minimum and maximum values have effectively been - // swapped (for example, when the scale value is negative). Go ahead and check to make sure the valid min is - // actually less than the valid max, and if not, fix it. See https://github.com/Unidata/netcdf-java/issues/572. - if (validMin > validMax) { - double tmp = validMin; - validMin = validMax; - validMax = tmp; - } - } - } - } - - // Get the data type of an attribute. Make it unsigned if the variable is unsigned. - private DataType getAttributeDataType(Attribute attribute) { - DataType dataType = attribute.getDataType(); - if (signedness == Signedness.UNSIGNED) { - // If variable is unsigned, make its integral attributes unsigned too. - dataType = dataType.withSignedness(signedness); - } - return dataType; - } - - /** - * Returns a distinct integer for each of the {@link DataType#isNumeric() numeric} data types that can be used to - * (roughly) order them by the range of the DataType. {@code BYTE < UBYTE < SHORT < USHORT < INT < UINT < - * LONG < ULONG < FLOAT < DOUBLE}. {@code -1} will be returned for all non-numeric data types. - * - * @param dataType a numeric data type. - * @return a distinct integer for each of the numeric data types that can be used to (roughly) order them by size. - */ - public static int rank(DataType dataType) { - if (dataType == null) { - return -1; - } - - switch (dataType) { - case BYTE: - return 0; - case UBYTE: - return 1; - case SHORT: - return 2; - case USHORT: - return 3; - case INT: - return 4; - case UINT: - return 5; - case LONG: - return 6; - case ULONG: - return 7; - case FLOAT: - return 8; - case DOUBLE: - return 9; - default: - return -1; - } - } - - /** - * Returns the data type that is the largest among the arguments. Relative sizes of data types are determined via - * {@link #rank(DataType)}. - * - * @param dataTypes an array of numeric data types. - * @return the data type that is the largest among the arguments. - */ - public static DataType largestOf(DataType... dataTypes) { - DataType widest = null; - for (DataType dataType : dataTypes) { - if (widest == null) { - widest = dataType; - } else if (rank(dataType) > rank(widest)) { - widest = dataType; - } - } - return widest; - } - - /** - * Returns the smallest numeric data type that: - *
          - *
        1. can hold a larger integer than {@code dataType} can
        2. - *
        3. if integral, has the same signedness as {@code dataType}
        4. - *
        - * The relative sizes of data types are determined in a manner consistent with {@link #rank(DataType)}. - *

        - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
        ArgumentResult
        BYTESHORT
        UBYTEUSHORT
        SHORTINT
        USHORTUINT
        INTLONG
        UINTULONG
        LONGDOUBLE
        ULONGDOUBLE
        Any other data typeJust return argument
        - *

        - * The returned type is intended to be just big enough to hold the result of performing an unsigned conversion of a - * value of the smaller type. For example, the {@code byte} value {@code -106} equals {@code 150} when interpreted - * as unsigned. That won't fit in a (signed) {@code byte}, but it will fit in a {@code short}. - * - * @param dataType an integral data type. - * @return the next larger type. - */ - public static DataType nextLarger(DataType dataType) { - switch (dataType) { - case BYTE: - return SHORT; - case UBYTE: - return USHORT; - case SHORT: - return INT; - case USHORT: - return UINT; - case INT: - return LONG; - case UINT: - return ULONG; - case LONG: - case ULONG: - return DOUBLE; - default: - return dataType; - } - } - - @Override - public double getScaleFactor() { - return scale; - } - - @Override - public double getOffset() { - return offset; - } - - @Override - public Signedness getSignedness() { - return signedness; - } - - @Override - public DataType getScaledOffsetType() { - return scaledOffsetType; - } - - @Nonnull - @Override - public DataType getUnsignedConversionType() { - return unsignedConversionType; - } - - @Override - public boolean hasValidData() { - return hasValidRange || hasValidMin || hasValidMax; - } - - @Override - public double getValidMin() { - return validMin; - } - - @Override - public double getValidMax() { - return validMax; - } - - @Override - public boolean isInvalidData(double val) { - // valid_min and valid_max may have been multiplied by scale_factor, which could be a float, not a double. - // That potential loss of precision means that we cannot do the nearlyEquals() comparison with - // Misc.defaultMaxRelativeDiffDouble. - boolean greaterThanOrEqualToValidMin = - Misc.nearlyEquals(val, validMin, Misc.defaultMaxRelativeDiffFloat) || val > validMin; - boolean lessThanOrEqualToValidMax = - Misc.nearlyEquals(val, validMax, Misc.defaultMaxRelativeDiffFloat) || val < validMax; - - return (hasValidRange && !(greaterThanOrEqualToValidMin && lessThanOrEqualToValidMax)) - || (hasValidMin && !greaterThanOrEqualToValidMin) || (hasValidMax && !lessThanOrEqualToValidMax); - } - - @Override - public boolean hasFillValue() { - return hasFillValue; - } - - @Override - public boolean isFillValue(double val) { - return hasFillValue && Misc.nearlyEquals(val, fillValue, Misc.defaultMaxRelativeDiffFloat); - } - - @Override - public double getFillValue() { - return fillValue; - } - - @Override - public boolean hasScaleOffset() { - return useScaleOffset; - } - - @Override - public boolean hasMissingValue() { - return hasMissingValue; - } - - @Override - public boolean isMissingValue(double val) { - if (!hasMissingValue) { - return false; - } - for (double aMissingValue : missingValue) { - if (Misc.nearlyEquals(val, aMissingValue, Misc.defaultMaxRelativeDiffFloat)) { - return true; - } - } - return false; - } - - @Override - public double[] getMissingValues() { - return missingValue; - } - - @Override - public void setFillValueIsMissing(boolean b) { - this.fillValueIsMissing = b; - } - - @Override - public void setInvalidDataIsMissing(boolean b) { - this.invalidDataIsMissing = b; - } - - @Override - public void setMissingDataIsMissing(boolean b) { - this.missingDataIsMissing = b; - } - - @Override - public boolean hasMissing() { - return (invalidDataIsMissing && hasValidData()) || (fillValueIsMissing && hasFillValue()) - || (missingDataIsMissing && hasMissingValue()); - } - - @Override - public boolean isMissing(double val) { - if (Double.isNaN(val)) { - return true; - } else { - return (missingDataIsMissing && isMissingValue(val)) || (fillValueIsMissing && isFillValue(val)) - || (invalidDataIsMissing && isInvalidData(val)); - } - } - - - @Override - public Number convertUnsigned(Number value) { - return convertUnsigned(value, signedness); - } - - private static Number convertUnsigned(Number value, DataType dataType) { - return convertUnsigned(value, dataType.getSignedness()); - } - - private static Number convertUnsigned(Number value, Signedness signedness) { - if (signedness == Signedness.UNSIGNED) { - // Handle integral types that should be treated as unsigned by widening them if necessary. - return DataType.widenNumberIfNegative(value); - } else { - return value; - } - } - - @Override - public Array convertUnsigned(Array in) { - return convert(in, true, false, false); - } - - @Override - public double applyScaleOffset(Number value) { - double convertedValue = value.doubleValue(); - return useScaleOffset ? scale * convertedValue + offset : convertedValue; - } - - @Override - public Array applyScaleOffset(Array in) { - return convert(in, false, true, false); - } - - @Override - public Number convertMissing(Number value) { - return isMissing(value.doubleValue()) ? Double.NaN : value; - } - - @Override - public Array convertMissing(Array in) { - return convert(in, false, false, true); - } - - @Override - public Array convert(Array in, boolean convertUnsigned, boolean applyScaleOffset, boolean convertMissing) { - if (!in.getDataType().isNumeric() || (!convertUnsigned && !applyScaleOffset && !convertMissing)) { - return in; // Nothing to do! - } - - if (getSignedness() == Signedness.SIGNED) { - convertUnsigned = false; - } - if (!hasScaleOffset()) { - applyScaleOffset = false; - } - - DataType outType = origDataType; - if (convertUnsigned) { - outType = getUnsignedConversionType(); - } - if (applyScaleOffset) { - outType = getScaledOffsetType(); - } - - if (outType != DataType.FLOAT && outType != DataType.DOUBLE) { - convertMissing = false; - } - - Array out = Array.factory(outType, in.getShape()); - IndexIterator iterIn = in.getIndexIterator(); - IndexIterator iterOut = out.getIndexIterator(); - - while (iterIn.hasNext()) { - Number value = (Number) iterIn.getObjectNext(); - - if (convertUnsigned) { - value = convertUnsigned(value); - } - if (applyScaleOffset) { - value = applyScaleOffset(value); - } - if (convertMissing) { - value = convertMissing(value); - } - - iterOut.setObjectNext(value); - } - - return out; - } -} diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/NetcdfDataset.java b/cdm/core/src/main/java/ucar/nc2/dataset/NetcdfDataset.java index 642152cee4..12f1258970 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/NetcdfDataset.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/NetcdfDataset.java @@ -98,13 +98,13 @@ public enum Enhance { * Convert unsigned values to signed values. * For {@link ucar.nc2.constants.CDM#UNSIGNED} variables, reinterpret the bit patterns of any * negative values as unsigned. The result will be positive values that must be stored in a - * {@link EnhanceScaleMissingUnsignedImpl#nextLarger larger data type}. + * {@link ucar.nc2.filter.FilterHelpers#nextLarger larger data type}. */ ConvertUnsigned, /** Apply scale and offset to values, promoting the data type if needed. */ ApplyScaleOffset, /** - * Replace {@link EnhanceScaleMissingUnsigned#isMissing missing} data with NaNs, for efficiency. Note that if the + * Replace {@link ucar.nc2.filter.ConvertMissing#isMissing missing} data with NaNs, for efficiency. Note that if the * enhanced data type is not {@code FLOAT} or {@code DOUBLE}, this has no effect. */ ConvertMissing, @@ -115,10 +115,21 @@ public enum Enhance { * every dimension in a variable has a corresponding coordinate variable. */ IncompleteCoordSystems, + /** + * Calculate mean and standard deviation and apply to data: (z-mean)/standard_deviation. + * If the enhanced data type is not {@code FLOAT} or {@code DOUBLE}, this has no effect. + */ + ApplyStandardizer, + /** + * Calculate minimum value and range (maximum - minimum) and apply to data: (z - min)/range. + * If the enhanced data type is not {@code FLOAT} or {@code DOUBLE}, this has no effect. + */ + ApplyNormalizer, } - private static Set EnhanceAll = Collections.unmodifiableSet(EnumSet.of(Enhance.ConvertEnums, - Enhance.ConvertUnsigned, Enhance.ApplyScaleOffset, Enhance.ConvertMissing, Enhance.CoordSystems)); + private static Set EnhanceAll = + Collections.unmodifiableSet(EnumSet.of(Enhance.ConvertEnums, Enhance.ConvertUnsigned, Enhance.ApplyScaleOffset, + Enhance.ConvertMissing, Enhance.CoordSystems, Enhance.ApplyStandardizer, Enhance.ApplyNormalizer)); private static Set EnhanceNone = Collections.unmodifiableSet(EnumSet.noneOf(Enhance.class)); private static Set defaultEnhanceMode = EnhanceAll; @@ -1333,12 +1344,16 @@ public void addCoordinateTransform(CoordinateTransform ct) { public CoordinateAxis addCoordinateAxis(VariableDS v) { if (v == null) return null; + + final List coordCopy = new ArrayList<>(coordAxes); + CoordinateAxis oldVar = findCoordinateAxis(v.getFullName()); if (oldVar != null) - coordAxes.remove(oldVar); + coordCopy.remove(oldVar); CoordinateAxis ca = (v instanceof CoordinateAxis) ? (CoordinateAxis) v : CoordinateAxis.factory(this, v); - coordAxes.add(ca); + coordCopy.add(ca); + this.coordAxes = coordCopy; if (v.isMemberOfStructure()) { Structure parentOrg = v.getParentStructure(); // gotta be careful to get the wrapping parent @@ -1626,6 +1641,10 @@ public Builder toBuilder() { return addLocalFieldsToBuilder(builder()); } + /** + * @deprecated Use NetcdfDataset.builder() + */ + @Deprecated public NetcdfDataset(NetcdfFile.Builder builder) { super(builder); // LOOK this.orgFile = builder.orgFile; diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/StructureDS.java b/cdm/core/src/main/java/ucar/nc2/dataset/StructureDS.java index c2c41df0ed..0885434781 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/StructureDS.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/StructureDS.java @@ -127,7 +127,8 @@ public StructureDS(NetcdfDataset ds, Group group, Structure parent, String short } // for section and slice and select - + /** @deprecated Use {@link #toBuilder()} */ + @Deprecated @Override protected StructureDS copy() { return new StructureDS(getParentGroupOrRoot(), this); diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/StructurePseudoDS.java b/cdm/core/src/main/java/ucar/nc2/dataset/StructurePseudoDS.java index 284f339007..0b5ac5a1c1 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/StructurePseudoDS.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/StructurePseudoDS.java @@ -108,6 +108,8 @@ public StructurePseudoDS(NetcdfDataset ncfile, Group group, String shortName, Li calcElementSize(); } + /** @deprecated Use {@link #toBuilder()} */ + @Deprecated @Override protected StructureDS copy() { throw new UnsupportedOperationException(); diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/VariableDS.java b/cdm/core/src/main/java/ucar/nc2/dataset/VariableDS.java index fb833914d2..b552f2f63d 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/VariableDS.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/VariableDS.java @@ -9,8 +9,16 @@ import ucar.ma2.*; import ucar.nc2.*; import ucar.nc2.constants.CDM; +import ucar.nc2.constants.DataFormatType; import ucar.nc2.dataset.NetcdfDataset.Enhance; +import ucar.nc2.filter.ConvertMissing; +import ucar.nc2.filter.FilterHelpers; +import ucar.nc2.filter.ScaleOffset; +import ucar.nc2.filter.Standardizer; +import ucar.nc2.filter.Normalizer; +import ucar.nc2.filter.UnsignedConversion; import ucar.nc2.internal.dataset.CoordinatesHelper; +import ucar.nc2.iosp.netcdf3.N3iosp; import ucar.nc2.util.CancelTask; import javax.annotation.Nullable; import java.io.IOException; @@ -161,9 +169,14 @@ protected VariableDS(VariableDS vds, boolean isCopy) { this.orgVar = vds; this.orgDataType = vds.orgDataType; this.orgName = vds.orgName; + this.enhanceMode = vds.enhanceMode; this.enhanceProxy = new EnhancementsImpl(this); // decouple coordinate systems - this.scaleMissingUnsignedProxy = vds.scaleMissingUnsignedProxy; + this.unsignedConversion = vds.unsignedConversion; + this.scaleOffset = vds.scaleOffset; + this.convertMissing = vds.convertMissing; + this.fillValue = vds.getFillValue(); + this.hasFillValue = vds.hasFillValue(); // Add this so that old VariableDS units agrees with new VariableDS units. String units = vds.getUnitsString(); @@ -183,6 +196,8 @@ public NetcdfFile getNetcdfFile() { } // for section and slice + /** @deprecated Use {@link #toBuilder()} */ + @Deprecated @Override protected VariableDS copy() { return new VariableDS(this, true); @@ -223,25 +238,7 @@ public void enhance(Set enhancements) { setDataType(orgDataType); } - // Initialize EnhanceScaleMissingUnsignedImpl. We can't do this in the constructors because this object may not - // contain all of the relevant attributes at that time. NcMLReader is an example of this: the VariableDS is - // constructed first, and then Attributes are added to it later. - this.scaleMissingUnsignedProxy = new EnhanceScaleMissingUnsignedImpl(this, this.enhanceMode); - - if (this.enhanceMode.contains(Enhance.ConvertEnums) && dataType.isEnum()) { - setDataType(DataType.STRING); // LOOK promote data type to STRING ???? - return; // We can return here, because the other conversions don't apply to STRING. - } - - if (this.enhanceMode.contains(Enhance.ConvertUnsigned)) { - // We may need a larger data type to hold the results of the unsigned conversion. - setDataType(scaleMissingUnsignedProxy.getUnsignedConversionType()); - } - - if (this.enhanceMode.contains(Enhance.ApplyScaleOffset) && (dataType.isNumeric() || dataType == DataType.CHAR) - && scaleMissingUnsignedProxy.hasScaleOffset()) { - setDataType(scaleMissingUnsignedProxy.getScaledOffsetType()); - } + createEnhancements(); } boolean needConvert() { @@ -264,8 +261,23 @@ Array convert(Array data, Set enhancements) { if (this.isVariableLength) { return data; } - return scaleMissingUnsignedProxy.convert(data, enhancements.contains(Enhance.ConvertUnsigned), - enhancements.contains(Enhance.ApplyScaleOffset), enhancements.contains(Enhance.ConvertMissing)); + if (enhancements.contains(Enhance.ConvertUnsigned) && unsignedConversion != null) { + data = unsignedConversion.convertUnsigned(data); + } + if (enhancements.contains(Enhance.ApplyScaleOffset) && scaleOffset != null) { + data = scaleOffset.removeScaleOffset(data); + } + if (enhancements.contains(Enhance.ConvertMissing) && convertMissing != null + && (dataType == DataType.FLOAT || dataType == DataType.DOUBLE)) { + data = convertMissing.convertMissing(data); + } + if (enhancements.contains(Enhance.ApplyStandardizer) && standardizer != null) { + data = standardizer.convert(data); + } + if (enhancements.contains(Enhance.ApplyNormalizer) && normalizer != null) { + data = normalizer.convert(data); + } + return data; } } @@ -424,12 +436,12 @@ public void setCaching(boolean caching) { @Override protected Array _read() throws IOException { Array result; - // check if already cached - caching in VariableDS only done explicitly by app - if (hasCachedData()) + if (hasCachedData()) { result = super._read(); - else + } else { result = proxyReader.reallyRead(this, null); + } return convert(result); } @@ -438,15 +450,16 @@ protected Array _read() throws IOException { @Override protected Array _read(Section section) throws IOException, InvalidRangeException { // really a full read - if ((null == section) || section.computeSize() == getSize()) + if ((null == section) || section.computeSize() == getSize()) { return _read(); + } Array result; - if (hasCachedData()) + if (hasCachedData()) { result = super._read(section); - else + } else { result = proxyReader.reallyRead(this, section, null); - + } return convert(result); } @@ -527,8 +540,8 @@ public Array getMissingDataArray(int[] shape) { } Array array = Array.factoryConstant(getDataType(), shape, storage); - if (scaleMissingUnsignedProxy.hasFillValue()) { - array.setObject(0, scaleMissingUnsignedProxy.getFillValue()); + if (hasFillValue) { + array.setObject(0, fillValue); } return array; } @@ -539,26 +552,28 @@ public Array getMissingDataArray(int[] shape) { * @param f put info here */ public void showScaleMissingProxy(Formatter f) { - f.format("has missing = %s%n", scaleMissingUnsignedProxy.hasMissing()); - if (scaleMissingUnsignedProxy.hasMissing()) { - if (scaleMissingUnsignedProxy.hasMissingValue()) { - f.format(" missing value(s) = "); - for (double d : scaleMissingUnsignedProxy.getMissingValues()) - f.format(" %f", d); - f.format("%n"); + f.format("has missing = %s%n", convertMissing != null); + if (convertMissing != null) { + if (convertMissing.hasMissing()) { + if (convertMissing.hasMissingValue()) { + f.format(" missing value(s) = "); + for (double d : convertMissing.getMissingValues()) + f.format(" %f", d); + f.format("%n"); + } + if (convertMissing.hasFillValue()) + f.format(" fillValue = %f%n", convertMissing.getFillValue()); + if (convertMissing.hasValidData()) + f.format(" valid min/max = [%f,%f]%n", convertMissing.getValidMin(), convertMissing.getValidMax()); } - if (scaleMissingUnsignedProxy.hasFillValue()) - f.format(" fillValue = %f%n", scaleMissingUnsignedProxy.getFillValue()); - if (scaleMissingUnsignedProxy.hasValidData()) - f.format(" valid min/max = [%f,%f]%n", scaleMissingUnsignedProxy.getValidMin(), - scaleMissingUnsignedProxy.getValidMax()); - } - f.format("FillValue or default = %s%n", scaleMissingUnsignedProxy.getFillValue()); - - f.format("%nhas scale/offset = %s%n", scaleMissingUnsignedProxy.hasScaleOffset()); - if (scaleMissingUnsignedProxy.hasScaleOffset()) { - double offset = scaleMissingUnsignedProxy.applyScaleOffset(0.0); - double scale = scaleMissingUnsignedProxy.applyScaleOffset(1.0) - offset; + f.format("FillValue or default = %s%n", convertMissing.getFillValue()); + } + + + f.format("%nhas scale/offset = %s%n", scaleOffset != null); + if (scaleOffset != null) { + double offset = scaleOffset.applyScaleOffset(0.0); + double scale = scaleOffset.applyScaleOffset(1.0) - offset; f.format(" scale_factor = %f add_offset = %f%n", scale, offset); } f.format("original data type = %s%n", orgDataType); @@ -607,149 +622,180 @@ public void removeCoordinateSystem(CoordinateSystem cs) { @Override public boolean hasScaleOffset() { - return scaleMissingUnsignedProxy.hasScaleOffset(); + return scaleOffset != null; } @Override public double getScaleFactor() { - return scaleMissingUnsignedProxy.getScaleFactor(); + return scaleOffset != null ? scaleOffset.getScaleFactor() : 1; } @Override public double getOffset() { - return scaleMissingUnsignedProxy.getOffset(); + return scaleOffset != null ? scaleOffset.getOffset() : 0; } @Override public boolean hasMissing() { - return scaleMissingUnsignedProxy.hasMissing(); + return convertMissing != null && convertMissing.hasMissing(); } @Override public boolean isMissing(double val) { - return scaleMissingUnsignedProxy.isMissing(val); + if (Double.isNaN(val)) { + return true; + } + return convertMissing != null && convertMissing.isMissing(val); } @Override public boolean hasValidData() { - return scaleMissingUnsignedProxy.hasValidData(); + return convertMissing != null && convertMissing.hasMissingValue(); } @Override public double getValidMin() { - return scaleMissingUnsignedProxy.getValidMin(); + return convertMissing != null ? convertMissing.getValidMin() : -Double.MAX_VALUE; } @Override public double getValidMax() { - return scaleMissingUnsignedProxy.getValidMax(); + return convertMissing != null ? convertMissing.getValidMax() : Double.MAX_VALUE; } @Override public boolean isInvalidData(double val) { - return scaleMissingUnsignedProxy.isInvalidData(val); + return convertMissing != null && convertMissing.isInvalidData(val); } @Override public boolean hasFillValue() { - return scaleMissingUnsignedProxy.hasFillValue(); + return hasFillValue; } @Override public double getFillValue() { - return scaleMissingUnsignedProxy.getFillValue(); + return fillValue; } @Override public boolean isFillValue(double val) { - return scaleMissingUnsignedProxy.isFillValue(val); + return convertMissing != null && convertMissing.isFillValue(val); } @Override public boolean hasMissingValue() { - return scaleMissingUnsignedProxy.hasMissingValue(); + return convertMissing != null && convertMissing.hasMissingValue(); } @Override public double[] getMissingValues() { - return scaleMissingUnsignedProxy.getMissingValues(); + return convertMissing != null ? convertMissing.getMissingValues() : new double[] {0}; } @Override public boolean isMissingValue(double val) { - return scaleMissingUnsignedProxy.isMissingValue(val); + return convertMissing != null && convertMissing.isMissingValue(val); } /** @deprecated Use NetcdfDataset.builder() */ @Deprecated @Override public void setFillValueIsMissing(boolean b) { - scaleMissingUnsignedProxy.setFillValueIsMissing(b); + if (convertMissing != null) { + convertMissing.setFillValueIsMissing(b); + } } /** @deprecated Use NetcdfDataset.builder() */ @Deprecated @Override public void setInvalidDataIsMissing(boolean b) { - scaleMissingUnsignedProxy.setInvalidDataIsMissing(b); + if (convertMissing != null) { + convertMissing.setInvalidDataIsMissing(b); + } + } + + public boolean missingDataIsMissing() { + return builder().missingDataIsMissing; + } + + public boolean fillValueIsMissing() { + return builder().fillValueIsMissing; + } + + public boolean invalidDataIsMissing() { + return builder().invalidDataIsMissing; } /** @deprecated Use NetcdfDataset.builder() */ @Deprecated @Override public void setMissingDataIsMissing(boolean b) { - scaleMissingUnsignedProxy.setMissingDataIsMissing(b); + if (convertMissing != null) { + convertMissing.setMissingDataIsMissing(b); + } } @Nullable @Override public DataType getScaledOffsetType() { - return scaleMissingUnsignedProxy.getScaledOffsetType(); + return scaleOffset != null ? scaleOffset.getScaledOffsetType() : dataType; } @Override public DataType getUnsignedConversionType() { - return scaleMissingUnsignedProxy.getUnsignedConversionType(); + return unsignedConversion != null ? unsignedConversion.getOutType() : dataType; } @Override public DataType.Signedness getSignedness() { - return scaleMissingUnsignedProxy.getSignedness(); + return unsignedConversion != null ? unsignedConversion.getSignedness() : dataType.getSignedness(); } @Override public double applyScaleOffset(Number value) { - return scaleMissingUnsignedProxy.applyScaleOffset(value); + return scaleOffset != null ? scaleOffset.removeScaleOffset(value) : value.doubleValue(); } @Override public Array applyScaleOffset(Array data) { - return scaleMissingUnsignedProxy.applyScaleOffset(data); + return scaleOffset != null ? scaleOffset.removeScaleOffset(data) : data; } @Override public Number convertUnsigned(Number value) { - return scaleMissingUnsignedProxy.convertUnsigned(value); + return unsignedConversion != null ? unsignedConversion.convertUnsigned(value) : value; + } + + public Number convertUnsigned(Number value, DataType dataType) { + return unsignedConversion != null ? unsignedConversion.convertUnsigned(value, dataType) : value; } @Override public Array convertUnsigned(Array in) { - return scaleMissingUnsignedProxy.convertUnsigned(in); + return unsignedConversion != null ? unsignedConversion.convertUnsigned(in) : in; } @Override public Number convertMissing(Number value) { - return scaleMissingUnsignedProxy.convertMissing(value); + return convertMissing != null ? convertMissing.convertMissing(value) : value; } @Override public Array convertMissing(Array in) { - return scaleMissingUnsignedProxy.convertMissing(in); + return (convertMissing != null && (dataType == DataType.FLOAT || dataType == DataType.DOUBLE)) + ? convertMissing.convertMissing(in) + : in; } + /** + * @deprecated use implementations in filters package + */ @Override + @Deprecated public Array convert(Array in, boolean convertUnsigned, boolean applyScaleOffset, boolean convertMissing) { - return scaleMissingUnsignedProxy.convert(in, convertUnsigned, applyScaleOffset, convertMissing); + return convertMissing(applyScaleOffset(convertUnsigned(in))); } //////////////////////////////////////////////////////////////////////////////////////////// @@ -757,8 +803,12 @@ public Array convert(Array in, boolean convertUnsigned, boolean applyScaleOffset private EnhancementsImpl enhanceProxy; private List coordSysNames; - // TODO make these final and immutable in 6. - private EnhanceScaleMissingUnsignedImpl scaleMissingUnsignedProxy = new EnhanceScaleMissingUnsignedImpl(); + // TODO make immutable in version 6 + private UnsignedConversion unsignedConversion; + private ScaleOffset scaleOffset; + private Standardizer standardizer; + private Normalizer normalizer; + private ConvertMissing convertMissing; private Set enhanceMode = EnumSet.noneOf(Enhance.class); // The set of enhancements that were made. protected Variable orgVar; // wrap this Variable : use it for the I/O @@ -766,6 +816,9 @@ public Array convert(Array in, boolean convertUnsigned, boolean applyScaleOffset protected String orgName; // in case Variable was renamed, and we need to keep track of the original name String orgFileTypeId; // the original fileTypeId. + private boolean hasFillValue = false; + private double fillValue = Double.MAX_VALUE; + protected VariableDS(Builder builder, Group parentGroup) { super(builder, parentGroup); @@ -773,6 +826,9 @@ protected VariableDS(Builder builder, Group parentGroup) { this.orgVar = builder.orgVar; this.orgDataType = builder.orgDataType; this.orgName = builder.orgName; + if (this.orgDataType == null) { + this.orgDataType = dataType; + } // Make sure that units has been trimmed. // Replace with correct case @@ -785,27 +841,60 @@ protected VariableDS(Builder builder, Group parentGroup) { this.orgFileTypeId = builder.orgFileTypeId; this.enhanceProxy = new EnhancementsImpl(this, builder.units, builder.getDescription()); - this.scaleMissingUnsignedProxy = new EnhanceScaleMissingUnsignedImpl(this, this.enhanceMode); - this.scaleMissingUnsignedProxy.setFillValueIsMissing(builder.fillValueIsMissing); - this.scaleMissingUnsignedProxy.setInvalidDataIsMissing(builder.invalidDataIsMissing); - this.scaleMissingUnsignedProxy.setMissingDataIsMissing(builder.missingDataIsMissing); + this.scaleOffset = builder.scaleOffset; + + createEnhancements(); + + // We have to complete this after the NetcdfDataset is built. + this.coordSysNames = builder.coordSysNames; + } + private void createEnhancements() { + // Enhancement Objects are created if it is contained in Enhance if (this.enhanceMode.contains(Enhance.ConvertEnums) && dataType.isEnum()) { - this.dataType = DataType.STRING; // LOOK promote enum data type to STRING ???? + this.dataType = DataType.STRING; } - if (this.enhanceMode.contains(Enhance.ConvertUnsigned) && !dataType.isEnum()) { - // We may need a larger data type to hold the results of the unsigned conversion. - this.dataType = scaleMissingUnsignedProxy.getUnsignedConversionType(); + if (this.enhanceMode.contains(Enhance.ConvertUnsigned)) { + this.unsignedConversion = UnsignedConversion.createFromVar(this); + this.dataType = unsignedConversion != null ? unsignedConversion.getOutType() : dataType; } - - if (this.enhanceMode.contains(Enhance.ApplyScaleOffset) && (dataType.isNumeric() || dataType == DataType.CHAR) - && scaleMissingUnsignedProxy.hasScaleOffset()) { - this.dataType = scaleMissingUnsignedProxy.getScaledOffsetType(); + if (this.enhanceMode.contains(Enhance.ApplyScaleOffset) && (dataType.isNumeric() || dataType == DataType.CHAR)) { + if (this.scaleOffset == null) { + this.scaleOffset = ScaleOffset.createFromVariable(this); + } + this.dataType = scaleOffset != null ? scaleOffset.getScaledOffsetType() : this.dataType; + } + Attribute standardizerAtt = findAttribute(CDM.STANDARDIZE); + if (standardizerAtt != null && this.enhanceMode.contains(Enhance.ApplyStandardizer) && dataType.isFloatingPoint()) { + this.standardizer = Standardizer.createFromVariable(this); + } + Attribute normalizerAtt = findAttribute(CDM.NORMALIZE); + if (normalizerAtt != null && this.enhanceMode.contains(Enhance.ApplyNormalizer) && dataType.isFloatingPoint()) { + this.normalizer = Normalizer.createFromVariable(this); } - // We have to complete this after the NetcdfDataset is built. - this.coordSysNames = builder.coordSysNames; + // need fill value info before convertMissing + Attribute fillValueAtt = findAttribute(CDM.FILL_VALUE); + if (fillValueAtt != null && !fillValueAtt.isString()) { + DataType fillType = FilterHelpers.getAttributeDataType(fillValueAtt, getSignedness()); + fillValue = applyScaleOffset(convertUnsigned(fillValueAtt.getNumericValue(), fillType).doubleValue()); + hasFillValue = true; + } else { + // No _FillValue attribute found. Instead, if file is NetCDF and variable is numeric, use the default fill value. + boolean isNetcdfIosp = DataFormatType.NETCDF.getDescription().equals(orgFileTypeId) + || DataFormatType.NETCDF4.getDescription().equals(orgFileTypeId); + + if (isNetcdfIosp) { + if (dataType.isNumeric()) { + fillValue = applyScaleOffset(N3iosp.getFillValueDefault(dataType)); + hasFillValue = true; + } + } + } + if (this.enhanceMode.contains(Enhance.ConvertMissing)) { + this.convertMissing = ConvertMissing.createFromVariable(this); + } } public Builder toBuilder() { @@ -817,6 +906,10 @@ protected Builder addLocalFieldsToBuilder(Builder> build builder.setOriginalVariable(this.orgVar).setOriginalDataType(this.orgDataType).setOriginalName(this.orgName) .setOriginalFileTypeId(this.orgFileTypeId).setEnhanceMode(this.enhanceMode).setUnits(this.enhanceProxy.units) .setDesc(this.enhanceProxy.desc); + builder.scaleOffset = this.scaleOffset; + if (this.coordSysNames != null) { + this.coordSysNames.stream().forEach(s -> builder.addCoordinateSystemName(s)); + } return (VariableDS.Builder) super.addLocalFieldsToBuilder(builder); } @@ -859,6 +952,8 @@ public static abstract class Builder> extends Variable.Buil private boolean fillValueIsMissing = NetcdfDataset.fillValueIsMissing; private boolean missingDataIsMissing = NetcdfDataset.missingDataIsMissing; + private ScaleOffset scaleOffset; + private boolean built; protected abstract T self(); @@ -955,6 +1050,7 @@ public T copyFrom(VariableDS.Builder builder) { setFillValueIsMissing(builder.fillValueIsMissing); setInvalidDataIsMissing(builder.invalidDataIsMissing); setMissingDataIsMissing(builder.missingDataIsMissing); + this.scaleOffset = builder.scaleOffset; this.orgVar = builder.orgVar; this.orgDataType = builder.orgDataType; this.orgFileTypeId = builder.orgFileTypeId; diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/conv/CF1Convention.java b/cdm/core/src/main/java/ucar/nc2/dataset/conv/CF1Convention.java index e764baa0bc..b41c1c5b0f 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/conv/CF1Convention.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/conv/CF1Convention.java @@ -424,13 +424,13 @@ protected AxisType getAxisType(NetcdfDataset ncDataset, VariableEnhanced v) { return AxisType.Lon; } - if (sname.equalsIgnoreCase(CF.PROJECTION_X_COORDINATE) || sname.equalsIgnoreCase(CF.GRID_LONGITUDE) - || sname.equalsIgnoreCase("rotated_longitude")) { + if (sname.equalsIgnoreCase(CF.PROJECTION_X_COORDINATE) || sname.equalsIgnoreCase(CF.PROJECTION_X_ANG_COORDINATE) + || sname.equalsIgnoreCase(CF.GRID_LONGITUDE) || sname.equalsIgnoreCase(CF.ROTATED_LONGITUDE)) { return AxisType.GeoX; } - if (sname.equalsIgnoreCase(CF.PROJECTION_Y_COORDINATE) || sname.equalsIgnoreCase(CF.GRID_LATITUDE) - || sname.equalsIgnoreCase("rotated_latitude")) { + if (sname.equalsIgnoreCase(CF.PROJECTION_Y_COORDINATE) || sname.equalsIgnoreCase(CF.PROJECTION_Y_ANG_COORDINATE) + || sname.equalsIgnoreCase(CF.GRID_LATITUDE) || sname.equalsIgnoreCase(CF.ROTATED_LATITUDE)) { return AxisType.GeoY; } diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/transform/AbstractTransformBuilder.java b/cdm/core/src/main/java/ucar/nc2/dataset/transform/AbstractTransformBuilder.java index 981c9856e8..5fa5d01953 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/transform/AbstractTransformBuilder.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/transform/AbstractTransformBuilder.java @@ -6,6 +6,8 @@ package ucar.nc2.dataset.transform; import javax.annotation.Nullable; + +import com.google.common.collect.ImmutableList; import ucar.nc2.*; import ucar.nc2.constants.CDM; import ucar.nc2.constants.CF; @@ -35,27 +37,38 @@ public abstract class AbstractTransformBuilder { * (projection_y_coordinate). */ public static double getFalseEastingScaleFactor(NetcdfDataset ds, AttributeContainer ctv) { - String units = getGeoCoordinateUnits(ds, ctv); + String units = getGeoCoordinateUnits(ds, ctv, ds.getCoordinateAxes()); return getFalseEastingScaleFactor(units); } public static String getGeoCoordinateUnits(NetcdfDataset ds, AttributeContainer ctv) { + return getGeoCoordinateUnits(ds, ctv, ds.getCoordinateAxes()); + } + + public static String getGeoCoordinateUnits(NetcdfDataset ds, AttributeContainer ctv, + ImmutableList coordAxes) { String units = ctv.findAttributeString(CDM.UNITS, null); - if (units == null) { - List axes = ds.getCoordinateAxes(); - for (CoordinateAxis axis : axes) { - if (axis.getAxisType() == AxisType.GeoX) { // kludge - what if there's multiple ones? - Variable v = axis.getOriginalVariable(); // LOOK why original variable ? - units = (v == null) ? axis.getUnitsString() : v.getUnitsString(); - break; - } - } - if (units == null) { - Variable xvar = ds.findVariableByAttribute(null, _Coordinate.AxisType.toString(), AxisType.GeoX.toString()); - if (xvar != null) { - units = xvar.getUnitsString(); - } + if (units != null && !units.equals("")) { + return units; + } + + for (CoordinateAxis axis : coordAxes) { + if (axis.getAxisType() != AxisType.GeoX) { // kludge - what if there's multiple ones? + continue; } + + Variable v = axis.getOriginalVariable(); // LOOK why original variable ? + units = (v == null) ? axis.getUnitsString() : v.getUnitsString(); + break; + } + + if (units != null) { + return units; + } + + Variable xvar = ds.findVariableByAttribute(null, _Coordinate.AxisType.toString(), AxisType.GeoX.toString()); + if (xvar != null) { + units = xvar.getUnitsString(); } return units; } diff --git a/cdm/core/src/main/java/ucar/nc2/dataset/transform/Geostationary.java b/cdm/core/src/main/java/ucar/nc2/dataset/transform/Geostationary.java index ec2046ef5e..0053ef4462 100644 --- a/cdm/core/src/main/java/ucar/nc2/dataset/transform/Geostationary.java +++ b/cdm/core/src/main/java/ucar/nc2/dataset/transform/Geostationary.java @@ -78,21 +78,6 @@ public TransformType getTransformType() { return TransformType.Projection; } - private double getScaleFactor(String geoCoordinateUnits) { - // default value of -1.0 interpreted as no scaling in the class - // ucar.unidata.geoloc.projection.sat.Geostationary - double scaleFactor = defaultScaleFactor; - String neededMapCoordinateUnit = "radian"; - - if (SimpleUnit.isCompatible(geoCoordinateUnits, neededMapCoordinateUnit)) { - scaleFactor = SimpleUnit.getConversionFactor(geoCoordinateUnits, neededMapCoordinateUnit); - } - - logger.debug("geoCoordinateUnits {}, scaleFactor {}", geoCoordinateUnits, scaleFactor); - - return scaleFactor; - } - public ProjectionCT makeCoordinateTransform(AttributeContainer ctv, String geoCoordinateUnits) { readStandardParams(ctv, geoCoordinateUnits); @@ -145,13 +130,8 @@ public ProjectionCT makeCoordinateTransform(AttributeContainer ctv, String geoCo isSweepX = fixed_angle.equals("y"); } - // scales less than zero indicate no scaling of axis (i.e. map coords have units of radians) - double geoCoordinateScaleFactor; - - geoCoordinateScaleFactor = getScaleFactor(geoCoordinateUnits); - ProjectionImpl proj = new ucar.unidata.geoloc.projection.sat.Geostationary(subLonDegrees, perspective_point_height, - semi_minor_axis, semi_major_axis, inv_flattening, isSweepX, geoCoordinateScaleFactor); + semi_minor_axis, semi_major_axis, inv_flattening, isSweepX); return new ProjectionCT(ctv.getName(), "FGDC", proj); } diff --git a/cdm/core/src/main/java/ucar/nc2/filter/ConvertMissing.java b/cdm/core/src/main/java/ucar/nc2/filter/ConvertMissing.java new file mode 100644 index 0000000000..73835864c7 --- /dev/null +++ b/cdm/core/src/main/java/ucar/nc2/filter/ConvertMissing.java @@ -0,0 +1,260 @@ +package ucar.nc2.filter; + +import ucar.ma2.Array; +import ucar.ma2.DataType; +import ucar.ma2.IndexIterator; +import ucar.nc2.Attribute; +import ucar.nc2.constants.CDM; +import ucar.nc2.dataset.VariableDS; +import ucar.nc2.util.Misc; + +public class ConvertMissing { + + private boolean hasValidMin, hasValidMax; + private double validMin, validMax; + + private boolean hasFillValue; + private double fillValue; // LOOK: making it double not really correct. What about CHAR? + + private boolean hasMissingValue; + private double[] missingValue; // LOOK: also wrong to make double, for the same reason. + + // defaults from NetcdfDataset modes + private boolean invalidDataIsMissing; + private boolean fillValueIsMissing; + private boolean missingDataIsMissing; + + public static ConvertMissing createFromVariable(VariableDS var) { + // valid min and max + DataType.Signedness signedness = var.getSignedness(); + double validMin = -Double.MAX_VALUE, validMax = Double.MAX_VALUE; + boolean hasValidMin = false, hasValidMax = false; + // assume here its in units of unpacked data. correct this below + Attribute validRangeAtt = var.findAttribute(CDM.VALID_RANGE); + DataType validType = null; + if (validRangeAtt != null && !validRangeAtt.isString() && validRangeAtt.getLength() > 1) { + validType = FilterHelpers.getAttributeDataType(validRangeAtt, signedness); + validMin = var.convertUnsigned(validRangeAtt.getNumericValue(0), validType).doubleValue(); + validMax = var.convertUnsigned(validRangeAtt.getNumericValue(1), validType).doubleValue(); + hasValidMin = true; + hasValidMax = true; + } + + Attribute validMinAtt = var.findAttribute(CDM.VALID_MIN); + Attribute validMaxAtt = var.findAttribute(CDM.VALID_MAX); + + // Only process the valid_min and valid_max attributes if valid_range isn't present. + if (!hasValidMin) { + if (validMinAtt != null && !validMinAtt.isString()) { + validType = FilterHelpers.getAttributeDataType(validMinAtt, signedness); + validMin = var.convertUnsigned(validMinAtt.getNumericValue(), validType).doubleValue(); + hasValidMin = true; + } + + if (validMaxAtt != null && !validMaxAtt.isString()) { + validType = FilterHelpers.largestOf(validType, FilterHelpers.getAttributeDataType(validMaxAtt, signedness)); + validMax = var.convertUnsigned(validMaxAtt.getNumericValue(), validType).doubleValue(); + hasValidMax = true; + } + } + + // check if validData values are stored packed or unpacked + if (hasValidMin || hasValidMax) { + if (FilterHelpers.rank(validType) == FilterHelpers.rank(var.getScaledOffsetType()) + && FilterHelpers.rank(validType) > FilterHelpers.rank(var.getOriginalDataType())) { + // If valid_range is the same type as the wider of scale_factor and add_offset, PLUS + // it is wider than the (packed) data, we know that the valid_range values were stored as unpacked. + // We already assumed that this was the case when we first read the attribute values, so there's + // nothing for us to do here. + } else { + // Otherwise, the valid_range values were stored as packed. So now we must unpack them. + if (hasValidMin) { + validMin = var.applyScaleOffset(validMin); + } + if (hasValidMax) { + validMax = var.applyScaleOffset(validMax); + } + } + // During the scaling process, it is possible that the valid minimum and maximum values have effectively been + // swapped (for example, when the scale value is negative). Go ahead and check to make sure the valid min is + // actually less than the valid max, and if not, fix it. See https://github.com/Unidata/netcdf-java/issues/572. + if (validMin > validMax) { + double tmp = validMin; + validMin = validMax; + validMax = tmp; + } + } + + /// fill_value + boolean hasFillValue = var.hasFillValue(); + double fillValue = var.getFillValue(); + + /// missing_value + double[] missingValue = null; + boolean hasMissingValue = false; + Attribute missingValueAtt = var.findAttribute(CDM.MISSING_VALUE); + if (missingValueAtt != null) { + if (missingValueAtt.isString()) { + String svalue = missingValueAtt.getStringValue(); + if (var.getOriginalDataType() == DataType.CHAR) { + missingValue = new double[1]; + if (svalue.isEmpty()) { + missingValue[0] = 0; + } else { + missingValue[0] = svalue.charAt(0); + } + } else { // not a CHAR - try to fix problem where they use a numeric value as a String attribute + try { + missingValue = new double[1]; + missingValue[0] = Double.parseDouble(svalue); + } catch (NumberFormatException ex) { + // TODO add logger + } + } + hasMissingValue = true; + } else { // not a string + missingValue = new double[missingValueAtt.getLength()]; + DataType missingType = FilterHelpers.getAttributeDataType(missingValueAtt, signedness); + for (int i = 0; i < missingValue.length; i++) { + missingValue[i] = var.convertUnsigned(missingValueAtt.getNumericValue(i), missingType).doubleValue(); + missingValue[i] = var.applyScaleOffset(missingValue[i]); + } + + for (double mv : missingValue) { + if (!Double.isNaN(mv)) { + hasMissingValue = true; // dont need to do anything if it's already a NaN + break; + } + } + } + } + return new ConvertMissing(var.fillValueIsMissing(), var.invalidDataIsMissing(), var.missingDataIsMissing(), + hasValidMin, hasValidMax, validMin, validMax, hasFillValue, fillValue, hasMissingValue, missingValue); + } + + + public ConvertMissing(boolean fillValueIsMissing, boolean invalidDataIsMissing, boolean missingDataIsMissing, + boolean hasValidMin, boolean hasValidMax, double validMin, double validMax, boolean hasFillValue, + double fillValue, boolean hasMissingValue, double[] missingValue) { + this.fillValueIsMissing = fillValueIsMissing; + this.invalidDataIsMissing = invalidDataIsMissing; + this.missingDataIsMissing = missingDataIsMissing; + this.hasValidMin = hasValidMin; + this.hasValidMax = hasValidMax; + this.validMin = validMin; + this.validMax = validMax; + this.hasFillValue = hasFillValue; + this.fillValue = fillValue; + this.hasMissingValue = hasMissingValue; + this.missingValue = missingValue; + } + + public boolean hasValidData() { + return hasValidMin || hasValidMax; + } + + public double getValidMin() { + return validMin; + } + + public double getValidMax() { + return validMax; + } + + public boolean isInvalidData(double val) { + // valid_min and valid_max may have been multiplied by scale_factor, which could be a float, not a double. + // That potential loss of precision means that we cannot do the nearlyEquals() comparison with + // Misc.defaultMaxRelativeDiffDouble. + boolean greaterThanOrEqualToValidMin = + Misc.nearlyEquals(val, validMin, Misc.defaultMaxRelativeDiffFloat) || val > validMin; + boolean lessThanOrEqualToValidMax = + Misc.nearlyEquals(val, validMax, Misc.defaultMaxRelativeDiffFloat) || val < validMax; + + return (hasValidMin && !greaterThanOrEqualToValidMin) || (hasValidMax && !lessThanOrEqualToValidMax); + } + + public boolean hasFillValue() { + return hasFillValue; + } + + public boolean isFillValue(double val) { + return hasFillValue && Misc.nearlyEquals(val, fillValue, Misc.defaultMaxRelativeDiffFloat); + } + + public double getFillValue() { + return fillValue; + } + + public boolean isMissingValue(double val) { + if (!hasMissingValue) { + return false; + } + for (double aMissingValue : missingValue) { + if (Misc.nearlyEquals(val, aMissingValue, Misc.defaultMaxRelativeDiffFloat)) { + return true; + } + } + return false; + } + + public double[] getMissingValues() { + return missingValue; + } + + public boolean hasMissingValue() { + return hasMissingValue; + } + + public boolean hasMissing() { + return (invalidDataIsMissing && hasValidData()) || (fillValueIsMissing && hasFillValue()) + || (missingDataIsMissing && hasMissingValue()); + } + + public boolean isMissing(double val) { + if (Double.isNaN(val)) { + return true; + } else { + return (missingDataIsMissing && isMissingValue(val)) || (fillValueIsMissing && isFillValue(val)) + || (invalidDataIsMissing && isInvalidData(val)); + } + } + + @Deprecated + public void setFillValueIsMissing(boolean b) { + this.fillValueIsMissing = b; + } + + @Deprecated + public void setInvalidDataIsMissing(boolean b) { + this.invalidDataIsMissing = b; + } + + @Deprecated + public void setMissingDataIsMissing(boolean b) { + this.missingDataIsMissing = b; + } + + public Number convertMissing(Number value) { + return isMissing(value.doubleValue()) ? Double.NaN : value; + } + + public Array convertMissing(Array in) { + DataType type = in.getDataType(); + if (!type.isNumeric()) { + return in; + } + + Array out = Array.factory(type, in.getShape()); + IndexIterator iterIn = in.getIndexIterator(); + IndexIterator iterOut = out.getIndexIterator(); + + // iterate and convert elements + while (iterIn.hasNext()) { + Number value = (Number) iterIn.getObjectNext(); + value = convertMissing(value); + iterOut.setObjectNext(value); + } + + return out; + } +} diff --git a/cdm/core/src/main/java/ucar/nc2/filter/Deflate.java b/cdm/core/src/main/java/ucar/nc2/filter/Deflate.java index f10dbf6f5c..87ee5f2746 100644 --- a/cdm/core/src/main/java/ucar/nc2/filter/Deflate.java +++ b/cdm/core/src/main/java/ucar/nc2/filter/Deflate.java @@ -13,6 +13,7 @@ import java.util.zip.DeflaterOutputStream; import java.util.zip.Inflater; import java.util.zip.InflaterInputStream; +import ucar.nc2.util.IO; /** * Filter implementation of zlib compression. @@ -71,10 +72,7 @@ public byte[] decode(byte[] dataIn) throws IOException { InflaterInputStream iis = new InflaterInputStream(in, new Inflater(), dataIn.length); ByteArrayOutputStream os = new ByteArrayOutputStream(); - int read; - while ((read = iis.read()) != -1) { - os.write(read); - } + IO.copyB(iis, os, IO.default_socket_buffersize); // close everything and return in.close(); iis.close(); diff --git a/cdm/core/src/main/java/ucar/nc2/filter/Filter.java b/cdm/core/src/main/java/ucar/nc2/filter/Filter.java index e21e28605a..ce21551332 100644 --- a/cdm/core/src/main/java/ucar/nc2/filter/Filter.java +++ b/cdm/core/src/main/java/ucar/nc2/filter/Filter.java @@ -10,6 +10,9 @@ import java.util.Formatter; import java.util.Map; +/** + * A class implementing a conversion to be applied on large chunk of data + */ public abstract class Filter { public abstract String getName(); diff --git a/cdm/core/src/main/java/ucar/nc2/filter/FilterHelpers.java b/cdm/core/src/main/java/ucar/nc2/filter/FilterHelpers.java new file mode 100644 index 0000000000..82fdd49a80 --- /dev/null +++ b/cdm/core/src/main/java/ucar/nc2/filter/FilterHelpers.java @@ -0,0 +1,225 @@ +package ucar.nc2.filter; + +import ucar.ma2.Array; +import ucar.ma2.DataType; +import ucar.ma2.IndexIterator; +import ucar.nc2.Attribute; + +import java.nio.*; + +import static ucar.ma2.DataType.*; + +public class FilterHelpers { + + public static Array bytesToArray(byte[] in, DataType type, ByteOrder order) { + return Array.factory(type, new int[] {in.length / type.getSize()}, convertToType(in, type, order)); + } + + public static byte[] arrayToBytes(Array arr, DataType type, ByteOrder order) { + ByteBuffer bb = ByteBuffer.allocate((int) arr.getSize() * type.getSize()); + bb.order(order); + + IndexIterator ii = arr.getIndexIterator(); + while (ii.hasNext()) { + switch (type) { + case BYTE: + case UBYTE: + bb.put(ii.getByteNext()); + break; + case SHORT: + case USHORT: + bb.putShort(ii.getShortNext()); + break; + case INT: + case UINT: + bb.putInt(ii.getIntNext()); + break; + case LONG: + case ULONG: + bb.putLong(ii.getLongNext()); + break; + case FLOAT: + bb.putFloat(ii.getFloatNext()); + break; + case DOUBLE: + bb.putDouble(ii.getDoubleNext()); + break; + } + } + return bb.array(); + } + + private static Object convertToType(byte[] dataIn, DataType wantType, ByteOrder bo) { + if (wantType.getSize() == 1) { + return dataIn; + } // no need for conversion + + ByteBuffer bb = ByteBuffer.wrap(dataIn); + bb.order(bo); + switch (wantType) { + case SHORT: + case USHORT: + ShortBuffer sb = bb.asShortBuffer(); + short[] shortArray = new short[sb.limit()]; + sb.get(shortArray); + return shortArray; + case INT: + case UINT: + IntBuffer ib = bb.asIntBuffer(); + int[] intArray = new int[ib.limit()]; + ib.get(intArray); + return intArray; + case LONG: + case ULONG: + LongBuffer lb = bb.asLongBuffer(); + long[] longArray = new long[lb.limit()]; + lb.get(longArray); + return longArray; + case FLOAT: + FloatBuffer fb = bb.asFloatBuffer(); + float[] floatArray = new float[fb.limit()]; + fb.get(floatArray); + return floatArray; + case DOUBLE: + DoubleBuffer db = bb.asDoubleBuffer(); + double[] doubleArray = new double[db.limit()]; + db.get(doubleArray); + return doubleArray; + default: + return bb.array(); + } + } + + /** + * Returns the smallest numeric data type that: + *

          + *
        1. can hold a larger integer than {@code dataType} can
        2. + *
        3. if integral, has the same signedness as {@code dataType}
        4. + *
        + *

        + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
        ArgumentResult
        BYTESHORT
        UBYTEUSHORT
        SHORTINT
        USHORTUINT
        INTLONG
        UINTULONG
        LONGDOUBLE
        ULONGDOUBLE
        Any other data typeJust return argument
        + *

        + * The returned type is intended to be just big enough to hold the result of performing an unsigned conversion of a + * value of the smaller type. For example, the {@code byte} value {@code -106} equals {@code 150} when interpreted + * as unsigned. That won't fit in a (signed) {@code byte}, but it will fit in a {@code short}. + * + * @param dataType an integral data type. + * @return the next larger type. + */ + public static DataType nextLarger(DataType dataType) { + switch (dataType) { + case BYTE: + return SHORT; + case UBYTE: + return USHORT; + case SHORT: + return INT; + case USHORT: + return UINT; + case INT: + return LONG; + case UINT: + return ULONG; + case LONG: + case ULONG: + return DOUBLE; + default: + return dataType; + } + } + + // Get the data type of an attribute. Make it unsigned if the variable is unsigned. + public static DataType getAttributeDataType(Attribute attribute, DataType.Signedness signedness) { + DataType dataType = attribute.getDataType(); + if (signedness == Signedness.UNSIGNED) { + // If variable is unsigned, make its integral attributes unsigned too. + dataType = dataType.withSignedness(signedness); + } + return dataType; + } + + + public static int rank(DataType dataType) { + if (dataType == null) { + return -1; + } + + switch (dataType) { + case BYTE: + return 0; + case UBYTE: + return 1; + case SHORT: + return 2; + case USHORT: + return 3; + case INT: + return 4; + case UINT: + return 5; + case LONG: + return 6; + case ULONG: + return 7; + case FLOAT: + return 8; + case DOUBLE: + return 9; + default: + return -1; + } + } + + public static DataType largestOf(DataType... dataTypes) { + DataType widest = null; + for (DataType dataType : dataTypes) { + if (widest == null) { + widest = dataType; + } else if (rank(dataType) > rank(widest)) { + widest = dataType; + } + } + return widest; + } +} diff --git a/cdm/core/src/main/java/ucar/nc2/filter/Normalizer.java b/cdm/core/src/main/java/ucar/nc2/filter/Normalizer.java new file mode 100644 index 0000000000..ab483ca8ef --- /dev/null +++ b/cdm/core/src/main/java/ucar/nc2/filter/Normalizer.java @@ -0,0 +1,70 @@ +package ucar.nc2.filter; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import org.apache.commons.math.stat.descriptive.SummaryStatistics; +import ucar.ma2.Array; +import ucar.ma2.DataType; +import ucar.ma2.IndexIterator; +import ucar.nc2.dataset.VariableDS; + +public class Normalizer { + + private final ScaleOffset scaleOffset; + private final double minimum; + private final double range; // maximum - minimum + + public static Normalizer createFromVariable(VariableDS var) { + try { + Array arr = var.read(); + DataType type = var.getDataType(); + return createFromArray(arr, type); + } catch (IOException e) { + return new Normalizer(0.0, 1.0, var.getDataType()); + } + } + + public static Normalizer createFromArray(Array arr, DataType type) { + SummaryStatistics statistics = calculationHelper(arr); + if ((statistics.getMax() - statistics.getMin()) == 0) { + return new Normalizer(0.0, 1.0, type); + } + return new Normalizer(statistics.getMin(), (statistics.getMax() - statistics.getMin()), type); + } + + private Normalizer(double minimum, double range, DataType type) { + this.minimum = minimum; + this.range = range; + Map props = new HashMap<>(); + props.put("offset", minimum); + props.put("scale", 1 / range); + props.put("dtype", type); + scaleOffset = new ScaleOffset(props); + } + + private static SummaryStatistics calculationHelper(Array arr) { + SummaryStatistics sumStat = new SummaryStatistics(); + IndexIterator iterArr = arr.getIndexIterator(); + while (iterArr.hasNext()) { + Number value = (Number) iterArr.getObjectNext(); + if (!Double.isNaN(value.doubleValue())) { + sumStat.addValue(value.doubleValue()); + } + } + return sumStat; + } + + public Array convert(Array arr) { + return scaleOffset.applyScaleOffset(arr); + } + + public double getMinimum() { + return minimum; + } + + public double getRange() { + return range; + } + +} diff --git a/cdm/core/src/main/java/ucar/nc2/filter/ScaleOffset.java b/cdm/core/src/main/java/ucar/nc2/filter/ScaleOffset.java index 4f7aad01d9..268ce83cc8 100644 --- a/cdm/core/src/main/java/ucar/nc2/filter/ScaleOffset.java +++ b/cdm/core/src/main/java/ucar/nc2/filter/ScaleOffset.java @@ -8,6 +8,9 @@ import ucar.ma2.Array; import ucar.ma2.DataType; import ucar.ma2.IndexIterator; +import ucar.nc2.Attribute; +import ucar.nc2.constants.CDM; +import ucar.nc2.dataset.VariableDS; import java.nio.*; import java.util.HashMap; @@ -25,6 +28,13 @@ public class ScaleOffset extends Filter { private static final int id = 6; + public static class Keys { + public static final String OFFSET_KEY = "offset"; + public static final String SCALE_KEY = "scale"; + public static final String DTYPE_KEY = "dtype"; + public static final String ASTYPE_KEY = "astype"; + } + // maps numeric zarr datatypes to CDM datatypes private static Map dTypeMap; @@ -43,7 +53,10 @@ public class ScaleOffset extends Filter { } private final double offset; - private final int scale; + private final double scale; + + private static final double DEFAULT_OFFSET = 0.0; + private static final double DEFAULT_SCALE = 1.0; // type information for original data type private final ByteOrder dtypeOrder; @@ -53,24 +66,76 @@ public class ScaleOffset extends Filter { private final DataType astype; private final ByteOrder astypeOrder; + public static ScaleOffset createFromVariable(VariableDS var) { + + DataType scaleType = null, offsetType = null; + double scale = DEFAULT_SCALE, offset = DEFAULT_OFFSET; + + DataType origDataType = var.getDataType(); + DataType.Signedness signedness = var.getSignedness(); + + Attribute scaleAtt = var.findAttribute(CDM.SCALE_FACTOR); + if (scaleAtt != null && !scaleAtt.isString()) { + scaleType = FilterHelpers.getAttributeDataType(scaleAtt, signedness); + scale = 1 / (var.convertUnsigned(scaleAtt.getNumericValue(), scaleType).doubleValue()); + var.remove(scaleAtt); + } + + Attribute offsetAtt = var.findAttribute(CDM.ADD_OFFSET); + if (offsetAtt != null && !offsetAtt.isString()) { + offsetType = FilterHelpers.getAttributeDataType(offsetAtt, signedness); + offset = var.convertUnsigned(offsetAtt.getNumericValue(), offsetType).doubleValue(); + var.remove(offsetAtt); + } + + if (scale != DEFAULT_SCALE || offset != DEFAULT_OFFSET) { + DataType scaledOffsetType = + FilterHelpers.largestOf(var.getUnsignedConversionType(), scaleType, offsetType).withSignedness(signedness); + + Map scaleOffsetProps = new HashMap<>(); + scaleOffsetProps.put(ScaleOffset.Keys.OFFSET_KEY, offset); + scaleOffsetProps.put(ScaleOffset.Keys.SCALE_KEY, scale); + scaleOffsetProps.put(ScaleOffset.Keys.DTYPE_KEY, scaledOffsetType); + scaleOffsetProps.put(ScaleOffset.Keys.ASTYPE_KEY, origDataType); + return new ScaleOffset(scaleOffsetProps); + } + return null; + } public ScaleOffset(Map properties) { // get offset and scale parameters - offset = ((Number) properties.get("offset")).doubleValue(); - scale = (int) properties.get("scale"); + offset = ((Number) properties.getOrDefault(Keys.OFFSET_KEY, DEFAULT_OFFSET)).doubleValue(); + scale = ((Number) properties.getOrDefault(Keys.SCALE_KEY, DEFAULT_SCALE)).doubleValue(); // input data type - String type = (String) properties.get("dtype"); - dtype = parseDataType(type); - if (dtype == null) { + Object typeProp = properties.get(Keys.DTYPE_KEY); + if (typeProp instanceof String) { + String type = (String) typeProp; + dtype = parseDataType(type); + if (dtype == null) { + throw new RuntimeException("ScaleOffset error: could not parse dtype"); + } + dtypeOrder = parseByteOrder(type, ByteOrder.LITTLE_ENDIAN); + } else if (typeProp instanceof DataType) { + dtype = (DataType) typeProp; + dtypeOrder = ByteOrder.LITTLE_ENDIAN; + } else { throw new RuntimeException("ScaleOffset error: could not parse dtype"); } - dtypeOrder = parseByteOrder(type, ByteOrder.LITTLE_ENDIAN); // get storage type, if exists, or default to dtype - String aType = (String) properties.getOrDefault("astype", type); - astype = parseDataType(aType); - astypeOrder = parseByteOrder(aType, dtypeOrder); + Object aTypeProp = properties.getOrDefault(Keys.ASTYPE_KEY, null); + if (aTypeProp instanceof String) { + String aType = (String) aTypeProp; + astype = parseDataType(aType); + astypeOrder = parseByteOrder(aType, dtypeOrder); + } else if (aTypeProp instanceof DataType) { + astype = (DataType) aTypeProp; + astypeOrder = ByteOrder.LITTLE_ENDIAN; + } else { + astype = dtype; + astypeOrder = dtypeOrder; + } } @Override @@ -83,27 +148,44 @@ public int getId() { return id; } + public double getScaleFactor() { + return this.scale; + } + + public double getOffset() { + return this.offset; + } + + public DataType getScaledOffsetType() { + return this.dtype; + } + @Override public byte[] encode(byte[] dataIn) { - Array in = - Array.factory(dtype, new int[] {dataIn.length / dtype.getSize()}, convertToType(dataIn, dtype, dtypeOrder)); - Array out = applyScaleOffset(in); - return arrayToBytes(out, astype, astypeOrder); + if (scale == DEFAULT_SCALE && offset == DEFAULT_OFFSET) { + return dataIn; + } + Array out = applyScaleOffset(FilterHelpers.bytesToArray(dataIn, dtype, dtypeOrder)); + return FilterHelpers.arrayToBytes(out, astype, astypeOrder); } @Override public byte[] decode(byte[] dataIn) { - Array in = - Array.factory(astype, new int[] {dataIn.length / astype.getSize()}, convertToType(dataIn, astype, astypeOrder)); - Array out = removeScaleOffset(in); - return arrayToBytes(out, dtype, dtypeOrder); + if (scale == DEFAULT_SCALE && offset == DEFAULT_OFFSET) { + return dataIn; + } + Array out = removeScaleOffset(FilterHelpers.bytesToArray(dataIn, astype, astypeOrder)); + return FilterHelpers.arrayToBytes(out, dtype, dtypeOrder); } - private Array applyScaleOffset(Array in) { + public Array applyScaleOffset(Array in) { + if (scale == DEFAULT_SCALE && offset == DEFAULT_OFFSET) { + return in; + } // use wider datatype if unsigned DataType outType = astype; if (astype.getSignedness() == Signedness.UNSIGNED) { - outType = nextLarger(astype).withSignedness(DataType.Signedness.UNSIGNED); + outType = FilterHelpers.nextLarger(astype).withSignedness(DataType.Signedness.UNSIGNED); } // create conversion array @@ -122,11 +204,14 @@ private Array applyScaleOffset(Array in) { return out; } - private Array removeScaleOffset(Array in) { + public Array removeScaleOffset(Array in) { + if (scale == DEFAULT_SCALE && offset == DEFAULT_OFFSET) { + return in; + } // use wider datatype if unsigned DataType outType = dtype; if (dtype.getSignedness() == Signedness.UNSIGNED) { - outType = nextLarger(dtype).withSignedness(DataType.Signedness.UNSIGNED); + outType = FilterHelpers.nextLarger(dtype).withSignedness(DataType.Signedness.UNSIGNED); } // create conversion array @@ -166,26 +251,20 @@ private static ByteOrder parseByteOrder(String dtype, ByteOrder defaultOrder) { return defaultOrder; } - private DataType nextLarger(DataType dataType) { - switch (dataType) { - case BYTE: - return SHORT; - case UBYTE: - return USHORT; - case SHORT: - return INT; - case USHORT: - return UINT; - case INT: - return LONG; - case UINT: - return ULONG; - case LONG: - case ULONG: - return DOUBLE; - default: - return dataType; + public double applyScaleOffset(Number value) { + double convertedValue = value.doubleValue(); + if (astype.isIntegral()) { + return Math.round((convertedValue - offset) * scale); + } + return (convertedValue - offset) * scale; + } + + public double removeScaleOffset(Number value) { + double convertedValue = value.doubleValue(); + if (dtype.isIntegral()) { + return Math.round(convertedValue / scale + offset); } + return convertedValue / scale + offset; } private Number convertUnsigned(Number value, Signedness signedness) { @@ -197,90 +276,6 @@ private Number convertUnsigned(Number value, Signedness signedness) { } } - private Object convertToType(byte[] dataIn, DataType wantType, ByteOrder bo) { - if (wantType.getSize() == 1) { - return dataIn; - } // no need for conversion - - ByteBuffer bb = ByteBuffer.wrap(dataIn); - bb.order(bo); - switch (wantType) { - case SHORT: - case USHORT: - ShortBuffer sb = bb.asShortBuffer(); - short[] shortArray = new short[sb.limit()]; - sb.get(shortArray); - return shortArray; - case INT: - case UINT: - IntBuffer ib = bb.asIntBuffer(); - int[] intArray = new int[ib.limit()]; - ib.get(intArray); - return intArray; - case LONG: - case ULONG: - LongBuffer lb = bb.asLongBuffer(); - long[] longArray = new long[lb.limit()]; - lb.get(longArray); - return longArray; - case FLOAT: - FloatBuffer fb = bb.asFloatBuffer(); - float[] floatArray = new float[fb.limit()]; - fb.get(floatArray); - return floatArray; - case DOUBLE: - DoubleBuffer db = bb.asDoubleBuffer(); - double[] doubleArray = new double[db.limit()]; - db.get(doubleArray); - return doubleArray; - default: - return bb.array(); - } - } - - private int applyScaleOffset(Number value) { - double convertedValue = value.doubleValue(); - return (int) Math.round((convertedValue - offset) * scale); - } - - private double removeScaleOffset(Number value) { - double convertedValue = value.doubleValue(); - return convertedValue / scale + offset; - } - - private byte[] arrayToBytes(Array arr, DataType type, ByteOrder order) { - ByteBuffer bb = ByteBuffer.allocate((int) arr.getSize() * type.getSize()); - bb.order(order); - - IndexIterator ii = arr.getIndexIterator(); - while (ii.hasNext()) { - switch (type) { - case BYTE: - case UBYTE: - bb.put(ii.getByteNext()); - break; - case SHORT: - case USHORT: - bb.putShort(ii.getShortNext()); - break; - case INT: - case UINT: - bb.putInt(ii.getIntNext()); - break; - case LONG: - case ULONG: - bb.putLong(ii.getLongNext()); - break; - case FLOAT: - bb.putFloat(ii.getFloatNext()); - break; - case DOUBLE: - bb.putDouble(ii.getDoubleNext()); - break; - } - } - return bb.array(); - } public static class Provider implements FilterProvider { diff --git a/cdm/core/src/main/java/ucar/nc2/filter/Standardizer.java b/cdm/core/src/main/java/ucar/nc2/filter/Standardizer.java new file mode 100644 index 0000000000..caae55fa6b --- /dev/null +++ b/cdm/core/src/main/java/ucar/nc2/filter/Standardizer.java @@ -0,0 +1,70 @@ +package ucar.nc2.filter; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import org.apache.commons.math.stat.descriptive.SummaryStatistics; +import ucar.ma2.Array; +import ucar.ma2.DataType; +import ucar.ma2.IndexIterator; +import ucar.nc2.dataset.VariableDS; + +public class Standardizer { + + private final ScaleOffset scaleOffset; + private final double mean; + private final double stdDev; + + public static Standardizer createFromVariable(VariableDS var) { + try { + Array arr = var.read(); + DataType type = var.getDataType(); + return createFromArray(arr, type); + } catch (IOException e) { + return new Standardizer(0.0, 1.0, var.getDataType()); + } + } + + public static Standardizer createFromArray(Array arr, DataType type) { + SummaryStatistics statistics = calculationHelper(arr); + if (statistics.getStandardDeviation() == 0) { + return new Standardizer(0.0, 1.0, type); + } + return new Standardizer(statistics.getMean(), statistics.getStandardDeviation(), type); + } + + private Standardizer(double mean, double stdDev, DataType type) { + this.mean = mean; + this.stdDev = stdDev; + Map props = new HashMap<>(); + props.put("offset", mean); + props.put("scale", 1 / stdDev); + props.put("dtype", type); + scaleOffset = new ScaleOffset(props); + } + + private static SummaryStatistics calculationHelper(Array arr) { + SummaryStatistics sumStat = new SummaryStatistics(); + IndexIterator iterArr = arr.getIndexIterator(); + while (iterArr.hasNext()) { + Number value = (Number) iterArr.getObjectNext(); + if (!Double.isNaN(value.doubleValue())) { + sumStat.addValue(value.doubleValue()); + } + } + return sumStat; + } + + public Array convert(Array arr) { + return scaleOffset.applyScaleOffset(arr); + } + + public double getMean() { + return mean; + } + + public double getStdDev() { + return stdDev; + } +} + diff --git a/cdm/core/src/main/java/ucar/nc2/filter/UnsignedConversion.java b/cdm/core/src/main/java/ucar/nc2/filter/UnsignedConversion.java new file mode 100644 index 0000000000..ea2860a412 --- /dev/null +++ b/cdm/core/src/main/java/ucar/nc2/filter/UnsignedConversion.java @@ -0,0 +1,84 @@ +package ucar.nc2.filter; + +import ucar.ma2.Array; +import ucar.ma2.DataType; +import ucar.ma2.IndexIterator; +import ucar.nc2.constants.CDM; +import ucar.nc2.dataset.VariableDS; + +public class UnsignedConversion { + + private DataType outType; + private DataType.Signedness signedness; + + public static UnsignedConversion createFromVar(VariableDS var) { + DataType origDataType = var.getDataType(); + // won't need to convert non-integral types + if (!origDataType.isIntegral()) { + return new UnsignedConversion(origDataType, DataType.Signedness.SIGNED); + } + DataType unsignedConversionType = origDataType; + // unsignedConversionType may start out as integral, but then be widened to non-integral (i.e. LONG -> DOUBLE) + // so we cannot rely upon unsignedConversionType to store the signedness of the variable. We need a separate field. + DataType.Signedness signedness = origDataType.getSignedness(); + + // In the event of conflict, "unsigned" wins. Potential conflicts include: + // 1. origDataType is unsigned, but variable has "_Unsigned == false" attribute. + // 2. origDataType is signed, but variable has "_Unsigned == true" attribute. + if (signedness == DataType.Signedness.SIGNED) { + String unsignedAtt = var.attributes().findAttributeString(CDM.UNSIGNED, null); + if (unsignedAtt != null && unsignedAtt.equalsIgnoreCase("true")) { + signedness = DataType.Signedness.UNSIGNED; + } + } + + if (signedness == DataType.Signedness.UNSIGNED) { + // We may need a larger data type to hold the results of the unsigned conversion. + unsignedConversionType = FilterHelpers.nextLarger(origDataType).withSignedness(DataType.Signedness.UNSIGNED); + } + return new UnsignedConversion(unsignedConversionType, signedness); + } + + public UnsignedConversion(DataType outType, DataType.Signedness signedness) { + this.outType = outType; + this.signedness = signedness; + } + + public DataType getOutType() { + return this.outType; + } + + public DataType.Signedness getSignedness() { + return this.signedness; + } + + public Number convertUnsigned(Number value) { + return this.signedness == DataType.Signedness.UNSIGNED ? DataType.widenNumberIfNegative(value) : value; + } + + public Array convertUnsigned(Array in) { + if (signedness == DataType.Signedness.SIGNED) { + return in; + } + Array out = Array.factory(outType, in.getShape()); + IndexIterator iterIn = in.getIndexIterator(); + IndexIterator iterOut = out.getIndexIterator(); + + try { + // iterate and convert elements + while (iterIn.hasNext()) { + Number value = (Number) iterIn.getObjectNext(); + value = DataType.widenNumberIfNegative(value); + iterOut.setObjectNext(value); + } + } catch (ClassCastException ex) { + return in; + } + + return out; + } + + public static Number convertUnsigned(Number value, DataType dataType) { + return dataType.isUnsigned() ? DataType.widenNumberIfNegative(value) : value; + } +} diff --git a/cdm/core/src/main/java/ucar/nc2/ft/DsgFeatureCollection.java b/cdm/core/src/main/java/ucar/nc2/ft/DsgFeatureCollection.java index f2e8175ff4..a333b73b35 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/DsgFeatureCollection.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/DsgFeatureCollection.java @@ -35,6 +35,15 @@ public interface DsgFeatureCollection { @Nonnull ucar.nc2.constants.FeatureType getCollectionFeatureType(); + /** + * The name of time unit. + * + * @return name of time unit string, may not be null + */ + @Nonnull + String getTimeName(); + + /** * The time unit. * @@ -43,6 +52,14 @@ public interface DsgFeatureCollection { @Nonnull CalendarDateUnit getTimeUnit(); + /** + * The altitude name string if it exists. + * + * @return altitude name string, may be null + */ + @Nullable + String getAltName(); + /** * The altitude unit string if it exists. * diff --git a/cdm/core/src/main/java/ucar/nc2/ft/FeatureDatasetFactoryManager.java b/cdm/core/src/main/java/ucar/nc2/ft/FeatureDatasetFactoryManager.java index 64c55d081c..8f3bca76b8 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/FeatureDatasetFactoryManager.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/FeatureDatasetFactoryManager.java @@ -315,8 +315,8 @@ public static FeatureDataset wrap(FeatureType wantFeatureType, NetcdfDataset ncd } } - if (null == useFactory) { - errlog.format("**Failed to find FeatureDatasetFactory for= %s datatype=%s%n", ncd.getLocation(), wantFeatureType); + if (useFactory == null) { + errlog.format("**Failed to find FeatureDatasetFactory for datatype=%s%n", wantFeatureType); return null; } diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/DsgCollectionImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/DsgCollectionImpl.java index a51081ffc2..ee61fdff45 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/DsgCollectionImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/DsgCollectionImpl.java @@ -22,7 +22,9 @@ public abstract class DsgCollectionImpl implements DsgFeatureCollection { protected String name; + protected String timeName = "time"; protected CalendarDateUnit timeUnit; + protected String altName = "altitude"; protected String altUnits; protected CollectionInfo info; protected List extras; // variables needed to make CF/DSG writing work @@ -33,18 +35,39 @@ protected DsgCollectionImpl(String name, CalendarDateUnit timeUnit, String altUn this.altUnits = altUnits; } + protected DsgCollectionImpl(String name, String timeName, CalendarDateUnit timeUnit, String altName, + String altUnits) { + this.name = name; + this.timeName = timeName; + this.timeUnit = timeUnit; + this.altName = altName; + this.altUnits = altUnits; + } + @Nonnull @Override public String getName() { return name; } + @Nonnull + @Override + public String getTimeName() { + return timeName; + } + @Nonnull @Override public CalendarDateUnit getTimeUnit() { return timeUnit; } + @Nullable + @Override + public String getAltName() { + return altName; + } + @Nullable @Override public String getAltUnits() { diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/PointCollectionImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/PointCollectionImpl.java index 1325b27198..8209544f8d 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/PointCollectionImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/PointCollectionImpl.java @@ -28,6 +28,11 @@ protected PointCollectionImpl(String name, CalendarDateUnit timeUnit, String alt super(name, timeUnit, altUnits); } + protected PointCollectionImpl(String name, String timeName, CalendarDateUnit timeUnit, String altName, + String altUnits) { + super(name, timeName, timeUnit, altName, altUnits); + } + @Nonnull @Override public FeatureType getCollectionFeatureType() { @@ -56,7 +61,7 @@ protected static class PointCollectionSubset extends PointCollectionImpl { protected CalendarDateRange filter_date; public PointCollectionSubset(PointCollectionImpl from, LatLonRect filter_bb, CalendarDateRange filter_date) { - super(from.name, from.getTimeUnit(), from.getAltUnits()); + super(from.name, from.getTimeName(), from.getTimeUnit(), from.getAltName(), from.getAltUnits()); this.from = from; this.filter_bb = filter_bb; this.filter_date = filter_date; diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/PointFeatureCCCImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/PointFeatureCCCImpl.java index 1cdc24134f..e0df6ab101 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/PointFeatureCCCImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/PointFeatureCCCImpl.java @@ -25,6 +25,12 @@ protected PointFeatureCCCImpl(String name, CalendarDateUnit timeUnit, String alt this.collectionFeatureType = collectionFeatureType; } + protected PointFeatureCCCImpl(String name, String timeName, CalendarDateUnit timeUnit, String altName, + String altUnits, FeatureType collectionFeatureType) { + super(name, timeName, timeUnit, altName, altUnits); + this.collectionFeatureType = collectionFeatureType; + } + // All features in this collection have this feature type @Nonnull @Override diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/PointFeatureCCImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/PointFeatureCCImpl.java index 58e50f7272..ff5411002d 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/PointFeatureCCImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/PointFeatureCCImpl.java @@ -29,6 +29,12 @@ protected PointFeatureCCImpl(String name, CalendarDateUnit timeUnit, String altU this.collectionFeatureType = collectionFeatureType; } + protected PointFeatureCCImpl(String name, String timeName, CalendarDateUnit timeUnit, String altName, String altUnits, + FeatureType collectionFeatureType) { + super(name, timeName, timeUnit, altName, altUnits); + this.collectionFeatureType = collectionFeatureType; + } + // All features in this collection have this feature type @Nonnull @Override diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/ProfileFeatureImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/ProfileFeatureImpl.java index c5680ab506..363c846877 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/ProfileFeatureImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/ProfileFeatureImpl.java @@ -31,6 +31,17 @@ public ProfileFeatureImpl(String name, CalendarDateUnit timeUnit, String altUnit } } + public ProfileFeatureImpl(String name, String timeName, CalendarDateUnit timeUnit, String altName, String altUnits, + double lat, double lon, double time, int nfeatures) { + super(name, timeName, timeUnit, altName, altUnits); + this.latlonPoint = LatLonPoint.create(lat, lon); + this.time = time; + if (nfeatures >= 0) { + getInfo(); // create the object + info.nfeatures = nfeatures; + } + } + @Override @Nonnull public LatLonPoint getLatLon() { diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/SectionCollectionImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/SectionCollectionImpl.java index 16c65590f6..edc4f2c2bd 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/SectionCollectionImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/SectionCollectionImpl.java @@ -21,8 +21,9 @@ public abstract class SectionCollectionImpl extends PointFeatureCCCImpl implements TrajectoryProfileFeatureCollection { - protected SectionCollectionImpl(String name, CalendarDateUnit timeUnit, String altUnits) { - super(name, timeUnit, altUnits, FeatureType.TRAJECTORY_PROFILE); + protected SectionCollectionImpl(String name, String timeName, CalendarDateUnit timeUnit, String altName, + String altUnits) { + super(name, timeName, timeUnit, altName, altUnits, FeatureType.TRAJECTORY_PROFILE); } ///////////////////////////////////////////////////////////////////////////////////// diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/SectionFeatureImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/SectionFeatureImpl.java index 9e3515a3a2..0522606176 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/SectionFeatureImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/SectionFeatureImpl.java @@ -23,8 +23,9 @@ public abstract class SectionFeatureImpl extends PointFeatureCCImpl implements TrajectoryProfileFeature { - protected SectionFeatureImpl(String name, CalendarDateUnit timeUnit, String altUnits) { - super(name, timeUnit, altUnits, FeatureType.TRAJECTORY_PROFILE); + protected SectionFeatureImpl(String name, String timeName, CalendarDateUnit timeUnit, String altName, + String altUnits) { + super(name, timeName, timeUnit, altName, altUnits, FeatureType.TRAJECTORY_PROFILE); } ///////////////////////////////////////////////////////////////////////////////////// diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/StationProfileCollectionImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/StationProfileCollectionImpl.java index 4cd9262254..1835602840 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/StationProfileCollectionImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/StationProfileCollectionImpl.java @@ -34,6 +34,11 @@ public StationProfileCollectionImpl(String name, CalendarDateUnit timeUnit, Stri super(name, timeUnit, altUnits, FeatureType.STATION_PROFILE); } + public StationProfileCollectionImpl(String name, String timeName, CalendarDateUnit timeUnit, String altName, + String altUnits) { + super(name, timeName, timeUnit, altName, altUnits, FeatureType.STATION_PROFILE); + } + // Double-check idiom for lazy initialization of instance fields. See Effective Java 2nd Ed, p. 283. protected StationHelper getStationHelper() { if (stationHelper == null) { @@ -130,7 +135,7 @@ private static class StationProfileFeatureCollectionSubset extends StationProfil private final List stations; StationProfileFeatureCollectionSubset(StationProfileCollectionImpl from, List stations) { - super(from.getName(), from.getTimeUnit(), from.getAltUnits()); + super(from.getName(), from.getTimeName(), from.getTimeUnit(), from.getAltName(), from.getAltUnits()); this.from = from; this.stations = stations; } diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/StationProfileFeatureImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/StationProfileFeatureImpl.java index fb18edff7b..9d356f94ba 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/StationProfileFeatureImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/StationProfileFeatureImpl.java @@ -43,6 +43,20 @@ public StationProfileFeatureImpl(String name, String desc, String wmoId, double this.timeSeriesNpts = npts; } + public StationProfileFeatureImpl(String name, String desc, String wmoId, double lat, double lon, double alt, + String timeName, CalendarDateUnit timeUnit, String altName, String altUnits, int npts) { + super(name, timeName, timeUnit, altName, altUnits, FeatureType.STATION_PROFILE); + station = new StationImpl(name, desc, wmoId, lat, lon, alt, npts); + this.timeSeriesNpts = npts; + } + + public StationProfileFeatureImpl(Station s, String timeName, CalendarDateUnit timeUnit, String altName, + String altUnits, int npts) { + super(s.getName(), timeName, timeUnit, altName, altUnits, FeatureType.STATION_PROFILE); + this.station = s; + this.timeSeriesNpts = npts; + } + public StationProfileFeatureImpl(Station s, CalendarDateUnit timeUnit, String altUnits, int npts) { super(s.getName(), timeUnit, altUnits, FeatureType.STATION_PROFILE); this.station = s; @@ -105,6 +119,24 @@ public int compareTo(@Nonnull Station so) { return station.getName().compareTo(so.getName()); } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof StationProfileFeatureImpl)) { + return false; + } + + StationProfileFeatureImpl that = (StationProfileFeatureImpl) o; + return name.equals(that.name); + } + + @Override + public int hashCode() { + return name.hashCode(); + } + // @Override public StationProfileFeature subset(LatLonRect boundingBox) { return this; // only one station - we could check if its in the bb @@ -120,7 +152,7 @@ public static class StationProfileFeatureSubset extends StationProfileFeatureImp private final CalendarDateRange dateRange; public StationProfileFeatureSubset(StationProfileFeatureImpl from, CalendarDateRange filter_date) { - super(from.station, from.getTimeUnit(), from.getAltUnits(), -1); + super(from.station, from.getTimeName(), from.getTimeUnit(), from.getAltName(), from.getAltUnits(), -1); this.from = from; this.dateRange = filter_date; } diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/StationTimeSeriesCollectionFlattened.java b/cdm/core/src/main/java/ucar/nc2/ft/point/StationTimeSeriesCollectionFlattened.java index 32ac793992..037e43807e 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/StationTimeSeriesCollectionFlattened.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/StationTimeSeriesCollectionFlattened.java @@ -19,7 +19,7 @@ public class StationTimeSeriesCollectionFlattened extends PointCollectionImpl { protected StationTimeSeriesCollectionImpl from; public StationTimeSeriesCollectionFlattened(StationTimeSeriesCollectionImpl from, CalendarDateRange dateRange) { - super(from.getName(), from.getTimeUnit(), from.getAltUnits()); + super(from.getName(), from.getTimeName(), from.getTimeUnit(), from.getAltName(), from.getAltUnits()); this.from = from; if (dateRange != null) { getInfo(); diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/StationTimeSeriesCollectionImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/StationTimeSeriesCollectionImpl.java index 0bdc7a69f7..f6fe7ee815 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/StationTimeSeriesCollectionImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/StationTimeSeriesCollectionImpl.java @@ -35,6 +35,11 @@ public StationTimeSeriesCollectionImpl(String name, CalendarDateUnit timeUnit, S super(name, timeUnit, altUnits, FeatureType.STATION); } + public StationTimeSeriesCollectionImpl(String name, String timeName, CalendarDateUnit timeUnit, String altName, + String altUnits) { + super(name, timeName, timeUnit, altName, altUnits, FeatureType.STATION); + } + // Double-check idiom for lazy initialization of instance fields. See Effective Java 2nd Ed, p. 283. protected StationHelper getStationHelper() { if (stationHelper == null) { @@ -130,7 +135,7 @@ private static class StationSubset extends StationTimeSeriesCollectionImpl { private final List stations; StationSubset(StationTimeSeriesCollectionImpl from, List stations) { - super(from.getName(), from.getTimeUnit(), from.getAltUnits()); + super(from.getName(), from.getTimeName(), from.getTimeUnit(), from.getAltName(), from.getAltUnits()); this.stations = stations; } diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/StationTimeSeriesFeatureImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/StationTimeSeriesFeatureImpl.java index 64dbc9c600..d96053dc56 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/StationTimeSeriesFeatureImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/StationTimeSeriesFeatureImpl.java @@ -31,6 +31,12 @@ public StationTimeSeriesFeatureImpl(String name, String desc, String wmoId, doub s = new StationFeatureImpl(name, desc, wmoId, lat, lon, alt, npts, sdata); } + public StationTimeSeriesFeatureImpl(String name, String desc, String wmoId, double lat, double lon, double alt, + String timeName, CalendarDateUnit timeUnit, String altName, String altUnits, int npts, StructureData sdata) { + super(name, timeName, timeUnit, altName, altUnits); + s = new StationFeatureImpl(name, desc, wmoId, lat, lon, alt, npts, sdata); + } + public StationTimeSeriesFeatureImpl(StationFeature s, CalendarDateUnit timeUnit, String altUnits, int nfeatures) { super(s.getName(), timeUnit, altUnits); this.s = s; @@ -40,6 +46,16 @@ public StationTimeSeriesFeatureImpl(StationFeature s, CalendarDateUnit timeUnit, } } + public StationTimeSeriesFeatureImpl(StationFeature s, String timeName, CalendarDateUnit timeUnit, String altName, + String altUnits, int nfeatures) { + super(s.getName(), timeName, timeUnit, altName, altUnits); + this.s = s; + if (nfeatures >= 0) { + getInfo(); // create the object + info.nfeatures = nfeatures; + } + } + @Override public String getWmoId() { return s.getWmoId(); diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/TrajectoryFeatureImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/TrajectoryFeatureImpl.java index 588a8a8f10..4138148869 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/TrajectoryFeatureImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/TrajectoryFeatureImpl.java @@ -17,6 +17,15 @@ */ public abstract class TrajectoryFeatureImpl extends PointCollectionImpl implements TrajectoryFeature { + public TrajectoryFeatureImpl(String name, String timeName, CalendarDateUnit timeUnit, String altName, String altUnits, + int nfeatures) { + super(name, timeName, timeUnit, altName, altUnits); + if (nfeatures >= 0) { + getInfo(); // create the object + info.nfeatures = nfeatures; + } + } + public TrajectoryFeatureImpl(String name, CalendarDateUnit timeUnit, String altUnits, int nfeatures) { super(name, timeUnit, altUnits); if (nfeatures >= 0) { diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/remote/StationCollectionStream.java b/cdm/core/src/main/java/ucar/nc2/ft/point/remote/StationCollectionStream.java index f6617fa8ed..9eeba1de47 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/remote/StationCollectionStream.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/remote/StationCollectionStream.java @@ -161,7 +161,8 @@ private class StationFeatureStream extends StationTimeSeriesFeatureImpl { PointIteratorStream riter; StationFeatureStream(StationTimeSeriesFeature s, CalendarDateRange dateRange) { - super(s, StationCollectionStream.this.getTimeUnit(), StationCollectionStream.this.getAltUnits(), -1); + super(s, s.getTimeName(), StationCollectionStream.this.getTimeUnit(), s.getAltName(), + StationCollectionStream.this.getAltUnits(), -1); this.stnFeature = s; if (dateRange != null) { getInfo(); diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/NestedTable.java b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/NestedTable.java index 0f3c3b25b8..99aabdc153 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/NestedTable.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/NestedTable.java @@ -467,6 +467,10 @@ public boolean hasCoords() { return (timeVE != null) && (latVE != null) && (lonVE != null); } + public String getTimeName() { + return timeVE.axisName; + } + public CalendarDateUnit getTimeUnit() { try { return CalendarDateUnit.of(null, timeVE.getUnitsString()); // LOOK dont know the calendar @@ -475,6 +479,14 @@ public CalendarDateUnit getTimeUnit() { } } + public String getAltName() { + if (altVE != null) + return altVE.axisName; + if (stnAltVE != null) + return stnAltVE.axisName; + return null; + } + public String getAltUnits() { if (altVE != null) return altVE.getUnitsString(); // fishy diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardPointCollectionImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardPointCollectionImpl.java index 557682a1df..7f60fd9c4c 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardPointCollectionImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardPointCollectionImpl.java @@ -20,7 +20,7 @@ public class StandardPointCollectionImpl extends PointCollectionImpl { private NestedTable ft; StandardPointCollectionImpl(NestedTable ft, CalendarDateUnit timeUnit, String altUnits) { - super(ft.getName(), timeUnit, altUnits); + super(ft.getName(), ft.getTimeName(), timeUnit, ft.getAltName(), altUnits); this.ft = ft; this.extras = ft.getExtras(); } diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardProfileCollectionImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardProfileCollectionImpl.java index 2cffbb58df..ec7b650c6c 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardProfileCollectionImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardProfileCollectionImpl.java @@ -37,12 +37,13 @@ public class StandardProfileCollectionImpl extends PointFeatureCCImpl implements ProfileFeatureCollection { private NestedTable ft; - protected StandardProfileCollectionImpl(String name, CalendarDateUnit timeUnit, String altUnits) { - super(name, timeUnit, altUnits, FeatureType.PROFILE); + protected StandardProfileCollectionImpl(String name, String timeName, CalendarDateUnit timeUnit, String altName, + String altUnits) { + super(name, timeName, timeUnit, altName, altUnits, FeatureType.PROFILE); } StandardProfileCollectionImpl(NestedTable ft, CalendarDateUnit timeUnit, String altUnits) { - super(ft.getName(), timeUnit, altUnits, FeatureType.PROFILE); + super(ft.getName(), ft.getTimeName(), timeUnit, ft.getAltName(), altUnits, FeatureType.PROFILE); this.ft = ft; this.extras = ft.getExtras(); } @@ -62,8 +63,9 @@ private class StandardProfileFeature extends ProfileFeatureImpl { StructureData profileData; StandardProfileFeature(Cursor cursor, double time, StructureData profileData) { - super(ft.getFeatureName(cursor), StandardProfileCollectionImpl.this.getTimeUnit(), - StandardProfileCollectionImpl.this.getAltUnits(), ft.getLatitude(cursor), ft.getLongitude(cursor), time, -1); + super(ft.getFeatureName(cursor), ft.getTimeName(), StandardProfileCollectionImpl.this.getTimeUnit(), + ft.getAltName(), StandardProfileCollectionImpl.this.getAltUnits(), ft.getLatitude(cursor), + ft.getLongitude(cursor), time, -1); this.cursor = cursor; this.profileData = profileData; @@ -133,7 +135,7 @@ private static class StandardProfileCollectionSubset extends StandardProfileColl LatLonRect boundingBox; StandardProfileCollectionSubset(StandardProfileCollectionImpl from, LatLonRect boundingBox) { - super(from.getName() + "-subset", from.getTimeUnit(), from.getAltUnits()); + super(from.getName() + "-subset", from.getTimeName(), from.getTimeUnit(), from.getAltName(), from.getAltUnits()); this.from = from; this.boundingBox = boundingBox; } diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardSectionCollectionImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardSectionCollectionImpl.java index 8fa824b8a7..62fe72283b 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardSectionCollectionImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardSectionCollectionImpl.java @@ -40,7 +40,7 @@ public class StandardSectionCollectionImpl extends SectionCollectionImpl { private NestedTable ft; StandardSectionCollectionImpl(NestedTable ft, CalendarDateUnit timeUnit, String altUnits) { - super(ft.getName(), timeUnit, altUnits); + super(ft.getName(), ft.getTimeName(), timeUnit, ft.getAltName(), altUnits); this.ft = ft; this.extras = ft.getExtras(); } @@ -122,8 +122,8 @@ private class StandardSectionFeature extends SectionFeatureImpl { StructureData sectionData; StandardSectionFeature(Cursor cursor, StructureData sectionData) { - super(ft.getFeatureName(cursor), StandardSectionCollectionImpl.this.getTimeUnit(), - StandardSectionCollectionImpl.this.getAltUnits()); + super(ft.getFeatureName(cursor), ft.getTimeName(), StandardSectionCollectionImpl.this.getTimeUnit(), + ft.getAltName(), StandardSectionCollectionImpl.this.getAltUnits()); this.cursor = cursor; this.sectionData = sectionData; } @@ -201,8 +201,8 @@ private class StandardSectionProfileFeature extends ProfileFeatureImpl { StructureData profileData; StandardSectionProfileFeature(Cursor cursor, double time, StructureData profileData) { - super(ft.getFeatureName(cursor), StandardSectionCollectionImpl.this.getTimeUnit(), - StandardSectionCollectionImpl.this.getAltUnits(), ft.getLatitude(cursor), ft.getLongitude(cursor), time, -1); + super(ft.getFeatureName(cursor), ft.getTimeName(), ft.getTimeUnit(), ft.getAltName(), ft.getAltUnits(), + ft.getLatitude(cursor), ft.getLongitude(cursor), time, -1); this.cursor = cursor; this.profileData = profileData; diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardStationCollectionImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardStationCollectionImpl.java index 0dd5a56c23..44bfe10505 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardStationCollectionImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardStationCollectionImpl.java @@ -32,7 +32,7 @@ public class StandardStationCollectionImpl extends StationTimeSeriesCollectionIm private NestedTable ft; StandardStationCollectionImpl(NestedTable ft, CalendarDateUnit timeUnit, String altUnits) { - super(ft.getName(), timeUnit, altUnits); + super(ft.getName(), ft.getTimeName(), timeUnit, ft.getAltName(), altUnits); this.ft = ft; this.extras = ft.getExtras(); } @@ -73,7 +73,7 @@ private class StandardStationFeatureImpl extends StationTimeSeriesFeatureImpl { StructureData stationData; StandardStationFeatureImpl(StationFeature s, CalendarDateUnit dateUnit, StructureData stationData, int recnum) { - super(s, dateUnit, StandardStationCollectionImpl.this.getAltUnits(), -1); + super(s, ft.getTimeName(), dateUnit, ft.getAltName(), ft.getAltUnits(), -1); this.recnum = recnum; this.stationData = stationData; } diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardStationProfileCollectionImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardStationProfileCollectionImpl.java index 1c8a2293a1..ef33238784 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardStationProfileCollectionImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardStationProfileCollectionImpl.java @@ -47,7 +47,7 @@ public class StandardStationProfileCollectionImpl extends StationProfileCollecti private NestedTable ft; StandardStationProfileCollectionImpl(NestedTable ft, CalendarDateUnit timeUnit, String altUnits) { - super(ft.getName(), timeUnit, altUnits); + super(ft.getName(), ft.getTimeName(), timeUnit, ft.getAltName(), altUnits); this.ft = ft; } @@ -135,7 +135,9 @@ private class StandardStationProfileFeature extends StationProfileFeatureImpl { Cursor cursor; StandardStationProfileFeature(Station s, Cursor cursor, StructureData stationProfileData, int recnum) { - super(s, StandardStationProfileCollectionImpl.this.getTimeUnit(), + super(s, StandardStationProfileCollectionImpl.this.getTimeName(), + StandardStationProfileCollectionImpl.this.getTimeUnit(), + StandardStationProfileCollectionImpl.this.getAltName(), StandardStationProfileCollectionImpl.this.getAltUnits(), -1); this.cursor = cursor; // this.recnum = recnum; @@ -226,8 +228,8 @@ public boolean hasNext() throws IOException { @Override public PointFeatureCollection next() { count++; - PointFeatureCollection result = new StandardProfileFeature(station, getTimeUnit(), getAltUnits(), - ft.getObsTime(cursor), cursor.copy(), profileData); + PointFeatureCollection result = new StandardProfileFeature(station, getTimeName(), getTimeUnit(), getAltName(), + getAltUnits(), ft.getObsTime(cursor), cursor.copy(), profileData); prev = (DsgCollectionImpl) result; return result; } @@ -245,10 +247,10 @@ private class StandardProfileFeature extends ProfileFeatureImpl { private Cursor cursor; StructureData profileData; - StandardProfileFeature(Station s, CalendarDateUnit timeUnit, String altUnits, double time, Cursor cursor, - StructureData profileData) { - super(timeUnit.makeCalendarDate(time).toString(), timeUnit, altUnits, s.getLatitude(), s.getLongitude(), time, - -1); + StandardProfileFeature(Station s, String timeName, CalendarDateUnit timeUnit, String altName, String altUnits, + double time, Cursor cursor, StructureData profileData) { + super(timeUnit.makeCalendarDate(time).toString(), timeName, timeUnit, altName, altUnits, s.getLatitude(), + s.getLongitude(), time, -1); this.cursor = cursor; this.profileData = profileData; diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardTrajectoryCollectionImpl.java b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardTrajectoryCollectionImpl.java index cc7c53e8c9..1431df38cb 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardTrajectoryCollectionImpl.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/StandardTrajectoryCollectionImpl.java @@ -40,7 +40,7 @@ protected StandardTrajectoryCollectionImpl(String name, CalendarDateUnit timeUni } StandardTrajectoryCollectionImpl(NestedTable ft, CalendarDateUnit timeUnit, String altUnits) { - super(ft.getName(), timeUnit, altUnits, FeatureType.TRAJECTORY); + super(ft.getName(), ft.getTimeName(), timeUnit, ft.getAltName(), altUnits, FeatureType.TRAJECTORY); this.ft = ft; this.extras = ft.getExtras(); } @@ -57,8 +57,8 @@ private class StandardTrajectoryFeature extends TrajectoryFeatureImpl { StructureData trajData; StandardTrajectoryFeature(Cursor cursor, StructureData trajData) { - super(ft.getFeatureName(cursor), StandardTrajectoryCollectionImpl.this.getTimeUnit(), - StandardTrajectoryCollectionImpl.this.getAltUnits(), -1); + super(ft.getFeatureName(cursor), ft.getTimeName(), StandardTrajectoryCollectionImpl.this.getTimeUnit(), + ft.getAltName(), StandardTrajectoryCollectionImpl.this.getAltUnits(), -1); this.cursor = cursor; this.trajData = trajData; } diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/TableAnalyzer.java b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/TableAnalyzer.java index a9e8abd087..99fdd929c0 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/standard/TableAnalyzer.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/standard/TableAnalyzer.java @@ -619,7 +619,6 @@ private void writeConfigXML(java.util.Formatter sf) { private Document makeDocument() { Element rootElem = new Element("featureDataset"); Document doc = new Document(rootElem); - rootElem.setAttribute("location", ds.getLocation()); rootElem.addContent(new Element("analyser").setAttribute("class", getName())); if (ft != null) rootElem.setAttribute("featureType", ft.toString()); diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer/CFPointWriter.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer/CFPointWriter.java index 79da58311a..2f3988e626 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer/CFPointWriter.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer/CFPointWriter.java @@ -9,6 +9,8 @@ import com.beust.jcommander.Parameter; import com.beust.jcommander.ParameterDescription; import com.beust.jcommander.ParameterException; +import com.google.common.collect.Iterators; +import com.google.common.collect.PeekingIterator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ucar.ma2.*; @@ -16,6 +18,7 @@ import ucar.nc2.constants.*; import ucar.nc2.dataset.CoordinateAxis; import ucar.nc2.ft.*; +import ucar.nc2.ft.point.StationFeature; import ucar.nc2.ft.point.StationPointFeature; import ucar.nc2.time.CalendarDate; import ucar.nc2.time.CalendarDateFormatter; @@ -46,8 +49,8 @@ public abstract class CFPointWriter implements Closeable { public static final String recordDimName = "obs"; public static final String latName = "latitude"; public static final String lonName = "longitude"; - public static final String altName = "altitude"; - public static final String timeName = "time"; + public static String altName = "altitude"; + public static String timeName = "time"; public static final String stationStructName = "station"; public static final String stationDimName = "station"; @@ -121,17 +124,15 @@ private static int writePointFeatureCollection(FeatureDatasetPoint fdpoint, Poin pointWriter.setExtraVariables(pfc.getExtraVariables()); + pointWriter.writeHeader(pfc); int count = 0; for (PointFeature pf : pfc) { - if (count == 0) - pointWriter.writeHeader(pf); - pointWriter.writeRecord(pf, pf.getFeatureData()); count++; if (debug && count % 100 == 0) - System.out.printf("%d ", count); + logger.debug(String.format("%d ", count)); if (debug && count % 1000 == 0) - System.out.printf("%n "); + logger.debug(String.format("%n ")); } pointWriter.finish(); @@ -141,28 +142,35 @@ private static int writePointFeatureCollection(FeatureDatasetPoint fdpoint, Poin private static int writeStationFeatureCollection(FeatureDatasetPoint dataset, StationTimeSeriesFeatureCollection fc, String fileOut, CFPointWriterConfig config) throws IOException { + int count = 0; try (WriterCFStationCollection cfWriter = new WriterCFStationCollection(fileOut, dataset.getGlobalAttributes(), dataset.getDataVariables(), fc.getTimeUnit(), fc.getAltUnits(), config)) { - cfWriter.setExtraVariables(fc.getExtraVariables()); + List flattenFeatures = new ArrayList<>(); + List extraVariables = new ArrayList<>(); + for (DsgFeatureCollection station : dataset.getPointFeatureCollectionList()) { + extraVariables.addAll(station.getExtraVariables()); + flattenFeatures.addAll(((StationTimeSeriesFeatureCollection) station).getStationFeatures()); + } - ucar.nc2.ft.PointFeatureCollection pfc = fc.flatten(null, null, null); // all data, but no need to sort by station + cfWriter.setExtraVariables(extraVariables); + cfWriter.writeHeader(flattenFeatures, null); - int count = 0; - for (PointFeature pf : pfc) { - StationPointFeature spf = (StationPointFeature) pf; - if (count == 0) - cfWriter.writeHeader(fc.getStationFeatures(), spf); + for (DsgFeatureCollection featureCollection : dataset.getPointFeatureCollectionList()) { + cfWriter.obsRecno = 0; + for (StationTimeSeriesFeature station : (StationTimeSeriesFeatureCollection) featureCollection) { + for (PointFeature pf : station) { - cfWriter.writeRecord(spf.getStation(), pf, pf.getFeatureData()); - count++; - if (debug && count % 100 == 0) - System.out.printf("%d ", count); - if (debug && count % 1000 == 0) - System.out.printf("%n "); + cfWriter.writeRecord(((StationPointFeature) pf).getStation(), pf, pf.getFeatureData()); + count++; + if (debug && count % 100 == 0) + logger.debug(String.format("%d ", count)); + if (debug && count % 1000 == 0) + logger.debug(String.format("%n ")); + } + } } - cfWriter.finish(); return count; } @@ -173,29 +181,35 @@ private static int writeProfileFeatureCollection(FeatureDatasetPoint fdpoint, Pr try (WriterCFProfileCollection cfWriter = new WriterCFProfileCollection(fileOut, fdpoint.getGlobalAttributes(), fdpoint.getDataVariables(), fc.getTimeUnit(), fc.getAltUnits(), config)) { - - cfWriter.setExtraVariables(fc.getExtraVariables()); + List extraVariables = new ArrayList<>(); + List flattenFeatures = new ArrayList<>(); // LOOK not always needed int count = 0; + int nprofiles = 0; int name_strlen = 0; - int nprofiles = fc.size(); - if (nprofiles < 0) { - for (ProfileFeature pf : fc) { - name_strlen = Math.max(name_strlen, pf.getName().length()); - count++; + for (DsgFeatureCollection featureCollection : fdpoint.getPointFeatureCollectionList()) { + nprofiles += featureCollection.size(); + if (nprofiles < 0) { + for (ProfileFeature profile : (ProfileFeatureCollection) featureCollection) { + flattenFeatures.add(profile); + name_strlen = Math.max(name_strlen, profile.getName().length()); + count++; + } + nprofiles = count; } - nprofiles = count; } + cfWriter.setExtraVariables(extraVariables); cfWriter.setFeatureAuxInfo(nprofiles, name_strlen); + cfWriter.writeHeader(flattenFeatures); count = 0; for (ProfileFeature profile : fc) { count += cfWriter.writeProfile(profile); if (debug && count % 10 == 0) - System.out.printf("%d ", count); + logger.debug(String.format("%d ", count)); if (debug && count % 100 == 0) - System.out.printf("%n "); + logger.debug(String.format("%n ")); } cfWriter.finish(); @@ -208,29 +222,32 @@ private static int writeTrajectoryFeatureCollection(FeatureDatasetPoint fdpoint, try (WriterCFTrajectoryCollection cfWriter = new WriterCFTrajectoryCollection(fileOut, fdpoint.getGlobalAttributes(), fdpoint.getDataVariables(), fc.getTimeUnit(), fc.getAltUnits(), config)) { + List extraVariables = new ArrayList<>(); + List flattenFeatures = new ArrayList<>(); - cfWriter.setExtraVariables(fc.getExtraVariables()); - - // LOOK not always needed int count = 0; int name_strlen = 0; - int ntrajs = fc.size(); - if (ntrajs < 0) { - for (TrajectoryFeature traj : fc) { - name_strlen = Math.max(name_strlen, traj.getName().length()); - count++; + int ntrajs = 0; + for (DsgFeatureCollection featureCollection : fdpoint.getPointFeatureCollectionList()) { + for (TrajectoryFeature trajectory : (TrajectoryFeatureCollection) featureCollection) { + flattenFeatures.add(trajectory); + extraVariables.addAll(trajectory.getExtraVariables()); + name_strlen = Math.max(name_strlen, trajectory.getName().length()); + ntrajs++; } - ntrajs = count; } + cfWriter.setExtraVariables(extraVariables); cfWriter.setFeatureAuxInfo(ntrajs, name_strlen); - + cfWriter.writeHeader(flattenFeatures); count = 0; - for (TrajectoryFeature traj : fc) { - count += cfWriter.writeTrajectory(traj); - if (debug && count % 10 == 0) - System.out.printf("%d ", count); - if (debug && count % 100 == 0) - System.out.printf("%n "); + for (DsgFeatureCollection featureCollection : fdpoint.getPointFeatureCollectionList()) { + for (TrajectoryFeature trajectory : (TrajectoryFeatureCollection) featureCollection) { + count += cfWriter.writeTrajectory(trajectory); + if (debug && count % 10 == 0) + logger.debug(String.format("%d ", count)); + if (debug && count % 100 == 0) + logger.debug(String.format("%n ")); + } } cfWriter.finish(); @@ -244,34 +261,34 @@ private static int writeStationProfileFeatureCollection(FeatureDatasetPoint data try (WriterCFStationProfileCollection cfWriter = new WriterCFStationProfileCollection(fileOut, dataset.getGlobalAttributes(), dataset.getDataVariables(), fc.getTimeUnit(), fc.getAltUnits(), config)) { - cfWriter.setExtraVariables(fc.getExtraVariables()); - cfWriter.setStations(fc.getStationFeatures()); + List extraVariables = new ArrayList<>(); + List flattenFeatures = new ArrayList<>(); - int name_strlen = 0; - int countProfiles = 0; - for (StationProfileFeature spf : fc) { - name_strlen = Math.max(name_strlen, spf.getName().length()); - if (spf.size() >= 0) - countProfiles += spf.size(); - else { - for (ProfileFeature pf : spf) { - countProfiles++; - } - } + for (DsgFeatureCollection dsgFeatures : dataset.getPointFeatureCollectionList()) { + extraVariables.addAll(dsgFeatures.getExtraVariables()); + flattenFeatures.addAll(((StationProfileFeatureCollection) dsgFeatures).getStationFeatures()); } - cfWriter.setFeatureAuxInfo(countProfiles, name_strlen); - int count = 0; - for (StationProfileFeature spf : fc) { - for (ProfileFeature pf : spf) { - if (pf.getTime() == null) - continue; // assume this means its an "incomplete multidimensional" + cfWriter.setExtraVariables(extraVariables); + cfWriter.setStations(flattenFeatures); + cfWriter.setFeatureAuxInfo(0, 0); + cfWriter.writeHeader(flattenFeatures); - count += cfWriter.writeProfile(spf, pf); - if (debug && count % 100 == 0) - System.out.printf("%d ", count); - if (debug && count % 1000 == 0) - System.out.printf("%n "); + int count = 0; + for (DsgFeatureCollection featureCollection : dataset.getPointFeatureCollectionList()) { + cfWriter.resetObsIndex(); + for (StationFeature station : ((StationProfileFeatureCollection) featureCollection).getStationFeatures()) { + StationProfileFeature spf = (StationProfileFeature) station; + cfWriter.resetProfileIndex(); + for (ProfileFeature pf : spf) { + if (pf.getTime() == null) + continue; // assume this means its an "incomplete multidimensional" + count += cfWriter.writeProfile(spf, pf); + if (debug && count % 100 == 0) + logger.debug(String.format("%d ", count)); + if (debug && count % 1000 == 0) + logger.debug(String.format("%n ")); + } } } @@ -285,39 +302,47 @@ private static int writeTrajectoryProfileFeatureCollection(FeatureDatasetPoint d try (WriterCFTrajectoryProfileCollection cfWriter = new WriterCFTrajectoryProfileCollection(fileOut, dataset.getGlobalAttributes(), dataset.getDataVariables(), fc.getTimeUnit(), fc.getAltUnits(), config)) { - - cfWriter.setExtraVariables(fc.getExtraVariables()); + List extraVariables = new ArrayList<>(); + List flattenFeatures = new ArrayList<>(); int traj_strlen = 0; int prof_strlen = 0; int countTrajectories = 0; int countProfiles = 0; - for (TrajectoryProfileFeature spf : fc) { - countTrajectories++; - traj_strlen = Math.max(traj_strlen, spf.getName().length()); - if (spf.size() >= 0) - countProfiles += spf.size(); - else { - for (ProfileFeature profile : spf) { - prof_strlen = Math.max(prof_strlen, profile.getName().length()); - countProfiles++; + for (DsgFeatureCollection featureCollection : dataset.getPointFeatureCollectionList()) { + for (TrajectoryProfileFeature trajProfile : (TrajectoryProfileFeatureCollection) featureCollection) { + extraVariables.addAll(trajProfile.getExtraVariables()); + flattenFeatures.add(trajProfile); + countTrajectories++; + traj_strlen = Math.max(traj_strlen, trajProfile.getName().length()); + if (trajProfile.size() >= 0) + countProfiles += trajProfile.size(); + else { + for (ProfileFeature profile : trajProfile) { + prof_strlen = Math.max(prof_strlen, profile.getName().length()); + countProfiles++; + } } } } + cfWriter.setExtraVariables(extraVariables); cfWriter.setFeatureAuxInfo(countProfiles, prof_strlen); cfWriter.setFeatureAuxInfo2(countTrajectories, traj_strlen); + cfWriter.writeHeader(flattenFeatures); int count = 0; - for (TrajectoryProfileFeature spf : fc) { - for (ProfileFeature profile : spf) { - if (profile.getTime() == null) - continue; // assume this means its a "incomplete multidimensional" - - count += cfWriter.writeProfile(spf, profile); - if (debug && count % 100 == 0) - System.out.printf("%d ", count); - if (debug && count % 1000 == 0) - System.out.printf("%n "); + for (DsgFeatureCollection tpfc : dataset.getPointFeatureCollectionList()) { + for (TrajectoryProfileFeature spf : (TrajectoryProfileFeatureCollection) tpfc) { + for (ProfileFeature profile : spf) { + if (profile.getTime() == null) + continue; // assume this means its a "incomplete multidimensional" + + count += cfWriter.writeProfile(spf, profile); + if (debug && count % 100 == 0) + logger.debug(String.format("%d ", count)); + if (debug && count % 1000 == 0) + logger.debug(String.format("%n ")); + } } } @@ -357,7 +382,7 @@ private static int writeTrajectoryProfileFeatureCollection(FeatureDatasetPoint d protected List dataVars; private Map extraMap; // added as variables just as they are - protected List extra; + protected List extra = new ArrayList<>(); protected LatLonRect llbb; protected CalendarDate minDate; @@ -379,7 +404,7 @@ protected CFPointWriter(String fileOut, List atts, List extra) { } } - protected abstract void makeFeatureVariables(StructureData featureData, boolean isExtended); + protected abstract void makeFeatureVariables(List featureData, boolean isExtended); - protected void makeMiddleVariables(StructureData middleData, boolean isExtended) { + protected void makeMiddleVariables(List middleData, boolean isExtended) { // NOOP } - protected void writeHeader(List obsCoords, StructureData featureData, StructureData obsData, - String coordNames) throws IOException { - this.recordDim = writer.addUnlimitedDimension(recordDimName); + protected void writeHeader(List obsCoords, List stationFeatures, + List featureDataStructs, List middleDataStructs) throws IOException { + this.recordDim = writer.addUnlimitedDimension(recordDimName); addExtraVariables(); - if (writer.getVersion().isExtendedModel()) { - makeFeatureVariables(featureData, true); record = (Structure) writer.addVariable(null, recordName, DataType.STRUCTURE, recordDimName); addCoordinatesExtended(record, obsCoords); - addDataVariablesExtended(obsData, coordNames); - writer.create(); + } - } else { - makeFeatureVariables(featureData, false); - addCoordinatesClassic(recordDim, obsCoords, dataMap); - addDataVariablesClassic(recordDim, obsData, dataMap, coordNames); - writer.create(); - record = writer.addRecordStructure(); // for netcdf3 + if (featureDataStructs != null) + makeFeatureVariables(featureDataStructs, writer.getVersion().isExtendedModel()); + + if (middleDataStructs != null) + makeMiddleVariables(middleDataStructs, writer.getVersion().isExtendedModel()); + + + for (PointFeatureCollection stnFeature : stationFeatures) { + + PeekingIterator iter = Iterators.peekingIterator(stnFeature.iterator()); + if (iter.hasNext()) { + + PointFeature pointFeat = iter.peek(); + + Formatter coordNames = new Formatter().format("%s %s %s", stnFeature.getTimeName(), latName, lonName); + if (!Double.isNaN(pointFeat.getLocation().getAltitude())) { + altitudeCoordinateName = stnFeature.getAltName(); + coordNames.format(" %s", altitudeCoordinateName); + } + + if (writer.getVersion().isExtendedModel()) { + addDataVariablesExtended(pointFeat.getFeatureData(), coordNames.toString()); + } + addDataVariablesClassic(recordDim, pointFeat.getFeatureData(), dataMap, coordNames.toString()); + + } } + addCoordinatesClassic(recordDim, obsCoords, dataMap); + + writer.create(); + if (!(writer.getVersion().isExtendedModel())) + record = writer.addRecordStructure(); // for netcdf3 writeExtraVariables(); + } - protected void writeHeader2(List obsCoords, StructureData featureData, StructureData middleData, - StructureData obsData, String coordNames) throws IOException { + protected void writeHeader(List obsCoords, List featureData, StructureData obsData, + String coordNames) throws IOException { this.recordDim = writer.addUnlimitedDimension(recordDimName); addExtraVariables(); if (writer.getVersion().isExtendedModel()) { makeFeatureVariables(featureData, true); - makeMiddleVariables(middleData, true); record = (Structure) writer.addVariable(null, recordName, DataType.STRUCTURE, recordDimName); addCoordinatesExtended(record, obsCoords); addDataVariablesExtended(obsData, coordNames); @@ -494,7 +541,6 @@ record = (Structure) writer.addVariable(null, recordName, DataType.STRUCTURE, re } else { makeFeatureVariables(featureData, false); - makeMiddleVariables(middleData, false); addCoordinatesClassic(recordDim, obsCoords, dataMap); addDataVariablesClassic(recordDim, obsData, dataMap, coordNames); writer.create(); @@ -504,6 +550,7 @@ record = writer.addRecordStructure(); // for netcdf3 writeExtraVariables(); } + protected void addExtraVariables() { if (extra == null) return; @@ -606,7 +653,8 @@ protected void addDataVariablesClassic(Dimension recordDim, StructureData stnDat } else { VariableSimpleIF prevVar = writer.findVariable(oldVar.getShortName()); if (prevVar != null) { - if (extraMap.get(oldVar.getShortName()) != null) { // this is normal, extra got added but not actually needed + if (extraMap != null && extraMap.get(oldVar.getShortName()) != null) { // this is normal, extra got added but + // not actually needed writer.deleteVariable(oldVar.getShortName()); extraMap.remove(oldVar.getShortName()); } @@ -640,7 +688,8 @@ protected void addDataVariablesExtended(StructureData obsData, String coordVars) continue; // skip duplicates - // if (record.findVariable(oldVar.getShortName()) != null) continue; + if (record.findVariable(oldVar.getShortName()) != null) + continue; // make dimension list StringBuilder dimNames = new StringBuilder(); diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFPointCollection.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFPointCollection.java index 8810fb33c5..8447a34fef 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFPointCollection.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFPointCollection.java @@ -43,24 +43,46 @@ public WriterCFPointCollection(String fileOut, List globalAtts, List< public void writeHeader(PointFeature pf) throws IOException { List coords = new ArrayList<>(); - coords.add(VariableSimpleBuilder.makeScalar(timeName, "time of measurement", timeUnit.getUdUnit(), DataType.DOUBLE) - .addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build()); + coords.add(VariableSimpleBuilder.makeScalar(pf.getFeatureCollection().getTimeName(), "time of measurement", + timeUnit.getUdUnit(), DataType.DOUBLE).addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build()); coords.add( VariableSimpleBuilder.makeScalar(latName, "latitude of measurement", CDM.LAT_UNITS, DataType.DOUBLE).build()); coords.add( VariableSimpleBuilder.makeScalar(lonName, "longitude of measurement", CDM.LON_UNITS, DataType.DOUBLE).build()); - Formatter coordNames = new Formatter().format("%s %s %s", timeName, latName, lonName); + Formatter coordNames = + new Formatter().format("%s %s %s", pf.getFeatureCollection().getTimeName(), latName, lonName); if (altUnits != null) { - coords.add(VariableSimpleBuilder.makeScalar(altName, "altitude of measurement", altUnits, DataType.DOUBLE) - .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altName, altUnits)).build()); - coordNames.format(" %s", altName); + coords.add(VariableSimpleBuilder + .makeScalar(pf.getFeatureCollection().getAltName(), "altitude of measurement", altUnits, DataType.DOUBLE) + .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(pf.getFeatureCollection().getAltName(), altUnits)) + .build()); + coordNames.format(" %s", pf.getFeatureCollection().getAltName()); } super.writeHeader(coords, null, pf.getDataAll(), coordNames.toString()); } - protected void makeFeatureVariables(StructureData featureData, boolean isExtended) { + public void writeHeader(PointFeatureCollection pfc) throws IOException { + List coords = new ArrayList<>(); + coords.add(VariableSimpleBuilder + .makeScalar(pfc.getTimeName(), "time of measurement", timeUnit.getUdUnit(), DataType.DOUBLE) + .addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build()); + + coords.add( + VariableSimpleBuilder.makeScalar(latName, "latitude of measurement", CDM.LAT_UNITS, DataType.DOUBLE).build()); + coords.add( + VariableSimpleBuilder.makeScalar(lonName, "longitude of measurement", CDM.LON_UNITS, DataType.DOUBLE).build()); + if (altUnits != null) { + coords + .add(VariableSimpleBuilder.makeScalar(pfc.getAltName(), "altitude of measurement", altUnits, DataType.DOUBLE) + .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altName, altUnits)).build()); + } + + super.writeHeader(coords, Arrays.asList(pfc), null, null); + } + + protected void makeFeatureVariables(List featureData, boolean isExtended) { // NOOP } @@ -68,13 +90,19 @@ protected void makeFeatureVariables(StructureData featureData, boolean isExtende // writing data public void writeRecord(PointFeature sobs, StructureData sdata) throws IOException { - writeRecord(sobs.getObservationTime(), sobs.getObservationTimeAsCalendarDate(), sobs.getLocation(), sdata); + writeRecord(sobs.getFeatureCollection().getTimeName(), sobs.getObservationTime(), + sobs.getObservationTimeAsCalendarDate(), sobs.getFeatureCollection().getAltName(), sobs.getLocation(), sdata); } private int obsRecno; public void writeRecord(double timeCoordValue, CalendarDate obsDate, EarthLocation loc, StructureData sdata) throws IOException { + writeRecord(timeName, timeCoordValue, obsDate, altName, loc, sdata); + } + + private void writeRecord(String timeName, double timeCoordValue, CalendarDate obsDate, String altName, + EarthLocation loc, StructureData sdata) throws IOException { trackBB(loc.getLatLon(), obsDate); StructureMembers.Builder smb = StructureMembers.builder().setName("Coords"); @@ -88,6 +116,6 @@ public void writeRecord(double timeCoordValue, CalendarDate obsDate, EarthLocati // coords first so it takes precedence StructureDataComposite sdall = StructureDataComposite.create(ImmutableList.of(coords, sdata)); obsRecno = super.writeStructureData(obsRecno, record, sdall, dataMap); - } + } } diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFProfileCollection.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFProfileCollection.java index e1c967ac4c..41294ebe9e 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFProfileCollection.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFProfileCollection.java @@ -39,7 +39,6 @@ public class WriterCFProfileCollection extends CFPointWriter { // private Formatter coordNames = new Formatter(); private Structure profileStruct; // used for netcdf4 extended private Map featureVarMap = new HashMap<>(); - private boolean headerDone; public WriterCFProfileCollection(String fileOut, List globalAtts, List dataVars, CalendarDateUnit timeUnit, String altUnits, CFPointWriterConfig config) throws IOException { @@ -50,14 +49,10 @@ public WriterCFProfileCollection(String fileOut, List globalAtts, Lis } public int writeProfile(ProfileFeature profile) throws IOException { + if (id_strlen == 0) + id_strlen = profile.getName().length() * 2; int count = 0; for (PointFeature pf : profile) { - if (!headerDone) { - if (id_strlen == 0) - id_strlen = profile.getName().length() * 2; - writeHeader(profile, pf); - headerDone = true; - } writeObsData(pf); count++; } @@ -66,21 +61,28 @@ public int writeProfile(ProfileFeature profile) throws IOException { return count; } - private void writeHeader(ProfileFeature profile, PointFeature obs) throws IOException { - - Formatter coordNames = new Formatter().format("%s %s %s", profileTimeName, latName, lonName); + protected void writeHeader(List profiles) throws IOException { List coords = new ArrayList<>(); - if (useAlt) { - coords.add(VariableSimpleBuilder.makeScalar(altitudeCoordinateName, "obs altitude", altUnits, DataType.DOUBLE) - .addAttribute(CF.STANDARD_NAME, "altitude") - .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altitudeCoordinateName, altUnits)).build()); - coordNames.format(" %s", altitudeCoordinateName); + List profileData = new ArrayList<>(); + + for (ProfileFeature profile : profiles) { + profileData.add(profile.getFeatureData()); + coords.add(VariableSimpleBuilder + .makeScalar(profile.getTimeName(), "time of measurement", profile.getTimeUnit().getUdUnit(), DataType.DOUBLE) + .addAttribute(CF.CALENDAR, profile.getTimeUnit().getCalendar().toString()).build()); + + if (useAlt) { + altitudeCoordinateName = profile.getAltName(); + coords.add(VariableSimpleBuilder.makeScalar(altitudeCoordinateName, "obs altitude", altUnits, DataType.DOUBLE) + .addAttribute(CF.STANDARD_NAME, "altitude") + .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altitudeCoordinateName, altUnits)).build()); + } } - super.writeHeader(coords, profile.getFeatureData(), obs.getFeatureData(), coordNames.toString()); + super.writeHeader(coords, profiles, profileData, null); } - protected void makeFeatureVariables(StructureData featureData, boolean isExtended) { + protected void makeFeatureVariables(List featureDataStructs, boolean isExtended) { // LOOK why not unlimited here ? Dimension profileDim = writer.addDimension(null, profileDimName, nfeatures); @@ -105,10 +107,12 @@ protected void makeFeatureVariables(StructureData featureData, boolean isExtende .addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build()); - for (StructureMembers.Member m : featureData.getMembers()) { - VariableSimpleIF dv = getDataVar(m.getName()); - if (dv != null) - profileVars.add(dv); + for (StructureData featureData : featureDataStructs) { + for (StructureMembers.Member m : featureData.getMembers()) { + VariableSimpleIF dv = getDataVar(m.getName()); + if (dv != null) + profileVars.add(dv); + } } if (isExtended) { @@ -146,8 +150,10 @@ private void writeProfileData(ProfileFeature profile, int nobs) throws IOExcepti private void writeObsData(PointFeature pf) throws IOException { StructureMembers.Builder smb = StructureMembers.builder().setName("Coords"); + smb.addMemberScalar(pf.getFeatureCollection().getTimeName(), null, null, DataType.DOUBLE, pf.getObservationTime()); if (useAlt) - smb.addMemberScalar(altitudeCoordinateName, null, null, DataType.DOUBLE, pf.getLocation().getAltitude()); + smb.addMemberScalar(pf.getFeatureCollection().getAltName(), null, null, DataType.DOUBLE, + pf.getLocation().getAltitude()); StructureData coords = new StructureDataFromMember(smb.build()); // coords first so it takes precedence diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFStationCollection.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFStationCollection.java index 13b3985030..caad99e813 100644 --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFStationCollection.java +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFStationCollection.java @@ -10,22 +10,24 @@ import ucar.nc2.*; import ucar.nc2.constants.CDM; import ucar.nc2.constants.CF; -import ucar.nc2.dataset.conv.CF1Convention; -import ucar.nc2.ft.PointFeature; +import ucar.nc2.ft.*; import ucar.nc2.ft.point.StationFeature; import ucar.nc2.ft.point.StationPointFeature; import ucar.nc2.time.CalendarDate; import ucar.nc2.time.CalendarDateUnit; import ucar.unidata.geoloc.Station; + +import javax.annotation.Nullable; import java.io.IOException; import java.util.*; +import java.util.stream.Collectors; /** * Write a CF "Discrete Sample" station file. * Example H.7. Timeseries of station data in the indexed ragged array representation. * *

        - * + * *

          *   writeHeader()
          *   iterate { writeRecord() }
        @@ -59,13 +61,22 @@ public WriterCFStationCollection(String fileOut, List atts, List stns, StationPointFeature spf) throws IOException {
        -    this.stnList = stns;
        +  public void writeHeader(StationTimeSeriesFeatureCollection stations) throws IOException {
        +    writeHeader(stations.getStationFeatures(), null);
        +  }
        +
        +  public void writeHeader(List stns, @Nullable StationPointFeature spf) throws IOException {
        +    this.stnList = stns.stream().distinct().collect(Collectors.toList());
        +
        +    List coords = new ArrayList<>();
        +    List flattenStations = new ArrayList<>();
        +    List stationData = new ArrayList<>();
         
             // see if there's altitude, wmoId for any stations
        -    for (Station stn : stnList) {
        -      if (!Double.isNaN(stn.getAltitude()))
        -        useAlt = true;
        +    for (StationFeature stn : stns) {
        +      flattenStations.add((PointFeatureCollection) stn);
        +      stationData.add(stn.getFeatureData());
        +      useAlt = !Double.isNaN(stn.getAltitude());
               if ((stn.getWmoId() != null) && (!stn.getWmoId().trim().isEmpty()))
                 useWmoId = true;
               if ((stn.getDescription() != null) && (!stn.getDescription().trim().isEmpty()))
        @@ -77,30 +88,26 @@ public void writeHeader(List stns, StationPointFeature spf) thro
                 desc_strlen = Math.max(desc_strlen, stn.getDescription().length());
               if (stn.getWmoId() != null)
                 wmo_strlen = Math.max(wmo_strlen, stn.getWmoId().length());
        +      DsgFeatureCollection dsgStation = (DsgFeatureCollection) stn;
        +      if (coords.stream().noneMatch(x -> x.getShortName().equals(dsgStation.getTimeName()))) {
        +        coords
        +            .add(VariableSimpleBuilder
        +                .makeScalar(dsgStation.getTimeName(), "time of measurement", dsgStation.getTimeUnit().getUdUnit(),
        +                    DataType.DOUBLE)
        +                .addAttribute(CF.CALENDAR, dsgStation.getTimeUnit().getCalendar().toString()).build());
        +      }
             }
         
             llbb = CFPointWriterUtils.getBoundingBox(stnList); // gets written in super.finish();
         
        -    StationFeature sf = spf.getStation();
        -    StructureData stnData = sf.getFeatureData();
        -    StructureData obsData = spf.getFeatureData();
        -
        -    List coords = new ArrayList<>();
        -    coords.add(VariableSimpleBuilder.makeScalar(timeName, "time of measurement", timeUnit.getUdUnit(), DataType.DOUBLE)
        -        .addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build());
        -
             coords.add(VariableSimpleBuilder
                 .makeScalar(stationIndexName, "station index for this observation record", null, DataType.INT)
                 .addAttribute(CF.INSTANCE_DIMENSION, stationDimName).build());
         
        -    Formatter coordNames = new Formatter().format("%s %s %s", timeName, latName, lonName);
        -    if (useAlt)
        -      coordNames.format(" %s", stationAltName);
        -
        -    super.writeHeader(coords, stnData, obsData, coordNames.toString());
        +    super.writeHeader(coords, flattenStations, stationData, null);
         
             int count = 0;
        -    stationIndexMap = new HashMap<>(2 * stns.size());
        +    stationIndexMap = new HashMap<>(stnList.size(), 1.0f);
             for (StationFeature stn : stnList) {
               writeStationData(stn);
               stationIndexMap.put(stn.getName(), count);
        @@ -109,7 +116,7 @@ public void writeHeader(List stns, StationPointFeature spf) thro
         
           }
         
        -  protected void makeFeatureVariables(StructureData featureData, boolean isExtended) {
        +  protected void makeFeatureVariables(List featureDataStructs, boolean isExtended) {
         
             // add the dimensions : extendded model can use an unlimited dimension
             // Dimension stationDim = isExtended ? writer.addDimension(null, stationDimName, 0, true, true, false) :
        @@ -122,8 +129,7 @@ protected void makeFeatureVariables(StructureData featureData, boolean isExtende
         
             if (useAlt) {
               stnVars.add(VariableSimpleBuilder.makeScalar(stationAltName, "station altitude", altUnits, DataType.DOUBLE)
        -          .addAttribute(CF.STANDARD_NAME, CF.SURFACE_ALTITUDE)
        -          .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altName, altUnits)).build());
        +          .addAttribute(CF.STANDARD_NAME, CF.STATION_ALTITUDE).build());
             }
         
             stnVars.add(VariableSimpleBuilder.makeString(stationIdName, "station identifier", null, id_strlen)
        @@ -137,9 +143,12 @@ protected void makeFeatureVariables(StructureData featureData, boolean isExtende
               stnVars.add(VariableSimpleBuilder.makeString(wmoName, "station WMO id", null, wmo_strlen)
                   .addAttribute(CF.STANDARD_NAME, CF.PLATFORM_ID).build());
         
        -    for (StructureMembers.Member m : featureData.getMembers()) {
        -      if (getDataVar(m.getName()) != null)
        -        stnVars.add(VariableSimpleBuilder.fromMember(m).build());
        +    for (StructureData featureData : featureDataStructs) {
        +      for (StructureMembers.Member m : featureData.getMembers()) {
        +        if (getDataVar(m.getName()) != null
        +            && stnVars.stream().noneMatch(x -> x.getShortName().equals(m.getFullName())))
        +          stnVars.add(VariableSimpleBuilder.fromMember(m).build());
        +      }
             }
         
             if (isExtended) {
        @@ -171,13 +180,25 @@ private void writeStationData(StationFeature stn) throws IOException {
           }
         
           public void writeRecord(Station s, PointFeature sobs, StructureData sdata) throws IOException {
        -    writeRecord(s.getName(), sobs.getObservationTime(), sobs.getObservationTimeAsCalendarDate(), sdata);
        +    if (s instanceof DsgFeatureCollection) {
        +      DsgFeatureCollection dsgStation = (DsgFeatureCollection) s;
        +      writeRecord(dsgStation.getName(), dsgStation.getTimeName(), sobs.getObservationTime(),
        +          sobs.getObservationTimeAsCalendarDate(), altitudeCoordinateName, sobs.getLocation().getAltitude(), sdata);
        +    } else {
        +      writeRecord(s.getName(), sobs.getFeatureCollection().getTimeName(), sobs.getObservationTime(),
        +          sobs.getObservationTimeAsCalendarDate(), altitudeCoordinateName, sobs.getLocation().getAltitude(), sdata);
        +    }
           }
         
        -  private int obsRecno;
        +  protected int obsRecno;
         
           public void writeRecord(String stnName, double timeCoordValue, CalendarDate obsDate, StructureData sdata)
               throws IOException {
        +    writeRecord(stnName, timeName, timeCoordValue, obsDate, altitudeCoordinateName, 0, sdata);
        +  }
        +
        +  public void writeRecord(String stnName, String timeCoordName, double timeCoordValue, CalendarDate obsDate,
        +      String altName, double altValue, StructureData sdata) throws IOException {
             trackBB(null, obsDate);
         
             Integer parentIndex = stationIndexMap.get(stnName);
        @@ -185,7 +206,9 @@ public void writeRecord(String stnName, double timeCoordValue, CalendarDate obsD
               throw new RuntimeException("Cant find station " + stnName);
         
             StructureMembers.Builder smb = StructureMembers.builder().setName("Coords");
        -    smb.addMemberScalar(timeName, null, null, DataType.DOUBLE, timeCoordValue);
        +    smb.addMemberScalar(timeCoordName, null, null, DataType.DOUBLE, timeCoordValue);
        +    if (useAlt)
        +      smb.addMemberScalar(altName, null, null, DataType.DOUBLE, altValue);
             smb.addMemberScalar(stationIndexName, null, null, DataType.INT, parentIndex);
             StructureData coords = new StructureDataFromMember(smb.build());
         
        @@ -193,5 +216,4 @@ public void writeRecord(String stnName, double timeCoordValue, CalendarDate obsD
             StructureDataComposite sdall = StructureDataComposite.create(ImmutableList.of(coords, sdata));
             obsRecno = super.writeStructureData(obsRecno, record, sdall, dataMap);
           }
        -
         }
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFStationProfileCollection.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFStationProfileCollection.java
        index ca93065bca..e010e32f91 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFStationProfileCollection.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFStationProfileCollection.java
        @@ -6,6 +6,7 @@
         package ucar.nc2.ft.point.writer;
         
         import com.google.common.collect.ImmutableList;
        +import com.google.common.collect.Iterables;
         import org.slf4j.Logger;
         import org.slf4j.LoggerFactory;
         import ucar.ma2.*;
        @@ -13,13 +14,12 @@
         import ucar.nc2.constants.CDM;
         import ucar.nc2.constants.CF;
         import ucar.nc2.dataset.conv.CF1Convention;
        -import ucar.nc2.ft.PointFeature;
        -import ucar.nc2.ft.ProfileFeature;
        -import ucar.nc2.ft.StationProfileFeature;
        +import ucar.nc2.ft.*;
         import ucar.nc2.ft.point.StationFeature;
         import ucar.nc2.time.CalendarDateUnit;
         import java.io.IOException;
         import java.util.*;
        +import java.util.stream.Collectors;
         
         /**
          * Write a CF "Discrete Sample" station profile collection file.
        @@ -48,7 +48,6 @@ public class WriterCFStationProfileCollection extends CFPointWriter {
           // private Formatter coordNames = new Formatter();
           private Structure profileStruct; // used for netcdf4 extended
           private Map profileVarMap = new HashMap<>();
        -  private boolean headerDone;
         
           public WriterCFStationProfileCollection(String fileOut, List globalAtts, List dataVars,
               CalendarDateUnit timeUnit, String altUnits, CFPointWriterConfig config) throws IOException {
        @@ -59,12 +58,11 @@ public WriterCFStationProfileCollection(String fileOut, List globalAt
           }
         
           public void setStations(List stns) {
        -    this.stnList = stns;
        +    this.stnList = stns.stream().distinct().collect(Collectors.toList());
         
             // see if there's altitude, wmoId for any stations
             for (StationFeature stn : stnList) {
        -      if (!Double.isNaN(stn.getAltitude()))
        -        useAlt = true;
        +      useAlt = !Double.isNaN(stn.getAltitude());
               if ((stn.getWmoId() != null) && (!stn.getWmoId().trim().isEmpty()))
                 useWmoId = true;
               if ((stn.getDescription() != null) && (!stn.getDescription().trim().isEmpty()))
        @@ -84,43 +82,41 @@ public void setStations(List stns) {
           public int writeProfile(StationProfileFeature spf, ProfileFeature profile) throws IOException {
             int count = 0;
             for (PointFeature pf : profile) {
        -      if (!headerDone) {
        -        if (id_strlen == 0)
        -          id_strlen = profile.getName().length() * 2;
        -        writeHeader(spf, profile, pf);
        -        headerDone = true;
        -      }
               writeObsData(pf);
               count++;
             }
        -
        -    Integer stnIndex = stationIndexMap.get(spf.getName());
        -    if (stnIndex == null) {
        -      log.warn("BAD station {}", spf.getName());
        -    } else {
        -      writeProfileData(stnIndex, profile, count);
        -    }
        -
             return count;
           }
         
        -  private void writeHeader(StationProfileFeature stn, ProfileFeature profile, PointFeature obs) throws IOException {
        -    StructureData stnData = stn.getFeatureData();
        -    StructureData profileData = profile.getFeatureData();
        -    StructureData obsData = obs.getFeatureData();
        +  public void writeHeader(List stations) throws IOException {
         
             List obsCoords = new ArrayList<>();
        -    // obsCoords.add(VariableSimpleBuilder.makeScalar(timeName, "time of measurement", timeUnit.getUnitsString(),
        -    // DataType.DOUBLE)); // LOOK ??
        -    Formatter coordNames = new Formatter().format("%s %s %s", profileTimeName, latName, lonName);
        -    // if (useAlt) {
        -    obsCoords.add(VariableSimpleBuilder.makeScalar(altitudeCoordinateName, "obs altitude", altUnits, DataType.DOUBLE)
        -        .addAttribute(CF.STANDARD_NAME, "altitude")
        -        .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altitudeCoordinateName, altUnits)).build());
        -    coordNames.format(" %s", altitudeCoordinateName);
        -    // }
        -
        -    super.writeHeader2(obsCoords, stnData, profileData, obsData, coordNames.toString());
        +    List flattenStations = new ArrayList<>();
        +    List featureData = new ArrayList<>();
        +    List profileData = new ArrayList<>();
        +
        +    for (StationFeature station : stations) {
        +      StationProfileFeature stationProfile = (StationProfileFeature) station;
        +      featureData.add(stationProfile.getFeatureData());
        +      for (ProfileFeature pfc : stationProfile) {
        +        flattenStations.add(pfc);
        +        profileData.add(pfc.getFeatureData());
        +      }
        +
        +
        +      obsCoords.add(VariableSimpleBuilder
        +          .makeScalar(stationProfile.getTimeName(), "time of measurement", timeUnit.toString(), DataType.DOUBLE)
        +          .build());
        +      if (altUnits != null) {
        +        altitudeCoordinateName = stationProfile.getAltName();
        +        obsCoords
        +            .add(VariableSimpleBuilder.makeScalar(altitudeCoordinateName, "obs altitude", altUnits, DataType.DOUBLE)
        +                .addAttribute(CF.STANDARD_NAME, "altitude")
        +                .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altitudeCoordinateName, altUnits)).build());
        +      }
        +    }
        +
        +    super.writeHeader(obsCoords, flattenStations, featureData, profileData);
         
             // write the stations
             int count = 0;
        @@ -128,12 +124,36 @@ private void writeHeader(StationProfileFeature stn, ProfileFeature profile, Poin
             for (StationFeature sf : stnList) {
               writeStationData(sf);
               stationIndexMap.put(sf.getName(), count);
        +      for (ProfileFeature p : (StationProfileFeature) sf) {
        +        int countPoints = 0;
        +        if (p.size() >= 0) {
        +          countPoints += p.size();
        +        } else {
        +          countPoints += Iterables.size(p);
        +        }
        +        writeProfileData(count, p, countPoints);
        +      }
               count++;
             }
        +  }
         
        +  @Override
        +  public void setFeatureAuxInfo(int nfeatures, int id_strlen) {
        +    int countProfiles = 0;
        +    int name_strlen = 0;
        +    for (StationFeature s : stnList) {
        +      name_strlen = Math.max(name_strlen, s.getName().length());
        +      if (((StationProfileFeature) s).size() >= 0)
        +        countProfiles += ((StationProfileFeature) s).size();
        +      else {
        +        countProfiles += Iterables.size(((StationProfileFeature) s));
        +      }
        +    }
        +    this.nfeatures = countProfiles;
        +    this.id_strlen = name_strlen;
           }
         
        -  protected void makeFeatureVariables(StructureData stnData, boolean isExtended) {
        +  protected void makeFeatureVariables(List stnDataStructs, boolean isExtended) {
             // add the dimensions : extended model can use an unlimited dimension
             // Dimension stationDim = isExtended ? writer.addDimension(null, stationDimName, 0, true, true, false) :
             // writer.addDimension(null, stationDimName, nstns);
        @@ -145,8 +165,8 @@ protected void makeFeatureVariables(StructureData stnData, boolean isExtended) {
         
             if (useAlt) {
               stnVars.add(VariableSimpleBuilder.makeScalar(stationAltName, "station altitude", altUnits, DataType.DOUBLE)
        -          .addAttribute(CF.STANDARD_NAME, CF.SURFACE_ALTITUDE)
        -          .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altName, altUnits)).build());
        +          .addAttribute(CF.STANDARD_NAME, CF.STATION_ALTITUDE)
        +          .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(stationAltName, altUnits)).build());
             }
         
             stnVars.add(VariableSimpleBuilder.makeString(stationIdName, "station identifier", null, id_strlen)
        @@ -160,9 +180,11 @@ protected void makeFeatureVariables(StructureData stnData, boolean isExtended) {
               stnVars.add(VariableSimpleBuilder.makeString(wmoName, "station WMO id", null, wmo_strlen)
                   .addAttribute(CF.STANDARD_NAME, CF.PLATFORM_ID).build());
         
        -    for (StructureMembers.Member m : stnData.getMembers()) {
        -      if (getDataVar(m.getName()) != null)
        -        stnVars.add(VariableSimpleBuilder.fromMember(m).build());
        +    for (StructureData stnData : stnDataStructs) {
        +      for (StructureMembers.Member m : stnData.getMembers()) {
        +        if (getDataVar(m.getName()) != null)
        +          stnVars.add(VariableSimpleBuilder.fromMember(m).build());
        +      }
             }
         
             if (isExtended) {
        @@ -195,7 +217,7 @@ private void writeStationData(StationFeature stn) throws IOException {
           }
         
           @Override
        -  protected void makeMiddleVariables(StructureData profileData, boolean isExtended) {
        +  protected void makeMiddleVariables(List profileDataStructs, boolean isExtended) {
             Dimension profileDim = writer.addDimension(null, profileDimName, nfeatures);
         
             // add the profile Variables using the profile dimension
        @@ -216,10 +238,12 @@ protected void makeMiddleVariables(StructureData profileData, boolean isExtended
                 .add(VariableSimpleBuilder.makeScalar(stationIndexName, "station index for this profile", null, DataType.INT)
                     .addAttribute(CF.INSTANCE_DIMENSION, stationDimName).build());
         
        -    for (StructureMembers.Member m : profileData.getMembers()) {
        -      VariableSimpleIF dv = getDataVar(m.getName());
        -      if (dv != null)
        -        profileVars.add(dv);
        +    for (StructureData profileData : profileDataStructs) {
        +      for (StructureMembers.Member m : profileData.getMembers()) {
        +        VariableSimpleIF dv = getDataVar(m.getName());
        +        if (dv != null)
        +          profileVars.add(dv);
        +      }
             }
         
             if (isExtended) {
        @@ -232,14 +256,16 @@ protected void makeMiddleVariables(StructureData profileData, boolean isExtended
         
           private int profileRecno;
         
        +  protected void resetProfileIndex() {
        +    profileRecno = 0;
        +  }
        +
           public void writeProfileData(int stnIndex, ProfileFeature profile, int nobs) throws IOException {
             trackBB(profile.getLatLon(), profile.getTime());
         
             StructureMembers.Builder smb = StructureMembers.builder().setName("Coords");
             smb.addMemberScalar(latName, null, null, DataType.DOUBLE, profile.getLatLon().getLatitude());
             smb.addMemberScalar(lonName, null, null, DataType.DOUBLE, profile.getLatLon().getLongitude());
        -    // Date date = (profile.getTime() != null) ? (double) profile.getTime().getTime() : 0.0; // LOOK (profile.getTime()
        -    // != null) ???
             double timeInMyUnits = timeUnit.makeOffsetFromRefDate(profile.getTime());
             smb.addMemberScalar(profileTimeName, null, null, DataType.DOUBLE, timeInMyUnits); // LOOK time not always part
                                                                                               // of profile
        @@ -257,9 +283,15 @@ public void writeProfileData(int stnIndex, ProfileFeature profile, int nobs) thr
         
           private int obsRecno;
         
        +  protected void resetObsIndex() {
        +    obsRecno = 0;
        +  }
        +
           public void writeObsData(PointFeature pf) throws IOException {
             StructureMembers.Builder smb = StructureMembers.builder().setName("Coords");
        -    smb.addMemberScalar(altitudeCoordinateName, null, null, DataType.DOUBLE, pf.getLocation().getAltitude());
        +    smb.addMemberScalar(pf.getFeatureCollection().getTimeName(), null, null, DataType.DOUBLE, pf.getObservationTime());
        +    smb.addMemberScalar(pf.getFeatureCollection().getAltName(), null, null, DataType.DOUBLE,
        +        pf.getLocation().getAltitude());
             StructureData coords = new StructureDataFromMember(smb.build());
         
             // coords first so it takes precedence
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFTrajectoryCollection.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFTrajectoryCollection.java
        index a4ead05a09..cc5f2fe90c 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFTrajectoryCollection.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFTrajectoryCollection.java
        @@ -11,8 +11,7 @@
         import ucar.nc2.constants.CDM;
         import ucar.nc2.constants.CF;
         import ucar.nc2.dataset.conv.CF1Convention;
        -import ucar.nc2.ft.PointFeature;
        -import ucar.nc2.ft.TrajectoryFeature;
        +import ucar.nc2.ft.*;
         import ucar.nc2.time.CalendarDateUnit;
         import ucar.unidata.geoloc.EarthLocation;
         import java.io.IOException;
        @@ -30,7 +29,6 @@ public class WriterCFTrajectoryCollection extends CFPointWriter {
           ///////////////////////////////////////////////////
           private Structure featureStruct; // used for netcdf4 extended
           private Map featureVarMap = new HashMap<>();
        -  private boolean headerDone;
         
           public WriterCFTrajectoryCollection(String fileOut, List globalAtts, List dataVars,
               CalendarDateUnit timeUnit, String altUnits, CFPointWriterConfig config) throws IOException {
        @@ -43,41 +41,42 @@ public WriterCFTrajectoryCollection(String fileOut, List globalAtts,
           public int writeTrajectory(TrajectoryFeature traj) throws IOException {
             int count = 0;
             for (PointFeature pf : traj) {
        -      if (!headerDone) {
        -        if (id_strlen == 0)
        -          id_strlen = traj.getName().length() * 2;
        -        writeHeader(traj, pf);
        -        headerDone = true;
        -      }
        +      if (id_strlen == 0)
        +        id_strlen = traj.getName().length() * 2;
               writeObsData(pf);
               count++;
             }
        -
             writeTrajectoryData(traj, count);
             return count;
           }
         
        -  private void writeHeader(TrajectoryFeature feature, PointFeature obs) throws IOException {
        -    // obs data
        -    List coords = new ArrayList<>();
        -    coords.add(VariableSimpleBuilder.makeScalar(timeName, "time of measurement", timeUnit.getUdUnit(), DataType.DOUBLE)
        -        .addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build());
        -
        -    coords.add(
        +  protected void writeHeader(List trajectories) throws IOException {
        +    List obsCoords = new ArrayList<>();
        +    List featureData = new ArrayList<>();
        +
        +    for (TrajectoryFeature trajectory : trajectories) {
        +      featureData.add(trajectory.getFeatureData());
        +      // obs data
        +      obsCoords.add(VariableSimpleBuilder
        +          .makeScalar(trajectory.getTimeName(), "time of measurement", timeUnit.getUdUnit(), DataType.DOUBLE)
        +          .addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build());
        +
        +      if (altUnits != null) {
        +        altitudeCoordinateName = trajectory.getAltName();
        +        obsCoords.add(VariableSimpleBuilder
        +            .makeScalar(altitudeCoordinateName, "altitude of measurement", altUnits, DataType.DOUBLE)
        +            .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altitudeCoordinateName, altUnits)).build());
        +      }
        +    }
        +    obsCoords.add(
                 VariableSimpleBuilder.makeScalar(latName, "latitude of measurement", CDM.LAT_UNITS, DataType.DOUBLE).build());
        -    coords.add(
        +    obsCoords.add(
                 VariableSimpleBuilder.makeScalar(lonName, "longitude of measurement", CDM.LON_UNITS, DataType.DOUBLE).build());
        -    Formatter coordNames = new Formatter().format("%s %s %s", timeName, latName, lonName);
        -    if (altUnits != null) {
        -      coords.add(VariableSimpleBuilder.makeScalar(altName, "altitude of measurement", altUnits, DataType.DOUBLE)
        -          .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altName, altUnits)).build());
        -      coordNames.format(" %s", altName);
        -    }
         
        -    super.writeHeader(coords, feature.getFeatureData(), obs.getFeatureData(), coordNames.toString());
        +    super.writeHeader(obsCoords, trajectories, featureData, null);
           }
         
        -  protected void makeFeatureVariables(StructureData featureData, boolean isExtended) {
        +  protected void makeFeatureVariables(List featureDataStructs, boolean isExtended) {
             // LOOK why not unlimited here fro extended model ?
             Dimension profileDim = writer.addDimension(null, trajDimName, nfeatures);
         
        @@ -90,10 +89,12 @@ protected void makeFeatureVariables(StructureData featureData, boolean isExtende
                 .add(VariableSimpleBuilder.makeScalar(numberOfObsName, "number of obs for this profile", null, DataType.INT)
                     .addAttribute(CF.SAMPLE_DIMENSION, recordDimName).build());
         
        -    for (StructureMembers.Member m : featureData.getMembers()) {
        -      VariableSimpleIF dv = getDataVar(m.getName());
        -      if (dv != null)
        -        featureVars.add(dv);
        +    for (StructureData featureData : featureDataStructs) {
        +      for (StructureMembers.Member m : featureData.getMembers()) {
        +        VariableSimpleIF dv = getDataVar(m.getName());
        +        if (dv != null)
        +          featureVars.add(dv);
        +      }
             }
         
             if (isExtended) {
        @@ -126,11 +127,11 @@ public void writeObsData(PointFeature pf) throws IOException {
             trackBB(loc.getLatLon(), timeUnit.makeCalendarDate(pf.getObservationTime()));
         
             StructureMembers.Builder smb = StructureMembers.builder().setName("Coords");
        -    smb.addMemberScalar(timeName, null, null, DataType.DOUBLE, pf.getObservationTime());
        +    smb.addMemberScalar(pf.getFeatureCollection().getTimeName(), null, null, DataType.DOUBLE, pf.getObservationTime());
             smb.addMemberScalar(latName, null, null, DataType.DOUBLE, loc.getLatitude());
             smb.addMemberScalar(lonName, null, null, DataType.DOUBLE, loc.getLongitude());
             if (altUnits != null)
        -      smb.addMemberScalar(altName, null, null, DataType.DOUBLE, loc.getAltitude());
        +      smb.addMemberScalar(pf.getFeatureCollection().getAltName(), null, null, DataType.DOUBLE, loc.getAltitude());
             StructureData coords = new StructureDataFromMember(smb.build());
         
             // coords first so it takes precedence
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFTrajectoryProfileCollection.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFTrajectoryProfileCollection.java
        index af61ad8230..767b9fa125 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFTrajectoryProfileCollection.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer/WriterCFTrajectoryProfileCollection.java
        @@ -11,9 +11,7 @@
         import ucar.nc2.constants.CDM;
         import ucar.nc2.constants.CF;
         import ucar.nc2.dataset.conv.CF1Convention;
        -import ucar.nc2.ft.PointFeature;
        -import ucar.nc2.ft.ProfileFeature;
        -import ucar.nc2.ft.TrajectoryProfileFeature;
        +import ucar.nc2.ft.*;
         import ucar.nc2.time.CalendarDateUnit;
         import java.io.IOException;
         import java.util.*;
        @@ -39,7 +37,6 @@ public class WriterCFTrajectoryProfileCollection extends CFPointWriter {
           ///////////////////////////////////////////////////
           private Structure profileStruct; // used for netcdf4 extended
           private Map profileVarMap = new HashMap<>();
        -  private boolean headerDone;
         
           public WriterCFTrajectoryProfileCollection(String fileOut, List globalAtts,
               List dataVars, CalendarDateUnit timeUnit, String altUnits, CFPointWriterConfig config)
        @@ -59,12 +56,8 @@ public void setFeatureAuxInfo2(int ntraj, int traj_strlen) {
           public int writeProfile(TrajectoryProfileFeature section, ProfileFeature profile) throws IOException {
             int count = 0;
             for (PointFeature pf : profile) {
        -      if (!headerDone) {
        -        if (id_strlen == 0)
        -          id_strlen = profile.getName().length() * 2;
        -        writeHeader(section, profile, pf);
        -        headerDone = true;
        -      }
        +      if (id_strlen == 0)
        +        id_strlen = profile.getName().length() * 2;
               writeObsData(pf);
               count++;
             }
        @@ -78,26 +71,34 @@ public int writeProfile(TrajectoryProfileFeature section, ProfileFeature profile
             return count;
           }
         
        -  private void writeHeader(TrajectoryProfileFeature section, ProfileFeature profile, PointFeature obs)
        -      throws IOException {
        -
        -    StructureData sectionData = section.getFeatureData();
        -    StructureData profileData = profile.getFeatureData();
        -    StructureData obsData = obs.getFeatureData();
        -
        -    Formatter coordNames = new Formatter().format("%s %s %s", profileTimeName, latName, lonName);
        +  protected void writeHeader(List trajectoryProfiles) throws IOException {
             List obsCoords = new ArrayList<>();
        -    if (useAlt) {
        -      obsCoords.add(VariableSimpleBuilder.makeScalar(altitudeCoordinateName, "obs altitude", altUnits, DataType.DOUBLE)
        -          .addAttribute(CF.STANDARD_NAME, "altitude")
        -          .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altitudeCoordinateName, altUnits)).build());
        -      coordNames.format(" %s", altitudeCoordinateName);
        +    List profileFeatures = new ArrayList<>();
        +    List trajectoryData = new ArrayList<>();
        +    List profileData = new ArrayList<>();
        +
        +    for (TrajectoryProfileFeature trajectoryProfile : trajectoryProfiles) {
        +      trajectoryData.add(trajectoryProfile.getFeatureData());
        +      for (ProfileFeature profile : trajectoryProfile) {
        +        profileData.add(profile.getFeatureData());
        +        profileFeatures.add(profile);
        +      }
        +      obsCoords.add(VariableSimpleBuilder
        +          .makeScalar(trajectoryProfile.getTimeName(), "time of measurement", timeUnit.toString(), DataType.DOUBLE)
        +          .build());
        +
        +      if (altUnits != null) {
        +        altitudeCoordinateName = trajectoryProfile.getAltName();
        +        obsCoords
        +            .add(VariableSimpleBuilder.makeScalar(altitudeCoordinateName, "obs altitude", altUnits, DataType.DOUBLE)
        +                .addAttribute(CF.STANDARD_NAME, "altitude")
        +                .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altitudeCoordinateName, altUnits)).build());
        +      }
             }
        -
        -    super.writeHeader2(obsCoords, sectionData, profileData, obsData, coordNames.toString());
        +    super.writeHeader(obsCoords, profileFeatures, trajectoryData, profileData);
           }
         
        -  protected void makeFeatureVariables(StructureData trajData, boolean isExtended) {
        +  protected void makeFeatureVariables(List trajDataStructs, boolean isExtended) {
         
             // add the dimensions : extended model can use an unlimited dimension
             Dimension trajDim = writer.addDimension(null, trajDimName, ntraj);
        @@ -107,9 +108,11 @@ protected void makeFeatureVariables(StructureData trajData, boolean isExtended)
             trajVars.add(VariableSimpleBuilder.makeString(trajIdName, "trajectory identifier", null, traj_strlen)
                 .addAttribute(CF.CF_ROLE, CF.TRAJECTORY_ID).build());
         
        -    for (StructureMembers.Member m : trajData.getMembers()) {
        -      if (getDataVar(m.getName()) != null)
        -        trajVars.add(VariableSimpleBuilder.fromMember(m).build());
        +    for (StructureData trajData : trajDataStructs) {
        +      for (StructureMembers.Member m : trajData.getMembers()) {
        +        if (getDataVar(m.getName()) != null)
        +          trajVars.add(VariableSimpleBuilder.fromMember(m).build());
        +      }
             }
         
             if (isExtended) {
        @@ -136,7 +139,7 @@ private int writeSectionData(TrajectoryProfileFeature section) throws IOExceptio
           }
         
           @Override
        -  protected void makeMiddleVariables(StructureData profileData, boolean isExtended) {
        +  protected void makeMiddleVariables(List profileDataStructs, boolean isExtended) {
         
             Dimension profileDim = writer.addDimension(null, profileDimName, nfeatures);
         
        @@ -162,10 +165,12 @@ protected void makeMiddleVariables(StructureData profileData, boolean isExtended
                 .add(VariableSimpleBuilder.makeScalar(numberOfObsName, "number of obs for this profile", null, DataType.INT)
                     .addAttribute(CF.SAMPLE_DIMENSION, recordDimName).build());
         
        -    for (StructureMembers.Member m : profileData.getMembers()) {
        -      VariableSimpleIF dv = getDataVar(m.getName());
        -      if (dv != null)
        -        profileVars.add(dv);
        +    for (StructureData profileData : profileDataStructs) {
        +      for (StructureMembers.Member m : profileData.getMembers()) {
        +        VariableSimpleIF dv = getDataVar(m.getName());
        +        if (dv != null)
        +          profileVars.add(dv);
        +      }
             }
         
             if (isExtended) {
        @@ -202,8 +207,10 @@ public void writeProfileData(int sectionIndex, ProfileFeature profile, int nobs)
         
           private void writeObsData(PointFeature pf) throws IOException {
             StructureMembers.Builder smb = StructureMembers.builder().setName("Coords");
        -    if (useAlt)
        -      smb.addMemberScalar(altitudeCoordinateName, null, null, DataType.DOUBLE, pf.getLocation().getAltitude());
        +    smb.addMemberScalar(pf.getFeatureCollection().getTimeName(), null, null, DataType.DOUBLE, pf.getObservationTime());
        +    if (altUnits != null)
        +      smb.addMemberScalar(pf.getFeatureCollection().getAltName(), null, null, DataType.DOUBLE,
        +          pf.getLocation().getAltitude());
             StructureData coords = new StructureDataFromMember(smb.build());
         
             // coords first so it takes precedence
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/CFPointWriter.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/CFPointWriter.java
        index 639b6b89b3..f63e81f939 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/CFPointWriter.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/CFPointWriter.java
        @@ -16,7 +16,12 @@
         import java.util.Comparator;
         import java.util.Formatter;
         import java.util.List;
        +import java.util.ArrayList;
        +
        +import org.slf4j.Logger;
        +import org.slf4j.LoggerFactory;
         import ucar.nc2.NetcdfFileWriter;
        +import ucar.nc2.Variable;
         import ucar.nc2.constants.FeatureType;
         import ucar.nc2.ft.DsgFeatureCollection;
         import ucar.nc2.ft.FeatureDatasetFactoryManager;
        @@ -25,6 +30,7 @@
         import ucar.nc2.ft.PointFeatureCollection;
         import ucar.nc2.ft.ProfileFeature;
         import ucar.nc2.ft.ProfileFeatureCollection;
        +import ucar.nc2.ft.point.StationFeature;
         import ucar.nc2.ft.StationProfileFeature;
         import ucar.nc2.ft.StationProfileFeatureCollection;
         import ucar.nc2.ft.StationTimeSeriesFeatureCollection;
        @@ -32,7 +38,6 @@
         import ucar.nc2.ft.TrajectoryFeatureCollection;
         import ucar.nc2.ft.TrajectoryProfileFeature;
         import ucar.nc2.ft.TrajectoryProfileFeatureCollection;
        -import ucar.nc2.ft.point.StationPointFeature;
         import ucar.nc2.util.CancelTask;
         import ucar.nc2.write.Nc4Chunking;
         import ucar.nc2.write.Nc4ChunkingStrategy;
        @@ -42,6 +47,8 @@
         /** Static methods to write Point Feature Collections into netcdf3/4 files in CF 1.6 point obs conventions. */
         public class CFPointWriter {
           private static boolean debug = true;
        +  private static final Logger logger = LoggerFactory.getLogger(ucar.nc2.ft.point.writer2.CFPointWriter.class);
        +
         
           public static int writeFeatureCollection(FeatureDatasetPoint fdpoint, String fileOut, NetcdfFileFormat format)
               throws IOException {
        @@ -89,18 +96,18 @@ private static int writePointFeatureCollection(FeatureDatasetPoint fdpoint, Poin
                 fdpoint.getDataVariables(), pfc.getTimeUnit(), pfc.getAltUnits(), config)) {
         
               pointWriter.setExtraVariables(pfc.getExtraVariables());
        +      pointWriter.writeHeader(fdpoint.getPointFeatureCollectionList());
         
               int count = 0;
        -      for (PointFeature pf : pfc) {
        -        if (count == 0)
        -          pointWriter.writeHeader(pf);
        -
        -        pointWriter.writeRecord(pf, pf.getFeatureData());
        -        count++;
        -        if (debug && count % 100 == 0)
        -          System.out.printf("%d ", count);
        -        if (debug && count % 1000 == 0)
        -          System.out.printf("%n ");
        +      for (DsgFeatureCollection pointFeatures : fdpoint.getPointFeatureCollectionList()) {
        +        for (PointFeature pf : (PointFeatureCollection) pointFeatures) {
        +          pointWriter.writeRecord(pf);
        +          count++;
        +          if (debug && count % 100 == 0)
        +            logger.debug(String.format("%d ", count));
        +          if (debug && count % 1000 == 0)
        +            logger.debug(String.format("%n "));
        +        }
               }
         
               pointWriter.finish();
        @@ -114,23 +121,29 @@ private static int writeStationFeatureCollection(FeatureDatasetPoint dataset, St
             try (WriterCFStationCollection cfWriter = new WriterCFStationCollection(fileOut, dataset.attributes(),
                 dataset.getDataVariables(), fc.getTimeUnit(), fc.getAltUnits(), config)) {
         
        -      cfWriter.setExtraVariables(fc.getExtraVariables());
         
        -      // write all data, but no need to sort by station
        -      PointFeatureCollection pfc = fc.flatten(null, null, null);
        +      List flattenFeatures = new ArrayList<>();
        +      List extraVariables = new ArrayList<>();
        +      for (DsgFeatureCollection featureCollection : dataset.getPointFeatureCollectionList()) {
        +        extraVariables.addAll(featureCollection.getExtraVariables());
        +        flattenFeatures.addAll(((StationTimeSeriesFeatureCollection) featureCollection).getStationFeatures());
        +      }
         
        +      cfWriter.setExtraVariables(extraVariables);
        +      cfWriter.writeHeader(flattenFeatures);
               int count = 0;
        -      for (PointFeature pf : pfc) {
        -        StationPointFeature spf = (StationPointFeature) pf;
        -        if (count == 0)
        -          cfWriter.writeHeader(fc.getStationFeatures(), spf);
        -
        -        cfWriter.writeRecord(spf.getStation(), pf, pf.getFeatureData());
        -        count++;
        -        if (debug && count % 100 == 0)
        -          System.out.printf("%d ", count);
        -        if (debug && count % 1000 == 0)
        -          System.out.printf("%n ");
        +      for (DsgFeatureCollection featureCollection : dataset.getPointFeatureCollectionList()) {
        +        cfWriter.resetObsIndex();
        +        for (PointFeatureCollection pointCollection : (StationTimeSeriesFeatureCollection) featureCollection) {
        +          for (PointFeature point : pointCollection) {
        +            cfWriter.writeObsData(point);
        +            count++;
        +            if (debug && count % 100 == 0)
        +              logger.debug(String.format("%d ", count));
        +            if (debug && count % 1000 == 0)
        +              logger.debug(String.format("%n "));
        +          }
        +        }
               }
         
               cfWriter.finish();
        @@ -144,36 +157,47 @@ private static int writeProfileFeatureCollection(FeatureDatasetPoint fdpoint, Pr
             try (WriterCFProfileCollection cfWriter = new WriterCFProfileCollection(fileOut, fdpoint.attributes(),
                 fdpoint.getDataVariables(), fc.getTimeUnit(), fc.getAltUnits(), config)) {
         
        -      cfWriter.setExtraVariables(fc.getExtraVariables());
        +      List flattenFeatures = new ArrayList<>();
        +      List extraVariables = new ArrayList<>();
         
               // LOOK this is lame
               // LOOK not always needed
               int count = 0;
               int name_strlen = 0;
        -      int nprofiles = fc.size();
        -      if (nprofiles < 0) {
        -        for (ProfileFeature pf : fc) {
        -          name_strlen = Math.max(name_strlen, pf.getName().length());
        -          count++;
        -        }
        -        nprofiles = count;
        -      } else {
        -        for (ProfileFeature pf : fc) {
        -          name_strlen = Math.max(name_strlen, pf.getName().length());
        -          count++;
        -          if (count > 10)
        -            break;
        +      int nprofiles = 0;
        +      for (DsgFeatureCollection featureCollection : fdpoint.getPointFeatureCollectionList()) {
        +        nprofiles += featureCollection.size();
        +        extraVariables.addAll(featureCollection.getExtraVariables());
        +        if (nprofiles < 0) {
        +          for (ProfileFeature profile : (ProfileFeatureCollection) featureCollection) {
        +            flattenFeatures.add(profile);
        +            name_strlen = Math.max(name_strlen, profile.getName().length());
        +            count++;
        +          }
        +          nprofiles = count;
        +        } else {
        +          for (ProfileFeature profile : (ProfileFeatureCollection) featureCollection) {
        +            flattenFeatures.add(profile);
        +            name_strlen = Math.max(name_strlen, profile.getName().length());
        +            count++;
        +            if (count > 10)
        +              break;
        +          }
                 }
               }
        +      cfWriter.setExtraVariables(extraVariables);
               cfWriter.setFeatureAuxInfo(nprofiles, name_strlen);
        +      cfWriter.writeHeader(flattenFeatures);
         
               count = 0;
        -      for (ProfileFeature profile : fc) {
        -        count += cfWriter.writeProfile(profile);
        -        if (debug && count % 10 == 0)
        -          System.out.printf("%d ", count);
        -        if (debug && count % 100 == 0)
        -          System.out.printf("%n ");
        +      for (DsgFeatureCollection featureCollection : fdpoint.getPointFeatureCollectionList()) {
        +        for (ProfileFeature profile : (ProfileFeatureCollection) featureCollection) {
        +          count += cfWriter.writeProfile(profile);
        +          if (debug && count % 10 == 0)
        +            logger.debug(String.format("%d ", count));
        +          if (debug && count % 100 == 0)
        +            logger.debug(String.format("%n "));
        +        }
               }
         
               cfWriter.finish();
        @@ -187,32 +211,37 @@ private static int writeTrajectoryFeatureCollection(FeatureDatasetPoint fdpoint,
             try (WriterCFTrajectoryCollection cfWriter = new WriterCFTrajectoryCollection(fileOut, fdpoint.attributes(),
                 fdpoint.getDataVariables(), fc.getTimeUnit(), fc.getAltUnits(), config)) {
         
        -      cfWriter.setExtraVariables(fc.getExtraVariables());
        -
        +      List flattenFeatures = new ArrayList<>();
        +      List extraVariables = new ArrayList<>();
               // LOOK not always needed
        -      int count = 0;
        +      int npoints = 0;
               int name_strlen = 0;
        -      int ntrajs = fc.size();
        -      if (ntrajs < 0) {
        -        for (TrajectoryFeature traj : fc) {
        -          name_strlen = Math.max(name_strlen, traj.getName().length());
        -          count++;
        +      int ntrajs = 0;
        +      for (DsgFeatureCollection featureCollection : fdpoint.getPointFeatureCollectionList()) {
        +        for (TrajectoryFeature trajectory : (TrajectoryFeatureCollection) featureCollection) {
        +          flattenFeatures.add(trajectory);
        +          extraVariables.addAll(trajectory.getExtraVariables());
        +          name_strlen = Math.max(name_strlen, trajectory.getName().length());
        +          npoints++;
                 }
        -        ntrajs = count;
               }
        +      ntrajs = npoints;
        +      cfWriter.setExtraVariables(extraVariables);
               cfWriter.setFeatureAuxInfo(ntrajs, name_strlen);
        -
        -      count = 0;
        -      for (TrajectoryFeature traj : fc) {
        -        count += cfWriter.writeTrajectory(traj);
        -        if (debug && count % 10 == 0)
        -          System.out.printf("%d ", count);
        -        if (debug && count % 100 == 0)
        -          System.out.printf("%n ");
        +      cfWriter.writeHeader(flattenFeatures);
        +
        +      npoints = 0;
        +      for (DsgFeatureCollection featureCollection : fdpoint.getPointFeatureCollectionList()) {
        +        for (TrajectoryFeature trajectory : (TrajectoryFeatureCollection) featureCollection) {
        +          npoints += cfWriter.writeTrajectory(trajectory);
        +          if (debug && npoints % 10 == 0)
        +            logger.debug(String.format("%d ", npoints));
        +          if (debug && npoints % 100 == 0)
        +            logger.debug(String.format("%n "));
        +        }
               }
        -
               cfWriter.finish();
        -      return count;
        +      return npoints;
             }
           }
         
        @@ -222,33 +251,44 @@ private static int writeStationProfileFeatureCollection(FeatureDatasetPoint data
             try (WriterCFStationProfileCollection cfWriter = new WriterCFStationProfileCollection(fileOut, dataset.attributes(),
                 dataset.getDataVariables(), fc.getTimeUnit(), fc.getAltUnits(), config)) {
         
        -      cfWriter.setExtraVariables(fc.getExtraVariables());
        -      cfWriter.setStations(fc.getStationFeatures());
        +      List extraVariables = new ArrayList<>();
        +      List flattenFeatures = new ArrayList<>();
         
               int name_strlen = 0;
               int countProfiles = 0;
        -      for (StationProfileFeature spf : fc) {
        -        name_strlen = Math.max(name_strlen, spf.getName().length());
        -        if (spf.size() >= 0)
        -          countProfiles += spf.size();
        -        else {
        -          countProfiles += Iterables.size(spf);
        +      for (DsgFeatureCollection featureCollection : dataset.getPointFeatureCollectionList()) {
        +        extraVariables.addAll(featureCollection.getExtraVariables());
        +        for (StationFeature station : ((StationProfileFeatureCollection) featureCollection).getStationFeatures()) {
        +          flattenFeatures.add(station);
        +          name_strlen = Math.max(name_strlen, station.getName().length());
        +          if (((StationProfileFeature) station).size() >= 0)
        +            countProfiles += ((StationProfileFeature) station).size();
        +          else {
        +            countProfiles += Iterables.size(((StationProfileFeature) station));
        +          }
                 }
               }
        +
        +      cfWriter.setExtraVariables(extraVariables);
        +      cfWriter.setStations(flattenFeatures);
               cfWriter.setFeatureAuxInfo(countProfiles, name_strlen);
        +      cfWriter.writeHeader(flattenFeatures);
        +
         
               int count = 0;
        -      for (StationProfileFeature spf : fc) {
        -        for (ProfileFeature pf : spf) {
        -          if (pf.getTime() == null) {
        -            continue; // assume this means its an "incomplete multidimensional"
        +      for (DsgFeatureCollection featureCollection : dataset.getPointFeatureCollectionList()) {
        +        cfWriter.resetObsIndex();
        +        for (StationFeature station : ((StationProfileFeatureCollection) featureCollection).getStationFeatures()) {
        +          for (ProfileFeature profile : (StationProfileFeature) station) {
        +            if (profile.getTime() == null) {
        +              continue; // assume this means its an "incomplete multidimensional"
        +            }
        +            count += cfWriter.writeProfile(profile);
        +            if (debug && count % 100 == 0)
        +              logger.debug(String.format("%d ", count));
        +            if (debug && count % 1000 == 0)
        +              logger.debug(String.format("%n "));
                   }
        -
        -          count += cfWriter.writeProfile(spf, pf);
        -          if (debug && count % 100 == 0)
        -            System.out.printf("%d ", count);
        -          if (debug && count % 1000 == 0)
        -            System.out.printf("%n ");
                 }
               }
         
        @@ -263,38 +303,46 @@ private static int writeTrajectoryProfileFeatureCollection(FeatureDatasetPoint d
             try (WriterCFTrajectoryProfileCollection cfWriter = new WriterCFTrajectoryProfileCollection(fileOut,
                 dataset.attributes(), dataset.getDataVariables(), fc.getTimeUnit(), fc.getAltUnits(), config)) {
         
        -      cfWriter.setExtraVariables(fc.getExtraVariables());
        +      List extraVariables = new ArrayList<>();
        +      List flattenFeatures = new ArrayList<>();
         
               int traj_strlen = 0;
               int prof_strlen = 0;
               int countTrajectories = 0;
               int countProfiles = 0;
        -      for (TrajectoryProfileFeature spf : fc) {
        -        countTrajectories++;
        -        traj_strlen = Math.max(traj_strlen, spf.getName().length());
        -        if (spf.size() >= 0)
        -          countProfiles += spf.size();
        -        else {
        -          for (ProfileFeature profile : spf) {
        -            prof_strlen = Math.max(prof_strlen, profile.getName().length());
        -            countProfiles++;
        +      for (DsgFeatureCollection featureCollection : dataset.getPointFeatureCollectionList()) {
        +        for (TrajectoryProfileFeature trajProf : ((TrajectoryProfileFeatureCollection) featureCollection)) {
        +          flattenFeatures.add(trajProf);
        +          extraVariables.addAll(trajProf.getExtraVariables());
        +          countTrajectories++;
        +          traj_strlen = Math.max(traj_strlen, trajProf.getName().length());
        +          if (trajProf.size() >= 0)
        +            countProfiles += trajProf.size();
        +          else {
        +            for (ProfileFeature profile : trajProf) {
        +              prof_strlen = Math.max(prof_strlen, profile.getName().length());
        +              countProfiles++;
        +            }
                   }
                 }
               }
        +      cfWriter.setExtraVariables(extraVariables);
               cfWriter.setFeatureAuxInfo(countProfiles, prof_strlen);
               cfWriter.setFeatureAuxInfo2(countTrajectories, traj_strlen);
        +      cfWriter.writeHeader(flattenFeatures);
         
               int count = 0;
        -      for (TrajectoryProfileFeature spf : fc) {
        -        for (ProfileFeature profile : spf) {
        -          if (profile.getTime() == null)
        -            continue; // assume this means its a "incomplete multidimensional"
        -
        -          count += cfWriter.writeProfile(spf, profile);
        -          if (debug && count % 100 == 0)
        -            System.out.printf("%d ", count);
        -          if (debug && count % 1000 == 0)
        -            System.out.printf("%n ");
        +      for (DsgFeatureCollection featureCollection : dataset.getPointFeatureCollectionList()) {
        +        for (TrajectoryProfileFeature trajProf : (TrajectoryProfileFeatureCollection) featureCollection) {
        +          for (ProfileFeature profile : trajProf) {
        +            if (profile.getTime() == null)
        +              continue; // assume this means its a "incomplete multidimensional"
        +            count += cfWriter.writeProfile(trajProf, profile);
        +            if (debug && count % 100 == 0)
        +              logger.debug(String.format("%d ", count));
        +            if (debug && count % 1000 == 0)
        +              logger.debug(String.format("%n "));
        +          }
                 }
               }
         
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFPointAbstract.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFPointAbstract.java
        index 7c9d296675..a2dba6ea4a 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFPointAbstract.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFPointAbstract.java
        @@ -6,15 +6,11 @@
         
         import java.io.Closeable;
         import java.io.IOException;
        -import java.util.ArrayList;
        -import java.util.Arrays;
        -import java.util.Date;
        -import java.util.HashMap;
        -import java.util.HashSet;
        -import java.util.List;
        -import java.util.Map;
        -import java.util.Set;
        +import java.util.*;
         import javax.annotation.Nullable;
        +
        +import com.google.common.collect.Iterators;
        +import com.google.common.collect.PeekingIterator;
         import org.slf4j.Logger;
         import org.slf4j.LoggerFactory;
         import ucar.ma2.Array;
        @@ -25,20 +21,14 @@
         import ucar.ma2.InvalidRangeException;
         import ucar.ma2.StructureData;
         import ucar.ma2.StructureMembers;
        -import ucar.nc2.Attribute;
        -import ucar.nc2.AttributeContainer;
        -import ucar.nc2.Dimension;
        -import ucar.nc2.Dimensions;
        -import ucar.nc2.NetcdfFile;
        -import ucar.nc2.Structure;
        -import ucar.nc2.Variable;
        -import ucar.nc2.VariableSimpleIF;
        +import ucar.nc2.*;
         import ucar.nc2.constants.ACDD;
         import ucar.nc2.constants.AxisType;
         import ucar.nc2.constants.CDM;
         import ucar.nc2.constants.CF;
         import ucar.nc2.constants._Coordinate;
         import ucar.nc2.dataset.CoordinateAxis;
        +import ucar.nc2.ft.*;
         import ucar.nc2.time.CalendarDate;
         import ucar.nc2.time.CalendarDateFormatter;
         import ucar.nc2.time.CalendarDateUnit;
        @@ -104,7 +94,7 @@ abstract class WriterCFPointAbstract implements Closeable {
           Structure record; // used for netcdf3 and netcdf4 extended
           private Dimension recordDim;
           HashSet dataMap = new HashSet<>();
        -  private List extra;
        +  private List extra = new ArrayList<>();
         
           LatLonRect llbb;
           private CalendarDate minDate;
        @@ -121,7 +111,7 @@ abstract class WriterCFPointAbstract implements Closeable {
            * @param config configuration
            */
           WriterCFPointAbstract(String fileOut, AttributeContainer atts, List dataVars,
        -      CalendarDateUnit timeUnit, @Nullable String altUnits, CFPointWriterConfig config) throws IOException {
        +      CalendarDateUnit timeUnit, @Nullable String altUnits, CFPointWriterConfig config) {
         
             this.dataVars = dataVars;
             this.timeUnit = timeUnit;
        @@ -191,51 +181,53 @@ VariableSimpleIF findDataVar(String name) {
           }
         
           // Always overridden
        -  abstract void makeFeatureVariables(StructureData featureData, boolean isExtended);
        +  abstract void makeFeatureVariables(List featureData, boolean isExtended);
         
           // Supplied when its a two level feature (station profile, trajectory profile)
        -  void makeMiddleVariables(StructureData middleData, boolean isExtended) {
        +  void makeMiddleVariables(List middleData, boolean isExtended) {
             // NOOP
           }
         
        -  void writeHeader(List obsCoords, StructureData featureData, @Nullable StructureData middleData,
        -      StructureData obsData, String coordNames) throws IOException {
        +  protected void writeHeader(List obsCoords,
        +      Iterable stationFeatures, List featureDataStruct,
        +      @Nullable List middleDataStruct) throws IOException {
        +
             this.recordDim = Dimension.builder().setName(recordDimName).setIsUnlimited(true).build();
             writerb.addDimension(recordDim);
         
             addExtraVariables();
        +    if (featureDataStruct != null)
        +      makeFeatureVariables(featureDataStruct, isExtendedModel);
        +    if (middleDataStruct != null)
        +      makeMiddleVariables(middleDataStruct, isExtendedModel);
         
        +    Structure.Builder recordb = null;
             if (isExtendedModel) {
        -      if (featureData != null) {
        -        makeFeatureVariables(featureData, true);
        -      }
        -      if (middleData != null) {
        -        makeMiddleVariables(middleData, true);
        -      }
        -      Structure.Builder recordb = writerb.addStructure(recordName, recordDimName);
        +      recordb = writerb.addStructure(recordName, recordDimName);
               addCoordinatesExtended(recordb, obsCoords);
        -      addDataVariablesExtended(recordb, obsData, coordNames);
        -
             } else {
        -      if (featureData != null) {
        -        makeFeatureVariables(featureData, false);
        -      }
        -      if (middleData != null) {
        -        makeMiddleVariables(middleData, false);
        -      }
               addCoordinatesClassic(recordDim, obsCoords, dataMap);
        -      addDataVariablesClassic(recordDim, obsData, dataMap, coordNames);
        -      // record = writer.addRecordStructure(); // for netcdf3
             }
         
        -    // Create the NetcdfFile and write variable metadata to it.
        +    for (PointFeatureCollection stnFeature : stationFeatures) {
        +      PeekingIterator iter = Iterators.peekingIterator(stnFeature.iterator());
        +      if (iter.hasNext()) {
        +        PointFeature pointFeat = iter.peek();
        +
        +        StructureData obsData = pointFeat.getFeatureData();
        +
        +        Formatter coordNames = new Formatter().format("%s %s %s", stnFeature.getTimeName(), latName, lonName);
        +        if (!Double.isNaN(pointFeat.getLocation().getAltitude())) {
        +          coordNames.format(" %s", stnFeature.getAltName());
        +        }
        +        if (isExtendedModel) {
        +          addDataVariablesExtended(recordb, obsData, coordNames.toString());
        +        } else {
        +          addDataVariablesClassic(recordDim, obsData, dataMap, coordNames.toString());
        +        }
        +      }
        +    }
             this.writer = writerb.build();
        -    /*
        -     * NetcdfFormatWriter.Result result = writer.create(netcdfBuilder.build(), 0);
        -     * if (!result.wasWritten()) {
        -     * throw new IOException(result.getErrorMessage());
        -     * }
        -     */
         
             writeExtraVariables();
             finishBuilding();
        @@ -343,6 +335,8 @@ private void addDataVariablesExtended(Structure.Builder recordb, StructureDat
               VariableSimpleIF oldVar = findDataVar(m.getName());
               if (oldVar == null)
                 continue;
        +      if (recordb.findMemberVariable(m.getName()).isPresent())
        +        continue;
         
               // make dimension list
               StringBuilder dimNames = new StringBuilder();
        @@ -562,5 +556,4 @@ public void finish() throws IOException {
           public void close() throws IOException {
             writer.close();
           }
        -
         }
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFPointCollection.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFPointCollection.java
        index 2ecf5726d9..7b83c2a3bf 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFPointCollection.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFPointCollection.java
        @@ -8,7 +8,6 @@
         import com.google.common.collect.ImmutableList;
         import java.io.IOException;
         import java.util.ArrayList;
        -import java.util.Formatter;
         import java.util.List;
         import ucar.ma2.DataType;
         import ucar.ma2.StructureData;
        @@ -22,10 +21,10 @@
         import ucar.nc2.constants.CDM;
         import ucar.nc2.constants.CF;
         import ucar.nc2.dataset.conv.CF1Convention;
        +import ucar.nc2.ft.DsgFeatureCollection;
         import ucar.nc2.ft.PointFeature;
        -import ucar.nc2.time.CalendarDate;
        +import ucar.nc2.ft.PointFeatureCollection;
         import ucar.nc2.time.CalendarDateUnit;
        -import ucar.unidata.geoloc.EarthLocation;
         
         /**
          * Write a CF 1.6 "Discrete Sample" point file.
        @@ -47,53 +46,53 @@ class WriterCFPointCollection extends WriterCFPointAbstract {
             writerb.addAttribute(new Attribute(CF.DSG_REPRESENTATION, "Point Data, H.1"));
           }
         
        -  void writeHeader(PointFeature pf) throws IOException {
        +  void writeHeader(List featureCollections) throws IOException {
             List coords = new ArrayList<>();
        -    coords.add(VariableSimpleBuilder.makeScalar(timeName, "time of measurement", timeUnit.getUdUnit(), DataType.DOUBLE)
        -        .addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build());
        +    List pointCollections = new ArrayList<>();
        +    for (DsgFeatureCollection featureCollection : featureCollections) {
        +      pointCollections.add((PointFeatureCollection) featureCollection);
        +      coords.add(VariableSimpleBuilder
        +          .makeScalar(featureCollection.getTimeName(), "time of measurement", timeUnit.getUdUnit(), DataType.DOUBLE)
        +          .addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build());
        +      if (altUnits != null) {
        +        altitudeCoordinateName = featureCollection.getAltName();
        +        coords.add(VariableSimpleBuilder
        +            .makeScalar(altitudeCoordinateName, "altitude of measurement", altUnits, DataType.DOUBLE)
        +            .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altName, altUnits)).build());
        +      }
        +    }
         
             coords.add(
                 VariableSimpleBuilder.makeScalar(latName, "latitude of measurement", CDM.LAT_UNITS, DataType.DOUBLE).build());
             coords.add(
                 VariableSimpleBuilder.makeScalar(lonName, "longitude of measurement", CDM.LON_UNITS, DataType.DOUBLE).build());
        -    Formatter coordNames = new Formatter().format("%s %s %s", timeName, latName, lonName);
        -    if (altUnits != null) {
        -      coords.add(VariableSimpleBuilder.makeScalar(altName, "altitude of measurement", altUnits, DataType.DOUBLE)
        -          .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altName, altUnits)).build());
        -      coordNames.format(" %s", altName);
        -    }
        -
        -    super.writeHeader(coords, null, null, pf.getDataAll(), coordNames.toString());
        +    super.writeHeader(coords, pointCollections, null, null);
           }
         
        -  @Override
        -  void makeFeatureVariables(StructureData featureData, boolean isExtended) {
        -    // NOOP
        -  }
         
           /////////////////////////////////////////////////////////
           // writing data
           private int obsRecno;
         
        -  void writeRecord(PointFeature sobs, StructureData sdata) throws IOException {
        -    writeRecord(sobs.getObservationTime(), sobs.getObservationTimeAsCalendarDate(), sobs.getLocation(), sdata);
        -  }
        -
        -  private void writeRecord(double timeCoordValue, CalendarDate obsDate, EarthLocation loc, StructureData sdata)
        -      throws IOException {
        -    trackBB(loc.getLatLon(), obsDate);
        +  protected void writeRecord(PointFeature point) throws IOException {
        +    trackBB(point.getLocation().getLatLon(), point.getObservationTimeAsCalendarDate());
         
             StructureMembers.Builder smb = StructureMembers.builder().setName("Coords");
        -    smb.addMemberScalar(timeName, null, null, DataType.DOUBLE, timeCoordValue);
        -    smb.addMemberScalar(latName, null, null, DataType.DOUBLE, loc.getLatitude());
        -    smb.addMemberScalar(lonName, null, null, DataType.DOUBLE, loc.getLongitude());
        +    smb.addMemberScalar(point.getFeatureCollection().getTimeName(), null, null, DataType.DOUBLE,
        +        point.getObservationTime());
        +    smb.addMemberScalar(latName, null, null, DataType.DOUBLE, point.getLocation().getLatitude());
        +    smb.addMemberScalar(lonName, null, null, DataType.DOUBLE, point.getLocation().getLongitude());
             if (altUnits != null)
        -      smb.addMemberScalar(altName, null, null, DataType.DOUBLE, loc.getAltitude());
        +      smb.addMemberScalar(point.getFeatureCollection().getAltName(), null, null, DataType.DOUBLE,
        +          point.getLocation().getAltitude());
             StructureData coords = new StructureDataFromMember(smb.build());
         
             // coords first so it takes precedence
        -    StructureDataComposite sdall = StructureDataComposite.create(ImmutableList.of(coords, sdata));
        +    StructureDataComposite sdall = StructureDataComposite.create(ImmutableList.of(coords, point.getFeatureData()));
             obsRecno = super.writeStructureData(obsRecno, record, sdall, dataMap);
           }
         
        +  @Override
        +  void makeFeatureVariables(List featureData, boolean isExtended) {}
        +
         }
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFProfileCollection.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFProfileCollection.java
        index 67a215b703..8afd2407be 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFProfileCollection.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFProfileCollection.java
        @@ -8,7 +8,6 @@
         import com.google.common.collect.ImmutableList;
         import java.io.IOException;
         import java.util.ArrayList;
        -import java.util.Formatter;
         import java.util.HashSet;
         import java.util.List;
         import ucar.ma2.DataType;
        @@ -50,7 +49,6 @@ class WriterCFProfileCollection extends WriterCFPointAbstract {
           ///////////////////////////////////////////////////
           private Structure profileStruct; // used for netcdf4 extended
           private HashSet featureVarMap = new HashSet<>();
        -  private boolean headerDone;
         
           WriterCFProfileCollection(String fileOut, AttributeContainer globalAtts, List dataVars,
               CalendarDateUnit timeUnit, String altUnits, CFPointWriterConfig config) throws IOException {
        @@ -67,14 +65,10 @@ void finishBuilding() throws IOException {
           }
         
           int writeProfile(ProfileFeature profile) throws IOException {
        +    if (id_strlen == 0)
        +      id_strlen = profile.getName().length() * 2;
             int count = 0;
             for (PointFeature pf : profile) {
        -      if (!headerDone) {
        -        if (id_strlen == 0)
        -          id_strlen = profile.getName().length() * 2;
        -        writeHeader(profile, pf);
        -        headerDone = true;
        -      }
               writeObsData(pf);
               count++;
             }
        @@ -83,23 +77,27 @@ int writeProfile(ProfileFeature profile) throws IOException {
             return count;
           }
         
        -  private void writeHeader(ProfileFeature profile, PointFeature obs) throws IOException {
        -
        -    Formatter coordNames = new Formatter().format("%s %s %s", profileTimeName, latName, lonName);
        +  protected void writeHeader(List profiles) throws IOException {
             List coords = new ArrayList<>();
        -    if (useAlt) {
        -      coords.add(VariableSimpleBuilder.makeScalar(altitudeCoordinateName, "obs altitude", altUnits, DataType.DOUBLE)
        -          .addAttribute(CF.STANDARD_NAME, "altitude")
        -          .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altitudeCoordinateName, altUnits)).build());
        -      coordNames.format(" %s", altitudeCoordinateName);
        +    List profileData = new ArrayList<>();
        +    for (ProfileFeature profile : profiles) {
        +      profileData.add(profile.getFeatureData());
        +      coords.add(VariableSimpleBuilder
        +          .makeScalar(profile.getTimeName(), "time of measurement", profile.getTimeUnit().getUdUnit(), DataType.DOUBLE)
        +          .addAttribute(CF.CALENDAR, profile.getTimeUnit().getCalendar().toString()).build());
        +      if (useAlt) {
        +        altitudeCoordinateName = profile.getAltName();
        +        coords.add(VariableSimpleBuilder.makeScalar(altitudeCoordinateName, "obs altitude", altUnits, DataType.DOUBLE)
        +            .addAttribute(CF.STANDARD_NAME, "altitude")
        +            .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altitudeCoordinateName, altUnits)).build());
        +      }
             }
         
        -    super.writeHeader(coords, profile.getFeatureData(), null, obs.getFeatureData(), coordNames.toString());
        +    super.writeHeader(coords, profiles, profileData, null);
           }
         
           @Override
        -  protected void makeFeatureVariables(StructureData featureData, boolean isExtended) {
        -
        +  void makeFeatureVariables(List featureDataStruct, boolean isExtended) {
             // LOOK why not unlimited here ?
             Dimension profileDim = writerb.addDimension(profileDimName, nfeatures);
         
        @@ -120,11 +118,12 @@ protected void makeFeatureVariables(StructureData featureData, boolean isExtende
                 .makeScalar(profileTimeName, "nominal time of profile", timeUnit.getUdUnit(), DataType.DOUBLE)
                 .addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build());
         
        -
        -    for (StructureMembers.Member m : featureData.getMembers()) {
        -      VariableSimpleIF dv = findDataVar(m.getName());
        -      if (dv != null)
        -        profileVars.add(dv);
        +    for (StructureData featureData : featureDataStruct) {
        +      for (StructureMembers.Member m : featureData.getMembers()) {
        +        VariableSimpleIF dv = findDataVar(m.getName());
        +        if (dv != null)
        +          profileVars.add(dv);
        +      }
             }
         
             if (isExtended) {
        @@ -162,8 +161,10 @@ private void writeProfileData(ProfileFeature profile, int nobs) throws IOExcepti
         
           private void writeObsData(PointFeature pf) throws IOException {
             StructureMembers.Builder smb = StructureMembers.builder().setName("Coords");
        +    smb.addMemberScalar(pf.getFeatureCollection().getTimeName(), null, null, DataType.DOUBLE, pf.getObservationTime());
             if (useAlt)
        -      smb.addMemberScalar(altitudeCoordinateName, null, null, DataType.DOUBLE, pf.getLocation().getAltitude());
        +      smb.addMemberScalar(pf.getFeatureCollection().getAltName(), null, null, DataType.DOUBLE,
        +          pf.getLocation().getAltitude());
             StructureData coords = new StructureDataFromMember(smb.build());
         
             // coords first so it takes precedence
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFStationCollection.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFStationCollection.java
        index c148fc3be5..e04b38a996 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFStationCollection.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFStationCollection.java
        @@ -8,10 +8,11 @@
         import com.google.common.collect.ImmutableList;
         import java.io.IOException;
         import java.util.ArrayList;
        -import java.util.Formatter;
         import java.util.HashMap;
         import java.util.HashSet;
         import java.util.List;
        +import java.util.stream.Collectors;
        +
         import ucar.ma2.DataType;
         import ucar.ma2.StructureData;
         import ucar.ma2.StructureDataComposite;
        @@ -25,13 +26,9 @@
         import ucar.nc2.VariableSimpleIF;
         import ucar.nc2.constants.CDM;
         import ucar.nc2.constants.CF;
        -import ucar.nc2.dataset.conv.CF1Convention;
        -import ucar.nc2.ft.PointFeature;
        +import ucar.nc2.ft.*;
         import ucar.nc2.ft.point.StationFeature;
        -import ucar.nc2.ft.point.StationPointFeature;
        -import ucar.nc2.time.CalendarDate;
         import ucar.nc2.time.CalendarDateUnit;
        -import ucar.unidata.geoloc.Station;
         
         /**
          * Write a CF "Discrete Sample" station file.
        @@ -58,7 +55,6 @@ class WriterCFStationCollection extends WriterCFPointAbstract {
           private HashMap stationIndexMap;
         
           private boolean useDesc;
        -  private boolean useAlt;
           private boolean useWmoId;
         
           private int desc_strlen = 1, wmo_strlen = 1;
        @@ -78,13 +74,16 @@ void finishBuilding() throws IOException {
             stationStruct = findStructure(stationStructName);
           }
         
        -  void writeHeader(List stns, StationPointFeature spf) throws IOException {
        -    this.stnList = stns;
        +  protected void writeHeader(List stations) throws IOException {
        +    this.stnList = stations.stream().distinct().collect(Collectors.toList());
        +    List coords = new ArrayList<>();
        +    List flattenStations = new ArrayList<>();
        +    List stationData = new ArrayList<>();
         
             // see if there's altitude, wmoId for any stations
        -    for (Station stn : stnList) {
        -      if (!Double.isNaN(stn.getAltitude()))
        -        useAlt = true;
        +    for (StationFeature stn : stations) {
        +      stationData.add(stn.getFeatureData());
        +      useAlt = altUnits != null;
               if ((stn.getWmoId() != null) && (!stn.getWmoId().trim().isEmpty()))
                 useWmoId = true;
               if ((stn.getDescription() != null) && (!stn.getDescription().trim().isEmpty()))
        @@ -96,40 +95,41 @@ void writeHeader(List stns, StationPointFeature spf) throws IOEx
                 desc_strlen = Math.max(desc_strlen, stn.getDescription().length());
               if (stn.getWmoId() != null)
                 wmo_strlen = Math.max(wmo_strlen, stn.getWmoId().length());
        -    }
        -
        -    llbb = CFPointWriterUtils.getBoundingBox(stnList); // gets written in super.finish();
        -
        -    StationFeature sf = spf.getStation();
        -    StructureData stnData = sf.getFeatureData();
        -    StructureData obsData = spf.getFeatureData();
         
        -    List coords = new ArrayList<>();
        -    coords.add(VariableSimpleBuilder.makeScalar(timeName, "time of measurement", timeUnit.getUdUnit(), DataType.DOUBLE)
        -        .addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build());
        +      if (stn instanceof DsgFeatureCollection) {
        +        DsgFeatureCollection dsgStation = (DsgFeatureCollection) stn;
        +        flattenStations.add((PointFeatureCollection) dsgStation);
        +        if (coords.stream().noneMatch(x -> x.getShortName().equals(dsgStation.getTimeName()))) {
        +          coords.add(VariableSimpleBuilder
        +              .makeScalar(dsgStation.getTimeName(), "time of measurement", dsgStation.getTimeUnit().getUdUnit(),
        +                  DataType.DOUBLE)
        +              .addAttribute(CF.CALENDAR, dsgStation.getTimeUnit().getCalendar().toString()).build());
        +        }
        +      } else {
        +        coords.add(
        +            VariableSimpleBuilder.makeScalar(timeName, "time of measurement", timeUnit.getUdUnit(), DataType.DOUBLE)
        +                .addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build());
        +      }
        +    }
         
        +    llbb = ucar.nc2.ft.point.writer.CFPointWriterUtils.getBoundingBox(stnList); // gets written in super.finish();
             coords.add(VariableSimpleBuilder
                 .makeScalar(stationIndexName, "station index for this observation record", null, DataType.INT)
                 .addAttribute(CF.INSTANCE_DIMENSION, stationDimName).build());
         
        -    Formatter coordNames = new Formatter().format("%s %s %s", timeName, latName, lonName);
        -    if (useAlt)
        -      coordNames.format(" %s", stationAltName);
        -
        -    super.writeHeader(coords, stnData, null, obsData, coordNames.toString());
         
        +    super.writeHeader(coords, flattenStations, stationData, null);
             int count = 0;
        -    stationIndexMap = new HashMap<>(2 * stns.size());
        +    stationIndexMap = new HashMap<>(stnList.size(), 1.0f);
             for (StationFeature stn : stnList) {
               writeStationData(stn);
               stationIndexMap.put(stn.getName(), count);
               count++;
             }
        -
           }
         
           @Override
        -  void makeFeatureVariables(StructureData featureData, boolean isExtended) {
        +  void makeFeatureVariables(List featureDataStructs, boolean isExtended) {
             // add the dimensions : extendded model can use an unlimited dimension
             // Dimension stationDim = isExtended ? writer.addDimension(null, stationDimName, 0, true, true, false) :
             // writer.addDimension(null, stationDimName, nstns);
        @@ -141,8 +141,7 @@ void makeFeatureVariables(StructureData featureData, boolean isExtended) {
         
             if (useAlt) {
               stnVars.add(VariableSimpleBuilder.makeScalar(stationAltName, "station altitude", altUnits, DataType.DOUBLE)
        -          .addAttribute(CF.STANDARD_NAME, CF.SURFACE_ALTITUDE)
        -          .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altName, altUnits)).build());
        +          .addAttribute(CF.STANDARD_NAME, CF.STATION_ALTITUDE).build());
             }
         
             stnVars.add(VariableSimpleBuilder.makeString(stationIdName, "station identifier", null, id_strlen)
        @@ -156,9 +155,11 @@ void makeFeatureVariables(StructureData featureData, boolean isExtended) {
               stnVars.add(VariableSimpleBuilder.makeString(wmoName, "station WMO id", null, wmo_strlen)
                   .addAttribute(CF.STANDARD_NAME, CF.PLATFORM_ID).build());
         
        -    for (StructureMembers.Member m : featureData.getMembers()) {
        -      if (findDataVar(m.getName()) != null) {
        -        stnVars.add(VariableSimpleBuilder.fromMember(m).build());
        +    for (StructureData featureData : featureDataStructs) {
        +      for (StructureMembers.Member m : featureData.getMembers()) {
        +        if (findDataVar(m.getName()) != null) {
        +          stnVars.add(VariableSimpleBuilder.fromMember(m).build());
        +        }
               }
             }
         
        @@ -176,7 +177,8 @@ private void writeStationData(StationFeature stn) throws IOException {
             StructureMembers.Builder smb = StructureMembers.builder().setName("Coords");
             smb.addMemberScalar(latName, null, null, DataType.DOUBLE, stn.getLatLon().getLatitude());
             smb.addMemberScalar(lonName, null, null, DataType.DOUBLE, stn.getLatLon().getLongitude());
        -    smb.addMemberScalar(stationAltName, null, null, DataType.DOUBLE, stn.getAltitude());
        +    if (useAlt)
        +      smb.addMemberScalar(stationAltName, null, null, DataType.DOUBLE, stn.getAltitude());
             smb.addMemberString(stationIdName, null, null, stn.getName().trim(), id_strlen);
             if (useDesc)
               smb.addMemberString(descName, null, null, stn.getDescription().trim(), desc_strlen);
        @@ -188,28 +190,30 @@ private void writeStationData(StationFeature stn) throws IOException {
             stnRecno = super.writeStructureData(stnRecno, stationStruct, sdall, featureVarMap);
           }
         
        -  void writeRecord(Station s, PointFeature sobs, StructureData sdata) throws IOException {
        -    writeRecord(s.getName(), sobs.getObservationTime(), sobs.getObservationTimeAsCalendarDate(), sdata);
        -  }
        -
           private int obsRecno;
         
        -  private void writeRecord(String stnName, double timeCoordValue, CalendarDate obsDate, StructureData sdata)
        -      throws IOException {
        -    trackBB(null, obsDate);
        -
        -    Integer parentIndex = stationIndexMap.get(stnName);
        +  protected void writeObsData(PointFeature pf) throws IOException {
        +    trackBB(null, pf.getObservationTimeAsCalendarDate());
        +    String stationName = pf.getFeatureCollection().getName();
        +    Integer parentIndex = stationIndexMap.get(stationName);
             if (parentIndex == null)
        -      throw new RuntimeException("Cant find station " + stnName);
        +      throw new RuntimeException("Cant find station " + stationName);
         
             StructureMembers.Builder smb = StructureMembers.builder().setName("Coords");
        -    smb.addMemberScalar(timeName, null, null, DataType.DOUBLE, timeCoordValue);
        +    smb.addMemberScalar(pf.getFeatureCollection().getTimeName(), null, null, DataType.DOUBLE, pf.getObservationTime());
        +    if (altUnits != null)
        +      smb.addMemberScalar(pf.getFeatureCollection().getAltName(), null, null, DataType.DOUBLE,
        +          pf.getLocation().getAltitude());
             smb.addMemberScalar(stationIndexName, null, null, DataType.INT, parentIndex);
             StructureData coords = new StructureDataFromMember(smb.build());
         
             // coords first so it takes precedence
        -    StructureDataComposite sdall = StructureDataComposite.create(ImmutableList.of(coords, sdata));
        +    StructureDataComposite sdall = StructureDataComposite.create(ImmutableList.of(coords, pf.getFeatureData()));
             obsRecno = super.writeStructureData(obsRecno, record, sdall, dataMap);
           }
         
        +  protected void resetObsIndex() {
        +    obsRecno = 0;
        +  }
         }
        +
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFStationProfileCollection.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFStationProfileCollection.java
        index 034219f0bb..f43eba6616 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFStationProfileCollection.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFStationProfileCollection.java
        @@ -8,10 +8,12 @@
         import com.google.common.collect.ImmutableList;
         import java.io.IOException;
         import java.util.ArrayList;
        -import java.util.Formatter;
         import java.util.HashMap;
         import java.util.HashSet;
         import java.util.List;
        +import java.util.stream.Collectors;
        +
        +import com.google.common.collect.Iterables;
         import org.slf4j.Logger;
         import org.slf4j.LoggerFactory;
         import ucar.ma2.DataType;
        @@ -29,6 +31,7 @@
         import ucar.nc2.constants.CF;
         import ucar.nc2.dataset.conv.CF1Convention;
         import ucar.nc2.ft.PointFeature;
        +import ucar.nc2.ft.PointFeatureCollection;
         import ucar.nc2.ft.ProfileFeature;
         import ucar.nc2.ft.StationProfileFeature;
         import ucar.nc2.ft.point.StationFeature;
        @@ -51,7 +54,6 @@ class WriterCFStationProfileCollection extends WriterCFPointAbstract {
           private HashMap stationIndexMap;
         
           private boolean useDesc;
        -  private boolean useAlt;
           private boolean useWmoId;
         
           private int desc_strlen = 1, wmo_strlen = 1;
        @@ -61,7 +63,6 @@ class WriterCFStationProfileCollection extends WriterCFPointAbstract {
           // private Formatter coordNames = new Formatter();
           private Structure profileStruct; // used for netcdf4 extended
           private HashSet profileVarMap = new HashSet<>();
        -  private boolean headerDone;
         
           WriterCFStationProfileCollection(String fileOut, AttributeContainer globalAtts, List dataVars,
               CalendarDateUnit timeUnit, String altUnits, CFPointWriterConfig config) throws IOException {
        @@ -72,12 +73,11 @@ class WriterCFStationProfileCollection extends WriterCFPointAbstract {
           }
         
           void setStations(List stns) {
        -    this.stnList = stns;
        +    this.stnList = stns.stream().distinct().collect(Collectors.toList());
         
             // see if there's altitude, wmoId for any stations
             for (StationFeature stn : stnList) {
        -      if (!Double.isNaN(stn.getAltitude()))
        -        useAlt = true;
        +      useAlt = !Double.isNaN(stn.getAltitude());
               if ((stn.getWmoId() != null) && (!stn.getWmoId().trim().isEmpty()))
                 useWmoId = true;
               if ((stn.getDescription() != null) && (!stn.getDescription().trim().isEmpty()))
        @@ -94,42 +94,41 @@ void setStations(List stns) {
             llbb = CFPointWriterUtils.getBoundingBox(stnList); // gets written in super.finish();
           }
         
        -  int writeProfile(StationProfileFeature spf, ProfileFeature profile) throws IOException {
        +  int writeProfile(ProfileFeature profile) throws IOException {
        +    if (id_strlen == 0)
        +      id_strlen = profile.getName().length() * 2;
             int count = 0;
             for (PointFeature pf : profile) {
        -      if (!headerDone) {
        -        if (id_strlen == 0)
        -          id_strlen = profile.getName().length() * 2;
        -        writeHeader(spf, profile, pf);
        -        headerDone = true;
        -      }
               writeObsData(pf);
               count++;
             }
        -
        -    Integer stnIndex = stationIndexMap.get(spf.getName());
        -    if (stnIndex == null) {
        -      log.warn("BAD station {}", spf.getName());
        -    } else {
        -      writeProfileData(stnIndex, profile, count);
        -    }
        -
             return count;
           }
         
        -  private void writeHeader(StationProfileFeature stn, ProfileFeature profile, PointFeature obs) throws IOException {
        -    StructureData stnData = stn.getFeatureData();
        -    StructureData profileData = profile.getFeatureData();
        -    StructureData obsData = obs.getFeatureData();
        -
        +  protected void writeHeader(List stations) throws IOException {
        +    List coverageCollections = new ArrayList<>();
        +    List stationData = new ArrayList<>();
        +    List profileData = new ArrayList<>();
             List obsCoords = new ArrayList<>();
        -    Formatter coordNames = new Formatter().format("%s %s %s", profileTimeName, latName, lonName);
        -    obsCoords.add(VariableSimpleBuilder.makeScalar(altitudeCoordinateName, "obs altitude", altUnits, DataType.DOUBLE)
        -        .addAttribute(CF.STANDARD_NAME, "altitude")
        -        .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altitudeCoordinateName, altUnits)).build());
        -    coordNames.format(" %s", altitudeCoordinateName);
         
        -    super.writeHeader(obsCoords, stnData, profileData, obsData, coordNames.toString());
        +    for (StationFeature station : stations) {
        +      stationData.add(station.getFeatureData());
        +      for (ProfileFeature profile : (StationProfileFeature) station) {
        +        profileData.add(profile.getFeatureData());
        +        coverageCollections.add(profile);
        +
        +        obsCoords.add(VariableSimpleBuilder
        +            .makeScalar(profile.getTimeName(), "time of measurement", timeUnit.toString(), DataType.DOUBLE).build());
        +
        +        altitudeCoordinateName = profile.getAltName();
        +        obsCoords
        +            .add(VariableSimpleBuilder.makeScalar(altitudeCoordinateName, "obs altitude", altUnits, DataType.DOUBLE)
        +                .addAttribute(CF.STANDARD_NAME, "altitude")
        +                .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altitudeCoordinateName, altUnits)).build());
        +      }
        +    }
        +
        +    super.writeHeader(obsCoords, coverageCollections, stationData, profileData);
         
             // write the stations
             int count = 0;
        @@ -137,12 +136,36 @@ private void writeHeader(StationProfileFeature stn, ProfileFeature profile, Poin
             for (StationFeature sf : stnList) {
               writeStationData(sf);
               stationIndexMap.put(sf.getName(), count);
        +      for (ProfileFeature p : (StationProfileFeature) sf) {
        +        int countPoints = 0;
        +        if (p.size() >= 0) {
        +          countPoints += p.size();
        +        } else {
        +          countPoints += Iterables.size(p);
        +        }
        +        writeProfileData(count, p, countPoints);
        +      }
               count++;
             }
        +  }
         
        +  @Override
        +  void setFeatureAuxInfo(int nfeatures, int id_strlen) {
        +    int countProfiles = 0;
        +    int name_strlen = 0;
        +    for (StationFeature s : stnList) {
        +      name_strlen = Math.max(name_strlen, s.getName().length());
        +      if (((StationProfileFeature) s).size() >= 0)
        +        countProfiles += ((StationProfileFeature) s).size();
        +      else {
        +        countProfiles += Iterables.size(((StationProfileFeature) s));
        +      }
        +    }
        +    this.nfeatures = countProfiles;
        +    this.id_strlen = name_strlen;
           }
         
        -  void makeFeatureVariables(StructureData stnData, boolean isExtended) {
        +  void makeFeatureVariables(List stnDataStructs, boolean isExtended) {
             // add the dimensions : extended model can use an unlimited dimension
             Dimension stationDim = writerb.addDimension(stationDimName, stnList.size());
         
        @@ -152,8 +175,8 @@ void makeFeatureVariables(StructureData stnData, boolean isExtended) {
         
             if (useAlt) {
               stnVars.add(VariableSimpleBuilder.makeScalar(stationAltName, "station altitude", altUnits, DataType.DOUBLE)
        -          .addAttribute(CF.STANDARD_NAME, CF.SURFACE_ALTITUDE)
        -          .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altName, altUnits)).build());
        +          .addAttribute(CF.STANDARD_NAME, CF.STATION_ALTITUDE)
        +          .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(stationAltName, altUnits)).build());
             }
         
             stnVars.add(VariableSimpleBuilder.makeString(stationIdName, "station identifier", null, id_strlen)
        @@ -167,9 +190,11 @@ void makeFeatureVariables(StructureData stnData, boolean isExtended) {
               stnVars.add(VariableSimpleBuilder.makeString(wmoName, "station WMO id", null, wmo_strlen)
                   .addAttribute(CF.STANDARD_NAME, CF.PLATFORM_ID).build());
         
        -    for (StructureMembers.Member m : stnData.getMembers()) {
        -      if (findDataVar(m.getName()) != null)
        -        stnVars.add(VariableSimpleBuilder.fromMember(m).build());
        +    for (StructureData stnData : stnDataStructs) {
        +      for (StructureMembers.Member m : stnData.getMembers()) {
        +        if (findDataVar(m.getName()) != null)
        +          stnVars.add(VariableSimpleBuilder.fromMember(m).build());
        +      }
             }
         
             if (isExtended) {
        @@ -201,8 +226,7 @@ private void writeStationData(StationFeature stn) throws IOException {
             stnRecno = super.writeStructureData(stnRecno, stationStruct, sdall, stationVarMap);
           }
         
        -  @Override
        -  void makeMiddleVariables(StructureData profileData, boolean isExtended) {
        +  void makeMiddleVariables(List profileDataStructs, boolean isExtended) {
             Dimension profileDim = writerb.addDimension(profileDimName, nfeatures);
         
             // add the profile Variables using the profile dimension
        @@ -223,10 +247,12 @@ void makeMiddleVariables(StructureData profileData, boolean isExtended) {
                 .add(VariableSimpleBuilder.makeScalar(stationIndexName, "station index for this profile", null, DataType.INT)
                     .addAttribute(CF.INSTANCE_DIMENSION, stationDimName).build());
         
        -    for (StructureMembers.Member m : profileData.getMembers()) {
        -      VariableSimpleIF dv = findDataVar(m.getName());
        -      if (dv != null)
        -        profileVars.add(dv);
        +    for (StructureData profileData : profileDataStructs) {
        +      for (StructureMembers.Member m : profileData.getMembers()) {
        +        VariableSimpleIF dv = findDataVar(m.getName());
        +        if (dv != null)
        +          profileVars.add(dv);
        +      }
             }
         
             if (isExtended) {
        @@ -256,7 +282,7 @@ private void writeProfileData(int stnIndex, ProfileFeature profile, int nobs) th
             // != null) ???
             double timeInMyUnits = timeUnit.makeOffsetFromRefDate(profile.getTime());
             smb.addMemberScalar(profileTimeName, null, null, DataType.DOUBLE, timeInMyUnits); // LOOK time not always part
        -                                                                                      // of profile
        +    // of profile
             smb.addMemberString(profileIdName, null, null, profile.getName().trim(), id_strlen);
             smb.addMemberScalar(numberOfObsName, null, null, DataType.INT, nobs);
             smb.addMemberScalar(stationIndexName, null, null, DataType.INT, stnIndex);
        @@ -270,9 +296,15 @@ private void writeProfileData(int stnIndex, ProfileFeature profile, int nobs) th
         
           private int obsRecno;
         
        +  protected void resetObsIndex() {
        +    obsRecno = 0;
        +  }
        +
           private void writeObsData(PointFeature pf) throws IOException {
             StructureMembers.Builder smb = StructureMembers.builder().setName("Coords");
        -    smb.addMemberScalar(altitudeCoordinateName, null, null, DataType.DOUBLE, pf.getLocation().getAltitude());
        +    smb.addMemberScalar(pf.getFeatureCollection().getTimeName(), null, null, DataType.DOUBLE, pf.getObservationTime());
        +    smb.addMemberScalar(pf.getFeatureCollection().getAltName(), null, null, DataType.DOUBLE,
        +        pf.getLocation().getAltitude());
             StructureData coords = new StructureDataFromMember(smb.build());
         
             // coords first so it takes precedence
        @@ -280,4 +312,5 @@ private void writeObsData(PointFeature pf) throws IOException {
             obsRecno = super.writeStructureData(obsRecno, record, sdall, dataMap);
           }
         
        +
         }
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFTrajectoryCollection.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFTrajectoryCollection.java
        index 6d31056508..5da5b03f82 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFTrajectoryCollection.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFTrajectoryCollection.java
        @@ -8,7 +8,6 @@
         import com.google.common.collect.ImmutableList;
         import java.io.IOException;
         import java.util.ArrayList;
        -import java.util.Formatter;
         import java.util.HashSet;
         import java.util.List;
         import ucar.ma2.DataType;
        @@ -40,7 +39,6 @@
         class WriterCFTrajectoryCollection extends WriterCFPointAbstract {
           private Structure featureStruct; // used for netcdf4 extended
           private HashSet featureVarMap = new HashSet<>();
        -  private boolean headerDone;
         
           WriterCFTrajectoryCollection(String fileOut, AttributeContainer globalAtts, List dataVars,
               CalendarDateUnit timeUnit, String altUnits, CFPointWriterConfig config) throws IOException {
        @@ -51,44 +49,46 @@ class WriterCFTrajectoryCollection extends WriterCFPointAbstract {
           }
         
           int writeTrajectory(TrajectoryFeature traj) throws IOException {
        +    if (id_strlen == 0)
        +      id_strlen = traj.getName().length() * 2;
             int count = 0;
             for (PointFeature pf : traj) {
        -      if (!headerDone) {
        -        if (id_strlen == 0)
        -          id_strlen = traj.getName().length() * 2;
        -        writeHeader(traj, pf);
        -        headerDone = true;
        -      }
               writeObsData(pf);
               count++;
             }
        -
             writeTrajectoryData(traj, count);
             return count;
           }
         
        -  private void writeHeader(TrajectoryFeature feature, PointFeature obs) throws IOException {
        +  protected void writeHeader(List trajectories) throws IOException {
             // obs data
             List coords = new ArrayList<>();
        -    coords.add(VariableSimpleBuilder.makeScalar(timeName, "time of measurement", timeUnit.getUdUnit(), DataType.DOUBLE)
        -        .addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build());
        +    List trajectoryData = new ArrayList<>();
        +
        +    for (TrajectoryFeature trajectory : trajectories) {
        +      trajectoryData.add(trajectory.getFeatureData());
        +      coords.add(VariableSimpleBuilder
        +          .makeScalar(trajectory.getTimeName(), "time of measurement", timeUnit.getUdUnit(), DataType.DOUBLE)
        +          .addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build());
        +
        +      if (altUnits != null) {
        +        altitudeCoordinateName = trajectory.getAltName();
        +        coords.add(VariableSimpleBuilder
        +            .makeScalar(altitudeCoordinateName, "altitude of measurement", altUnits, DataType.DOUBLE)
        +            .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altitudeCoordinateName, altUnits)).build());
        +      }
        +    }
         
             coords.add(
                 VariableSimpleBuilder.makeScalar(latName, "latitude of measurement", CDM.LAT_UNITS, DataType.DOUBLE).build());
             coords.add(
                 VariableSimpleBuilder.makeScalar(lonName, "longitude of measurement", CDM.LON_UNITS, DataType.DOUBLE).build());
        -    Formatter coordNames = new Formatter().format("%s %s %s", timeName, latName, lonName);
        -    if (altUnits != null) {
        -      coords.add(VariableSimpleBuilder.makeScalar(altName, "altitude of measurement", altUnits, DataType.DOUBLE)
        -          .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altName, altUnits)).build());
        -      coordNames.format(" %s", altName);
        -    }
         
        -    super.writeHeader(coords, feature.getFeatureData(), null, obs.getFeatureData(), coordNames.toString());
        +    super.writeHeader(coords, trajectories, trajectoryData, null);
           }
         
           @Override
        -  void makeFeatureVariables(StructureData featureData, boolean isExtended) {
        +  void makeFeatureVariables(List featureDataStructs, boolean isExtended) {
             // LOOK why not unlimited here fro extended model ?
             Dimension trajDim = writerb.addDimension(trajDimName, nfeatures);
         
        @@ -101,10 +101,12 @@ void makeFeatureVariables(StructureData featureData, boolean isExtended) {
                 .add(VariableSimpleBuilder.makeScalar(numberOfObsName, "number of obs for this profile", null, DataType.INT)
                     .addAttribute(CF.SAMPLE_DIMENSION, recordDimName).build());
         
        -    for (StructureMembers.Member m : featureData.getMembers()) {
        -      VariableSimpleIF dv = findDataVar(m.getName());
        -      if (dv != null)
        -        featureVars.add(dv);
        +    for (StructureData featureData : featureDataStructs) {
        +      for (StructureMembers.Member m : featureData.getMembers()) {
        +        VariableSimpleIF dv = findDataVar(m.getName());
        +        if (dv != null)
        +          featureVars.add(dv);
        +      }
             }
         
             if (isExtended) {
        @@ -143,11 +145,11 @@ private void writeObsData(PointFeature pf) throws IOException {
             trackBB(loc.getLatLon(), timeUnit.makeCalendarDate(pf.getObservationTime()));
         
             StructureMembers.Builder smb = StructureMembers.builder().setName("Coords");
        -    smb.addMemberScalar(timeName, null, null, DataType.DOUBLE, pf.getObservationTime());
        +    smb.addMemberScalar(pf.getFeatureCollection().getTimeName(), null, null, DataType.DOUBLE, pf.getObservationTime());
             smb.addMemberScalar(latName, null, null, DataType.DOUBLE, loc.getLatitude());
             smb.addMemberScalar(lonName, null, null, DataType.DOUBLE, loc.getLongitude());
             if (altUnits != null)
        -      smb.addMemberScalar(altName, null, null, DataType.DOUBLE, loc.getAltitude());
        +      smb.addMemberScalar(pf.getFeatureCollection().getAltName(), null, null, DataType.DOUBLE, loc.getAltitude());
             StructureData coords = new StructureDataFromMember(smb.build());
         
             // coords first so it takes precedence
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFTrajectoryProfileCollection.java b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFTrajectoryProfileCollection.java
        index 6041898436..6a80a03eca 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFTrajectoryProfileCollection.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft/point/writer2/WriterCFTrajectoryProfileCollection.java
        @@ -7,11 +7,8 @@
         
         import com.google.common.collect.ImmutableList;
         import java.io.IOException;
        -import java.util.ArrayList;
        -import java.util.Formatter;
        -import java.util.HashMap;
        -import java.util.HashSet;
        -import java.util.List;
        +import java.util.*;
        +
         import ucar.ma2.DataType;
         import ucar.ma2.StructureData;
         import ucar.ma2.StructureDataComposite;
        @@ -48,7 +45,6 @@ class WriterCFTrajectoryProfileCollection extends WriterCFPointAbstract {
           ///////////////////////////////////////////////////
           private Structure profileStruct; // used for netcdf4 extended
           private HashSet profileVarMap = new HashSet<>();
        -  private boolean headerDone;
         
           WriterCFTrajectoryProfileCollection(String fileOut, AttributeContainer globalAtts, List dataVars,
               CalendarDateUnit timeUnit, String altUnits, CFPointWriterConfig config) throws IOException {
        @@ -66,13 +62,10 @@ void setFeatureAuxInfo2(int ntraj, int traj_strlen) {
         
           int writeProfile(TrajectoryProfileFeature section, ProfileFeature profile) throws IOException {
             int count = 0;
        +    if (id_strlen == 0)
        +      id_strlen = profile.getName().length() * 2;
        +
             for (PointFeature pf : profile) {
        -      if (!headerDone) {
        -        if (id_strlen == 0)
        -          id_strlen = profile.getName().length() * 2;
        -        writeHeader(section, profile, pf);
        -        headerDone = true;
        -      }
               writeObsData(pf);
               count++;
             }
        @@ -86,27 +79,37 @@ int writeProfile(TrajectoryProfileFeature section, ProfileFeature profile) throw
             return count;
           }
         
        -  private void writeHeader(TrajectoryProfileFeature section, ProfileFeature profile, PointFeature obs)
        -      throws IOException {
        -
        -    StructureData sectionData = section.getFeatureData();
        -    StructureData profileData = profile.getFeatureData();
        -    StructureData obsData = obs.getFeatureData();
        -
        -    Formatter coordNames = new Formatter().format("%s %s %s", profileTimeName, latName, lonName);
        +  protected void writeHeader(List trajectoryProfiles) throws IOException {
             List obsCoords = new ArrayList<>();
        -    if (useAlt) {
        -      obsCoords.add(VariableSimpleBuilder.makeScalar(altitudeCoordinateName, "obs altitude", altUnits, DataType.DOUBLE)
        -          .addAttribute(CF.STANDARD_NAME, "altitude")
        -          .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altitudeCoordinateName, altUnits)).build());
        -      coordNames.format(" %s", altitudeCoordinateName);
        +    List profileFeatures = new ArrayList<>();
        +    List trajectoryData = new ArrayList<>();
        +    List profileData = new ArrayList<>();
        +
        +    for (TrajectoryProfileFeature trajectoryProfile : trajectoryProfiles) {
        +      trajectoryData.add(trajectoryProfile.getFeatureData());
        +      for (ProfileFeature profile : trajectoryProfile) {
        +        profileData.add(profile.getFeatureData());
        +        profileFeatures.add(profile);
        +      }
        +      obsCoords.add(VariableSimpleBuilder
        +          .makeScalar(trajectoryProfile.getTimeName(), "time of measurement", timeUnit.toString(), DataType.DOUBLE)
        +          .build());
        +
        +      Formatter coordNames = new Formatter().format("%s %s %s", trajectoryProfile.getTimeName(), latName, lonName);
        +      if (altUnits != null) {
        +        altitudeCoordinateName = trajectoryProfile.getAltName();
        +        obsCoords.add(
        +            VariableSimpleBuilder.makeScalar(trajectoryProfile.getAltName(), "obs altitude", altUnits, DataType.DOUBLE)
        +                .addAttribute(CF.STANDARD_NAME, "altitude")
        +                .addAttribute(CF.POSITIVE, CF1Convention.getZisPositive(altitudeCoordinateName, altUnits)).build());
        +        coordNames.format(" %s", trajectoryProfile.getAltName());
        +      }
             }
        -
        -    super.writeHeader(obsCoords, sectionData, profileData, obsData, coordNames.toString());
        +    super.writeHeader(obsCoords, profileFeatures, trajectoryData, profileData);
           }
         
           @Override
        -  void makeFeatureVariables(StructureData trajData, boolean isExtended) {
        +  void makeFeatureVariables(List featureData, boolean isExtended) {
             // add the dimensions : extended model can use an unlimited dimension
             Dimension trajDim = writerb.addDimension(trajDimName, ntraj);
         
        @@ -115,9 +118,11 @@ void makeFeatureVariables(StructureData trajData, boolean isExtended) {
             trajVars.add(VariableSimpleBuilder.makeString(trajIdName, "trajectory identifier", null, traj_strlen)
                 .addAttribute(CF.CF_ROLE, CF.TRAJECTORY_ID).build());
         
        -    for (StructureMembers.Member m : trajData.getMembers()) {
        -      if (findDataVar(m.getName()) != null)
        -        trajVars.add(VariableSimpleBuilder.fromMember(m).build());
        +    for (StructureData trajData : featureData) {
        +      for (StructureMembers.Member m : trajData.getMembers()) {
        +        if (findDataVar(m.getName()) != null)
        +          trajVars.add(VariableSimpleBuilder.fromMember(m).build());
        +      }
             }
         
             if (isExtended) {
        @@ -130,28 +135,7 @@ void makeFeatureVariables(StructureData trajData, boolean isExtended) {
           }
         
           @Override
        -  void finishBuilding() throws IOException {
        -    super.finishBuilding();
        -    profileStruct = findStructure(profileStructName);
        -    trajStructure = findStructure(trajStructName);
        -  }
        -
        -  private int trajRecno;
        -
        -  private int writeSectionData(TrajectoryProfileFeature section) throws IOException {
        -
        -    StructureMembers.Builder smb = StructureMembers.builder().setName("Coords");
        -    smb.addMemberString(trajIdName, null, null, section.getName().trim(), traj_strlen);
        -    StructureData coords = new StructureDataFromMember(smb.build());
        -
        -    // coords first so it takes precedence
        -    StructureDataComposite sdall = StructureDataComposite.create(ImmutableList.of(coords, section.getFeatureData()));
        -    trajRecno = super.writeStructureData(trajRecno, trajStructure, sdall, trajVarMap);
        -    return trajRecno - 1;
        -  }
        -
        -  @Override
        -  protected void makeMiddleVariables(StructureData profileData, boolean isExtended) {
        +  void makeMiddleVariables(List profileDataStructs, boolean isExtended) {
             Dimension profileDim = writerb.addDimension(profileDimName, nfeatures);
         
             // add the profile Variables using the profile dimension
        @@ -159,11 +143,14 @@ protected void makeMiddleVariables(StructureData profileData, boolean isExtended
             profileVars.add(VariableSimpleBuilder.makeString(profileIdName, "profile identifier", null, id_strlen)
                 .addAttribute(CF.CF_ROLE, CF.PROFILE_ID) // profileId:cf_role = "profile_id";
                 .addAttribute(CDM.MISSING_VALUE, String.valueOf(idMissingValue)).build());
        -
             profileVars
                 .add(VariableSimpleBuilder.makeScalar(latName, "profile latitude", CDM.LAT_UNITS, DataType.DOUBLE).build());
             profileVars
                 .add(VariableSimpleBuilder.makeScalar(lonName, "profile longitude", CDM.LON_UNITS, DataType.DOUBLE).build());
        +    profileVars
        +        .add(VariableSimpleBuilder.makeScalar(numberOfObsName, "number of obs for this profile", null, DataType.INT)
        +            .addAttribute(CF.SAMPLE_DIMENSION, recordDimName).build()); // rowSize:sample_dimension = "obs"
        +
             profileVars.add(VariableSimpleBuilder
                 .makeScalar(profileTimeName, "nominal time of profile", timeUnit.getUdUnit(), DataType.DOUBLE)
                 .addAttribute(CF.CALENDAR, timeUnit.getCalendar().toString()).build());
        @@ -172,14 +159,12 @@ protected void makeMiddleVariables(StructureData profileData, boolean isExtended
                 VariableSimpleBuilder.makeScalar(trajectoryIndexName, "trajectory index for this profile", null, DataType.INT)
                     .addAttribute(CF.INSTANCE_DIMENSION, trajDimName).build());
         
        -    profileVars
        -        .add(VariableSimpleBuilder.makeScalar(numberOfObsName, "number of obs for this profile", null, DataType.INT)
        -            .addAttribute(CF.SAMPLE_DIMENSION, recordDimName).build());
        -
        -    for (StructureMembers.Member m : profileData.getMembers()) {
        -      VariableSimpleIF dv = findDataVar(m.getName());
        -      if (dv != null)
        -        profileVars.add(dv);
        +    for (StructureData profileData : profileDataStructs) {
        +      for (StructureMembers.Member m : profileData.getMembers()) {
        +        VariableSimpleIF dv = findDataVar(m.getName());
        +        if (dv != null)
        +          profileVars.add(dv);
        +      }
             }
         
             if (isExtended) {
        @@ -190,6 +175,27 @@ protected void makeMiddleVariables(StructureData profileData, boolean isExtended
             }
           }
         
        +  @Override
        +  void finishBuilding() throws IOException {
        +    super.finishBuilding();
        +    profileStruct = findStructure(profileStructName);
        +    trajStructure = findStructure(trajStructName);
        +  }
        +
        +  private int trajRecno;
        +
        +  private int writeSectionData(TrajectoryProfileFeature section) throws IOException {
        +
        +    StructureMembers.Builder smb = StructureMembers.builder().setName("Coords");
        +    smb.addMemberString(trajIdName, null, null, section.getName().trim(), traj_strlen);
        +    StructureData coords = new StructureDataFromMember(smb.build());
        +
        +    // coords first so it takes precedence
        +    StructureDataComposite sdall = StructureDataComposite.create(ImmutableList.of(coords, section.getFeatureData()));
        +    trajRecno = super.writeStructureData(trajRecno, trajStructure, sdall, trajVarMap);
        +    return trajRecno - 1;
        +  }
        +
           private int profileRecno;
         
           private void writeProfileData(int sectionIndex, ProfileFeature profile, int nobs) throws IOException {
        @@ -216,8 +222,10 @@ private void writeProfileData(int sectionIndex, ProfileFeature profile, int nobs
         
           private void writeObsData(PointFeature pf) throws IOException {
             StructureMembers.Builder smb = StructureMembers.builder().setName("Coords");
        -    if (useAlt)
        -      smb.addMemberScalar(altitudeCoordinateName, null, null, DataType.DOUBLE, pf.getLocation().getAltitude());
        +    smb.addMemberScalar(pf.getFeatureCollection().getTimeName(), null, null, DataType.DOUBLE, pf.getObservationTime());
        +    if (altUnits != null)
        +      smb.addMemberScalar(pf.getFeatureCollection().getAltName(), null, null, DataType.DOUBLE,
        +          pf.getLocation().getAltitude());
             StructureData coords = new StructureDataFromMember(smb.build());
         
             // coords first so it takes precedence
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/CoordAxisHelper.java b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/CoordAxisHelper.java
        index 76dceedb7a..4ce291d799 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/CoordAxisHelper.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/CoordAxisHelper.java
        @@ -11,7 +11,7 @@
         import ucar.nc2.constants.AxisType;
         import ucar.nc2.time.CalendarDate;
         import ucar.nc2.time.CalendarDateRange;
        -import ucar.nc2.util.Misc;
        +
         import javax.annotation.Nonnull;
         import java.util.Arrays;
         import ucar.nc2.util.Optional;
        @@ -25,6 +25,8 @@
         class CoordAxisHelper {
           private final CoverageCoordAxis1D axis;
         
        +  private static final int MULTIPLE_HITS = -2;
        +
           CoordAxisHelper(CoverageCoordAxis1D axis) {
             this.axis = axis;
           }
        @@ -201,16 +203,16 @@ else if (upperIndex > axis.getCoordEdgeLast())
           }
         
           // same contract as findCoordElement(); in addition, -1 is returned when the target is not contained in any interval
        -  // LOOK not using bounded
           private int findCoordElementDiscontiguousInterval(double target, boolean bounded) {
             int idx = findSingleHit(target);
        -    if (idx >= 0)
        -      return idx;
        -    if (idx == -1)
        -      return -1; // no hits
        -
             // multiple hits = choose closest (definition of closest will be based on axis type)
        -    return findClosestDiscontiguousInterval(target);
        +    if (idx == MULTIPLE_HITS) {
        +      return findClosestDiscontiguousInterval(target);
        +    }
        +    if (bounded && (idx >= axis.getNcoords())) {
        +      return -1;
        +    }
        +    return idx;
           }
         
           boolean intervalContains(double target, int coordIdx) {
        @@ -229,22 +231,27 @@ private boolean intervalContains(double target, int coordIdx, boolean ascending)
             return lowerVal <= target && target <= upperVal;
           }
         
        -  // return index if only one match, if no matches return -1, if > 1 match return -nhits
        +  // return index if only one match
        +  // return MULTIPLE_HITS if in several
           private int findSingleHit(double target) {
        -    int hits = 0;
        +    // edge cases: outside first interval
        +    double firstCoord1 = axis.getCoordEdge1(0);
        +    double firstCoord2 = axis.getCoordEdge2(0);
        +    if ((axis.isAscending() && target < Math.min(firstCoord1, firstCoord2))
        +        || (!axis.isAscending() && target > Math.max(firstCoord1, firstCoord2))) {
        +      return -1;
        +    }
             int idxFound = -1;
             int n = axis.getNcoords();
             for (int i = 0; i < n; i++) {
               if (intervalContains(target, i)) {
        -        hits++;
        +        if (idxFound >= 0) {
        +          return MULTIPLE_HITS;
        +        }
                 idxFound = i;
               }
             }
        -    if (hits == 1)
        -      return idxFound;
        -    if (hits == 0)
        -      return -1;
        -    return -hits;
        +    return idxFound > -1 ? idxFound : n;
           }
         
           // return index of closest value to target
        @@ -273,7 +280,7 @@ private int findClosestDiscontiguousTimeInterval(double target) {
                 // must be greater than or equal to the target.
                 if (coord >= target) {
                   // compute the width (in time) of the interval
        -          double width = axis.getCoordEdge2(i) - axis.getCoordEdge1(i);
        +          double width = coord - axis.getCoordEdge1(i);
                   // we want to identify the interval with the end point closest to our target
                   // why? Because a statistic computed over a time window will only have meaning at the end
                   // of that interval, so the closer we can get to that the better.
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/CoverageCoordAxis1D.java b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/CoverageCoordAxis1D.java
        index cc14117162..81aa034f7c 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/CoverageCoordAxis1D.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/CoverageCoordAxis1D.java
        @@ -396,7 +396,8 @@ protected Optional subsetBuilder(SubsetParams params)
         
               case Time:
                 if (params.isTrue(SubsetParams.timePresent))
        -          return Optional.of(helper.subsetLatest());
        +          return Optional.of(helper.subsetClosest(CalendarDate.present()));
        +
         
                 CalendarDate date = (CalendarDate) params.get(SubsetParams.time);
                 if (date != null)
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/CoverageCoordSys.java b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/CoverageCoordSys.java
        index f4d0f940f1..af20af6ba4 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/CoverageCoordSys.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/CoverageCoordSys.java
        @@ -374,11 +374,10 @@ public CoverageTransform findCoordTransform(String transformName) {
         
             @Override
             public CoverageCoordAxis findCoordAxis(String axisName) {
        -      for (CoverageCoordAxis axis : axes) {
        -        if (axis.getName().equalsIgnoreCase(axisName))
        -          return axis;
        -      }
        -      return null;
        +      final java.util.Optional matchingCaseAxis =
        +          axes.stream().filter(a -> a.getName().equals(axisName)).findFirst();
        +      return matchingCaseAxis
        +          .orElseGet(() -> axes.stream().filter(a -> a.getName().equalsIgnoreCase(axisName)).findFirst().orElse(null));
             }
           }
         
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/HorizCoordSys.java b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/HorizCoordSys.java
        index b4fa69e12c..e8c15b86cb 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/HorizCoordSys.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/HorizCoordSys.java
        @@ -10,6 +10,7 @@
         import org.slf4j.Logger;
         import org.slf4j.LoggerFactory;
         import ucar.ma2.*;
        +import ucar.nc2.units.SimpleUnit;
         import ucar.nc2.util.Optional;
         import ucar.unidata.geoloc.*;
         import javax.annotation.concurrent.Immutable;
        @@ -58,6 +59,8 @@ public static HorizCoordSys factory(CoverageCoordAxis1D xAxis, CoverageCoordAxis
           private final boolean isProjection;
           private final boolean isLatLon1D;
           private boolean isLatLon2D; // isProjection and isLatLon2D may both be "true".
        +  // scale factor for x, y axis if they have different units than the projection's default units
        +  private final double coordinateConversionFactor;
         
           protected HorizCoordSys(CoverageCoordAxis1D xAxis, CoverageCoordAxis1D yAxis, CoverageCoordAxis latAxis,
               CoverageCoordAxis lonAxis, CoverageTransform transform) {
        @@ -68,6 +71,7 @@ protected HorizCoordSys(CoverageCoordAxis1D xAxis, CoverageCoordAxis1D yAxis, Co
             this.isLatLon1D = latAxis instanceof CoverageCoordAxis1D && lonAxis instanceof CoverageCoordAxis1D;
             this.isLatLon2D = latAxis instanceof LatLonAxis2D && lonAxis instanceof LatLonAxis2D;
             assert isProjection || isLatLon1D || isLatLon2D : "missing horiz coordinates (x,y,projection or lat,lon)";
        +    coordinateConversionFactor = getCoordinateConversionFactor();
         
             if (isProjection && isLatLon2D) {
               boolean ok = true;
        @@ -163,16 +167,14 @@ public Optional subset(SubsetParams params) {
         
                   // we have to transform latlon to projection coordinates
                   ProjectionImpl proj = transform.getProjection();
        -          final ProjectionPoint projectionPointInKm = proj.latLonToProj(latlon);
        -          final double xInCorrectUnits = convertFromKm(projectionPointInKm.getX(), xAxis.units, xAxis.name);
        -          optb = xhelper.subsetContaining(xInCorrectUnits);
        +          final ProjectionPoint projectionRectInDefaultUnits = proj.latLonToProj(latlon);
        +          optb = xhelper.subsetContaining(convertFromDefaultUnits(projectionRectInDefaultUnits.getX()));
                   if (optb.isPresent())
                     xaxisSubset = new CoverageCoordAxis1D(optb.get());
                   else
                     errMessages.format("xaxis: %s;%n", optb.getErrorMessage());
         
        -          final double yInCorrectUnits = convertFromKm(projectionPointInKm.getY(), yAxis.units, yAxis.name);
        -          optb = yhelper.subsetContaining(yInCorrectUnits);
        +          optb = yhelper.subsetContaining(convertFromDefaultUnits(projectionRectInDefaultUnits.getY()));
                   if (optb.isPresent())
                     yaxisSubset = new CoverageCoordAxis1D(optb.get());
                   else
        @@ -233,17 +235,18 @@ public Optional subset(SubsetParams params) {
                   if (isProjection) {
                     // we have to transform latlon to projection coordinates
                     ProjectionImpl proj = transform.getProjection();
        -            final ProjectionRect projectionRectInKm = proj.latLonToProjBB(llbb); // allow projection to override
        -            final double xMinInCorrectUnits = convertFromKm(projectionRectInKm.getMinX(), xAxis.units, xAxis.name);
        -            final double xMaxInCorrectUnits = convertFromKm(projectionRectInKm.getMaxX(), xAxis.units, xAxis.name);
        +            final ProjectionRect projectionRectInDefaultUnits = proj.latLonToProjBB(llbb); // allow projection to
        +                                                                                           // override
        +            final double xMinInCorrectUnits = convertFromDefaultUnits(projectionRectInDefaultUnits.getMinX());
        +            final double xMaxInCorrectUnits = convertFromDefaultUnits(projectionRectInDefaultUnits.getMaxX());
                     opt = xAxis.subset(xMinInCorrectUnits, xMaxInCorrectUnits, horizStride);
                     if (opt.isPresent())
                       xaxisSubset = (CoverageCoordAxis1D) opt.get();
                     else
                       errMessages.format("xaxis: %s;%n", opt.getErrorMessage());
         
        -            final double yMinInCorrectUnits = convertFromKm(projectionRectInKm.getMinY(), yAxis.units, yAxis.name);
        -            final double yMaxInCorrectUnits = convertFromKm(projectionRectInKm.getMaxY(), yAxis.units, yAxis.name);
        +            final double yMinInCorrectUnits = convertFromDefaultUnits(projectionRectInDefaultUnits.getMinY());
        +            final double yMaxInCorrectUnits = convertFromDefaultUnits(projectionRectInDefaultUnits.getMaxY());
                     opt = yAxis.subset(yMinInCorrectUnits, yMaxInCorrectUnits, horizStride);
                     if (opt.isPresent())
                       yaxisSubset = (CoverageCoordAxis1D) opt.get();
        @@ -319,9 +322,7 @@ public LatLonPoint getLatLon(int yindex, int xindex) {
               double x = xAxis.getCoordMidpoint(xindex);
               double y = yAxis.getCoordMidpoint(yindex);
               ProjectionImpl proj = transform.getProjection();
        -      final double xInKm = convertToKm(x, xAxis.units, xAxis.name);
        -      final double yInKm = convertToKm(y, yAxis.units, yAxis.name);
        -      return proj.projToLatLon(xInKm, yInKm);
        +      return proj.projToLatLon(convertToDefaultUnits(x), convertToDefaultUnits(y));
             } else {
               double lat = latAxis.getCoordMidpoint(yindex);
               double lon = lonAxis.getCoordMidpoint(xindex);
        @@ -330,14 +331,15 @@ public LatLonPoint getLatLon(int yindex, int xindex) {
           }
         
           // here's where to deal with crossing seam
        -  private Optional subsetLon(LatLonRect llbb, int stride) {
        -    double wantMin = LatLonPoints.lonNormalFrom(llbb.getLonMin(), lonAxis.getStartValue());
        -    double wantMax = LatLonPoints.lonNormalFrom(llbb.getLonMax(), lonAxis.getStartValue());
        +  private Optional subsetLon(LatLonRect latLonBoundingBox, int stride) {
        +    double wantMin = LatLonPoints.lonNormalFrom(latLonBoundingBox.getLonMin(), lonAxis.getStartValue());
        +    double wantMax = LatLonPoints.lonNormalFrom(latLonBoundingBox.getLonMax(), lonAxis.getStartValue());
             double start = lonAxis.getStartValue();
             double end = lonAxis.getEndValue();
         
             // use MAMath.MinMax as a container for two values, min and max
        -    List lonIntvs = subsetLonIntervals(wantMin, wantMax, start, end);
        +    List lonIntvs =
        +        subsetLonIntervals(wantMin, wantMax, start, end, latLonBoundingBox.containsAllLongitude());
         
             if (lonIntvs.isEmpty())
               return Optional.empty(
        @@ -361,6 +363,8 @@ private Optional subsetLon(LatLonRect llbb, int stride) {
            * wantMin may be less than or greater than wantMax.
            * 
            * cases:
        +   * 0. contains all longitude, return all longitude
        +   * (could be normalized such that wantMin == wantMax so handle separately)
            * A. wantMin < wantMax
            * 1 wantMin, wantMax > end : empty
            * 2 wantMin < end : [wantMin, min(wantMax,end)]
        @@ -369,7 +373,11 @@ private Optional subsetLon(LatLonRect llbb, int stride) {
            * 1 wantMin, wantMax > end : all [start, end]
            * 2 wantMin, wantMax < end : 2 pieces: [wantMin, end] + [start, max]
            */
        -  private List subsetLonIntervals(double wantMin, double wantMax, double start, double end) {
        +  private List subsetLonIntervals(double wantMin, double wantMax, double start, double end,
        +      boolean containsAllLongitude) {
        +    if (containsAllLongitude) {
        +      return Lists.newArrayList(new MAMath.MinMax(start, end));
        +    }
             if (wantMin <= wantMax) {
               if (wantMin > end) { // none A.1
                 return ImmutableList.of();
        @@ -655,8 +663,7 @@ private List calcLatLonBoundaryPointsFromProjection(int maxPointsIn
         
             for (ProjectionPoint projPoint : projPoints) {
               final ProjectionPoint projPointInKm =
        -          ProjectionPoint.create(convertToKm(projPoint.getX(), xAxis.units, xAxis.name),
        -              convertToKm(projPoint.getY(), yAxis.units, yAxis.name));
        +          ProjectionPoint.create(convertToDefaultUnits(projPoint.getX()), convertToDefaultUnits(projPoint.getY()));
         
               final LatLonPoint latLonPoint = transform.getProjection().projToLatLon(projPointInKm);
               if (!Double.isNaN(latLonPoint.getLatitude()) && !Double.isNaN(latLonPoint.getLongitude())) {
        @@ -667,27 +674,22 @@ private List calcLatLonBoundaryPointsFromProjection(int maxPointsIn
             return latLonPoints;
           }
         
        -  // TODO is there a better place to handle units?
        -  // Some projections are actually just rotations (RotatedPole)
        -  // so the "projection" coordinates have units "degrees" and don't need to be converted
        -  private static double convertToKm(double coordinate, String unit, String axisName) {
        -    if (unit.equals("km") || unit.equals("kilometers")) {
        -      return coordinate;
        -    } else if (unit.equals("m") || unit.equals("meters")) {
        -      return 0.001 * coordinate;
        -    } else {
        -      return coordinate;
        +  private double getCoordinateConversionFactor() {
        +    if (!isProjection) {
        +      return 1.0;
             }
        +
        +    final String defaultUnits = transform.getProjection().getDefaultUnits();
        +    final String unit = xAxis.getUnits();
        +    return SimpleUnit.isCompatible(unit, defaultUnits) ? SimpleUnit.getConversionFactor(unit, defaultUnits) : 1.0;
           }
         
        -  private static double convertFromKm(double coordinateInKm, String desiredUnit, String axisName) {
        -    if (desiredUnit.equals("km") || desiredUnit.equals("kilometers")) {
        -      return coordinateInKm;
        -    } else if (desiredUnit.equals("m") || desiredUnit.equals("meters")) {
        -      return 1000 * coordinateInKm;
        -    } else {
        -      return coordinateInKm;
        -    }
        +  private double convertToDefaultUnits(double coordinate) {
        +    return coordinate * coordinateConversionFactor;
        +  }
        +
        +  private double convertFromDefaultUnits(double coordinateInDefaultUnit) {
        +    return coordinateInDefaultUnit / coordinateConversionFactor;
           }
         
           private List calcLatLon2DBoundaryPoints(int maxPointsInYEdge, int maxPointsInXEdge) {
        @@ -837,7 +839,7 @@ public String getLatLonBoundaryAsWKT(int maxPointsInYEdge, int maxPointsInXEdge)
             StringBuilder sb = new StringBuilder("POLYGON((");
         
             for (LatLonPointNoNormalize point : points) {
        -      sb.append(String.format("%.3f %.3f, ", point.getLongitude(), point.getLatitude()));
        +      sb.append(String.format(Locale.ROOT, "%.3f %.3f, ", point.getLongitude(), point.getLatitude()));
             }
         
             sb.delete(sb.length() - 2, sb.length()); // Nuke trailing comma and space.
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/adapter/DtCoverageAdapter.java b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/adapter/DtCoverageAdapter.java
        index 8177a465eb..53cdddc99f 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/adapter/DtCoverageAdapter.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/adapter/DtCoverageAdapter.java
        @@ -148,6 +148,7 @@ private static CoverageCoordAxis makeCoordAxisFromDimension(Dimension dim) {
             builder.startValue = 0;
             builder.endValue = dim.getLength() - 1;
             builder.resolution = 1;
        +    builder.attributes = new AttributeContainerMutable(builder.name);
         
             return new CoverageCoordAxis1D(builder);
           }
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/adapter/DtCoverageDataset.java b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/adapter/DtCoverageDataset.java
        index 99d54ef239..26e5aecc8c 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/adapter/DtCoverageDataset.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/adapter/DtCoverageDataset.java
        @@ -13,11 +13,8 @@
         import java.util.List;
         import java.util.Map;
         import java.util.Set;
        -import ucar.nc2.Attribute;
        -import ucar.nc2.Dimension;
        -import ucar.nc2.NetcdfFile;
        -import ucar.nc2.Variable;
        -import ucar.nc2.VariableSimpleIF;
        +
        +import ucar.nc2.*;
         import ucar.nc2.constants.CDM;
         import ucar.nc2.constants.FeatureType;
         import ucar.nc2.dataset.CoordinateAxis;
        @@ -112,23 +109,26 @@ public DtCoverageDataset(NetcdfDataset ncd) throws IOException {
            * @param parseInfo put parse info here, may be null
            * @throws java.io.IOException on read error
            */
        -  public DtCoverageDataset(NetcdfDataset ncd, Formatter parseInfo) throws IOException {
        -    this.ncd = ncd;
        -
        -    Set enhance = ncd.getEnhanceMode();
        -    if (enhance == null || enhance.isEmpty())
        +  public DtCoverageDataset(NetcdfDataset ds, Formatter parseInfo) throws IOException {
        +    Set enhance = ds.getEnhanceMode();
        +    if (enhance == null || enhance.isEmpty()) {
               enhance = NetcdfDataset.getDefaultEnhanceMode();
        -    ncd = NetcdfDatasets.enhance(ncd, enhance, null);
        +    }
        +    this.ncd = NetcdfDatasets.enhance(ds, enhance, null);
         
        -    DtCoverageCSBuilder facc = DtCoverageCSBuilder.classify(ncd, parseInfo);
        -    if (facc != null)
        -      this.coverageType = facc.type;
        +    // sort by largest size first
        +    List csList = new ArrayList<>(ncd.getCoordinateSystems());
        +    csList.sort((o1, o2) -> o2.getCoordinateAxes().size() - o1.getCoordinateAxes().size());
         
             Map csHash = new HashMap<>();
        -    for (CoordinateSystem cs : ncd.getCoordinateSystems()) {
        +    for (CoordinateSystem cs : csList) {
               DtCoverageCSBuilder fac = new DtCoverageCSBuilder(ncd, cs, parseInfo);
        -      if (fac.type == null)
        +      if (fac.type == null) {
                 continue;
        +      }
        +      if (this.coverageType == null) {
        +        this.coverageType = fac.type;
        +      }
               DtCoverageCS ccs = fac.makeCoordSys();
               if (ccs == null)
                 continue;
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/writer/CFGridCoverageWriter.java b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/writer/CFGridCoverageWriter.java
        index 169c784217..049fb4ee65 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/writer/CFGridCoverageWriter.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/writer/CFGridCoverageWriter.java
        @@ -58,6 +58,8 @@ public class CFGridCoverageWriter {
           private static final String BOUNDS = "_bounds";
           private static final String BOUNDS_DIM = "bounds_dim"; // dimension of length 2, can be used by any bounds coordinate
         
        +  public static final String TOO_LARGE_MESSAGE = "Request too large";
        +
           /** A value class holding information about the write() */
           public static class Result {
             private final long sizeToBeWritten;
        @@ -153,14 +155,14 @@ private Result writeFile(CoverageCollection gdsOrg, List gridNames, Subs
             }
             addCFAnnotations(subsetDataset, rootGroup, shouldAddLatLon2D);
         
        +    // test if its too large
        +    long totalSizeOfVars = writer.calcSize();
        +    if (maxBytes > 0 && totalSizeOfVars > maxBytes) {
        +      return Result.create(totalSizeOfVars, false, TOO_LARGE_MESSAGE);
        +    }
        +
             // Actually create file and write variable data to it.
             try (NetcdfFormatWriter ncwriter = writer.build()) {
        -      // test if its too large
        -      long totalSizeOfVars = ncwriter.calcSize();
        -      if (maxBytes > 0 && totalSizeOfVars > maxBytes) {
        -        return Result.create(totalSizeOfVars, false, String.format("Too large, max size = %d", maxBytes));
        -      }
        -
               writeCoordinateData(subsetDataset, ncwriter);
               writeCoverageData(gdsOrg, subsetParams, subsetDataset, ncwriter);
         
        diff --git a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/writer/CoverageAsPoint.java b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/writer/CoverageAsPoint.java
        index 94608726d0..46439ee9d0 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ft2/coverage/writer/CoverageAsPoint.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ft2/coverage/writer/CoverageAsPoint.java
        @@ -161,6 +161,8 @@ private class CoverageAsStationProfileCollection extends StationProfileCollectio
         
             CoverageAsStationProfileCollection(VarGroup varGroup) {
               super(varGroup.name + " AsStationProfileCollection", varGroup.dateUnit, varGroup.zUnit);
        +      this.timeName = varGroup.timeAxis != null ? varGroup.timeAxis.getName() : "time";
        +      this.altName = varGroup.zAxis != null ? varGroup.zAxis.getName() : "altitude";
               this.varGroup = varGroup;
               this.collectionFeatureType = varGroup.fType;
             }
        @@ -187,7 +189,8 @@ protected StationHelper createStationHelper() throws IOException {
             private StationFeature createStationFeature(String name) {
               double stationZ = varGroup.zAxis != null ? varGroup.zAxis.getCoordEdgeFirst() : 0.0;
               return new CoverageAsStationProfile(name, name, null, nearestLatLonPoint.getLatitude(),
        -          nearestLatLonPoint.getLongitude(), stationZ, this.timeUnit, this.altUnits, -1, varGroup);
        +          nearestLatLonPoint.getLongitude(), stationZ, this.timeName, this.timeUnit, this.altName, this.altUnits, -1,
        +          varGroup);
             }
           }
         
        @@ -197,6 +200,10 @@ private class CoverageAsStationFeatureCollection extends StationTimeSeriesCollec
         
             CoverageAsStationFeatureCollection(VarGroup varGroup) {
               super(varGroup.name + " AsStationFeatureCollection", varGroup.dateUnit, varGroup.zUnit);
        +      this.timeName = varGroup.timeAxis != null ? varGroup.timeAxis.getName() : "time";
        +      this.timeUnit =
        +          varGroup.timeAxis != null ? varGroup.timeAxis.getCalendarDateUnit() : CalendarDateUnit.unixDateUnit;
        +      this.altName = varGroup.zAxis != null ? varGroup.zAxis.getName() : "altitude";
               this.varGroup = varGroup;
               this.collectionFeatureType = varGroup.fType;
             }
        @@ -213,7 +220,8 @@ protected StationHelper createStationHelper() {
             private StationFeature createStationFeature(String name) {
               double stationZ = varGroup.zAxis != null ? varGroup.zAxis.getCoordMidpoint(0) : 0.0;
               return new CoverageAsStationFeature(name, name, null, nearestLatLonPoint.getLatitude(),
        -          nearestLatLonPoint.getLongitude(), stationZ, this.timeUnit, null, -1, varGroup);
        +          nearestLatLonPoint.getLongitude(), stationZ, this.timeName, this.timeUnit, this.altName, this.altUnits, -1,
        +          varGroup);
             }
           }
         
        @@ -223,9 +231,9 @@ private StationFeature createStationFeature(String name) {
           private class CoverageAsStationProfile extends StationProfileFeatureImpl {
             private VarGroup varGroup;
         
        -    public CoverageAsStationProfile(String name, String desc, String wmoId, double lat, double lon, double alt,
        -        CalendarDateUnit timeUnit, String altUnits, int npts, VarGroup varGroup) {
        -      super(name, desc, wmoId, lat, lon, alt, timeUnit, altUnits, npts);
        +    private CoverageAsStationProfile(String name, String desc, String wmoId, double lat, double lon, double alt,
        +        String timeName, CalendarDateUnit timeUnit, String altName, String altUnits, int npts, VarGroup varGroup) {
        +      super(name, desc, wmoId, lat, lon, alt, timeName, timeUnit, altName, altUnits, npts);
               this.varGroup = varGroup;
             }
         
        @@ -301,9 +309,10 @@ public boolean hasNext() throws IOException {
               @Override
               public PointFeatureCollection next() throws IOException {
                 double obsTime = this.timeAxis != null ? this.timeAxis.getCoordMidpoint(curr) : 0.0;
        +        String timeName = this.timeAxis != null ? this.timeAxis.getName() : "time";
                 curr++;
        -        return new CoverageAsProfileFeature(obsTime, varGroup.dateUnit, varGroup.zUnit, getLatitude(), getLongitude(),
        -            this.varIters);
        +        return new CoverageAsProfileFeature(obsTime, timeName, varGroup.dateUnit, varGroup.zAxis.getName(),
        +            varGroup.zUnit, getLatitude(), getLongitude(), this.varIters);
               }
             }
         
        @@ -311,9 +320,9 @@ private class CoverageAsProfileFeature extends ProfileFeatureImpl {
         
               List varIters;
         
        -      CoverageAsProfileFeature(double obsTime, CalendarDateUnit timeUnit, String altUnits, double lat, double lon,
        -          List varIters) {
        -        super("", timeUnit, altUnits, lat, lon, obsTime, -1);
        +      CoverageAsProfileFeature(double obsTime, String timeName, CalendarDateUnit timeUnit, String altName,
        +          String altUnits, double lat, double lon, List varIters) {
        +        super("", timeName, timeUnit, altName, altUnits, lat, lon, obsTime, -1);
                 this.varIters = varIters;
               }
         
        @@ -456,11 +465,9 @@ private class CoverageAsStationFeature extends StationTimeSeriesFeatureImpl {
         
             private VarGroup varGroup;
         
        -    CoverageAsStationFeature(String name, String desc, String wmoId, double lat, double lon, double alt,
        -        CalendarDateUnit timeUnit, String altUnits, int npts, VarGroup varGroup) {
        -      // String name, String desc, String wmoId, double lat, double lon, double alt, DateUnit timeUnit, String altUnits,
        -      // int npts
        -      super(name, desc, wmoId, lat, lon, alt, timeUnit, altUnits, npts, StructureData.EMPTY);
        +    private CoverageAsStationFeature(String name, String desc, String wmoId, double lat, double lon, double alt,
        +        String timeName, CalendarDateUnit timeUnit, String altName, String altUnits, int npts, VarGroup varGroup) {
        +      super(name, desc, wmoId, lat, lon, alt, timeName, timeUnit, altName, altUnits, npts, StructureData.EMPTY);
               this.varGroup = varGroup;
             }
         
        diff --git a/cdm/core/src/main/java/ucar/nc2/internal/dataset/CoordinatesHelper.java b/cdm/core/src/main/java/ucar/nc2/internal/dataset/CoordinatesHelper.java
        index 66bede5fab..f45badf241 100644
        --- a/cdm/core/src/main/java/ucar/nc2/internal/dataset/CoordinatesHelper.java
        +++ b/cdm/core/src/main/java/ucar/nc2/internal/dataset/CoordinatesHelper.java
        @@ -56,10 +56,10 @@ public List getCoordTransforms() {
           private CoordinatesHelper(Builder builder, NetcdfDataset ncd) {
             List axes = new ArrayList<>();
             addAxes(ncd.getRootGroup(), axes);
        -    this.coordAxes = ImmutableList.copyOf(axes);
        +    coordAxes = ImmutableList.copyOf(axes);
         
        -    coordTransforms =
        -        builder.coordTransforms.stream().map(ct -> ct.build(ncd)).filter(Objects::nonNull).collect(Collectors.toList());
        +    coordTransforms = builder.coordTransforms.stream().map(ct -> ct.build(ncd, coordAxes)).filter(Objects::nonNull)
        +        .collect(Collectors.toList());
         
             coordTransforms.addAll(builder.verticalCTBuilders.stream().map(ct -> ct.makeVerticalCT(ncd))
                 .filter(Objects::nonNull).collect(Collectors.toList()));
        diff --git a/cdm/core/src/main/java/ucar/nc2/internal/dataset/conv/CF1Convention.java b/cdm/core/src/main/java/ucar/nc2/internal/dataset/conv/CF1Convention.java
        index bbb1d5b89c..dea26f7eb5 100644
        --- a/cdm/core/src/main/java/ucar/nc2/internal/dataset/conv/CF1Convention.java
        +++ b/cdm/core/src/main/java/ucar/nc2/internal/dataset/conv/CF1Convention.java
        @@ -482,13 +482,13 @@ public AxisType getAxisType(VariableDS.Builder vb) {
                 return AxisType.Lon;
               }
         
        -      if (sname.equalsIgnoreCase(CF.PROJECTION_X_COORDINATE) || sname.equalsIgnoreCase(CF.GRID_LONGITUDE)
        -          || sname.equalsIgnoreCase("rotated_longitude")) {
        +      if (sname.equalsIgnoreCase(CF.PROJECTION_X_COORDINATE) || sname.equalsIgnoreCase(CF.PROJECTION_X_ANG_COORDINATE)
        +          || sname.equalsIgnoreCase(CF.GRID_LONGITUDE) || sname.equalsIgnoreCase(CF.ROTATED_LONGITUDE)) {
                 return AxisType.GeoX;
               }
         
        -      if (sname.equalsIgnoreCase(CF.PROJECTION_Y_COORDINATE) || sname.equalsIgnoreCase(CF.GRID_LATITUDE)
        -          || sname.equalsIgnoreCase("rotated_latitude")) {
        +      if (sname.equalsIgnoreCase(CF.PROJECTION_Y_COORDINATE) || sname.equalsIgnoreCase(CF.PROJECTION_Y_ANG_COORDINATE)
        +          || sname.equalsIgnoreCase(CF.GRID_LATITUDE) || sname.equalsIgnoreCase(CF.ROTATED_LATITUDE)) {
                 return AxisType.GeoY;
               }
         
        diff --git a/cdm/core/src/main/java/ucar/nc2/internal/iosp/hdf5/H5headerNew.java b/cdm/core/src/main/java/ucar/nc2/internal/iosp/hdf5/H5headerNew.java
        index 181a5e9d47..ec0a345211 100644
        --- a/cdm/core/src/main/java/ucar/nc2/internal/iosp/hdf5/H5headerNew.java
        +++ b/cdm/core/src/main/java/ucar/nc2/internal/iosp/hdf5/H5headerNew.java
        @@ -17,13 +17,8 @@
         import java.nio.ShortBuffer;
         import java.nio.charset.Charset;
         import java.nio.charset.StandardCharsets;
        -import java.util.ArrayList;
        -import java.util.Formatter;
        -import java.util.HashMap;
        -import java.util.Iterator;
        -import java.util.List;
        -import java.util.Map;
        -import java.util.TimeZone;
        +import java.util.*;
        +
         import ucar.ma2.Array;
         import ucar.ma2.ArrayChar;
         import ucar.ma2.ArrayObject;
        @@ -44,7 +39,6 @@
         import ucar.nc2.Structure;
         import ucar.nc2.Variable;
         import ucar.nc2.constants.CDM;
        -import ucar.nc2.filter.Filter;
         import ucar.nc2.internal.iosp.hdf4.HdfEos;
         import ucar.nc2.internal.iosp.hdf4.HdfHeaderIF;
         import ucar.nc2.internal.iosp.hdf5.H5objects.DataObject;
        @@ -498,7 +492,7 @@ private boolean makeNetcdfGroup(Group.Builder parentGroup, H5Group h5group) thro
                 }
         
                 if (facadeNested.dobj.mdt.map != null) {
        -          EnumTypedef enumTypedef = parentGroup.findEnumTypedef(facadeNested.name).orElse(null);
        +          EnumTypedef enumTypedef = parentGroup.findEnumTypedef(facadeNested.name, true).orElse(null);
                   if (enumTypedef == null) {
                     DataType basetype;
                     switch (facadeNested.dobj.mdt.byteSize) {
        @@ -554,7 +548,7 @@ private boolean makeNetcdfGroup(Group.Builder parentGroup, H5Group h5group) thro
                     }
                     // This code apparently addresses the possibility of an anonymous enum LOOK ??
                     if (enumTypeName.isEmpty()) {
        -              EnumTypedef enumTypedef = parentGroup.findEnumTypedef(facadeNested.name).orElse(null);
        +              EnumTypedef enumTypedef = parentGroup.findEnumTypedef(facadeNested.name, true).get();
                       if (enumTypedef == null) {
                         enumTypedef = new EnumTypedef(facadeNested.name, facadeNested.dobj.mdt.map);
                         parentGroup.addEnumTypedef(enumTypedef);
        @@ -793,7 +787,7 @@ private boolean findSharedDimensions(Group.Builder g, H5Group h5group, DataObjec
                     log.warn("DIMENSION_LIST: failed to read on variable {}", facade.getName());
         
                   } else if (att.getLength() != facade.dobj.mds.dimLength.length) { // some attempts to writing hdf5 directly
        -                                                                            // fail here
        +            // fail here
                     log.warn("DIMENSION_LIST: must have same number of dimension scales as dimensions att={} on variable {}",
                         att, facade.getName());
         
        @@ -1570,19 +1564,62 @@ private boolean makeVariableShapeAndType(Group.Builder parent, Variable.Builder
         
             // set the enumTypedef
             if (dt.isEnum()) {
        -      // TODO Not sure why, but there may be both a user type and a "local" mdt enum. May need to do a value match?
        -      EnumTypedef enumTypedef = parent.findEnumTypedef(mdt.enumTypeName).orElse(null);
        -      if (enumTypedef == null) { // if shared object, wont have a name, shared version gets added later
        -        EnumTypedef local = new EnumTypedef(mdt.enumTypeName, mdt.map);
        -        enumTypedef = parent.enumTypedefs.stream().filter((e) -> e.equalsMapOnly(local)).findFirst().orElse(local);
        -        parent.addEnumTypedef(enumTypedef);
        +      // dmh: An HDF5 file, at least as used by netcdf-4, may define an enumeration
        +      // type one or more times:
        +      // 1. There may be an explicit, independent enum type definition.
        +      // 2. A variable/HDF5-Dataset may define an implicit enum type with the same name as the variable.
        +      // 3. A variable may define an implicit enum type that is a copy of a case 1 enum type;
        +      // the implicit enum type will have the same name as the independent enum type.
        +      //
        +      // The algorithm to infer (and if necessary, create) the proper EnumTypeDef is as follows:
        +      // Step 1. If there exists a case 1 enum type with the same name as the variable's enum type,
        +      // then use that.
        +      // Step 2. If the variable's enum type has the same name as the variable, then we need to
        +      // look for a case 1 enum type that is structurally the same as the variable's enum type.
        +      // If such exists, then use that.
        +      // Step 3: Otherwise, create a new enum type and use that. The new enum type
        +      // will have these properties:
        +      // a. It is defined in the same group as the variable
        +      // b. It has a mutated name similar to the variable's name, namely _enum_t.
        +
        +      EnumTypedef actualEnumTypedef = null; // The final chosen EnumTypedef
        +
        +      // Step 1:
        +      // See if an independent enum type already exists with the same name
        +      Optional candidate = parent.findEnumTypedef(mdt.enumTypeName, true);
        +      actualEnumTypedef = candidate.orElse(null);
        +
        +      // Step 2:
        +      // See if an independent enum type already exists that is structurally similar.
        +      if (actualEnumTypedef == null && mdt.enumTypeName.equals(v.shortName)) {
        +        // Materialize a enum type def for search purposes; name is irrelevant
        +        EnumTypedef template = new EnumTypedef(mdt.enumTypeName, mdt.map);
        +        // Search for a structurally similar enum type def
        +        candidate = parent.findSimilarEnumTypedef(template, true);
        +        actualEnumTypedef = candidate.orElse(null);
        +      }
        +
        +      // Step 3: Create an independent type
        +      if (actualEnumTypedef == null) {
        +        String newname = null;
        +        if (mdt.enumTypeName.equals(v.shortName)) {
        +          // Create mutated name to avoid name conflict
        +          newname = mdt.enumTypeName + "_enum_t";
        +        } else {
        +          newname = mdt.enumTypeName;
        +        }
        +        actualEnumTypedef = new EnumTypedef(newname, mdt.map);
        +        // Add to the current group(builder)
        +        parent.addEnumTypedef(actualEnumTypedef);
               }
        -      v.setEnumTypeName(enumTypedef.getShortName());
        -    }
         
        +      // associate with the variable
        +      v.setEnumTypeName(actualEnumTypedef.getShortName());
        +    }
             return true;
           }
         
        +
           @Override
           public Builder getRootGroup() {
             return root;
        @@ -1627,6 +1664,10 @@ public class Vinfo {
             boolean useFillValue;
             byte[] fillValue;
         
        +    public DataBTree getBtree() {
        +      return btree;
        +    }
        +
             public String getCompression() {
               if (mfp == null)
                 return null;
        diff --git a/cdm/core/src/main/java/ucar/nc2/internal/iosp/hdf5/H5iospNew.java b/cdm/core/src/main/java/ucar/nc2/internal/iosp/hdf5/H5iospNew.java
        index e881ee9103..73bf8e7999 100644
        --- a/cdm/core/src/main/java/ucar/nc2/internal/iosp/hdf5/H5iospNew.java
        +++ b/cdm/core/src/main/java/ucar/nc2/internal/iosp/hdf5/H5iospNew.java
        @@ -97,7 +97,7 @@ public String getFileTypeDescription() {
             return "Hierarchical Data Format, version 5";
           }
         
        -  RandomAccessFile getRandomAccessFile() {
        +  public RandomAccessFile getRandomAccessFile() {
             return raf;
           }
         
        @@ -509,7 +509,7 @@ void convertHeap(ArrayStructureBB asbb, int pos, StructureMembers sm) throws IOE
                   // vlenarray extracts the i'th vlen contents (struct not supported).
                   Array vlenArray = header.readHeapVlen(bb, destPos, m.getDataType(), endian);
                   fieldarray[i] = vlenArray;
        -          destPos += VLEN_T_SIZE; // Apparentlly no way to compute VLEN_T_SIZE on the fly
        +          destPos += VLEN_T_SIZE; // Apparently no way to compute VLEN_T_SIZE on the fly
                 }
                 Array result;
                 if (prefixrank == 0) // if scalar, return just the singleton vlen array
        diff --git a/cdm/core/src/main/java/ucar/nc2/internal/iosp/hdf5/H5objects.java b/cdm/core/src/main/java/ucar/nc2/internal/iosp/hdf5/H5objects.java
        index 110885a280..23794555d0 100644
        --- a/cdm/core/src/main/java/ucar/nc2/internal/iosp/hdf5/H5objects.java
        +++ b/cdm/core/src/main/java/ucar/nc2/internal/iosp/hdf5/H5objects.java
        @@ -1774,7 +1774,7 @@ String getName() {
             }
         
             int getId() {
        -      return (int) this.properties.get(Filters.Keys.ID);
        +      return ((Short) this.properties.get(Filters.Keys.ID)).intValue();
             }
         
             Map getProperties() {
        diff --git a/cdm/core/src/main/java/ucar/nc2/internal/iosp/netcdf3/N3headerWriter.java b/cdm/core/src/main/java/ucar/nc2/internal/iosp/netcdf3/N3headerWriter.java
        index 2cb14b793e..74d60d5f9b 100644
        --- a/cdm/core/src/main/java/ucar/nc2/internal/iosp/netcdf3/N3headerWriter.java
        +++ b/cdm/core/src/main/java/ucar/nc2/internal/iosp/netcdf3/N3headerWriter.java
        @@ -19,6 +19,7 @@
         import ucar.nc2.Dimension;
         import ucar.nc2.NetcdfFile;
         import ucar.nc2.Variable;
        +import ucar.nc2.constants.CDM;
         import ucar.unidata.io.RandomAccessFile;
         
         /** Class to write a netcdf3 header. */
        @@ -217,8 +218,8 @@ int sizeHeader(boolean largeFile) {
         
           private void writeAtts(Iterable atts, Formatter fout) throws IOException {
         
        -    final List attributesToWrite = StreamSupport.stream(atts.spliterator(), false)
        -        .filter(att -> !Attribute.isspecial(att)).collect(Collectors.toList());
        +    final List attributesToWrite =
        +        StreamSupport.stream(atts.spliterator(), false).filter(att -> !CDM.isspecial(att)).collect(Collectors.toList());
         
             int n = Iterables.size(attributesToWrite);
             if (n == 0) {
        diff --git a/cdm/core/src/main/java/ucar/nc2/internal/ncml/AggDataset.java b/cdm/core/src/main/java/ucar/nc2/internal/ncml/AggDataset.java
        index 6ef7bb8bf3..53ba1f1d84 100644
        --- a/cdm/core/src/main/java/ucar/nc2/internal/ncml/AggDataset.java
        +++ b/cdm/core/src/main/java/ucar/nc2/internal/ncml/AggDataset.java
        @@ -30,6 +30,7 @@ class AggDataset implements Comparable {
           private static final boolean debugOpenFile = false;
           private static final boolean debugRead = false;
         
        +  @Nullable
           private final MFile mfile;
           private final Set enhance; // used by Fmrc to read enhanced datasets
           @Nullable
        @@ -71,7 +72,7 @@ protected AggDataset(MFile mfile, @Nullable Object spiObject, @Nullable Element
           protected AggDataset(String cacheLocation, String location, @Nullable String id,
               @Nullable EnumSet wantEnhance, @Nullable ucar.nc2.util.cache.FileFactory reader,
               @Nullable Object spiObject, @Nullable Element ncmlElem) {
        -    this.mfile = MFiles.create(location); // may be null
        +    this.mfile = MFiles.createIfExists(location);
             this.cacheLocation = cacheLocation;
             this.id = id;
             this.enhance = (wantEnhance == null) ? NetcdfDataset.getEnhanceNone() : wantEnhance;
        @@ -144,6 +145,10 @@ protected Array read(Variable mainv, CancelTask cancelTask) throws IOException {
                 return null;
         
               Variable v = findVariable(ncd, mainv);
        +      if (v == null) {
        +        Aggregation.logger.error("AggDataset can't find " + mainv.getFullName() + " in " + ncd.getLocation());
        +        throw new IllegalArgumentException("Variable '" + mainv.getFullName() + "' does not exist in aggregation.");
        +      }
               if (debugRead)
                 System.out.printf("Agg.read %s from %s in %s%n", mainv.getNameAndDimensions(), v.getNameAndDimensions(),
                     getLocation());
        diff --git a/cdm/core/src/main/java/ucar/nc2/internal/ncml/AggDatasetOuter.java b/cdm/core/src/main/java/ucar/nc2/internal/ncml/AggDatasetOuter.java
        index 8508dea591..697374bc94 100644
        --- a/cdm/core/src/main/java/ucar/nc2/internal/ncml/AggDatasetOuter.java
        +++ b/cdm/core/src/main/java/ucar/nc2/internal/ncml/AggDatasetOuter.java
        @@ -285,10 +285,8 @@ protected Array read(Variable mainv, CancelTask cancelTask, List section)
         
               Variable v = findVariable(ncd, mainv);
               if (v == null) {
        -        Aggregation.logger.error("AggOuterDimension cant find " + mainv.getFullName() + " in " + ncd.getLocation()
        -            + "; return all zeroes!!!");
        -        return Array.factory(mainv.getDataType(), new Section(section).getShape()); // all zeros LOOK need missing
        -                                                                                    // value
        +        Aggregation.logger.error("AggOuterDimension can't find " + mainv.getFullName() + " in " + ncd.getLocation());
        +        throw new IllegalArgumentException("Variable '" + mainv.getFullName() + "' does not exist in aggregation.");
               }
         
               if (Aggregation.debugRead) {
        diff --git a/cdm/core/src/main/java/ucar/nc2/internal/ncml/NcmlReader.java b/cdm/core/src/main/java/ucar/nc2/internal/ncml/NcmlReader.java
        index a7ca45e006..9d316d9d02 100644
        --- a/cdm/core/src/main/java/ucar/nc2/internal/ncml/NcmlReader.java
        +++ b/cdm/core/src/main/java/ucar/nc2/internal/ncml/NcmlReader.java
        @@ -18,13 +18,14 @@
         import java.util.Optional;
         import java.util.Set;
         import java.util.StringTokenizer;
        -import java.net.URL;
         import javax.annotation.Nullable;
         import org.jdom2.Element;
         import org.jdom2.JDOMException;
         import org.jdom2.Namespace;
         import org.jdom2.input.SAXBuilder;
         import org.jdom2.output.XMLOutputter;
        +import thredds.inventory.MFile;
        +import thredds.inventory.MFiles;
         import ucar.ma2.Array;
         import ucar.ma2.DataType;
         import ucar.nc2.Attribute;
        @@ -283,13 +284,14 @@ public static void wrapNcmlResource(NetcdfDataset.Builder ncDataset, String ncml
            * @throws IOException on read error
            */
           public static NetcdfDataset.Builder mergeNcml(NetcdfFile ref, @Nullable Element ncmlElem) throws IOException {
        -    NetcdfDataset.Builder targetDS = new NetcdfDataset(ref.toBuilder()).toBuilder(); // no enhance
        +    NetcdfDataset.Builder targetDS = NetcdfDataset.builder(ref);
         
             if (ncmlElem != null) {
               NcmlReader reader = new NcmlReader();
               reader.readGroup(targetDS, null, null, ncmlElem);
             }
         
        +    setEnhanceMode(targetDS, ncmlElem, null);
             return targetDS;
           }
         
        @@ -345,16 +347,11 @@ public static NetcdfDataset.Builder readNcml(Reader r, String ncmlLocation, Canc
            */
           public static NetcdfDataset.Builder readNcml(String ncmlLocation, String referencedDatasetUri, CancelTask cancelTask)
               throws IOException {
        -    URL url = new URL(ncmlLocation);
        +    MFile mFile = MFiles.create(ncmlLocation);
         
             if (debugURL) {
               System.out.println(" NcmlReader open " + ncmlLocation);
        -      System.out.println("   URL = " + url);
        -      System.out.println("   external form = " + url.toExternalForm());
        -      System.out.println("   protocol = " + url.getProtocol());
        -      System.out.println("   host = " + url.getHost());
        -      System.out.println("   path = " + url.getPath());
        -      System.out.println("  file = " + url.getFile());
        +      System.out.println("   Path = " + mFile.getPath());
             }
         
             org.jdom2.Document doc;
        @@ -362,9 +359,9 @@ public static NetcdfDataset.Builder readNcml(String ncmlLocation, String referen
               SAXBuilder builder = new SAXBuilder();
               builder.setExpandEntities(false);
               if (debugURL) {
        -        System.out.println(" NetcdfDataset URL = <" + url + ">");
        +        System.out.println(" NetcdfDataset path = <" + mFile.getPath() + ">");
               }
        -      doc = builder.build(url);
        +      doc = builder.build(mFile.getInputStream());
             } catch (JDOMException e) {
               throw new IOException(e.getMessage());
             }
        @@ -540,6 +537,18 @@ private void readNetcdf(String ncmlLocation, NetcdfDataset.Builder builder, Elem
               throw new IllegalArgumentException("NcML had fatal errors:" + errors);
             }
         
        +    setEnhanceMode(builder, netcdfElem, cancelTask);
        +
        +    /*
        +     * LOOK optionally add record structure to netcdf-3
        +     * String addRecords = netcdfElem.getAttributeValue("addRecords");
        +     * if ("true".equalsIgnoreCase(addRecords))
        +     * targetDS.sendIospMessage(NetcdfFile.IOSP_MESSAGE_ADD_RECORD_STRUCTURE);
        +     */
        +  }
        +
        +  private static void setEnhanceMode(NetcdfDataset.Builder builder, Element netcdfElem, @Nullable CancelTask cancelTask)
        +      throws IOException {
             // enhance means do scale/offset and/or add CoordSystems
             Set mode = parseEnhanceMode(netcdfElem.getAttributeValue("enhance"));
             if (mode != null) {
        @@ -550,19 +559,12 @@ private void readNetcdf(String ncmlLocation, NetcdfDataset.Builder builder, Elem
                 builder.setEnhanceMode(mode);
               }
             }
        -
        -    /*
        -     * LOOK optionally add record structure to netcdf-3
        -     * String addRecords = netcdfElem.getAttributeValue("addRecords");
        -     * if ("true".equalsIgnoreCase(addRecords))
        -     * targetDS.sendIospMessage(NetcdfFile.IOSP_MESSAGE_ADD_RECORD_STRUCTURE);
        -     */
           }
         
           /**
            * Read the NcML group element, and nested elements.
            *
        -   * @param parent the parent group builder, or null when its the root group.
        +   * @param parent the parent group builder, or null when it's the root group.
            * @param refParent parent Group in referenced dataset, may be null
            * @param groupElem ncml group element
            */
        @@ -665,13 +667,20 @@ private void readAtt(AttributeContainer dest, @Nullable AttributeContainer ref,
             boolean newName = (nameInFile != null) && !nameInFile.equals(name);
             if (nameInFile == null) {
               nameInFile = name;
        -    } else if (null == findAttribute(ref, nameInFile)) { // has to exists
        +    } else if (findAttribute(ref, nameInFile) == null && findAttribute(dest, nameInFile) == null) { // has to exist
               errlog.format("NcML attribute orgName '%s' doesnt exist. att=%s in=%s%n", nameInFile, name, refName);
               return;
             }
         
        -    // see if its new
        -    ucar.nc2.Attribute oldatt = findAttribute(ref, nameInFile);
        +    // see if it's new
        +    ucar.nc2.Attribute oldatt = null;
        +    if (ref != null) {
        +      oldatt = findAttribute(ref, nameInFile);
        +    } else {
        +      // no reference container but may still need to rename the attribute in the destination container
        +      oldatt = findAttribute(dest, nameInFile);
        +    }
        +
             if (oldatt == null) { // new
               if (debugConstruct) {
                 System.out.println(" add new att = " + name);
        @@ -799,10 +808,7 @@ private void readDim(Group.Builder groupBuilder, @Nullable Group refGroup, Eleme
               return;
             }
         
        -    String nameInFile = dimElem.getAttributeValue("orgName");
        -    if (nameInFile == null) {
        -      nameInFile = name;
        -    }
        +    String nameInFile = dimElem.getAttributeValue("orgName") != null ? dimElem.getAttributeValue("orgName") : name;
         
             // LOOK this is wrong, groupBuilder may already have the dimension.
             // see if it already exists
        @@ -820,21 +826,10 @@ private void readDim(Group.Builder groupBuilder, @Nullable Group refGroup, Eleme
         
               boolean isUnlimited = "true".equalsIgnoreCase(isUnlimitedS);
               boolean isVariableLength = "true".equalsIgnoreCase(isVariableLengthS);
        -      boolean isShared = true;
        -      if ("false".equalsIgnoreCase(isSharedS)) {
        -        isShared = false;
        -      }
        +      boolean isShared = !"false".equalsIgnoreCase(isSharedS);
         
        -      int len;
        -      if (isVariableLength) {
        -        len = Dimension.VLEN.getLength();
        -      } else {
        -        len = Integer.parseInt(lengthS);
        -      }
        +      int len = isVariableLength ? Dimension.VLEN.getLength() : Integer.parseInt(lengthS);
         
        -      if (debugConstruct) {
        -        System.out.println(" add new dim = " + name);
        -      }
               // LOOK change to replaceDimension to get fort.54 working.
               groupBuilder.replaceDimension(Dimension.builder().setName(name).setIsShared(isShared).setIsUnlimited(isUnlimited)
                   .setIsVariableLength(isVariableLength).setLength(len).build());
        @@ -865,11 +860,7 @@ private void readDim(Group.Builder groupBuilder, @Nullable Group refGroup, Eleme
                 newDim.setLength(len);
               }
         
        -      if (debugConstruct) {
        -        System.out.println(" modify existing dim = " + name);
        -      }
        -
        -      groupBuilder.removeDimension(name);
        +      groupBuilder.removeDimension(nameInFile);
               groupBuilder.addDimension(newDim.build());
             }
           }
        @@ -994,7 +985,7 @@ private Optional readVariableExisting(Group.Builder groupBuilder,
                     .orElseThrow(() -> new IllegalStateException("Cant find variable " + nameInFile));
               }
             }
        -    vb.setName(name).setDataType(dtype);
        +    vb.setOriginalName(nameInFile).setName(name).setDataType(dtype);
             if (typedefS != null) {
               vb.setEnumTypeName(typedefS);
             }
        @@ -1108,6 +1099,12 @@ private void augmentVariableNew(Variable.Builder addedFromAgg, DataType dtype, E
               readAtt(addedFromAgg.getAttributeContainer(), null, attElem);
             }
         
        +    // process remove command
        +    java.util.List removeList = varElem.getChildren("remove", ncNS);
        +    for (Element remElem : removeList) {
        +      cmdRemove(addedFromAgg, remElem.getAttributeValue("type"), remElem.getAttributeValue("name"));
        +    }
        +
             String typedefS = dtype.isEnum() ? varElem.getAttributeValue("typedef") : null;
             if (typedefS != null) {
               addedFromAgg.setEnumTypeName(typedefS);
        @@ -1305,9 +1302,32 @@ private void readValues(Variable.Builder v, DataType dtype, Element varElem, Ele
         
               if (dtype == DataType.CHAR) {
                 int nhave = values.length();
        -        char[] data = new char[nhave];
        -        for (int i = 0; i < nhave; i++) {
        -          data[i] = values.charAt(i);
        +        int[] theDims = Dimensions.makeShape(v.getDimensions());
        +        int totalSize = 1;
        +        for (int i = 0; i < theDims.length; i++) {
        +          totalSize *= theDims[i];
        +        }
        +
        +        char[] data = new char[totalSize];
        +        if (nhave == totalSize) {
        +          for (int i = 0; i < totalSize; i++) {
        +            data[i] = values.charAt(i);
        +          }
        +        }
        +        // special case when when size of the input does not equal the number of elements * max size
        +        // get the values as tokens and pad '0' as needed to reach the correct size
        +        else {
        +          // per specification the last dimension is the largest size an element can be
        +          int maxSize = theDims[theDims.length - 1];
        +          List valList = getTokens(values, sep);
        +          int startingIndex = 0;
        +          for (String value : valList) {
        +            for (int i = 0; i < value.length() && i < maxSize; i++) {
        +              data[startingIndex + i] = value.charAt(i);
        +            }
        +            // move to the next word, all unset chars are left se to '0'
        +            startingIndex += maxSize;
        +          }
                 }
                 Array dataArray = Array.factory(DataType.CHAR, Dimensions.makeShape(v.getDimensions()), data);
                 v.setCachedData(dataArray, true);
        @@ -1587,7 +1607,7 @@ public NetcdfFile open(DatasetUrl cacheName, int buffer_size, CancelTask cancelT
           }
         
           /////////////////////////////////////////////
        -  // command procesing
        +  // command processing
         
           private void cmdRemove(Group.Builder g, String type, String name) {
             boolean err = false;
        diff --git a/cdm/core/src/main/java/ucar/nc2/iosp/AbstractIOServiceProvider.java b/cdm/core/src/main/java/ucar/nc2/iosp/AbstractIOServiceProvider.java
        index 0dc9e8febf..87cb02d2b7 100644
        --- a/cdm/core/src/main/java/ucar/nc2/iosp/AbstractIOServiceProvider.java
        +++ b/cdm/core/src/main/java/ucar/nc2/iosp/AbstractIOServiceProvider.java
        @@ -14,6 +14,7 @@
         import ucar.ma2.StructureDataIterator;
         import ucar.nc2.Group;
         import ucar.nc2.NetcdfFile;
        +import ucar.nc2.NetcdfFiles;
         import ucar.nc2.ParsedSectionSpec;
         import ucar.nc2.Structure;
         import ucar.nc2.util.CancelTask;
        @@ -99,8 +100,8 @@ public void release() throws IOException {
         
           // reacquire any resources like file handles
           public void reacquire() throws IOException {
        -    raf = RandomAccessFile.acquire(location);
        -    this.raf.order(rafOrder);
        +    raf = NetcdfFiles.getRaf(location, -1);
        +    raf.order(rafOrder);
           }
         
           // default implementation, reads into an Array, then writes to WritableByteChannel
        @@ -164,7 +165,7 @@ public boolean syncExtend() throws IOException {
           public long getLastModified() {
             if (location != null) {
               MFile file = MFiles.create(location);
        -      return file != null ? file.getLastModified() : 0;
        +      return file.getLastModified();
             } else {
               return 0;
             }
        diff --git a/cdm/core/src/main/java/ucar/nc2/iosp/IospHelper.java b/cdm/core/src/main/java/ucar/nc2/iosp/IospHelper.java
        index 1942d535d3..0b1c867327 100644
        --- a/cdm/core/src/main/java/ucar/nc2/iosp/IospHelper.java
        +++ b/cdm/core/src/main/java/ucar/nc2/iosp/IospHelper.java
        @@ -281,8 +281,12 @@ public static Object readData(PositioningDataInputStream raf, Layout index, Data
            */
           public static Object readDataFill(LayoutBB layout, DataType dataType, Object fillValue) {
             long size = layout.getTotalNelems();
        -    if (dataType == DataType.STRUCTURE)
        +    if (dataType == DataType.STRUCTURE) {
               size *= layout.getElemSize();
        +    }
        +    if (size > Integer.MAX_VALUE) {
        +      throw new RuntimeException("Read request size of " + size + " is too large.");
        +    }
             Object arr = (fillValue == null) ? makePrimitiveArray((int) size, dataType)
                 : makePrimitiveArray((int) size, dataType, fillValue);
             return readData(layout, dataType, arr);
        diff --git a/cdm/core/src/main/java/ucar/nc2/iosp/hdf5/H5header.java b/cdm/core/src/main/java/ucar/nc2/iosp/hdf5/H5header.java
        index 3db0bd88c1..aa102665c4 100644
        --- a/cdm/core/src/main/java/ucar/nc2/iosp/hdf5/H5header.java
        +++ b/cdm/core/src/main/java/ucar/nc2/iosp/hdf5/H5header.java
        @@ -1739,18 +1739,69 @@ private boolean makeVariableShapeAndType(Variable v, MessageDatatype mdt, Messag
         
             // set the enumTypedef
             if (dt.isEnum()) {
        +      // dmh: An HDF5 file, at least as used by netcdf-4, may define an enumeration
        +      // type one or more times:
        +      // 1. There may be an explicit, independent enum type definition.
        +      // 2. A variable/HDF5-Dataset may define an implicit enum type with the same name as the variable.
        +      // 3. A variable may define an implicit enum type that is a copy of a case 1 enum type;
        +      // the implicit enum type will have the same name as the independent enum type.
        +      //
        +      // The algorithm to infer (and if necessary, create) the proper EnumTypeDef is as follows:
        +      // Step 1. If there exists a case 1 enum type with the same name as the variable's enum type,
        +      // then use that.
        +      // Step 2. If the variable's enum type has the same name as the variable, then we need to
        +      // look for a case 1 enum type that is structurally the same as the variable's enum type.
        +      // If such exists, then use that.
        +      // Step 3: Otherwise, create a new enum type and use that. The new enum type
        +      // will have these properties:
        +      // a. It is defined in the same group as the variable
        +      // b. It has a mutated name similar to the variable's name, namely _enum_t.
        +
        +      EnumTypedef actualEnumTypedef = null; // The final chosen EnumTypedef
               Group ncGroup = v.getParentGroupOrRoot();
        -      EnumTypedef local = new EnumTypedef(mdt.enumTypeName, mdt.map);
        -      EnumTypedef enumTypedef =
        -          ncGroup.getEnumTypedefs().stream().filter((e) -> e.equalsMapOnly(local)).findFirst().orElse(local);
        -      if (enumTypedef != null) {
        -        // if found, make sure it is added to the group
        -        ncGroup.addEnumeration(enumTypedef);
        -      } else { // if shared object, wont have a name, shared version gets added later
        -        enumTypedef = new EnumTypedef(mdt.enumTypeName, mdt.map);
        -        ncGroup.addEnumeration(enumTypedef);
        -      }
        -      v.setEnumTypedef(enumTypedef);
        +
        +      // Step 1:
        +      // See if an independent enum type already exists with the same name
        +      EnumTypedef candidate = ncGroup.findEnumeration(mdt.enumTypeName, true);
        +      if (candidate != null) {
        +        // There is an independent type, so use it.
        +        actualEnumTypedef = candidate;
        +      }
        +
        +      // Step 2:
        +      // See if an independent enum type already exists that is structurally similar.
        +      if (actualEnumTypedef == null && mdt.enumTypeName.equals(v.getShortName())) {
        +        // Materialize a enum type def for search purposes; name is irrelevant
        +        EnumTypedef template = new EnumTypedef(mdt.enumTypeName, mdt.map);
        +        // Search for a structurally similar enum type def
        +        candidate = ncGroup.findSimilarEnumTypedef(template, true);
        +        if (candidate != null) {
        +          // There is an independent type, so use it.
        +          actualEnumTypedef = candidate;
        +        }
        +      }
        +
        +      // Step 3: Create an independent type
        +      if (actualEnumTypedef == null) {
        +        String newname = null;
        +        if (mdt.enumTypeName.equals(v.getShortName())) {
        +          // Create mutated name to avoid name conflict
        +          newname = mdt.enumTypeName + "_enum_t";
        +        } else {
        +          newname = mdt.enumTypeName;
        +        }
        +        actualEnumTypedef = new EnumTypedef(newname, mdt.map);
        +        // Add to the current group(builder)
        +        ncGroup.addEnumeration(actualEnumTypedef);
        +      }
        +
        +      if (actualEnumTypedef == null) {
        +        log.warn("Missing EnumTypedef: {}", mdt.enumTypeName);
        +        throw new IllegalStateException("Missing EnumTypedef: " + mdt.enumTypeName);
        +      }
        +
        +      // associate with the variable
        +      v.setEnumTypedef(actualEnumTypedef);
             }
         
             return true;
        diff --git a/cdm/core/src/main/java/ucar/nc2/iosp/hdf5/H5iosp.java b/cdm/core/src/main/java/ucar/nc2/iosp/hdf5/H5iosp.java
        index 3963742312..e4424bd105 100644
        --- a/cdm/core/src/main/java/ucar/nc2/iosp/hdf5/H5iosp.java
        +++ b/cdm/core/src/main/java/ucar/nc2/iosp/hdf5/H5iosp.java
        @@ -90,7 +90,7 @@ public void getEosInfo(Formatter f) throws IOException {
             }
           }
         
        -  RandomAccessFile getRandomAccessFile() {
        +  public RandomAccessFile getRandomAccessFile() {
             return raf;
           }
         
        diff --git a/cdm/core/src/main/java/ucar/nc2/iosp/hdf5/H5tiledLayoutBB.java b/cdm/core/src/main/java/ucar/nc2/iosp/hdf5/H5tiledLayoutBB.java
        index 5adefcc4fb..302cbc2eb8 100644
        --- a/cdm/core/src/main/java/ucar/nc2/iosp/hdf5/H5tiledLayoutBB.java
        +++ b/cdm/core/src/main/java/ucar/nc2/iosp/hdf5/H5tiledLayoutBB.java
        @@ -247,18 +247,22 @@ public ByteBuffer getByteBuffer() throws IOException {
              */
             private byte[] inflate(byte[] compressed) throws IOException {
               // run it through the Inflator
        -      ByteArrayInputStream in = new ByteArrayInputStream(compressed);
               java.util.zip.Inflater inflater = new java.util.zip.Inflater();
        -      java.util.zip.InflaterInputStream inflatestream =
        -          new java.util.zip.InflaterInputStream(in, inflater, inflatebuffersize);
        -      int len = Math.min(8 * compressed.length, MAX_ARRAY_LEN);
        -      ByteArrayOutputStream out = new ByteArrayOutputStream(len); // Fixes KXL-349288
        -      IO.copyB(inflatestream, out, len);
        -
        -      byte[] uncomp = out.toByteArray();
        -      if (debug || debugFilter)
        -        System.out.println(" inflate bytes in= " + compressed.length + " bytes out= " + uncomp.length);
        -      return uncomp;
        +      try (ByteArrayInputStream in = new ByteArrayInputStream(compressed)) {
        +
        +        java.util.zip.InflaterInputStream inflatestream =
        +            new java.util.zip.InflaterInputStream(in, inflater, inflatebuffersize);
        +        int len = Math.min(8 * compressed.length, MAX_ARRAY_LEN);
        +        ByteArrayOutputStream out = new ByteArrayOutputStream(len); // Fixes KXL-349288
        +        IO.copyB(inflatestream, out, len);
        +
        +        byte[] uncomp = out.toByteArray();
        +        if (debug || debugFilter)
        +          System.out.println(" inflate bytes in= " + compressed.length + " bytes out= " + uncomp.length);
        +        return uncomp;
        +      } finally {
        +        inflater.end();
        +      }
             }
         
             /*
        diff --git a/cdm/core/src/main/java/ucar/nc2/ncml/NcMLReader.java b/cdm/core/src/main/java/ucar/nc2/ncml/NcMLReader.java
        index 189a8a2abd..c757a94a1f 100644
        --- a/cdm/core/src/main/java/ucar/nc2/ncml/NcMLReader.java
        +++ b/cdm/core/src/main/java/ucar/nc2/ncml/NcMLReader.java
        @@ -996,7 +996,7 @@ private void readVariable(NetcdfDataset ds, Group g, Group refg, Element varElem
             if (dtype.isEnum()) {
               String typedefS = varElem.getAttributeValue("typedef");
               if (typedefS != null)
        -        typedef = g.findEnumeration(typedefS);
        +        typedef = g.findEnumeration(typedefS, true);
             }
         
             String shape = varElem.getAttributeValue("shape");
        @@ -1207,7 +1207,7 @@ private Variable readVariableNew(NetcdfDataset ds, Group g, Structure parentS, E
             if (dtype.isEnum()) {
               String typedefS = varElem.getAttributeValue("typedef");
               if (typedefS != null)
        -        typedef = g.findEnumeration(typedefS);
        +        typedef = g.findEnumeration(typedefS, true);
             }
         
             String shape = varElem.getAttributeValue("shape");
        diff --git a/cdm/core/src/main/java/ucar/nc2/stream/NcStreamDataCol.java b/cdm/core/src/main/java/ucar/nc2/stream/NcStreamDataCol.java
        index bb9d8e7cd3..65e45e5188 100644
        --- a/cdm/core/src/main/java/ucar/nc2/stream/NcStreamDataCol.java
        +++ b/cdm/core/src/main/java/ucar/nc2/stream/NcStreamDataCol.java
        @@ -699,6 +699,9 @@ private void decodeMemberData(StructureMembers.Builder members, NcStreamProto.Da
             StructureMembers.MemberBuilder result = members.addMember(name, null, null, dataType, msection.getShape());
             Array data = decode(memberData, parentSection);
             result.setDataArray(data);
        +    if (data instanceof ArrayStructure) {
        +      result.setStructureMembers(((ArrayStructure) data).getStructureMembers());
        +    }
           }
         
         }
        diff --git a/cdm/core/src/main/java/ucar/nc2/time/CalendarDuration.java b/cdm/core/src/main/java/ucar/nc2/time/CalendarDuration.java
        index c3a708d8b6..df08aa5650 100644
        --- a/cdm/core/src/main/java/ucar/nc2/time/CalendarDuration.java
        +++ b/cdm/core/src/main/java/ucar/nc2/time/CalendarDuration.java
        @@ -313,7 +313,7 @@ public int hashCode() {
             int result;
             long temp;
             result = timeUnit != null ? timeUnit.hashCode() : 0;
        -    temp = value != +0.0d ? Double.doubleToLongBits(value) : 0L;
        +    temp = value != 0.0d ? Double.doubleToLongBits(value) : 0L;
             result = 31 * result + (int) (temp ^ (temp >>> 32));
             return result;
           }
        diff --git a/cdm/core/src/main/java/ucar/nc2/time/CalendarPeriod.java b/cdm/core/src/main/java/ucar/nc2/time/CalendarPeriod.java
        index c55c797644..e85a85772e 100644
        --- a/cdm/core/src/main/java/ucar/nc2/time/CalendarPeriod.java
        +++ b/cdm/core/src/main/java/ucar/nc2/time/CalendarPeriod.java
        @@ -167,7 +167,7 @@ public Field getField() {
         
           /**
            * Subtract two dates, return difference in units of this period.
        -   * If not even, will round down (take the floor)
        +   * If not even, will round to nearest int
            * 
            * @param start start date
            * @param end end date
        @@ -175,8 +175,12 @@ public Field getField() {
            */
           public int subtract(CalendarDate start, CalendarDate end) {
             long diff = end.getDifferenceInMsecs(start);
        +    if (diff == 0) {
        +      return 0;
        +    }
             int thislen = millisecs();
        -    return (int) Math.floor(diff / (float) thislen);
        +    int signOfDiff = (int) (diff / Math.abs(diff));
        +    return signOfDiff * Math.round(Math.abs(diff) / (float) thislen);
           }
         
           /**
        @@ -234,7 +238,7 @@ else if (field == CalendarPeriod.Field.Day)
         
           // offset from start to end, in these units
           // start + offset = end
        -  // takes the floor when rounding
        +  // rounds to nearest int
           public int getOffset(CalendarDate start, CalendarDate end) {
             if (start.equals(end)) {
               return 0;
        diff --git a/cdm/core/src/main/java/ucar/nc2/util/CompareNetcdf2.java b/cdm/core/src/main/java/ucar/nc2/util/CompareNetcdf2.java
        index f71c84a0bc..ccbca2c8f8 100644
        --- a/cdm/core/src/main/java/ucar/nc2/util/CompareNetcdf2.java
        +++ b/cdm/core/src/main/java/ucar/nc2/util/CompareNetcdf2.java
        @@ -28,6 +28,7 @@
          */
         public class CompareNetcdf2 {
           public static final ObjFilter IDENTITY_FILTER = new ObjFilter() {};
        +  private static final int MAX_SIZE_TO_READ = 10_000_000;
         
           public interface ObjFilter {
             // if true, compare attribute, else skip comparison
        @@ -165,6 +166,7 @@ public static boolean checkContains(String what, List container, List Math.min(maxLength, s)).toArray();
        +  }
        +
           private boolean compareVariableData(Variable var1, Variable var2, boolean showCompare, boolean justOne)
        -      throws IOException {
        -    Array data1 = var1.read();
        -    Array data2 = var2.read();
        +      throws IOException, InvalidRangeException {
        +    final long size = var1.getSize() * var1.getElementSize();
        +    final Section section = size > MAX_SIZE_TO_READ ? new Section(makeShapeSubset(var1.getShape())) : null;
        +    if (showCompare && section != null) {
        +      f.format(" compareArrays %s too large so only comparing section %s%n", var1.getNameAndDimensions(), section);
        +    }
        +    Array data1 = var1.read(section);
        +    Array data2 = var2.read(section);
         
             if (showCompare)
               f.format(" compareArrays %s unlimited=%s size=%d%n", var1.getNameAndDimensions(), var1.isUnlimited(),
        diff --git a/cdm/core/src/main/java/ucar/nc2/util/DiskCache.java b/cdm/core/src/main/java/ucar/nc2/util/DiskCache.java
        index 0caa2a0602..1fdba385ad 100644
        --- a/cdm/core/src/main/java/ucar/nc2/util/DiskCache.java
        +++ b/cdm/core/src/main/java/ucar/nc2/util/DiskCache.java
        @@ -6,6 +6,7 @@
         
         import com.google.common.escape.Escaper;
         import com.google.common.net.UrlEscapers;
        +import org.joda.time.DateTime;
         import ucar.unidata.util.StringUtil2;
         import java.io.*;
         import java.util.*;
        @@ -291,7 +292,12 @@ public static void cleanCache(Date cutoff, StringBuilder sbuff) {
            * @param sbuff write results here, null is ok.
            */
           public static void cleanCache(long maxBytes, StringBuilder sbuff) {
        -    cleanCache(maxBytes, new FileAgeComparator(), sbuff);
        +    File dir = new File(root);
        +
        +    File[] files = dir.listFiles();
        +    if (files != null) {
        +      cleanCache(maxBytes, new FileAgeComparator(Arrays.asList(files)), sbuff);
        +    }
           }
         
           /**
        @@ -335,10 +341,15 @@ public static void cleanCache(long maxBytes, Comparator fileComparator, St
         
           // reverse sort - latest come first
           private static class FileAgeComparator implements Comparator {
        +    static final Map lastModified = new HashMap<>();
        +
        +    public FileAgeComparator(List fileList) {
        +      fileList.stream().forEach(file -> lastModified.put(file, file.lastModified()));
        +    }
        +
             public int compare(File f1, File f2) {
        -      long f1Age = f1.lastModified();
        -      long f2Age = f2.lastModified();
        -      return Long.compare(f2Age, f1Age); // Steve Ansari 6/3/2010
        +      return lastModified.getOrDefault(f2, DateTime.now().getMillis())
        +          .compareTo(lastModified.getOrDefault(f1, DateTime.now().getMillis()));
             }
           }
         
        diff --git a/cdm/core/src/main/java/ucar/nc2/util/DiskCache2.java b/cdm/core/src/main/java/ucar/nc2/util/DiskCache2.java
        index 72beee5b4d..1bf0c21d24 100644
        --- a/cdm/core/src/main/java/ucar/nc2/util/DiskCache2.java
        +++ b/cdm/core/src/main/java/ucar/nc2/util/DiskCache2.java
        @@ -68,7 +68,7 @@ public enum CachePathPolicy {
            * Default DiskCache2 strategy: use $user_home/.unidata/cache/, no scouring, alwaysUseCache = false
            * Mimics default DiskCache static class
            */
        -  static public DiskCache2 getDefault() {
        +  public static DiskCache2 getDefault() {
             String root = System.getProperty("nj22.cache");
         
             if (root == null) {
        @@ -90,7 +90,7 @@ static public DiskCache2 getDefault() {
           }
         
           // NOOP
        -  static public DiskCache2 getNoop() {
        +  public static DiskCache2 getNoop() {
             DiskCache2 noop = new DiskCache2();
             noop.neverUseCache = true;
             return noop;
        diff --git a/cdm/core/src/main/java/ucar/nc2/util/URLnaming.java b/cdm/core/src/main/java/ucar/nc2/util/URLnaming.java
        index 60555acb1b..4d624f58d2 100644
        --- a/cdm/core/src/main/java/ucar/nc2/util/URLnaming.java
        +++ b/cdm/core/src/main/java/ucar/nc2/util/URLnaming.java
        @@ -4,6 +4,9 @@
          */
         package ucar.nc2.util;
         
        +import java.io.IOException;
        +import thredds.inventory.MFile;
        +import thredds.inventory.MFiles;
         import ucar.unidata.util.StringUtil2;
         import java.io.File;
         import java.net.URI;
        @@ -86,6 +89,20 @@ public static String resolve(String baseUri, String relativeUri) {
               }
             }
         
        +    if (baseUri.startsWith("cdms3:")) {
        +      if (relativeUri.startsWith("cdms3:")) {
        +        return relativeUri;
        +      } else {
        +        MFile absoluteMFile;
        +        try {
        +          absoluteMFile = MFiles.create(baseUri).getParent().getChild(relativeUri);
        +        } catch (IOException e) {
        +          return relativeUri;
        +        }
        +        return absoluteMFile == null ? relativeUri : absoluteMFile.getPath();
        +      }
        +    }
        +
             // non-file URLs
         
             // relativeUri = canonicalizeRead(relativeUri);
        @@ -116,12 +133,18 @@ public static String resolveFile(String baseDir, String filepath) {
             if (baseDir.startsWith("file:"))
               baseDir = baseDir.substring(5);
         
        -    File base = new File(baseDir);
        -    if (!base.isDirectory())
        -      base = base.getParentFile();
        +    MFile base = MFiles.create(baseDir);
        +    if (!base.isDirectory()) {
        +      try {
        +        base = base.getParent();
        +      } catch (IOException e) {
        +        return filepath;
        +      }
        +    }
             if (base == null)
               return filepath;
        -    return base.getAbsolutePath() + "/" + filepath;
        +    MFile absoluteFile = base.getChild(filepath);
        +    return absoluteFile == null ? filepath : absoluteFile.getPath();
           }
         
         }
        diff --git a/cdm/core/src/main/java/ucar/nc2/util/cache/FileCache.java b/cdm/core/src/main/java/ucar/nc2/util/cache/FileCache.java
        index 7352c3e8f8..adfa3a71fa 100755
        --- a/cdm/core/src/main/java/ucar/nc2/util/cache/FileCache.java
        +++ b/cdm/core/src/main/java/ucar/nc2/util/cache/FileCache.java
        @@ -4,6 +4,8 @@
          */
         package ucar.nc2.util.cache;
         
        +import java.nio.file.Files;
        +import java.nio.file.Paths;
         import ucar.nc2.dataset.DatasetUrl;
         import ucar.nc2.time.CalendarDate;
         import ucar.nc2.time.CalendarDateFormatter;
        @@ -697,13 +699,11 @@ public int compareTo(Tracker o) {
           synchronized void cleanup(int maxElements) {
         
             try {
        -      /*
        -       * int size = counter.get();
        -       * int fsize = files.size();
        -       * if (debug && (size != fsize)) {
        -       * log.warn("FileCache " + name + " counter " + size + " doesnt match files().size=" + fsize);
        -       * }
        -       */
        +      for (CacheElement.CacheFile cacheFile : files.values()) {
        +        if (!Files.exists(Paths.get(cacheFile.ncfile.getLocation()))) {
        +          remove(cacheFile);
        +        }
        +      }
         
               int size = files.size();
               if (size <= minElements)
        diff --git a/cdm/core/src/main/java/ucar/nc2/write/CDLWriter.java b/cdm/core/src/main/java/ucar/nc2/write/CDLWriter.java
        index 7eaaa2800c..9c28353327 100644
        --- a/cdm/core/src/main/java/ucar/nc2/write/CDLWriter.java
        +++ b/cdm/core/src/main/java/ucar/nc2/write/CDLWriter.java
        @@ -24,6 +24,8 @@
         import ucar.nc2.NetcdfFiles;
         import ucar.nc2.Structure;
         import ucar.nc2.Variable;
        +import ucar.nc2.constants.CDM;
        +import ucar.nc2.iosp.netcdf4.Nc4;
         import ucar.nc2.util.Indent;
         import ucar.unidata.util.StringUtil2;
         
        @@ -157,7 +159,7 @@ private void writeCDL(Group group, Indent indent) {
         
               for (Attribute att : group.attributes()) {
                 // String name = strict ? NetcdfFile.escapeNameCDL(getShortName()) : getShortName();
        -        if (!Attribute.isspecial(att)) {
        +        if (!CDM.isspecial(att)) {
                   out.format("%s", indent);
                   writeCDL(att, null);
                   out.format(";");
        @@ -263,7 +265,7 @@ private void writeCDL(EnumTypedef e, Indent indent) {
                 basetype = "";
                 break;
               default:
        -        assert false : "Internal error";
        +        throw new IllegalStateException("Unexpected basetype = " + e.getBaseType());
             }
             out.format("%s%senum %s { ", indent, basetype, name);
             int count = 0;
        @@ -292,8 +294,12 @@ else if (dataType.isEnum()) {
                 out.format("enum UNKNOWN");
               else
                 out.format("enum %s", NetcdfFile.makeValidCDLName(v.getEnumTypedef().getShortName()));
        -    } else
        -      out.format("%s", dataType.toString());
        +    } else {
        +      String printname = dataType.toString();
        +      if (strict)
        +        printname = printname.toLowerCase();
        +      out.format("%s", printname);
        +    }
         
             // if (isVariableLength) out.append("(*)"); // LOOK
             out.format(" ");
        @@ -303,7 +309,7 @@ else if (dataType.isEnum()) {
         
             indent.incr();
             for (Attribute att : v.attributes()) {
        -      if (Attribute.isspecial(att))
        +      if (CDM.isspecial(att))
                 continue;
               out.format("%s", indent);
               writeCDL(att, v.getShortName());
        @@ -347,7 +353,7 @@ private void writeCDL(Structure s, Indent indent, boolean useFullName) {
             out.format(";%n");
         
             for (Attribute att : s.attributes()) {
        -      if (Attribute.isspecial(att))
        +      if (CDM.isspecial(att))
                 continue;
               out.format("%s", indent);
               writeCDL(att, s.getShortName());
        diff --git a/cdm/core/src/main/java/ucar/nc2/write/Ncdump.java b/cdm/core/src/main/java/ucar/nc2/write/Ncdump.java
        index 0e8b32ad06..631c056ae1 100644
        --- a/cdm/core/src/main/java/ucar/nc2/write/Ncdump.java
        +++ b/cdm/core/src/main/java/ucar/nc2/write/Ncdump.java
        @@ -562,7 +562,8 @@ private static void printStringArray(Formatter out, Array ma, Indent indent, Can
             out.format("%n%s{", indent);
             indent.incr();
             for (int ii = 0; ii < last; ii++) {
        -      ArrayObject slice = (ArrayObject) ma.slice(0, ii);
        +      Array slice = (Array) ma.slice(0, ii); // replaces ArrayObject slice = (ArrayObject)o; because ArrayObject is
        +                                             // over-casting because printStringArray takes Array type as argument.
               if (ii > 0)
                 out.format(",");
               printStringArray(out, slice, indent, ct);
        diff --git a/cdm/core/src/main/java/ucar/nc2/write/NetcdfCopier.java b/cdm/core/src/main/java/ucar/nc2/write/NetcdfCopier.java
        index dbda6c686c..ca4ce29ca7 100644
        --- a/cdm/core/src/main/java/ucar/nc2/write/NetcdfCopier.java
        +++ b/cdm/core/src/main/java/ucar/nc2/write/NetcdfCopier.java
        @@ -352,7 +352,7 @@ private void copySome(NetcdfFormatWriter ncwriter, Variable oldVar, Variable new
                     "Reading chunk " + new Section(chunkOrigin, chunkShape) + " from variable: " + oldVar.getShortName(), -1);
         
                 Array data = oldVar.read(chunkOrigin, chunkShape);
        -        if (!getOutputFormat().isNetdf4format() && oldVar.getDataType() == DataType.STRING) {
        +        if (!getOutputFormat().isNetcdf4Format() && oldVar.getDataType() == DataType.STRING) {
                   data = convertDataToChar(newVar, data);
                 }
         
        diff --git a/cdm/core/src/main/java/ucar/nc2/write/NetcdfFileFormat.java b/cdm/core/src/main/java/ucar/nc2/write/NetcdfFileFormat.java
        index 70db389ba0..c540633eb2 100644
        --- a/cdm/core/src/main/java/ucar/nc2/write/NetcdfFileFormat.java
        +++ b/cdm/core/src/main/java/ucar/nc2/write/NetcdfFileFormat.java
        @@ -148,14 +148,30 @@ public String formatName() {
             return formatName;
           }
         
        -  public boolean isNetdf3format() {
        +  public boolean isNetcdf3Format() {
             return this == NETCDF3 || this == NETCDF3_64BIT_OFFSET || this == NETCDF3_64BIT_DATA;
           }
         
        -  public boolean isNetdf4format() {
        +  /**
        +   * @deprecated use {@link #isNetcdf3Format()}
        +   * @return
        +   */
        +  public boolean isNetdf3format() {
        +    return isNetcdf3Format();
        +  }
        +
        +  public boolean isNetcdf4Format() {
             return this == NETCDF4 || this == NETCDF4_CLASSIC;
           }
         
        +  /**
        +   * @deprecated use {@link #isNetcdf4Format()}
        +   * @return
        +   */
        +  public boolean isNetdf4format() {
        +    return isNetcdf4Format();
        +  }
        +
           public boolean isExtendedModel() {
             return this == NETCDF4 || this == NCSTREAM;
           }
        diff --git a/cdm/core/src/main/java/ucar/nc2/write/NetcdfFormatWriter.java b/cdm/core/src/main/java/ucar/nc2/write/NetcdfFormatWriter.java
        index fd2dd75769..3d968eceb5 100644
        --- a/cdm/core/src/main/java/ucar/nc2/write/NetcdfFormatWriter.java
        +++ b/cdm/core/src/main/java/ucar/nc2/write/NetcdfFormatWriter.java
        @@ -246,6 +246,22 @@ public Structure.Builder addStructure(String shortName, String dimString) {
               return vb;
             }
         
        +    public long calcSize() {
        +      return calcSize(this.rootGroup);
        +    }
        +
        +    // Note that we have enough info to try to estimate effects of compression, if its a Netcdf4 file.
        +    private long calcSize(Group.Builder group) {
        +      long totalSizeOfVars = 0;
        +      for (Variable.Builder var : this.rootGroup.vbuilders) {
        +        totalSizeOfVars += Dimensions.getSize(var.getDimensions()) * var.getElementSize();
        +      }
        +      for (Group.Builder nested : group.gbuilders) {
        +        totalSizeOfVars += calcSize(nested);
        +      }
        +      return totalSizeOfVars;
        +    }
        +
             /** Once this is called, do not use the Builder again. */
             public NetcdfFormatWriter build() throws IOException {
               return new NetcdfFormatWriter(this);
        @@ -277,7 +293,7 @@ private NetcdfFormatWriter(Builder builder) throws IOException {
             this.extraHeaderBytes = builder.extraHeaderBytes;
             this.preallocateSize = builder.preallocateSize;
             this.chunker = builder.chunker;
        -    this.useJna = builder.useJna || format.isNetdf4format();
        +    this.useJna = builder.useJna || format.isNetcdf4Format();
         
             this.ncout = NetcdfFile.builder().setRootGroup(builder.rootGroup).setLocation(builder.location).build();
             this.rootGroup = this.ncout.getRootGroup();
        diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/Earth.java b/cdm/core/src/main/java/ucar/unidata/geoloc/Earth.java
        index 0dbb83d78a..33cffc15bf 100644
        --- a/cdm/core/src/main/java/ucar/unidata/geoloc/Earth.java
        +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/Earth.java
        @@ -195,9 +195,9 @@ public boolean equals(Object o) {
           public int hashCode() {
             int result;
             long temp;
        -    temp = equatorRadius != +0.0d ? Double.doubleToLongBits(equatorRadius) : 0L;
        +    temp = equatorRadius != 0.0d ? Double.doubleToLongBits(equatorRadius) : 0L;
             result = (int) (temp ^ (temp >>> 32));
        -    temp = poleRadius != +0.0d ? Double.doubleToLongBits(poleRadius) : 0L;
        +    temp = poleRadius != 0.0d ? Double.doubleToLongBits(poleRadius) : 0L;
             result = 31 * result + (int) (temp ^ (temp >>> 32));
             result = 31 * result + (name != null ? name.hashCode() : 0);
             return result;
        diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/LatLonRect.java b/cdm/core/src/main/java/ucar/unidata/geoloc/LatLonRect.java
        index a72bd9c846..abef10ca44 100644
        --- a/cdm/core/src/main/java/ucar/unidata/geoloc/LatLonRect.java
        +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/LatLonRect.java
        @@ -228,6 +228,15 @@ public boolean nearlyEquals(LatLonRect other, double maxRelDiff) {
                 && this.getUpperRightPoint().nearlyEquals(other.getUpperRightPoint(), maxRelDiff);
           }
         
        +  /**
        +   * return does this rectangle contain all longitudes
        +   *
        +   * @return true if all longitudes are contained (width is >= 360) else false
        +   */
        +  public boolean containsAllLongitude() {
        +    return allLongitude;
        +  }
        +
           /**
            * return width of bounding box, always between 0 and 360 degrees.
            *
        diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/ProjectionImpl.java b/cdm/core/src/main/java/ucar/unidata/geoloc/ProjectionImpl.java
        index 9ae565b812..5300badd52 100644
        --- a/cdm/core/src/main/java/ucar/unidata/geoloc/ProjectionImpl.java
        +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/ProjectionImpl.java
        @@ -30,7 +30,7 @@
          * projection.
          * This value frequently is assigned to eliminate negative numbers.
          * Expressed in the unit of measure identified in Planar Coordinate Units.
        - * 
      • We dont currently use, assuming that the x and y are just fine as negetive numbers. + *
      • We dont currently use, assuming that the x and y are just fine as negative numbers. * * * @author John Caron @@ -73,6 +73,11 @@ public abstract class ProjectionImpl implements Projection, java.io.Serializable */ protected String name; // LOOK should be final, IDV needs setName() + /** + * name of the default units for this projection + */ + protected String defaultUnits; + /** * flag for latlon */ @@ -96,6 +101,12 @@ public abstract class ProjectionImpl implements Projection, java.io.Serializable */ public abstract ProjectionImpl constructCopy(); + protected ProjectionImpl(String name, String defaultUnits, boolean isLatLon) { + this.name = name; + this.defaultUnits = defaultUnits; + this.isLatLon = isLatLon; + } + protected ProjectionImpl(String name, boolean isLatLon) { this.name = name; this.isLatLon = isLatLon; @@ -209,6 +220,15 @@ public void setName(String name) { this.name = name; } + /** + * Get the name of the default units for this projection + * + * @return the name of the default units + */ + public String getDefaultUnits() { + return defaultUnits; + } + /** * Get parameters as list of ucar.unidata.util.Parameter * diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/AlbersEqualArea.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/AlbersEqualArea.java index 0b369d97ce..abbff9918b 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/AlbersEqualArea.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/AlbersEqualArea.java @@ -214,19 +214,19 @@ public boolean equals(Object o) { public int hashCode() { int result; long temp; - temp = lat0 != +0.0d ? Double.doubleToLongBits(lat0) : 0L; + temp = lat0 != 0.0d ? Double.doubleToLongBits(lat0) : 0L; result = (int) (temp ^ (temp >>> 32)); - temp = lon0 != +0.0d ? Double.doubleToLongBits(lon0) : 0L; + temp = lon0 != 0.0d ? Double.doubleToLongBits(lon0) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = par1 != +0.0d ? Double.doubleToLongBits(par1) : 0L; + temp = par1 != 0.0d ? Double.doubleToLongBits(par1) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = par2 != +0.0d ? Double.doubleToLongBits(par2) : 0L; + temp = par2 != 0.0d ? Double.doubleToLongBits(par2) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseEasting != +0.0d ? Double.doubleToLongBits(falseEasting) : 0L; + temp = falseEasting != 0.0d ? Double.doubleToLongBits(falseEasting) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseNorthing != +0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; + temp = falseNorthing != 0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = earth_radius != +0.0d ? Double.doubleToLongBits(earth_radius) : 0L; + temp = earth_radius != 0.0d ? Double.doubleToLongBits(earth_radius) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); return result; } diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/FlatEarth.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/FlatEarth.java index d673149fa1..26897d7c4a 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/FlatEarth.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/FlatEarth.java @@ -130,13 +130,13 @@ public boolean equals(Object o) { public int hashCode() { int result; long temp; - temp = rotAngle != +0.0d ? Double.doubleToLongBits(rotAngle) : 0L; + temp = rotAngle != 0.0d ? Double.doubleToLongBits(rotAngle) : 0L; result = (int) (temp ^ (temp >>> 32)); - temp = radius != +0.0d ? Double.doubleToLongBits(radius) : 0L; + temp = radius != 0.0d ? Double.doubleToLongBits(radius) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = lat0 != +0.0d ? Double.doubleToLongBits(lat0) : 0L; + temp = lat0 != 0.0d ? Double.doubleToLongBits(lat0) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = lon0 != +0.0d ? Double.doubleToLongBits(lon0) : 0L; + temp = lon0 != 0.0d ? Double.doubleToLongBits(lon0) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); return result; } diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/LambertAzimuthalEqualArea.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/LambertAzimuthalEqualArea.java index a1f76c0895..7fcc93a49f 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/LambertAzimuthalEqualArea.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/LambertAzimuthalEqualArea.java @@ -139,15 +139,15 @@ public boolean equals(Object o) { public int hashCode() { int result; long temp; - temp = R != +0.0d ? Double.doubleToLongBits(R) : 0L; + temp = R != 0.0d ? Double.doubleToLongBits(R) : 0L; result = (int) (temp ^ (temp >>> 32)); - temp = lat0 != +0.0d ? Double.doubleToLongBits(lat0) : 0L; + temp = lat0 != 0.0d ? Double.doubleToLongBits(lat0) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = lon0 != +0.0d ? Double.doubleToLongBits(lon0) : 0L; + temp = lon0 != 0.0d ? Double.doubleToLongBits(lon0) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseEasting != +0.0d ? Double.doubleToLongBits(falseEasting) : 0L; + temp = falseEasting != 0.0d ? Double.doubleToLongBits(falseEasting) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseNorthing != +0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; + temp = falseNorthing != 0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); return result; } @@ -311,10 +311,10 @@ public LatLonPoint projToLatLon(ProjectionPoint world, LatLonPointImpl result) { double temp = 0; if (Math.abs(rho) > TOLERANCE) { toLat = Math.asin(Math.cos(c) * sinLat0 + (fromY * Math.sin(c) * cosLat0 / rho)); - if (Math.abs(lat0 - PI_OVER_4) > TOLERANCE) { // not 90 or -90 + if (Math.abs(lat0 - Math.PI / 4.0) > TOLERANCE) { // not 90 or -90 temp = rho * cosLat0 * Math.cos(c) - fromY * sinLat0 * Math.sin(c); toLon = lon0 + Math.atan(fromX * Math.sin(c) / temp); - } else if (Double.compare(lat0, PI_OVER_4) == 0) { + } else if (Double.compare(lat0, Math.PI / 4.0) == 0) { toLon = lon0 + Math.atan(fromX / -fromY); temp = -fromY; } else { @@ -408,10 +408,10 @@ public float[][] projToLatLon(float[][] from, float[][] to) { double temp = 0; if (Math.abs(rho) > TOLERANCE) { toLat = Math.asin(Math.cos(c) * sinLat0 + (fromY * Math.sin(c) * cosLat0 / rho)); - if (Math.abs(lat0 - PI_OVER_4) > TOLERANCE) { // not 90 or -90 + if (Math.abs(lat0 - Math.PI / 4.0) > TOLERANCE) { // not 90 or -90 temp = rho * cosLat0 * Math.cos(c) - fromY * sinLat0 * Math.sin(c); toLon = lon0 + Math.atan(fromX * Math.sin(c) / temp); - } else if (Double.compare(lat0, PI_OVER_4) == 0) { + } else if (Double.compare(lat0, Math.PI / 4.0) == 0) { toLon = lon0 + Math.atan(fromX / -fromY); temp = -fromY; } else { @@ -506,10 +506,10 @@ public double[][] projToLatLon(double[][] from, double[][] to) { double temp = 0; if (Math.abs(rho) > TOLERANCE) { toLat = Math.asin(Math.cos(c) * sinLat0 + (fromY * Math.sin(c) * cosLat0 / rho)); - if (Math.abs(lat0 - PI_OVER_4) > TOLERANCE) { // not 90 or -90 + if (Math.abs(lat0 - Math.PI / 4.0) > TOLERANCE) { // not 90 or -90 temp = rho * cosLat0 * Math.cos(c) - fromY * sinLat0 * Math.sin(c); toLon = lon0 + Math.atan(fromX * Math.sin(c) / temp); - } else if (Double.compare(lat0, PI_OVER_4) == 0) { + } else if (Double.compare(lat0, Math.PI / 4.0) == 0) { toLon = lon0 + Math.atan(fromX / -fromY); temp = -fromY; } else { diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/LambertConformal.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/LambertConformal.java index 5af81055c2..36e8862b15 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/LambertConformal.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/LambertConformal.java @@ -23,6 +23,9 @@ */ public class LambertConformal extends ProjectionImpl { + private static final String NAME = "LambertConformal"; + private static final String DEFAULT_UNITS = "km"; + private final double earth_radius; private double lat0, lon0; // lat/lon in radians private double par1, par2; // standard parallel 1 and 2 degrees @@ -100,7 +103,7 @@ public LambertConformal(double lat0, double lon0, double par1, double par2, doub public LambertConformal(double lat0, double lon0, double par1, double par2, double false_easting, double false_northing, double earth_radius) { - super("LambertConformal", false); + super(NAME, DEFAULT_UNITS, false); this._lat0 = lat0; this._lon0 = lon0; @@ -140,7 +143,7 @@ public LambertConformal(double lat0, double lon0, double par1, double par2, doub * Precalculate some stuff */ private void precalculate() { - if (Math.abs(lat0) > PI_OVER_2) { + if (Math.abs(lat0) > Math.PI / 2.0) { throw new IllegalArgumentException("LambertConformal lat0 outside range (-90,90)"); } if (Math.abs(par1) >= 90.0) { @@ -222,19 +225,19 @@ public boolean equals(Object o) { public int hashCode() { int result; long temp; - temp = earth_radius != +0.0d ? Double.doubleToLongBits(earth_radius) : 0L; + temp = earth_radius != 0.0d ? Double.doubleToLongBits(earth_radius) : 0L; result = (int) (temp ^ (temp >>> 32)); - temp = lat0 != +0.0d ? Double.doubleToLongBits(lat0) : 0L; + temp = lat0 != 0.0d ? Double.doubleToLongBits(lat0) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = lon0 != +0.0d ? Double.doubleToLongBits(lon0) : 0L; + temp = lon0 != 0.0d ? Double.doubleToLongBits(lon0) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = par1 != +0.0d ? Double.doubleToLongBits(par1) : 0L; + temp = par1 != 0.0d ? Double.doubleToLongBits(par1) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = par2 != +0.0d ? Double.doubleToLongBits(par2) : 0L; + temp = par2 != 0.0d ? Double.doubleToLongBits(par2) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseEasting != +0.0d ? Double.doubleToLongBits(falseEasting) : 0L; + temp = falseEasting != 0.0d ? Double.doubleToLongBits(falseEasting) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseNorthing != +0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; + temp = falseNorthing != 0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); return result; } @@ -515,7 +518,7 @@ public ProjectionPoint latLonToProj(LatLonPoint latLon, ProjectionPointImpl resu fromLat = Math.toRadians(fromLat); double dlon = LatLonPoints.lonNormal(fromLon - lon0Degrees); double theta = n * Math.toRadians(dlon); - double tn = Math.pow(Math.tan(PI_OVER_4 + fromLat / 2), n); + double tn = Math.pow(Math.tan(Math.PI / 4.0 + fromLat / 2), n); double r = earthRadiusTimesF / tn; toX = r * Math.sin(theta); toY = rho - r * Math.cos(theta); @@ -592,7 +595,7 @@ public float[][] latLonToProj(float[][] from, float[][] to, int latIndex, int lo fromLat = Math.toRadians(fromLat); double dlon = LatLonPoints.lonNormal(fromLon - lon0Degrees); double theta = n * Math.toRadians(dlon); - double tn = Math.pow(Math.tan(PI_OVER_4 + fromLat / 2), n); + double tn = Math.pow(Math.tan(Math.PI / 4.0 + fromLat / 2), n); double r = earthRadiusTimesF / tn; toX = r * Math.sin(theta); toY = rho - r * Math.cos(theta); @@ -682,7 +685,7 @@ public double[][] latLonToProj(double[][] from, double[][] to, int latIndex, int fromLat = Math.toRadians(fromLat); double dlon = LatLonPoints.lonNormal(fromLon - lon0Degrees); double theta = n * Math.toRadians(dlon); - double tn = Math.pow(Math.tan(PI_OVER_4 + fromLat / 2), n); + double tn = Math.pow(Math.tan(Math.PI / 4.0 + fromLat / 2), n); double r = earthRadiusTimesF / tn; toX = r * Math.sin(theta); toY = rho - r * Math.cos(theta); diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Mercator.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Mercator.java index 59371b7071..a2dcbc286c 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Mercator.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Mercator.java @@ -268,15 +268,15 @@ public boolean equals(Object o) { public int hashCode() { int result; long temp; - temp = earthRadius != +0.0d ? Double.doubleToLongBits(earthRadius) : 0L; + temp = earthRadius != 0.0d ? Double.doubleToLongBits(earthRadius) : 0L; result = (int) (temp ^ (temp >>> 32)); - temp = lon0 != +0.0d ? Double.doubleToLongBits(lon0) : 0L; + temp = lon0 != 0.0d ? Double.doubleToLongBits(lon0) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = par != +0.0d ? Double.doubleToLongBits(par) : 0L; + temp = par != 0.0d ? Double.doubleToLongBits(par) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseEasting != +0.0d ? Double.doubleToLongBits(falseEasting) : 0L; + temp = falseEasting != 0.0d ? Double.doubleToLongBits(falseEasting) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseNorthing != +0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; + temp = falseNorthing != 0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); return result; } diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Orthographic.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Orthographic.java index 71b41266f6..c9bfb3f5ae 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Orthographic.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Orthographic.java @@ -118,11 +118,11 @@ public boolean equals(Object o) { public int hashCode() { int result; long temp; - temp = lat0 != +0.0d ? Double.doubleToLongBits(lat0) : 0L; + temp = lat0 != 0.0d ? Double.doubleToLongBits(lat0) : 0L; result = (int) (temp ^ (temp >>> 32)); - temp = lon0 != +0.0d ? Double.doubleToLongBits(lon0) : 0L; + temp = lon0 != 0.0d ? Double.doubleToLongBits(lon0) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = R != +0.0d ? Double.doubleToLongBits(R) : 0L; + temp = R != 0.0d ? Double.doubleToLongBits(R) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); return result; } @@ -249,10 +249,10 @@ public LatLonPoint projToLatLon(ProjectionPoint world, LatLonPointImpl result) { double temp = 0; if (Math.abs(rho) > TOLERANCE) { toLat = Math.asin(Math.cos(c) * sinLat0 + (fromY * Math.sin(c) * cosLat0 / rho)); - if (Math.abs(lat0 - PI_OVER_4) > TOLERANCE) { // not 90 or -90 + if (Math.abs(lat0 - Math.PI / 4.0) > TOLERANCE) { // not 90 or -90 temp = rho * cosLat0 * Math.cos(c) - fromY * sinLat0 * Math.sin(c); toLon = lon0 + Math.atan(fromX * Math.sin(c) / temp); - } else if (Double.compare(lat0, PI_OVER_4) == 0) { + } else if (Double.compare(lat0, Math.PI / 4.0) == 0) { toLon = lon0 + Math.atan(fromX / -fromY); temp = -fromY; } else { @@ -346,10 +346,10 @@ public float[][] projToLatLon(float[][] from, float[][] to) { double temp = 0; if (Math.abs(rho) > TOLERANCE) { toLat = Math.asin(Math.cos(c) * sinLat0 + (fromY * Math.sin(c) * cosLat0 / rho)); - if (Math.abs(lat0 - PI_OVER_4) > TOLERANCE) { // not 90 or -90 + if (Math.abs(lat0 - Math.PI / 4.0) > TOLERANCE) { // not 90 or -90 temp = rho * cosLat0 * Math.cos(c) - fromY * sinLat0 * Math.sin(c); toLon = lon0 + Math.atan(fromX * Math.sin(c) / temp); - } else if (Double.compare(lat0, PI_OVER_4) == 0) { + } else if (Double.compare(lat0, Math.PI / 4.0) == 0) { toLon = lon0 + Math.atan(fromX / -fromY); temp = -fromY; } else { @@ -444,10 +444,10 @@ public double[][] projToLatLon(double[][] from, double[][] to) { double temp = 0; if (Math.abs(rho) > TOLERANCE) { toLat = Math.asin(Math.cos(c) * sinLat0 + (fromY * Math.sin(c) * cosLat0 / rho)); - if (Math.abs(lat0 - PI_OVER_4) > TOLERANCE) { // not 90 or -90 + if (Math.abs(lat0 - Math.PI / 4.0) > TOLERANCE) { // not 90 or -90 temp = rho * cosLat0 * Math.cos(c) - fromY * sinLat0 * Math.sin(c); toLon = lon0 + Math.atan(fromX * Math.sin(c) / temp); - } else if (Double.compare(lat0, PI_OVER_4) == 0) { + } else if (Double.compare(lat0, Math.PI / 4.0) == 0) { toLon = lon0 + Math.atan(fromX / -fromY); temp = -fromY; } else { diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/RotatedLatLon.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/RotatedLatLon.java index 04b80b398d..96726b7328 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/RotatedLatLon.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/RotatedLatLon.java @@ -268,11 +268,11 @@ public boolean equals(Object o) { public int hashCode() { int result; long temp; - temp = lonpole != +0.0d ? Double.doubleToLongBits(lonpole) : 0L; + temp = lonpole != 0.0d ? Double.doubleToLongBits(lonpole) : 0L; result = (int) (temp ^ (temp >>> 32)); - temp = latpole != +0.0d ? Double.doubleToLongBits(latpole) : 0L; + temp = latpole != 0.0d ? Double.doubleToLongBits(latpole) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = polerotate != +0.0d ? Double.doubleToLongBits(polerotate) : 0L; + temp = polerotate != 0.0d ? Double.doubleToLongBits(polerotate) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); return result; } diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Sinusoidal.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Sinusoidal.java index bf1b4c90a6..93c7d47d90 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Sinusoidal.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Sinusoidal.java @@ -168,13 +168,13 @@ public boolean equals(Object o) { public int hashCode() { int result; long temp; - temp = earthRadius != +0.0d ? Double.doubleToLongBits(earthRadius) : 0L; + temp = earthRadius != 0.0d ? Double.doubleToLongBits(earthRadius) : 0L; result = (int) (temp ^ (temp >>> 32)); - temp = centMeridian != +0.0d ? Double.doubleToLongBits(centMeridian) : 0L; + temp = centMeridian != 0.0d ? Double.doubleToLongBits(centMeridian) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseEasting != +0.0d ? Double.doubleToLongBits(falseEasting) : 0L; + temp = falseEasting != 0.0d ? Double.doubleToLongBits(falseEasting) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseNorthing != +0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; + temp = falseNorthing != 0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); return result; } @@ -250,18 +250,18 @@ public LatLonPoint projToLatLon(ProjectionPoint world, LatLonPointImpl result) { double toLat_r = fromY / earthRadius; double toLon_r; - if (Misc.nearlyEquals(Math.abs(toLat_r), PI_OVER_2, 1e-10)) { - toLat_r = toLat_r < 0 ? -PI_OVER_2 : +PI_OVER_2; + if (Misc.nearlyEquals(Math.abs(toLat_r), Math.PI / 2.0, 1e-10)) { + toLat_r = toLat_r < 0 ? -Math.PI / 2.0 : Math.PI / 2.0; toLon_r = Math.toRadians(centMeridian); // if lat == +- pi/2, set lon = centMeridian (Snyder 248) - } else if (Math.abs(toLat_r) < PI_OVER_2) { + } else if (Math.abs(toLat_r) < Math.PI / 2.0) { toLon_r = Math.toRadians(centMeridian) + fromX / (earthRadius * Math.cos(toLat_r)); } else { return INVALID; // Projection point is off the map. } - if (Misc.nearlyEquals(Math.abs(toLon_r), PI, 1e-10)) { - toLon_r = toLon_r < 0 ? -PI : +PI; - } else if (Math.abs(toLon_r) > PI) { + if (Misc.nearlyEquals(Math.abs(toLon_r), Math.PI, 1e-10)) { + toLon_r = toLon_r < 0 ? -Math.PI : Math.PI; + } else if (Math.abs(toLon_r) > Math.PI) { return INVALID; // Projection point is off the map. } @@ -351,7 +351,7 @@ public List getMapEdgeInterceptsAtX(double x0) { } double x0natural = x0 - falseEasting; - double limitLon_r = (x0natural < 0) ? -PI : +PI; + double limitLon_r = (x0natural < 0) ? -Math.PI : Math.PI; double deltaLon_r = limitLon_r - Math.toRadians(centMeridian); // This formula comes from solving 30-1 for phi, and then plugging it into 30-2. See Snyder, p 247. @@ -375,8 +375,8 @@ public List getMapEdgeInterceptsAtY(double y0) { return mapEdgeIntercepts; // Empty list. } - double minX = getXAt(y0, -PI); - double maxX = getXAt(y0, +PI); + double minX = getXAt(y0, -Math.PI); + double maxX = getXAt(y0, Math.PI); mapEdgeIntercepts.add(ProjectionPoint.create(minX, y0)); mapEdgeIntercepts.add(ProjectionPoint.create(maxX, y0)); diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Stereographic.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Stereographic.java index 269eae5ff4..8f382da87b 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Stereographic.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/Stereographic.java @@ -373,17 +373,17 @@ public boolean equals(Object o) { public int hashCode() { int result; long temp; - temp = falseEasting != +0.0d ? Double.doubleToLongBits(falseEasting) : 0L; + temp = falseEasting != 0.0d ? Double.doubleToLongBits(falseEasting) : 0L; result = (int) (temp ^ (temp >>> 32)); - temp = falseNorthing != +0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; + temp = falseNorthing != 0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = scale != +0.0d ? Double.doubleToLongBits(scale) : 0L; + temp = scale != 0.0d ? Double.doubleToLongBits(scale) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = earthRadius != +0.0d ? Double.doubleToLongBits(earthRadius) : 0L; + temp = earthRadius != 0.0d ? Double.doubleToLongBits(earthRadius) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = latt != +0.0d ? Double.doubleToLongBits(latt) : 0L; + temp = latt != 0.0d ? Double.doubleToLongBits(latt) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = lont != +0.0d ? Double.doubleToLongBits(lont) : 0L; + temp = lont != 0.0d ? Double.doubleToLongBits(lont) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); return result; } diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/TransverseMercator.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/TransverseMercator.java index 7b363c97c4..4132fcc417 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/TransverseMercator.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/TransverseMercator.java @@ -296,17 +296,17 @@ public boolean equals(Object o) { public int hashCode() { int result; long temp; - temp = lat0 != +0.0d ? Double.doubleToLongBits(lat0) : 0L; + temp = lat0 != 0.0d ? Double.doubleToLongBits(lat0) : 0L; result = (int) (temp ^ (temp >>> 32)); - temp = lon0 != +0.0d ? Double.doubleToLongBits(lon0) : 0L; + temp = lon0 != 0.0d ? Double.doubleToLongBits(lon0) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = scale != +0.0d ? Double.doubleToLongBits(scale) : 0L; + temp = scale != 0.0d ? Double.doubleToLongBits(scale) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = earthRadius != +0.0d ? Double.doubleToLongBits(earthRadius) : 0L; + temp = earthRadius != 0.0d ? Double.doubleToLongBits(earthRadius) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseEasting != +0.0d ? Double.doubleToLongBits(falseEasting) : 0L; + temp = falseEasting != 0.0d ? Double.doubleToLongBits(falseEasting) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseNorthing != +0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; + temp = falseNorthing != 0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); return result; } diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/VerticalPerspectiveView.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/VerticalPerspectiveView.java index 6f76208b42..890e42edb6 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/VerticalPerspectiveView.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/VerticalPerspectiveView.java @@ -143,17 +143,17 @@ public boolean equals(Object o) { public int hashCode() { int result; long temp; - temp = lat0 != +0.0d ? Double.doubleToLongBits(lat0) : 0L; + temp = lat0 != 0.0d ? Double.doubleToLongBits(lat0) : 0L; result = (int) (temp ^ (temp >>> 32)); - temp = lon0 != +0.0d ? Double.doubleToLongBits(lon0) : 0L; + temp = lon0 != 0.0d ? Double.doubleToLongBits(lon0) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = false_east != +0.0d ? Double.doubleToLongBits(false_east) : 0L; + temp = false_east != 0.0d ? Double.doubleToLongBits(false_east) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = false_north != +0.0d ? Double.doubleToLongBits(false_north) : 0L; + temp = false_north != 0.0d ? Double.doubleToLongBits(false_north) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = R != +0.0d ? Double.doubleToLongBits(R) : 0L; + temp = R != 0.0d ? Double.doubleToLongBits(R) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = H != +0.0d ? Double.doubleToLongBits(H) : 0L; + temp = H != 0.0d ? Double.doubleToLongBits(H) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); return result; } @@ -311,10 +311,10 @@ public LatLonPoint projToLatLon(ProjectionPoint world, LatLonPointImpl result) { double temp = 0; if (Math.abs(rho) > TOLERANCE) { toLat = Math.asin(Math.cos(c) * sinLat0 + (fromY * Math.sin(c) * cosLat0 / rho)); - if (Math.abs(lat0 - PI_OVER_4) > TOLERANCE) { // not 90 or -90 + if (Math.abs(lat0 - Math.PI / 4.0) > TOLERANCE) { // not 90 or -90 temp = rho * cosLat0 * Math.cos(c) - fromY * sinLat0 * Math.sin(c); toLon = lon0 + Math.atan(fromX * Math.sin(c) / temp); - } else if (Double.compare(lat0, PI_OVER_4) == 0) { + } else if (Double.compare(lat0, Math.PI / 4.0) == 0) { toLon = lon0 + Math.atan(fromX / -fromY); temp = -fromY; } else { @@ -415,10 +415,10 @@ public float[][] projToLatLon(float[][] from, float[][] to) { double temp = 0; if (Math.abs(rho) > TOLERANCE) { toLat = Math.asin(Math.cos(c) * sinLat0 + (fromY * Math.sin(c) * cosLat0 / rho)); - if (Math.abs(lat0 - PI_OVER_4) > TOLERANCE) { // not 90 or -90 + if (Math.abs(lat0 - Math.PI / 4.0) > TOLERANCE) { // not 90 or -90 temp = rho * cosLat0 * Math.cos(c) - fromY * sinLat0 * Math.sin(c); toLon = lon0 + Math.atan(fromX * Math.sin(c) / temp); - } else if (Double.compare(lat0, PI_OVER_4) == 0) { + } else if (Double.compare(lat0, Math.PI / 4.0) == 0) { toLon = lon0 + Math.atan(fromX / -fromY); temp = -fromY; } else { @@ -520,10 +520,10 @@ public double[][] projToLatLon(double[][] from, double[][] to) { double temp = 0; if (Math.abs(rho) > TOLERANCE) { toLat = Math.asin(Math.cos(c) * sinLat0 + (fromY * Math.sin(c) * cosLat0 / rho)); - if (Math.abs(lat0 - PI_OVER_4) > TOLERANCE) { // not 90 or -90 + if (Math.abs(lat0 - Math.PI / 4.0) > TOLERANCE) { // not 90 or -90 temp = rho * cosLat0 * Math.cos(c) - fromY * sinLat0 * Math.sin(c); toLon = lon0 + Math.atan(fromX * Math.sin(c) / temp); - } else if (Double.compare(lat0, PI_OVER_4) == 0) { + } else if (Double.compare(lat0, Math.PI / 4.0) == 0) { toLon = lon0 + Math.atan(fromX / -fromY); temp = -fromY; } else { diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/proj4/CylindricalEqualAreaProjection.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/proj4/CylindricalEqualAreaProjection.java index 0c6a23ee02..afdb25e30f 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/proj4/CylindricalEqualAreaProjection.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/proj4/CylindricalEqualAreaProjection.java @@ -185,13 +185,13 @@ public boolean equals(Object o) { public int hashCode() { int result; long temp; - temp = scaleFactor != +0.0d ? Double.doubleToLongBits(scaleFactor) : 0L; + temp = scaleFactor != 0.0d ? Double.doubleToLongBits(scaleFactor) : 0L; result = (int) (temp ^ (temp >>> 32)); - temp = projectionLongitude != +0.0d ? Double.doubleToLongBits(projectionLongitude) : 0L; + temp = projectionLongitude != 0.0d ? Double.doubleToLongBits(projectionLongitude) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseEasting != +0.0d ? Double.doubleToLongBits(falseEasting) : 0L; + temp = falseEasting != 0.0d ? Double.doubleToLongBits(falseEasting) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseNorthing != +0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; + temp = falseNorthing != 0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); result = 31 * result + (earth != null ? earth.hashCode() : 0); return result; diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/proj4/EquidistantAzimuthalProjection.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/proj4/EquidistantAzimuthalProjection.java index 6b4de36492..b3bc54895e 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/proj4/EquidistantAzimuthalProjection.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/proj4/EquidistantAzimuthalProjection.java @@ -343,13 +343,13 @@ public boolean equals(Object o) { public int hashCode() { int result; long temp; - temp = projectionLatitude != +0.0d ? Double.doubleToLongBits(projectionLatitude) : 0L; + temp = projectionLatitude != 0.0d ? Double.doubleToLongBits(projectionLatitude) : 0L; result = (int) (temp ^ (temp >>> 32)); - temp = projectionLongitude != +0.0d ? Double.doubleToLongBits(projectionLongitude) : 0L; + temp = projectionLongitude != 0.0d ? Double.doubleToLongBits(projectionLongitude) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseEasting != +0.0d ? Double.doubleToLongBits(falseEasting) : 0L; + temp = falseEasting != 0.0d ? Double.doubleToLongBits(falseEasting) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = falseNorthing != +0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; + temp = falseNorthing != 0.0d ? Double.doubleToLongBits(falseNorthing) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); result = 31 * result + (earth != null ? earth.hashCode() : 0); return result; diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/sat/GEOSTransform.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/sat/GEOSTransform.java index 1d6a78c38e..f23753959a 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/sat/GEOSTransform.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/sat/GEOSTransform.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998-2018 University Corporation for Atmospheric Research/Unidata + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata * See LICENSE for license information. */ @@ -170,9 +170,15 @@ public double[] earthToSat(double geographic_lon, double geographic_lat) { double theta_sat = Double.NaN; if (scan_geom.equals(GEOS)) { // GEOS (eg. SEVIRI, MSG) CGMS 03, 4.4.3.2, Normalized Geostationary Projection + if (h * (h - r_1) < r_3 * r_3 + r_eq * r_eq * r_2 * r_2 / (r_pol * r_pol)) { + return new double[] {Double.NaN, Double.NaN}; + } lamda_sat = Math.atan(-r_2 / r_1); theta_sat = Math.asin(r_3 / Math.sqrt(r_1 * r_1 + r_2 * r_2 + r_3 * r_3)); } else if (scan_geom.equals(GOES)) { // GOES (eg. GOES-R ABI) + if (h * (h - r_1) < r_2 * r_2 + r_eq * r_eq * r_3 * r_3 / (r_pol * r_pol)) { + return new double[] {Double.NaN, Double.NaN}; + } lamda_sat = Math.asin(-r_2 / Math.sqrt(r_1 * r_1 + r_2 * r_2 + r_3 * r_3)); theta_sat = Math.atan(r_3 / r_1); } diff --git a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/sat/Geostationary.java b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/sat/Geostationary.java index 6cca01d18e..b1b709971f 100644 --- a/cdm/core/src/main/java/ucar/unidata/geoloc/projection/sat/Geostationary.java +++ b/cdm/core/src/main/java/ucar/unidata/geoloc/projection/sat/Geostationary.java @@ -73,6 +73,9 @@ public class Geostationary extends ProjectionImpl { private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(Geostationary.class); private static final String NAME = CF.GEOSTATIONARY; + private static final String DEFAULT_UNITS = "radians"; + + // Remove in v6.x private boolean scaleGeoCoordinate; private double geoCoordinateScaleFactor = Double.MIN_VALUE; @@ -81,13 +84,18 @@ public class Geostationary extends ProjectionImpl { public Geostationary(double subLonDegrees, double perspective_point_height, double semi_minor_axis, double semi_major_axis, double inv_flattening, boolean isSweepX) { - // scale factors (last two doubles in the sig) less than zero indicate no scaling of map x, y coordinates + // scale factors less than zero indicate no scaling of map x, y coordinates this(subLonDegrees, perspective_point_height, semi_minor_axis, semi_major_axis, inv_flattening, isSweepX, -1.0); } + /** + * @deprecated Remove in v6.x. + * Use constructor without geoCoordinateScaleFactor as units are handled outside of projection classes + */ + @Deprecated public Geostationary(double subLonDegrees, double perspective_point_height, double semi_minor_axis, double semi_major_axis, double inv_flattening, boolean isSweepX, double geoCoordinateScaleFactor) { - super(NAME, false); + super(NAME, DEFAULT_UNITS, false); String sweepAngleAxis = "y"; if (isSweepX) { @@ -112,19 +120,19 @@ public Geostationary(double subLonDegrees, double perspective_point_height, doub } public Geostationary() { - super(NAME, false); + super(NAME, DEFAULT_UNITS, false); navigation = new GEOSTransform(); makePP(); } public Geostationary(double subLonDegrees) { - super(NAME, false); + super(NAME, DEFAULT_UNITS, false); navigation = new GEOSTransform(subLonDegrees, GEOSTransform.GOES); makePP(); } public Geostationary(double subLonDegrees, boolean isSweepX) { - super(NAME, false); + super(NAME, DEFAULT_UNITS, false); String sweepAngleAxis = "y"; if (isSweepX) { @@ -137,8 +145,13 @@ public Geostationary(double subLonDegrees, boolean isSweepX) { makePP(); } + /** + * @deprecated Remove in v6.x. + * Use constructor without geoCoordinateScaleFactor as units are handled outside of projection classes + */ + @Deprecated public Geostationary(double subLonDegrees, String sweepAngleAxis, double geoCoordinateScaleFactor) { - super(NAME, false); + super(NAME, DEFAULT_UNITS, false); String scanGeometry = GEOSTransform.sweepAngleAxisToScanGeom(sweepAngleAxis); @@ -164,6 +177,11 @@ private void makePP() { addParameter(CF.SEMI_MINOR_AXIS, navigation.r_pol * 1000.0); } + /** + * @deprecated Remove in v6.x. + * Units are handled outside of projection classes + */ + @Deprecated private boolean isGeoCoordinateScaled() { return scaleGeoCoordinate && geoCoordinateScaleFactor > Double.MIN_VALUE; } diff --git a/cdm/core/src/main/resources/resources/thredds/schemas/wmsConfig.dtd b/cdm/core/src/main/resources/resources/thredds/schemas/wmsConfig.dtd index 5b1629f148..485a8c1655 100644 --- a/cdm/core/src/main/resources/resources/thredds/schemas/wmsConfig.dtd +++ b/cdm/core/src/main/resources/resources/thredds/schemas/wmsConfig.dtd @@ -4,6 +4,7 @@ + @@ -29,5 +30,5 @@ - + diff --git a/cdm/core/src/test/data/hdf5/ref_anon_enum.h5 b/cdm/core/src/test/data/hdf5/ref_anon_enum.h5 new file mode 100644 index 0000000000..a1e009d1e6 Binary files /dev/null and b/cdm/core/src/test/data/hdf5/ref_anon_enum.h5 differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_enum_2.nc b/cdm/core/src/test/data/hdf5/test_enum_2.nc4 similarity index 100% rename from dap4/d4tests/src/test/data/resources/testfiles/test_enum_2.nc rename to cdm/core/src/test/data/hdf5/test_enum_2.nc4 diff --git a/cdm/core/src/test/data/hdf5/test_enum_type.nc b/cdm/core/src/test/data/hdf5/test_enum_type.nc new file mode 100644 index 0000000000..88c7a7b57a Binary files /dev/null and b/cdm/core/src/test/data/hdf5/test_enum_type.nc differ diff --git a/cdm/core/src/test/data/ncml/aggregationModifyAttributes.xml b/cdm/core/src/test/data/ncml/aggregationModifyAttributes.xml new file mode 100644 index 0000000000..01967852e5 --- /dev/null +++ b/cdm/core/src/test/data/ncml/aggregationModifyAttributes.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/cdm/core/src/test/data/ncml/aggregationScanModifyAttributes.xml b/cdm/core/src/test/data/ncml/aggregationScanModifyAttributes.xml new file mode 100644 index 0000000000..3a37a95f7d --- /dev/null +++ b/cdm/core/src/test/data/ncml/aggregationScanModifyAttributes.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/cdm/core/src/test/data/ncml/enhance/testNormalizer.ncml b/cdm/core/src/test/data/ncml/enhance/testNormalizer.ncml new file mode 100644 index 0000000000..29b6b5162d --- /dev/null +++ b/cdm/core/src/test/data/ncml/enhance/testNormalizer.ncml @@ -0,0 +1,24 @@ + + + + + + + 1.0 2.0 3.0 4.0 5.0 + + + + 5.0 5.0 5.0 5.0 5.0 + + + + 1.0 2.0 3.0 4.0 5.0 + + + + 1 2 3 4 5 + + \ No newline at end of file diff --git a/cdm/core/src/test/data/ncml/enhance/testStandardizer.ncml b/cdm/core/src/test/data/ncml/enhance/testStandardizer.ncml new file mode 100644 index 0000000000..08053a5adb --- /dev/null +++ b/cdm/core/src/test/data/ncml/enhance/testStandardizer.ncml @@ -0,0 +1,24 @@ + + + + + + + 1.0 2.0 3.0 4.0 5.0 + + + + 5.0 5.0 5.0 5.0 5.0 + + + + 1.0 2.0 3.0 4.0 5.0 + + + + 1 2 3 4 5 + + diff --git a/cdm/core/src/test/data/ncml/modifyDim.xml b/cdm/core/src/test/data/ncml/modifyDim.xml new file mode 100644 index 0000000000..8c73a72765 --- /dev/null +++ b/cdm/core/src/test/data/ncml/modifyDim.xml @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/cdm/core/src/test/data/point/testGridAsPointAxes.ncml b/cdm/core/src/test/data/point/testGridAsPointAxes.ncml new file mode 100644 index 0000000000..e093156a8c --- /dev/null +++ b/cdm/core/src/test/data/point/testGridAsPointAxes.ncml @@ -0,0 +1,300 @@ + + + + + + + + + + + 0 3600 + + + + + 0 10 20 30 + + + + 0 3 6 9 12 + + + + 0 5 10 + + + + 0 3600 + + + + + 0 10 + + + + 0 1 2 + 10 11 12 + 20 21 22 + 30 31 32 + 40 41 42 + 100 101 102 + 110 111 112 + 120 121 122 + 130 131 132 + 140 141 142 + 200 201 202 + 210 211 212 + 220 221 222 + 230 231 232 + 240 241 242 + 300 301 302 + 310 311 312 + 320 321 322 + 330 331 332 + 340 341 342 + 1000 1001 1002 + 1010 1011 1012 + 1020 1021 1022 + 1030 1031 1032 + 1040 1041 1042 + 1100 1101 1102 + 1110 1111 1112 + 1120 1121 1122 + 1130 1131 1132 + 1140 1141 1142 + 1200 1201 1202 + 1210 1211 1212 + 1220 1221 1222 + 1230 1231 1232 + 1240 1241 1242 + 1300 1301 1302 + 1310 1311 1312 + 1320 1321 1322 + 1330 1331 1332 + 1340 1341 1342 + + + + + 0 1 2 + 10 11 12 + 20 21 22 + 30 31 32 + 40 41 42 + 1000 1001 1002 + 1010 1011 1012 + 1020 1021 1022 + 1030 1031 1032 + 1040 1041 1042 + 0 1 2 + 10 11 12 + 20 21 22 + 30 31 32 + 40 41 42 + 1000 1001 1002 + 1010 1011 1012 + 1020 1021 1022 + 1030 1031 1032 + 1040 1041 1042 + + + + + 0 1 2 + 10 11 12 + 20 21 22 + 30 31 32 + 40 41 42 + 100 101 102 + 110 111 112 + 120 121 122 + 130 131 132 + 140 141 142 + 200 201 202 + 210 211 212 + 220 221 222 + 230 231 232 + 240 241 242 + 300 301 302 + 310 311 312 + 320 321 322 + 330 331 332 + 340 341 342 + 1000 1001 1002 + 1010 1011 1012 + 1020 1021 1022 + 1030 1031 1032 + 1040 1041 1042 + 1100 1101 1102 + 1110 1111 1112 + 1120 1121 1122 + 1130 1131 1132 + 1140 1141 1142 + 1200 1201 1202 + 1210 1211 1212 + 1220 1221 1222 + 1230 1231 1232 + 1240 1241 1242 + 1300 1301 1302 + 1310 1311 1312 + 1320 1321 1322 + 1330 1331 1332 + 1340 1341 1342 + + + + + 0 1 2 + 10 11 12 + 20 21 22 + 30 31 32 + 40 41 42 + 100 101 102 + 110 111 112 + 120 121 122 + 130 131 132 + 140 141 142 + 200 201 202 + 210 211 212 + 220 221 222 + 230 231 232 + 240 241 242 + 300 301 302 + 310 311 312 + 320 321 322 + 330 331 332 + 340 341 342 + + + + + 0 1 2 + 10 11 12 + 20 21 22 + 30 31 32 + 40 41 42 + 100 101 102 + 110 111 112 + 120 121 122 + 130 131 132 + 140 141 142 + 200 201 202 + 210 211 212 + 220 221 222 + 230 231 232 + 240 241 242 + 300 301 302 + 310 311 312 + 320 321 322 + 330 331 332 + 340 341 342 + + + + + 0 1 2 + 10 11 12 + 20 21 22 + 30 31 32 + 40 41 42 + 100 101 102 + 110 111 112 + 120 121 122 + 130 131 132 + 140 141 142 + + + + + 0 1 2 + 10 11 12 + 20 21 22 + 30 31 32 + 40 41 42 + 100 101 102 + 110 111 112 + 120 121 122 + 130 131 132 + 140 141 142 + + + + + 0 1 2 + 10 11 12 + 20 21 22 + 30 31 32 + 40 41 42 + + + + + 0 1 2 + 10 11 12 + 20 21 22 + 30 31 32 + 40 41 42 + 100 101 102 + 110 111 112 + 120 121 122 + 130 131 132 + 140 141 142 + 200 201 202 + 210 211 212 + 220 221 222 + 230 231 232 + 240 241 242 + 300 301 302 + 310 311 312 + 320 321 322 + 330 331 332 + 340 341 342 + + + + + 0 1 2 + 10 11 12 + 20 21 22 + 30 31 32 + 40 41 42 + 100 101 102 + 110 111 112 + 120 121 122 + 130 131 132 + 140 141 142 + 200 201 202 + 210 211 212 + 220 221 222 + 230 231 232 + 240 241 242 + 300 301 302 + 310 311 312 + 320 321 322 + 330 331 332 + 340 341 342 + 1000 1001 1002 + 1010 1011 1012 + 1020 1021 1022 + 1030 1031 1032 + 1040 1041 1042 + 1100 1101 1102 + 1110 1111 1112 + 1120 1121 1122 + 1130 1131 1132 + 1140 1141 1142 + 1200 1201 1202 + 1210 1211 1212 + 1220 1221 1222 + 1230 1231 1232 + 1240 1241 1242 + 1300 1301 1302 + 1310 1311 1312 + 1320 1321 1322 + 1330 1331 1332 + 1340 1341 1342 + + + \ No newline at end of file diff --git a/cdm/core/src/test/groovy/ucar/nc2/ft/point/remote/PointStreamSpec.groovy b/cdm/core/src/test/groovy/ucar/nc2/ft/point/remote/PointStreamSpec.groovy deleted file mode 100644 index c8d151953f..0000000000 --- a/cdm/core/src/test/groovy/ucar/nc2/ft/point/remote/PointStreamSpec.groovy +++ /dev/null @@ -1,53 +0,0 @@ -package ucar.nc2.ft.point.remote - -import org.apache.commons.io.FilenameUtils -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import spock.lang.Specification -import spock.lang.Unroll -import ucar.nc2.constants.FeatureType -import ucar.nc2.ft.FeatureDatasetFactoryManager -import ucar.nc2.ft.FeatureDatasetPoint -import ucar.nc2.ft.PointFeatureCollection -import ucar.nc2.ft.point.FlattenedDatasetPointCollection -import ucar.nc2.ft.point.PointTestUtil -import ucar.unidata.util.test.TestDir - -/** - * @author cwardgar - * @since 2015/09/21 - */ -class PointStreamSpec extends Specification { - private static final Logger logger = LoggerFactory.getLogger(PointStreamSpec) - - public static final String cfDocDsgExamplesDir = TestDir.cdmLocalTestDataDir + "cfDocDsgExamples/"; - public static final String pointDir = TestDir.cdmLocalTestDataDir + "point/"; - - @Unroll // Method will have its iterations reported independently. - def "round trip['#location']"() { - setup: - File outFile = File.createTempFile(FilenameUtils.getBaseName(location) + "_", ".bin") - FeatureDatasetPoint fdPoint = - (FeatureDatasetPoint) FeatureDatasetFactoryManager.open(FeatureType.ANY_POINT, location, null) - - when: - PointFeatureCollection origPointCol = new FlattenedDatasetPointCollection(fdPoint); - PointStream.write(origPointCol, outFile); - PointFeatureCollection roundTrippedPointCol = new PointCollectionStreamLocal(outFile); - - then: - PointTestUtil.equals(origPointCol, roundTrippedPointCol) - - cleanup: - fdPoint.close() - outFile.delete() - - where: - location << [ - cfDocDsgExamplesDir + "H.1.1.ncml", - pointDir + "point.ncml", - pointDir + "pointMissing.ncml", - pointDir + "pointUnlimited.nc" - ] - } -} diff --git a/cdm/core/src/test/groovy/ucar/nc2/ft2/coverage/HorizCoordSysCrossSeamBoundarySpec.groovy b/cdm/core/src/test/groovy/ucar/nc2/ft2/coverage/HorizCoordSysCrossSeamBoundarySpec.groovy deleted file mode 100644 index 5b7d6f54fd..0000000000 --- a/cdm/core/src/test/groovy/ucar/nc2/ft2/coverage/HorizCoordSysCrossSeamBoundarySpec.groovy +++ /dev/null @@ -1,271 +0,0 @@ -package ucar.nc2.ft2.coverage - -import spock.lang.Specification -import ucar.unidata.geoloc.LatLonPoint -import ucar.unidata.geoloc.LatLonPointNoNormalize -import ucar.unidata.geoloc.LatLonRect -import ucar.unidata.geoloc.ProjectionPoint -import ucar.unidata.geoloc.ProjectionPointImpl -import ucar.unidata.geoloc.ProjectionRect - -/** - * Asserts that HorizCoordSys calculates correct boundaries for coverages that cross the international date line. - * Tests for projection, latLon1D, and latLon2D CRSs are included. The projection and latLon2D datasets are based - * on a PolarStereographic_Projection. - * - * @author cwardgar - * @since 2018-02-26 - */ -class HorizCoordSysCrossSeamBoundarySpec extends Specification { - def "calcProjectionBoundaryPoints()"() { - setup: "get the HorizCoordSys of the dataset" - HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamProjection.ncml") - - and: "get actual points" - List actualPoints = horizCoordSys.calcProjectionBoundaryPoints() - - and: "declare expected points" - List expectedPoints = convertCoordsToPoints(false, [ - [-2450, -4500], [-2450, -3500], [-2450, -2500], [-2450, -1500], // Bottom edge - [-2450, -500], [-1550, -500], [-650, -500], [250, -500], // Right edge - [1150, -500], [1150, -1500], [1150, -2500], [1150, -3500], // Top edge - [1150, -4500], [250, -4500], [-650, -4500], [-1550, -4500], // Left edge - ]) - - expect: "expected equals actual" - expectedPoints == actualPoints - } - - def "calcProjectionBoundaryPoints(2, 2)"() { - setup: "get the HorizCoordSys of the dataset" - HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamProjection.ncml") - - and: "get actual points" - // Results in strideY == 2 and strideX == 2. - List actualPoints = horizCoordSys.calcProjectionBoundaryPoints(2, 2) - - and: "declare expected points" - List expectedPoints = convertCoordsToPoints(false, [ - [-2450, -4500], [-2450, -2500], // Bottom edge - [-2450, -500], [-650, -500], // Right edge - [1150, -500], [1150, -2500], // Top edge - [1150, -4500], [-650, -4500], // Left edge - ]) - - expect: "expected equals actual" - expectedPoints == actualPoints - } - - def "calcConnectedLatLonBoundaryPoints() - lat/lon 1D"() { - setup: "get the HorizCoordSys of the dataset" - HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamLatLon1D.ncml") - - and: "get actual points" - List actualPoints = horizCoordSys.calcConnectedLatLonBoundaryPoints() - - and: "declare expected points" - List expectedPoints = convertCoordsToPoints(true, [ - [0, 130], [0, 150], [0, 170], [0, 190], [0, 210], // Bottom edge - [0, 230], [10, 230], [20, 230], [30, 230], [40, 230], // Right edge - [50, 230], [50, 210], [50, 190], [50, 170], [50, 150], // Top edge - [50, 130], [40, 130], [30, 130], [20, 130], [10, 130] // Left edge - ]) - - expect: "expected equals actual" - expectedPoints == actualPoints - } - - def "calcConnectedLatLonBoundaryPoints(2, 3) - lat/lon 1D"() { - setup: "get the HorizCoordSys of the dataset" - HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamLatLon1D.ncml") - - and: "get actual points" - // Results in strideY == 3 and strideX == 2. - List actualPoints = horizCoordSys.calcConnectedLatLonBoundaryPoints(2, 3) - - and: "declare expected points" - List expectedPoints = convertCoordsToPoints(true, [ - [0, 130], [0, 170], [0, 210], // Bottom edge - [0, 230], [30, 230], // Right edge - [50, 230], [50, 190], [50, 150], // Top edge - [50, 130], [20, 130], // Left edge - ]) - - expect: "expected equals actual" - expectedPoints == actualPoints - } - - def "calcConnectedLatLonBoundaryPoints() - projection"() { - setup: "get the HorizCoordSys of the dataset" - HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamProjection.ncml") - - and: "get actual points" - List actualPoints = horizCoordSys.calcConnectedLatLonBoundaryPoints() - - and: "declare expected points" - List expectedPoints = convertCoordsToPoints(true, [ - [43.3711, -166.4342], [50.4680, -160.0080], [57.1887, -150.5787], [62.8319, -136.4768], // Bottom edge - [66.2450, -116.5346], [74.3993, -122.8787], [82.1083, -142.5686], [84.6159, -221.5651], // Right edge - [77.9578, -261.5014], [71.9333, -232.4762], [63.9355, -219.7024], [55.5660, -213.1890], // Top edge - [47.3219, -209.3354], [48.4777, -198.1798], [48.1430, -186.7808], [46.3647, -175.9940] // Left edge - ]) - - expect: "same number of actualPoints as expectedPoints" - actualPoints.size() == expectedPoints.size() - - and: "corresponding points are nearly equal" - for (int i = 0; i < actualPoints.size(); ++i) { - assert actualPoints[i].nearlyEquals(expectedPoints[i], 1e-5) - } - } - - def "calcConnectedLatLonBoundaryPoints() - lat/lon 2D"() { - setup: "get the HorizCoordSys of the dataset" - HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamLatLon2D.ncml") - - and: "get actual points" - List actualPoints = horizCoordSys.calcConnectedLatLonBoundaryPoints() - println actualPoints - - and: "declare expected points" - List expectedPoints = convertCoordsToPoints(true, [ - // Verified by visually inspecting the coverage drawing in ToolsUI. - // Note how these boundary points differ from the ones we calculated in the test above, even though - // "crossSeamProjection.ncml" and "crossSeamLatLon2D.ncml" represent the same grid. That's because the - // edges in "calcConnectedLatLonBoundaryPoints() - projection" were calculated in projection coordinates - // and THEN converted to lat/lon. THESE edges, on the other hand, were calculated from 2D lat/lon - // midpoints generated from the projection. Taking that path, there's an unavoidable loss of precision. - [44.8740, -169.5274], [51.7795, -157.6634], [58.6851, -145.7993], [64.2176, -125.9033], // Bottom edge - [69.7501, -106.0074], [76.0530, -134.4232], [82.3559, -162.8391], [83.7438, -207.9060], // Right edge - [85.1317, -252.9728], [75.7804, -237.0202], [66.4291, -221.0677], [57.3500, -213.7392], // Top edge - [48.2709, -206.4107], [48.0159, -197.4671], [47.7609, -188.5235], [46.3175, -179.0254], // Left edge - ]) - - expect: "same number of actualPoints as expectedPoints" - actualPoints.size() == expectedPoints.size() - - and: "corresponding points are nearly equal" - for (int i = 0; i < actualPoints.size(); ++i) { - assert actualPoints[i].nearlyEquals(expectedPoints[i], 1e-5) - } - } - - def "calcConnectedLatLonBoundaryPoints(2, 2) - lat/lon 2D"() { - setup: "get the HorizCoordSys of the dataset" - HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamLatLon2D.ncml") - - and: "get actual points" - // Results in strideY == 2 and strideX == 2. - List actualPoints = horizCoordSys.calcConnectedLatLonBoundaryPoints(2, 2) - - and: "declare expected points" - List expectedPoints = convertCoordsToPoints(true, [ - [44.8740, -169.5274], [58.6851, -145.7993], // Bottom edge - [69.7501, -106.0074], [82.3559, -162.8391], // Right edge - [85.1317, -252.9728], [66.4291, -221.0677], // Top edge - [48.2709, -206.4107], [47.7609, -188.5235], // Left edge - ]) - - expect: "same number of actualPoints as expectedPoints" - actualPoints.size() == expectedPoints.size() - - and: "corresponding points are nearly equal" - for (int i = 0; i < actualPoints.size(); ++i) { - assert actualPoints[i].nearlyEquals(expectedPoints[i], 1e-5) - } - } - - - def "calcProjectionBoundingBox"() { - setup: "get the HorizCoordSys of the dataset" - HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamProjection.ncml") - - and: "get actual bounding box" - ProjectionRect actualBB = horizCoordSys.calcProjectionBoundingBox() - - and: "declare expected bounding box" - ProjectionRect expectedBB = new ProjectionRect( - ProjectionPoint.create(-4500, -2450), ProjectionPoint.create(-500, 1150)) - - expect: "expected equals actual" - expectedBB == actualBB - } - - def "calcLatLonBoundingBox - 1DLatLon"() { - setup: "get the HorizCoordSys of the dataset" - HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamLatLon1D.ncml") - - and: "get actual bounding box" - LatLonRect actualBB = horizCoordSys.calcLatLonBoundingBox() - - and: "declare expected bounding box" - // Derived by manually finding the minimum and maximum lat & lon values of the expected points in the - // "calcConnectedLatLonBoundaryPoints() - lat/lon 1D" test. - LatLonRect expectedBB = new LatLonRect(LatLonPoint.create(0, 130), LatLonPoint.create(50, 230)) - - expect: "expected equals actual" - expectedBB == actualBB - } - - def "calcLatLonBoundingBox - projection"() { - setup: "get the HorizCoordSys of the dataset" - HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamProjection.ncml") - - and: "get actual bounding box" - LatLonRect actualBB = horizCoordSys.calcLatLonBoundingBox() - - and: "declare expected bounding box" - // Derived by manually finding the minimum and maximum lat & lon values of the expected points in the - // "calcConnectedLatLonBoundaryPoints() - projection" test. - LatLonRect expectedBB = new LatLonRect( - LatLonPoint.create(43.3711, -261.5014), LatLonPoint.create(84.6159, -116.5346)) - - expect: "expected equals actual" - expectedBB.nearlyEquals(actualBB) - } - - def "calcLatLonBoundingBox - 2DLatLon"() { - setup: "get the HorizCoordSys of the dataset" - HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamLatLon2D.ncml") - - and: "get actual bounding box" - LatLonRect actualBB = horizCoordSys.calcLatLonBoundingBox() - - and: "declare expected bounding box" - // Derived by manually finding the minimum and maximum lat & lon values of the expected points in the - // "calcConnectedLatLonBoundaryPoints() - lat/lon 2D" test. - LatLonRect expectedBB = new LatLonRect( - LatLonPoint.create(44.8740, -252.9728), LatLonPoint.create(85.1317, -106.0074)) - - expect: "expected equals actual" - expectedBB.nearlyEquals(actualBB) - } - - - private HorizCoordSys getHorizCoordSysOfDataset(String resourceName) { - File file = new File(getClass().getResource(resourceName).toURI()) - - CoverageDatasetFactory.open(file.absolutePath).withCloseable { FeatureDatasetCoverage featDsetCov -> - // Assert that featDsetCov was opened without failure and it contains 1 CoverageCollection. - assert featDsetCov != null - assert featDsetCov.getCoverageCollections().size() == 1 - - // Return HorizCoordSys from single CoverageCollection. - CoverageCollection covColl = featDsetCov.getCoverageCollections().get(0) - return covColl.getHorizCoordSys() - } - } - - // Each List contains coords in "y x" order. - private def convertCoordsToPoints(boolean coordsAreLatLons, List> coords) { - def points = [] - coords.each { List coord -> - if (coordsAreLatLons) { - points << new LatLonPointNoNormalize(coord.get(0), coord.get(1)) - } else { - points << ProjectionPoint.create(coord.get(1), coord.get(0)) - } - } - return points - } -} diff --git a/cdm/core/src/test/groovy/ucar/nc2/ft2/coverage/writer/CFGridCoverageWriter2Spec.groovy b/cdm/core/src/test/groovy/ucar/nc2/ft2/coverage/writer/CFGridCoverageWriter2Spec.groovy deleted file mode 100644 index ddadd17002..0000000000 --- a/cdm/core/src/test/groovy/ucar/nc2/ft2/coverage/writer/CFGridCoverageWriter2Spec.groovy +++ /dev/null @@ -1,130 +0,0 @@ -package ucar.nc2.ft2.coverage.writer - -import org.junit.Assert -import org.junit.Rule -import org.junit.rules.TemporaryFolder -import spock.lang.Specification -import ucar.ma2.Array -import ucar.ma2.DataType -import ucar.ma2.MAMath -import ucar.nc2.NetcdfFile -import ucar.nc2.NetcdfFiles -import ucar.nc2.NetcdfFileWriter -import ucar.nc2.ft2.coverage.CoverageCollection -import ucar.nc2.ft2.coverage.CoverageDatasetFactory -import ucar.nc2.ft2.coverage.FeatureDatasetCoverage -import ucar.nc2.ft2.coverage.HorizCoordSysCrossSeamBoundarySpec - -/** - * Tests that CFGridCoverageWriter2 properly adds 2D lat/lon variables to output file when {@code addLatLon == true}. - * - * @author cwardgar - * @since 2018-03-17 - */ -class CFGridCoverageWriter2Spec extends Specification { - def "calc output file sizes with and without 2D lat/lon"() { - def numY = 4, numX = 4 // Lengths of the y and x axes in the dataset. - - setup: "Open test resource as FeatureDatasetCoverage" - File testFile = new File(HorizCoordSysCrossSeamBoundarySpec.getResource("crossSeamProjection.ncml").toURI()) - FeatureDatasetCoverage featDsetCov = CoverageDatasetFactory.open(testFile.absolutePath) - - and: "assert that featDsetCov was opened without failure and get its 1 CoverageCollection" - assert featDsetCov != null - assert featDsetCov.getCoverageCollections().size() == 1 - CoverageCollection covColl = featDsetCov.getCoverageCollections().get(0) - - when: "calculate expected size excluding 2D lat/lon vars" - long expectedSizeNoLatLon = - numY * numX * DataType.FLOAT.size + // Temperature_surface - numY * DataType.FLOAT.size + // y - numX * DataType.FLOAT.size + // x - 1 * DataType.INT.size // PolarStereographic_Projection - - and: "calculate actual size excluding 2D lat/lon vars" - long actualSizeNoLatLon = CFGridCoverageWriter2.getSizeOfOutput( - // No subset; don't addLatLon; calc file size but don't write file. - covColl, null, null, false).get() - - then: "expected equals actual" - expectedSizeNoLatLon == actualSizeNoLatLon - - when: "calculate expected size including 2D lat/lon vars" - long expectedSizeWithLatLon = expectedSizeNoLatLon + - numY * numX * DataType.DOUBLE.size + // lat - numY * numX * DataType.DOUBLE.size // lon - - and: "calculate actual size excluding 2D lat/lon vars" - long actualSizeWithLatLon = CFGridCoverageWriter2.getSizeOfOutput( - // No subset; do addLatLon; calc file size but don't write file. - covColl, null, null, true).get() - - then: "expected equals actual" - expectedSizeWithLatLon == actualSizeWithLatLon - - cleanup: "close all resources" - featDsetCov?.close() - } - - @Rule public TemporaryFolder tempFolder = new TemporaryFolder() - - def "CFGridCoverageWriter2 properly adds 2D lat/lon variables"() { - setup: "Open test resource as FeatureDatasetCoverage" - File testFile = new File(HorizCoordSysCrossSeamBoundarySpec.getResource("crossSeamProjection.ncml").toURI()) - FeatureDatasetCoverage featDsetCov = CoverageDatasetFactory.open(testFile.absolutePath) - - and: "assert that featDsetCov was opened without failure and get its 1 CoverageCollection" - assert featDsetCov != null - assert featDsetCov.getCoverageCollections().size() == 1 - CoverageCollection covColl = featDsetCov.getCoverageCollections().get(0) - - and: "setup NetcdfFileWriter" - File outputFile = tempFolder.newFile() - NetcdfFileWriter writer = NetcdfFileWriter.createNew(outputFile.absolutePath, false) - - and: "write output file" - // No subset; do addLatLon; write to outputFile. - CFGridCoverageWriter2.write(covColl, null, null, true, writer) - - and: "open output file" - NetcdfFile ncFile = NetcdfFiles.open(outputFile.absolutePath) - - and: "declare expected lats" - def expectedShape = [4, 4] as int[] - def expectedLatsList = [ // These come from crossSeamLatLon2D.ncml - 48.771275207078986, 56.257940168398875, 63.23559652027781, 68.69641273007204, - 51.52824383539942, 59.91283563136657, 68.26407960692367, 75.7452461192097, - 52.765818800755305, 61.615297053148296, 70.80822358575152, 80.19456756234185, - 52.28356434154232, 60.94659393490472, 69.78850194830888, 78.27572828144659 - ] - Array expectedLats = Array.factory(DataType.DOUBLE, expectedShape, expectedLatsList as double[]) - - and: "declare expected lons" - def expectedLonsList = [ // These come from crossSeamLatLon2D.ncml - -168.434948822922, -161.3099324740202, -150.0, -131.56505117707798, - -179.6237487511738, -174.86369657175186, -166.1892062570269, -147.27368900609372, - 167.86240522611175, 168.81407483429038, 170.71059313749964, 176.3099324740202, - 155.0737544933483, 151.8659776936037, 145.70995378081128, 130.00797980144134 - ] - Array expectedLons = Array.factory(DataType.DOUBLE, expectedShape, expectedLonsList as double[]) - - when: "read actual latitudes" - Array actualLats = ncFile.findVariable("lat").read() - - then: "expected nearly equals actual" - Assert.assertArrayEquals(expectedLats.shape, actualLats.shape) - MAMath.nearlyEquals(expectedLats, actualLats) - - when: "read actual longitudes" - Array actualLons = ncFile.findVariable("lon").read() - - then: "expected nearly equals actual" - Assert.assertArrayEquals(expectedLons.shape, actualLons.shape) - MAMath.nearlyEquals(expectedLons, actualLons) - - cleanup: "close all resources" - ncFile?.close() - writer?.close() - featDsetCov?.close() - } -} diff --git a/cdm/core/src/test/groovy/ucar/nc2/iosp/netcdf3/N3iospSpec.groovy b/cdm/core/src/test/groovy/ucar/nc2/iosp/netcdf3/N3iospSpec.groovy deleted file mode 100644 index 253af402e8..0000000000 --- a/cdm/core/src/test/groovy/ucar/nc2/iosp/netcdf3/N3iospSpec.groovy +++ /dev/null @@ -1,64 +0,0 @@ -package ucar.nc2.iosp.netcdf3 - -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import spock.lang.Specification - -/** - * @author cwardgar - * @since 2015/09/16 - */ -class N3iospSpec extends Specification { - private static final Logger logger = LoggerFactory.getLogger(N3iospSpec) - - def "test invalid NetCDF object names: null or empty"() { - expect: "null names are invalid" - !N3iosp.isValidNetcdfObjectName(null) - - when: - N3iosp.makeValidNetcdfObjectName(null) - then: - thrown(NullPointerException) - - expect: "empty names are invalid" - !N3iosp.isValidNetcdfObjectName("") - - when: - N3iosp.makeValidNetcdfObjectName("") - then: - IllegalArgumentException e = thrown() - e.message == "Illegal NetCDF object name: ''" - } - - def "test invalid NetCDF object names: first char"() { - expect: "names with first chars not in ([a-zA-Z0-9_]|{UTF8}) are invalid" - !N3iosp.isValidNetcdfObjectName(" blah") - N3iosp.makeValidNetcdfObjectName(" blah") == "blah" - - !N3iosp.isValidNetcdfObjectName("\n/blah") - N3iosp.makeValidNetcdfObjectName("\n/blah") == "blah" - - !N3iosp.isValidNetcdfObjectName("\u001F\u007F blah") // Unit separator and DEL - N3iosp.makeValidNetcdfObjectName("\u001F\u007F blah") == "blah" - } - - def "test invalid NetCDF object names: remaining chars"() { - expect: "names with remaining chars not in ([^\\x00-\\x1F\\x7F/]|{UTF8})* are invalid" - !N3iosp.isValidNetcdfObjectName("1\u000F2\u007F3/4") - N3iosp.makeValidNetcdfObjectName("1\u000F2\u007F3/4") == "1234" - - and: "names may not have trailing spaces" - !N3iosp.isValidNetcdfObjectName("foo ") - N3iosp.makeValidNetcdfObjectName("foo ") == "foo" - } - - def "test valid NetCDF object names"() { - expect: "valid names have syntax: ([a-zA-Z0-9_]|{UTF8})([^\\x00-\\x1F\\x7F/]|{UTF8})*" - N3iosp.isValidNetcdfObjectName("_KfS9Jn_s9__") - N3iosp.makeValidNetcdfObjectName("_KfS9Jn_s9__") == "_KfS9Jn_s9__" - - and: "unicode characters greater than 0x7F can appear anywhere" - N3iosp.isValidNetcdfObjectName("\u0123\u1234\u2345\u3456") - N3iosp.makeValidNetcdfObjectName("\u0123\u1234\u2345\u3456") == "\u0123\u1234\u2345\u3456" - } -} diff --git a/cdm/core/src/test/java/thredds/client/catalog/builder/TestCatalogBuilder.java b/cdm/core/src/test/java/thredds/client/catalog/builder/TestCatalogBuilder.java new file mode 100644 index 0000000000..291b14df58 --- /dev/null +++ b/cdm/core/src/test/java/thredds/client/catalog/builder/TestCatalogBuilder.java @@ -0,0 +1,76 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ +package thredds.client.catalog.builder; + +import java.lang.invoke.MethodHandles; +import java.net.URISyntaxException; +import org.junit.Assert; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.net.URI; +import ucar.unidata.util.test.category.NeedsExternalResource; + + +/** + * Unit tests for catalog builder port validation using thredds-test server + */ +@Category(NeedsExternalResource.class) +public class TestCatalogBuilder { + + public static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + CatalogBuilder catalogBuilder = new CatalogBuilder(); + String host = "https://thredds-test.unidata.ucar.edu"; + String catalog = "/thredds/catalog/grib/NCEP/GFS/Global_0p25deg_ana/latest.xml"; + + @Test + public void testValidationNoPort() throws URISyntaxException { + // no port specified; should be -1 + URI testURI = new URI(host + catalog); + Assert.assertEquals(Long.valueOf(-1), Long.valueOf(testURI.getPort())); + + // no port specified; -1 is OK for port validation + catalogBuilder.buildFromURI(testURI); + Assert.assertFalse(catalogBuilder.hasFatalError()); + } + + @Test + public void testValidationValidRootPort() throws URISyntaxException { + String port = "443"; + // valid root privileged port specified + URI testURI = new URI(host + ":" + port + catalog); + Assert.assertEquals(Long.valueOf(port), Long.valueOf(testURI.getPort())); + + // 443 is OK for port validation + catalogBuilder.buildFromURI(testURI); + Assert.assertFalse(catalogBuilder.hasFatalError()); + } + + @Test + public void testValidationInvalidRootPort() throws URISyntaxException { + String port = "22"; + // invalid root privileged port specified + URI testURI = new URI(host + ":" + port + catalog); + Assert.assertEquals(Long.valueOf(port), Long.valueOf(testURI.getPort())); + + // fails port validation + catalogBuilder.buildFromURI(testURI); + Assert.assertTrue(catalogBuilder.hasFatalError()); + } + + @Test + public void testValidationInvalidNonRootPort() throws URISyntaxException { + String port = "8081"; + // valid non-root privileged port specified + URI testURI = new URI(host + ":" + port + catalog); + Assert.assertEquals(Long.valueOf(port), Long.valueOf(testURI.getPort())); + + // non-root privileged port is OK for port validation, but will fail against Unidata TDS server + catalogBuilder.buildFromURI(testURI); + Assert.assertTrue(catalogBuilder.hasFatalError()); + } +} diff --git a/cdm/core/src/test/java/thredds/filesystem/TestMFileOS.java b/cdm/core/src/test/java/thredds/filesystem/TestMFileOS.java index 28aa08106c..d1a0af4d72 100644 --- a/cdm/core/src/test/java/thredds/filesystem/TestMFileOS.java +++ b/cdm/core/src/test/java/thredds/filesystem/TestMFileOS.java @@ -7,6 +7,7 @@ import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; +import java.nio.file.Paths; import java.util.Arrays; import java.util.List; import java.util.Random; @@ -90,6 +91,15 @@ public void shouldGetInputStream() throws IOException { assertThat(inputStream.read()).isNotEqualTo(-1); } } + + @Test + public void shouldGetChildMFile() { + final MFileOS mFile = new MFileOS(new File(tempFolder.getRoot(), "testFile")); + final MFileOS newMFile = mFile.getChild("newFile"); + assertThat(newMFile.getName()).isEqualTo("newFile"); + assertThat(newMFile.getParent().getPath()).isEqualTo(mFile.getPath()); + assertThat(newMFile.getPath()).isEqualTo(Paths.get(mFile.getPath(), "newFile").toString()); + } } private static File createTemporaryFile(int size) throws IOException { diff --git a/cdm/core/src/test/java/thredds/filesystem/TestMFileOS7.java b/cdm/core/src/test/java/thredds/filesystem/TestMFileOS7.java index bf5f29bed2..f2ec53a261 100644 --- a/cdm/core/src/test/java/thredds/filesystem/TestMFileOS7.java +++ b/cdm/core/src/test/java/thredds/filesystem/TestMFileOS7.java @@ -28,7 +28,7 @@ public class TestMFileOS7 { public static class TestMFileOS7Parameterized { @Parameterized.Parameters(name = "{0}") - static public List getTestParameters() { + public static List getTestParameters() { return Arrays.asList(0, 1, 60000, 100000); } diff --git a/cdm/core/src/test/java/timing/TimingCopy.java b/cdm/core/src/test/java/timing/TimingCopy.java index 875279e969..9fbe3a3a59 100644 --- a/cdm/core/src/test/java/timing/TimingCopy.java +++ b/cdm/core/src/test/java/timing/TimingCopy.java @@ -45,7 +45,7 @@ public class TimingCopy { static boolean debug = true; - static public void main(String args[]) throws IOException { + public static void main(String args[]) throws IOException { // 3/16/2015 // copyURL2null("http://thredds-dev.unidata.ucar.edu/thredds/fileServer/grib/NCEP/GFS/CONUS_80km/GFS_CONUS_80km_20141116_0000.grib1/files/GFS_CONUS_80km_20141116_0000.grib1", // 20000); @@ -195,7 +195,7 @@ static public void main(String args[]) throws IOException { // } - static public void copyFile(String filenameIn, String filenameOut, boolean buffer) throws IOException { + public static void copyFile(String filenameIn, String filenameOut, boolean buffer) throws IOException { long lenIn = new File(filenameIn).length(); if (debug) System.out.println("read " + filenameIn + " len = " + lenIn); @@ -225,7 +225,7 @@ static public void copyFile(String filenameIn, String filenameOut, boolean buffe System.out.println(" copy (" + name + ") took = " + took + " sec; rate = " + rate + "Mb/sec"); } - static public void copyFile2null(String filenameIn, int buffer) throws IOException { + public static void copyFile2null(String filenameIn, int buffer) throws IOException { long lenIn = new File(filenameIn).length(); if (debug) System.out.println("read " + filenameIn + " len = " + lenIn); @@ -242,7 +242,7 @@ static public void copyFile2null(String filenameIn, int buffer) throws IOExcepti System.out.println(" copy (" + filenameIn + ") took = " + took + " sec; rate = " + rate + "Mb/sec"); } - static public void copyFileNIO(String filenameIn, String filenameOut, long kbchunks) throws IOException { + public static void copyFileNIO(String filenameIn, String filenameOut, long kbchunks) throws IOException { FileInputStream in = new FileInputStream(filenameIn); FileChannel inChannel = in.getChannel(); @@ -276,13 +276,13 @@ static public void copyFileNIO(String filenameIn, String filenameOut, long kbchu System.out.println(" copyFileNIO(" + kbchunks + " kb chunk) took = " + took + " sec; rate = " + rate + "Mb/sec"); } - static public void testNIO(String filenameIn, String filenameOut, long kbchunks) throws IOException { + public static void testNIO(String filenameIn, String filenameOut, long kbchunks) throws IOException { ByteBuffer bb = ByteBuffer.allocate(8 * 1000); FloatBuffer fb = bb.asFloatBuffer(); } - static public void readFile(String filenameIn, int bufferSize) throws IOException { + public static void readFile(String filenameIn, int bufferSize) throws IOException { long lenIn = new File(filenameIn).length(); if (debug) System.out.println("read " + filenameIn + " len = " + lenIn); @@ -307,7 +307,7 @@ static public void readFile(String filenameIn, int bufferSize) throws IOExceptio } - static public void copyURL(String url, String filenameOut, int bufferSize) throws IOException { + public static void copyURL(String url, String filenameOut, int bufferSize) throws IOException { File outFile = new File(filenameOut); @@ -322,7 +322,7 @@ static public void copyURL(String url, String filenameOut, int bufferSize) throw + Format.d(rate, 3) + "Mb/sec ok=" + ok); } - static public void copyURL2null(String url, int bufferSize) throws IOException { + public static void copyURL2null(String url, int bufferSize) throws IOException { long start = System.currentTimeMillis(); long count = IO.copyUrlB(url, null, bufferSize); @@ -335,7 +335,7 @@ static public void copyURL2null(String url, int bufferSize) throws IOException { } - static public void readURL(String urlString, int bufferSize) throws IOException { + public static void readURL(String urlString, int bufferSize) throws IOException { System.out.println("start=" + new Date()); long start = System.currentTimeMillis(); diff --git a/cdm/core/src/test/java/ucar/ma2/TestArray.java b/cdm/core/src/test/java/ucar/ma2/TestArray.java new file mode 100644 index 0000000000..7f6044f5dc --- /dev/null +++ b/cdm/core/src/test/java/ucar/ma2/TestArray.java @@ -0,0 +1,174 @@ +package ucar.ma2; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; +import static org.junit.Assume.assumeTrue; + +import java.lang.invoke.MethodHandles; +import java.util.ArrayList; +import java.util.List; +import org.junit.Test; +import org.junit.experimental.runners.Enclosed; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.ma2.StructureMembers.MemberBuilder; + +@RunWith(Enclosed.class) +public class TestArray { + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @RunWith(Parameterized.class) + public static class TestArrayParameterized { + @Parameterized.Parameters(name = "{0}") + public static List getTestParameters() { + final int[] shape = new int[] {1}; + List testCases = new ArrayList<>(); + + testCases.add(new Object[] {DataType.BOOLEAN, shape, new boolean[] {false}, new boolean[] {false, false}}); + testCases.add(new Object[] {DataType.BYTE, shape, new byte[] {1}, new byte[] {1, 1}}); + testCases.add(new Object[] {DataType.CHAR, shape, new char[] {'a'}, new char[] {'a', 'a'}}); + testCases.add(new Object[] {DataType.SHORT, shape, new short[] {1}, new short[] {1, 1}}); + testCases.add(new Object[] {DataType.INT, shape, new int[] {1}, new int[] {1, 1}}); + testCases.add(new Object[] {DataType.LONG, shape, new long[] {1}, new long[] {1, 1}}); + testCases.add(new Object[] {DataType.FLOAT, shape, new float[] {1.1f}, new float[] {1.1f, 1.1f}}); + testCases.add(new Object[] {DataType.DOUBLE, shape, new double[] {1.1}, new double[] {1.1, 1.1}}); + testCases.add(new Object[] {DataType.SEQUENCE, shape, new Object[] {1}, new Object[] {1, 1}}); + testCases.add(new Object[] {DataType.STRING, shape, new Object[] {1}, new Object[] {1, 1}}); + testCases.add(new Object[] {DataType.STRUCTURE, shape, new Object[] {1}, new Object[] {1, 1}}); + testCases.add(new Object[] {DataType.ENUM1, shape, new byte[] {1}, new byte[] {1, 1}}); + testCases.add(new Object[] {DataType.ENUM2, shape, new short[] {1}, new short[] {1, 1}}); + testCases.add(new Object[] {DataType.ENUM4, shape, new int[] {1}, new int[] {1, 1}}); + testCases.add(new Object[] {DataType.OPAQUE, shape, new Object[] {1}, new Object[] {1, 1}}); + // Cannot be created through the factory + // testCases.add(new Object[] {DataType.OBJECT, shape, new Object[]{1}, new Object[]{1, 1}}); + testCases.add(new Object[] {DataType.UBYTE, shape, new byte[] {1}, new byte[] {1, 1}}); + testCases.add(new Object[] {DataType.USHORT, shape, new short[] {1}, new short[] {1, 1}}); + testCases.add(new Object[] {DataType.UINT, shape, new int[] {1}, new int[] {1, 1}}); + testCases.add(new Object[] {DataType.ULONG, shape, new long[] {1}, new long[] {1, 1}}); + + return testCases; + } + + private final DataType dataType; + private final int[] shape; + private final Object storage; + private final Object expectedCombinedArray; + + public TestArrayParameterized(DataType dataType, int[] shape, Object storage, Object expectedCombinedArray) { + this.dataType = dataType; + this.shape = shape; + this.storage = storage; + this.expectedCombinedArray = expectedCombinedArray; + } + + @Test + public void shouldCreateArray() { + final Array array = Array.factory(dataType, shape); + assertThat(array.getShape()).isEqualTo(shape); + } + + @Test + public void shouldCreateArrayWithStorage() { + final Array array = Array.factory(dataType, shape, storage); + assertThat(array.getShape()).isEqualTo(shape); + } + + @Test + public void shouldCreateArrayWithIndexAndStorage() { + final Array array = Array.factory(dataType, Index.factory(shape), storage); + assertThat(array.getShape()).isEqualTo(shape); + } + + @Test + public void shouldCombineTwoArrays() { + // tested separately below + assumeTrue(dataType != DataType.STRUCTURE); + + final int[] combinedShape = new int[] {2}; + + final Array array = Array.factory(dataType, shape, storage); + final List arrays = new ArrayList<>(); + arrays.add(array); + arrays.add(array); + + final Array combinedArray = Array.factoryCopy(dataType, combinedShape, arrays); + + assertThat(combinedArray.getShape()).isEqualTo(combinedShape); + assertThat(combinedArray.getStorage()).isEqualTo(expectedCombinedArray); + } + + @Test + public void shouldCombineTwoArrayStructures() { + // skip structures within structures + assumeTrue(dataType != DataType.STRUCTURE); + + final Array array = Array.factory(dataType, shape, storage); + final ArrayStructure arrayStructure = createArrayStructure("name", dataType, shape, array); + + final int[] combinedShape = new int[] {2}; + final List arrays = new ArrayList<>(); + arrays.add(arrayStructure); + arrays.add(arrayStructure); + + final ArrayStructure combinedArray = + (ArrayStructure) Array.factoryCopy(DataType.STRUCTURE, combinedShape, arrays); + + assertThat(combinedArray.getShape()).isEqualTo(combinedShape); + assertThat(combinedArray.getArray(0, arrayStructure.findMember("name"))).isEqualTo(array); + assertThat(combinedArray.getArray(1, arrayStructure.findMember("name"))).isEqualTo(array); + } + } + + public static class TestArrayNonParameterized { + + @Test + public void shouldCombineTwoArrayStructuresWithDifferentValues() { + final DataType dataType = DataType.INT; + final int[] shape = new int[] {1}; + final Array array = Array.factory(dataType, shape); + array.setInt(0, 5); + final Array array2 = Array.factory(dataType, shape); + array.setInt(0, 42); + + final ArrayStructure arrayStructure = createArrayStructure("name", dataType, shape, array); + final ArrayStructure arrayStructure2 = createArrayStructure("name", dataType, shape, array2); + + final int[] combinedShape = new int[] {2}; + final List arrays = new ArrayList<>(); + arrays.add(arrayStructure); + arrays.add(arrayStructure2); + + final ArrayStructure combinedArray = + (ArrayStructure) Array.factoryCopy(DataType.STRUCTURE, combinedShape, arrays); + + assertThat(combinedArray.getShape()).isEqualTo(combinedShape); + assertThat(combinedArray.getArray(0, arrayStructure.findMember("name"))).isEqualTo(array); + assertThat(combinedArray.getArray(1, arrayStructure.findMember("name"))).isEqualTo(array2); + } + + @Test + public void shouldRefuseToCombineArrayStructuresWithDifferentMembers() { + final DataType dataType = DataType.INT; + final int[] shape = new int[] {1}; + final Array array = Array.factory(dataType, shape); + + final int[] combinedShape = new int[] {2}; + final List arrays = new ArrayList<>(); + arrays.add(createArrayStructure("name", DataType.INT, new int[] {1}, array)); + arrays.add(createArrayStructure("name2", DataType.INT, new int[] {1}, array)); + + assertThrows(IllegalArgumentException.class, () -> Array.factoryCopy(DataType.STRUCTURE, combinedShape, arrays)); + } + } + + private static ArrayStructure createArrayStructure(String memberName, DataType dataType, int[] shape, Array array) { + final MemberBuilder memberBuilder = + StructureMembers.builder().addMember(memberName, "desc", "units", dataType, shape); + final StructureMembers members = StructureMembers.builder().addMember(memberBuilder).build(); + final StructureDataW structureData = new StructureDataW(members); + structureData.setMemberData(memberName, array); + return new ArrayStructureW(structureData); + } +} diff --git a/cdm/core/src/test/java/ucar/ma2/TestArrayOps.java b/cdm/core/src/test/java/ucar/ma2/TestArrayOps.java index a6974f87f0..66d34befdf 100644 --- a/cdm/core/src/test/java/ucar/ma2/TestArrayOps.java +++ b/cdm/core/src/test/java/ucar/ma2/TestArrayOps.java @@ -4,68 +4,62 @@ */ package ucar.ma2; -import junit.framework.TestCase; +import static com.google.common.truth.Truth.assertThat; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.lang.invoke.MethodHandles; /** Test ma2 get/put methods in the JUnit framework. */ -public class TestArrayOps extends TestCase { +public class TestArrayOps { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - - public TestArrayOps(String name) { - super(name); - } + private static final double TOLERANCE = 1.0E-10; int m = 4, n = 3, p = 2; - int[] sA = {m, n, p}; - ArrayDouble A = new ArrayDouble(sA); + int[] shapeArray = {m, n, p}; + ArrayDouble array = new ArrayDouble(shapeArray); int i, j, k; - Index ima = A.getIndex(); + Index index = array.getIndex(); + @Before public void setUp() { // write int count = 0; for (i = 0; i < m; i++) { - ima.set0(i); + index.set0(i); for (j = 0; j < n; j++) { - ima.set1(j); + index.set1(j); for (k = 0; k < p; k++) { - A.setDouble(ima.set2(k), (double) (count++)); + array.setDouble(index.set2(k), (double) (count++)); } } } } + @Test public void testReshape() { - System.out.println("test reshape"); - - Array Ar = A.reshape(new int[] {4, 6}); - IndexIterator ita = Ar.getIndexIterator(); - int count = 0; - while (ita.hasNext()) - assertEquals(ita.getDoubleNext(), (double) (count++), 1.0E-10); + checkArrayValues(array.reshape(new int[] {4, 6})); - try { - Ar = A.reshape(new int[] {12}); - assert (false); - } catch (IllegalArgumentException e) { - assert (true); - } + checkArrayValues(array.reshape(new int[] {24})); - Ar = A.reshape(new int[] {24}); - ita = Ar.getIndexIterator(); - count = 0; - while (ita.hasNext()) - assertEquals(ita.getDoubleNext(), (double) (count++), 1.0E-10); + checkArrayValues(array.reshape(new int[] {2, 2, 3, 2})); + } - Ar = A.reshape(new int[] {2, 2, 3, 2}); - ita = Ar.getIndexIterator(); - count = 0; - while (ita.hasNext()) - assertEquals(ita.getDoubleNext(), (double) (count++), 1.0E-10); + @Test + public void shouldThrowWhenSizeIsIncorrect() { + Assert.assertThrows(IllegalArgumentException.class, () -> array.reshape(new int[] {12})); } + private static void checkArrayValues(Array array) { + IndexIterator indexIterator = array.getIndexIterator(); + int count = 0; + while (indexIterator.hasNext()) { + assertThat(indexIterator.getDoubleNext()).isWithin(TOLERANCE).of(count++); + } + } } diff --git a/cdm/core/src/test/java/ucar/ma2/TestArrayStructureBB.java b/cdm/core/src/test/java/ucar/ma2/TestArrayStructureBB.java deleted file mode 100644 index ed13cd3b5b..0000000000 --- a/cdm/core/src/test/java/ucar/ma2/TestArrayStructureBB.java +++ /dev/null @@ -1,24 +0,0 @@ -package ucar.ma2; - -import java.nio.ByteBuffer; -import org.junit.Test; - -public class TestArrayStructureBB { - - @Test - public void testStuff() { - byte[] ba = new byte[20]; - for (int i = 0; i < ba.length; ++i) - ba[i] = (byte) i; - - ByteBuffer bbw = ByteBuffer.wrap(ba, 5, 15); - bbw.get(0); - System.out.println(" bbw(0)=" + bbw.get(0) + " i would expect = 5"); - - bbw.position(5); - System.out.println(" bbw(0)=" + bbw.get(0) + " i would expect = 4"); - } - - - -} diff --git a/cdm/core/src/test/java/ucar/ma2/TestReadArrayStructure.java b/cdm/core/src/test/java/ucar/ma2/TestReadArrayStructure.java new file mode 100644 index 0000000000..351bca36ea --- /dev/null +++ b/cdm/core/src/test/java/ucar/ma2/TestReadArrayStructure.java @@ -0,0 +1,128 @@ +package ucar.ma2; + +import static com.google.common.truth.Truth.assertThat; + +import java.io.IOException; +import java.lang.invoke.MethodHandles; +import org.junit.Ignore; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.nc2.NetcdfFile; +import ucar.nc2.Structure; +import ucar.nc2.Variable; +import ucar.nc2.dataset.NetcdfDatasets; + +public class TestReadArrayStructure { + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + private static final String testDir = "../../dap4/src/test/data/resources/nctestfiles/"; + + @Test + public void shouldReadScalarStructure() throws IOException { + final String filename = testDir + "test_struct1.nc"; + + try (NetcdfFile ncfile = NetcdfDatasets.openFile(filename, null)) { + final Structure structure = (Structure) ncfile.findVariable("s"); + assertThat((Object) structure).isNotNull(); + + assertThat(structure.getVariables().size()).isEqualTo(2); + final Variable x = structure.getVariables().get(0); + assertThat(x.getShortName()).isEqualTo("x"); + final Variable y = structure.getVariables().get(1); + assertThat(y.getShortName()).isEqualTo("y"); + + final Array xValues = x.read(); + assertThat(xValues.getSize()).isEqualTo(1); + assertThat(xValues.getInt(0)).isEqualTo(1); + + final Array yValues = y.read(); + assertThat(yValues.getSize()).isEqualTo(1); + assertThat(yValues.getInt(0)).isEqualTo(-2); + } + } + + @Test + public void shouldGetArrayForVlenMember() throws IOException { + final String filename = testDir + "test_vlen3.nc"; + final int[] expectedValues = new int[] {1, 3, 5, 7}; + + try (NetcdfFile ncfile = NetcdfDatasets.openFile(filename, null)) { + final Structure structure = (Structure) ncfile.findVariable("v1"); + assertThat((Object) structure).isNotNull(); + + final Array data = structure.read(); + assertThat(data).isInstanceOf(ArrayStructure.class); + final ArrayStructure arrayStructure = (ArrayStructure) data; + final Array values = arrayStructure.getStructureData(0).getArray("f1"); + checkValues(values, expectedValues); + } + } + + @Test + public void shouldGetArrayForVlenMember2() throws IOException { + final String filename = testDir + "test_vlen4.nc"; + + try (NetcdfFile ncfile = NetcdfDatasets.openFile(filename, null)) { + final Structure structure = (Structure) ncfile.findVariable("v1"); + assertThat((Object) structure).isNotNull(); + + final Array data = structure.read(); + assertThat(data).isInstanceOf(ArrayStructure.class); + final ArrayStructure arrayStructure = (ArrayStructure) data; + final Array values = arrayStructure.getStructureData(0).getArray("f1"); + assertThat(values.getSize()).isEqualTo(2); + assertThat(values.getObject(0)).isInstanceOf(ArrayInt.D1.class); + assertThat(values.getObject(1)).isInstanceOf(ArrayInt.D1.class); + } + } + + @Ignore("Fails because of ArrayStructure::extractMemberArray not handling vlens correctly") + @Test + public void shouldExtractMemberArrayForVlenMember() throws IOException { + final String filename = testDir + "test_vlen3.nc"; + final int[] expectedValues = new int[] {1, 3, 5, 7}; + + try (NetcdfFile ncfile = NetcdfDatasets.openFile(filename, null)) { + final Structure structure = (Structure) ncfile.findVariable("v1"); + assertThat((Object) structure).isNotNull(); + + assertThat(structure.getVariables().size()).isEqualTo(1); + final Variable f1 = structure.getVariables().get(0); + assertThat(f1.getShortName()).isEqualTo("f1"); + assertThat(f1.isVariableLength()).isTrue(); + final Array values = f1.read(); + logger.debug("values: " + values.toString()); + checkValues(values, expectedValues); + } + } + + @Ignore("Fails because of ArrayStructure::extractMemberArray not handling vlens correctly") + @Test + public void shouldExtractMemberArrayForVlenMember2() throws IOException { + final String filename = testDir + "test_vlen4.nc"; + + try (NetcdfFile ncfile = NetcdfDatasets.openFile(filename, null)) { + final Structure structure = (Structure) ncfile.findVariable("v1"); + assertThat((Object) structure).isNotNull(); + + assertThat(structure.getVariables().size()).isEqualTo(1); + final Variable f1 = structure.getVariables().get(0); + assertThat(f1.getShortName()).isEqualTo("f1"); + assertThat(f1.isVariableLength()).isTrue(); + final Array values = f1.read(); + logger.debug("values: " + values.toString()); + assertThat(values.getSize()).isEqualTo(2); + assertThat(values.getObject(0)).isInstanceOf(ArrayInt.D1.class); + assertThat(values.getObject(1)).isInstanceOf(ArrayInt.D1.class); + } + } + + private static void checkValues(Array values, int[] expectedValues) { + assertThat(values.getSize()).isEqualTo(expectedValues.length); + final IndexIterator iter = values.getIndexIterator(); + int i = 0; + while (iter.hasNext()) { + assertThat(iter.next()).isEqualTo(expectedValues[i++]); + } + } +} diff --git a/cdm/core/src/test/java/ucar/ma2/TestStructureArrayBB.java b/cdm/core/src/test/java/ucar/ma2/TestStructureArrayBB.java index 9296ac1f35..41520b4974 100644 --- a/cdm/core/src/test/java/ucar/ma2/TestStructureArrayBB.java +++ b/cdm/core/src/test/java/ucar/ma2/TestStructureArrayBB.java @@ -4,12 +4,12 @@ */ package ucar.ma2; -import org.junit.Assert; +import static com.google.common.truth.Truth.assertThat; + import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ucar.unidata.util.test.UtilsTestStructureArray; -import java.io.IOException; import java.lang.invoke.MethodHandles; import java.nio.ByteBuffer; import java.nio.IntBuffer; @@ -46,7 +46,7 @@ public class TestStructureArrayBB { * 5 ints */ @Test - public void testBB() throws IOException, InvalidRangeException { + public void testBB() { StructureMembers members = new StructureMembers("s"); members.addMember("f1", "desc", "units", DataType.INT, new int[] {1}); members.addMember("f2", "desc", "units", DataType.INT, new int[] {9}); // 10 @@ -70,45 +70,39 @@ public void testBB() throws IOException, InvalidRangeException { int[] offs = {0, 4, 40}; for (int i = 0; i < offs.length; ++i) { StructureMembers.Member m = members.getMember(i); - Assert.assertEquals("Bad offset for " + m.getName(), offs[i], m.getDataParam()); + assertThat(m.getDataParam()).isEqualTo(offs[i]); } int[] offs2 = {0, 4, 12, 60}; for (int i = 0; i < offs2.length; ++i) { StructureMembers.Member m = nested1_members.getMember(i); - Assert.assertEquals("Bad offset for " + m.getName(), offs2[i], m.getDataParam()); + assertThat(m.getDataParam()).isEqualTo(offs2[i]); } - // Formatter f = new Formatter(System.out); - // Indent indent = new Indent(2); - // ArrayStructureBB.showOffsets(members, indent, f); - ArrayStructureBB bb = new ArrayStructureBB(members, new int[] {4}); fillStructureArray(bb); - // System.out.println( NCdumpW.toString(bb, "test arrayBB", null)); - new UtilsTestStructureArray().testArrayStructure(bb); int sreclen = 1010; int n1reclen = 100; int n2reclen = 5; - // get f2 out of the 3nd "s" + // get f2 out of the 3rd "s" int srecno = 2; StructureMembers.Member f2 = bb.getStructureMembers().findMember("f2"); int[] f2data = bb.getJavaArrayInt(srecno, f2); - assert f2data[0] == srecno * sreclen + 1 : f2data[0]; - assert f2data[1] == srecno * sreclen + 2 : f2data[0]; - assert f2data[2] == srecno * sreclen + 3 : f2data[0]; + assertThat(f2data[0]).isEqualTo(srecno * sreclen + 1); + assertThat(f2data[1]).isEqualTo(srecno * sreclen + 2); + assertThat(f2data[2]).isEqualTo(srecno * sreclen + 3); - // get nested1 out of the 3nd "s" + // get nested1 out of the 3rd "s" ArrayStructure nested1Data = bb.getArrayStructure(srecno, nested1); // get g1 out of the 7th "nested1" int n1recno = 6; StructureMembers.Member g1 = nested1Data.getStructureMembers().findMember("g1"); int g1data = nested1Data.getScalarInt(n1recno, g1); - assert g1data == srecno * sreclen + n1recno * n1reclen + 10 : g1data; + assertThat(g1data).isEqualTo(srecno * sreclen + n1recno * n1reclen + 10); // get nested2 out of the 7th "nested1" ArrayStructure nested2Data = nested1Data.getArrayStructure(n1recno, nested2); @@ -116,7 +110,7 @@ public void testBB() throws IOException, InvalidRangeException { int n2recno = 3; StructureMembers.Member h1 = nested2Data.getStructureMembers().findMember("h1"); int val = nested2Data.getScalarInt(n2recno, h1); - assert (val == srecno * sreclen + n1recno * n1reclen + n2recno * n2reclen + 15 + 10) : val; + assertThat(val).isEqualTo(srecno * sreclen + n1recno * n1reclen + n2recno * n2reclen + 15 + 10); } private void fillStructureArray(ArrayStructureBB sa) { @@ -141,7 +135,7 @@ private void fill(Array a) { } - public ArrayStructure makeNested1(StructureMembers.Member parent) throws IOException, InvalidRangeException { + public ArrayStructure makeNested1(StructureMembers.Member parent) { StructureMembers members = new StructureMembers(parent.getName()); parent.setStructureMembers(members); @@ -167,7 +161,7 @@ public ArrayStructure makeNested1(StructureMembers.Member parent) throws IOExcep return new ArrayStructureBB(members, new int[] {4, 9}); } - public ArrayStructure makeNested2(StructureMembers.Member parent) throws IOException, InvalidRangeException { + public ArrayStructure makeNested2(StructureMembers.Member parent) { StructureMembers members = new StructureMembers(parent.getName()); parent.setStructureMembers(members); @@ -183,157 +177,5 @@ public ArrayStructure makeNested2(StructureMembers.Member parent) throws IOExcep return new ArrayStructureBB(members, new int[] {4, 9, 7}); } - - /* - * static public void testArrayStructure(ArrayStructure as) { - * - * StructureMembers sms = as.getStructureMembers(); - * List members = sms.getMembers(); - * String name = sms.getName(); - * - * int n = (int) as.getSize(); - * for (int recno = 0; recno < n; recno++) { - * Object o = as.getObject(recno); - * assert (o instanceof StructureData); - * StructureData sdata = as.getStructureData(recno); - * assert (o == sdata); - * - * for (int i = 0; i < members.size(); i++) { - * StructureMembers.Member m = (StructureMembers.Member) members.get(i); - * - * Array sdataArray = sdata.getArray(m); - * assert (sdataArray.getElementType() == m.getDataType().getPrimitiveClassType()); - * - * Array sdataArray2 = sdata.getArray(m.getName()); - * ucar.ma2.TestMA2.testEquals(sdataArray, sdataArray2); - * - * Array a = as.getArray(recno, m); - * assert (a.getElementType() == m.getDataType().getPrimitiveClassType()); - * ucar.ma2.TestMA2.testEquals(sdataArray, a); - * - * testGetArrayByType(as, recno, m, a); - * } - * testStructureData(sdata); - * } - * } - * - * static public void printArrayStructure(ArrayStructure as) throws IOException { - * - * StructureMembers sms = as.getStructureMembers(); - * List members = sms.getMembers(); - * String name = sms.getName(); - * - * int n = (int) as.getSize(); - * for (int recno = 0; recno < n; recno++) { - * System.out.println("\n***Dump " + name + " record=" + recno); - * for (int i = 0; i < members.size(); i++) { - * StructureMembers.Member m = (StructureMembers.Member) members.get(i); - * - * Array a = as.getArray(recno, m); - * if (a instanceof ArrayStructure) - * printArrayStructure((ArrayStructure) a); - * else - * NCdump.printArray(a, m.getName(), System.out, null); - * } - * } - * - * System.out.println(NCdumpW.printArray(as, "", null)); - * } - * - * static private void testGetArrayByType(ArrayStructure as, int recno, StructureMembers.Member m, Array a) { - * DataType dtype = m.getDataType(); - * Object data = null; - * if (dtype == DataType.DOUBLE) { - * assert a.getElementType() == double.class; - * data = as.getJavaArrayDouble(recno, m); - * } else if (dtype == DataType.FLOAT) { - * assert a.getElementType() == float.class; - * data = as.getJavaArrayFloat(recno, m); - * } else if (dtype == DataType.LONG) { - * assert a.getElementType() == long.class; - * data = as.getJavaArrayLong(recno, m); - * } else if (dtype == DataType.INT) { - * assert a.getElementType() == int.class; - * data = as.getJavaArrayInt(recno, m); - * } else if (dtype == DataType.SHORT) { - * assert a.getElementType() == short.class; - * data = as.getJavaArrayShort(recno, m); - * } else if (dtype == DataType.BYTE) { - * assert a.getElementType() == byte.class; - * data = as.getJavaArrayByte(recno, m); - * } else if (dtype == DataType.CHAR) { - * assert a.getElementType() == char.class; - * data = as.getJavaArrayChar(recno, m); - * } else if (dtype == DataType.STRING) { - * assert a.getElementType() == String.class; - * data = as.getJavaArrayString(recno, m); - * } else if (dtype == DataType.STRUCTURE) { - * assert a.getElementType() == StructureData.class; - * ArrayStructure nested = as.getArrayStructure(recno, m); - * testArrayStructure(nested); - * } - * - * if (data != null) - * ucar.ma2.TestMA2.testJarrayEquals(data, a.getStorage(), m.getSize()); - * } - * - * static private void testStructureData(StructureData sdata) { - * - * StructureMembers sms = sdata.getStructureMembers(); - * List members = sms.getMembers(); - * - * for (int i = 0; i < members.size(); i++) { - * StructureMembers.Member m = (StructureMembers.Member) members.get(i); - * - * Array sdataArray = sdata.getArray(m); - * assert (sdataArray.getElementType() == m.getDataType().getPrimitiveClassType()); - * - * Array sdataArray2 = sdata.getArray(m.getName()); - * ucar.ma2.TestMA2.testEquals(sdataArray, sdataArray2); - * - * //NCdump.printArray(sdataArray, m.getName(), System.out, null); - * - * testGetArrayByType(sdata, m, sdataArray); - * } - * } - * - * static private void testGetArrayByType(StructureData sdata, StructureMembers.Member m, Array a) { - * DataType dtype = m.getDataType(); - * Object data = null; - * if (dtype == DataType.DOUBLE) { - * assert a.getElementType() == double.class; - * data = sdata.getJavaArrayDouble(m); - * } else if (dtype == DataType.FLOAT) { - * assert a.getElementType() == float.class; - * data = sdata.getJavaArrayFloat(m); - * } else if (dtype == DataType.LONG) { - * assert a.getElementType() == long.class; - * data = sdata.getJavaArrayLong(m); - * } else if (dtype == DataType.INT) { - * assert a.getElementType() == int.class; - * data = sdata.getJavaArrayInt(m); - * } else if (dtype == DataType.SHORT) { - * assert a.getElementType() == short.class; - * data = sdata.getJavaArrayShort(m); - * } else if (dtype == DataType.BYTE) { - * assert a.getElementType() == byte.class; - * data = sdata.getJavaArrayByte(m); - * } else if (dtype == DataType.CHAR) { - * assert a.getElementType() == char.class; - * data = sdata.getJavaArrayChar(m); - * } else if (dtype == DataType.STRING) { - * assert a.getElementType() == String.class; - * data = sdata.getJavaArrayString(m); - * } else if (dtype == DataType.STRUCTURE) { - * assert a.getElementType() == StructureData.class; - * ArrayStructure nested = sdata.getArrayStructure(m); - * testArrayStructure(nested); - * } - * - * if (data != null) - * ucar.ma2.TestMA2.testJarrayEquals(data, a.getStorage(), m.getSize()); - * } - */ - } diff --git a/cdm/core/src/test/java/ucar/ma2/TestStructureArrayMA.java b/cdm/core/src/test/java/ucar/ma2/TestStructureArrayMA.java index 282c9ea81d..32d316607d 100644 --- a/cdm/core/src/test/java/ucar/ma2/TestStructureArrayMA.java +++ b/cdm/core/src/test/java/ucar/ma2/TestStructureArrayMA.java @@ -4,11 +4,12 @@ */ package ucar.ma2; +import static com.google.common.truth.Truth.assertThat; + import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ucar.unidata.util.test.UtilsTestStructureArray; -import java.io.IOException; import java.lang.invoke.MethodHandles; public class TestStructureArrayMA { @@ -51,7 +52,7 @@ public class TestStructureArrayMA { * */ @Test - public void testMA() throws IOException, InvalidRangeException { + public void testMA() { StructureMembers members = new StructureMembers("s"); StructureMembers.Member m = members.addMember("f1", "desc", "units", DataType.FLOAT, new int[] {1}); @@ -69,24 +70,23 @@ public void testMA() throws IOException, InvalidRangeException { m.setDataArray(data); ArrayStructureMA as = new ArrayStructureMA(members, new int[] {4}); - // System.out.println( NCdumpW.printArray(as, "", null)); new UtilsTestStructureArray().testArrayStructure(as); - // get f2 out of the 3nd "s" + // get f2 out of the 3rd "s" StructureMembers.Member f2 = as.getStructureMembers().findMember("f2"); short[] f2data = as.getJavaArrayShort(2, f2); - assert f2data[0] == 20; - assert f2data[1] == 21; - assert f2data[2] == 22; + assertThat(f2data[0]).isEqualTo(20); + assertThat(f2data[1]).isEqualTo(21); + assertThat(f2data[2]).isEqualTo(22); - // get nested1 out of the 3nd "s" + // get nested1 out of the 3rd "s" StructureMembers.Member nested1 = as.getStructureMembers().findMember("nested1"); ArrayStructure nested1Data = as.getArrayStructure(2, nested1); // get g1 out of the 7th "nested1" StructureMembers.Member g1 = nested1Data.getStructureMembers().findMember("g1"); int g1data = nested1Data.getScalarInt(6, g1); - assert g1data == 26; + assertThat(g1data).isEqualTo(26); // get nested2 out of the 7th "nested1" StructureMembers.Member nested2 = nested1Data.getStructureMembers().findMember("nested2"); @@ -95,11 +95,11 @@ public void testMA() throws IOException, InvalidRangeException { // get h1 out of the 4th "nested2" StructureMembers.Member h1 = nested2Data.getStructureMembers().findMember("h1"); int val = nested2Data.getScalarInt(4, h1); - assert (val == 264); + assertThat(val).isEqualTo(264); } - private ArrayStructure makeNested1(StructureMembers.Member parent) throws IOException, InvalidRangeException { + private ArrayStructure makeNested1(StructureMembers.Member parent) { StructureMembers members = new StructureMembers(parent.getName()); parent.setStructureMembers(members); @@ -125,7 +125,7 @@ private ArrayStructure makeNested1(StructureMembers.Member parent) throws IOExce return new ArrayStructureMA(members, new int[] {4, 9}); } - private ArrayStructure makeNested2(StructureMembers.Member parent) throws IOException, InvalidRangeException { + private ArrayStructure makeNested2(StructureMembers.Member parent) { StructureMembers members = new StructureMembers(parent.getName()); parent.setStructureMembers(members); diff --git a/cdm/core/src/test/java/ucar/ma2/TestStructureArrayW.java b/cdm/core/src/test/java/ucar/ma2/TestStructureArrayW.java index 3e128209c6..832f8097e3 100644 --- a/cdm/core/src/test/java/ucar/ma2/TestStructureArrayW.java +++ b/cdm/core/src/test/java/ucar/ma2/TestStructureArrayW.java @@ -4,20 +4,17 @@ */ package ucar.ma2; -import junit.framework.TestCase; +import static com.google.common.truth.Truth.assertThat; + +import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ucar.unidata.util.test.UtilsTestStructureArray; -import java.io.IOException; import java.lang.invoke.MethodHandles; -public class TestStructureArrayW extends TestCase { +public class TestStructureArrayW { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - public TestStructureArrayW(String name) { - super(name); - } - /* *
            * Structure {
        @@ -54,7 +51,8 @@ public TestStructureArrayW(String name) {
            * 
            * 
            */
        -  public void testW() throws IOException, InvalidRangeException {
        +  @Test
        +  public void testW() {
             StructureMembers members = new StructureMembers("s");
         
             StructureMembers.Member f1 = members.addMember("f1", "desc", "units", DataType.FLOAT, new int[] {1});
        @@ -82,27 +80,26 @@ public void testW() throws IOException, InvalidRangeException {
             }
         
             ArrayStructureW as = new ArrayStructureW(members, new int[] {4}, sdata);
        -    // System.out.println( NCdumpW.printArray(as, "", null));
             new UtilsTestStructureArray().testArrayStructure(as);
         
             // get f2 out of the 2nd "s"
             short[] f2data = as.getJavaArrayShort(1, f2);
        -    assert f2data[0] == 2;
        -    assert f2data[1] == 3;
        -    assert f2data[2] == 4;
        +    assertThat(f2data[0]).isEqualTo(2);
        +    assertThat(f2data[1]).isEqualTo(3);
        +    assertThat(f2data[2]).isEqualTo(4);
         
        -    // get nested1 out of the 3nd "s"
        +    // get nested1 out of the 3rd "s"
             ArrayStructure nested1Data = as.getArrayStructure(2, nested1);
         
             // get g1 out of the 4th "nested1"
             StructureMembers.Member g1 = nested1Data.getStructureMembers().findMember("g1");
             int g1data = nested1Data.getScalarInt(3, g1);
        -    assert g1data == 66;
        +    assertThat(g1data).isEqualTo(66);
         
             // get g3 out of the 4th "nested1"
             StructureMembers.Member g3 = nested1Data.getStructureMembers().findMember("g3");
             double[] g3data = nested1Data.getJavaArrayDouble(3, g3);
        -    assert g3data[0] == 73326.0;
        +    assertThat(g3data[0]).isEqualTo(73326.0);
         
             // get nested2 out of the 7th "nested1"
             StructureMembers.Member nested2 = nested1Data.getStructureMembers().findMember("nested2");
        @@ -111,17 +108,16 @@ public void testW() throws IOException, InvalidRangeException {
             // get h1 out of the 5th "nested2"
             StructureMembers.Member h1 = nested2Data.getStructureMembers().findMember("h1");
             int val = nested2Data.getScalarInt(4, h1);
        -    assert (val == 1218) : val;
        +    assertThat(val).isEqualTo(1218);
         
             // get h2 out of the 5th "nested2"
             StructureMembers.Member h2 = nested2Data.getStructureMembers().findMember("h2");
             double[] h2data = nested2Data.getJavaArrayDouble(4, h2);
        -    assert (h2data[0] == 12018);
        -    assert (h2data[1] == 12019);
        +    assertThat(h2data[0]).isEqualTo(12018);
        +    assertThat(h2data[1]).isEqualTo(12019);
           }
         
        -  public Array makeNested1(StructureMembers.Member nested1, int size1, int size2)
        -      throws IOException, InvalidRangeException {
        +  public Array makeNested1(StructureMembers.Member nested1, int size1, int size2) {
             StructureMembers members = new StructureMembers(nested1.getName());
             nested1.setStructureMembers(members);
         
        @@ -154,8 +150,7 @@ public Array makeNested1(StructureMembers.Member nested1, int size1, int size2)
             return new ArrayStructureW(members, new int[] {size1}, sdata);
           }
         
        -  public Array makeNested2(StructureMembers.Member nested, int who, int size)
        -      throws IOException, InvalidRangeException {
        +  public Array makeNested2(StructureMembers.Member nested, int who, int size) {
             StructureMembers members = new StructureMembers(nested.getName());
             nested.setStructureMembers(members);
         
        @@ -190,157 +185,5 @@ private void fill(Array a, int start) {
               ii.setIntCurrent(value);
             }
           }
        -
        -  /*
        -   * static public void testArrayStructure(ArrayStructure as) {
        -   * 
        -   * StructureMembers sms = as.getStructureMembers();
        -   * List members = sms.getMembers();
        -   * String name = sms.getName();
        -   * 
        -   * int n = (int) as.getSize();
        -   * for (int recno = 0; recno < n; recno++) {
        -   * Object o = as.getObject(recno);
        -   * assert (o instanceof StructureData);
        -   * StructureData sdata = as.getStructureData(recno);
        -   * assert (o == sdata);
        -   * 
        -   * for (int i = 0; i < members.size(); i++) {
        -   * StructureMembers.Member m = (StructureMembers.Member) members.get(i);
        -   * 
        -   * Array sdataArray = sdata.getArray(m);
        -   * assert (sdataArray.getElementType() == m.getDataType().getPrimitiveClassType());
        -   * 
        -   * Array sdataArray2 = sdata.getArray(m.getName());
        -   * ucar.ma2.TestMA2.testEquals(sdataArray, sdataArray2);
        -   * 
        -   * Array a = as.getArray(recno, m);
        -   * assert (a.getElementType() == m.getDataType().getPrimitiveClassType());
        -   * ucar.ma2.TestMA2.testEquals(sdataArray, a);
        -   * 
        -   * testGetArrayByType(as, recno, m, a);
        -   * }
        -   * testStructureData(sdata);
        -   * }
        -   * }
        -   * 
        -   * static public void printArrayStructure(ArrayStructure as) throws IOException {
        -   * 
        -   * StructureMembers sms = as.getStructureMembers();
        -   * List members = sms.getMembers();
        -   * String name = sms.getName();
        -   * 
        -   * int n = (int) as.getSize();
        -   * for (int recno = 0; recno < n; recno++) {
        -   * System.out.println("\n***Dump " + name + " record=" + recno);
        -   * for (int i = 0; i < members.size(); i++) {
        -   * StructureMembers.Member m = (StructureMembers.Member) members.get(i);
        -   * 
        -   * Array a = as.getArray(recno, m);
        -   * if (a instanceof ArrayStructure)
        -   * printArrayStructure((ArrayStructure) a);
        -   * else
        -   * NCdump.printArray(a, m.getName(), System.out, null);
        -   * }
        -   * }
        -   * 
        -   * System.out.println(NCdumpW.printArray(as, "", null));
        -   * }
        -   * 
        -   * static private void testGetArrayByType(ArrayStructure as, int recno, StructureMembers.Member m, Array a) {
        -   * DataType dtype = m.getDataType();
        -   * Object data = null;
        -   * if (dtype == DataType.DOUBLE) {
        -   * assert a.getElementType() == double.class;
        -   * data = as.getJavaArrayDouble(recno, m);
        -   * } else if (dtype == DataType.FLOAT) {
        -   * assert a.getElementType() == float.class;
        -   * data = as.getJavaArrayFloat(recno, m);
        -   * } else if (dtype == DataType.LONG) {
        -   * assert a.getElementType() == long.class;
        -   * data = as.getJavaArrayLong(recno, m);
        -   * } else if (dtype == DataType.INT) {
        -   * assert a.getElementType() == int.class;
        -   * data = as.getJavaArrayInt(recno, m);
        -   * } else if (dtype == DataType.SHORT) {
        -   * assert a.getElementType() == short.class;
        -   * data = as.getJavaArrayShort(recno, m);
        -   * } else if (dtype == DataType.BYTE) {
        -   * assert a.getElementType() == byte.class;
        -   * data = as.getJavaArrayByte(recno, m);
        -   * } else if (dtype == DataType.CHAR) {
        -   * assert a.getElementType() == char.class;
        -   * data = as.getJavaArrayChar(recno, m);
        -   * } else if (dtype == DataType.STRING) {
        -   * assert a.getElementType() == String.class;
        -   * data = as.getJavaArrayString(recno, m);
        -   * } else if (dtype == DataType.STRUCTURE) {
        -   * assert a.getElementType() == StructureData.class;
        -   * ArrayStructure nested = as.getArrayStructure(recno, m);
        -   * testArrayStructure(nested);
        -   * }
        -   * 
        -   * if (data != null)
        -   * ucar.ma2.TestMA2.testJarrayEquals(data, a.getStorage(), m.getSize());
        -   * }
        -   * 
        -   * static private void testStructureData(StructureData sdata) {
        -   * 
        -   * StructureMembers sms = sdata.getStructureMembers();
        -   * List members = sms.getMembers();
        -   * 
        -   * for (int i = 0; i < members.size(); i++) {
        -   * StructureMembers.Member m = (StructureMembers.Member) members.get(i);
        -   * 
        -   * Array sdataArray = sdata.getArray(m);
        -   * assert (sdataArray.getElementType() == m.getDataType().getPrimitiveClassType());
        -   * 
        -   * Array sdataArray2 = sdata.getArray(m.getName());
        -   * ucar.ma2.TestMA2.testEquals(sdataArray, sdataArray2);
        -   * 
        -   * //NCdump.printArray(sdataArray, m.getName(), System.out, null);
        -   * 
        -   * testGetArrayByType(sdata, m, sdataArray);
        -   * }
        -   * }
        -   * 
        -   * static private void testGetArrayByType(StructureData sdata, StructureMembers.Member m, Array a) {
        -   * DataType dtype = m.getDataType();
        -   * Object data = null;
        -   * if (dtype == DataType.DOUBLE) {
        -   * assert a.getElementType() == double.class;
        -   * data = sdata.getJavaArrayDouble(m);
        -   * } else if (dtype == DataType.FLOAT) {
        -   * assert a.getElementType() == float.class;
        -   * data = sdata.getJavaArrayFloat(m);
        -   * } else if (dtype == DataType.LONG) {
        -   * assert a.getElementType() == long.class;
        -   * data = sdata.getJavaArrayLong(m);
        -   * } else if (dtype == DataType.INT) {
        -   * assert a.getElementType() == int.class;
        -   * data = sdata.getJavaArrayInt(m);
        -   * } else if (dtype == DataType.SHORT) {
        -   * assert a.getElementType() == short.class;
        -   * data = sdata.getJavaArrayShort(m);
        -   * } else if (dtype == DataType.BYTE) {
        -   * assert a.getElementType() == byte.class;
        -   * data = sdata.getJavaArrayByte(m);
        -   * } else if (dtype == DataType.CHAR) {
        -   * assert a.getElementType() == char.class;
        -   * data = sdata.getJavaArrayChar(m);
        -   * } else if (dtype == DataType.STRING) {
        -   * assert a.getElementType() == String.class;
        -   * data = sdata.getJavaArrayString(m);
        -   * } else if (dtype == DataType.STRUCTURE) {
        -   * assert a.getElementType() == StructureData.class;
        -   * ArrayStructure nested = sdata.getArrayStructure(m);
        -   * testArrayStructure(nested);
        -   * }
        -   * 
        -   * if (data != null)
        -   * ucar.ma2.TestMA2.testJarrayEquals(data, a.getStorage(), m.getSize());
        -   * }
        -   */
        -
         }
         
        diff --git a/cdm/core/src/test/java/ucar/ma2/TestStructureMembers.java b/cdm/core/src/test/java/ucar/ma2/TestStructureMembers.java
        new file mode 100644
        index 0000000000..848aac26c3
        --- /dev/null
        +++ b/cdm/core/src/test/java/ucar/ma2/TestStructureMembers.java
        @@ -0,0 +1,114 @@
        +package ucar.ma2;
        +
        +import static com.google.common.truth.Truth.assertThat;
        +
        +import java.util.ArrayList;
        +import java.util.List;
        +import org.junit.Test;
        +import org.junit.runner.RunWith;
        +import org.junit.runners.Parameterized;
        +import ucar.ma2.StructureMembers.Member;
        +import ucar.ma2.StructureMembers.MemberBuilder;
        +
        +@RunWith(Parameterized.class)
        +public class TestStructureMembers {
        +  @Parameterized.Parameters()
        +  public static List getTestParameters() {
        +    final int[] shape = new int[] {1};
        +    List testCases = new ArrayList<>();
        +
        +    testCases.add(new Object[] {"name", "description", "units", DataType.BOOLEAN, shape, true});
        +    testCases.add(new Object[] {"otherName", "description", "units", DataType.BOOLEAN, shape, false});
        +    testCases.add(new Object[] {"name", "otherDescription", "units", DataType.BOOLEAN, shape, false});
        +    testCases.add(new Object[] {"name", null, "units", DataType.BOOLEAN, shape, false});
        +    testCases.add(new Object[] {"name", "description", "OtherUnits", DataType.BOOLEAN, shape, false});
        +    testCases.add(new Object[] {"name", "description", null, DataType.BOOLEAN, shape, false});
        +    testCases.add(new Object[] {"name", "description", "units", DataType.INT, shape, false});
        +    testCases.add(new Object[] {"name", "description", "units", DataType.BOOLEAN, new int[] {2}, false});
        +    testCases.add(new Object[] {"name", "description", "units", DataType.BOOLEAN, new int[] {-1}, false});
        +    testCases.add(new Object[] {"name", "description", "units", DataType.BOOLEAN, new int[] {1, 1}, false});
        +
        +    return testCases;
        +  }
        +
        +  private final String name;
        +  private final String description;
        +  private final String units;
        +  private final DataType dataType;
        +  private final int[] shape;
        +  private final boolean isEqual;
        +
        +  public TestStructureMembers(String name, String description, String units, DataType dataType, int[] shape,
        +      boolean isEqual) {
        +    this.name = name;
        +    this.description = description;
        +    this.units = units;
        +    this.dataType = dataType;
        +    this.shape = shape;
        +    this.isEqual = isEqual;
        +  }
        +
        +  @Test
        +  public void shouldCompareMembers() {
        +    final Member member =
        +        StructureMembers.builder().addMember("name", "description", "units", DataType.BOOLEAN, new int[] {1}).build();
        +
        +    final Member otherMember = StructureMembers.builder().addMember(name, description, units, dataType, shape).build();
        +
        +    assertThat(member.equals(otherMember)).isEqualTo(isEqual);
        +    assertThat(otherMember.equals(member)).isEqualTo(isEqual);
        +  }
        +
        +  @Test
        +  public void shouldCompareStructureMembers() {
        +    final MemberBuilder memberBuilder =
        +        StructureMembers.builder().addMember("name", "description", "units", DataType.BOOLEAN, new int[] {1});
        +    final StructureMembers structureMembers = StructureMembers.builder().addMember(memberBuilder).build();
        +
        +    final MemberBuilder otherMember = StructureMembers.builder().addMember(name, description, units, dataType, shape);
        +    final StructureMembers otherStructureMembers = StructureMembers.builder().addMember(otherMember).build();
        +
        +    assertThat(structureMembers.equals(otherStructureMembers)).isEqualTo(isEqual);
        +    assertThat(otherStructureMembers.equals(structureMembers)).isEqualTo(isEqual);
        +  }
        +
        +  @Test
        +  public void shouldCompareStructureMembersWithMultipleMembers() {
        +    final MemberBuilder memberBuilder =
        +        StructureMembers.builder().addMember("name1", "description1", "units1", DataType.INT, new int[] {2});
        +    final MemberBuilder memberBuilder2 =
        +        StructureMembers.builder().addMember("name", "description", "units", DataType.BOOLEAN, new int[] {1});
        +    final StructureMembers structureMembers =
        +        StructureMembers.builder().addMember(memberBuilder).addMember(memberBuilder2).build();
        +
        +    final MemberBuilder otherMemberBuilder =
        +        StructureMembers.builder().addMember("name1", "description1", "units1", DataType.INT, new int[] {2});
        +    final MemberBuilder otherMemberBuilder2 =
        +        StructureMembers.builder().addMember(name, description, units, dataType, shape);
        +    final StructureMembers otherStructureMembers =
        +        StructureMembers.builder().addMember(otherMemberBuilder).addMember(otherMemberBuilder2).build();
        +
        +    assertThat(structureMembers.equals(otherStructureMembers)).isEqualTo(isEqual);
        +    assertThat(otherStructureMembers.equals(structureMembers)).isEqualTo(isEqual);
        +  }
        +
        +  @Test
        +  public void shouldCompareMembersThatAreStructures() {
        +    final MemberBuilder innerMemberBuilder =
        +        StructureMembers.builder().addMember("name", "description", "units", DataType.BOOLEAN, new int[] {1});
        +    final StructureMembers innerStructureMembers = StructureMembers.builder().addMember(innerMemberBuilder).build();
        +    final Member member =
        +        StructureMembers.builder().addMember("name2", "description2", "units2", DataType.STRUCTURE, new int[] {1})
        +            .setStructureMembers(innerStructureMembers).build();
        +
        +    final MemberBuilder otherInnerMember =
        +        StructureMembers.builder().addMember(name, description, units, dataType, shape);
        +    final StructureMembers otherInnerStructureMembers = StructureMembers.builder().addMember(otherInnerMember).build();
        +    final Member otherMember =
        +        StructureMembers.builder().addMember("name2", "description2", "units2", DataType.STRUCTURE, new int[] {1})
        +            .setStructureMembers(otherInnerStructureMembers).build();
        +
        +    assertThat(member.equals(otherMember)).isEqualTo(isEqual);
        +    assertThat(otherMember.equals(member)).isEqualTo(isEqual);
        +  }
        +}
        diff --git a/cdm/core/src/test/java/ucar/nc2/TestSpecialAttributes.java b/cdm/core/src/test/java/ucar/nc2/TestSpecialAttributes.java
        index d888260dba..c54effe7fb 100644
        --- a/cdm/core/src/test/java/ucar/nc2/TestSpecialAttributes.java
        +++ b/cdm/core/src/test/java/ucar/nc2/TestSpecialAttributes.java
        @@ -10,6 +10,7 @@
         import org.slf4j.Logger;
         import org.slf4j.LoggerFactory;
         import ucar.nc2.constants.CDM;
        +import ucar.nc2.iosp.netcdf4.Nc4;
         import ucar.unidata.util.test.TestDir;
         import java.io.IOException;
         import java.lang.invoke.MethodHandles;
        @@ -21,9 +22,9 @@ public class TestSpecialAttributes {
           @Test
           public void testReadAll() throws IOException {
             NetcdfFile ncfile = TestDir.openFileLocal("testSpecialAttributes.nc4");
        -    // Iterate over all top-level attributes and see if it is special
        +    // Iterate over all top-level visible attributes and see if it is special
             for (Attribute a : ncfile.getRootGroup().getAttributes()) {
        -      Assert.assertFalse("Attribute iteration found special attribute: " + a.getShortName(), Attribute.isspecial(a));
        +      Assert.assertFalse("Attribute iteration found special attribute: " + a.getShortName(), CDM.isspecial(a));
             }
             ncfile.close();
           }
        @@ -34,7 +35,7 @@ public void testReadByName() throws IOException {
             // Attempt to read special attributes by name
             for (String name : new String[] {CDM.NCPROPERTIES}) {
               Attribute special = ncfile.getRootGroup().findAttribute(name);
        -      Assert.assertTrue("Could not access special attribute: " + name, special != null && Attribute.isspecial(special));
        +      Assert.assertTrue("Could not access special attribute: " + name, special != null && CDM.isspecial(special));
             }
             ncfile.close();
           }
        diff --git a/cdm/core/src/test/java/ucar/nc2/dataset/TestCoordSysCompare.java b/cdm/core/src/test/java/ucar/nc2/dataset/TestCoordSysCompare.java
        index 650bda95bf..c15198d257 100644
        --- a/cdm/core/src/test/java/ucar/nc2/dataset/TestCoordSysCompare.java
        +++ b/cdm/core/src/test/java/ucar/nc2/dataset/TestCoordSysCompare.java
        @@ -52,7 +52,7 @@ public void compareCoordSysBuilders() throws IOException {
             try (NetcdfDataset org = NetcdfDataset.openDataset(fileLocation)) {
               try (NetcdfDataset withBuilder = NetcdfDatasets.openDataset(fileLocation)) {
                 Formatter f = new Formatter();
        -        CompareNetcdf2 compare = new CompareNetcdf2(f, false, false, true);
        +        CompareNetcdf2 compare = new CompareNetcdf2(f, false, false, true, false);
                 boolean ok = compare.compare(org, withBuilder, new CoordsObjFilter());
                 System.out.printf("%s %s%n", ok ? "OK" : "NOT OK", f);
                 System.out.printf("org = %s%n", org.getRootGroup().findAttributeString(_Coordinate._CoordSysBuilder, ""));
        diff --git a/cdm/core/src/test/java/ucar/nc2/dataset/TestCoordinateAxis.java b/cdm/core/src/test/java/ucar/nc2/dataset/TestCoordinateAxis.java
        new file mode 100644
        index 0000000000..c48849be1e
        --- /dev/null
        +++ b/cdm/core/src/test/java/ucar/nc2/dataset/TestCoordinateAxis.java
        @@ -0,0 +1,40 @@
        +package ucar.nc2.dataset;
        +
        +import static com.google.common.truth.Truth.assertThat;
        +import static ucar.nc2.TestUtils.makeDummyGroup;
        +
        +import java.util.Arrays;
        +import java.util.List;
        +import org.junit.Test;
        +import ucar.ma2.DataType;
        +import ucar.nc2.constants.AxisType;
        +
        +public class TestCoordinateAxis {
        +
        +  @Test
        +  public void shouldSortIntoCanonicalOrder() {
        +    CoordinateAxis lat = createCoordAxis(AxisType.Lat);
        +    CoordinateAxis lon = createCoordAxis(AxisType.Lon);
        +    CoordinateAxis height = createCoordAxis(AxisType.Height);
        +    CoordinateAxis runtime = createCoordAxis(AxisType.RunTime);
        +    CoordinateAxis ensemble = createCoordAxis(AxisType.Ensemble);
        +    CoordinateAxis time = createCoordAxis(AxisType.Time);
        +
        +    List sortedAxes = Arrays.asList(lat, lon, height, runtime, ensemble, time);
        +    sortedAxes.sort(new CoordinateAxis.AxisComparator());
        +
        +    List canonicalOrderAxes = Arrays.asList(runtime, ensemble, time, height, lat, lon);
        +    assertThat(sortedAxes.size()).isEqualTo(canonicalOrderAxes.size());
        +
        +    for (int i = 0; i < sortedAxes.size(); i++) {
        +      assertThat(sortedAxes.get(i).getAxisType()).isEqualTo(canonicalOrderAxes.get(i).getAxisType());
        +    }
        +  }
        +
        +  private static CoordinateAxis createCoordAxis(AxisType type) {
        +    VariableDS.Builder vdsBuilder = VariableDS.builder().setName("name").setDataType(DataType.FLOAT)
        +        .setUnits("units").setDesc("desc").setEnhanceMode(NetcdfDataset.getEnhanceAll());
        +
        +    return CoordinateAxis.fromVariableDS(vdsBuilder).setAxisType(type).build(makeDummyGroup());
        +  }
        +}
        diff --git a/cdm/core/src/test/java/ucar/nc2/dataset/TestDatasetUrl.java b/cdm/core/src/test/java/ucar/nc2/dataset/TestDatasetUrl.java
        index 209e7a8bdb..79aa15464b 100644
        --- a/cdm/core/src/test/java/ucar/nc2/dataset/TestDatasetUrl.java
        +++ b/cdm/core/src/test/java/ucar/nc2/dataset/TestDatasetUrl.java
        @@ -21,7 +21,6 @@
          */
         public class TestDatasetUrl {
           private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
        -  static final boolean show = true;
         
           protected void protocheck(String path, String expected) {
             if (expected == null)
        @@ -32,11 +31,6 @@ protected void protocheck(String path, String expected) {
             StringBuffer buff = new StringBuffer();
             protocols.forEach(p -> buff.append(p).append(":"));
             String result = buff.toString();
        -    boolean ok = expected.equals(result);
        -    if (show || !ok)
        -      System.out.printf(" %s <- %s%n", result, path);
        -    if (!ok)
        -      System.out.printf("  !!!EXPECTED '%s'%n", expected);
             assertThat(result).isEqualTo(expected);
           }
         
        @@ -76,11 +70,6 @@ public void testGetProtocols() {
         
           protected void testFind(String path, ServiceType expected) throws IOException {
             DatasetUrl result = DatasetUrl.findDatasetUrl(path);
        -    boolean ok = (expected == null) ? result.serviceType == null : expected == result.serviceType;
        -    if (show || !ok)
        -      System.out.printf(" %s <- %s%n", result.serviceType, path);
        -    if (!ok)
        -      System.out.printf("  !!!EXPECTED '%s'%n", expected);
             assertThat(result.serviceType).isEqualTo(expected);
           }
         
        @@ -123,5 +112,16 @@ public void testFindDatasetUrl() throws IOException {
             testFind(
                 "dynamic:http://thredds.ucar.edu:8080/thredds/fmrc/NCEP/GFS/CONUS_95km/files/GFS_CONUS_95km_20070319_0600.grib1",
                 null);
        +
        +    testFind("file:/path/to/file.ncml", ServiceType.NCML);
        +    testFind("/path/to/file.ncml", ServiceType.NCML);
        +    testFind("file:/path/to/file.xml", ServiceType.NCML);
        +    testFind("/path/to/file.xml", ServiceType.NCML);
        +
        +    testFind("cdms3:thredds-test-data?testStandalone.ncml#delimiter=/", ServiceType.NCML);
        +    testFind("cdms3:thredds-test-data?testStandalone.ncml", ServiceType.NCML);
        +    testFind("cdms3:thredds-test-data?ncml/testStandalone.ncml#delimiter=/", ServiceType.NCML);
        +    testFind("cdms3:thredds-test-data?ncml/testStandalone.ncml", ServiceType.NCML);
        +    testFind("cdms3://profile_name@my.endpoint.edu/bucket-name?super/long/key.ncml#delimiter=/", ServiceType.NCML);
           }
         }
        diff --git a/cdm/core/src/test/java/ucar/nc2/dataset/TestNetcdfDataset.java b/cdm/core/src/test/java/ucar/nc2/dataset/TestNetcdfDataset.java
        index 892b72bc71..c380fe1d70 100644
        --- a/cdm/core/src/test/java/ucar/nc2/dataset/TestNetcdfDataset.java
        +++ b/cdm/core/src/test/java/ucar/nc2/dataset/TestNetcdfDataset.java
        @@ -3,15 +3,74 @@
         import static com.google.common.truth.Truth.assertThat;
         
         import java.io.IOException;
        +import java.io.StringReader;
         import org.junit.Test;
        +import ucar.nc2.NetcdfFile;
        +import ucar.nc2.Variable;
        +import ucar.unidata.util.test.TestDir;
         
         public class TestNetcdfDataset {
        +  private static final String TEST_FILE = TestDir.cdmLocalTestDataDir + "ncml/nc/jan.nc";
         
           @Test
           public void shouldGetLastModified() throws IOException {
        -    final String location = "src/test/data/ncml/nc/jan.nc";
        -    try (NetcdfDataset netcdfDataset = NetcdfDatasets.openDataset(location)) {
        +    try (NetcdfDataset netcdfDataset = NetcdfDatasets.openDataset(TEST_FILE)) {
               assertThat(netcdfDataset.getLastModified()).isGreaterThan(0);
             }
           }
        +
        +  @Test
        +  public void shouldContainVariableDsWhenOpeningDataset() throws IOException {
        +    try (NetcdfDataset netcdfDataset = NetcdfDatasets.openDataset(TEST_FILE)) {
        +      final Variable datasetVariable = netcdfDataset.findVariable("lat");
        +      assertThat((Object) datasetVariable).isInstanceOf(VariableDS.class);
        +    }
        +  }
        +
        +  @Test
        +  public void shouldContainVariableDsWhenBuildingFromNetcdfFile() throws IOException {
        +    try (NetcdfFile netcdfFile = NetcdfDatasets.openFile(TEST_FILE, null)) {
        +      final Variable fileVariable = netcdfFile.findVariable("lat");
        +      assertThat((Object) fileVariable).isNotInstanceOf(VariableDS.class);
        +
        +      final NetcdfDataset netcdfDataset = NetcdfDataset.builder(netcdfFile).build();
        +      final Variable datasetVariable = netcdfDataset.findVariable("lat");
        +      assertThat((Object) datasetVariable).isInstanceOf(VariableDS.class);
        +    }
        +  }
        +
        +  @Test
        +  public void shouldContainVariableDsWhenEnhancingNetcdfFile() throws IOException {
        +    try (NetcdfFile netcdfFile = NetcdfDatasets.openFile(TEST_FILE, null)) {
        +      final NetcdfDataset netcdfDataset =
        +          NetcdfDatasets.enhance(netcdfFile, NetcdfDataset.getDefaultEnhanceMode(), null);
        +      final Variable datasetVariable = netcdfDataset.findVariable("lat");
        +      assertThat((Object) datasetVariable).isInstanceOf(VariableDS.class);
        +    }
        +  }
        +
        +  @Test
        +  public void shouldContainVariableDsWhenEnhancingNetcdfDataset() throws IOException {
        +    try (NetcdfFile netcdfFile = NetcdfDatasets.openFile(TEST_FILE, null)) {
        +      final NetcdfDataset netcdfDataset = NetcdfDataset.builder(netcdfFile).build();
        +      final NetcdfDataset enhancedDataset =
        +          NetcdfDatasets.enhance(netcdfDataset, NetcdfDataset.getDefaultEnhanceMode(), null);
        +      final Variable datasetVariable = enhancedDataset.findVariable("lat");
        +      assertThat((Object) datasetVariable).isInstanceOf(VariableDS.class);
        +    }
        +  }
        +
        +  @Test
        +  public void shouldContainVariableDsWhenOpenNcmlDataset() throws IOException {
        +    String ncml = "\n" //
        +        + "\n" //
        +        + "  \n" //
        +        + "  \n" //
        +        + ""; //
        +
        +    try (NetcdfDataset netcdfDataset = NetcdfDatasets.openNcmlDataset(new StringReader(ncml), null, null)) {
        +      final Variable datasetVariable = netcdfDataset.findVariable("var");
        +      assertThat((Object) datasetVariable).isInstanceOf(VariableDS.class);
        +    }
        +  }
         }
        diff --git a/cdm/core/src/test/java/ucar/nc2/dataset/TestNetcdfDatasetBuilder.java b/cdm/core/src/test/java/ucar/nc2/dataset/TestNetcdfDatasetBuilder.java
        index 61bb3d69e6..fafa0061ab 100644
        --- a/cdm/core/src/test/java/ucar/nc2/dataset/TestNetcdfDatasetBuilder.java
        +++ b/cdm/core/src/test/java/ucar/nc2/dataset/TestNetcdfDatasetBuilder.java
        @@ -15,9 +15,10 @@ public void testBuilder() {
             Attribute att = new Attribute("attName", "value");
             Dimension dim = new Dimension("dimName", 42);
             Group.Builder nested = Group.builder().setName("child");
        -    VariableDS.Builder vb = VariableDS.builder().setName("varName").setDataType(DataType.STRING);
        -    Group.Builder groupb =
        -        Group.builder().setName("name").addAttribute(att).addDimension(dim).addGroup(nested).addVariable(vb);
        +    Variable.Builder variableBuilder = Variable.builder().setName("varName").setDataType(DataType.STRING);
        +    VariableDS.Builder variableDSBuilder = VariableDS.builder().setName("varDSName").setDataType(DataType.STRING);
        +    Group.Builder groupb = Group.builder().setName("name").addAttribute(att).addDimension(dim).addGroup(nested)
        +        .addVariable(variableBuilder).addVariable(variableDSBuilder);
             nested.setParentGroup(groupb);
         
             NetcdfDataset.Builder builder =
        @@ -47,10 +48,18 @@ public void testBuilder() {
             assertThat(child.getParentGroup()).isEqualTo(group);
         
             assertThat(group.getVariables()).isNotEmpty();
        -    assertThat(group.getVariables()).hasSize(1);
        -    Variable v = group.findVariableLocal("varName");
        -    assertThat(v.getParentGroup()).isEqualTo(group);
        -    assertThat(v.getNetcdfFile()).isEqualTo(ncfile);
        +    assertThat(group.getVariables()).hasSize(2);
        +
        +    Variable variable = group.findVariableLocal("varName");
        +    // TODO is this correct behavior that a NetcdfDataset is allowed to have a Variable that is not a VariableDS?
        +    assertThat((Object) variable).isNotInstanceOf(VariableDS.class);
        +    assertThat(variable.getParentGroup()).isEqualTo(group);
        +    assertThat(variable.getNetcdfFile()).isEqualTo(ncfile);
        +
        +    Variable variableDS = group.findVariableLocal("varDSName");
        +    assertThat((Object) variableDS).isInstanceOf(VariableDS.class);
        +    assertThat(variableDS.getParentGroup()).isEqualTo(group);
        +    assertThat(variableDS.getNetcdfFile()).isEqualTo(ncfile);
           }
         
         }
        diff --git a/cdm/core/src/test/java/ucar/nc2/dataset/TestScaleOffsetMissingUnsigned.java b/cdm/core/src/test/java/ucar/nc2/dataset/TestScaleOffsetMissingUnsigned.java
        index f3e61e6a0e..8d75ca0880 100644
        --- a/cdm/core/src/test/java/ucar/nc2/dataset/TestScaleOffsetMissingUnsigned.java
        +++ b/cdm/core/src/test/java/ucar/nc2/dataset/TestScaleOffsetMissingUnsigned.java
        @@ -84,7 +84,6 @@ public void testWrite() throws Exception {
             }
         
             Array readEnhanced;
        -
             // read the packed form, enhance using scale/offset, compare to original
             try (NetcdfDataset ncd = NetcdfDatasets.openDataset(filename)) {
               VariableDS vs = (VariableDS) ncd.findVariable("packed");
        @@ -133,7 +132,6 @@ private void doSubset(String filename) throws IOException, InvalidRangeException
             }
           }
         
        -
           // Asserts that "scale_factor" is applied to "_FillValue".
           // This test demonstrated the bug in https://github.com/Unidata/thredds/issues/1065.
           @Test
        @@ -141,7 +139,7 @@ public void testScaledFillValue() throws URISyntaxException, IOException {
             File testResource = new File(getClass().getResource("testScaledFillValue.ncml").toURI());
         
             // LOOK removeEnhancement does not work in new
        -    try (NetcdfDataset ncd = NetcdfDataset.openDataset(testResource.getAbsolutePath(), true, null)) {
        +    try (NetcdfDataset ncd = NetcdfDatasets.openDataset(testResource.getAbsolutePath(), true, null)) {
               VariableDS fooVar = (VariableDS) ncd.findVariable("foo");
         
               double expectedFillValue = .99999;
        @@ -280,8 +278,8 @@ public void testScaleOffsetMissingUnsigned() throws URISyntaxException, IOExcept
               Assert.assertEquals(DataType.UINT, var.getDataType());
         
               // These vals are the same as ones from "missingUnsigned", but with a scale_factor of 100 and offset of 1 applied.
        -      int[] expecteds = new int[] {14901, 15001, 25001, 25101, 25501, 8001};
        -      int[] actuals = (int[]) var.read().getStorage();
        +      long[] expecteds = new long[] {14901, 15001, 25001, 25101, 25501, 8001};
        +      long[] actuals = (long[]) var.read().getStorage();
               Assert.assertArrayEquals(expecteds, actuals);
             }
           }
        @@ -346,10 +344,14 @@ public void testUnpackedValidRange() throws IOException, URISyntaxException {
                * data. Otherwise it is in the units of the external (packed) data.
      • */ // As a result, scale_factor will not be applied to it. + // with the Builder design, we don't read the enhancement properties unless the corresponding enhancement is + // turned on + var.addEnhancement(Enhance.ConvertMissing); Assert2.assertNearlyEquals(9.9f, (float) var.getValidMin()); Assert2.assertNearlyEquals(10.1f, (float) var.getValidMax()); Assert.assertEquals(DataType.FLOAT, var.getDataType()); // scale_factor is float. + var.removeEnhancement(Enhance.ConvertMissing); float[] expecteds = new float[] {9.8f, 9.9f, 10.0f, 10.1f, 10.2f}; float[] actuals = (float[]) var.read().getStorage(); @@ -363,6 +365,7 @@ public void testUnsignedOffsetAttribute() throws IOException, URISyntaxException try (NetcdfDataset ncd = NetcdfDatasets.openDataset(testResource.getAbsolutePath(), true, null)) { VariableDS var = (VariableDS) ncd.findVariable("unsignedOffsetAttribute"); + var.addEnhancement(Enhance.ApplyScaleOffset); Assert.assertEquals(156, var.getOffset(), 0); Assert.assertEquals(DataType.BYTE, var.getDataType()); // No change to data type. diff --git a/cdm/core/src/test/java/ucar/nc2/dataset/TestStandardVar.java b/cdm/core/src/test/java/ucar/nc2/dataset/TestStandardVar.java index 65ab5ba824..5a08b82162 100644 --- a/cdm/core/src/test/java/ucar/nc2/dataset/TestStandardVar.java +++ b/cdm/core/src/test/java/ucar/nc2/dataset/TestStandardVar.java @@ -218,8 +218,8 @@ private void readByte() throws Exception { assert (vs.hasMissing()); assert (vs.hasFillValue()); - assert (vs.isMissing((double) ((byte) 255))); - assert (vs.isFillValue((double) ((byte) 255))); + assert (vs.isMissing((byte) 255)); + assert (vs.isFillValue((byte) 255)); Array A = vs.read(); assert (A.getElementType() == byte.class) : A.getElementType(); @@ -256,8 +256,8 @@ private void readShortMissing() throws Exception { assert (vs.hasMissing()); assert (vs.hasMissingValue()); - assert (vs.isMissing((double) ((short) -9999))); - assert (vs.isMissingValue((double) ((short) -9999))); + assert (vs.isMissing((short) -9999)); + assert (vs.isMissingValue((short) -9999)); Array A = vs.read(); Index ima = A.getIndex(); diff --git a/cdm/core/src/test/java/ucar/nc2/filter/TestEnhancements.java b/cdm/core/src/test/java/ucar/nc2/filter/TestEnhancements.java new file mode 100644 index 0000000000..e1b2558a7e --- /dev/null +++ b/cdm/core/src/test/java/ucar/nc2/filter/TestEnhancements.java @@ -0,0 +1,155 @@ +package ucar.nc2.filter; + +import org.junit.BeforeClass; +import org.junit.ClassRule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import ucar.ma2.Array; +import ucar.ma2.DataType; +import ucar.ma2.InvalidRangeException; +import ucar.nc2.Attribute; +import ucar.nc2.Variable; +import ucar.nc2.constants.CDM; +import ucar.nc2.dataset.NetcdfDataset; +import ucar.nc2.dataset.NetcdfDatasets; +import ucar.nc2.write.NetcdfFormatWriter; + +import static com.google.common.truth.Truth.assertThat; + +import java.io.IOException; + +public class TestEnhancements { + + private static NetcdfDataset ncd; + + private static short[] signedShorts = new short[] {-5, -4, -3, -2, -1, 0, 1, 2, 3, 4}; + + private static final float VALID_MIN = 100; + private static final float VALID_MAX = 200; + private static final float FILL_VALUE = 150; + private static float[] missingData = new float[] {90, 100, Float.NaN, 120, 130, 140, 150, 190, 200, 210}; + + private static final Short SIGNED_SCALED_MAX = -2; + private static final Short SIGNED_SCALED_FILL_VALUE = -4; + private static final Short SIGNED_SCALED_MISSING_VALUE = -3; + + @ClassRule + public static final TemporaryFolder tempFolder = new TemporaryFolder(); + + @BeforeClass + public static void setUp() throws IOException, InvalidRangeException { + final int dataLen = 10; + String filePath = tempFolder.newFile().getAbsolutePath(); + NetcdfFormatWriter.Builder builder = NetcdfFormatWriter.createNewNetcdf3(filePath); + builder.addDimension("dim", dataLen); + + Array signedData = Array.factory(DataType.SHORT, new int[] {dataLen}, signedShorts); + // signed shorts + builder.addVariable("signedVar", DataType.SHORT, "dim"); + // unsigned shorts + builder.addVariable("unsignedVar", DataType.SHORT, "dim").addAttribute(new Attribute(CDM.UNSIGNED, "true")); + + // scaled and offset data + builder.addVariable("scaleOffsetVar", DataType.SHORT, "dim").addAttribute(new Attribute(CDM.SCALE_FACTOR, 10)) + .addAttribute(new Attribute(CDM.ADD_OFFSET, 10)); + // scaled data no offset + builder.addVariable("scaleNoOffsetVar", DataType.SHORT, "dim").addAttribute(new Attribute(CDM.SCALE_FACTOR, 10)); + + Array missingDataArray = Array.factory(DataType.FLOAT, new int[] {dataLen}, missingData); + // Data with min + builder.addVariable("validMin", DataType.FLOAT, "dim").addAttribute(new Attribute(CDM.VALID_MIN, VALID_MIN)); + // Data with min and max + builder.addVariable("validMinMax", DataType.FLOAT, "dim").addAttribute(new Attribute(CDM.VALID_MIN, VALID_MIN)) + .addAttribute(new Attribute(CDM.VALID_MAX, VALID_MAX)); + // Data with range and fill value + Array range = Array.factory(DataType.FLOAT, new int[] {2}, new float[] {VALID_MIN, VALID_MAX}); + builder.addVariable("validRange", DataType.FLOAT, "dim") + .addAttribute(Attribute.builder(CDM.VALID_RANGE).setValues(range).build()) + .addAttribute(Attribute.builder(CDM.FILL_VALUE).setNumericValue(FILL_VALUE, true).build()); + + // unsigned, scaled/offset, and missing value + Array enhanceAllArray = Array.factory(DataType.SHORT, new int[] {dataLen}, signedShorts); + builder.addVariable("enhanceAll", DataType.SHORT, "dim").addAttribute(new Attribute(CDM.UNSIGNED, "true")) + .addAttribute(new Attribute(CDM.SCALE_FACTOR, 10.0)).addAttribute(new Attribute(CDM.ADD_OFFSET, 10)) + .addAttribute(new Attribute(CDM.VALID_MAX, SIGNED_SCALED_MAX)) + .addAttribute(new Attribute(CDM.FILL_VALUE, SIGNED_SCALED_FILL_VALUE)) + .addAttribute(new Attribute(CDM.MISSING_VALUE, SIGNED_SCALED_MISSING_VALUE)); + + // write data + NetcdfFormatWriter writer = builder.build(); + writer.write(writer.findVariable("signedVar"), new int[1], signedData); + writer.write(writer.findVariable("unsignedVar"), new int[1], signedData); + writer.write(writer.findVariable("scaleOffsetVar"), new int[1], signedData); + writer.write(writer.findVariable("scaleNoOffsetVar"), new int[1], signedData); + writer.write(writer.findVariable("validMin"), new int[1], missingDataArray); + writer.write(writer.findVariable("validMinMax"), new int[1], missingDataArray); + writer.write(writer.findVariable("validRange"), new int[1], missingDataArray); + writer.write(writer.findVariable("enhanceAll"), new int[1], enhanceAllArray); + writer.close(); + ncd = NetcdfDatasets.openDataset(filePath); + } + + @Test + public void testUnsignedConversion() throws IOException { + final int[] unsignedValues = new int[] {65531, 65532, 65533, 65534, 65535, 0, 1, 2, 3, 4}; + // signed var + Variable v = ncd.findVariable("signedVar"); + Array data = v.read(); + assertThat(data.isUnsigned()).isFalse(); + assertThat(data.getDataType()).isEqualTo(DataType.SHORT); + assertThat((short[]) data.copyTo1DJavaArray()).isEqualTo(signedShorts); + + // var with unsigned data type + v = ncd.findVariable("unsignedVar"); + data = v.read(); + assertThat(data.isUnsigned()).isTrue(); + assertThat(data.getDataType()).isEqualTo(DataType.UINT); + assertThat((int[]) data.copyTo1DJavaArray()).isEqualTo(unsignedValues); + } + + @Test + public void testScaleOffset() throws IOException { + int[] expected = new int[] {-40, -30, -20, -10, 0, 10, 20, 30, 40, 50}; + Variable v = ncd.findVariable("scaleOffsetVar"); + Array data = v.read(); + assertThat(data.isUnsigned()).isFalse(); + assertThat(data.getDataType()).isEqualTo(DataType.INT); + assertThat((int[]) data.copyTo1DJavaArray()).isEqualTo(expected); + + expected = new int[] {-50, -40, -30, -20, -10, 0, 10, 20, 30, 40}; + v = ncd.findVariable("scaleNoOffsetVar"); + data = v.read(); + assertThat(data.isUnsigned()).isFalse(); + assertThat(data.getDataType()).isEqualTo(DataType.INT); + assertThat((int[]) data.copyTo1DJavaArray()).isEqualTo(expected); + } + + @Test + public void testConvertMissing() throws IOException { + // var with valid min + float[] expected = new float[] {Float.NaN, 100, Float.NaN, 120, 130, 140, 150, 190, 200, 210}; + Variable v = ncd.findVariable("validMin"); + Array data = v.read(); + assertThat((float[]) data.copyTo1DJavaArray()).isEqualTo(expected); + + // var with valid min and max + expected = new float[] {Float.NaN, 100, Float.NaN, 120, 130, 140, 150, 190, 200, Float.NaN}; + v = ncd.findVariable("validMinMax"); + data = v.read(); + assertThat((float[]) data.copyTo1DJavaArray()).isEqualTo(expected); + + // var with valid range and fill value + expected = new float[] {Float.NaN, 100, Float.NaN, 120, 130, 140, Float.NaN, 190, 200, Float.NaN}; + v = ncd.findVariable("validRange"); + data = v.read(); + assertThat((float[]) data.copyTo1DJavaArray()).isEqualTo(expected); + } + + @Test + public void testCombinedEnhancements() throws IOException { + double[] expected = new double[] {655320, Double.NaN, Double.NaN, 655350, Double.NaN, 10, 20, 30, 40, 50}; + Variable v = ncd.findVariable("enhanceAll"); + Array data = v.read(); + assertThat((double[]) data.copyTo1DJavaArray()).isEqualTo(expected); + } +} diff --git a/cdm/core/src/test/java/ucar/nc2/filter/TestFilters.java b/cdm/core/src/test/java/ucar/nc2/filter/TestFilters.java index d7e6943178..67893d9893 100644 --- a/cdm/core/src/test/java/ucar/nc2/filter/TestFilters.java +++ b/cdm/core/src/test/java/ucar/nc2/filter/TestFilters.java @@ -96,6 +96,16 @@ public void testScaleOffset() throws IOException { // test decode byte[] decoded = filter.decode(encoded); assertThat(decoded).isEqualTo(input); + + // test empty props + Map emptyProps = new HashMap<>(); + emptyProps.put("id", "fixedscaleoffset"); + emptyProps.put("dtype", " getTestParameters() { + List result = new ArrayList<>(); + + result.add(new Object[] {cfDocDsgExamplesDir + "H.1.1.ncml"}); + result.add(new Object[] {pointDir + "point.ncml"}); + result.add(new Object[] {pointDir + "pointMissing.ncml"}); + result.add(new Object[] {pointDir + "pointUnlimited.nc"}); + + return result; + } + + String location; + + public TestPointStream(String location) { + this.location = location; + } + + @Test + public void roundTrip() throws IOException { + File outFile = temporaryFolder.newFile(); + Formatter errlog = new Formatter(); + try (FeatureDatasetPoint fdPoint = + (FeatureDatasetPoint) FeatureDatasetFactoryManager.open(FeatureType.ANY_POINT, location, null, errlog)) { + + PointFeatureCollection origPointCol = new FlattenedDatasetPointCollection(fdPoint); + PointStream.write(origPointCol, outFile); + PointFeatureCollection roundTrippedPointCol = new PointCollectionStreamLocal(outFile); + + assertThat(PointTestUtil.equals(origPointCol, roundTrippedPointCol)).isTrue(); + } + } +} diff --git a/cdm/core/src/test/java/ucar/nc2/ft2/coverage/TestCoverageCoordAxis1D.java b/cdm/core/src/test/java/ucar/nc2/ft2/coverage/TestCoverageCoordAxis1D.java new file mode 100644 index 0000000000..f353994743 --- /dev/null +++ b/cdm/core/src/test/java/ucar/nc2/ft2/coverage/TestCoverageCoordAxis1D.java @@ -0,0 +1,44 @@ +package ucar.nc2.ft2.coverage; + +import org.junit.Test; +import ucar.ma2.DataType; +import ucar.nc2.constants.AxisType; +import ucar.nc2.time.CalendarDate; +import ucar.nc2.time.CalendarPeriod; +import ucar.nc2.util.Optional; +import static com.google.common.truth.Truth.assertThat; + + +public class TestCoverageCoordAxis1D { + + private static final CalendarDate testDate = CalendarDate.present(); + + private final int timeDelta = 2; + + @Test + public void TestSubsetPresentTime1D() { + SubsetParams presentSubsetParams = new SubsetParams(); + presentSubsetParams.setTimePresent(); + + CoverageCoordAxis1D timeAxis = create1DTimeAxis(); + Optional subsetTimeAxis = timeAxis.subset(presentSubsetParams); + + assertThat(subsetTimeAxis.isPresent()).isTrue(); + assertThat(subsetTimeAxis.get().startValue).isEqualTo(timeDelta); + assertThat(subsetTimeAxis.get().endValue).isEqualTo(timeDelta); + assertThat(subsetTimeAxis.get().isSubset()).isTrue(); + } + + private CoverageCoordAxis1D create1DTimeAxis() { + CalendarDate refTime = testDate.subtract(CalendarPeriod.of(timeDelta, CalendarPeriod.Field.Day)); + String timeUnit = "Day since " + refTime; + + double[] values = new double[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + + final CoverageCoordAxisBuilder coordAxisBuilder = new CoverageCoordAxisBuilder("time", timeUnit, + "GRIB forecast or observation time", DataType.DOUBLE, AxisType.Time, null, + CoverageCoordAxis.DependenceType.independent, null, CoverageCoordAxis.Spacing.regularPoint, values.length, + values[0], values[values.length - 1], values[1] - values[0], values, null); + return new CoverageCoordAxis1D(coordAxisBuilder); + } +} diff --git a/cdm/core/src/test/java/ucar/nc2/ft2/coverage/TestCoverageCoordSys.java b/cdm/core/src/test/java/ucar/nc2/ft2/coverage/TestCoverageCoordSys.java new file mode 100644 index 0000000000..554442e7e2 --- /dev/null +++ b/cdm/core/src/test/java/ucar/nc2/ft2/coverage/TestCoverageCoordSys.java @@ -0,0 +1,67 @@ +package ucar.nc2.ft2.coverage; + +import static com.google.common.truth.Truth.assertThat; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; +import org.junit.Test; +import ucar.ma2.DataType; +import ucar.nc2.AttributeContainerMutable; +import ucar.nc2.constants.AxisType; +import ucar.nc2.constants.FeatureType; +import ucar.nc2.ft2.coverage.CoverageCoordAxis.Spacing; +import ucar.nc2.util.Optional; + +public class TestCoverageCoordSys { + + @Test + public void shouldFindAxisCaseSensitive() { + final CoverageCoordSys coverageCoordSys = createCoverageCoordSys(); + assertThat(coverageCoordSys.getAxis("axis").getName()).isEqualTo("axis"); + assertThat(coverageCoordSys.getAxis("AXIS").getName()).isEqualTo("AXIS"); + } + + @Test + public void shouldFindAxisCaseSensitiveWhenSubsetting() { + final CoverageCoordSys coverageCoordSys = createCoverageCoordSys(); + final SubsetParams params = new SubsetParams(); + final Optional subset = coverageCoordSys.subset(params); + + assertThat(subset.isPresent()).isTrue(); + assertThat(subset.get().getAxis("axis").getName()).isEqualTo("axis"); + assertThat(subset.get().getAxis("AXIS").getName()).isEqualTo("AXIS"); + } + + private static CoverageCoordAxis1D createCoverageCoordAxis1D(String name, AxisType type) { + final CoverageCoordAxisBuilder coordAxisBuilder = new CoverageCoordAxisBuilder(name, "days since 2000-01-01", + "description", DataType.DOUBLE, type, null, CoverageCoordAxis.DependenceType.independent, null, + Spacing.regularPoint, 3, 0.0, 2.0, 1.0, new double[] {0.0, 1.0, 2.0}, null); + return new CoverageCoordAxis1D(coordAxisBuilder); + } + + private static CoverageCoordSys createCoverageCoordSys() { + final AttributeContainerMutable attributes = new AttributeContainerMutable("attributes"); + final CoverageCoordAxis1D lat = createCoverageCoordAxis1D("lat", AxisType.Lat); + final CoverageCoordAxis1D lon = createCoverageCoordAxis1D("lon", AxisType.Lon); + final CoverageCoordAxis1D axis1 = createCoverageCoordAxis1D("axis", AxisType.Time); + final CoverageCoordAxis1D axis2 = createCoverageCoordAxis1D("AXIS", AxisType.Ensemble); + final List coordAxes = Arrays.asList(lat, lon, axis1, axis2); + final List axisNames = coordAxes.stream().map(CoverageCoordAxis::getName).collect(Collectors.toList()); + + final CoverageTransform transform = new CoverageTransform("transform1", attributes, true); + final List coordTransforms = Collections.singletonList(transform); + final List transformNames = Collections.singletonList(transform.getName()); + + final CoverageCoordSys coverageCoordSys = + new CoverageCoordSys("CoverageCoordSysName", axisNames, transformNames, FeatureType.ANY); + final List coverages = Collections.singletonList(new Coverage("coverageName", DataType.DOUBLE, attributes, + coverageCoordSys.getName(), "units", "description", null, null)); + // Creating this CoverageCollection apparently alters the state of the coverageCoordSys + final CoverageCollection coverageCollection = new CoverageCollection("collectionName", FeatureType.ANY, null, null, + null, null, Collections.singletonList(coverageCoordSys), coordTransforms, coordAxes, coverages, null); + + return coverageCoordSys; + } +} diff --git a/cdm/core/src/test/java/ucar/nc2/ft2/coverage/TestHorizCoordSys.java b/cdm/core/src/test/java/ucar/nc2/ft2/coverage/TestHorizCoordSys.java index 096e82ff56..fb27db0069 100644 --- a/cdm/core/src/test/java/ucar/nc2/ft2/coverage/TestHorizCoordSys.java +++ b/cdm/core/src/test/java/ucar/nc2/ft2/coverage/TestHorizCoordSys.java @@ -2,8 +2,13 @@ import static com.google.common.truth.Truth.assertThat; +import java.io.File; +import java.io.IOException; import java.lang.invoke.MethodHandles; +import java.net.URISyntaxException; import java.util.List; +import java.util.Locale; +import org.junit.After; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -12,11 +17,20 @@ import ucar.nc2.constants.AxisType; import ucar.nc2.constants.CF; import ucar.nc2.ft2.coverage.CoverageCoordAxis.Spacing; +import ucar.nc2.util.Optional; +import ucar.unidata.geoloc.LatLonPoint; import ucar.unidata.geoloc.LatLonPointNoNormalize; import ucar.unidata.geoloc.ProjectionPoint; public class TestHorizCoordSys { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + private static final Locale DEFAULT_LOCALE = Locale.getDefault(); + private static final double TOLERANCE = 1.0e-8; + + @After + public void resetLocale() { + Locale.setDefault(DEFAULT_LOCALE); + } @Test public void shouldRemoveNansWhenComputingLatLon() { @@ -27,14 +41,7 @@ public void shouldRemoveNansWhenComputingLatLon() { final CoverageCoordAxis1D xAxis = createCoverageCoordAxis1D(AxisType.GeoX, xValues); final CoverageCoordAxis1D yAxis = createCoverageCoordAxis1D(AxisType.GeoY, yValues); - final AttributeContainerMutable attributes = new AttributeContainerMutable("attributes"); - attributes.addAttribute(CF.GRID_MAPPING_NAME, CF.GEOSTATIONARY); - attributes.addAttribute(CF.LONGITUDE_OF_PROJECTION_ORIGIN, -75.0); - attributes.addAttribute(CF.PERSPECTIVE_POINT_HEIGHT, 35786023.0); - attributes.addAttribute(CF.SEMI_MINOR_AXIS, 6356752.31414); - attributes.addAttribute(CF.SEMI_MAJOR_AXIS, 6378137.0); - attributes.addAttribute(CF.INVERSE_FLATTENING, 298.2572221); - attributes.addAttribute(CF.SWEEP_ANGLE_AXIS, "x"); + final AttributeContainerMutable attributes = createGeostationaryAttributes(); final CoverageTransform transform = new CoverageTransform("transform", attributes, true); final HorizCoordSys horizCoordSys = HorizCoordSys.factory(xAxis, yAxis, null, null, transform); @@ -51,8 +58,64 @@ public void shouldRemoveNansWhenComputingLatLon() { } } + @Test + public void shouldHandleUnitsInProjectionWhenSubsetting() { + final double[] xValues = new double[] {0, -24444.000000022017}; + final double[] yValues = new double[] {0, 98028.00000000928}; + + final CoverageCoordAxis1D xAxis = createCoverageCoordAxis1D(AxisType.GeoX, "microradians", xValues); + final CoverageCoordAxis1D yAxis = createCoverageCoordAxis1D(AxisType.GeoY, "microradians", yValues); + + final AttributeContainerMutable attributes = createGeostationaryAttributes(); + + final CoverageTransform transform = new CoverageTransform("transform", attributes, true); + final HorizCoordSys horizCoordSys = HorizCoordSys.factory(xAxis, yAxis, null, null, transform); + + final LatLonPoint latLon = LatLonPoint.create(35, -85); + final SubsetParams subsetParams = new SubsetParams().setLatLonPoint(latLon); + final Optional subsetHorizCoordSys = horizCoordSys.subset(subsetParams); + assertThat(subsetHorizCoordSys.isPresent()).isTrue(); + assertThat(subsetHorizCoordSys.get().getXAxis().getCoord(0)).isWithin(TOLERANCE).of(xValues[1]); + assertThat(subsetHorizCoordSys.get().getYAxis().getCoord(0)).isWithin(TOLERANCE).of(yValues[1]); + } + + @Test + public void shouldUsePeriodsAsDecimalSeparatorsInWKT() throws IOException, URISyntaxException { + Locale.setDefault(new Locale("fr", "FR")); + + final File testResource = new File(getClass().getResource("crossSeamLatLon1D.ncml").toURI()); + final String expectedWKT = "POLYGON((" + "130.000 0.000, 170.000 0.000, 210.000 0.000, " + // Bottom edge + "230.000 0.000, 230.000 30.000, " + // Right edge + "230.000 50.000, 190.000 50.000, 150.000 50.000, " + // Top edge + "130.000 50.000, 130.000 20.000" + // Left edge + "))"; + + try (FeatureDatasetCoverage featureDatasetCoverage = CoverageDatasetFactory.open(testResource.getAbsolutePath())) { + assertThat(featureDatasetCoverage).isNotNull(); + final CoverageCollection coverageCollection = featureDatasetCoverage.getCoverageCollections().get(0); + final String actualWKT = coverageCollection.getHorizCoordSys().getLatLonBoundaryAsWKT(2, 3); + assertThat(actualWKT).isEqualTo(expectedWKT); + } + } + + private AttributeContainerMutable createGeostationaryAttributes() { + final AttributeContainerMutable attributes = new AttributeContainerMutable("attributes"); + attributes.addAttribute(CF.GRID_MAPPING_NAME, CF.GEOSTATIONARY); + attributes.addAttribute(CF.LONGITUDE_OF_PROJECTION_ORIGIN, -75.0); + attributes.addAttribute(CF.PERSPECTIVE_POINT_HEIGHT, 35786023.0); + attributes.addAttribute(CF.SEMI_MINOR_AXIS, 6356752.31414); + attributes.addAttribute(CF.SEMI_MAJOR_AXIS, 6378137.0); + attributes.addAttribute(CF.INVERSE_FLATTENING, 298.2572221); + attributes.addAttribute(CF.SWEEP_ANGLE_AXIS, "x"); + return attributes; + } + private CoverageCoordAxis1D createCoverageCoordAxis1D(AxisType type, double[] values) { - final CoverageCoordAxisBuilder coordAxisBuilder = new CoverageCoordAxisBuilder("name", "unit", "description", + return createCoverageCoordAxis1D(type, "units", values); + } + + private CoverageCoordAxis1D createCoverageCoordAxis1D(AxisType type, String units, double[] values) { + final CoverageCoordAxisBuilder coordAxisBuilder = new CoverageCoordAxisBuilder("name", units, "description", DataType.DOUBLE, type, null, CoverageCoordAxis.DependenceType.independent, null, Spacing.irregularPoint, values.length, values[0], values[values.length - 1], values[1] - values[0], values, null); return new CoverageCoordAxis1D(coordAxisBuilder); diff --git a/cdm/core/src/test/java/ucar/nc2/ft2/coverage/TestHorizCoordSysCrossSeamBoundary.java b/cdm/core/src/test/java/ucar/nc2/ft2/coverage/TestHorizCoordSysCrossSeamBoundary.java new file mode 100644 index 0000000000..8df38f51ca --- /dev/null +++ b/cdm/core/src/test/java/ucar/nc2/ft2/coverage/TestHorizCoordSysCrossSeamBoundary.java @@ -0,0 +1,221 @@ +package ucar.nc2.ft2.coverage; + +import static com.google.common.truth.Truth.assertThat; +import static ucar.unidata.geoloc.ProjectionPoint.create; + +import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; +import java.util.Arrays; +import java.util.List; +import org.junit.Test; +import ucar.unidata.geoloc.LatLonPoint; +import ucar.unidata.geoloc.LatLonPointNoNormalize; +import ucar.unidata.geoloc.LatLonRect; +import ucar.unidata.geoloc.ProjectionPoint; +import ucar.unidata.geoloc.ProjectionRect; + +public class TestHorizCoordSysCrossSeamBoundary { + private static final double TOL = 1e-5; + + @Test + public void shouldCalcProjectionsBoundaryPoints() throws URISyntaxException, IOException { + HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamProjection.ncml"); + List actualPoints = horizCoordSys.calcProjectionBoundaryPoints(); + + List expectedPoints = Arrays.asList( + // Bottom edge + create(-4500, -2450), create(-3500, -2450), create(-2500, -2450), create(-1500, -2450), + // Right edge + create(-500, -2450), create(-500, -1550), create(-500, -650), create(-500, 250), + // Top edge + create(-500, 1150), create(-1500, 1150), create(-2500, 1150), create(-3500, 1150), + // Left edge + create(-4500, 1150), create(-4500, 250), create(-4500, -650), create(-4500, -1550)); + + assertThat(actualPoints).isEqualTo(expectedPoints); + } + + @Test + public void shouldCalcProjectionBoundaryPoints2By2() throws URISyntaxException, IOException { + HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamProjection.ncml"); + List actualPoints = horizCoordSys.calcProjectionBoundaryPoints(2, 2); + + List expectedPoints = Arrays.asList(create(-4500, -2450), create(-2500, -2450), // Bottom edge + create(-500, -2450), create(-500, -650), // Right edge + create(-500, 1150), create(-2500, 1150), // Top edge + create(-4500, 1150), create(-4500, -650) // Left edge + ); + + assertThat(actualPoints).isEqualTo(expectedPoints); + } + + @Test + public void shouldCalcConnectedLatLonBoundaryPoints() throws URISyntaxException, IOException { + HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamLatLon1D.ncml"); + List actualPoints = horizCoordSys.calcConnectedLatLonBoundaryPoints(); + + List expectedPoints = Arrays.asList(createNoNorm(0, 130), createNoNorm(0, 150), + createNoNorm(0, 170), createNoNorm(0, 190), createNoNorm(0, 210), // Bottom edge + createNoNorm(0, 230), createNoNorm(10, 230), createNoNorm(20, 230), createNoNorm(30, 230), + createNoNorm(40, 230), // Right edge + createNoNorm(50, 230), createNoNorm(50, 210), createNoNorm(50, 190), createNoNorm(50, 170), + createNoNorm(50, 150), // Top edge + createNoNorm(50, 130), createNoNorm(40, 130), createNoNorm(30, 130), createNoNorm(20, 130), + createNoNorm(10, 130) // Left edge + ); + + assertThat(actualPoints).isEqualTo(expectedPoints); + } + + @Test + public void shouldCalcConnectedLatLonBoundaryPoints2By3() throws URISyntaxException, IOException { + HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamLatLon1D.ncml"); + List actualPoints = horizCoordSys.calcConnectedLatLonBoundaryPoints(2, 3); + + List expectedPoints = + Arrays.asList(createNoNorm(0, 130), createNoNorm(0, 170), createNoNorm(0, 210), // Bottom edge + createNoNorm(0, 230), createNoNorm(30, 230), // Right edge + createNoNorm(50, 230), createNoNorm(50, 190), createNoNorm(50, 150), // Top edge + createNoNorm(50, 130), createNoNorm(20, 130) // Left edge + ); + + assertThat(actualPoints).isEqualTo(expectedPoints); + } + + @Test + public void shouldCalcConnectedLatLonBoundaryPointsFromProjection() throws URISyntaxException, IOException { + HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamProjection.ncml"); + List actualPoints = horizCoordSys.calcConnectedLatLonBoundaryPoints(); + + List expectedPoints = Arrays.asList( + // Bottom edge + createNoNorm(43.3711, -166.4342), createNoNorm(50.4680, -160.0080), createNoNorm(57.1887, -150.5787), + createNoNorm(62.8319, -136.4768), + // Right edge + createNoNorm(66.2450, -116.5346), createNoNorm(74.3993, -122.8787), createNoNorm(82.1083, -142.5686), + createNoNorm(84.6159, -221.5651), + // Top edge + createNoNorm(77.9578, -261.5014), createNoNorm(71.9333, -232.4762), createNoNorm(63.9355, -219.7024), + createNoNorm(55.5660, -213.1890), + // Left edge + createNoNorm(47.3219, -209.3354), createNoNorm(48.4777, -198.1798), createNoNorm(48.1430, -186.7808), + createNoNorm(46.3647, -175.9940)); + + assertThat(actualPoints.size()).isEqualTo(expectedPoints.size()); + for (int i = 0; i < actualPoints.size(); ++i) { + assertThat(actualPoints.get(i).nearlyEquals(expectedPoints.get(i), TOL)).isTrue(); + } + } + + @Test + public void shouldCalcConnectedLatLonBoundaryPoints2D() throws URISyntaxException, IOException { + HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamLatLon2D.ncml"); + List actualPoints = horizCoordSys.calcConnectedLatLonBoundaryPoints(); + + List expectedPoints = Arrays.asList( + // Verified by visually inspecting the coverage drawing in ToolsUI. + // Note how these boundary points differ from the ones we calculated in the test above, even though + // "crossSeamProjection.ncml" and "crossSeamLatLon2D.ncml" represent the same grid. That's because the + // edges in shouldCalcConnectedLatLonBoundaryPointsFromProjection were calculated in projection coordinates + // and THEN converted to lat/lon. THESE edges, on the other hand, were calculated from 2D lat/lon + // midpoints generated from the projection. Taking that path, there's an unavoidable loss of precision. + createNoNorm(44.8740, -169.5274), createNoNorm(51.7795, -157.6634), createNoNorm(58.6851, -145.7993), + createNoNorm(64.2176, -125.9033), // Bottom edge + createNoNorm(69.7501, -106.0074), createNoNorm(76.0530, -134.4232), createNoNorm(82.3559, -162.8391), + createNoNorm(83.7438, -207.9060), // Right edge + createNoNorm(85.1317, -252.9728), createNoNorm(75.7804, -237.0202), createNoNorm(66.4291, -221.0677), + createNoNorm(57.3500, -213.7392), // Top edge + createNoNorm(48.2709, -206.4107), createNoNorm(48.0159, -197.4671), createNoNorm(47.7609, -188.5235), + createNoNorm(46.3175, -179.0254) // Left edge + ); + + assertThat(actualPoints.size()).isEqualTo(expectedPoints.size()); + for (int i = 0; i < actualPoints.size(); ++i) { + assertThat(actualPoints.get(i).nearlyEquals(expectedPoints.get(i), TOL)).isTrue(); + } + } + + @Test + public void shouldCalcConnectedLatLonBoundaryPoints2D2By2() throws URISyntaxException, IOException { + HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamLatLon2D.ncml"); + List actualPoints = horizCoordSys.calcConnectedLatLonBoundaryPoints(2, 2); + + List expectedPoints = + Arrays.asList(createNoNorm(44.8740, -169.5274), createNoNorm(58.6851, -145.7993), // Bottom edge + createNoNorm(69.7501, -106.0074), createNoNorm(82.3559, -162.8391), // Right edge + createNoNorm(85.1317, -252.9728), createNoNorm(66.4291, -221.0677), // Top edge + createNoNorm(48.2709, -206.4107), createNoNorm(47.7609, -188.5235) // Left edge + ); + + assertThat(actualPoints.size()).isEqualTo(expectedPoints.size()); + for (int i = 0; i < actualPoints.size(); ++i) { + assertThat(actualPoints.get(i).nearlyEquals(expectedPoints.get(i), TOL)).isTrue(); + } + } + + @Test + public void shouldCalcProjectionBoundingBox() throws URISyntaxException, IOException { + HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamProjection.ncml"); + ProjectionRect actualBB = horizCoordSys.calcProjectionBoundingBox(); + + ProjectionRect expectedBB = + new ProjectionRect(ProjectionPoint.create(-4500, -2450), ProjectionPoint.create(-500, 1150)); + + assertThat(actualBB).isEqualTo(expectedBB); + } + + @Test + public void shouldCalcLatLonBoundingBox1D() throws URISyntaxException, IOException { + HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamLatLon1D.ncml"); + LatLonRect actualBB = horizCoordSys.calcLatLonBoundingBox(); + + // Derived by manually finding the minimum and maximum lat & lon values of the expected points in the + // shouldCalcConnectedLatLonBoundaryPoints test. + LatLonRect expectedBB = new LatLonRect(LatLonPoint.create(0, 130), LatLonPoint.create(50, 230)); + + assertThat(actualBB).isEqualTo(expectedBB); + } + + @Test + public void shouldCalcLatLonBoundingBoxProjection() throws URISyntaxException, IOException { + HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamProjection.ncml"); + LatLonRect actualBB = horizCoordSys.calcLatLonBoundingBox(); + + // Derived by manually finding the minimum and maximum lat & lon values of the expected points in the + // shouldCalcConnectedLatLonBoundaryPointsFromProjection test. + LatLonRect expectedBB = + new LatLonRect(LatLonPoint.create(43.3711, -261.5014), LatLonPoint.create(84.6159, -116.5346)); + + assertThat(actualBB.nearlyEquals(expectedBB)).isTrue(); + } + + @Test + public void shouldCalcLatLonBoundingBox2D() throws URISyntaxException, IOException { + HorizCoordSys horizCoordSys = getHorizCoordSysOfDataset("crossSeamLatLon2D.ncml"); + LatLonRect actualBB = horizCoordSys.calcLatLonBoundingBox(); + + // Derived by manually finding the minimum and maximum lat & lon values of the expected points in the + // shouldCalcConnectedLatLonBoundaryPoints2D test. + LatLonRect expectedBB = + new LatLonRect(LatLonPoint.create(44.8740, -252.9728), LatLonPoint.create(85.1317, -106.0074)); + + assertThat(actualBB.nearlyEquals(expectedBB)).isTrue(); + } + + private HorizCoordSys getHorizCoordSysOfDataset(String resourceName) throws URISyntaxException, IOException { + File file = new File(getClass().getResource(resourceName).toURI()); + + try (FeatureDatasetCoverage featDsetCov = CoverageDatasetFactory.open(file.getAbsolutePath())) { + assertThat(featDsetCov).isNotNull(); + assertThat(featDsetCov.getCoverageCollections().size()).isEqualTo(1); + + CoverageCollection covColl = featDsetCov.getCoverageCollections().get(0); + return covColl.getHorizCoordSys(); + } + } + + private static LatLonPointNoNormalize createNoNorm(double x, double y) { + return new LatLonPointNoNormalize(x, y); + } +} diff --git a/cdm/core/src/test/java/ucar/nc2/ft2/coverage/writer/TestCFGridCoverageWriter2.java b/cdm/core/src/test/java/ucar/nc2/ft2/coverage/writer/TestCFGridCoverageWriter2.java new file mode 100644 index 0000000000..34e48c95e1 --- /dev/null +++ b/cdm/core/src/test/java/ucar/nc2/ft2/coverage/writer/TestCFGridCoverageWriter2.java @@ -0,0 +1,102 @@ +package ucar.nc2.ft2.coverage.writer; + +import static com.google.common.truth.Truth.assertThat; + +import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import ucar.ma2.Array; +import ucar.ma2.DataType; +import ucar.ma2.InvalidRangeException; +import ucar.ma2.MAMath; +import ucar.nc2.NetcdfFile; +import ucar.nc2.NetcdfFileWriter; +import ucar.nc2.NetcdfFiles; +import ucar.nc2.ft2.coverage.CoverageCollection; +import ucar.nc2.ft2.coverage.CoverageDatasetFactory; +import ucar.nc2.ft2.coverage.FeatureDatasetCoverage; +import ucar.nc2.ft2.coverage.TestHorizCoordSysCrossSeamBoundary; + +public class TestCFGridCoverageWriter2 { + private static final double TOL = 1e-5; + + @Rule + public TemporaryFolder tempFolder = new TemporaryFolder(); + + @Test + public void shouldCalcOutputFileSizes() throws IOException, URISyntaxException, InvalidRangeException { + // Lengths of the y and x axes in the dataset. + double numY = 4; + double numX = 4; + + File testFile = new File(TestHorizCoordSysCrossSeamBoundary.class.getResource("crossSeamProjection.ncml").toURI()); + try (FeatureDatasetCoverage featDsetCov = CoverageDatasetFactory.open(testFile.getAbsolutePath())) { + assertThat(featDsetCov).isNotNull(); + assertThat(featDsetCov.getCoverageCollections().size()).isEqualTo(1); + CoverageCollection covColl = featDsetCov.getCoverageCollections().get(0); + + // excluding 2D lat/lon vars + double expectedSizeNoLatLon = numY * numX * DataType.FLOAT.getSize() + // Temperature_surface + numY * DataType.FLOAT.getSize() + // y + numX * DataType.FLOAT.getSize() + // x + 1 * DataType.INT.getSize(); // PolarStereographic_Projection + + double actualSizeNoLatLon = CFGridCoverageWriter2.getSizeOfOutput( + // No subset; don't addLatLon; calc file size but don't write file. + covColl, null, null, false).get(); + + assertThat(actualSizeNoLatLon).isWithin(TOL).of(expectedSizeNoLatLon); + + // including 2D lat/lon vars + double expectedSizeWithLatLon = expectedSizeNoLatLon + numY * numX * DataType.DOUBLE.getSize() + // lat + numY * numX * DataType.DOUBLE.getSize(); // lon + + double actualSizeWithLatLon = CFGridCoverageWriter2.getSizeOfOutput( + // No subset; do addLatLon; calc file size but don't write file. + covColl, null, null, true).get(); + assertThat(actualSizeWithLatLon).isWithin(TOL).of(expectedSizeWithLatLon); + } + + } + + @Test + public void shouldAdd2DLatLonVariables() throws IOException, InvalidRangeException, URISyntaxException { + int[] expectedShape = {4, 4}; + double[] expectedLatsList = { // These come from crossSeamLatLon2D.ncml + 48.771275207078986, 56.257940168398875, 63.23559652027781, 68.69641273007204, 51.52824383539942, + 59.91283563136657, 68.26407960692367, 75.7452461192097, 52.765818800755305, 61.615297053148296, + 70.80822358575152, 80.19456756234185, 52.28356434154232, 60.94659393490472, 69.78850194830888, + 78.27572828144659}; + Array expectedLats = Array.factory(DataType.DOUBLE, expectedShape, expectedLatsList); + double[] expectedLonsList = { // These come from crossSeamLatLon2D.ncml + -168.434948822922, -161.3099324740202, -150.0, -131.56505117707798, -179.6237487511738, -174.86369657175186, + -166.1892062570269, -147.27368900609372, 167.86240522611175, 168.81407483429038, 170.71059313749964, + 176.3099324740202, 155.0737544933483, 151.8659776936037, 145.70995378081128, 130.00797980144134}; + Array expectedLons = Array.factory(DataType.DOUBLE, expectedShape, expectedLonsList); + + File testFile = new File(TestHorizCoordSysCrossSeamBoundary.class.getResource("crossSeamProjection.ncml").toURI()); + try (FeatureDatasetCoverage featDsetCov = CoverageDatasetFactory.open(testFile.getAbsolutePath())) { + assertThat(featDsetCov).isNotNull(); + assertThat(featDsetCov.getCoverageCollections().size()).isEqualTo(1); + CoverageCollection covColl = featDsetCov.getCoverageCollections().get(0); + + File outputFile = tempFolder.newFile(); + try (NetcdfFileWriter writer = NetcdfFileWriter.createNew(outputFile.getAbsolutePath(), false)) { + CFGridCoverageWriter2.write(covColl, null, null, true, writer); + + try (NetcdfFile ncFile = NetcdfFiles.open(outputFile.getAbsolutePath())) { + Array actualLats = ncFile.findVariable("lat").read(); + assertThat(actualLats.getShape()).isEqualTo(expectedLats.getShape()); + MAMath.nearlyEquals(expectedLats, actualLats); + + Array actualLons = ncFile.findVariable("lon").read(); + assertThat(actualLons.getShape()).isEqualTo(expectedLons.getShape()); + MAMath.nearlyEquals(expectedLons, actualLons); + } + } + } + } +} diff --git a/cdm/core/src/test/java/ucar/nc2/ft2/coverage/writer/TestCoverageAsPoint.java b/cdm/core/src/test/java/ucar/nc2/ft2/coverage/writer/TestCoverageAsPoint.java index f94c4ef5dc..a98cc3c804 100644 --- a/cdm/core/src/test/java/ucar/nc2/ft2/coverage/writer/TestCoverageAsPoint.java +++ b/cdm/core/src/test/java/ucar/nc2/ft2/coverage/writer/TestCoverageAsPoint.java @@ -23,7 +23,7 @@ /** Test CoverageAsPoint */ public class TestCoverageAsPoint { - private static final String testFilePath = TestDir.cdmLocalTestDataDir + "rankTest.nc"; + private static final String testFilePath = TestDir.cdmLocalTestDataDir + "point/testGridAsPointAxes.ncml"; private static CoverageCollection gds; @@ -68,6 +68,7 @@ public void testVarFeatureTypes() throws IOException { SubsetParams params = new SubsetParams(); params.setVariables(stationVarNames); params.setLatLonPoint(latlon); + params.setVertCoord(0); FeatureDatasetPoint fdp1 = new CoverageAsPoint(gds, stationVarNames, params).asFeatureDatasetPoint(); assertThat(fdp1.getFeatureType()).isEqualTo(FeatureType.STATION); @@ -75,6 +76,8 @@ public void testVarFeatureTypes() throws IOException { // vars with z should be station profile List profileVarNames = Arrays.asList(new String[] {"full4", "withT1", "full3", "3D", "4D"}); + params = new SubsetParams(); + params.setLatLonPoint(latlon); params.setVariables(profileVarNames); FeatureDatasetPoint fdp2 = new CoverageAsPoint(gds, profileVarNames, params).asFeatureDatasetPoint(); @@ -95,8 +98,19 @@ public void testCoverageAsPoint() throws IOException { // test time series varNames = new ArrayList<>(); varNames.add("T1noZ"); + vals = Arrays.copyOfRange(expected, 0, 2); params.setVariables(varNames); - readCoverageAsPoint(varNames, params, alts[0], times, vals); + readCoverageAsPoint(varNames, params, alts[0], times, vals, 0, "time1"); + + // test multiple time axes + varNames = new ArrayList<>(); + varNames.add("full4"); + varNames.add("withT1"); + vals = new double[] {11.0, 1011.0}; + params.setVariables(varNames); + params.setVertCoord(alts[0]); + readCoverageAsPoint(varNames, params, alts[0], times, vals, 0, "time"); + readCoverageAsPoint(varNames, params, alts[0], times, vals, 1, "time1"); } @Test @@ -129,6 +143,48 @@ public void testCoverageAsProfile() throws IOException { varNames.add("4D"); params.setVariables(varNames); readCoverageAsProfile(varNames, params, alts, times, expected); + + // test two different time axes + varNames = new ArrayList<>(); + varNames.add("full4"); + varNames.add("withT1"); + params = new SubsetParams(); + params.setVariables(varNames); + params.setLatLonPoint(latlon); + readCoverageAsProfile(varNames, params, alts, times, expected); + readCoverageAsProfile(varNames, params, alts, times, expected, 1, "time1", "z"); + + // test no time different z-axis names + varNames = new ArrayList<>(); + varNames.add("full3"); + varNames.add("Z1noT"); + params = new SubsetParams(); + params.setVariables(varNames); + params.setLatLonPoint(latlon); + readCoverageAsProfile(varNames, params, alts, times, Arrays.copyOfRange(expected, 0, 4)); + readCoverageAsProfile(varNames, params, alts, times, Arrays.copyOfRange(expected, 0, 2), 1, "time", "z1"); + + // test single timeseries different z-axis names + varNames = new ArrayList<>(); + varNames.add("withT1"); + varNames.add("withT1Z1"); + params = new SubsetParams(); + params.setVariables(varNames); + params.setLatLonPoint(latlon); + readCoverageAsProfile(varNames, params, alts, times, expected, 0, "time1", "z"); + readCoverageAsProfile(varNames, params, Arrays.copyOfRange(alts, 0, 2), times, Arrays.copyOfRange(expected, 0, 4), + 1, "time1", "z1"); + + // test different time-axis names and different z-axis names + varNames = new ArrayList<>(); + varNames.add("full4"); + varNames.add("withT1Z1"); + params = new SubsetParams(); + params.setVariables(varNames); + params.setLatLonPoint(latlon); + readCoverageAsProfile(varNames, params, alts, times, expected); + readCoverageAsProfile(varNames, params, Arrays.copyOfRange(alts, 0, 2), times, Arrays.copyOfRange(expected, 0, 4), + 1, "time1", "z1"); } @Test @@ -158,16 +214,22 @@ public void testSubset() throws IOException { private void readCoverageAsPoint(List varNames, SubsetParams params, double alt, double[] time, double[] expected) throws IOException { + readCoverageAsPoint(varNames, params, alt, time, expected, 0, "time"); + } + + private void readCoverageAsPoint(List varNames, SubsetParams params, double alt, double[] time, + double[] expected, int stationIndex, String timeName) throws IOException { FeatureDatasetPoint fdp = new CoverageAsPoint(gds, varNames, params).asFeatureDatasetPoint(); assertThat(fdp.getFeatureType()).isEqualTo(FeatureType.STATION); - final String varName = varNames.get(0); + final String varName = varNames.get(stationIndex); StationTimeSeriesFeatureCollection fc = - (StationTimeSeriesFeatureCollection) fdp.getPointFeatureCollectionList().get(0); + (StationTimeSeriesFeatureCollection) fdp.getPointFeatureCollectionList().get(stationIndex); assertThat(fc).isNotNull(); assertThat(fc.getCollectionFeatureType()).isEqualTo(FeatureType.STATION); StationTimeSeriesFeature stationFeature = (StationTimeSeriesFeature) fc.getStationFeatures().get(0); + int i = 0; for (PointFeature feat : stationFeature) { assertThat(feat).isInstanceOf(StationPointFeature.class); @@ -177,6 +239,7 @@ private void readCoverageAsPoint(List varNames, SubsetParams params, dou assertThat(station.getLatitude()).isEqualTo(lat); assertThat(station.getLongitude()).isEqualTo(lon); assertThat(station.getAltitude()).isEqualTo(alt); + assertThat(((StationTimeSeriesFeature) station).getTimeName()).isEqualTo(timeName); assertThat(feat.getObservationTime()).isEqualTo(time[i]); // verify point data @@ -189,11 +252,17 @@ private void readCoverageAsPoint(List varNames, SubsetParams params, dou private void readCoverageAsProfile(List varNames, SubsetParams params, double[] alt, double[] time, double[] expected) throws IOException { + readCoverageAsProfile(varNames, params, alt, time, expected, 0, "time", "z"); + } + + private void readCoverageAsProfile(List varNames, SubsetParams params, double[] alt, double[] time, + double[] expected, int stationIndex, String timeName, String altName) throws IOException { FeatureDatasetPoint fdp = new CoverageAsPoint(gds, varNames, params).asFeatureDatasetPoint(); assertThat(fdp.getFeatureType()).isEqualTo(FeatureType.STATION_PROFILE); - final String varName = varNames.get(0); + final String varName = varNames.get(stationIndex); - StationProfileFeatureCollection fc = (StationProfileFeatureCollection) fdp.getPointFeatureCollectionList().get(0); + StationProfileFeatureCollection fc = + (StationProfileFeatureCollection) fdp.getPointFeatureCollectionList().get(stationIndex); assertThat(fc).isNotNull(); assertThat(fc.getCollectionFeatureType()).isEqualTo(FeatureType.STATION_PROFILE); @@ -207,8 +276,10 @@ private void readCoverageAsProfile(List varNames, SubsetParams params, d Station station = ((StationPointFeature) feat).getStation(); assertThat(station.getLatitude()).isEqualTo(lat); assertThat(station.getLongitude()).isEqualTo(lon); - assertThat(feat.getLocation().getAltitude()).isEqualTo(alts[i % alts.length]); - assertThat(feat.getObservationTime()).isEqualTo(time[i / alts.length]); + assertThat(feat.getLocation().getAltitude()).isEqualTo(alt[i % alt.length]); + assertThat(((StationProfileFeature) station).getTimeName()).isEqualTo(timeName); + assertThat(((StationProfileFeature) station).getAltName()).isEqualTo(altName); + assertThat(feat.getObservationTime()).isEqualTo(time[i / alt.length]); // verify point data Array data = feat.getDataAll().getArray(varName); diff --git a/cdm/core/src/test/java/ucar/nc2/internal/iosp/hdf5/TestH5iospNew.java b/cdm/core/src/test/java/ucar/nc2/internal/iosp/hdf5/TestH5iospNew.java index f33716a0b5..0830ab4203 100644 --- a/cdm/core/src/test/java/ucar/nc2/internal/iosp/hdf5/TestH5iospNew.java +++ b/cdm/core/src/test/java/ucar/nc2/internal/iosp/hdf5/TestH5iospNew.java @@ -1,18 +1,23 @@ package ucar.nc2.internal.iosp.hdf5; import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; import java.io.IOException; import java.lang.invoke.MethodHandles; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.junit.experimental.categories.Category; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ucar.nc2.NetcdfFile; import ucar.nc2.NetcdfFiles; +import ucar.nc2.Variable; +import ucar.nc2.dataset.NetcdfDatasets; import ucar.nc2.iosp.IOServiceProvider; import ucar.unidata.util.test.TestDir; +import ucar.unidata.util.test.category.NeedsCdmUnitTest; public class TestH5iospNew { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); @@ -60,4 +65,18 @@ public void shouldCloseRafs() throws IOException { assertThat(h5iospNew.getHeader().getRandomAccessFile()).isNull(); assertThat(h5iospNew.getHeader().getH5objects().getRandomAccessFile()).isNull(); } + + @Test + @Category(NeedsCdmUnitTest.class) + public void shouldThrowWhenReadingTooLargeVariable() throws IOException { + final String filename = TestDir.cdmUnitTestDir + "formats/netcdf4/UpperDeschutes_t4p10_swemelt.nc"; + + try (NetcdfFile ncfile = NetcdfDatasets.openFile(filename, null)) { + final Variable variable = ncfile.findVariable("UpperDeschutes_t4p10_swemelt"); + assertThat((Object) variable).isNotNull(); + assertThat(variable.getSize()).isAtLeast(Integer.MAX_VALUE); + final RuntimeException exception = assertThrows(RuntimeException.class, variable::read); + assertThat(exception.getMessage()).isEqualTo("Read request size of 2524250575 is too large."); + } + } } diff --git a/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestEnhance.java b/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestEnhance.java index c5cdbe207a..41585fd5d6 100644 --- a/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestEnhance.java +++ b/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestEnhance.java @@ -72,8 +72,7 @@ public void testStandaloneEnhance() throws IOException { Variable scaledvar = ncfile.findVariable("scaledvar"); assertThat((Object) scaledvar).isNotNull(); assertThat(scaledvar.getDataType()).isEqualTo(DataType.FLOAT); - assertThat(scaledvar.attributes().hasAttribute("scale_factor")).isTrue(); - assertThat(scaledvar.attributes().findAttributeDouble("scale_factor", 1.0)).isEqualTo(2.0); + assertThat(scaledvar.attributes().hasAttribute("scale_factor")).isFalse(); assertThat(scaledvar.readScalarFloat()).isEqualTo(12.0f); } } @@ -91,8 +90,7 @@ public void testStandaloneEnhanceDataset() throws IOException { Variable scaledvar = ncfile.findVariable("scaledvar"); assertThat((Object) scaledvar).isNotNull(); assertThat(scaledvar.getDataType()).isEqualTo(DataType.FLOAT); - assertThat(scaledvar.attributes().hasAttribute("scale_factor")).isTrue(); - assertThat(scaledvar.attributes().findAttributeDouble("scale_factor", 1.0)).isEqualTo(2.0); + assertThat(scaledvar.attributes().hasAttribute("scale_factor")).isFalse(); assertThat(scaledvar.readScalarFloat()).isEqualTo(12.0f); } } @@ -110,8 +108,6 @@ public void testStandaloneDoubleEnhanceDataset() throws IOException { Variable scaledvar = ncfile.findVariable("scaledvar"); assertThat((Object) scaledvar).isNotNull(); assertThat(scaledvar.getDataType()).isEqualTo(DataType.FLOAT); - assertThat(scaledvar.attributes().hasAttribute("scale_factor")).isTrue(); - assertThat(scaledvar.attributes().findAttributeDouble("scale_factor", 1.0)).isEqualTo(2.0); assertThat(scaledvar.readScalarFloat()).isEqualTo(12.0f); } } diff --git a/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestNcmlModifyAtts.java b/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestNcmlModifyAtts.java index a099d04640..8a0befa078 100644 --- a/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestNcmlModifyAtts.java +++ b/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestNcmlModifyAtts.java @@ -29,16 +29,26 @@ public class TestNcmlModifyAtts { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); private static NetcdfFile ncfile = null; + private static NetcdfFile aggregationNcFile = null; + private static NetcdfFile aggregationScanNcFile = null; @BeforeClass public static void setUp() throws IOException { String filename = "file:" + TestNcmlRead.topDir + "modifyAtts.xml"; ncfile = NcmlReader.readNcml(filename, null, null).build(); + + String aggregationFilename = "file:" + TestNcmlRead.topDir + "aggregationModifyAttributes.xml"; + aggregationNcFile = NcmlReader.readNcml(aggregationFilename, null, null).build(); + + String aggregationScanFilename = "file:" + TestNcmlRead.topDir + "aggregationScanModifyAttributes.xml"; + aggregationScanNcFile = NcmlReader.readNcml(aggregationScanFilename, null, null).build(); } @AfterClass public static void tearDown() throws IOException { ncfile.close(); + aggregationNcFile.close(); + aggregationScanNcFile.close(); } @Test @@ -258,4 +268,59 @@ public void testReadData2() throws IOException { Assert2.assertNearlyEquals(dataI.getDoubleNext(), 4.0); Assert2.assertNearlyEquals(dataI.getDoubleNext(), 2.0); } + + @Test + public void shouldRemoveAttributesOfAggregationScanVariable() { + verifyAggregationVariableAttributeRemoved(aggregationScanNcFile); + } + + @Test + public void shouldRemoveAttributesOfAggregationVariable() { + verifyAggregationVariableAttributeRemoved(aggregationNcFile); + } + + @Test + public void shouldModifyAttributesOfAggregationScanVariable() { + verifyAggregationVariableAttributeModified(aggregationScanNcFile); + } + + @Test + public void shouldModifyAttributesOfAggregationVariable() { + verifyAggregationVariableAttributeModified(aggregationNcFile); + } + + private void verifyAggregationVariableAttributeModified(NetcdfFile ncFile) { + final Variable variable = ncFile.findVariable("T"); + + assertThat(variable != null).isTrue(); + + // verify that the units attribute was renamed and isn't there anymore + final Attribute oldUnits = variable.findAttribute("units"); + assertThat(oldUnits).isNull(); + + // verify that the attribute was renamed + final Attribute renamedUnits = variable.findAttribute("renamed_units"); + assertThat(renamedUnits).isNotNull(); + + // verify that the renamed attribute still has the correct value + assertThat(renamedUnits.getStringValue()).isEqualTo("degC"); + } + + private void verifyAggregationVariableAttributeRemoved(NetcdfFile ncFile) { + final Variable variable = ncFile.findVariable("T"); + + assertThat(variable != null).isTrue(); + assertThat(variable.getAttributes().size()).isEqualTo(2); + + // verify that attribute long_name was removed + final Attribute removedAttribute = variable.findAttribute("long_name"); + assertThat(removedAttribute).isNull(); + + // verify that attributes new_attribute and renamed_units were not incorrectly removed + final Attribute newAttribute = variable.findAttribute("new_attribute"); + assertThat(newAttribute).isNotNull(); + + final Attribute renamedUnits = variable.findAttribute("renamed_units"); + assertThat(renamedUnits).isNotNull(); + } } diff --git a/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestNcmlModifyDim.java b/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestNcmlModifyDim.java new file mode 100644 index 0000000000..4d55ba4d36 --- /dev/null +++ b/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestNcmlModifyDim.java @@ -0,0 +1,57 @@ +package ucar.nc2.internal.ncml; + +import static com.google.common.truth.Truth.assertThat; + +import java.io.IOException; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import ucar.ma2.Array; +import ucar.ma2.IndexIterator; +import ucar.nc2.Dimension; +import ucar.nc2.NetcdfFile; +import ucar.nc2.Variable; +import ucar.nc2.ncml.TestNcmlRead; + +public class TestNcmlModifyDim { + private static final String filename = "file:./" + TestNcmlRead.topDir + "modifyDim.xml"; + private static NetcdfFile ncfile = null; + + @BeforeClass + public static void setUp() throws IOException { + ncfile = NcmlReader.readNcml(filename, null, null).build(); + } + + @AfterClass + public static void tearDown() throws IOException { + ncfile.close(); + } + + @Test + public void shouldRenameDim() throws IOException { + assertThat(ncfile.getRootGroup().getDimensions().size()).isEqualTo(3); + + Dimension newDim = ncfile.findDimension("newTime"); + assertThat(newDim).isNotNull(); + assertThat(newDim.isVariableLength()).isFalse(); + assertThat(newDim.isShared()).isTrue(); + assertThat(newDim.isUnlimited()).isTrue(); + + Dimension oldDim = ncfile.findDimension("time"); + assertThat(oldDim).isNull(); + + Variable time = ncfile.findVariable("time"); + assertThat((Object) time).isNotNull(); + assertThat(time.getDimensionsString()).isEqualTo("newTime"); + + Array data = time.read(); + assertThat(data.getRank()).isEqualTo(1); + assertThat(data.getSize()).isEqualTo(4); + assertThat(data.getShape()[0]).isEqualTo(4); + assertThat(data.getElementType()).isEqualTo(int.class); + + IndexIterator dataIter = data.getIndexIterator(); + assertThat(dataIter.getIntNext()).isEqualTo(6); + assertThat(dataIter.getIntNext()).isEqualTo(18); + } +} diff --git a/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestNcmlReader.java b/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestNcmlReader.java new file mode 100644 index 0000000000..00f307cacd --- /dev/null +++ b/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestNcmlReader.java @@ -0,0 +1,62 @@ +package ucar.nc2.internal.ncml; + +import static com.google.common.truth.Truth.assertThat; +import static ucar.ma2.MAMath.nearlyEquals; + +import java.io.IOException; +import org.jdom2.Document; +import org.jdom2.Element; +import org.jdom2.JDOMException; +import org.jdom2.input.SAXBuilder; +import org.junit.Test; +import ucar.ma2.Array; +import ucar.nc2.NetcdfFile; +import ucar.nc2.Variable; +import ucar.nc2.dataset.NetcdfDataset; +import ucar.nc2.dataset.NetcdfDatasets; +import ucar.nc2.dataset.VariableDS; +import ucar.nc2.ncml.TestEnhanceStandardizer; +import ucar.nc2.ncml.TestNcmlRead; +import ucar.unidata.util.test.TestDir; + +public class TestNcmlReader { + + @Test + public void shouldMergeNcml() throws IOException, JDOMException { + final String filename = TestDir.cdmLocalTestDataDir + "example1.nc"; + + try (NetcdfFile netcdfFile = NetcdfDatasets.openFile(filename, null)) { + final NetcdfDataset netcdfDataset = NcmlReader.mergeNcml(netcdfFile, getNcmlElement("modifyVars.xml")).build(); + + final Variable ncmlVariable = netcdfDataset.findVariable("deltaLat"); + assertThat((Object) ncmlVariable).isInstanceOf(VariableDS.class); + + final Variable originalVariable = netcdfDataset.findVariable("lat"); + assertThat((Object) originalVariable).isInstanceOf(VariableDS.class); + } + } + + @Test + public void shouldMergeNcmlWithEnhancements() throws IOException, JDOMException { + final String filename = TestDir.cdmLocalTestDataDir + "example1.nc"; + + try (NetcdfFile netcdfFile = NetcdfDatasets.openFile(filename, null)) { + final NetcdfDataset netcdfDataset = + NcmlReader.mergeNcml(netcdfFile, getNcmlElement("enhance/testStandardizer.ncml")).build(); + + final Variable ncmlVariable = netcdfDataset.findVariable("doublevar"); + assertThat((Object) ncmlVariable).isNotNull(); + Array dataDoubles = ncmlVariable.read(); + assertThat(nearlyEquals(dataDoubles, TestEnhanceStandardizer.DATA_DOUBLES)).isTrue(); + } + } + + private static Element getNcmlElement(String filename) throws IOException, JDOMException { + final String ncml = TestNcmlRead.topDir + filename; + + SAXBuilder saxBuilder = new SAXBuilder(); + saxBuilder.setExpandEntities(false); + Document jdomDoc = saxBuilder.build(ncml); + return jdomDoc.getRootElement(); + } +} diff --git a/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestNcmlRenameVar.java b/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestNcmlRenameVar.java index f52d39ae42..649fa8ce1c 100644 --- a/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestNcmlRenameVar.java +++ b/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestNcmlRenameVar.java @@ -4,7 +4,7 @@ */ package ucar.nc2.internal.ncml; -import static ucar.nc2.util.Misc.nearlyEquals; +import static com.google.common.truth.Truth.assertThat; import java.io.IOException; import java.lang.invoke.MethodHandles; import org.junit.AfterClass; @@ -24,20 +24,14 @@ public class TestNcmlRenameVar { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + private static final double TOLERANCE = 1e-8; static NetcdfFile ncfile = null; static String filename = "file:./" + TestNcmlRead.topDir + "renameVar.xml"; @BeforeClass - public static void setUp() { - try { - ncfile = NcmlReader.readNcml(filename, null, null).build(); - } catch (java.net.MalformedURLException e) { - System.out.println("bad URL error = " + e); - } catch (IOException e) { - System.out.println("IO error = " + e); - e.printStackTrace(); - } + public static void setUp() throws IOException { + ncfile = NcmlReader.readNcml(filename, null, null).build(); } @AfterClass @@ -48,178 +42,157 @@ public static void tearDown() throws IOException { @Test public void testStructure() { Attribute att = ncfile.findGlobalAttribute("title"); - assert null != att; - assert !att.isArray(); - assert att.isString(); - assert att.getDataType() == DataType.STRING; - assert att.getStringValue().equals("Example Data"); - assert att.getNumericValue() == null; - assert att.getNumericValue(3) == null; + assertThat(att).isNotNull(); + assertThat(!att.isArray()).isTrue(); + assertThat(att.isString()).isTrue(); + assertThat(att.getDataType()).isEqualTo(DataType.STRING); + assertThat(att.getStringValue()).isEqualTo("Example Data"); + assertThat(att.getNumericValue()).isNull(); + assertThat(att.getNumericValue(3)).isNull(); att = ncfile.findGlobalAttribute("testFloat"); - assert null != att; - assert att.isArray(); - assert !att.isString(); - assert att.getDataType() == DataType.FLOAT; - assert att.getStringValue() == null; - assert att.getNumericValue().equals(1.0f); - assert att.getNumericValue(3).equals(4.0f); + assertThat(att).isNotNull(); + assertThat(att.isArray()).isTrue(); + assertThat(att.isString()).isFalse(); + assertThat(att.getDataType()).isEqualTo(DataType.FLOAT); + assertThat(att.getStringValue()).isNull(); + assertThat(att.getNumericValue()).isEqualTo(1.0f); + assertThat(att.getNumericValue(3)).isEqualTo(4.0f); Dimension latDim = ncfile.findDimension("lat"); - assert null != latDim; - assert latDim.getShortName().equals("lat"); - assert latDim.getLength() == 3; - assert !latDim.isUnlimited(); + assertThat(latDim).isNotNull(); + assertThat(latDim.getShortName()).isEqualTo("lat"); + assertThat(latDim.getLength()).isEqualTo(3); + assertThat(latDim.isUnlimited()).isFalse(); Dimension timeDim = ncfile.findDimension("time"); - assert null != timeDim; - assert timeDim.getShortName().equals("time"); - assert timeDim.getLength() == 4; - assert timeDim.isUnlimited(); + assertThat(timeDim).isNotNull(); + assertThat(timeDim.getShortName()).isEqualTo("time"); + assertThat(timeDim.getLength()).isEqualTo(4); + assertThat(timeDim.isUnlimited()).isTrue(); } @Test - public void testReadCoordvar() { + public void testReadCoordvar() throws IOException { Variable lat = ncfile.findVariable("lat"); - assert null != lat; - assert lat.getShortName().equals("lat"); - assert lat.getRank() == 1; - assert lat.getSize() == 3; - assert lat.getShape()[0] == 3; - assert lat.getDataType() == DataType.FLOAT; + assertThat((Object) lat).isNotNull(); + assertThat(lat.getShortName()).isEqualTo("lat"); + assertThat(lat.getRank()).isEqualTo(1); + assertThat(lat.getSize()).isEqualTo(3); + assertThat(lat.getShape()[0]).isEqualTo(3); + assertThat(lat.getDataType()).isEqualTo(DataType.FLOAT); - assert !lat.isUnlimited(); - assert lat.getDimension(0) == ncfile.findDimension("lat"); + assertThat(lat.isUnlimited()).isFalse(); + assertThat(lat.getDimension(0)).isEqualTo(ncfile.findDimension("lat")); Attribute att = lat.findAttribute("units"); - assert null != att; - assert !att.isArray(); - assert att.isString(); - assert att.getDataType() == DataType.STRING; - assert att.getStringValue().equals("degrees_north"); - assert att.getNumericValue() == null; - assert att.getNumericValue(3) == null; - - try { - Array data = lat.read(); - assert data.getRank() == 1; - assert data.getSize() == 3; - assert data.getShape()[0] == 3; - assert data.getElementType() == float.class; - - IndexIterator dataI = data.getIndexIterator(); - assert nearlyEquals(dataI.getDoubleNext(), 41.0); - assert nearlyEquals(dataI.getDoubleNext(), 40.0); - assert nearlyEquals(dataI.getDoubleNext(), 39.0); - } catch (IOException io) { - } - + assertThat(att).isNotNull(); + assertThat(att.isArray()).isFalse(); + assertThat(att.isString()).isTrue(); + assertThat(att.getDataType()).isEqualTo(DataType.STRING); + assertThat(att.getStringValue()).isEqualTo("degrees_north"); + assertThat(att.getNumericValue()).isNull(); + assertThat(att.getNumericValue(3)).isNull(); + + Array data = lat.read(); + assertThat(data.getRank()).isEqualTo(1); + assertThat(data.getSize()).isEqualTo(3); + assertThat(data.getShape()[0]).isEqualTo(3); + assertThat(data.getElementType()).isEqualTo(float.class); + + IndexIterator dataI = data.getIndexIterator(); + assertThat(dataI.getDoubleNext()).isWithin(TOLERANCE).of(41.0); + assertThat(dataI.getDoubleNext()).isWithin(TOLERANCE).of(40.0); + assertThat(dataI.getDoubleNext()).isWithin(TOLERANCE).of(39.0); } @Test - public void testReadData() { + public void testReadData() throws IOException { Variable v = ncfile.findVariable("ReletiveHumidity"); - assert null != v; - assert v.getShortName().equals("ReletiveHumidity"); - assert v.getRank() == 3; - assert v.getSize() == 48; - assert v.getShape()[0] == 4; - assert v.getShape()[1] == 3; - assert v.getShape()[2] == 4; - assert v.getDataType() == DataType.INT; - - assert !v.isCoordinateVariable(); - assert v.isUnlimited(); - - assert v.getDimension(0) == ncfile.findDimension("time"); - assert v.getDimension(1) == ncfile.findDimension("lat"); - assert v.getDimension(2) == ncfile.findDimension("lon"); + assertThat((Object) v).isNotNull(); + assertThat(v.getShortName()).isEqualTo("ReletiveHumidity"); + assertThat(v.getRank()).isEqualTo(3); + assertThat(v.getSize()).isEqualTo(48); + assertThat(v.getShape()[0]).isEqualTo(4); + assertThat(v.getShape()[1]).isEqualTo(3); + assertThat(v.getShape()[2]).isEqualTo(4); + assertThat(v.getDataType()).isEqualTo(DataType.INT); + + assertThat(v.isCoordinateVariable()).isFalse(); + assertThat(v.isUnlimited()).isTrue(); + + assertThat(v.getDimension(0)).isEqualTo(ncfile.findDimension("time")); + assertThat(v.getDimension(1)).isEqualTo(ncfile.findDimension("lat")); + assertThat(v.getDimension(2)).isEqualTo(ncfile.findDimension("lon")); Attribute att = v.findAttribute("units"); - assert null != att; - assert !att.isArray(); - assert att.isString(); - assert att.getDataType() == DataType.STRING; - assert att.getStringValue().equals("percent"); - assert att.getNumericValue() == null; - assert att.getNumericValue(3) == null; - - try { - Array data = v.read(); - assert data.getRank() == 3; - assert data.getSize() == 48; - assert data.getShape()[0] == 4; - assert data.getShape()[1] == 3; - assert data.getShape()[2] == 4; - assert data.getElementType() == int.class; - - IndexIterator dataI = data.getIndexIterator(); - assert dataI.getIntNext() == 1; - assert dataI.getIntNext() == 2; - assert dataI.getIntNext() == 3; - assert dataI.getIntNext() == 4; - assert dataI.getIntNext() == 5; - } catch (IOException io) { - } + assertThat(att).isNotNull(); + assertThat(att.isArray()).isFalse(); + assertThat(att.isString()).isTrue(); + assertThat(att.getDataType()).isEqualTo(DataType.STRING); + assertThat(att.getStringValue()).isEqualTo("percent"); + assertThat(att.getNumericValue()).isNull(); + assertThat(att.getNumericValue(3)).isNull(); + + Array data = v.read(); + assertThat(data.getRank()).isEqualTo(3); + assertThat(data.getSize()).isEqualTo(48); + assertThat(data.getShape()[0]).isEqualTo(4); + assertThat(data.getShape()[1]).isEqualTo(3); + assertThat(data.getShape()[2]).isEqualTo(4); + assertThat(data.getElementType()).isEqualTo(int.class); + + IndexIterator dataI = data.getIndexIterator(); + assertThat(dataI.getIntNext()).isEqualTo(1); + assertThat(dataI.getIntNext()).isEqualTo(2); + assertThat(dataI.getIntNext()).isEqualTo(3); + assertThat(dataI.getIntNext()).isEqualTo(4); + assertThat(dataI.getIntNext()).isEqualTo(5); } @Test - public void testReadSlice() { + public void testReadSlice() throws InvalidRangeException, IOException { Variable v = ncfile.findVariable("ReletiveHumidity"); int[] origin = new int[3]; int[] shape = {2, 3, 1}; - try { - Array data = v.read(origin, shape); - assert data.getRank() == 3; - assert data.getSize() == 6; - assert data.getShape()[0] == 2; - assert data.getShape()[1] == 3; - assert data.getShape()[2] == 1; - assert data.getElementType() == int.class; - - IndexIterator dataI = data.getIndexIterator(); - assert dataI.getIntNext() == 1; - assert dataI.getIntNext() == 5; - assert dataI.getIntNext() == 9; - assert dataI.getIntNext() == 21; - assert dataI.getIntNext() == 25; - assert dataI.getIntNext() == 29; - } catch (InvalidRangeException io) { - assert false; - } catch (IOException io) { - io.printStackTrace(); - assert false; - } + Array data = v.read(origin, shape); + assertThat(data.getRank()).isEqualTo(3); + assertThat(data.getSize()).isEqualTo(6); + assertThat(data.getShape()[0]).isEqualTo(2); + assertThat(data.getShape()[1]).isEqualTo(3); + assertThat(data.getShape()[2]).isEqualTo(1); + assertThat(data.getElementType()).isEqualTo(int.class); + + IndexIterator dataI = data.getIndexIterator(); + assertThat(dataI.getIntNext()).isEqualTo(1); + assertThat(dataI.getIntNext()).isEqualTo(5); + assertThat(dataI.getIntNext()).isEqualTo(9); + assertThat(dataI.getIntNext()).isEqualTo(21); + assertThat(dataI.getIntNext()).isEqualTo(25); + assertThat(dataI.getIntNext()).isEqualTo(29); } @Test - public void testReadSlice2() { + public void testReadSlice2() throws InvalidRangeException, IOException { Variable v = ncfile.findVariable("ReletiveHumidity"); int[] origin = new int[3]; int[] shape = {2, 1, 3}; - try { - Array data = v.read(origin, shape).reduce(); - assert data.getRank() == 2; - assert data.getSize() == 6; - assert data.getShape()[0] == 2; - assert data.getShape()[1] == 3; - assert data.getElementType() == int.class; - - IndexIterator dataI = data.getIndexIterator(); - assert dataI.getIntNext() == 1; - assert dataI.getIntNext() == 2; - assert dataI.getIntNext() == 3; - assert dataI.getIntNext() == 21; - assert dataI.getIntNext() == 22; - assert dataI.getIntNext() == 23; - } catch (InvalidRangeException io) { - assert false; - } catch (IOException io) { - io.printStackTrace(); - assert false; - } + Array data = v.read(origin, shape).reduce(); + assertThat(data.getRank()).isEqualTo(2); + assertThat(data.getSize()).isEqualTo(6); + assertThat(data.getShape()[0]).isEqualTo(2); + assertThat(data.getShape()[1]).isEqualTo(3); + assertThat(data.getElementType()).isEqualTo(int.class); + + IndexIterator dataI = data.getIndexIterator(); + assertThat(dataI.getIntNext()).isEqualTo(1); + assertThat(dataI.getIntNext()).isEqualTo(2); + assertThat(dataI.getIntNext()).isEqualTo(3); + assertThat(dataI.getIntNext()).isEqualTo(21); + assertThat(dataI.getIntNext()).isEqualTo(22); + assertThat(dataI.getIntNext()).isEqualTo(23); } } diff --git a/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestRenameVariableInAggregation.java b/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestRenameVariableInAggregation.java new file mode 100644 index 0000000000..24a248856e --- /dev/null +++ b/cdm/core/src/test/java/ucar/nc2/internal/ncml/TestRenameVariableInAggregation.java @@ -0,0 +1,67 @@ +package ucar.nc2.internal.ncml; + +import static com.google.common.truth.Truth.assertThat; + +import java.io.IOException; +import java.io.StringReader; +import org.junit.Test; +import ucar.ma2.Array; +import ucar.ma2.InvalidRangeException; +import ucar.ma2.Section; +import ucar.nc2.NetcdfFile; +import ucar.nc2.Variable; + +public class TestRenameVariableInAggregation { + private static final double TOLERANCE = 1.0e-6; + + @Test + public void shouldRenameVariableUsedInAggregation() throws IOException, InvalidRangeException { + final String ncml = "\n" // leavit + + "\n" // leavit + + " \n" // leavit + + " \n" // leavit + + " \n" // leavit + + " \n" // leavit + + " \n" // leavit + + " \n" // leavit + + " \n" // leavit + + ""; // leavit + + checkNcmlDataset(ncml); + } + + @Test + public void shouldRenameVariableUsedInAggregationWithScan() throws IOException, InvalidRangeException { + final String ncml = "\n" // leavit + + "\n" // leavit + + " \n" // leavit + + " \n" // leavit + + " \n" // leavit + + " \n" // leavit + + " \n" // leavit + + ""; // leavit + + checkNcmlDataset(ncml); + } + + private static void checkNcmlDataset(String ncml) throws InvalidRangeException, IOException { + try (NetcdfFile ncfile = NcmlReader.readNcml(new StringReader(ncml), null, null).build()) { + final Variable oldVariable = ncfile.findVariable("T"); + assertThat((Object) oldVariable).isNull(); + final Variable newVariable = ncfile.findVariable("temperature"); + assertThat((Object) newVariable).isNotNull(); + + final Array partialArray = newVariable.read(new Section("0:2, 0:0, 0:0")); + assertThat(partialArray.getSize()).isEqualTo(3); + assertThat(partialArray.getDouble(0)).isWithin(TOLERANCE).of(0.0); + assertThat(partialArray.getDouble(1)).isWithin(TOLERANCE).of(100.0); + assertThat(partialArray.getDouble(2)).isWithin(TOLERANCE).of(200.0); + + final Array array = newVariable.read(); + assertThat(array.getSize()).isEqualTo(36); + assertThat(array.getDouble(0)).isWithin(TOLERANCE).of(0.0); + assertThat(array.getDouble(12)).isWithin(TOLERANCE).of(100.0); + assertThat(array.getDouble(24)).isWithin(TOLERANCE).of(200.0); + } + } +} diff --git a/cdm/core/src/test/java/ucar/nc2/iosp/hdf5/TestDataBTree.java b/cdm/core/src/test/java/ucar/nc2/iosp/hdf5/TestDataBTree.java index a6b018dac2..2d37c07193 100644 --- a/cdm/core/src/test/java/ucar/nc2/iosp/hdf5/TestDataBTree.java +++ b/cdm/core/src/test/java/ucar/nc2/iosp/hdf5/TestDataBTree.java @@ -9,9 +9,9 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ucar.nc2.iosp.hdf5.H5header.Vinfo; import ucar.nc2.NetcdfFile; import ucar.nc2.Variable; -import ucar.nc2.iosp.hdf5.H5header.Vinfo; import ucar.unidata.util.test.TestDir; public class TestDataBTree { diff --git a/cdm/core/src/test/java/ucar/nc2/iosp/hdf5/TestEnumTypedef.java b/cdm/core/src/test/java/ucar/nc2/iosp/hdf5/TestEnumTypedef.java index da45ee3a65..82a3f631ee 100644 --- a/cdm/core/src/test/java/ucar/nc2/iosp/hdf5/TestEnumTypedef.java +++ b/cdm/core/src/test/java/ucar/nc2/iosp/hdf5/TestEnumTypedef.java @@ -2,30 +2,218 @@ package ucar.nc2.iosp.hdf5; import static com.google.common.truth.Truth.assertThat; + +import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.io.StringWriter; +import java.lang.invoke.MethodHandles; +import java.util.ArrayList; +import java.util.List; + import ucar.ma2.DataType; -import ucar.nc2.EnumTypedef; -import ucar.nc2.NetcdfFile; -import ucar.nc2.NetcdfFiles; -import ucar.nc2.Variable; +import ucar.nc2.*; import ucar.unidata.util.test.TestDir; +import ucar.unidata.util.test.UnitTestCommon; /** Test handling of enums in hdf5 / netcdf 4 files. */ -public class TestEnumTypedef { +// see Issue #126 + +/** + * This Test uses the JUNIT Version 4 parameterized test mechanism. + * The set of arguments for each test is encapsulated in a class + * called TestCase. This allows for code re-use and for extending + * tests by adding fields to the TestCase object. + */ + +@RunWith(Parameterized.class) +public class TestEnumTypedef extends UnitTestCommon { + + ////////////////////////////////////////////////// + // Static Fields + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + ////////////////////////////////////////////////// + // Test Case Class + + // Encapulate the arguments for each test + static class TestCase { + public String file; + public String fqn; + public String enum_t; + public DataType basetype; + public String input; + public String baseline; + + public TestCase(String file, String fqn, String enum_t, DataType basetype, String input, String baseline) { + this.file = file; + this.fqn = fqn; + this.enum_t = enum_t; + this.basetype = basetype; + this.input = input; + this.baseline = baseline; + } + + // This defines how the test is reported by JUNIT. + public String toString() { + return this.file; + } + } + + ////////////////////////////////////////////////// + // Test Generator + + @Parameterized.Parameters(name = "{index}: {0}") + public static List defineTestCases() { + List testcases = new ArrayList<>(); + TestCase tc; + String file; + String fqn; + String enum_t; + DataType basetype; + String input; + String baseline; + + // Test case where: + // * enum type is in same group to the variable using it + // * Explicit enum type + // * Anonymous variable enum type + file = "test_atomic_types.nc"; + fqn = "/primary_cloud"; + enum_t = "cloud_class_t"; + basetype = DataType.ENUM1; + input = TestDir.cdmLocalTestDataDir + "hdf5/" + file; + baseline = null; + tc = new TestCase(file, fqn, enum_t, basetype, input, baseline); + // testcases.add(tc); + + // Test case where enum type is in a parent group to the variable using it. + // Test case where: + // * enum type is in parent group to the variable using it + // * Explicit enum type + // * Anonymous variable enum type + // * Anonymous attribute enum type + file = "test_enum_2.nc4"; + fqn = "/h/primary_cloud"; + enum_t = "cloud_class_t"; + basetype = DataType.ENUM1; + input = TestDir.cdmLocalTestDataDir + "hdf5/" + file; + baseline = null; + tc = new TestCase(file, fqn, enum_t, basetype, input, baseline); + testcases.add(tc); + + // Test case where enum type is anonymous + // Test case where: + // * enum type is in same group to the variable using it + // * Explicit enum type + // * Anonymous variable enum type + file = "ref_anon_enum.h5"; + fqn = "/EnumTest"; + enum_t = "EnumTest_enum_t"; + basetype = DataType.ENUM4; + input = TestDir.cdmLocalTestDataDir + "hdf5/" + file; + baseline = "netcdf ref_anon_enum.h5 {\n" + "types:\n" + + "enum EnumTest_enum_t { RED = 0, GREEN = 1, BLUE = 2, WHITE = 3, BLACK = 4};\n" + "variables:\n" + + "enum EnumTest_enum_t EnumTest(10);\n" + "data:\n" + "EnumTest =\n" + "{0, 1, 2, 3, 4, 0, 1, 2, 3, 4}\n" + + "\n}"; + tc = new TestCase(file, fqn, enum_t, basetype, input, baseline); + // testcases.add(tc); + + // Test case where enum type exists + // Test case where: + // * enum type is in same group to the variable using it + // * Explicit enum type + // * Anonymous variable enum type + file = "test_enum_type.nc"; + fqn = "/primary_cloud"; + enum_t = "cloud_class_t"; + basetype = DataType.ENUM1; + input = TestDir.cdmLocalTestDataDir + "hdf5/" + file; + baseline = null; + tc = new TestCase(file, fqn, enum_t, basetype, input, baseline); + // testcases.add(tc); + return testcases; + } + + ////////////////////////////////////////////////// + // Test Fields + + TestCase tc; + + ////////////////////////////////////////////////// + // Constructor(s) + + public TestEnumTypedef(TestCase tc) { + super(); + this.tc = (TestCase) tc; + } + + ////////////////////////////////////////////////// + // Junit test method(s) + + // Test case where enum type is in same group to the variable using it. @Test - public void problem() throws Exception { - try (NetcdfFile ncfile = NetcdfFiles.open(TestDir.cdmLocalTestDataDir + "hdf5/test_atomic_types.nc")) { - Variable primaryCloud = ncfile.findVariable("primary_cloud"); - assertThat((Object) primaryCloud).isNotNull(); - assertThat(primaryCloud.getDataType().isEnum()); - assertThat(primaryCloud.getDataType()).isEqualTo(DataType.ENUM1); - assertThat(primaryCloud.getEnumTypedef()).isNotNull(); - EnumTypedef typedef = primaryCloud.getEnumTypedef(); - assertThat(typedef).isNotNull(); - // TODO disable this until we have a fix see Issue #126 - // assertThat(typedef.getShortName()).isEqualTo("cloud_class_t"); + public void test() throws Exception { + logger.info("TestEnumTypedef on {}%n", tc.input); + try (NetcdfFile ncfile = NetcdfFiles.open(tc.input)) { + String testresult = dumpdata(ncfile, tc.file); + Variable var = getvar(ncfile, tc.fqn); + Assert.assertNotNull((Object) var); + Assert.assertTrue(var.getDataType().isEnum()); + Assert.assertTrue(var.getDataType() == tc.basetype); + Assert.assertNotNull(var.getEnumTypedef()); + EnumTypedef typedef = var.getEnumTypedef(); + Assert.assertNotNull(typedef); + logger.info("TestEnumTypedef typedef name {}%n", typedef.getShortName()); + Assert.assertTrue(typedef.getShortName().equals(tc.enum_t)); + if (tc.baseline != null) { + Assert.assertTrue(compare(tc.file, ncfile, tc.baseline, testresult)); + } } } + // Support functions + + protected boolean compare(String file, NetcdfFile ncfile, String baseline, String testresult) throws Exception { + String diffs = UnitTestCommon.compare(file, baseline, testresult); + if (diffs != null) { + System.err.println(String.format("Test %s failed:\n%s", file, diffs)); + } + return diffs == null; + } + + protected Variable getvar(NetcdfFile ncfile, String fqn) { + Variable v = null; + v = ncfile.findVariable(fqn); + return v; + } + + protected String dumpdata(NetcdfFile ncfile, String datasetname) throws Exception { + StringBuilder args = new StringBuilder("-strict -vall"); + if (datasetname != null) { + args.append(" -datasetname "); + args.append(datasetname); + } + StringWriter sw = new StringWriter(); + // Dump the databuffer + sw = new StringWriter(); + try { + if (!ucar.nc2.NCdumpW.print(ncfile, args.toString(), sw, null)) + throw new Exception("NCdumpW failed"); + } catch (IOException ioe) { + ioe.printStackTrace(); + throw new Exception("NCdumpW failed", ioe); + } + sw.close(); + return sw.toString(); + } + } + diff --git a/cdm/core/src/test/java/ucar/nc2/iosp/netcdf3/TestN3iosp.java b/cdm/core/src/test/java/ucar/nc2/iosp/netcdf3/TestN3iosp.java new file mode 100644 index 0000000000..4ed330775e --- /dev/null +++ b/cdm/core/src/test/java/ucar/nc2/iosp/netcdf3/TestN3iosp.java @@ -0,0 +1,56 @@ +package ucar.nc2.iosp.netcdf3; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; + +import org.junit.Test; + +public class TestN3iosp { + + @Test + public void shouldReturnInvalidForNullOrEmptyNames() { + assertThat(N3iosp.isValidNetcdfObjectName(null)).isFalse(); + assertThrows(NullPointerException.class, () -> N3iosp.makeValidNetcdfObjectName(null)); + + assertThat(N3iosp.isValidNetcdfObjectName("")).isFalse(); + IllegalArgumentException e = + assertThrows(IllegalArgumentException.class, () -> N3iosp.makeValidNetcdfObjectName("")); + assertThat(e.getMessage()).isEqualTo("Illegal NetCDF object name: ''"); + } + + @Test + public void shouldReturnInvalidForBadFirstCharacters() { + // names with first chars not in ([a-zA-Z0-9_]|{UTF8}) are invalid + assertThat(N3iosp.isValidNetcdfObjectName(" blah")).isFalse(); + assertThat(N3iosp.makeValidNetcdfObjectName(" blah")).isEqualTo("blah"); + + assertThat(N3iosp.isValidNetcdfObjectName("\n/blah")).isFalse(); + assertThat(N3iosp.makeValidNetcdfObjectName("\n/blah")).isEqualTo("blah"); + + // Unit separator and DEL + assertThat(N3iosp.isValidNetcdfObjectName("\u001F\u007F blah")).isFalse(); + assertThat(N3iosp.makeValidNetcdfObjectName("\u001F\u007F blah")).isEqualTo("blah"); + } + + @Test + public void shouldReturnInvalidForBadCharacters() { + // names with remaining chars not in ([^\x00-\x1F\x7F/]|{UTF8})* are invalid + assertThat(N3iosp.isValidNetcdfObjectName("1\u000F2\u007F3/4")).isFalse(); + assertThat(N3iosp.makeValidNetcdfObjectName("1\u000F2\u007F3/4")).isEqualTo("1234"); + + // names may not have trailing spaces + assertThat(N3iosp.isValidNetcdfObjectName("foo ")).isFalse(); + assertThat(N3iosp.makeValidNetcdfObjectName("foo ")).isEqualTo("foo"); + } + + @Test + public void shouldAcceptValidNames() { + // valid names have syntax: ([a-zA-Z0-9_]|{UTF8})([^\x00-\x1F\x7F/]|{UTF8})* + assertThat(N3iosp.isValidNetcdfObjectName("_KfS9Jn_s9__")).isTrue(); + assertThat(N3iosp.makeValidNetcdfObjectName("_KfS9Jn_s9__")).isEqualTo("_KfS9Jn_s9__"); + + // unicode characters greater than 0x7F can appear anywhere + assertThat(N3iosp.isValidNetcdfObjectName("\u0123\u1234\u2345\u3456")).isTrue(); + assertThat(N3iosp.makeValidNetcdfObjectName("\u0123\u1234\u2345\u3456")).isEqualTo("\u0123\u1234\u2345\u3456"); + } +} diff --git a/cdm/core/src/test/java/ucar/nc2/iosp/netcdf3/TestN3iospCompare.java b/cdm/core/src/test/java/ucar/nc2/iosp/netcdf3/TestN3iospCompare.java index 2af94e4d8a..d98c42610f 100644 --- a/cdm/core/src/test/java/ucar/nc2/iosp/netcdf3/TestN3iospCompare.java +++ b/cdm/core/src/test/java/ucar/nc2/iosp/netcdf3/TestN3iospCompare.java @@ -52,7 +52,7 @@ public void compareWithBuilder() SPFactory.setServiceProvider("ucar.nc2.internal.iosp.netcdf3.N3iospNew"); try (NetcdfFile withBuilder = NetcdfFiles.open(filename)) { Formatter f = new Formatter(); - CompareNetcdf2 compare = new CompareNetcdf2(f, false, false, true); + CompareNetcdf2 compare = new CompareNetcdf2(f, false, false, true, false); if (!compare.compare(org, withBuilder)) { System.out.printf("Compare %s%n%s%n", filename, f); fail(); diff --git a/cdm/core/src/test/java/ucar/nc2/ncml/TestEnhance.java b/cdm/core/src/test/java/ucar/nc2/ncml/TestEnhance.java index bffe5e574a..db1eafc08f 100644 --- a/cdm/core/src/test/java/ucar/nc2/ncml/TestEnhance.java +++ b/cdm/core/src/test/java/ucar/nc2/ncml/TestEnhance.java @@ -6,10 +6,7 @@ import static com.google.common.truth.Truth.assertThat; import java.io.IOException; -import java.lang.invoke.MethodHandles; import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import ucar.ma2.DataType; import ucar.nc2.NetcdfFile; import ucar.nc2.Variable; @@ -18,7 +15,6 @@ /** Test NcmlNew enhancement */ public class TestEnhance { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); private static String dataDir = TestDir.cdmLocalTestDataDir + "ncml/enhance/"; @Test @@ -72,8 +68,7 @@ public void testStandaloneEnhance() throws IOException { Variable scaledvar = ncfile.findVariable("scaledvar"); assertThat((Object) scaledvar).isNotNull(); assertThat(scaledvar.getDataType()).isEqualTo(DataType.FLOAT); - assertThat(scaledvar.attributes().hasAttribute("scale_factor")).isTrue(); - assertThat(scaledvar.attributes().findAttributeDouble("scale_factor", 1.0)).isEqualTo(2.0); + assertThat(scaledvar.attributes().hasAttribute("scale_factor")).isFalse(); assertThat(scaledvar.readScalarFloat()).isEqualTo(12.0f); } } @@ -91,8 +86,7 @@ public void testStandaloneEnhanceDataset() throws IOException { Variable scaledvar = ncfile.findVariable("scaledvar"); assertThat((Object) scaledvar).isNotNull(); assertThat(scaledvar.getDataType()).isEqualTo(DataType.FLOAT); - assertThat(scaledvar.attributes().hasAttribute("scale_factor")).isTrue(); - assertThat(scaledvar.attributes().findAttributeDouble("scale_factor", 1.0)).isEqualTo(2.0); + assertThat(scaledvar.attributes().hasAttribute("scale_factor")).isFalse(); assertThat(scaledvar.readScalarFloat()).isEqualTo(12.0f); } } @@ -110,8 +104,7 @@ public void testStandaloneDoubleEnhanceDataset() throws IOException { Variable scaledvar = ncfile.findVariable("scaledvar"); assertThat((Object) scaledvar).isNotNull(); assertThat(scaledvar.getDataType()).isEqualTo(DataType.FLOAT); - assertThat(scaledvar.attributes().hasAttribute("scale_factor")).isTrue(); - assertThat(scaledvar.attributes().findAttributeDouble("scale_factor", 1.0)).isEqualTo(2.0); + assertThat(scaledvar.attributes().hasAttribute("scale_factor")).isFalse(); assertThat(scaledvar.readScalarFloat()).isEqualTo(12.0f); } } diff --git a/cdm/core/src/test/java/ucar/nc2/ncml/TestEnhanceNormalizer.java b/cdm/core/src/test/java/ucar/nc2/ncml/TestEnhanceNormalizer.java new file mode 100644 index 0000000000..827c07dbeb --- /dev/null +++ b/cdm/core/src/test/java/ucar/nc2/ncml/TestEnhanceNormalizer.java @@ -0,0 +1,63 @@ +package ucar.nc2.ncml; + +import static com.google.common.truth.Truth.assertThat; +import static ucar.ma2.MAMath.nearlyEquals; + +import java.io.IOException; +import org.junit.Test; +import ucar.ma2.Array; +import ucar.ma2.DataType; +import ucar.nc2.NetcdfFile; +import ucar.nc2.Variable; +import ucar.nc2.dataset.NetcdfDatasets; +import ucar.unidata.util.test.TestDir; + +public class TestEnhanceNormalizer { + + private static String dataDir = TestDir.cdmLocalTestDataDir + "ncml/enhance/"; + public static final double[] DOUBLES = {0.0, 0.25, 0.50, 0.75, 1.0}; + public static final Array DATA_DOUBLES = Array.makeFromJavaArray(DOUBLES); + public static final double[] SAMEDOUBLES = {5.0, 5.0, 5.0, 5.0, 5.0}; + public static final Array DATA_SAMEDOUBLES = Array.makeFromJavaArray(SAMEDOUBLES); + public static final float[] FLOATS = {0.0F, 0.25F, 0.50F, 0.75F, 1.0F}; + public static final Array DATA_FLOATS = Array.makeFromJavaArray(FLOATS); + public static final int[] INTS = {1, 2, 3, 4, 5}; + public static final Array DATA_INTS = Array.makeFromJavaArray(INTS); + + @Test + public void testEnhanceNormalizer() throws IOException { + try (NetcdfFile ncfile = NetcdfDatasets.openDataset(dataDir + "testNormalizer.ncml", true, null)) { + Variable doubleVar = ncfile.findVariable("doublevar"); + assertThat((Object) doubleVar).isNotNull(); + assertThat(doubleVar.getDataType()).isEqualTo(DataType.DOUBLE); + assertThat(doubleVar.attributes().hasAttribute("normalize")).isTrue(); + Array dataDoubles = doubleVar.read(); + assertThat(nearlyEquals(dataDoubles, DATA_DOUBLES)).isTrue(); + + Variable sameDoubleVar = ncfile.findVariable("samedoublevar"); + assertThat((Object) sameDoubleVar).isNotNull(); + assertThat(sameDoubleVar.getDataType()).isEqualTo(DataType.DOUBLE); + assertThat(sameDoubleVar.attributes().hasAttribute("normalize")).isTrue(); + Array dataSameDoubles = sameDoubleVar.read(); + assertThat(nearlyEquals(dataSameDoubles, DATA_SAMEDOUBLES)).isTrue(); // The enhancement doesn't apply if all the + // values are the equal, so it returns the + // same data + + Variable floatVar = ncfile.findVariable("floatvar"); + assertThat((Object) floatVar).isNotNull(); + assertThat(floatVar.getDataType()).isEqualTo(DataType.FLOAT); + assertThat(doubleVar.attributes().hasAttribute("normalize")).isTrue(); + Array dataFloats = doubleVar.read(); + assertThat(nearlyEquals(dataFloats, DATA_FLOATS)).isTrue(); + + Variable intVar = ncfile.findVariable("intvar"); + assertThat((Object) intVar).isNotNull(); + assertThat(intVar.getDataType()).isEqualTo(DataType.INT); + assertThat(intVar.attributes().hasAttribute("normalize")).isTrue(); + Array data = intVar.read(); + assertThat(nearlyEquals(data, DATA_INTS)).isTrue(); // The enhancement doesn't apply to ints, so the data should + // be equal to the input array + } + } + +} diff --git a/cdm/core/src/test/java/ucar/nc2/ncml/TestEnhanceStandardizer.java b/cdm/core/src/test/java/ucar/nc2/ncml/TestEnhanceStandardizer.java new file mode 100644 index 0000000000..024293bc60 --- /dev/null +++ b/cdm/core/src/test/java/ucar/nc2/ncml/TestEnhanceStandardizer.java @@ -0,0 +1,65 @@ +package ucar.nc2.ncml; + +import static com.google.common.truth.Truth.assertThat; +import static ucar.ma2.MAMath.nearlyEquals; + +import java.io.IOException; +import org.junit.Test; +import ucar.ma2.Array; +import ucar.ma2.DataType; +import ucar.nc2.NetcdfFile; +import ucar.nc2.Variable; +import ucar.nc2.dataset.NetcdfDatasets; +import ucar.unidata.util.test.TestDir; + +public class TestEnhanceStandardizer { + + private static String dataDir = TestDir.cdmLocalTestDataDir + "ncml/enhance/"; + public static final double[] DOUBLES = + {-1.26491106406735, -0.63245553203368, 0.0, 0.63245553203368, 1.26491106406735}; + public static final Array DATA_DOUBLES = Array.makeFromJavaArray(DOUBLES); + public static final double[] SAMEDOUBLES = {5.0, 5.0, 5.0, 5.0, 5.0}; + public static final Array DATA_SAMEDOUBLES = Array.makeFromJavaArray(SAMEDOUBLES); + public static final float[] FLOATS = + {-1.26491106406735F, -0.63245553203368F, 0, 0.63245553203368F, 1.26491106406735F}; + public static final Array DATA_FLOATS = Array.makeFromJavaArray(FLOATS); + public static final int[] INTS = {1, 2, 3, 4, 5}; + public static final Array DATA_INTS = Array.makeFromJavaArray(INTS); + + @Test + public void testEnhanceStandardizer() throws IOException { + try (NetcdfFile ncfile = NetcdfDatasets.openDataset(dataDir + "testStandardizer.ncml", true, null)) { + Variable doubleVar = ncfile.findVariable("doublevar"); + assertThat((Object) doubleVar).isNotNull(); + assertThat(doubleVar.getDataType()).isEqualTo(DataType.DOUBLE); + assertThat(doubleVar.attributes().hasAttribute("standardize")).isTrue(); + Array dataDoubles = doubleVar.read(); + assertThat(nearlyEquals(dataDoubles, DATA_DOUBLES)).isTrue(); + + Variable sameDoubleVar = ncfile.findVariable("samedoublevar"); + assertThat((Object) sameDoubleVar).isNotNull(); + assertThat(sameDoubleVar.getDataType()).isEqualTo(DataType.DOUBLE); + assertThat(sameDoubleVar.attributes().hasAttribute("standardize")).isTrue(); + Array dataSameDoubles = sameDoubleVar.read(); + assertThat(nearlyEquals(dataSameDoubles, DATA_SAMEDOUBLES)).isTrue(); // The enhancement doesn't apply if all the + // values are the equal, so it returns the + // same data + + Variable floatVar = ncfile.findVariable("floatvar"); + assertThat((Object) floatVar).isNotNull(); + assertThat(floatVar.getDataType()).isEqualTo(DataType.FLOAT); + assertThat(doubleVar.attributes().hasAttribute("standardize")).isTrue(); + Array dataFloats = doubleVar.read(); + assertThat(nearlyEquals(dataFloats, DATA_FLOATS)).isTrue(); + + Variable intVar = ncfile.findVariable("intvar"); + assertThat((Object) intVar).isNotNull(); + assertThat(intVar.getDataType()).isEqualTo(DataType.INT); + assertThat(intVar.attributes().hasAttribute("standardize")).isTrue(); + Array data = intVar.read(); + assertThat(nearlyEquals(data, DATA_INTS)).isTrue(); // The enhancement doesn't apply to ints, so the data should + // be equal to the input array + } + } + +} diff --git a/cdm/core/src/test/java/ucar/nc2/ncml/TestNcmlRead.java b/cdm/core/src/test/java/ucar/nc2/ncml/TestNcmlRead.java index 3ccb6dd8b7..2cc8a14cc3 100644 --- a/cdm/core/src/test/java/ucar/nc2/ncml/TestNcmlRead.java +++ b/cdm/core/src/test/java/ucar/nc2/ncml/TestNcmlRead.java @@ -254,7 +254,7 @@ boolean close(double d1, double d2) { return Math.abs((d1 - d2) / d1) < 1.0e-5; } - static public class TestRead2 extends TestNcmlRead { + public static class TestRead2 extends TestNcmlRead { // equivalent dataset using "readMetadata" public TestRead2(String name) { @@ -264,7 +264,7 @@ public TestRead2(String name) { } } - static public class TestReadHttps extends TestNcmlRead { + public static class TestReadHttps extends TestNcmlRead { // Test handling of incorrect https variant of NcML namespace URI. // See note in Catalog.java. diff --git a/cdm/core/src/test/java/ucar/nc2/time/TestCalendarPeriod.java b/cdm/core/src/test/java/ucar/nc2/time/TestCalendarPeriod.java index 9ce960640f..51a0088c82 100644 --- a/cdm/core/src/test/java/ucar/nc2/time/TestCalendarPeriod.java +++ b/cdm/core/src/test/java/ucar/nc2/time/TestCalendarPeriod.java @@ -1,15 +1,33 @@ package ucar.nc2.time; +import static com.google.common.truth.Truth.assertThat; + +import org.junit.Test; import ucar.nc2.time.CalendarPeriod.Field; public class TestCalendarPeriod { - public void testStuff() { - CalendarPeriod cp = CalendarPeriod.of(1, Field.Day); - CalendarDate start = CalendarDate.parseUdunits(null, "3 days since 1970-01-01 12:00"); - CalendarDate end = CalendarDate.parseUdunits(null, "6 days since 1970-01-01 12:00"); - int offset = cp.getOffset(start, end); - System.out.printf("offset=%d%n", offset); + @Test + public void shouldGetOffset() { + final CalendarPeriod cp = CalendarPeriod.of(1, Field.Day); + final CalendarDate start = CalendarDate.parseUdunits(null, "3 days since 1970-01-01 12:00"); + final CalendarDate end = CalendarDate.parseUdunits(null, "6 days since 1970-01-01 12:00"); + final int offset = cp.getOffset(start, end); + assertThat(offset).isEqualTo(3); } + @Test + public void shouldGiveSymmetricResultsWhenRounding() { + final CalendarPeriod calendarPeriod = CalendarPeriod.of(1, Field.Hour); + final CalendarDate start = CalendarDate.parseISOformat(null, "2000-01-01T00:00:00Z"); + + final CalendarDate end = CalendarDate.parseISOformat(null, "2000-01-01T00:10:00Z"); + assertThat(calendarPeriod.subtract(start, end)).isEqualTo(-calendarPeriod.subtract(end, start)); + + final CalendarDate end2 = CalendarDate.parseISOformat(null, "2000-01-01T00:50:00Z"); + assertThat(calendarPeriod.subtract(start, end2)).isEqualTo(-calendarPeriod.subtract(end2, start)); + + final CalendarDate end3 = CalendarDate.parseISOformat(null, "2000-01-01T00:30:00Z"); + assertThat(calendarPeriod.subtract(start, end3)).isEqualTo(-calendarPeriod.subtract(end3, start)); + } } diff --git a/cdm/core/src/test/java/ucar/nc2/util/cache/TestNetcdfFileCache.java b/cdm/core/src/test/java/ucar/nc2/util/cache/TestNetcdfFileCache.java index 87fb45ef2e..146a5a679e 100644 --- a/cdm/core/src/test/java/ucar/nc2/util/cache/TestNetcdfFileCache.java +++ b/cdm/core/src/test/java/ucar/nc2/util/cache/TestNetcdfFileCache.java @@ -31,11 +31,11 @@ public class TestNetcdfFileCache { private static FileFactory factory = new MyFileFactory(); @BeforeClass - static public void setUp() { + public static void setUp() { cache = new FileCache(5, 100, 60 * 60); } - static public class MyFileFactory implements FileFactory { + public static class MyFileFactory implements FileFactory { public FileCacheable open(DatasetUrl location, int buffer_size, CancelTask cancelTask, Object iospMessage) throws IOException { return NetcdfDatasets.openFile(location, buffer_size, cancelTask, iospMessage); @@ -68,8 +68,9 @@ private void loadFilesIntoCache(File dir, FileCache cache) { @Test public void testNetcdfFileCache() throws IOException { loadFilesIntoCache(new File(TestDir.cdmLocalTestDataDir), cache); - cache.showCache(new Formatter(System.out)); + assertThat(cache.hits.get()).isEqualTo(0); + assertThat(cache.miss.get()).isEqualTo(count); // count cache size Map map = cache.getCache(); @@ -81,10 +82,13 @@ public void testNetcdfFileCache() throws IOException { } // load same files again - should be added to the list, rather than creating a new elem + // Note that the files are still open (therefore locked), so this won't increment hits. int saveCount = count; loadFilesIntoCache(new File(TestDir.cdmLocalTestDataDir), cache); map = cache.getCache(); cache.showCache(new Formatter(System.out)); + assertThat(cache.hits.get()).isEqualTo(0); + assertThat(cache.miss.get()).isEqualTo(2 * saveCount); assertThat(map.values().size()).isEqualTo(saveCount); // problem @@ -95,11 +99,16 @@ public void testNetcdfFileCache() throws IOException { } cache.clearCache(true); + // clearing the cache doesn't reset the cache counters. + assertThat(cache.hits.get()).isEqualTo(0); + assertThat(cache.miss.get()).isEqualTo(2 * saveCount); map = cache.getCache(); assertThat(map.values().size()).isEqualTo(0); - // load again + // load again (cached files are still locked, so no hits and all misses) loadFilesIntoCache(new File(TestDir.cdmLocalTestDataDir), cache); + assertThat(cache.hits.get()).isEqualTo(0); + assertThat(cache.miss.get()).isEqualTo(3 * saveCount); map = cache.getCache(); assertThat(map.values().size()).isEqualTo(saveCount); @@ -119,9 +128,11 @@ public void testNetcdfFileCache() throws IOException { map = cache.getCache(); assertThat(map.values().size()).isEqualTo(0); - // load twice + // load twice (files aren't unlocked, so it results in cache misses) loadFilesIntoCache(new File(TestDir.cdmLocalTestDataDir), cache); loadFilesIntoCache(new File(TestDir.cdmLocalTestDataDir), cache); + assertThat(cache.hits.get()).isEqualTo(0); + assertThat(cache.miss.get()).isEqualTo(5 * saveCount); map = cache.getCache(); assertThat(map.values().size()).isEqualTo(saveCount); @@ -148,6 +159,8 @@ public void testNetcdfFileCache() throws IOException { } cache.clearCache(true); + + // TODO: Verify that hits actually happen } void checkAllSame(List list) { diff --git a/cdm/core/src/test/java/ucar/nc2/util/cache/TestRandomAccessFileCacheCleanup.java b/cdm/core/src/test/java/ucar/nc2/util/cache/TestRandomAccessFileCacheCleanup.java new file mode 100644 index 0000000000..ce1f2ba2a6 --- /dev/null +++ b/cdm/core/src/test/java/ucar/nc2/util/cache/TestRandomAccessFileCacheCleanup.java @@ -0,0 +1,43 @@ +package ucar.nc2.util.cache; + +import static com.google.common.truth.Truth.assertThat; + +import java.io.File; +import java.io.IOException; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.ClassRule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import ucar.unidata.io.RandomAccessFile; + +public class TestRandomAccessFileCacheCleanup { + + @ClassRule + public static final TemporaryFolder tempFolder = new TemporaryFolder(); + + private static FileCache cache; + + @BeforeClass + public static void enableCache() { + cache = new FileCache("RandomAccessFile", 0, 1, 1, 0); + RandomAccessFile.setGlobalFileCache(cache); + } + + @AfterClass + public static void shutdownCache() { + RandomAccessFile.setGlobalFileCache(null); + } + + @Test + public void shouldReleaseDeletedFileDuringCleanup() throws IOException { + final File toDelete = tempFolder.newFile(); + RandomAccessFile.acquire(toDelete.getAbsolutePath()); + RandomAccessFile.acquire(tempFolder.newFile().getAbsolutePath()); + assertThat(cache.showCache().size()).isEqualTo(2); + + assertThat(toDelete.delete()).isTrue(); + cache.cleanup(1); + assertThat(cache.showCache().size()).isEqualTo(1); + } +} diff --git a/cdm/core/src/test/java/ucar/unidata/geoloc/TestLongitudeNormalization.java b/cdm/core/src/test/java/ucar/unidata/geoloc/TestLongitudeNormalization.java index 8540675d73..ff25c5da37 100644 --- a/cdm/core/src/test/java/ucar/unidata/geoloc/TestLongitudeNormalization.java +++ b/cdm/core/src/test/java/ucar/unidata/geoloc/TestLongitudeNormalization.java @@ -71,7 +71,7 @@ public void doit() { * @param start starting point * @return longitude into the range [center +/- 180] deg */ - static public double lonNormalFrom(double lon, double start) { + public static double lonNormalFrom(double lon, double start) { while (lon < start) lon += 360; while (lon > start + 360) diff --git a/cdm/core/src/test/java/ucar/unidata/geoloc/TestLongitudeWrap.java b/cdm/core/src/test/java/ucar/unidata/geoloc/TestLongitudeWrap.java index 1b3c300d07..ec79c97861 100644 --- a/cdm/core/src/test/java/ucar/unidata/geoloc/TestLongitudeWrap.java +++ b/cdm/core/src/test/java/ucar/unidata/geoloc/TestLongitudeWrap.java @@ -55,7 +55,7 @@ public void doit() { * @param lon2 end * @return */ - static public double lonDiff(double lon1, double lon2) { + public static double lonDiff(double lon1, double lon2) { return Math.IEEEremainder(lon1 - lon2, 720.0); } } diff --git a/cdm/core/src/test/java/ucar/unidata/geoloc/projection/sat/TestGEOSTransform.java b/cdm/core/src/test/java/ucar/unidata/geoloc/projection/sat/TestGEOSTransform.java new file mode 100644 index 0000000000..ab573371db --- /dev/null +++ b/cdm/core/src/test/java/ucar/unidata/geoloc/projection/sat/TestGEOSTransform.java @@ -0,0 +1,108 @@ +package ucar.unidata.geoloc.projection.sat; + +import static com.google.common.truth.Truth.assertThat; + +import java.lang.invoke.MethodHandles; +import java.util.Arrays; +import java.util.List; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.unidata.geoloc.LatLonPoint; +import ucar.unidata.geoloc.Projection; +import ucar.unidata.geoloc.ProjectionPoint; + +public class TestGEOSTransform { + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + private final double subLonDegrees = -75.0; + private final boolean isSweepX = true; // GOES + private final Projection projection = new Geostationary(subLonDegrees, isSweepX); + + private static final double TOLERANCE = 1e-6; + + @Test + public void shouldConvertProjectionPoint() { + final double[] xValues = new double[] {-0.1, 0, 0.1}; + final double[] yValues = new double[] {-0.1, 0, 0.1}; + + for (double x : xValues) { + for (double y : yValues) { + final ProjectionPoint projectionPoint = ProjectionPoint.create(x, y); + final LatLonPoint computedLatLonPoint = projection.projToLatLon(projectionPoint); + final ProjectionPoint computedProjectionPoint = projection.latLonToProj(computedLatLonPoint); + assertThat(computedProjectionPoint.getX()).isWithin(TOLERANCE).of(projectionPoint.getX()); + assertThat(computedProjectionPoint.getY()).isWithin(TOLERANCE).of(projectionPoint.getY()); + } + } + } + + @Test + public void shouldConvertProjectionPointToExpectedLatLon() { + // Values taken from GOES-R product definition and users guide + final double x = -0.024052; + final double y = 0.095340; + final double expectedLat = 33.846162; + final double expectedLon = -84.690932; + + final ProjectionPoint projectionPoint = ProjectionPoint.create(x, y); + + final LatLonPoint computedLatLonPoint = projection.projToLatLon(projectionPoint); + assertThat(computedLatLonPoint.getLatitude()).isWithin(TOLERANCE).of(expectedLat); + assertThat(computedLatLonPoint.getLongitude()).isWithin(TOLERANCE).of(expectedLon); + + final ProjectionPoint computedProjectionPoint = projection.latLonToProj(computedLatLonPoint); + assertThat(computedProjectionPoint.getX()).isWithin(TOLERANCE).of(projectionPoint.getX()); + assertThat(computedProjectionPoint.getY()).isWithin(TOLERANCE).of(projectionPoint.getY()); + } + + @Test + public void shouldReturnNanForNotVisibleProjectionPoints() { + // Approximately the corners of the box containing full disk + final List projectionPoints = Arrays.asList(ProjectionPoint.create(-0.15, -0.15), + ProjectionPoint.create(-0.15, 0.15), ProjectionPoint.create(0.15, -0.15), ProjectionPoint.create(0.15, 0.15)); + + for (ProjectionPoint projectionPoint : projectionPoints) { + final LatLonPoint computedLatLonPoint = projection.projToLatLon(projectionPoint); + assertThat(computedLatLonPoint.getLatitude()).isNaN(); + assertThat(computedLatLonPoint.getLongitude()).isNaN(); + } + } + + @Test + public void shouldNotReturnNanForVisibleProjectionPoints() { + // Approximately the edges of the full disk + final List projectionPoints = Arrays.asList(ProjectionPoint.create(0, -0.1512), + ProjectionPoint.create(0, 0.1512), ProjectionPoint.create(-0.1518, 0), ProjectionPoint.create(0.1518, 0)); + + for (ProjectionPoint projectionPoint : projectionPoints) { + final LatLonPoint computedLatLonPoint = projection.projToLatLon(projectionPoint); + assertThat(computedLatLonPoint.getLatitude()).isNotNaN(); + assertThat(computedLatLonPoint.getLongitude()).isNotNaN(); + } + } + + @Test + public void shouldReturnNanForNotVisibleLatLonPoints() { + final List latLonPoints = Arrays.asList(LatLonPoint.create(50, 5), LatLonPoint.create(-50, 5), + LatLonPoint.create(50, -160), LatLonPoint.create(-50, -160)); + + for (LatLonPoint latLonPoint : latLonPoints) { + final ProjectionPoint computedProjectionPoint = projection.latLonToProj(latLonPoint); + assertThat(computedProjectionPoint.getX()).isNaN(); + assertThat(computedProjectionPoint.getY()).isNaN(); + } + } + + @Test + public void shouldNotReturnNanForVisibleLatLonPoints() { + final List latLonPoints = Arrays.asList(LatLonPoint.create(-78, -75), LatLonPoint.create(78, -75), + LatLonPoint.create(0, -154), LatLonPoint.create(0, 4)); + + for (LatLonPoint latLonPoint : latLonPoints) { + final ProjectionPoint computedProjectionPoint = projection.latLonToProj(latLonPoint); + assertThat(computedProjectionPoint.getX()).isNotNaN(); + assertThat(computedProjectionPoint.getY()).isNotNaN(); + } + } +} diff --git a/cdm/gcdm/build.gradle b/cdm/gcdm/build.gradle new file mode 100644 index 0000000000..770f5a53c4 --- /dev/null +++ b/cdm/gcdm/build.gradle @@ -0,0 +1,87 @@ +plugins { + // Provide convenience executables for testing + id 'application' + id 'com.github.psxpaul.execfork' version '0.2.2' +} + +import com.github.psxpaul.task.JavaExecFork + +repositories { + gradlePluginPortal() + maven { + // For jj2000 + url 'https://artifacts.unidata.ucar.edu/repository/unidata-releases/' + } +} + +description = 'gRPC client and server implementation of CDM Remote Procedure Calls (gCDM).' +ext.title = 'CDM Remote Procedure Calls' + +apply from: "$rootDir/gradle/any/java-library.gradle" +apply from: "$rootDir/gradle/any/protobuf.gradle" +apply from: "$rootDir/gradle/any/shared-mvn-coords.gradle" + +dependencies { + api project(':cdm:cdm-core') + + implementation "io.grpc:grpc-protobuf:${depVersion.grpc}" + implementation "io.grpc:grpc-stub:${depVersion.grpc}" + + compileOnly 'org.apache.tomcat:annotations-api:6.0.53' + + runtimeOnly project(':bufr') + runtimeOnly project(':grib') + runtimeOnly "io.grpc:grpc-netty-shaded:${depVersion.grpc}" + + testImplementation project(':netcdf4') + + testImplementation enforcedPlatform(project(':netcdf-java-testing-platform')) + testImplementation project(':cdm-test-utils') + testImplementation 'com.google.truth:truth' + testImplementation 'junit:junit' + testImplementation 'commons-io:commons-io' + testImplementation 'org.mockito:mockito-core' + testImplementation "io.grpc:grpc-testing:${depVersion.grpc}" + + // logging + implementation 'org.slf4j:slf4j-api' + runtimeOnly 'ch.qos.logback:logback-classic' +} + +protobuf { + protoc { artifact = "com.google.protobuf:protoc:${depVersion.protobuf}" } + plugins { + grpc { artifact = "io.grpc:protoc-gen-grpc-java:${depVersion.grpc}" } + } + generateProtoTasks { + all()*.plugins { grpc {} } + } +} + +application { + mainClass = 'ucar.gcdm.server.GcdmServer' +} + +// Inform IDEs like IntelliJ IDEA, Eclipse or NetBeans about the generated code. +sourceSets { + main { + java { + srcDirs 'build/generated/source/proto/main/grpc' + } + } +} + +task startDaemon(type: JavaExecFork) { + classpath = sourceSets.main.runtimeClasspath + main = 'ucar.gcdm.server.GcdmServer' + // To attach the debugger to the gcdm server add to the jvmArgs + // '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005' + jvmArgs = [ '-Xmx512m', '-Djava.awt.headless=true' ] + standardOutput = new File("$buildDir/gcdm_logs/gcdm.log") + errorOutput = new File("$buildDir/gcdm_logs/gcdm-error.log") + stopAfter = test + waitForPort = 16111 + waitForOutput = 'Server started, listening on 16111' +} + +test.dependsOn(startDaemon) diff --git a/cdm/gcdm/src/main/java/ucar/gcdm/GcdmConverter.java b/cdm/gcdm/src/main/java/ucar/gcdm/GcdmConverter.java new file mode 100644 index 0000000000..7ed6d1404a --- /dev/null +++ b/cdm/gcdm/src/main/java/ucar/gcdm/GcdmConverter.java @@ -0,0 +1,686 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ +package ucar.gcdm; + +import static ucar.nc2.iosp.IospHelper.convertByteToChar; +import static ucar.nc2.iosp.IospHelper.convertCharToByte; + +import com.google.common.base.Preconditions; +import com.google.common.collect.BiMap; +import com.google.common.collect.ImmutableBiMap; +import com.google.common.primitives.Ints; +import com.google.protobuf.ByteString; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import ucar.gcdm.GcdmNetcdfProto.Data; +import ucar.gcdm.GcdmNetcdfProto.StructureMemberProto; +import ucar.ma2.Array; +import ucar.ma2.ArrayObject; +import ucar.ma2.ArraySequence; +import ucar.ma2.ArrayStructure; +import ucar.ma2.ArrayStructureW; +import ucar.ma2.DataType; +import ucar.ma2.Index; +import ucar.ma2.IndexIterator; +import ucar.ma2.Section; +import ucar.ma2.StructureData; +import ucar.ma2.StructureDataW; +import ucar.ma2.StructureMembers; +import ucar.ma2.StructureMembers.Member; +import ucar.ma2.StructureMembers.MemberBuilder; +import ucar.nc2.Attribute; +import ucar.nc2.Dimension; +import ucar.nc2.EnumTypedef; +import ucar.nc2.Group; +import ucar.nc2.Sequence; +import ucar.nc2.Structure; +import ucar.nc2.Variable; + +/** Convert between Gcdm Protos and Netcdf objects, using Array for data. */ +public class GcdmConverter { + private static final BiMap dataTypeProtoDataTypeMap = + new ImmutableBiMap.Builder() + .put(DataType.CHAR, GcdmNetcdfProto.DataType.DATA_TYPE_CHAR) + .put(DataType.BYTE, GcdmNetcdfProto.DataType.DATA_TYPE_BYTE) + .put(DataType.SHORT, GcdmNetcdfProto.DataType.DATA_TYPE_SHORT) + .put(DataType.INT, GcdmNetcdfProto.DataType.DATA_TYPE_INT) + .put(DataType.LONG, GcdmNetcdfProto.DataType.DATA_TYPE_LONG) + .put(DataType.FLOAT, GcdmNetcdfProto.DataType.DATA_TYPE_FLOAT) + .put(DataType.DOUBLE, GcdmNetcdfProto.DataType.DATA_TYPE_DOUBLE) + .put(DataType.STRING, GcdmNetcdfProto.DataType.DATA_TYPE_STRING) + .put(DataType.STRUCTURE, GcdmNetcdfProto.DataType.DATA_TYPE_STRUCTURE) + .put(DataType.SEQUENCE, GcdmNetcdfProto.DataType.DATA_TYPE_SEQUENCE) + .put(DataType.ENUM1, GcdmNetcdfProto.DataType.DATA_TYPE_ENUM1) + .put(DataType.ENUM2, GcdmNetcdfProto.DataType.DATA_TYPE_ENUM2) + .put(DataType.ENUM4, GcdmNetcdfProto.DataType.DATA_TYPE_ENUM4) + .put(DataType.OPAQUE, GcdmNetcdfProto.DataType.DATA_TYPE_OPAQUE) + .put(DataType.UBYTE, GcdmNetcdfProto.DataType.DATA_TYPE_UBYTE) + .put(DataType.USHORT, GcdmNetcdfProto.DataType.DATA_TYPE_USHORT) + .put(DataType.UINT, GcdmNetcdfProto.DataType.DATA_TYPE_UINT) + .put(DataType.ULONG, GcdmNetcdfProto.DataType.DATA_TYPE_ULONG).build(); + + public static GcdmNetcdfProto.Group.Builder encodeGroup(Group group, int sizeToCache) throws IOException { + final GcdmNetcdfProto.Group.Builder groupBuilder = GcdmNetcdfProto.Group.newBuilder(); + groupBuilder.setName(group.getShortName()); + + for (Dimension dimension : group.getDimensions()) { + groupBuilder.addDimensions(encodeDimension(dimension)); + } + + for (Attribute attribute : group.attributes()) { + groupBuilder.addAttributes(encodeAttribute(attribute)); + } + + for (EnumTypedef enumType : group.getEnumTypedefs()) { + groupBuilder.addEnumTypes(encodeEnumTypedef(enumType)); + } + + for (Variable variable : group.getVariables()) { + if (variable instanceof Structure) { + groupBuilder.addStructures(encodeStructure((Structure) variable)); + } else { + groupBuilder.addVariables(encodeVariable(variable, sizeToCache)); + } + } + + for (Group nestedGroup : group.getGroups()) { + groupBuilder.addGroups(encodeGroup(nestedGroup, sizeToCache)); + } + + return groupBuilder; + } + + private static GcdmNetcdfProto.Attribute.Builder encodeAttribute(Attribute attribute) { + final GcdmNetcdfProto.Attribute.Builder attributeBuilder = GcdmNetcdfProto.Attribute.newBuilder(); + attributeBuilder.setName(attribute.getShortName()); + attributeBuilder.setDataType(convertDataType(attribute.getDataType())); + attributeBuilder.setLength(attribute.getLength()); + + if (attribute.getValues() != null && attribute.getLength() > 0) { + if (attribute.isString()) { + final Data.Builder dataBuilder = Data.newBuilder(); + for (int i = 0; i < attribute.getLength(); i++) { + dataBuilder.addStringData(attribute.getStringValue(i)); + } + dataBuilder.setDataType(convertDataType(attribute.getDataType())); + attributeBuilder.setData(dataBuilder); + + } else { + attributeBuilder.setData(encodeData(attribute.getDataType(), attribute.getValues())); + } + } + + return attributeBuilder; + } + + private static GcdmNetcdfProto.Dimension.Builder encodeDimension(Dimension dimension) { + final GcdmNetcdfProto.Dimension.Builder dimensionBuilder = GcdmNetcdfProto.Dimension.newBuilder(); + if (dimension.getShortName() != null) { + dimensionBuilder.setName(dimension.getShortName()); + } + if (!dimension.isVariableLength()) { + dimensionBuilder.setLength(dimension.getLength()); + } + dimensionBuilder.setIsPrivate(!dimension.isShared()); + dimensionBuilder.setIsVlen(dimension.isVariableLength()); + dimensionBuilder.setIsUnlimited(dimension.isUnlimited()); + return dimensionBuilder; + } + + private static GcdmNetcdfProto.EnumTypedef.Builder encodeEnumTypedef(EnumTypedef enumType) { + final GcdmNetcdfProto.EnumTypedef.Builder enumTypdefBuilder = GcdmNetcdfProto.EnumTypedef.newBuilder(); + + enumTypdefBuilder.setName(enumType.getShortName()); + enumTypdefBuilder.setBaseType(convertDataType(enumType.getBaseType())); + final Map map = enumType.getMap(); + final GcdmNetcdfProto.EnumTypedef.EnumType.Builder enumTypeBuilder = + GcdmNetcdfProto.EnumTypedef.EnumType.newBuilder(); + for (int code : map.keySet()) { + enumTypeBuilder.clear(); + enumTypeBuilder.setCode(code); + enumTypeBuilder.setValue(map.get(code)); + enumTypdefBuilder.addMaps(enumTypeBuilder); + } + return enumTypdefBuilder; + } + + private static GcdmNetcdfProto.Variable.Builder encodeVariable(Variable variable, int sizeToCache) + throws IOException { + final GcdmNetcdfProto.Variable.Builder builder = GcdmNetcdfProto.Variable.newBuilder(); + builder.setName(variable.getShortName()); + builder.setDataType(convertDataType(variable.getDataType())); + if (variable.getDataType().isEnum()) { + final EnumTypedef enumType = variable.getEnumTypedef(); + if (enumType != null) { + builder.setEnumType(enumType.getShortName()); + } + } + + for (Dimension dimension : variable.getDimensions()) { + builder.addShapes(encodeDimension(dimension)); + } + + for (Attribute attribute : variable.attributes()) { + builder.addAttributes(encodeAttribute(attribute)); + } + + // put small amounts of data in header "immediate mode" + if (variable.isCaching() && variable.getDataType().isNumeric()) { + if (variable.isCoordinateVariable() || variable.getSize() * variable.getElementSize() < sizeToCache) { + final Array data = variable.read(); + builder.setData(encodeData(variable.getDataType(), data)); + } + } + + return builder; + } + + private static GcdmNetcdfProto.Structure.Builder encodeStructure(Structure structure) throws IOException { + final GcdmNetcdfProto.Structure.Builder builder = GcdmNetcdfProto.Structure.newBuilder(); + builder.setName(structure.getShortName()); + builder.setDataType(convertDataType(structure.getDataType())); + + for (Dimension dimension : structure.getDimensions()) { + builder.addShapes(encodeDimension(dimension)); + } + + for (Attribute attribute : structure.attributes()) { + builder.addAttributes(encodeAttribute(attribute)); + } + + for (Variable variable : structure.getVariables()) { + if (variable instanceof Structure) { + builder.addStructs(GcdmConverter.encodeStructure((Structure) variable)); + } else { + builder.addVariables(encodeVariable(variable, -1)); + } + } + + return builder; + } + + public static GcdmNetcdfProto.Data encodeData(DataType dataType, Array data) { + if (data.isVlen()) { + return encodeVlenData(dataType, (ArrayObject) data); + } else if (data instanceof ArrayStructure) { + return encodeArrayStructureData(dataType, (ArrayStructure) data); + } else { + return encodePrimitiveData(dataType, data); + } + } + + private static void encodeShape(GcdmNetcdfProto.Data.Builder data, int[] shape) { + for (int i : shape) { + data.addShapes(i); + } + } + + private static Data encodePrimitiveData(DataType dataType, Array data) { + final Data.Builder builder = Data.newBuilder(); + builder.setDataType(convertDataType(dataType)); + encodeShape(builder, data.getShape()); + final IndexIterator indexIterator = data.getIndexIterator(); + + switch (dataType) { + case CHAR: { + final byte[] array = convertCharToByte((char[]) data.get1DJavaArray(DataType.CHAR)); + builder.addByteData(ByteString.copyFrom(array)); + break; + } + case ENUM1: + case UBYTE: + case BYTE: { + final byte[] array = (byte[]) data.get1DJavaArray(DataType.UBYTE); + builder.addByteData(ByteString.copyFrom(array)); + break; + } + case SHORT: + case INT: + while (indexIterator.hasNext()) { + builder.addIntData(indexIterator.getIntNext()); + } + break; + case ENUM2: + case ENUM4: + case USHORT: + case UINT: + while (indexIterator.hasNext()) { + builder.addUintData(indexIterator.getIntNext()); + } + break; + case LONG: + while (indexIterator.hasNext()) { + builder.addLongData(indexIterator.getLongNext()); + } + break; + case ULONG: + while (indexIterator.hasNext()) { + builder.addUlongData(indexIterator.getLongNext()); + } + break; + case FLOAT: + while (indexIterator.hasNext()) { + builder.addFloatData(indexIterator.getFloatNext()); + } + break; + case DOUBLE: + while (indexIterator.hasNext()) { + builder.addDoubleData(indexIterator.getDoubleNext()); + } + break; + case STRING: + while (indexIterator.hasNext()) { + builder.addStringData((String) indexIterator.getObjectNext()); + } + break; + case OPAQUE: + while (indexIterator.hasNext()) { + final ByteBuffer bb = (ByteBuffer) indexIterator.getObjectNext(); + builder.addByteData(ByteString.copyFrom(bb.array())); + } + break; + default: + throw new IllegalStateException("Unknown datatype " + dataType); + } + return builder.build(); + } + + private static Data encodeVlenData(DataType dataType, ArrayObject data) { + final Data.Builder builder = Data.newBuilder(); + builder.setDataType(convertDataType(dataType)); + encodeShape(builder, data.getShape()); + final IndexIterator objectIterator = data.getIndexIterator(); + while (objectIterator.hasNext()) { + final Array array = (Array) objectIterator.next(); + builder.addVlenData(encodeData(dataType, array)); + } + return builder.build(); + } + + private static Data encodeArrayStructureData(DataType dataType, ArrayStructure arrayStructure) { + final Data.Builder builder = Data.newBuilder(); + builder.setDataType(convertDataType(dataType)); + encodeShape(builder, arrayStructure.getShape()); + builder.setMembers(encodeStructureMembers(arrayStructure.getStructureMembers())); + + // row oriented + for (StructureData structureData : arrayStructure) { + builder.addRows(encodeStructureData(structureData)); + } + return builder.build(); + } + + private static GcdmNetcdfProto.StructureMembersProto encodeStructureMembers(StructureMembers members) { + final GcdmNetcdfProto.StructureMembersProto.Builder builder = GcdmNetcdfProto.StructureMembersProto.newBuilder(); + builder.setName(members.getName()); + for (Member member : members.getMembers()) { + final StructureMemberProto.Builder structureMemberBuilder = + StructureMemberProto.newBuilder().setName(member.getName()).setDataType(convertDataType(member.getDataType())) + .addAllShapes(Ints.asList(member.getShape())); + if (member.getStructureMembers() != null) { + structureMemberBuilder.setMembers(encodeStructureMembers(member.getStructureMembers())); + } + builder.addMembers(structureMemberBuilder); + } + return builder.build(); + } + + private static GcdmNetcdfProto.StructureDataProto encodeStructureData(StructureData structureData) { + final GcdmNetcdfProto.StructureDataProto.Builder builder = GcdmNetcdfProto.StructureDataProto.newBuilder(); + for (Member member : structureData.getMembers()) { + final Array data = structureData.getArray(member); + builder.addMemberData(encodeData(member.getDataType(), data)); + } + return builder.build(); + } + + private static Dimension decodeDimension(GcdmNetcdfProto.Dimension dimension) { + final String name = (dimension.getName().isEmpty() ? null : dimension.getName()); + final int dimLen = dimension.getIsVlen() ? -1 : (int) dimension.getLength(); + return Dimension.builder().setName(name).setIsShared(!dimension.getIsPrivate()) + .setIsUnlimited(dimension.getIsUnlimited()).setIsVariableLength(dimension.getIsVlen()).setLength(dimLen) + .build(); + } + + public static void decodeGroup(GcdmNetcdfProto.Group protoGroup, Group.Builder groupBuilder) { + for (GcdmNetcdfProto.Dimension dim : protoGroup.getDimensionsList()) { + groupBuilder.addDimension(GcdmConverter.decodeDimension(dim)); // always added to group? what if private ?? + } + + for (GcdmNetcdfProto.Attribute att : protoGroup.getAttributesList()) { + groupBuilder.addAttribute(GcdmConverter.decodeAttribute(att)); + } + + for (GcdmNetcdfProto.EnumTypedef enumType : protoGroup.getEnumTypesList()) { + groupBuilder.addEnumTypedef(GcdmConverter.decodeEnumTypedef(enumType)); + } + + for (GcdmNetcdfProto.Variable var : protoGroup.getVariablesList()) { + groupBuilder.addVariable(GcdmConverter.decodeVariable(var)); + } + + for (GcdmNetcdfProto.Structure s : protoGroup.getStructuresList()) { + groupBuilder.addVariable(GcdmConverter.decodeStructure(s)); + } + + for (GcdmNetcdfProto.Group nestedProtoGroup : protoGroup.getGroupsList()) { + final Group.Builder nestedGroup = Group.builder().setName(nestedProtoGroup.getName()); + groupBuilder.addGroup(nestedGroup); + decodeGroup(nestedProtoGroup, nestedGroup); + } + } + + private static EnumTypedef decodeEnumTypedef(GcdmNetcdfProto.EnumTypedef enumTypedef) { + final List enumTypes = enumTypedef.getMapsList(); + final Map map = new HashMap<>(2 * enumTypes.size()); + for (GcdmNetcdfProto.EnumTypedef.EnumType enumType : enumTypes) { + map.put(enumType.getCode(), enumType.getValue()); + } + final DataType baseType = convertDataType(enumTypedef.getBaseType()); + return new EnumTypedef(enumTypedef.getName(), map, baseType); + } + + private static Attribute decodeAttribute(GcdmNetcdfProto.Attribute protoAttribute) { + final DataType dataType = convertDataType(protoAttribute.getDataType()); + final int length = protoAttribute.getLength(); + if (length == 0) { // deal with empty attribute + return Attribute.builder(protoAttribute.getName()).setDataType(dataType).build(); + } + + final Data attributeData = protoAttribute.getData(); + if (dataType == DataType.STRING) { + final List values = attributeData.getStringDataList(); + if (values.size() != length) { + throw new IllegalStateException(); + } + if (values.size() == 1) { + return new Attribute(protoAttribute.getName(), values.get(0)); + } else { + final Array data = Array.factory(dataType, new int[] {length}); + for (int i = 0; i < length; i++) { + data.setObject(i, values.get(i)); + } + return Attribute.builder(protoAttribute.getName()).setValues(data).build(); + } + } else { + final Array array = decodeData(protoAttribute.getData()); + return Attribute.builder(protoAttribute.getName()).setValues(array).build(); + } + } + + private static Variable.Builder decodeVariable(GcdmNetcdfProto.Variable protoVariable) { + final DataType dataType = convertDataType(protoVariable.getDataType()); + final Variable.Builder variableBuilder = + Variable.builder().setName(protoVariable.getName()).setDataType(dataType); + + if (dataType.isEnum()) { + variableBuilder.setEnumTypeName(protoVariable.getEnumType()); + } + + // The Dimensions are stored redundantly in the Variable. + // If shared, they must also exist in a parent Group. However, we don't yet have the Groups wired together, + // so that has to wait until build(). + final List dimensions = new ArrayList<>(6); + final Section.Builder section = Section.builder(); + for (GcdmNetcdfProto.Dimension dimension : protoVariable.getShapesList()) { + dimensions.add(decodeDimension(dimension)); + section.appendRange((int) dimension.getLength()); + } + variableBuilder.addDimensions(dimensions); + + for (GcdmNetcdfProto.Attribute attribute : protoVariable.getAttributesList()) { + variableBuilder.addAttribute(decodeAttribute(attribute)); + } + + if (protoVariable.hasData()) { + final Array data = decodeData(protoVariable.getData()); + variableBuilder.setCachedData(data, false); + } + + return variableBuilder; + } + + private static Structure.Builder decodeStructure(GcdmNetcdfProto.Structure protoStructure) { + final Structure.Builder structureBuilder = + (protoStructure.getDataType() == GcdmNetcdfProto.DataType.DATA_TYPE_SEQUENCE) ? Sequence.builder() + : Structure.builder(); + + structureBuilder.setName(protoStructure.getName()).setDataType(convertDataType(protoStructure.getDataType())); + + final List dimensions = new ArrayList<>(6); + for (GcdmNetcdfProto.Dimension dimension : protoStructure.getShapesList()) { + dimensions.add(decodeDimension(dimension)); + } + structureBuilder.addDimensions(dimensions); + + for (GcdmNetcdfProto.Attribute attribute : protoStructure.getAttributesList()) { + structureBuilder.addAttribute(decodeAttribute(attribute)); + } + + for (GcdmNetcdfProto.Variable protoVariable : protoStructure.getVariablesList()) { + structureBuilder.addMemberVariable(decodeVariable(protoVariable)); + } + + for (GcdmNetcdfProto.Structure nestedProtoStructure : protoStructure.getStructsList()) { + structureBuilder.addMemberVariable(decodeStructure(nestedProtoStructure)); + } + + return structureBuilder; + } + + public static Array decodeData(GcdmNetcdfProto.Data protoData) { + if (protoData.getVlenDataCount() > 0) { + return decodeVlenData(protoData); + } else if (protoData.hasMembers()) { + return decodeArrayStructureData(protoData); + } else { + return decodePrimitiveData(protoData); + } + } + + private static int[] decodeShape(GcdmNetcdfProto.Data data) { + final int[] shape = new int[data.getShapesCount()]; + for (int i = 0; i < shape.length; i++) { + shape[i] = data.getShapes(i); + } + return shape; + } + + // Note that this converts to Objects, so not very efficient ?? + private static Array decodePrimitiveData(Data data) { + final DataType dataType = convertDataType(data.getDataType()); + final int[] shape = decodeShape(data); + + final Object storage = decodePrimitiveData(data, dataType); + return Array.factory(dataType, shape, storage); + } + + private static Object decodePrimitiveData(Data data, DataType dataType) { + switch (dataType) { + case CHAR: { + return convertByteToChar(data.getByteData(0).toByteArray()); + } + case ENUM1: + case UBYTE: + case BYTE: { + return data.getByteData(0).toByteArray(); + } + case SHORT: { + int i = 0; + final short[] array = new short[data.getIntDataCount()]; + for (int val : data.getIntDataList()) { + array[i++] = (short) val; + } + return array; + } + case INT: { + int i = 0; + final int[] array = new int[data.getIntDataCount()]; + for (int val : data.getIntDataList()) { + array[i++] = val; + } + return array; + } + case ENUM2: + case USHORT: { + int i = 0; + final short[] array = new short[data.getUintDataCount()]; + for (int val : data.getUintDataList()) { + array[i++] = (short) val; + } + return array; + } + case ENUM4: + case UINT: { + int i = 0; + final int[] array = new int[data.getUintDataCount()]; + for (int val : data.getUintDataList()) { + array[i++] = val; + } + return array; + } + case LONG: { + int i = 0; + final long[] array = new long[data.getLongDataCount()]; + for (long val : data.getLongDataList()) { + array[i++] = val; + } + return array; + } + case ULONG: { + int i = 0; + final long[] array = new long[data.getUlongDataCount()]; + for (long val : data.getUlongDataList()) { + array[i++] = val; + } + return array; + } + case FLOAT: { + int i = 0; + final float[] array = new float[data.getFloatDataCount()]; + for (float val : data.getFloatDataList()) { + array[i++] = val; + } + return array; + } + case DOUBLE: { + int i = 0; + final double[] array = new double[data.getDoubleDataCount()]; + for (double val : data.getDoubleDataList()) { + array[i++] = val; + } + return array; + } + case STRING: { + int i = 0; + final Object[] array = new Object[data.getStringDataCount()]; + for (String val : data.getStringDataList()) { + array[i++] = val; + } + return array; + } + case OPAQUE: { + int i = 0; + final Object[] array = new Object[data.getByteDataCount()]; + for (ByteString val : data.getByteDataList()) { + array[i++] = ByteBuffer.wrap(val.toByteArray()); + } + return array; + } + default: + throw new IllegalStateException("Unknown datatype " + dataType); + } + } + + private static Array decodeVlenData(Data vlenData) { + Preconditions.checkArgument(vlenData.getVlenDataCount() > 0); + final int[] shape = decodeShape(vlenData); + final int length = (int) Index.computeSize(shape); + Preconditions.checkArgument(length == vlenData.getVlenDataCount()); + final Array[] storage = new Array[length]; + + for (int i = 0; i < length; i++) { + final Data inner = vlenData.getVlenData(i); + storage[i] = decodeData(inner); + } + + return Array.makeVlenArray(shape, storage); + } + + public static GcdmNetcdfProto.DataType convertDataType(DataType dataType) { + final GcdmNetcdfProto.DataType protoDataType = dataTypeProtoDataTypeMap.get(dataType); + + if (protoDataType == null) { + throw new IllegalStateException("illegal data type " + dataType); + } + return protoDataType; + } + + public static DataType convertDataType(GcdmNetcdfProto.DataType protoDataType) { + final DataType dataType = dataTypeProtoDataTypeMap.inverse().get(protoDataType); + + if (protoDataType == null) { + throw new IllegalStateException("illegal data type " + dataType); + } + return dataType; + } + + private static ArrayStructure decodeArrayStructureData(Data arrayStructureProto) { + final DataType dataType = convertDataType(arrayStructureProto.getDataType()); + final int numberOfRows = arrayStructureProto.getRowsCount(); + final int[] shape = decodeShape(arrayStructureProto); + + // ok to have numberOfRows = 0 + Preconditions.checkArgument(Index.computeSize(shape) == numberOfRows); + + StructureMembers members = decodeStructureMembers(arrayStructureProto.getMembers()); + + final ArrayStructureW result = new ArrayStructureW(members, shape); + + // row oriented + int index = 0; + for (GcdmNetcdfProto.StructureDataProto row : arrayStructureProto.getRowsList()) { + result.setStructureData(decodeStructureData(row, members), index); + index++; + } + + if (dataType == DataType.SEQUENCE) { + return new ArraySequence(members, result.getStructureDataIterator(), -1); + } + + return result; + } + + private static StructureMembers decodeStructureMembers(GcdmNetcdfProto.StructureMembersProto membersProto) { + final StructureMembers.Builder structureMembersBuilder = StructureMembers.builder(); + structureMembersBuilder.setName(membersProto.getName()); + + for (StructureMemberProto memberProto : membersProto.getMembersList()) { + final MemberBuilder memberBuilder = StructureMembers.memberBuilder().setName(memberProto.getName()) + .setDataType(convertDataType(memberProto.getDataType())).setShape(Ints.toArray(memberProto.getShapesList())); + if (memberProto.hasMembers()) { + memberBuilder.setStructureMembers(decodeStructureMembers(memberProto.getMembers())); + } + structureMembersBuilder.addMember(memberBuilder); + } + return structureMembersBuilder.build(); + } + + private static StructureData decodeStructureData(GcdmNetcdfProto.StructureDataProto structDataProto, + StructureMembers members) { + final StructureDataW structureData = new StructureDataW(members); + + for (int i = 0; i < structDataProto.getMemberDataCount(); i++) { + final Data data = structDataProto.getMemberData(i); + final Member member = members.getMember(i); + structureData.setMemberData(member, decodeData(data)); + } + return structureData; + } +} diff --git a/cdm/gcdm/src/main/java/ucar/gcdm/server/GcdmServer.java b/cdm/gcdm/src/main/java/ucar/gcdm/server/GcdmServer.java new file mode 100644 index 0000000000..2cf55a7073 --- /dev/null +++ b/cdm/gcdm/src/main/java/ucar/gcdm/server/GcdmServer.java @@ -0,0 +1,210 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ +package ucar.gcdm.server; + +import com.google.common.base.Stopwatch; +import io.grpc.Server; +import io.grpc.ServerBuilder; +import io.grpc.stub.StreamObserver; +import java.io.IOException; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; +import ucar.gcdm.GcdmGrpc.GcdmImplBase; +import ucar.gcdm.GcdmNetcdfProto; +import ucar.gcdm.GcdmNetcdfProto.DataRequest; +import ucar.gcdm.GcdmNetcdfProto.DataResponse; +import ucar.gcdm.GcdmNetcdfProto.Header; +import ucar.gcdm.GcdmNetcdfProto.HeaderRequest; +import ucar.gcdm.GcdmNetcdfProto.HeaderResponse; +import ucar.gcdm.GcdmConverter; +import ucar.ma2.Array; +import ucar.ma2.ArrayStructureW; +import ucar.ma2.DataType; +import ucar.ma2.Index; +import ucar.ma2.InvalidRangeException; +import ucar.ma2.Section; +import ucar.ma2.StructureData; +import ucar.ma2.StructureDataIterator; +import ucar.ma2.StructureMembers; +import ucar.nc2.NetcdfFile; +import ucar.nc2.ParsedSectionSpec; +import ucar.nc2.Sequence; +import ucar.nc2.Variable; +import ucar.nc2.dataset.NetcdfDatasets; +import ucar.nc2.write.ChunkingIndex; + +/** Server that manages startup/shutdown of a gCDM Server. */ +public class GcdmServer { + private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(GcdmServer.class); + + // public for testing + public static final int MAX_MESSAGE = 50 * 1000 * 1000; // 50 Mb LOOK could be tuned + private static final int SEQUENCE_CHUNK = 1000; + private static final int PORT = 16111; + + private Server server; + + private void start() throws IOException { + server = ServerBuilder.forPort(PORT).addService(new GcdmImpl()).build().start(); + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + // Use stderr here since the logger may have been reset by its JVM shutdown hook. + System.err.println("*** shutting down gRPC server since JVM is shutting down"); + try { + GcdmServer.this.stop(); + } catch (InterruptedException e) { + e.printStackTrace(System.err); + } + System.err.println("*** server shut down"); + })); + + logger.info("Server started, listening on " + PORT); + System.out.println("---> Server started, listening on " + PORT); // Used for gradle startDaemon + } + + private void stop() throws InterruptedException { + if (server != null) { + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); + } + } + + /** Await termination on the main thread since the grpc library uses daemon threads. */ + private void blockUntilShutdown() throws InterruptedException { + if (server != null) { + server.awaitTermination(); + } + } + + /** Main launches the server from the command line. */ + public static void main(String[] args) throws IOException, InterruptedException { + final GcdmServer server = new GcdmServer(); + server.start(); + server.blockUntilShutdown(); + } + + static class GcdmImpl extends GcdmImplBase { + @Override + public void getNetcdfHeader(HeaderRequest req, StreamObserver responseObserver) { + logger.info("GcdmServer getHeader " + req.getLocation()); + final HeaderResponse.Builder response = HeaderResponse.newBuilder(); + try (NetcdfFile ncfile = NetcdfDatasets.openFile(req.getLocation(), null)) { + final Header.Builder header = Header.newBuilder().setLocation(req.getLocation()) + .setRoot(GcdmConverter.encodeGroup(ncfile.getRootGroup(), 100).build()); + response.setHeader(header); + responseObserver.onNext(response.build()); + responseObserver.onCompleted(); + } catch (Throwable t) { + logger.warn("GcdmServer getHeader failed ", t); + t.printStackTrace(); + response.setError(GcdmNetcdfProto.Error.newBuilder().setMessage(t.getMessage()).build()); + } + } + + @Override + public void getNetcdfData(DataRequest req, StreamObserver responseObserver) { + logger.info("GcdmServer getData {} {}", req.getLocation(), req.getVariableSpec()); + final Stopwatch stopwatch = Stopwatch.createStarted(); + long size = -1; + + try (NetcdfFile ncfile = NetcdfDatasets.openFile(req.getLocation(), null)) { // LOOK cache ncfile? + final ParsedSectionSpec varSection = ParsedSectionSpec.parseVariableSection(ncfile, req.getVariableSpec()); + final Variable var = varSection.getVariable(); + if (var instanceof Sequence) { + size = getSequenceData(ncfile, varSection, responseObserver); + } else { + final Section wantSection = varSection.getArraySection(); + size = var.getElementSize() * wantSection.computeSize(); + getNetcdfData(ncfile, varSection, responseObserver); + } + responseObserver.onCompleted(); + } catch (Throwable t) { + logger.warn("GcdmServer getData failed ", t); + t.printStackTrace(); + final DataResponse.Builder response = + DataResponse.newBuilder().setLocation(req.getLocation()).setVariableSpec(req.getVariableSpec()); + response.setError( + GcdmNetcdfProto.Error.newBuilder().setMessage(t.getMessage() == null ? "N/A" : t.getMessage()).build()); + responseObserver.onNext(response.build()); + } + + logger.debug(" ** size={} took={}", size, stopwatch.stop()); + } + + private void getNetcdfData(NetcdfFile ncfile, ParsedSectionSpec varSection, + StreamObserver responseObserver) throws IOException, InvalidRangeException { + final Variable var = varSection.getVariable(); + final Section wantSection = varSection.getArraySection(); + long size = var.getElementSize() * wantSection.computeSize(); + if (size > MAX_MESSAGE) { + getDataInChunks(ncfile, varSection, responseObserver); + } else { + getOneChunk(ncfile, varSection, responseObserver); + } + } + + // TODO this returns structure member data in one chunk no matter the size, see testDataChunkingForStructures + private void getDataInChunks(NetcdfFile ncfile, ParsedSectionSpec varSection, + StreamObserver responseObserver) throws IOException, InvalidRangeException { + + final Variable var = varSection.getVariable(); + final Section section = varSection.getArraySection(); + long maxChunkElems = MAX_MESSAGE / var.getElementSize(); + final ChunkingIndex index = new ChunkingIndex(section.getShape()); + while (index.currentElement() < index.getSize()) { + final int[] chunkOrigin = index.getCurrentCounter(); + final int[] chunkShape = index.computeChunkShape(maxChunkElems); + final Section chunkSection = new Section(chunkOrigin, chunkShape); + final ParsedSectionSpec spec = new ParsedSectionSpec(var, chunkSection); + getOneChunk(ncfile, spec, responseObserver); + index.setCurrentCounter(index.currentElement() + (int) Index.computeSize(chunkShape)); + } + } + + private void getOneChunk(NetcdfFile ncfile, ParsedSectionSpec varSection, + StreamObserver responseObserver) throws IOException, InvalidRangeException { + + final String spec = varSection.makeSectionSpecString(); + final Variable var = varSection.getVariable(); + final Section wantSection = varSection.getArraySection(); + + final DataResponse.Builder response = DataResponse.newBuilder().setLocation(ncfile.getLocation()) + .setVariableSpec(spec).setVarFullName(var.getFullName()); + + final Array data = var.read(wantSection); + response.setData(GcdmConverter.encodeData(data.getDataType(), data)); + + responseObserver.onNext(response.build()); + logger.debug("Send one chunk {} size={} bytes", spec, data.getSize() * varSection.getVariable().getElementSize()); + } + + // TODO count >= SEQUENCE_CHUNK is not covered in tests + private long getSequenceData(NetcdfFile ncfile, ParsedSectionSpec varSection, + StreamObserver responseObserver) throws IOException { + + final String spec = varSection.makeSectionSpecString(); + final Sequence seq = (Sequence) varSection.getVariable(); + final StructureMembers members = seq.makeStructureMembers(); + + StructureData[] structureData = new StructureData[SEQUENCE_CHUNK]; + int start = 0; + int count = 0; + StructureDataIterator it = seq.getStructureIterator(); + while (it.hasNext()) { + structureData[count++] = it.next(); + + if (count >= SEQUENCE_CHUNK || !it.hasNext()) { + final StructureData[] correctSizeArray = Arrays.copyOf(structureData, count); + final ArrayStructureW arrayStructure = new ArrayStructureW(members, new int[] {count}, correctSizeArray); + final DataResponse.Builder response = DataResponse.newBuilder().setLocation(ncfile.getLocation()) + .setVariableSpec(spec).setVarFullName(seq.getFullName()); + response.setData(GcdmConverter.encodeData(DataType.SEQUENCE, arrayStructure)); + responseObserver.onNext(response.build()); + start = count; + count = 0; + } + } + return (long) (start + count) * members.getStructureSize(); + } + } // GcdmImpl +} diff --git a/cdm/gcdm/src/main/proto/ucar/gcdm/gcdm_netcdf.proto b/cdm/gcdm/src/main/proto/ucar/gcdm/gcdm_netcdf.proto new file mode 100644 index 0000000000..9be8842373 --- /dev/null +++ b/cdm/gcdm/src/main/proto/ucar/gcdm/gcdm_netcdf.proto @@ -0,0 +1,167 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ + +syntax = "proto3"; + +package ucar.gcdm; + +option java_package = "ucar.gcdm"; +option java_outer_classname = "GcdmNetcdfProto"; + +message HeaderRequest { + string location = 1; +} + +message HeaderResponse { + Error error = 1; // non-empty on error + uint32 version = 2; // response version + Header header = 3; +} + +message DataRequest { + string location = 1; + string variable_spec = 2; +} + +message DataResponse { + Error error = 1; // non-empty on error + uint32 version = 2; // response version + + string location = 3; + string variable_spec = 4; // the requested variableSpec + string var_full_name = 5; // Variable full name + + Data data = 6; +} + +message Error { + string message = 1; + uint32 code = 2; +} + +///////////////////////////////////////////////////////////////////////////// + +message Attribute { + string name = 1; + DataType data_type = 2; // cant use STRUCTURE or SEQUENCE or OPAQUE or ENUM; CHAR deprecated, use STRING + uint32 length = 3; + Data data = 4; +} + +enum DataType { + DATA_TYPE_UNSPECIFIED = 0; + DATA_TYPE_BYTE = 1; + DATA_TYPE_SHORT = 2; + DATA_TYPE_INT = 3; + DATA_TYPE_LONG = 4; + DATA_TYPE_FLOAT = 5; + DATA_TYPE_DOUBLE = 6; + DATA_TYPE_STRING = 7; + DATA_TYPE_STRUCTURE = 8; + DATA_TYPE_SEQUENCE = 9; + DATA_TYPE_ENUM1 = 10; + DATA_TYPE_ENUM2 = 11; + DATA_TYPE_ENUM4 = 12; + DATA_TYPE_OPAQUE = 13; + + DATA_TYPE_UBYTE = 14; + DATA_TYPE_USHORT = 15; + DATA_TYPE_UINT = 16; + DATA_TYPE_ULONG = 17; + + DATA_TYPE_CHAR = 18; // prefer String +} + +message Dimension { + string name = 1; // short name - optional when private + uint64 length = 2; // optional when vlen, may be zero if unlimited + bool is_unlimited = 3; + bool is_vlen = 4; + bool is_private = 5; +} + +message EnumTypedef { + message EnumType { + uint32 code = 1; + string value = 2; + } + string name = 1; + DataType base_type = 2; + repeated EnumType maps = 3; +} + +message Group { + string name = 1; // short name + repeated Dimension dimensions = 2; + repeated Variable variables = 3; + repeated Structure structures = 4; + repeated Attribute attributes = 5; + repeated Group groups = 6; + repeated EnumTypedef enum_types = 7; +} + +message Header { + string location = 1; + string title = 2; + string id = 3; + + Group root = 4; +} + +message Structure { + string name = 1; // short name + DataType data_type = 2; // STRUCTURE or SEQUENCE + repeated Dimension shapes = 3; // actual dimension instead of reference + repeated Attribute attributes = 4; + repeated Variable variables = 5; // members that are not structs + repeated Structure structs = 6; // struct members that are structs +} + +message Variable { + string name = 1; // short name + DataType data_type = 2; + repeated Dimension shapes = 3; // actual dimension instead of reference + repeated Attribute attributes = 4; + string enum_type = 5; // EnumTypedef name, only for enum types + Data data = 6; // "immediate" - store small data in header +} + +////////////////////////////////// + +message Data { + DataType data_type = 1; + repeated uint32 shapes = 2; + + // oneof, depends on data_type + repeated bytes byte_data = 3; // ENUM1, BYTE, OPAQUE, CHAR + repeated sint32 int_data = 4; // SHORT, INT, ENUM2, USHORT + repeated uint32 uint_data = 5; // ENUM4, UINT + repeated sint64 long_data = 6; // LONG + repeated uint64 ulong_data = 7; // ULONG + repeated float float_data = 8; // FLOAT + repeated double double_data = 9; // DOUBLE + repeated string string_data = 10; // STRING + repeated Data vlen_data = 11; // VLEN + + // STRUCTURE, SEQUENCE + StructureMembersProto members = 12; + repeated StructureDataProto rows = 13; // row oriented: one for each row +} + +message StructureDataProto { + repeated Data member_data = 1; // one for each member +} + +message StructureMembersProto { + string name = 1; + repeated StructureMemberProto members = 12; +} + +message StructureMemberProto { + string name = 1; + DataType data_type = 2; + repeated int32 shapes = 3; + StructureMembersProto members = 4; +} diff --git a/cdm/gcdm/src/main/proto/ucar/gcdm/gcdm_server.proto b/cdm/gcdm/src/main/proto/ucar/gcdm/gcdm_server.proto new file mode 100644 index 0000000000..5d75d209e4 --- /dev/null +++ b/cdm/gcdm/src/main/proto/ucar/gcdm/gcdm_server.proto @@ -0,0 +1,18 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ + +syntax = "proto3"; + +package ucar.gcdm; + +import "ucar/gcdm/gcdm_netcdf.proto"; + +option java_package = "ucar.gcdm"; +option java_outer_classname = "GcdmServerProto"; + +service Gcdm { + rpc GetNetcdfHeader (HeaderRequest) returns (HeaderResponse) {} + rpc GetNetcdfData (DataRequest) returns (stream DataResponse) {} +} diff --git a/cdm/gcdm/src/main/resources/logback.xml b/cdm/gcdm/src/main/resources/logback.xml new file mode 100644 index 0000000000..4a7833573c --- /dev/null +++ b/cdm/gcdm/src/main/resources/logback.xml @@ -0,0 +1,17 @@ + + + + + + %highlight([%d{HH:mm:ss.SSS} %-5level %logger{36}]) %message%n + + + + + + + + + + + diff --git a/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmDataChunking.java b/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmDataChunking.java new file mode 100644 index 0000000000..7a2d38463d --- /dev/null +++ b/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmDataChunking.java @@ -0,0 +1,147 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ +package ucar.gcdm; + +import static com.google.common.truth.Truth.assertThat; +import static ucar.gcdm.TestUtils.*; +import static ucar.gcdm.TestUtils.gcdmPrefix; + +import java.io.IOException; +import java.lang.invoke.MethodHandles; +import org.junit.Ignore; +import org.junit.Rule; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.rules.TemporaryFolder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.gcdm.client.GcdmNetcdfFile; +import ucar.gcdm.server.GcdmServer; +import ucar.ma2.Array; +import ucar.ma2.ArrayStructure; +import ucar.ma2.ArrayStructureW; +import ucar.ma2.DataType; +import ucar.ma2.InvalidRangeException; +import ucar.ma2.StructureDataW; +import ucar.ma2.StructureMembers; +import ucar.ma2.StructureMembers.MemberBuilder; +import ucar.nc2.Structure; +import ucar.nc2.Variable; +import ucar.nc2.write.NetcdfFileFormat; +import ucar.nc2.write.NetcdfFormatWriter; +import ucar.unidata.util.test.TestDir; +import ucar.unidata.util.test.category.NeedsCdmUnitTest; + +public class TestGcdmDataChunking { + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @Rule + public final TemporaryFolder tempFolder = new TemporaryFolder(); + + @Test + @Category(NeedsCdmUnitTest.class) + public void testChunkProblem() throws Exception { + String localFilename = TestDir.cdmUnitTestDir + "formats/netcdf4/multiDimscale.nc4"; + compareFiles(localFilename); + } + + @Test + public void testDataChunking() throws IOException, InvalidRangeException { + String variableName = "varName"; + DataType dataType = DataType.INT; + Array expectedData = Array.makeArray(dataType, 13_000_000, 0, 1); + + String filename = writeNetcdfFile(variableName, dataType, expectedData); + String gcdmUrl = gcdmPrefix + filename; + + try (GcdmNetcdfFile gcdmFile = GcdmNetcdfFile.builder().setRemoteURI(gcdmUrl).build()) { + Variable variable = gcdmFile.findVariable(variableName); + assertThat((Object) variable).isNotNull(); + + long size = variable.getElementSize() * variable.getSize(); + assertThat(size).isGreaterThan(GcdmServer.MAX_MESSAGE); // Data should be chunked + + Array data = variable.read(); + assertThat(data.getSize()).isEqualTo(expectedData.getSize()); + for (int i = 0; i < data.getSize(); i++) { + assertThat(data.getInt(i)).isEqualTo(expectedData.getInt(i)); + } + } + } + + @Ignore("Can lead to an out of memory exception because structure member data is not chunked") + @Test + public void testDataChunkingForStructures() throws IOException, InvalidRangeException { + String structureName = "structureName"; + String memberName = "memberName"; + DataType dataType = DataType.INT; + Array expectedData = Array.makeArray(dataType, 13_000_000, 0, 1); + + String filename = writeNetcdfFileWithStructure(structureName, memberName, dataType, expectedData); + String gcdmUrl = gcdmPrefix + filename; + + try (GcdmNetcdfFile gcdmFile = GcdmNetcdfFile.builder().setRemoteURI(gcdmUrl).build()) { + Variable variable = gcdmFile.findVariable(structureName); + assertThat((Object) variable).isNotNull(); + + long size = variable.getElementSize() * variable.getSize(); + assertThat(size).isGreaterThan(GcdmServer.MAX_MESSAGE); // Data should be chunked + + ArrayStructure arrayStructure = (ArrayStructure) variable.read(); + Array memberData = arrayStructure.extractMemberArray(arrayStructure.findMember(memberName)); + assertThat(memberData.getSize()).isEqualTo(expectedData.getSize()); + for (int i = 0; i < memberData.getSize(); i++) { + assertThat(memberData.getInt(i)).isEqualTo(expectedData.getInt(i)); + } + } + } + + private String writeNetcdfFile(String variableName, DataType dataType, Array values) + throws IOException, InvalidRangeException { + String filename = tempFolder.newFile().getAbsolutePath(); + NetcdfFormatWriter.Builder writerBuilder = NetcdfFormatWriter.createNewNetcdf3(filename); + + writerBuilder.addDimension("dimension", (int) values.getSize()); + writerBuilder.addVariable(variableName, dataType, "dimension"); + + try (NetcdfFormatWriter writer = writerBuilder.build()) { + writer.write(variableName, values); + } + return filename; + } + + private String writeNetcdfFileWithStructure(String structureName, String memberName, DataType dataType, Array values) + throws IOException, InvalidRangeException { + String filename = tempFolder.newFile().getAbsolutePath(); + String structureDimensionName = "structureDimension"; + String memberDimensionName = "memberDimension"; + NetcdfFormatWriter.Builder writerBuilder = + NetcdfFormatWriter.createNewNetcdf4(NetcdfFileFormat.NETCDF4, filename, null); + + writerBuilder.addDimension(structureDimensionName, 1); + writerBuilder.addDimension(memberDimensionName, (int) values.getSize()); + + Structure.Builder structureBuilder = writerBuilder.addStructure(structureName, structureDimensionName); + Variable.Builder variableBuilder = + Variable.builder().setParentGroupBuilder(structureBuilder.getParentGroupBuilder()) + .setDimensionsByName(memberDimensionName).setName(memberName).setDataType(dataType); + structureBuilder.addMemberVariable(variableBuilder); + + try (NetcdfFormatWriter writer = writerBuilder.build()) { + Structure structure = (Structure) writer.findVariable(structureName); + assertThat((Object) structure).isNotNull(); + + int[] shape = new int[] {(int) values.getSize()}; + MemberBuilder memberBuilder = StructureMembers.builder().addMember(memberName, "desc", "units", dataType, shape); + StructureMembers members = StructureMembers.builder().addMember(memberBuilder).build(); + StructureDataW structureData = new StructureDataW(members); + structureData.setMemberData(memberName, values); + ArrayStructureW arrayStructure = new ArrayStructureW(structureData); + + writer.write(structureName, arrayStructure); + } + return filename; + } +} diff --git a/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmDataSize.java b/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmDataSize.java new file mode 100644 index 0000000000..64f0e73308 --- /dev/null +++ b/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmDataSize.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ +package ucar.gcdm; + +import static ucar.gcdm.TestUtils.*; + +import java.lang.invoke.MethodHandles; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.unidata.util.test.TestDir; +import ucar.unidata.util.test.category.NeedsCdmUnitTest; + +public class TestGcdmDataSize { + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @Test + @Category(NeedsCdmUnitTest.class) + public void testRequestTooBig() throws Exception { + String localFilename = TestDir.cdmUnitTestDir + "formats/hdf4/MOD021KM.A2004328.1735.004.2004329164007.hdf"; + compareVariables(localFilename, "MODIS_SWATH_Type_L1B/Data_Fields/EV_1KM_RefSB"); + } + + @Test + @Category(NeedsCdmUnitTest.class) + public void testRequestNotTooBig() throws Exception { + String localFilename = TestDir.cdmUnitTestDir + "formats/hdf4/MOD021KM.A2004328.1735.004.2004329164007.hdf"; + compareVariables(localFilename, "MODIS_SWATH_Type_L1B/Data_Fields/EV_500_Aggr1km_RefSB_Samples_Used"); + } + + @Test + @Category(NeedsCdmUnitTest.class) + public void testLargeArray() throws Exception { + String localFilename = + TestDir.cdmUnitTestDir + "formats/netcdf4/e562p1_fp.inst3_3d_asm_Nv.20100907_00z+20100909_1200z.nc4"; + compareVariables(localFilename, "O3"); + } + + @Test + @Category(NeedsCdmUnitTest.class) + public void testDataTooLarge() throws Exception { + String localFilename = TestDir.cdmUnitTestDir + "formats/netcdf4/UpperDeschutes_t4p10_swemelt.nc"; + compareFiles(localFilename); + } +} diff --git a/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmDataTypes.java b/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmDataTypes.java new file mode 100644 index 0000000000..85d87fcb2d --- /dev/null +++ b/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmDataTypes.java @@ -0,0 +1,103 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ +package ucar.gcdm; + +import static com.google.common.truth.Truth.assertThat; +import static ucar.gcdm.TestUtils.*; + +import java.io.IOException; +import java.lang.invoke.MethodHandles; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.gcdm.client.GcdmNetcdfFile; +import ucar.ma2.ArrayChar; +import ucar.ma2.DataType; +import ucar.nc2.Sequence; +import ucar.nc2.Variable; +import ucar.unidata.util.test.TestDir; +import ucar.unidata.util.test.category.NeedsCdmUnitTest; + +public class TestGcdmDataTypes { + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @Test + @Category(NeedsCdmUnitTest.class) + public void testAttributeStruct() throws Exception { + String localFilename = TestDir.cdmUnitTestDir + "formats/netcdf4/attributeStruct.nc"; + compareVariables(localFilename, "observations"); + } + + @Test + @Category(NeedsCdmUnitTest.class) + public void testEnumProblem() throws Exception { + String localFilename = TestDir.cdmUnitTestDir + "formats/netcdf4/tst/tst_enums.nc"; + compareFiles(localFilename); + } + + @Test + @Category(NeedsCdmUnitTest.class) + public void testCharProblem() throws Exception { + String localFilename = TestDir.cdmUnitTestDir + "formats/bufr/userExamples/test1.bufr"; + compareFiles(localFilename); + } + + @Test + public void testOpaqueDataType() throws Exception { + String localFilename = TestDir.cdmLocalTestDataDir + "hdf5/test_atomic_types.nc"; + compareFiles(localFilename); + } + + @Ignore("This variable is too large and causes an out of memory exception unrelated to gcdm.") + @Test + @Category(NeedsCdmUnitTest.class) + public void testCombineStructure() throws Exception { + String localFilename = TestDir.cdmUnitTestDir + "formats/hdf5/IASI/IASI.h5"; + compareVariables(localFilename, "U-MARF/EPS/IASI_xxx_1C/DATA/MDR_1C_IASI_L1_ARRAY_000001"); + } + + @Test + @Category(NeedsCdmUnitTest.class) + public void testCombineStructureMember() throws Exception { + String localFilename = TestDir.cdmUnitTestDir + "formats/hdf5/IASI/IASI.h5"; + compareVariables(localFilename, "U-MARF/EPS/IASI_xxx_1C/DATA/MDR_1C_IASI_L1_ARRAY_000001.GCcsRadAnalStd-value"); + } + + @Test + @Category(NeedsCdmUnitTest.class) + public void testGcdmVlenCast() throws Exception { + String localFilename = TestDir.cdmUnitTestDir + "formats/netcdf4/files/tst_opaque_data.nc4"; + compareFiles(localFilename); + } + + @Test + public void testGcdmVlenProblem() throws Exception { + String localFilename = TestDir.cdmLocalTestDataDir + "dataset/SimpleGeos/hru_soil_moist_vlen_3hru_5timestep.nc"; + compareFiles(localFilename); + } + + @Test + @Category(NeedsCdmUnitTest.class) + public void testSequenceData() throws IOException { + String filename = TestDir.cdmUnitTestDir + "formats/bufr/userExamples/test1.bufr"; + String gcdmUrl = gcdmPrefix + filename; + + try (GcdmNetcdfFile gcdmFile = GcdmNetcdfFile.builder().setRemoteURI(gcdmUrl).build()) { + Sequence sequence = (Sequence) gcdmFile.findVariable("obs"); + assertThat((Object) sequence).isNotNull(); + assertThat(sequence.getNumberOfMemberVariables()).isEqualTo(78); + + Variable variable = sequence.findVariable("Station_or_site_name"); + assertThat((Object) variable).isNotNull(); + assertThat(variable.getSize()).isEqualTo(20); + assertThat(variable.getDataType()).isEqualTo(DataType.CHAR); + + ArrayChar data = (ArrayChar) variable.read(); + assertThat(data.getString(0)).isEqualTo("WOLLOGORANG "); + } + } +} diff --git a/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmFileFormats.java b/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmFileFormats.java new file mode 100644 index 0000000000..8a91ddb116 --- /dev/null +++ b/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmFileFormats.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ +package ucar.gcdm; + +import static ucar.gcdm.TestUtils.*; + +import java.lang.invoke.MethodHandles; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.unidata.util.test.TestDir; +import ucar.unidata.util.test.category.NeedsCdmUnitTest; + +public class TestGcdmFileFormats { + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @Test + @Category(NeedsCdmUnitTest.class) + public void testHdf4() throws Exception { + String localFilename = TestDir.cdmUnitTestDir + "formats/hdf4/MOD021KM.A2004328.1735.004.2004329164007.hdf"; + compareVariables(localFilename, "MODIS_SWATH_Type_L1B/Data_Fields/EV_250_Aggr1km_RefSB"); + } +} diff --git a/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmNetcdfFile.java b/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmNetcdfFile.java new file mode 100644 index 0000000000..43dfa43485 --- /dev/null +++ b/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmNetcdfFile.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ +package ucar.gcdm; + +import static ucar.gcdm.TestUtils.*; + +import java.io.FileFilter; +import java.lang.invoke.MethodHandles; +import java.util.ArrayList; +import java.util.List; +import org.apache.commons.io.filefilter.SuffixFileFilter; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.gcdm.client.GcdmNetcdfFile; +import ucar.unidata.util.test.TestDir; +import ucar.unidata.util.test.category.NeedsCdmUnitTest; + +/** Test {@link GcdmNetcdfFile} */ +@RunWith(Parameterized.class) +@Category(NeedsCdmUnitTest.class) +public class TestGcdmNetcdfFile { + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @Parameterized.Parameters(name = "{0}") + public static List getTestParameters() { + List result = new ArrayList<>(500); + try { + // TODO skip test files that involve a Structure with a vlen member as that does not currently work + FileFilter skipStructuresWithVlens = + pathname -> pathname.getName().endsWith("nc") && !pathname.getName().startsWith("test_vlen3") + && !pathname.getName().startsWith("test_vlen4") && !pathname.getName().startsWith("test_vlen5") + && !pathname.getName().startsWith("test_vlen9") && !pathname.getName().startsWith("test_vlen10"); + String skipStructuresWithVlens2 = "vlen/IntTimSciSamp.nc vlen/cdm_sea_soundings.nc4"; + + TestDir.actOnAllParameterized("../../dap4/src/test/data/resources/nctestfiles/", skipStructuresWithVlens, result, + false); + + TestDir.actOnAllParameterized(TestDir.cdmLocalTestDataDir, new SuffixFileFilter(".nc"), result, true); + + FileFilter ff = TestDir.FileFilterSkipSuffix(".cdl .ncml perverse.nc " + skipStructuresWithVlens2); + TestDir.actOnAllParameterized(TestDir.cdmUnitTestDir + "formats/bufr/userExamples", ff, result, false); + TestDir.actOnAllParameterized(TestDir.cdmUnitTestDir + "/formats/netcdf3", ff, result, true); + TestDir.actOnAllParameterized(TestDir.cdmUnitTestDir + "formats/netcdf4", ff, result, false); + TestDir.actOnAllParameterized(TestDir.cdmUnitTestDir + "/formats/netcdf4/files", ff, result, true); + TestDir.actOnAllParameterized(TestDir.cdmUnitTestDir + "/formats/netcdf4/vlen", ff, result, true); + TestDir.actOnAllParameterized(TestDir.cdmUnitTestDir + "/formats/hdf5/samples", ff, result, true); + TestDir.actOnAllParameterized(TestDir.cdmUnitTestDir + "/formats/hdf5/support", ff, result, true); + TestDir.actOnAllParameterized(TestDir.cdmUnitTestDir + "/formats/hdf5/wrf", ff, result, true); + TestDir.actOnAllParameterized(TestDir.cdmUnitTestDir + "/formats/hdf4", ff, result, true); + + } catch (Exception e) { + e.printStackTrace(); + } + return result; + } + + private final String filename; + + public TestGcdmNetcdfFile(String filename) { + this.filename = filename.replace("\\", "/"); + } + + @Test + public void doOne() throws Exception { + compareFiles(filename); + } +} diff --git a/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmReadSection.java b/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmReadSection.java new file mode 100644 index 0000000000..370a33dbac --- /dev/null +++ b/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmReadSection.java @@ -0,0 +1,87 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ +package ucar.gcdm; + +import static com.google.common.truth.Truth.assertThat; +import static ucar.gcdm.TestUtils.gcdmPrefix; + +import java.lang.invoke.MethodHandles; +import java.nio.file.Paths; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.gcdm.client.GcdmNetcdfFile; +import ucar.ma2.Array; +import ucar.nc2.Variable; +import ucar.unidata.util.test.TestDir; +import ucar.unidata.util.test.category.NeedsCdmUnitTest; + +public class TestGcdmReadSection { + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + @BeforeClass + public static void before() { + // make sure to fetch data through gcdm every time + Variable.permitCaching = false; + } + + @AfterClass + public static void after() { + Variable.permitCaching = true; + } + + @Test + public void testReadSection() throws Exception { + String localFilename = "../../dap4/src/test/data/resources/nctestfiles/test_atomic_array.nc"; + String varName = "vs"; // Variable is non-numeric so values are not read when header is + String[] expectedValues = {"hello\tworld", "\r\n", "Καλημέα", "abc"}; + String gcdmUrl = gcdmPrefix + Paths.get(localFilename).toAbsolutePath(); + try (GcdmNetcdfFile gcdmFile = GcdmNetcdfFile.builder().setRemoteURI(gcdmUrl).build()) { + Variable gcdmVar = gcdmFile.findVariable(varName); + assertThat((Object) gcdmVar).isNotNull(); + + Array array = gcdmVar.read(); + assertThat(array.getSize()).isEqualTo(expectedValues.length); + assertThat(array.getObject(0)).isEqualTo(expectedValues[0]); + assertThat(array.getObject(1)).isEqualTo(expectedValues[1]); + assertThat(array.getObject(2)).isEqualTo(expectedValues[2]); + assertThat(array.getObject(3)).isEqualTo(expectedValues[3]); + + Array subset1 = gcdmVar.read("0:0, 0:1"); + assertThat(subset1.getSize()).isEqualTo(2); + assertThat(subset1.getObject(0)).isEqualTo(expectedValues[0]); + assertThat(subset1.getObject(1)).isEqualTo(expectedValues[1]); + + Array subset2 = gcdmVar.read("1:1, 0:1"); + assertThat(subset2.getSize()).isEqualTo(2); + assertThat(subset2.getObject(0)).isEqualTo(expectedValues[2]); + assertThat(subset2.getObject(1)).isEqualTo(expectedValues[3]); + + Array subset3 = gcdmVar.read("0:1, 1:1"); + assertThat(subset3.getSize()).isEqualTo(2); + assertThat(subset3.getObject(0)).isEqualTo(expectedValues[1]); + assertThat(subset3.getObject(1)).isEqualTo(expectedValues[3]); + } + } + + @Test + @Category(NeedsCdmUnitTest.class) + public void testReadSectionOfArrayStructure() throws Exception { + String localFilename = TestDir.cdmUnitTestDir + "formats/hdf5/IASI/IASI.h5"; + String varName = "U-MARF/EPS/IASI_xxx_1C/DATA/MDR_1C_IASI_L1_ARRAY_000001"; + String gcdmUrl = gcdmPrefix + Paths.get(localFilename).toAbsolutePath(); + try (GcdmNetcdfFile gcdmFile = GcdmNetcdfFile.builder().setRemoteURI(gcdmUrl).build()) { + Variable gcdmVar = gcdmFile.findVariable(varName); + assertThat((Object) gcdmVar).isNotNull(); + + assertThat(gcdmVar.read().getSize()).isEqualTo(720); + assertThat(gcdmVar.read("0:130").getSize()).isEqualTo(131); + assertThat(gcdmVar.read("718:719").getSize()).isEqualTo(2); + } + } +} diff --git a/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmTiming.java b/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmTiming.java new file mode 100644 index 0000000000..a6594dfddf --- /dev/null +++ b/cdm/gcdm/src/test/java/ucar/gcdm/TestGcdmTiming.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ +package ucar.gcdm; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.common.base.Stopwatch; +import java.io.IOException; +import java.lang.invoke.MethodHandles; +import java.util.concurrent.TimeUnit; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.gcdm.client.GcdmNetcdfFile; +import ucar.ma2.Array; +import ucar.nc2.Variable; +import ucar.unidata.util.test.TestDir; +import ucar.unidata.util.test.category.NeedsCdmUnitTest; +import ucar.unidata.util.test.category.Slow; + +/** Time {@link GcdmNetcdfFile} takes ~ 3 minutes */ +@Ignore("TODO This test fails due to deadline exceeded after 30s") +@Category({NeedsCdmUnitTest.class, Slow.class}) +public class TestGcdmTiming { + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + String localFilename = + TestDir.cdmUnitTestDir + "formats/netcdf4/e562p1_fp.inst3_3d_asm_Nv.20100907_00z+20100909_1200z.nc4"; + + @Test + public void readGcdmArray() throws IOException { + String gcdmUrl = "gcdm://localhost:16111/" + localFilename; + + long total = 0; + Stopwatch stopwatchAll = Stopwatch.createStarted(); + try (GcdmNetcdfFile gcdmFile = GcdmNetcdfFile.builder().setRemoteURI(gcdmUrl).build()) { + logger.debug("Test input: " + gcdmFile.getLocation()); + boolean ok = true; + for (Variable v : gcdmFile.getVariables()) { + logger.debug(" read variable though array : {} {}", v.getDataType(), v.getShortName()); + Stopwatch stopwatch = Stopwatch.createStarted(); + Array data = v.read(); + stopwatch.stop(); + long size = data.getSize(); + double rate = ((double) size) / stopwatch.elapsed(TimeUnit.MICROSECONDS); + logger.debug(" size = {}, time = {} rate = {} MB/sec", size, stopwatch, rate); + total += size; + } + assertThat(ok).isTrue(); + } + stopwatchAll.stop(); + double rate = ((double) total) / stopwatchAll.elapsed(TimeUnit.MICROSECONDS); + logger.debug("*** {} bytes took {} = {} MB/sec", total, stopwatchAll, rate); + } +} diff --git a/cdm/gcdm/src/test/java/ucar/gcdm/TestUtils.java b/cdm/gcdm/src/test/java/ucar/gcdm/TestUtils.java new file mode 100644 index 0000000000..6af198d211 --- /dev/null +++ b/cdm/gcdm/src/test/java/ucar/gcdm/TestUtils.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ +package ucar.gcdm; + +import static com.google.common.truth.Truth.assertThat; + +import java.lang.invoke.MethodHandles; +import java.util.Formatter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.gcdm.client.GcdmNetcdfFile; +import ucar.nc2.NetcdfFile; +import ucar.nc2.Variable; +import ucar.nc2.dataset.NetcdfDatasets; +import ucar.nc2.util.CompareNetcdf2; + +public class TestUtils { + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + static final String gcdmPrefix = "gcdm://localhost:16111/"; + + static void compareFiles(String filename) throws Exception { + String gcdmUrl = gcdmPrefix + filename; + try (NetcdfFile ncfile = NetcdfDatasets.openFile(filename, null); + GcdmNetcdfFile gcdmFile = GcdmNetcdfFile.builder().setRemoteURI(gcdmUrl).build()) { + + Formatter formatter = new Formatter(); + boolean ok = CompareNetcdf2.compareFiles(ncfile, gcdmFile, formatter, true, true, true); + logger.debug(formatter.toString()); + assertThat(ok).isTrue(); + } + } + + static void compareVariables(String filename, String varName) throws Exception { + String gcdmUrl = gcdmPrefix + filename; + try (NetcdfFile ncfile = NetcdfDatasets.openFile(filename, null); + GcdmNetcdfFile gcdmFile = GcdmNetcdfFile.builder().setRemoteURI(gcdmUrl).build()) { + + Variable ncVar = ncfile.findVariable(varName); + Variable gcdmVar = gcdmFile.findVariable(varName); + + Formatter formatter = new Formatter(); + CompareNetcdf2 compareNetcdf2 = new CompareNetcdf2(formatter, false, true, true); + boolean ok = compareNetcdf2.compareVariable(ncVar, gcdmVar, CompareNetcdf2.IDENTITY_FILTER); + logger.debug(formatter.toString()); + assertThat(ok).isTrue(); + } + } +} diff --git a/cdm/gcdm/src/test/java/ucar/gcdm/client/GcdmNetcdfFile.java b/cdm/gcdm/src/test/java/ucar/gcdm/client/GcdmNetcdfFile.java new file mode 100644 index 0000000000..fae6a4524a --- /dev/null +++ b/cdm/gcdm/src/test/java/ucar/gcdm/client/GcdmNetcdfFile.java @@ -0,0 +1,234 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ +package ucar.gcdm.client; + +import com.google.common.base.Preconditions; +import com.google.common.base.Stopwatch; +import io.grpc.ManagedChannel; +import io.grpc.ManagedChannelBuilder; +import io.grpc.StatusRuntimeException; +import java.io.IOException; +import java.net.URI; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.TimeUnit; +import javax.annotation.Nullable; +import ucar.gcdm.GcdmConverter; +import ucar.gcdm.GcdmGrpc; +import ucar.gcdm.GcdmNetcdfProto.DataRequest; +import ucar.gcdm.GcdmNetcdfProto.DataResponse; +import ucar.gcdm.GcdmNetcdfProto.Header; +import ucar.gcdm.GcdmNetcdfProto.HeaderRequest; +import ucar.gcdm.GcdmNetcdfProto.HeaderResponse; +import ucar.ma2.Array; +import ucar.ma2.ArrayStructure; +import ucar.ma2.Section; +import ucar.ma2.StructureDataIterator; +import ucar.nc2.Group; +import ucar.nc2.NetcdfFile; +import ucar.nc2.ParsedSectionSpec; +import ucar.nc2.Structure; +import ucar.nc2.Variable; + +/** A remote CDM NetcdfFile, using gprc protocol to communicate. */ +public class GcdmNetcdfFile extends NetcdfFile { + private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(GcdmNetcdfFile.class); + private static final int MAX_DATA_WAIT_SECONDS = 30; + private static final int MAX_MESSAGE = 101 * 1000 * 1000; // 101 Mb + + public static final String PROTOCOL = "gcdm"; + + @Override + protected StructureDataIterator getStructureIterator(Structure structure, int bufferSize) throws IOException { + final Array data = readData(structure, structure.getShapeAsSection()); + Preconditions.checkNotNull(data); + Preconditions.checkArgument(data instanceof ArrayStructure); + final ArrayStructure arrayStructure = (ArrayStructure) data; + return arrayStructure.getStructureDataIterator(); + } + + @Nullable + protected Array readData(Variable variable, Section sectionWanted) throws IOException { + final String spec = ParsedSectionSpec.makeSectionSpecString(variable, sectionWanted.getRanges()); + if (logger.isDebugEnabled()) { + final long expected = sectionWanted.computeSize() * variable.getElementSize(); + logger.debug("GcdmNetcdfFile data request for spec=({})\n url='{}'\n path='{}' request bytes = {}\n", spec, + this.remoteURI, this.path, expected); + } + final Stopwatch stopwatch = Stopwatch.createStarted(); + + final List results = new ArrayList<>(); + long size = 0; + final DataRequest request = DataRequest.newBuilder().setLocation(this.path).setVariableSpec(spec).build(); + try { + final Iterator responses = + blockingStub.withDeadlineAfter(MAX_DATA_WAIT_SECONDS, TimeUnit.SECONDS).getNetcdfData(request); + while (responses.hasNext()) { + final DataResponse response = responses.next(); + if (response.hasError()) { + throw new IOException(response.getError().getMessage()); + } + final Array result = GcdmConverter.decodeData(response.getData()); + results.add(result); + size += result.getSize() * variable.getElementSize(); + if (logger.isDebugEnabled()) { + logger.debug(" readArrayData bytes received = {}", result.getSize() * variable.getElementSize()); + } + } + + } catch (StatusRuntimeException e) { + logger.warn("readData failed: ", e); + throw new IOException(e); + + } catch (Throwable t) { + logger.debug(" ** failed after {}", stopwatch); + logger.warn("readData failed: ", t); + throw new IOException(t); + } + logger.debug(" ** received={} took={} rate={} MB/sec", size, stopwatch.stop(), + ((double) size) / stopwatch.elapsed(TimeUnit.MICROSECONDS)); + + if (results.size() == 1) { + return results.get(0); + } else { + return Array.factoryCopy(variable.getDataType(), sectionWanted.getShape(), results); + } + } + + @Override + public String getFileTypeId() { + return PROTOCOL; + } + + @Override + public String getFileTypeDescription() { + return PROTOCOL; + } + + @Override + public synchronized void close() { + try { + channel.shutdownNow().awaitTermination(5, TimeUnit.SECONDS); + } catch (InterruptedException interruptedException) { + logger.warn("GcdmNetcdfFile shutdown interrupted"); + // fall through + } + } + + //////////////////////////////////////////////////////////////////////////////////////////// + + private final String remoteURI; + private final String path; + private final ManagedChannel channel; + private final GcdmGrpc.GcdmBlockingStub blockingStub; + + private GcdmNetcdfFile(Builder builder) { + super(builder); + this.remoteURI = builder.remoteURI; + this.path = builder.path; + this.channel = builder.channel; + this.blockingStub = builder.blockingStub; + } + + public Builder toBuilder() { + return addLocalFieldsToBuilder(builder()); + } + + private Builder addLocalFieldsToBuilder(Builder> b) { + b.setRemoteURI(this.remoteURI); + return (Builder) super.addLocalFieldsToBuilder(b); + } + + public static Builder builder() { + return new Builder2(); + } + + private static class Builder2 extends Builder { + @Override + protected Builder2 self() { + return this; + } + } + + public static abstract class Builder> extends NetcdfFile.Builder { + private String remoteURI; + private ManagedChannel channel; + private GcdmGrpc.GcdmBlockingStub blockingStub; + private String path; + private boolean built; + + protected abstract T self(); + + public T setRemoteURI(String remoteURI) { + this.remoteURI = remoteURI; + return self(); + } + + public GcdmNetcdfFile build() { + if (built) { + throw new IllegalStateException("already built"); + } + built = true; + openChannel(); + return new GcdmNetcdfFile(this); + } + + private void openChannel() { + // parse the URI + final URI uri = java.net.URI.create(this.remoteURI); + final String target = uri.getAuthority(); + this.path = uri.getPath(); + if (this.path.startsWith("/")) { + this.path = this.path.substring(1); + } + + // Create a communication channel to the server, known as a Channel. Channels are thread-safe + // and reusable. It is common to create channels at the beginning of your application and reuse + // them until the application shuts down. + this.channel = ManagedChannelBuilder.forTarget(target) + // Channels are secure by default (via SSL/TLS). For now, we disable TLS to avoid needing certificates. + .usePlaintext() // + .enableFullStreamDecompression() // + .maxInboundMessageSize(MAX_MESSAGE) // + .build(); + + try { + this.blockingStub = GcdmGrpc.newBlockingStub(channel); + readHeader(path); + } catch (Exception e) { + // ManagedChannels use resources like threads and TCP connections. To prevent leaking these + // resources the channel should be shut down when it will no longer be used. If it may be used + // again leave it running. + try { + channel.shutdownNow().awaitTermination(5, TimeUnit.SECONDS); + } catch (InterruptedException interruptedException) { + logger.warn("Shutdown interrupted ", e); + // fall through + } + e.printStackTrace(); + throw new RuntimeException("Cant open Gcdm url " + this.remoteURI, e); + } + } + + private void readHeader(String location) { + logger.info("GcdmNetcdfFile request header for " + location); + final HeaderRequest request = HeaderRequest.newBuilder().setLocation(location).build(); + final HeaderResponse response = blockingStub.getNetcdfHeader(request); + + if (response.hasError()) { + throw new RuntimeException(response.getError().getMessage()); + } else { + final Header header = response.getHeader(); + setId(header.getId()); + setTitle(header.getTitle()); + setLocation(remoteURI); + + this.rootGroup = Group.builder().setName(""); + GcdmConverter.decodeGroup(header.getRoot(), this.rootGroup); + } + } + } +} diff --git a/cdm/gcdm/src/test/resources/logback-test.xml b/cdm/gcdm/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..89c597c662 --- /dev/null +++ b/cdm/gcdm/src/test/resources/logback-test.xml @@ -0,0 +1,17 @@ + + + + + + %highlight([%d{HH:mm:ss.SSS} %-5level %logger{36}]) %message%n + + + + + + + + + + + diff --git a/cdm/image/src/test/java/ucar/nc2/iosp/TestMiscIosp.java b/cdm/image/src/test/java/ucar/nc2/iosp/TestMiscIosp.java index 49d315f1d6..5efe4ba7e8 100644 --- a/cdm/image/src/test/java/ucar/nc2/iosp/TestMiscIosp.java +++ b/cdm/image/src/test/java/ucar/nc2/iosp/TestMiscIosp.java @@ -28,14 +28,14 @@ public class TestMiscIosp { private static int leaks; @BeforeClass - static public void startup() { + public static void startup() { RandomAccessFile.setDebugLeaks(true); RandomAccessFile.enableDefaultGlobalFileCache(); leaks = RandomAccessFile.getOpenFiles().size(); } @AfterClass - static public void checkLeaks() { + public static void checkLeaks() { FileCache.shutdown(); RandomAccessFile.setGlobalFileCache(null); assert leaks == TestDir.checkLeaks(); diff --git a/cdm/misc/src/test/java/ucar/nc2/TestSequence.java b/cdm/misc/src/test/java/ucar/nc2/TestSequence.java index 41093ce757..2e1aa5ecd3 100644 --- a/cdm/misc/src/test/java/ucar/nc2/TestSequence.java +++ b/cdm/misc/src/test/java/ucar/nc2/TestSequence.java @@ -6,30 +6,19 @@ package ucar.nc2; import com.google.common.collect.Sets; -import java.io.File; import java.io.IOException; -import java.lang.invoke.MethodHandles; import java.util.Arrays; import java.util.List; import org.junit.Assert; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ucar.ma2.Array; -import ucar.ma2.ArrayFloat; -import ucar.ma2.ArraySequence; -import ucar.ma2.ArrayStructure; -import ucar.ma2.MAMath; import ucar.ma2.StructureData; import ucar.ma2.StructureDataIterator; -import ucar.nc2.dataset.NetcdfDatasets; import ucar.unidata.util.test.TestDir; import ucar.unidata.util.test.category.NeedsCdmUnitTest; /** Test Sequences constructed when reading NLDN datasets. */ public class TestSequence { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); @Test @Category(NeedsCdmUnitTest.class) diff --git a/cdm/misc/src/test/java/ucar/nc2/geotiff/TestGeoTiffWriter2.java b/cdm/misc/src/test/java/ucar/nc2/geotiff/TestGeoTiffWriter2.java index 1340194cc7..7042cb1bac 100644 --- a/cdm/misc/src/test/java/ucar/nc2/geotiff/TestGeoTiffWriter2.java +++ b/cdm/misc/src/test/java/ucar/nc2/geotiff/TestGeoTiffWriter2.java @@ -35,7 +35,7 @@ public class TestGeoTiffWriter2 { @Rule public final TemporaryFolder tempFolder = new TemporaryFolder(); - static public String topdir = TestDir.cdmUnitTestDir; + public static String topdir = TestDir.cdmUnitTestDir; @Parameterized.Parameters(name = "{0}") public static List getTestParameters() { diff --git a/cdm/misc/src/test/java/ucar/nc2/geotiff/TestGeotiffRead.java b/cdm/misc/src/test/java/ucar/nc2/geotiff/TestGeotiffRead.java index 5dd9869275..c3fad11c33 100644 --- a/cdm/misc/src/test/java/ucar/nc2/geotiff/TestGeotiffRead.java +++ b/cdm/misc/src/test/java/ucar/nc2/geotiff/TestGeotiffRead.java @@ -28,7 +28,7 @@ @RunWith(Parameterized.class) public class TestGeotiffRead { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - static public File topdir = new File(TestDir.cdmUnitTestDir + "/formats/geotiff/"); + public static File topdir = new File(TestDir.cdmUnitTestDir + "/formats/geotiff/"); // Even if this class is being excluded due to the NeedsCdmUnitTest annotation, JUnit still calls this method. // So, it mustn't throw an exception. Instead, when cdmUnitTest/ isn't available, it'll return an empty list. diff --git a/cdm/misc/src/test/java/ucar/nc2/iosp/grads/TestGrads.java b/cdm/misc/src/test/java/ucar/nc2/iosp/grads/TestGrads.java index ecf92aef19..608d904466 100644 --- a/cdm/misc/src/test/java/ucar/nc2/iosp/grads/TestGrads.java +++ b/cdm/misc/src/test/java/ucar/nc2/iosp/grads/TestGrads.java @@ -32,14 +32,14 @@ public class TestGrads { private static int leaks; @BeforeClass - static public void startup() { + public static void startup() { RandomAccessFile.setDebugLeaks(true); RandomAccessFile.enableDefaultGlobalFileCache(); leaks = RandomAccessFile.getOpenFiles().size(); } @AfterClass - static public void checkLeaks() { + public static void checkLeaks() { FileCache.shutdown(); RandomAccessFile.setGlobalFileCache(null); assert leaks == TestDir.checkLeaks(); diff --git a/cdm/misc/src/test/java/ucar/nc2/iosp/noaa/TestGhcnm.java b/cdm/misc/src/test/java/ucar/nc2/iosp/noaa/TestGhcnm.java index 52c6615d25..3896b752d2 100644 --- a/cdm/misc/src/test/java/ucar/nc2/iosp/noaa/TestGhcnm.java +++ b/cdm/misc/src/test/java/ucar/nc2/iosp/noaa/TestGhcnm.java @@ -58,7 +58,7 @@ static private void stnDuplicates(String filename, Set stns, boolean wa } // LOOK make into test - static public void main2(String args[]) throws IOException { + public static void main2(String args[]) throws IOException { Set stns = new HashSet<>(10 * 1000); stnDuplicates("C:/data/ghcnm/ghcnm.v3.0.0-beta1.20101207.qae.inv", stns, false); stnDuplicates("C:/data/ghcnm/ghcnm.v3.0.0-beta1.20101207.qca.inv", stns, true); diff --git a/cdm/radial/src/test/java/ucar/nc2/iosp/TestMiscIosp.java b/cdm/radial/src/test/java/ucar/nc2/iosp/TestMiscIosp.java index bc531e6aeb..acf2962d83 100644 --- a/cdm/radial/src/test/java/ucar/nc2/iosp/TestMiscIosp.java +++ b/cdm/radial/src/test/java/ucar/nc2/iosp/TestMiscIosp.java @@ -33,14 +33,14 @@ public class TestMiscIosp { private static int leaks; @BeforeClass - static public void startup() { + public static void startup() { RandomAccessFile.setDebugLeaks(true); RandomAccessFile.enableDefaultGlobalFileCache(); leaks = RandomAccessFile.getOpenFiles().size(); } @AfterClass - static public void checkLeaks() { + public static void checkLeaks() { FileCache.shutdown(); RandomAccessFile.setGlobalFileCache(null); assert leaks == TestDir.checkLeaks(); diff --git a/cdm/radial/src/test/java/ucar/nc2/iosp/nexrad2/TestNexrad2.java b/cdm/radial/src/test/java/ucar/nc2/iosp/nexrad2/TestNexrad2.java index 535e5b5f11..d8964d2073 100644 --- a/cdm/radial/src/test/java/ucar/nc2/iosp/nexrad2/TestNexrad2.java +++ b/cdm/radial/src/test/java/ucar/nc2/iosp/nexrad2/TestNexrad2.java @@ -95,7 +95,7 @@ private int testRead(NetcdfFile nexrad2) throws IOException { } - static public boolean testCoordSystem(NetcdfFile nexrad2) throws IOException { + public static boolean testCoordSystem(NetcdfFile nexrad2) throws IOException { Dimension scanR = nexrad2.findDimension("scanR"); assert null != scanR; Dimension scanV = nexrad2.findDimension("scanV"); diff --git a/cdm/s3/src/main/java/thredds/filesystem/s3/ControllerS3.java b/cdm/s3/src/main/java/thredds/filesystem/s3/ControllerS3.java index e422c2c011..b123a6ab34 100644 --- a/cdm/s3/src/main/java/thredds/filesystem/s3/ControllerS3.java +++ b/cdm/s3/src/main/java/thredds/filesystem/s3/ControllerS3.java @@ -121,7 +121,7 @@ public Iterator getSubdirs(CollectionConfig mc, boolean recheck) { logger.error("Error creating MFile for {} bucket {}", commonPrefix, initialUri.getBucket(), e); } } - return mFiles.iterator(); + return new FilteredIterator(mc, mFiles.iterator(), true); } @Override @@ -141,6 +141,7 @@ private static class FilteredIterator implements Iterator { this.mc = mc; this.wantDirs = wantDirs; this.fullInventory = false; + this.next = nextFilteredFile(); } FilteredIterator(CollectionConfig mc, Iterator iter, boolean wantDirs, boolean fullInventory) { @@ -148,17 +149,19 @@ private static class FilteredIterator implements Iterator { this.mc = mc; this.wantDirs = wantDirs; this.fullInventory = fullInventory; + this.next = nextFilteredFile(); } public boolean hasNext() { - next = nextFilteredFile(); return (next != null); } public MFile next() { if (next == null) throw new NoSuchElementException(); - return next; + final MFile mFile = next; + next = nextFilteredFile(); + return mFile; } public void remove() { diff --git a/cdm/s3/src/main/java/thredds/inventory/s3/MFileS3.java b/cdm/s3/src/main/java/thredds/inventory/s3/MFileS3.java index 8cb80d70f1..48a26cab1e 100644 --- a/cdm/s3/src/main/java/thredds/inventory/s3/MFileS3.java +++ b/cdm/s3/src/main/java/thredds/inventory/s3/MFileS3.java @@ -9,6 +9,7 @@ import java.net.URISyntaxException; import java.util.Objects; import java.util.function.Supplier; +import javax.annotation.Nonnull; import javax.annotation.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -103,6 +104,19 @@ private HeadObjectResponse getHeadObjectResponse() { return response; } + @Nullable + private HeadBucketResponse getHeadBucketResponse() { + HeadBucketResponse response = null; + S3Client client = getClient(); + + if (client != null) { + HeadBucketRequest headBucketRequest = HeadBucketRequest.builder().bucket(cdmS3Uri.getBucket()).build(); + response = client.headBucket(headBucketRequest); + } + + return response; + } + @Nullable private S3Client getClient() { S3Client client = null; @@ -285,13 +299,44 @@ public boolean exists() { return exists; } - // Update file exists by fetching from a head request private void updateExists() { + if (isDirectory()) { + exists = directoryExists(); + } else { + exists = key == null ? bucketExists() : objectExists(); + } + } + + private boolean directoryExists() { + final S3Client client = getClient(); + if (client == null) { + return false; + } + + try { + final ListObjectsV2Response listObjects = + client.listObjectsV2(ListObjectsV2Request.builder().bucket(cdmS3Uri.getBucket()).prefix(key).build()); + return listObjects.sdkHttpResponse().isSuccessful() && !listObjects.contents().isEmpty(); + } catch (NoSuchBucketException e) { + return false; + } + } + + private boolean bucketExists() { + try { + final HeadBucketResponse response = getHeadBucketResponse(); + return response != null && response.sdkHttpResponse().isSuccessful(); + } catch (NoSuchBucketException e) { + return false; + } + } + + private boolean objectExists() { try { - headObjectResponse.get(); - exists = true; + final HeadObjectResponse response = headObjectResponse.get(); + return response != null && response.sdkHttpResponse().isSuccessful(); } catch (NoSuchKeyException e) { - exists = false; + return false; } } @@ -309,9 +354,9 @@ public ResponseInputStream getInputStream() { @Override public void writeToStream(OutputStream outputStream) throws IOException { - ResponseInputStream responseInputStream = getInputStream(); - - IO.copy(responseInputStream, outputStream); + try (ResponseInputStream responseInputStream = getInputStream()) { + IO.copy(responseInputStream, outputStream); + } } @Override @@ -323,6 +368,20 @@ public void writeToStream(OutputStream outputStream, long offset, long maxBytes) } } + @Nullable + @Override + public MFileS3 getChild(String newFilename) { + final String existingKey = cdmS3Uri.getKey().orElse(""); + final boolean addDelimiter = delimiter != null && !existingKey.endsWith(delimiter) && !existingKey.isEmpty(); + final String newKey = addDelimiter ? existingKey + delimiter + newFilename : existingKey + newFilename; + + try { + return new MFileS3(cdmS3Uri.resolveNewKey(newKey)); + } catch (URISyntaxException e) { + return null; + } + } + public static class Provider implements MFileProvider { private static String protocol = CdmS3Uri.SCHEME_CDM_S3; @@ -332,7 +391,7 @@ public String getProtocol() { return protocol; } - @Nullable + @Nonnull @Override public MFile create(String location) throws IOException { try { diff --git a/cdm/s3/src/test/java/thredds/filesystem/s3/TestControllerS3.java b/cdm/s3/src/test/java/thredds/filesystem/s3/TestControllerS3.java index 8abf7f8742..342cbec4dd 100644 --- a/cdm/s3/src/test/java/thredds/filesystem/s3/TestControllerS3.java +++ b/cdm/s3/src/test/java/thredds/filesystem/s3/TestControllerS3.java @@ -18,6 +18,8 @@ import software.amazon.awssdk.regions.Region; import thredds.inventory.CollectionConfig; import thredds.inventory.MFile; +import thredds.inventory.MFileFilter; +import thredds.inventory.filter.WildcardMatchOnName; import ucar.unidata.io.s3.CdmS3Uri; import ucar.unidata.io.s3.S3TestsCommon; import ucar.unidata.io.s3.TestS3Read; @@ -62,6 +64,21 @@ public static void setup() { } + @Test + public void shouldReturnSameValueFromHasNext() throws URISyntaxException { + final CdmS3Uri uri = new CdmS3Uri("cdms3:thredds-test-data"); + final MFileFilter filter = new WildcardMatchOnName("testData.nc"); + final CollectionConfig collectionConfig = new CollectionConfig(uri.getBucket(), uri.toString(), true, filter, null); + final ControllerS3 controller = new ControllerS3(); + final Iterator iterator = controller.getInventoryTop(collectionConfig, false); + + assertThat(iterator.hasNext()).isTrue(); + assertThat(iterator.hasNext()).isTrue(); + iterator.next(); + assertThat(iterator.hasNext()).isFalse(); + assertThat(iterator.hasNext()).isFalse(); + } + ////////////////////// // getInventoryTop() tests // @@ -275,6 +292,41 @@ public void testGetSubdirsWithoutDelimiterOsdc() throws URISyntaxException { checkSubdirsCount(uri, 0); } + @Test + public void shouldFilterTopFiles() throws URISyntaxException { + final CdmS3Uri uri = new CdmS3Uri(S3TestsCommon.THREDDS_TEST_BUCKET + "?test-dataset-scan/" + DELIMITER_FRAGMENT); + + final CollectionConfig noFilter = new CollectionConfig(uri.getBucket(), uri.toString(), true, null, null); + assertThat(topInventoryCount(noFilter)).isEqualTo(3); + + final MFileFilter filter = new WildcardMatchOnName("*.nc$"); + final CollectionConfig withFilter = new CollectionConfig(uri.getBucket(), uri.toString(), true, filter, null); + assertThat(topInventoryCount(withFilter)).isEqualTo(2); + } + + @Test + public void shouldFilterAllFiles() throws URISyntaxException { + final CdmS3Uri uri = new CdmS3Uri(S3TestsCommon.THREDDS_TEST_BUCKET + "?test-dataset-scan/" + DELIMITER_FRAGMENT); + + final CollectionConfig noFilter = new CollectionConfig(uri.getBucket(), uri.toString(), true, null, null); + checkInventoryAllCount(noFilter, 8); + + final MFileFilter filter = new WildcardMatchOnName("*.nc$"); + final CollectionConfig withFilter = new CollectionConfig(uri.getBucket(), uri.toString(), true, filter, null); + checkInventoryAllCount(withFilter, 4); + } + + @Test + public void shouldFilterSubDirs() throws URISyntaxException { + final CdmS3Uri uri = new CdmS3Uri(S3TestsCommon.THREDDS_TEST_BUCKET + "?test-dataset-scan/" + DELIMITER_FRAGMENT); + final CollectionConfig noFilter = new CollectionConfig(uri.getBucket(), uri.toString(), true, null, null); + checkSubdirsCount(noFilter, 2); + + final MFileFilter filter = new WildcardMatchOnName("sub-dir"); + final CollectionConfig withFilter = new CollectionConfig(uri.getBucket(), uri.toString(), true, filter, null); + checkSubdirsCount(withFilter, 1); + } + @AfterClass public static void teardown() { System.clearProperty(AWS_REGION_PROP_NAME); @@ -298,25 +350,37 @@ private void checkInventoryTopCountAtMost(CdmS3Uri uri, int expectedMaximumCount private int topInventoryCount(CdmS3Uri uri) { logger.debug("getInventoryTop: {}", uri); + return topInventoryCount(getCollectionConfig(uri)); + } + + private int topInventoryCount(CollectionConfig collectionConfig) { ControllerS3 controller = new ControllerS3(); controller.limit = true; - Iterator it = controller.getInventoryTop(getCollectionConfig(uri), false); + Iterator it = controller.getInventoryTop(collectionConfig, false); return countObjects(it); } private void checkInventoryAllCount(CdmS3Uri uri, int expectedCount) { logger.debug("getInventoryAll: {}", uri); + checkInventoryAllCount(getCollectionConfig(uri), expectedCount); + } + + private void checkInventoryAllCount(CollectionConfig collectionConfig, int expectedCount) { ControllerS3 controller = new ControllerS3(); controller.limit = true; - Iterator it = controller.getInventoryAll(getCollectionConfig(uri), false); + Iterator it = controller.getInventoryAll(collectionConfig, false); assertThat(countObjects(it)).isEqualTo(expectedCount); } private void checkSubdirsCount(CdmS3Uri uri, int expectedCount) { logger.debug("getSubdirs: {}", uri); + checkSubdirsCount(getCollectionConfig(uri), expectedCount); + } + + private void checkSubdirsCount(CollectionConfig collectionConfig, int expectedCount) { ControllerS3 controller = new ControllerS3(); controller.limit = true; - Iterator it = controller.getSubdirs(getCollectionConfig(uri), false); + Iterator it = controller.getSubdirs(collectionConfig, false); assertThat(countObjects(it)).isEqualTo(expectedCount); } diff --git a/cdm/s3/src/test/java/thredds/inventory/s3/TestMFileS3.java b/cdm/s3/src/test/java/thredds/inventory/s3/TestMFileS3.java index f4cc6d0cea..cac3356b37 100644 --- a/cdm/s3/src/test/java/thredds/inventory/s3/TestMFileS3.java +++ b/cdm/s3/src/test/java/thredds/inventory/s3/TestMFileS3.java @@ -229,7 +229,7 @@ public void shouldNotWriteDirectoryToStream() throws IOException { @Test public void shouldNotWriteNonExistingObjectToStream() throws IOException { - final MFile mFile = new MFileS3(AWS_G16_S3_URI_DIR + "?NotARealKey"); + final MFile mFile = new MFileS3(AWS_G16_S3_URI_DIR + "/NotARealKey"); final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); assertThrows(NoSuchKeyException.class, () -> mFile.writeToStream(outputStream)); @@ -243,10 +243,100 @@ public void shouldReturnTrueForExistingFile() throws IOException { @Test public void shouldReturnFalseForNonExistingFile() throws IOException { - final MFile mFile = new MFileS3(AWS_G16_S3_URI_DIR + "?NotARealKey"); + final MFile mFile = new MFileS3(AWS_G16_S3_URI_DIR + "/NotARealKey"); assertThat(mFile.exists()).isEqualTo(false); } + @Test + public void shouldCheckExistsForExistingDirectory() throws IOException { + final MFile withFragmentWithSlash = new MFileS3(AWS_G16_S3_URI_DIR + "/" + DELIMITER_FRAGMENT); + assertThat(withFragmentWithSlash.exists()).isEqualTo(true); + + final MFile withoutFragmentWithSlash = new MFileS3(AWS_G16_S3_URI_DIR + "/"); + assertThat(withoutFragmentWithSlash.exists()).isEqualTo(false); + + final MFile withFragmentWithoutSlash = new MFileS3(AWS_G16_S3_URI_DIR + DELIMITER_FRAGMENT); + assertThat(withFragmentWithoutSlash.exists()).isEqualTo(false); + + final MFile withoutFragmentWithoutSlash = new MFileS3(AWS_G16_S3_URI_DIR); + assertThat(withoutFragmentWithoutSlash.exists()).isEqualTo(false); + } + + @Test + public void shouldReturnFalseForNonExistingDirectory() throws IOException { + final MFile withFragmentWithSlash = new MFileS3(AWS_G16_S3_URI_DIR + "/notADirectory/" + DELIMITER_FRAGMENT); + assertThat(withFragmentWithSlash.exists()).isEqualTo(false); + + final MFile withoutFragmentWithSlash = new MFileS3(AWS_G16_S3_URI_DIR + "/notADirectory/"); + assertThat(withoutFragmentWithSlash.exists()).isEqualTo(false); + + final MFile withFragmentWithoutSlash = new MFileS3(AWS_G16_S3_URI_DIR + "/notADirectory" + DELIMITER_FRAGMENT); + assertThat(withFragmentWithoutSlash.exists()).isEqualTo(false); + + final MFile withoutFragmentWithoutSlash = new MFileS3(AWS_G16_S3_URI_DIR + "/notADirectory"); + assertThat(withoutFragmentWithoutSlash.exists()).isEqualTo(false); + } + + @Test + public void shouldReturnFalseForKeyPrefixMatch() throws IOException { + final MFile mFile = new MFileS3(AWS_G16_S3_OBJECT_1.substring(0, AWS_G16_S3_OBJECT_1.length() - 5)); + assertThat(mFile.exists()).isEqualTo(false); + } + + @Test + public void shouldReturnTrueForBucket() throws IOException { + final MFile bucketWithDelimiter = new MFileS3(S3TestsCommon.TOP_LEVEL_AWS_BUCKET + DELIMITER_FRAGMENT); + assertThat(bucketWithDelimiter.exists()).isEqualTo(true); + + final MFile bucketWithoutDelimiter = new MFileS3(S3TestsCommon.TOP_LEVEL_AWS_BUCKET); + assertThat(bucketWithoutDelimiter.exists()).isEqualTo(true); + } + + @Test + public void shouldReturnFalseForNonExistentBucket() throws IOException { + final MFile bucketWithDelimiter = new MFileS3("cdms3:notABucket" + DELIMITER_FRAGMENT); + assertThat(bucketWithDelimiter.exists()).isEqualTo(false); + + final MFile bucketWithoutDelimiter = new MFileS3("cdms3:notABucket"); + assertThat(bucketWithoutDelimiter.exists()).isEqualTo(false); + } + + @Test + public void shouldGetChildMFileFromBucket() throws IOException { + final MFileS3 withDelimiter = new MFileS3("cdms3:bucket" + DELIMITER_FRAGMENT); + final MFileS3 newMFileWithDelimiter = withDelimiter.getChild("newKey"); + assertThat(newMFileWithDelimiter).isNotNull(); + assertThat(newMFileWithDelimiter.getPath()).isEqualTo("cdms3:bucket?newKey" + DELIMITER_FRAGMENT); + + final MFileS3 withoutDelimiter = new MFileS3("cdms3:bucket"); + final MFileS3 newMFileWithoutDelimiter = withoutDelimiter.getChild("newKey"); + assertThat(newMFileWithoutDelimiter).isNotNull(); + assertThat(newMFileWithoutDelimiter.getPath()).isEqualTo("cdms3:bucket?newKey"); + } + + @Test + public void shouldGetChildMFileFromBucketAndKey() throws IOException { + final MFileS3 withDelimiterWithSlash = new MFileS3("cdms3:bucket?key/" + DELIMITER_FRAGMENT); + final MFileS3 newMFileWithDelimiterWithSlash = withDelimiterWithSlash.getChild("newKey"); + assertThat(newMFileWithDelimiterWithSlash).isNotNull(); + assertThat(newMFileWithDelimiterWithSlash.getPath()).isEqualTo("cdms3:bucket?key/newKey" + DELIMITER_FRAGMENT); + + final MFileS3 withoutDelimiterWithSlash = new MFileS3("cdms3:bucket?key/"); + final MFileS3 newMFileWithoutDelimiterWithSlash = withoutDelimiterWithSlash.getChild("newKey"); + assertThat(newMFileWithoutDelimiterWithSlash).isNotNull(); + assertThat(newMFileWithoutDelimiterWithSlash.getPath()).isEqualTo("cdms3:bucket?key/newKey"); + + final MFileS3 withDelimiterWithoutSlash = new MFileS3("cdms3:bucket?key" + DELIMITER_FRAGMENT); + final MFileS3 newMFileWithDelimiterWithoutSlash = withDelimiterWithoutSlash.getChild("newKey"); + assertThat(newMFileWithDelimiterWithoutSlash).isNotNull(); + assertThat(newMFileWithDelimiterWithoutSlash.getPath()).isEqualTo("cdms3:bucket?key/newKey" + DELIMITER_FRAGMENT); + + final MFileS3 withoutDelimiterWithoutSlash = new MFileS3("cdms3:bucket?key"); + final MFileS3 newMFileWithoutDelimiterWithoutSlash = withoutDelimiterWithoutSlash.getChild("newKey"); + assertThat(newMFileWithoutDelimiterWithoutSlash).isNotNull(); + assertThat(newMFileWithoutDelimiterWithoutSlash.getPath()).isEqualTo("cdms3:bucket?keynewKey"); + } + @Test public void shouldGetInputStream() throws IOException { final MFile mFile = new MFileS3(AWS_G16_S3_OBJECT_1); diff --git a/cdm/s3/src/test/java/ucar/unidata/io/s3/S3TestsCommon.java b/cdm/s3/src/test/java/ucar/unidata/io/s3/S3TestsCommon.java index 8480fc019d..57c2b57939 100644 --- a/cdm/s3/src/test/java/ucar/unidata/io/s3/S3TestsCommon.java +++ b/cdm/s3/src/test/java/ucar/unidata/io/s3/S3TestsCommon.java @@ -15,4 +15,5 @@ public class S3TestsCommon { public static final String TOP_LEVEL_GCS_BUCKET = "cdms3://storage.googleapis.com/gcp-public-data-goes-16"; public static final String TOP_LEVEL_OSDC_BUCKET = "cdms3://griffin-objstore.opensciencedatacloud.org/noaa-goes16-hurricane-archive-2017"; + public static final String THREDDS_TEST_BUCKET = "cdms3:thredds-test-data"; } diff --git a/cdm/s3/src/test/java/ucar/unidata/io/s3/TestS3ExternalCompressionRead.java b/cdm/s3/src/test/java/ucar/unidata/io/s3/TestS3ExternalCompressionRead.java index af11246f10..e79d3726c9 100644 --- a/cdm/s3/src/test/java/ucar/unidata/io/s3/TestS3ExternalCompressionRead.java +++ b/cdm/s3/src/test/java/ucar/unidata/io/s3/TestS3ExternalCompressionRead.java @@ -19,13 +19,20 @@ @Category(NeedsExternalResource.class) public class TestS3ExternalCompressionRead { + private static final String compressedObject = "cdms3:noaa-nexrad-level2?1991/07/20/KTLX/KTLX19910720_160529.gz"; + private static final String fragment = "#delimiter=/"; @Test public void testCompressedObjectRead() throws IOException { - String bucket = "noaa-nexrad-level2"; - String key = "1991/07/20/KTLX/KTLX19910720_160529.gz"; - String s3uri = "cdms3:" + bucket + "?" + key; + testCompressedObjectRead(compressedObject); + } + + @Test + public void testCompressedObjectReadWithDelimiterFragment() throws IOException { + testCompressedObjectRead(compressedObject + fragment); + } + private static void testCompressedObjectRead(String s3uri) throws IOException { System.setProperty(S3TestsCommon.AWS_REGION_PROP_NAME, S3TestsCommon.AWS_G16_REGION); try (NetcdfFile ncfile = NetcdfFiles.open(s3uri)) { diff --git a/cdm/s3/src/test/java/ucar/unidata/io/s3/TestS3NetcdfFileCache.java b/cdm/s3/src/test/java/ucar/unidata/io/s3/TestS3NetcdfFileCache.java new file mode 100644 index 0000000000..df3f7ccf97 --- /dev/null +++ b/cdm/s3/src/test/java/ucar/unidata/io/s3/TestS3NetcdfFileCache.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 1998-2023 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ +package ucar.unidata.io.s3; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.fail; + +import org.junit.BeforeClass; +import org.junit.AfterClass; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.nc2.dataset.DatasetUrl; +import ucar.nc2.dataset.NetcdfDatasets; +import ucar.nc2.util.CancelTask; +import ucar.nc2.util.cache.FileCache; +import ucar.nc2.util.cache.FileCacheable; +import ucar.nc2.util.cache.FileFactory; +import java.io.IOException; +import java.lang.invoke.MethodHandles; +import java.util.*; + +/** Test FileCache. */ +public class TestS3NetcdfFileCache { + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + private static FileCache cache; + private static FileFactory factory = new MyFileFactory(); + + private static final String FILENAME = "testData.nc"; + private static final String BUCKET = "thredds-test-data"; // public S3 bucket owned by Unidata + private static final String S3_URI = "cdms3:" + BUCKET + "?" + FILENAME; + + @BeforeClass + public static void setUp() { + cache = new FileCache(5, 100, 60 * 60); + } + + @AfterClass + public static void tearDown() { + cache.clearCache(true); + } + + public static class MyFileFactory implements FileFactory { + public FileCacheable open(DatasetUrl location, int buffer_size, CancelTask cancelTask, Object iospMessage) + throws IOException { + return NetcdfDatasets.openFile(location, buffer_size, cancelTask, iospMessage); + } + } + + private FileCacheable loadFileIntoCache(String s3url, FileCache cache) { + FileCacheable handle = null; + try { + DatasetUrl durl = DatasetUrl.create(null, s3url); + handle = cache.acquire(factory, durl); + } catch (IOException e) { + fail(" *** failed on " + s3url); + } + return handle; + } + + @Test + public void testS3NetcdfFileCache() throws IOException { + FileCacheable handle = loadFileIntoCache(S3_URI, cache); + Formatter formatter = new Formatter(); + cache.showStats(formatter); + assertThat(formatter.toString()).contains("hits= 0 miss= 1 nfiles= 1 elems= 1"); + + // load same file again - should be added to the list, rather than creating a new elem + loadFileIntoCache(S3_URI, cache); + formatter = new Formatter(); + cache.showStats(formatter); + // The file is currently locked, so no cache hit. + assertThat(formatter.toString()).contains("hits= 0 miss= 2 nfiles= 2 elems= 1"); + + handle.close(); + loadFileIntoCache(S3_URI, cache); + formatter = new Formatter(); + cache.showStats(formatter); + // The file is now unlocked, so this should result in a hit. + assertThat(formatter.toString()).contains("hits= 1 miss= 2 nfiles= 2 elems= 1"); + } +} diff --git a/cdm/zarr/src/main/java/thredds/inventory/zarr/MFileZip.java b/cdm/zarr/src/main/java/thredds/inventory/zarr/MFileZip.java index 7a5835d41e..5fee4a8d7e 100644 --- a/cdm/zarr/src/main/java/thredds/inventory/zarr/MFileZip.java +++ b/cdm/zarr/src/main/java/thredds/inventory/zarr/MFileZip.java @@ -7,11 +7,11 @@ import java.io.InputStream; import java.io.OutputStream; +import javax.annotation.Nonnull; import thredds.filesystem.MFileOS; import thredds.inventory.MFile; import thredds.inventory.MFileProvider; -import javax.annotation.Nullable; import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -174,6 +174,11 @@ public void writeToStream(OutputStream outputStream, long offset, long maxBytes) "Writing MFileZip with a byte range to stream not implemented. Filename: " + getName()); } + @Override + public MFileZip getChild(String newFilename) { + throw new UnsupportedOperationException("MFileZip::getChild not implemented. Filename: " + getName()); + } + public Path getRootPath() { return rootPath; } @@ -200,7 +205,7 @@ public boolean canProvide(String location) { return location != null && location.contains(ext); } - @Nullable + @Nonnull @Override public MFile create(String location) throws IOException { return new MFileZip(location); diff --git a/cdm/zarr/src/test/java/thredds/inventory/zarr/TestMFileZip.java b/cdm/zarr/src/test/java/thredds/inventory/zarr/TestMFileZip.java index 648bbd5cd2..2344260aba 100644 --- a/cdm/zarr/src/test/java/thredds/inventory/zarr/TestMFileZip.java +++ b/cdm/zarr/src/test/java/thredds/inventory/zarr/TestMFileZip.java @@ -30,7 +30,7 @@ public class TestMFileZip { public static class TestMFileZipParameterized { @Parameterized.Parameters(name = "{0}, {1}") - static public List getTestParameters() { + public static List getTestParameters() { List result = new ArrayList<>(); result.add(new Integer[] {0, 0}); result.add(new Integer[] {0, 1}); diff --git a/dap4/build.gradle b/dap4/build.gradle index dbdef58cfb..5956343144 100644 --- a/dap4/build.gradle +++ b/dap4/build.gradle @@ -1,22 +1,41 @@ ext.title = 'Data Access Protocol (DAP) version 4.0' // Will be inherited by subprojects. -// dap4 has no source code nor any artifacts to publish - -// NON-TRANSITIVE Dependency graph: -// module depends on -// ---------------------------------------- -// common: -// d4core nothing -// d4lib d4core httpservices -// d4cdm d4lib cdm -// server: -// d4servletshared d4cdmshared netcdf4 -// d4ts d4servletshared -// d4tswar d4ts -// tests: -// d4tests d4servletshared d4ts - -subprojects { - // TODO: Give the subprojects real titles. - ext.title = "DAP4: $name" +apply from: "$rootDir/gradle/any/dependencies.gradle" +apply from: "$rootDir/gradle/any/java-library.gradle" +apply from: "$rootDir/gradle/any/gretty.gradle" + +dependencies { + api enforcedPlatform(project(':netcdf-java-platform')) + + implementation project(':httpservices') + implementation project(':cdm:cdm-core') + implementation project(':netcdf4') + testImplementation project(':cdm-test-utils') + + implementation 'org.apache.httpcomponents:httpclient' + compileOnly 'org.apache.httpcomponents:httpcore' + compileOnly 'net.java.dev.jna:jna' + compileOnly 'com.beust:jcommander' + compileOnly 'org.slf4j:slf4j-api' + + compileOnly enforcedPlatform(project(':netcdf-java-platform')) + testImplementation enforcedPlatform(project(':netcdf-java-testing-platform')) + testImplementation 'junit:junit' + testImplementation 'org.slf4j:slf4j-api' + testRuntimeOnly 'ch.qos.logback:logback-classic' +} + +test { + systemProperties['testargs'] = System.getProperty('testargs', '') + + include 'dap4/test/TestParserDMR.class' + include 'dap4/test/TestParserCE.class' + include 'dap4/test/TestRaw.class' + include 'dap4/test/TestDap4Url.class' + include 'dap4/test/TestRemote.class' + include 'dap4/test/TestConstraints.class' + include 'dap4/test/TestHyrax.class' + + dependsOn('farmBeforeIntegrationTest') + finalizedBy('farmAfterIntegrationTest') } diff --git a/dap4/d4cdm/build.gradle b/dap4/d4cdm/build.gradle deleted file mode 100644 index 1337719928..0000000000 --- a/dap4/d4cdm/build.gradle +++ /dev/null @@ -1,11 +0,0 @@ -apply from: "$rootDir/gradle/any/dependencies.gradle" -apply from: "$rootDir/gradle/any/java-library.gradle" - -dependencies { - api enforcedPlatform(project(':netcdf-java-platform')) - - compile project(':dap4:d4core') - compile project(':dap4:d4lib') - compile project(':cdm:cdm-core') - compile project(':netcdf4') -} diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/CDMUtil.java b/dap4/d4cdm/src/main/java/dap4/cdm/CDMUtil.java deleted file mode 100644 index 9e3677ca64..0000000000 --- a/dap4/d4cdm/src/main/java/dap4/cdm/CDMUtil.java +++ /dev/null @@ -1,547 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.cdm; - -import dap4.core.data.DataCursor; -import dap4.core.dmr.DapDimension; -import dap4.core.dmr.DapType; -import dap4.core.dmr.TypeSort; -import dap4.core.util.DapException; -import dap4.core.util.Index; -import dap4.core.util.Slice; -import ucar.ma2.ForbiddenConversionException; -import ucar.ma2.InvalidRangeException; -import ucar.ma2.Range; -import ucar.nc2.CDMNode; -import ucar.nc2.Dimension; -import ucar.nc2.NetcdfFile; -import ucar.nc2.Variable; -import ucar.nc2.dataset.NetcdfDataset; -import java.util.ArrayList; -import java.util.List; - -/** - * CDM related Constants and utilities - * common to client and server code - */ - -public abstract class CDMUtil { - - static final String hexchars = "0123456789abcdef"; - - /** - * Convert a list of ucar.ma2.Range to a list of Slice - * More or less the inverst of create CDMRanges - * - * @param rangelist the set of ucar.ma2.Range - * @return the equivalent list of Slice - */ - public static List createSlices(List rangelist) throws dap4.core.util.DapException { - List slices = new ArrayList(rangelist.size()); - for (int i = 0; i < rangelist.size(); i++) { - Range r = rangelist.get(i); - // r does not store last - int stride = r.stride(); - int first = r.first(); - int n = r.length(); - int stop = first + (n * stride); - Slice cer = new Slice(first, stop - 1, stride); - slices.add(cer); - } - return slices; - } - - /** - * Test a List against a List - * to see if the range list represents the whole - * set of dimensions within the specified indices. - * - * @param rangelist the set of ucar.ma2.Range - * @param dimset the set of DapDimensions - * @param start start looking here - * @param stop stop looking here - * @return true if rangelist is whole; false otherwise. - */ - - public static boolean isWhole(List rangelist, List dimset, int start, int stop) - throws dap4.core.util.DapException { - int rsize = (rangelist == null ? 0 : rangelist.size()); - if (rsize != dimset.size()) - throw new dap4.core.util.DapException("range/dimset rank mismatch"); - if (rsize == 0) - return true; - if (start < 0 || stop < start || stop > rsize) - throw new dap4.core.util.DapException("Invalid start/stop indices"); - - for (int i = start; i < stop; i++) { - Range r = rangelist.get(i); - DapDimension d = dimset.get(i); - if (r.stride() != 1 || r.first() != 0 || r.length() != d.getSize()) - return false; - } - return true; - } - - /** - * Test a List against a List - * to see if the range list is whole - * wrt the slices - * - * @param rangelist the set of ucar.ma2.Range - * @param slices the set of slices - * @return true if rangelist is whole wrt slices; false otherwise. - */ - public static boolean isWhole(List rangelist, List slices) throws dap4.core.util.DapException { - if (rangelist.size() != slices.size()) - return false; - for (int i = 0; i < rangelist.size(); i++) { - Range r = rangelist.get(i); - Slice slice = slices.get(i); - if (r.stride() != 1 || r.first() != 0 || r.length() != slice.getCount()) - return false; - } - return true; - } - - /** - * Test a List against the CDM variable's dimensions - * to see if the range list is whole - * wrt the dimensions - * - * @param rangelist the set of ucar.ma2.Range - * @param var the cdm var - * @return true if rangelist is whole wrt slices; false otherwise. - */ - public static boolean isWhole(List rangelist, Variable var) throws dap4.core.util.DapException { - List dimset = var.getDimensions(); - if (rangelist.size() != dimset.size()) - return false; - for (int i = 0; i < rangelist.size(); i++) { - Range r = rangelist.get(i); - Dimension dim = dimset.get(i); - if (r.stride() != 1 || r.first() != 0 || r.length() != dim.getLength()) - return false; - } - return true; - } - - public static List createCDMRanges(List slices) throws DapException { - List cdmranges = new ArrayList(); - for (int i = 0; i < slices.size(); i++) { - Slice r = slices.get(i); - try { - ucar.ma2.Range cmdr; - cmdr = new ucar.ma2.Range((int) r.getFirst(), (int) r.getLast(), (int) r.getStride()); - cdmranges.add(cmdr); - } catch (InvalidRangeException ire) { - throw new DapException(ire); - } - } - return cdmranges; - } - - /** - * NetcdfDataset can end up wrapping a variable - * in multiple wrapping classes (e.g. VariableDS). - * Goal of this procedure is to get down to the - * lowest level Variable instance - * - * @param var possibly wrapped variable - * @return the lowest level Variable instance - */ - public static Variable unwrap(Variable var) { - /* - * for(;;) { - * if(var instanceof VariableDS) { - * VariableDS vds = (VariableDS) var; - * var = vds.getOriginalVariable(); - * if(var == null) { - * var = vds; - * break; - * } - * } else if(var instanceof StructureDS) { - * StructureDS sds = (StructureDS) var; - * var = sds.getOriginalVariable(); - * if(var == null) { - * var = sds; - * break; - * } - * } else - * break; - * } - * return var; - */ - return (Variable) CDMNode.unwrap(var); - } - - /** - * NetcdfDataset can wrap a NetcdfFile. - * Goal of this procedure is to get down to the - * lowest level NetcdfFile instance. - * - * @param file NetcdfFile or NetcdfDataset - * @return the lowest level NetcdfFile instance - */ - public static NetcdfFile unwrapfile(NetcdfFile file) { - for (;;) { - if (file instanceof NetcdfDataset) { - NetcdfDataset ds = (NetcdfDataset) file; - file = ds.getReferencedFile(); - if (file == null) - break; - } else - break; - } - return file; - } - - public static boolean hasVLEN(List ranges) { - if (ranges == null || ranges.size() == 0) - return false; - return ranges.get(ranges.size() - 1) == Range.VLEN; - } - - /** - * Test if any dimension is variable length - */ - public static boolean hasVLEN(Variable v) { - return containsVLEN(v.getDimensions()); - } - - /** - * Test if any dimension is variable length - */ - public static boolean containsVLEN(List dimset) { - if (dimset == null) - return false; - for (Dimension dim : dimset) { - if (dim.isVariableLength()) - return true; - } - return false; - } - - /** - * Compute the shape inferred from a set of slices. - * 'Effective' means that any trailing vlen will be - * ignored. - * - * @param dimset from which to generate shape - * @return effective shape - */ - public static int[] computeEffectiveShape(List dimset) { - if (dimset == null || dimset.size() == 0) - return new int[0]; - int effectiverank = dimset.size(); - int[] shape = new int[effectiverank]; - for (int i = 0; i < effectiverank; i++) { - shape[i] = (int) dimset.get(i).getSize(); - } - return shape; - } - - /* - * static public int - * computeVariableSize(View view, DapVariable var, boolean scalar) - * { - * DapType dt = var.getBaseType(); - * ViewVariable annotation = view.getAnnotation(var); - * int dimproduct = (scalar ? 1 : computeDimProduct(annotation.getSlices())); - * int elementsize = 0; - * switch (dt.getTypeSort()) { - * default: // atomic variable - * // This does not work for String or Opaque. - * elementsize = CDMUtil.daptypeSize(dt.getTypeSort()); - * break; - * case STRUCTURE: - * case SEQUENCE: - * for(DapVariable field : ((DapStructure) dt).getFields()) { - * elementsize += computeVariableSize(dataset, field, false); - * } - * break; - * - * default: - * break; - * } - * return dimproduct * elementsize; - * } - */ - - /** - * Extract, as an object, value from a (presumably) - * atomic typed array of values; dataset position - * is presumed correct. - * - * @param atomtype type of object to extract ; must not be Enum - * @param dataset Data containing the objects - * @param index Which element of dataset to read - * @return resulting value as an Object; value does not necessarily conform - * to Convert.ValueClass. - */ - - /** - * Extract, as a long, value from a (presumably) - * atomic typed array of values; dataset position - * is presumed correct. - * - * @param atomtype type of object to extract - * @param dataset Data containing the objects - * @param index Which element of dataset to read - * @return resulting value as a long - * @throws ForbiddenConversionException if cannot convert to long - */ - - public static long extractLongValue(TypeSort atomtype, DataCursor dataset, Index index) throws DapException { - Object result; - result = dataset.read(index); - long lvalue = CDMTypeFcns.extract(atomtype, result); - return lvalue; - } - - /** - * Extract, as a double, value from a (presumably) - * atomic typed array of values; dataset position - * is presumed correct. - * - * @param atomtype type of object to extract - * @param dataset Data containing the objects - * @param index Which element of dataset to read - * @return resulting value as a double - * @throws ForbiddenConversionException if cannot convert to double - */ - - public static double extractDoubleValue(TypeSort atomtype, DataCursor dataset, Index index) throws DapException { - Object result; - result = dataset.read(index); - double dvalue = 0.0; - if (atomtype.isIntegerType() || atomtype.isEnumType()) { - long lvalue = extractLongValue(atomtype, dataset, index); - dvalue = (double) lvalue; - } else if (atomtype == TypeSort.Float32) { - dvalue = (double) ((Float) result).floatValue(); - } else if (atomtype == TypeSort.Float64) { - dvalue = ((Double) result).doubleValue(); - } else - throw new ForbiddenConversionException(); - return dvalue; - } - - /** - * Extract, as an object, n consecutive values - * of an atomic typed array of values - * - * @param dataset Data containing the objects - * @param index Starting element to read - * @param count Number of elements to read - * @return resulting array of values as an object - */ - - /* - * static public Object - * extractVector(DataAtomic dataset, long index, long count, long offset) - * throws DapException - * { - * Object vector = createVector(dataset.getType().getPrimitiveType(),count); - * try { - * dataset.read(index, count, vector, offset); - * } catch (IOException ioe) { - * throw new DapException(ioe); - * } - * return vector; - * } - */ - - /** - * Convert an array of one type of values to another type - * - * @param dsttype target type - * @param srctype source type - * @param src array of values to convert - * @return resulting array of converted values as an object - */ - - public static Object convertVector(DapType dsttype, DapType srctype, Object src) { - int i; - - TypeSort srcatomtype = srctype.getAtomicType(); - TypeSort dstatomtype = dsttype.getAtomicType(); - - if (srcatomtype == dstatomtype) { - return src; - } - if (srcatomtype.isIntegerType() && TypeSort.getSignedVersion(srcatomtype) == TypeSort.getSignedVersion(dstatomtype)) - return src; - - Object result = CDMTypeFcns.convert(dstatomtype, srcatomtype, src); - if (result == null) - throw new ForbiddenConversionException(); - return result; - } - - /** - * Given an arbitrary Array (including ArrayStructure), produce - * a new Array that represents the slice defined by the - * section. For now, we create a simple array of the relevant - * type and fill it by extracting the values specified by the - * section. - *

        - * param array the array from which the section is extracted - * param section determines what to extract - * throws DapException - * returns the slice array - */ - /* - * static public ucar.ma2.Array - * arraySlice(ucar.ma2.Array array, Section section) - * throws DapException - * { - * // Case it out. - * if(!dapvar.getBaseType().isStructType()) { // =>Atomic type - * if(dapvar.isTopLevel()) { - * // Simplest case: use createview, but watch out for final VLEN - * List ranges = section.getRanges(); - * try { - * if(CDMUtil.hasVLEN(ranges)) - * return array.section(ranges.subList(0, ranges.size() - 2)); - * else - * return array.section(ranges); - * } catch (InvalidRangeException ire) { - * throw new DapException(ire); - * } - * } else - * throw new UnsupportedOperationException(); // same as other cdm - * } else { // struct type - * assert (array instanceof CDMArrayStructure); - * CDMArrayStructure struct = (CDMArrayStructure) array; - * if(dapvar.isTopLevel()) { - * // Build a new ArrayStructure containing - * // the relevant instances. - * int[] shape = section.getShape(); - * StructureMembers sm = new StructureMembers(struct.getStructureMembers()); - * ArrayStructureMA slice = new ArrayStructureMA(sm, shape); - * CDMOdometer odom = new CDMOdometer(dapvar.getDimensions(), section.getRanges()); - * // Compute the number of structuredata instances we need - * long totalsize = section.computeSize(); - * List mlist = sm.getMembers(); - * StructureData[] newdata = new StructureData[(int) totalsize]; - * for(int i = 0;odom.hasNext();odom.next(), i++) { - * long recno = odom.index(); - * StructureDataW clone = new StructureDataW(sm); - * newdata[i] = clone; - * StructureData record = struct.getStructureData((int) recno); - * for(int j = 0;j < mlist.size();j++) { - * StructureMembers.Member m = mlist.get(j); - * clone.setMemberData(m, record.getArray(m)); - * } - * } - * return slice; - * } else - * throw new UnsupportedOperationException(); // same as other cdm - * } - * } - */ - public static String getChecksumString(byte[] checksum) { - StringBuilder buf = new StringBuilder(); - for (int i = 0; i < checksum.length; i++) { - byte b = checksum[i]; - buf.append(hexchars.charAt(b >> 4)); - buf.append(hexchars.charAt(b & 0xF)); - } - return buf.toString(); - } - - /** - * Convert a Section + variable to a constraint - *

        - *

        - * static public View - * sectionToView(CDMDSP dsp, Variable v, Section section) - * throws DapException - * { - * if(section == null || section.getRank() == 0) - * return null; - * // Get the corresponding DapNode - * DapVariable dv = (DapVariable) dsp.getNode().get(v); - * if(dv == null) - * throw new DapException("Variable has no corresponding dap node: " + v.getFullName()); - * // Get the structure path wrt DapDataset for dv - * // and use path plus the Section to construct a constraint - * List structpath = DapUtil.getStructurePath(dv); - * List ranges = section.getRanges(); - * View view = new View(dmr); - * int next = 0; - * for(int i = 0;i < structpath.size();i++) { - * dv = structpath.get(i); - * int rank = dv.getRank(); - * ViewVariable vv = new ViewVariable(dv); - * List slices = new ArrayList(rank); - * for(int j = 0;j < rank;j++, next++) { - * if(next >= ranges.size()) - * throw new DapException("Range::Rank mismatch"); - * Range range = ranges.get(next); - * Slice slice = new Slice(range.first(), range.last(), range.stride()).validate(); - * slices.add(slice); - * } - * vv.setSlices(slices); - * view.put(dv, vv); - * } - * view.validate(View.EXPAND); - * return view; - * } - */ - - - public static List dimsetToRanges(List dimset) throws dap4.core.util.DapException { - if (dimset == null) - return null; - List ranges = new ArrayList<>(); - for (int i = 0; i < dimset.size(); i++) { - DapDimension dim = dimset.get(i); - try { - Range r = new Range(dim.getShortName(), 0, (int) dim.getSize() - 1, 1); - ranges.add(r); - } catch (InvalidRangeException ire) { - throw new dap4.core.util.DapException(ire); - } - } - return ranges; - } - - public static List shapeToSlices(int[] shape) throws dap4.core.util.DapException { - if (shape == null) - return null; - List slices = new ArrayList<>(shape.length); - for (int i = 0; i < shape.length; i++) { - Slice sl = new Slice(0, shape[i] - 1, 1); - slices.add(sl); - } - return slices; - } - - public static dap4.core.util.Index cdmIndexToIndex(ucar.ma2.Index cdmidx) { - int rank = cdmidx.getRank(); - int[] shape = cdmidx.getShape(); - long[] indices = new long[shape.length]; - for (int i = 0; i < rank; i++) { - indices[i] = shape[i]; - } - dap4.core.util.Index dapidx = new dap4.core.util.Index(indices, indices); - return dapidx; - } - - public static ucar.ma2.Index indexToCcMIndex(dap4.core.util.Index d4) { - int rank = d4.getRank(); - int[] shape = new int[rank]; - int[] indices = new int[rank]; - for (int i = 0; i < rank; i++) { - indices[i] = (int) d4.get(i); - shape[i] = (int) d4.getSize(i); - } - ucar.ma2.Index cdm = ucar.ma2.Index.factory(shape); - cdm.set(indices); - return cdm; - } -} diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/arch.txt b/dap4/d4cdm/src/main/java/dap4/cdm/arch.txt deleted file mode 100644 index 9b05ad15a3..0000000000 --- a/dap4/d4cdm/src/main/java/dap4/cdm/arch.txt +++ /dev/null @@ -1,36 +0,0 @@ -CDM :: Dap4 Interactions occur in two ways. - -1. Server side. -The goal is to wrap a NetcdfDataset object as a DSP -so it can be written using the DAP4 protocol. -The relevant classes are: - thredds.server.dap4.ThreddsDSP.java (in /tds/src/main/java/thredds/server/dap4 for access reasons) - dap4.cdm.dsp.CDMDSP.java - dap4.cdm.dsp.CDMDataCompoundArray.java - dap4.cdm.dsp.CDMDataDataset.java - dap4.cdm.dsp.CDMDataRecord.java - dap4.cdm.dsp.CDMDataset.java - dap4.cdm.dsp.CDMDataStructure.java - dap4.cdm.dsp.CDMDataVariable.java - dap4.cdm.dsp.CDMDataAtomic.java - -2. Client Side -The goal is to wrap a D4DSP to make it look like a CDM NetcdfDataset. -The D4DSP itself wraps the serialized data of the DAP4 protocol. -The relevant classes are as follows: - dap4.cdm.nc2.DapNetcdfDataset.java - dap4.cdm.nc2.DMRToCDM.java - dap4.cdm.nc2.DataToCDM.java - dap4.cdm.nc2.CDMCompiler.java - dap4.cdm.nc2.CDMArray.java - dap4.cdm.nc2.CDMArrayAtomic.java - dap4.cdm.nc2.CDMArrayDelegate.java - dap4.cdm.nc2.CDMArraySequence.java - dap4.cdm.nc2.CDMArrayStructure.java - -The following are shared Utilities: - CDMUtil.java - NodeMap.java - -What about? - CDMDataFactory.java diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/dsp/CDMCursor.java b/dap4/d4cdm/src/main/java/dap4/cdm/dsp/CDMCursor.java deleted file mode 100644 index 16afc87c86..0000000000 --- a/dap4/d4cdm/src/main/java/dap4/cdm/dsp/CDMCursor.java +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.cdm.dsp; - -import dap4.cdm.CDMTypeFcns; -import dap4.cdm.CDMUtil; -import dap4.core.dmr.*; -import dap4.core.util.*; -import dap4.core.util.Index; -import dap4.dap4lib.AbstractCursor; -import ucar.ma2.*; -import java.util.List; - -public class CDMCursor extends AbstractCursor { - ////////////////////////////////////////////////// - // Instance variables - - protected ucar.ma2.Array array = null; - protected ucar.ma2.StructureData structdata = null; // scheme == STRUCTURE - ucar.ma2.StructureMembers.Member member = null; // for field cursors - - ////////////////////////////////////////////////// - // Constructor(s) - - public CDMCursor(Scheme scheme, CDMDSP dsp, DapNode template, CDMCursor container) throws DapException { - super(scheme, dsp, template, container); - } - - public CDMCursor(CDMCursor c) { - super(c); - assert false; - this.array = c.array; - this.structdata = c.structdata; - this.member = c.member; - - } - - ////////////////////////////////////////////////// - // AbstractCursor Abstract Methods - - @Override - public Object read(List slices) throws DapException { - switch (this.scheme) { - case ATOMIC: - return readAtomic(slices); - case STRUCTURE: - if (((DapVariable) this.getTemplate()).getRank() > 0 || DapUtil.isScalarSlices(slices)) - throw new DapException("Cannot slice a scalar variable"); - CDMCursor[] instances = new CDMCursor[1]; - instances[0] = this; - return instances; - case SEQUENCE: - if (((DapVariable) this.getTemplate()).getRank() > 0 || DapUtil.isScalarSlices(slices)) - throw new DapException("Cannot slice a scalar variable"); - instances = new CDMCursor[1]; - instances[0] = this; - return instances; - case STRUCTARRAY: - Odometer odom = Odometer.factory(slices); - instances = new CDMCursor[(int) odom.totalSize()]; - for (int i = 0; odom.hasNext(); i++) { - instances[i] = readStructure(odom.next()); - } - return instances; - case SEQARRAY: - instances = readSequence(slices); - return instances; - default: - throw new DapException("Attempt to slice a scalar object"); - } - } - - @Override - public Object read(Index index) throws DapException { - return read(DapUtil.indexToSlices(index)); - } - - @Override - public CDMCursor readField(int findex) throws DapException { - if (this.scheme != scheme.RECORD && this.scheme != scheme.STRUCTURE) - throw new DapException("Illegal cursor scheme for readfield()"); - DapVariable var = (DapVariable) getTemplate(); - DapStructure basetype = (DapStructure) var.getBaseType(); - if (findex < 0 || findex >= basetype.getFields().size()) - throw new DapException("Field index out of range: " + findex); - CDMCursor fieldcursor = null; - if (this.scheme == Scheme.RECORD) { - DapSequence seq = (DapSequence) basetype; - DapVariable field = seq.getField(0); - DapType fieldtype = field.getBaseType(); - switch (fieldtype.getTypeSort()) { - default: // atomic - DataType cdmfieldtype = CDMTypeFcns.daptype2cdmtype(fieldtype); - if (cdmfieldtype == null) - throw new dap4.core.util.DapException("Unknown field type: " + fieldtype); - int ri = (int) this.recordindex; - Object o = array.getObject(ri); - Array fielddata = CDMTypeFcns.arrayify(cdmfieldtype, o); // not very efficient; should do conversion - fieldcursor = new CDMCursor(Scheme.ATOMIC, (CDMDSP) this.dsp, field, this); - fieldcursor.setArray(fielddata); - break; - case Sequence: - case Structure: - break; - } - } else { // scheme == STRUCTURE - assert this.structdata != null; - fieldcursor = getFieldCursor(this, findex); - } - return fieldcursor; - } - - protected CDMCursor getFieldCursor(CDMCursor container, int findex) throws DapException { - // Now, create a cursors for a field f this instance - DapVariable var = (DapVariable) getTemplate(); - DapStructure type = (DapStructure) var.getBaseType(); - DapVariable field = (DapVariable) type.getFields().get(findex); - DapType ftype = field.getBaseType(); - Scheme scheme = schemeFor(field); - CDMCursor fc = new CDMCursor(scheme, (CDMDSP) this.dsp, field, this); - StructureMembers.Member member = this.structdata.getStructureMembers().getMember(findex); - fc.setMember(member); - fc.setArray(this.structdata.getArray(fc.member)); - return fc; - } - - @Override - public CDMCursor readRecord(long i) throws DapException { - if (this.scheme != scheme.SEQUENCE) - throw new DapException("Attempt to read record from non-sequence cursor"); - if (i < 0 || i >= this.recordcount) - throw new DapException("Record index out of bounds"); - DapVariable var = (DapVariable) getTemplate(); - CDMCursor c = new CDMCursor(Scheme.RECORD, (CDMDSP) this.dsp, var, this); - c.setArray(this.array); - c.setRecordIndex(i); - return c; - } - - ////////////////////////////////////////////////// - // Support Methods - - protected Object readAtomic(List slices) throws DapException { - if (slices == null) - throw new DapException("DataCursor.read: null set of slices"); - assert (this.scheme == scheme.ATOMIC); - DapVariable atomvar = (DapVariable) getTemplate(); - assert slices != null && ((atomvar.getRank() == 0 && slices.size() == 1) || (slices.size() == atomvar.getRank())); - return sliceAtomic(slices, this.array, atomvar); - } - - protected Object sliceAtomic(List slices, Array array, DapVariable var) throws DapException { - List dimset = var.getDimensions(); - DapType basetype = var.getBaseType(); - // If content.getDataType returns object, then we - // really do not know its true datatype. So, as a rule, - // we will rely on this.basetype. - DataType datatype = CDMTypeFcns.daptype2cdmtype(basetype); - if (datatype == null) - throw new dap4.core.util.DapException("Unknown basetype: " + basetype); - Object content = array.get1DJavaArray(datatype); // not very efficient; should do conversion - Odometer odom = Odometer.factory(slices, dimset); - Object data = CDMTypeFcns.createVector(datatype, odom.totalSize()); - for (int dstoffset = 0; odom.hasNext(); dstoffset++) { - Index index = odom.next(); - long srcoffset = index.index(); - CDMTypeFcns.vectorcopy(basetype, content, data, srcoffset, dstoffset); - } - return data; - } - - - protected CDMCursor readStructure(Index index) throws DapException { - assert (index != null); - DapVariable var = (DapVariable) getTemplate(); - DapStructure type = (DapStructure) var.getBaseType(); - long pos = index.index(); - if (pos < 0 || pos > var.getCount()) - throw new IndexOutOfBoundsException("read: " + index); - ArrayStructure sarray = (ArrayStructure) this.array; - CDMCursor instance; - assert (this.scheme == scheme.STRUCTARRAY); - ucar.ma2.StructureData sd = sarray.getStructureData((int) pos); - assert sd != null; - instance = new CDMCursor(Scheme.STRUCTURE, (CDMDSP) this.dsp, var, null).setStructureData(sd); - instance.setIndex(index); - return instance; - } - - protected CDMCursor[] readSequence(List slices) throws DapException { - assert (this.scheme == scheme.SEQARRAY); - DapVariable var = (DapVariable) getTemplate(); - DapSequence type = (DapSequence) var.getBaseType(); - // new CDMCursor(Scheme.SEQUENCE, (CDMDSP) this.dsp, var, this); - CDMCursor[] instances = new CDMCursor[(int) DapUtil.sliceProduct(slices)]; - Array seqarray = this.array; - if (var.getRank() == 0) {// scalar - if (!DapUtil.isScalarSlices(slices)) - throw new DapException("Non-scalar slice set applied to scalar variable"); - instances[0] = new CDMCursor(Scheme.SEQUENCE, (CDMDSP) this.dsp, var, this); - instances[0].setArray(seqarray); - instances[0].setRecordCount(seqarray.getSize()); - } else { - List rlist = CDMUtil.createCDMRanges(slices); - Array instancearray; - try { - instancearray = seqarray.section(rlist); - } catch (InvalidRangeException e) { - throw new DapException("Illegal slice set", e); - } - // extracted via List. IN theory, this should be an array of arrays, - // but if the sequence field basetype is atomic, thenit is an array - // of atomic values. - int slicecount = (int) DapUtil.sliceProduct(slices); - for (int i = 0; i < slicecount; i++) { - Array ao = (Array) instancearray.getObject(i); - CDMCursor c = new CDMCursor(Scheme.SEQUENCE, (CDMDSP) this.dsp, var, this); - c.setArray(ao); - long rcount = ao.getSize(); - c.setRecordCount(rcount); - instances[i] = c; - } - } - return instances; - } - - ////////////////////////////////////////////////// - // CDMCursor Extensions - - public CDMCursor setArray(ucar.ma2.Array a) { - this.array = a; - return this; - } - - public ucar.ma2.Array getArray() { - return this.array; - } - - public CDMCursor setStructureData(ucar.ma2.StructureData sd) { - this.structdata = sd; - return this; - } - - public CDMCursor setMember(ucar.ma2.StructureMembers.Member m) { - this.member = m; - return this; - } - - -} diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/dsp/CDMDMR.java b/dap4/d4cdm/src/main/java/dap4/cdm/dsp/CDMDMR.java deleted file mode 100644 index 296d7cdeda..0000000000 --- a/dap4/d4cdm/src/main/java/dap4/cdm/dsp/CDMDMR.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.cdm.dsp; - -import dap4.core.dmr.*; - -public class CDMDMR { - ////////////////////////////////////////////////// - - public static class CDMAttribute extends DapAttribute { - public CDMAttribute(String name, DapType basetype) { - super(name, basetype); - } - } - - public static class CDMAttributeSet extends DapAttributeSet { - public CDMAttributeSet(String name) { - super(name); - } - } - - public static class CDMDimension extends DapDimension { - public CDMDimension(String name, long size) { - super(name, size); - } - } - - public static class CDMMap extends DapMap { - public CDMMap(DapVariable target) { - super(target); - } - } - - public abstract static class CDMVariable extends DapVariable { - public CDMVariable(String name, DapType t) { - super(name, t); - } - } - - public static class CDMGroup extends DapGroup { - public CDMGroup(String name) { - super(name); - } - } - - public static class CDMDataset extends DapDataset { - public CDMDataset(String name) { - super(name); - } - } - - public static class CDMEnumeration extends DapEnumeration { - public CDMEnumeration(String name, DapType basetype) { - super(name, basetype); - } - } - - public static class CDMEnumConst extends DapEnumConst { - public CDMEnumConst(String name, long value) { - super(name, value); - } - } - - public static class CDMStructure extends DapStructure { - public CDMStructure(String name) { - super(name); - } - } - - public static class CDMSequence extends DapSequence { - public CDMSequence(String name) { - super(name); - } - } - - public static class CDMOtherXML extends DapOtherXML { - public CDMOtherXML(String name) { - super(name); - } - } -} diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/dsp/CDMDSP.java b/dap4/d4cdm/src/main/java/dap4/cdm/dsp/CDMDSP.java deleted file mode 100644 index 95b271e745..0000000000 --- a/dap4/d4cdm/src/main/java/dap4/cdm/dsp/CDMDSP.java +++ /dev/null @@ -1,1056 +0,0 @@ -/* - * Copyright (c) 2012-2018 University Corporation for Atmospheric Research/Unidata - * See LICENSE for license information. - */ - -package dap4.cdm.dsp; - -import dap4.cdm.CDMTypeFcns; -import dap4.cdm.CDMUtil; -import dap4.cdm.NodeMap; -import dap4.core.data.DataCursor; -import dap4.core.dmr.*; -import dap4.core.util.Convert; -import dap4.core.util.DapContext; -import dap4.core.util.DapException; -import dap4.core.util.DapUtil; -import dap4.dap4lib.AbstractDSP; -import ucar.ma2.Array; -import ucar.ma2.DataType; -import ucar.ma2.IndexIterator; -import ucar.nc2.*; -import ucar.nc2.constants.CDM; -import ucar.nc2.dataset.*; -import ucar.nc2.util.CancelTask; -import java.io.IOException; -import java.util.*; -import ucar.nc2.write.CDLWriter; - -/** - * Wrap CDM source (NetcdfDataset) to be a DSP - * This basically means wrapping various (CDM)Array - * object to look like DataVariable objects. - * Currently only used on server side - */ - -public class CDMDSP extends AbstractDSP { - - ////////////////////////////////////////////////// - // Constants - - protected static final boolean DEBUG = false; - protected static final boolean DUMPCDL = false; - - // NetcdfDataset enhancement to use: need only coord systems - protected static Set ENHANCEMENT = EnumSet.of(NetcdfDataset.Enhance.CoordSystems); - - protected static final String FILLVALUE = "_FillValue"; - - ////////////////////////////////////////////////// - // Class variables - - protected static boolean nc4loaded = false; - - ////////////////////////////////////////////////// - // Class methods - - - ////////////////////////////////////////////////// - // Instance variables - - protected NetcdfDataset ncdfile = null; - protected boolean closed = false; - protected DMRFactory dmrfactory = null; - - // Keep various context-dependent maps between - // CDMNode instances and DapNode instances - // package access - - // Variable map - protected NodeMap varmap = new NodeMap<>(); - - // Variable <-> DapStructure (basetype) map; compound types only - protected NodeMap compoundmap = new NodeMap<>(); - - // Map Variable <-> DapSequence vlen type - protected NodeMap vlenmap = new NodeMap<>(); - - // Map All other kinds of CDMNode <-> DapNode - protected NodeMap nodemap = new NodeMap<>(); - - ////////////////////////////////////////////////// - // Constructor(s) - - public CDMDSP() {} - - public CDMDSP(String path) throws DapException { - super(); - setLocation(path); - } - - ////////////////////////////////////////////////// - // DSP Interface - - // This is intended to be the last DSP checked - @Override - public boolean dspMatch(String path, DapContext context) { - return true; - } - - /** - * @param filepath - absolute path to a file - * @return CDMDSP instance - * @throws DapException - */ - @Override - public CDMDSP open(String filepath) throws DapException { - try { - NetcdfFile ncfile = createNetcdfFile(filepath, null); - NetcdfDataset ncd = new NetcdfDataset(ncfile, ENHANCEMENT); - return open(ncd); - } catch (IOException ioe) { - throw new DapException("CDMDSP: cannot process: " + filepath, ioe); - } - } - - /** - * Provide an extra API for use in testing - * - * @param ncd netcdf dataset - * @return the cdmdsp - * @throws DapException - */ - public CDMDSP open(NetcdfDataset ncd) throws DapException { - assert this.context != null; - this.dmrfactory = new DMRFactory(); - this.ncdfile = ncd; - setLocation(this.ncdfile.getLocation()); - buildDMR(); - return this; - } - - @Override - public void close() throws IOException { - if (this.ncdfile != null) - this.ncdfile.close(); - } - - - @Override - public DataCursor getVariableData(DapVariable var) throws DapException { - Variable cdmvar = this.varmap.get(var); - if (cdmvar == null) - throw new DapException("Unknown variable: " + var); - CDMCursor vardata = (CDMCursor) super.getVariableData(var); - if (vardata == null) { - DataCursor.Scheme scheme = CDMCursor.schemeFor(var); - try { - vardata = new CDMCursor(scheme, this, var, null); - vardata.setArray(cdmvar.read()); - } catch (IOException e) { - throw new DapException(e); - } - super.addVariableData(var, vardata); - } - return vardata; - } - - ////////////////////////////////////////////////// - // Abstract DSP Abstract methods - - ////////////////////////////////////////////////// - // CDMDSP Specific Accessors - - public NetcdfDataset getNetcdfDataset() { - return this.ncdfile; - } - - ////////////////////////////////////////////////// - // Nodemap Management - - /* - * Make sure that we use the proper - * object in order to avoid identity - * problems. - */ - - /** - * Track generic CDMNode <-> DapNode - */ - protected void recordNode(CDMNode cdm, DapNode dap) { - assert this.nodemap.get(cdm) == null && this.nodemap.get(dap) == null; - this.nodemap.put(cdm, dap); - } - - /** - * Track Variable <-> DapVariable - */ - protected void recordVar(Variable cdm, DapVariable dap) { - cdm = CDMUtil.unwrap(cdm); - assert varmap.get(cdm) == null && varmap.get(dap) == null; - varmap.put(cdm, dap); - } - - /** - * Track Variable <-> DapStructure - */ - protected void recordStruct(Variable cdm, DapStructure dap) { - cdm = CDMUtil.unwrap(cdm); - assert this.nodemap.get(cdm) == null && this.nodemap.get(dap) == null; - compoundmap.put(cdm, dap); - } - - /** - * Track Variable <-> DapSequence - */ - protected void recordSeq(Variable cdm, DapSequence dap) { - cdm = CDMUtil.unwrap(cdm); - assert this.vlenmap.get(cdm) == null && this.vlenmap.get(dap) == null; - vlenmap.put(cdm, dap); - } - - /** - * Lookup a cdmnode in the cdmnodemap. - * Make sure that we use the proper - * object in order to avoid identity - * problems. - * - * @param cdmnode The CMDNode (variable, dimension, etc) to record - * @return The DapNode to which the cdmnode is to be mapped or null. - */ - /* - * protected DapNode - * lookupNode(CDMNode cdmnode) - * { - * CDMSort sort = cdmnode.getSort(); - * if(sort == CDMSort.VARIABLE || sort == CDMSort.STRUCTURE) { - * Variable basev = CDMUtil.unwrap((Variable) cdmnode); - * assert (basev != null) : "Unwrap() failed"; - * cdmnode = (CDMNode) basev; - * } - * return this.nodemap.get(cdmnode); - * } - */ - - ////////////////////////////////////////////////// - - /** - * Extract the metadata from the NetcdfDataset - * and build the DMR. - */ - - public void buildDMR() throws DapException { - if (getDMR() != null) - return; - try { - if (DUMPCDL) { - System.out.println("writecdl:"); - CDLWriter.writeCDL(this.ncdfile, System.out, false); - System.out.flush(); - } - // Use the file path to define the dataset name - String name = this.ncdfile.getLocation(); - // Normalize the name - name = DapUtil.canonicalpath(name); - // Remove any path prefix - int index = name.lastIndexOf('/'); - if (index >= 0) - name = name.substring(index + 1, name.length()); - // Initialize the root dataset node - setDMR((DapDataset) dmrfactory.newDataset(name).annotate(NetcdfDataset.class, this.ncdfile)); - // Map the CDM root group to this group - recordNode(this.ncdfile.getRootGroup(), getDMR()); - getDMR().setBase(DapUtil.canonicalpath(this.ncdfile.getLocation())); - - // Now recursively build the tree. Start by - // Filling the dataset with the contents of the ncfile - // root group. - fillgroup(getDMR(), this.ncdfile.getRootGroup()); - - // Add an order index to the tree - getDMR().sort(); - - // Now locate the coordinate variables for maps - - /* Walk looking for VariableDS instances */ - processmappedvariables(this.ncdfile.getRootGroup()); - - // Now set the view - getDMR().finish(); - - } catch (DapException e) { - setDMR(null); - throw new DapException(e); - } - } - - ////////////////////////////////////////////////// - // Actions - - protected void fillgroup(DapGroup dapgroup, Group cdmgroup) throws DapException { - // Create decls in dap group for Dimensions - for (Dimension cdmdim : cdmgroup.getDimensions()) { - DapDimension dapdim = builddim(cdmdim); - } - // Create decls in dap group for Enumerations - for (EnumTypedef cdmenum : cdmgroup.getEnumTypedefs()) { - String name = cdmenum.getShortName(); - DapEnumeration dapenum = buildenum(cdmenum); - dapenum.setShortName(name); - dapgroup.addDecl(dapenum); - } - // Create decls in dap group for vlen induced Sequences - // Do this before building compound types - for (Variable cdmvar0 : cdmgroup.getVariables()) { - Variable cdmvar = CDMUtil.unwrap(cdmvar0); - buildseqtypes(cdmvar); - } - // Create decls in dap group for Compound Types - for (Variable cdmvar0 : cdmgroup.getVariables()) { - Variable cdmvar = CDMUtil.unwrap(cdmvar0); - if (cdmvar.getDataType() != DataType.STRUCTURE && cdmvar.getDataType() != DataType.SEQUENCE) - continue; - DapStructure struct = buildcompoundtype(cdmvar, dapgroup); - } - - // Create decls in dap group for Variables - for (Variable cdmvar0 : cdmgroup.getVariables()) { - Variable cdmvar = CDMUtil.unwrap(cdmvar0); - DapNode newvar = buildvariable(cdmvar, dapgroup, cdmvar.getDimensions()); - } - // Create decls in dap group for subgroups - for (Group subgroup : cdmgroup.getGroups()) { - DapGroup newgroup = buildgroup(subgroup); - dapgroup.addDecl(newgroup); - } - // Create decls in dap group for group-level attributes - buildattributes(dapgroup, cdmgroup.attributes()); - } - - ////////////////////////////////////////////////// - // Declaration Builders - - protected DapDimension builddim(Dimension cdmdim) throws DapException { - if (cdmdim.isVariableLength()) - throw new DapException("* dimensions not supported"); - DapDimension dapdim = null; - long cdmsize = dapsize(cdmdim); - String name = cdmdim.getShortName(); - if (name != null && name.length() == 0) - name = null; - boolean shared = cdmdim.isShared(); - if (!shared) { - // Unlike the parser, since we are working - // from a NetcdfDataset instance, there might - // be multiple anonymous dimension objects - // the same size. So, just go ahead and create - // multiple instances. - dapdim = (DapDimension) dmrfactory.newDimension(null, cdmsize); - getDMR().addDecl(dapdim); - } else { // Non anonymous; create in current group - dapdim = (DapDimension) dmrfactory.newDimension(name, cdmsize); - dapdim.setShared(true); - if (cdmdim.isUnlimited()) { - dapdim.setUnlimited(true); - } - Group cdmparent = cdmdim.getGroup(); - DapGroup dapparent = (DapGroup) this.nodemap.get(cdmparent); - assert dapparent != null; - assert (dapparent != null); - dapparent.addDecl(dapdim); - } - recordNode(cdmdim, dapdim); - return dapdim; - } - - protected DapEnumeration buildenum(EnumTypedef cdmenum) throws DapException { - // Set the enum's basetype - DapType base = null; - switch (cdmenum.getBaseType()) { - case ENUM1: - base = DapType.INT8; - break; - case ENUM2: - base = DapType.INT16; - break; - case ENUM4: - default: - base = DapType.INT32; - break; - } - DapEnumeration dapenum = (DapEnumeration) dmrfactory.newEnumeration(cdmenum.getShortName(), base); - recordNode(cdmenum, dapenum); - // Create the enum constants - Map ecvalues = cdmenum.getMap(); - for (Map.Entry entry : ecvalues.entrySet()) { - String name = entry.getValue(); - assert (name != null); - int value = (int) entry.getKey(); - dapenum.addEnumConst(dmrfactory.newEnumConst(name, new Long(value))); - } - return dapenum; - } - - protected DapStructure buildcompoundtype(Variable cdmvar, DapNode parent) throws DapException { - cdmvar = CDMUtil.unwrap(cdmvar); - DapStructure struct; - if (cdmvar.getDataType() == DataType.STRUCTURE) - struct = (DapStructure) dmrfactory.newStructure(cdmvar.getShortName()); - else if (cdmvar.getDataType() == DataType.SEQUENCE) - struct = (DapStructure) dmrfactory.newSequence(cdmvar.getShortName()); - else - throw new DapException("Internal error"); - struct.setParent(parent); - recordStruct(cdmvar, struct); - Structure cdmstruct = (Structure) cdmvar; - List fields = cdmstruct.getVariables(); - // recurse to create compound types of any fields c - for (CDMNode node : fields) { - Variable cdmfield = (Variable) node; - List dimset = cdmfield.getDimensions(); - // Recurse on any nested compound types - if (cdmfield.getDataType() == DataType.STRUCTURE || cdmfield.getDataType() == DataType.SEQUENCE) { - DapStructure fieldstruct = buildcompoundtype(cdmfield, struct); - } - } - // Add the fields to this compound type - for (CDMNode node : fields) { - Variable cdmfield = (Variable) node; - DapType basetype = null; - switch (cdmfield.getDataType()) { - default: - basetype = CDMTypeFcns.cdmtype2daptype(cdmfield.getDataType()); - break; - case STRUCTURE: - case SEQUENCE: - basetype = compoundmap.get(cdmfield);// since no forward references - break; - } - // build the field variable - List fielddims = cdmfield.getDimensions(); - DapVariable dapfield; - if (CDMUtil.hasVLEN(cdmfield)) { - // Get the fake sequence associated with this vlen - DapSequence seq = vlenmap.get(cdmfield); - List coredims = getCoreDimset(fielddims); - // We need to build a variable whose basetype is the - // fake sequence rather than the cdmfield type - // First, build a variable using the existing cdmfield - dapfield = buildvariable(cdmfield, struct, coredims); - // Now modify it to use the fake sequence - dapfield.setBaseType(seq); - } else { - dapfield = buildvariable(cdmfield, struct, fielddims); - } - struct.addField(dapfield); - } - return struct; - } - - protected DapVariable buildvariable(Variable cdmbasevar, DapNode parent, List cdmdims) - throws DapException { - DapVariable dapvar = null; - CDMSort sort = cdmbasevar.getSort(); - switch (sort) { - case VARIABLE: - switch (cdmbasevar.getDataType()) { - default: - dapvar = buildatomicvar(cdmbasevar, parent); - break; - case ENUM1: - case ENUM2: - case ENUM4: - dapvar = buildenumvar(cdmbasevar); - break; - case OPAQUE: - dapvar = buildopaquevar(cdmbasevar); - break; - case STRING: - dapvar = buildstringvar(cdmbasevar); - break; - case STRUCTURE: - case SEQUENCE: - assert false : "Internal error"; // How could this ever happen? - break; - - } - builddimrefs(dapvar, cdmdims); - break; - case STRUCTURE: - dapvar = buildstructvar(cdmbasevar); - builddimrefs(dapvar, cdmdims); - break; - case SEQUENCE: - default: - assert false : "Internal Error"; - } - if (parent != null) - addToParent(parent, dapvar); - return dapvar; - } - - protected DapVariable buildatomicvar(Variable cdmvar, DapNode parent) throws DapException { - // Atomic => not opaque and not enum - DapType basetype = CDMTypeFcns.cdmtype2daptype(cdmvar.getDataType()); - if (basetype == null) - throw new DapException("DapFile: illegal CDM variable base type: " + cdmvar.getDataType()); - DapVariable dapvar = (DapVariable) dmrfactory.newVariable(cdmvar.getShortName(), basetype); - recordVar(cdmvar, dapvar); - buildattributes(dapvar, cdmvar.attributes()); - if (CDMUtil.hasVLEN(cdmvar)) { - // Get the fake sequence associated with this vlen - DapSequence seq = vlenmap.get(cdmvar); - List coredims = getCoreDimset(cdmvar.getDimensions()); - // We need to build a variable whose basetype is the - // fake sequence rather than the cdmfield type - // First, build a variable using the existing cdmfield - // Now modify it to use the fake sequence - dapvar.setBaseType(seq); - } - return dapvar; - } - - protected DapVariable buildopaquevar(Variable cdmvar) throws DapException { - assert (cdmvar.getDataType() == DataType.OPAQUE) : "Internal error"; - DapVariable dapvar = (DapVariable) dmrfactory.newVariable(cdmvar.getShortName(), DapType.OPAQUE); - recordVar(cdmvar, dapvar); - buildattributes(dapvar, cdmvar.attributes()); - Object osize = cdmvar.annotation(UCARTAGOPAQUE); - if (osize != null) { - dapvar.addXMLAttribute(UCARTAGOPAQUE, osize.toString()); - } - return dapvar; - } - - protected DapVariable buildstringvar(Variable cdmvar) throws DapException { - assert (cdmvar.getDataType() == DataType.STRING) : "Internal error"; - DapVariable dapvar = (DapVariable) dmrfactory.newVariable(cdmvar.getShortName(), DapType.STRING); - recordVar(cdmvar, dapvar); - buildattributes(dapvar, cdmvar.attributes()); - return dapvar; - } - - protected DapVariable buildenumvar(Variable cdmvar) throws DapException { - assert (cdmvar.getDataType() == DataType.ENUM1 || cdmvar.getDataType() == DataType.ENUM2 - || cdmvar.getDataType() == DataType.ENUM4) : "Internal error"; - - // Now, we need to locate the actual enumeration decl - EnumTypedef enumdef = cdmvar.getEnumTypedef(); - EnumTypedef trueenumdef = findMatchingEnum(enumdef); - // Modify the cdmvar - cdmvar.setEnumTypedef(trueenumdef); - // Now, map to a DapEnumeration - DapEnumeration dapenum = (DapEnumeration) this.nodemap.get(trueenumdef); - assert (dapenum != null); - DapVariable dapvar = (DapVariable) dmrfactory.newVariable(cdmvar.getShortName(), dapenum); - recordVar(cdmvar, dapvar); - buildattributes(dapvar, cdmvar.attributes()); - return dapvar; - } - - protected DapVariable buildstructvar(Variable cdmvar) throws DapException { - assert (cdmvar.getDataType() == DataType.STRUCTURE) : "Internal error"; - // Find the DapStructure that is the basetype for this var - DapStructure struct = compoundmap.get(cdmvar); - assert struct != null : "Internal Error"; - DapVariable dapvar = (DapVariable) dmrfactory.newVariable(cdmvar.getShortName(), struct); - recordVar(cdmvar, dapvar); - buildattributes(dapvar, cdmvar.attributes()); - return dapvar; - } - - /* - * Create a sequence from a variable with a - * variable length last dimension. - * Suppose we have cdm equivalent to this: - * T var[d1]...[dn]][*] - * We convert to the following - * - * - * - * ... - * - * - */ - - protected DapSequence buildseqtype(Variable cdmvar) throws DapException { - cdmvar = CDMUtil.unwrap(cdmvar); - assert (CDMUtil.hasVLEN(cdmvar)); - DataType dt = cdmvar.getDataType(); - DapType daptype = CDMTypeFcns.cdmtype2daptype(dt); - DapSequence seq = (DapSequence) dmrfactory.newSequence(cdmvar.getShortName()); - // fill DapSequence with a single field; note that the dimensions - // are elided because they will attach to the sequence variable, - // not the field - DapVariable field = dmrfactory.newVariable(cdmvar.getShortName(), daptype); - seq.addField(field); - field.setParent(seq); - recordSeq(cdmvar, seq); - return seq; - } - - /** - * Walk this variable, including fields, to construct sequence types - * for any contained vlen dimensions - * - * @param cdmvar variable to walk - */ - - protected void buildseqtypes(Variable cdmvar) throws DapException { - if (CDMUtil.hasVLEN(cdmvar)) { - buildseqtype(cdmvar); - } - if (cdmvar.getDataType() == DataType.STRUCTURE || cdmvar.getDataType() == DataType.SEQUENCE) { - Structure struct = (Structure) cdmvar; - List fields = struct.getVariables(); - for (int i = 0; i < fields.size(); i++) { - Variable field = fields.get(i); - buildseqtypes(field); // recurse for inner vlen dims - } - } - } - - protected void buildattributes(DapNode node, AttributeContainer attributes) throws DapException { - for (Attribute attr : attributes) { - if (!suppress(attr.getShortName())) { - DapAttribute dapattr = buildattribute(attr); - node.addAttribute(dapattr); - } - } - } - - protected DapAttribute buildattribute(Attribute cdmattr) throws DapException { - DapType attrtype = CDMTypeFcns.cdmtype2daptype(cdmattr.getDataType()); - EnumTypedef cdmenum = cdmattr.getEnumType(); - boolean enumfillvalue = (cdmattr.getShortName().equals(FILLVALUE) && cdmenum != null); - DapEnumeration dapenum = null; - - // We need to handle _FillValue specially if the - // the variable is enum typed. - if (enumfillvalue) { - cdmenum = findMatchingEnum(cdmenum); - // Make sure the cdm attribute has type enumx - if (!cdmenum.getBaseType().isEnum()) - throw new DapException("CDM _FillValue attribute type is not enumX"); - // Modify the attr - cdmattr.setEnumType(cdmenum); - // Now, map to a DapEnumeration - dapenum = (DapEnumeration) this.nodemap.get(cdmenum); - if (dapenum == null) - throw new DapException("Illegal CDM variable attribute type: " + cdmenum); - attrtype = dapenum; - } - if (attrtype == null) - throw new DapException("DapFile: illegal CDM variable attribute type: " + cdmattr.getDataType()); - DapAttribute dapattr = (DapAttribute) dmrfactory.newAttribute(cdmattr.getShortName(), attrtype); - recordNode(cdmattr, dapattr); - // Transfer the values - Array values = cdmattr.getValues(); - if (!validatecdmtype(cdmattr.getDataType(), values.getElementType())) - throw new DapException("Attr type versus attribute data mismatch: " + values.getElementType()); - IndexIterator iter = values.getIndexIterator(); - String[] valuelist = null; - Object vec = CDMTypeFcns.createVector(cdmattr.getDataType(), values.getSize()); - for (int i = 0; iter.hasNext(); i++) { - java.lang.reflect.Array.set(vec, i, iter.next()); - } - valuelist = (String[]) Convert.convert(DapType.STRING, attrtype, vec); - dapattr.setValues(valuelist); - return dapattr; - } - - /** - * Assign dimensions to a variable - * - * @param dapvar The variable to which we wish to assign dimensions - * @param cdmdims The cdm dimensions from which we will find the dimension info - */ - protected void builddimrefs(DapVariable dapvar, List cdmdims) throws DapException { - if (cdmdims == null || cdmdims.size() == 0) - return; - // It is unfortunately the case that the dimensions - // associated with the variable are not - // necessarily the same object as those dimensions - // as declared, so we need to use a non-trivial - // matching algorithm. - for (Dimension cdmdim : cdmdims) { - DapDimension dapdim = null; - if (cdmdim.isShared()) { - Dimension declareddim = finddimdecl(cdmdim); - if (declareddim == null) - throw new DapException("Unprocessed cdm dimension: " + cdmdim); - dapdim = (DapDimension) this.nodemap.get(declareddim); - assert dapdim != null; - } else if (cdmdim.isVariableLength()) {// ignore - continue; - } else {// anonymous - dapdim = builddim(cdmdim); - } - assert (dapdim != null) : "Internal error"; - dapvar.addDimension(dapdim); - } - } - - protected void processmappedvariables(Group g) throws DapException { - for (Variable v0 : g.getVariables()) { - Variable cdmvar = CDMUtil.unwrap(v0); - if (cdmvar == null) - throw new DapException("NetcdfDataset synthetic variable: " + v0); - DapNode dapvar = this.varmap.get(cdmvar); - if (dapvar == null) - throw new DapException("Unknown variable: " + cdmvar); - if (!(dapvar instanceof DapVariable)) - throw new DapException("CDMVariable not mapping to dap variable: " + cdmvar); - buildmaps((DapVariable) dapvar, v0); - } - } - - - /** - * @param dapvar The variable to which we wish to assign maps - * @param var The NetcdfDataset variable from which to extract coord system - */ - protected void buildmaps(DapVariable dapvar, Variable var) throws DapException { - // See if this cdm variable has one (or more) coordinate system - List css = null; - if (var.getSort() == CDMSort.VARIABLE) { - VariableDS vds = (VariableDS) var; - css = vds.getCoordinateSystems(); - } else { - StructureDS sds = (StructureDS) var; - css = sds.getCoordinateSystems(); - } - if (css != null && css.size() > 0) { - // Not sure what to do with multiple coordinate systems - // For now, only use the first - CoordinateSystem coordsystems = css.get(0); - for (CoordinateAxis axis : coordsystems.getCoordinateAxes()) { - // First step is to find the dap variable - // corresponding to the map - VariableDS vds = (VariableDS) axis.getOriginalVariable(); - if (vds != null) { - Variable v = CDMUtil.unwrap(vds); - if (v != null) { - DapVariable mapvar = varmap.get(v); - if (mapvar == null) - throw new DapException("Illegal map variable:" + v.toString()); - if (!mapvar.isAtomic()) - throw new DapException("Non-atomic map variable:" + v.toString()); - // Ignore maps where the map variable is inside this scope - /* - * if(!mapvar.isTopLevel()) { - * DapNode parent = mapvar.getContainer(); - * switch (parent.getSort()) { - * case SEQUENCE: - * case STRUCTURE: - * if(dapvar.getBaseType() == parent) // Do we need to do transitive closure? - * throw new DapException("Map var cannot be in same structure as map"); - * break; - * default: - * assert false : "Unexpected container type"; - * } - */ - DapMap map = (DapMap) dmrfactory.newMap(mapvar); - dapvar.addMap(map); - } - } - } - } - } - - protected DapGroup buildgroup(Group cdmgroup) throws DapException { - DapGroup dapgroup = (DapGroup) dmrfactory.newGroup(cdmgroup.getShortName()); - recordNode(cdmgroup, dapgroup); - dapgroup.setShortName(cdmgroup.getShortName()); - fillgroup(dapgroup, cdmgroup); - return dapgroup; - } - - ////////////////////////////////////////////////// - // Utilities - - /** - * Unfortunately, the CDM Iosp does not - * actually use the declared enums. Rather, - * for every enum type'd variable, a new - * enum decl is defined. So, we need - * to find the original enum decl that matches - * the variable's enum. - */ - - protected EnumTypedef findMatchingEnum(EnumTypedef varenum) throws DapException { - List candidates = new ArrayList<>(); - for (Map.Entry entry : this.nodemap.getCDMMap().entrySet()) { - CDMNode cdmnode = entry.getValue(); - if (cdmnode.getSort() != CDMSort.ENUMERATION) - continue; - // Compare the enumeration (note names will differ) - EnumTypedef target = (EnumTypedef) cdmnode; - /* - * Ideally, we should test the types of the enums, - * but, unfortunately, the var enum is always enum4. - * if(target.getBaseType() != varenum.getBaseType()) - * continue; - */ - Map targetmap = target.getMap(); - Map varmap = varenum.getMap(); - if (targetmap.size() != varmap.size()) - continue; - boolean match = true; // until otherwise shown - for (Map.Entry tpair : targetmap.entrySet()) { - String tname = tpair.getValue(); - int value = (int) tpair.getKey(); - boolean found = false; - for (Map.Entry vpair : varmap.entrySet()) { - if (tname.equals(vpair.getValue()) && value == (int) vpair.getKey()) { - found = true; - break; - } - } - if (!found) { - match = false; - break; - } - } - if (!match) - continue; - - // Save it unless it is shadowed by a closer enum - boolean shadowed = false; - for (EnumTypedef etd : candidates) { - if (shadows(etd.getGroup(), target.getGroup())) { - shadowed = true; - break; - } - } - if (!shadowed) - candidates.add(target); - } - - switch (candidates.size()) { - case 0: - throw new DapException("CDMDSP: No matching enum type decl: " + varenum.getShortName()); - case 1: - break; - default: - throw new DapException("CDMDSP: Multiple matching enum type decls: " + varenum.getShortName()); - } - return candidates.get(0); - } - - protected boolean shadows(Group parent, Group child) { - if (child == parent) - return true; - Group candidate = child; - do { - candidate = candidate.getGroup(); - } while (candidate != null && candidate != parent); - return (candidate == parent); - } - - // Convert cdm size to DapDimension size - protected long dapsize(Dimension cdmdim) { - assert (!cdmdim.isVariableLength()); - return (long) cdmdim.getLength(); - } - - protected boolean validatecdmtype(DataType datatype, Class typeclass) { - switch (datatype) { - case CHAR: - return typeclass == char.class; - case BYTE: - case UBYTE: - return typeclass == byte.class; - case SHORT: - case USHORT: - return typeclass == short.class; - case INT: - case UINT: - return typeclass == int.class; - case LONG: - case ULONG: - return typeclass == long.class; - case FLOAT: - return typeclass == float.class; - case DOUBLE: - return typeclass == double.class; - case STRING: - return typeclass == String.class; - case OPAQUE: - return typeclass == Byte[].class; - // For these, return the integer basetype - case ENUM1: - return typeclass == byte.class; - case ENUM2: - return typeclass == short.class; - case ENUM4: - return typeclass == int.class; - - // Undefined - case SEQUENCE: - case STRUCTURE: - default: - break; - } - return false; - } - - - protected Dimension finddimdecl(Dimension dimref) { - // Search on the full name, but be careful, - // the rule is that the declared dimension's fqn - // must be a prefix of the dimension reference. - for (Map.Entry entry : this.nodemap.getCDMMap().entrySet()) { - if (entry.getValue().getSort() != CDMSort.DIMENSION) - continue; - Dimension d = (Dimension) entry.getValue(); - if (isDimDeclFor(d, dimref)) - return d; - } - return null; - } - - protected boolean isDimDeclFor(Dimension decl, Dimension ref) { - if (!decl.isShared()) - return false; // Has no name - // First check shortname and size - if (!decl.getShortName().equals(ref.getShortName())) - return false; - if (decl.getLength() != ref.getLength()) - return false; - // Make sure they are in the same group - String dprefix = decl.getGroup().getFullName(); - String rprefix = ref.getGroup().getFullName(); - return (dprefix.equals(rprefix)); - } - - /* - * protected String - * fixvalue(Object o, DapType datatype) - * { - * TypeSort atype = datatype.getTypeSort(); - * if(o instanceof Character) { - * long l = (long) ((Character) o).charValue(); - * if(atype.isUnsigned()) - * l = l & 0xffL; - * o = Long.valueOf(l); - * } else if(o instanceof Float || o instanceof Double) { - * if(atype == TypeSort.Float32) - * o = Float.valueOf(((Number) o).floatValue()); - * else if(atype == TypeSort.Float64) - * o = Double.valueOf(((Number) o).doubleValue()); - * else - * assert false : "Internal error"; - * } else if(o instanceof Number) { - * long l = ((Number) o).longValue(); - * switch (atype) { - * case Char: - * case UInt8: - * l = l & 0xffL; - * break; - * case UInt16: - * l = l & 0xffffL; - * break; - * case UInt32: - * l = l & 0xffffffffL; - * break; - * default: - * break; - * } - * o = Long.valueOf(l); - * } else if(o instanceof String) { - * o = o.toString(); - * } else if(o instanceof ByteBuffer) { - * // leave it unchanged - * } else if(o instanceof byte[]) { - * o = ByteBuffer.wrap((byte[]) o); - * } else if(o instanceof Byte[]) { - * Byte[] ob = (Byte[]) o; - * byte[] bb = new byte[ob.length]; - * for(int i = 0; i < bb.length; i++) { - * bb[i] = (byte) ob[i]; - * } - * o = ByteBuffer.wrap(bb); - * } //else { // leave it unchanged - * return o; - * } - */ - - ////////////////////////////////////////////////// - - protected NetcdfFile createNetcdfFile(String location, CancelTask canceltask) throws DapException { - try { - NetcdfFile ncfile = NetcdfFile.open(location, -1, canceltask, getContext()); - return ncfile; - } catch (DapException de) { - if (DEBUG) - de.printStackTrace(); - throw de; - } catch (Exception e) { - if (DEBUG) - e.printStackTrace(); - throw new DapException(e); - } - } - - ////////////////////////////////////////////////// - // Utilities - - /** - * Strip vlen dimensions from a set of dimensions - * - * @param dimset - * @return subset of dimset with (trailing) vlen removed - * @throws DapException - */ - static List getCoreDimset(List dimset) throws DapException { - if (dimset == null) - return null; - List core = new ArrayList<>(); - int pos = -1; - int count = 0; - for (int i = 0; i < dimset.size(); i++) { - if (dimset.get(i).isVariableLength()) { - pos = i; - count++; - } else - core.add(dimset.get(i)); - } - if ((pos != dimset.size() - 1) || count > 1) - throw new DapException("Unsupported use of (*) Dimension"); - return core; - } - - /** - * Some attributes that are added by the NetcdfDataset - * need to be kept out of the DMR. This function - * defines that set. - * - * @param attrname A non-escaped attribute name to be tested for suppression - * @return true if the attribute should be suppressed, false otherwise. - */ - protected boolean suppress(String attrname) { - if (attrname.startsWith("_Coord")) - return true; - if (attrname.equals(CDM.UNSIGNED)) - return true; - return false; - } - - protected void addToParent(DapNode parent, DapVariable dapvar) throws DapException { - assert (parent != null); - switch (parent.getSort()) { - case GROUP: - case DATASET: - ((DapGroup) parent).addDecl(dapvar); - break; - case SEQUENCE: - case STRUCTURE: - dapvar.setParent(parent); - break; - default: - assert (false) : "Internal error"; - } - } - -} diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArray.java b/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArray.java deleted file mode 100644 index 8fd48da4a2..0000000000 --- a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArray.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.cdm.nc2; - -import dap4.core.dmr.*; -import dap4.core.data.DSP; - -/** - * It is convenient to be able to create - * a common "parent" interface for all - * the CDM array classes - */ - -/* package */ interface CDMArray { - public DSP getDSP(); - - public DapVariable getTemplate(); - - public long getSizeBytes(); // In bytes - - public DapType getBaseType(); - - -} diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArrayAtomic.java b/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArrayAtomic.java deleted file mode 100644 index b82b3fe2c9..0000000000 --- a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArrayAtomic.java +++ /dev/null @@ -1,549 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.cdm.nc2; - -import dap4.cdm.CDMTypeFcns; -import dap4.cdm.CDMUtil; -import dap4.core.data.DSP; -import dap4.core.data.DataCursor; -import dap4.core.dmr.DapType; -import dap4.core.dmr.DapVariable; -import dap4.core.util.Convert; -import dap4.core.util.DapException; -import dap4.core.util.DapUtil; -import dap4.core.util.Slice; -import ucar.ma2.Array; -import ucar.ma2.DataType; -import ucar.ma2.Index; -import ucar.ma2.IndexIterator; -import ucar.nc2.Group; -import java.io.IOException; -import java.util.List; -import static dap4.core.data.DataCursor.Scheme; - -/** - * CDMArrayAtomic wraps a DataCursor object to present - * the ucar.ma2.Array interface. - * CDMArrayAtomic manages a single CDM atomic variable: - * either top-level or for a member. - */ - -/* package */ class CDMArrayAtomic extends Array implements CDMArray { - ///////////////////////////////////////////////////// - // Constants - - ///////////////////////////////////////////////////// - // Instance variables - - protected DSP dsp = null; - protected DapVariable template = null; - protected DapType basetype = null; - - // CDMArray variables - protected DataCursor data = null; - protected Group cdmroot = null; - protected int elementsize = 0; // of one element - protected long dimsize = 0; // # of elements in array; scalar uses value 1 - protected long totalsize = 0; // elementsize*dimsize except when isbytestring - - ////////////////////////////////////////////////// - // Constructor(s) - - /** - * Constructor - * - * @param data DataCursor object providing the actual data - */ - CDMArrayAtomic(DataCursor data) throws DapException { - super(CDMTypeFcns.daptype2cdmtype(((DapVariable) data.getTemplate()).getBaseType()), - CDMUtil.computeEffectiveShape(((DapVariable) data.getTemplate()).getDimensions())); - this.dsp = data.getDSP(); - this.data = data; - this.template = (DapVariable) this.data.getTemplate(); - this.basetype = this.template.getBaseType(); - - this.dimsize = DapUtil.dimProduct(this.template.getDimensions()); - this.elementsize = this.basetype.getSize(); - } - - ///////////////////////////////////////////////// - // CDMArray Interface - - @Override - public DapType getBaseType() { - return this.basetype; - } - - @Override - public DSP getDSP() { - return this.dsp; - } - - @Override - public DapVariable getTemplate() { - return this.template; - } - - ////////////////////////////////////////////////// - // Accessors - - ////////////////////////////////////////////////// - // Array Interface - - public String toString() { - StringBuilder buf = new StringBuilder(); - DapType basetype = getBaseType(); - String sbt = (basetype == null ? "?" : basetype.toString()); - String st = (template == null ? "?" : template.getShortName()); - buf.append(String.format("%s %s[%d]", sbt, st, dimsize)); - return buf.toString(); - } - - ////////////////////////////////////////////////// - // Array API - // TODO: add index range checks - - public Class getElementType() { - DataType dt = CDMTypeFcns.daptype2cdmtype(this.basetype); - if (dt == null) - throw new IllegalArgumentException("Unknown datatype: " + this.basetype); - return CDMTypeFcns.cdmElementClass(dt); - } - - public double getDouble(ucar.ma2.Index cdmidx) { - return getDouble(CDMUtil.cdmIndexToIndex(cdmidx)); - } - - public float getFloat(ucar.ma2.Index cdmidx) { - return getFloat(CDMUtil.cdmIndexToIndex(cdmidx)); - } - - public long getLong(ucar.ma2.Index cdmidx) { - return getLong(CDMUtil.cdmIndexToIndex(cdmidx)); - } - - public int getInt(ucar.ma2.Index cdmidx) { - return getInt(CDMUtil.cdmIndexToIndex(cdmidx)); - } - - public short getShort(ucar.ma2.Index cdmidx) { - return getShort(CDMUtil.cdmIndexToIndex(cdmidx)); - } - - public byte getByte(ucar.ma2.Index cdmidx) { - return getByte(CDMUtil.cdmIndexToIndex(cdmidx)); - } - - public char getChar(ucar.ma2.Index cdmidx) { - return getChar(CDMUtil.cdmIndexToIndex(cdmidx)); - } - - public boolean getBoolean(ucar.ma2.Index cdmidx) { - return getBoolean(CDMUtil.cdmIndexToIndex(cdmidx)); - } - - public Object getObject(ucar.ma2.Index cdmidx) { - return getObject(CDMUtil.cdmIndexToIndex(cdmidx)); - } - - // Convert int base to Index based - - public double getDouble(int offset) { - DapVariable d4var = (DapVariable) getTemplate(); - long[] dimsizes = DapUtil.getDimSizes(d4var.getDimensions()); - return getDouble(DapUtil.offsetToIndex(offset, dimsizes)); - } - - public float getFloat(int offset) { - DapVariable d4var = (DapVariable) getTemplate(); - long[] dimsizes = DapUtil.getDimSizes(d4var.getDimensions()); - return getFloat(DapUtil.offsetToIndex(offset, dimsizes)); - } - - public long getLong(int offset) { - DapVariable d4var = (DapVariable) getTemplate(); - long[] dimsizes = DapUtil.getDimSizes(d4var.getDimensions()); - return getLong(DapUtil.offsetToIndex(offset, dimsizes)); - } - - public int getInt(int offset) { - DapVariable d4var = (DapVariable) getTemplate(); - long[] dimsizes = DapUtil.getDimSizes(d4var.getDimensions()); - return getInt(DapUtil.offsetToIndex(offset, dimsizes)); - } - - public short getShort(int offset) { - DapVariable d4var = (DapVariable) getTemplate(); - long[] dimsizes = DapUtil.getDimSizes(d4var.getDimensions()); - return getShort(DapUtil.offsetToIndex(offset, dimsizes)); - } - - public byte getByte(int offset) { - DapVariable d4var = (DapVariable) getTemplate(); - long[] dimsizes = DapUtil.getDimSizes(d4var.getDimensions()); - return getByte(DapUtil.offsetToIndex(offset, dimsizes)); - } - - public char getChar(int offset) { - DapVariable d4var = (DapVariable) getTemplate(); - long[] dimsizes = DapUtil.getDimSizes(d4var.getDimensions()); - return getChar(DapUtil.offsetToIndex(offset, dimsizes)); - } - - public boolean getBoolean(int offset) { - DapVariable d4var = (DapVariable) getTemplate(); - long[] dimsizes = DapUtil.getDimSizes(d4var.getDimensions()); - return getBoolean(DapUtil.offsetToIndex(offset, dimsizes)); - } - - public Object getObject(int offset) { - DapVariable d4var = (DapVariable) getTemplate(); - long[] dimsizes = DapUtil.getDimSizes(d4var.getDimensions()); - return getObject(DapUtil.offsetToIndex(offset, dimsizes)); - } - - public Object getStorage() { - try { - List slices = DapUtil.dimsetToSlices(this.template.getDimensions()); - Object result = this.data.read(slices); - return result; - } catch (DapException e) { - throw new IllegalArgumentException(); - } - } - - - // Unsupported Methods - - public void setDouble(Index ima, double value) { - throw new UnsupportedOperationException(); - } - - public void setFloat(Index ima, float value) { - throw new UnsupportedOperationException(); - } - - public void setLong(Index ima, long value) { - throw new UnsupportedOperationException(); - } - - public void setInt(Index ima, int value) { - throw new UnsupportedOperationException(); - } - - public void setShort(Index ima, short value) { - throw new UnsupportedOperationException(); - } - - public void setByte(Index ima, byte value) { - throw new UnsupportedOperationException(); - } - - public void setChar(Index ima, char value) { - throw new UnsupportedOperationException(); - } - - public void setBoolean(Index ima, boolean value) { - throw new UnsupportedOperationException(); - } - - public void setObject(Index ima, Object value) { - throw new UnsupportedOperationException(); - } - - public void setDouble(int elem, double value) { - throw new UnsupportedOperationException(); - } - - public void setFloat(int elem, float value) { - throw new UnsupportedOperationException(); - } - - public void setLong(int elem, long value) { - throw new UnsupportedOperationException(); - } - - public void setInt(int elem, int value) { - throw new UnsupportedOperationException(); - } - - public void setShort(int elem, short value) { - throw new UnsupportedOperationException(); - } - - public void setByte(int elem, byte value) { - throw new UnsupportedOperationException(); - } - - public void setChar(int elem, char value) { - throw new UnsupportedOperationException(); - } - - public void setBoolean(int elem, boolean value) { - throw new UnsupportedOperationException(); - } - - public void setObject(int elem, Object value) { - throw new UnsupportedOperationException(); - } - - protected void copyTo1DJavaArray(IndexIterator indexIterator, Object o) { - throw new UnsupportedOperationException(); - } - - protected void copyFrom1DJavaArray(IndexIterator iter, Object javaArray) { - throw new UnsupportedOperationException(); - } - - protected Array createView(Index index) { - return this; - } - - ////////////////////////////////////////////////// - // Internal common extractors - - /** - * Get the array element at a specific dap4 index as a double - * - * @param idx of element to get - * @return value at index cast to double if necessary. - */ - protected double getDouble(dap4.core.util.Index idx) { - assert data.getScheme() == Scheme.ATOMIC; - try { - Object value = data.read(idx); - value = Convert.convert(DapType.FLOAT64, this.basetype, value); - return (Double) java.lang.reflect.Array.get(value, 0); - } catch (IOException ioe) { - throw new IndexOutOfBoundsException(ioe.getMessage()); - } - } - - /** - * Get the array element at a specific dap4 index as a float - * converting as needed. - * - * @param idx of element to get - * @return value at index cast to float if necessary. - */ - protected float getFloat(dap4.core.util.Index idx) { - assert data.getScheme() == Scheme.ATOMIC; - try { - Object value = data.read(idx); - value = Convert.convert(DapType.FLOAT32, this.basetype, value); - return (Float) java.lang.reflect.Array.get(value, 0); - } catch (IOException ioe) { - throw new IndexOutOfBoundsException(ioe.getMessage()); - } - } - - /** - * Get the array element at a specific dap4 index as a long - * - * @param idx of element to get - * @return value at index cast to long if necessary. - */ - protected long getLong(dap4.core.util.Index idx) { - assert data.getScheme() == Scheme.ATOMIC; - try { - Object value = data.read(idx); - value = Convert.convert(DapType.INT64, this.basetype, value); - return (Long) java.lang.reflect.Array.get(value, 0); - } catch (IOException ioe) { - throw new IndexOutOfBoundsException(ioe.getMessage()); - } - } - - /** - * Get the array element at a specific dap4 index as a integer - * - * @param idx of element to get - * @return value at index cast to integer if necessary. - */ - protected int getInt(dap4.core.util.Index idx) { - assert data.getScheme() == Scheme.ATOMIC; - try { - Object value = data.read(idx); - value = Convert.convert(DapType.INT32, this.basetype, value); - return (Integer) java.lang.reflect.Array.get(value, 0); - } catch (IOException ioe) { - throw new IndexOutOfBoundsException(ioe.getMessage()); - } - } - - /** - * Get the array element at a specific dap4 index as a short - * - * @param idx of element to get - * @return value at index cast to short if necessary. - */ - protected short getShort(dap4.core.util.Index idx) { - assert data.getScheme() == Scheme.ATOMIC; - try { - Object value = data.read(idx); - value = Convert.convert(DapType.INT16, this.basetype, value); - return (Short) java.lang.reflect.Array.get(value, 0); - } catch (IOException ioe) { - throw new IndexOutOfBoundsException(ioe.getMessage()); - } - } - - /** - * Get the array element at a specific dap4 index as a byte - * - * @param idx of element to get - * @return value at index cast to byte if necessary. - */ - protected byte getByte(dap4.core.util.Index idx) { - assert data.getScheme() == Scheme.ATOMIC; - try { - Object value = data.read(idx); - value = Convert.convert(DapType.INT8, this.basetype, value); - return (Byte) java.lang.reflect.Array.get(value, 0); - } catch (IOException ioe) { - throw new IndexOutOfBoundsException(ioe.getMessage()); - } - } - - /** - * Get the array element at a specific dap4 index as a char - * - * @param idx of element to get - * @return value at index cast to char if necessary. - */ - protected char getChar(dap4.core.util.Index idx) { - assert data.getScheme() == Scheme.ATOMIC; - try { - Object value = data.read(idx); - value = Convert.convert(DapType.CHAR, this.basetype, value); - return (Character) java.lang.reflect.Array.get(value, 0); - } catch (IOException ioe) { - throw new IndexOutOfBoundsException(ioe.getMessage()); - } - } - - /** - * Get the array element at a specific dap4 index as a boolean - * - * @param idx of element to get - * @return value at index cast to char if necessary. - */ - protected boolean getBoolean(dap4.core.util.Index idx) { - assert data.getScheme() == Scheme.ATOMIC; - try { - Object value = data.read(idx); - value = Convert.convert(DapType.INT64, this.basetype, value); - return ((Long) java.lang.reflect.Array.get(value, 0)) != 0; - } catch (IOException ioe) { - throw new IndexOutOfBoundsException(ioe.getMessage()); - } - } - - /** - * Get the array element at a specific dap4 index as an Object - * - * @param idx of element to get - * @return value at index cast to Object if necessary. - */ - protected Object getObject(dap4.core.util.Index idx) { - assert data.getScheme() == Scheme.ATOMIC; - try { - Object value = data.read(idx); - value = java.lang.reflect.Array.get(value, 0); - return value; - } catch (IOException ioe) { - throw new IndexOutOfBoundsException(ioe.getMessage()); - } - } - - - ////////////////////////////////////////////////// - // DataAtomic Interface - - public DapVariable getVariable() { - return this.template; - } - - public DapType getType() { - return this.basetype; - } - - /* - * protected Object - * read(long index, DapType datatype, DataAtomic content) - * throws DapException - * { - * Object result; - * int i = (int) index; - * long tmp = 0; - * switch (datatype.getTypeSort()) { - * case Int8: - * result = (Byte) content.getByte(i); - * break; - * case Char: - * result = (Character) content.getChar(i); - * break; - * case SHORT: - * result = (Short) content.getShort(i); - * break; - * case INT: - * result = (Integer) content.getInt(i); - * break; - * case LONG: - * result = (Long) content.getLong(i); - * break; - * case FLOAT: - * result = (Float) content.getFloat(i); - * break; - * case DOUBLE: - * result = (Double) content.getDouble(i); - * break; - * case STRING: - * result = content.getObject(i).toString(); - * break; - * case OBJECT: - * result = content.getObject(i); - * break; - * case UBYTE: - * tmp = content.getByte(i) & 0xFF; - * result = (Byte) (byte) tmp; - * break; - * case USHORT: - * tmp = content.getShort(i) & 0xFFFF; - * result = (Short) (short) tmp; - * break; - * case UINT: - * tmp = content.getInt(i) & 0xFFFFFFFF; - * result = (Integer) (int) tmp; - * break; - * case ULONG: - * result = (Long) content.getLong(i); - * break; - * case ENUM1: - * result = read(index, DataType.BYTE, content); - * break; - * case ENUM2: - * result = read(index, DataType.SHORT, content); - * break; - * case ENUM4: - * result = read(index, DataType.INT, content); - * break; - * case OPAQUE: - * result = content.getObject(i); - * break; - * case STRUCTURE: - * case SEQUENCE: - * default: - * throw new DapException("Attempt to read non-atomic value of type: " + datatype); - * } - * return result; - * } - */ - - ////////////////////////////////////////////////// - // Utilities -} - diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArrayDelegate.java b/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArrayDelegate.java deleted file mode 100644 index ec75886200..0000000000 --- a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArrayDelegate.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.cdm.nc2; - -import dap4.core.dmr.*; -import dap4.core.data.DSP; - -/** - * Since we can't use AbstractCDMArray, - * we define a delegator for CDMArray. - * This class actually is never used, it is just - * a placeholder to store the API that should be - * included in every class implementing CMDArray. - * If this class fails to compile then any fix - * must be propagated to the CDMArray implementing classes. - */ - -/* package */ class CDMArrayDelegate implements CDMArray { - protected DSP dsp = null; - protected DapVariable template = null; - protected long bytesize = 0; - protected DapType basetype = null; - protected TypeSort primitivetype = null; - - /* - * The implementing class will need to - * initialize the fields. - * this.template = template; - * this.bytesize = 0; - * this.root = root; - * this.dsp = dsp; - * this.bytesize = size; - * this.basetype = this.template.getBaseType(); - * this.primitivetype = this.basetype.getPrimitiveType(); - */ - - @Override - public DSP getDSP() { - return this.dsp; - } - - @Override - public DapVariable getTemplate() { - return this.template; - } - - @Override - public long getSizeBytes() { - return this.bytesize; - } - - @Override - public DapType getBaseType() { - return this.basetype; - } - -} diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArraySequence.java b/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArraySequence.java deleted file mode 100644 index b60a033e8f..0000000000 --- a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArraySequence.java +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.cdm.nc2; - -import dap4.cdm.CDMTypeFcns; -import dap4.core.data.DSP; -import dap4.core.data.DataCursor; -import dap4.core.dmr.DapSequence; -import dap4.core.dmr.DapStructure; -import dap4.core.dmr.DapType; -import dap4.core.dmr.DapVariable; -import dap4.core.util.*; -import ucar.ma2.*; -import ucar.nc2.Group; -import java.io.IOException; -import java.util.List; - -/** - * CDM now has an ArraySequence type intended to - * support VLEN (aka CDM (*) dimension). - * So, sequence is simulated as a rank n+1 structure where - * the last dimension is "*" (i.e. variable length). - * That is, given the following DAP4: - * Sequence S {f1,f2,...fm} [d1][d2]...[dn] - * Represent it in CDM as this: - * Structure S {f1,f2,...fm} [d1][d2]...[dn][*] - * We cannot subclass CDMArrayStructure because we need to subclass - * ArraySequence, so we are forced to duplicate a lot of the CDMArrayStructure - * code. - * The important point to note is that for CDM, we do not need to support - * Dimensioned sequences; the dimensions are supported by the enclosing - * ArrayStructure covering the non-vlen dimensions - */ - -/* package */ class CDMArraySequence extends ArraySequence implements CDMArray { - - ////////////////////////////////////////////////// - // Type decls - - // Define an open wrapper around a field array in order - // to make the code somewhat more clear - - protected static class FieldSet { - public Array[] fields; - - FieldSet(int nfields) { - fields = new Array[nfields]; - } - } - - public static class SDI implements StructureDataIterator { - protected StructureData[] list; - protected int position; - - public SDI() { - this.list = null; - this.position = 0; - } - - public SDI setList(StructureData[] list) { - this.list = list; - return this; - } - - public boolean hasNext() throws IOException { - return position < list.length; - } - - public StructureData next() throws IOException { - if (position >= list.length) - throw new IOException("No next element"); - return list[position++]; - } - - public StructureDataIterator reset() { - position = 0; - return this; - } - - public int getCurrentRecno() { - return position; - } - - } - - ////////////////////////////////////////////////// - // Instance variables - - protected Group cdmroot = null; - protected DSP dsp; - protected DapVariable template; - protected DapType basetype; - protected long bytesize = 0; - protected long recordcount = 0; - protected int nmembers = 0; - - protected DataCursor seqdata = null; - - /** - * Since in CDM a sequence is the last dimension of - * array, we do not need to keep dimensionality info, only - * the variable length stuff, which we do using - * StructureDataA instances: 1 per record. - */ - - // Track the records of this sequence as an array - // Note: term records here means the elements of the array, - // not record as in Sequence - - protected FieldSet[] records = null; // list of records - - ////////////////////////////////////////////////// - // Constructor(s) - - /** - * Constructor - * - * @param data - */ - CDMArraySequence(Group group, DataCursor data) throws DapException { - super(CDMArrayStructure.computemembers((DapVariable) data.getTemplate()), new SDI(), 0); - this.template = (DapVariable) data.getTemplate(); - this.basetype = this.template.getBaseType(); - // Currently do not allow non-scalar sequences - if (this.template.getRank() != 0) - throw new DapException("Non-scalar sequences unsupported through CDM interface"); - assert data.getScheme() == DataCursor.Scheme.SEQARRAY; - this.cdmroot = group; - this.dsp = dsp; - // Since this is a scalar, pull out the single instance - this.seqdata = ((DataCursor[]) data.read(dap4.core.util.Index.SCALAR))[0]; - this.recordcount = this.seqdata.getRecordCount(); - this.nmembers = ((DapStructure) this.basetype).getFields().size(); - - // Fill in the structdata (in parent) and record vectors - super.sdata = new StructureDataA[(int) this.recordcount]; - records = new FieldSet[(int) this.recordcount]; - for (int i = 0; i < this.recordcount; i++) { - super.sdata[i] = new StructureDataA(this, i); - records[i] = new FieldSet(this.nmembers); - } - - ((SDI) super.iter).setList(super.sdata); - } - - ////////////////////////////////////////////////// - // Compiler API - - /* package */ - void add(long recno, int fieldno, Array field) { - // Make sure all the space is allocated - if (records.length <= recno) { - FieldSet[] newrecs = new FieldSet[(int) recno + 1]; - System.arraycopy(records, 0, newrecs, 0, records.length); - records = newrecs; - } - FieldSet fs = records[(int) recno]; - if (fs == null) { - records[(int) recno] = (fs = new FieldSet(this.nmembers)); - } - fs.fields[fieldno] = field; - } - - ////////////////////////////////////////////////// - // CDMArray Interface - - @Override - public DapType getBaseType() { - return this.basetype; - } - - @Override - public DSP getDSP() { - return this.dsp; - } - - @Override - public DapVariable getTemplate() { - return template; - } - - ////////////////////////////////////////////////// - - public String toString() { - StringBuilder buf = new StringBuilder(); - DapVariable var = this.template; - DapSequence seq = (DapSequence) this.basetype; - long dimsize = DapUtil.dimProduct(var.getDimensions()); - for (int i = 0; i < dimsize; i++) { - List fields = seq.getFields(); - if (i < (dimsize - 1)) - buf.append("\n"); - buf.append("Sequence {\n"); - buf.append(String.format("} [%d/%d]", i, dimsize)); - } - return buf.toString(); - } - - - ////////////////////////////////////////////////// - // ArraySequence/ArrayStructure overrides - - @Override - public int getStructureDataCount() { - return this.records.length; - } - - @Override - protected StructureData makeStructureData(ArrayStructure as, int index) { - throw new UnsupportedOperationException("Cannot subset a Sequence"); - } - - /** - * Get the index'th StructureData(StructureDataA) object - * We need instances of StructureData to give to the user. - * We use StructureDataA so we can centralize everything - * in this class. The total number of StructureData objects - * is dimsize. - * - * @param index - * @return - */ - @Override - public StructureData getStructureData(int index) { - assert (super.sdata != null); - if (index < 0 || index >= this.records.length) - throw new IllegalArgumentException(index + " >= " + super.sdata.length); - assert (super.sdata[index] != null); - return super.sdata[index]; - } - - public ArraySequence getArraySequence(StructureMembers.Member m) { - return this; - } - - ///////////////////////// - // Define API required by StructureDataA - @Override - public Array copy() { - return this; // temporary - } - - /** - * Get member data of any type for a specific record as an Array. - * This may avoid the overhead of creating the StructureData object, - * but is equivalent to getStructure(recno).getArray( Member m). - * - * @param recno get data from the recnum-th StructureData of the ArrayStructure. - * Must be less than getSize(); - * @param m get data from this StructureMembers.Member. - * @return Array values. - */ - public Array getArray(int recno, StructureMembers.Member m) { - return (ucar.ma2.Array) memberArray(recno, CDMArrayStructure.memberIndex(m)); - } - - ///////////////////////// - - protected CDMArrayAtomic getAtomicArray(int index, StructureMembers.Member m) { - Array dd = memberArray(index, CDMArrayStructure.memberIndex(m)); - if (dd.getDataType() != DataType.STRUCTURE && dd.getDataType() != DataType.SEQUENCE) - return (CDMArrayAtomic) dd; - throw new ForbiddenConversionException("Cannot convert structure to AtomicArray"); - } - - protected Array memberArray(int recno, int memberindex) { - - Object[] values = new Object[(int) this.recordcount]; - for (int i = 0; i < this.recordcount; i++) { - FieldSet fs = records[i]; - values[i] = fs.fields[memberindex]; - } - DapVariable field = ((DapStructure) this.basetype).getField(memberindex); - DapType base = field.getBaseType(); - if (base == null) - throw new IllegalStateException("Unknown field type: " + field); - DataType dt = CDMTypeFcns.daptype2cdmtype(base); - Class elemtype = CDMTypeFcns.cdmElementClass(dt); - int shape[] = new int[] {(int) this.recordcount}; - return new ArrayObject(dt, elemtype, false, shape, values); - } -} - diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArrayStructure.java b/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArrayStructure.java deleted file mode 100644 index 57421103f9..0000000000 --- a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMArrayStructure.java +++ /dev/null @@ -1,487 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.cdm.nc2; - -import dap4.cdm.CDMTypeFcns; -import dap4.cdm.CDMUtil; -import dap4.core.data.DSP; -import dap4.core.data.DataCursor; -import dap4.core.dmr.DapStructure; -import dap4.core.dmr.DapType; -import dap4.core.dmr.DapVariable; -import dap4.core.util.DapException; -import dap4.core.util.DapUtil; -import dap4.core.util.Slice; -import dap4.dap4lib.LibTypeFcns; -import ucar.ma2.*; -import ucar.nc2.Group; -import java.nio.ByteBuffer; -import java.util.List; -import static dap4.core.data.DataCursor.Scheme; - -/** - * Implementation of ArrayStructure that wraps - * DAP4 databuffer - * (Note: Needs serious optimization applied). - *

        - * Given - * Structure S {f1,f2,...fm} [d1][d2]...[dn], - * internally, this is stored as a 2-D array - * CDMArray[][] instances; - * The first dimension's length is d1*d2*...dn. - * The second dimension has size |members| i.e. the number - * of fields in the sequence. - */ - -/* package */ class CDMArrayStructure extends ArrayStructure implements CDMArray { - ////////////////////////////////////////////////// - // Type decls - - /** - * We need to keep a map of index X fieldno -> Array - * representing the Array behind each field for each - * struct instance in a matrix of struct instances. - * To promote some clarity a eschew Array[|dimset|][|fields|] - * in favor of FieldArrays[|dimset|]. - */ - protected static class FieldArrays { - public Array[] fields; // Make externally accessible - - FieldArrays(int nfields) { - fields = new Array[nfields]; - } - - } - - ////////////////////////////////////////////////// - // Instance variables - - // CDMArry variables - protected Group cdmroot = null; - protected DSP dsp = null; - protected DapVariable template = null; - protected DapType basetype = null; - protected long dimsize = 0; - protected int nmembers = 0; - - protected DataCursor data = null; - - /** - * Since we are using StructureDataA, - * we store a list Field sets - * So we have a map: index -> Field object. - * Total number of objects is dimsize. - * Accessed by calls from StructureDataA. - * Note: We use the super.sdata field to store - * the StructureData instances. - */ - - // Note: term records here means the elements of the array, - // not record as in Sequence - - protected FieldArrays[] records = null; // list of Structure elements - - - ////////////////////////////////////////////////// - // Constructor(s) - - /** - * Constructor - * - * @param cdmroot the parent CDMDataset - * @param data the structure data - */ - CDMArrayStructure(Group cdmroot, DataCursor data) { - super(computemembers((DapVariable) data.getTemplate()), - CDMUtil.computeEffectiveShape(((DapVariable) data.getTemplate()).getDimensions())); - this.template = (DapVariable) data.getTemplate(); - assert data.getScheme() == Scheme.STRUCTARRAY; - this.dsp = data.getDSP(); - this.cdmroot = cdmroot; - this.basetype = this.template.getBaseType(); - this.dimsize = DapUtil.dimProduct(template.getDimensions()); - this.nmembers = ((DapStructure) template.getBaseType()).getFields().size(); - - this.data = data; - - // Fill in the structdata (in parent) and instance vectors - super.sdata = new StructureDataA[(int) this.dimsize]; - records = new FieldArrays[(int) this.dimsize]; - for (int i = 0; i < dimsize; i++) { - super.sdata[i] = new StructureDataA(this, i); - records[i] = new FieldArrays(this.nmembers); - } - } - - /** - * - * @param recno struct instance - * @param fieldno field of that struct - * @param field Array backing this field in this struct instance - */ - /* package */ - void add(long recno, int fieldno, Array field) { - FieldArrays fs = records[(int) recno]; - if (fs == null) - records[(int) recno] = (fs = new FieldArrays(this.nmembers)); - fs.fields[fieldno] = field; - } - ////////////////////////////////////////////////// - // CDMArray Interface - - @Override - public DSP getDSP() { - return this.dsp; - } - - @Override - public DapVariable getTemplate() { - return this.template; - } - - @Override - public DapType getBaseType() { - return this.basetype; - } - - ////////////////////////////////////////////////// - // Accessors - - @Override - public long getSize() { - return this.dimsize; - } - - ////////////////////////////////////////////////// - - public String toString() { - StringBuilder buf = new StringBuilder(); - DapVariable var = (DapVariable) this.template; - DapStructure struct = (DapStructure) var.getBaseType(); - for (int i = 0; i < this.dimsize; i++) { - List fields = struct.getFields(); - if (i < (this.dimsize - 1)) - buf.append("\n"); - buf.append("Structure {\n"); - if (fields != null) { - for (int j = 0; j < this.nmembers; j++) { - Array field = records[i].fields[j]; - String sfield = (field == null ? "null" : fields.toString()); - buf.append(sfield + "\n"); - } - } - buf.append(String.format("} [%d/%d]", i, dimsize)); - } - return buf.toString(); - } - - ////////////////////////////////////////////////// - // ArrayStructure interface - - /** - * Get the index'th StructureData(StructureDataA) object - * We need instances of StructureData to give to the user. - * We use StructureDataA so we can centralize everything - * in this class. The total number of StructureData objects - * is dimsize. - * - * @param index - * @return - */ - @Override - public StructureData getStructureData(int index) { - assert (super.sdata != null); - if (index < 0 || index >= this.dimsize) - throw new IllegalArgumentException(index + " >= " + super.sdata.length); - assert (super.sdata[index] != null); - return super.sdata[index]; - } - - public double getScalarDouble(int index, StructureMembers.Member m) { - CDMArrayAtomic data = getAtomicArray(index, m); - return data.getDouble(0); - } - - public float getScalarFloat(int index, StructureMembers.Member m) { - CDMArrayAtomic data = getAtomicArray(index, m); - return data.getFloat(0); - } - - public byte getScalarByte(int index, StructureMembers.Member m) { - CDMArrayAtomic data = getAtomicArray(index, m); - return data.getByte(0); - } - - public short getScalarShort(int index, StructureMembers.Member m) { - CDMArrayAtomic data = getAtomicArray(index, m); - return data.getShort(0); - } - - public int getScalarInt(int index, StructureMembers.Member m) { - CDMArrayAtomic data = getAtomicArray(index, m); - return data.getInt(0); - } - - public long getScalarLong(int index, StructureMembers.Member m) { - CDMArrayAtomic data = getAtomicArray(index, m); - return data.getLong(0); - } - - public char getScalarChar(int index, StructureMembers.Member m) { - CDMArrayAtomic data = getAtomicArray(index, m); - return data.getChar(0); - } - - /** - * Get member databuffer of type String or char. - * - * @param recnum get databuffer from the recnum-th StructureData of the ArrayStructure. Must be less than getSize(); - * @param m get databuffer from this StructureMembers.Member. Must be of type String or char. - * @return scalar String value - */ - public String getScalarString(int recnum, StructureMembers.Member m) { - Array data = m.getDataArray(); - return (String) data.getObject(recnum).toString(); - } - - public double[] getJavaArrayDouble(int recnum, StructureMembers.Member m) { - CDMArrayAtomic array = getAtomicArray(recnum, m); - if (!array.getBaseType().isNumericType()) - throw new IllegalArgumentException("Cannot convert non-numeric type"); - DapType atomtype = array.getBaseType(); - try { - List slices = CDMUtil.shapeToSlices(m.getShape()); - Object vector = data.read(slices); - return (double[]) LibTypeFcns.convertVector(DapType.FLOAT64, atomtype, vector); - } catch (DapException de) { - throw new UnsupportedOperationException(de); - } - } - - public float[] getJavaArrayFloat(int index, StructureMembers.Member m) { - CDMArrayAtomic array = getAtomicArray(index, m); - if (!array.getBaseType().isNumericType()) - throw new IllegalArgumentException("Cannot convert non-numeric type"); - DapType atomtype = array.getBaseType(); - try { - List slices = CDMUtil.shapeToSlices(m.getShape()); - Object vector = data.read(slices); - return (float[]) LibTypeFcns.convertVector(DapType.FLOAT32, atomtype, vector); - } catch (DapException de) { - throw new UnsupportedOperationException(de); - } - } - - public byte[] getJavaArrayByte(int index, StructureMembers.Member m) { - CDMArrayAtomic array = getAtomicArray(index, m); - if (!array.getBaseType().isNumericType()) - throw new IllegalArgumentException("Cannot convert non-numeric type"); - DapType atomtype = array.getBaseType(); - try { - List slices = CDMUtil.shapeToSlices(m.getShape()); - Object vector = data.read(slices); - return (byte[]) LibTypeFcns.convertVector(DapType.INT8, atomtype, vector); - } catch (DapException de) { - throw new UnsupportedOperationException(de); - } - } - - public short[] getJavaArrayShort(int index, StructureMembers.Member m) { - CDMArrayAtomic array = getAtomicArray(index, m); - if (!array.getBaseType().isNumericType()) - throw new IllegalArgumentException("Cannot convert non-numeric type"); - DapType atomtype = array.getBaseType(); - try { - List slices = CDMUtil.shapeToSlices(m.getShape()); - Object vector = data.read(slices); - return (short[]) LibTypeFcns.convertVector(DapType.INT16, atomtype, vector); - } catch (DapException de) { - throw new UnsupportedOperationException(de); - } - } - - public int[] getJavaArrayInt(int index, StructureMembers.Member m) { - CDMArrayAtomic array = getAtomicArray(index, m); - if (!array.getBaseType().isNumericType()) - throw new IllegalArgumentException("Cannot convert non-numeric type"); - DapType atomtype = array.getBaseType(); - try { - List slices = CDMUtil.shapeToSlices(m.getShape()); - Object vector = data.read(slices); - return (int[]) LibTypeFcns.convertVector(DapType.INT32, atomtype, vector); - } catch (DapException de) { - throw new UnsupportedOperationException(de); - } - } - - public long[] getJavaArrayLong(int index, StructureMembers.Member m) { - CDMArrayAtomic array = getAtomicArray(index, m); - if (!array.getBaseType().isNumericType()) - throw new IllegalArgumentException("Cannot convert non-numeric type"); - DapType atomtype = array.getBaseType(); - try { - List slices = CDMUtil.shapeToSlices(m.getShape()); - Object vector = data.read(slices); - return (long[]) LibTypeFcns.convertVector(DapType.INT64, atomtype, vector); - } catch (DapException de) { - throw new UnsupportedOperationException(de); - } - } - - public char[] getJavaArrayChar(int index, StructureMembers.Member m) { - CDMArrayAtomic array = getAtomicArray(index, m); - if (!array.getBaseType().isNumericType()) - throw new IllegalArgumentException("Cannot convert non-numeric type"); - DapType atomtype = array.getBaseType(); - try { - List slices = CDMUtil.shapeToSlices(m.getShape()); - Object vector = data.read(slices); - return (char[]) LibTypeFcns.convertVector(DapType.CHAR, atomtype, vector); - } catch (DapException de) { - throw new UnsupportedOperationException(de); - } - } - - public String[] getJavaArrayString(int index, StructureMembers.Member m) { - CDMArrayAtomic array = getAtomicArray(index, m); - DapType atomtype = array.getBaseType(); - try { - List slices = CDMUtil.shapeToSlices(m.getShape()); - Object vector = data.read(slices); - return (String[]) LibTypeFcns.convertVector(DapType.STRING, atomtype, vector); - } catch (DapException de) { - throw new UnsupportedOperationException(de); - } - } - - public ByteBuffer[] getJavaArrayOpaque(int index, StructureMembers.Member m) { - CDMArrayAtomic array = getAtomicArray(index, m); - DapType atomtype = array.getBaseType(); - try { - List slices = CDMUtil.shapeToSlices(m.getShape()); - Object vector = data.read(slices); - return (ByteBuffer[]) LibTypeFcns.convertVector(DapType.OPAQUE, atomtype, vector); - } catch (DapException de) { - throw new UnsupportedOperationException(de); - } - } - - // Non-atomic cases - - public StructureData getScalarStructure(int index, StructureMembers.Member m) { - if (m.getDataType() != DataType.STRUCTURE) - throw new ForbiddenConversionException("Atomic field cannot be converted to Structure"); - Array ca = memberArray(index, memberIndex(m)); - if (ca.getDataType() != DataType.STRUCTURE && ca.getDataType() != DataType.SEQUENCE) - throw new ForbiddenConversionException("Attempt to access non-structure member"); - CDMArrayStructure as = (CDMArrayStructure) ca; - return as.getStructureData(0); - } - - public ArrayStructure getArrayStructure(int index, StructureMembers.Member m) { - if (m.getDataType() != DataType.STRUCTURE) - throw new ForbiddenConversionException("Atomic field cannot be converted to Structure"); - Array dd = memberArray(index, memberIndex(m)); - if (dd.getDataType() != DataType.STRUCTURE && dd.getDataType() != DataType.SEQUENCE) - throw new ForbiddenConversionException("Attempt to access non-structure member"); - return (CDMArrayStructure) dd; - } - - public ArraySequence getArraySequence(StructureMembers.Member m) { - throw new UnsupportedOperationException("CDMArraySequence"); - } - - @Override - public Array copy() { - return this; // temporary - } - - ///////////////////////// - // Define API required by StructureDataA - - /** - * Key interface method coming in from StructureDataA. - * - * @param recno The instance # of the array of Structure instances - * @param m The member of interest in the Structure instance - * @return The ucar.ma2.Array instance corresponding to the instance. - *

        - * Hidden: friend of StructureDataA - */ - @Override - public ucar.ma2.Array getArray(int recno, StructureMembers.Member m) { - return (ucar.ma2.Array) memberArray(recno, memberIndex(m)); - } - - ////////////////////////////////////////////////// - // Utilities - - @Override - protected StructureData makeStructureData(ArrayStructure as, int index) { - if (super.sdata[index] == null) - super.sdata[index] = new StructureDataA(as, index); - return super.sdata[index]; - } - - /** - * Compute the StructureMembers object - * from a DapStructure. May need to recurse - * if a field is itself a Structure - * - * @param var The DapVariable to use to construct - * a StructureMembers object. - * @return The StructureMembers object for the given DapStructure - */ - static StructureMembers computemembers(DapVariable var) { - DapStructure ds = (DapStructure) var.getBaseType(); - StructureMembers sm = new StructureMembers(ds.getShortName()); - List fields = ds.getFields(); - for (int i = 0; i < fields.size(); i++) { - DapVariable field = fields.get(i); - DapType dt = field.getBaseType(); - DataType cdmtype = CDMTypeFcns.daptype2cdmtype(dt); - StructureMembers.Member m = - sm.addMember(field.getShortName(), "", null, cdmtype, CDMUtil.computeEffectiveShape(field.getDimensions())); - m.setDataParam(i); // So we can index into various lists - // recurse if this field is itself a structure - if (dt.getTypeSort().isStructType()) { - StructureMembers subsm = computemembers(field); - m.setStructureMembers(subsm); - } - } - return sm; - } - - /** - * @param recno The instance # of the array of Structure instances - * @param memberindex The member of interest in the Structure instance - * @return The ucar.ma2.Array instance corresponding to the instance. - */ - protected Array memberArray(int recno, int memberindex) { - DapVariable var = (DapVariable) this.getTemplate(); - DapStructure struct = (DapStructure) var.getBaseType(); - DapVariable field = struct.getField(memberindex); - DapType base = field.getBaseType(); - if (base == null) - throw new IllegalStateException("Unknown field type: " + field); - Object[] values = new Object[(int) field.getCount()]; - FieldArrays fs = records[recno]; - Array fa = fs.fields[memberindex]; - return fa; - } - - protected static int memberIndex(StructureMembers.Member m) { - return m.getDataParam(); - } - - protected CDMArrayAtomic getAtomicArray(int index, StructureMembers.Member m) { - Array dd = memberArray(index, memberIndex(m)); - if (dd.getDataType() != DataType.STRUCTURE && dd.getDataType() != DataType.SEQUENCE) - return (CDMArrayAtomic) dd; - throw new ForbiddenConversionException("Cannot convert structure to AtomicArray"); - } - -} diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMCompiler.java b/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMCompiler.java deleted file mode 100644 index e184710c24..0000000000 --- a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/CDMCompiler.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - - -package dap4.cdm.nc2; - -import dap4.cdm.NodeMap; -import dap4.core.data.DSP; -import dap4.core.dmr.DapDataset; -import dap4.core.dmr.DapNode; -import dap4.core.util.DapException; -import ucar.ma2.Array; -import ucar.nc2.CDMNode; -import ucar.nc2.Group; -import ucar.nc2.NetcdfFile; -import ucar.nc2.Variable; -import java.util.Map; - -/** - * The goal for the CDM compiler is produce a NetcdfDataset - * whose content comes from a DSP. In a sense it is the - * inverse of CDMDSP. - * - * Compilation implies two translations/wraps. - * 1. Create a set of CDMNodes corresponding to the - * relevant nodes in the DMR. - * 2. Create a set of CDM ucar.ma2.array objects that wrap the - * DataDataset object. - * Note that this compiler has nothing to do with D4DataCompiler. - */ - -public class CDMCompiler { - public static boolean DEBUG = false; - - ////////////////////////////////////////////////// - // Constants - - ////////////////////////////////////////////////// - // Instance variables - - protected DapNetcdfFile ncfile = null; - protected DSP dsp = null; - protected DapDataset dmr = null; - protected Group cdmroot = null; - protected NodeMap nodemap = null; - protected Map arraymap = null; - - ////////////////////////////////////////////////// - // Constructor(s) - - /** - * Constructor - * - * @param ncfile the target NetcdfDataset (as yet empty) - * @param dsp the DSP to be wrapped - */ - - public CDMCompiler(DapNetcdfFile ncfile, DSP dsp) throws DapException { - this.ncfile = ncfile; - this.dsp = dsp; - this.dmr = dsp.getDMR(); - } - - ////////////////////////////////////////////////// - // Accessors - - public NodeMap getNodeMap() { - return this.nodemap; - } - - public Map getArrayMap() { - return this.arraymap; - } - - public NetcdfFile getNetcdfFile() { - return this.ncfile; - } - - ////////////////////////////////////////////////// - // Compile DMR and Data into a NetcdfDataset - - /* Package access */ - void compile() throws DapException { - compileDMR(); - compileData(); - } - - ////////////////////////////////////////////////// - // Compile DMR->set of CDM nodes - - /** - * Convert a DMR to equivalent CDM meta-databuffer - * and populate a NetcdfDataset with it. - * - * @throws DapException - */ - - protected void compileDMR() throws DapException { - // Convert the DMR to CDM metadata - // and return a mapping from DapNode -> CDMNode - this.nodemap = new DMRToCDM(this.ncfile, this.dsp).create(); - } - - ////////////////////////////////////////////////// - // Compile Data->set of CDM Array objects - - /** - * Convert a DataDataset to equivalent CDM data (Array objects). - * and populate a NetcdfDataset with it. - * - * @throws DapException - */ - - protected void compileData() throws DapException { - // Convert the DMR to CDM metadata - // and return a mapping from Variable -> Array - this.arraymap = new DataToCDM(this.ncfile, this.dsp, this.nodemap).create(); - } - -} diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/DapNetcdfFile.java b/dap4/d4cdm/src/main/java/dap4/cdm/nc2/DapNetcdfFile.java deleted file mode 100644 index d6dca6ee9c..0000000000 --- a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/DapNetcdfFile.java +++ /dev/null @@ -1,279 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.cdm.nc2; - -import dap4.cdm.CDMUtil; -import dap4.core.data.DSP; -import dap4.core.data.DSPRegistry; -import dap4.core.util.DapContext; -import dap4.core.util.DapUtil; -import dap4.dap4lib.FileDSP; -import dap4.dap4lib.HttpDSP; -import dap4.dap4lib.XURI; -import ucar.ma2.*; -import ucar.nc2.NetcdfFile; -import ucar.nc2.ParsedSectionSpec; -import ucar.nc2.Variable; -import ucar.nc2.dataset.NetcdfDataset; -import ucar.nc2.iosp.IospHelper; -import ucar.nc2.util.CancelTask; -import java.io.IOException; -import java.net.URISyntaxException; -import java.nio.channels.WritableByteChannel; -import java.util.*; - -public class DapNetcdfFile extends NetcdfFile { - static final boolean DEBUG = false; - static final boolean PARSEDEBUG = false; - static final boolean MERGE = false; - - // NetcdfDataset enhancement to use: need only coord systems - static Set ENHANCEMENT = EnumSet.of(NetcdfDataset.Enhance.CoordSystems); - - ////////////////////////////////////////////////// - // Constants - static final String QUERYSTART = "?"; - static final String FRAGSTART = "#"; - - ////////////////////////////////////////////////// - // Type Declarations - - protected static class NullCancelTask implements CancelTask { - public boolean isCancel() { - return false; - } - - public boolean isDone() { - return false; - } - - public void setDone(boolean done) {} - - public void setError(String msg) {} - - public void setProgress(String msg, int progress) {} - - } - - ////////////////////////////////////////////////// - // Static variables - - protected static final NullCancelTask nullcancel = new NullCancelTask(); - - /** - * Define a map of known DSP classes. - */ - protected static DSPRegistry dspregistry = new DSPRegistry(); - - static { - dspregistry.register(FileDSP.class, DSPRegistry.FIRST); - dspregistry.register(HttpDSP.class, DSPRegistry.FIRST); - } - - ////////////////////////////////////////////////// - // Instance Variables - - protected boolean allowCompression = true; - protected boolean closed = false; - - protected String location = null; // original argument passed to open - protected String dsplocation = null; // what is passed to DSP - protected XURI xuri = null; - protected DSP dsp = null; - - protected CancelTask cancel = null; - - // protected NodeMap nodemap = null; unused? - - /** - * Originally, the array for a variable was stored - * using var.setCacheData(). However, that is illegal - * for Structures and Sequences, so (for now) - * we maintain a map variable->array. - */ - protected Map arraymap = new HashMap<>(); - - ////////////////////////////////////////////////// - // Constructor(s) - - /** - * Open a Dap4 connection or file via a D4DSP. - * - * @param location URL for the request. Note that if this is - * intended to send to a file oriented - * DSP, then if must be converted to an absolute path. - * @param cancelTask check if task is cancelled; may be null. - * @throws IOException - */ - public DapNetcdfFile(String location, CancelTask cancelTask) throws IOException { - super(); - this.location = location; - // Figure out the location: url vs path - XURI xuri; - try { - xuri = new XURI(location); - } catch (URISyntaxException use) { - throw new IOException(use); - } - boolean isfile = xuri.isFile(); - if (isfile) { - this.dsplocation = DapUtil.absolutize(xuri.getPath()); - } else { // Not a file url - this.dsplocation = xuri.assemble(XURI.URLBASE); - } - DapContext cxt = new DapContext(); - cancel = (cancelTask == null ? nullcancel : cancelTask); - // 1. Get and parse the constrained DMR and Data v-a-v URL - this.dsp = dspregistry.findMatchingDSP(location, cxt); // will set dsp context - if (this.dsp == null) - throw new IOException("No matching DSP: " + this.location); - this.dsp.setContext(cxt); - this.dsp.open(this.dsplocation); - - // 2. Construct an equivalent CDM tree and populate - // this NetcdfFile object. - CDMCompiler compiler = new CDMCompiler(this, this.dsp); - compiler.compile(); - // set the pseudo-location, otherwise we get a name that is full path. - setLocation(this.dsp.getDMR().getDataset().getShortName()); - finish(); - this.arraymap = compiler.getArrayMap(); - } - - /** - * Open a Dap4 connection - * - * @param url URL for the request. - * @throws IOException - */ - - public DapNetcdfFile(String url) throws IOException { - this(url, null); - } - - ////////////////////////////////////////////////// - // Close - - /** - * Close all resources (files, sockets, etc) associated with this file. - * - * @throws java.io.IOException if error when closing - */ - @Override - public synchronized void close() throws java.io.IOException { - if (closed) - return; - closed = true; // avoid circular calls - dsp = null; - // nodemap = null; unused? - } - - ////////////////////////////////////////////////// - // Accessors - - /** - * @return true if we can ask the server to do constraint processing - */ - public boolean isconstrainable() { - return true; - } - - public String getLocation() { - return location; - } - - public DSP getDSP() { - return this.dsp; - } - - ////////////////////////////////////////////////// - // Override NetcdfFile.readXXX Methods - - /** - * Do a bulk read on a list of Variables and - * return a corresponding list of Array that contains the results - * of a full read on each Variable. - * TODO: optimize to make only a single server call and cache the results. - * - * @param variables List of type Variable - * @return List of Array, one for each Variable in the input. - * @throws IOException if read error - */ - - @Override - public List readArrays(List variables) throws IOException { - List result = new ArrayList(); - for (Variable variable : variables) { - result.add(variable.read()); - } - return result; - } - - /** - * Read databuffer from a top level Variable - * and send databuffer to a WritableByteChannel. - * Experimental. - * - * @param v a top-level Variable - * @param section the section of databuffer to read. - * There must be a Range for each Dimension in the variable, - * in order. - * Note: no nulls allowed. IOSP may not modify. - * @param channel write databuffer to this WritableByteChannel - * @return the number of databuffer written to the channel - * @throws java.io.IOException if read error - * @throws ucar.ma2.InvalidRangeException if invalid section - */ - - @Override - public long readToByteChannel(Variable v, Section section, WritableByteChannel channel) - throws java.io.IOException, ucar.ma2.InvalidRangeException { - Array result = readData(v, section); - return IospHelper.transferData(result, channel); - } - - public Array readSection(String variableSection) throws IOException, InvalidRangeException { - ParsedSectionSpec cer = ParsedSectionSpec.parseVariableSection(this, variableSection); - return cer.v.read(cer.section); - } - - /** - * Primary read entry point. - * This is the primary implementor of Variable.read. - * - * @param cdmvar A top-level variable - * @param section the section of databuffer to read. - * There must be a Range for each Dimension in the variable, - * in order. Note: no nulls allowed. - * @return An Array object for accessing the databuffer - * @throws IOException if read error - * @throws InvalidRangeException if invalid section - */ - - @Override - protected Array readData(Variable cdmvar, Section section) throws IOException, InvalidRangeException { - // The section is applied wrt to the DataDMR, so it - // takes into account any constraint used in forming the dataDMR. - // We use the Section to produce a view of the underlying variable array. - - assert this.dsp != null; - Array result = arraymap.get(cdmvar); - if (result == null) - throw new IOException("No data for variable: " + cdmvar.getFullName()); - if (section != null) { - if (cdmvar.getRank() != section.getRank()) - throw new InvalidRangeException(String.format("Section rank != %s rank", cdmvar.getFullName())); - List ranges = section.getRanges(); - // Case out the possibilities - if (CDMUtil.hasVLEN(ranges)) { - ranges = ranges.subList(0, ranges.size() - 1);// may produce empty list - } - if (ranges.size() > 0 && !CDMUtil.isWhole(ranges, cdmvar)) - result = result.sectionNoReduce(ranges); - } - return result; - } -} diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/DataToCDM.java b/dap4/d4cdm/src/main/java/dap4/cdm/nc2/DataToCDM.java deleted file mode 100644 index 96b85a765d..0000000000 --- a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/DataToCDM.java +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - - -package dap4.cdm.nc2; - -import dap4.cdm.NodeMap; -import dap4.core.data.DSP; -import dap4.core.data.DataCursor; -import dap4.core.dmr.*; -import dap4.core.util.DapException; -import dap4.core.util.DapUtil; -import dap4.core.util.Index; -import dap4.core.util.Odometer; -import ucar.ma2.Array; -import ucar.nc2.Attribute; -import ucar.nc2.Group; -import ucar.nc2.Variable; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Create a set of CDM ucar.ma2.array objects that wrap a DSP. - */ - -public class DataToCDM { - public static boolean DEBUG = false; - - ////////////////////////////////////////////////// - // Constants - - protected static final int COUNTSIZE = 8; // databuffer as specified by the DAP4 spec - - protected static final String LBRACE = "{"; - protected static final String RBRACE = "}"; - - ////////////////////////////////////////////////// - // Instance variables - - protected DapNetcdfFile ncfile = null; - protected DSP dsp = null; - protected DapDataset dmr = null; - protected Group cdmroot = null; - protected Map arraymap = null; - protected NodeMap nodemap = null; - - ////////////////////////////////////////////////// - // Constructor(s) - - /** - * Constructor - * - * @param ncfile the target NetcdfDataset - * @param dsp the compiled D4 databuffer - */ - - public DataToCDM(DapNetcdfFile ncfile, DSP dsp, NodeMap nodemap) throws DapException { - this.ncfile = ncfile; - this.dsp = dsp; - this.dmr = dsp.getDMR(); - this.nodemap = nodemap; - this.cdmroot = ncfile.getRootGroup(); - arraymap = new HashMap(); - // Add endianness attribute to the group - /* - * ByteOrder remoteorder = ncfile.getDSP().getOrder(); - * String endianness = null; - * if(remoteorder != null) { - * if(remoteorder == ByteOrder.BIG_ENDIAN) - * endianness = "big"; - * else if(remoteorder == ByteOrder.BIG_ENDIAN) - * endianness = "little"; - * } - * if(endianness != null) { - * Attribute aendian = new Attribute(DapUtil.ENDIANATTRNAME, endianness); - * this.cdmroot.addAttribute(aendian); - * } - */ - } - - ////////////////////////////////////////////////// - // Compile DataCursor objects to ucar.ma2.Array objects - - /* package access */ - Map create() throws DapException { - // iterate over the variables represented in the DSP - List topvars = this.dmr.getTopVariables(); - Map map = null; - for (DapVariable var : topvars) { - DataCursor cursor = this.dsp.getVariableData(var); - Array array = createVar(cursor); - Variable cdmvar = (Variable) nodemap.get(var); - arraymap.put(cdmvar, array); - } - return this.arraymap; - } - - protected Array createVar(DataCursor data) throws DapException { - Array array = null; - DapVariable d4var = (DapVariable) data.getTemplate(); - switch (d4var.getBaseType().getTypeSort()) { - default: // atomic var - array = createAtomicVar(data); - break; - case Sequence: - array = createSequence(data); - break; - case Structure: - array = createStructure(data); - break; - } - if (d4var.isTopLevel() && this.dsp.getChecksumMode().enabled(dsp.getChecksumMode())) { - // transfer the checksum attribute - int csum = d4var.getChecksum(); - String scsum = String.format("0x%08x", csum); - Variable cdmvar = (Variable) nodemap.get(d4var); - Attribute acsum = new Attribute(DapUtil.CHECKSUMATTRNAME, scsum); - cdmvar.addAttribute(acsum); - } - return array; - } - - /** - * Create an Atomic Valued variable. - * - * @return An Array object wrapping d4var. - * @throws DapException - */ - protected CDMArrayAtomic createAtomicVar(DataCursor data) throws DapException { - CDMArrayAtomic array = new CDMArrayAtomic(data); - return array; - } - - /** - * Create an array of structures. WARNING: the underlying CDM code - * (esp. NetcdfDataset) apparently does not support nested - * structure arrays; so this code may throw an exception. - * - * @return A CDMArrayStructure for the databuffer for this struct. - * @throws DapException - */ - protected CDMArrayStructure createStructure(DataCursor data) throws DapException { - CDMArrayStructure arraystruct = new CDMArrayStructure(this.cdmroot, data); - DapVariable var = (DapVariable) data.getTemplate(); - DapStructure struct = (DapStructure) var.getBaseType(); - int nmembers = struct.getFields().size(); - List dimset = var.getDimensions(); - Odometer odom = Odometer.factory(DapUtil.dimsetToSlices(dimset)); - while (odom.hasNext()) { - Index index = odom.next(); - long offset = index.index(); - DataCursor[] cursors = (DataCursor[]) data.read(index); - DataCursor ithelement = cursors[0]; - for (int f = 0; f < nmembers; f++) { - DataCursor dc = (DataCursor) ithelement.readField(f); - Array afield = createVar(dc); - arraystruct.add(offset, f, afield); - } - } - return arraystruct; - } - - /** - * Create a sequence. WARNING: the underlying CDM code - * (esp. NetcdfDataset) apparently does not support nested - * sequence arrays. - * - * @param data the data underlying this sequence instance - * @return A CDMArraySequence for this instance - * @throws DapException - */ - - protected CDMArraySequence createSequence(DataCursor data) throws DapException { - CDMArraySequence arrayseq = new CDMArraySequence(this.cdmroot, data); - DapVariable var = (DapVariable) data.getTemplate(); - DapSequence template = (DapSequence) var.getBaseType(); - List dimset = var.getDimensions(); - long dimsize = DapUtil.dimProduct(dimset); - int nfields = template.getFields().size(); - Odometer odom = Odometer.factory(DapUtil.dimsetToSlices(dimset)); - while (odom.hasNext()) { - odom.next(); - DataCursor seq = ((DataCursor[]) data.read(odom.indices()))[0]; - long nrecords = seq.getRecordCount(); - for (int r = 0; r < nrecords; r++) { - DataCursor rec = seq.readRecord(r); - for (int f = 0; f < nfields; f++) { - DataCursor dc = rec.readField(f); - Array afield = createVar(dc); - arrayseq.add(r, f, afield); - } - } - } - return arrayseq; - } -} diff --git a/dap4/d4cdm/src/main/resources/META-INF/services/ucar.nc2.dataset.spi.NetcdfFileProvider b/dap4/d4cdm/src/main/resources/META-INF/services/ucar.nc2.dataset.spi.NetcdfFileProvider deleted file mode 100644 index 8acc1012f6..0000000000 --- a/dap4/d4cdm/src/main/resources/META-INF/services/ucar.nc2.dataset.spi.NetcdfFileProvider +++ /dev/null @@ -1 +0,0 @@ -dap4.cdm.nc2.DapNetcdfFileProvider \ No newline at end of file diff --git a/dap4/d4core/build.gradle b/dap4/d4core/build.gradle deleted file mode 100644 index 9e4a50d5b4..0000000000 --- a/dap4/d4core/build.gradle +++ /dev/null @@ -1,5 +0,0 @@ -// d4core has no dependencies -apply from: "$rootDir/gradle/any/java-library.gradle" - -dependencies { -} diff --git a/dap4/d4core/src/main/java/dap4/core/ce/parser/CEBisonParser.java b/dap4/d4core/src/main/java/dap4/core/ce/parser/CEBisonParser.java deleted file mode 100644 index 8a6e4be3d1..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/ce/parser/CEBisonParser.java +++ /dev/null @@ -1,1370 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ - -/* - * Skeleton implementation for Bison LALR(1) parsers in Java - * - * Copyright (C) 2007-2015 Free Software Foundation, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* - * As a special exception, you may create a larger work that contains - * part or all of the Bison parser skeleton and distribute that work - * under terms of your choice, so long as that work isn't itself a - * parser generator using the skeleton or a modified version thereof - * as a parser skeleton. Alternatively, if you modify or redistribute - * the parser skeleton itself, you may (at your option) remove this - * special exception, which will cause the skeleton and the resulting - * Bison output files to be licensed under the GNU General Public - * License without this special exception. - * - * This special exception was added by the Free Software Foundation in - * version 2.2 of Bison. - */ - -package dap4.core.ce.parser; -/* First part of user declarations. */ - -/* "CEBisonParser.java":37 */ /* lalr1.java:91 */ - -/* "CEBisonParser.java":39 */ /* lalr1.java:92 */ -/* "%code imports" blocks. */ -/* "ce.y":18 */ /* lalr1.java:93 */ - -import dap4.core.util.Slice; -import dap4.core.dmr.parser.ParseException; -import dap4.core.ce.CEAST; - -/* "CEBisonParser.java":47 */ /* lalr1.java:93 */ - -/** - * A Bison parser, automatically generated from ce.y. - * - * @author LALR (1) parser skeleton written by Paolo Bonzini. - */ -abstract class CEBisonParser { - /** Version number for the Bison executable that generated this parser. */ - public static final String bisonVersion = "3.0.4"; - - /** Name of the skeleton that generated this parser. */ - public static final String bisonSkeleton = "lalr1.java"; - - - /** - * True if verbose error messages are enabled. - */ - private boolean yyErrorVerbose = true; - - /** - * Return whether verbose error messages are enabled. - */ - public final boolean getErrorVerbose() { - return yyErrorVerbose; - } - - /** - * Set the verbosity of error messages. - * - * @param verbose True to request verbose error messages. - */ - public final void setErrorVerbose(boolean verbose) { - yyErrorVerbose = verbose; - } - - - - /** - * Communication interface between the scanner and the Bison-generated - * parser CEBisonParser. - */ - public interface Lexer { - /** Token returned by the scanner to signal the end of its input. */ - public static final int EOF = 0; - - /* Tokens. */ - /** Token number,to be returned by the scanner. */ - static final int NAME = 258; - /** Token number,to be returned by the scanner. */ - static final int STRING = 259; - /** Token number,to be returned by the scanner. */ - static final int LONG = 260; - /** Token number,to be returned by the scanner. */ - static final int DOUBLE = 261; - /** Token number,to be returned by the scanner. */ - static final int BOOLEAN = 262; - /** Token number,to be returned by the scanner. */ - static final int NOT = 263; - - - - /** - * Method to retrieve the semantic value of the last scanned token. - * - * @return the semantic value of the last scanned token. - */ - Object getLVal(); - - /** - * Entry point for the scanner. Returns the token identifier corresponding - * to the next token and prepares to return the semantic value - * of the token. - * - * @return the token identifier corresponding to the next token. - */ - int yylex() throws ParseException; - - /** - * Entry point for error reporting. Emits an error - * in a user-defined way. - * - * - * @param msg The string for the error message. - */ - void yyerror(String msg); - } - - /** - * The object doing lexical analysis for us. - */ - private Lexer yylexer; - - - - /** - * Instantiates the Bison-generated parser. - * - * @param yylexer The scanner that will supply tokens to the parser. - */ - public CEBisonParser(Lexer yylexer) { - - this.yylexer = yylexer; - - } - - private java.io.PrintStream yyDebugStream = System.err; - - /** - * Return the PrintStream on which the debugging output is - * printed. - */ - public final java.io.PrintStream getDebugStream() { - return yyDebugStream; - } - - /** - * Set the PrintStream on which the debug output is printed. - * - * @param s The stream that is used for debugging output. - */ - public final void setDebugStream(java.io.PrintStream s) { - yyDebugStream = s; - } - - private int yydebug = 0; - - /** - * Answer the verbosity of the debugging output; 0 means that all kinds of - * output from the parser are suppressed. - */ - public final int getDebugLevel() { - return yydebug; - } - - /** - * Set the verbosity of the debugging output; 0 means that all kinds of - * output from the parser are suppressed. - * - * @param level The verbosity level for debugging output. - */ - public final void setDebugLevel(int level) { - yydebug = level; - } - - /** - * Print an error message via the lexer. - * - * @param msg The error message. - */ - public final void yyerror(String msg) { - yylexer.yyerror(msg); - } - - - protected final void yycdebug(String s) { - if (yydebug > 0) - yyDebugStream.println(s); - } - - private final class YYStack { - private int[] stateStack = new int[16]; - - private Object[] valueStack = new Object[16]; - - public int size = 16; - public int height = -1; - - public final void push(int state, Object value) { - height++; - if (size == height) { - int[] newStateStack = new int[size * 2]; - System.arraycopy(stateStack, 0, newStateStack, 0, height); - stateStack = newStateStack; - - - Object[] newValueStack = new Object[size * 2]; - System.arraycopy(valueStack, 0, newValueStack, 0, height); - valueStack = newValueStack; - - size *= 2; - } - - stateStack[height] = state; - - valueStack[height] = value; - } - - public final void pop() { - pop(1); - } - - public final void pop(int num) { - // Avoid memory leaks... garbage collection is a white lie! - if (num > 0) { - java.util.Arrays.fill(valueStack, height - num + 1, height + 1, null); - - } - height -= num; - } - - public final int stateAt(int i) { - return stateStack[height - i]; - } - - public final Object valueAt(int i) { - return valueStack[height - i]; - } - - // Print the state stack on the debug stream. - public void print(java.io.PrintStream out) { - out.print("Stack now"); - - for (int i = 0; i <= height; i++) { - out.print(' '); - out.print(stateStack[i]); - } - out.println(); - } - } - - /** - * Returned by a Bison action in order to stop the parsing process and - * return success (true). - */ - public static final int YYACCEPT = 0; - - /** - * Returned by a Bison action in order to stop the parsing process and - * return failure (false). - */ - public static final int YYABORT = 1; - - - - /** - * Returned by a Bison action in order to start error recovery without - * printing an error message. - */ - public static final int YYERROR = 2; - - /** - * Internal return codes that are not supported for user semantic - * actions. - */ - private static final int YYERRLAB = 3; - private static final int YYNEWSTATE = 4; - private static final int YYDEFAULT = 5; - private static final int YYREDUCE = 6; - private static final int YYERRLAB1 = 7; - private static final int YYRETURN = 8; - - - private int yyerrstatus_ = 0; - - - /** - * Return whether error recovery is being done. In this state, the parser - * reads token until it reaches a known state, and then restarts normal - * operation. - */ - public final boolean recovering() { - return yyerrstatus_ == 0; - } - - /** - * Compute post-reduction state. - * - * @param yystate the current state - * @param yysym the nonterminal to push on the stack - */ - private int yy_lr_goto_state_(int yystate, int yysym) { - int yyr = yypgoto_[yysym - yyntokens_] + yystate; - if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate) - return yytable_[yyr]; - else - return yydefgoto_[yysym - yyntokens_]; - } - - private int yyaction(int yyn, YYStack yystack, int yylen) throws ParseException { - Object yyval; - - - /* - * If YYLEN is nonzero, implement the default value of the action: - * '$$ = $1'. Otherwise, use the top of the stack. - * - * Otherwise, the following line sets YYVAL to garbage. - * This behavior is undocumented and Bison - * users should not rely upon it. - */ - if (yylen > 0) - yyval = yystack.valueAt(yylen - 1); - else - yyval = yystack.valueAt(0); - - yy_reduce_print(yyn, yystack); - - switch (yyn) { - case 2: - if (yyn == 2) - /* "ce.y":103 */ /* lalr1.java:489 */ - { - yyval = constraint(((CEAST.NodeList) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 5: - if (yyn == 5) - /* "ce.y":113 */ /* lalr1.java:489 */ - { - yyval = nodelist(null, ((CEAST) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 6: - if (yyn == 6) - /* "ce.y":115 */ /* lalr1.java:489 */ - { - yyval = nodelist(((CEAST.NodeList) (yystack.valueAt(3 - (1)))), ((CEAST) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 9: - if (yyn == 9) - /* "ce.y":133 */ /* lalr1.java:489 */ - { - yyval = projection(((CEAST) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 10: - if (yyn == 10) - /* "ce.y":138 */ /* lalr1.java:489 */ - { - yyval = segmenttree(null, ((CEAST) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 11: - if (yyn == 11) - /* "ce.y":140 */ /* lalr1.java:489 */ - { - yyval = segmenttree(((CEAST) (yystack.valueAt(3 - (1)))), ((CEAST) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 12: - if (yyn == 12) - /* "ce.y":142 */ /* lalr1.java:489 */ - { - yyval = segmenttree(((CEAST) (yystack.valueAt(5 - (1)))), ((CEAST.NodeList) (yystack.valueAt(5 - (4))))); - } ; - break; - - - case 13: - if (yyn == 13) - /* "ce.y":144 */ /* lalr1.java:489 */ - { - yyval = segmenttree(((CEAST) (yystack.valueAt(4 - (1)))), ((CEAST.NodeList) (yystack.valueAt(4 - (3))))); - } ; - break; - - - case 14: - if (yyn == 14) - /* "ce.y":149 */ /* lalr1.java:489 */ - { - yyval = nodelist(null, ((CEAST) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 15: - if (yyn == 15) - /* "ce.y":151 */ /* lalr1.java:489 */ - { - yyval = nodelist(((CEAST.NodeList) (yystack.valueAt(3 - (1)))), ((CEAST) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 16: - if (yyn == 16) - /* "ce.y":156 */ /* lalr1.java:489 */ - { - yyval = segment(((String) (yystack.valueAt(1 - (1)))), null); - } ; - break; - - - case 17: - if (yyn == 17) - /* "ce.y":158 */ /* lalr1.java:489 */ - { - yyval = segment(((String) (yystack.valueAt(2 - (1)))), ((CEAST.SliceList) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 18: - if (yyn == 18) - /* "ce.y":163 */ /* lalr1.java:489 */ - { - yyval = slicelist(null, ((Slice) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 19: - if (yyn == 19) - /* "ce.y":165 */ /* lalr1.java:489 */ - { - yyval = slicelist(((CEAST.SliceList) (yystack.valueAt(2 - (1)))), ((Slice) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 20: - if (yyn == 20) - /* "ce.y":170 */ /* lalr1.java:489 */ - { - yyval = slice(null); - } ; - break; - - - case 21: - if (yyn == 21) - /* "ce.y":172 */ /* lalr1.java:489 */ - { - yyval = slice(((CEAST.SliceList) (yystack.valueAt(3 - (2))))); - } ; - break; - - - case 22: - if (yyn == 22) - /* "ce.y":177 */ /* lalr1.java:489 */ - { - yyval = slicelist(null, ((Slice) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 23: - if (yyn == 23) - /* "ce.y":179 */ /* lalr1.java:489 */ - { - yyval = slicelist(((CEAST.SliceList) (yystack.valueAt(3 - (1)))), ((Slice) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 24: - if (yyn == 24) - /* "ce.y":184 */ /* lalr1.java:489 */ - { - yyval = subslice(1, ((String) (yystack.valueAt(1 - (1)))), null, null); - } ; - break; - - - case 25: - if (yyn == 25) - /* "ce.y":186 */ /* lalr1.java:489 */ - { - yyval = subslice(2, ((String) (yystack.valueAt(3 - (1)))), ((String) (yystack.valueAt(3 - (3)))), null); - } ; - break; - - - case 26: - if (yyn == 26) - /* "ce.y":188 */ /* lalr1.java:489 */ - { - yyval = subslice(3, ((String) (yystack.valueAt(5 - (1)))), ((String) (yystack.valueAt(5 - (5)))), - ((String) (yystack.valueAt(5 - (3))))); - } ; - break; - - - case 27: - if (yyn == 27) - /* "ce.y":190 */ /* lalr1.java:489 */ - { - yyval = subslice(4, ((String) (yystack.valueAt(2 - (1)))), null, null); - } ; - break; - - - case 28: - if (yyn == 28) - /* "ce.y":192 */ /* lalr1.java:489 */ - { - yyval = subslice(5, ((String) (yystack.valueAt(4 - (1)))), null, ((String) (yystack.valueAt(4 - (3))))); - } ; - break; - - - case 30: - if (yyn == 30) - /* "ce.y":203 */ /* lalr1.java:489 */ - { - yyval = selection(((CEAST) (yystack.valueAt(3 - (1)))), ((CEAST) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 32: - if (yyn == 32) - /* "ce.y":209 */ /* lalr1.java:489 */ - { - yyval = logicalAnd(((CEAST) (yystack.valueAt(3 - (1)))), ((CEAST) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 33: - if (yyn == 33) - /* "ce.y":211 */ /* lalr1.java:489 */ - { - yyval = logicalNot(((CEAST) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 34: - if (yyn == 34) - /* "ce.y":216 */ /* lalr1.java:489 */ - { - yyval = predicate(((CEAST.Operator) (yystack.valueAt(3 - (2)))), ((CEAST) (yystack.valueAt(3 - (1)))), - ((CEAST) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 35: - if (yyn == 35) - /* "ce.y":218 */ /* lalr1.java:489 */ - { - yyval = predicaterange(((CEAST.Operator) (yystack.valueAt(5 - (2)))), - ((CEAST.Operator) (yystack.valueAt(5 - (4)))), ((CEAST) (yystack.valueAt(5 - (1)))), - ((CEAST) (yystack.valueAt(5 - (3)))), ((CEAST) (yystack.valueAt(5 - (5))))); - } ; - break; - - - case 36: - if (yyn == 36) - /* "ce.y":220 */ /* lalr1.java:489 */ - { - yyval = predicate(((CEAST.Operator) (yystack.valueAt(3 - (2)))), ((CEAST) (yystack.valueAt(3 - (1)))), - ((CEAST) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 37: - if (yyn == 37) - /* "ce.y":224 */ /* lalr1.java:489 */ - { - yyval = CEAST.Operator.LE; - } ; - break; - - - case 38: - if (yyn == 38) - /* "ce.y":225 */ /* lalr1.java:489 */ - { - yyval = CEAST.Operator.GE; - } ; - break; - - - case 39: - if (yyn == 39) - /* "ce.y":226 */ /* lalr1.java:489 */ - { - yyval = CEAST.Operator.LT; - } ; - break; - - - case 40: - if (yyn == 40) - /* "ce.y":227 */ /* lalr1.java:489 */ - { - yyval = CEAST.Operator.GT; - } ; - break; - - - case 41: - if (yyn == 41) - /* "ce.y":231 */ /* lalr1.java:489 */ - { - yyval = CEAST.Operator.EQ; - } ; - break; - - - case 42: - if (yyn == 42) - /* "ce.y":232 */ /* lalr1.java:489 */ - { - yyval = CEAST.Operator.NEQ; - } ; - break; - - - case 43: - if (yyn == 43) - /* "ce.y":233 */ /* lalr1.java:489 */ - { - yyval = CEAST.Operator.REQ; - } ; - break; - - - case 46: - if (yyn == 46) - /* "ce.y":239 */ /* lalr1.java:489 */ - { - yyval = ((CEAST) (yystack.valueAt(3 - (2)))); - } ; - break; - - - case 47: - if (yyn == 47) - /* "ce.y":245 */ /* lalr1.java:489 */ - { - yyval = null; - dimredef(((String) (yystack.valueAt(3 - (1)))), ((Slice) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 48: - if (yyn == 48) - /* "ce.y":249 */ /* lalr1.java:489 */ - { - yyval = fieldname(((String) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 49: - if (yyn == 49) - /* "ce.y":253 */ /* lalr1.java:489 */ - { - yyval = constant(CEAST.Constant.STRING, ((String) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 50: - if (yyn == 50) - /* "ce.y":254 */ /* lalr1.java:489 */ - { - yyval = constant(CEAST.Constant.LONG, ((String) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 51: - if (yyn == 51) - /* "ce.y":255 */ /* lalr1.java:489 */ - { - yyval = constant(CEAST.Constant.DOUBLE, ((String) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 52: - if (yyn == 52) - /* "ce.y":256 */ /* lalr1.java:489 */ - { - yyval = constant(CEAST.Constant.BOOLEAN, ((String) (yystack.valueAt(1 - (1))))); - } ; - break; - - - - /* "CEBisonParser.java":643 */ /* lalr1.java:489 */ - default: - break; - } - - yy_symbol_print("-> $$ =", yyr1_[yyn], yyval); - - yystack.pop(yylen); - yylen = 0; - - /* Shift the result of the reduction. */ - int yystate = yy_lr_goto_state_(yystack.stateAt(0), yyr1_[yyn]); - yystack.push(yystate, yyval); - return YYNEWSTATE; - } - - - /* - * Return YYSTR after stripping away unnecessary quotes and - * backslashes, so that it's suitable for yyerror. The heuristic is - * that double-quoting is unnecessary unless the string contains an - * apostrophe, a comma, or backslash (other than backslash-backslash). - * YYSTR is taken from yytname. - */ - private final String yytnamerr_(String yystr) { - if (yystr.charAt(0) == '"') { - StringBuffer yyr = new StringBuffer(); - strip_quotes: for (int i = 1; i < yystr.length(); i++) - switch (yystr.charAt(i)) { - case '\'': - case ',': - break strip_quotes; - - case '\\': - if (yystr.charAt(++i) != '\\') - break strip_quotes; - /* Fall through. */ - default: - yyr.append(yystr.charAt(i)); - break; - - case '"': - return yyr.toString(); - } - } else if (yystr.equals("$end")) - return "end of input"; - - return yystr; - } - - - /*--------------------------------. - | Print this symbol on YYOUTPUT. | - `--------------------------------*/ - - private void yy_symbol_print(String s, int yytype, Object yyvaluep) { - if (yydebug > 0) - yycdebug(s + (yytype < yyntokens_ ? " token " : " nterm ") + yytname_[yytype] + " (" - + (yyvaluep == null ? "(null)" : yyvaluep.toString()) + ")"); - } - - - /** - * Parse input from the scanner that was specified at object construction - * time. Return whether the end of the input was reached successfully. - * - * @return true if the parsing succeeds. Note that this does not - * imply that there were no syntax errors. - */ - public boolean parse() throws ParseException, ParseException - - { - - - - /* Lookahead and lookahead in internal form. */ - int yychar = yyempty_; - int yytoken = 0; - - /* State. */ - int yyn = 0; - int yylen = 0; - int yystate = 0; - YYStack yystack = new YYStack(); - int label = YYNEWSTATE; - - /* Error handling. */ - int yynerrs_ = 0; - - - /* Semantic value of the lookahead. */ - Object yylval = null; - - yycdebug("Starting parse\n"); - yyerrstatus_ = 0; - - /* Initialize the stack. */ - yystack.push(yystate, yylval); - - - - for (;;) - switch (label) { - /* - * New state. Unlike in the C/C++ skeletons, the state is already - * pushed when we come here. - */ - case YYNEWSTATE: - yycdebug("Entering state " + yystate + "\n"); - if (yydebug > 0) - yystack.print(yyDebugStream); - - /* Accept? */ - if (yystate == yyfinal_) - return true; - - /* Take a decision. First try without lookahead. */ - yyn = yypact_[yystate]; - if (yy_pact_value_is_default_(yyn)) { - label = YYDEFAULT; - break; - } - - /* Read a lookahead token. */ - if (yychar == yyempty_) { - - - yycdebug("Reading a token: "); - yychar = yylexer.yylex(); - yylval = yylexer.getLVal(); - - } - - /* Convert token to internal form. */ - if (yychar <= Lexer.EOF) { - yychar = yytoken = Lexer.EOF; - yycdebug("Now at end of input.\n"); - } else { - yytoken = yytranslate_(yychar); - yy_symbol_print("Next token is", yytoken, yylval); - } - - /* - * If the proper action on seeing token YYTOKEN is to reduce or to - * detect an error, take that action. - */ - yyn += yytoken; - if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yytoken) - label = YYDEFAULT; - - /* <= 0 means reduce or error. */ - else if ((yyn = yytable_[yyn]) <= 0) { - if (yy_table_value_is_error_(yyn)) - label = YYERRLAB; - else { - yyn = -yyn; - label = YYREDUCE; - } - } - - else { - /* Shift the lookahead token. */ - yy_symbol_print("Shifting", yytoken, yylval); - - /* Discard the token being shifted. */ - yychar = yyempty_; - - /* - * Count tokens shifted since error; after three, turn off error - * status. - */ - if (yyerrstatus_ > 0) - --yyerrstatus_; - - yystate = yyn; - yystack.push(yystate, yylval); - label = YYNEWSTATE; - } - break; - - /*-----------------------------------------------------------. - | yydefault -- do the default action for the current state. | - `-----------------------------------------------------------*/ - case YYDEFAULT: - yyn = yydefact_[yystate]; - if (yyn == 0) - label = YYERRLAB; - else - label = YYREDUCE; - break; - - /*-----------------------------. - | yyreduce -- Do a reduction. | - `-----------------------------*/ - case YYREDUCE: - yylen = yyr2_[yyn]; - label = yyaction(yyn, yystack, yylen); - yystate = yystack.stateAt(0); - break; - - /*------------------------------------. - | yyerrlab -- here on detecting error | - `------------------------------------*/ - case YYERRLAB: - /* If not already recovering from an error, report this error. */ - if (yyerrstatus_ == 0) { - ++yynerrs_; - if (yychar == yyempty_) - yytoken = yyempty_; - yyerror(yysyntax_error(yystate, yytoken)); - } - - - if (yyerrstatus_ == 3) { - /* - * If just tried and failed to reuse lookahead token after an - * error, discard it. - */ - - if (yychar <= Lexer.EOF) { - /* Return failure if at end of input. */ - if (yychar == Lexer.EOF) - return false; - } else - yychar = yyempty_; - } - - /* - * Else will try to reuse lookahead token after shifting the error - * token. - */ - label = YYERRLAB1; - break; - - /*-------------------------------------------------. - | errorlab -- error raised explicitly by YYERROR. | - `-------------------------------------------------*/ - case YYERROR: - - - /* - * Do not reclaim the symbols of the rule which action triggered - * this YYERROR. - */ - yystack.pop(yylen); - yylen = 0; - yystate = yystack.stateAt(0); - label = YYERRLAB1; - break; - - /*-------------------------------------------------------------. - | yyerrlab1 -- common code for both syntax error and YYERROR. | - `-------------------------------------------------------------*/ - case YYERRLAB1: - yyerrstatus_ = 3; /* Each real token shifted decrements this. */ - - for (;;) { - yyn = yypact_[yystate]; - if (!yy_pact_value_is_default_(yyn)) { - yyn += yyterror_; - if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_) { - yyn = yytable_[yyn]; - if (0 < yyn) - break; - } - } - - /* - * Pop the current state because it cannot handle the - * error token. - */ - if (yystack.height == 0) - return false; - - - yystack.pop(); - yystate = yystack.stateAt(0); - if (yydebug > 0) - yystack.print(yyDebugStream); - } - - if (label == YYABORT) - /* Leave the switch. */ - break; - - - - /* Shift the error token. */ - yy_symbol_print("Shifting", yystos_[yyn], yylval); - - yystate = yyn; - yystack.push(yyn, yylval); - label = YYNEWSTATE; - break; - - /* Accept. */ - case YYACCEPT: - return true; - - /* Abort. */ - case YYABORT: - return false; - } - } - - - - // Generate an error message. - private String yysyntax_error(int yystate, int tok) { - if (yyErrorVerbose) { - /* - * There are many possibilities here to consider: - * - If this state is a consistent state with a default action, - * then the only way this function was invoked is if the - * default action is an error action. In that case, don't - * check for expected tokens because there are none. - * - The only way there can be no lookahead present (in tok) is - * if this state is a consistent state with a default action. - * Thus, detecting the absence of a lookahead is sufficient to - * determine that there is no unexpected or expected token to - * report. In that case, just report a simple "syntax error". - * - Don't assume there isn't a lookahead just because this - * state is a consistent state with a default action. There - * might have been a previous inconsistent state, consistent - * state with a non-default action, or user semantic action - * that manipulated yychar. (However, yychar is currently out - * of scope during semantic actions.) - * - Of course, the expected token list depends on states to - * have correct lookahead information, and it depends on the - * parser not to perform extra reductions after fetching a - * lookahead from the scanner and before detecting a syntax - * error. Thus, state merging (from LALR or IELR) and default - * reductions corrupt the expected token list. However, the - * list is correct for canonical LR with one exception: it - * will still contain any token that will not be accepted due - * to an error action in a later state. - */ - if (tok != yyempty_) { - /* - * FIXME: This method of building the message is not compatible - * with internationalization. - */ - StringBuffer res = new StringBuffer("syntax error, unexpected "); - res.append(yytnamerr_(yytname_[tok])); - int yyn = yypact_[yystate]; - if (!yy_pact_value_is_default_(yyn)) { - /* - * Start YYX at -YYN if negative to avoid negative - * indexes in YYCHECK. In other words, skip the first - * -YYN actions for this state because they are default - * actions. - */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = yylast_ - yyn + 1; - int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; - int count = 0; - for (int x = yyxbegin; x < yyxend; ++x) - if (yycheck_[x + yyn] == x && x != yyterror_ && !yy_table_value_is_error_(yytable_[x + yyn])) - ++count; - if (count < 5) { - count = 0; - for (int x = yyxbegin; x < yyxend; ++x) - if (yycheck_[x + yyn] == x && x != yyterror_ && !yy_table_value_is_error_(yytable_[x + yyn])) { - res.append(count++ == 0 ? ", expecting " : " or "); - res.append(yytnamerr_(yytname_[x])); - } - } - } - return res.toString(); - } - } - - return "syntax error"; - } - - /** - * Whether the given yypact_ value indicates a defaulted state. - * - * @param yyvalue the value to check - */ - private static boolean yy_pact_value_is_default_(int yyvalue) { - return yyvalue == yypact_ninf_; - } - - /** - * Whether the given yytable_ - * value indicates a syntax error. - * - * @param yyvalue the value to check - */ - private static boolean yy_table_value_is_error_(int yyvalue) { - return yyvalue == yytable_ninf_; - } - - private static final byte yypact_ninf_ = -47; - private static final byte yytable_ninf_ = -1; - - /* - * YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - * STATE-NUM. - */ - private static final byte yypact_[] = yypact_init(); - - private static final byte[] yypact_init() { - return new byte[] {-47, 40, 18, -47, -5, 23, 17, -47, -47, 26, -47, -47, 15, -5, -47, 35, -47, 50, 21, 50, -1, -47, - -47, 27, -47, 41, -47, -5, -47, 50, -47, 34, 28, -47, -47, -47, -47, -47, 9, 9, -47, 48, 29, -47, -47, 53, -47, - 53, -47, 31, 50, -47, -47, 36, 9, 39, 42, 43, 44, 45, 9, 9, -47, 51, -47, 34, -47, -47, -47, -47, -47, -47, -47, - 33, -47, 53, 9, -47, -47}; - } - - /* - * YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - * Performed when YYTABLE does not specify something else to do. Zero - * means the default is an error. - */ - private static final byte yydefact_[] = yydefact_init(); - - private static final byte[] yydefact_init() { - return new byte[] {3, 0, 0, 1, 16, 0, 2, 5, 7, 9, 10, 8, 0, 17, 18, 0, 4, 0, 0, 0, 0, 29, 20, 0, 22, 24, 19, 0, 6, - 0, 11, 14, 0, 48, 49, 50, 51, 52, 0, 0, 30, 31, 0, 44, 45, 0, 21, 27, 47, 0, 0, 13, 33, 0, 0, 0, 39, 0, 40, 0, - 0, 0, 23, 25, 12, 15, 46, 32, 42, 37, 41, 38, 43, 34, 36, 28, 0, 26, 35}; - } - - /* YYPGOTO[NTERM-NUM]. */ - private static final byte yypgoto_[] = yypgoto_init(); - - private static final byte[] yypgoto_init() { - return new byte[] {-47, -47, -47, -47, 49, -47, -19, 32, 52, -47, -2, -47, 24, -46, -47, -47, -31, 0, -47, -42, -47, - -47, -47}; - } - - /* YYDEFGOTO[NTERM-NUM]. */ - private static final byte yydefgoto_[] = yydefgoto_init(); - - private static final byte[] yydefgoto_init() { - return new byte[] {-1, 1, 2, 6, 7, 8, 9, 32, 10, 13, 14, 23, 24, 25, 11, 40, 41, 60, 61, 42, 16, 43, 44}; - } - - /* - * YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - * positive, shift that token. If negative, reduce the rule whose - * number is the opposite. If YYTABLE_NINF, syntax error. - */ - private static final byte yytable_[] = yytable_init(); - - private static final byte[] yytable_init() { - return new byte[] {31, 63, 33, 34, 35, 36, 37, 52, 53, 12, 31, 26, 33, 34, 35, 36, 37, 38, 73, 74, 21, 4, 39, 67, 4, - 48, 15, 17, 5, 77, 22, 65, 39, 29, 78, 45, 50, 18, 19, 50, 3, 51, 46, 20, 64, 18, 19, 55, 56, 57, 58, 59, 56, 4, - 58, 27, 54, 47, 21, 68, 66, 49, 69, 70, 71, 72, 28, 75, 0, 62, 30, 0, 0, 76}; - } - - private static final byte yycheck_[] = yycheck_init(); - - private static final byte[] yycheck_init() { - return new byte[] {19, 47, 3, 4, 5, 6, 7, 38, 39, 14, 29, 13, 3, 4, 5, 6, 7, 18, 60, 61, 5, 3, 23, 54, 3, 27, 3, 10, - 10, 75, 15, 50, 23, 12, 76, 8, 8, 11, 12, 8, 0, 13, 15, 17, 13, 11, 12, 18, 19, 20, 21, 22, 19, 3, 21, 20, 8, - 16, 5, 20, 24, 29, 20, 20, 20, 20, 17, 16, -1, 45, 18, -1, -1, 73}; - } - - /* - * YYSTOS[STATE-NUM] -- The (internal number of the) accessing - * symbol of state STATE-NUM. - */ - private static final byte yystos_[] = yystos_init(); - - private static final byte[] yystos_init() { - return new byte[] {0, 26, 27, 0, 3, 10, 28, 29, 30, 31, 33, 39, 14, 34, 35, 3, 45, 10, 11, 12, 17, 5, 15, 36, 37, - 38, 35, 20, 29, 12, 33, 31, 32, 3, 4, 5, 6, 7, 18, 23, 40, 41, 44, 46, 47, 8, 15, 16, 35, 32, 8, 13, 41, 41, 8, - 18, 19, 20, 21, 22, 42, 43, 37, 38, 13, 31, 24, 41, 20, 20, 20, 20, 20, 44, 44, 16, 42, 38, 44}; - } - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ - private static final byte yyr1_[] = yyr1_init(); - - private static final byte[] yyr1_init() { - return new byte[] {0, 25, 26, 27, 27, 28, 28, 29, 29, 30, 31, 31, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, - 37, 37, 37, 37, 37, 38, 39, 40, 40, 40, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 44, 44, 44, 45, 46, 47, 47, 47, - 47}; - } - - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ - private static final byte yyr2_[] = yyr2_init(); - - private static final byte[] yyr2_init() { - return new byte[] {0, 2, 2, 0, 3, 1, 3, 1, 1, 1, 1, 3, 5, 4, 1, 3, 1, 2, 1, 2, 2, 3, 1, 3, 1, 3, 5, 2, 4, 1, 3, 1, - 3, 2, 3, 5, 3, 2, 2, 1, 1, 2, 2, 2, 1, 1, 3, 3, 1, 1, 1, 1, 1}; - } - - /* - * YYTOKEN_NUMBER[YYLEX-NUM] -- Internal symbol number corresponding - * to YYLEX-NUM. - */ - private static final short yytoken_number_[] = yytoken_number_init(); - - private static final short[] yytoken_number_init() { - return new short[] {0, 256, 257, 258, 259, 260, 261, 262, 44, 263, 59, 46, 123, 125, 91, 93, 58, 124, 33, 60, 61, - 62, 126, 40, 41}; - } - - /* - * YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - * First, the terminals, then, starting at \a yyntokens_, nonterminals. - */ - private static final String yytname_[] = yytname_init(); - - private static final String[] yytname_init() { - return new String[] {"$end", "error", "$undefined", "NAME", "STRING", "LONG", "DOUBLE", "BOOLEAN", "','", "NOT", - "';'", "'.'", "'{'", "'}'", "'['", "']'", "':'", "'|'", "'!'", "'<'", "'='", "'>'", "'~'", "'('", "')'", - "$accept", "constraint", "dimredeflist", "clauselist", "clause", "projection", "segmenttree", "segmentforest", - "segment", "slicelist", "slice", "subslicelist", "subslice", "index", "selection", "filter", "predicate", - "relop", "eqop", "primary", "dimredef", "fieldname", "constant", null}; - } - - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ - private static final short yyrline_[] = yyrline_init(); - - private static final short[] yyrline_init() { - return new short[] {0, 101, 101, 106, 108, 112, 114, 119, 120, 132, 137, 139, 141, 143, 148, 150, 155, 157, 162, - 164, 169, 171, 176, 178, 183, 185, 187, 189, 191, 195, 202, 207, 208, 210, 215, 217, 219, 224, 225, 226, 227, - 231, 232, 233, 237, 238, 239, 244, 249, 253, 254, 255, 256}; - } - - - // Report on the debug stream that the rule yyrule is going to be reduced. - private void yy_reduce_print(int yyrule, YYStack yystack) { - if (yydebug == 0) - return; - - int yylno = yyrline_[yyrule]; - int yynrhs = yyr2_[yyrule]; - /* Print the symbols being reduced, and their result. */ - yycdebug("Reducing stack by rule " + (yyrule - 1) + " (line " + yylno + "), "); - - /* The symbols being reduced. */ - for (int yyi = 0; yyi < yynrhs; yyi++) - yy_symbol_print(" $" + (yyi + 1) + " =", yystos_[yystack.stateAt(yynrhs - (yyi + 1))], - ((yystack.valueAt(yynrhs - (yyi + 1))))); - } - - /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ - private static final byte yytranslate_table_[] = yytranslate_table_init(); - - private static final byte[] yytranslate_table_init() { - return new byte[] {0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 18, 2, 2, 2, 2, 2, 2, 23, 24, 2, 2, 8, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 10, 19, 20, 21, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 14, 2, 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 12, 17, 13, 22, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 9}; - } - - private static final byte yytranslate_(int t) { - if (t >= 0 && t <= yyuser_token_number_max_) - return yytranslate_table_[t]; - else - return yyundef_token_; - } - - private static final int yylast_ = 73; - private static final int yynnts_ = 23; - private static final int yyempty_ = -2; - private static final int yyfinal_ = 3; - private static final int yyterror_ = 1; - private static final int yyerrcode_ = 256; - private static final int yyntokens_ = 25; - - private static final int yyuser_token_number_max_ = 263; - private static final int yyundef_token_ = 2; - - /* User implementation code. */ - /* Unqualified %code blocks. */ - /* "ce.y":24 */ /* lalr1.java:1066 */ - - - // Provide accessors for the parser lexer - Lexer getLexer() { - return this.yylexer; - } - - void setLexer(Lexer lexer) { - this.yylexer = lexer; - } - /* "ce.y":31 */ /* lalr1.java:1066 */ - // Abstract Parser actions - - abstract CEAST constraint(CEAST.NodeList clauses) throws ParseException; - - abstract CEAST projection(CEAST segmenttree) throws ParseException; - - abstract CEAST segment(String name, CEAST.SliceList slices) throws ParseException; - - abstract Slice slice(CEAST.SliceList subslices) throws ParseException; - - abstract Slice subslice(int state, String sfirst, String send, String sstride) throws ParseException; - - abstract void dimredef(String name, Slice slice) throws ParseException; - - abstract CEAST selection(CEAST projection, CEAST filter) throws ParseException; - - abstract CEAST logicalAnd(CEAST lhs, CEAST rhs) throws ParseException; - - abstract CEAST logicalNot(CEAST lhs) throws ParseException; - - abstract CEAST predicate(CEAST.Operator op, CEAST lhs, CEAST rhs) throws ParseException; - - abstract CEAST predicaterange(CEAST.Operator op1, CEAST.Operator op2, CEAST lhs, CEAST mid, CEAST rhs) - throws ParseException; - - abstract CEAST fieldname(String value) throws ParseException; - - abstract CEAST constant(CEAST.Constant sort, String value) throws ParseException; - - abstract CEAST segmenttree(CEAST tree, CEAST segment); - - abstract CEAST segmenttree(CEAST tree, CEAST.NodeList forest); - - abstract CEAST.NodeList nodelist(CEAST.NodeList list, CEAST ast); - - abstract CEAST.SliceList slicelist(CEAST.SliceList list, Slice slice); - - - /* "CEBisonParser.java":1350 */ /* lalr1.java:1066 */ - -} - diff --git a/dap4/d4core/src/main/java/dap4/core/data/ChecksumMode.java b/dap4/d4core/src/main/java/dap4/core/data/ChecksumMode.java deleted file mode 100644 index 5554e36c42..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/data/ChecksumMode.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.data; - -/** - * Define possible checksum modes: - * - */ -public enum ChecksumMode { - NONE, // => serialized data has no checksums - IGNORE, // => skip, but ignore any checksumming (client side) - DMR, // => compute checksums for DMR requests only - DAP, // => compute checksums for Data requests only - ALL; // => compute checksums for both kinds of requestsNONE, DMR, DAP, ALL; - - /** - * Return true if the ckm mode is allowed with this, false otherwise - * - * @param ckm - * @return true, if enabled - */ - public boolean enabled(ChecksumMode ckm) { - if (ckm == null || this == NONE) - return false; - if (this == ckm) - return true; - if (this == ALL) - return true; - return false; - } - - public static ChecksumMode modeFor(String s) { - if (s == null || s.length() == 0) - return DAP; - for (ChecksumMode mode : values()) { - if (mode.name().equalsIgnoreCase(s)) - return mode; - } - return null; - } -} diff --git a/dap4/d4core/src/main/java/dap4/core/data/Constraint.java b/dap4/d4core/src/main/java/dap4/core/data/Constraint.java deleted file mode 100644 index 271e341d78..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/data/Constraint.java +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.data; - -/** - * This interface is intended to serve - * as a standin for some kind of constraint. - */ - -public interface Constraint { - // Deliberately empty -} diff --git a/dap4/d4core/src/main/java/dap4/core/data/DSP.java b/dap4/d4core/src/main/java/dap4/core/data/DSP.java deleted file mode 100644 index 7715ee5a35..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/data/DSP.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.data; - -import dap4.core.dmr.DapDataset; -import dap4.core.dmr.DapVariable; -import dap4.core.util.DapContext; -import dap4.core.util.DapException; -import java.io.IOException; -import java.nio.ByteOrder; - -public interface DSP { - /* - * All implementing classes must implement: - * 1. a static dspMatch() function - * 2. A parameterless constructor - */ - - /** - * Determine if a path refers to an object processable by this DSP - * - * @param path - * @param context - * @return true if this path can be processed by an instance of this DSP - */ - public boolean dspMatch(String path, DapContext context); - - /** - * @param path It is assumed that the path - * is appropriate to the dsp - * E.g. an absolute path or a url - * @return DSP wrapping the path source - * @throws dap4.core.util.DapException - */ - public DSP open(String path) throws DapException; - - public void close() throws IOException; - - public String getLocation(); - - public DSP setLocation(String location); - - public Object getContext(); - - public void setContext(DapContext cxt); - - public DapDataset getDMR() throws dap4.core.util.DapException; - - public DataCursor getVariableData(DapVariable var) throws DapException; - - public ByteOrder getOrder(); - - public ChecksumMode getChecksumMode(); - -} diff --git a/dap4/d4core/src/main/java/dap4/core/data/DataCursor.java b/dap4/d4core/src/main/java/dap4/core/data/DataCursor.java deleted file mode 100644 index 2da280d972..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/data/DataCursor.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.data; - -import dap4.core.dmr.DapNode; -import dap4.core.util.DapException; -import dap4.core.util.Index; -import dap4.core.util.Slice; -import java.util.List; - -/** - * For data access, we adopt a cursor model. - * This comes from database technology where a - * cursor object is used to walk over the - * results of a database query. Here the cursor - * walks the underlying data and stores enough - * state to extract data depending on its - * sort. The cursor may (or may not) contain - * internal subclasses to track various kinds of - * state. - */ - -public interface DataCursor { - ////////////////////////////////////////////////// - // Kinds of Cursor - - public static enum Scheme { - ATOMIC, STRUCTARRAY, STRUCTURE, SEQARRAY, SEQUENCE, RECORD; - - public boolean isCompoundArray() { - return this == STRUCTARRAY || this == SEQARRAY; - } - } - - ////////////////////////////////////////////////// - // API - - public Scheme getScheme(); - - public DSP getDSP(); - - public DapNode getTemplate(); - - public Index getIndex() throws DapException; - - public boolean isScalar(); - - public boolean isField(); - - // Return null if top-level, else return the struct/seq from which this is derived - public DataCursor getContainer(); - - ////////////////////////////////////////////////// - // Atomic Data Management - - // As a rule, only one will be fully implemented and the other written - // to use the fully implemented one. - // Returns: - // atomic - array of data values - // structure/sequence - DataCursor[] - // Even if the result is a scalar, - // a 1-element array will be returned. - - public Object read(List slices) throws DapException; - - public Object read(Index index) throws DapException; - - ////////////////////////////////////////////////// - // Sequence record management - // assert scheme == SEQUENCE - - public long getRecordCount() throws DapException; - - public DataCursor readRecord(long i) throws DapException; - - public long getRecordIndex() throws DapException; // assert scheme == RECORD - - ////////////////////////////////////////////////// - // field management - // assert scheme == STRUCTURE | scheme == RECORD - - public int fieldIndex(String name) throws DapException; // Convert a name to an index - - public DataCursor readField(int fieldindex) throws DapException; -} diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/AnnotatedNode.java b/dap4/d4core/src/main/java/dap4/core/dmr/AnnotatedNode.java deleted file mode 100644 index d1fc804b04..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/AnnotatedNode.java +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.dmr; - -public interface AnnotatedNode { - public void annotate(Object key, Object value); - - public Object annotation(Object key); - - public void clearAnnotations(); -} diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapMap.java b/dap4/d4core/src/main/java/dap4/core/dmr/DapMap.java deleted file mode 100644 index af61d4e1f7..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/DapMap.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.dmr; - -/** - * This class holds a reference to a map variable. - */ - -public class DapMap extends DapNode { - DapVariable actualvar = null; - - ////////////////////////////////////////////////// - // Constructors - - public DapMap() { - super(); - } - - public DapMap(DapVariable var) { - this(); - setVariable(var); - } - - ////////////////////////////////////////////////// - // Get/set - - public DapVariable getVariable() { - return actualvar; - } - - public void setVariable(DapVariable var) { - this.actualvar = var; - } - - ////////////////////////////////////////////////// - // Overrides - - public String getShortName() { - if (actualvar != null) - return actualvar.getShortName(); - return null; - } - - public String getFQN() { - if (actualvar != null) - return actualvar.getFQN(); - return null; - } - -} // class DapMap - diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapXML.java b/dap4/d4core/src/main/java/dap4/core/dmr/DapXML.java deleted file mode 100644 index 74256c63b5..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/DapXML.java +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.dmr; - -import dap4.core.util.DapException; -import org.w3c.dom.Node; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * This class is not intended to be a full org.w3c.DOM - * implementation. Rather it stores more-or-less - * equivalent information in a more AST like form. - */ - -public class DapXML { - ////////////////////////////////////////////////// - // Types - - public static class XMLList extends ArrayList { - } - - // This corresponds to a subset of the org.w3c.dom.Node - // nodetype codes. - - public static enum NodeType { - ELEMENT(Node.ELEMENT_NODE), ATTRIBUTE(Node.ATTRIBUTE_NODE), TEXT(Node.TEXT_NODE), CDATA( - Node.CDATA_SECTION_NODE), COMMENT( - Node.COMMENT_NODE), DOCUMENT(Node.DOCUMENT_NODE), DOCTYPE(Node.DOCUMENT_TYPE_NODE); - - private short w3c_nodetype; - - private NodeType(short nodetype) { - this.w3c_nodetype = nodetype; - } - - public short getW3CNodeType() { - return w3c_nodetype; - } - } - - ////////////////////////////////////////////////// - // Instance Variables - - protected String name = null; - protected DapXML parent = null; - - // Applies to all (or almost all) node types - protected NodeType nodetype = null; - protected String prefix = null; // namespace prefix or null - - // case NodeType.ELEMENT - protected List elements = new ArrayList(); - protected Map xmlattributes = new HashMap(); - - // case NodeType.ATTRIBUTE - protected String value = null; // for attribute nodes - - // case NodeType.TEXT - // case NodeType.CDATA - // case NodeType.COMMENT - protected String text = null; // for text or cdata nodes - - // case NodeType.DOCUMENT - // case NodeType.DOCTYPE - // unused - - ////////////////////////////////////////////////// - // Constructor(s) - - public DapXML() { - super(); - } - - public DapXML(NodeType nodetype, String fullname) { - setNodeType(nodetype); - // Decompose name into prefix plus short name - int i = fullname.indexOf(':'); - if (i >= 0) { - this.prefix = fullname.substring(i); - fullname = fullname.substring(i + 1, fullname.length()); - if (this.prefix.length() == 0) - this.prefix = null; - } - setName(fullname); - } - - ////////////////////////////////////////////////// - // Get/Set - - public String getName() { - return this.name; - } - - public void setName(String name) { - this.name = name; - } - - public NodeType getNodeType() { - return nodetype; - } - - public void setNodeType(NodeType nodetype) { - this.nodetype = nodetype; - this.prefix = null; - String fullname = null; - switch (nodetype) { - case COMMENT: - fullname = "#comment"; - break; - case TEXT: - fullname = "#text"; - break; - case DOCUMENT: - fullname = "#document"; - break; - case CDATA: - fullname = "#cdata-section"; - break; - default: - break; - } - setName(fullname); - } - - public String getLocalName() { - return getName(); - } - - public void setLocalName(String localname) { - setName(localname); - } - - public String getPrefix() { - return prefix; - } - - public void setPrefix(String prefix) { - this.prefix = prefix; - } - - public DapXML getParent() { - return this.parent; - } - - public void setParent(DapXML parent) { - this.parent = parent; - } - - public List getElements() { - return this.elements; - } - - public void addElement(DapXML child) { - if (elements == null) - this.elements = new ArrayList(); - elements.add(child); - child.setParent(this); - } - - public Map getXMLAttributes() { - return xmlattributes; - } - - public void addXMLAttribute(DapXML attr) throws DapException { - if (xmlattributes == null) - this.xmlattributes = new HashMap(); - if (xmlattributes.containsKey(attr.getName())) - throw new DapException("DapXML: attempt to add duplicate xml attribute: " + attr.getName()); - xmlattributes.put(attr.getName(), attr); - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } - - public String toString() { - StringBuilder buf = new StringBuilder(); - stringify(0, buf); - return buf.toString(); - } - - protected void stringify(int depth, StringBuilder buf) { - switch (this.nodetype) { - case ELEMENT: - indent(depth, buf); - buf.append(this.name); - for (Map.Entry entry : xmlattributes.entrySet()) { - buf.append(' '); - entry.getValue().stringify(depth + 1, buf); - } - buf.append(">\n"); - for (DapXML sub : elements) { - sub.stringify(depth + 1, buf); - } - buf.append("\n"); - break; - case ATTRIBUTE: - buf.append(this.name); - buf.append('='); - buf.append('"'); - buf.append(this.value); - buf.append('"'); - break; - case TEXT: - indent(depth, buf); - buf.append(this.text); - buf.append("\n"); - break; - case CDATA: - indent(depth, buf); - buf.append("\n"); - break; - case COMMENT: - indent(depth, buf); - buf.append("\n"); - break; - case DOCUMENT: - case DOCTYPE: - break; - } - } - - protected void indent(int n, StringBuilder buf) { - for (int i = 0; i < n; i++) { - buf.append(' '); - } - } - -} diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Bison.java b/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Bison.java deleted file mode 100644 index 245bfffc17..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Bison.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -/** - * Define Bison specific decls. - */ - -package dap4.core.dmr.parser.bison; - -import org.xml.sax.Locator; - -public abstract class Bison { - public static class Position { - public Locator location; - - public Position(Locator loc) { - this.location = loc; - } - - public String toString() { - return location.getLineNumber() + ":" + location.getColumnNumber(); - } - - @Override - public boolean equals(Object o) { - if (!(o instanceof Position)) - return false; - Position po = (Position) o; - return po.location.getLineNumber() == po.location.getLineNumber() - && po.location.getColumnNumber() == po.location.getColumnNumber(); - } - - @Override - public int hashCode() { - return location.getLineNumber() << 20 | location.getColumnNumber(); - } - } - - /** - * A class defining a pair of positions. Positions, defined by the - * Bison.Position class, denote a point in the input. - * Locations represent a part of the input through the beginning - * and ending positions. - */ - public static class Location { - /** - * The first, inclusive, position in the range. - */ - public Bison.Position begin; - - /** - * The first position beyond the range. - */ - public Bison.Position end; - - /** - * Create a Location denoting an empty range located at - * a given point. - * - * @param loc The position at which the range is anchored. - */ - public Location(Bison.Position loc) { - this.begin = this.end = loc; - } - - /** - * Create a Location from the endpoints of the range. - * - * @param begin The first position included in the range. - * @param end The first position beyond the range. - */ - public Location(Bison.Position begin, Bison.Position end) { - this.begin = begin; - this.end = end; - } - - /** - * Print a representation of the location. For this to be correct, - * Bison.Position should override the equals - * method. - */ - public String toString() { - if (begin.equals(end)) - return begin.toString(); - else - return begin.toString() + "-" + end.toString(); - } - } - -} diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4Actions.java b/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4Actions.java deleted file mode 100644 index 6843d415a9..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4Actions.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.dmr.parser.bison; - -import dap4.core.dmr.DapXML; -import dap4.core.dmr.parser.ParseException; -import dap4.core.util.DapException; -import dap4.core.util.DapSort; -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - -/** - * The role of this class is as follows: - * 1. Define the abstract action procedures - * 2. Define useful common constants - * 3. Define useful common utility procedures - */ - -public abstract class Dap4Actions extends Dap4EventHandler { - - ////////////////////////////////////////////////// - // Constants - - static final float DAPVERSION = 4.0f; - static final float DMRVERSION = 1.0f; - - static final int RULENULL = 0; - static final int RULEDIMREF = 1; - static final int RULEMAPREF = 2; - static final int RULEVAR = 3; - static final int RULEMETADATA = 4; - - static final String[] RESERVEDTAGS = new String[] {"_edu.ucar"}; - - static final BigInteger BIG_INT64_MAX = BigInteger.valueOf(Long.MAX_VALUE); - - static final DapSort[] METADATASCOPES = new DapSort[] {DapSort.DATASET, DapSort.GROUP, DapSort.DIMENSION, DapSort.MAP, - DapSort.VARIABLE, DapSort.STRUCTURE, DapSort.SEQUENCE, DapSort.ATTRIBUTESET}; - - ////////////////////////////////////////////////// - // Type Decls - - // Predefined map types - static class XMLAttributeMap extends HashMap { - } - - static class NamespaceList extends ArrayList { - } - - - ////////////////////////////////////////////////// - // Instance variables - - ////////////////////////////////////////////////// - // Constructor(s) - - public Dap4Actions() {} - - /////////////////////////////////////////////////// - // Non-abstract parser actions - - XMLAttributeMap xml_attribute_map() throws DapException { - return new XMLAttributeMap(); - } - - XMLAttributeMap xml_attribute_map(XMLAttributeMap map, SaxEvent token) throws DapException { - assert (map != null && token != null); - if (map.containsKey(token.name)) - throw new DapException("XML attribute: duplicate xml attribute: " + token.name); - map.put(token.name.toLowerCase(), token); - return map; - } - - NamespaceList namespace_list() throws DapException { - return new NamespaceList(); - } - - NamespaceList namespace_list(NamespaceList list, SaxEvent token) throws DapException { - assert (list != null); - if (token != null && !list.contains(token.name)) - list.add(token.name); - return list; - } - - DapXML createxmltext(String text) throws DapException { - DapXML node = new DapXML(DapXML.NodeType.TEXT, null); - node.setText(text); - return node; - } - - DapXML createxmlelement(SaxEvent open, XMLAttributeMap map) throws DapException { - DapXML node = new DapXML(DapXML.NodeType.ELEMENT, open.name); - for (Map.Entry entry : map.entrySet()) { - SaxEvent att = entry.getValue(); - DapXML a = new DapXML(DapXML.NodeType.ATTRIBUTE, att.name); - a.addXMLAttribute(a); - } - return node; - } - - ////////////////////////////////////////////////// - // Abstract (subclass defined) parser actions - - abstract void enterdataset(XMLAttributeMap attrs) throws ParseException; - - abstract void leavedataset() throws ParseException; - - abstract void entergroup(XMLAttributeMap attrs) throws ParseException; - - abstract void leavegroup() throws ParseException; - - abstract void enterenumdef(XMLAttributeMap attrs) throws ParseException; - - abstract void leaveenumdef() throws ParseException; - - abstract void enumconst(SaxEvent name, SaxEvent value) throws ParseException; - - abstract void enterdimdef(XMLAttributeMap attrs) throws ParseException; - - abstract void leavedimdef() throws ParseException; - - abstract void dimref(SaxEvent nameorsize) throws ParseException; - - abstract void enteratomicvariable(SaxEvent open, XMLAttributeMap attrs) throws ParseException; - - abstract void leaveatomicvariable(SaxEvent close) throws ParseException; - - abstract void enterenumvariable(XMLAttributeMap attrs) throws ParseException; - - abstract void leaveenumvariable(SaxEvent close) throws ParseException; - - abstract void entermap(SaxEvent name) throws ParseException; - - abstract void leavemap() throws ParseException; - - abstract void enterstructurevariable(XMLAttributeMap attrs) throws ParseException; - - abstract void leavestructurevariable(SaxEvent close) throws ParseException; - - abstract void entersequencevariable(XMLAttributeMap attrs) throws ParseException; - - abstract void leavesequencevariable(SaxEvent close) throws ParseException; - - abstract void enteratomicattribute(XMLAttributeMap attrs, NamespaceList nslist) throws ParseException; - - abstract void leaveatomicattribute() throws ParseException; - - abstract void entercontainerattribute(XMLAttributeMap attrs, NamespaceList nslist) throws ParseException; - - abstract void leavecontainerattribute() throws ParseException; - - abstract void value(SaxEvent value) throws ParseException; - - abstract void value(String value) throws ParseException; - - abstract void entererror(XMLAttributeMap attrs) throws ParseException; - - abstract void leaveerror() throws ParseException; - - abstract void errormessage(String value) throws ParseException; - - abstract void errorcontext(String value) throws ParseException; - - abstract void errorotherinfo(String value) throws ParseException; - - abstract void otherxml(XMLAttributeMap attrs, DapXML root) throws ParseException; - - abstract DapXML.XMLList xml_body(DapXML.XMLList body, DapXML elemortext) throws ParseException; - - abstract DapXML element_or_text(SaxEvent open, XMLAttributeMap xmlattrlist, DapXML.XMLList body, SaxEvent close) - throws ParseException; - - abstract DapXML xmltext(SaxEvent text) throws ParseException; - - abstract String textstring(String prefix, SaxEvent text) throws ParseException; - -}// class Dap4Actions diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4BisonParser.java b/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4BisonParser.java deleted file mode 100644 index c35758d2dd..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4BisonParser.java +++ /dev/null @@ -1,1954 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ - -/* - * Skeleton implementation for Bison LALR(1) parsers in Java - * - * Copyright (C) 2007-2015 Free Software Foundation, Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* - * As a special exception, you may create a larger work that contains - * part or all of the Bison parser skeleton and distribute that work - * under terms of your choice, so long as that work isn't itself a - * parser generator using the skeleton or a modified version thereof - * as a parser skeleton. Alternatively, if you modify or redistribute - * the parser skeleton itself, you may (at your option) remove this - * special exception, which will cause the skeleton and the resulting - * Bison output files to be licensed under the GNU General Public - * License without this special exception. - * - * This special exception was added by the Free Software Foundation in - * version 2.2 of Bison. - */ - -package dap4.core.dmr.parser.bison; -/* First part of user declarations. */ - -/* "Dap4BisonParser.java":37 */ /* lalr1.java:91 */ - -/* "Dap4BisonParser.java":39 */ /* lalr1.java:92 */ -/* "%code imports" blocks. */ -/* "dap4.y":17 */ /* lalr1.java:93 */ - -import dap4.core.util.DapException; -import dap4.core.dmr.DapXML; - -/* "Dap4BisonParser.java":46 */ /* lalr1.java:93 */ - -/** - * A Bison parser, automatically generated from dap4.y. - * - * @author LALR (1) parser skeleton written by Paolo Bonzini. - */ -abstract class Dap4BisonParser extends Dap4Actions { - /** Version number for the Bison executable that generated this parser. */ - public static final String bisonVersion = "3.0.4"; - - /** Name of the skeleton that generated this parser. */ - public static final String bisonSkeleton = "lalr1.java"; - - - /** - * True if verbose error messages are enabled. - */ - private boolean yyErrorVerbose = true; - - /** - * Return whether verbose error messages are enabled. - */ - public final boolean getErrorVerbose() { - return yyErrorVerbose; - } - - /** - * Set the verbosity of error messages. - * - * @param verbose True to request verbose error messages. - */ - public final void setErrorVerbose(boolean verbose) { - yyErrorVerbose = verbose; - } - - - - /** - * Communication interface between the scanner and the Bison-generated - * parser Dap4BisonParser. - */ - public interface Lexer { - /** Token returned by the scanner to signal the end of its input. */ - public static final int EOF = 0; - - /* Tokens. */ - /** Token number,to be returned by the scanner. */ - static final int DATASET_ = 258; - /** Token number,to be returned by the scanner. */ - static final int _DATASET = 259; - /** Token number,to be returned by the scanner. */ - static final int GROUP_ = 260; - /** Token number,to be returned by the scanner. */ - static final int _GROUP = 261; - /** Token number,to be returned by the scanner. */ - static final int ENUMERATION_ = 262; - /** Token number,to be returned by the scanner. */ - static final int _ENUMERATION = 263; - /** Token number,to be returned by the scanner. */ - static final int ENUMCONST_ = 264; - /** Token number,to be returned by the scanner. */ - static final int _ENUMCONST = 265; - /** Token number,to be returned by the scanner. */ - static final int NAMESPACE_ = 266; - /** Token number,to be returned by the scanner. */ - static final int _NAMESPACE = 267; - /** Token number,to be returned by the scanner. */ - static final int DIMENSION_ = 268; - /** Token number,to be returned by the scanner. */ - static final int _DIMENSION = 269; - /** Token number,to be returned by the scanner. */ - static final int DIM_ = 270; - /** Token number,to be returned by the scanner. */ - static final int _DIM = 271; - /** Token number,to be returned by the scanner. */ - static final int ENUM_ = 272; - /** Token number,to be returned by the scanner. */ - static final int _ENUM = 273; - /** Token number,to be returned by the scanner. */ - static final int MAP_ = 274; - /** Token number,to be returned by the scanner. */ - static final int _MAP = 275; - /** Token number,to be returned by the scanner. */ - static final int STRUCTURE_ = 276; - /** Token number,to be returned by the scanner. */ - static final int _STRUCTURE = 277; - /** Token number,to be returned by the scanner. */ - static final int SEQUENCE_ = 278; - /** Token number,to be returned by the scanner. */ - static final int _SEQUENCE = 279; - /** Token number,to be returned by the scanner. */ - static final int VALUE_ = 280; - /** Token number,to be returned by the scanner. */ - static final int _VALUE = 281; - /** Token number,to be returned by the scanner. */ - static final int ATTRIBUTE_ = 282; - /** Token number,to be returned by the scanner. */ - static final int _ATTRIBUTE = 283; - /** Token number,to be returned by the scanner. */ - static final int OTHERXML_ = 284; - /** Token number,to be returned by the scanner. */ - static final int _OTHERXML = 285; - /** Token number,to be returned by the scanner. */ - static final int ERROR_ = 286; - /** Token number,to be returned by the scanner. */ - static final int _ERROR = 287; - /** Token number,to be returned by the scanner. */ - static final int MESSAGE_ = 288; - /** Token number,to be returned by the scanner. */ - static final int _MESSAGE = 289; - /** Token number,to be returned by the scanner. */ - static final int CONTEXT_ = 290; - /** Token number,to be returned by the scanner. */ - static final int _CONTEXT = 291; - /** Token number,to be returned by the scanner. */ - static final int OTHERINFO_ = 292; - /** Token number,to be returned by the scanner. */ - static final int _OTHERINFO = 293; - /** Token number,to be returned by the scanner. */ - static final int CHAR_ = 294; - /** Token number,to be returned by the scanner. */ - static final int _CHAR = 295; - /** Token number,to be returned by the scanner. */ - static final int BYTE_ = 296; - /** Token number,to be returned by the scanner. */ - static final int _BYTE = 297; - /** Token number,to be returned by the scanner. */ - static final int INT8_ = 298; - /** Token number,to be returned by the scanner. */ - static final int _INT8 = 299; - /** Token number,to be returned by the scanner. */ - static final int UINT8_ = 300; - /** Token number,to be returned by the scanner. */ - static final int _UINT8 = 301; - /** Token number,to be returned by the scanner. */ - static final int INT16_ = 302; - /** Token number,to be returned by the scanner. */ - static final int _INT16 = 303; - /** Token number,to be returned by the scanner. */ - static final int UINT16_ = 304; - /** Token number,to be returned by the scanner. */ - static final int _UINT16 = 305; - /** Token number,to be returned by the scanner. */ - static final int INT32_ = 306; - /** Token number,to be returned by the scanner. */ - static final int _INT32 = 307; - /** Token number,to be returned by the scanner. */ - static final int UINT32_ = 308; - /** Token number,to be returned by the scanner. */ - static final int _UINT32 = 309; - /** Token number,to be returned by the scanner. */ - static final int INT64_ = 310; - /** Token number,to be returned by the scanner. */ - static final int _INT64 = 311; - /** Token number,to be returned by the scanner. */ - static final int UINT64_ = 312; - /** Token number,to be returned by the scanner. */ - static final int _UINT64 = 313; - /** Token number,to be returned by the scanner. */ - static final int FLOAT32_ = 314; - /** Token number,to be returned by the scanner. */ - static final int _FLOAT32 = 315; - /** Token number,to be returned by the scanner. */ - static final int FLOAT64_ = 316; - /** Token number,to be returned by the scanner. */ - static final int _FLOAT64 = 317; - /** Token number,to be returned by the scanner. */ - static final int STRING_ = 318; - /** Token number,to be returned by the scanner. */ - static final int _STRING = 319; - /** Token number,to be returned by the scanner. */ - static final int URL_ = 320; - /** Token number,to be returned by the scanner. */ - static final int _URL = 321; - /** Token number,to be returned by the scanner. */ - static final int OPAQUE_ = 322; - /** Token number,to be returned by the scanner. */ - static final int _OPAQUE = 323; - /** Token number,to be returned by the scanner. */ - static final int ATTR_BASE = 324; - /** Token number,to be returned by the scanner. */ - static final int ATTR_BASETYPE = 325; - /** Token number,to be returned by the scanner. */ - static final int ATTR_DAPVERSION = 326; - /** Token number,to be returned by the scanner. */ - static final int ATTR_DMRVERSION = 327; - /** Token number,to be returned by the scanner. */ - static final int ATTR_ENUM = 328; - /** Token number,to be returned by the scanner. */ - static final int ATTR_HREF = 329; - /** Token number,to be returned by the scanner. */ - static final int ATTR_NAME = 330; - /** Token number,to be returned by the scanner. */ - static final int ATTR_NAMESPACE = 331; - /** Token number,to be returned by the scanner. */ - static final int ATTR_NS = 332; - /** Token number,to be returned by the scanner. */ - static final int ATTR_SIZE = 333; - /** Token number,to be returned by the scanner. */ - static final int ATTR_TYPE = 334; - /** Token number,to be returned by the scanner. */ - static final int ATTR_VALUE = 335; - /** Token number,to be returned by the scanner. */ - static final int ATTR_HTTPCODE = 336; - /** Token number,to be returned by the scanner. */ - static final int ATTR_SPECIAL = 337; - /** Token number,to be returned by the scanner. */ - static final int TEXT = 338; - /** Token number,to be returned by the scanner. */ - static final int UNKNOWN_ATTR = 339; - /** Token number,to be returned by the scanner. */ - static final int UNKNOWN_ELEMENT_ = 340; - /** Token number,to be returned by the scanner. */ - static final int _UNKNOWN_ELEMENT = 341; - - - - /** - * Method to retrieve the semantic value of the last scanned token. - * - * @return the semantic value of the last scanned token. - */ - Object getLVal(); - - /** - * Entry point for the scanner. Returns the token identifier corresponding - * to the next token and prepares to return the semantic value - * of the token. - * - * @return the token identifier corresponding to the next token. - */ - int yylex() throws DapException; - - /** - * Entry point for error reporting. Emits an error - * in a user-defined way. - * - * - * @param msg The string for the error message. - */ - void yyerror(String msg); - } - - private class YYLexer implements Lexer { - /* "%code lexer" blocks. */ - /* "dap4.y":22 */ /* lalr1.java:236 */ - - public Object getLVal() { - return null; - } - - public int yylex() { - return 0; - } - - public Bison.Position getStartPos() { - return null; - } - - public Bison.Position getEndPos() { - return null; - } - - public void yyerror(String s) { - System.err.println(s); - System.err.printf("near %s%n", getLocator()); - } - - - /* "Dap4BisonParser.java":304 */ /* lalr1.java:236 */ - - } - - /** - * The object doing lexical analysis for us. - */ - private Lexer yylexer; - - - - /** - * Instantiates the Bison-generated parser. - */ - public Dap4BisonParser() { - - this.yylexer = new YYLexer(); - - } - - - /** - * Instantiates the Bison-generated parser. - * - * @param yylexer The scanner that will supply tokens to the parser. - */ - protected Dap4BisonParser(Lexer yylexer) { - - this.yylexer = yylexer; - - } - - private java.io.PrintStream yyDebugStream = System.err; - - /** - * Return the PrintStream on which the debugging output is - * printed. - */ - public final java.io.PrintStream getDebugStream() { - return yyDebugStream; - } - - /** - * Set the PrintStream on which the debug output is printed. - * - * @param s The stream that is used for debugging output. - */ - public final void setDebugStream(java.io.PrintStream s) { - yyDebugStream = s; - } - - private int yydebug = 0; - - /** - * Answer the verbosity of the debugging output; 0 means that all kinds of - * output from the parser are suppressed. - */ - public final int getDebugLevel() { - return yydebug; - } - - /** - * Set the verbosity of the debugging output; 0 means that all kinds of - * output from the parser are suppressed. - * - * @param level The verbosity level for debugging output. - */ - public final void setDebugLevel(int level) { - yydebug = level; - } - - /** - * Print an error message via the lexer. - * - * @param msg The error message. - */ - public final void yyerror(String msg) { - yylexer.yyerror(msg); - } - - - protected final void yycdebug(String s) { - if (yydebug > 0) - yyDebugStream.println(s); - } - - private final class YYStack { - private int[] stateStack = new int[16]; - - private Object[] valueStack = new Object[16]; - - public int size = 16; - public int height = -1; - - public final void push(int state, Object value) { - height++; - if (size == height) { - int[] newStateStack = new int[size * 2]; - System.arraycopy(stateStack, 0, newStateStack, 0, height); - stateStack = newStateStack; - - - Object[] newValueStack = new Object[size * 2]; - System.arraycopy(valueStack, 0, newValueStack, 0, height); - valueStack = newValueStack; - - size *= 2; - } - - stateStack[height] = state; - - valueStack[height] = value; - } - - public final void pop() { - pop(1); - } - - public final void pop(int num) { - // Avoid memory leaks... garbage collection is a white lie! - if (num > 0) { - java.util.Arrays.fill(valueStack, height - num + 1, height + 1, null); - - } - height -= num; - } - - public final int stateAt(int i) { - return stateStack[height - i]; - } - - public final Object valueAt(int i) { - return valueStack[height - i]; - } - - // Print the state stack on the debug stream. - public void print(java.io.PrintStream out) { - out.print("Stack now"); - - for (int i = 0; i <= height; i++) { - out.print(' '); - out.print(stateStack[i]); - } - out.println(); - } - } - - /** - * Returned by a Bison action in order to stop the parsing process and - * return success (true). - */ - public static final int YYACCEPT = 0; - - /** - * Returned by a Bison action in order to stop the parsing process and - * return failure (false). - */ - public static final int YYABORT = 1; - - - /** - * Returned by a Bison action in order to request a new token. - */ - public static final int YYPUSH_MORE = 4; - - /** - * Returned by a Bison action in order to start error recovery without - * printing an error message. - */ - public static final int YYERROR = 2; - - /** - * Internal return codes that are not supported for user semantic - * actions. - */ - private static final int YYERRLAB = 3; - private static final int YYNEWSTATE = 4; - private static final int YYDEFAULT = 5; - private static final int YYREDUCE = 6; - private static final int YYERRLAB1 = 7; - private static final int YYRETURN = 8; - private static final int YYGETTOKEN = 9; /* Signify that a new token is expected when doing push-parsing. */ - - private int yyerrstatus_ = 0; - - - /* Lookahead and lookahead in internal form. */ - int yychar = yyempty_; - int yytoken = 0; - - /* State. */ - int yyn = 0; - int yylen = 0; - int yystate = 0; - YYStack yystack = new YYStack(); - int label = YYNEWSTATE; - - /* Error handling. */ - int yynerrs_ = 0; - - - /* Semantic value of the lookahead. */ - Object yylval = null; - - /** - * Return whether error recovery is being done. In this state, the parser - * reads token until it reaches a known state, and then restarts normal - * operation. - */ - public final boolean recovering() { - return yyerrstatus_ == 0; - } - - /** - * Compute post-reduction state. - * - * @param yystate the current state - * @param yysym the nonterminal to push on the stack - */ - private int yy_lr_goto_state_(int yystate, int yysym) { - int yyr = yypgoto_[yysym - yyntokens_] + yystate; - if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate) - return yytable_[yyr]; - else - return yydefgoto_[yysym - yyntokens_]; - } - - private int yyaction(int yyn, YYStack yystack, int yylen) throws DapException { - Object yyval; - - - /* - * If YYLEN is nonzero, implement the default value of the action: - * '$$ = $1'. Otherwise, use the top of the stack. - * - * Otherwise, the following line sets YYVAL to garbage. - * This behavior is undocumented and Bison - * users should not rely upon it. - */ - if (yylen > 0) - yyval = yystack.valueAt(yylen - 1); - else - yyval = yystack.valueAt(0); - - yy_reduce_print(yyn, yystack); - - switch (yyn) { - case 4: - if (yyn == 4) - /* "dap4.y":106 */ /* lalr1.java:489 */ - { - leavedataset(); - } ; - break; - - - case 5: - if (yyn == 5) - /* "dap4.y":112 */ /* lalr1.java:489 */ - { - enterdataset(((XMLAttributeMap) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 6: - if (yyn == 6) - /* "dap4.y":119 */ /* lalr1.java:489 */ - { - leavegroup(); - } ; - break; - - - case 7: - if (yyn == 7) - /* "dap4.y":125 */ /* lalr1.java:489 */ - { - entergroup(((XMLAttributeMap) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 14: - if (yyn == 14) - /* "dap4.y":147 */ /* lalr1.java:489 */ - { - leaveenumdef(); - } ; - break; - - - case 15: - if (yyn == 15) - /* "dap4.y":153 */ /* lalr1.java:489 */ - { - enterenumdef(((XMLAttributeMap) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 18: - if (yyn == 18) - /* "dap4.y":163 */ /* lalr1.java:489 */ - { - enumconst(((SaxEvent) (yystack.valueAt(4 - (2)))), ((SaxEvent) (yystack.valueAt(4 - (3))))); - } ; - break; - - - case 19: - if (yyn == 19) - /* "dap4.y":165 */ /* lalr1.java:489 */ - { - enumconst(((SaxEvent) (yystack.valueAt(4 - (3)))), ((SaxEvent) (yystack.valueAt(4 - (2))))); - } ; - break; - - - case 20: - if (yyn == 20) - /* "dap4.y":172 */ /* lalr1.java:489 */ - { - leavedimdef(); - } ; - break; - - - case 21: - if (yyn == 21) - /* "dap4.y":178 */ /* lalr1.java:489 */ - { - enterdimdef(((XMLAttributeMap) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 22: - if (yyn == 22) - /* "dap4.y":183 */ /* lalr1.java:489 */ - { - dimref(((SaxEvent) (yystack.valueAt(3 - (2))))); - } ; - break; - - - case 23: - if (yyn == 23) - /* "dap4.y":185 */ /* lalr1.java:489 */ - { - dimref(((SaxEvent) (yystack.valueAt(3 - (2))))); - } ; - break; - - - case 28: - if (yyn == 28) - /* "dap4.y":200 */ /* lalr1.java:489 */ - { - leaveatomicvariable(((SaxEvent) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 29: - if (yyn == 29) - /* "dap4.y":207 */ /* lalr1.java:489 */ - { - enteratomicvariable(((SaxEvent) (yystack.valueAt(2 - (1)))), ((XMLAttributeMap) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 30: - if (yyn == 30) - /* "dap4.y":214 */ /* lalr1.java:489 */ - { - leaveenumvariable(((SaxEvent) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 31: - if (yyn == 31) - /* "dap4.y":221 */ /* lalr1.java:489 */ - { - enterenumvariable(((XMLAttributeMap) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 32: - if (yyn == 32) - /* "dap4.y":226 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 33: - if (yyn == 33) - /* "dap4.y":227 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 34: - if (yyn == 34) - /* "dap4.y":228 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 35: - if (yyn == 35) - /* "dap4.y":229 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 36: - if (yyn == 36) - /* "dap4.y":230 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 37: - if (yyn == 37) - /* "dap4.y":231 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 38: - if (yyn == 38) - /* "dap4.y":232 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 39: - if (yyn == 39) - /* "dap4.y":233 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 40: - if (yyn == 40) - /* "dap4.y":234 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 41: - if (yyn == 41) - /* "dap4.y":235 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 42: - if (yyn == 42) - /* "dap4.y":236 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 43: - if (yyn == 43) - /* "dap4.y":237 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 44: - if (yyn == 44) - /* "dap4.y":238 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 45: - if (yyn == 45) - /* "dap4.y":239 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 46: - if (yyn == 46) - /* "dap4.y":240 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 47: - if (yyn == 47) - /* "dap4.y":244 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 48: - if (yyn == 48) - /* "dap4.y":245 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 49: - if (yyn == 49) - /* "dap4.y":246 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 50: - if (yyn == 50) - /* "dap4.y":247 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 51: - if (yyn == 51) - /* "dap4.y":248 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 52: - if (yyn == 52) - /* "dap4.y":249 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 53: - if (yyn == 53) - /* "dap4.y":250 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 54: - if (yyn == 54) - /* "dap4.y":251 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 55: - if (yyn == 55) - /* "dap4.y":252 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 56: - if (yyn == 56) - /* "dap4.y":253 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 57: - if (yyn == 57) - /* "dap4.y":254 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 58: - if (yyn == 58) - /* "dap4.y":255 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 59: - if (yyn == 59) - /* "dap4.y":256 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 60: - if (yyn == 60) - /* "dap4.y":257 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 61: - if (yyn == 61) - /* "dap4.y":258 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 62: - if (yyn == 62) - /* "dap4.y":259 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 67: - if (yyn == 67) - /* "dap4.y":273 */ /* lalr1.java:489 */ - { - leavemap(); - } ; - break; - - - case 68: - if (yyn == 68) - /* "dap4.y":279 */ /* lalr1.java:489 */ - { - entermap(((SaxEvent) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 69: - if (yyn == 69) - /* "dap4.y":286 */ /* lalr1.java:489 */ - { - leavestructurevariable(((SaxEvent) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 70: - if (yyn == 70) - /* "dap4.y":292 */ /* lalr1.java:489 */ - { - enterstructurevariable(((XMLAttributeMap) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 76: - if (yyn == 76) - /* "dap4.y":307 */ /* lalr1.java:489 */ - { - leavesequencevariable(((SaxEvent) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 77: - if (yyn == 77) - /* "dap4.y":313 */ /* lalr1.java:489 */ - { - entersequencevariable(((XMLAttributeMap) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 89: - if (yyn == 89) - /* "dap4.y":345 */ /* lalr1.java:489 */ - { - leaveatomicattribute(); - } ; - break; - - - case 90: - if (yyn == 90) - /* "dap4.y":349 */ /* lalr1.java:489 */ - { - leaveatomicattribute(); - } ; - break; - - - case 91: - if (yyn == 91) - /* "dap4.y":356 */ /* lalr1.java:489 */ - { - enteratomicattribute(((XMLAttributeMap) (yystack.valueAt(3 - (2)))), - ((NamespaceList) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 92: - if (yyn == 92) - /* "dap4.y":361 */ /* lalr1.java:489 */ - { - yyval = namespace_list(); - } ; - break; - - - case 93: - if (yyn == 93) - /* "dap4.y":363 */ /* lalr1.java:489 */ - { - yyval = namespace_list(((NamespaceList) (yystack.valueAt(2 - (1)))), ((SaxEvent) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 94: - if (yyn == 94) - /* "dap4.y":370 */ /* lalr1.java:489 */ - { - yyval = (((SaxEvent) (yystack.valueAt(3 - (2))))); - } ; - break; - - - case 95: - if (yyn == 95) - /* "dap4.y":377 */ /* lalr1.java:489 */ - { - leavecontainerattribute(); - } ; - break; - - - case 96: - if (yyn == 96) - /* "dap4.y":384 */ /* lalr1.java:489 */ - { - entercontainerattribute(((XMLAttributeMap) (yystack.valueAt(3 - (2)))), - ((NamespaceList) (yystack.valueAt(3 - (3))))); - } ; - break; - - - case 101: - if (yyn == 101) - /* "dap4.y":401 */ /* lalr1.java:489 */ - { - value(((String) (yystack.valueAt(3 - (2))))); - } ; - break; - - - case 102: - if (yyn == 102) - /* "dap4.y":403 */ /* lalr1.java:489 */ - { - value(((SaxEvent) (yystack.valueAt(3 - (2))))); - } ; - break; - - - case 103: - if (yyn == 103) - /* "dap4.y":411 */ /* lalr1.java:489 */ - { - otherxml(((XMLAttributeMap) (yystack.valueAt(4 - (2)))), ((DapXML) (yystack.valueAt(4 - (3))))); - } ; - break; - - - case 104: - if (yyn == 104) - /* "dap4.y":415 */ /* lalr1.java:489 */ - { - yyval = xml_body(null, ((DapXML) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 105: - if (yyn == 105) - /* "dap4.y":416 */ /* lalr1.java:489 */ - { - yyval = xml_body(((DapXML.XMLList) (yystack.valueAt(2 - (1)))), ((DapXML) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 106: - if (yyn == 106) - /* "dap4.y":424 */ /* lalr1.java:489 */ - { - yyval = - element_or_text(((SaxEvent) (yystack.valueAt(4 - (1)))), ((XMLAttributeMap) (yystack.valueAt(4 - (2)))), - ((DapXML.XMLList) (yystack.valueAt(4 - (3)))), ((SaxEvent) (yystack.valueAt(4 - (4))))); - } ; - break; - - - case 107: - if (yyn == 107) - /* "dap4.y":426 */ /* lalr1.java:489 */ - { - yyval = xmltext(((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 108: - if (yyn == 108) - /* "dap4.y":434 */ /* lalr1.java:489 */ - { - yyval = xml_attribute_map(); - } ; - break; - - - case 109: - if (yyn == 109) - /* "dap4.y":436 */ /* lalr1.java:489 */ - { - yyval = xml_attribute_map(((XMLAttributeMap) (yystack.valueAt(2 - (1)))), - ((SaxEvent) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 184: - if (yyn == 184) - /* "dap4.y":530 */ /* lalr1.java:489 */ - { - leaveerror(); - } ; - break; - - - case 185: - if (yyn == 185) - /* "dap4.y":537 */ /* lalr1.java:489 */ - { - entererror(((XMLAttributeMap) (yystack.valueAt(2 - (2))))); - } ; - break; - - - case 188: - if (yyn == 188) - /* "dap4.y":547 */ /* lalr1.java:489 */ - { - errormessage(((String) (yystack.valueAt(3 - (2))))); - } ; - break; - - - case 189: - if (yyn == 189) - /* "dap4.y":549 */ /* lalr1.java:489 */ - { - errorcontext(((String) (yystack.valueAt(3 - (2))))); - } ; - break; - - - case 190: - if (yyn == 190) - /* "dap4.y":551 */ /* lalr1.java:489 */ - { - errorotherinfo(((String) (yystack.valueAt(3 - (2))))); - } ; - break; - - - case 191: - if (yyn == 191) - /* "dap4.y":556 */ /* lalr1.java:489 */ - { - yyval = textstring(null, ((SaxEvent) (yystack.valueAt(1 - (1))))); - } ; - break; - - - case 192: - if (yyn == 192) - /* "dap4.y":558 */ /* lalr1.java:489 */ - { - yyval = textstring(((String) (yystack.valueAt(2 - (1)))), ((SaxEvent) (yystack.valueAt(2 - (2))))); - } ; - break; - - - - /* "Dap4BisonParser.java":1087 */ /* lalr1.java:489 */ - default: - break; - } - - yy_symbol_print("-> $$ =", yyr1_[yyn], yyval); - - yystack.pop(yylen); - yylen = 0; - - /* Shift the result of the reduction. */ - int yystate = yy_lr_goto_state_(yystack.stateAt(0), yyr1_[yyn]); - yystack.push(yystate, yyval); - return YYNEWSTATE; - } - - - /* - * Return YYSTR after stripping away unnecessary quotes and - * backslashes, so that it's suitable for yyerror. The heuristic is - * that double-quoting is unnecessary unless the string contains an - * apostrophe, a comma, or backslash (other than backslash-backslash). - * YYSTR is taken from yytname. - */ - private final String yytnamerr_(String yystr) { - if (yystr.charAt(0) == '"') { - StringBuffer yyr = new StringBuffer(); - strip_quotes: for (int i = 1; i < yystr.length(); i++) - switch (yystr.charAt(i)) { - case '\'': - case ',': - break strip_quotes; - - case '\\': - if (yystr.charAt(++i) != '\\') - break strip_quotes; - /* Fall through. */ - default: - yyr.append(yystr.charAt(i)); - break; - - case '"': - return yyr.toString(); - } - } else if (yystr.equals("$end")) - return "end of input"; - - return yystr; - } - - - /*--------------------------------. - | Print this symbol on YYOUTPUT. | - `--------------------------------*/ - - private void yy_symbol_print(String s, int yytype, Object yyvaluep) { - if (yydebug > 0) - yycdebug(s + (yytype < yyntokens_ ? " token " : " nterm ") + yytname_[yytype] + " (" - + (yyvaluep == null ? "(null)" : yyvaluep.toString()) + ")"); - } - - - - /** - * Push Parse input from external lexer - * - * @param yylextoken current token - * @param yylexval current lval - * - * - * @return YYACCEPT, YYABORT, YYPUSH_MORE - */ - public int push_parse(int yylextoken, Object yylexval) throws DapException, DapException { - - - - if (!this.push_parse_initialized) { - push_parse_initialize(); - - yycdebug("Starting parse\n"); - yyerrstatus_ = 0; - } else - label = YYGETTOKEN; - - boolean push_token_consumed = true; - - for (;;) - switch (label) { - /* - * New state. Unlike in the C/C++ skeletons, the state is already - * pushed when we come here. - */ - case YYNEWSTATE: - yycdebug("Entering state " + yystate + "\n"); - if (yydebug > 0) - yystack.print(yyDebugStream); - - /* Accept? */ - if (yystate == yyfinal_) { - label = YYACCEPT; - break; - } - - /* Take a decision. First try without lookahead. */ - yyn = yypact_[yystate]; - if (yy_pact_value_is_default_(yyn)) { - label = YYDEFAULT; - break; - } - /* Fall Through */ - - case YYGETTOKEN: - /* Read a lookahead token. */ - if (yychar == yyempty_) { - - if (!push_token_consumed) - return YYPUSH_MORE; - yycdebug("Reading a token: "); - yychar = yylextoken; - yylval = yylexval; - push_token_consumed = false; - - } - - /* Convert token to internal form. */ - if (yychar <= Lexer.EOF) { - yychar = yytoken = Lexer.EOF; - yycdebug("Now at end of input.\n"); - } else { - yytoken = yytranslate_(yychar); - yy_symbol_print("Next token is", yytoken, yylval); - } - - /* - * If the proper action on seeing token YYTOKEN is to reduce or to - * detect an error, take that action. - */ - yyn += yytoken; - if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yytoken) - label = YYDEFAULT; - - /* <= 0 means reduce or error. */ - else if ((yyn = yytable_[yyn]) <= 0) { - if (yy_table_value_is_error_(yyn)) - label = YYERRLAB; - else { - yyn = -yyn; - label = YYREDUCE; - } - } - - else { - /* Shift the lookahead token. */ - yy_symbol_print("Shifting", yytoken, yylval); - - /* Discard the token being shifted. */ - yychar = yyempty_; - - /* - * Count tokens shifted since error; after three, turn off error - * status. - */ - if (yyerrstatus_ > 0) - --yyerrstatus_; - - yystate = yyn; - yystack.push(yystate, yylval); - label = YYNEWSTATE; - } - break; - - /*-----------------------------------------------------------. - | yydefault -- do the default action for the current state. | - `-----------------------------------------------------------*/ - case YYDEFAULT: - yyn = yydefact_[yystate]; - if (yyn == 0) - label = YYERRLAB; - else - label = YYREDUCE; - break; - - /*-----------------------------. - | yyreduce -- Do a reduction. | - `-----------------------------*/ - case YYREDUCE: - yylen = yyr2_[yyn]; - label = yyaction(yyn, yystack, yylen); - yystate = yystack.stateAt(0); - break; - - /*------------------------------------. - | yyerrlab -- here on detecting error | - `------------------------------------*/ - case YYERRLAB: - /* If not already recovering from an error, report this error. */ - if (yyerrstatus_ == 0) { - ++yynerrs_; - if (yychar == yyempty_) - yytoken = yyempty_; - yyerror(yysyntax_error(yystate, yytoken)); - } - - - if (yyerrstatus_ == 3) { - /* - * If just tried and failed to reuse lookahead token after an - * error, discard it. - */ - - if (yychar <= Lexer.EOF) { - /* Return failure if at end of input. */ - if (yychar == Lexer.EOF) { - label = YYABORT; - break; - } - } else - yychar = yyempty_; - } - - /* - * Else will try to reuse lookahead token after shifting the error - * token. - */ - label = YYERRLAB1; - break; - - /*-------------------------------------------------. - | errorlab -- error raised explicitly by YYERROR. | - `-------------------------------------------------*/ - case YYERROR: - - - /* - * Do not reclaim the symbols of the rule which action triggered - * this YYERROR. - */ - yystack.pop(yylen); - yylen = 0; - yystate = yystack.stateAt(0); - label = YYERRLAB1; - break; - - /*-------------------------------------------------------------. - | yyerrlab1 -- common code for both syntax error and YYERROR. | - `-------------------------------------------------------------*/ - case YYERRLAB1: - yyerrstatus_ = 3; /* Each real token shifted decrements this. */ - - for (;;) { - yyn = yypact_[yystate]; - if (!yy_pact_value_is_default_(yyn)) { - yyn += yyterror_; - if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_) { - yyn = yytable_[yyn]; - if (0 < yyn) - break; - } - } - - /* - * Pop the current state because it cannot handle the - * error token. - */ - if (yystack.height == 0) { - label = YYABORT; - break; - } - - - yystack.pop(); - yystate = yystack.stateAt(0); - if (yydebug > 0) - yystack.print(yyDebugStream); - } - - if (label == YYABORT) - /* Leave the switch. */ - break; - - - - /* Shift the error token. */ - yy_symbol_print("Shifting", yystos_[yyn], yylval); - - yystate = yyn; - yystack.push(yyn, yylval); - label = YYNEWSTATE; - break; - - /* Accept. */ - case YYACCEPT: - this.push_parse_initialized = false; - return YYACCEPT; - - /* Abort. */ - case YYABORT: - this.push_parse_initialized = false; - return YYABORT; - } - } - - boolean push_parse_initialized = false; - - /** - * (Re-)Initialize the state of the push parser. - */ - public void push_parse_initialize() { - /* Lookahead and lookahead in internal form. */ - this.yychar = yyempty_; - this.yytoken = 0; - - /* State. */ - this.yyn = 0; - this.yylen = 0; - this.yystate = 0; - this.yystack = new YYStack(); - this.label = YYNEWSTATE; - - /* Error handling. */ - this.yynerrs_ = 0; - - - /* Semantic value of the lookahead. */ - this.yylval = null; - - yystack.push(this.yystate, this.yylval); - - this.push_parse_initialized = true; - - } - - - - // Generate an error message. - private String yysyntax_error(int yystate, int tok) { - if (yyErrorVerbose) { - /* - * There are many possibilities here to consider: - * - If this state is a consistent state with a default action, - * then the only way this function was invoked is if the - * default action is an error action. In that case, don't - * check for expected tokens because there are none. - * - The only way there can be no lookahead present (in tok) is - * if this state is a consistent state with a default action. - * Thus, detecting the absence of a lookahead is sufficient to - * determine that there is no unexpected or expected token to - * report. In that case, just report a simple "syntax error". - * - Don't assume there isn't a lookahead just because this - * state is a consistent state with a default action. There - * might have been a previous inconsistent state, consistent - * state with a non-default action, or user semantic action - * that manipulated yychar. (However, yychar is currently out - * of scope during semantic actions.) - * - Of course, the expected token list depends on states to - * have correct lookahead information, and it depends on the - * parser not to perform extra reductions after fetching a - * lookahead from the scanner and before detecting a syntax - * error. Thus, state merging (from LALR or IELR) and default - * reductions corrupt the expected token list. However, the - * list is correct for canonical LR with one exception: it - * will still contain any token that will not be accepted due - * to an error action in a later state. - */ - if (tok != yyempty_) { - /* - * FIXME: This method of building the message is not compatible - * with internationalization. - */ - StringBuffer res = new StringBuffer("syntax error, unexpected "); - res.append(yytnamerr_(yytname_[tok])); - int yyn = yypact_[yystate]; - if (!yy_pact_value_is_default_(yyn)) { - /* - * Start YYX at -YYN if negative to avoid negative - * indexes in YYCHECK. In other words, skip the first - * -YYN actions for this state because they are default - * actions. - */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = yylast_ - yyn + 1; - int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; - int count = 0; - for (int x = yyxbegin; x < yyxend; ++x) - if (yycheck_[x + yyn] == x && x != yyterror_ && !yy_table_value_is_error_(yytable_[x + yyn])) - ++count; - if (count < 5) { - count = 0; - for (int x = yyxbegin; x < yyxend; ++x) - if (yycheck_[x + yyn] == x && x != yyterror_ && !yy_table_value_is_error_(yytable_[x + yyn])) { - res.append(count++ == 0 ? ", expecting " : " or "); - res.append(yytnamerr_(yytname_[x])); - } - } - } - return res.toString(); - } - } - - return "syntax error"; - } - - /** - * Whether the given yypact_ value indicates a defaulted state. - * - * @param yyvalue the value to check - */ - private static boolean yy_pact_value_is_default_(int yyvalue) { - return yyvalue == yypact_ninf_; - } - - /** - * Whether the given yytable_ - * value indicates a syntax error. - * - * @param yyvalue the value to check - */ - private static boolean yy_table_value_is_error_(int yyvalue) { - return yyvalue == yytable_ninf_; - } - - private static final short yypact_ninf_ = -186; - private static final short yytable_ninf_ = -97; - - /* - * YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - * STATE-NUM. - */ - private static final short yypact_[] = yypact_init(); - - private static final short[] yypact_init() { - return new short[] {5, -186, -186, 12, -186, -186, -186, -186, 315, 315, -186, 36, 41, -186, -186, -186, -186, -186, - -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, - -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, - -186, 29, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, 14, -186, - -10, -186, -186, -38, -38, -38, -186, 315, 315, 315, 315, 315, 315, 315, 43, 204, -62, 129, -186, -5, 255, 217, - 315, 271, 316, -36, -186, 104, -186, -186, 107, -186, -14, -32, -12, 197, -186, -186, -186, -186, -186, -186, - -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, - -186, -186, -186, -186, -186, -186, -186, 25, -186, -186, 0, 30, -186, -186, -186, -186, 55, -186, 32, -186, - -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, - -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, 83, -16, -186, -186, -186, -186, -186, - -186, -186, -186, 50, -186, -186, 43, 121, 164, 159, 190, -186, -4, -186, -186, 195, 137, -186, -186, -186, - -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, - -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186}; - } - - /* - * YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - * Performed when YYTABLE does not specify something else to do. Zero - * means the default is an error. - */ - private static final short yydefact_[] = yydefact_init(); - - private static final short[] yydefact_init() { - return new short[] {0, 108, 108, 0, 2, 8, 3, 186, 5, 185, 1, 0, 0, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 109, 4, 108, 108, 108, 108, 108, 108, 108, 108, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 13, 8, 10, 0, 9, 83, 11, 24, 63, 25, 63, 108, 26, 71, 27, 78, 12, 85, 86, 0, 87, 0, 88, 184, 0, - 0, 0, 187, 7, 15, 21, 31, 70, 77, 92, 0, 0, 0, 0, 16, 0, 0, 0, 29, 0, 0, 0, 90, 0, 99, 97, 0, 191, 0, 0, 0, 91, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 107, 153, 0, 108, 6, 0, 0, 14, 17, 20, 84, 0, 62, 0, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 28, 65, 83, 66, 30, 69, 72, 73, 74, 75, 76, 79, 80, 81, 82, 0, 0, 89, - 100, 95, 98, 188, 192, 189, 190, 0, 93, 103, 0, 0, 0, 0, 0, 68, 0, 102, 101, 0, 0, 104, 18, 19, 22, 23, 67, 94, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 105, 106}; - } - - /* YYPGOTO[NTERM-NUM]. */ - private static final short yypgoto_[] = yypgoto_init(); - - private static final short[] yypgoto_init() { - return new short[] {-186, -186, -186, -186, -186, -186, 160, -186, -186, -186, 122, -186, -186, 72, 74, -186, -186, - -186, -186, -186, -186, 152, 76, -186, -186, -186, -186, -186, -186, -186, 45, -91, -66, -186, -186, -186, -186, - -186, -186, -186, -186, 116, -186, -186, -185, -2, -186, -186, -186, -186, -186, -186, -186, -63}; - } - - /* YYDEFGOTO[NTERM-NUM]. */ - private static final short yydefgoto_[] = yydefgoto_init(); - - private static final short[] yydefgoto_init() { - return new short[] {-1, 3, 4, 5, 52, 53, 11, 54, 55, 90, 91, 56, 57, 167, 58, 59, 60, 61, 62, 63, 168, 93, 169, 170, - 64, 65, 96, 66, 67, 97, 92, 68, 69, 70, 71, 108, 194, 72, 73, 103, 100, 101, 74, 206, 140, 8, 27, 141, 245, 6, - 7, 12, 79, 105}; - } - - /* - * YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - * positive, shift that token. If negative, reduce the rule whose - * number is the opposite. If YYTABLE_NINF, syntax error. - */ - private static final short yytable_[] = yytable_init(); - - private static final short[] yytable_init() { - return new short[] {9, 148, 171, 171, 191, 177, 182, 102, 1, 147, 204, 207, 10, 143, 106, 107, 212, 35, 144, 36, - 189, 244, 35, 35, 36, 36, 192, 80, 81, 82, 83, 84, 85, 86, 87, 184, 2, 188, 89, 98, 28, 29, 99, 30, 183, 104, - 109, 104, 110, 31, 111, 190, 112, 32, 113, 195, 114, 33, 115, 34, 116, 95, 117, 35, 118, 36, 119, 190, 120, 190, - 121, 190, 122, 75, 76, 37, 77, 38, 78, 39, 197, 40, 123, 41, 124, 42, 125, 43, 126, 44, 127, 45, 128, 46, 129, - 47, 130, 48, 131, 49, 132, 50, 133, 51, 134, 198, 135, 201, 136, 203, 137, 148, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 205, 25, 138, 26, 139, 98, 199, 208, 185, 200, 35, 187, 36, 145, 89, 196, 109, 214, 110, 215, - 111, 216, 112, 217, 113, 218, 114, 219, 115, 220, 116, 221, 117, 222, 118, 223, 119, 224, 120, 225, 121, 226, - 122, 227, 174, 179, 175, 180, 176, 181, 209, 210, 123, 228, 124, 229, 125, 230, 126, 231, 127, 232, 128, 233, - 129, 234, 130, 235, 131, 236, 132, 237, 133, 238, 134, 239, 135, 240, 136, 241, 137, 242, 211, 213, 193, 29, - 142, 30, 146, 88, 94, 202, 186, 31, 0, 0, 138, 32, 139, 243, -96, 33, -96, 34, 0, 0, 0, 35, 149, 36, 0, 172, - 151, 0, 0, 0, 0, 0, 0, 37, 35, 38, 36, 39, 0, 40, 0, 41, 0, 42, 0, 43, 0, 44, 0, 45, 0, 46, 0, 47, 0, 48, 0, 49, - 0, 50, 149, 51, 0, 150, 151, 0, 0, 0, 0, 0, 0, 0, 35, 0, 36, 0, 149, 0, 32, 0, 151, 0, 33, 173, 34, 152, 0, 153, - 35, 154, 36, 155, 0, 156, 0, 157, 0, 158, 0, 159, 37, 160, 38, 161, 39, 162, 40, 163, 41, 164, 42, 165, 43, 166, - 44, 0, 45, 0, 46, 0, 47, 149, 48, 32, 49, 151, 50, 33, 51, 34, 178, 0, 0, 35, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 37, 0, 38, 0, 39, 0, 40, 0, 41, 0, 42, 0, 43, 0, 44, 0, 45, 0, 46, 0, 47, 0, 48, 0, 49, 0, 50, 0, 51, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 25, 0, 26}; - } - - private static final short yycheck_[] = yycheck_init(); - - private static final short[] yycheck_init() { - return new short[] {2, 92, 93, 94, 36, 96, 97, 73, 3, 14, 26, 196, 0, 75, 77, 78, 20, 27, 80, 29, 34, 206, 27, 27, - 29, 29, 38, 29, 30, 31, 32, 33, 34, 35, 36, 98, 31, 103, 9, 25, 4, 5, 28, 7, 80, 83, 3, 83, 5, 13, 7, 83, 9, 17, - 11, 30, 13, 21, 15, 23, 17, 63, 19, 27, 21, 29, 23, 83, 25, 83, 27, 83, 29, 32, 33, 39, 35, 41, 37, 43, 80, 45, - 39, 47, 41, 49, 43, 51, 45, 53, 47, 55, 49, 57, 51, 59, 53, 61, 55, 63, 57, 65, 59, 67, 61, 75, 63, 75, 65, 26, - 67, 202, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 74, 82, 83, 84, 85, 25, 75, 10, 28, 78, 27, 28, 29, 8, - 9, 141, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 96, 97, 96, 97, 96, 97, 10, 16, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 16, 12, 11, 5, 6, 7, 90, 53, 62, 170, 100, 13, -1, -1, 83, 17, 85, 86, - 27, 21, 29, 23, -1, -1, -1, 27, 15, 29, -1, 18, 19, -1, -1, -1, -1, -1, -1, 39, 27, 41, 29, 43, -1, 45, -1, 47, - -1, 49, -1, 51, -1, 53, -1, 55, -1, 57, -1, 59, -1, 61, -1, 63, -1, 65, 15, 67, -1, 18, 19, -1, -1, -1, -1, -1, - -1, -1, 27, -1, 29, -1, 15, -1, 17, -1, 19, -1, 21, 22, 23, 40, -1, 42, 27, 44, 29, 46, -1, 48, -1, 50, -1, 52, - -1, 54, 39, 56, 41, 58, 43, 60, 45, 62, 47, 64, 49, 66, 51, 68, 53, -1, 55, -1, 57, -1, 59, 15, 61, 17, 63, 19, - 65, 21, 67, 23, 24, -1, -1, 27, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, -1, 41, -1, 43, -1, 45, -1, 47, - -1, 49, -1, 51, -1, 53, -1, 55, -1, 57, -1, 59, -1, 61, -1, 63, -1, 65, -1, 67, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, -1, 82, -1, 84}; - } - - /* - * YYSTOS[STATE-NUM] -- The (internal number of the) accessing - * symbol of state STATE-NUM. - */ - private static final short yystos_[] = yystos_init(); - - private static final short[] yystos_init() { - return new short[] {0, 3, 31, 88, 89, 90, 136, 137, 132, 132, 0, 93, 138, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 82, 84, 133, 4, 5, 7, 13, 17, 21, 23, 27, 29, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, - 67, 91, 92, 94, 95, 98, 99, 101, 102, 103, 104, 105, 106, 111, 112, 114, 115, 118, 119, 120, 121, 124, 125, 129, - 32, 33, 35, 37, 139, 132, 132, 132, 132, 132, 132, 132, 132, 93, 9, 96, 97, 117, 108, 108, 132, 113, 116, 25, - 28, 127, 128, 119, 126, 83, 140, 140, 140, 122, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 39, 41, 43, - 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 83, 85, 131, 134, 6, 75, 80, 8, 97, 14, 118, 15, 18, 19, 40, 42, - 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 100, 107, 109, 110, 118, 18, 22, 100, 101, 109, 118, 24, - 100, 101, 109, 118, 80, 140, 28, 128, 28, 119, 34, 83, 36, 38, 11, 123, 30, 132, 80, 75, 75, 78, 75, 117, 26, - 26, 74, 130, 131, 10, 10, 16, 16, 20, 12, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 40, 42, 44, 46, - 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 86, 131, 135}; - } - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ - private static final short yyr1_[] = yyr1_init(); - - private static final short[] yyr1_init() { - return new short[] {0, 87, 88, 88, 89, 90, 91, 92, 93, 93, 93, 93, 93, 93, 94, 95, 96, 96, 97, 97, 98, 99, 100, 100, - 101, 101, 101, 101, 102, 103, 104, 105, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, - 106, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 108, 108, 108, 108, 109, - 110, 111, 112, 113, 113, 113, 113, 113, 114, 115, 116, 116, 116, 116, 116, 117, 117, 118, 119, 119, 119, 120, - 120, 121, 122, 122, 123, 124, 125, 126, 126, 127, 127, 128, 128, 129, 130, 130, 131, 131, 132, 132, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 136, 137, 138, 138, 139, 139, 139, 140, 140}; - } - - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ - private static final byte yyr2_[] = yyr2_init(); - - private static final byte[] yyr2_init() { - return new byte[] {0, 2, 1, 1, 3, 2, 3, 2, 0, 2, 2, 2, 2, 2, 3, 2, 1, 2, 4, 4, 3, 2, 3, 3, 1, 1, 1, 1, 3, 2, 3, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 3, 2, - 3, 2, 0, 2, 2, 2, 2, 3, 2, 0, 2, 2, 2, 2, 0, 2, 1, 1, 1, 1, 3, 2, 3, 0, 2, 3, 3, 3, 1, 2, 1, 2, 3, 3, 4, 1, 2, - 4, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 2, 0, 2, 3, 3, 3, 1, 2}; - } - - /* - * YYTOKEN_NUMBER[YYLEX-NUM] -- Internal symbol number corresponding - * to YYLEX-NUM. - */ - private static final short yytoken_number_[] = yytoken_number_init(); - - private static final short[] yytoken_number_init() { - return new short[] {0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341}; - } - - /* - * YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - * First, the terminals, then, starting at \a yyntokens_, nonterminals. - */ - private static final String yytname_[] = yytname_init(); - - private static final String[] yytname_init() { - return new String[] {"$end", "error", "$undefined", "DATASET_", "_DATASET", "GROUP_", "_GROUP", "ENUMERATION_", - "_ENUMERATION", "ENUMCONST_", "_ENUMCONST", "NAMESPACE_", "_NAMESPACE", "DIMENSION_", "_DIMENSION", "DIM_", - "_DIM", "ENUM_", "_ENUM", "MAP_", "_MAP", "STRUCTURE_", "_STRUCTURE", "SEQUENCE_", "_SEQUENCE", "VALUE_", - "_VALUE", "ATTRIBUTE_", "_ATTRIBUTE", "OTHERXML_", "_OTHERXML", "ERROR_", "_ERROR", "MESSAGE_", "_MESSAGE", - "CONTEXT_", "_CONTEXT", "OTHERINFO_", "_OTHERINFO", "CHAR_", "_CHAR", "BYTE_", "_BYTE", "INT8_", "_INT8", - "UINT8_", "_UINT8", "INT16_", "_INT16", "UINT16_", "_UINT16", "INT32_", "_INT32", "UINT32_", "_UINT32", - "INT64_", "_INT64", "UINT64_", "_UINT64", "FLOAT32_", "_FLOAT32", "FLOAT64_", "_FLOAT64", "STRING_", "_STRING", - "URL_", "_URL", "OPAQUE_", "_OPAQUE", "ATTR_BASE", "ATTR_BASETYPE", "ATTR_DAPVERSION", "ATTR_DMRVERSION", - "ATTR_ENUM", "ATTR_HREF", "ATTR_NAME", "ATTR_NAMESPACE", "ATTR_NS", "ATTR_SIZE", "ATTR_TYPE", "ATTR_VALUE", - "ATTR_HTTPCODE", "ATTR_SPECIAL", "TEXT", "UNKNOWN_ATTR", "UNKNOWN_ELEMENT_", "_UNKNOWN_ELEMENT", "$accept", - "response", "dataset", "datasetprefix", "group", "groupprefix", "groupbody", "enumdef", "enumdefprefix", - "enumconst_list", "enumconst", "dimdef", "dimdefprefix", "dimref", "variable", "atomicvariable", - "atomicvariableprefix", "enumvariable", "enumvariableprefix", "atomictype_", "_atomictype", "varbody", "mapref", - "maprefprefix", "structurevariable", "structurevariableprefix", "structbody", "sequencevariable", - "sequencevariableprefix", "sequencebody", "metadatalist", "metadata", "attribute", "atomicattribute", - "atomicattributeprefix", "namespace_list", "namespace", "containerattribute", "containerattributeprefix", - "attributelist", "valuelist", "value", "otherxml", "xml_body", "element_or_text", "xml_attribute_map", - "xml_attribute", "xml_open", "xml_close", "error_response", "error_responseprefix", "error_body", - "error_element", "textstring", null}; - } - - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ - private static final short yyrline_[] = yyrline_init(); - - private static final short[] yyrline_init() { - return new short[] {0, 98, 98, 99, 103, 110, 116, 123, 134, 136, 137, 138, 139, 140, 144, 151, 157, 158, 162, 164, - 169, 176, 182, 184, 189, 190, 191, 192, 197, 205, 211, 219, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 262, - 264, 265, 266, 270, 277, 283, 290, 295, 297, 298, 299, 300, 304, 311, 316, 318, 319, 320, 321, 324, 326, 330, - 334, 335, 336, 342, 347, 353, 361, 362, 367, 374, 381, 389, 390, 395, 396, 400, 402, 407, 415, 416, 420, 425, - 434, 435, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 527, 534, 540, 542, 546, 548, 550, 555, 557}; - } - - - // Report on the debug stream that the rule yyrule is going to be reduced. - private void yy_reduce_print(int yyrule, YYStack yystack) { - if (yydebug == 0) - return; - - int yylno = yyrline_[yyrule]; - int yynrhs = yyr2_[yyrule]; - /* Print the symbols being reduced, and their result. */ - yycdebug("Reducing stack by rule " + (yyrule - 1) + " (line " + yylno + "), "); - - /* The symbols being reduced. */ - for (int yyi = 0; yyi < yynrhs; yyi++) - yy_symbol_print(" $" + (yyi + 1) + " =", yystos_[yystack.stateAt(yynrhs - (yyi + 1))], - ((yystack.valueAt(yynrhs - (yyi + 1))))); - } - - /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ - private static final byte yytranslate_table_[] = yytranslate_table_init(); - - private static final byte[] yytranslate_table_init() { - return new byte[] {0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86}; - } - - private static final byte yytranslate_(int t) { - if (t >= 0 && t <= yyuser_token_number_max_) - return yytranslate_table_[t]; - else - return yyundef_token_; - } - - private static final int yylast_ = 399; - private static final int yynnts_ = 54; - private static final int yyempty_ = -2; - private static final int yyfinal_ = 10; - private static final int yyterror_ = 1; - private static final int yyerrcode_ = 256; - private static final int yyntokens_ = 87; - - private static final int yyuser_token_number_max_ = 341; - private static final int yyundef_token_ = 2; - - /* User implementation code. */ - -} - diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4EventHandler.java b/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4EventHandler.java deleted file mode 100644 index cc1416b024..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4EventHandler.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.dmr.parser.bison; - -import org.xml.sax.Locator; -import org.xml.sax.SAXException; -import java.util.HashMap; -import java.util.Map; -import static dap4.core.dmr.parser.bison.Dap4BisonParser.Lexer.*; -import static dap4.core.dmr.parser.bison.Dap4BisonParser.YYABORT; -import static dap4.core.dmr.parser.bison.Dap4BisonParser.YYACCEPT; - -public class Dap4EventHandler extends SaxEventHandler { - ////////////////////////////////////////////////// - // Constants - - public static String SPECIALATTRPREFIX = "_"; - - ////////////////////////////////////////////////// - // static types - - ////////////////////////////////////////////////// - // static fields - - static Map elementmap; - static Map attributemap; - - static { - elementmap = new HashMap(); - attributemap = new HashMap(); - - elementmap.put("Dataset", - new Lexeme("Dataset", DATASET_, _DATASET, new String[] {"name", "dapVersion", "dmrVersion"})); // legal - // attributes - // (lower case) - elementmap.put("Group", new Lexeme("Group", GROUP_, _GROUP, new String[] {"name"})); - elementmap.put("Enumeration", - new Lexeme("Enumeration", ENUMERATION_, _ENUMERATION, new String[] {"name", "basetype"})); - elementmap.put("EnumConst", new Lexeme("EnumConst", ENUMCONST_, _ENUMCONST, new String[] {"name", "value"})); - elementmap.put("Namespace", new Lexeme("Namespace", NAMESPACE_, _NAMESPACE, new String[] {"href"})); - elementmap.put("Dimension", new Lexeme("Dimension", DIMENSION_, _DIMENSION, new String[] {"name", "size"})); - elementmap.put("Dim", new Lexeme("Dim", DIM_, _DIM, new String[] {"name", "size"})); - elementmap.put("Enum", new Lexeme("Enum", ENUM_, _ENUM, new String[] {"enum", "name"})); - elementmap.put("Map", new Lexeme("Map", MAP_, _MAP, new String[] {"name"})); - elementmap.put("Structure", new Lexeme("Structure", STRUCTURE_, _STRUCTURE, new String[] {"name"})); - elementmap.put("Sequence", new Lexeme("Sequence", SEQUENCE_, _SEQUENCE, new String[] {"name"})); - elementmap.put("Value", new Lexeme("Value", VALUE_, _VALUE, new String[] {"value"})); - elementmap.put("Attribute", new Lexeme("Attribute", ATTRIBUTE_, _ATTRIBUTE, new String[] {"name", "type"})); - - elementmap.put("Char", new Lexeme("Char", CHAR_, _CHAR, new String[] {"name"})); - elementmap.put("Byte", new Lexeme("Byte", BYTE_, _BYTE, new String[] {"name"})); - elementmap.put("Int8", new Lexeme("Int8", INT8_, _INT8, new String[] {"name"})); - elementmap.put("UInt8", new Lexeme("UInt8", UINT8_, _UINT8, new String[] {"name"})); - elementmap.put("Int16", new Lexeme("Int16", INT16_, _INT16, new String[] {"name"})); - elementmap.put("UInt16", new Lexeme("UInt16", UINT16_, _UINT16, new String[] {"name"})); - elementmap.put("Int32", new Lexeme("Int32", INT32_, _INT32, new String[] {"name"})); - elementmap.put("UInt32", new Lexeme("UInt32", UINT32_, _UINT32, new String[] {"name"})); - elementmap.put("Int64", new Lexeme("Int64", INT64_, _INT64, new String[] {"name"})); - elementmap.put("UInt64", new Lexeme("UInt64", UINT64_, _UINT64, new String[] {"name"})); - elementmap.put("Float32", new Lexeme("Float32", FLOAT32_, _FLOAT32, new String[] {"name"})); - elementmap.put("Float64", new Lexeme("Float64", FLOAT64_, _FLOAT64, new String[] {"name"})); - elementmap.put("String", new Lexeme("String", STRING_, _STRING, new String[] {"name"})); - elementmap.put("URL", new Lexeme("URL", URL_, _URL, new String[] {"name"})); - elementmap.put("Opaque", new Lexeme("Opaque", OPAQUE_, _OPAQUE, new String[] {"name"})); - - // related elements - elementmap.put("Error", new Lexeme("Error", ERROR_, _ERROR, new String[] {"httpcode"})); - elementmap.put("Message", new Lexeme("Message", MESSAGE_, _MESSAGE, null)); - elementmap.put("Context", new Lexeme("Context", CONTEXT_, _CONTEXT, null)); - elementmap.put("OtherInfo", new Lexeme("OtherInfo", OTHERINFO_, _OTHERINFO, null)); - - // Always insert the lowercase name - attributemap.put("base", new Lexeme("base", ATTR_BASE)); - attributemap.put("basetype", new Lexeme("basetype", ATTR_BASETYPE)); - attributemap.put("dapversion", new Lexeme("dapversion", ATTR_DAPVERSION)); - attributemap.put("dmrversion", new Lexeme("dmrversion", ATTR_DMRVERSION)); - attributemap.put("enum", new Lexeme("enum", ATTR_ENUM)); - attributemap.put("href", new Lexeme("href", ATTR_HREF)); - attributemap.put("name", new Lexeme("name", ATTR_NAME)); - attributemap.put("namespace", new Lexeme("namespace", ATTR_NAMESPACE)); - attributemap.put("size", new Lexeme("size", ATTR_SIZE)); - attributemap.put("type", new Lexeme("type", ATTR_TYPE)); - attributemap.put("value", new Lexeme("value", ATTR_VALUE)); - attributemap.put("ns", new Lexeme("ns", ATTR_NS)); - // related xml attributes - attributemap.put("httpcode", new Lexeme("httpcode", ATTR_HTTPCODE)); - } - - ; - - ////////////////////////////////////////////////// - // Instance variables - - boolean textok = false; - boolean accepted = false; - boolean otherxml = false; - - ////////////////////////////////////////////////// - // Constructor(s) - - public Dap4EventHandler() {} - - ////////////////////////////////////////////////// - // Abstract method overrides - - // Push the token to the parser - // @throws SAXException if parser return YYABORT - - public void yyevent(SaxEvent saxtoken) throws SAXException { - if (accepted) { - throw new SAXException("yyevent called after parser has accepted"); - } - - SaxEventType event = saxtoken.eventtype; - String name = saxtoken.name; - int yytoken = 0; - Lexeme element = null; - Lexeme attr = null; - - element = elementmap.get(name); - - switch (event) { - - case STARTELEMENT: - if (element == null) {// undefined - yytoken = UNKNOWN_ELEMENT_; - break; - } - yytoken = element.open; - if (yytoken == OTHERXML_) { - otherxml = true; - textok = true; - } else if (!otherxml && yytoken == VALUE_) - textok = true; - break; - - case ATTRIBUTE: - String lcname = name.toLowerCase(); - attr = attributemap.get(lcname); - if (attr == null) { - if (lcname.startsWith(SPECIALATTRPREFIX)) - yytoken = ATTR_SPECIAL; - else - yytoken = UNKNOWN_ATTR; - } else - yytoken = attr.atoken; - break; - - case ENDELEMENT: - if (element == null) {// undefined - yytoken = _UNKNOWN_ELEMENT; - break; - } - yytoken = element.close; - if (yytoken == _OTHERXML) { - otherxml = false; - textok = false; - } else if (!otherxml && yytoken == _VALUE) - textok = false; - break; - - case CHARACTERS: - if (!textok) - return; // ignore - yytoken = TEXT; - break; - - case ENDDOCUMENT: - yytoken = EOF; - break; - - default: - return; // ignore - - } // switch - - int status = 0; - try { - Locator loc = getLocator(); - Dap4BisonParser parser = (Dap4BisonParser) this; - // Bison.Position pos = new Bison.Position(loc); - // Dap4BisonParser.Location yyloc = parser.new Location(pos); - status = parser.push_parse(yytoken, saxtoken); - } catch (Exception e) { - throw new SAXException(e); - } - if (status == YYABORT) - throw new SAXException("YYABORT"); - else if (status == YYACCEPT) - accepted = true; - } - -} // class Dap4EventHandler diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4ParserImpl.java b/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4ParserImpl.java deleted file mode 100644 index eb5fa09979..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4ParserImpl.java +++ /dev/null @@ -1,1056 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.dmr.parser.bison; - -import dap4.core.dmr.*; -import dap4.core.dmr.parser.Dap4Parser; -import dap4.core.dmr.parser.ParseException; -import dap4.core.dmr.parser.ParseUtil; -import dap4.core.util.DapException; -import dap4.core.util.DapSort; -import dap4.core.util.DapUtil; -import dap4.core.util.Escape; -import org.xml.sax.SAXException; -import java.math.BigInteger; -import java.util.*; - -/** - * Implement the Dap4 Parse Actions - */ - -public class Dap4ParserImpl extends Dap4BisonParser implements Dap4Parser { - - ////////////////////////////////////////////////// - // Constants - - ////////////////////////////////////////////////// - // static variables - - protected static int globaldebuglevel = 0; - - ////////////////////////////////////////////////// - // Static methods - - public static void setGlobalDebugLevel(int level) { - globaldebuglevel = level; - } - - ////////////////////////////////////////////////// - // Instance variables - - protected DMRFactory factory = null; - - protected ErrorResponse errorresponse = null; - - protected Deque scopestack = new ArrayDeque(); - - protected DapDataset root = null; // of the parse - - protected boolean debug = false; - - ////////////////////////////////////////////////// - // Constructors - - public Dap4ParserImpl(DMRFactory factory) { - super(); - this.factory = (factory == null ? new DMRFactory() : factory); // see Dap4Actions - if (globaldebuglevel > 0) - setDebugLevel(globaldebuglevel); - } - - ////////////////////////////////////////////////// - // Accessors - - public ErrorResponse getErrorResponse() { - return errorresponse; - } - - public DapDataset getDMR() { - return this.root; - } - - ////////////////////////////////////////////////// - // Parser API - - public boolean parse(String input) throws SAXException { - return super.parse(input); - } - - ////////////////////////////////////////////////// - // Parser specific methods - - DapGroup getGroupScope() throws DapException { - DapGroup gscope = (DapGroup) searchScope(DapSort.GROUP, DapSort.DATASET); - if (gscope == null) - throw new DapException("Undefined Group Scope"); - return gscope; - } - - DapNode getMetadataScope() throws DapException { - // Search up the stack for first match. - DapNode match = searchScope(METADATASCOPES); - if (match == null) - throw new ParseException("No enclosing metadata capable scope"); - return match; - } - - DapNode getParentScope() throws DapException { - DapNode parent = searchScope(DapSort.VARIABLE, DapSort.GROUP, DapSort.DATASET); - if (parent == null) - throw new DapException("Undefined parent scope"); - return parent; - } - - DapVariable getVariableScope() throws DapException { - DapNode match = searchScope(DapSort.VARIABLE); - if (match == null) - throw new ParseException("No enclosing variable scope"); - return (DapVariable) match; - } - - DapNode getScope(DapSort... sort) throws DapException { - DapNode node = searchScope(sort); - if (node == null) // return exception if not found - throw new ParseException("No enclosing scope of specified type"); - return node; - } - - DapNode searchScope(DapSort... sort) { - Iterator it = scopestack.iterator(); - while (it.hasNext()) { - DapNode node = (DapNode) it.next(); - for (int j = 0; j < sort.length; j++) { - if (node.getSort() == sort[j]) - return node; - } - } - return null; - } - - DapVariable findVariable(DapNode parent, String name) { - DapVariable var = null; - switch (parent.getSort()) { - case DATASET: - case GROUP: - var = ((DapGroup) parent).findVariable(name); - break; - case VARIABLE: - DapVariable v = (DapVariable) parent; - DapType t = v.getBaseType(); - switch (t.getTypeSort()) { - case Structure: - var = (DapVariable) ((DapStructure) t).findByName(name); - break; - case Sequence: - var = (DapVariable) ((DapSequence) t).findByName(name); - break; - default: - assert false : "Container cannot be atomic variable"; - } - default: - break; - } - return var; - } - - // Attribute map utilities - SaxEvent pull(XMLAttributeMap map, String name) { - SaxEvent event = map.remove(name.toLowerCase()); - return event; - } - - /** - * add any reserved xml attributes to a node unchanged - */ - void passReserved(XMLAttributeMap map, DapNode node) throws ParseException { - try { - DapAttribute attr = null; - for (Map.Entry entry : map.entrySet()) { - SaxEvent event = entry.getValue(); - String key = entry.getKey(); - String value = event.value; - if (isReserved(key)) - node.addXMLAttribute(key, value); - } - } catch (DapException de) { - throw new ParseException(de); - } - } - - // Attribute map utilities - SaxEvent peek(XMLAttributeMap map, String name) { - SaxEvent event = map.get(name.toLowerCase()); - return event; - } - - ////////////////////////////////////////////////// - // Attribute construction - - DapAttribute makeAttribute(DapSort sort, String name, DapType basetype, List nslist, DapNode parent) - throws DapException { - DapAttribute attr = new DapAttribute(name, basetype); - if (sort == DapSort.ATTRIBUTE) { - attr.setBaseType(basetype); - } - parent.addAttribute(attr); - attr.setNamespaceList(nslist); - return attr; - } - - boolean isempty(SaxEvent token) { - return token == null || isempty(token.value); - } - - boolean isempty(String text) { - return (text == null || text.length() == 0); - } - - List convertNamespaceList(NamespaceList nslist) { - return nslist; - } - - boolean islegalenumtype(DapType kind) { - return kind.isIntegerType(); - } - - boolean islegalattributetype(DapType kind) { - return kind.isLegalAttrType(); - } - - DapAttribute lookupAttribute(DapNode parent, XMLAttributeMap attrs) throws DapException { - SaxEvent name = pull(attrs, "name"); - if (isempty(name)) - throw new ParseException("Attribute: Empty attribute name"); - String attrname = name.value; - return parent.findAttribute(attrname); - } - - void changeAttribute(DapAttribute attr, XMLAttributeMap description) throws DapException { - SaxEvent name = pull(description, "name"); - if (isempty(name)) - throw new ParseException("Attribute: Empty attribute name"); - String attrname = name.value; - if (!attr.getShortName().equals(attrname)) - throw new ParseException("Attribute: DATA DMR: Attribute name mismatch:" + name.name); - switch (attr.getSort()) { - case ATTRIBUTE: - SaxEvent atype = pull(description, "type"); - String typename = (atype == null ? "Int32" : atype.value); - if ("Byte".equalsIgnoreCase(typename)) - typename = "UInt8"; - DapType basetype = (DapType) root.lookup(typename, DapSort.ENUMERATION, DapSort.ATOMICTYPE); - if (basetype != attr.getBaseType()) - throw new ParseException("Attribute: DATA DMR: Attempt to change attribute type: " + typename); - attr.clearValues(); - SaxEvent value = pull(description, "value"); - if (value != null) - attr.setValues(new String[] {value.value}); - break; - case ATTRIBUTESET: - // clear the contained attributes - attr.setAttributes(new HashMap()); - break; - case OTHERXML: - throw new ParseException("Attribute: DATA DMR: OtherXML attributes not supported"); - } - } - - DapAttribute createatomicattribute(XMLAttributeMap attrs, NamespaceList nslist, DapNode parent) throws DapException { - SaxEvent name = pull(attrs, "name"); - if (isempty(name)) - throw new ParseException("Attribute: Empty attribute name"); - String attrname = name.value; - SaxEvent atype = pull(attrs, "type"); - String typename = (atype == null ? "Int32" : atype.value); - if ("Byte".equalsIgnoreCase(typename)) - typename = "UInt8"; - DapType basetype = (DapType) root.lookup(typename, DapSort.ENUMERATION, DapSort.ATOMICTYPE); - if (basetype == null || !islegalattributetype(basetype)) - throw new ParseException("Attribute: Invalid attribute type: " + typename); - List hreflist = convertNamespaceList(nslist); - DapAttribute attr = makeAttribute(DapSort.ATTRIBUTE, name.value, basetype, hreflist, parent); - return attr; - } - - DapAttribute createcontainerattribute(XMLAttributeMap attrs, NamespaceList nslist, DapNode parent) - throws DapException { - SaxEvent name = pull(attrs, "name"); - if (isempty(name)) - throw new ParseException("ContainerAttribute: Empty attribute name"); - List hreflist = convertNamespaceList(nslist); - DapAttribute attr = makeAttribute(DapSort.ATTRIBUTESET, name.value, null, hreflist, parent); - return attr; - } - - void createvalue(String value, DapAttribute parent) throws DapException { - // Since this came from ... - // Clean it up - value = cleanup(value); - if (parent != null) - parent.setValues(new String[] {value}); - } - - protected String cleanup(String value) { - value = value.trim(); - int first = -1; - for (int i = 0; i < value.length(); i++) { - if (first < 0 && value.charAt(i) > ' ') { - first = i; - break; - } - } - int last = -1; - for (int i = value.length() - 1; i >= 0; i--) { - if (last < 0 && value.charAt(i) > ' ') { - last = i; - break; - } - } - if (last < 0) - last = value.length() - 1; - if (first < 0) - first = 0; - value = value.substring(first, last + 1); - return value; - } - - void createvalue(SaxEvent value, DapAttribute parent) throws DapException { - List textlist = null; - if (value.eventtype == SaxEventType.CHARACTERS) { - textlist = ParseUtil.collectValues(value.text); - } else if (value.eventtype == SaxEventType.ATTRIBUTE) { - textlist = new ArrayList(); - textlist.add(value.value); - } - if (textlist != null) - parent.setValues(textlist.toArray(new String[textlist.size()])); - } - - DapOtherXML createotherxml(XMLAttributeMap attrs, DapNode parent) throws DapException { - SaxEvent name = pull(attrs, "name"); - SaxEvent href = pull(attrs, "href"); - if (isempty(name)) - throw new ParseException("OtherXML: Empty name"); - List nslist = new ArrayList(); - if (!isempty(href)) - nslist.add(href.value); - DapOtherXML other = (DapOtherXML) makeAttribute(DapSort.OTHERXML, name.value, null, nslist, parent); - parent.setAttribute(other); - return other; - } - - ////////////////////////////////////////////////// - // Abstract action definitions - @Override - void enterdataset(XMLAttributeMap attrs) throws ParseException { - this.debug = getDebugLevel() > 0; // make sure we have the latest value - if (debug) - report("enterdataset"); - SaxEvent name = pull(attrs, "name"); - SaxEvent dapversion = pull(attrs, "dapversion"); - SaxEvent dmrversion = pull(attrs, "dmrversion"); - if (isempty(name)) - throw new ParseException("Empty dataset name attribute"); - // convert and test version numbers - float ndapversion = DAPVERSION; - if (dapversion != null) - try { - ndapversion = Float.parseFloat(dapversion.value); - } catch (NumberFormatException nfe) { - ndapversion = DAPVERSION; - } - if (ndapversion != DAPVERSION) - throw new ParseException("Dataset dapVersion mismatch: " + dapversion.value); - float ndmrversion = DMRVERSION; - if (dmrversion != null) - try { - ndmrversion = Float.parseFloat(dmrversion.value); - } catch (NumberFormatException nfe) { - ndmrversion = DMRVERSION; - } - if (ndmrversion != DMRVERSION) - throw new ParseException("Dataset dmrVersion mismatch: " + dmrversion.value); - this.root = new DapDataset(name.value); - this.root.setDapVersion(Float.toString(ndapversion)); - this.root.setDMRVersion(Float.toString(ndmrversion)); - this.root.setDataset(this.root); - passReserved(attrs, this.root); - scopestack.push(this.root); - } - - @Override - void leavedataset() throws ParseException { - if (debug) - report("leavedataset"); - assert (scopestack.peek() != null && scopestack.peek().getSort() == DapSort.DATASET); - this.root.sort(); - scopestack.pop(); - if (!scopestack.isEmpty()) - throw new ParseException("Dataset: nested dataset"); - this.root.finish(); - } - - @Override - void entergroup(XMLAttributeMap attrs) throws ParseException { - if (debug) - report("entergroup"); - SaxEvent name = pull(attrs, "name"); - if (isempty(name)) - throw new ParseException("Empty group name"); - try { - DapGroup parent = getGroupScope(); - DapGroup group; - group = new DapGroup(name.value); - passReserved(attrs, group); - parent.addDecl(group); - scopestack.push(group); - } catch (DapException de) { - throw new ParseException(de); - } - } - - @Override - void leavegroup() throws ParseException { - if (debug) - report("leavegroup"); - scopestack.pop(); - } - - @Override - void enterenumdef(XMLAttributeMap attrs) throws ParseException { - if (debug) - report("enterenumdef"); - try { - SaxEvent name = pull(attrs, "name"); - if (isempty(name)) - throw new ParseException("Enumdef: Empty Enum Declaration name"); - - SaxEvent basetype = pull(attrs, "basetype"); - DapType basedaptype = null; - if (basetype == null) { - basedaptype = DapEnumeration.DEFAULTBASETYPE; - } else { - String typename = basetype.value; - if ("Byte".equalsIgnoreCase(typename)) - typename = "UInt8"; - basedaptype = (DapType) this.root.lookup(typename, DapSort.ATOMICTYPE); - if (basedaptype == null || !islegalenumtype(basedaptype)) - throw new ParseException("Enumdef: Invalid Enum Declaration Type name: " + basetype.value); - } - DapEnumeration dapenum = null; - dapenum = new DapEnumeration(name.value, basedaptype); - passReserved(attrs, dapenum); - DapGroup parent = getGroupScope(); - parent.addDecl(dapenum); - scopestack.push(dapenum); - } catch (DapException de) { - throw new ParseException(de); - } - } - - - @Override - void leaveenumdef() throws ParseException { - if (debug) - report("leaveenumdef"); - DapEnumeration eparent = (DapEnumeration) scopestack.pop(); - List econsts = eparent.getNames(); - if (econsts.size() == 0) - throw new ParseException("Enumdef: no enum constants specified"); - } - - @Override - void enumconst(SaxEvent name, SaxEvent value) throws ParseException { - if (debug) - report("enumconst"); - if (isempty(name)) - throw new ParseException("Enumconst: Empty enum constant name"); - if (isempty(value)) - throw new ParseException("Enumdef: Invalid enum constant value: " + value.value); - long lvalue = 0; - try { - BigInteger bivalue = new BigInteger(value.value); - bivalue = DapUtil.BIG_UMASK64.and(bivalue); - lvalue = bivalue.longValue(); - } catch (NumberFormatException nfe) { - throw new ParseException("Enumconst: illegal value: " + value.value); - } - try { - DapEnumeration parent = (DapEnumeration) getScope(DapSort.ENUMERATION); - // Verify that the name is a legal enum constant name, which is restricted - // vis-a-vis other names - if (!ParseUtil.isLegalEnumConstName(name.value)) - throw new ParseException("Enumconst: illegal enumeration constant name: " + name.value); - parent.addEnumConst(new DapEnumConst(name.value, lvalue)); - } catch (DapException de) { - throw new ParseException(de); - } - } - - @Override - void enterdimdef(XMLAttributeMap attrs) throws ParseException { - if (debug) - report("enterdimdef"); - SaxEvent name = pull(attrs, "name"); - SaxEvent size = pull(attrs, "size"); - long lvalue = 0; - if (isempty(name)) - throw new ParseException("Dimdef: Empty dimension declaration name"); - if (isempty(size)) - throw new ParseException("Dimdef: Empty dimension declaration size"); - try { - lvalue = Long.parseLong(size.value); - if (lvalue <= 0) - throw new ParseException("Dimdef: value <= 0: " + lvalue); - } catch (NumberFormatException nfe) { - throw new ParseException("Dimdef: non-integer value: " + size.value); - } - DapDimension dim = null; - try { - dim = new DapDimension(name.value, lvalue); - passReserved(attrs, dim); - dim.setShared(true); - DapGroup parent = getGroupScope(); - parent.addDecl(dim); - scopestack.push(dim); - } catch (DapException de) { - throw new ParseException(de); - } - } - - @Override - void leavedimdef() throws ParseException { - if (debug) - report("leavedimdef"); - scopestack.pop(); - } - - @Override - void dimref(SaxEvent nameorsize) throws ParseException { - if (debug) - report("dimref"); - try { - DapDimension dim = null; - DapVariable var = getVariableScope(); - assert var != null : "Internal error"; - - boolean isname = nameorsize.name.equals("name"); - if (isname && isempty(nameorsize)) - throw new ParseException("Dimref: Empty dimension reference name"); - else if (isempty(nameorsize)) - throw new ParseException("Dimref: Empty dimension size"); - if (isname) { - DapGroup dg = var.getGroup(); - if (dg == null) - throw new ParseException("Internal error: variable has no containing group"); - DapGroup grp = var.getGroup(); - if (grp == null) - throw new ParseException("Variable has no group"); - dim = (DapDimension) grp.findByFQN(nameorsize.value, DapSort.DIMENSION); - } else {// Size only is given; presume a number; create unique anonymous dimension - String ssize = nameorsize.value.trim(); - { - // Note that we create it in the root group - assert (root != null); - long anonsize; - try { - anonsize = Long.parseLong(nameorsize.value.trim()); - } catch (NumberFormatException nfe) { - throw new ParseException("Dimref: Illegal dimension size"); - } - dim = root.createAnonymous(anonsize); - } - } - if (dim == null) - throw new ParseException("Unknown dimension: " + nameorsize.value); - var.addDimension(dim); - } catch (DapException de) { - throw new ParseException(de.getMessage(), de.getCause()); - } - } - - @Override - void enteratomicvariable(SaxEvent open, XMLAttributeMap attrs) throws ParseException { - if (debug) - report("enteratomicvariable"); - try { - SaxEvent name = pull(attrs, "name"); - if (isempty(name)) - throw new ParseException("Atomicvariable: Empty dimension reference name"); - String typename = open.name; - if ("Byte".equals(typename)) - typename = "UInt8"; // special case - DapType basetype = (DapType) this.root.lookup(typename, DapSort.ENUMERATION, DapSort.ATOMICTYPE); - if (basetype == null) - throw new ParseException("AtomicVariable: Illegal type: " + open.name); - DapVariable var = null; - // Do type substitutions - var = new DapVariable(name.value, basetype); - passReserved(attrs, var); - // Look at the parent scope - DapNode parent = scopestack.peek(); - if (parent == null) - throw new ParseException("Variable has no parent"); - switch (parent.getSort()) { - case DATASET: - case GROUP: - ((DapGroup) parent).addDecl(var); - break; - case VARIABLE: - addField((DapVariable) parent, var); - break; - default: - assert false : "Atomic variable in illegal scope"; - } - scopestack.push(var); - } catch (DapException de) { - throw new ParseException(de); - } - } - - void openclosematch(SaxEvent close, DapSort sort) throws ParseException { - String typename = close.name; - if ("Byte".equals(typename)) - typename = "UInt8"; // special case - switch (sort) { - case VARIABLE: - TypeSort atype = TypeSort.getTypeSort(typename); - DapVariable var = (DapVariable) searchScope(sort); - assert var != null; - TypeSort vartype = var.getBaseType().getTypeSort(); - if (atype == null) - throw new ParseException("Variable: Illegal type: " + typename); - if (atype != vartype) - throw new ParseException(String.format("variable: open/close type mismatch: <%s> ", vartype, atype)); - break; - default: - throw new ParseException("Variable: Illegal type: " + typename); - } - } - - void leavevariable() throws ParseException { - scopestack.pop(); - } - - void leaveatomicvariable(SaxEvent close) throws ParseException { - openclosematch(close, DapSort.VARIABLE); - leavevariable(); - } - - @Override - void enterenumvariable(XMLAttributeMap attrs) throws ParseException { - if (debug) - report("enterenumvariable"); - try { - SaxEvent name = pull(attrs, "name"); - SaxEvent enumtype = pull(attrs, "enum"); - if (isempty(name)) - throw new ParseException("Enumvariable: Empty variable name"); - if (isempty(enumtype)) - throw new ParseException("Enumvariable: Empty enum type name"); - DapEnumeration target = (DapEnumeration) root.findByFQN(enumtype.value, DapSort.ENUMERATION); - if (target == null) - throw new ParseException("EnumVariable: no such enum: " + name.value); - DapVariable var = null; - var = new DapVariable(name.value, target); - passReserved(attrs, var); - // Look at the parent scope - DapNode parent = scopestack.peek(); - if (parent == null) - throw new ParseException("Variable has no parent"); - switch (parent.getSort()) { - case DATASET: - case GROUP: - ((DapGroup) parent).addDecl(var); - break; - case VARIABLE: - addField((DapVariable) parent, var); - break; - default: - assert false : "Atomic variable in illegal scope"; - } - scopestack.push(var); - } catch (DapException de) { - throw new ParseException(de); - } - } - - @Override - void leaveenumvariable(SaxEvent close) throws ParseException { - if (debug) - report("leaveenumvariable"); - openclosematch(close, DapSort.VARIABLE); - leavevariable(); - } - - @Override - void entermap(SaxEvent name) throws ParseException { - if (debug) - report("entermap"); - if (isempty(name)) - throw new ParseException("Mapref: Empty map name"); - DapVariable var; - try { - var = (DapVariable) root.findByFQN(name.value, DapSort.VARIABLE); - } catch (DapException de) { - throw new ParseException(de); - } - if (var == null) - throw new ParseException("Mapref: undefined variable: " + name.name); - // Verify that this is a legal map => - // 1. it is outside the scope of its parent if the parent - // is a structure. - DapNode container = var.getContainer(); - DapNode scope; - try { - scope = getParentScope(); - } catch (DapException de) { - throw new ParseException(de); - } - if ((container.getSort() == DapSort.STRUCTURE || container.getSort() == DapSort.SEQUENCE) && container == scope) - throw new ParseException("Mapref: map variable not in outer scope: " + name.name); - DapMap map = new DapMap(var); - try { - // Pull the top variable scope - DapVariable parent = (DapVariable) searchScope(DapSort.VARIABLE); - if (parent == null) - throw new ParseException("Variable has no parent: " + var); - parent.addMap(map); - } catch (DapException de) { - throw new ParseException(de); - } - scopestack.push(map); - } - - @Override - void leavemap() throws ParseException { - if (debug) - report("leavemap"); - scopestack.pop(); - } - - @Override - void enterstructurevariable(XMLAttributeMap attrs) throws ParseException { - if (debug) - report("enterstructurevariable"); - SaxEvent name = pull(attrs, "name"); - if (isempty(name)) - throw new ParseException("Structure: Empty structure name"); - try { - DapStructure type = null; - DapVariable var = null; - type = new DapStructure(name.value); - passReserved(attrs, type); - var = new DapVariable(name.value, type); - // Look at the parent scope - DapNode parent = scopestack.peek(); - if (parent == null) - throw new ParseException("Variable has no parent"); - switch (parent.getSort()) { - case DATASET: - case GROUP: - ((DapGroup) parent).addDecl(var); - var.getGroup().addDecl(type); - break; - case VARIABLE: - addField((DapVariable) parent, var); - var.getGroup().addDecl(type); - break; - default: - assert false : "Structure variable in illegal scope"; - } - scopestack.push(var); - } catch (DapException de) { - throw new ParseException(de); - } - } - - @Override - void leavestructurevariable(SaxEvent close) throws ParseException { - if (debug) - report("leavestructurevariable"); - openclosematch(close, DapSort.VARIABLE); - leavevariable(); - } - - @Override - void entersequencevariable(XMLAttributeMap attrs) throws ParseException { - if (debug) - report("entersequencevariable"); - SaxEvent name = pull(attrs, "name"); - if (isempty(name)) - throw new ParseException("Sequence: Empty sequence name"); - try { - DapVariable var = null; - DapType type = null; - type = new DapSequence(name.value); - passReserved(attrs, type); - var = new DapVariable(name.value, type); - // Look at the parent scope - DapNode parent = scopestack.peek(); - if (parent == null) - throw new ParseException("Variable has no parent"); - switch (parent.getSort()) { - case DATASET: - case GROUP: - ((DapGroup) parent).addDecl(var); - var.getGroup().addDecl(type); - break; - case VARIABLE: - addField((DapVariable) parent, var); - var.getGroup().addDecl(type); - break; - default: - assert false : "Structure variable in illegal scope"; - } - scopestack.push(var); - } catch (DapException de) { - throw new ParseException(de); - } - } - - @Override - void leavesequencevariable(SaxEvent close) throws ParseException { - if (debug) - report("leavesequencevariable"); - openclosematch(close, DapSort.VARIABLE); - leavevariable(); - } - - @Override - void enteratomicattribute(XMLAttributeMap attrs, NamespaceList nslist) throws ParseException { - if (debug) - report("enteratomicattribute"); - try { - DapNode parent = getMetadataScope(); - DapAttribute attr = null; - attr = createatomicattribute(attrs, nslist, parent); - scopestack.push(attr); - } catch (DapException de) { - throw new ParseException(de); - } - } - - @Override - void leaveatomicattribute() throws ParseException { - if (debug) - report("leaveatomicattribute"); - DapAttribute attr = (DapAttribute) scopestack.pop(); - // Ensure that the attribute has at least one value - if (java.lang.reflect.Array.getLength(attr.getValues()) == 0) - throw new ParseException("AtomicAttribute: attribute has no values"); - } - - @Override - void entercontainerattribute(XMLAttributeMap attrs, NamespaceList nslist) throws ParseException { - if (debug) - report("entercontainerattribute"); - try { - DapNode parent = getMetadataScope(); - DapAttribute attr = null; - attr = createcontainerattribute(attrs, nslist, parent); - scopestack.push(attr); - } catch (DapException de) { - throw new ParseException(de); - } - } - - @Override - void leavecontainerattribute() throws ParseException { - if (debug) - report("leavecontainerattribute"); - scopestack.pop(); - } - - /** - * This is called for ... - * - * @param value - * @throws ParseException - */ - @Override - void value(String value) throws ParseException { - if (debug) - report("value"); - try { - DapAttribute parent = (DapAttribute) getScope(DapSort.ATTRIBUTE); - createvalue(value, parent); - } catch (DapException de) { - throw new ParseException(de); - } - } - - /** - * This is called for - * - * @param value - * @throws ParseException - */ - @Override - void value(SaxEvent value) throws ParseException { - if (debug) - report("value"); - try { - DapAttribute parent = (DapAttribute) getScope(DapSort.ATTRIBUTE); - createvalue(value, parent); - } catch (DapException de) { - throw new ParseException(de); - } - } - - @Override - void otherxml(XMLAttributeMap attrs, DapXML root) throws ParseException { - if (debug) - report("enterotherxml"); - try { - DapNode parent = getMetadataScope(); - DapOtherXML other = createotherxml(attrs, parent); - parent.setAttribute(other); - other.setRoot(root); - if (debug) - report("leaveotherxml"); - } catch (DapException de) { - throw new ParseException(de); - } - } - - @Override - DapXML.XMLList xml_body(DapXML.XMLList body, DapXML elemortext) throws ParseException { - if (debug) - report("xml_body.enter"); - if (body == null) - body = new DapXML.XMLList(); - if (elemortext != null) - body.add(elemortext); - if (debug) - report("xml_body.exit"); - return body; - } - - @Override - DapXML element_or_text(SaxEvent open, XMLAttributeMap map, DapXML.XMLList body, SaxEvent close) - throws ParseException { - try { - if (debug) - report("element_or_text.enter"); - if (!open.name.equalsIgnoreCase(close.name)) - throw new ParseException(String.format("OtherXML: mismatch: <%s> vs ", open.name, close.name)); - DapXML thisxml = createxmlelement(open, map); - for (DapXML xml : body) { - thisxml.addElement(xml); - } - if (debug) - report("element_or_text.exit"); - return thisxml; - } catch (DapException e) { - throw new ParseException(e); - } - } - - @Override - DapXML xmltext(SaxEvent text) throws ParseException { - try { - if (debug) - report("xmltext"); - DapXML txt = createxmltext(text.text); - return txt; - } catch (DapException e) { - throw new ParseException(e); - } - } - - @Override - void entererror(XMLAttributeMap attrs) throws ParseException { - if (debug) - report("entererror"); - SaxEvent xhttpcode = pull(attrs, "httpcode"); - String shttpcode = (xhttpcode == null ? "400" : xhttpcode.value); - int httpcode = 0; - try { - httpcode = Integer.parseInt(shttpcode); - } catch (NumberFormatException nfe) { - throw new ParseException("Error Response; illegal http code: " + shttpcode); - } - this.errorresponse = new ErrorResponse(); - this.errorresponse.setCode(httpcode); - } - - @Override - void leaveerror() throws ParseException { - if (debug) - report("leaveerror"); - assert (this.errorresponse != null) : "Internal Error"; - } - - @Override - void errormessage(String value) throws ParseException { - if (debug) - report("errormessage"); - assert (this.errorresponse != null) : "Internal Error"; - String message = value; - message = Escape.entityUnescape(message); // Remove XML encodings - this.errorresponse.setMessage(message); - } - - @Override - void errorcontext(String value) throws ParseException { - if (debug) - report("errorcontext"); - assert (this.errorresponse != null) : "Internal Error"; - String context = value; - context = Escape.entityUnescape(context); // Remove XML encodings - this.errorresponse.setContext(context); - } - - @Override - void errorotherinfo(String value) throws ParseException { - if (debug) - report("errorotherinfo"); - assert (this.errorresponse != null) : "Internal Error"; - String other = value; - other = Escape.entityUnescape(other); // Remove XML encodings - this.errorresponse.setOtherInfo(other); - } - - @Override - String textstring(String prefix, SaxEvent text) throws ParseException { - if (debug) - report("text"); - if (prefix == null) - return text.text; - else - return prefix + text.text; - } - - ////////////////////////////////////////////////// - // Utilities - - void addField(DapVariable instance, DapVariable field) throws DapException { - DapType t = instance.getBaseType(); - switch (t.getTypeSort()) { - case Structure: - case Sequence: - ((DapStructure) t).addField(field); - field.setParent(instance); - break; - default: - assert false : "Container cannot be atomic variable"; - } - } - - void report(String action) { - getDebugStream().println("ACTION: " + action); - getDebugStream().flush(); - } - - static boolean isReserved(String name) { - for (String tag : RESERVEDTAGS) { - if (name.startsWith(tag)) - return true; - } - return false; - } -} diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4Token.java b/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4Token.java deleted file mode 100644 index 5fb23a9334..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4Token.java +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.dmr.parser.bison; - -public class Dap4Token extends SaxEvent { - - public Dap4Token() {} - -} // class Dap4Token - diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Debug.java b/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Debug.java deleted file mode 100644 index e3346eab08..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Debug.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.dmr.parser.bison; - -import dap4.core.dmr.parser.ParseUtil; -import dap4.core.util.Escape; -import java.util.Map; - -public abstract class Debug { - - static void addtext(StringBuilder dst, String txt, int flags) { - int len; - int pos; - boolean shortened = false; - - if (txt == null) { - dst.append("null"); - return; - } - if ((flags & ParseUtil.FLAG_TRIMTEXT) != 0) { - txt = txt.trim(); - } - len = txt.length(); - if ((flags & ParseUtil.FLAG_ELIDETEXT) != 0 && len > ParseUtil.MAXTEXT) { - len = ParseUtil.MAXTEXT; - shortened = true; - } - dst.append('|'); - for (int i = 0; i < txt.length(); i++) { - char c = txt.charAt(i); - if (len-- <= 0) - continue; - if ((flags & ParseUtil.FLAG_ESCAPE) != 0 && c < ' ') { - dst.append('\\'); - switch (c) { - case '\n': - dst.append('n'); - break; - case '\r': - dst.append('r'); - break; - case '\f': - dst.append('f'); - break; - case '\t': - dst.append('t'); - break; - default: {// convert to octal - int uc = c; - int oct; - oct = ((uc >> 6) & 077); - dst.append((char) ('0' + oct)); - oct = ((uc >> 3) & 077); - dst.append((char) ('0' + oct)); - oct = ((uc) & 077); - dst.append((char) ('0' + oct)); - } - break; - } - } else if ((flags & ParseUtil.FLAG_NOCR) != 0 && c == '\r') { - continue; - } else { - dst.append((char) c); - } - } - if (shortened) { - dst.append("..."); - } - dst.append('|'); - } - - // Trace a SAX Token - public static String trace(SaxEvent token) { - return trace(token, ParseUtil.DEFAULTFLAGS); - } - - public static String trace(SaxEvent token, int flags) { - StringBuilder result = new StringBuilder(); - String name = "UNDEFINED"; - String value = ""; - String text = ""; - SaxEventType event = null; - - name = token.name; - value = token.value; - text = token.text; - event = token.eventtype; - - result.append("[" + event.name() + "] "); - - switch (event) { - case STARTELEMENT: - case ENDELEMENT: - result.append(": element=|"); - result.append(name); - result.append("|"); - break; - case CHARACTERS: - result.append(" text="); - addtext(result, text, flags); - String trans = Escape.entityUnescape(text); - result.append(" translation="); - addtext(result, trans, flags); - break; - case ATTRIBUTE: - result.append(": name="); - addtext(result, name, flags); - result.append(" value="); - addtext(result, value, flags); - break; - case STARTDOCUMENT: - break; - case ENDDOCUMENT: - break; - default: - assert (false) : "Unexpected tokentype"; - } - result.append(" eventtype=" + event.name()); - return result.toString(); - } - - static String traceList(Dap4Actions.XMLAttributeMap map) { - StringBuilder result = new StringBuilder(); - for (Map.Entry entry : map.entrySet()) { - SaxEvent event = entry.getValue(); - String trace = trace(event); - if (result.length() != 0) - result.append("\n"); - result.append(entry.getKey()); - result.append(": "); - result.append(trace); - } - return result.toString(); - } - - -}// Debug diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/LexException.java b/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/LexException.java deleted file mode 100644 index 714dd2acc4..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/LexException.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 1998 - 2010. University Corporation for Atmospheric Research/Unidata - * Portions of this software were developed by the Unidata Program at the - * University Corporation for Atmospheric Research. - * - * Access and use of this software shall impose the following obligations - * and understandings on the user. The user is granted the right, without - * any fee or cost, to use, copy, modify, alter, enhance and distribute - * this software, and any derivative works thereof, and its supporting - * documentation for any purpose whatsoever, provided that this entire - * notice appears in all copies of the software, derivative works and - * supporting documentation. Further, UCAR requests that the user credit - * UCAR/Unidata in any publications that result from the use of this - * software or in any product that includes this software. The names UCAR - * and/or Unidata, however, may not be used in any advertising or publicity - * to endorse or promote any products or commercial entity unless specific - * written permission is obtained from UCAR/Unidata. The user also - * understands that UCAR/Unidata is not obligated to provide the user with - * any support, consulting, training or assistance of any kind with regard - * to the use, operation and performance of this software nor to provide - * the user with any updates, revisions, new versions or "bug fixes." - * - * THIS SOFTWARE IS PROVIDED BY UCAR/UNIDATA "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL UCAR/UNIDATA BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION - * WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -////////////////////////////////////////////////// - -package dap4.core.dmr.parser.bison; - -public class LexException extends java.lang.Exception { - public LexException(String msg) { - super(msg); - } - - public LexException(Throwable e) { - super(e); - } - - public LexException(String msg, Throwable e) { - super(msg, e); - } -} diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Lexeme.java b/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Lexeme.java deleted file mode 100644 index 985b99dbc1..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/Lexeme.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.dmr.parser.bison; - -public class Lexeme { - public String name; // element or attribute name - public int open; // Bison token for element open - public int close; // Bison token for element close - public int atoken; // Bison token if this is an attribute - public String[] legalAttributes; /* not currently used */ - - public Lexeme(String name, int atoken) { - this(name, 0, 0, atoken, null); - } - - public Lexeme(String name, int open, int close) { - this(name, open, close, 0, null); - } - - public Lexeme(String name, int open, int close, String[] alist) { - this(name, open, close, 0, alist); - } - - public Lexeme(String name, int open, int close, int atoken, String[] alist) { - this.name = name; - this.open = open; - this.close = close; - this.atoken = atoken; - legalAttributes = alist; - } - - public void attribute(String[] alist) { - legalAttributes = alist; - // check for duplicates - for (int i = 0; i < legalAttributes.length; i++) { - for (int j = i + 1; j < legalAttributes.length; j++) - assert (!legalAttributes[i].equals(legalAttributes[j])); - } - } - - public String toString() { - StringBuilder text = new StringBuilder(); - text.append(String.format("%s open=%d close=%d a=%d", name, open, close, atoken)); - if (legalAttributes != null && legalAttributes.length > 0) { - text.append(" attributes="); - for (String s : legalAttributes) { - text.append(" "); - text.append(s); - } - } - return text.toString(); - } -} // class Lexeme diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/SaxEvent.java b/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/SaxEvent.java deleted file mode 100644 index 3d5e139a21..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/SaxEvent.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.dmr.parser.bison; - -import org.xml.sax.Locator; - -/** - * Define a class to hold information provided to each kind of eventtype - */ -public class SaxEvent { - public SaxEventType eventtype = null; - public String name = null; - public String fullname = null; - public String namespace = null; - - public String value = null; // for attributes - public String text = null; // for text - - // public String publicid = null; - // public String systemid = null; - - // Coverity[FB.URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD] - public Locator locator = null; - - public SaxEvent() {} - - public SaxEvent(SaxEventType eventtype, Locator locator) { - this.eventtype = eventtype; - this.locator = locator; - } - - public SaxEvent(SaxEventType eventtype, Locator locator, String name) { - this(eventtype, locator); - this.name = name; - } - - public SaxEvent(SaxEventType eventtype, Locator locator, String name, String fullname, String uri) { - this(eventtype, locator, name); - this.fullname = fullname; - this.namespace = uri; - } - - public String toString() { - StringBuilder text = new StringBuilder(); - if (eventtype == null) - text.append("notype"); - else - text.append(eventtype.toString()); - text.append(" "); - if (fullname != null) - text.append(fullname); - else if (name != null) - text.append(name); - else - text.append("noname"); - if (value != null) { - text.append(" = "); - text.append(value); - } - if (this.text != null) { - text.append(" = "); - text.append(this.text); - } - return text.toString(); - } - -} // class SaxEvent - diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/SaxEventHandler.java b/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/SaxEventHandler.java deleted file mode 100644 index 418837c52c..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/SaxEventHandler.java +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.dmr.parser.bison; - -import javax.xml.XMLConstants; -import org.xml.sax.*; -import org.xml.sax.helpers.DefaultHandler; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; -import java.io.ByteArrayInputStream; -import java.nio.charset.Charset; - -public abstract class SaxEventHandler extends DefaultHandler { - ////////////////////////////////////////////////// - // Constants - - static boolean TRACE = false; - - static Charset UTF8 = Charset.forName("UTF-8"); - - static final String LOAD_EXTERNAL_DTD = "http://apache.org/xml/features/nonvalidating/load-external-dtd"; - - ////////////////////////////////////////////////// - // static types - - ////////////////////////////////////////////////// - // static fields - - ////////////////////////////////////////////////// - // Instance variables - - protected String document = null; - - // Sax parser state - protected Locator locator = null; - protected SAXParserFactory spf = null; - protected SAXParser saxparser = null; - protected ByteArrayInputStream input = null; - - ////////////////////////////////////////////////// - // Constructor(s) - - public SaxEventHandler() { - - } - - ////////////////////////////////////////////////// - // Abstract method(s) - - // Send the lexeme to the the subclass to process - public abstract void yyevent(SaxEvent token) throws SAXException; - - ////////////////////////////////////////////////// - // Get/Set - public Locator getLocator() { - return this.locator; - } - ////////////////////////////////////////////////// - // Public API - - public boolean parse(String document) throws SAXException { - // Trim and strip any leading - StringBuilder doc = new StringBuilder(document.trim()); - int index = doc.indexOf(""); - if (index < 0) - throw new SAXException("Document has malformed prefix"); - doc.delete(0, index + 2); - // remove any leading crlf - while (doc.length() > 0 && "\r\n".indexOf(doc.charAt(0)) >= 0) - doc.deleteCharAt(0); - document = doc.toString(); - } - this.document = document; - // Create the sax parser that will drive us with events - try { - spf = SAXParserFactory.newInstance(); - spf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - spf.setValidating(false); - spf.setNamespaceAware(true); - spf.setFeature(LOAD_EXTERNAL_DTD, false); - saxparser = spf.newSAXParser(); - // Set up for the parse - input = new ByteArrayInputStream(document.getBytes(UTF8)); - saxparser.parse(input, this); // 'this' is link to subclass parser - return true; - } catch (Exception e) { - throw new SAXException(e); - } - } - - ////////////////////////////////////////////////// - // DefaultHandler Overrides - - // We feed only a subset of the possible events into - // the subclass handler. This can be changed by - // overriding the suppressing eventtype handlers below. - - @Override - public void setDocumentLocator(Locator locator) { - this.locator = locator; - } - - @Override - public void startDocument() throws SAXException { - SaxEvent token = new SaxEvent(SaxEventType.STARTDOCUMENT, locator); - if (TRACE) - trace("eventtype.%s: %s%n", token.eventtype.name(), token.toString()); - locatedEvent(token); - } - - @Override - public void endDocument() throws SAXException { - SaxEvent token = new SaxEvent(SaxEventType.ENDDOCUMENT, locator); - if (TRACE) - trace("eventtype.%s: %s%n", token.eventtype.name(), token.toString()); - locatedEvent(token); - } - - @Override - public void startElement(String nsuri, String name, String qualname, Attributes attributes) throws SAXException { - SaxEvent token = new SaxEvent(SaxEventType.STARTELEMENT, locator, name, qualname, nsuri); - if (TRACE) - trace("eventtype.%s: %s%n", token.eventtype.name(), token.toString()); - locatedEvent(token); - // Now pass the attributes as tokens - int nattr = attributes.getLength(); - for (int i = 0; i < nattr; i++) { - String aname = attributes.getLocalName(i); - if ("".equals(aname)) - aname = attributes.getQName(i); - String value = attributes.getValue(i); - token = new SaxEvent(SaxEventType.ATTRIBUTE, locator, aname); - token.value = value; - if (TRACE) - trace("eventtype.%s: %s%n", token.eventtype.name(), token.toString()); - locatedEvent(token); - } - } - - @Override - public void endElement(String nsuri, String name, String qualname) throws SAXException { - SaxEvent token = new SaxEvent(SaxEventType.ENDELEMENT, locator, name, qualname, nsuri); - if (TRACE) - trace("eventtype.%s: %s%n", token.eventtype.name(), token.toString()); - locatedEvent(token); - } - - @Override - public void characters(char[] ch, int start, int length) throws SAXException { - SaxEvent token = new SaxEvent(SaxEventType.CHARACTERS, locator); - token.text = new String(ch, start, length); - if (TRACE) - trace("eventtype.%s: %s%n", token.eventtype.name(), token.toString()); - locatedEvent(token); - } - - // Following events are suppressed - - @Override - public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException { - // should never see this since not validating - return; - } - - @Override - public void endPrefixMapping(String prefix) throws SAXException { - return; - } - - @Override - public void notationDecl(String name, String publicId, String systemId) throws SAXException { - return; - } - - @Override - public void processingInstruction(String target, String data) throws SAXException { - return; - } - - @Override - public void skippedEntity(String name) throws SAXException { - return; - } - - @Override - public void startPrefixMapping(String prefix, String uri) throws SAXException { - return; - } - - @Override - public void unparsedEntityDecl(String name, String publicId, String systemId, String notationName) - throws SAXException { - return; - } - - ////////////////////////////////////////////////// - // Entity resolution (Ignored) - - @Override - public InputSource resolveEntity(String publicId, String systemId) { - if (TRACE) - trace("eventtype.RESOLVEENTITY: %s.%s%n", publicId, systemId); - return null; - } - - ////////////////////////////////////////////////// - // Error handling Events - - @Override - public void fatalError(SAXParseException e) throws SAXException { - throw new SAXParseException(String.format("Sax fatal error: %s; %s%n", e, report(this.locator)), this.locator); - } - - @Override - public void error(SAXParseException e) throws SAXException { - System.err.printf("Sax error: %s; %s%n", e, report(this.locator)); - } - - @Override - public void warning(SAXParseException e) throws SAXException { - System.err.printf("Sax warning: %s; %s%n", e, report(this.locator)); - } - - protected String report(Locator locator) { - int lineno = locator.getLineNumber(); - int colno = locator.getColumnNumber(); - String text = this.document; - String[] lines = text.split("[\n]"); - for (int i = lines.length; i <= lineno + 1; i++) { - // Coverity[FB.SBSC_USE_STRINGBUFFER_CONCATENATION] - text = text + " \n"; - } - lines = text.split("[\n]"); - String msg; - try { - msg = lines[lineno]; - while (msg.length() <= colno) { - msg = msg + ' '; - } - msg = msg.substring(0, colno) + '^' + msg.substring(colno, msg.length()); - msg = locator.toString() + '|' + msg + '|'; - } catch (ArrayIndexOutOfBoundsException t) { - msg = locator.toString(); - } - return msg; - } - - - ////////////////////////////////////////////////// - // Location printing - - protected void locatedEvent(SaxEvent token) throws SAXException { - try { - yyevent(token); - } catch (SAXException se) { - throw new SAXException(locatedError(se.getMessage())); - } - } - - - protected String locatedError(String msg) { - String locmsg = - msg + String.format("; near %d::%d%n", this.locator.getLineNumber(), this.locator.getColumnNumber()); - return locmsg; - } - - - protected void trace(String msg, Object... args) { - if (TRACE) - System.err.printf(locatedError(String.format(msg, args))); - } - -} // class SaxEventHandler diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/SaxEventType.java b/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/SaxEventType.java deleted file mode 100644 index 8d4eb953d1..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/dmr/parser/bison/SaxEventType.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.dmr.parser.bison; - -/** - * Provide an enumeration to mark all the possible Sax Parser - * generated events (except error events) - */ - -/** - * This should be essentially 1-1 for all the handler callbacks. - * Exceptions: TBD - */ - -public enum SaxEventType { - CHARACTERS, ENDDOCUMENT, ENDELEMENT, ENDPREFIXMAPPING, IGNORABLEWHITESPACE, NOTATIONDECL, PROCESSINGINSTRUCTION, SETDOCUMENTLOCATOR, SKIPPEDENTITY, STARTDOCUMENT, STARTELEMENT, STARTPREFIXMAPPING, UNPARSEDENTITYDECL, - // Following is added to support each attribute as an eventtype - ATTRIBUTE; -}; // enum SaxEventType diff --git a/dap4/d4core/src/main/java/dap4/core/util/DapContext.java b/dap4/d4core/src/main/java/dap4/core/util/DapContext.java deleted file mode 100644 index 0edcad7b16..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/util/DapContext.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.util; - -import java.util.Map; - -/** - * Provide a general map of Object->Object to serve - * to pass context/env info into various classes. - * Note that we cannot use e.g. java.util.Properties - * because it is a String->String map. - */ - -public class DapContext extends java.util.HashMap { - public DapContext() { - super(); - } - - public String toString() { - StringBuilder buf = new StringBuilder("DapContext{"); - boolean first = true; - for (Map.Entry entry : super.entrySet()) { - if (!first) - buf.append(","); - buf.append("|"); - buf.append(entry.getKey().toString()); - buf.append("|"); - buf.append("="); - buf.append("|"); - buf.append(entry.getValue().toString()); - buf.append("|"); - first = false; - } - buf.append("}"); - return buf.toString(); - } - -} diff --git a/dap4/d4core/src/main/java/dap4/core/util/DapDump.java b/dap4/d4core/src/main/java/dap4/core/util/DapDump.java deleted file mode 100644 index 4b08734729..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/util/DapDump.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - - -package dap4.core.util; - -import java.io.*; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.util.Arrays; - -public abstract class DapDump { - ////////////////////////////////////////////////// - // Provide a simple dump of binary data - // (Static method) - - ////////////////////////////////////////////////// - // Constants - - static int MAXLIMIT = 20000; - ////////////////////////////////////////////////// - // Provide a simple dump of binary data - - public static void dumpbytes(ByteBuffer buf0, boolean skipdmr) { - int savepos = buf0.position(); - int limit0 = buf0.limit(); - int skipcount = 0; - if (limit0 > MAXLIMIT) - limit0 = MAXLIMIT; - if (limit0 >= buf0.limit()) - limit0 = buf0.limit(); - if (skipdmr) { - ByteOrder saveorder = buf0.order(); - buf0.order(ByteOrder.BIG_ENDIAN); // must read in network order - skipcount = buf0.getInt(); // dmr count - buf0.order(saveorder); - skipcount &= 0xFFFFFF; // mask off the flags to get true count - skipcount += 4; // skip the count also - } - byte[] bytes = new byte[(limit0 + 8) - skipcount]; - Arrays.fill(bytes, (byte) 0); - buf0.position(savepos + skipcount); - buf0.get(bytes, 0, limit0 - skipcount); - buf0.position(savepos); - - System.err.println("order=" + buf0.order()); - - ByteBuffer buf = ByteBuffer.wrap(bytes).order(buf0.order()); - dumpbytes(buf); - } - - /** - * Dump the contents of a buffer from 0 to position - * - * @param buf0 byte buffer to dump - */ - public static void dumpbytes(ByteBuffer buf0) { - int stop = buf0.limit(); - int size = stop + 8; - int savepos = buf0.position(); - assert savepos == 0; - byte[] bytes = new byte[size]; - Arrays.fill(bytes, (byte) 0); - buf0.get(bytes, 0, stop); - buf0.position(savepos); - ByteBuffer buf = ByteBuffer.wrap(bytes).order(buf0.order()); - buf.position(0); - buf.limit(size); - int i = 0; - try { - for (i = 0; buf.position() < stop; i++) { - savepos = buf.position(); - int iv = buf.getInt(); - buf.position(savepos); - long lv = buf.getLong(); - buf.position(savepos); - short sv = buf.getShort(); - buf.position(savepos); - byte b = buf.get(); - int ub = ((int) b) & 0x000000FF; - long uiv = ((long) iv) & 0xFFFFFFFFL; - int usv = ((int) sv) & 0xFFFF; - int ib = (int) b; - char c = (char) ub; - String s = Character.toString(c); - if (c == '\r') - s = "\\r"; - else if (c == '\n') - s = "\\n"; - else if (c < ' ' || c >= 0x7f) - s = "?"; - System.err.printf("[%03d] %02x %03d %4d '%s'", i, ub, ub, ib, s); - System.err.printf("\t%12d 0x%08x", iv, uiv); - System.err.printf("\t%5d\t0x%04x", sv, usv); - System.err.println(); - System.err.flush(); - } - - } catch (Exception e) { - System.err.println("failure:" + e); - } finally { - System.err.flush(); - // new Exception().printStackTrace(System.err); - System.err.flush(); - } - } - - public static void dumpbytestream(OutputStream stream, ByteOrder order, String tag) { - if (stream instanceof ByteArrayOutputStream) { - byte[] content = ((ByteArrayOutputStream) stream).toByteArray(); - dumpbytestream(content, order, tag); - } - } - - public static void dumpbytestream(ByteBuffer buf, ByteOrder order, String tag) { - dumpbytestream(buf.array(), 0, buf.position(), order, tag); - } - - public static void dumpbytestream(byte[] content, ByteOrder order, String tag) { - dumpbytestream(content, 0, content.length, order, tag); - } - - public static void dumpbytestream(byte[] content, int start, int len, ByteOrder order, String tag) { - System.err.println("++++++++++ " + tag + " ++++++++++ "); - ByteBuffer tmp = ByteBuffer.wrap(content).order(order); - tmp.position(start); - tmp.limit(len); - DapDump.dumpbytes(tmp); - System.err.println("++++++++++ " + tag + " ++++++++++ "); - System.err.flush(); - } - -} diff --git a/dap4/d4core/src/main/java/dap4/core/util/Index.java b/dap4/d4core/src/main/java/dap4/core/util/Index.java deleted file mode 100644 index 9a1049e527..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/util/Index.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.util; - -import java.util.Arrays; - -public class Index { - public static final Index SCALAR = new Index(0); - - public int rank; - public long[] indices; // allow direct access - public long[] dimsizes; // allow direct access - - ////////////////////////////////////////////////// - // Constructor(s) - - public Index(int rank) { - this.rank = rank; - this.dimsizes = new long[rank]; - indices = new long[rank]; - if (this.rank > 0) { - Arrays.fill(indices, 0); - Arrays.fill(dimsizes, 0); - } - } - - public Index(Index index) { - this(index.getRank()); - if (this.rank > 0) { - System.arraycopy(index.indices, 0, this.indices, 0, this.rank); - System.arraycopy(index.dimsizes, 0, this.dimsizes, 0, this.rank); - } - } - - public Index(long[] indices, long[] dimsizes) { - this(dimsizes.length); - if (this.rank > 0) { - System.arraycopy(indices, 0, this.indices, 0, this.rank); - System.arraycopy(dimsizes, 0, this.dimsizes, 0, this.rank); - } - } - - public String toString() { - StringBuilder buf = new StringBuilder(); - buf.append('['); - for (int i = 0; i < this.rank; i++) { - if (i > 0) - buf.append(','); - buf.append(indices[i]); - buf.append('/'); - buf.append(dimsizes[i]); - } - buf.append("]("); - buf.append(this.index()); - buf.append(")"); - return buf.toString(); - } - - - /** - * Compute the linear index - * from the current odometer indices. - */ - public long index() { - long offset = 0; - for (int i = 0; i < this.indices.length; i++) { - offset *= this.dimsizes[i]; - offset += this.indices[i]; - } - return offset; - } - - public int getRank() { - return this.rank; - } - - public long get(int i) { - if (i < 0 || i >= this.rank) - throw new IllegalArgumentException(); - return this.indices[i]; - } - - public long getSize(int i) { - if (i < 0 || i >= this.rank) - throw new IllegalArgumentException(); - return this.dimsizes[i]; - } - - public boolean isScalar() { - return (rank == 0 && indices.length == 1 && index() == 1); - } - - -} diff --git a/dap4/d4core/src/main/java/dap4/core/util/MultiOdometer.java b/dap4/d4core/src/main/java/dap4/core/util/MultiOdometer.java deleted file mode 100644 index 99c82ada73..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/util/MultiOdometer.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.util; - -import dap4.core.dmr.DapDimension; -import java.util.ArrayList; -import java.util.List; -import java.util.NoSuchElementException; - -/** - * An odometer capable of dealing with a Multi-slices. - */ - -public class MultiOdometer extends Odometer { - - protected static boolean DEBUG = false; - - ////////////////////////////////////////////////// - // Instance variables - - protected int current; // pointers into multslice list - protected long[] sizes; // # of subslices in each slice - protected List> slicesets; // Set of all combinations of slices - protected List odomset; // Odometers created from slicesets - - ////////////////////////////////////////////////// - // Constructor(s) - - public MultiOdometer() {} - - public MultiOdometer(List set) throws DapException { - this(set, null); - } - - public MultiOdometer(List set, List dimset) throws DapException { - super(set, dimset); - super.ismulti = true; - this.sizes = new long[this.rank]; - this.odomset = new ArrayList<>(); - for (int i = 0; i < this.rank; i++) { - Slice sl = set.get(i); - List subslices = sl.getSubSlices(); - this.sizes[i] = subslices.size(); - } - int truerank = this.rank; - if (truerank == 0) { - this.slicesets = null; - this.odomset = null; - } else { - PowerSet ps = new PowerSet(this.sizes); - long pssize = ps.getTotalSize(); - long[][] setindices = ps.getPowerSet(); - assert setindices.length == pssize; - this.slicesets = new ArrayList<>(); - if (DEBUG) { - System.err.printf("Multi: |slicesets| = %d%n", setindices.length); - System.err.println(ps.toString()); - } - // Create set of slicsets comprising this MultiOdometer - for (int i = 0; i < pssize; i++) { - long[] indexset = setindices[i]; - assert indexset.length == truerank; - // Pick out the desired set of slices - List subset = new ArrayList<>(); - for (int j = 0; j < this.rank; j++) { - Slice s0 = set.get(j); - Slice ss = s0.getSubSlice((int) indexset[j]); - subset.add(ss); - } - this.slicesets.add(subset); - } - assert this.slicesets.size() == pssize; - // Create set of odometers comprising this MultiOdometer - for (int i = 0; i < pssize; i++) { - Odometer sslodom = Odometer.factory(this.slicesets.get(i), dimset); - this.odomset.add(sslodom); - } - } - this.current = 0; - } - - ////////////////////////////////////////////////// - - @Override - public String toString() { - StringBuilder buf = new StringBuilder(); - for (int i = 0; i < rank; i++) { - Slice s = slice(i); - if (i == current) - buf.append("*"); - buf.append(s.toString()); - buf.append(String.format("(%d)", s.getCount())); - } - return buf.toString(); - } - - ////////////////////////////////////////////////// - // Iterator API Overrides - - @Override - public boolean hasNext() { - if (this.current >= odomset.size()) - return false; - Odometer ocurrent = odomset.get(this.current); - if (ocurrent.hasNext()) - return true; - // Try to move to next odometer - this.current++; - return hasNext(); - } - - @Override - public Index next() { - if (this.current >= odomset.size()) - throw new NoSuchElementException(); - Odometer ocurrent = odomset.get(this.current); - assert ocurrent.hasNext(); - return ocurrent.next(); - } - - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - - /** - * Compute the total number of elements. - */ - @Override - public long totalSize() { - long size = 1; - for (int i = 0; i < this.rank; i++) { - size *= slice(i).getCount(); - } - return size; - } - - @Override - public List getSubOdometers() { - return this.odomset; - } - -} diff --git a/dap4/d4core/src/main/java/dap4/core/util/Odometer.java b/dap4/d4core/src/main/java/dap4/core/util/Odometer.java deleted file mode 100644 index bccd69e1f5..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/util/Odometer.java +++ /dev/null @@ -1,269 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.util; - -import dap4.core.dmr.DapDimension; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.NoSuchElementException; - -/** - * A classic implementation of an odometer - * taken from the netcdf-c code. - * Extended to provide iterator interface - */ - -public class Odometer implements Iterator { - - ////////////////////////////////////////////////// - // Constants - - // Mnemonic - - protected static enum STATE { - INITIAL, STARTED, DONE; - } - - ////////////////////////////////////////////////// - // factories - - public static Odometer factoryScalar() { - return new ScalarOdometer(); - } - - public static Odometer factory(List slices) throws DapException { - return factory(slices, null); - } - - public static Odometer factory(List slices, List dimset) throws DapException { - // check for scalar case - if (dimset != null && dimset.size() == 0) { - if (!DapUtil.isScalarSlices(slices)) - throw new DapException("Cannot build scalar odometer with non-scalar slices"); - return factoryScalar(); - } - boolean multi = false; - if (slices != null) { - for (int i = 0; i < slices.size(); i++) { - if (slices.get(i).getSort() == Slice.Sort.Multi) { - multi = true; - break; - } - } - } - if (slices == null || slices.size() == 0) - return factoryScalar(); - else if (multi) - return new MultiOdometer(slices, dimset); - else - return new Odometer(slices, dimset); - } - - ////////////////////////////////////////////////// - // Instance variables - - protected STATE state = STATE.INITIAL; - - protected boolean ismulti = false; - - protected int rank = 0; - protected List slices = null; - protected List dimset = null; - - // The current odometer indices - protected Index index; - - // precompute this.slices[i].getLast() - this.slices[i].getStride() - protected long[] endpoint; - - ////////////////////////////////////////////////// - // Constructor(s) - - public Odometer() {} - - public Odometer(List set) throws DapException { - this(set, null); - } - - public Odometer(List set, List dimset) throws DapException { - if (set == null) - throw new DapException("Null slice list"); - if (dimset != null && set.size() != dimset.size()) - throw new DapException("Rank mismatch"); - this.rank = set.size(); - if (this.rank == 0) - throw new DapException("Rank == 0; use Scalar Odometer"); - this.slices = new ArrayList<>(); - this.slices.addAll(set); - if (dimset != null) { - this.dimset = new ArrayList<>(); - this.dimset.addAll(dimset); - } - this.endpoint = new long[this.rank]; - this.index = new Index(rank); - for (int i = 0; i < this.rank; i++) { - this.index.dimsizes[i] = slices.get(i).getMax(); - } - reset(); - } - - protected void reset() { - for (int i = 0; i < this.rank; i++) { - try { - slices.get(i).finish(); - this.index.indices[i] = this.slices.get(i).getFirst(); - this.endpoint[i] = this.slices.get(i).getLast() - this.slices.get(i).getStride(); - } catch (DapException de) { - throw new IllegalArgumentException(de); - } - } - } - - public String toString() { - StringBuilder buf = new StringBuilder(); - for (int i = 0; i < rank; i++) { - if (i > 0) - buf.append(","); - if (dimset != null) - buf.append(dimset.get(i) != null ? dimset.get(i).getShortName() : "null"); - buf.append(this.slices.get(i).toString()); - buf.append(String.format("(%d)", this.slices.get(i).getCount())); - if (this.index != null) - buf.append(String.format("@%d", this.index.indices[i])); - } - return buf.toString(); - } - - ////////////////////////////////////////////////// - // Odometer API - - /** - * Return odometer rank - */ - public int rank() { - return this.rank; - } - - /** - * Return ith slice - */ - public Slice slice(int i) { - if (i < 0 || i >= this.rank) - throw new IllegalArgumentException(); - return this.slices.get(i); - } - - - public List getSlices() { - return this.slices; - } - - /** - * Compute the linear index - * from the current odometer indices. - */ - public long index() { - return index.index(); - } - - /** - * Return current set of indices - */ - public Index indices() { - return this.index; - } - - /** - * Compute the total number of elements. - */ - public long totalSize() { - long size = 1; - for (int i = 0; i < this.rank; i++) { - size *= this.slices.get(i).getCount(); - } - return size; - } - - ////////////////////////////////////////////////// - // Iterator API - - @Override - public boolean hasNext() { - int stop = this.rank; - switch (this.state) { - case INITIAL: - return true; - case STARTED: - int i; - for (i = stop - 1; i >= 0; i--) { // walk backwards - if (this.index.indices[i] <= this.endpoint[i]) - return true; - } - this.state = STATE.DONE; - break; - case DONE: - } - return false; - } - - @Override - public Index next() { - int i; - int lastpos = this.rank; - int firstpos = 0; - switch (this.state) { - case INITIAL: - this.state = STATE.STARTED; - break; - case STARTED: - i = step(firstpos, lastpos); - if (i < 0) - this.state = STATE.DONE; - break; - case DONE: - break; - } - if (this.state == STATE.DONE) - throw new NoSuchElementException(); - return indices(); - } - - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - - ////////////////////////////////////////////////// - - // on entry: indices are the last index set - // on exit, the indices are the next value - // return index of place where we have room to step; - // return -1 if we have completed. - public int step(int firstpos, int lastpos) { - for (int i = lastpos - 1; i >= firstpos; i--) { // walk backwards - if (this.index.indices[i] > this.endpoint[i]) - this.index.indices[i] = this.slices.get(i).getFirst(); // reset this position - else { - this.index.indices[i] += this.slices.get(i).getStride(); // move to next indices - return i; - } - } - return -1; - } - - public List getSubOdometers() { - List list = new ArrayList<>(); - list.add(this); - return list; - } - - public boolean isMulti() { - return this.ismulti; - } - - -} diff --git a/dap4/d4core/src/main/java/dap4/core/util/ResponseFormat.java b/dap4/d4core/src/main/java/dap4/core/util/ResponseFormat.java deleted file mode 100644 index 740a528766..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/util/ResponseFormat.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - - -package dap4.core.util; - -/** - * Define the enum for the possible Response/Response modes - */ -public enum ResponseFormat { - TEXT("txt"), XML("xml"), HTML("html"), NONE(null); - - private String format; - - ResponseFormat(String format) { - this.format = format; - } - - public String format() { - return format; - } - - public static ResponseFormat formatFor(String s) { - if (s == null) - return null; - for (ResponseFormat format : ResponseFormat.values()) { - if (s.equalsIgnoreCase(format.format) || s.equalsIgnoreCase("." + format.format)) - return format; - } - return null; - } - - public String toString() { - return format; - } -} - - diff --git a/dap4/d4core/src/main/java/dap4/core/util/ScalarOdometer.java b/dap4/d4core/src/main/java/dap4/core/util/ScalarOdometer.java deleted file mode 100644 index bafc9a5436..0000000000 --- a/dap4/d4core/src/main/java/dap4/core/util/ScalarOdometer.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.core.util; - -import java.util.NoSuchElementException; - -/** - * A implementation of an odometer for scalar variables. - */ - -public class ScalarOdometer extends Odometer { - ////////////////////////////////////////////////// - // Constants - - public ScalarOdometer() { - this.state = STATE.INITIAL; - this.index = new Index(0); - this.slices = Slice.SCALARSLICES; - } - - public long index() { - return 0; - } - - public long totalSize() { - return 1; - } - - public boolean hasNext() { - return this.state != STATE.DONE; - } - - public Index next() { - if (this.state == STATE.DONE) - throw new NoSuchElementException(); - this.state = STATE.DONE; - return Index.SCALAR; - } - - public void remove() { - throw new UnsupportedOperationException(); - } - -} diff --git a/dap4/d4lib/build.gradle b/dap4/d4lib/build.gradle deleted file mode 100644 index 0c84380c55..0000000000 --- a/dap4/d4lib/build.gradle +++ /dev/null @@ -1,16 +0,0 @@ -apply from: "$rootDir/gradle/any/dependencies.gradle" -apply from: "$rootDir/gradle/any/java-library.gradle" - -dependencies { - api enforcedPlatform(project(':netcdf-java-platform')) - - compile project(':dap4:d4core') - compile project(':httpservices') - compile project(':netcdf4') - - compile 'org.apache.httpcomponents:httpclient' - compile 'org.apache.httpcomponents:httpcore' - compile 'net.java.dev.jna:jna' - compile 'com.beust:jcommander' - compile 'org.slf4j:slf4j-api' -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/AbstractCursor.java b/dap4/d4lib/src/main/java/dap4/dap4lib/AbstractCursor.java deleted file mode 100644 index c98c51c763..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/AbstractCursor.java +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.dap4lib; - -import dap4.core.data.DSP; -import dap4.core.data.DataCursor; -import dap4.core.dmr.DapNode; -import dap4.core.dmr.DapStructure; -import dap4.core.dmr.DapType; -import dap4.core.dmr.DapVariable; -import dap4.core.util.DapException; -import dap4.core.util.DapSort; -import dap4.core.util.Index; -import dap4.core.util.Slice; -import java.util.List; - -public abstract class AbstractCursor implements DataCursor { - ////////////////////////////////////////////////// - // Constants - - ////////////////////////////////////////////////// - // Instance Variables - - protected Scheme scheme; - - protected DSP dsp; - protected DapNode template; - - protected Index arrayindex = null; - protected long recordindex = -1; // scheme == record - - protected AbstractCursor container = null; - - protected long recordcount = -1; - - ////////////////////////////////////////////////// - // Constructor(s) - - public AbstractCursor(Scheme scheme, DSP dsp, DapNode template, AbstractCursor container) { - setScheme(scheme); - setDSP(dsp); - setTemplate(template); - setContainer(container); - } - - public AbstractCursor(AbstractCursor orig) { - this(orig.getScheme(), orig.getDSP(), orig.getTemplate(), (AbstractCursor) orig.getContainer()); - } - - - public String toString() { - StringBuilder buf = new StringBuilder(); - buf.append(getScheme().toString()); - if (getScheme() == Scheme.STRUCTARRAY || getScheme() == Scheme.SEQARRAY) - buf.append("[]"); - buf.append(":"); - buf.append(getTemplate().toString()); - if (this.arrayindex != null) { - buf.append("::"); - buf.append(this.arrayindex.toString()); - } - if (this.recordindex >= 0) { - buf.append("*"); - buf.append(this.recordindex); - } - return buf.toString(); - } - - ////////////////////////////////////////////////// - // Unimplemented DataCursor API methods - - @Override - public abstract Object read(List slices) throws DapException; - - @Override - public abstract Object read(Index index) throws DapException; - - @Override - public abstract AbstractCursor readRecord(long i) throws DapException; - - @Override - public abstract AbstractCursor readField(int fieldindex) throws DapException; - - ////////////////////////////////////////////////// - // Selected DataCursor API overrides - - @Override - public int fieldIndex(String name) throws DapException { - DapStructure ds; - if (getTemplate().getSort().isCompound()) - ds = (DapStructure) getTemplate(); - else if (getTemplate().getSort().isVar() && (((DapVariable) getTemplate()).getBaseType().getSort().isCompound())) - ds = (DapStructure) ((DapVariable) getTemplate()).getBaseType(); - else - throw new DapException("Attempt to get field name on non-compound object"); - int i = ds.indexByName(name); - if (i < 0) - throw new DapException("Unknown field name: " + name); - return i; - } - - @Override - public Scheme getScheme() { - return this.scheme; - } - - @Override - public DSP getDSP() { - return this.dsp; - } - - @Override - public DapNode getTemplate() { - return this.template; - } - - @Override - public Index getIndex() throws DapException { - if (this.scheme != Scheme.STRUCTURE && this.scheme != Scheme.SEQUENCE) - throw new DapException("Not a Sequence|Structure instance"); - return this.arrayindex; - } - - @Override - public long getRecordIndex() throws DapException { - if (this.scheme != Scheme.RECORD) - throw new DapException("Not a Record instance"); - return this.recordindex; - } - - @Override - public long getRecordCount() throws DapException { - if (this.scheme != Scheme.SEQUENCE) - throw new DapException("Not a SEQUENCE instance"); - return this.recordcount; - } - - - @Override - public AbstractCursor getContainer() { - return this.container; - } - - @Override - public boolean isScalar() { - if (getTemplate().getSort().isVar()) { - return ((DapVariable) getTemplate()).getRank() == 0; - } else - return false; - } - - public boolean isField() { - return getTemplate().getContainer() != null; - } - - public boolean isAtomic() { - boolean is = this.scheme == Scheme.ATOMIC; - assert !is || getTemplate().getSort() == DapSort.ATOMICTYPE || (getTemplate().getSort() == DapSort.VARIABLE - && ((DapVariable) getTemplate()).getBaseType().getTypeSort().isAtomic()); - return is; - } - - public boolean isCompound() { - boolean is = (this.scheme == Scheme.SEQUENCE || this.scheme == Scheme.STRUCTURE); - assert !is || getTemplate().getSort() == DapSort.SEQUENCE || getTemplate().getSort() == DapSort.STRUCTURE - || (getTemplate().getSort() == DapSort.VARIABLE - && ((DapVariable) getTemplate()).getBaseType().getTypeSort().isCompoundType()); - return is; - } - - public boolean isCompoundArray() { - boolean is = (this.scheme == Scheme.SEQARRAY || this.scheme == Scheme.STRUCTARRAY); - assert !is || getTemplate().getSort() == DapSort.SEQUENCE || getTemplate().getSort() == DapSort.STRUCTURE - || (getTemplate().getSort() == DapSort.VARIABLE - && ((DapVariable) getTemplate()).getBaseType().getTypeSort().isCompoundType()); - return is; - } - - ////////////////////////////////////////////////// - // AbstractCursor extensions - - public AbstractCursor setIndex(Index index) { - this.arrayindex = index; - return this; - } - - public AbstractCursor setRecordIndex(long index) { - this.recordindex = index; - return this; - } - - public AbstractCursor setRecordCount(long count) { - this.recordcount = count; - return this; - } - - public AbstractCursor setContainer(AbstractCursor container) { - this.container = container; - return this; - } - - public AbstractCursor setScheme(Scheme scheme) { - this.scheme = scheme; - return this; - } - - - public AbstractCursor setDSP(DSP dsp) { - this.dsp = dsp; - return this; - } - - public AbstractCursor setTemplate(DapNode template) { - this.template = template; - return this; - } - - - ////////////////////////////////////////////////// - // Utilities - - public static Scheme schemeFor(DapVariable field) { - DapType ftype = field.getBaseType(); - Scheme scheme = null; - boolean isscalar = field.getRank() == 0; - if (ftype.getTypeSort().isAtomic()) - scheme = Scheme.ATOMIC; - else { - if (ftype.getTypeSort().isStructType()) - scheme = Scheme.STRUCTARRAY; - else if (ftype.getTypeSort().isSeqType()) - scheme = Scheme.SEQARRAY; - } - return scheme; - } -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/AbstractDSP.java b/dap4/d4lib/src/main/java/dap4/dap4lib/AbstractDSP.java deleted file mode 100644 index ce17c50a3d..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/AbstractDSP.java +++ /dev/null @@ -1,294 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.dap4lib; - -import dap4.core.data.ChecksumMode; -import dap4.core.data.DSP; -import dap4.core.data.DataCursor; -import dap4.core.dmr.DapAttribute; -import dap4.core.dmr.DapDataset; -import dap4.core.dmr.DapNode; -import dap4.core.dmr.DapVariable; -import dap4.core.dmr.parser.DOM4Parser; -import dap4.core.dmr.parser.Dap4Parser; -import dap4.core.util.DapContext; -import dap4.core.util.DapException; -import dap4.core.util.DapUtil; -import org.xml.sax.SAXException; -import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.nio.ByteOrder; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Provide a superclass for DSPs. - */ - -public abstract class AbstractDSP implements DSP { - public static boolean TESTING = false; /* Turned on by test programs */ - - ////////////////////////////////////////////////// - // constants - - protected static final boolean DEBUG = false; - protected static final boolean PARSEDEBUG = false; - - public static final boolean USEDOM = false; - - protected static final String DAPVERSION = "4.0"; - protected static final String DMRVERSION = "1.0"; - protected static final String DMRNS = "http://xml.opendap.org/ns/DAP/4.0#"; - - // Define reserved attributes - public static final String UCARTAGVLEN = "_edu.ucar.isvlen"; - public static final String UCARTAGOPAQUE = "_edu.ucar.opaque.size"; - public static final String UCARTAGORIGTYPE = "_edu.ucar.orig.type"; - public static final String UCARTAGUNLIMITED = "_edu.ucar.isunlimited"; - - - protected DapContext context = null; - protected DapDataset dmr = null; - protected String location = null; - private ByteOrder order = null; - private ChecksumMode checksummode = ChecksumMode.DAP; - - protected Map variables = new HashMap<>(); - protected DataCursor rootcursor = null; - - ////////////////////////////////////////////////// - // Constructor(s) - - public AbstractDSP() /* must have a parameterless constructor */ - {} - - ////////////////////////////////////////////////// - // DSP Interface - - // Subclass defined - - /** - * "open" a reference to a data source and return the DSP wrapper. - * - * @param location - Object that defines the data source - * @return = wrapping dsp - * @throws DapException - */ - @Override - public abstract AbstractDSP open(String location) throws DapException; - - /** - * @throws IOException - */ - public abstract void close() throws IOException; - - ////////////////////////////////////////////////// - // Implemented - - @Override - public DataCursor getVariableData(DapVariable var) throws DapException { - return this.variables.get(var); - } - - @Override - public DapContext getContext() { - return this.context; - } - - @Override - public String getLocation() { - return this.location; - } - - @Override - public AbstractDSP setLocation(String loc) { - this.location = loc; - return this; - } - - @Override - public DapDataset getDMR() { - return this.dmr; - } - - // DSP Extensions - - @Override - public void setContext(DapContext context) { - this.context = context; - // Extract some things from the context - Object o = this.context.get(Dap4Util.DAP4ENDIANTAG); - if (o != null) - setOrder((ByteOrder) o); - o = this.context.get(Dap4Util.DAP4CSUMTAG); - if (o != null) - setChecksumMode(ChecksumMode.modeFor(o.toString())); - } - - public void setDMR(DapDataset dmr) { - this.dmr = dmr; - if (getDMR() != null) { - // Add some canonical attributes to the - getDMR().setDataset(getDMR()); - getDMR().setDapVersion(DAPVERSION); - getDMR().setDMRVersion(DMRVERSION); - getDMR().setNS(DMRNS); - } - } - - protected void setDataset(DapDataset dataset) throws DapException { - this.dmr = dataset; - } - - public ByteOrder getOrder() { - return this.order; - } - - public AbstractDSP setOrder(ByteOrder order) { - this.order = order; - return this; - } - - public ChecksumMode getChecksumMode() { - return this.checksummode; - } - - public AbstractDSP setChecksumMode(ChecksumMode mode) { - if (mode != null) - this.checksummode = mode; - return this; - } - - public void addVariableData(DapVariable var, DataCursor cursor) { - this.variables.put(var, cursor); - } - - ////////////////////////////////////////////////// - // Utilities - - /** - * It is common to want to parse a DMR text to a DapDataset, - * so provide this utility. - * - * @param document the dmr to parse - * @return the parsed dmr - * @throws DapException on parse errors - */ - - protected DapDataset parseDMR(String document) throws DapException { - // Parse the dmr - Dap4Parser parser; - // if(USEDOM) - parser = new DOM4Parser(null); - // else - // parser = new DOM4Parser(new DefaultDMRFactory()); - if (PARSEDEBUG) - parser.setDebugLevel(1); - try { - if (!parser.parse(document)) - throw new DapException("DMR Parse failed"); - } catch (SAXException se) { - throw new DapException(se); - } - if (parser.getErrorResponse() != null) - throw new DapException("Error Response Document not supported"); - DapDataset result = parser.getDMR(); - processAttributes(result); - return result; - } - - /** - * Walk the dataset tree and remove selected attributes - * such as _Unsigned - * - * @param dataset - */ - protected void processAttributes(DapDataset dataset) throws DapException { - List nodes = dataset.getNodeList(); - for (DapNode node : nodes) { - switch (node.getSort()) { - case GROUP: - case DATASET: - case VARIABLE: - Map attrs = node.getAttributes(); - if (attrs.size() > 0) { - List suppressed = new ArrayList<>(); - for (DapAttribute dattr : attrs.values()) { - if (suppress(dattr.getShortName())) - suppressed.add(dattr); - } - for (DapAttribute dattr : suppressed) { - node.removeAttribute(dattr); - } - } - break; - default: - break; /* ignore */ - } - } - // Try to extract the byte order - getEndianAttribute(dataset); - } - - /** - * Some attributes that are added by the NetcdfDataset - * need to be kept out of the DMR. This function - * defines that set. - * - * @param attrname A non-escaped attribute name to be tested for suppression - * @return true if the attribute should be suppressed, false otherwise. - */ - - protected boolean suppress(String attrname) { - if (attrname.startsWith("_Coord")) - return true; - if (attrname.equals("_Unsigned")) - return true; - return false; - } - - void getEndianAttribute(DapDataset dataset) { - DapAttribute a = dataset.findAttribute(DapUtil.LITTLEENDIANATTRNAME); - if (a == null) - this.order = (ByteOrder.LITTLE_ENDIAN); - else { - Object v = a.getValues(); - int len = java.lang.reflect.Array.getLength(v); - if (len == 0) - this.order = (ByteOrder.nativeOrder()); - else { - String onezero = java.lang.reflect.Array.get(v, 0).toString(); - int islittle = 1; - try { - islittle = Integer.parseInt(onezero); - } catch (NumberFormatException e) { - islittle = 1; - } - if (islittle == 0) - this.order = (ByteOrder.BIG_ENDIAN); - else - this.order = (ByteOrder.LITTLE_ENDIAN); - } - } - } - - public static String printDMR(DapDataset dmr) { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - DMRPrinter printer = new DMRPrinter(dmr, pw); - try { - printer.print(); - pw.close(); - sw.close(); - } catch (IOException e) { - } - return sw.toString(); - } - -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/ChunkInputStream.java b/dap4/d4lib/src/main/java/dap4/dap4lib/ChunkInputStream.java deleted file mode 100644 index bb03247809..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/ChunkInputStream.java +++ /dev/null @@ -1,336 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.dap4lib; - -import dap4.core.util.DapException; -import dap4.core.util.DapUtil; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; - -/** - * This class wraps a chunked source of databuffer - * as an InputStream. It is mostly pass-thru - * in the sense that reads on this class are - * turned into a series of reads of the underlying stream. - */ - -public class ChunkInputStream extends InputStream { - ////////////////////////////////////////////////// - // Constants - - static final int DFALTCHUNKSIZE = 0x00FFFFFF; - - static final byte CR8 = DapUtil.extract(DapUtil.UTF8.encode("\r"))[0]; - static final byte LF8 = DapUtil.extract(DapUtil.UTF8.encode("\n"))[0]; - - ////////////////////////////////////////////////// - // Type Decls - - ////////////////////////////////////////////////// - // static variables - - ////////////////////////////////////////////////// - // static methods - - ////////////////////////////////////////////////// - // Type declarations - - enum State { - ERROR, // after error chunk - END, // after last databuffer chunk - DATA, // when at start of a databuffer chunk - INDATA, // when reading a databuffer chunk - INITIAL; // before anything is written - } - - ////////////////////////////////////////////////// - // Instance variable - - protected InputStream input = null; - protected State state = State.INITIAL; - protected RequestMode requestmode = null; - - protected ByteOrder localorder = null; - protected ByteOrder remoteorder = null; - protected boolean nochecksum = false; - - // State info for current chunk - protected int flags = 0; - protected int chunksize = 0; - protected int avail = 0; - - - ////////////////////////////////////////////////// - // Constructor(s) - - public ChunkInputStream(InputStream input, RequestMode requestmode) { - this(input, requestmode, ByteOrder.nativeOrder()); - } - - public ChunkInputStream(InputStream input, RequestMode requestmode, ByteOrder order) { - this.input = input; - this.requestmode = requestmode; - this.localorder = order; - } - - ////////////////////////////////////////////////// - // Accessors - - public ByteOrder getHostByteOrder() { - return this.localorder; - } - - public ByteOrder getRemoteByteOrder() { - return this.remoteorder; - } - - public boolean getNoChecksum() { - return this.nochecksum; - } - - ////////////////////////////////////////////////// - - /** - * Read the DMR, trimmed. - * - * @return the DMR as a Java String - */ - - public String readDMR() throws DapException { - try { - if (state != State.INITIAL) - throw new DapException("Attempt to read DMR twice"); - - byte[] dmr8 = null; - - if (requestmode == RequestMode.DMR) { - // The whole buffer is the dmr; - // but we do not know the length - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - int c; - while ((c = input.read()) >= 0) { - baos.write(c); - } - baos.close(); - dmr8 = baos.toByteArray(); - } else if (requestmode == RequestMode.DAP) { - // Pull in the DMR chunk header - if (!readHeader(input)) - throw new DapException("Malformed chunk count"); - // Read the DMR databuffer - dmr8 = new byte[this.chunksize]; - int red = read(dmr8, 0, this.chunksize); - if (red < this.chunksize) - throw new DapException("Short chunk"); - } else - assert false : "Internal error"; - - // Convert DMR to a string - String dmr = new String(dmr8, DapUtil.UTF8); - // Clean it up - dmr = dmr.trim(); - // Make sure it has trailing \r\n" - if (dmr.endsWith("\r\n")) { - // do nothing - } else if (dmr.endsWith("\n")) - dmr = dmr.substring(0, dmr.length() - 2) + "\r\n"; - else - dmr = dmr + "\r\n"; - - // Figure out the endian-ness of the response - this.remoteorder = (flags & DapUtil.CHUNK_LITTLE_ENDIAN) == 0 ? ByteOrder.BIG_ENDIAN : ByteOrder.LITTLE_ENDIAN; - this.nochecksum = (flags & DapUtil.CHUNK_NOCHECKSUM) != 0; - - // Set the state - if ((flags & DapUtil.CHUNK_ERROR) != 0) - state = State.ERROR; - else if ((flags & DapUtil.CHUNK_END) != 0) - state = State.END; - else - state = State.DATA; - return dmr; // return the DMR - - } catch (IOException ioe) { - throw new DapException(ioe.getMessage()); - } - } - - /** - * Convert an error chunk to an exception - * - * @param document XML representation of the error - * @throws DapException containing the contents of the error chunk - */ - public void throwError(String document) throws ErrorException { - throw new ErrorException("Error chunk encountered").setDocument(document); - } - - /** - * Read an error chunk - * - * @return the error document as a string - */ - public String readError() throws IOException { - state = State.ERROR; - // Read the error body databuffer - byte[] bytes = new byte[this.chunksize]; - try { - if (read(bytes, 0, this.chunksize) < this.chunksize) - throw new ErrorException("Short chunk"); - } catch (IOException ioe) { - throw new ErrorException(ioe); - } - String document = new String(bytes, DapUtil.UTF8); - return document; - } - - ////////////////////////////////////////////////// - // InputStream abstract methods - - /** - * Reads the next byte of databuffer from the input stream. The value byte is - * returned as an int in the range 0 to - * 255. If no byte is available because the end of the stream - * has been reached, the value -1 is returned. This method - * blocks until input databuffer is available, the end of the stream is detected, - * or an exception is thrown. - *

        - * Operates by loading chunk by chunk. If an error chunk is detected, - * then return ErrorException (which is a subclass of IOException). - * - * @return the next byte of databuffer, or -1 if the end of the - * stream is reached. - * @throws IOException if an I/O error occurs. - */ - public int read() throws IOException { - if (requestmode == RequestMode.DMR) - throw new UnsupportedOperationException("Attempt to read databuffer when DMR only"); // Runtime - if (avail <= 0) { - if ((flags & DapUtil.CHUNK_END) != 0) - return -1; // Treat as EOF - if (!readHeader(input)) - return -1; // EOF - // See if we have an error chunk, - // and if so, turn it into an exception - if ((flags & DapUtil.CHUNK_ERROR) != 0) { - String document = readError(); - throwError(document); - } - } - avail--; - return input.read(); - } - - ////////////////////////////////////////////////// - // InputStream method overrides - - /** - * Reads up to len databuffer of databuffer from the input stream into an - * array of databuffer. An attempt is made to read as many as len - * databuffer, but a smaller number may be read. The number of databuffer - * actually read is returned as an integer. - * - * @param buf the byte array into which databuffer is read - * @param off the offset in the byte array at which to write - * @param len the amount to read - * @return the actual number of databuffer read - * @throws IOException - */ - - public int read(byte[] buf, int off, int len) throws IOException { - // Sanity check - if (off < 0 || len < 0) - throw new IndexOutOfBoundsException();// Runtime - if (off >= buf.length || buf.length < (off + len)) - throw new IndexOutOfBoundsException(); // Runtime - if (requestmode == RequestMode.DMR) - throw new UnsupportedOperationException("Attempt to read databuffer when DMR only"); // Runtime - - // Attempt to read len bytes out of a sequence of chunks - int count = len; - int pos = off; - while (count > 0) { - if (avail <= 0) { - if ((flags & DapUtil.CHUNK_END) != 0 || !readHeader(input)) - return (len - count); // return # databuffer read - // See if we have an error chunk, - // and if so, turn it into an exception - if ((flags & DapUtil.CHUNK_ERROR) != 0) { - String document = readError(); - throwError(document); - } - } else { - int actual = (this.avail < count ? this.avail : count); - int red = input.read(buf, pos, actual); - if (red < 0) - throw new IOException("Unexpected EOF"); - pos += red; - count -= red; - this.avail -= red; - } - } - return len; - } - - /** - * Returns an estimate of the number of databuffer that can be read - * (or skipped over) from this input stream without - * blocking by the next invocation of a method for this - * input stream. - *

        - * Repurposed here to do equivalent of peek(). - * - * @return 0 if at eof, some number > 0 otherwise. - */ - - public int available() { - if (this.avail > 0) - return this.avail; - if ((flags & DapUtil.CHUNK_END) != 0) - return 0; - return 1; // should be some unknown amount left. - } - - /** - * Closes this output stream and releases any system resources - * associated with this stream. The underlying servlet stream is - * not closed; that is left to the level above. - */ - - public void close() throws IOException { - state = State.END; - } - - ////////////////////////////////////////////////// - // Utilities - - /** - * Read the size+flags header from the input stream and use it to - * initialize the chunk state - * - * @param input The input streamfrom which to read - * @return true if header read false if immediate eof encountered - */ - - boolean readHeader(InputStream input) throws IOException { - byte[] bytehdr = new byte[4]; - int red = input.read(bytehdr); - if (red == -1) - return false; - if (red < 4) - throw new IOException("Short binary chunk count"); - this.flags = ((int) bytehdr[0]) & 0xFF; // Keep unsigned - bytehdr[0] = 0; - ByteBuffer buf = ByteBuffer.wrap(bytehdr).order(ByteOrder.BIG_ENDIAN); - this.chunksize = buf.getInt(); - this.avail = this.chunksize; - return true; - } - -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/DSPPrinter.java b/dap4/d4lib/src/main/java/dap4/dap4lib/DSPPrinter.java deleted file mode 100644 index daa41e15a8..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/DSPPrinter.java +++ /dev/null @@ -1,382 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ -package dap4.dap4lib; - -import dap4.core.ce.CEConstraint; -import dap4.core.data.DSP; -import dap4.core.data.DataCursor; -import dap4.core.dmr.*; -import dap4.core.util.*; -import java.io.PrintWriter; -import java.io.Writer; -import java.lang.reflect.Array; -import java.math.BigInteger; -import java.nio.ByteBuffer; -import java.util.EnumSet; -import java.util.List; - -/** - * DAP DSP Printer. - * Given a constraint and a DSP print the constrained - * subset of the data in text form. - */ - -public class DSPPrinter { - ////////////////////////////////////////////////// - // Printer Control flags - - public enum Flags { - CONTROLCHAR; - } - - ////////////////////////////////////////////////// - // Constants - - protected static final int COLUMNS = 8; - - protected static final char LPAREN = '('; - protected static final char RPAREN = ')'; - protected static final char LBRACE = '{'; - protected static final char RBRACE = '}'; - protected static final char LBRACKET = '['; - protected static final char RBRACKET = ']'; - - // Could use enumset, but it is so ugly, - // so use good old OR'able flags - protected static final int NILFLAGS = 0; - protected static final int PERLINE = 1; // print xml attributes 1 per line - protected static final int NONAME = 2; // do not print name xml attribute - protected static final int NONNIL = 4; // print empty xml attributes - - ////////////////////////////////////////////////// - // Instance variables - - protected PrintWriter writer = null; - protected IndentWriter printer = null; - - protected DSP dsp = null; - protected CEConstraint ce = null; - - protected EnumSet flags = EnumSet.noneOf(Flags.class); - - ////////////////////////////////////////////////// - // Constructor(s) - - protected DSPPrinter() {} - - public DSPPrinter(DSP dsp, Writer writer) { - this(dsp, null, writer); - } - - public DSPPrinter(DSP dsp, CEConstraint ce, Writer writer) { - this.dsp = dsp; - this.ce = ce; - this.writer = new PrintWriter(writer); - this.printer = new IndentWriter(this.writer); - } - - ////////////////////////////////////////////////// - // External API - - public DSPPrinter flag(Flags flag) { - this.flags.add(flag); - return this; - } - - public DSPPrinter flush() { - this.printer.flush(); - return this; - } - - public DSPPrinter close() { - this.flush(); - return this; - } - - /** - * Print data from a DSP - * - optionally constrained - * - * @throws DapException - */ - - public DSPPrinter print() throws DapException { - DapDataset dmr = this.dsp.getDMR(); - if (this.ce == null) - this.ce = CEConstraint.getUniversal(dmr); - this.printer.setIndent(0); - List topvars = dmr.getTopVariables(); - for (int i = 0; i < topvars.size(); i++) { - DapVariable top = topvars.get(i); - List slices = this.ce.getConstrainedSlices(top); - if (this.ce.references(top)) { - DataCursor data = dsp.getVariableData(top); - printVariable(data, slices); - } - } - printer.eol(); - return this; - } - - ////////////////////////////////////////////////// - - /** - * Print an arbitrary DataVariable using a constraint. - *

        - * Handling newlines is a bit tricky - * so the rule is that the - * last newline is elided and left - * for the caller to print. - * Exceptions: ? - * - * @param data - the cursor to print - * @throws DapException Note that the PrintWriter and CEConstraint are global. - */ - - protected void printVariable(DataCursor data, List slices) throws DapException { - DapVariable dapv = (DapVariable) data.getTemplate(); - if (data.isScalar()) { - assert slices == Slice.SCALARSLICES; - printScalar(data); - } else {// not scalar - printArray(data, slices); - } - } - - protected void printScalar(DataCursor data) throws DapException { - DapVariable dapv = (DapVariable) data.getTemplate(); - printer.marginPrint(dapv.getFQN() + " = "); - switch (data.getScheme()) { - case ATOMIC: - printAtomicInstance(data, Index.SCALAR); - break; - case STRUCTARRAY: - case SEQARRAY: // remember that scalars are treated as 1-element arrays - DataCursor[] scalar = (DataCursor[]) data.read(Index.SCALAR); - assert scalar.length == 1; - data = scalar[0]; // fall thru - case STRUCTURE: - case SEQUENCE: - case RECORD: - printer.marginPrint("{"); - printer.eol(); - printer.indent(); - printCompoundInstance(data); - printer.outdent(); - printer.marginPrint("}"); - printer.eol(); - break; - default: - throw new DapException("Unexpected data cursor type: " + data.getScheme()); - } - } - - protected void printArray(DataCursor data, List slices) throws DapException { - DapVariable dapv = (DapVariable) data.getTemplate(); - Odometer odom = Odometer.factory(slices); - switch (data.getScheme()) { - case ATOMIC: - if (DapUtil.isContiguous(slices)) - printAtomicVector(data, slices, odom); - else { - while (odom.hasNext()) { - Index pos = odom.next(); - String s = indicesToString(pos); - printer.marginPrint(dapv.getFQN() + s + " = "); - printAtomicInstance(data, pos); - } - } - break; - case STRUCTARRAY: - case SEQARRAY: - DapStructure ds = (DapStructure) ((DapVariable) data.getTemplate()).getBaseType(); - DataCursor[] instances = (DataCursor[]) data.read(slices); - while (odom.hasNext()) { - Index pos = odom.next(); - String s = indicesToString(pos); - printer.marginPrint(ds.getFQN() + s + " = {"); - printer.eol(); - printer.indent(); - printCompoundInstance(instances[(int) pos.index()]); - printer.outdent(); - printer.marginPrint("}"); - printer.eol(); - } - break; - default: - throw new DapException("Unexpected data cursor type: " + data.getScheme()); - } - } - - protected void printAtomicVector(DataCursor data, List slices, Odometer odom) throws DapException { - assert data.getScheme() == DataCursor.Scheme.ATOMIC; - Object values = data.read(slices); - DapVariable atom = (DapVariable) data.getTemplate(); - String name = atom.getFQN(); - if (Array.getLength(values) == 0) {// zero length case - printer.marginPrint(name + " = "); - printer.eol(); - } else - for (int i = 0; odom.hasNext(); i++) { - Index index = odom.next(); - String prefix = (odom.rank() == 0 ? name : name + indicesToString(index)); - printer.marginPrint(prefix + " = "); - printer.print(valueString(values, i, atom.getBaseType())); - printer.eol(); - } - } - - protected void printAtomicInstance(DataCursor datav, Index pos) throws DapException { - assert datav.getScheme() == DataCursor.Scheme.ATOMIC; - Object value = datav.read(pos); - DapVariable av = (DapVariable) datav.getTemplate(); - printer.print(valueString(value, 0, av.getBaseType())); - printer.eol(); - } - - /** - * Print a single structure or sequence or record instance - * - * @param datav - * @throws DapException - */ - protected void printCompoundInstance(DataCursor datav) throws DapException { - // Index index = datav.getIndex(); - DapStructure dstruct = (DapStructure) ((DapVariable) datav.getTemplate()).getBaseType(); - switch (datav.getScheme()) { - case STRUCTURE: - case RECORD: - List dfields = dstruct.getFields(); - for (int f = 0; f < dfields.size(); f++) { - DapVariable field = dfields.get(f); - List fieldslices = this.ce.getConstrainedSlices(field); - DataCursor fdata = datav.readField(f); - printVariable(fdata, fieldslices); - } - break; - - case SEQUENCE: - DapSequence dseq = (DapSequence) dstruct; - long count = datav.getRecordCount(); - for (long r = 0; r < count; r++) { - DataCursor dr = datav.readRecord(r); - printer.marginPrint("["); - printer.eol(); - printer.indent(); - printCompoundInstance(dr); - printer.outdent(); - printer.marginPrint("]"); - } - break; - default: - throw new DapException("Unexpected data cursor scheme:" + datav.getScheme()); - } - } - - protected String indicesToString(Index indices) throws DapException { - StringBuilder buf = new StringBuilder(); - if (indices != null && indices.getRank() > 0) { - for (int i = 0; i < indices.getRank(); i++) { - buf.append(i == 0 ? LBRACKET : ","); - buf.append(String.format("%d", indices.get(i))); - } - buf.append(RBRACKET); - } - return buf.toString(); - } - - protected String valueString(Object vector, long pos, DapType basetype) throws DapException { - if (vector == null) - return "null"; - TypeSort atype = basetype.getTypeSort(); - boolean unsigned = atype.isUnsigned(); - int ipos = (int) pos; - switch (atype) { - case Int8: - case UInt8: - long lvalue = ((byte[]) vector)[ipos]; - if (unsigned) - lvalue &= 0xFFL; - return String.format("%d", lvalue); - case Int16: - case UInt16: - lvalue = ((short[]) vector)[ipos]; - if (unsigned) - lvalue &= 0xFFFFL; - return String.format("%d", lvalue); - case Int32: - case UInt32: - lvalue = ((int[]) vector)[ipos]; - if (unsigned) - lvalue &= 0xFFFFFFFFL; - return String.format("%d", lvalue); - case Int64: - case UInt64: - lvalue = ((long[]) vector)[ipos]; - if (unsigned) { - BigInteger b = BigInteger.valueOf(lvalue); - b = b.and(DapUtil.BIG_UMASK64); - return b.toString(); - } else - return String.format("%d", lvalue); - case Float32: - return String.format("%f", ((float[]) vector)[ipos]); - case Float64: - return String.format("%f", ((double[]) vector)[ipos]); - case Char: - return String.format("'%c'", ((char[]) vector)[ipos]); - case String: - case URL: - String s = (((String[]) vector)[ipos]); - if (flags.contains(Flags.CONTROLCHAR)) { - s = s.replace("\r", "\\r"); - s = s.replace("\n", "\\n"); - s = s.replace("\t", "\\t"); - } - return "\"" + s + "\""; - case Opaque: - ByteBuffer opaque = ((ByteBuffer[]) vector)[ipos]; - StringBuilder buf = new StringBuilder(); - buf.append("0x"); - for (int i = 0; i < opaque.limit(); i++) { - byte b = opaque.get(i); - char c = hexchar((b >> 4) & 0xF); - buf.append(c); - c = hexchar((b) & 0xF); - buf.append(c); - } - return buf.toString(); - case Enum: - DapEnumeration de = (DapEnumeration) basetype; - Object newvec = CoreTypeFcns.createVector(de.getBaseType().getTypeSort(), 1); - Object v = java.lang.reflect.Array.get(vector, ipos); - java.lang.reflect.Array.set(newvec, 0, v); - long[] lv = (long[]) Convert.convert(DapType.INT64, de, newvec); - DapEnumConst dec = de.lookup(lv[0]); - return dec.getShortName(); - default: - break; - } - throw new DapException("Unknown type: " + basetype); - } - - - ////////////////////////////////////////////////// - // Misc. Utilities - - protected static char hexchar(int i) { - return "0123456789ABCDEF".charAt((i & 0xF)); - } - - - protected static String getPrintValue(Object value) { - if (value instanceof String) { - return Escape.entityEscape((String) value, null); - } else - return value.toString(); - } - -} - diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/Dap4Util.java b/dap4/d4lib/src/main/java/dap4/dap4lib/Dap4Util.java deleted file mode 100644 index 557a1ba76b..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/Dap4Util.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.dap4lib; - -/** - * Constants and utilities - * either top-level or for a member. - */ - -public abstract class Dap4Util { - ///////////////////////////////////////////////////// - // Constants - - public static final String DAP4ENDIANTAG = "ucar.littleendian"; // value = 1 | 0 - public static final String DAP4CSUMTAG = "ucar.checksummode"; // value = NONE|DAP|DMR|ALL - public static final String DAP4TESTTAG = "ucar.testing"; // value = NONE|DAP|DMR|ALL - - ////////////////////////////////////////////////// - // Static utility methods - - -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/DapProtocol.java b/dap4/d4lib/src/main/java/dap4/dap4lib/DapProtocol.java deleted file mode 100644 index 8436fa464d..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/DapProtocol.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.dap4lib; - -import dap4.core.util.DapException; -import dap4.core.util.ResponseFormat; -import java.util.HashMap; -import java.util.Map; - -/** - * Store protocol related constants - */ - -public abstract class DapProtocol implements DapCodes { - public static final String X_DAP_SERVER = "TDS-4"; - public static final String X_DAP_VERSION = "4.0"; - - public static final String CONSTRAINTTAG = "dap4.ce"; - - public static Map contenttypes; - - static { - contenttypes = new HashMap(); - contenttypes.put(RequestMode.DMR, new ContentType(RequestMode.DMR, - "application/vnd.opendap.dap4.dataset-metadata+xml", "text/xml", "text/plain", "text/html")); - contenttypes.put(RequestMode.DAP, - new ContentType(RequestMode.DAP, "application/vnd.opendap.dap4.data", "text/xml", "text/plain", "text/html")); - contenttypes.put(RequestMode.DSR, new ContentType(RequestMode.DSR, - "application/vnd.opendap.dap4.dataset-services+xml", "text/xml", "text/plain", "text/html")); - contenttypes.put(RequestMode.CAPABILITIES, - new ContentType(RequestMode.CAPABILITIES, "text/xml", "text/xml", "text/plain", "text/html")); - contenttypes.put(RequestMode.ERROR, new ContentType(RequestMode.ERROR, "application/vnd.opendap.dap4.error+xml", - "text/xml", "text/plain", "text/html")); - } - - ////////////////////////////////////////////////// - - public static class ContentType { - public RequestMode mode; - public String contenttype; - public String xmltype; - public String texttype; - public String htmltype; - - public ContentType(RequestMode mode, String contenttype, String xmltype, String texttype, String htmltype) { - this.mode = mode; - this.contenttype = contenttype; - this.xmltype = xmltype; - this.texttype = texttype; - this.htmltype = htmltype; - } - - public String getFormat(ResponseFormat format) throws DapException { - if (format == null) - format = ResponseFormat.NONE; - switch (format) { - case XML: - return xmltype; - case TEXT: - return texttype; - case HTML: - return htmltype; - case NONE: - return contenttype; - } - throw new DapException(String.format("Unsupported format request: %s for Mode %s", format, this.mode)) - .setCode(org.apache.http.HttpStatus.SC_BAD_REQUEST); - } - } - -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/FileDSP.java b/dap4/d4lib/src/main/java/dap4/dap4lib/FileDSP.java deleted file mode 100644 index 26f0bf061b..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/FileDSP.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.dap4lib; - -import dap4.core.util.DapContext; -import dap4.core.util.DapException; -import dap4.core.util.DapUtil; -import dap4.dap4lib.serial.D4DSP; -import java.io.ByteArrayInputStream; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URISyntaxException; - -/** - * Provide a DSP interface to raw data - */ - -public class FileDSP extends D4DSP { - ////////////////////////////////////////////////// - // Constants - - protected static final String[] EXTENSIONS = new String[] {".dap", ".raw"}; - - ////////////////////////////////////////////////// - // Instance variables - - // Coverity[FB.URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD] - protected byte[] raw = null; // Complete serialized binary databuffer - - ////////////////////////////////////////////////// - // Constructor(s) - - public FileDSP() { - super(); - } - - ////////////////////////////////////////////////// - // DSP API - - /** - * A path is file if it has no base protocol or is file: - * - * @param location file:/ or possibly an absolute path - * @param context Any parameters that may help to decide. - * @return true if this path appears to be processible by this DSP - */ - public boolean dspMatch(String location, DapContext context) { - try { - XURI xuri = new XURI(location); - if (xuri.isFile()) { - String path = xuri.getPath(); - for (String ext : EXTENSIONS) { - if (path.endsWith(ext)) - return true; - } - } - } catch (URISyntaxException use) { - return false; - } - return false; - } - - @Override - public void close() {} - - @Override - public FileDSP open(String filepath) throws DapException { - try { - if (filepath.startsWith("file:")) - try { - XURI xuri = new XURI(filepath); - filepath = xuri.getPath(); - } catch (URISyntaxException use) { - throw new DapException("Malformed filepath: " + filepath).setCode(DapCodes.SC_NOT_FOUND); - } - try (FileInputStream stream = new FileInputStream(filepath)) { - this.raw = DapUtil.readbinaryfile(stream); - } - try (FileInputStream stream = new FileInputStream(filepath)) { // == rewind - ChunkInputStream rdr = new ChunkInputStream(stream, RequestMode.DAP); - String document = rdr.readDMR(); - byte[] serialdata = DapUtil.readbinaryfile(rdr); - super.build(document, serialdata, rdr.getRemoteByteOrder()); - } - return this; - } catch (IOException ioe) { - throw new DapException(ioe).setCode(DapCodes.SC_INTERNAL_SERVER_ERROR); - } - } - - ////////////////////////////////////////////////// - // Extension to access a raw byte stream - - public FileDSP open(byte[] rawdata) throws DapException { - try { - this.raw = rawdata; - ByteArrayInputStream stream = new ByteArrayInputStream(this.raw); - ChunkInputStream rdr = new ChunkInputStream(stream, RequestMode.DAP); - String document = rdr.readDMR(); - byte[] serialdata = DapUtil.readbinaryfile(rdr); - super.build(document, serialdata, rdr.getRemoteByteOrder()); - return this; - } catch (IOException ioe) { - throw new DapException(ioe).setCode(DapCodes.SC_INTERNAL_SERVER_ERROR); - } - } - -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/HttpDSP.java b/dap4/d4lib/src/main/java/dap4/dap4lib/HttpDSP.java deleted file mode 100644 index 1d27ca8e86..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/HttpDSP.java +++ /dev/null @@ -1,315 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.dap4lib; - -import dap4.core.dmr.DapDataset; -import dap4.core.util.DapContext; -import dap4.core.util.DapDump; -import dap4.core.util.DapException; -import dap4.core.util.DapUtil; -import dap4.dap4lib.serial.D4DSP; -import org.apache.http.HttpStatus; -import ucar.httpservices.HTTPException; -import ucar.httpservices.HTTPFactory; -import ucar.httpservices.HTTPMethod; -import ucar.httpservices.HTTPUtil; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URI; -import java.net.URISyntaxException; - -/** - * Make a request to a server and convert the reply - * to a DapDataset from the returned bytes. - */ - -public class HttpDSP extends D4DSP { - - ////////////////////////////////////////////////// - // Constants - - protected static final boolean DEBUG = false; - - protected static final String DAPVERSION = "4.0"; - protected static final String DMRVERSION = "1.0"; - - protected static final String DAP4PROTO = "dap4"; - protected static final String FILEPROTO = "file"; - - protected static final String DMRSUFFIX = "dmr"; - protected static final String DATASUFFIX = "dap"; - protected static final String DSRSUFFIX = "dsr"; - - protected static final String QUERYSTART = "?"; - protected static final String CONSTRAINTTAG = "dap4.ce"; - protected static final String PROTOTAG = "protocol"; - - protected static final int DFALTPRELOADSIZE = 50000; // databuffer - - protected static final String[] DAPEXTENSIONS = new String[] {"dmr", "dap", "dds", "das", "ddx", "dods"}; - - protected static final String[] DAP4EXTENSIONS = new String[] {"dmr", "dap"}; - - protected static final String[][] DAP4QUERYMARKERS = new String[][] {{"proto", "dap4"}, {"dap4.ce", null},}; - protected static final String[][] DAP4FRAGMARKERS = new String[][] {{"protocol", "dap4"}, {"dap4", null},}; - - protected static final String[] DAP4SCHEMES = {"dap4", "http", "https"}; - - ////////////////////////////////////////////////// - // Instance variables - - protected boolean allowCompression = true; - protected String basece = null; // the constraint(s) from the original url - - protected int status = HttpStatus.SC_OK; // response - protected XURI xuri = null; - - protected Object context = null; - - ////////////////////////////////////////////////// - // Constructor(s) - - public HttpDSP() { - super(); - } - - ////////////////////////////////////////////////// - // DSP API - - /** - * A path is a DAP4 path if at least one of the following is true. - * 1. it has "dap4:" as its leading protocol - * 2. it has #protocol=dap4 in its fragment - * - * @param url - * @param context Any parameters that may help to decide. - * @return true if this url appears to be processible by this DSP - */ - public boolean dspMatch(String url, DapContext context) { - try { - XURI xuri = new XURI(url); - if (true) { - boolean found = false; - for (String scheme : DAP4SCHEMES) { - if (scheme.equalsIgnoreCase(xuri.getBaseProtocol()) || scheme.equalsIgnoreCase(xuri.getFormatProtocol())) { - found = true; - break; - } - } - if (!found) - return false; - // Might still be a non-dap4 url - String formatproto = xuri.getFormatProtocol(); - if (DAP4PROTO.equalsIgnoreCase(formatproto)) - return true; - for (String[] pair : DAP4QUERYMARKERS) { - String tag = xuri.getQueryFields().get(pair[0]); - if (tag != null && (pair[1] == null || pair[1].equalsIgnoreCase(tag))) - return true; - } - for (String[] pair : DAP4FRAGMARKERS) { - String tag = xuri.getFragFields().get(pair[0]); - if (tag != null && (pair[1] == null || pair[1].equalsIgnoreCase(tag))) - return true; - } - } else - return true; - } catch (URISyntaxException use) { - return false; - } - return false; - } - - @Override - public HttpDSP open(String url) throws DapException { - setLocation(url); - parseURL(url); - - /* - * Take from the incoming data - * String s = xuri.getFragFields().get(Dap4Util.DAP4CSUMTAG); - * ChecksumMode mode = ChecksumMode.modeFor(s); - * if(mode == null) - * throw new DapException(String.format("Illegal %s: %s",Dap4Util.DAP4CSUMTAG,s)); - * setChecksumMode(mode); - * s = xuri.getFragFields().get(Dap4Util.DAP4ENDIANTAG); - * Integer oz = DapUtil.stringToInteger(s); - * if(oz == null) - * throw new DapException(String.format("Illegal %s: %s",Dap4Util.DAP4ENDIANTAG,s)); - * ByteOrder order = (oz != 0 ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN); - * setOrder(order); - */ - - // See if this is a local vs remote request - this.basece = this.xuri.getQueryFields().get(CONSTRAINTTAG); - build(); - return this; - } - - @Override - public void close() {} - - ///////////////////////////////////////// - // AbstractDSP extensions - - /* - * @Override - * public String getPath() - * { - * return this.originalurl; - * } - */ - - ////////////////////////////////////////////////// - // Request/Response methods - - /** - * Open a connection and make a request for the (possibly constrained) DMR. - * - * @throws DapException - */ - - protected void build() throws DapException { - String methodurl = buildURL(this.xuri.assemble(XURI.URLONLY), DATASUFFIX, this.dmr, this.basece); - - InputStream stream; - // Make the request and return an input stream for accessing the databuffer - // Should fill in bigendian and stream fields - stream = callServer(methodurl); - - try { - ChunkInputStream reader; - if (DEBUG) { - byte[] raw = DapUtil.readbinaryfile(stream); - ByteArrayInputStream bis = new ByteArrayInputStream(raw); - DapDump.dumpbytestream(raw, getOrder(), "httpdsp.build"); - reader = new ChunkInputStream(bis, RequestMode.DAP, getOrder()); - } else { - // Wrap the input stream as a ChunkInputStream - reader = new ChunkInputStream(stream, RequestMode.DAP, getOrder()); - } - - // Extract and "compile" the server response - String document = reader.readDMR(); - // Extract all the remaining bytes - byte[] bytes = DapUtil.readbinaryfile(reader); - // use super.build to compile - super.build(document, bytes, getOrder()); - } catch (Throwable t) { - t.printStackTrace(); - throw new DapException(t); - } finally { - try { - stream.close(); - } catch (IOException ioe) { - /* ignore */} - } - } - - protected InputStream callServer(String methodurl) throws DapException { - URI uri; - - try { - uri = HTTPUtil.parseToURI(methodurl); - } catch (URISyntaxException mue) { - throw new DapException("Malformed url: " + methodurl); - } - - long start = System.currentTimeMillis(); - long stop = 0; - this.status = 0; - if (false) { - HTTPMethod method = null; // Implicitly passed out to caller via stream - try { // Note that we cannot use try with resources because we export the method stream, so method - // must not be closed. - method = HTTPFactory.Get(methodurl); - if (allowCompression) - method.setCompression("deflate,gzip"); - this.status = method.execute(); - if (this.status != HttpStatus.SC_OK) { - String msg = method.getResponseAsString(); - throw new DapException("Request failure: " + status + ": " + methodurl).setCode(status); - } - // Get the response body stream => do not close the method - return method.getResponseAsStream(); - } catch (HTTPException e) { - if (method != null) - method.close(); - throw new DapException(e); - } - } else {// read whole input - try { - try (HTTPMethod method = HTTPFactory.Get(methodurl)) { - if (allowCompression) - method.setCompression("deflate,gzip"); - this.status = method.execute(); - if (this.status != HttpStatus.SC_OK) { - String msg = method.getResponseAsString(); - throw new DapException("Request failure: " + status + ": " + methodurl).setCode(status); - } - byte[] body = method.getResponseAsBytes(); - return new ByteArrayInputStream(body); - } - } catch (HTTPException e) { - throw new DapException(e); - } - } - } - - /** - * Provide a method for getting the capabilities document. - * - * @param url for accessing the document - * @throws DapException - */ - - public String getCapabilities(String url) throws IOException { - // Save the original url - String saveurl = this.xuri.getOriginal(); - parseURL(url); - String fdsurl = buildURL(this.xuri.assemble(XURI.URLALL), DSRSUFFIX, null, null); - try { - // Make the request and return an input stream for accessing the databuffer - // Should fill in context bigendian and stream fields - InputStream stream = callServer(fdsurl); - // read the result, convert to string and return. - byte[] bytes = DapUtil.readbinaryfile(stream); - String document = new String(bytes, DapUtil.UTF8); - return document; - } finally { - parseURL(saveurl); - } - } - - ////////////////////////////////////////////////// - // Utilities - - protected static String buildURL(String baseurl, String suffix, DapDataset template, String ce) { - StringBuilder methodurl = new StringBuilder(); - methodurl.append(baseurl); - if (suffix != null) { - methodurl.append('.'); - methodurl.append(suffix); - } - if (ce != null && ce.length() > 0) { - methodurl.append(QUERYSTART); - methodurl.append(CONSTRAINTTAG); - methodurl.append('='); - methodurl.append(ce); - } - return methodurl.toString(); - } - - protected void parseURL(String url) throws DapException { - try { - this.xuri = new XURI(url); - } catch (URISyntaxException use) { - throw new DapException(use); - } - } - -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/RequestMode.java b/dap4/d4lib/src/main/java/dap4/dap4lib/RequestMode.java deleted file mode 100644 index 7cb64b5051..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/RequestMode.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - - -package dap4.dap4lib; - -/** - * Define the enum for the possible Request/Response modes - */ -public enum RequestMode { - DMR("dmr"), DAP("dap"), DSR("dsr"), CAPABILITIES(null), ERROR(null); - - private String extension; - - RequestMode(String extension) { - this.extension = extension; - } - - public String extension() { - return extension; - } - - public static RequestMode modeFor(String s) { - for (RequestMode mode : RequestMode.values()) { - if (mode.extension() != null && s.equalsIgnoreCase(mode.extension) || s.equalsIgnoreCase("." + mode.extension)) - return mode; - } - return null; - } - - public String toString() { - return extension; - } -} - - diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/XURI.java b/dap4/d4lib/src/main/java/dap4/dap4lib/XURI.java deleted file mode 100644 index 1fce4061d2..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/XURI.java +++ /dev/null @@ -1,319 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.dap4lib; - -import dap4.core.util.DapUtil; -import dap4.core.util.Escape; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.EnumSet; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Provide an extended form of URI parser that can handle - * multiple protocols and can parse the query and fragment parts. - */ - -public class XURI { - - ////////////////////////////////////////////////// - // Constants - static final String QUERYSEP = "&"; - static final String FRAGMENTSEP = "&"; - - // Define assembly flags - - public static enum Parts { - FORMAT, // format protocol - BASE, // base protocol - PWD, // including user - HOST, // including port - PATH, QUERY, FRAG; - } - - // Mnemonics - public static final EnumSet URLONLY = EnumSet.of(Parts.BASE, Parts.PWD, Parts.HOST, Parts.PATH); - public static final EnumSet URLALL = - EnumSet.of(Parts.FORMAT, Parts.BASE, Parts.PWD, Parts.HOST, Parts.PATH, Parts.QUERY, Parts.FRAG); - public static final EnumSet URLBASE = - EnumSet.of(Parts.BASE, Parts.PWD, Parts.HOST, Parts.PATH, Parts.QUERY, Parts.FRAG); - public static final EnumSet URLPATH = EnumSet.of(Parts.PATH, Parts.QUERY, Parts.FRAG); - - ////////////////////////////////////////////////// - // Instance variables - - protected String originaluri = null; - protected boolean isfile = false; - - protected String baseprotocol = null; // rightmost protocol - protected String formatprotocol = null; // leftmost protocol - protected String userinfo = null; - protected String host = null; - protected String path = null; - protected String query = null; - protected String frag = null; - - // Following are url decoded - protected Map queryfields // decomposed query - = new HashMap(); - protected Map fragfields // decomposed fragment - = new HashMap(); - - ////////////////////////////////////////////////// - // Constructor - - public XURI(String xurl) throws URISyntaxException { - if (xurl == null) - throw new URISyntaxException(xurl, "Null URI"); - // save the original uri - this.originaluri = xurl; - // The uri may be multi-protocol: e.g. dap4:file:... - // Additionally, this may be a windows path, so it - // will look like it has a single character protocol - // that is really the drive letter. - - int[] breakpoint = new int[1]; - List protocols = DapUtil.getProtocols(xurl, breakpoint); // should handle drive letters also - String remainder = xurl.substring(breakpoint[0], xurl.length()); - switch (protocols.size()) { - case 0: // pretend it is a file - this.formatprotocol = "file"; - this.baseprotocol = "file"; - break; - case 1: - this.formatprotocol = protocols.get(0); - if ("file".equalsIgnoreCase(this.formatprotocol)) - this.baseprotocol = "file"; // default conversion - else - this.baseprotocol = "http"; // default conversion - break; - case 2: - this.baseprotocol = protocols.get(0); - this.formatprotocol = protocols.get(1); - break; - default: - throw new URISyntaxException(xurl, "Too many protocols: at most 2 allowed"); - } - this.isfile = "file".equals(this.baseprotocol); - // The standard URI parser does not handle 'file:' very well, - // so handle specially - URI uri; - if (this.isfile) - parsefile(remainder); - else - parsenonfile(remainder); // not a file: url - if (this.query != null) - parseQuery(this.query); - if (this.frag != null) - parseFragment(this.frag); - } - - protected void parsenonfile(String remainder) throws URISyntaxException { - // Construct a usable url and parse it - URI uri = new URI(baseprotocol + ":" + remainder); - // Extract the parts of the uri so they can - // be modified and later reassembled - this.userinfo = canonical(uri.getUserInfo()); - this.host = canonical(uri.getHost()); - if (uri.getPort() > 0) - this.host += (":" + uri.getPort()); - this.path = canonical(uri.getPath()); - // Parse the raw query (before decoding) - this.query = uri.getRawQuery(); - // Parse the raw fragment (before decoding) - this.frag = canonical(uri.getFragment()); - } - - protected void parsefile(String remainder) { - // Pull off the query and fragment parts, if any. - String query = null; - String fragment = null; - int qindex = remainder.indexOf("?"); - int findex = remainder.lastIndexOf("#"); - if (qindex >= 0) { // query and maybe fragment - if (findex >= 0 && findex > qindex) {// both - fragment = remainder.substring(findex + 1, remainder.length()); - remainder = remainder.substring(0, findex); - } - query = remainder.substring(qindex + 1, remainder.length()); - remainder = remainder.substring(0, qindex); - } else if (findex >= 0) { // fragment, no query - fragment = remainder.substring(findex + 1, remainder.length()); - remainder = remainder.substring(0, findex); - } - - // Standardize path part to be absolute - // => single leading '/' or windows drive letter - StringBuilder buf = new StringBuilder(remainder); - for (int i = 0; i < remainder.length(); i++) { // remove all leading '/' - if (buf.charAt(i) != '/') - break; - buf.deleteCharAt(i); - } - // check for drive letter - if (DapUtil.DRIVELETTERS.indexOf(buf.charAt(0)) < 0 || buf.charAt(1) != ':') { // no drive letter, prepend '/' - buf.insert(0, '/'); - } - - remainder = buf.toString(); - this.path = remainder; - this.frag = fragment; - this.query = query; - } - - ////////////////////////////////////////////////// - // Accessors - - public String getOriginal() { - return originaluri; - } - - public String getBaseProtocol() { - return baseprotocol; - } - - public String getFormatProtocol() { - return this.formatprotocol; - } - - public void setBaseProtocol(String base) { - this.baseprotocol = base; - } - - public boolean isFile() { - return this.isfile; - } - - public String getUserinfo() { - return this.userinfo; - } - - public String getHost() { - return this.host; - } - - public String getPath() { - return this.path; - } - - public String getQuery() { - return this.query; - } - - public String getFrag() { - return this.frag; - } - - public Map getQueryFields() { - return this.queryfields; - } - - public Map getFragFields() { - return this.fragfields; - } - - public XURI parseQuery(String q) { - if (q == null || q.length() == 0) - return this; - String[] params = q.split(QUERYSEP); - this.query = q; - for (String param : params) { - String[] pair = param.split("[=]"); - String name = Escape.urlDecode(pair[0]); - name = name.toLowerCase(); // for consistent lookup - String value = ""; - if (pair.length > 1) { - value = Escape.urlDecode(pair[1]); - this.queryfields.put(name, value); - } - } - return this; - } - - public XURI parseFragment(String f) { - if (f == null || f.length() == 0) - return this; - String[] params = f.split(FRAGMENTSEP); - if (params != null && params.length > 0) { - this.frag = f; - for (String param : params) { - String[] pair = param.split("="); - String name = Escape.urlDecode(pair[0]); - name = name.toLowerCase(); // for consistent lookup - String value = (pair.length == 2 ? Escape.urlDecode(pair[1]) : ""); - this.fragfields.put(name, value); - } - } - return this; - } - - ////////////////////////////////////////////////// - // API - - /** - * Reassemble the url using the specified parts - * - * @param parts to include - * @return the assembled uri - */ - - public String assemble(EnumSet parts) { - StringBuilder uri = new StringBuilder(); - // Note that format and base may be same, so case it out - int useformat = (parts.contains(Parts.FORMAT) ? 1 : 0); - int usebase = (parts.contains(Parts.BASE) ? 2 : 0); - switch (useformat + usebase) { - case 0 + 0: // neither - break; - case 1 + 0: // FORMAT only - uri.append(this.formatprotocol + ":"); - break; - case 2 + 0: // BASE only - uri.append(this.baseprotocol + ":"); - break; - case 2 + 1: // both - uri.append(this.formatprotocol + ":"); - if (!this.baseprotocol.equals(this.formatprotocol)) - uri.append(this.formatprotocol + ":"); - break; - } - uri.append(this.baseprotocol.equals("file") ? "/" : "//"); - - if (userinfo != null && parts.contains(Parts.PWD)) - uri.append(this.userinfo + ":"); - if (this.host != null && parts.contains(Parts.HOST)) - uri.append(this.host); - if (this.path != null && parts.contains(Parts.PATH)) - uri.append(this.path); - if (this.query != null && parts.contains(Parts.QUERY)) - uri.append("?" + this.query); - if (this.frag != null && parts.contains(Parts.FRAG)) - uri.append("#" + this.frag); - return uri.toString(); - } - - - /** - * Canonicalize a part of a URL - * - * @param s part of the url - */ - public static String canonical(String s) { - if (s != null) { - s = s.trim(); - if (s.length() == 0) - s = null; - } - return s; - } - - public String toString() { - return originaluri; - } -} - diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/keep.jar b/dap4/d4lib/src/main/java/dap4/dap4lib/keep.jar deleted file mode 100644 index deb03e6d00..0000000000 Binary files a/dap4/d4lib/src/main/java/dap4/dap4lib/keep.jar and /dev/null differ diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4Cursor.java b/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4Cursor.java deleted file mode 100644 index ef41bbb618..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4Cursor.java +++ /dev/null @@ -1,655 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.dap4lib.netcdf; - -import com.sun.jna.Native; -import dap4.core.data.DataCursor; -import dap4.core.dmr.*; -import dap4.core.util.*; -import dap4.dap4lib.AbstractCursor; -import dap4.dap4lib.LibTypeFcns; -import ucar.nc2.jni.netcdf.Nc4prototypes; -import ucar.nc2.jni.netcdf.SizeT; -import java.lang.reflect.Array; -import java.nio.ByteBuffer; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import static dap4.dap4lib.netcdf.Nc4DSP.Nc4Pointer; -import static dap4.dap4lib.netcdf.Nc4Notes.*; - - -public class Nc4Cursor extends AbstractCursor { - - ////////////////////////////////////////////////// - - public static boolean DEBUG = false; - - // if the default charset being used by java isn't UTF-8, then we will - // need to transcode any string read into netCDf-Java via netCDF-C - private static final boolean transcodeStrings = Charset.defaultCharset() != StandardCharsets.UTF_8; - - ////////////////////////////////////////////////// - // Instance variables - - protected Nc4Pointer memory = null; - - ////////////////////////////////////////////////// - // Constructor(s) - - public Nc4Cursor(Scheme scheme, Nc4DSP dsp, DapVariable template, Nc4Cursor container) throws DapException { - super(scheme, dsp, template, container); - if (DEBUG) - debug(); - } - - public Nc4Cursor(Nc4Cursor c) { - super(c); - assert false; - this.memory = c.getMemory(); - } - - ////////////////////////////////////////////////// - // AbstractCursor Interface API Implementations - - @Override - public Object read(Index index) throws DapException { - return read(DapUtil.indexToSlices(index)); - } - - @Override - public Object read(List slices) throws DapException { - switch (this.scheme) { - case ATOMIC: - return readAtomic(slices); - case STRUCTURE: - case SEQUENCE: - if (((DapVariable) this.getTemplate()).getRank() > 0 || DapUtil.isScalarSlices(slices)) - throw new DapException("Cannot slice a scalar variable"); - return this; - case STRUCTARRAY: - Odometer odom = Odometer.factory(slices); - DataCursor[] instances = new DataCursor[(int) odom.totalSize()]; - for (int i = 0; odom.hasNext(); i++) { - instances[i] = readStructure(odom.next()); - } - return instances; - case SEQARRAY: - odom = Odometer.factory(slices); - instances = new DataCursor[(int) odom.totalSize()]; - for (int i = 0; odom.hasNext(); i++) { - instances[i] = readSequence(odom.next()); - } - return instances; - default: - throw new DapException("Attempt to slice a scalar object"); - } - } - - @Override - public Nc4Cursor readField(int findex) throws DapException { - // Preliminaries - DapVariable template = (DapVariable) getTemplate(); - DapStructure struct = (DapStructure) template.getBaseType(); - if (findex < 0 || findex >= struct.getFields().size()) - throw new DapException("Field index out of range: " + findex); - DapVariable field = struct.getField(findex); - // Get VarNotes and TypeNotes - VarNotes fi = (VarNotes) ((Nc4DSP) getDSP()).find(field); - TypeNotes ti = fi.getBaseType(); - Nc4Cursor cursor = new Nc4Cursor(schemeFor(field), (Nc4DSP) this.dsp, field, this); - Nc4Pointer mem = getMemory(); - // Handle records and structures somewhat differently - if (this.scheme == scheme.STRUCTURE) { - // do nothing - } else if (this.getScheme() == Scheme.RECORD) { - if (findex != 0) // need to use the first field of the sequence - throw new DapException("Field index out of range: " + findex); - // For fields, the record memory and the field memory are the same - // because the record contains only 1 rank-0 field. - } else // Error - throw new DapException("readfield expected STRUCTURE or RECORD cursor"); - cursor.setMemory(mem); - return cursor; - } - - @Override - public long getRecordCount() { - assert (this.scheme == scheme.SEQUENCE); - if (this.recordcount < 0) - throw new IllegalStateException("Sequence has no record count"); - return this.recordcount; - } - - @Override - public Nc4Cursor readRecord(long recno) throws DapException { - assert (this.scheme == scheme.SEQUENCE); - DapVariable template = (DapVariable) getTemplate(); - if (recno < 0 || recno >= getRecordCount()) - throw new ArrayIndexOutOfBoundsException("Illegal record id: " + recno); - VarNotes vn = (VarNotes) ((Nc4DSP) getDSP()).find(template); - TypeNotes ti = vn.getBaseType(); - assert (ti.isVlen()); - DapStructure ds = (DapStructure) template.getBaseType(); - DapVariable field = ds.getField(0); - DapType ftype = field.getBaseType(); - TypeNotes fnotes = (TypeNotes) ((Nc4DSP) getDSP()).find(ftype); - // The memory is a vector of objects, where the object type - // is the type of the first field of the sequence - // We need to extract the recno'th object from our memory - Nc4Pointer record = getMemory(); // should be the vector of records - long recsize = getElementSize(fnotes); - // point to the recno element in the vector - record = record.share(recno * recsize, recsize); - Nc4Cursor rec = new Nc4Cursor(Scheme.RECORD, (Nc4DSP) getDSP(), (DapVariable) getTemplate(), this); - /* - * Nc4Pointer seqvlen = getMemory(); - * long vlensize = Nc4prototypes.Vlen_t.VLENSIZE; - * Nc4Pointer recnovlen = seqvlen.share(vlensize*recno,vlensize); // recno'th vlen - * Nc4prototypes.Vlen_t vleninstance = new Nc4prototypes.Vlen_t(recnovlen.p); - * vleninstance.read(); // get the actual vlen contents for this sequence - * Pointer vlenmem = vleninstance.p; - * int vlencount = vleninstance.len; - * TypeNotes fvtype = getVlenType(field); - * long elemsize = fvtype.getSize(); // vlen.p is vector of objects of this size - * Nc4Pointer objectvec = new Nc4Pointer(vlenmem, elemsize * vlencount); - * // Now, we want the recno'th object in the vector - * Nc4Pointer record = objectvec.share(elemsize * recno, elemsize); - */ - rec.setMemory(record).setRecordIndex(recno); - return rec; - } - - - @Override - public Index getIndex() throws DapException { - if (this.scheme != Scheme.STRUCTURE && this.scheme != Scheme.SEQUENCE) - throw new DapException("Not a Sequence|Structure instance"); - return this.arrayindex; - } - - ////////////////////////////////////////////////// - // Support Methods - - protected Object readAtomic(List slices) throws DapException { - if (slices == null) - throw new DapException("DataCursor.read: null set of slices"); - assert (this.scheme == scheme.ATOMIC); - DapVariable atomvar = (DapVariable) getTemplate(); - int rank = atomvar.getRank(); - assert slices != null && ((rank == 0 && slices.size() == 1) || (slices.size() == rank)); - // Get VarNotes and TypeNotes - Notes n = ((Nc4DSP) this.dsp).find(this.template); - Object result = null; - long count = DapUtil.sliceProduct(slices); - VarNotes vn = (VarNotes) n; - TypeNotes ti = vn.getBaseType(); - if (getContainer() == null) { - if (rank == 0) { // scalar - result = readAtomicScalar(vn, ti); - } else { - result = readAtomicVector(vn, ti, count, slices); - } - } else {// field of a structure instance or record - long elemsize = ((DapType) ti.get()).getSize(); - assert (this.container != null); - long trueoffset = computeTrueOffset(this); - Nc4Pointer varmem = getMemory(); - Nc4Pointer mem = varmem.share(trueoffset, count * elemsize); - result = getatomicdata(ti.getType(), count, elemsize, mem); - } - return result; - } - - /** - * Read a top-level scalar atomic variable - * - * @param vi - * @param ti - * @return Object scalar - * @throws DapException - */ - protected Object readAtomicScalar(VarNotes vi, TypeNotes ti) throws DapException { - DapVariable atomvar = (DapVariable) getTemplate(); - // Get into memory - Nc4prototypes nc4 = ((Nc4DSP) this.dsp).getJNI(); - int ret; - DapType basetype = ti.getType(); - Object result = null; - if (basetype.isFixedSize()) { - long memsize = ((DapType) ti.get()).getSize(); - Nc4Pointer mem = Nc4Pointer.allocate(memsize); - readcheck(nc4, ret = nc4.nc_get_var(vi.gid, vi.id, mem.p)); - setMemory(mem); - result = getatomicdata(ti.getType(), 1, mem.size, mem); - } else if (basetype.isStringType()) { - String[] s = new String[1]; - readcheck(nc4, ret = nc4.nc_get_var_string(vi.gid, vi.id, s)); - if (transcodeStrings) { - s = transcodeString(s); - } - result = s; - } else if (basetype.isOpaqueType()) { - Nc4Pointer mem = Nc4Pointer.allocate(ti.getSize()); - readcheck(nc4, ret = nc4.nc_get_var(vi.gid, vi.id, mem.p)); - setMemory(mem); - ByteBuffer[] buf = new ByteBuffer[1]; - buf[0] = mem.p.getByteBuffer(0, ti.getSize()); - result = buf; - } else - throw new DapException("Unexpected atomic type: " + basetype); - return result; - } - - protected Object readAtomicVector(VarNotes vi, TypeNotes ti, long count, List slices) throws DapException { - DapVariable atomvar = (DapVariable) getTemplate(); - DapType basetype = ti.getType(); - if (atomvar.getCount() == 0) - return LibTypeFcns.newVector(basetype, 0); - // Convert slices to (start,count,stride); - int rank = atomvar.getRank(); - List dimset = atomvar.getDimensions(); - Odometer odom = Odometer.factory(slices, dimset); - List subodoms = odom.getSubOdometers(); - // Compute the total size of returned objects - long totalsize = 0; - for (int i = 0; i < subodoms.size(); i++) { - Odometer ithodom = subodoms.get(i); - totalsize += ithodom.totalSize(); - } - Nc4prototypes nc4 = ((Nc4DSP) this.dsp).getJNI(); - SizeT[] startp = new SizeT[rank]; - SizeT[] countp = new SizeT[rank]; - SizeT[] stridep = new SizeT[rank]; - int ret; - long edgecount; - Odometer ithodom; - Object partialresult; - Object result = LibTypeFcns.newVector(basetype, totalsize); - int pos = 0; - for (int i = 0; i < subodoms.size(); i++) { - ithodom = subodoms.get(i); - edgecount = odomToEdges(ithodom, startp, countp, stridep); - if (basetype.isFixedSize()) { - long elemsize = ti.getSize(); - long memsize = edgecount * elemsize; - Nc4Pointer mem = Nc4Pointer.allocate(memsize); - readcheck(nc4, ret = nc4.nc_get_vars(vi.gid, vi.id, startp, countp, stridep, mem.p)); - partialresult = getatomicdata(ti.getType(), edgecount, elemsize, mem); - } else if (basetype.isStringType()) { - String[] ss = new String[(int) edgecount]; - readcheck(nc4, ret = nc4.nc_get_vars_string(vi.gid, vi.id, startp, countp, stridep, ss)); - if (transcodeStrings) { - ss = transcodeString(ss); - } - partialresult = ss; - } else if (basetype.isOpaqueType()) { - long elemsize = ti.getSize(); - edgecount = odomToEdges(ithodom, startp, countp, stridep); - long memsize = edgecount * elemsize; - Nc4Pointer mem = Nc4Pointer.allocate(memsize); - readcheck(nc4, ret = nc4.nc_get_vars(vi.gid, vi.id, startp, countp, stridep, mem.p)); - partialresult = new ByteBuffer[(int) edgecount]; - for (int ec = 0; ec < edgecount; ec++) { - byte[] buf = mem.p.getByteArray(ec * ti.getSize(), (int) ti.getSize()); - ((ByteBuffer[]) partialresult)[ec] = ByteBuffer.wrap(buf); - } - } else - throw new DapException("Unexpected atomic type: " + basetype); - int len = Array.getLength(partialresult); - System.arraycopy(partialresult, 0, result, pos, len); - pos += len; - } - return result; - } - - protected Nc4Cursor readStructure(Index index) throws DapException { - assert (index != null); - assert this.scheme == Scheme.STRUCTARRAY; - DapVariable template = (DapVariable) getTemplate(); - VarNotes vi = (VarNotes) ((Nc4DSP) this.dsp).find(template); - TypeNotes ti = vi.basetype; - Nc4Pointer mem; - Nc4Cursor cursor = null; - if (template.isTopLevel()) { - int ret; - mem = Nc4Pointer.allocate(ti.getSize()); - Nc4prototypes nc4 = ((Nc4DSP) this.dsp).getJNI(); - if (index.getRank() == 0) { - readcheck(nc4, ret = nc4.nc_get_var(vi.gid, vi.id, mem.p)); - } else { - SizeT[] sizes = indexToSizes(index); - readcheck(nc4, ret = nc4.nc_get_var1(vi.gid, vi.id, sizes, mem.p)); - } - cursor = new Nc4Cursor(Scheme.STRUCTURE, (Nc4DSP) this.dsp, template, this); - } else {// field of a structure instance or record - long pos = index.index(); - if (pos < 0 || pos >= template.getCount()) - throw new IndexOutOfBoundsException("read: " + index); - cursor = new Nc4Cursor(Scheme.STRUCTURE, (Nc4DSP) this.dsp, template, this); - // Ok, we need to operate relative to the parent's memory - // move to the appropriate offset - mem = ((Nc4Cursor) getContainer()).getMemory().share(pos * ti.getSize(), ti.getSize()); - } - cursor.setIndex(index); - cursor.setMemory(mem); - return cursor; - } - - protected Nc4Cursor readSequence(Index index) throws DapException { - assert (index != null); - assert this.scheme == Scheme.SEQARRAY; - DapVariable template = (DapVariable) getTemplate(); - VarNotes vi = (VarNotes) ((Nc4DSP) this.dsp).find(template); - TypeNotes ti = vi.basetype; - Nc4Pointer mem; - Nc4Cursor cursor = null; - Nc4prototypes.Vlen_t[] vlen = new Nc4prototypes.Vlen_t[1]; - // Given a seq var e.g v(d1,d2), where we have an index argument, - // get that object, which will be a vlen - if (template.isTopLevel()) { - int ret; - Nc4prototypes nc4 = ((Nc4DSP) this.dsp).getJNI(); - SizeT[] extents = indexToSizes(index); - // read te index't vlen - readcheck(nc4, ret = nc4.nc_get_var1(vi.gid, vi.id, extents, vlen)); - } else {// field of a structure instance or record - long pos = index.index(); - if (pos < 0 || pos >= template.getCount()) - throw new IndexOutOfBoundsException("read: " + index); - // The memory for a sequence field is the vector of vlen objects. - // We need to extract the index'th vlen for this field - Nc4Pointer pp = getMemory(); // should be the vector - int vlensize = Nc4prototypes.Vlen_t.VLENSIZE; - // point to the index'th element in the vector - pp = pp.share(pos * vlensize, vlensize); - // convert to a Vlen_T object - vlen[0] = new Nc4prototypes.Vlen_t(pp.p); - vlen[0].read(); - } - // At this point, vlen[0] is the index'th vlen - // Construct a sequence cursor whose memory is the memory of the vlen - // (which is the vector of records) - cursor = new Nc4Cursor(Scheme.SEQUENCE, (Nc4DSP) this.dsp, template, this); - cursor.setRecordCount(vlen[0].len); - long memsize = ti.getSize() * cursor.getRecordCount(); - mem = new Nc4Pointer(vlen[0].p, memsize); - cursor.setMemory(mem); - cursor.setIndex(index); - return cursor; - } - - ////////////////////////////////////////////////// - // Nc4Cursor Extensions - - public long getOffset() { - DapVariable dv = (DapVariable) getTemplate(); - Notes n = ((Nc4DSP) this.dsp).find(dv); - return n.getOffset(); - } - - public long getElementSize() { - DapVariable dv = (DapVariable) getTemplate(); - Notes n = ((Nc4DSP) this.dsp).find(dv); - return n.getSize(); - } - - public Nc4Pointer getMemory() { - return this.memory; - } - - public Nc4Cursor setMemory(Nc4Pointer p) { - this.memory = p; - return this; - } - - ////////////////////////////////////////////////// - // Utilities - - protected long getElementSize(TypeNotes ti) { - DapType type = ti.getType(); - switch (type.getTypeSort()) { - case Structure: - case Sequence: - return ti.getSize(); - case String: - case URL: - // 8/16/2019 jlcaron upgrade to jna 5.4.0 - // com.sun.jna.Pointer#SIZE is removed. Its use is replaced by - // com.sun.jna.Native#POINTER_SIZE to prevent a class loading deadlock, when JNA is initialized from multiple - // threads - return Native.POINTER_SIZE; - case Enum: - return getElementSize((TypeNotes) ((Nc4DSP) getDSP()).find(ti.enumbase, NoteSort.TYPE)); - case Opaque: - return ti.getSize(); - default: - return type.getSize(); - } - } - - protected Object getatomicdata(DapType basetype, long lcount, long elemsize, Nc4Pointer mem) { - Object result = null; - TypeSort sort = basetype.getTypeSort(); - int icount = (int) lcount; - switch (sort) { - case Char: - // need to extract and convert utf8(really ascii) -> utf16 - byte[] bresult = mem.p.getByteArray(0, icount); - char[] cresult = new char[bresult.length]; - for (int i = 0; i < icount; i++) { - int ascii = bresult[i]; - ascii = ascii & 0x7F; - cresult[i] = (char) ascii; - } - result = cresult; - break; - case UInt8: - case Int8: - result = mem.p.getByteArray(0, icount); - break; - case Int16: - case UInt16: - result = mem.p.getShortArray(0, icount); - break; - case Int32: - case UInt32: - result = mem.p.getIntArray(0, icount); - break; - case Int64: - case UInt64: - result = mem.p.getLongArray(0, icount); - break; - case Float32: - result = mem.p.getFloatArray(0, icount); - break; - case Float64: - result = mem.p.getDoubleArray(0, icount); - break; - case String: - case URL: - // TODO: properly free underlying strings - result = mem.p.getStringArray(0, icount); - break; - case Opaque: - ByteBuffer[] ops = new ByteBuffer[icount]; - result = ops; - for (int i = 0; i < icount; i++) { - ops[i] = mem.p.getByteBuffer(i * elemsize, elemsize); - } - break; - case Enum: - DapEnumeration de = (DapEnumeration) basetype; - result = getatomicdata((DapType) de.getBaseType(), lcount, elemsize, mem); - break; - } - return result; - } - - static long odomToEdges(Odometer odom, SizeT[] startp, SizeT[] countp, SizeT[] stridep) { - assert !odom.isMulti(); - int rank = odom.rank(); - List slices = odom.getSlices(); - for (int i = 0; i < rank; i++) { - Slice slice = slices.get(i); - startp[i] = new SizeT(slice.getFirst()); - countp[i] = new SizeT(slice.getCount()); - stridep[i] = new SizeT(slice.getStride()); - } - return DapUtil.sliceProduct(slices); - } - - public static void errcheck(Nc4prototypes nc4, int ret) throws DapException { - if (ret != 0) { - String msg = String.format("Netcdf: errno=%d; %s", ret, nc4.nc_strerror(ret)); - throw new DapException(msg); - } - } - - public static void readcheck(Nc4prototypes nc4, int ret) throws DapException { - try { - errcheck(nc4, ret); - } catch (DapException de) { - throw new DapException(de); - } - } - - static SizeT[] indexToSizes(Index index) { - SizeT[] sizes = new SizeT[index.getRank()]; - for (int i = 0; i < sizes.length; i++) { - sizes[i] = new SizeT(index.get(i)); - } - return sizes; - } - - /** - * Given a field ref, compute the true offset with respect to - * it top-level containing structure/record - * - * @param f field cursor - * @return - * @throws DapException - */ - long computeTrueOffset(Nc4Cursor f) throws DapException { - List path = getCursorPath(f); - long totaloffset = 0; - Nc4Cursor current; - - // First element is presumed to be a structure ore record variable, - // and that its memory covers only it's instance. - // Walk intermediate nodes - for (int i = 1; i < (path.size() - 1); i++) { - current = path.get(i); - DapVariable template = (DapVariable) current.getTemplate(); - VarNotes vi = (VarNotes) ((Nc4DSP) getDSP()).find(template); - - long size = vi.getSize(); - long offset = current.getOffset(); - long pos = 0; - switch (current.getScheme()) { - case SEQUENCE: - case STRUCTURE: - pos = current.getIndex().index(); - break; - case RECORD: - // readrecord will have set our memory to the start of the record - pos = 0; - break; - default: - throw new DapException("Illegal cursor type: " + current.getScheme()); - } - long delta = size * pos + offset; - totaloffset += delta; - } - assert path.get(path.size() - 1) == f; - totaloffset += f.getOffset(); - return totaloffset; - } - - /** - * Given a cursor, get a list of "containing" cursors - * with the following constraints. - * 1. the first element in the path is a top-level variable. - * 2. the remaining elements are the enclosing compound variables - * 3. the last element is the incoming cursor. - * - * @param cursor - * @return - */ - static List getCursorPath(Nc4Cursor cursor) { - List path = new ArrayList<>(); - for (;;) { - if (!cursor.getScheme().isCompoundArray()) // suppress - path.add(0, cursor); - if (cursor.getScheme() == Scheme.SEQUENCE) { - // Stop here because the sequence has the vlen mem as its mem - break; - } - Nc4Cursor next = (Nc4Cursor) cursor.getContainer(); - if (next == null) { - assert cursor.getTemplate().isTopLevel(); - break; - } - assert next.getTemplate().getSort() == DapSort.VARIABLE; - cursor = next; - } - return path; - } - - - static Nc4Pointer getVarMemory(Nc4Cursor cursor) { - while (cursor.getContainer() != null) { - cursor = (Nc4Cursor) cursor.getContainer(); - } - return cursor.getMemory(); - } - - /** - * If the basetype is sequence (=> isVlen()), - * then return the type of the first field of this sequence. - * Otherwise return null. - * - * @return the type of the first field - */ - public TypeNotes getVlenType(DapVariable v) { - DapType t = v.getBaseType(); - if (t.getSort() != DapSort.SEQUENCE || ((DapSequence) t).getFields().size() != 1) - throw new IllegalArgumentException(t.getFQN()); - DapSequence ds = (DapSequence) t; - DapVariable f0 = ds.getField(0); - DapType f0type = f0.getBaseType(); - return (TypeNotes) ((Nc4DSP) this.dsp).find(f0type); - } - - /** - * By default, JNA assumes strings coming into java from the C side are using - * the system encoding. However, netCDF-C encodes using UTF-8. Because of this, - * if we are on a platform where java is not using UTF-8 as the default encoding, - * we will need to transcode the incoming strings fix the incorrect assumption - * made by JNA. - * - * Note, we could set the system property jna.encode=UTF-8, but would impact the - * behavior of other libraries that use JNA, and would not be very nice of us to - * set globally (and often times isn't the right thing to set anyways, since the - * default in C to use the system encoding). - * - * @param systemStrings String array encoded using the default charset - * @return String array encoded using the UTF-8 charset - */ - private String[] transcodeString(String[] systemStrings) { - return Arrays.stream(systemStrings).map(systemString -> { - byte[] byteArray = systemString.getBytes(Charset.defaultCharset()); - return new String(byteArray, StandardCharsets.UTF_8); - }).toArray(String[]::new); - } - - protected void debug() { - System.err.printf("CURSOR: %s%n", this.toString()); - } - -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4DMR.java b/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4DMR.java deleted file mode 100644 index 3534f35845..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4DMR.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.dap4lib.netcdf; - -import dap4.core.dmr.*; - -public abstract class Nc4DMR { - ////////////////////////////////////////////////// - - public static class Nc4Attribute extends DapAttribute { - public Nc4Attribute(String name, DapType basetype) { - super(name, basetype); - } - } - - public static class Nc4AttributeSet extends DapAttributeSet { - public Nc4AttributeSet(String name) { - super(name); - } - } - - public static class Nc4Dimension extends DapDimension { - public Nc4Dimension(String name, long size) { - super(name, size); - } - } - - public static class Nc4Map extends DapMap { - public Nc4Map(DapVariable target) { - super(target); - } - } - - public static class Nc4Variable extends DapVariable { - public Nc4Variable(String name, DapType t) { - super(name, t); - } - } - - public static class Nc4Group extends DapGroup { - public Nc4Group(String name) { - super(name); - } - } - - public static class Nc4Dataset extends DapDataset { - public Nc4Dataset(String name) { - super(name); - } - } - - public static class Nc4Enumeration extends DapEnumeration { - public Nc4Enumeration(String name, DapType basetype) { - super(name, basetype); - } - } - - public static class Nc4EnumConst extends DapEnumConst { - public Nc4EnumConst(String name, long value) { - super(name, value); - } - } - - public static class Nc4Structure extends DapStructure { - public Nc4Structure(String name) { - super(name); - } - } - - public static class Nc4Sequence extends DapSequence { - public Nc4Sequence(String name) { - super(name); - } - } - - public static class Nc4OtherXML extends DapOtherXML { - public Nc4OtherXML(String name) { - super(name); - } - } -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4DMRCompiler.java b/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4DMRCompiler.java deleted file mode 100644 index cb8a546e59..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4DMRCompiler.java +++ /dev/null @@ -1,740 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.dap4lib.netcdf; - -import com.sun.jna.Native; -import com.sun.jna.ptr.IntByReference; -import dap4.core.dmr.*; -import dap4.core.util.Convert; -import dap4.core.util.DapContext; -import dap4.core.util.DapException; -import dap4.core.util.DapUtil; -import ucar.nc2.ffi.netcdf.NetcdfClibrary; -import ucar.nc2.jni.netcdf.Nc4prototypes; -import ucar.nc2.jni.netcdf.SizeTByReference; -import static ucar.nc2.jni.netcdf.Nc4prototypes.*; -import static dap4.dap4lib.netcdf.Nc4DSP.*; -import static dap4.dap4lib.netcdf.Nc4Notes.*; - - -/** - * Compile netcdf file info into DMR - */ -public class Nc4DMRCompiler { - ////////////////////////////////////////////////// - // Constants - - public static final boolean DEBUG = false; - - // Define reserved attributes - public static final String UCARTAGVLEN = Nc4DSP.UCARTAGVLEN; - public static final String UCARTAGOPAQUE = Nc4DSP.UCARTAGOPAQUE; - - static final int NC_FALSE = 0; - static final int NC_TRUE = 1; - // "null" id(s) - public static final int NC_GRPNULL = 0; - public static final int NC_IDNULL = -1; - public static final int NC_NOERR = 0; - - static int NC_INT_BYTES = (java.lang.Integer.SIZE / java.lang.Byte.SIZE); - static int NC_LONG_BYTES = (Native.LONG_SIZE); - static int NC_POINTER_BYTES = (Native.POINTER_SIZE); - static int NC_SIZET_BYTES = (Native.SIZE_T_SIZE); - - protected static Nc4prototypes nc4 = NetcdfClibrary.getForeignFunctionInterface(); - - ////////////////////////////////////////////////// - // Static methods - - /** - * A path is file if it has no base protocol or is file: - * - * @param path - * @param context Any parameters that may help to decide. - * @return true if this path appears to be processible by this DSP - */ - public static boolean dspMatch(String path, DapContext context) { - for (String s : EXTENSIONS) { - if (path.endsWith(s)) - return true; - } - return false; - } - - ////////////////////////////////////////////////// - // Instance Variables - - protected boolean trace = false; - protected boolean closed = false; - - protected int ncid = -1; // file id - protected int format = 0; // from nc_inq_format - protected int mode = 0; - protected String path = null; - - protected String pathprefix = null; - - protected DMRFactory factory = null; - protected Nc4DSP dsp = null; - protected DapDataset dmr = null; - - ////////////////////////////////////////////////// - // Constructor(s) - - public Nc4DMRCompiler(Nc4DSP dsp, int ncid, DMRFactory factory) throws DapException { - this.dsp = dsp; - this.path = dsp.getLocation(); - this.ncid = ncid; - this.factory = factory; - } - - - ////////////////////////////////////////////////// - // Main entry point - - public DapDataset compile() throws DapException { - // create and fill the root group - buildrootgroup(this.ncid); - if (this.dmr != null) - dmr.finish(); - return this.dmr; - } - - ////////////////////////////////////////////////// - - protected void buildrootgroup(int ncid) throws DapException { - int ret; - byte[] namep = new byte[NC_MAX_NAME + 1]; - errcheck(ret = nc4.nc_inq_grpname(ncid, namep)); - String[] pieces = DapUtil.canonicalpath(this.path).split("[/]"); - DapDataset g = factory.newDataset(pieces[pieces.length - 1]); - GroupNotes gi = (GroupNotes) Nc4Notes.factory(NoteSort.GROUP, ncid, ncid, this.dsp); - gi.set(g); - this.dsp.note(gi); - this.dmr = g; - fillgroup(ncid); - } - - protected void fillgroup(int gid) throws DapException { - int ret, mode; - int[] dims = getDimensions(gid); - int[] udims = getUnlimitedDimensions(gid); - for (int dimid : dims) { - builddim(gid, dimid, udims); - } - int[] typeids = getUserTypes(gid); - for (int i = 0; i < typeids.length; i++) { - for (int j = 0; j < i; j++) { - if (typeids[i] == typeids[j]) - assert false; - } - } - - for (int typeid : typeids) { - buildusertype(gid, typeid); - } - int[] varids = getVars(gid); - for (int varid : varids) { - buildvar(gid, varid); - } - // globalattributes - String[] gattnames = getAttributes(gid, NC_GLOBAL); - for (String ga : gattnames) { - buildattr(gid, NC_GLOBAL, ga); - } - int[] groupids = getGroups(gid); - for (int groupid : groupids) { - buildgroup(gid, groupid); - } - } - - protected void buildgroup(int parent, int gid) throws DapException { - int ret; - byte[] namep = new byte[NC_MAX_NAME + 1]; - errcheck(ret = nc4.nc_inq_grpname(gid, namep)); - DapGroup g = factory.newGroup(Nc4DSP.makeString(namep)); - GroupNotes gi = (GroupNotes) Nc4Notes.factory(NoteSort.GROUP, parent, gid, this.dsp); - gi.set(g); - this.dsp.note(gi); - GroupNotes gp = (GroupNotes) this.dsp.find(parent, NoteSort.GROUP); - gp.get().addDecl(g); - fillgroup(gid); - } - - protected void builddim(int gid, int did, int[] udims) throws DapException { - int ret = NC_NOERR; - byte[] namep = new byte[NC_MAX_NAME + 1]; - SizeTByReference lenp = new SizeTByReference(); - errcheck(ret = nc4.nc_inq_dim(gid, did, namep, lenp)); - String name = Nc4DSP.makeString(namep); - int len = lenp.intValue(); - boolean isunlimited = contains(udims, did); - DapDimension dim = factory.newDimension(name, lenp.longValue()); - dim.setUnlimited(isunlimited); - DimNotes di = (DimNotes) Nc4Notes.factory(NoteSort.DIM, gid, did, this.dsp); - di.set(dim); - this.dsp.note(di); - GroupNotes gp = (GroupNotes) this.dsp.find(gid, NoteSort.GROUP); - gp.get().addDecl(dim); - if (trace) - System.out.printf("Nc4DSP: dimension: %s size=%d%n", name, dim.getSize()); - } - - protected void buildusertype(int gid, int tid) throws DapException { - int ret = NC_NOERR; - byte[] namep = new byte[NC_MAX_NAME + 1]; - SizeTByReference lenp = new SizeTByReference(); - IntByReference basetypep = new IntByReference(); - IntByReference classp = new IntByReference(); - SizeTByReference nfieldsp = new SizeTByReference(); - errcheck(ret = nc4.nc_inq_user_type(gid, tid, namep, lenp, basetypep, nfieldsp, classp)); - String name = Nc4DSP.makeString(namep); - int basetype = basetypep.getValue(); - long len = lenp.longValue(); - long nfields = nfieldsp.longValue(); - TypeNotes ti = (TypeNotes) Nc4Notes.factory(NoteSort.TYPE, gid, tid, this.dsp); - switch (classp.getValue()) { - case NC_OPAQUE: - buildopaquetype(ti, name, len); - break; - case NC_ENUM: - buildenumtype(ti, name, basetype); - break; - case NC_COMPOUND: - buildcompoundtype(ti, name, nfields, len); - break; - case NC_VLEN: - buildvlentype(ti, name, basetype, len); - break; - default: - throw new DapException("Unknown class: " + classp.getValue()); - } - } - - protected void buildopaquetype(TypeNotes ti, String name, long len) throws DapException { - int ret; - ti.setOpaque(len); - DapType dt = DapType.lookup(TypeSort.Opaque); - ti.set(dt); - this.dsp.note(ti); - } - - protected void buildenumtype(TypeNotes ti, String name, int basetype) throws DapException { - int ret; - SizeTByReference nmembersp = new SizeTByReference(); - SizeTByReference sizep = new SizeTByReference(); - byte[] namep = new byte[NC_MAX_NAME + 1]; - IntByReference basetypep = new IntByReference(); - IntByReference valuep = new IntByReference(); - TypeNotes base = (TypeNotes) this.dsp.find(basetype, NoteSort.TYPE); - if (!isintegertype(base)) - throw new DapException("Enum base type must be integer type"); - errcheck(ret = nc4.nc_inq_enum(ti.gid, ti.id, namep, basetypep, sizep, nmembersp)); - DapEnumeration de = factory.newEnumeration(name, DapType.lookup(base.getType().getTypeSort())); - ti.set(de); - this.dsp.note(ti); - ti.setEnumBaseType(basetype); - ti.group().addDecl(de); - // build list of enum consts - int nconsts = nmembersp.intValue(); - for (int i = 0; i < nconsts; i++) { - // Get info about the ith const - errcheck(ret = nc4.nc_inq_enum_member(ti.gid, ti.id, i, namep, valuep)); - String ecname = Nc4DSP.makeString(namep); - long ecval = (long) valuep.getValue(); - DapEnumConst dec = factory.newEnumConst(ecname, ecval); - de.addEnumConst(dec); - } - } - - protected void buildcompoundtype(TypeNotes ti, String name, long nfields, long len) throws DapException { - DapStructure ds = factory.newStructure(name); - ti.set(ds); - this.dsp.note(ti); - ti.group().addDecl(ds); - for (int i = 0; i < nfields; i++) { - buildfield(ti, i, ds); - } - // Finally, extract the size of the structure - int ret; - SizeTByReference sizep = new SizeTByReference(); - SizeTByReference nfieldsp = new SizeTByReference(); - byte[] namep = new byte[NC_MAX_NAME + 1]; - errcheck(ret = nc4.nc_inq_compound(ti.gid, ti.id, namep, sizep, nfieldsp)); - ti.setSize(sizep.longValue()); - assert len == sizep.longValue(); - assert name.equals(Nc4DSP.makeString(namep)); - // Add the netcdf4 name as an xml attribute. - ds.addXMLAttribute(UCARTAGORIGTYPE, name); - } - - protected void buildfield(TypeNotes ti, int fid, DapStructure container) throws DapException { - int ret; - byte[] namep = new byte[NC_MAX_NAME + 1]; - SizeTByReference offsetp = new SizeTByReference(); - IntByReference fieldtypep = new IntByReference(); - IntByReference ndimsp = new IntByReference(); - - // Get everything but actual dims - errcheck(ret = nc4.nc_inq_compound_field(ti.gid, ti.id, fid, namep, offsetp, fieldtypep, ndimsp, null)); - int fieldtype = fieldtypep.getValue(); - TypeNotes baset = (TypeNotes) this.dsp.find(fieldtype, NoteSort.TYPE); - if (baset == null) - throw new DapException("Undefined field base type: " + fieldtype); - int[] dimsizes = getFieldDimsizes(ti.gid, ti.id, fid, ndimsp.getValue()); - VarNotes fieldnotes = makeField(ti, fid, Nc4DSP.makeString(namep), baset, offsetp.intValue(), dimsizes); - assert baset.getSize() > 0; - } - - protected VarNotes makeField(TypeNotes container, int fieldid, String name, TypeNotes baset, int offset, - int[] dimsizes) throws DapException { - DapVariable field; - DapStructure ds = (DapStructure) container.getType(); - field = factory.newVariable(name, baset.getType()); - field.setParent(ds); - field.setFieldIndex(fieldid); - VarNotes notes = (VarNotes) Nc4Notes.factory(NoteSort.VAR, container.gid, container.id, this.dsp); - notes.setOffset(offset).setBaseType(baset).setContainer(container); - notes.set(field); - this.dsp.note(notes); - // set dimsizes - if (dimsizes.length > 0) { - for (int i = 0; i < dimsizes.length; i++) { - DapDimension dim = factory.newDimension(null, dimsizes[i]); - field.addDimension(dim); - } - } - ds.addField(field); - return notes; - } - - protected DapVariable buildvar(int gid, int vid) throws DapException { - int ret; - byte[] namep = new byte[NC_MAX_NAME + 1]; - IntByReference ndimsp = new IntByReference(); - IntByReference xtypep = new IntByReference(); - IntByReference nattsp = new IntByReference(); - errcheck(ret = nc4.nc_inq_var(gid, vid, namep, xtypep, ndimsp, null, nattsp)); - String name = Nc4DSP.makeString(namep); - TypeNotes xtype = (TypeNotes) this.dsp.find(xtypep.getValue(), NoteSort.TYPE); - if (DEBUG) { - System.err.printf("NC4: inqvar: name=%s gid=%d vid=%d xtype=%d ndims=%d natts=%d%n", name, gid, vid, xtype.id, - ndimsp.getValue(), nattsp.getValue()); - } - if (xtype == null) - throw new DapException("Unknown type id: " + xtype.id); - DapVariable var; - switch (((DapType) xtype.node).getTypeSort()) { - default: /* atomic */ - var = factory.newVariable(name, xtype.getType()); - break; - case Enum: - var = factory.newVariable(name, xtype.getType()); - break; - case Structure: - DapStructure st = (DapStructure) xtype.get(); - var = factory.newVariable(name, xtype.getType()); - break; - case Sequence: - DapSequence seq = (DapSequence) xtype.get(); - var = factory.newVariable(name, xtype.getType()); - break; - } - VarNotes vi = (VarNotes) Nc4Notes.factory(NoteSort.VAR, gid, vid, this.dsp); - vi.set(var); - this.dsp.note(vi); - vi.setBaseType(xtype); - vi.group().addDecl(var); - int[] dimids = getVardims(gid, vid, ndimsp.getValue()); - for (int i = 0; i < dimids.length; i++) { - DimNotes di = (DimNotes) this.dsp.find(dimids[i], NoteSort.DIM); - if (di == null) - throw new DapException("Undefined variable dimension id: " + dimids[i]); - var.addDimension(di.get()); - } - // Now, if this is of type opaque, tag it with the size - if (xtype.isOpaque()) { - var.addXMLAttribute(UCARTAGOPAQUE, Long.toString(xtype.getSize())); - } - // fill in any attributes - String[] attnames = getAttributes(gid, vid); - for (String a : attnames) { - buildattr(gid, vid, a); - } - return var; - } - - protected void buildvlentype(TypeNotes ti, String vname, int basetypeid, long len) throws DapException { - int ref; - // We map vlen to a sequence with a single field of the - // basetype of the vlen. Field name is same as the vlen type. - // So we need to build two things: - // 1. a Sequence object - // 2. a Field - DapSequence ds = factory.newSequence(vname); - ti.set(ds); - this.dsp.note(ti); - ti.group().addDecl(ds); - ti.markVlen(); - TypeNotes fieldtype = (TypeNotes) this.dsp.find(basetypeid, NoteSort.TYPE); - if (fieldtype == null) - throw new DapException("Undefined vlen basetype: " + basetypeid); - VarNotes fieldnotes = makeField(ti, 0, vname, fieldtype, 0, new int[0]); - // Annotate to indicate that this came from a vlen - ds.addXMLAttribute(UCARTAGVLEN, "1"); - - // Annotate to indicate that the original type name - ds.addXMLAttribute(UCARTAGORIGTYPE, ds.getFQN()); - - // Finally, extract the size of the structure, which is the same - // as the size of the singleton field - ti.setRecordSize(fieldtype.getSize()); - ti.setSize(Nc4prototypes.Vlen_t.VLENSIZE); - } - - protected void buildattr(int gid, int vid, String name) throws DapException { - int ret; - boolean isglobal = (vid == NC_GLOBAL); - IntByReference basetypep = new IntByReference(); - errcheck(ret = nc4.nc_inq_atttype(gid, vid, name, basetypep)); - int basetype = basetypep.getValue(); - TypeNotes base = (TypeNotes) this.dsp.find(basetype, NoteSort.TYPE); - if (!islegalattrtype(base)) - throw new DapException("Non-atomic attribute types not supported: " + name); - SizeTByReference countp = new SizeTByReference(); - errcheck(ret = nc4.nc_inq_attlen(gid, vid, name, countp)); - // Get the values of the attribute - String[] values = getAttributeValues(gid, vid, name, base, countp.intValue()); - DapAttribute da = factory.newAttribute(name, (DapType) base.getType()); - da.setValues(values); - if (isglobal) { - GroupNotes gi = (GroupNotes) this.dsp.find(gid, NoteSort.GROUP); - gi.get().addAttribute(da); - } else { - VarNotes vi = this.dsp.findVar(gid, vid); - vi.get().addAttribute(da); - } - } - - ////////////////////////////////////////////////// - - int[] getGroups(int gid) throws DapException { - int ret, n; - IntByReference ip = new IntByReference(); - errcheck(ret = nc4.nc_inq_grps(gid, ip, null)); - n = ip.getValue(); - int[] grpids = null; - if (n > 0) { - grpids = new int[n]; - errcheck(ret = nc4.nc_inq_grps(gid, ip, grpids)); - } else - grpids = new int[0]; - return grpids; - } - - int[] getDimensions(int gid) throws DapException { - int ret, n; - IntByReference ip = new IntByReference(); - errcheck(ret = nc4.nc_inq_ndims(gid, ip)); - n = ip.getValue(); - int[] dimids = new int[n]; - if (n > 0) - errcheck(ret = nc4.nc_inq_dimids(gid, ip, dimids, NC_FALSE)); - return dimids; - } - - int[] getUnlimitedDimensions(int gid) throws DapException { - int ret, n; - IntByReference ip = new IntByReference(); - errcheck(ret = nc4.nc_inq_unlimdims(gid, ip, null)); - n = ip.getValue(); - int[] dimids = new int[n]; - if (n > 0) - errcheck(ret = nc4.nc_inq_unlimdims(gid, ip, dimids)); - return dimids; - } - - int[] getUserTypes(int gid) throws DapException { - int ret, n; - IntByReference ip = new IntByReference(); - errcheck(ret = nc4.nc_inq_typeids(gid, ip, null)); - n = ip.getValue(); - int[] typeids = new int[n]; - if (n > 0) - errcheck(ret = nc4.nc_inq_typeids(gid, ip, typeids)); - return typeids; - } - - int[] getVars(int gid) throws DapException { - int ret, n; - IntByReference ip = new IntByReference(); - errcheck(ret = nc4.nc_inq_nvars(gid, ip)); - n = ip.getValue(); - int[] ids = new int[n]; - if (n > 0) - errcheck(ret = nc4.nc_inq_varids(gid, ip, ids)); - return ids; - } - - int[] getVardims(int gid, int vid, int ndims) throws DapException { - int ret; - int[] dimids = new int[ndims]; - - if (ndims > 0) { - byte[] namep = new byte[NC_MAX_NAME + 1]; - IntByReference ndimsp = new IntByReference(); - errcheck(ret = nc4.nc_inq_var(gid, vid, null, null, ndimsp, dimids, null)); - } - return dimids; - } - - int[] getFieldDimsizes(int gid, int tid, int fid, int ndims) throws DapException { - int ret; - int[] dimsizes = new int[ndims]; - if (ndims > 0) { - IntByReference ndimsp = new IntByReference(); - errcheck(ret = nc4.nc_inq_compound_field(gid, tid, fid, null, null, null, ndimsp, dimsizes)); - } - return dimsizes; - } - - String[] getAttributes(int gid, int vid) throws DapException { - int ret, n; - boolean isglobal = (vid == NC_GLOBAL); - IntByReference nattsp = new IntByReference(); - byte[] namep = new byte[NC_MAX_NAME + 1]; - IntByReference ndimsp = new IntByReference(); - IntByReference xtypep = new IntByReference(); - if (isglobal) - errcheck(ret = nc4.nc_inq_natts(gid, nattsp)); - else { - errcheck(ret = nc4.nc_inq_var(gid, vid, namep, xtypep, ndimsp, null, nattsp)); - } - n = nattsp.getValue(); - String[] names = new String[n]; - for (int i = 0; i < n; i++) { - errcheck(ret = nc4.nc_inq_attname(gid, vid, i, namep)); - names[i] = Nc4DSP.makeString(namep); - } - return names; - } - - String[] getAttributeValues(int gid, int vid, String name, TypeNotes tn, int count) throws DapException { - int ret; - // Currently certain types only are allowed. - if (!islegalattrtype(tn)) - throw new DapException("Unsupported attribute type: " + tn.getType().getShortName()); - if (isenumtype(tn)) - tn = enumbasetype(tn); - Object vector = getRawAttributeValues(tn, count, gid, vid, name); - DapType basetype = tn.getType(); - // basetype == Char requires special pre-conversion - // since the nc file data is coming back as utf-8, not utf-16. - if (basetype.isCharType()) { - byte[] data = (byte[]) vector; // raw utf-8 - String sdata = new String(data, DapUtil.UTF8); - char[] cdata = sdata.toCharArray(); - count = cdata.length; - vector = cdata; - } - String[] values = (String[]) Convert.convert(DapType.STRING, basetype, vector); - return values; - } - - Object getRawAttributeValues(TypeNotes base, int count, int gid, int vid, String name) throws DapException { - int nativetypesize = base.getType().getSize(); - if (isstringtype(base)) - nativetypesize = NC_POINTER_BYTES; - else if (nativetypesize == 0) - throw new DapException("Illegal Type Sort:" + base.get().getShortName()); - Object values = null; - if (count > 0) { - int ret; - long totalsize = nativetypesize * count; - Nc4Pointer mem = Nc4Pointer.allocate(totalsize); - errcheck(ret = nc4.nc_get_att(gid, vid, name, mem.p)); - switch (base.getType().getTypeSort()) { - case Char: - values = mem.p.getByteArray(0, count); - break; - case Int8: - values = mem.p.getByteArray(0, count); - break; - case UInt8: - values = mem.p.getByteArray(0, count); - break; - case Int16: - values = mem.p.getShortArray(0, count); - break; - case UInt16: - values = mem.p.getShortArray(0, count); - break; - case Int32: - values = mem.p.getIntArray(0, count); - break; - case UInt32: - values = mem.p.getIntArray(0, count); - break; - case Int64: - values = mem.p.getLongArray(0, count); - break; - case UInt64: - values = mem.p.getLongArray(0, count); - break; - case Float32: - values = mem.p.getFloatArray(0, count); - break; - case Float64: - values = mem.p.getDoubleArray(0, count); - break; - case String: - values = mem.p.getStringArray(0, count); - break; - case Opaque: - values = mem.p.getByteArray(0, (int) totalsize); - break; - case Enum: - break; - default: - throw new IllegalArgumentException("Unexpected sort: " + base.getType().getShortName()); - } - } - return values; - } - - /* - * Object[] - * convert(int count, Object src, TypeNotes basetype) - * throws DapException - * { - * boolean isenum = isenumtype(basetype); - * boolean isopaque = basetype.isOpaque(); - * TypeNotes truetype = basetype; - * if(isenum) - * truetype = enumbasetype(basetype); - * - * Object[] dst; - * if(ischartype(basetype)) - * dst = new Character[count]; - * else - * dst = new Object[count]; - * try { - * for(int i = 0; i < dst.length; i++) { - * switch (basetype.getType().getTypeSort()) { - * case Char: - * if(src instanceof char[]) - * dst[i] = ((char[]) src)[i]; - * else - * dst[i] = (char) (((byte[]) src)[i]); - * break; - * case Int8: - * case UInt8: - * dst[i] = ((byte[]) src)[i]; - * break; - * case Int16: - * case UInt16: - * dst[i] = ((short[]) src)[i]; - * break; - * case Int32: - * case UInt32: - * dst[i] = ((int[]) src)[i]; - * break; - * case Int64: - * case UInt64: - * dst[i] = ((long[]) src)[i]; - * break; - * case Float32: - * dst[i] = ((float[]) src)[i]; - * break; - * case Float64: - * dst[i] = ((double[]) src)[i]; - * break; - * case String: - * dst[i] = ((String[]) src)[i]; - * break; - * case Opaque: - * byte[] alldata = (byte[]) src; - * int oplen = alldata.length / count; - * for(i = 0; i < count; i++) { - * dst[i] = new byte[oplen]; - * System.arraycopy(alldata, oplen * i, dst[i], 0, oplen); - * } - * break; - * case Enum: - * dst = convert(count, src, truetype); - * break; - * default: - * throw new IllegalArgumentException("Unexpected sort: " + basetype.getType().getShortName()); - * } - * } - * return dst; - * } catch (IllegalArgumentException | - * ArrayIndexOutOfBoundsException e - * ) { - * throw new DapException(e); - * } - * } - */ - - protected void errcheck(int ret) throws DapException { - if (ret != 0) { - String msg = String.format("TestNetcdf: errno=%d; %s", ret, nc4.nc_strerror(ret)); - if (DEBUG) - System.err.println(msg); - throw new DapException(msg); - } - } - - boolean contains(int[] list, int value) { - for (int i = 0; i < list.length; i++) { - if (list[i] == value) - return true; - } - return false; - } - - boolean islegalattrtype(TypeNotes nctype) { - return isatomictype(nctype) || isenumtype(nctype) || nctype.isOpaque(); - } - - boolean isatomictype(TypeNotes t) { - return (t.id <= NC_MAX_ATOMIC_TYPE); - } - - boolean isstringtype(TypeNotes nctype) { - return (nctype.id == NC_STRING); - } - - boolean ischartype(TypeNotes t) { - return (t.id == NC_CHAR); - } - - boolean isintegertype(TypeNotes t) { - return (t.id <= NC_UINT64 && t.id != NC_CHAR); - } - - boolean isenumtype(TypeNotes nctype) { - return (nctype == null ? false : nctype.getType().isEnumType()); - } - - TypeNotes enumbasetype(TypeNotes etype) { - if (etype == null || !etype.getType().isEnumType()) - return null; - DapType dt = ((DapEnumeration) etype.getType()).getBaseType(); - return (TypeNotes) this.dsp.find(dt); - } - - protected String Nc4FQN(TypeNotes t) throws DapException { - int ret = 0; - // get enclosing ncid fqn - SizeTByReference lenp = new SizeTByReference(); - errcheck(ret = nc4.nc_inq_grpname_len(t.gid, lenp)); - byte[] namep = new byte[lenp.intValue() + 1]; - errcheck(ret = nc4.nc_inq_grpname_full(t.gid, lenp, namep)); - return Nc4DSP.makeString(namep); - } -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4DSP.java b/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4DSP.java deleted file mode 100644 index 6c05c40251..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4DSP.java +++ /dev/null @@ -1,405 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -/* - * TODO: - * 1. make sure all nodes areproperly annotated - */ - - -package dap4.dap4lib.netcdf; - -import com.sun.jna.Memory; -import com.sun.jna.Native; -import com.sun.jna.Pointer; -import com.sun.jna.ptr.IntByReference; -import dap4.core.data.DataCursor; -import dap4.core.dmr.DMRFactory; -import dap4.core.dmr.DapNode; -import dap4.core.dmr.DapType; -import dap4.core.dmr.DapVariable; -import dap4.core.util.DapContext; -import dap4.core.util.DapException; -import dap4.core.util.DapUtil; -import dap4.dap4lib.AbstractDSP; -import dap4.dap4lib.DapCodes; -import dap4.dap4lib.XURI; -import ucar.nc2.ffi.netcdf.NetcdfClibrary; -import ucar.nc2.jni.netcdf.Nc4prototypes; -import ucar.nc2.jni.netcdf.SizeTByReference; -import java.net.URISyntaxException; -import java.util.HashMap; -import java.util.Map; -import static dap4.dap4lib.netcdf.Nc4Notes.*; -import static ucar.nc2.jni.netcdf.Nc4prototypes.*; - -/** - * DSP for reading netcdf files through jni interface to netcdf4 library - */ -public class Nc4DSP extends AbstractDSP { - ////////////////////////////////////////////////// - // Constants - - public static final boolean DEBUG = false; - public static final boolean DUMPDMR = false; - - static String PATHSUFFIX = "/src/data"; - - public static String[] EXTENSIONS = new String[] {".nc", ".hdf5"}; - - static final Pointer NC_NULL = Pointer.NULL; - static final int NC_FALSE = 0; - static final int NC_TRUE = 1; - // "null" id(s) - public static final int NC_GRPNULL = 0; - public static final int NC_IDNULL = -1; - public static final int NC_NOERR = 0; - - static int NC_INT_BYTES = (java.lang.Integer.SIZE / java.lang.Byte.SIZE); - static int NC_LONG_BYTES = (Native.LONG_SIZE); - static int NC_POINTER_BYTES = (Native.POINTER_SIZE); - static int NC_SIZET_BYTES = (Native.SIZE_T_SIZE); - - protected static Nc4prototypes nc4 = NetcdfClibrary.getForeignFunctionInterface(); - - ////////////////////////////////////////////////// - // com.sun.jna.Memory control - - /** - * Provide a wrapper for pointers that tracks the size. - * Also allows for allocation. - */ - public static class Nc4Pointer { - public static Nc4Pointer allocate(long size) { - if (size == 0) - throw new IllegalArgumentException("Attempt to allocate zero bytes"); - Memory m = new Memory(size); - return new Nc4Pointer(m, size); - } - - public Pointer p; // alow direct access - public long size; // allow direct access - - public Nc4Pointer(Pointer p, long size) { - this.p = p; - this.size = size; - } - - public Nc4Pointer share(long offset, long size) { - try { - Pointer ps = p.share(offset, size); - Nc4Pointer newp = new Nc4Pointer(ps, size); - return newp; - } catch (IndexOutOfBoundsException e) { - return null; - } - } - - public String toString() { - return String.format("0x%016x/%d", Pointer.nativeValue(this.p), this.size); - } - - public static boolean validate(Nc4Pointer mem, long require) { - if (mem == null || mem.p == null || mem.size == 0) - return false; - return (mem.size > require); - } - } - - ////////////////////////////////////////////////// - // DSP Match API - - /** - * A path is file if it has no base protocol or is file: - * - * @param path - * @param context Any parameters that may help to decide. - * @return true if this path appears to be processible by this DSP - */ - public boolean dspMatch(String path, DapContext context) { - for (String s : EXTENSIONS) { - if (path.endsWith(s)) - return true; - } - return false; - } - - ////////////////////////////////////////////////// - // Notes Management - - protected Map> allnotes = null; - - /* package */ void note(Notes note) { - assert (this.allnotes != null); - int gid = note.gid; - int id = note.id; - NoteSort sort = note.getSort(); - Map sortnotes = this.allnotes.get(sort); - assert sortnotes != null; - switch (sort) { - case TYPE: - case GROUP: - case DIM: - assert sortnotes.get(id) == null; - sortnotes.put((long) id, note); - break; - case VAR: - long gv = Nc4Notes.getVarId((VarNotes) note); - assert sortnotes.get(gv) == null; - sortnotes.put(gv, note); - break; - } - } - - /* package */ VarNotes findVar(int gid, int varid) { - long gv = Nc4Notes.getVarId(gid, varid, -1); - return (VarNotes) find(gv, NoteSort.VAR); - } - - /* package */ VarNotes findField(int gid, int varid, int fid) { - long gv = Nc4Notes.getVarId(gid, varid, fid); - return (VarNotes) find(gv, NoteSort.VAR); - } - - public Notes find(long id, NoteSort sort) { - assert (this.allnotes != null); - Map sortnotes = this.allnotes.get(sort); - assert sortnotes != null; - return sortnotes.get((long) id); - } - - /* package */Notes find(DapNode node) { - NoteSort sort = noteSortFor(node); - assert (this.allnotes != null); - Map sortnotes = this.allnotes.get(sort); - assert sortnotes != null; - for (Map.Entry entries : sortnotes.entrySet()) { - Notes note = entries.getValue(); - if (note.get() == node) - return note; - } - return null; - } - - protected NoteSort noteSortFor(DapNode node) { - switch (node.getSort()) { - case ATOMICTYPE: - case STRUCTURE: - case SEQUENCE: - return NoteSort.TYPE; - case VARIABLE: - return NoteSort.VAR; - case GROUP: - case DATASET: - return NoteSort.GROUP; - case DIMENSION: - return NoteSort.DIM; - default: - break; - } - return null; - } - - protected void allnotesInit() { - this.allnotes = new HashMap<>(); - for (NoteSort s : NoteSort.values()) { - this.allnotes.put(s, new HashMap()); - } - Notes n; - n = Nc4Notes.factory(NoteSort.TYPE, 0, NC_BYTE, this); - n.set(DapType.INT8); - this.note(n); - n = Nc4Notes.factory(NoteSort.TYPE, 0, NC_CHAR, this); - n.set(DapType.CHAR); - this.note(n); - n = Nc4Notes.factory(NoteSort.TYPE, 0, NC_SHORT, this); - n.set(DapType.INT16); - this.note(n); - n = Nc4Notes.factory(NoteSort.TYPE, 0, NC_INT, this); - n.set(DapType.INT32); - this.note(n); - n = Nc4Notes.factory(NoteSort.TYPE, 0, NC_FLOAT, this); - n.set(DapType.FLOAT32); - this.note(n); - n = Nc4Notes.factory(NoteSort.TYPE, 0, NC_DOUBLE, this); - n.set(DapType.FLOAT64); - this.note(n); - n = Nc4Notes.factory(NoteSort.TYPE, 0, NC_UBYTE, this); - n.set(DapType.UINT8); - this.note(n); - n = Nc4Notes.factory(NoteSort.TYPE, 0, NC_USHORT, this); - n.set(DapType.UINT16); - this.note(n); - n = Nc4Notes.factory(NoteSort.TYPE, 0, NC_UINT, this); - n.set(DapType.UINT32); - this.note(n); - n = Nc4Notes.factory(NoteSort.TYPE, 0, NC_INT64, this); - n.set(DapType.INT64); - this.note(n); - n = Nc4Notes.factory(NoteSort.TYPE, 0, NC_UINT64, this); - n.set(DapType.UINT64); - this.note(n); - n = Nc4Notes.factory(NoteSort.TYPE, 0, NC_STRING, this); - n.set(DapType.STRING); - this.note(n); - - for (int i = NC_BYTE; i <= NC_MAX_ATOMIC_TYPE; i++) { - Nc4Notes.TypeNotes tn = (Nc4Notes.TypeNotes) find(i, NoteSort.TYPE); - assert tn != null; - int ret = 0; - byte[] namep = new byte[NC_MAX_NAME + 1]; - if (i == NC_STRING) { - // There is a bug in some versions of netcdf that does not - // handle NC_STRING correctly when the gid is invalid. - // Handle specially ; this is a temporary hack - // - // 8/16/2019 jlcaron upgrade to jna 5.4.0 - // com.sun.jna.Pointer#SIZE is removed. Its use is replaced by - // com.sun.jna.Native#POINTER_SIZE to prevent a class loading deadlock, when JNA is initialized from multiple - // threads - tn.setSize(Native.POINTER_SIZE); - } else { - SizeTByReference sizep = new SizeTByReference(); - try { - Nc4Cursor.errcheck(getJNI(), ret = nc4.nc_inq_type(0, i, namep, sizep)); - } catch (DapException e) { - e.printStackTrace(); - assert false; // should never happen - } - tn.setSize(sizep.intValue()); - } - } - } - - ////////////////////////////////////////////////// - // Instance Variables - - protected boolean trace = false; - protected boolean closed = false; - - protected int ncid = -1; // file id ; also set as DSP.source - protected int format = 0; // from nc_inq_format - protected int mode = 0; - protected String filepath = null; // real path to the dataset - - protected DMRFactory dmrfactory = null; - - ////////////////////////////////////////////////// - // Constructor(s) - - public Nc4DSP() throws DapException { - super(); - if (nc4 == null) { - throw new DapException("Could not load libnetcdf"); - } - dmrfactory = new DMRFactory(); - allnotesInit(); - } - - ////////////////////////////////////////////////// - // DSP API - - @Override - public Nc4DSP open(String filepath) throws DapException { - if (filepath.startsWith("file:")) - try { - XURI xuri = new XURI(filepath); - filepath = xuri.getPath(); - } catch (URISyntaxException use) { - throw new DapException("Malformed filepath: " + filepath).setCode(DapCodes.SC_NOT_FOUND); - } - int ret, mode; - IntByReference ncidp = new IntByReference(); - this.filepath = filepath; - try { - mode = NC_NOWRITE; - Nc4Cursor.errcheck(nc4, ret = nc4.nc_open(this.filepath, mode, ncidp)); - this.ncid = ncidp.getValue(); - // Figure out what kind of file - IntByReference formatp = new IntByReference(); - Nc4Cursor.errcheck(nc4, ret = nc4.nc_inq_format(ncid, formatp)); - this.format = formatp.getValue(); - if (DEBUG) - System.out.printf("TestNetcdf: open: %s; ncid=%d; format=%d%n", this.filepath, ncid, this.format); - // Compile the DMR - Nc4DMRCompiler dmrcompiler = new Nc4DMRCompiler(this, ncid, dmrfactory); - setDMR(dmrcompiler.compile()); - if (DEBUG || DUMPDMR) { - System.err.println("+++++++++++++++++++++"); - System.err.println(printDMR(getDMR())); - System.err.println("+++++++++++++++++++++"); - } - return this; - } catch (Exception t) { - t.printStackTrace(); - } - return null; - } - - @Override - public void close() throws DapException { - if (this.closed) - return; - if (this.ncid < 0) - return; - int ret = nc4.nc_close(ncid); - Nc4Cursor.errcheck(nc4, ret); - closed = true; - if (trace) - System.out.printf("Nc4DSP: closed: %s%n", this.filepath); - } - - @Override - public Nc4Cursor getVariableData(DapVariable var) throws DapException { - assert (var.isTopLevel()); - DapType type = var.getBaseType(); - Nc4Cursor vardata = (Nc4Cursor) super.getVariableData(var); - if (vardata == null) { - switch (type.getTypeSort()) { - case Structure: - vardata = new Nc4Cursor(DataCursor.Scheme.STRUCTARRAY, this, var, null); - break; - case Sequence: - vardata = new Nc4Cursor(DataCursor.Scheme.SEQARRAY, this, var, null); - break; - default: - if (!type.isAtomic()) - throw new DapException("Unexpected cursor type: " + type); - vardata = new Nc4Cursor(DataCursor.Scheme.ATOMIC, this, var, null); - break; - } - super.addVariableData(var, vardata); - } - assert var.isTopLevel(); - return vardata; - } - - ////////////////////////////////////////////////// - // Accessors - - - public Nc4prototypes getJNI() { - return nc4; - } - - @Override - public String getLocation() { - return this.filepath; - } - - ////////////////////////////////////////////////// - // Utilities - - public static String makeString(byte[] b) { - // null terminates - int count; - for (count = 0; (count < b.length && b[count] != 0); count++) { - ; - } - return new String(b, 0, count, DapUtil.UTF8); - } - - -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4Notes.java b/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4Notes.java deleted file mode 100644 index a2f571a07a..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/netcdf/Nc4Notes.java +++ /dev/null @@ -1,316 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.dap4lib.netcdf; - -import dap4.core.dmr.*; -import dap4.core.util.DapSort; -import dap4.core.util.DapUtil; - -/** - * Note that ideally, this info should be part of the - * Nc4DMR classes, but that would require multiple inheritance. - * Hence, we isolate that info here and add it to the instances - * via annotation - */ - -public abstract class Nc4Notes { - ////////////////////////////////////////////////// - // Constants - - // Mnemonics - public static final int NOGROUP = -1; - public static final int NOID = -1; - public static final int NOFIELDID = -1; - - ////////////////////////////////////////////////// - // Use a factory so we can debug constructor calls - - static Notes factory(NoteSort ns, int g, int id, Nc4DSP dsp) { - Notes note = null; - switch (ns) { - case TYPE: - note = new TypeNotes(g, id, dsp); - break; - case VAR: - note = new VarNotes(g, id, dsp); - break; - case DIM: - note = new DimNotes(g, id, dsp); - break; - case GROUP: - note = new GroupNotes(g, id, dsp); - break; - } - return note; - } - - ////////////////////////////////////////////////// - // Manage the compound id for variables - - public static long getVarId(VarNotes note) { - return getVarId(note.gid, note.id, note.getFieldIndex()); - } - - public static long getVarId(int gid, int varid, int ifid) { - long gv = ((long) gid) << 32; - assert varid < 0x100000; - gv = gv | ((long) varid) << 20; - long fid = (long) ifid; - if (fid >= 0) - gv |= fid; - return gv; - } - - ////////////////////////////////////////////////// - // Type Decls - - public static enum NoteSort { - TYPE, VAR, GROUP, DIM; - } - - public static class Notes implements Cloneable { - Nc4DSP dsp; // Need a place to store global state - NoteSort sort; - int gid; - int id; - DapNode node = null; - protected String name = null; - protected Notes parent = null; - protected TypeNotes basetype = null; - protected long offset = 0; - // For most types, there is only one size, - // but for vlen/sequence, there are two sizes: - // (1) the record size and (2) the instance size (= |vlen_t|); - protected long size = 0; - protected long recordsize = 0; - - protected Notes(NoteSort sort, int gid, int id, Nc4DSP dsp) { - this.sort = sort; - this.dsp = dsp; - this.gid = gid; - this.id = id; - } - - public NoteSort getSort() { - return this.sort; - } - - public Notes setName(String name) { - this.name = name; - return this; - } - - public Notes set(DapNode node) { - this.node = node; - if (this.name == null) - setName(node.getShortName()); - return this; - } - - public DapNode get() { - return this.node; - } - - public Notes setContainer(Notes parent) { - this.parent = parent; - return this; - } - - public Notes getContainer() { - return this.parent; - } - - public long getOffset() { - return this.offset; - } - - public Notes setOffset(long offset) { - this.offset = offset; - return this; - } - - public long getSize() { - return this.size; - } - - public Notes setSize(long size) { - this.size = size; - return this; - } - - public long getRecordSize() { - return this.recordsize; - } - - public Notes setRecordSize(long size) { - this.recordsize = size; - return this; - } - - public Notes setBaseType(TypeNotes t) { - this.basetype = t; - return this; - } - - public TypeNotes getBaseType() { - return this.basetype; - } - - DapGroup group() { - GroupNotes g = (GroupNotes) dsp.find(gid, NoteSort.GROUP); - return (g == null ? null : g.get()); - } - - public String toString() { - StringBuilder buf = new StringBuilder(); - buf.append(this.getClass().getName()); - buf.append("{"); - if (name != null) { - buf.append("name="); - buf.append(name); - } - buf.append(" node="); - buf.append(this.node != null ? this.node.getShortName() : "null"); - if (this.basetype != null) { - buf.append(" type="); - buf.append(this.node.getShortName()); - } - buf.append("}"); - return buf.toString(); - } - } - - public static class GroupNotes extends Notes { - protected GroupNotes(int p, int g, Nc4DSP dsp) { - super(NoteSort.GROUP, p, g, dsp); - } - - public DapGroup get() { - return (DapGroup) super.get(); - } - - public GroupNotes set(DapNode node) { - return (GroupNotes) super.set(node); - } - - } - - public static class DimNotes extends Notes { - protected DimNotes(int g, int id, Nc4DSP dsp) { - super(NoteSort.DIM, g, id, dsp); - } - - public DapDimension get() { - return (DapDimension) super.get(); - } - - public DimNotes set(DapNode node) { - return (DimNotes) super.set(node); - } - - } - - public static class TypeNotes extends Notes { - public int enumbase = -1; - public boolean isvlen = false; - - protected TypeNotes(int g, int id, Nc4DSP dsp) { - super(NoteSort.TYPE, g, id, dsp); - } - - public DapType getType() { - DapSort sort = this.node.getSort(); - switch (sort) { - case ATOMICTYPE: - case STRUCTURE: - case SEQUENCE: - return (DapType) super.get(); - case ENUMERATION: - return (DapEnumeration) super.get(); - case VARIABLE: - return ((DapVariable) super.get()).getBaseType(); - default: - break; - } - return null; - } - - public TypeNotes setOpaque(long len) { - super.setSize(len); - return this; - } - - public TypeNotes setEnumBaseType(int bt) { - this.enumbase = bt; - TypeNotes btt = (TypeNotes) this.dsp.find(bt, NoteSort.TYPE); - setSize(btt.getSize()); - return this; - } - - public boolean isOpaque() { - return getType().getTypeSort().isOpaqueType(); - } - - public boolean isEnum() { - return getType().getTypeSort().isEnumType(); - } - - public boolean isSeq() { - return getType().getTypeSort().isSeqType(); - } - - public boolean isCompound() { - return getType().getTypeSort().isCompoundType(); - } - - public boolean isVlen() { - return this.isvlen; - } - - public TypeNotes markVlen() { - this.isvlen = true; - return this; - } - - public DapType get() { - return (DapType) super.get(); - } - - public TypeNotes set(DapNode node) { - return (TypeNotes) super.set(node); - } - - } - - public static class VarNotes extends Notes { - protected VarNotes(int g, int v, Nc4DSP dsp) { - super(NoteSort.VAR, g, v, dsp); - } - - public VarNotes setBaseType(TypeNotes ti) { - return (VarNotes) super.setBaseType(ti); - } - - public DapVariable get() { - return (DapVariable) super.get(); - } - - public VarNotes set(DapNode node) { - return (VarNotes) super.set(node); - } - - public int getFieldIndex() { - assert this.get() != null; - return this.get().getFieldIndex(); - } - - @Override - public long getSize() { - return this.getBaseType().getSize() * DapUtil.dimProduct(get().getDimensions()); - } - - } -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/serial/D4Cursor.java b/dap4/d4lib/src/main/java/dap4/dap4lib/serial/D4Cursor.java deleted file mode 100644 index 82979ab524..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/serial/D4Cursor.java +++ /dev/null @@ -1,374 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.dap4lib.serial; - -import dap4.core.dmr.*; -import dap4.core.util.*; -import dap4.dap4lib.AbstractCursor; -import dap4.dap4lib.LibTypeFcns; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.List; - - -public class D4Cursor extends AbstractCursor { - ////////////////////////////////////////////////// - // Mnemonics - static final long NULLOFFSET = -1; - - static final int D4LENSIZE = 8; - - ////////////////////////////////////////////////// - // Instance Variables - - protected long offset = NULLOFFSET; - - protected long[] bytestrings = null; - - // For debugging purposes, we keep these separate, - // but some merging could be done . - - // Track the array elements for a structure array - protected D4Cursor[] elements = null; // scheme == STRUCTARRAY|SEQARRAY - - // Track the fields of a structure instance - protected D4Cursor[] fieldcursors = null; // scheme == STRUCTURE|SEQUENCE - - // Track the records of a sequence instance - protected List records = null; // scheme == SEQUENCE - - ////////////////////////////////////////////////// - // Constructor(s) - - public D4Cursor(Scheme scheme, D4DSP dsp, DapNode template, D4Cursor container) { - super(scheme, dsp, template, container); - } - - /** - * Effectively a clone of c - * - * @param c cursor to clone - */ - public D4Cursor(D4Cursor c) { - super(c); - assert false; - this.offset = c.offset; - this.bytestrings = c.bytestrings; - this.fieldcursors = new D4Cursor[c.fieldcursors.length]; - for (int i = 0; i < c.fieldcursors.length; i++) { - D4Cursor dc = c.fieldcursors[i]; - this.fieldcursors[i] = new D4Cursor(dc); - this.fieldcursors[i].setContainer(this); // Change the parent in the clone - } - this.elements = new D4Cursor[c.elements.length]; - for (int i = 0; i < c.elements.length; i++) { - D4Cursor dc = c.elements[i]; - this.elements[i] = new D4Cursor(dc); - this.elements[i].setContainer(this); // Change the parent in the clone - } - this.records = new ArrayList<>(); - for (int i = 0; i < c.records.size(); i++) { - D4Cursor dc = c.records.get(i); - this.records.add(new D4Cursor(dc)); - this.records.get(i).setContainer(this); // Change the parent in the clone - } - } - - ////////////////////////////////////////////////// - // DataCursor API (Except as Implemented in AbstractCursor) - - - @Override - public Object read(Index index) throws DapException { - return read(DapUtil.indexToSlices(index)); - } - - @Override - public Object read(List slices) throws DapException { - switch (this.scheme) { - case ATOMIC: - return readAtomic(slices); - case STRUCTURE: - case SEQUENCE: - if (((DapVariable) this.getTemplate()).getRank() == 0 || DapUtil.isScalarSlices(slices)) - throw new DapException("Cannot slice a scalar variable"); - return new D4Cursor(this); - case STRUCTARRAY: - // Read the structures specified by slices - Odometer odom = Odometer.factory(slices); - D4Cursor[] instances = new D4Cursor[(int) odom.totalSize()]; - for (int i = 0; odom.hasNext(); i++) { - instances[i] = readStructure(odom.next()); - } - return instances; - case SEQARRAY: - odom = Odometer.factory(slices); - instances = new D4Cursor[(int) odom.totalSize()]; - for (int i = 0; odom.hasNext(); i++) { - instances[i] = readSequence(odom.next()); - } - return instances; - default: - throw new DapException("Attempt to slice a scalar object"); - } - } - - @Override - public D4Cursor readField(int findex) throws DapException { - assert (this.scheme == scheme.RECORD || this.scheme == scheme.STRUCTURE); - DapStructure basetype = (DapStructure) ((DapVariable) getTemplate()).getBaseType(); - if (findex < 0 || findex >= basetype.getFields().size()) - throw new DapException("Field index out of range: " + findex); - D4Cursor field = this.fieldcursors[findex]; - return field; - } - - @Override - public D4Cursor readRecord(long i) { - assert (this.scheme == Scheme.SEQUENCE); - if (this.records == null || i < 0 || i > this.records.size()) - throw new IndexOutOfBoundsException("No such record: " + i); - return this.records.get((int) i); - } - - @Override - public long getRecordCount() { - assert (this.scheme == Scheme.SEQUENCE); - return this.records == null ? 0 : this.records.size(); - } - - ////////////////////////////////////////////////// - // Support methods - - protected Object readAtomic(List slices) throws DapException { - if (slices == null) - throw new DapException("DataCursor.read: null set of slices"); - assert this.scheme == Scheme.ATOMIC; - DapVariable atomvar = (DapVariable) getTemplate(); - int rank = atomvar.getRank(); - assert slices != null && ((rank == 0 && slices.size() == 1) || (slices.size() == rank)); - DapType basetype = atomvar.getBaseType(); - return readAs(atomvar, basetype, slices); - } - - /** - * Allow specification of basetype to use; used for enumerations - * - * @param atomvar - * @param basetype - * @param slices - * @return Object of basetype - * @throws DapException - */ - protected Object readAs(DapVariable atomvar, DapType basetype, List slices) throws DapException { - if (basetype.getTypeSort() == TypeSort.Enum) {// short circuit this case - basetype = ((DapEnumeration) basetype).getBaseType(); - return readAs(atomvar, basetype, slices); - } - long count = DapUtil.sliceProduct(slices); - Object result = LibTypeFcns.newVector(basetype, count); - Odometer odom = Odometer.factory(slices); - if (DapUtil.isContiguous(slices) && basetype.isFixedSize()) - readContig(slices, basetype, count, odom, result); - else - readOdom(slices, basetype, odom, result); - return result; - } - - protected void readContig(List slices, DapType basetype, long count, Odometer odom, Object result) - throws DapException { - ByteBuffer alldata = ((D4DSP) this.dsp).getBuffer(); - long off = this.offset; - long ix = odom.indices().index(); - int elemsize = basetype.getSize(); - alldata.position((int) (off + (ix * elemsize))); - int icount = (int) count; - long totalsize = count * basetype.getSize(); - switch (basetype.getTypeSort()) { - case Int8: - case UInt8: - alldata.get((byte[]) result); - break; - case Char: // remember, we are reading 7-bit ascii, not utf-8 or utf-16 - byte[] ascii = new byte[icount]; - alldata.get(ascii); - for (int i = 0; i < icount; i++) { - ((char[]) result)[i] = (char) (ascii[i] & 0x7f); - } - break; - case Int16: - case UInt16: - alldata.asShortBuffer().get((short[]) result); - skip(totalsize, alldata); - break; - case Int32: - case UInt32: - alldata.asIntBuffer().get((int[]) result); - skip(totalsize, alldata); - break; - case Int64: - case UInt64: - alldata.asLongBuffer().get((long[]) result); - skip(totalsize, alldata); - break; - case Float32: - alldata.asFloatBuffer().get((float[]) result); - skip(totalsize, alldata); - break; - case Float64: - alldata.asDoubleBuffer().get((double[]) result); - skip(totalsize, alldata); - break; - default: - throw new DapException("Contiguous read not supported for type: " + basetype.getTypeSort()); - } - } - - protected Object readOdom(List slices, DapType basetype, Odometer odom, Object result) throws DapException { - ByteBuffer alldata = ((D4DSP) this.dsp).getBuffer(); - alldata.position((int) this.offset); - ByteBuffer slice = alldata.slice(); - slice.order(alldata.order()); - for (int i = 0; odom.hasNext(); i++) { - Index index = odom.next(); - int ipos = (int) index.index(); - switch (basetype.getTypeSort()) { - case Int8: - case UInt8: - ((byte[]) result)[i] = slice.get(ipos); - break; - case Char: // remember, we are reading 7-bit ascii, not utf-8 or utf-16 - byte ascii = slice.get(ipos); - ((char[]) result)[i] = (char) ascii; - break; - case Int16: - case UInt16: - ((short[]) result)[i] = slice.getShort(ipos); - break; - case Int32: - case UInt32: - ((int[]) result)[i] = slice.getInt(ipos); - break; - case Int64: - case UInt64: - ((long[]) result)[i] = slice.getLong(ipos); - break; - case Float32: - ((float[]) result)[i] = slice.getFloat(ipos); - break; - case Float64: - ((double[]) result)[i] = slice.getDouble(ipos); - break; - case String: - case URL: - int savepos = alldata.position(); - long pos = bytestrings[i]; - alldata.position((int) pos); // bytestring offsets are absolute - long n = getLength(alldata); - byte[] data = new byte[(int) n]; - alldata.get(data); - ((String[]) result)[i] = new String(data, DapUtil.UTF8); - alldata.position(savepos); - break; - case Opaque: - savepos = alldata.position(); - pos = bytestrings[i]; - alldata.position((int) pos); // bytestring offsets are absolute - n = getLength(alldata); - data = new byte[(int) n]; - alldata.get(data); - ByteBuffer buf = ByteBuffer.wrap(data); - ((ByteBuffer[]) result)[i] = buf; - alldata.position(savepos); - break; - default: - throw new DapException("Attempt to read non-atomic value of type: " + basetype.getTypeSort()); - } - } - return result; - } - - protected D4Cursor readStructure(Index index) throws DapException { - assert (this.scheme == Scheme.STRUCTARRAY); - long pos = index.index(); - long avail = (this.elements == null ? 0 : this.elements.length); - if (pos < 0 || pos > avail) - throw new IndexOutOfBoundsException("read: " + index); - return this.elements[(int) pos]; - } - - public D4Cursor readSequence(Index index) throws DapException { - assert (this.scheme == Scheme.SEQARRAY); - long pos = index.index(); - long avail = (this.elements == null ? 0 : this.elements.length); - if (pos < 0 || pos > avail) - throw new IndexOutOfBoundsException("read: " + index); - return this.elements[(int) pos]; - } - - ////////////////////////////////////////////////// - // D4Cursor Extensions - - public D4Cursor setElements(D4Cursor[] instances) { - if (!(getScheme() == Scheme.SEQARRAY || getScheme() == Scheme.STRUCTARRAY)) - throw new IllegalStateException("Adding element to !(structure|sequence array) object"); - DapVariable var = (DapVariable) getTemplate(); - this.elements = instances; - return this; - } - - public D4Cursor setOffset(long pos) { - this.offset = pos; - return this; - } - - public D4Cursor setByteStringOffsets(long total, long[] positions) { - this.bytestrings = positions; - return this; - } - - public D4Cursor addField(int m, D4Cursor field) { - if (getScheme() != Scheme.RECORD && getScheme() != Scheme.STRUCTURE) - throw new IllegalStateException("Adding field to non-(structure|record) object"); - if (this.fieldcursors == null) { - DapStructure ds = (DapStructure) ((DapVariable) getTemplate()).getBaseType(); - List fields = ds.getFields(); - this.fieldcursors = new D4Cursor[fields.size()]; - } - if (this.fieldcursors[m] != null) - throw new IndexOutOfBoundsException("Adding duplicate fields at position:" + m); - this.fieldcursors[m] = field; - return this; - } - - public D4Cursor addRecord(D4Cursor rec) { - if (getScheme() != Scheme.SEQUENCE) - throw new IllegalStateException("Adding record to non-sequence object"); - if (this.records == null) - this.records = new ArrayList<>(); - this.records.add(rec); - return this; - } - - public long getElementSize(DapVariable v) { - return v.getBaseType().isFixedSize() ? v.getBaseType().getSize() : 0; - } - - static ByteBuffer skip(long n, ByteBuffer b) { - if (b.position() + ((int) n) > b.limit()) - throw new IllegalArgumentException(); - b.position(b.position() + ((int) n)); - return b; - } - - public static long getLength(ByteBuffer b) { - if (b.position() + D4LENSIZE > b.limit()) - throw new IllegalArgumentException(); - long n = b.getLong(); - return n; - } - -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/serial/D4DSP.java b/dap4/d4lib/src/main/java/dap4/dap4lib/serial/D4DSP.java deleted file mode 100644 index a841cc9e6b..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/serial/D4DSP.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.dap4lib.serial; - -import dap4.core.dmr.DapDataset; -import dap4.core.util.DapDump; -import dap4.core.util.DapException; -import dap4.dap4lib.AbstractDSP; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; - -/** - * DAP4 Serial to DSP interface - * This code should be completely independent of thredds. - * Its goal is to provide a DSP interface to - * a sequence of bytes representing serialized data, possibly - * including a leading DMR. - */ - -public abstract class D4DSP extends AbstractDSP { - ////////////////////////////////////////////////// - // Constants - - public static boolean DEBUG = false; - public static boolean DUMPDMR = false; - public static boolean DUMPDAP = false; - - protected static final String DAPVERSION = "4.0"; - protected static final String DMRVERSION = "1.0"; - - ////////////////////////////////////////////////// - // Instance variables - - protected ByteBuffer databuffer = null; // local copy of AbstractDSP.getSource - - ////////////////////////////////////////////////// - // Constructor(s) - - public D4DSP() { - super(); - } - - ////////////////////////////////////////////////// - // DSP API - // Most is left to be subclass defined; - - ////////////////////////////////////////////////// - // (Other) Accessors - - /* packge */ ByteBuffer getBuffer() { - return databuffer; - } - - ////////////////////////////////////////////////// - // Compilation - - protected void build(String document, byte[] serialdata, ByteOrder order) throws DapException { - DapDataset dmr = parseDMR(document); - - if (DEBUG || DUMPDMR) { - System.err.println("\n+++++++++++++++++++++"); - System.err.println(dmr); - System.err.println("+++++++++++++++++++++\n"); - } - if (DEBUG || DUMPDAP) { - ByteBuffer data = ByteBuffer.wrap(serialdata); - System.err.println("+++++++++++++++++++++"); - System.err.println("\n---------------------"); - DapDump.dumpbytes(data, false); - System.err.println("\n---------------------\n"); - } - build(dmr, serialdata, order); - } - - /** - * Build the data from the incoming serial data - * Note that some DSP's will not use - * - * @param dmr - * @param serialdata - * @param order - * @throws DapException - */ - protected void build(DapDataset dmr, byte[] serialdata, ByteOrder order) throws DapException { - setDMR(dmr); - // "Compile" the databuffer section of the server response - this.databuffer = ByteBuffer.wrap(serialdata).order(order); - D4DataCompiler compiler = new D4DataCompiler(this, getChecksumMode(), getOrder(), this.databuffer); - compiler.compile(); - } - -} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/serial/D4DataCompiler.java b/dap4/d4lib/src/main/java/dap4/dap4lib/serial/D4DataCompiler.java deleted file mode 100644 index c3c9bdb3ca..0000000000 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/serial/D4DataCompiler.java +++ /dev/null @@ -1,282 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - - -package dap4.dap4lib.serial; - -import dap4.core.data.ChecksumMode; -import dap4.core.dmr.*; -import dap4.core.util.*; -import dap4.dap4lib.LibTypeFcns; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.util.List; -import static dap4.core.data.DataCursor.Scheme; - -public class D4DataCompiler { - public static boolean DEBUG = false; - - ////////////////////////////////////////////////// - // Constants - - public static final int COUNTSIZE = 8; // databuffer as specified by the DAP4 spec - - static String LBRACE = "{"; - static String RBRACE = "}"; - - - ////////////////////////////////////////////////// - // Instance variables - - protected DapDataset dataset = null; - - // Make compile arguments global - protected ByteBuffer databuffer; - - protected ChecksumMode checksummode = null; - protected ByteOrder order = null; - - protected D4DSP dsp; - - ////////////////////////////////////////////////// - // Constructor(s) - - /** - * Constructor - * - * @param dsp the D4DSP - * @param checksummode - * @param databuffer the source of serialized databuffer - */ - - public D4DataCompiler(D4DSP dsp, ChecksumMode checksummode, ByteOrder order, ByteBuffer databuffer) - throws DapException { - this.dsp = dsp; - this.dataset = this.dsp.getDMR(); - this.databuffer = databuffer; - this.checksummode = checksummode; - this.order = order; - } - - ////////////////////////////////////////////////// - // DataCompiler API - - /** - * The goal here is to process the serialized - * databuffer and locate top-level variable positions - * in the serialized databuffer. Access to non-top-level - * variables is accomplished on the fly. - * - * @throws DapException - */ - public void compile() throws DapException { - assert (this.dataset != null && this.databuffer != null); - // iterate over the variables represented in the databuffer - for (DapVariable vv : this.dataset.getTopVariables()) { - D4Cursor data = compileVar(vv, null); - this.dsp.addVariableData(vv, data); - } - } - - protected D4Cursor compileVar(DapVariable dapvar, D4Cursor container) throws DapException { - boolean isscalar = dapvar.getRank() == 0; - D4Cursor array = null; - DapType type = dapvar.getBaseType(); - if (type.isAtomic()) - array = compileAtomicVar(dapvar, container); - else if (type.isStructType()) { - array = compileStructureArray(dapvar, container); - } else if (type.isSeqType()) { - array = compileSequenceArray(dapvar, container); - } - if (dapvar.isTopLevel() && this.checksummode.enabled(ChecksumMode.DAP)) { - // extract the checksum from databuffer src, - // attach to the array, and make into an attribute - int checksum = extractChecksum(databuffer); - dapvar.setChecksum(checksum); - } - return array; - } - - /** - * @param var - * @param container - * @return data - * @throws DapException - */ - - protected D4Cursor compileAtomicVar(DapVariable var, D4Cursor container) throws DapException { - DapType daptype = var.getBaseType(); - D4Cursor data = new D4Cursor(Scheme.ATOMIC, (D4DSP) this.dsp, var, container); - data.setOffset(getPos(this.databuffer)); - long total = 0; - long dimproduct = var.getCount(); - if (!daptype.isEnumType() && !daptype.isFixedSize()) { - // this is a string, url, or opaque - long[] positions = new long[(int) dimproduct]; - int savepos = databuffer.position(); - // Walk the bytestring and return the instance count (in databuffer) - total = walkByteStrings(positions, databuffer); - databuffer.position(savepos);// leave position unchanged - data.setByteStringOffsets(total, positions); - } else { - total = dimproduct * daptype.getSize(); - } - skip(databuffer, (int) total); - return data; - } - - /** - * Compile a structure array. - * - * @param var the template - * @param container if inside a compound object - * @return A DataCompoundArray for the databuffer for this struct. - * @throws DapException - */ - protected D4Cursor compileStructureArray(DapVariable var, D4Cursor container) throws DapException { - DapStructure dapstruct = (DapStructure) var.getBaseType(); - D4Cursor structarray = - new D4Cursor(Scheme.STRUCTARRAY, this.dsp, var, container).setOffset(getPos(this.databuffer)); - List dimset = var.getDimensions(); - long dimproduct = DapUtil.dimProduct(dimset); - D4Cursor[] instances = new D4Cursor[(int) dimproduct]; - Odometer odom = Odometer.factory(DapUtil.dimsetToSlices(dimset), dimset); - while (odom.hasNext()) { - Index index = odom.next(); - D4Cursor instance = compileStructure(var, dapstruct, structarray); - instance.setIndex(index); - instances[(int) index.index()] = instance; - } - structarray.setElements(instances); - return structarray; - } - - /** - * Compile a structure instance. - * - * @param dapstruct The template - * @param container - * @return A DataStructure for the databuffer for this struct. - * @throws DapException - */ - protected D4Cursor compileStructure(DapVariable var, DapStructure dapstruct, D4Cursor container) throws DapException { - int pos = getPos(this.databuffer); - D4Cursor d4ds = new D4Cursor(Scheme.STRUCTURE, (D4DSP) this.dsp, var, container).setOffset(pos); - List dfields = dapstruct.getFields(); - for (int m = 0; m < dfields.size(); m++) { - DapVariable dfield = dfields.get(m); - D4Cursor dvfield = compileVar(dfield, d4ds); - d4ds.addField(m, dvfield); - assert dfield.getParent() != null; - } - return d4ds; - } - - /** - * Compile a sequence array. - * - * @param var the template - * @return A DataCompoundArray for the databuffer for this sequence. - * @throws DapException - */ - protected D4Cursor compileSequenceArray(DapVariable var, D4Cursor container) throws DapException { - DapSequence dapseq = (DapSequence) var.getBaseType(); - D4Cursor seqarray = new D4Cursor(Scheme.SEQARRAY, this.dsp, var, container).setOffset(getPos(this.databuffer)); - List dimset = var.getDimensions(); - long dimproduct = DapUtil.dimProduct(dimset); - D4Cursor[] instances = new D4Cursor[(int) dimproduct]; - Odometer odom = Odometer.factory(DapUtil.dimsetToSlices(dimset), dimset); - while (odom.hasNext()) { - Index index = odom.next(); - D4Cursor instance = compileSequence(var, dapseq, seqarray); - instance.setIndex(index); - instances[(int) index.index()] = instance; - } - seqarray.setElements(instances); - return seqarray; - } - - /** - * Compile a sequence as a set of records. - * - * @param dapseq - * @param container - * @return sequence - * @throws DapException - */ - public D4Cursor compileSequence(DapVariable var, DapSequence dapseq, D4Cursor container) throws DapException { - int pos = getPos(this.databuffer); - D4Cursor seq = new D4Cursor(Scheme.SEQUENCE, this.dsp, var, container).setOffset(pos); - List dfields = dapseq.getFields(); - // Get the count of the number of records - long nrecs = getCount(this.databuffer); - for (int r = 0; r < nrecs; r++) { - pos = getPos(this.databuffer); - D4Cursor rec = - (D4Cursor) new D4Cursor(D4Cursor.Scheme.RECORD, this.dsp, var, container).setOffset(pos).setRecordIndex(r); - for (int m = 0; m < dfields.size(); m++) { - DapVariable dfield = dfields.get(m); - D4Cursor dvfield = compileVar(dfield, rec); - rec.addField(m, dvfield); - assert dfield.getParent() != null; - } - seq.addRecord(rec); - } - return seq; - } - - ////////////////////////////////////////////////// - // Utilities - - protected int extractChecksum(ByteBuffer data) throws DapException { - assert ChecksumMode.DAP.enabled(this.checksummode); - if (data.remaining() < DapUtil.CHECKSUMSIZE) - throw new DapException("Short serialization: missing checksum"); - return data.getInt(); - } - - protected static void skip(ByteBuffer data, int count) { - data.position(data.position() + count); - } - - protected static int getCount(ByteBuffer data) { - long count = data.getLong(); - count = (count & 0xFFFFFFFF); - return (int) count; - } - - protected static int getPos(ByteBuffer data) { - return data.position(); - } - - /** - * Compute the size in databuffer of the serialized form - * - * @param daptype - * @return type's serialized form size - */ - protected static int computeTypeSize(DapType daptype) { - return LibTypeFcns.size(daptype); - } - - protected static long walkByteStrings(long[] positions, ByteBuffer databuffer) { - int count = positions.length; - long total = 0; - int savepos = databuffer.position(); - // Walk each bytestring - for (int i = 0; i < count; i++) { - int pos = databuffer.position(); - positions[i] = pos; - int size = getCount(databuffer); - total += COUNTSIZE; - total += size; - skip(databuffer, size); - } - databuffer.position(savepos);// leave position unchanged - return total; - } - -} diff --git a/dap4/d4tests/build.gradle b/dap4/d4tests/build.gradle deleted file mode 100644 index d86da229a8..0000000000 --- a/dap4/d4tests/build.gradle +++ /dev/null @@ -1,44 +0,0 @@ -apply from: "$rootDir/gradle/any/dependencies.gradle" -apply from: "$rootDir/gradle/any/test-only-projects.gradle" -apply from: "$rootDir/gradle/any/gretty.gradle" - -dependencies { - // I bet some of these dependencies could be in the testRuntimeOnly config, not testImplementation. - compile enforcedPlatform(project(':netcdf-java-platform')) - testImplementation enforcedPlatform(project(':netcdf-java-testing-platform')) - - testImplementation project(':dap4:d4core') - testImplementation project(':dap4:d4lib') - testImplementation project(':dap4:d4cdm') - testImplementation project(':cdm:cdm-core') - testImplementation project(':cdm-test-utils') - testImplementation project(':httpservices') - - testImplementation 'junit:junit' - testImplementation 'org.slf4j:slf4j-api' - - testRuntimeOnly 'ch.qos.logback:logback-classic' -} - -test { - systemProperties['testargs'] = System.getProperty('testargs', '') - - include 'dap4/test/TestCDMClient.class' - include 'dap4/test/TestConstraints.class' - include 'dap4/test/TestDSP.class' - include 'dap4/test/TestDSR.class' - include 'dap4/test/TestNc4Iosp.class' - include 'dap4/test/TestParserCE.class' - include 'dap4/test/TestParserDMR.class' - include 'dap4/test/TestServlet.class' - include 'dap4/test/TestServletConstraints.class' - include 'dap4/test/TestFrontPage.class' - //include 'dap4/test/TestFilters.class' - //include 'dap4/test/TestH5Iosp.class' - //include 'dap4/test/TestHyrax.class' - //include 'dap4/test/TestPrinter.class' - //include 'dap4/test/TestSerial.class' - - dependsOn('farmBeforeIntegrationTest') - finalizedBy('farmAfterIntegrationTest') -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_anon_dim.syn.2.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_anon_dim.syn.2.raw.txt deleted file mode 100644 index 3aec08b1c9..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_anon_dim.syn.2.raw.txt +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_anon_dim.syn.2 { - variables: - int vu32(4); - string vu32:_DAP4_Checksum_CRC32 = "0x417bc794"; - - // global attributes: - string :_dap4.ce = "/vu32[0:3]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -vu32 = - {-1169720286, -920699049, -2088732436, 1060190036} -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_anon_dim.syn.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_anon_dim.syn.raw.txt deleted file mode 100644 index 0819467d8f..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_anon_dim.syn.raw.txt +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test_anon_dim.syn { - variables: - int vu32(6); - string vu32:_DAP4_Checksum_CRC32 = "0x1aca2718"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -vu32 = - {-1169720286, -920699049, -2088732436, 1060190036, -1123468835, 922940053} -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.nc.5.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.nc.5.raw.txt deleted file mode 100644 index bfc1a9a698..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.nc.5.raw.txt +++ /dev/null @@ -1,30 +0,0 @@ -netcdf test_atomic_array.nc.5 { - variables: - ubyte vu8(1, 2); - string vu8:_DAP4_Checksum_CRC32 = "0x1a9eb5b3"; - - double vd(1); - string vd:_DAP4_Checksum_CRC32 = "0x74c1a1f1"; - - string vs(1, 1); - string vs:_DAP4_Checksum_CRC32 = "0x15293f21"; - - opaque vo(1, 1); - string vo:_DAP4_Checksum_CRC32 = "0x225778dc"; - - // global attributes: - string :_dap4.ce = "/vu8[1][0:2:2];/vd[1];/vs[1][0];/vo[0][1]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -vu8 = - { - {3, 5} - } -vd = - {1024.8} -vs = - { "Καλημέα" - } -vo = 0xabcdef0000000000; - -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.nc.8.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.nc.8.raw.txt deleted file mode 100644 index 8c33c36312..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.nc.8.raw.txt +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_atomic_array.nc.8 { - variables: - short v16(3); - string v16:_DAP4_Checksum_CRC32 = "0xb4fb7f89"; - - // global attributes: - string :_dap4.ce = "/v16[0:1,3]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -v16 = - {1, 2, 4} -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.nc.9.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.nc.9.raw.txt deleted file mode 100644 index 7137b40bd6..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.nc.9.raw.txt +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_atomic_array.nc.9 { - variables: - short v16(3); - string v16:_DAP4_Checksum_CRC32 = "0xa0d9e652"; - - // global attributes: - string :_dap4.ce = "/v16[3,0:1]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -v16 = - {4, 1, 2} -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.nc.raw.txt deleted file mode 100644 index 4aafbcac3b..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.nc.raw.txt +++ /dev/null @@ -1,63 +0,0 @@ -netcdf test_atomic_array { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - dimensions: - d1 = 1; - d2 = 2; - d3 = 3; - d4 = 4; - d5 = 5; - variables: - ubyte vu8(d2, d3); - string vu8:_DAP4_Checksum_CRC32 = "0xd42f6486"; - - short v16(d4); - string v16:_DAP4_Checksum_CRC32 = "0x92991416"; - - uint vu32(d2, d3); - string vu32:_DAP4_Checksum_CRC32 = "0x0c56f0f2"; - - double vd(d2); - string vd:_DAP4_Checksum_CRC32 = "0x7c09cbae"; - - char vc(d2); - string vc:_DAP4_Checksum_CRC32 = "0x63add807"; - - string vs(d2, d2); - string vs:_DAP4_Checksum_CRC32 = "0x672f70c4"; - - opaque vo(d1, d2); - string vo:_DAP4_Checksum_CRC32 = "0x2757560d"; - - enum cloud_class_t primary_cloud(d5); - string primary_cloud:_FillValue = "Missing"; - string primary_cloud:_DAP4_Checksum_CRC32 = "0xb58a627a"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -vu8 = - { - {255, 1, 2}, - {3, 4, 5} - } -v16 = - {1, 2, 3, 4} -vu32 = - { - {5, 4, 3}, - {2, 1, 0} - } -vd = - {17.9, 1024.8} -vc = "@&" -vs = - { "hello world", "hello world", "hello world", "hello world" - } -vo = 0x0123456789abcdef, - 0x0123456789abcdef; - -primary_cloud = - {0, 2, 0, 1, 127} -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.syn.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.syn.raw.txt deleted file mode 100644 index e1388d3f78..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_array.syn.raw.txt +++ /dev/null @@ -1,63 +0,0 @@ -netcdf test_atomic_array.syn { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - dimensions: - d1 = 1; - d2 = 2; - d3 = 3; - d4 = 4; - d5 = 5; - variables: - ubyte vu8(d2, d3); - string vu8:_DAP4_Checksum_CRC32 = "0xd79bd598"; - - short v16(d4); - string v16:_DAP4_Checksum_CRC32 = "0xa40ee271"; - - uint vu32(d2, d3); - string vu32:_DAP4_Checksum_CRC32 = "0xa06ca308"; - - double vd(d2); - string vd:_DAP4_Checksum_CRC32 = "0x7ee0fb67"; - - char vc(d2); - string vc:_DAP4_Checksum_CRC32 = "0x7cee5238"; - - string vs(d2, d2); - string vs:_DAP4_Checksum_CRC32 = "0x9d474c4c"; - - opaque vo(d1, d2); - string vo:_DAP4_Checksum_CRC32 = "0xd4809521"; - - enum cloud_class_t primary_cloud(d5); - string primary_cloud:_FillValue = "Missing"; - string primary_cloud:_DAP4_Checksum_CRC32 = "0x94b74cf7"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -vu8 = - { - {186, 201, 131}, - {63, 189, 55} - } -v16 = - {-341, -21899, -13413, -22144} -vu32 = - { - {2367803413, 3586730583, 511843988}, - {3754752863, 2950934681, 2366232135} - } -vd = - {0.21787008119279183, 0.6024507919967678} -vc = "CO" -vs = - { "{S", "{S", "{S", "{S" - } -vo = 0xa2177aa7287c04fa8bb57bcdf76ec80f, - 0xa2177aa7287c04fa8bb57bcdf76ec80f; - -primary_cloud = - {2, 9, 6, 8, 3} -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_types.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_types.nc.raw.txt deleted file mode 100644 index a6cd1e1933..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_types.nc.raw.txt +++ /dev/null @@ -1,72 +0,0 @@ -netcdf test_atomic_types { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - variables: - byte v8; - string v8:_DAP4_Checksum_CRC32 = "0x3fba6cad"; - - ubyte vu8; - string vu8:_DAP4_Checksum_CRC32 = "0xff000000"; - - short v16; - string v16:_DAP4_Checksum_CRC32 = "0xac6191df"; - - ushort vu16; - string vu16:_DAP4_Checksum_CRC32 = "0xffff0000"; - - int v32; - string v32:_DAP4_Checksum_CRC32 = "0x12477cdf"; - - uint vu32; - string vu32:_DAP4_Checksum_CRC32 = "0xffffffff"; - - long v64; - string v64:_DAP4_Checksum_CRC32 = "0xccfc5c3c"; - - ulong vu64; - string vu64:_DAP4_Checksum_CRC32 = "0x2144df1c"; - - float vf; - string vf:_DAP4_Checksum_CRC32 = "0x8c2a1365"; - - double vd; - string vd:_DAP4_Checksum_CRC32 = "0xf2bacb72"; - - char vc; - string vc:_DAP4_Checksum_CRC32 = "0xa4deae1d"; - - string vs; - string vs:_DAP4_Checksum_CRC32 = "0x3691a6d4"; - - opaque vo; - string vo:_DAP4_Checksum_CRC32 = "0xd24ddadd"; - - enum cloud_class_t primary_cloud; - string primary_cloud:_FillValue = "Missing"; - string primary_cloud:_DAP4_Checksum_CRC32 = "0x3c0c8ea1"; - - enum cloud_class_t secondary_cloud; - string secondary_cloud:_FillValue = "Missing"; - string secondary_cloud:_DAP4_Checksum_CRC32 = "0x12b88320"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -v8 =-128 -vu8 =255 -v16 =-32768 -vu16 =65535 -v32 =2147483647 -vu32 =4294967295 -v64 =9223372036854775807 -vu64 =18446744073709551615 -vf =3.1415927 -vd =3.141592653589793 -vc =@ -vs = "hello world" -vo = 0x0123456789abcdef; - -primary_cloud =2 -secondary_cloud =127 -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_types.syn.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_types.syn.raw.txt deleted file mode 100644 index 3c302ef4a6..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_atomic_types.syn.raw.txt +++ /dev/null @@ -1,72 +0,0 @@ -netcdf test_atomic_types.syn { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - variables: - byte v8; - string v8:_DAP4_Checksum_CRC32 = "0x140e363f"; - - ubyte vu8; - string vu8:_DAP4_Checksum_CRC32 = "0x30ba9599"; - - short v16; - string v16:_DAP4_Checksum_CRC32 = "0xe353db0e"; - - ushort vu16; - string vu16:_DAP4_Checksum_CRC32 = "0x31e23870"; - - int v32; - string v32:_DAP4_Checksum_CRC32 = "0xbad2143f"; - - uint vu32; - string vu32:_DAP4_Checksum_CRC32 = "0x32e54381"; - - long v64; - string v64:_DAP4_Checksum_CRC32 = "0x915dfe6e"; - - ulong vu64; - string vu64:_DAP4_Checksum_CRC32 = "0x9233006a"; - - float vf; - string vf:_DAP4_Checksum_CRC32 = "0x3d571922"; - - double vd; - string vd:_DAP4_Checksum_CRC32 = "0xffd91cad"; - - char vc; - string vc:_DAP4_Checksum_CRC32 = "0x09b9265b"; - - string vs; - string vs:_DAP4_Checksum_CRC32 = "0x81827ad8"; - - opaque vo; - string vo:_DAP4_Checksum_CRC32 = "0x2d29db8e"; - - enum cloud_class_t primary_cloud; - string primary_cloud:_FillValue = "Missing"; - string primary_cloud:_DAP4_Checksum_CRC32 = "0x4c667a2e"; - - enum cloud_class_t secondary_cloud; - string secondary_cloud:_FillValue = "Missing"; - string secondary_cloud:_DAP4_Checksum_CRC32 = "0x4b0bbe37"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -v8 =58 -vu8 =201 -v16 =896 -vu16 =16177 -v32 =-1123468835 -vu32 =2125143125 -v64 =3059391736915381031 -vu64 =11577488182652895291 -vf =0.5512972 -vd =0.7902673011288164 -vc =* -vs = "O,L?c8A%V" -vo = 0x46f169ef23cbaf9b1febd99e4e16cec9; - -primary_cloud =7 -secondary_cloud =3 -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_enum.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_enum.nc.raw.txt deleted file mode 100644 index b666139c20..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_enum.nc.raw.txt +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test_enum { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - variables: - enum cloud_class_t primary_cloud; - string primary_cloud:_FillValue = "Missing"; - string primary_cloud:_DAP4_Checksum_CRC32 = "0x3c0c8ea1"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -primary_cloud =2 -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_enum_2.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_enum_2.nc.raw.txt deleted file mode 100644 index 62ee4d281a..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_enum_2.nc.raw.txt +++ /dev/null @@ -1,17 +0,0 @@ -netcdf test_enum_2 { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - - group: h { - variables: - enum cloud_class_t primary_cloud; - string primary_cloud:_FillValue = "Missing"; - string primary_cloud:_DAP4_Checksum_CRC32 = "0x3c0c8ea1"; - - } - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -h/primary_cloud =2 -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_enum_array.nc.4.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_enum_array.nc.4.raw.txt deleted file mode 100644 index 82933a50d3..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_enum_array.nc.4.raw.txt +++ /dev/null @@ -1,16 +0,0 @@ -netcdf test_enum_array.nc.4 { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - variables: - enum cloud_class_t primary_cloud(2); - string primary_cloud:_FillValue = "Missing"; - string primary_cloud:_DAP4_Checksum_CRC32 = "0x04e840eb"; - - // global attributes: - string :_dap4.ce = "/primary_cloud[1:2:4]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -primary_cloud = - {2, 1} -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_enum_array.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_enum_array.nc.raw.txt deleted file mode 100644 index 0a2c146f56..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_enum_array.nc.raw.txt +++ /dev/null @@ -1,17 +0,0 @@ -netcdf test_enum_array { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - dimensions: - d5 = 5; - variables: - enum cloud_class_t primary_cloud(d5); - string primary_cloud:_FillValue = "Missing"; - string primary_cloud:_DAP4_Checksum_CRC32 = "0xb58a627a"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -primary_cloud = - {0, 2, 0, 1, 127} -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_fill.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_fill.nc.raw.txt deleted file mode 100644 index 839f800bfe..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_fill.nc.raw.txt +++ /dev/null @@ -1,19 +0,0 @@ -netcdf test_fill { - variables: - ubyte uv8; - string uv8:_DAP4_Checksum_CRC32 = "0x6fbf1d91"; - - short v16; - string v16:_DAP4_Checksum_CRC32 = "0xc9139fe6"; - - uint uv32; - uv32:_FillValue = 17; - string uv32:_DAP4_Checksum_CRC32 = "0x8437b331"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -uv8 =240 -v16 =32700 -uv32 =111000 -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_groups1.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_groups1.nc.raw.txt deleted file mode 100644 index 253a698474..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_groups1.nc.raw.txt +++ /dev/null @@ -1,44 +0,0 @@ -netcdf test_groups1 { - dimensions: - dim1 = 5; - - group: g { - dimensions: - dim2 = 3; - - group: h { - dimensions: - dim3 = 7; - variables: - int v1(dim1); - string v1:_DAP4_Checksum_CRC32 = "0x1d1d272c"; - - float v2(dim2); - string v2:_DAP4_Checksum_CRC32 = "0x0fe72d43"; - - } - - group: i { - dimensions: - dim3 = 7; - variables: - int v1(dim1); - string v1:_DAP4_Checksum_CRC32 = "0xa9b4a0fb"; - - float v3(dim3); - string v3:_DAP4_Checksum_CRC32 = "0x29f1e312"; - - } - } - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -g/h/v1 = - {-876354855, -1761252264, 1723477387, -46827465, 1475147969} -g/h/v2 = - {12.0, -100.0, 9.96921E36} -g/i/v1 = - {2, 3, 5, 7, 11} -g/i/v3 = - {23.0, 29.0, 19.0, 31.0, 17.0, 37.0, 13.0} -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_one_var.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_one_var.nc.raw.txt deleted file mode 100644 index 2b376e08ab..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_one_var.nc.raw.txt +++ /dev/null @@ -1,10 +0,0 @@ -netcdf test_one_var { - variables: - int t; - string t:_DAP4_Checksum_CRC32 = "0xc9e1efe6"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -t =17 -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_one_vararray.nc.1.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_one_vararray.nc.1.raw.txt deleted file mode 100644 index 4b380edb65..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_one_vararray.nc.1.raw.txt +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_one_vararray.nc.1 { - variables: - int t(1); - string t:_DAP4_Checksum_CRC32 = "0xb6a88010"; - - // global attributes: - string :_dap4.ce = "/t[1]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -t = - {37} -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_one_vararray.nc.3.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_one_vararray.nc.3.raw.txt deleted file mode 100644 index 7e65c1a454..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_one_vararray.nc.3.raw.txt +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test_one_vararray.nc.3 { - dimensions: - d2 = 2; - variables: - int t(d2); - string t:_DAP4_Checksum_CRC32 = "0x42dfb1d0"; - - // global attributes: - string :_dap4.ce = "/t[0:1]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -t = - {17, 37} -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_one_vararray.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_one_vararray.nc.raw.txt deleted file mode 100644 index f76c579e38..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_one_vararray.nc.raw.txt +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test_one_vararray { - dimensions: - d2 = 2; - variables: - int t(d2); - string t:_DAP4_Checksum_CRC32 = "0x42dfb1d0"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -t = - {17, 37} -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_opaque.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_opaque.nc.raw.txt deleted file mode 100644 index 54dcb52c2b..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_opaque.nc.raw.txt +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test_opaque { - variables: - opaque vo1; - string vo1:_DAP4_Checksum_CRC32 = "0xd24ddadd"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -vo1 = 0x0123456789abcdef; - -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_opaque_array.nc.7.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_opaque_array.nc.7.raw.txt deleted file mode 100644 index 10d45fe22b..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_opaque_array.nc.7.raw.txt +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test_opaque_array.nc.7 { - variables: - opaque vo2(1, 2); - string vo2:_DAP4_Checksum_CRC32 = "0xcca386bf"; - - // global attributes: - string :_dap4.ce = "/vo2[1][0:1]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -vo2 = 0xfedcba9876543210, - 0xfedcba9876543210; - -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_opaque_array.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_opaque_array.nc.raw.txt deleted file mode 100644 index 0f2053e984..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_opaque_array.nc.raw.txt +++ /dev/null @@ -1,16 +0,0 @@ -netcdf test_opaque_array { - dimensions: - d2 = 2; - variables: - opaque vo2(d2, d2); - string vo2:_DAP4_Checksum_CRC32 = "0x91581cda"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -vo2 = 0x0123456789abcdef, - 0x0123456789abcdef, - 0x0123456789abcdef, - 0x0123456789abcdef; - -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_sequence_1.syn.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_sequence_1.syn.raw.txt deleted file mode 100644 index 8fd1eb64bf..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_sequence_1.syn.raw.txt +++ /dev/null @@ -1,23 +0,0 @@ -netcdf test_sequence_1.syn { - variables: - - Sequence { - int i1; - short sh1; - } s(*); - string s:_DAP4_Checksum_CRC32 = "0x4ac0ac5e"; - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: - s = - { - i1 = - {-920699049 - } - sh1 = - {896 - } - } s -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_array.nc.6.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_array.nc.6.raw.txt deleted file mode 100644 index 5ca77032b5..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_array.nc.6.raw.txt +++ /dev/null @@ -1,34 +0,0 @@ -netcdf test_struct_array.nc.6 { - variables: - - Structure { - int x; - string x:_CoordinateAxisType = "GeoX"; - int y; - string y:_CoordinateAxisType = "GeoY"; - } s(2, 2); - string s:_DAP4_Checksum_CRC32 = "0x324d0ea6"; - - - // global attributes: - string :_dap4.ce = "/s[0:2:3][0:1]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -s = - { - x =1 - y =-1 - } s(0) - { - x =17 - y =37 - } s(1) - { - x =-4 - y =12 - } s(2) - { - x =-8 - y =8 - } s(3) -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_array.syn.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_array.syn.raw.txt deleted file mode 100644 index 76531f1451..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_array.syn.raw.txt +++ /dev/null @@ -1,78 +0,0 @@ -netcdf test_struct_array.syn { - dimensions: - dx = 4; - dy = 3; - variables: - float z(dx); - string z:_DAP4_Checksum_CRC32 = "0xbef06d05"; - - float t(dy); - string t:_DAP4_Checksum_CRC32 = "0x165934f0"; - - - Structure { - int x; - string x:_CoordinateAxisType = "GeoX"; - int y; - string y:_CoordinateAxisType = "GeoY"; - } s(dx, dy); - string s:_DAP4_Checksum_CRC32 = "0xd91a250e"; - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -z = - {0.72765326, 0.785633, 0.513679, 0.24684471} -t = - {0.738422, 0.21488869, 0.49479842} -s = - { - x =712320147 - y =1268468519 - } s(0) - { - x =696298400 - y =989876086 - } s(1) - { - x =-1927163883 - y =-900795134 - } s(2) - { - x =-708236713 - y =1377500019 - } s(3) - { - x =511843988 - y =1699265896 - } s(4) - { - x =-540214433 - y =-914532520 - } s(5) - { - x =-1344032615 - y =-871416961 - } s(6) - { - x =-1928735161 - y =935744880 - } s(7) - { - x =-1509955773 - y =-1707460853 - } s(8) - { - x =1145911788 - y =-415231529 - } s(9) - { - x =-278269626 - y =-1682978013 - } s(10) - { - x =-1629885665 - y =-909240754 - } s(11) -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_nested.hdf5.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_nested.hdf5.raw.txt deleted file mode 100644 index fdd4aa1aad..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_nested.hdf5.raw.txt +++ /dev/null @@ -1,39 +0,0 @@ -netcdf test_struct_nested.hdf5 { - variables: - - Structure { - - Structure { - int x; - string x:_CoordinateAxisType = "GeoX"; - int y; - string y:_CoordinateAxisType = "GeoY"; - } field1; - - - Structure { - int x; - int y; - } field2; - - } x; - string x:_DAP4_Checksum_CRC32 = "0xdfa7461b"; - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: - x = - { - field1 = - { - x = 1 - y = -2 - } field1(0) - field2 = - { - x = 255 - y = 90 - } field2(0) - } x(0) -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_nested3.hdf5.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_nested3.hdf5.raw.txt deleted file mode 100644 index a165d7033e..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_nested3.hdf5.raw.txt +++ /dev/null @@ -1,31 +0,0 @@ -netcdf test_struct_nested3.hdf5 { - variables: - - Structure { - - Structure { - - Structure { - int field1; - } field2; - - } field3; - - } x; - string x:_DAP4_Checksum_CRC32 = "0xc9e1efe6"; - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: - x = - { - field3 = - { - field2 = - { - field1 = 17 - } field2(0) - } field3(0) - } x(0) -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_type.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_type.nc.raw.txt deleted file mode 100644 index 64832f765e..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_struct_type.nc.raw.txt +++ /dev/null @@ -1,21 +0,0 @@ -netcdf test_struct_type { - variables: - - Structure { - int x; - string x:_CoordinateAxisType = "GeoX"; - int y; - string y:_CoordinateAxisType = "GeoY"; - } s; - string s:_DAP4_Checksum_CRC32 = "0xcf8f9871"; - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: - s = - { - x = 1 - y = -2 - } s(0) -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_utf8.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_utf8.nc.raw.txt deleted file mode 100644 index e99cf54c4a..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestCDMClient/baseline/test_utf8.nc.raw.txt +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_utf8 { - dimensions: - d2 = 2; - variables: - string vs(d2); - string vs:_DAP4_Checksum_CRC32 = "0xfce3cd28"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -vs = "Καλημέα", "Καλημέα" -} diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_anon_dim.syn.2.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_anon_dim.syn.2.raw deleted file mode 100644 index 02521f8b96..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_anon_dim.syn.2.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_anon_dim.syn.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_anon_dim.syn.raw deleted file mode 100644 index 90cf83423e..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_anon_dim.syn.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.nc.5.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.nc.5.raw deleted file mode 100644 index 64f2028ca3..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.nc.5.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.nc.8.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.nc.8.raw deleted file mode 100644 index 9c55a80646..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.nc.8.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.nc.9.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.nc.9.raw deleted file mode 100644 index 6f17241329..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.nc.9.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.nc.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.nc.raw deleted file mode 100644 index 9a6e307575..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.nc.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.syn.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.syn.raw deleted file mode 100644 index 30138ab7b1..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_array.syn.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_types.nc.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_types.nc.raw deleted file mode 100644 index 97ddca1028..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_types.nc.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_types.syn.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_types.syn.raw deleted file mode 100644 index 906759bc74..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_atomic_types.syn.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_enum.nc.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_enum.nc.raw deleted file mode 100644 index ec69756822..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_enum.nc.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_enum_2.nc.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_enum_2.nc.raw deleted file mode 100644 index d38f5337ff..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_enum_2.nc.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_enum_array.nc.4.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_enum_array.nc.4.raw deleted file mode 100644 index e89b3c55fd..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_enum_array.nc.4.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_enum_array.nc.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_enum_array.nc.raw deleted file mode 100644 index 60a17c7524..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_enum_array.nc.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_fill.nc.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_fill.nc.raw deleted file mode 100644 index 151559c495..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_fill.nc.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_groups1.nc.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_groups1.nc.raw deleted file mode 100644 index fc6a4a66d7..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_groups1.nc.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_one_var.nc.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_one_var.nc.raw deleted file mode 100644 index 8b29a0bd17..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_one_var.nc.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_one_vararray.nc.1.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_one_vararray.nc.1.raw deleted file mode 100644 index 814c0ed7bb..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_one_vararray.nc.1.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_one_vararray.nc.3.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_one_vararray.nc.3.raw deleted file mode 100644 index 42ed5d7347..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_one_vararray.nc.3.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_one_vararray.nc.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_one_vararray.nc.raw deleted file mode 100644 index 15ca928b3d..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_one_vararray.nc.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_opaque.nc.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_opaque.nc.raw deleted file mode 100644 index 983427b986..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_opaque.nc.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_opaque_array.nc.7.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_opaque_array.nc.7.raw deleted file mode 100644 index a7cfeb0f0c..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_opaque_array.nc.7.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_opaque_array.nc.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_opaque_array.nc.raw deleted file mode 100644 index 10aa455370..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_opaque_array.nc.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_sequence_1.syn.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_sequence_1.syn.raw deleted file mode 100644 index 6b83150005..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_sequence_1.syn.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_sequence_2.syn.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_sequence_2.syn.raw deleted file mode 100644 index 2b7c5072b7..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_sequence_2.syn.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_array.nc.6.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_array.nc.6.raw deleted file mode 100644 index f551cc1020..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_array.nc.6.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_array.syn.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_array.syn.raw deleted file mode 100644 index 06ce49201d..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_array.syn.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_nested.hdf5.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_nested.hdf5.raw deleted file mode 100644 index 9e3de4050b..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_nested.hdf5.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_nested3.hdf5.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_nested3.hdf5.raw deleted file mode 100644 index 8425a19ed3..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_nested3.hdf5.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_type.nc.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_type.nc.raw deleted file mode 100644 index 2b3ffbf1bb..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_struct_type.nc.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_utf8.nc.raw b/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_utf8.nc.raw deleted file mode 100644 index b1518cf6b8..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/TestCDMClient/testinput/test_utf8.nc.raw and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_anon_dim.syn.2.raw.txt b/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_anon_dim.syn.2.raw.txt deleted file mode 100644 index 3aec08b1c9..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_anon_dim.syn.2.raw.txt +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_anon_dim.syn.2 { - variables: - int vu32(4); - string vu32:_DAP4_Checksum_CRC32 = "0x417bc794"; - - // global attributes: - string :_dap4.ce = "/vu32[0:3]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -vu32 = - {-1169720286, -920699049, -2088732436, 1060190036} -} diff --git a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_atomic_array.nc.5.raw.txt b/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_atomic_array.nc.5.raw.txt deleted file mode 100644 index bfc1a9a698..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_atomic_array.nc.5.raw.txt +++ /dev/null @@ -1,30 +0,0 @@ -netcdf test_atomic_array.nc.5 { - variables: - ubyte vu8(1, 2); - string vu8:_DAP4_Checksum_CRC32 = "0x1a9eb5b3"; - - double vd(1); - string vd:_DAP4_Checksum_CRC32 = "0x74c1a1f1"; - - string vs(1, 1); - string vs:_DAP4_Checksum_CRC32 = "0x15293f21"; - - opaque vo(1, 1); - string vo:_DAP4_Checksum_CRC32 = "0x225778dc"; - - // global attributes: - string :_dap4.ce = "/vu8[1][0:2:2];/vd[1];/vs[1][0];/vo[0][1]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -vu8 = - { - {3, 5} - } -vd = - {1024.8} -vs = - { "Καλημέα" - } -vo = 0xabcdef0000000000; - -} diff --git a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_atomic_array.nc.8.raw.txt b/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_atomic_array.nc.8.raw.txt deleted file mode 100644 index 6c79c85f94..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_atomic_array.nc.8.raw.txt +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_atomic_array.nc.8 { - variables: - short v16(3); - string v16:_DAP4_Checksum_CRC32 = "0xc592fc85"; - - // global attributes: - string :_dap4.ce = "/v16[1:2,2]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -v16 = - {2, 3, 3} -} diff --git a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_atomic_array.nc.9.raw.txt b/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_atomic_array.nc.9.raw.txt deleted file mode 100644 index b367f16522..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_atomic_array.nc.9.raw.txt +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_atomic_array.nc.9 { - variables: - short v16(3); - string v16:_DAP4_Checksum_CRC32 = "0xb6724845"; - - // global attributes: - string :_dap4.ce = "/v16[2,1:2]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -v16 = - {3, 2, 3} -} diff --git a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_enum_array.nc.4.raw.txt b/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_enum_array.nc.4.raw.txt deleted file mode 100644 index 82933a50d3..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_enum_array.nc.4.raw.txt +++ /dev/null @@ -1,16 +0,0 @@ -netcdf test_enum_array.nc.4 { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - variables: - enum cloud_class_t primary_cloud(2); - string primary_cloud:_FillValue = "Missing"; - string primary_cloud:_DAP4_Checksum_CRC32 = "0x04e840eb"; - - // global attributes: - string :_dap4.ce = "/primary_cloud[1:2:4]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -primary_cloud = - {2, 1} -} diff --git a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_one_vararray.nc.1.raw.txt b/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_one_vararray.nc.1.raw.txt deleted file mode 100644 index 4b380edb65..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_one_vararray.nc.1.raw.txt +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_one_vararray.nc.1 { - variables: - int t(1); - string t:_DAP4_Checksum_CRC32 = "0xb6a88010"; - - // global attributes: - string :_dap4.ce = "/t[1]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -t = - {37} -} diff --git a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_one_vararray.nc.3.raw.txt b/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_one_vararray.nc.3.raw.txt deleted file mode 100644 index 7e65c1a454..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_one_vararray.nc.3.raw.txt +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test_one_vararray.nc.3 { - dimensions: - d2 = 2; - variables: - int t(d2); - string t:_DAP4_Checksum_CRC32 = "0x42dfb1d0"; - - // global attributes: - string :_dap4.ce = "/t[0:1]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -t = - {17, 37} -} diff --git a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_opaque_array.nc.7.raw.txt b/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_opaque_array.nc.7.raw.txt deleted file mode 100644 index f7e6996969..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_opaque_array.nc.7.raw.txt +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test_opaque_array.nc.7 { - variables: - opaque vo2(1, 2); - string vo2:_DAP4_Checksum_CRC32 = "0x3f3fa5d4"; - - // global attributes: - string :_dap4.ce = "/vo2[1][0,0]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -vo2 = 0xfedcba9876543210, - 0xfedcba9876543210; - -} diff --git a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_struct_array.nc.6.raw.txt b/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_struct_array.nc.6.raw.txt deleted file mode 100644 index 5ca77032b5..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestConstraints/baseline/test_struct_array.nc.6.raw.txt +++ /dev/null @@ -1,34 +0,0 @@ -netcdf test_struct_array.nc.6 { - variables: - - Structure { - int x; - string x:_CoordinateAxisType = "GeoX"; - int y; - string y:_CoordinateAxisType = "GeoY"; - } s(2, 2); - string s:_DAP4_Checksum_CRC32 = "0x324d0ea6"; - - - // global attributes: - string :_dap4.ce = "/s[0:2:3][0:1]"; - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -s = - { - x =1 - y =-1 - } s(0) - { - x =17 - y =37 - } s(1) - { - x =-4 - y =12 - } s(2) - { - x =-8 - y =8 - } s(3) -} diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_anon_dim.syn.2.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_anon_dim.syn.2.raw.txt deleted file mode 100644 index 25034c5a30..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_anon_dim.syn.2.raw.txt +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - -/vu32[0] = -1169720286 -/vu32[1] = -920699049 -/vu32[2] = -2088732436 -/vu32[3] = 1060190036 - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_anon_dim.syn.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_anon_dim.syn.raw.txt deleted file mode 100644 index f6dd09784a..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_anon_dim.syn.raw.txt +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - -/vu32[0] = -1169720286 -/vu32[1] = -920699049 -/vu32[2] = -2088732436 -/vu32[3] = 1060190036 -/vu32[4] = -1123468835 -/vu32[5] = 922940053 - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.nc.5.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.nc.5.raw.txt deleted file mode 100644 index b4d1d6ce75..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.nc.5.raw.txt +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -/vu8[0,0] = 3 -/vu8[0,1] = 5 -/vd[0] = 1024.800000 -/vs[0,0] = "Καλημέα" -/vo[0,0] = 0xABCDEF0000000000 - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.nc.8.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.nc.8.raw.txt deleted file mode 100644 index 447e729347..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.nc.8.raw.txt +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - -/v16[0] = 1 -/v16[1] = 2 -/v16[2] = 4 - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.nc.9.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.nc.9.raw.txt deleted file mode 100644 index 769a4618ee..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.nc.9.raw.txt +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - -/v16[0] = 4 -/v16[1] = 1 -/v16[2] = 2 - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.nc.raw.txt deleted file mode 100644 index 2e2bea3dd0..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.nc.raw.txt +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/vu8[0,0] = 255 -/vu8[0,1] = 1 -/vu8[0,2] = 2 -/vu8[1,0] = 3 -/vu8[1,1] = 4 -/vu8[1,2] = 5 -/v16[0] = 1 -/v16[1] = 2 -/v16[2] = 3 -/v16[3] = 4 -/vu32[0,0] = 5 -/vu32[0,1] = 4 -/vu32[0,2] = 3 -/vu32[1,0] = 2 -/vu32[1,1] = 1 -/vu32[1,2] = 0 -/vd[0] = 17.900000 -/vd[1] = 1024.800000 -/vc[0] = '@' -/vc[1] = '&' -/vs[0,0] = "hello\tworld" -/vs[0,1] = "\r\n" -/vs[1,0] = "Καλημέα" -/vs[1,1] = "abc" -/vo[0,0] = 0x0123456789ABCDEF -/vo[0,1] = 0xABCDEF0000000000 -/primary_cloud[0] = Clear -/primary_cloud[1] = Stratus -/primary_cloud[2] = Clear -/primary_cloud[3] = Cumulonimbus -/primary_cloud[4] = Missing - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.syn.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.syn.raw.txt deleted file mode 100644 index 04ad7521e5..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_array.syn.raw.txt +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/vu8[0,0] = 186 -/vu8[0,1] = 201 -/vu8[0,2] = 131 -/vu8[1,0] = 63 -/vu8[1,1] = 189 -/vu8[1,2] = 55 -/v16[0] = -341 -/v16[1] = -21899 -/v16[2] = -13413 -/v16[3] = -22144 -/vu32[0,0] = 2367803413 -/vu32[0,1] = 3586730583 -/vu32[0,2] = 511843988 -/vu32[1,0] = 3754752863 -/vu32[1,1] = 2950934681 -/vu32[1,2] = 2366232135 -/vd[0] = 0.217870 -/vd[1] = 0.602451 -/vc[0] = 'C' -/vc[1] = 'O' -/vs[0,0] = "{S" -/vs[0,1] = "gb8^OE$" -/vs[1,0] = "4a/q%n9;5Y" -/vs[1,1] = "{fIl?T"\A[" -/vo[0,0] = 0xA2177AA7287C04FA8BB57BCDF76EC80F -/vo[0,1] = 0x34FA472AA9404DD543143CADED303A75 -/primary_cloud[0] = Stratus -/primary_cloud[1] = Cirrocumulus -/primary_cloud[2] = Nimbostratus -/primary_cloud[3] = Cirrostratus -/primary_cloud[4] = Stratocumulus - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_types.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_types.nc.raw.txt deleted file mode 100644 index cff7ae5f4d..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_types.nc.raw.txt +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/v8 = -128 -/vu8 = 255 -/v16 = -32768 -/vu16 = 65535 -/v32 = 2147483647 -/vu32 = 4294967295 -/v64 = 9223372036854775807 -/vu64 = 18446744073709551615 -/vf = 3.141593 -/vd = 3.141593 -/vc = '@' -/vs = "hello\tworld" -/vo = 0x0123456789ABCDEF -/primary_cloud = Stratus -/secondary_cloud = Missing - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_types.syn.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_types.syn.raw.txt deleted file mode 100644 index 6a7adb4fd4..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_atomic_types.syn.raw.txt +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/v8 = 58 -/vu8 = 201 -/v16 = 896 -/vu16 = 16177 -/v32 = -1123468835 -/vu32 = 2125143125 -/v64 = 3059391736915381031 -/vu64 = 11577488182652895291 -/vf = 0.551297 -/vd = 0.790267 -/vc = '*' -/vs = "O,L?c8A%V" -/vo = 0x46F169EF23CBAF9B1FEBD99E4E16CEC9 -/primary_cloud = Altocumulus -/secondary_cloud = Stratocumulus - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_enum.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_enum.nc.raw.txt deleted file mode 100644 index 8c8ce9ebb4..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_enum.nc.raw.txt +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -/primary_cloud = Stratus - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_enum_2.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_enum_2.nc.raw.txt deleted file mode 100644 index f0402352be..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_enum_2.nc.raw.txt +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - -/h/primary_cloud = Stratus - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_enum_array.nc.4.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_enum_array.nc.4.raw.txt deleted file mode 100644 index 0217409df8..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_enum_array.nc.4.raw.txt +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - -/primary_cloud[0] = Stratus -/primary_cloud[1] = Cumulonimbus - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_enum_array.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_enum_array.nc.raw.txt deleted file mode 100644 index c23486baff..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_enum_array.nc.raw.txt +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - -/primary_cloud[0] = Clear -/primary_cloud[1] = Stratus -/primary_cloud[2] = Clear -/primary_cloud[3] = Cumulonimbus -/primary_cloud[4] = Missing - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_fill.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_fill.nc.raw.txt deleted file mode 100644 index dd457986b4..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_fill.nc.raw.txt +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - -/uv8 = 240 -/v16 = 32700 -/uv32 = 111000 - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_groups1.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_groups1.nc.raw.txt deleted file mode 100644 index 431c26d8ea..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_groups1.nc.raw.txt +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -/g/h/v1[0] = -876354855 -/g/h/v1[1] = -1761252264 -/g/h/v1[2] = 1723477387 -/g/h/v1[3] = -46827465 -/g/h/v1[4] = 1475147969 -/g/h/v2[0] = 12.000000 -/g/h/v2[1] = -100.000000 -/g/h/v2[2] = 9969209968386869000000000000000000000.000000 -/g/i/v1[0] = 2 -/g/i/v1[1] = 3 -/g/i/v1[2] = 5 -/g/i/v1[3] = 7 -/g/i/v1[4] = 11 -/g/i/v3[0] = 23.000000 -/g/i/v3[1] = 29.000000 -/g/i/v3[2] = 19.000000 -/g/i/v3[3] = 31.000000 -/g/i/v3[4] = 17.000000 -/g/i/v3[5] = 37.000000 -/g/i/v3[6] = 13.000000 - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_one_var.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_one_var.nc.raw.txt deleted file mode 100644 index c74172bddb..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_one_var.nc.raw.txt +++ /dev/null @@ -1,10 +0,0 @@ - - - -/t = 17 - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_one_vararray.nc.1.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_one_vararray.nc.1.raw.txt deleted file mode 100644 index 18bedc8d51..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_one_vararray.nc.1.raw.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - -/t[0] = 37 - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_one_vararray.nc.3.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_one_vararray.nc.3.raw.txt deleted file mode 100644 index 495c199edf..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_one_vararray.nc.3.raw.txt +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - -/t[0] = 17 -/t[1] = 37 - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_one_vararray.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_one_vararray.nc.raw.txt deleted file mode 100644 index 1d2f858e48..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_one_vararray.nc.raw.txt +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - -/t[0] = 17 -/t[1] = 37 - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_opaque.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_opaque.nc.raw.txt deleted file mode 100644 index a0dbfd2e55..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_opaque.nc.raw.txt +++ /dev/null @@ -1,10 +0,0 @@ - - - -/vo1 = 0x0123456789ABCDEF - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_opaque_array.nc.7.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_opaque_array.nc.7.raw.txt deleted file mode 100644 index 157a621f2a..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_opaque_array.nc.7.raw.txt +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - -/vo2[0,0] = 0xFEDCBA9876543210 -/vo2[0,1] = 0xFEDCBA9999999999 - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_opaque_array.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_opaque_array.nc.raw.txt deleted file mode 100644 index 91da77c407..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_opaque_array.nc.raw.txt +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -/vo2[0,0] = 0x0123456789ABCDEF -/vo2[0,1] = 0xABCDEF0000000000 -/vo2[1,0] = 0xFEDCBA9876543210 -/vo2[1,1] = 0xFEDCBA9999999999 - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_sequence_1.syn.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_sequence_1.syn.raw.txt deleted file mode 100644 index 0e347626ef..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_sequence_1.syn.raw.txt +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - -/s = { - [ - /s.i1 = -920699049 - /s.sh1 = 896 - ]} - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_sequence_2.syn.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_sequence_2.syn.raw.txt deleted file mode 100644 index bc5c5110e6..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_sequence_2.syn.raw.txt +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - -/s[0] = { - [ - /s.i1 = -920699049 - /s.sh1 = 896 - ]} -/s[1] = { - [ - /s.i1 = -1123468835 - /s.sh1 = -18686 - ] [ - /s.i1 = 2125143125 - /s.sh1 = -21899 - ] [ - /s.i1 = 1268468519 - /s.sh1 = -22144 - ] [ - /s.i1 = 989876086 - /s.sh1 = 3361 - ]} - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_array.nc.6.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_array.nc.6.raw.txt deleted file mode 100644 index e142a33713..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_array.nc.6.raw.txt +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - -/s[0,0] = { - /s.x = 1 - /s.y = -1 -} -/s[0,1] = { - /s.x = 17 - /s.y = 37 -} -/s[1,0] = { - /s.x = -4 - /s.y = 12 -} -/s[1,1] = { - /s.x = -8 - /s.y = 8 -} - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_array.syn.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_array.syn.raw.txt deleted file mode 100644 index 0b856f51d9..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_array.syn.raw.txt +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - -/z[0] = 0.727653 -/z[1] = 0.785633 -/z[2] = 0.513679 -/z[3] = 0.246845 -/t[0] = 0.738422 -/t[1] = 0.214889 -/t[2] = 0.494798 -/s[0,0] = { - /s.x = 712320147 - /s.y = 1268468519 -} -/s[0,1] = { - /s.x = 696298400 - /s.y = 989876086 -} -/s[0,2] = { - /s.x = -1927163883 - /s.y = -900795134 -} -/s[1,0] = { - /s.x = -708236713 - /s.y = 1377500019 -} -/s[1,1] = { - /s.x = 511843988 - /s.y = 1699265896 -} -/s[1,2] = { - /s.x = -540214433 - /s.y = -914532520 -} -/s[2,0] = { - /s.x = -1344032615 - /s.y = -871416961 -} -/s[2,1] = { - /s.x = -1928735161 - /s.y = 935744880 -} -/s[2,2] = { - /s.x = -1509955773 - /s.y = -1707460853 -} -/s[3,0] = { - /s.x = 1145911788 - /s.y = -415231529 -} -/s[3,1] = { - /s.x = -278269626 - /s.y = -1682978013 -} -/s[3,2] = { - /s.x = -1629885665 - /s.y = -909240754 -} - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_nested.hdf5.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_nested.hdf5.raw.txt deleted file mode 100644 index 57c8557ac2..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_nested.hdf5.raw.txt +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - -/x = { - /x.field1 = { - /x.field1.x = 1 - /x.field1.y = -2 - } - /x.field2 = { - /x.field2.x = 255 - /x.field2.y = 90 - } -} - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_nested3.hdf5.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_nested3.hdf5.raw.txt deleted file mode 100644 index ed42456ce6..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_nested3.hdf5.raw.txt +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - -/x = { - /x.field3 = { - /x.field3.field2 = { - /x.field3.field2.field1 = 17 - } - } -} - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_type.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_type.nc.raw.txt deleted file mode 100644 index f15f61d6b3..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_struct_type.nc.raw.txt +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - -/s = { - /s.x = 1 - /s.y = -2 -} - diff --git a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_utf8.nc.raw.txt b/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_utf8.nc.raw.txt deleted file mode 100644 index 4df9309d37..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSP/baseline/test_utf8.nc.raw.txt +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - -/vs[0] = "Καλημέα" -/vs[1] = "abc" - diff --git a/dap4/d4tests/src/test/data/resources/TestDSR/baseline/test1.dsr b/dap4/d4tests/src/test/data/resources/TestDSR/baseline/test1.dsr deleted file mode 100644 index 125939c27c..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestDSR/baseline/test1.dsr +++ /dev/null @@ -1,29 +0,0 @@ - - - 4.0 - TDS-4 - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestFilters/baseline/test_sequence_1.syn.1.dap b/dap4/d4tests/src/test/data/resources/TestFilters/baseline/test_sequence_1.syn.1.dap deleted file mode 100644 index f36a08093f..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestFilters/baseline/test_sequence_1.syn.1.dap +++ /dev/null @@ -1,3 +0,0 @@ -count=5 - -1169720286 18719 -2088732436 -16591 -1123468835 -18686 2125143125 -21899 1268468519 -22144 - checksum = 4aad97d4 diff --git a/dap4/d4tests/src/test/data/resources/TestFilters/baseline/test_sequence_1.syn.1.dmr b/dap4/d4tests/src/test/data/resources/TestFilters/baseline/test_sequence_1.syn.1.dmr deleted file mode 100644 index 29109a2c04..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestFilters/baseline/test_sequence_1.syn.1.dmr +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestFilters/baseline/test_sequence_1.syn.2.dap b/dap4/d4tests/src/test/data/resources/TestFilters/baseline/test_sequence_1.syn.2.dap deleted file mode 100644 index 7d7d18b90f..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestFilters/baseline/test_sequence_1.syn.2.dap +++ /dev/null @@ -1,3 +0,0 @@ -count=3 - -1169720286 18719 -2088732436 -16591 -1123468835 -18686 - checksum = 6a9c6608 diff --git a/dap4/d4tests/src/test/data/resources/TestFrontPage/baseline/test_frontpage.html b/dap4/d4tests/src/test/data/resources/TestFrontPage/baseline/test_frontpage.html deleted file mode 100644 index 51e228d2dd..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestFrontPage/baseline/test_frontpage.html +++ /dev/null @@ -1,296 +0,0 @@ - - -DAP4 Test Files - - - -

        DAP4 Test Files

        -

        http://remotetest.unidata.ucar.edu/d4ts/{testfiles}

        -
        -

        netCDF Based Test Files

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        test_atomic_array.nc: DMR.XML DAP DSR.XML
        test_atomic_types.nc: DMR.XML DAP DSR.XML
        test_enum.nc: DMR.XML DAP DSR.XML
        test_enum1.nc: DMR.XML DAP DSR.XML
        test_enum_2.nc: DMR.XML DAP DSR.XML
        test_enum_array.nc: DMR.XML DAP DSR.XML
        test_fill.nc: DMR.XML DAP DSR.XML
        test_groups1.nc: DMR.XML DAP DSR.XML
        test_misc1.nc: DMR.XML DAP DSR.XML
        test_one_var.nc: DMR.XML DAP DSR.XML
        test_one_vararray.nc: DMR.XML DAP DSR.XML
        test_opaque.nc: DMR.XML DAP DSR.XML
        test_opaque_array.nc: DMR.XML DAP DSR.XML
        test_struct1.nc: DMR.XML DAP DSR.XML
        test_struct_array.nc: DMR.XML DAP DSR.XML
        test_struct_nested.nc: DMR.XML DAP DSR.XML
        test_struct_nested3.nc: DMR.XML DAP DSR.XML
        test_struct_type.nc: DMR.XML DAP DSR.XML
        test_test.nc: DMR.XML DAP DSR.XML
        test_unlim.nc: DMR.XML DAP DSR.XML
        test_unlim1.nc: DMR.XML DAP DSR.XML
        test_utf8.nc: DMR.XML DAP DSR.XML
        test_vlen1.nc: DMR.XML DAP DSR.XML
        test_vlen10.nc: DMR.XML DAP DSR.XML
        test_vlen11.nc: DMR.XML DAP DSR.XML
        test_vlen2.nc: DMR.XML DAP DSR.XML
        test_vlen3.nc: DMR.XML DAP DSR.XML
        test_vlen4.nc: DMR.XML DAP DSR.XML
        test_vlen5.nc: DMR.XML DAP DSR.XML
        test_vlen6.nc: DMR.XML DAP DSR.XML
        test_vlen7.nc: DMR.XML DAP DSR.XML
        test_vlen8.nc: DMR.XML DAP DSR.XML
        test_vlen9.nc: DMR.XML DAP DSR.XML
        test_zerodim.nc: DMR.XML DAP DSR.XML
        tst_fills.nc: DMR.XML DAP DSR.XML
        -

        HDF5 Based Test Files

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        test_struct_nested.hdf5: DMR.XML DAP DSR.XML
        test_struct_nested3.hdf5: DMR.XML DAP DSR.XML
        test_vlen3.hdf5: DMR.XML DAP DSR.XML
        test_vlen4.hdf5: DMR.XML DAP DSR.XML
        test_vlen5.hdf5: DMR.XML DAP DSR.XML
        -

        Synthetic Based Test Files

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        test_anon_dim.syn: DMR.XML DAP DSR.XML
        test_atomic_array.syn: DMR.XML DAP DSR.XML
        test_atomic_types.syn: DMR.XML DAP DSR.XML
        test_sequence_1.syn: DMR.XML DAP DSR.XML
        test_sequence_2.syn: DMR.XML DAP DSR.XML
        test_struct_array.syn: DMR.XML DAP DSR.XML
        -
        - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_0.1.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_0.1.xml deleted file mode 100644 index 24f33b55bd..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_0.1.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - 1 - 2 - 3 - - - - some_large_hex_value - - - red - green - blue - - - 98.6 - - - barf - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_0.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_0.xml deleted file mode 100644 index e3d90ac6e0..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - 1 - 2 - 3 - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_1.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_1.xml deleted file mode 100644 index eb2ba2bd26..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_1.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_2.1.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_2.1.xml deleted file mode 100644 index 14d9b2b378..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_2.1.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_2.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_2.xml deleted file mode 100644 index de25771186..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.1.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.1.xml deleted file mode 100644 index e2912f2f3c..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.1.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - 1 - 2 - 3 - - - - some_large_hex_value - - - red - green - blue - - - 98.6 - - - barf - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.2.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.2.xml deleted file mode 100644 index e4bd6ea48c..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.2.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.3.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.3.xml deleted file mode 100644 index b2e99a4064..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.3.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - 1 - 2 - 3 - - - - some_large_hex_value - - - red - green - blue - - - 98.6 - - - barf - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.4.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.4.xml deleted file mode 100644 index 98354ea298..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.4.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.5.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.5.xml deleted file mode 100644 index 822345c2e6..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.5.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.xml deleted file mode 100644 index 7675f27e56..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_3.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_4.1.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_4.1.xml deleted file mode 100644 index e43ec4f81f..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_4.1.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_4.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_4.xml deleted file mode 100644 index 7728abca32..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_4.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_5.1.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_5.1.xml deleted file mode 100644 index 8ae88fff55..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_5.1.xml +++ /dev/null @@ -1,53 +0,0 @@ - - dapVersion="4.0" dmrVersion="1.0"> - - - - - - - - - - - - 1 - 2 - 3 - - - - some_large_hex_value - - - - - - - - - - - - - - - 1 - 2 - 3 - - - - some_large_hex_value - - - red - green - blue - - - 98.6 - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_5.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_5.xml deleted file mode 100644 index 7900313c64..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_5.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_6.1.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_6.1.xml deleted file mode 100644 index 0585fd7a24..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_6.1.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - 1 - 2 - 3 - - - - - - - - - - - - - 1 - 2 - 3 - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_6.2.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_6.2.xml deleted file mode 100644 index 92960908f8..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_6.2.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - 1 - 2 - 3 - - - - - - - - - - - - - - - - - - - 1 - 2 - 3 - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_6.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_6.xml deleted file mode 100644 index a88b5bf47d..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_6.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.1.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.1.xml deleted file mode 100644 index 588a1ee931..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.1.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.2.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.2.xml deleted file mode 100644 index 25b9b59c51..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.2.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.3.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.3.xml deleted file mode 100644 index 5d04405d3d..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.3.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.4.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.4.xml deleted file mode 100644 index aef2e07583..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.4.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.5.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.5.xml deleted file mode 100644 index 2e5bcacfee..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.5.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.xml deleted file mode 100644 index d2e55307d7..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_7.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_8.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_8.xml deleted file mode 100644 index 29a93fe87f..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/DMR_8.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_1.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_1.xml deleted file mode 100644 index da6d955ac4..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_1.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_10.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_10.xml deleted file mode 100644 index aac65a7955..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_10.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_11.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_11.xml deleted file mode 100644 index f661ce3517..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_11.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_2.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_2.xml deleted file mode 100644 index 45ab981649..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_3.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_3.xml deleted file mode 100644 index 356785c0e4..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_3.xml +++ /dev/null @@ -1,12 +0,0 @@ - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_4.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_4.xml deleted file mode 100644 index e04b11ed9b..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_4.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_5.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_5.xml deleted file mode 100644 index de24f7fdfa..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_5.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_6.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_6.xml deleted file mode 100644 index 88a4209425..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_6.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_7.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_7.xml deleted file mode 100644 index 00a22b0c81..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_7.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_8.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_8.xml deleted file mode 100644 index 61919cb9d3..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_array_8.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_escaped_paths.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_escaped_paths.xml deleted file mode 100644 index afd82e7bf2..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_escaped_paths.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - 10 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_1.dmr b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_1.dmr deleted file mode 100644 index 503b89e031..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_1.dmr +++ /dev/null @@ -1,10 +0,0 @@ - - - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_1.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_1.xml deleted file mode 100644 index 503b89e031..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_1.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_10.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_10.xml deleted file mode 100644 index e87a967368..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_10.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_2.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_2.xml deleted file mode 100644 index 78e6928d1e..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_2.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_3.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_3.xml deleted file mode 100644 index 5068261867..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_3.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_3_error_1.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_3_error_1.xml deleted file mode 100644 index 5686798376..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_3_error_1.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_3_error_2.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_3_error_2.xml deleted file mode 100644 index 6f28cd48ae..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_3_error_2.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_3_error_3.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_3_error_3.xml deleted file mode 100644 index c8d6f24d51..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_3_error_3.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_4.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_4.xml deleted file mode 100644 index 416f4597e5..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_4.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - x_axis_value - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_5.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_5.xml deleted file mode 100644 index 5c844638ef..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_5.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_6.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_6.xml deleted file mode 100644 index 20e14a6f6a..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_6.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_7.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_7.xml deleted file mode 100644 index d163b92912..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_7.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_8.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_8.xml deleted file mode 100644 index 4db2522603..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_8.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_9.1.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_9.1.xml deleted file mode 100644 index 0dacc20a66..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_9.1.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_9.xml b/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_9.xml deleted file mode 100644 index fd38d284d6..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/dmr/test_simple_9.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - xmlns="http://xml.opendap.org/ns/DAP/4.0#" - xmlns:dap="http://xml.opendap.org/ns/DAP/4.0#"> - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestHyrax/hyrax.html b/dap4/d4tests/src/test/data/resources/TestHyrax/hyrax.html deleted file mode 100644 index e92d923650..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestHyrax/hyrax.html +++ /dev/null @@ -1,380 +0,0 @@ - - -DAP4 Test Files - - - -

        DAP4 Test Files

        -

        http://amazon.com/dap/reader/dap4/dap4.html

        -
        -

        netCDF Based Test Files

        - -
        -

        HDF5 Based Test Files

        - -
        -

        Synthetic Based Test Files

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        test_simple_1.dmr: DMR (XML) DAP DSR
        dmr-testsuite/test_array_10.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_array_11.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_array_1.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_array_2.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_array_3.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_array_4.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_array_5.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_array_6.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_array_7.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_array_8.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_simple_10.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_simple_1.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_simple_2.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_simple_3_error_1.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_simple_3_error_2.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_simple_3_error_3.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_simple_3.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_simple_4.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_simple_5.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_simple_6.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_simple_7.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_simple_8.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_simple_9.1.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_simple_9.xml: DMR (XML) DAP DSR
        dmr-testsuite/test_escaped_paths.xml: DMR (XML) DAP DSR
        D4-xml/DMR_0.1.xml: DMR (XML) DAP DSR
        D4-xml/DMR_0.xml: DMR (XML) DAP DSR
        D4-xml/DMR_1.xml: DMR (XML) DAP DSR
        D4-xml/DMR_2.1.xml: DMR (XML) DAP DSR
        D4-xml/DMR_2.xml: DMR (XML) DAP DSR
        D4-xml/DMR_3.1.xml: DMR (XML) DAP DSR
        D4-xml/DMR_3.2.xml: DMR (XML) DAP DSR
        D4-xml/DMR_3.3.xml: DMR (XML) DAP DSR
        D4-xml/DMR_3.4.xml: DMR (XML) DAP DSR
        D4-xml/DMR_3.5.xml: DMR (XML) DAP DSR
        D4-xml/DMR_3.xml: DMR (XML) DAP DSR
        D4-xml/DMR_4.1.xml: DMR (XML) DAP DSR
        D4-xml/DMR_4.xml: DMR (XML) DAP DSR
        D4-xml/DMR_5.1.xml: DMR (XML) DAP DSR
        D4-xml/DMR_5.xml: DMR (XML) DAP DSR
        D4-xml/DMR_6.1.xml: DMR (XML) DAP DSR
        D4-xml/DMR_6.2.xml: DMR (XML) DAP DSR
        D4-xml/DMR_6.xml: DMR (XML) DAP DSR
        D4-xml/DMR_7.1.xml: DMR (XML) DAP DSR
        D4-xml/DMR_7.2.xml: DMR (XML) DAP DSR
        D4-xml/DMR_7.3.xml: DMR (XML) DAP DSR
        D4-xml/DMR_7.4.xml: DMR (XML) DAP DSR
        D4-xml/DMR_7.5.xml: DMR (XML) DAP DSR
        D4-xml/DMR_7.xml: DMR (XML) DAP DSR
        D4-xml/DMR_8.xml: DMR (XML) DAP DSR
        -
        - diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_atomic_array.nc.nc4.dap b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_atomic_array.nc.nc4.dap deleted file mode 100644 index a190c8fd5c..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_atomic_array.nc.nc4.dap +++ /dev/null @@ -1,56 +0,0 @@ -netcdf test_atomic_array { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - dimensions: - d1 = 1; - d2 = 2; - d3 = 3; - d4 = 4; - d5 = 5; - variables: - ubyte vu8(d2, d3); - - short v16(d4); - - uint vu32(d2, d3); - - double vd(d2); - - char vc(d2); - - String vs(d2, d2); - - opaque vo(d1, d2); - - enum cloud_class_t primary_cloud(d5); - string primary_cloud:_FillValue = "Missing"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -vu8 = - { - {255, 1, 2}, - {3, 4, 5} - } -v16 = - {1, 2, 3, 4} -vu32 = - { - {5, 4, 3}, - {2, 1, 0} - } -vd = - {17.9, 1024.8} -vc = "@&" -vs = - { "hello world", " -", "Καλημέα", "abc" - } -vo = 0x0123456789abcdef, - 0xabcdef0000000000; - -primary_cloud = - {0, 2, 0, 1, 127} -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_atomic_array.nc.nc4.dmr b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_atomic_array.nc.nc4.dmr deleted file mode 100644 index 822a30cbc9..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_atomic_array.nc.nc4.dmr +++ /dev/null @@ -1,31 +0,0 @@ -netcdf test_atomic_array { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - dimensions: - d1 = 1; - d2 = 2; - d3 = 3; - d4 = 4; - d5 = 5; - variables: - ubyte vu8(d2, d3); - - short v16(d4); - - uint vu32(d2, d3); - - double vd(d2); - - char vc(d2); - - String vs(d2, d2); - - opaque vo(d1, d2); - - enum cloud_class_t primary_cloud(d5); - string primary_cloud:_FillValue = "Missing"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_atomic_types.nc.nc4.dap b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_atomic_types.nc.nc4.dap deleted file mode 100644 index 205e48eb6d..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_atomic_types.nc.nc4.dap +++ /dev/null @@ -1,57 +0,0 @@ -netcdf test_atomic_types { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - variables: - byte v8; - - ubyte vu8; - - short v16; - - ushort vu16; - - int v32; - - uint vu32; - - long v64; - - ulong vu64; - - float vf; - - double vd; - - char vc; - - String vs; - - opaque vo; - - enum cloud_class_t primary_cloud; - string primary_cloud:_FillValue = "Missing"; - - enum cloud_class_t secondary_cloud; - string secondary_cloud:_FillValue = "Missing"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -v8 =-128 -vu8 =255 -v16 =-32768 -vu16 =65535 -v32 =2147483647 -vu32 =4294967295 -v64 =9223372036854775807 -vu64 =18446744073709551615 -vf =3.1415927 -vd =3.141592653589793 -vc =@ -vs = "hello world" -vo = 0x0123456789abcdef; - -primary_cloud =2 -secondary_cloud =127 -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_atomic_types.nc.nc4.dmr b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_atomic_types.nc.nc4.dmr deleted file mode 100644 index d771557b7f..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_atomic_types.nc.nc4.dmr +++ /dev/null @@ -1,40 +0,0 @@ -netcdf test_atomic_types { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - variables: - byte v8; - - ubyte vu8; - - short v16; - - ushort vu16; - - int v32; - - uint vu32; - - long v64; - - ulong vu64; - - float vf; - - double vd; - - char vc; - - String vs; - - opaque vo; - - enum cloud_class_t primary_cloud; - string primary_cloud:_FillValue = "Missing"; - - enum cloud_class_t secondary_cloud; - string secondary_cloud:_FillValue = "Missing"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_enum.nc.nc4.dap b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_enum.nc.nc4.dap deleted file mode 100644 index 7723b215c7..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_enum.nc.nc4.dap +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test_enum { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - variables: - enum cloud_class_t primary_cloud; - string primary_cloud:_FillValue = "Missing"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -primary_cloud =2 -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_enum.nc.nc4.dmr b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_enum.nc.nc4.dmr deleted file mode 100644 index 0b98070c42..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_enum.nc.nc4.dmr +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test_enum { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - variables: - enum cloud_class_t primary_cloud; - string primary_cloud:_FillValue = "Missing"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_enum_array.nc.nc4.dap b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_enum_array.nc.nc4.dap deleted file mode 100644 index 6bc8a7ac6d..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_enum_array.nc.nc4.dap +++ /dev/null @@ -1,16 +0,0 @@ -netcdf test_enum_array { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - dimensions: - d5 = 5; - variables: - enum cloud_class_t primary_cloud(d5); - string primary_cloud:_FillValue = "Missing"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -primary_cloud = - {0, 2, 0, 1, 127} -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_enum_array.nc.nc4.dmr b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_enum_array.nc.nc4.dmr deleted file mode 100644 index 0ba318f4b9..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_enum_array.nc.nc4.dmr +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test_enum_array { - types: - byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; - - dimensions: - d5 = 5; - variables: - enum cloud_class_t primary_cloud(d5); - string primary_cloud:_FillValue = "Missing"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_one_var.nc.nc4.dap b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_one_var.nc.nc4.dap deleted file mode 100644 index cf8dae631c..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_one_var.nc.nc4.dap +++ /dev/null @@ -1,9 +0,0 @@ -netcdf test_one_var { - variables: - int t; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -t =17 -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_one_var.nc.nc4.dmr b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_one_var.nc.nc4.dmr deleted file mode 100644 index 2f331bc8d9..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_one_var.nc.nc4.dmr +++ /dev/null @@ -1,7 +0,0 @@ -netcdf test_one_var { - variables: - int t; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_one_vararray.nc.nc4.dap b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_one_vararray.nc.nc4.dap deleted file mode 100644 index 6c047673ba..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_one_vararray.nc.nc4.dap +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_one_vararray { - dimensions: - d2 = 2; - variables: - int t(d2); - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -t = - {17, 37} -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_one_vararray.nc.nc4.dmr b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_one_vararray.nc.nc4.dmr deleted file mode 100644 index ff9f4f085d..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_one_vararray.nc.nc4.dmr +++ /dev/null @@ -1,9 +0,0 @@ -netcdf test_one_vararray { - dimensions: - d2 = 2; - variables: - int t(d2); - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_array.nc.nc4.dap b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_array.nc.nc4.dap deleted file mode 100644 index b62c9b8688..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_array.nc.nc4.dap +++ /dev/null @@ -1,67 +0,0 @@ -netcdf test_struct_array { - dimensions: - dx = 4; - dy = 3; - variables: - - Structure { - int x; - string x:_CoordinateAxisType = "GeoX"; - int y; - string y:_CoordinateAxisType = "GeoY"; - } s(dx, dy); - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -s = - { - x =1 - y =-1 - } s(0) - { - x =17 - y =37 - } s(1) - { - x =-32767 - y =32767 - } s(2) - { - x =-1 - y =3 - } s(3) - { - x =-2 - y =2 - } s(4) - { - x =-3 - y =1 - } s(5) - { - x =-4 - y =12 - } s(6) - { - x =-8 - y =8 - } s(7) - { - x =-12 - y =4 - } s(8) - { - x =-5 - y =15 - } s(9) - { - x =-10 - y =10 - } s(10) - { - x =-15 - y =5 - } s(11) -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_array.nc.nc4.dmr b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_array.nc.nc4.dmr deleted file mode 100644 index 8699a2aa57..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_array.nc.nc4.dmr +++ /dev/null @@ -1,17 +0,0 @@ -netcdf test_struct_array { - dimensions: - dx = 4; - dy = 3; - variables: - - Structure { - int x; - string x:_CoordinateAxisType = "GeoX"; - int y; - string y:_CoordinateAxisType = "GeoY"; - } s(dx, dy); - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_nested.nc.nc4.dap b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_nested.nc.nc4.dap deleted file mode 100644 index 19f3ca3f32..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_nested.nc.nc4.dap +++ /dev/null @@ -1,38 +0,0 @@ -netcdf test_struct_nested { - variables: - - Structure { - - Structure { - int x; - string x:_CoordinateAxisType = "GeoX"; - int y; - string y:_CoordinateAxisType = "GeoY"; - } field1; - - - Structure { - int x; - int y; - } field2; - - } x; - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: - x = - { - field1 = - { - x = 1 - y = -2 - } x.field1(0) - field2 = - { - x = 255 - y = 90 - } x.field2(0) - } x(0) -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_nested.nc.nc4.dmr b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_nested.nc.nc4.dmr deleted file mode 100644 index 8cb6375d5a..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_nested.nc.nc4.dmr +++ /dev/null @@ -1,24 +0,0 @@ -netcdf test_struct_nested { - variables: - - Structure { - - Structure { - int x; - string x:_CoordinateAxisType = "GeoX"; - int y; - string y:_CoordinateAxisType = "GeoY"; - } field1; - - - Structure { - int x; - int y; - } field2; - - } x; - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_type.nc.nc4.dap b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_type.nc.nc4.dap deleted file mode 100644 index 084f785c8c..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_type.nc.nc4.dap +++ /dev/null @@ -1,21 +0,0 @@ -netcdf test_struct_type { - variables: - - Structure { - int x; - string x:_CoordinateAxisType = "GeoX"; - int y; - string y:_CoordinateAxisType = "GeoY"; - } s; - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: - s = - { - x = 1 - y = -2 - } s(0) -} - diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_type.nc.nc4.dmr b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_type.nc.nc4.dmr deleted file mode 100644 index 17f3955052..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_struct_type.nc.nc4.dmr +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test_struct_type { - variables: - - Structure { - int x; - string x:_CoordinateAxisType = "GeoX"; - int y; - string y:_CoordinateAxisType = "GeoY"; - } s; - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen1.nc.nc4.dap b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen1.nc.nc4.dap deleted file mode 100644 index 3c411cc3c6..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen1.nc.nc4.dap +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test_vlen1 { - variables: - int x(*); - string x:_CoordinateAxisType = "GeoX"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -x = - {1, 3, 5, 7} -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen1.nc.nc4.dmr b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen1.nc.nc4.dmr deleted file mode 100644 index 66e15af40f..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen1.nc.nc4.dmr +++ /dev/null @@ -1,8 +0,0 @@ -netcdf test_vlen1 { - variables: - int x(*); - string x:_CoordinateAxisType = "GeoX"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen2.nc.nc4.dap b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen2.nc.nc4.dap deleted file mode 100644 index 8628cb9931..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen2.nc.nc4.dap +++ /dev/null @@ -1,21 +0,0 @@ -netcdf test_vlen2 { - dimensions: - d3 = 3; - d2 = 2; - variables: - int x(d3, d2, *); - string x:_CoordinateAxisType = "GeoX"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: - x = - { - {1, 3, 5, 7}, - {100, 200}, - {-1, -2}, - {1, 3, 5, 7}, - {100, 200}, - {-1, -2} - } -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen2.nc.nc4.dmr b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen2.nc.nc4.dmr deleted file mode 100644 index a28e65320e..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen2.nc.nc4.dmr +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test_vlen2 { - dimensions: - d3 = 3; - d2 = 2; - variables: - int x(d3, d2, *); - string x:_CoordinateAxisType = "GeoX"; - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen3.nc.nc4.dap b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen3.nc.nc4.dap deleted file mode 100644 index aaef5daf73..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen3.nc.nc4.dap +++ /dev/null @@ -1,17 +0,0 @@ -netcdf test_vlen3 { - variables: - - Structure { - int f1(*); - } v1; - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: - v1 = - { - f1 = - {1, 3, 5, 7} - } v1(0) -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen3.nc.nc4.dmr b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen3.nc.nc4.dmr deleted file mode 100644 index ecef24cd25..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen3.nc.nc4.dmr +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test_vlen3 { - variables: - - Structure { - int f1(*); - } v1; - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen4.nc.nc4.dap b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen4.nc.nc4.dap deleted file mode 100644 index 0c62ce086b..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen4.nc.nc4.dap +++ /dev/null @@ -1,20 +0,0 @@ -netcdf test_vlen4 { - variables: - - Structure { - int f1(2, *); - } v1; - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: - v1 = - { - f1 = - { - {1, 3, 5, 7}, - {100, 200} - } - } v1(0) -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen4.nc.nc4.dmr b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen4.nc.nc4.dmr deleted file mode 100644 index 357edd6da2..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen4.nc.nc4.dmr +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test_vlen4 { - variables: - - Structure { - int f1(2, *); - } v1; - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen5.nc.nc4.dap b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen5.nc.nc4.dap deleted file mode 100644 index 8e92721907..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen5.nc.nc4.dap +++ /dev/null @@ -1,23 +0,0 @@ -netcdf test_vlen5 { - dimensions: - d2 = 2; - variables: - - Structure { - int v(*); - } v1(d2); - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -v1 = - { - v = - {1, 3, 5, 7} - } v1(0) - { - v = - {100, 200} - } v1(1) -} diff --git a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen5.nc.nc4.dmr b/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen5.nc.nc4.dmr deleted file mode 100644 index 5785af6152..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestIosp/baseline/test_vlen5.nc.nc4.dmr +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test_vlen5 { - dimensions: - d2 = 2; - variables: - - Structure { - int v(*); - } v1(d2); - - - // global attributes: - string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; -} diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_anon_dim.syn.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_anon_dim.syn.dmp deleted file mode 100644 index 8bfb4671ca..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_anon_dim.syn.dmp +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_atomic_array.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_atomic_array.nc.dmp deleted file mode 100644 index 52f093929b..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_atomic_array.nc.dmp +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_atomic_array.syn.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_atomic_array.syn.dmp deleted file mode 100644 index 3519a327b0..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_atomic_array.syn.dmp +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_atomic_types.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_atomic_types.nc.dmp deleted file mode 100644 index aef3b9eda0..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_atomic_types.nc.dmp +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_atomic_types.syn.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_atomic_types.syn.dmp deleted file mode 100644 index f7a05c2e72..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_atomic_types.syn.dmp +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_enum.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_enum.nc.dmp deleted file mode 100644 index 10841fbc27..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_enum.nc.dmp +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_enum_2.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_enum_2.nc.dmp deleted file mode 100644 index e29149a244..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_enum_2.nc.dmp +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_enum_array.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_enum_array.nc.dmp deleted file mode 100644 index bfa1765093..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_enum_array.nc.dmp +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_fill.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_fill.nc.dmp deleted file mode 100644 index 2d1ba264b4..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_fill.nc.dmp +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_groups1.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_groups1.nc.dmp deleted file mode 100644 index 80f918edc6..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_groups1.nc.dmp +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_one_var.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_one_var.nc.dmp deleted file mode 100644 index 89016b1816..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_one_var.nc.dmp +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_one_vararray.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_one_vararray.nc.dmp deleted file mode 100644 index 8f199d1cb1..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_one_vararray.nc.dmp +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_opaque.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_opaque.nc.dmp deleted file mode 100644 index 1214eb28eb..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_opaque.nc.dmp +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_opaque_array.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_opaque_array.nc.dmp deleted file mode 100644 index b79939de67..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_opaque_array.nc.dmp +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_sequence_1.syn.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_sequence_1.syn.dmp deleted file mode 100644 index 29109a2c04..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_sequence_1.syn.dmp +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_sequence_2.syn.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_sequence_2.syn.dmp deleted file mode 100644 index 4194cf19d4..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_sequence_2.syn.dmp +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_array.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_array.nc.dmp deleted file mode 100644 index 8dabe14882..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_array.nc.dmp +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_array.syn.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_array.syn.dmp deleted file mode 100644 index 909d78befa..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_array.syn.dmp +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_nested.hdf5.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_nested.hdf5.dmp deleted file mode 100644 index 376824981e..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_nested.hdf5.dmp +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_nested3.hdf5.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_nested3.hdf5.dmp deleted file mode 100644 index 03ac53d23c..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_nested3.hdf5.dmp +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_type.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_type.nc.dmp deleted file mode 100644 index 4e2adb0c1d..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_struct_type.nc.dmp +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_utf8.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_utf8.nc.dmp deleted file mode 100644 index 74115be967..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_utf8.nc.dmp +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_vlen1.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_vlen1.nc.dmp deleted file mode 100644 index b30754e1b2..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_vlen1.nc.dmp +++ /dev/null @@ -1,10 +0,0 @@ - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_vlen2.nc.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_vlen2.nc.dmp deleted file mode 100644 index cea92859ec..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_vlen2.nc.dmp +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_vlen3.hdf5.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_vlen3.hdf5.dmp deleted file mode 100644 index dbad545664..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_vlen3.hdf5.dmp +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_vlen5.hdf5.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_vlen5.hdf5.dmp deleted file mode 100644 index 20cc09a17b..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/test_vlen5.hdf5.dmp +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/testall.dmp b/dap4/d4tests/src/test/data/resources/TestParsers/baseline/testall.dmp deleted file mode 100644 index 9b57107614..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/baseline/testall.dmp +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_atomic_array.nc.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_atomic_array.nc.dmr deleted file mode 100644 index 29a61e7c8b..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_atomic_array.nc.dmr +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_atomic_array.syn.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_atomic_array.syn.dmr deleted file mode 100644 index 3519a327b0..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_atomic_array.syn.dmr +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_atomic_types.nc.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_atomic_types.nc.dmr deleted file mode 100644 index aef3b9eda0..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_atomic_types.nc.dmr +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_atomic_types.syn.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_atomic_types.syn.dmr deleted file mode 100644 index ec5ed7d9f7..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_atomic_types.syn.dmr +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_enum.nc.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_enum.nc.dmr deleted file mode 100644 index 10841fbc27..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_enum.nc.dmr +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_enum_array.nc.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_enum_array.nc.dmr deleted file mode 100644 index bfa1765093..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_enum_array.nc.dmr +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_groups1.nc.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_groups1.nc.dmr deleted file mode 100644 index 80f918edc6..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_groups1.nc.dmr +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_one_var.nc.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_one_var.nc.dmr deleted file mode 100644 index 89016b1816..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_one_var.nc.dmr +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_one_vararray.nc.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_one_vararray.nc.dmr deleted file mode 100644 index 8f199d1cb1..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_one_vararray.nc.dmr +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_struct_array.nc.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_struct_array.nc.dmr deleted file mode 100644 index 8dabe14882..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_struct_array.nc.dmr +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_struct_nested.hdf5.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_struct_nested.hdf5.dmr deleted file mode 100644 index 376824981e..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_struct_nested.hdf5.dmr +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_struct_nested3.hdf5.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_struct_nested3.hdf5.dmr deleted file mode 100644 index 03ac53d23c..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_struct_nested3.hdf5.dmr +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_struct_type.nc.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_struct_type.nc.dmr deleted file mode 100644 index 4e2adb0c1d..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_struct_type.nc.dmr +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_utf8.nc.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_utf8.nc.dmr deleted file mode 100644 index 74115be967..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_utf8.nc.dmr +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_vlen1.nc.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_vlen1.nc.dmr deleted file mode 100644 index b30754e1b2..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_vlen1.nc.dmr +++ /dev/null @@ -1,10 +0,0 @@ - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_vlen2.nc.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_vlen2.nc.dmr deleted file mode 100644 index cea92859ec..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_vlen2.nc.dmr +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_vlen3.hdf5.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_vlen3.hdf5.dmr deleted file mode 100644 index dbad545664..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_vlen3.hdf5.dmr +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_vlen5.hdf5.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_vlen5.hdf5.dmr deleted file mode 100644 index 20cc09a17b..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/test_vlen5.hdf5.dmr +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/testall.dmr b/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/testall.dmr deleted file mode 100644 index 0e2bf5de38..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/dmrset/testall.dmr +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - 10 - - - abcd "hello" "quoted" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/testinput/ce1.txt b/dap4/d4tests/src/test/data/resources/TestParsers/testinput/ce1.txt deleted file mode 100644 index 73b06f4c1f..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/testinput/ce1.txt +++ /dev/null @@ -1,8 +0,0 @@ -# Constraint tests for ce1_dmr.txt -/a[1] -/b[10:16] -/c[8:2:15] -/a[1];/b[10:16];/c[8:2:15] -/d[1][0:2:2];/a[1];/e[1][0];/f[0][1] -/s[0:3][0:2].x;/s[0:3][0:2].y - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/testinput/ce1_dmr.txt b/dap4/d4tests/src/test/data/resources/TestParsers/testinput/ce1_dmr.txt deleted file mode 100644 index e3b4d952be..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/testinput/ce1_dmr.txt +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/testinput/test_misc1.xml b/dap4/d4tests/src/test/data/resources/TestParsers/testinput/test_misc1.xml deleted file mode 100644 index 16d8b476e3..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/testinput/test_misc1.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/testinput/test_misc2.xml b/dap4/d4tests/src/test/data/resources/TestParsers/testinput/test_misc2.xml deleted file mode 100644 index e92d76698d..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/testinput/test_misc2.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/testinput/test_simple_1.xml b/dap4/d4tests/src/test/data/resources/TestParsers/testinput/test_simple_1.xml deleted file mode 100644 index 985fb24ba0..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/testinput/test_simple_1.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/testinput/test_simple_2.xml b/dap4/d4tests/src/test/data/resources/TestParsers/testinput/test_simple_2.xml deleted file mode 100644 index 60a1956ff4..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/testinput/test_simple_2.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestParsers/testinput/testall.xml b/dap4/d4tests/src/test/data/resources/TestParsers/testinput/testall.xml deleted file mode 100644 index dfe668a95c..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestParsers/testinput/testall.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - 10 - - - abcd \"hello\" "quoted" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_aaa.nc.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_aaa.nc.dmp deleted file mode 100644 index 54fdf0828f..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_aaa.nc.dmp +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - -vs(0) = "Καλημέα" ; -vs(1) = "abc" ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_array.nc.0.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_array.nc.0.dmp deleted file mode 100644 index 9ee80fe4bb..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_array.nc.0.dmp +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - -vu8(0,0) = 3 ; -vu8(0,1) = 5 ; -vd(0) = 1024.800000 ; -vs(0,0) = " -" ; -vo(0,0) = 0xABCDEF0000000000 ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_array.nc.1.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_array.nc.1.dmp deleted file mode 100644 index e076c6ee23..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_array.nc.1.dmp +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_array.nc.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_array.nc.dmp deleted file mode 100644 index bdea13973c..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_array.nc.dmp +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -vu8(0,0) = 255 ; -vu8(0,1) = 1 ; -vu8(0,2) = 2 ; -vu8(1,0) = 3 ; -vu8(1,1) = 4 ; -vu8(1,2) = 5 ; -v16(0) = 1 ; -v16(1) = 2 ; -v16(2) = 3 ; -v16(3) = 4 ; -vu32(0,0) = 5 ; -vu32(0,1) = 4 ; -vu32(0,2) = 3 ; -vu32(1,0) = 2 ; -vu32(1,1) = 1 ; -vu32(1,2) = 0 ; -vd(0) = 17.900000 ; -vd(1) = 1024.800000 ; -vc(0) = '@' ; -vc(1) = '&' ; -vs(0,0) = "hello world" ; -vs(0,1) = "abc" ; -vs(1,0) = " -" ; -vs(1,1) = "Καλημέα" ; -vo(0,0) = 0x0123456789ABCDEF ; -vo(0,1) = 0xABCDEF0000000000 ; -primary_cloud(0) = Clear ; -primary_cloud(1) = Stratus ; -primary_cloud(2) = Clear ; -primary_cloud(3) = Cumulonimbus ; -primary_cloud(4) = Missing ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_array.nc.ncdump b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_array.nc.ncdump deleted file mode 100644 index b9507deedf..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_array.nc.ncdump +++ /dev/null @@ -1,57 +0,0 @@ -netcdf null { - types: - enum cloud_class_t { 'Clear' = 0, 'Cumulonimbus' = 1, 'Stratus' = 2, 'Stratocumulus' = 3, 'Cumulus' = 4, 'Altostratus' = 5, 'Nimbostratus' = 6, 'Altocumulus' = 7, 'Missing' = 127, 'Cirrostratus' = 8, 'Cirrocumulus' = 9, 'Cirrus' = 10}; - - dimensions: - d1 = 1; - d2 = 2; - d3 = 3; - d4 = 4; - d5 = 5; - variables: - byte vu8(d2=2, d3=3); - :_Unsigned = "true"; - - short v16(d4=4); - - int vu32(d2=2, d3=3); - :_Unsigned = "true"; - - double vd(d2=2); - - char vc(d2=2); - - String vs(d2=2, d2=2); - - opaque vo(d1=1, d2=2); - - String primary_cloud(d5=5); - :_FillValue = "Missing"; - - // global attributes: - :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -vu8 = - { - {-1, 1, 2}, - {3, 4, 5} - } -v16 = - {1, 2, 3, 4} -vu32 = - { - {5, 4, 3}, - {2, 1, 0} - } -vd = - {17.9, 1024.8} -vc = "@&" -vs = - { "hello world", "abc", " -", "Καλημέρα" - } -vo = 0x0123456789abcdef, - 0xabcdef0000000000, - -primary_cloud = "Clear", "Clear", "Clear", "Clear", "Clear" -} diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_types.nc.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_types.nc.dmp deleted file mode 100644 index e26e76d516..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_types.nc.dmp +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -v8 = -128 ; -vu8 = 255 ; -v16 = -32768 ; -vu16 = 65535 ; -v32 = 2147483647 ; -vu32 = 4294967295 ; -v64 = 9223372036854775807 ; -vu64 = 18446744073709551615 ; -vf = 3.141593 ; -vd = 3.141593 ; -vc = '@' ; -vs = "hello world" ; -vo = 0x0123456789ABCDEF ; -primary_cloud = Stratus ; -secondary_cloud = Missing ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_types.nc.ncdump b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_types.nc.ncdump deleted file mode 100644 index 62a82936ef..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_atomic_types.nc.ncdump +++ /dev/null @@ -1,61 +0,0 @@ -netcdf null { - types: - enum cloud_class_t { 'Clear' = 0, 'Cumulonimbus' = 1, 'Stratus' = 2, 'Stratocumulus' = 3, 'Cumulus' = 4, 'Altostratus' = 5, 'Nimbostratus' = 6, 'Altocumulus' = 7, 'Missing' = 127, 'Cirrostratus' = 8, 'Cirrocumulus' = 9, 'Cirrus' = 10}; - - variables: - byte v8; - - byte vu8; - :_Unsigned = "true"; - - short v16; - - short vu16; - :_Unsigned = "true"; - - int v32; - - int vu32; - :_Unsigned = "true"; - - long v64; - - long vu64; - :_Unsigned = "true"; - - float vf; - - double vd; - - char vc; - - String vs; - - opaque vo; - - String primary_cloud; - :_FillValue = "Missing"; - - String secondary_cloud; - :_FillValue = "Missing"; - - // global attributes: - :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -v8 =-128 -vu8 =-1 -v16 =-32768 -vu16 =-1 -v32 =2147483647 -vu32 =-1 -v64 =9223372036854775807 -vu64 =-1 -vf =3.1415927 -vd =3.141592653589793 -vc =@ -vs = "hello world" -vo = 0x0123456789abcdef, - -primary_cloud = "Stratus" -secondary_cloud = "Unknown enum value=60" -} diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_enum.nc.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_enum.nc.dmp deleted file mode 100644 index 5708512c59..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_enum.nc.dmp +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -primary_cloud = Stratus ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_enum_array.nc.0.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_enum_array.nc.0.dmp deleted file mode 100644 index c08e20fe0f..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_enum_array.nc.0.dmp +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -primary_cloud(0) = Clear ; -primary_cloud(1) = Stratus ; -primary_cloud(2) = Clear ; -primary_cloud(3) = Cumulonimbus ; -primary_cloud(4) = Missing ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_enum_array.nc.1.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_enum_array.nc.1.dmp deleted file mode 100644 index 02fa4ec7e5..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_enum_array.nc.1.dmp +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -primary_cloud(0) = Stratus ; -primary_cloud(1) = Cumulonimbus ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_enum_array.nc.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_enum_array.nc.dmp deleted file mode 100644 index b82a1e1091..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_enum_array.nc.dmp +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -primary_cloud(0) = Clear ; -primary_cloud(1) = Stratus ; -primary_cloud(2) = Clear ; -primary_cloud(3) = Cumulonimbus ; -primary_cloud(4) = Missing ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_groups1.nc.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_groups1.nc.dmp deleted file mode 100644 index 2458e100dd..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_groups1.nc.dmp +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_groups1.nc.ncdump b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_groups1.nc.ncdump deleted file mode 100644 index d0ff04ed22..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_groups1.nc.ncdump +++ /dev/null @@ -1,7 +0,0 @@ -netcdf null { - dimensions: - dim1 = 5; - // global attributes: - :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -} diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_var.nc.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_var.nc.dmp deleted file mode 100644 index 07327c9df8..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_var.nc.dmp +++ /dev/null @@ -1,5 +0,0 @@ - - - - -t = 17 ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_var.nc.ncdump b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_var.nc.ncdump deleted file mode 100644 index f9b96a90ca..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_var.nc.ncdump +++ /dev/null @@ -1,9 +0,0 @@ -netcdf null { - variables: - int t; - - // global attributes: - :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -t =17 -} diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_vararray.nc.0.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_vararray.nc.0.dmp deleted file mode 100644 index b42a52d67e..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_vararray.nc.0.dmp +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - -t(0) = 17 ; -t(1) = 37 ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_vararray.nc.1.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_vararray.nc.1.dmp deleted file mode 100644 index 5cd368ebb4..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_vararray.nc.1.dmp +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - -t(0) = 37 ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_vararray.nc.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_vararray.nc.dmp deleted file mode 100644 index b42a52d67e..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_one_vararray.nc.dmp +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - -t(0) = 17 ; -t(1) = 37 ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_array.nc.0.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_array.nc.0.dmp deleted file mode 100644 index d9cf704dcf..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_array.nc.0.dmp +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - -Struct { -s.x = 1 ; -s.y = -1 ; -} s(0); -Struct { -s.x = 17 ; -s.y = 37 ; -} s(1); -Struct { -s.x = -4 ; -s.y = 12 ; -} s(2); -Struct { -s.x = -8 ; -s.y = 8 ; -} s(3); diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_array.nc.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_array.nc.dmp deleted file mode 100644 index 13448edf44..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_array.nc.dmp +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - -Struct { -s.x = 1 ; -s.y = -1 ; -} s(0); -Struct { -s.x = 17 ; -s.y = 37 ; -} s(1); -Struct { -s.x = -32767 ; -s.y = 32767 ; -} s(2); -Struct { -s.x = -1 ; -s.y = 3 ; -} s(3); -Struct { -s.x = -2 ; -s.y = 2 ; -} s(4); -Struct { -s.x = -3 ; -s.y = 1 ; -} s(5); -Struct { -s.x = -4 ; -s.y = 12 ; -} s(6); -Struct { -s.x = -8 ; -s.y = 8 ; -} s(7); -Struct { -s.x = -12 ; -s.y = 4 ; -} s(8); -Struct { -s.x = -5 ; -s.y = 15 ; -} s(9); -Struct { -s.x = -10 ; -s.y = 10 ; -} s(10); -Struct { -s.x = -15 ; -s.y = 5 ; -} s(11); diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_array.nc.ncdump b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_array.nc.ncdump deleted file mode 100644 index 296e936377..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_array.nc.ncdump +++ /dev/null @@ -1,26 +0,0 @@ -netcdf null { - dimensions: - dx = 2; - variables: - - Structure { - int x; - :_CoordinateAxisType = "GeoX"; - int y; - :_CoordinateAxisType = "GeoY"; - } x(dx=2); - - - // global attributes: - :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -x = - { - x =1 - y =-2 - } x(0) - { - x =17 - y =37 - } x(1) -} diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_nested.hdf5.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_nested.hdf5.dmp deleted file mode 100644 index ab0a96abaa..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_nested.hdf5.dmp +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - -Struct { -Struct { -x.field1.x = 1 ; -x.field1.y = -2 ; -} x.field1; -Struct { -x.field2.x = 255 ; -x.field2.y = 90 ; -} x.field2; -} x; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_type.nc.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_type.nc.dmp deleted file mode 100644 index 9bf70f993e..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_type.nc.dmp +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - -Struct { -s.x = 1 ; -s.y = -2 ; -} s; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_type.nc.ncdump b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_type.nc.ncdump deleted file mode 100644 index a7a7e096a9..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_struct_type.nc.ncdump +++ /dev/null @@ -1,18 +0,0 @@ -netcdf null { - variables: - - Structure { - int x; - :_CoordinateAxisType = "GeoX"; - int y; - :_CoordinateAxisType = "GeoY"; - } x; - - - // global attributes: - :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; - data: -x = x =1 - y =-2 - -} diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_utf8.nc.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_utf8.nc.dmp deleted file mode 100644 index 54fdf0828f..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_utf8.nc.dmp +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - -vs(0) = "Καλημέα" ; -vs(1) = "abc" ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_vlen1.nc.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_vlen1.nc.dmp deleted file mode 100644 index d341f2cefc..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_vlen1.nc.dmp +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - -x(0) = 1 ; -x(1) = 3 ; -x(2) = 5 ; -x(3) = 7 ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_vlen2.nc.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_vlen2.nc.dmp deleted file mode 100644 index f530233504..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_vlen2.nc.dmp +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - -x(0,0) = 1,3,5,7 ; -x(0,1) = 100,200 ; -x(1,0) = -1,-2 ; -x(1,1) = 1,3,5,7 ; -x(2,0) = 100,200 ; -x(2,1) = -1,-2 ; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_vlen3.hdf5.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_vlen3.hdf5.dmp deleted file mode 100644 index 1197da6c2f..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_vlen3.hdf5.dmp +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - -Struct { -v1.f1(0) = 1 ; -v1.f1(1) = 3 ; -v1.f1(2) = 5 ; -v1.f1(3) = 7 ; -} v1; diff --git a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_vlen5.hdf5.dmp b/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_vlen5.hdf5.dmp deleted file mode 100644 index 341c6ecfe9..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestSerial/baseline/test_vlen5.hdf5.dmp +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - -Struct { -v1.v(0) = 1 ; -v1.v(1) = 3 ; -v1.v(2) = 5 ; -v1.v(3) = 7 ; -} v1(0); -Struct { -v1.v(0) = 100 ; -v1.v(1) = 200 ; -} v1(1); diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_anon_dim.syn.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_anon_dim.syn.dap deleted file mode 100644 index 82d8047804..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_anon_dim.syn.dap +++ /dev/null @@ -1 +0,0 @@ - [0] -1169720286 [1] -920699049 [2] -2088732436 [3] 1060190036 [4] -1123468835 [5] 922940053 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_anon_dim.syn.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_anon_dim.syn.dmr deleted file mode 100644 index acfbb02341..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_anon_dim.syn.dmr +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_array.nc.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_array.nc.dap deleted file mode 100644 index 59a60fbd3b..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_array.nc.dap +++ /dev/null @@ -1,8 +0,0 @@ - [0] 255 [1] 1 [2] 2 [3] 3 [4] 4 [5] 5 - [0] 1 [1] 2 [2] 3 [3] 4 - [0] 5 [1] 4 [2] 3 [3] 2 [4] 1 [5] 0 - [0] 17.9000 [1] 1024.80 - [0] '@' [1] '&' - [0] "hello\tworld" [1] "\r\n" [2] "Καλημέα" [3] "abc" - [0] 0x0123456789ABCDEF [1] 0xABCDEF0000000000 - [0] 0 [1] 2 [2] 0 [3] 1 [4] 127 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_array.nc.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_array.nc.dmr deleted file mode 100644 index 2fbda80066..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_array.nc.dmr +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_array.syn.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_array.syn.dap deleted file mode 100644 index 8bc6508fd1..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_array.syn.dap +++ /dev/null @@ -1,8 +0,0 @@ - [0] 186 [1] 201 [2] 131 [3] 63 [4] 189 [5] 55 - [0] -341 [1] -21899 [2] -13413 [3] -22144 - [0] 2367803413 [1] 3586730583 [2] 511843988 [3] 3754752863 [4] 2950934681 [5] 2366232135 - [0] 0.217870 [1] 0.602451 - [0] 'C' [1] 'O' - [0] "{S" [1] "gb8^OE$" [2] "4a/q%n9;5Y" [3] "{fIl?T\"\\A[" - [0] 0xA2177AA7287C04FA8BB57BCDF76EC80F [1] 0x34FA472AA9404DD543143CADED303A75 - [0] 2 [1] 9 [2] 6 [3] 8 [4] 3 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_array.syn.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_array.syn.dmr deleted file mode 100644 index 4d46c86746..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_array.syn.dmr +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_types.nc.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_types.nc.dap deleted file mode 100644 index 0b6fb8911a..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_types.nc.dap +++ /dev/null @@ -1,15 +0,0 @@ - -128 - 255 - -32768 - 65535 - 2147483647 - 4294967295 - 9223372036854775807 - 18446744073709551615 - 3.14159 - 3.14159 - '@' - "hello\tworld" - 0x0123456789ABCDEF - 2 - 127 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_types.nc.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_types.nc.dmr deleted file mode 100644 index 760b27b8cc..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_types.nc.dmr +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_types.syn.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_types.syn.dap deleted file mode 100644 index 4fe0dfa020..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_types.syn.dap +++ /dev/null @@ -1,15 +0,0 @@ - 58 - 201 - 896 - 16177 - -1123468835 - 2125143125 - 3059391736915381031 - 11577488182652895291 - 0.551297 - 0.790267 - '*' - "O,L?c8A%V" - 0x46F169EF23CBAF9B1FEBD99E4E16CEC9 - 7 - 3 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_types.syn.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_types.syn.dmr deleted file mode 100644 index ad57f898be..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_atomic_types.syn.dmr +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum.nc.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum.nc.dap deleted file mode 100644 index 671900d5f1..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum.nc.dap +++ /dev/null @@ -1 +0,0 @@ - 2 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum.nc.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum.nc.dmr deleted file mode 100644 index c6b90cdbb6..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum.nc.dmr +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum_2.nc.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum_2.nc.dap deleted file mode 100644 index 671900d5f1..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum_2.nc.dap +++ /dev/null @@ -1 +0,0 @@ - 2 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum_array.nc.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum_array.nc.dap deleted file mode 100644 index d13e008917..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum_array.nc.dap +++ /dev/null @@ -1 +0,0 @@ - [0] 0 [1] 2 [2] 0 [3] 1 [4] 127 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum_array.nc.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum_array.nc.dmr deleted file mode 100644 index 9566d108d1..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum_array.nc.dmr +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_fill.nc.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_fill.nc.dap deleted file mode 100644 index 3bf1930073..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_fill.nc.dap +++ /dev/null @@ -1,3 +0,0 @@ - 240 - 32700 - 111000 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_fill.nc.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_fill.nc.dmr deleted file mode 100644 index f42b2d3e1f..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_fill.nc.dmr +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_groups1.nc.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_groups1.nc.dap deleted file mode 100644 index 0af89ec492..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_groups1.nc.dap +++ /dev/null @@ -1,4 +0,0 @@ - [0] -876354855 [1] -1761252264 [2] 1723477387 [3] -46827465 [4] 1475147969 - [0] 12.0000 [1] -100.000 [2] 9.96921e+36 - [0] 2 [1] 3 [2] 5 [3] 7 [4] 11 - [0] 23.0000 [1] 29.0000 [2] 19.0000 [3] 31.0000 [4] 17.0000 [5] 37.0000 [6] 13.0000 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_groups1.nc.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_groups1.nc.dmr deleted file mode 100644 index 5932834dad..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_groups1.nc.dmr +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_one_var.nc.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_one_var.nc.dap deleted file mode 100644 index d193859153..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_one_var.nc.dap +++ /dev/null @@ -1 +0,0 @@ - 17 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_one_var.nc.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_one_var.nc.dmr deleted file mode 100644 index f48bc09fc3..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_one_var.nc.dmr +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_one_vararray.nc.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_one_vararray.nc.dap deleted file mode 100644 index cef7e62967..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_one_vararray.nc.dap +++ /dev/null @@ -1 +0,0 @@ - 17 37 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_one_vararray.nc.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_one_vararray.nc.dmr deleted file mode 100644 index 4e2b7d2430..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_one_vararray.nc.dmr +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_opaque.nc.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_opaque.nc.dap deleted file mode 100644 index 8fc9b352ad..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_opaque.nc.dap +++ /dev/null @@ -1 +0,0 @@ - 0x0123456789ABCDEF diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_opaque.nc.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_opaque.nc.dmr deleted file mode 100644 index d094bcf790..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_opaque.nc.dmr +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_opaque_array.nc.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_opaque_array.nc.dap deleted file mode 100644 index 41b22527f4..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_opaque_array.nc.dap +++ /dev/null @@ -1 +0,0 @@ - [0] 0x0123456789ABCDEF [1] 0xABCDEF0000000000 [2] 0xFEDCBA9876543210 [3] 0xFEDCBA9999999999 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_opaque_array.nc.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_opaque_array.nc.dmr deleted file mode 100644 index fca0f6e7e1..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_opaque_array.nc.dmr +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_sequence_1.syn.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_sequence_1.syn.dap deleted file mode 100644 index c8e824f78e..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_sequence_1.syn.dap +++ /dev/null @@ -1,2 +0,0 @@ -count=1 - -920699049 896 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_sequence_1.syn.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_sequence_1.syn.dmr deleted file mode 100644 index bf34e35c7d..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_sequence_1.syn.dmr +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_sequence_2.syn.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_sequence_2.syn.dap deleted file mode 100644 index 3d99a97450..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_sequence_2.syn.dap +++ /dev/null @@ -1,5 +0,0 @@ -count=1 - -920699049 896 -count=4 - -1123468835 -18686 2125143125 -21899 1268468519 -22144 989876086 3361 - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_sequence_2.syn.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_sequence_2.syn.dmr deleted file mode 100644 index c9d9a09ad3..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_sequence_2.syn.dmr +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_array.nc.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_array.nc.dmr deleted file mode 100644 index ebb845e9e9..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_array.nc.dmr +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_array.syn.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_array.syn.dap deleted file mode 100644 index 9518dd1bd8..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_array.syn.dap +++ /dev/null @@ -1,15 +0,0 @@ - [0] 0.727653 [1] 0.785633 [2] 0.513679 [3] 0.246845 - [0] 0.738422 [1] 0.214889 [2] 0.494798 - [0] 712320147 1268468519 - [0] 696298400 989876086 - [0] -1927163883 -900795134 - [1] -708236713 1377500019 - [1] 511843988 1699265896 - [1] -540214433 -914532520 - [2] -1344032615 -871416961 - [2] -1928735161 935744880 - [2] -1509955773 -1707460853 - [3] 1145911788 -415231529 - [3] -278269626 -1682978013 - [3] -1629885665 -909240754 - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_array.syn.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_array.syn.dmr deleted file mode 100644 index 381b032492..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_array.syn.dmr +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_nested.hdf5.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_nested.hdf5.dap deleted file mode 100644 index 2e043ab8fe..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_nested.hdf5.dap +++ /dev/null @@ -1 +0,0 @@ - 1 -2 255 90 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_nested.hdf5.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_nested.hdf5.dmr deleted file mode 100644 index 945da2f1b4..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_nested.hdf5.dmr +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_nested3.hdf5.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_nested3.hdf5.dap deleted file mode 100644 index d193859153..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_nested3.hdf5.dap +++ /dev/null @@ -1 +0,0 @@ - 17 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_nested3.hdf5.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_nested3.hdf5.dmr deleted file mode 100644 index 3dd3a8eb5a..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_nested3.hdf5.dmr +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_type.nc.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_type.nc.dap deleted file mode 100644 index 6e0cb49e1d..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_type.nc.dap +++ /dev/null @@ -1 +0,0 @@ - 1 -2 diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_type.nc.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_type.nc.dmr deleted file mode 100644 index 691c85d70d..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_struct_type.nc.dmr +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_utf8.nc.dap b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_utf8.nc.dap deleted file mode 100644 index eb9b6ef983..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_utf8.nc.dap +++ /dev/null @@ -1,3 +0,0 @@ - [0] "Καλημέα" - [1] "abc" - diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_utf8.nc.dmr b/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_utf8.nc.dmr deleted file mode 100644 index 6330f7b085..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_utf8.nc.dmr +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_anon_dim.syn.2.dap b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_anon_dim.syn.2.dap deleted file mode 100644 index a69de268a4..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_anon_dim.syn.2.dap +++ /dev/null @@ -1 +0,0 @@ - 3125247010 3374268247 2206234860 1060190036 diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_anon_dim.syn.2.dmr b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_anon_dim.syn.2.dmr deleted file mode 100644 index 058bb28134..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_anon_dim.syn.2.dmr +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.5.dap b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.5.dap deleted file mode 100644 index 7420b43453..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.5.dap +++ /dev/null @@ -1,4 +0,0 @@ - [0] 3 [1] 5 - [0] 1024.80 - [0] "Καλημέα" - [0] 0xABCDEF0000000000 diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.5.dmr b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.5.dmr deleted file mode 100644 index 83af129bb7..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.5.dmr +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.8.dap b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.8.dap deleted file mode 100644 index 9c060c2015..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.8.dap +++ /dev/null @@ -1 +0,0 @@ - [0] 1 [1] 2 [2] 4 diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.8.dmr b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.8.dmr deleted file mode 100644 index 97a6e53fa5..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.8.dmr +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.9.dap b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.9.dap deleted file mode 100644 index b7fc1fa5bd..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.9.dap +++ /dev/null @@ -1 +0,0 @@ - [0] 4 [1] 1 [2] 2 diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.9.dmr b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.9.dmr deleted file mode 100644 index b1cf68eac1..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_atomic_array.nc.9.dmr +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_enum_array.nc.4.dap b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_enum_array.nc.4.dap deleted file mode 100644 index 8277a7de56..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_enum_array.nc.4.dap +++ /dev/null @@ -1 +0,0 @@ - [0] 2 [1] 1 diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_enum_array.nc.4.dmr b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_enum_array.nc.4.dmr deleted file mode 100644 index 963404a513..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_enum_array.nc.4.dmr +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_one_vararray.nc.1.dap b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_one_vararray.nc.1.dap deleted file mode 100644 index e9082c0001..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_one_vararray.nc.1.dap +++ /dev/null @@ -1 +0,0 @@ - 37 diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_one_vararray.nc.1.dmr b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_one_vararray.nc.1.dmr deleted file mode 100644 index 7909a15ec2..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_one_vararray.nc.1.dmr +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_one_vararray.nc.3.dap b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_one_vararray.nc.3.dap deleted file mode 100644 index cef7e62967..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_one_vararray.nc.3.dap +++ /dev/null @@ -1 +0,0 @@ - 17 37 diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_one_vararray.nc.3.dmr b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_one_vararray.nc.3.dmr deleted file mode 100644 index f8c3ff5ae3..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_one_vararray.nc.3.dmr +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_opaque_array.nc.7.dap b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_opaque_array.nc.7.dap deleted file mode 100644 index 2c0819195e..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_opaque_array.nc.7.dap +++ /dev/null @@ -1 +0,0 @@ - [0] 0xFEDCBA9876543210 [1] 0xFEDCBA9999999999 diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_opaque_array.nc.7.dmr b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_opaque_array.nc.7.dmr deleted file mode 100644 index 049b37d03e..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_opaque_array.nc.7.dmr +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_struct_array.nc.6.dap b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_struct_array.nc.6.dap deleted file mode 100644 index af7758ecde..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_struct_array.nc.6.dap +++ /dev/null @@ -1 +0,0 @@ - 1 -1 17 37 -4 12 -8 8 diff --git a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_struct_array.nc.6.dmr b/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_struct_array.nc.6.dmr deleted file mode 100644 index 47626a73d0..0000000000 --- a/dap4/d4tests/src/test/data/resources/TestServletConstraints/baseline/test_struct_array.nc.6.dmr +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/favicon.ico b/dap4/d4tests/src/test/data/resources/favicon.ico deleted file mode 100644 index d63ed90888..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/favicon.ico and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/Makefile b/dap4/d4tests/src/test/data/resources/testfiles/Makefile deleted file mode 100644 index fda8984011..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/Makefile +++ /dev/null @@ -1,75 +0,0 @@ -NC=\ -test_one_var \ -test_one_vararray \ -test_atomic_types \ -test_atomic_array \ -test_enum \ -test_enum_2 \ -test_enum_array \ -test_groups1 \ -test_struct_type \ -test_struct_array \ -test_misc1 \ -test_vlen1 \ -test_vlen2 \ -test_opaque \ -test_opaque_array \ -test_fill \ -test_utf8 - -HDF5=\ -test_struct_nested \ -test_struct_nested3 \ -test_vlen3 \ -test_vlen4 \ -test_vlen5 - -C=tst_fills tst_h5fill - -BUGS= - -all:: all2 all3 - -all1: - for x in ${C} ; do \ - gcc -g -O0 -o $$x.exe $$x.c -L/usr/local/lib -lnetcdf -lcurl -lhdf5 -lhdf5_hl ; \ - ./$$x ; \ - done - -all2: - for x in ${NC} ${HDF5} ; do ncgen -k3 $${x}.cdl ; done - -all3: - for x in ${HDF5} ; do cp $${x}.nc $${x}.hdf5 ; done - -clean:: - rm -f *.nc; rm -f *.hdf5; rm -f *.h5 - for x in ${C} ; do rm -f $$x.exe ; done - rm -fr dump - - -verify: - rm -fr dump - mkdir dump - for x in ${NC} ; do ncdump $${x}.nc > dump/$${x}.cdl ; done - for x in ${HDF5} ; do ncdump $${x}.hdf5 > dump/$${x}.cdl ; done - for x in ${NC} ${HDF5} ; do \ - echo $${x}.cdl ; \ - diff -wBb $${x}.cdl dump/$${x}.cdl ; \ - done - -UI=f:/git/thredds/ui/target/toolsUI-4.4.0-SNAPSHOT.jar -F=test_test - -# note -vall fails -x:: - rm -f ${F}.hdf5 ${F}.nc - ncgen -k3 -o ${F}.nc ${F}.cdl - cp ${F}.nc ${F}.hdf5 - java -cp ${UI} ucar.nc2.NCdumpW ${F}.hdf5 - -# ncdump ${F}.hdf5 - -t:: - ncgen -k3 -o ${F}.nc ${F}.cdl - ncdump ${F}.nc diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_aaa.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_aaa.nc.dmr deleted file mode 100644 index a8d498be14..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_aaa.nc.dmr +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_atomic_array.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_atomic_array.nc.dmr deleted file mode 100644 index 9e0dd4e355..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_atomic_array.nc.dmr +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_atomic_types.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_atomic_types.nc.dmr deleted file mode 100644 index 88340335c2..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_atomic_types.nc.dmr +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_enum.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_enum.nc.dmr deleted file mode 100644 index 7126f07378..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_enum.nc.dmr +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_enum1.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_enum1.nc.dmr deleted file mode 100644 index dca662dfc9..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_enum1.nc.dmr +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_enum2.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_enum2.nc.dmr deleted file mode 100644 index 6cfd3fa18c..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_enum2.nc.dmr +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_enum_array.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_enum_array.nc.dmr deleted file mode 100644 index dd8b966f98..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_enum_array.nc.dmr +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_groups1.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_groups1.nc.dmr deleted file mode 100644 index 80f918edc6..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_groups1.nc.dmr +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_numeric_types.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_numeric_types.nc.dmr deleted file mode 100644 index 57cb8ca453..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_numeric_types.nc.dmr +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_one_var.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_one_var.nc.dmr deleted file mode 100644 index 89016b1816..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_one_var.nc.dmr +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_one_vararray.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_one_vararray.nc.dmr deleted file mode 100644 index 8f199d1cb1..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_one_vararray.nc.dmr +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_opaque_type.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_opaque_type.nc.dmr deleted file mode 100644 index 298d5f9c8e..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_opaque_type.nc.dmr +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_string_type.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_string_type.nc.dmr deleted file mode 100644 index 4b7615450f..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_string_type.nc.dmr +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct1.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct1.nc.dmr deleted file mode 100644 index 9612148ceb..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct1.nc.dmr +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct_array.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct_array.nc.dmr deleted file mode 100644 index 8dabe14882..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct_array.nc.dmr +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct_nested.hdf5.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct_nested.hdf5.dmr deleted file mode 100644 index 376824981e..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct_nested.hdf5.dmr +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct_nested.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct_nested.nc.dmr deleted file mode 100644 index f42d82a6ba..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct_nested.nc.dmr +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct_type.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct_type.nc.dmr deleted file mode 100644 index 4e2adb0c1d..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_struct_type.nc.dmr +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_utf8.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_utf8.nc.dmr deleted file mode 100644 index 74115be967..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_utf8.nc.dmr +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen1.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen1.nc.dmr deleted file mode 100644 index b8086d06d1..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen1.nc.dmr +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen2.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen2.nc.dmr deleted file mode 100644 index f5ebdb60b9..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen2.nc.dmr +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen3.hdf5.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen3.hdf5.dmr deleted file mode 100644 index 13041f5136..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen3.hdf5.dmr +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen3.nc.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen3.nc.dmr deleted file mode 100644 index b8729a4e15..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen3.nc.dmr +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen4.hdf5.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen4.hdf5.dmr deleted file mode 100644 index 09398765d6..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen4.hdf5.dmr +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen5.hdf5.dmr b/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen5.hdf5.dmr deleted file mode 100644 index 2cd00c88d1..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/dmr/test_vlen5.hdf5.dmr +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/doit b/dap4/d4tests/src/test/data/resources/testfiles/doit deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_anon_dim.syn b/dap4/d4tests/src/test/data/resources/testfiles/test_anon_dim.syn deleted file mode 100644 index 221f7ac725..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_anon_dim.syn +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_array.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_array.cdl deleted file mode 100644 index ea901a8db6..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_array.cdl +++ /dev/null @@ -1,39 +0,0 @@ -netcdf test_atomic_array { -types: - opaque(8) o_t; - byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, - Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, - Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, - Missing = 127} ; -dimensions: - d1 = 1; - d2 = 2; - d3 = 3; - d4 = 4; - d5 = 5; -variables: - ubyte vu8(d2,d3); - short v16(d4); - uint vu32(d2,d3); - double vd(d2); - char vc(d2); - string vs(d2,d2); - o_t vo(d1,d2); - cloud_class_t primary_cloud(d5) ; - cloud_class_t primary_cloud:_FillValue = Missing ; - -data: - vu8 = - 255, 1, 2, - 3, 4, 5 ; - v16 = 1, 2, 3, 4 ; - vu32 = - 5, 4, 3, - 2, 1, 0 ; - vd = 17.9, 1024.8 ; - vc = '@', '&' ; - vs = "hello\tworld", "\r\n", "Καλημέα", "abc" ; - vo = - 0X0123456789ABCDEF, 0XABCDEF0000000000 ; - primary_cloud = Clear, Stratus, Clear, Cumulonimbus, _ ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_array.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_array.nc deleted file mode 100644 index 26cb578f8a..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_array.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_array.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_array.ncdump deleted file mode 100644 index 2a9d0f1966..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_array.ncdump +++ /dev/null @@ -1,48 +0,0 @@ -netcdf test_atomic_array { -types: - opaque(8) o_t ; - byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, - Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, - Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, - Missing = 127} ; -dimensions: - d1 = 1 ; - d2 = 2 ; - d3 = 3 ; - d4 = 4 ; - d5 = 5 ; -variables: - ubyte vu8(d2, d3) ; - short v16(d4) ; - uint vu32(d2, d3) ; - double vd(d2) ; - char vc(d2) ; - string vs(d2, d2) ; - o_t vo(d1, d2) ; - cloud_class_t primary_cloud(d5) ; - cloud_class_t primary_cloud:_FillValue = Missing ; -data: - - vu8 = - 255, 1, 2, - 3, 4, 5 ; - - v16 = 1, 2, 3, 4 ; - - vu32 = - 5, 4, 3, - 2, 1, 0 ; - - vd = 17.9, 1024.8 ; - - vc = "@&" ; - - vs = - "hello\tworld", "\r\n", - "Καλημέα", "abc" ; - - vo = - 0X0123456789ABCDEF, 0XABCDEF0000000000 ; - - primary_cloud = Clear, Stratus, Clear, Cumulonimbus, _ ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_array.syn b/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_array.syn deleted file mode 100644 index 86d46ceb7d..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_array.syn +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_types.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_types.cdl deleted file mode 100644 index d43301a201..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_types.cdl +++ /dev/null @@ -1,42 +0,0 @@ -netcdf test_atomic_types { -types: - opaque(8) o_t; - byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, - Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, - Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, - Missing = 127} ; -variables: - byte v8; - ubyte vu8; - short v16; - ushort vu16; - int v32; - uint vu32; - int64 v64; - uint64 vu64; - float vf; - double vd; - char vc; - string vs; - o_t vo; - cloud_class_t primary_cloud; - cloud_class_t primary_cloud:_FillValue = Missing ; - cloud_class_t secondary_cloud; - cloud_class_t secondary_cloud:_FillValue = Missing ; -data: - v8 = -128; - vu8 = 255; - v16 = -32768; - vu16 = 65535; - v32 = 2147483647; - vu32 = 4294967295; - v64 = 9223372036854775807; - vu64 = 18446744073709551615; - vf = 3.1415926535897932384626433832795; - vd = 3.141592653589793238462643383279502884197169399375105820974944592; - vc = '@'; - vs = "hello\tworld"; - vo = 0x0123456789abcdef; - primary_cloud = Stratus; - secondary_cloud = _; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_types.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_types.nc deleted file mode 100644 index 066dd89354..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_types.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_types.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_types.ncdump deleted file mode 100644 index dd4d209c48..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_types.ncdump +++ /dev/null @@ -1,57 +0,0 @@ -netcdf test_atomic_types { -types: - opaque(8) o_t ; - byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, - Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, - Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, - Missing = 127} ; -variables: - byte v8 ; - ubyte vu8 ; - short v16 ; - ushort vu16 ; - int v32 ; - uint vu32 ; - int64 v64 ; - uint64 vu64 ; - float vf ; - double vd ; - char vc ; - string vs ; - o_t vo ; - cloud_class_t primary_cloud ; - cloud_class_t primary_cloud:_FillValue = Missing ; - cloud_class_t secondary_cloud ; - cloud_class_t secondary_cloud:_FillValue = Missing ; -data: - - v8 = -128 ; - - vu8 = 255 ; - - v16 = -32768 ; - - vu16 = _ ; - - v32 = 2147483647 ; - - vu32 = _ ; - - v64 = 9223372036854775807 ; - - vu64 = 18446744073709551615 ; - - vf = 3.141593 ; - - vd = 3.14159265358979 ; - - vc = "@" ; - - vs = "hello\tworld" ; - - vo = 0X0123456789ABCDEF ; - - primary_cloud = Stratus ; - - secondary_cloud = _ ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_types.syn b/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_types.syn deleted file mode 100644 index d6f19ef663..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_atomic_types.syn +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_enum.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_enum.cdl deleted file mode 100644 index 6cd1ceb34b..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_enum.cdl +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_enum { -types: - byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, - Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, - Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, - Missing = 127} ; -variables: - cloud_class_t primary_cloud; - cloud_class_t primary_cloud:_FillValue = Missing ; -data: - primary_cloud = Stratus; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_enum.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_enum.nc deleted file mode 100644 index 39a1db3688..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_enum.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_enum.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_enum.ncdump deleted file mode 100644 index 7a7ca86e1b..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_enum.ncdump +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test_enum { -types: - byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, - Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, - Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, - Missing = 127} ; -variables: - cloud_class_t primary_cloud ; - cloud_class_t primary_cloud:_FillValue = Missing ; -data: - - primary_cloud = Stratus ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_enum1.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_enum1.cdl deleted file mode 100644 index da9c770a8b..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_enum1.cdl +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_enum1 { -types: - byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, - Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, - Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, - Missing = 127} ; -variables: - cloud_class_t primary_cloud; - cloud_class_t primary_cloud:_FillValue = Missing ; -data: - primary_cloud = Stratus; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_enum1.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_enum1.nc deleted file mode 100644 index 39a1db3688..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_enum1.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_enum1.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_enum1.ncdump deleted file mode 100644 index 7aea061a3b..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_enum1.ncdump +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test_enum1 { -types: - byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, - Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, - Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, - Missing = 127} ; -variables: - cloud_class_t primary_cloud ; - cloud_class_t primary_cloud:_FillValue = Missing ; -data: - - primary_cloud = Stratus ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_enum_2.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_enum_2.cdl deleted file mode 100644 index ef6ab50d1d..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_enum_2.cdl +++ /dev/null @@ -1,15 +0,0 @@ -// Test cross group enum references -netcdf test_enum_2 { - types: - byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, - Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, - Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, - Missing = 127} ; - group: h { - variables: - /cloud_class_t primary_cloud; - /cloud_class_t primary_cloud:_FillValue = Missing ; - data: - primary_cloud = Stratus; - } -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_enum_2.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_enum_2.ncdump deleted file mode 100644 index b651551733..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_enum_2.ncdump +++ /dev/null @@ -1,16 +0,0 @@ -netcdf test_enum_2 { -types: - byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, - Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, - Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, - Missing = 127} ; - -group: h { - variables: - cloud_class_t primary_cloud ; - cloud_class_t primary_cloud:_FillValue = Missing ; - data: - - primary_cloud = Stratus ; - } // group h -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_enum_array.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_enum_array.cdl deleted file mode 100644 index d395990b64..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_enum_array.cdl +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test_enum_array { -types: - byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, - Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, - Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, - Missing = 127} ; -dimensions: - d5 = 5; -variables: - cloud_class_t primary_cloud(d5); - cloud_class_t primary_cloud:_FillValue = Missing ; -data: - primary_cloud = Clear, Stratus, Clear, Cumulonimbus, _ ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_enum_array.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_enum_array.nc deleted file mode 100644 index c6b4a2f388..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_enum_array.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_enum_array.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_enum_array.ncdump deleted file mode 100644 index 1c5944620a..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_enum_array.ncdump +++ /dev/null @@ -1,15 +0,0 @@ -netcdf test_enum_array { -types: - byte enum cloud_class_t {Clear = 0, Cumulonimbus = 1, Stratus = 2, - Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, - Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, - Missing = 127} ; -dimensions: - d5 = 5 ; -variables: - cloud_class_t primary_cloud(d5) ; - cloud_class_t primary_cloud:_FillValue = Missing ; -data: - - primary_cloud = Clear, Stratus, Clear, Cumulonimbus, _ ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_fill.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_fill.cdl deleted file mode 100644 index 7d2af998fc..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_fill.cdl +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test_fill { -variables: - ubyte uv8; - short v16; - uint uv32; - uv32:_FillValue=17; -data: - uv8 = 240; - v16 = 32700; - uv32 = 111000; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_fill.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_fill.nc deleted file mode 100644 index 35e817fd5a..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_fill.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_fill.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_fill.ncdump deleted file mode 100644 index 5ca0494ef7..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_fill.ncdump +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test_fill { -variables: - ubyte uv8 ; - short v16 ; - uint uv32 ; - uv32:_FillValue = 17U ; -data: - - uv8 = 240 ; - - v16 = 32700 ; - - uv32 = 111000 ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_groups1.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_groups1.cdl deleted file mode 100644 index bde2677083..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_groups1.cdl +++ /dev/null @@ -1,35 +0,0 @@ -netcdf test_groups1 { -dimensions: - dim1 = 5 ; - -group: g { - dimensions: - dim2 = 3 ; - - group: h { - dimensions: - dim3 = 7 ; - variables: - int v1(dim1); - float v2(dim2); - data: - - v1 = -876354855, -1761252264, 1723477387, -46827465, 1475147969; - - v2 = 12, -100, _ ; - } // group h - - group: i { - dimensions: - dim3 = 7 ; - variables: - int v1(dim1); - float v3(dim3); - data: - - v1 = 2, 3, 5, 7, 11 ; - - v3 = 23, 29, 19, 31, 17, 37, 13 ; - } // group i -} // group g -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_groups1.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_groups1.nc deleted file mode 100644 index b4fe34704f..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_groups1.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_groups1.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_groups1.ncdump deleted file mode 100644 index d351478dbe..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_groups1.ncdump +++ /dev/null @@ -1,35 +0,0 @@ -netcdf test_groups1 { -dimensions: - dim1 = 5 ; - -group: g { - dimensions: - dim2 = 3 ; - - group: h { - dimensions: - dim3 = 7 ; - variables: - int v1(dim1) ; - float v2(dim2) ; - data: - - v1 = -876354855, -1761252264, 1723477387, -46827465, 1475147969 ; - - v2 = 12, -100, _ ; - } // group h - - group: i { - dimensions: - dim3 = 7 ; - variables: - int v1(dim1) ; - float v3(dim3) ; - data: - - v1 = 2, 3, 5, 7, 11 ; - - v3 = 23, 29, 19, 31, 17, 37, 13 ; - } // group i - } // group g -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_misc1.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_misc1.nc deleted file mode 100644 index 36fbab844d..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_misc1.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_one_var.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_one_var.cdl deleted file mode 100644 index f5edd1268f..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_one_var.cdl +++ /dev/null @@ -1,6 +0,0 @@ -netcdf test_one_var { -variables: - int t; -data: - t = 17; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_one_var.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_one_var.nc deleted file mode 100644 index 4169d2d296..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_one_var.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_one_var.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_one_var.ncdump deleted file mode 100644 index f4ab177bd6..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_one_var.ncdump +++ /dev/null @@ -1,7 +0,0 @@ -netcdf test_one_var { -variables: - int t ; -data: - - t = 17 ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_one_vararray.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_one_vararray.cdl deleted file mode 100644 index 78d1ef14de..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_one_vararray.cdl +++ /dev/null @@ -1,8 +0,0 @@ -netcdf test_one_vararray { -dimensions: - d2 = 2; -variables: - int t(d2); -data: - t = 17, 37; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_one_vararray.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_one_vararray.ncdump deleted file mode 100644 index 964677c450..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_one_vararray.ncdump +++ /dev/null @@ -1,9 +0,0 @@ -netcdf test_one_vararray { -dimensions: - d2 = 2 ; -variables: - int t(d2) ; -data: - - t = 17, 37 ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_opaque.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_opaque.cdl deleted file mode 100644 index 5cc4e7abb3..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_opaque.cdl +++ /dev/null @@ -1,8 +0,0 @@ -netcdf test_opaque { -types: - opaque(8) o_t; -variables: - o_t vo1; -data: - vo1 = 0X0123456789ABCDEF ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_opaque.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_opaque.nc deleted file mode 100644 index ae6b866e9d..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_opaque.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_opaque.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_opaque.ncdump deleted file mode 100644 index 97de1aedbf..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_opaque.ncdump +++ /dev/null @@ -1,9 +0,0 @@ -netcdf test_opaque { -types: - opaque(8) o_t ; -variables: - o_t vo1 ; -data: - - vo1 = 0X0123456789ABCDEF ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_opaque_array.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_opaque_array.cdl deleted file mode 100644 index bd33119964..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_opaque_array.cdl +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_opaque_array { -types: - opaque(8) o_t; -dimensions: - d2 = 2; -variables: - o_t vo2(d2,d2); -data: - vo2 = - 0X0123456789ABCDEF, 0XABCDEF0000000000, - 0XFEDCBA9876543210, 0XFEDCBA9999999999; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_opaque_array.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_opaque_array.ncdump deleted file mode 100644 index 4a7e2f1825..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_opaque_array.ncdump +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test_opaque_array { -types: - opaque(8) o_t ; -dimensions: - d2 = 2 ; -variables: - o_t vo2(d2, d2) ; -data: - - vo2 = - 0X0123456789ABCDEF, 0XABCDEF0000000000, - 0XFEDCBA9876543210, 0XFEDCBA9999999999 ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_sequence_1.syn b/dap4/d4tests/src/test/data/resources/testfiles/test_sequence_1.syn deleted file mode 100644 index 355f652977..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_sequence_1.syn +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_sequence_2.syn b/dap4/d4tests/src/test/data/resources/testfiles/test_sequence_2.syn deleted file mode 100644 index 4aa6576faf..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_sequence_2.syn +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct1.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_struct1.cdl deleted file mode 100644 index 005f897c52..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_struct1.cdl +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test_struct_type { - types: - compound c_t { - int x ; - int y ; - }; // c_t -variables: - c_t s; -data: - s = {1,-2}; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct1.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_struct1.nc deleted file mode 100644 index 2a988dc2fe..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_struct1.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct1.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_struct1.ncdump deleted file mode 100644 index 1b2c36e6f7..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_struct1.ncdump +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_struct1 { -types: - compound c_t { - int x ; - int y ; - }; // c_t -variables: - c_t s ; -data: - - s = {1, -2} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_array.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_array.cdl deleted file mode 100644 index bc5f723006..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_array.cdl +++ /dev/null @@ -1,18 +0,0 @@ -netcdf test_struct_array { -types: - compound c_t { - int x ; - int y ; - }; // c_t -dimensions: - dx = 4; - dy = 3; -variables: - c_t s(dx,dy); -data: - s = -/*[0][0..2]*/ {1, -1}, {17, 37}, {-32767, 32767}, -/*[1][0..2]*/ {-1, 3}, {-2, 2}, {-3, 1}, -/*[2][0..2]*/ {-4, 12}, {-8, 8}, {-12, 4}, -/*[3][0..2]*/ {-5, 15}, {-10, 10}, {-15, 5} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_array.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_array.nc deleted file mode 100644 index 00be0b7551..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_array.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_array.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_array.ncdump deleted file mode 100644 index c306c05595..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_array.ncdump +++ /dev/null @@ -1,19 +0,0 @@ -netcdf test_struct_array { -types: - compound c_t { - int x ; - int y ; - }; // c_t -dimensions: - dx = 4 ; - dy = 3 ; -variables: - c_t s(dx, dy) ; -data: - - s = - {1, -1}, {17, 37}, {-32767, 32767}, - {-1, 3}, {-2, 2}, {-3, 1}, - {-4, 12}, {-8, 8}, {-12, 4}, - {-5, 15}, {-10, 10}, {-15, 5} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_array.syn b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_array.syn deleted file mode 100644 index dfe5cf7484..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_array.syn +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested.cdl deleted file mode 100644 index 399d8954ef..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested.cdl +++ /dev/null @@ -1,15 +0,0 @@ -netcdf test_struct_nested { - types: - compound s1_t { - int x ; - int y ; - }; // s1_t - compound s2_t { - s1_t field1 ; - s1_t field2 ; - }; // s2_t -variables: - s2_t x; -data: - x = {{1,-2}, {255, 90}}; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested.hdf5 b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested.hdf5 deleted file mode 100644 index f49856fa34..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested.hdf5 and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested.nc deleted file mode 100644 index 42f2e6a7ea..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested.ncdump deleted file mode 100644 index 16c71d22bf..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested.ncdump +++ /dev/null @@ -1,16 +0,0 @@ -netcdf test_struct_nested { -types: - compound s1_t { - int x ; - int y ; - }; // s1_t - compound s2_t { - s1_t field1 ; - s1_t field2 ; - }; // s2_t -variables: - s2_t x ; -data: - - x = {{1, -2}, {255, 90}} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested3.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested3.cdl deleted file mode 100644 index e52eba8179..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested3.cdl +++ /dev/null @@ -1,16 +0,0 @@ -netcdf test_struct_nested3 { - types: - compound s1_t { - int field1 ; - }; // s1_t - compound s2_t { - s1_t field2 ; - }; // s2_t - compound s3_t { - s2_t field3 ; - }; // s2_t -variables: - s3_t x; -data: - x = {{{17}}} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested3.hdf5 b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested3.hdf5 deleted file mode 100644 index 7e0173c94a..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested3.hdf5 and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested3.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested3.nc deleted file mode 100644 index c8cc68e0d6..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested3.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested3.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested3.ncdump deleted file mode 100644 index a3a6cb40e2..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_nested3.ncdump +++ /dev/null @@ -1,17 +0,0 @@ -netcdf test_struct_nested3 { -types: - compound s1_t { - int field1 ; - }; // s1_t - compound s2_t { - s1_t field2 ; - }; // s2_t - compound s3_t { - s2_t field3 ; - }; // s3_t -variables: - s3_t x ; -data: - - x = {{{17}}} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_type.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_type.cdl deleted file mode 100644 index 005f897c52..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_type.cdl +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test_struct_type { - types: - compound c_t { - int x ; - int y ; - }; // c_t -variables: - c_t s; -data: - s = {1,-2}; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_type.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_type.nc deleted file mode 100644 index 2a988dc2fe..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_type.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_type.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_struct_type.ncdump deleted file mode 100644 index 6fc0c77b50..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_struct_type.ncdump +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_struct_type { -types: - compound c_t { - int x ; - int y ; - }; // c_t -variables: - c_t s ; -data: - - s = {1, -2} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_test.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_test.cdl deleted file mode 100644 index 684d1c5002..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_test.cdl +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test_test { - -types: - byte enum enum_t {c1=1, c2=2, c3=3}; - -variables: - enum_t v1; - -data: - v1 = c1; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_test.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_test.nc deleted file mode 100644 index 56638925f8..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_test.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_test.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_test.ncdump deleted file mode 100644 index 936c3cfeef..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_test.ncdump +++ /dev/null @@ -1,9 +0,0 @@ -netcdf test_test { -types: - byte enum enum_t {c1 = 1, c2 = 2, c3 = 3} ; -variables: - enum_t v1 ; -data: - - v1 = c1 ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_unlim.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_unlim.nc deleted file mode 100644 index f362f967fb..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_unlim.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_unlim1.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_unlim1.cdl deleted file mode 100644 index e300442837..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_unlim1.cdl +++ /dev/null @@ -1,27 +0,0 @@ -netcdf test_unlim1 { -dimensions: - lat = 3 ; - lon = 2 ; - time = UNLIMITED ; // (2 currently) -variables: - float lat(lat) ; - lat:units = "degrees_north" ; - float lon(lon) ; - lon:units = "degrees_east" ; - double time(time) ; - time:units = "seconds since 2009-01-01" ; - float pr(time, lat, lon) ; - pr:standard_name = "air_pressure_at_sea_level" ; - pr:units = "hPa" ; - -// global attributes: - :title = "example for workshop" ; -data: - pr = - 0, 1, - 2, 3, - 4, 5, - 10, 11, - 12, 13, - 14, 15 ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_unlim1.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_unlim1.nc deleted file mode 100644 index 5b92931e63..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_unlim1.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_unlim1.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_unlim1.ncdump deleted file mode 100644 index da7d31a211..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_unlim1.ncdump +++ /dev/null @@ -1,34 +0,0 @@ -netcdf test_unlim1 { -dimensions: - lat = 3 ; - lon = 2 ; - time = UNLIMITED ; // (2 currently) -variables: - float lat(lat) ; - lat:units = "degrees_north" ; - float lon(lon) ; - lon:units = "degrees_east" ; - double time(time) ; - time:units = "seconds since 2009-01-01" ; - float pr(time, lat, lon) ; - pr:standard_name = "air_pressure_at_sea_level" ; - pr:units = "hPa" ; - -// global attributes: - :title = "example for workshop" ; -data: - - lat = _, _, _ ; - - lon = _, _ ; - - time = _, _ ; - - pr = - 0, 1, - 2, 3, - 4, 5, - 10, 11, - 12, 13, - 14, 15 ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_utf8.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_utf8.cdl deleted file mode 100644 index 14025f5a36..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_utf8.cdl +++ /dev/null @@ -1,8 +0,0 @@ -netcdf test_utf8 { -dimensions: - d2 = 2; -variables: - string vs(d2); -data: - vs = "Καλημέα" , "abc"; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_utf8.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_utf8.ncdump deleted file mode 100644 index d9429c1be3..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_utf8.ncdump +++ /dev/null @@ -1,9 +0,0 @@ -netcdf test_utf8 { -dimensions: - d2 = 2 ; -variables: - string vs(d2) ; -data: - - vs = "Καλημέα", "abc" ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen1.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen1.cdl deleted file mode 100644 index 3ec2f06543..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen1.cdl +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test_vlen1 { - -types: - int(*) vlen_t; - -variables: - vlen_t x; - -data: - x = {1, 3, 5, 7}; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen1.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen1.ncdump deleted file mode 100644 index 68140f424e..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen1.ncdump +++ /dev/null @@ -1,9 +0,0 @@ -netcdf test_vlen1 { -types: - int(*) vlen_t ; -variables: - vlen_t x ; -data: - - x = {1, 3, 5, 7} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen10.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen10.cdl deleted file mode 100644 index ebdf6ce624..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen10.cdl +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test_vlen10 { - -types: - compound c_t {int x; float y;}; - c_t(*) v_t; - -variables: - v_t v; - -data: - - v = {{17,30.7}, {19,101.1}}; -} - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen10.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen10.nc deleted file mode 100644 index eeb02b6351..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen10.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen10.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen10.ncdump deleted file mode 100644 index 432a625790..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen10.ncdump +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test_vlen10 { -types: - compound c_t { - int x ; - float y ; - }; // c_t - c_t(*) v_t ; -variables: - v_t v ; -data: - - v = {{17, 30.7}, {19, 101.1}} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen11.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen11.cdl deleted file mode 100644 index 98c0575603..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen11.cdl +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test_vlen11 { - -types: - int(*) v1_t; - v1_t(*) v2_t; - -variables: - v2_t v; - -data: - v = {{1, 3, 5, 7},{100,200}} ; -} - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen11.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen11.ncdump deleted file mode 100644 index 806ec725c1..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen11.ncdump +++ /dev/null @@ -1,10 +0,0 @@ -netcdf test_vlen11 { -types: - int(*) v1_t ; - v1_t(*) v2_t ; -variables: - v2_t v ; -data: - - v = {{1, 3, 5, 7}, {100, 200}} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen2.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen2.cdl deleted file mode 100644 index 8e3a578c18..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen2.cdl +++ /dev/null @@ -1,15 +0,0 @@ -netcdf test_vlen2 { - -types: - int(*) vlen_t; - -dimensions: - d3=3; - d2=2; - -variables: - vlen_t x(d3,d2); - -data: - x = {1, 3, 5, 7}, {100,200}, {-1,-2},{1, 3, 5, 7}, {100,200}, {-1,-2}; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen2.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen2.nc deleted file mode 100644 index dd2d4a2f1e..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen2.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen2.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen2.ncdump deleted file mode 100644 index 0398d71252..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen2.ncdump +++ /dev/null @@ -1,15 +0,0 @@ -netcdf test_vlen2 { -types: - int(*) vlen_t ; -dimensions: - d3 = 3 ; - d2 = 2 ; -variables: - vlen_t x(d3, d2) ; -data: - - x = - {1, 3, 5, 7}, {100, 200}, - {-1, -2}, {1, 3, 5, 7}, - {100, 200}, {-1, -2} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen3.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen3.cdl deleted file mode 100644 index a4365fe4b9..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen3.cdl +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test_vlen3 { - -types: - int(*) v_t; - compound c_t {v_t f1;}; - -variables: - c_t v1; - -data: - v1 = {{1, 3, 5, 7}} ; -} - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen3.hdf5 b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen3.hdf5 deleted file mode 100644 index 2d3be72508..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen3.hdf5 and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen3.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen3.ncdump deleted file mode 100644 index 84e768b57f..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen3.ncdump +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_vlen3 { -types: - int(*) v_t ; - compound c_t { - v_t f1 ; - }; // c_t -variables: - c_t v1 ; -data: - - v1 = {{1, 3, 5, 7}} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen4.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen4.cdl deleted file mode 100644 index b6db7ff2e7..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen4.cdl +++ /dev/null @@ -1,13 +0,0 @@ -netcdf test_vlen4 { - -types: - int(*) v_t; - compound c_t {v_t f1(2);}; - -variables: - c_t v1; - -data: - v1 = {{{1, 3, 5, 7},{100,200}}} ; -} - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen4.hdf5 b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen4.hdf5 deleted file mode 100644 index cf0654cd89..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen4.hdf5 and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen4.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen4.ncdump deleted file mode 100644 index 3f3e8ac2c4..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen4.ncdump +++ /dev/null @@ -1,12 +0,0 @@ -netcdf test_vlen4 { -types: - int(*) v_t ; - compound c_t { - v_t f1(2) ; - }; // c_t -variables: - c_t v1 ; -data: - - v1 = {{{1, 3, 5, 7}, {100, 200}}} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen5.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen5.cdl deleted file mode 100644 index 11d8efa54a..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen5.cdl +++ /dev/null @@ -1,16 +0,0 @@ -netcdf test_vlen5 { - -types: - int(*) v_t; - compound c_t {v_t v;}; - -dimensions: - d2=2; - -variables: - c_t v1(d2); - -data: - v1 = {{1, 3, 5, 7}},{{100,200}} ; -} - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen5.hdf5 b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen5.hdf5 deleted file mode 100644 index cd54563424..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen5.hdf5 and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen5.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen5.nc deleted file mode 100644 index 95343fff4f..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen5.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen5.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen5.ncdump deleted file mode 100644 index aaf9eec519..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen5.ncdump +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test_vlen5 { -types: - int(*) v_t ; - compound c_t { - v_t v ; - }; // c_t -dimensions: - d2 = 2 ; -variables: - c_t v1(d2) ; -data: - - v1 = {{1, 3, 5, 7}}, {{100, 200}} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen6.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen6.cdl deleted file mode 100644 index b116583de5..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen6.cdl +++ /dev/null @@ -1,16 +0,0 @@ -netcdf test_vlen6 { - -types: - int(*) v_t; - -dimensions: - d=2; - -variables: - v_t v1(d); - -data: - - v1 = {1,3,5,7}, {17,19} ; -} - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen6.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen6.ncdump deleted file mode 100644 index bbe124ecaf..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen6.ncdump +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test_vlen6 { -types: - int(*) v_t ; -dimensions: - d = 2 ; -variables: - v_t v1(d) ; -data: - - v1 = {1, 3, 5, 7}, {17, 19} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen7.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen7.cdl deleted file mode 100644 index 3711750729..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen7.cdl +++ /dev/null @@ -1,16 +0,0 @@ -netcdf test_vlen7 { - -types: - int(*) v_t; - -dimensions: - d=1; - -variables: - v_t v1(d); - -data: - - v1 = {17,19,21} ; -} - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen7.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen7.ncdump deleted file mode 100644 index 8826f39f77..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen7.ncdump +++ /dev/null @@ -1,11 +0,0 @@ -netcdf test_vlen7 { -types: - int(*) v_t ; -dimensions: - d = 1 ; -variables: - v_t v1(d) ; -data: - - v1 = {17, 19, 21} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen8.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen8.cdl deleted file mode 100644 index f7522a93dd..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen8.cdl +++ /dev/null @@ -1,19 +0,0 @@ -netcdf test_vlen8 { - -types: - int(*) v_t; - -dimensions: - d1=2; - d2=2; - -variables: - v_t v1(d1,d2); - -data: - - v1 = - {1,3,5,7}, {17,19}, - {11,33,55,77}, {717,919}; -} - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen8.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen8.nc deleted file mode 100644 index 9546ef1c64..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen8.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen8.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen8.ncdump deleted file mode 100644 index c498cb64f5..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen8.ncdump +++ /dev/null @@ -1,14 +0,0 @@ -netcdf test_vlen8 { -types: - int(*) v_t ; -dimensions: - d1 = 2 ; - d2 = 2 ; -variables: - v_t v1(d1, d2) ; -data: - - v1 = - {1, 3, 5, 7}, {17, 19}, - {11, 33, 55, 77}, {717, 919} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen9.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen9.cdl deleted file mode 100644 index 4244c2425c..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen9.cdl +++ /dev/null @@ -1,16 +0,0 @@ -netcdf test_vlen9 { - -types: - compound c_t {int x; float y;}; - c_t(*) v_t; - -dimensions: - d=2; - -variables: - v_t v(d); - -data: - - v = {{17,30.7}}, {{19,101.1},{2,1.0}} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen9.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen9.nc deleted file mode 100644 index 572ed1deaa..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen9.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen9.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_vlen9.ncdump deleted file mode 100644 index 506c9ab6aa..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen9.ncdump +++ /dev/null @@ -1,15 +0,0 @@ -netcdf test_vlen9 { -types: - compound c_t { - int x ; - float y ; - }; // c_t - c_t(*) v_t ; -dimensions: - d = 2 ; -variables: - v_t v(d) ; -data: - - v = {{17, 30.7}}, {{19, 101.1}, {2, 1}} ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_zerodim.cdl b/dap4/d4tests/src/test/data/resources/testfiles/test_zerodim.cdl deleted file mode 100644 index 6afadd0a51..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_zerodim.cdl +++ /dev/null @@ -1,23 +0,0 @@ -netcdf test_zerodim { -dimensions: - lat = 6 ; - lon = 4 ; - time = UNLIMITED ; // (0 currently) - unlim = UNLIMITED ; // (3 currently) -variables: - float lat(lat) ; - lat:units = "degrees_north" ; - float lon(lon) ; - lon:units = "degrees_east" ; - double time(time) ; - time:units = "seconds since 2009-01-01" ; - float pr(time, lat, lon) ; - pr:standard_name = "air_pressure_at_sea_level" ; - pr:units = "hPa" ; - float var(unlim) ; - -// global attributes: - :title = "example for workshop" ; -data: - var = 0, 1, 3 ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_zerodim.nc b/dap4/d4tests/src/test/data/resources/testfiles/test_zerodim.nc deleted file mode 100644 index 85ecf70d96..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_zerodim.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_zerodim.ncdump b/dap4/d4tests/src/test/data/resources/testfiles/test_zerodim.ncdump deleted file mode 100644 index e13baa0d39..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/test_zerodim.ncdump +++ /dev/null @@ -1,28 +0,0 @@ -netcdf test_zerodim { -dimensions: - lat = 6 ; - lon = 4 ; - time = UNLIMITED ; // (0 currently) - unlim = UNLIMITED ; // (3 currently) -variables: - float lat(lat) ; - lat:units = "degrees_north" ; - float lon(lon) ; - lon:units = "degrees_east" ; - double time(time) ; - time:units = "seconds since 2009-01-01" ; - float pr(time, lat, lon) ; - pr:standard_name = "air_pressure_at_sea_level" ; - pr:units = "hPa" ; - float var(unlim) ; - -// global attributes: - :title = "example for workshop" ; -data: - - lat = _, _, _, _, _, _ ; - - lon = _, _, _, _ ; - - var = 0, 1, 3 ; -} diff --git a/dap4/d4tests/src/test/data/resources/testfiles/tst_fills.c b/dap4/d4tests/src/test/data/resources/testfiles/tst_fills.c deleted file mode 100644 index dd7844a837..0000000000 --- a/dap4/d4tests/src/test/data/resources/testfiles/tst_fills.c +++ /dev/null @@ -1,51 +0,0 @@ -/* This is part of the netCDF package. Copyright 2008 University - Corporation for Atmospheric Research/Unidata See COPYRIGHT file for - conditions of use. See www.unidata.ucar.edu for more info. - - Create a test file with default fill values for variables of each type. - - $Id: tst_fills.c,v 1.12 2009/03/17 01:22:42 ed Exp $ -*/ - -#include -#include -#include - -#define FILE_NAME "tst_fills.nc" -#define VAR1 "uv8" -# define TYPE1 NC_UBYTE -# define DATA1 240 -#define VAR2 "v16" -# define TYPE2 NC_SHORT -# define DATA2 32700 -#define VAR3 "uv32" -# define TYPE3 NC_INT -# define FILL3 17 -# define DATA3 111000 - -#define ERR abort() - - -int -main(int argc, char **argv) -{ - int ncid; - int varid1, varid2, varid3; - int fill3 = FILL3; - - printf("\n*** Testing fill values.\n"); - - if (nc_create(FILE_NAME, NC_NETCDF4, &ncid)) ERR; - if (nc_def_var(ncid, VAR1, TYPE1, 0, NULL, &varid1)) ERR; - if (nc_def_var(ncid, VAR2, TYPE2, 0, NULL, &varid2)) ERR; - if (nc_def_var(ncid, VAR3, TYPE3, 0, NULL, &varid3)) ERR; - if (nc_def_var_fill(ncid, varid3, 0, &fill3)) ERR; - - if (nc_enddef(ncid)) ERR; - - {unsigned char data = DATA1; if (nc_put_var(ncid,varid1,&data)) ERR;} - {short data = DATA2; if (nc_put_var(ncid,varid2,&data)) ERR;} - {unsigned int data = DATA3; if (nc_put_var(ncid,varid3,&data)) ERR;} -} - - diff --git a/dap4/d4tests/src/test/data/resources/testfiles/tst_fills.nc b/dap4/d4tests/src/test/data/resources/testfiles/tst_fills.nc deleted file mode 100644 index f45e6600f6..0000000000 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/tst_fills.nc and /dev/null differ diff --git a/dap4/d4tests/src/test/java/dap4/test/DapTestCommon.java b/dap4/d4tests/src/test/java/dap4/test/DapTestCommon.java deleted file mode 100644 index dfe822162b..0000000000 --- a/dap4/d4tests/src/test/java/dap4/test/DapTestCommon.java +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.test; - -import dap4.core.util.DapException; -import dap4.core.util.DapUtil; -import ucar.nc2.NetcdfFile; -import ucar.nc2.jni.netcdf.Nc4prototypes; -import ucar.unidata.util.test.TestDir; -import ucar.unidata.util.test.UnitTestCommon; -import java.io.File; -import java.io.FileFilter; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.List; - -abstract public class DapTestCommon extends UnitTestCommon { - - ////////////////////////////////////////////////// - // Constants - - static final String DEFAULTTREEROOT = "dap4"; - - static public final String FILESERVER = "file://localhost:8080"; - - static public final String CONSTRAINTTAG = "dap4.ce"; - static public final String ORDERTAG = "ucar.littleendian"; - static public final String NOCSUMTAG = "ucar.nochecksum"; - static public final String TRANSLATETAG = "ucar.translate"; - static public final String TESTTAG = "ucar.testing"; - - static final String D4TESTDIRNAME = "d4tests"; - - // Equivalent to the path to the webapp/d4ts for testing purposes - static protected final String DFALTRESOURCEPATH = "/src/test/data/resources"; - static protected Class NC4IOSP = ucar.nc2.jni.netcdf.Nc4Iosp.class; - - static class TestFilter implements FileFilter { - boolean debug; - boolean strip; - String[] extensions; - - public TestFilter(boolean debug, String[] extensions) { - this.debug = debug; - this.strip = strip; - this.extensions = extensions; - } - - public boolean accept(File file) { - boolean ok = false; - if (file.isFile() && file.canRead()) { - // Check for proper extension - String name = file.getName(); - if (name != null) { - for (String ext : extensions) { - if (name.endsWith(ext)) - ok = true; - } - } - if (!ok && debug) - System.err.println("Ignoring: " + file.toString()); - } - return ok; - } - - static void filterfiles(String path, List matches, String... extensions) { - File testdirf = new File(path); - assert (testdirf.canRead()); - TestFilter tf = new TestFilter(DEBUG, extensions); - File[] filelist = testdirf.listFiles(tf); - for (int i = 0; i < filelist.length; i++) { - File file = filelist[i]; - if (file.isDirectory()) - continue; - String fname = DapUtil.canonicalpath(file.getAbsolutePath()); - matches.add(fname); - } - } - } - - ////////////////////////////////////////////////// - // Static variables - - static protected String dap4root = null; - static protected String dap4testroot = null; - static protected String dap4resourcedir = null; - - static { - dap4root = locateDAP4Root(threddsroot); - if (dap4root == null) - System.err.println("Cannot locate /dap4 parent dir"); - dap4testroot = canonjoin(dap4root, D4TESTDIRNAME); - dap4resourcedir = canonjoin(dap4testroot, DFALTRESOURCEPATH); - } - - ////////////////////////////////////////////////// - // Static methods - - - static protected String getD4TestsRoot() { - return dap4testroot; - } - - static protected String getResourceRoot() { - return dap4resourcedir; - } - - static String locateDAP4Root(String threddsroot) { - String root = threddsroot; - if (root != null) - root = root + "/" + DEFAULTTREEROOT; - // See if it exists - File f = new File(root); - if (!f.exists() || !f.isDirectory()) - root = null; - return root; - } - - ////////////////////////////////////////////////// - // Instance variables - - - protected String d4tsserver = null; - - protected String title = "Dap4 Testing"; - - public DapTestCommon() { - this("DapTest"); - } - - public DapTestCommon(String name) { - super(name); - - this.d4tsserver = TestDir.dap4TestServer; - if (DEBUG) - System.err.println("DapTestCommon: d4tsServer=" + d4tsserver); - } - - /** - * Try to get the system properties - */ - protected void setSystemProperties() { - String testargs = System.getProperty("testargs"); - if (testargs != null && testargs.length() > 0) { - String[] pairs = testargs.split("[ ]*[,][ ]*"); - for (String pair : pairs) { - String[] tuple = pair.split("[ ]*[=][ ]*"); - String value = (tuple.length == 1 ? "" : tuple[1]); - if (tuple[0].length() > 0) - System.setProperty(tuple[0], value); - } - } - if (System.getProperty("nodiff") != null) - prop_diff = false; - if (System.getProperty("baseline") != null) - prop_baseline = true; - if (System.getProperty("nogenerate") != null) - prop_generate = false; - if (System.getProperty("debug") != null) - prop_debug = true; - if (System.getProperty("visual") != null) - prop_visual = true; - if (System.getProperty("ascii") != null) - prop_ascii = true; - if (System.getProperty("utf8") != null) - prop_ascii = false; - if (prop_baseline && prop_diff) - prop_diff = false; - prop_controls = System.getProperty("controls", ""); - } - - ////////////////////////////////////////////////// - // Overrideable methods - - ////////////////////////////////////////////////// - // Accessor - - public void setTitle(String title) { - this.title = title; - } - - public String getTitle() { - return this.title; - } - - ////////////////////////////////////////////////// - // Instance Utilities - - public void visual(String header, String captured) { - if (!captured.endsWith("\n")) - captured = captured + "\n"; - // Dump the output for visual comparison - System.err.println("\n" + header + ":"); - System.err.println("---------------"); - System.err.print(captured); - System.err.println("---------------"); - System.err.flush(); - } - - protected void findServer(String path) throws DapException { - String svc = "http://" + this.d4tsserver + "/d4ts"; - if (!checkServer(svc)) - System.err.println("D4TS Server not reachable: " + svc); - // Since we will be accessing it thru NetcdfDataset, we need to change the schema. - d4tsserver = "dap4://" + d4tsserver + "/d4ts"; - } - - ////////////////////////////////////////////////// - - public String getDAP4Root() { - return this.dap4root; - } - - @Override - public String getResourceDir() { - return this.dap4resourcedir; - } - - static protected void testSetup() { - try { - // Always prefer Nc4Iosp over HDF5 - NetcdfFile.iospDeRegister(NC4IOSP); - NetcdfFile.registerIOProviderPreferred(NC4IOSP, ucar.nc2.iosp.hdf5.H5iosp.class); - // Print out the library version - System.err.printf("Netcdf-c library version: %s%n", getCLibraryVersion()); - System.err.flush(); - } catch (Exception e) { - System.err.println("Cannot load ucar.nc2.jni.netcdf.Nc4Iosp"); - } - } - - static void printDir(String path) { - File testdirf = new File(path); - assert (testdirf.canRead()); - File[] filelist = testdirf.listFiles(); - System.err.println("\n*******************"); - System.err.printf("Contents of %s:%n", path); - for (int i = 0; i < filelist.length; i++) { - File file = filelist[i]; - String fname = file.getName(); - System.err.printf("\t%s%s%n", fname, (file.isDirectory() ? "/" : "")); - } - System.err.println("*******************"); - System.err.flush(); - } - - static public String getCLibraryVersion() { - Nc4prototypes nc4 = getCLibrary(); - return (nc4 == null ? "Unknown" : nc4.nc_inq_libvers()); - } - - static public Nc4prototypes getCLibrary() { - try { - Method getclib = NC4IOSP.getMethod("getCLibrary"); - return (Nc4prototypes) getclib.invoke(null); - } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { - return null; - } - } -} - diff --git a/dap4/d4tests/src/test/java/dap4/test/Diff.j b/dap4/d4tests/src/test/java/dap4/test/Diff.j deleted file mode 100644 index 4c516837a1..0000000000 --- a/dap4/d4tests/src/test/java/dap4/test/Diff.j +++ /dev/null @@ -1,794 +0,0 @@ -// Diff -- text file difference utility. -// See full docu-comment at beginning of Diff class. - -/* Copyright (c) Ian F. Darwin, http://www.darwinsys.com/, 1996-2002. - * All rights reserved. Software written by Ian F. Darwin and others. - * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $ - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * Java, the Duke mascot, and all variants of Sun's Java 'steaming coffee cup' - logo are trademarks of Sun Microsystems. Sun's, and James Gosling's, - * pioneering role in inventing and promulgating (and standardizing) the Java - * language and environment is gratefully acknowledged. - * - * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&T, for - * inventing predecessor languages C and C+is also gratefully acknowledged. - */ - -package dap4.test; - -import java.io.*; - - -/** - * This is the info kept per-file. - */ -class fileInfo { - - static final int MAXLINECOUNT = 20000; - - BufferedReader file; /* File handle that is open for read. */ - public int maxLine; /* After input done, # lines in file. */ - node symbol[]; /* The symtab handle of each line. */ - int other[]; /* Map of line# to line# in other file */ - /* ( -1 means don't-know ). */ - /* Allocated AFTER the lines are read. */ - - /** - * Normal constructor with one filename; file is opened and saved. - */ - public fileInfo(String filename) throws Exception { - symbol = new node[MAXLINECOUNT + 2]; - other = null; // allocated later! - file = new BufferedReader(new FileReader(filename)); - } - - public fileInfo(Reader rdr) throws Exception { - symbol = new node[MAXLINECOUNT + 2]; - other = null; // allocated later! - file = new BufferedReader(rdr); - } - - // This is done late, to be same size as # lines in input file. - - void alloc() { - other = new int[symbol.length + 2]; - } -}; - -/** - * diff Text file difference utility. - * ---- Copyright 1987, 1989 by Donald C. Lindsay, - * School of Computer Science, Carnegie Mellon University. - * Copyright 1982 by Symbionics. - * Use without fee is permitted when not for direct commercial - * advantage, and when credit to the source is given. Other uses - * require specific permission. - *

        - * Converted from C to Java by Ian F. Darwin, http://www.darwinsys.com/, January, 1997. - * Copyright 1997, Ian F. Darwin. - *

        - * Conversion is NOT FULLY TESTED. - *

        - * USAGE: diff oldfile newfile - *

        - * This program assumes that "oldfile" and "newfile" are text files. - * The program writes to stdout a description of the changes which would - * transform "oldfile" into "newfile". - *

        - * The printout is in the form of commands, each followed by a block of - * text. The text is delimited by the commands, which are: - *

        - * DELETE AT n - * ..deleted lines - *

        - * INSERT BEFORE n - * ..inserted lines - *

        - * n MOVED TO BEFORE n - * ..moved lines - *

        - * n CHANGED FROM - * ..old lines - * CHANGED TO - * ..newer lines - *

        - * The line numbers all refer to the lines of the oldfile, as they are - * numbered before any commands are applied. - * The text lines are printed as-is, without indentation or prefixing. The - * commands are printed in upper case, with a prefix of ">>>>", so that - * they will stand out. Other schemes may be preferred. - * Files which contain more than MAXLINECOUNT lines cannot be processed. - * This can be fixed by changing "symbol" to a Vector. - * The algorithm is taken from Communications of the ACM, Apr78 (21, 4, 264-), - * "A Technique for Isolating Differences Between Files." - * Ignoring I/O, and ignoring the symbol table, it should take O(N) time. - * This implementation takes fixed space, plus O(U) space for the symbol - * table (where U is the number of unique lines). Methods exist to change - * the fixed space to O(N) space. - * Note that this is not the only interesting file-difference algorithm. In - * general, different algorithms draw different conclusions about the - * changes that have been made to the oldfile. This algorithm is sometimes - * "more right", particularly since it does not consider a block move to be - * an insertion and a (separate) deletion. However, on some files it will be - * "less right". This is a consequence of the fact that files may contain - * many identical lines (particularly if they are program source). Each - * algorithm resolves the ambiguity in its own way, and the resolution - * is never guaranteed to be "right". However, it is often excellent. - * This program is intended to be pedagogic. Specifically, this program was - * the basis of the Literate Programming column which appeared in the - * Communications of the ACM (CACM), in the June 1989 issue (32, 6, - * 740-755). - * By "pedagogic", I do not mean that the program is gracefully worded, or - * that it showcases language features or its algorithm. I also do not mean - * that it is highly accessible to beginners, or that it is intended to be - * read in full, or in a particular order. Rather, this program is an - * example of one professional's style of keeping things organized and - * maintainable. - * The program would be better if the "print" variables were wrapped into - * a struct. In general, grouping related variables in this way improves - * documentation, and adds the ability to pass the group in argument lists. - * This program is a de-engineered version of a program which uses less - * memory and less time. The article points out that the "symbol" arrays - * can be implemented as arrays of pointers to arrays, with dynamic - * allocation of the subarrays. (In C, macros are very useful for hiding - * the two-level accesses.) In Java, a Vector would be used. This allows an - * extremely large value for MAXLINECOUNT, without dedicating fixed arrays. - * (The "other" array can be allocated after the input phase, when the exact - * sizes are known.) The only slow piece of code is the "strcmp" in the tree - * descent: it can be speeded up by keeping a hash in the tree node, and - * only using "strcmp" when two hashes happen to be equal. - *

        - * Change Log - * ---------- - * 1Jan97 Ian F. Darwin: first working rewrite in Java, based entirely on - * D.C.Lindsay's reasonable C version. - * Changed comments from /***************** to /**, shortened, added - * whitespace, used tabs more, etc. - * 6jul89 D.C.Lindsay, CMU: fixed portability bug. Thanks, Gregg Wonderly. - * Just changed "char ch" to "int ch". - * Also added comment about way to improve code. - * 10jun89 D.C.Lindsay, CMU: posted version created. - * Copyright notice changed to ACM style, and Dept. is now School. - * ACM article referenced in docn. - * 26sep87 D.C.Lindsay, CMU: publication version created. - * Condensed all 1982/83 change log entries. - * Removed all command line options, and supporting code. This - * simplified the input code (no case reduction etc). It also - * simplified the symbol table, which was capable of remembering - * offsets into files (instead of strings), and trusting (!) hash - * values to be unique. - * Removed dynamic allocation of arrays: now fixed static arrays. - * Removed speed optimizations in symtab package. - * Removed string compression/decompression code. - * Recoded to Unix standards from old Lattice/MSDOS standards. - * (This affected only the #include's and the IO.) - * Some renaming of variables, and rewording of comments. - * 1982/83 D.C.Lindsay, Symbionics: created. - * - * @author Ian F. Darwin, Java version - * @author D. C. Lindsay, C version (1982-1987) - * @version Java version 0.9, 1997 - */ - -public class Diff { - - /** - * block len > any possible real block len - */ - final int UNREAL = Integer.MAX_VALUE; - - /** - * Keeps track of information about file1 and file2 - */ - fileInfo oldinfo, newinfo; - - PrintWriter printer = null; - - String identifier = ""; - - - /** - * blocklen is the info about found blocks. It will be set to 0, except - * at the line#s where blocks start in the old file. At these places it - * will be set to the # of lines in the block. During printout , - * this # will be reset to -1 if the block is printed as a MOVE block - * (because the printout phase will encounter the block twice, but - * must only print it once.) - * The array declarations are to MAXLINECOUNT+2 so that we can have two - * extra lines (pseudolines) at line# 0 and line# MAXLINECOUNT+1 - * (or less). - */ - int blocklen[]; - - /** - * main - entry point when used standalone. - * NOTE: no routines return error codes or throw any local - * exceptions. Instead, any routine may complain - * to stderr and then exit with error to the system. - */ - public static void main(String argstrings[]) throws Exception { - if (argstrings.length != 2) { - System.err.println("Usage: diff oldfile newfile"); - System.exit(1); - } - Diff d = new Diff("Diff"); - d.doDiff(argstrings[0], argstrings[1]); - return; - } - - /** - * Construct a Diff object. - */ - public Diff(String id) { - identifier = id; - } - - - /* Do comparison against two Reader streams */ - - public boolean doDiff(Reader oldFile, Reader newFile, Writer out) throws Exception { - this.printer = new PrintWriter(out); - oldinfo = new fileInfo(oldFile); - newinfo = new fileInfo(newFile); - return process(); - } - - public boolean doDiff(Reader oldFile, Reader newFile) throws Exception { - Writer w = new OutputStreamWriter(System.out); - return doDiff(oldFile, newFile, w); - } - - /* Do comparison against two string streams */ - - public boolean doDiff(String data1, String data2, Writer out) throws Exception { - if(data1 == null || data2 == null) return false; - return doDiff(new StringReader(data1), new StringReader(data2), out); - } - - public boolean doDiff(String data1, String data2) throws Exception { - return doDiff(data1, data2, new OutputStreamWriter(System.out)); - } - - boolean process() throws Exception { - /* we don't process until we know both files really do exist. */ - inputscan(oldinfo); - inputscan(newinfo); - - /* Now that we've read all the lines, allocate some arrays. - */ - blocklen = new int[(oldinfo.maxLine > newinfo.maxLine ? - oldinfo.maxLine : newinfo.maxLine) + 2]; - oldinfo.alloc(); - newinfo.alloc(); - - /* Now do the work, and print the results. */ - transform(); - return printout(); - } - - static boolean isBlankLine(String s) - { - int index = 0; - int len = s.length(); - for(index=len-1;index>=0;index--) { - if(" \t\r".indexOf(s.charAt(index)) < 0) return false; - } - return true; - } - - /** - * inputscan Reads the file specified by pinfo.file. - * --------- Places the lines of that file in the symbol table. - * Sets pinfo.maxLine to the number of lines found. - */ - void inputscan(fileInfo pinfo) throws IOException { - String linebuffer; - pinfo.maxLine = 0; - while ((linebuffer = pinfo.file.readLine()) != null) { - if(!isBlankLine(linebuffer)) - storeline(linebuffer, pinfo); - } - } - - /** - * storeline Places line into symbol table. - * --------- Expects pinfo.maxLine initted: increments. - * Places symbol table handle in pinfo.ymbol. - * Expects pinfo is either oldinfo or newinfo. - */ - void storeline(String linebuffer, fileInfo pinfo) { - int linenum = ++pinfo.maxLine; /* note, no line zero */ - if (linenum > fileInfo.MAXLINECOUNT) { - System.err.println("MAXLINECOUNT exceeded, must stop."); - System.exit(1); - } - pinfo.symbol[linenum] = node.addSymbol(this, linebuffer, pinfo == oldinfo, linenum); - } - - /* - * transform - * Analyzes the file differences and leaves its findings in - * the global arrays oldinfo.other, newinfo.other, and blocklen. - * Expects both files in symtab. - * Expects valid "maxLine" and "symbol" in oldinfo and newinfo. - */ - - void transform() { - int oldline, newline; - int oldmax = oldinfo.maxLine + 2; /* Count pseudolines at */ - int newmax = newinfo.maxLine + 2; /* ..front and rear of file */ - - for (oldline = 0; oldline < oldmax; oldline++) - oldinfo.other[oldline] = -1; - for (newline = 0; newline < newmax; newline++) - newinfo.other[newline] = -1; - - scanunique(); /* scan for lines used once in both files */ - scanafter(); /* scan past sure-matches for non-unique blocks */ - scanbefore(); /* scan backwards from sure-matches */ - scanblocks(); /* find the fronts and lengths of blocks */ - } - - /* - * scanunique - * Scans for lines which are used exactly once in each file. - * Expects both files in symtab, and oldinfo and newinfo valid. - * The appropriate "other" array entries are set to the line# in - * the other file. - * Claims pseudo-lines at 0 and XXXinfo.maxLine+1 are unique. - */ - - void scanunique() { - int oldline, newline; - node psymbol; - - for (newline = 1; newline <= newinfo.maxLine; newline++) { - psymbol = newinfo.symbol[newline]; - if (psymbol.symbolIsUnique()) { // 1 use in each file - oldline = psymbol.linenum; - newinfo.other[newline] = oldline; // record 1-1 map - oldinfo.other[oldline] = newline; - } - } - newinfo.other[0] = 0; - oldinfo.other[0] = 0; - newinfo.other[newinfo.maxLine + 1] = oldinfo.maxLine + 1; - oldinfo.other[oldinfo.maxLine + 1] = newinfo.maxLine + 1; - } - - /* - * scanafter - * Expects both files in symtab, and oldinfo and newinfo valid. - * Expects the "other" arrays contain positive #s to indicate - * lines that are unique in both files. - * For each such pair of places, scans past in each file. - * Contiguous groups of lines that match non-uniquely are - * taken to be good-enough matches, and so marked in "other". - * Assumes each other[0] is 0. - */ - - void scanafter() { - int oldline, newline; - - for (newline = 0; newline <= newinfo.maxLine; newline++) { - oldline = newinfo.other[newline]; - if (oldline >= 0) { /* is unique in old & new */ - for (; ;) { /* scan after there in both files */ - if (++oldline > oldinfo.maxLine) break; - if (oldinfo.other[oldline] >= 0) break; - if (++newline > newinfo.maxLine) break; - if (newinfo.other[newline] >= 0) break; - - /* oldline & newline exist, and - aren't already matched */ - - if (newinfo.symbol[newline] != - oldinfo.symbol[oldline]) break; // not same - - newinfo.other[newline] = oldline; // record a match - oldinfo.other[oldline] = newline; - } - } - } - } - - /** - * scanbefore - * As scanafter, except scans towards file fronts. - * Assumes the off-end lines have been marked as a match. - */ - void scanbefore() { - int oldline, newline; - - for (newline = newinfo.maxLine + 1; newline > 0; newline--) { - oldline = newinfo.other[newline]; - if (oldline >= 0) { /* unique in each */ - for (; ;) { - if (--oldline <= 0) break; - if (oldinfo.other[oldline] >= 0) break; - if (--newline <= 0) break; - if (newinfo.other[newline] >= 0) break; - - /* oldline and newline exist, - and aren't marked yet */ - - if (newinfo.symbol[newline] != - oldinfo.symbol[oldline]) break; // not same - - newinfo.other[newline] = oldline; // record a match - oldinfo.other[oldline] = newline; - } - } - } - } - - /** - * scanblocks - Finds the beginnings and lengths of blocks of matches. - * Sets the blocklen array (see definition). - * Expects oldinfo valid. - */ - void scanblocks() { - int oldline, newline; - int oldfront = 0; // line# of front of a block in old, or 0 - int newlast = -1; // newline's value during prev. iteration - - for (oldline = 1; oldline <= oldinfo.maxLine; oldline++) - blocklen[oldline] = 0; - blocklen[oldinfo.maxLine + 1] = UNREAL; // starts a mythical blk - - for (oldline = 1; oldline <= oldinfo.maxLine; oldline++) { - newline = oldinfo.other[oldline]; - if (newline < 0) oldfront = 0; /* no match: not in block */ - else { /* match. */ - if (oldfront == 0) oldfront = oldline; - if (newline != (newlast + 1)) oldfront = oldline; - ++blocklen[oldfront]; - } - newlast = newline; - } - } - - /* The following are global to printout's subsidiary routines */ - // enum{ idle, delete, insert, movenew, moveold, - // same, change } printstatus; - public static final int - idle = 0, delete = 1, insert = 2, movenew = 3, moveold = 4, - same = 5, change = 6; - int printstatus; - boolean anyprinted; - int printoldline, printnewline; // line numbers in old & new file - - /** - * printout - Prints summary to stdout. - * Expects all databuffer structures have been filled out. - * - * @return true if differences detected - */ - boolean printout() { - printstatus = idle; - anyprinted = false; - for (printoldline = printnewline = 1; ;) { - if (printoldline > oldinfo.maxLine) { - newconsume(); - break; - } - if (printnewline > newinfo.maxLine) { - oldconsume(); - break; - } - if (newinfo.other[printnewline] < 0) { - if (oldinfo.other[printoldline] < 0) - showchange(); - else - showinsert(); - } else if (oldinfo.other[printoldline] < 0) - showdelete(); - else if (blocklen[printoldline] < 0) - skipold(); - else if (oldinfo.other[printoldline] == printnewline) - showsame(); - else - showmove(); - } - if (anyprinted == true) println(">>>> "+identifier+": End of differences."); - else println(">>>> "+identifier+": Files are identical."); - return anyprinted; - } - - /* - * newconsume Part of printout. Have run out of old file. - * Print the rest of the new file, as inserts and/or moves. - */ - - void newconsume() { - for (; ;) { - if (printnewline > newinfo.maxLine) - break; /* end of file */ - if (newinfo.other[printnewline] < 0) showinsert(); - else showmove(); - } - } - - /** - * oldconsume Part of printout. Have run out of new file. - * Process the rest of the old file, printing any - * parts which were deletes or moves. - */ - void oldconsume() { - for (; ;) { - if (printoldline > oldinfo.maxLine) - break; /* end of file */ - printnewline = oldinfo.other[printoldline]; - if (printnewline < 0) showdelete(); - else if (blocklen[printoldline] < 0) skipold(); - else showmove(); - } - } - - /** - * showdelete Part of printout. - * Expects printoldline is at a deletion. - */ - void showdelete() { - if (printstatus != delete) - println(">>>> DELETE AT " + printoldline); - printstatus = delete; - oldinfo.symbol[printoldline].showSymbol(); - anyprinted = true; - printoldline++; - } - - /* - * showinsert Part of printout. - * Expects printnewline is at an insertion. - */ - - void showinsert() { - if (printstatus == change) println(">>>> CHANGED TO"); - else if (printstatus != insert) - println(">>>> INSERT BEFORE " + printoldline); - printstatus = insert; - newinfo.symbol[printnewline].showSymbol(); - anyprinted = true; - printnewline++; - } - - /** - * showchange Part of printout. - * Expects printnewline is an insertion. - * Expects printoldline is a deletion. - */ - void showchange() { - if (printstatus != change) - println(">>>> " + printoldline + " CHANGED FROM"); - printstatus = change; - oldinfo.symbol[printoldline].showSymbol(); - anyprinted = true; - printoldline++; - } - - /** - * skipold Part of printout. - * Expects printoldline at start of an old block that has - * already been announced as a move. - * Skips over the old block. - */ - void skipold() { - printstatus = idle; - for (; ;) { - if (++printoldline > oldinfo.maxLine) - break; /* end of file */ - if (oldinfo.other[printoldline] < 0) - break; /* end of block */ - if (blocklen[printoldline] != 0) - break; /* start of another */ - } - } - - /** - * skipnew Part of printout. - * Expects printnewline is at start of a new block that has - * already been announced as a move. - * Skips over the new block. - */ - void skipnew() { - int oldline; - printstatus = idle; - for (; ;) { - if (++printnewline > newinfo.maxLine) - break; /* end of file */ - oldline = newinfo.other[printnewline]; - if (oldline < 0) - break; /* end of block */ - if (blocklen[oldline] != 0) - break; /* start of another */ - } - } - - /** - * showsame Part of printout. - * Expects printnewline and printoldline at start of - * two blocks that aren't to be displayed. - */ - void showsame() { - int count; - printstatus = idle; - if (newinfo.other[printnewline] != printoldline) { - System.err.println("BUG IN LINE REFERENCING"); - System.exit(1); - } - count = blocklen[printoldline]; - printoldline += count; - printnewline += count; - } - - /** - * showmove Part of printout. - * Expects printoldline, printnewline at start of - * two different blocks ( a move was done). - */ - void showmove() { - int oldblock = blocklen[printoldline]; - int newother = newinfo.other[printnewline]; - int newblock = blocklen[newother]; - - if (newblock < 0) skipnew(); // already printed. - else if (oldblock >= newblock) { // assume new's blk moved. - blocklen[newother] = -1; // stamp block as "printed". - println(">>>> " + newother + - " THRU " + (newother + newblock - 1) + - " MOVED TO BEFORE " + printoldline); - for (; newblock > 0; newblock--, printnewline++) - newinfo.symbol[printnewline].showSymbol(); - anyprinted = true; - printstatus = idle; - - } else /* assume old's block moved */ - skipold(); /* target line# not known, display later */ - } - - /** - * Convenience wrapper for println - */ - public void println(String s) { - printer.println(s); - printer.flush(); - } - -}; // end of main class! - -/** - * Class "node". The symbol table routines in this class all - * understand the symbol table format, which is a binary tree. - * The methods are: addSymbol, symbolIsUnique, showSymbol. - */ -class node { /* the tree is made up of these nodes */ - - static Diff diff = null; - static node panchor = null; /* symtab is a tree hung from this */ - static final int freshnode = 0, - oldonce = 1, newonce = 2, bothonce = 3, other = 4; - - node pleft, pright; - int linenum; - int /* enum linestates */ linestate; - String line; - - /** - * Construct a new symbol table node and fill in its fields. - * - * @param pline string A line of the text file - */ - public node(String pline) { - pleft = pright = null; - linestate = freshnode; - /* linenum field is not always valid */ - line = pline; - } - - /** - * matchsymbol Searches tree for a match to the line. - * - * @param pline String pline, a line of text - * If node's linestate == freshnode, then created the node. - */ - static node matchsymbol(String pline) { - int comparison; - node pnode = panchor; - if (panchor == null) return panchor = new node(pline); - for (; ;) { - comparison = linecompare(pnode.line,pline); - if (comparison == 0) return pnode; /* found */ - - if (comparison < 0) { - if (pnode.pleft == null) { - pnode.pleft = new node(pline); - return pnode.pleft; - } - pnode = pnode.pleft; - } - if (comparison > 0) { - if (pnode.pright == null) { - pnode.pright = new node(pline); - return pnode.pright; - } - pnode = pnode.pright; - } - } - /* NOTE: There are return stmts, so control does not get here. */ - } - - /** - * addSymbol(String pline) - Saves line into the symbol table. - * Returns a handle to the symtab entry for that unique line. - * If inoldfile nonzero, then linenum is remembered. - */ - static node addSymbol(Diff diff, String pline, boolean inoldfile, int linenum) { - node.diff = diff; - node pnode; - pnode = matchsymbol(pline); /* find the node in the tree */ - if (pnode.linestate == freshnode) { - pnode.linestate = inoldfile ? oldonce : newonce; - } else { - if ((pnode.linestate == oldonce && !inoldfile) || - (pnode.linestate == newonce && inoldfile)) - pnode.linestate = bothonce; - else pnode.linestate = other; - } - if (inoldfile) pnode.linenum = linenum; - return pnode; - } - - /** - * symbolIsUnique Arg is a ptr previously returned by addSymbol. - * -------------- Returns true if the line was added to the - * symbol table exactly once with inoldfile true, - * and exactly once with inoldfile false. - */ - boolean symbolIsUnique() { - return (linestate == bothonce); - } - - /** - * showSymbol Prints the line to stdout. - */ - void showSymbol() { - diff.printer.println(line); - } - static String compact(String line){ - // trim and remove return characters - String[] pieces = line.trim().split("\r"); - line = ""; for(String s: pieces) line = line +s; - // Break line on whitespace and compact - pieces = line.split("[ \t\n][ \t\n]*"); - line = ""; for(String s: pieces) line = line + s; - return line; - } - - static int linecompare(String line1, String line2) - { - return compact(line1).compareToIgnoreCase(compact(line2)); - } - -} diff --git a/dap4/d4tests/src/test/java/dap4/test/TestCDMClient.java b/dap4/d4tests/src/test/java/dap4/test/TestCDMClient.java deleted file mode 100644 index 63fea6f332..0000000000 --- a/dap4/d4tests/src/test/java/dap4/test/TestCDMClient.java +++ /dev/null @@ -1,326 +0,0 @@ -/* - * Copyright 2016, University Corporation for Atmospheric Research - * See the LICENSE.txt file for more information. - */ - -package dap4.test; - -import dap4.core.util.DapUtil; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ucar.nc2.dataset.NetcdfDataset; -import ucar.unidata.util.test.TestDir; -import java.io.File; -import java.io.IOException; -import java.io.StringWriter; -import java.lang.invoke.MethodHandles; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; - -/** - * Test Client side access - */ - -public class TestCDMClient extends DapTestCommon { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - - static final boolean DEBUG = false; - - ////////////////////////////////////////////////// - // Constants - - static final String BASEEXTENSION = ".txt"; - static final String INPUTEXTENSION = ".raw"; - - static final String DAP4TAG = "#protocol=dap4"; - - static final String DATADIR = "src/test/data/resources"; // relative to dap4 root - static final String BASELINEDIR = "TestCDMClient/baseline"; - static final String TESTCDMINPUT = "TestCDMClient/testinput"; - static final String TESTFILESINPUT = "testfiles"; - - static final String[] EXCLUDEDFILETESTS = new String[] {"test_sequence_2.syn.raw"}; - - ////////////////////////////////////////////////// - // Type Declarations - - static class TestCase { - static private String root = null; - - static void setRoot(String r) { - root = r; - } - - static String getRoot() { - return root; - } - - ///////////////////////// - - private String title; - private String dataset; - private String ext; - private boolean checksumming; - private String testpath; - private String baselinepath; - private String url; - - TestCase(String url) { - this(url, true); - } - - TestCase(String url, boolean csum) { - try { - URL u = new URL(url); - this.title = u.getPath(); - } catch (MalformedURLException e) { - this.title = "unknown"; - } - this.checksumming = csum; - this.url = url; - try { - URL u = new URL(url); - this.testpath = DapUtil.canonicalpath(u.getPath()); - int i = this.testpath.lastIndexOf('/'); - assert i > 0; - this.dataset = this.testpath.substring(i + 1, this.testpath.length()); - // strip off any raw extension - if (this.dataset.endsWith(INPUTEXTENSION)) - this.dataset = this.dataset.substring(0, this.dataset.length() - INPUTEXTENSION.length()); - this.baselinepath = root + "/" + BASELINEDIR + "/" + this.dataset + INPUTEXTENSION + BASEEXTENSION; - } catch (MalformedURLException e) { - throw new IllegalArgumentException(url); - } - } - - public String getURL() { - return this.url + DAP4TAG; - } - - public String getPath() { - return this.testpath; - } - - public String getDataset() { - return this.dataset; - } - - public String getBaseline() { - return this.baselinepath; - } - - public String getTitle() { - return this.title; - } - - public String toString() { - return this.url; - } - } - - ////////////////////////////////////////////////// - // Instance variables - - // Test cases - - protected List alltestcases = new ArrayList(); - protected List chosentests = new ArrayList(); - - protected String resourceroot = null; - - ////////////////////////////////////////////////// - - @Before - public void setup() throws Exception { - testSetup(); - this.resourceroot = getResourceRoot(); - TestCase.setRoot(resourceroot); - defineAllTestcases(); - chooseTestcases(); - } - - // convert an extension to a file or url prefix - String prefix(String scheme, String ext) { - if (ext.charAt(0) == '.') - ext = ext.substring(1); - if (scheme.startsWith("http")) { - return "http://" + TestDir.dap4TestServer + "/d4ts"; - } else if (scheme.equals("file")) { - if (ext.equals("raw")) - return "file:/" + this.resourceroot + "/" + TESTCDMINPUT; - } - throw new IllegalArgumentException(); - } - - ////////////////////////////////////////////////// - // Define test cases - - void chooseTestcases() { - if (false) { - chosentests = locate("file:", "test_atomic_array.nc.raw"); - prop_visual = true; - prop_baseline = false; - } else { - prop_baseline = false; - for (TestCase tc : alltestcases) { - chosentests.add(tc); - } - } - } - - void defineAllTestcases() { - System.err.printf("pwd=%s%n", System.getProperty("user.dir")); - List matches = new ArrayList<>(); - String dir = TestCase.getRoot() + "/" + TESTCDMINPUT; - TestFilter.filterfiles(dir, matches, "raw"); - for (String f : matches) { - boolean excluded = false; - for (String x : EXCLUDEDFILETESTS) { - if (f.endsWith(x)) { - excluded = true; - break; - } - } - if (!excluded) { - add(f); - } - } - } - - protected void add(String path) { - File f = new File(path); - if (!f.exists()) - System.err.println("Non existent file test case: " + path); - else if (!f.canRead()) - System.err.println("Unreadable file test case: " + path); - String ext = path.substring(path.lastIndexOf('.'), path.length()); - String url = "file://" + path; - try { - URL u = new URL(url); - System.err.printf("Testcase: add: %s path=%s%n", u.toString(), u.getPath()); - } catch (MalformedURLException e) { - System.err.println("Malformed file test case: " + url); - } - TestCase tc = new TestCase(url); - for (TestCase t : this.alltestcases) { - assert !t.getURL().equals(tc.getURL()) : "Duplicate TestCases: " + t; - } - this.alltestcases.add(tc); - } - - ////////////////////////////////////////////////// - // Junit test method - @Test - public void testCDMClient() throws Exception { - for (TestCase testcase : chosentests) { - doOneTest(testcase); - } - System.err.println("*** PASS"); - } - - ////////////////////////////////////////////////// - // Primary test method - void doOneTest(TestCase testcase) throws Exception { - System.err.println("Testcase: " + testcase.getURL()); - System.err.println("Baseline: " + testcase.getBaseline()); - - NetcdfDataset ncfile; - try { - ncfile = openDataset(testcase.getURL()); - } catch (Exception e) { - e.printStackTrace(); - throw new Exception("File open failed: " + testcase.getURL(), e); - } - assert ncfile != null; - - String datasetname = testcase.getDataset(); - String data = dumpdata(ncfile, datasetname); - - if (prop_visual) { - visual(testcase.getTitle() + ".dap", data); - } - String baselinefile = testcase.getBaseline(); - - if (prop_baseline) - writefile(baselinefile, data); - else if (prop_diff) { // compare with baseline - // Read the baseline file(s) - String baselinecontent = readfile(baselinefile); - System.err.println("Comparison: vs " + baselinefile); - Assert.assertTrue("*** FAIL", same(getTitle(), baselinecontent, data)); - } - } - - String dumpmetadata(NetcdfDataset ncfile, String datasetname) throws Exception { - StringWriter sw = new StringWriter(); - StringBuilder args = new StringBuilder("-strict"); - if (datasetname != null) { - args.append(" -datasetname "); - args.append(datasetname); - } - // Print the meta-databuffer using these args to NcdumpW - try { - if (!ucar.nc2.NCdumpW.print(ncfile, args.toString(), sw, null)) - throw new Exception("NcdumpW failed"); - } catch (IOException ioe) { - throw new Exception("NcdumpW failed", ioe); - } - sw.close(); - return sw.toString(); - } - - String dumpdata(NetcdfDataset ncfile, String datasetname) throws Exception { - StringBuilder args = new StringBuilder("-strict -vall"); - if (datasetname != null) { - args.append(" -datasetname "); - args.append(datasetname); - } - StringWriter sw = new StringWriter(); - // Dump the databuffer - sw = new StringWriter(); - try { - if (!ucar.nc2.NCdumpW.print(ncfile, args.toString(), sw, null)) - throw new Exception("NCdumpW failed"); - } catch (IOException ioe) { - ioe.printStackTrace(); - throw new Exception("NCdumpW failed", ioe); - } - sw.close(); - return sw.toString(); - } - - ////////////////////////////////////////////////// - // Utility methods - - // Locate the test cases with given prefix - List locate(String scheme, String s) { - return locate(scheme, s, null); - } - - List locate(String scheme, String s, List list) { - if (list == null) - list = new ArrayList<>(); - int matches = 0; - for (TestCase ct : this.alltestcases) { - if (!ct.getURL().startsWith(scheme)) - continue; - if (ct.getPath().endsWith(s)) { - matches++; - list.add(ct); - } - } - assert matches > 0 : "No such testcase: " + s; - return list; - } - - static boolean report(String msg) { - System.err.println(msg); - return false; - } - -} diff --git a/dap4/d4tests/src/test/java/dap4/test/TestDSP.java b/dap4/d4tests/src/test/java/dap4/test/TestDSP.java deleted file mode 100644 index c1b1b07c83..0000000000 --- a/dap4/d4tests/src/test/java/dap4/test/TestDSP.java +++ /dev/null @@ -1,351 +0,0 @@ -package dap4.test; - -import dap4.core.data.DSP; -import dap4.core.util.DapContext; -import dap4.core.util.DapUtil; -import dap4.dap4lib.DMRPrinter; -import dap4.dap4lib.DSPPrinter; -import dap4.dap4lib.FileDSP; -import dap4.dap4lib.HttpDSP; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ucar.unidata.util.test.TestDir; -import java.io.File; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.lang.invoke.MethodHandles; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; - -/** - * Test some of the DSP classes: - * AbstractDSP: tested by all the other DSPs - * CDMDSP: tested elsewhere (TestServlet) - * HttpDSP: tested elsewhere (TestCDMClient) - * FileDSP: tested here - * Nc4DSP: tested here - * SynDSP: tested here - * D4DSP: tested because superclass of FileDSP, HttpDSP, and SynDSP - * ThreddsDSP: not directly tested anywhere yet - */ -public class TestDSP extends DapTestCommon { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - - static final boolean DEBUG = false; - static final boolean SHOWTESTCASES = true; - - static final String BASEEXTENSION = "txt"; - - static final String DAP4TAG = "#protocol=dap4"; - - ////////////////////////////////////////////////// - // Constants - - static final String DATADIR = "src/test/data/resources"; // relative to dap4 root - static final String BASELINEDIR = "TestDSP/baseline"; - static final String TESTCDMINPUT = "TestCDMClient/testinput"; - static final String TESTDSPINPUT = "TestDSP/testinput"; - static final String TESTFILESINPUT = "testfiles"; - - static final String[] EXCLUDEDFILETESTS = new String[] {}; - - ////////////////////////////////////////////////// - // Type Declarations - - static class TestCase { - static protected String root = null; - - static void setRoot(String r) { - root = r; - } - - static String getRoot() { - return root; - } - - ///////////////////////// - - private String title; - private String dataset; - private boolean checksumming; - private String testpath; - private String baselinepath; - private String url; - - TestCase(String url) { - this(url, true); - } - - TestCase(String url, boolean csum) { - this.title = dataset; - this.checksumming = csum; - this.url = url; - try { - URL u = new URL(url); - this.testpath = DapUtil.canonicalpath(u.getPath()); - int i = this.testpath.lastIndexOf('/'); - assert i > 0; - this.dataset = this.testpath.substring(i + 1, this.testpath.length()); - // strip off any raw extension - this.baselinepath = root + "/" + BASELINEDIR + "/" + this.dataset + "." + BASEEXTENSION; - } catch (MalformedURLException e) { - throw new IllegalArgumentException(url); - } - } - - public String getURL() { - return this.url + DAP4TAG; - } - - public String getPath() { - return this.testpath; - } - - public String getDataset() { - return this.dataset; - } - - public String getBaseline() { - return this.baselinepath; - } - - public String getTitle() { - return this.title; - } - - public String toString() { - return this.url; - } - } - - ////////////////////////////////////////////////// - // Static variables and methods - - protected DSP dspFor(String surl) { - URL url; - try { - url = new URL(surl); - } catch (MalformedURLException mue) { - throw new IllegalArgumentException("Malformed url: " + surl); - } - String proto = url.getProtocol(); - String path = url.getPath(); - int dot = path.lastIndexOf('.'); - if (dot < 0) - dot = path.length(); - String ext = path.substring(dot, path.length()); - DSP dsp = null; - if ("file".equals(proto)) { - // discriminate on the extensions - if (".raw".equals(ext)) { - dsp = new FileDSP(); - } - } else if ("http".equals(proto) || "https".equals(url.getProtocol())) { - dsp = new HttpDSP(); - } else - throw new IllegalArgumentException("Cannot determine DSP class for: " + surl); - if (DEBUG) - System.err.printf("DSP: %s%n", dsp.getClass().getName()); - return dsp; - } - ////////////////////////////////////////////////// - // Instance variables - - // Test cases - - protected List alltestcases = new ArrayList(); - protected List chosentests = new ArrayList(); - - protected String resourceroot = null; - - ////////////////////////////////////////////////// - - @Before - public void setup() throws Exception { - this.resourceroot = getResourceRoot(); - this.resourceroot = DapUtil.absolutize(this.resourceroot); // handle problem of windows paths - TestCase.setRoot(resourceroot); - defineAllTestcases(); - chooseTestcases(); - } - - // convert an extension to a file or url prefix - String prefix(String scheme, String ext) { - if (ext.charAt(0) == '.') - ext = ext.substring(1); - if (scheme.startsWith("http")) { - return "http://" + TestDir.dap4TestServer + "/d4ts"; - } else if (scheme.equals("file")) { - if (ext.equals("raw")) - return "file:/" + this.resourceroot + "/" + TESTCDMINPUT; - if (ext.equals("syn")) - return "file:/" + this.resourceroot + "/" + TESTDSPINPUT; - if (ext.equals("nc")) - return "file:/" + this.resourceroot + "/" + TESTFILESINPUT; - } - throw new IllegalArgumentException(); - } - - ////////////////////////////////////////////////// - // Define test cases - - void chooseTestcases() { - if (false) { - chosentests = locate("file:", "test_struct_nested3.hdf5.raw"); - prop_visual = true; - prop_baseline = false; - } else { - prop_baseline = false; - for (TestCase tc : alltestcases) { - if (DEBUG) - System.err.printf("Test case: %s%n", tc.dataset); - chosentests.add(tc); - } - } - } - - void defineAllTestcases() { - List matches = new ArrayList<>(); - String dir = TestCase.root + "/" + TESTCDMINPUT; - TestFilter.filterfiles(dir, matches, "raw"); - if (false) { - dir = TestCase.root + "/" + TESTFILESINPUT; - TestFilter.filterfiles(dir, matches, "nc", "syn"); - } - for (String f : matches) { - boolean excluded = false; - for (String x : EXCLUDEDFILETESTS) { - if (f.indexOf(x) >= 0) { - excluded = true; - break; - } - } - if (!excluded) - add("file:/" + f); - } - if (SHOWTESTCASES) { - for (int i = 0; i < this.alltestcases.size(); i++) { - TestCase tc = this.alltestcases.get(i); - System.err.printf("ALLTESTS: %s%n", tc.getURL()); - } - } - } - - protected void add(String url) { - try { - URL u = new URL(url); - File f = new File(u.getPath()); - if (!f.canRead()) { - System.err.println("Unreadable file test case: " + url); - } - } catch (MalformedURLException e) { - System.err.println("Malformed file test case: " + url); - } - String ext = url.substring(url.lastIndexOf('.'), url.length()); - TestCase tc = new TestCase(url); - for (TestCase t : this.alltestcases) { - assert !t.getURL().equals(tc.getURL()) : "Duplicate TestCases: " + t; - } - this.alltestcases.add(tc); - } - - ////////////////////////////////////////////////// - // Junit test method - @Test - public void testDSP() throws Exception { - for (TestCase testcase : chosentests) { - doOneTest(testcase); - } - System.err.println("*** PASS"); - } - - ////////////////////////////////////////////////// - // Primary test method - void doOneTest(TestCase testcase) throws Exception { - System.err.println("Testcase: " + testcase.getURL()); - System.err.println("Baseline: " + testcase.getBaseline()); - - DSP dsp = dspFor(testcase.getURL()); - - dsp.setContext(new DapContext()); - dsp.open(testcase.getURL()); - - String metadata = dumpmetadata(dsp); - if (prop_visual) - visual(testcase.getURL() + ".dmr", metadata); - String data = dumpdata(dsp); - if (prop_visual) - visual(testcase.getURL() + ".dap", data); - - String baselinefile = testcase.getBaseline(); - - String testoutput = metadata + data; - - if (prop_baseline) - writefile(baselinefile, testoutput); - else if (prop_diff) { // compare with baseline - // Read the baseline file(s) - String baselinecontent = readfile(baselinefile); - System.err.println("Comparison: vs " + baselinefile); - Assert.assertTrue("*** FAIL", same(getTitle(), baselinecontent, testoutput)); - } - } - - String dumpmetadata(DSP dsp) throws Exception { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - // Print the meta-databuffer using these args to NcdumpW - DMRPrinter p = new DMRPrinter(dsp.getDMR(), pw); - p.testprint(); - pw.close(); - sw.close(); - return sw.toString(); - } - - String dumpdata(DSP dsp) throws Exception { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - // Print the meta-databuffer using these args to NcdumpW - DSPPrinter p = new DSPPrinter(dsp, pw).flag(DSPPrinter.Flags.CONTROLCHAR); - p.print(); - pw.close(); - sw.close(); - return sw.toString(); - } - - ////////////////////////////////////////////////// - // Utility methods - - // Locate the test cases with given prefix - List locate(String scheme, String s) { - return locate(scheme, s, null); - } - - List locate(String scheme, String s, List list) { - if (list == null) - list = new ArrayList<>(); - int matches = 0; - for (TestCase ct : this.alltestcases) { - if (!ct.getURL().startsWith(scheme)) - continue; - if (ct.getPath().endsWith(s)) { - matches++; - list.add(ct); - } - } - assert matches > 0 : "No such testcase: " + s; - return list; - } - - static boolean report(String msg) { - System.err.println(msg); - return false; - } - - -} diff --git a/dap4/d4tests/src/test/java/dap4/test/TestH5Iosp.java b/dap4/d4tests/src/test/java/dap4/test/TestH5Iosp.java deleted file mode 100644 index 1f97677c3b..0000000000 --- a/dap4/d4tests/src/test/java/dap4/test/TestH5Iosp.java +++ /dev/null @@ -1,287 +0,0 @@ -package dap4.test; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ucar.nc2.dataset.NetcdfDataset; -import ucar.unidata.util.test.category.NotJenkins; -import java.io.File; -import java.io.IOException; -import java.io.StringWriter; -import java.lang.invoke.MethodHandles; -import java.math.BigInteger; -import java.nio.ByteOrder; -import java.util.ArrayList; -import java.util.List; - -@Category(NotJenkins.class) -public class TestH5Iosp extends DapTestCommon { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - - static protected final boolean DEBUG = false; - - static protected final boolean NCDUMP = true; - - static protected final Mode mode = Mode.BOTH; - - ////////////////////////////////////////////////// - // Constants - - static protected String DATADIR = "src/test/data"; // relative to dap4 root - static protected String TESTDATADIR = DATADIR + "/resources/"; - static protected String BASELINEDIR = DATADIR + "/resources/TestIosp/baseline"; - static protected String TESTINPUTDIR = DATADIR + "/resources/testfiles"; - - static protected final BigInteger MASK = new BigInteger("FFFFFFFFFFFFFFFF", 16); - - ////////////////////////////////////////////////// - // Type Declarations - - static protected class H5IospTest { - static String root = null; - String title; - String dataset; - String testinputpath; - String baselinepath; - - H5IospTest(String dataset) { - this.title = dataset; - this.dataset = dataset; - this.testinputpath = root + "/" + TESTINPUTDIR + "/" + dataset; - this.baselinepath = root + "/" + BASELINEDIR + "/" + dataset + ".hdf5"; - } - - public String toString() { - return dataset; - } - } - - static protected enum Mode { - DMR, DATA, BOTH; - } - - ////////////////////////////////////////////////// - // Instance variables - - // Misc variables - protected boolean isbigendian = ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN; - - // Test cases - - protected List alltestcases = new ArrayList(); - - protected List chosentests = new ArrayList(); - - protected String datasetpath = null; - - protected String testroot = null; - - ////////////////////////////////////////////////// - @Before - public void setup() throws Exception { - this.testroot = getTestFilesDir(); - File f = new File(testroot + "/" + BASELINEDIR); - if (!f.exists()) - f.mkdir(); - this.datasetpath = this.testroot + "/" + DATADIR; - defineAllTestcases(this.testroot); - chooseTestcases(); - } - - protected String getTestFilesDir() { - return TESTINPUTDIR; - } - - ////////////////////////////////////////////////// - // Define test cases - - void chooseTestcases() { - if (false) { - chosentests = locate("test_enum.nc"); - // chosentests.add(new H5IospTest("test_test.nc")); - } else { - for (H5IospTest tc : alltestcases) { - chosentests.add(tc); - } - } - } - - void defineAllTestcases(String root) { - H5IospTest.root = root; - this.alltestcases.add(new H5IospTest("test_one_var.nc")); - this.alltestcases.add(new H5IospTest("test_one_vararray.nc")); - this.alltestcases.add(new H5IospTest("test_atomic_types.nc")); - this.alltestcases.add(new H5IospTest("test_atomic_array.nc")); - this.alltestcases.add(new H5IospTest("test_enum.nc")); - this.alltestcases.add(new H5IospTest("test_enum_array.nc")); - this.alltestcases.add(new H5IospTest("test_struct_type.nc")); - this.alltestcases.add(new H5IospTest("test_struct_array.nc")); - this.alltestcases.add(new H5IospTest("test_struct_nested.nc")); - this.alltestcases.add(new H5IospTest("test_vlen1.nc")); - this.alltestcases.add(new H5IospTest("test_vlen2.nc")); - this.alltestcases.add(new H5IospTest("test_vlen3.nc")); - this.alltestcases.add(new H5IospTest("test_vlen4.nc")); - this.alltestcases.add(new H5IospTest("test_vlen5.nc")); - } - - - ////////////////////////////////////////////////// - // Junit test methods - - @Test - public void testH5Iosp() throws Exception { - for (H5IospTest testcase : chosentests) { - if (!doOneTest(testcase)) { - Assert.assertTrue(false); - } - } - } - - ////////////////////////////////////////////////// - // Primary test method - boolean doOneTest(H5IospTest testcase) throws Exception { - boolean pass = true; - - System.out.println("Testcase: " + testcase.testinputpath); - - NetcdfDataset ncfile = openDataset(testcase.testinputpath); - - String metadata = null; - String data = null; - if (mode == Mode.DMR || mode == Mode.BOTH) { - metadata = (NCDUMP ? ncdumpmetadata(ncfile, testcase.dataset) : null); - if (prop_visual) - visual("Meta Data: ", metadata); - } - if (mode == Mode.DATA || mode == Mode.BOTH) { - data = (NCDUMP ? ncdumpdata(ncfile, testcase.dataset) : null); - if (prop_visual) - visual("Data: ", data); - } - - String baselinefile = String.format("%s", testcase.baselinepath); - if (prop_baseline) { - if (mode == Mode.DMR || mode == Mode.BOTH) - writefile(baselinefile + ".dmr", metadata); - if (mode == Mode.DATA || mode == Mode.BOTH) - writefile(baselinefile + ".dap", data); - } else if (prop_diff) { // compare with baseline - String baselinecontent = null; - if (mode == Mode.DMR || mode == Mode.BOTH) { - // Read the baseline file(s) - System.out.println("DMR Comparison:"); - baselinecontent = readfile(baselinefile + ".dmr"); - pass = pass && same(getTitle(), baselinecontent, metadata); - System.out.println(pass ? "Pass" : "Fail"); - } - if (mode == Mode.DATA || mode == Mode.BOTH) { - System.out.println("DATA Comparison:"); - baselinecontent = readfile(baselinefile + ".dap"); - pass = pass && same(getTitle(), baselinecontent, data); - System.out.println(pass ? "Pass" : "Fail"); - } - } - return pass; - } - - ////////////////////////////////////////////////// - // Utility methods - - boolean report(String msg) { - System.err.println(msg); - prop_generate = false; - return false; - } - - - // Locate the test cases with given prefix - List locate(String prefix) { - List results = new ArrayList(); - for (H5IospTest ct : this.alltestcases) { - if (ct.dataset.startsWith(prefix)) - results.add(ct); - } - return results; - } - ////////////////////////////////////////////////// - // Stand alone - - static public void main(String[] argv) { - try { - new TestH5Iosp().testH5Iosp(); - } catch (Exception e) { - System.err.println("*** FAIL"); - e.printStackTrace(); - System.exit(1); - } - System.err.println("*** PASS"); - System.exit(0); - }// main - - ////////////////////////////////////////////////// - // Dump methods - - String ncdumpmetadata(NetcdfDataset ncfile, String datasetname) { - boolean ok = false; - String metadata = null; - StringWriter sw = new StringWriter(); - - StringBuilder args = new StringBuilder("-strict"); - if (datasetname != null) { - args.append(" -datasetname "); - args.append(datasetname); - } - - // Print the meta-databuffer using these args to NcdumpW - ok = false; - try { - ok = ucar.nc2.NCdumpW.print(ncfile, args.toString(), sw, null); - } catch (IOException ioe) { - ioe.printStackTrace(); - ok = false; - } - try { - sw.close(); - } catch (IOException e) { - } - if (!ok) { - System.err.println("NcdumpW failed"); - System.exit(1); - } - return shortenFileName(sw.toString(), ncfile.getLocation()); - } - - String ncdumpdata(NetcdfDataset ncfile, String datasetname) { - boolean ok = false; - StringWriter sw = new StringWriter(); - - StringBuilder args = new StringBuilder("-strict -vall"); - if (datasetname != null) { - args.append(" -datasetname "); - args.append(datasetname); - } - // Dump the databuffer - sw = new StringWriter(); - ok = false; - try { - ok = ucar.nc2.NCdumpW.print(ncfile, args.toString(), sw, null); - } catch (IOException ioe) { - ioe.printStackTrace(); - ok = false; - } - try { - sw.close(); - } catch (IOException e) { - } ; - if (!ok) { - System.err.println("NcdumpW failed"); - System.exit(1); - } - return shortenFileName(sw.toString(), ncfile.getLocation()); - } - -} - diff --git a/dap4/d4tests/src/test/java/dap4/test/TestHyrax.java b/dap4/d4tests/src/test/java/dap4/test/TestHyrax.java deleted file mode 100644 index c4b678aa8f..0000000000 --- a/dap4/d4tests/src/test/java/dap4/test/TestHyrax.java +++ /dev/null @@ -1,394 +0,0 @@ -package dap4.test; - -import dap4.core.util.DapUtil; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ucar.nc2.dataset.NetcdfDataset; -import ucar.unidata.util.test.UnitTestCommon; -import ucar.unidata.util.test.category.NotJenkins; -import ucar.unidata.util.test.category.NotPullRequest; -import java.io.IOException; -import java.io.StringWriter; -import java.lang.invoke.MethodHandles; -import java.util.ArrayList; -import java.util.List; - -/** - * Test OpenDap Server at the NetcdfDataset level - */ - -@Ignore -public class TestHyrax extends DapTestCommon { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - - static final boolean DEBUG = false; - - static final boolean NCDUMP = true; // Use NcDumpW instead of NCPrint - - static final String EXTENSION = (NCDUMP ? "ncdump" : "dmp"); - - static final String TESTEXTENSION = "dmr"; - - // Mnemonic - static final boolean HEADERONLY = false; - - static final String IP = "ec2-54-204-231-163"; - ////////////////////////////////////////////////// - // Constants - - static final String DATADIR = "src/test/data"; // relative to dap4 root - static final String TESTDATADIR = DATADIR + "/resources/TestHyrax"; - static final String BASELINEDIR = TESTDATADIR + "/baseline"; - - // Define the names of the xfail tests - static final String[] XFAIL_TESTS = {"test_struct_array.nc"}; - - // Order is important; testing reachability is in the order - // listed - static final String[] SOURCES = - new String[] {"hyrax", "http://" + IP + ".compute-1.amazonaws.com:8080/opendap/data/reader/dap4/dap4.html", - "dap4://" + IP + ".compute-1.amazonaws.com:8080/opendap/data/reader/dap4"}; - - static boolean isXfailTest(String t) { - for (String s : XFAIL_TESTS) { - if (s.equals(t)) - return true; - } - return false; - } - - ////////////////////////////////////////////////// - // Type Declarations - - static class Source { - public String name; - public String testurl; - public String prefix; - - public Source(String name, String testurl, String prefix) { - this.name = name; - this.prefix = prefix; - this.testurl = testurl; - } - } - - static class ClientTest { - static String root = null; - static String server = null; - static int counter = 0; - - boolean checksumming = true; - boolean xfail = false; - boolean headeronly = false; - - String title; - String dataset; // path minus the server url part. - String datasetpath; // Hyrax test databuffer is segregated into multiple directories - String baselinepath; - String constraint; - int id; - - ClientTest(String dataset) { - this(0, dataset, null); - } - - ClientTest(int id, String datasetpath, String constraint) { - // Break off the final file set name - int index = datasetpath.lastIndexOf('/'); - this.dataset = datasetpath.substring(index + 1, datasetpath.length()); - this.datasetpath = datasetpath; - this.title = this.dataset; - this.id = id; - this.constraint = (constraint.length() == 0 ? null : constraint); - this.baselinepath = root + "/" + BASELINEDIR + "/" + dataset; - if (this.constraint != null) - this.baselinepath += ("." + String.valueOf(this.id)); - } - - public ClientTest nochecksum() { - this.checksumming = false; - return this; - } - - public ClientTest xfail() { - this.xfail = true; - return this; - } - - public ClientTest headeronly() { - this.headeronly = true; - return this; - } - - String makeurl() { - String url = url = server + "/" + datasetpath; - if (constraint != null) - url += ("?" + constraint); - return url; - } - - public String toString() { - return dataset; - } - } - - ////////////////////////////////////////////////// - // Instance variables - - // Test cases - - List alltestcases = new ArrayList(); - List chosentests = new ArrayList(); - - String resourceroot = null; - String datasetpath = null; - - String sourceurl = null; - - ////////////////////////////////////////////////// - - @Before - public void setup() throws Exception { - this.resourceroot = getResourceRoot(); - this.resourceroot = DapUtil.absolutize(this.resourceroot); // handle problem of windows paths - System.out.println("Using source url " + this.sourceurl); - defineAllTestcases(this.resourceroot, this.sourceurl); - chooseTestcases(); - } - - ////////////////////////////////////////////////// - // Define test cases - - void chooseTestcases() { - if (false) { - chosentests = locate("dmr-testsuite/test_array_7.xml"); - } else { - for (ClientTest tc : alltestcases) { - chosentests.add(tc); - } - } - } - - boolean defineAllTestcases(String root, String server) { - - boolean what = HEADERONLY; - - ClientTest.root = root; - ClientTest.server = server; - if (false) { - alltestcases.add(new ClientTest(1, "D4-xml/DMR_4.xml", "b1")); - } - if (false) { - alltestcases.add(new ClientTest("test_simple_1.dmr")); - // deleted: alltestcases.add(new TestCase("dmr-testsuite/testall.xml")); - } - if (false) { - alltestcases.add(new ClientTest("dmr-testsuite/test_array_1.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_array_2.xml")); - strings: alltestcases.add(new ClientTest("dmr-testsuite/test_array_3.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_array_4.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_array_5.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_array_6.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_array_7.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_array_8.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_array_10.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_array_11.xml")); - - } - if (false) { - alltestcases.add(new ClientTest("dmr-testsuite/test_simple_1.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_simple_2.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_simple_3.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_simple_4.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_simple_5.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_simple_6.xml")); - // sequence: alltestcases.add(new TestCase("dmr-testsuite/test_simple_7.xml")); - // sequence: alltestcases.add(new TestCase("dmr-testsuite/test_simple_8.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_simple_9.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_simple_9.1.xml")); - alltestcases.add(new ClientTest("dmr-testsuite/test_simple_10.xml")); - } - if (false) { - // alltestcases.add(new TestCase("D4-xml/DMR_0.1.xml")); needs fixing - alltestcases.add(new ClientTest("D4-xml/DMR_0.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_1.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_2.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_2.1.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_3.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_3.1.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_3.2.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_3.3.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_3.4.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_3.5.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_4.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_4.1.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_5.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_5.1.xml")); - // serial: alltestcases.add(new TestCase("D4-xml/DMR_6.xml")); - // serial: alltestcases.add(new TestCase("D4-xml/DMR_6.1.xml")); - // serial: alltestcases.add(new TestCase("D4-xml/DMR_6.2.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_7.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_7.1.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_7.2.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_7.3.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_7.4.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_7.5.xml")); - alltestcases.add(new ClientTest("D4-xml/DMR_8.xml")); - } - - if (false) { - alltestcases.add(new ClientTest("dmr-testsuite/test_simple_3_error_1.xml").xfail()); - alltestcases.add(new ClientTest("dmr-testsuite/test_simple_3_error_2.xml").xfail()); - alltestcases.add(new ClientTest("dmr-testsuite/test_simple_3_error_3.xml").xfail()); - } - for (ClientTest test : alltestcases) { - if (what == HEADERONLY) - test.headeronly(); - } - return true; - } - - ////////////////////////////////////////////////// - // Junit test method - - @Test - @Category({NotJenkins.class, NotPullRequest.class}) - public void testHyrax() throws Exception { - boolean pass = true; - for (ClientTest testcase : chosentests) { - if (!doOneTest(testcase)) - pass = false; - } - Assert.assertTrue("*** Fail: TestHyrax", pass); - } - - ////////////////////////////////////////////////// - // Primary test method - boolean doOneTest(ClientTest testcase) throws Exception { - boolean pass = true; - System.out.println("Testcase: " + testcase.dataset); - String url = testcase.makeurl(); - NetcdfDataset ncfile = null; - try { - ncfile = openDataset(url); - } catch (Exception e) { - System.err.println(testcase.xfail ? "XFail" : "Fail"); - e.printStackTrace(); - return testcase.xfail; - } - String usethisname = UnitTestCommon.extractDatasetname(url, null); - String metadata = (NCDUMP ? ncdumpmetadata(ncfile, usethisname) : null); - if (prop_visual) { - visual(testcase.title + ".dmr", metadata); - } - - String data = null; - if (!testcase.headeronly) { - data = (NCDUMP ? ncdumpdata(ncfile, usethisname) : null); - if (prop_visual) { - visual(testcase.title + ".dap", data); - } - } - - String testoutput = (testcase.headeronly ? metadata : (NCDUMP ? data : metadata + data)); - - String baselinefile = testcase.baselinepath + "." + EXTENSION; - - if (prop_baseline) - writefile(baselinefile, testoutput); - - if (prop_diff) { // compare with baseline - // Read the baseline file(s) - String baselinecontent = readfile(baselinefile); - System.out.println("Comparison: vs " + baselinefile); - pass = pass && same(getTitle(), baselinecontent, testoutput); - System.out.println(pass ? "Pass" : "Fail"); - } - return pass; - } - - - String ncdumpmetadata(NetcdfDataset ncfile, String datasetname) throws Exception { - StringWriter sw = new StringWriter(); - - StringBuilder args = new StringBuilder("-strict"); - if (datasetname != null) { - args.append(" -datasetname "); - args.append(datasetname); - } - // Print the meta-databuffer using these args to NcdumpW - try { - if (!ucar.nc2.NCdumpW.print(ncfile, args.toString(), sw, null)) - throw new Exception("NcdumpW failed"); - } catch (IOException ioe) { - throw new Exception("NcdumpW failed", ioe); - } - sw.close(); - return sw.toString(); - } - - String ncdumpdata(NetcdfDataset ncfile, String datasetname) throws Exception { - StringWriter sw = new StringWriter(); - - StringBuilder args = new StringBuilder("-strict -vall"); - if (datasetname != null) { - args.append(" -datasetname "); - args.append(datasetname); - } - - // Dump the databuffer - sw = new StringWriter(); - try { - if (!ucar.nc2.NCdumpW.print(ncfile, args.toString(), sw, null)) - throw new Exception("NCdumpW failed"); - } catch (IOException ioe) { - ioe.printStackTrace(); - throw new Exception("NCdumpW failed", ioe); - } - sw.close(); - return sw.toString(); - } - - ////////////////////////////////////////////////// - // Utility methods - - - // Locate the test cases with given prefix - List locate(String prefix) { - List results = new ArrayList(); - for (ClientTest ct : this.alltestcases) { - if (!ct.datasetpath.startsWith(prefix)) - continue; - results.add(ct); - } - return results; - } - - static boolean report(String msg) { - System.err.println(msg); - return false; - } - - - ////////////////////////////////////////////////// - // Stand alone - - static public void main(String[] argv) { - try { - new TestHyrax().testHyrax(); - } catch (Exception e) { - System.err.println("*** FAIL"); - e.printStackTrace(); - System.exit(1); - } - System.err.println("*** PASS"); - System.exit(0); - }// main - -} // class TestHyrax - diff --git a/dap4/d4tests/src/test/java/dap4/test/TestNc4Iosp.java b/dap4/d4tests/src/test/java/dap4/test/TestNc4Iosp.java deleted file mode 100644 index 74172ef4df..0000000000 --- a/dap4/d4tests/src/test/java/dap4/test/TestNc4Iosp.java +++ /dev/null @@ -1,287 +0,0 @@ -package dap4.test; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.lang.invoke.MethodHandles; -import java.math.BigInteger; -import java.nio.ByteOrder; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.List; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.junit.experimental.categories.Category; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ucar.nc2.dataset.NetcdfDataset; -import ucar.unidata.util.test.category.NotPullRequest; - -@Category(NotPullRequest.class) -public class TestNc4Iosp extends DapTestCommon { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - - static protected final boolean DEBUG = false; - - static protected final boolean NCDUMP = true; - - static protected final Mode mode = Mode.BOTH; - - static String previousJnaEncoding = System.getProperty("jna.encoding"); - - ////////////////////////////////////////////////// - // Constants - - static protected final String RESOURCEPATH = "/src/test/data/resources"; // wrt getTestInputFilesDIr - static protected final String TESTINPUTDIR = "/testfiles"; - static protected final String BASELINEDIR = "/TestIosp/baseline"; - - static protected final BigInteger MASK = new BigInteger("FFFFFFFFFFFFFFFF", 16); - - ////////////////////////////////////////////////// - // Type Declarations - - static protected class Nc4IospTest { - static String inputroot = null; - static String baselineroot = null; - - static public void setRoots(String input, String baseline) { - inputroot = input; - baselineroot = baseline; - } - - String title; - String dataset; - String testinputpath; - String baselinepath; - - Nc4IospTest(String dataset) { - this.title = dataset; - this.dataset = dataset; - this.testinputpath = canonjoin(this.inputroot, dataset); - this.baselinepath = canonjoin(this.baselineroot, dataset) + ".nc4"; - } - - public String toString() { - return dataset; - } - } - - static protected enum Mode { - DMR, DATA, BOTH; - } - - ////////////////////////////////////////////////// - // Instance variables - - // Misc variables - protected boolean isbigendian = ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN; - - // Test cases - - protected List alltestcases = new ArrayList(); - - protected List chosentests = new ArrayList(); - - protected String datasetpath = null; - - protected String root = null; - - ////////////////////////////////////////////////// - - @Before - public void setup() throws Exception { - this.root = getResourceRoot(); - testSetup(); - Nc4IospTest.setRoots(canonjoin(getResourceRoot(), TESTINPUTDIR), canonjoin(getResourceRoot(), BASELINEDIR)); - defineAllTestcases(); - chooseTestcases(); - } - - protected String getTestFilesDir() { - return ""; - } - - ////////////////////////////////////////////////// - // Define test cases - - void chooseTestcases() { - if (false) { - chosentests = locate("test_struct_array.nc"); - prop_visual = true; - prop_debug = true; - // chosentests.add(new Nc4IospTest("test_test.nc")); - } else { - prop_baseline = false; - for (Nc4IospTest tc : alltestcases) { - chosentests.add(tc); - } - } - } - - void defineAllTestcases() { - this.alltestcases.add(new Nc4IospTest("test_one_var.nc")); - this.alltestcases.add(new Nc4IospTest("test_one_vararray.nc")); - this.alltestcases.add(new Nc4IospTest("test_atomic_types.nc")); - this.alltestcases.add(new Nc4IospTest("test_atomic_array.nc")); - this.alltestcases.add(new Nc4IospTest("test_enum.nc")); - this.alltestcases.add(new Nc4IospTest("test_enum_array.nc")); - this.alltestcases.add(new Nc4IospTest("test_struct_type.nc")); - this.alltestcases.add(new Nc4IospTest("test_struct_array.nc")); - this.alltestcases.add(new Nc4IospTest("test_struct_nested.nc")); - this.alltestcases.add(new Nc4IospTest("test_vlen1.nc")); - this.alltestcases.add(new Nc4IospTest("test_vlen2.nc")); - this.alltestcases.add(new Nc4IospTest("test_vlen3.nc")); - this.alltestcases.add(new Nc4IospTest("test_vlen4.nc")); - this.alltestcases.add(new Nc4IospTest("test_vlen5.nc")); - } - - - ////////////////////////////////////////////////// - // Junit test methods - - @Test - public void testNc4Iosp() throws Exception { - for (Nc4IospTest testcase : chosentests) { - doOneTest(testcase); - } - } - - ////////////////////////////////////////////////// - // Primary test method - void doOneTest(Nc4IospTest testcase) throws Exception { - System.err.println("Testcase: " + testcase.testinputpath); - - NetcdfDataset ncfile = openDataset(testcase.testinputpath); - - String metadata = null; - String data = null; - if (mode == Mode.DMR || mode == Mode.BOTH) { - metadata = (NCDUMP ? ncdumpmetadata(ncfile, testcase.dataset) : null); - if (prop_visual) - visual("Meta Data: ", metadata); - } - if (mode == Mode.DATA || mode == Mode.BOTH) { - data = (NCDUMP ? ncdumpdata(ncfile, testcase.dataset) : null); - if (prop_visual) - visual("Data: ", data); - } - - String baselinefile = String.format("%s", testcase.baselinepath); - System.err.println("Testpath: " + testcase.testinputpath); - System.err.println("Baseline: " + baselinefile); - if (prop_baseline) { - if (mode == Mode.DMR || mode == Mode.BOTH) - writefile(baselinefile + ".dmr", metadata); - if (mode == Mode.DATA || mode == Mode.BOTH) - writefile(baselinefile + ".dap", data); - } else if (prop_diff) { // compare with baseline - String baselinecontent = null; - if (mode == Mode.DMR || mode == Mode.BOTH) { - // Read the baseline file(s) - System.err.println("DMR Comparison:"); - try { - baselinecontent = readfile(baselinefile + ".dmr"); - boolean pass = same(getTitle(), baselinecontent, metadata); - Assert.assertTrue("***Fail", pass); - } catch (IOException ioe) { - Assert.assertTrue("baselinefile" + ".dmr: " + ioe.getMessage(), false); - } - } - if (mode == Mode.DATA || mode == Mode.BOTH) { - System.err.println("DATA Comparison:"); - try { - baselinecontent = readfile(baselinefile + ".dap"); - Assert.assertTrue("***Data Fail", same(getTitle(), baselinecontent, data)); - - } catch (IOException ioe) { - Assert.assertTrue("baselinefile" + ".dap: " + ioe.getMessage(), false); - } - } - } - } - - ////////////////////////////////////////////////// - // Utility methods - - boolean report(String msg) { - System.err.println(msg); - prop_generate = false; - return false; - } - - - // Locate the test cases with given prefix - List locate(String prefix) { - List results = new ArrayList(); - for (Nc4IospTest ct : this.alltestcases) { - if (ct.dataset.startsWith(prefix)) - results.add(ct); - } - return results; - } - - ////////////////////////////////////////////////// - // Dump methods - - String ncdumpmetadata(NetcdfDataset ncfile, String datasetname) { - boolean ok = false; - String metadata = null; - String dump = ""; - - StringBuilder args = new StringBuilder("-strict"); - if (datasetname != null) { - args.append(" -datasetname "); - args.append(datasetname); - } - - // Print the meta-databuffer using these args to NcdumpW - ok = false; - try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - OutputStreamWriter outputStreamWriter = new OutputStreamWriter(byteArrayOutputStream, StandardCharsets.UTF_8)) { - ok = ucar.nc2.NCdumpW.print(ncfile, args.toString(), outputStreamWriter, null); - dump = byteArrayOutputStream.toString(StandardCharsets.UTF_8.name()); - } catch (IOException ioe) { - ioe.printStackTrace(); - ok = false; - } - - if (!ok) { - System.err.println("NcdumpW failed"); - System.exit(1); - } - // return shortenFileName(sw.toString(), ncfile.getLocation()); - return dump; - } - - String ncdumpdata(NetcdfDataset ncfile, String datasetname) { - boolean ok = false; - String dump = ""; - StringBuilder args = new StringBuilder("-strict -vall"); - if (datasetname != null) { - args.append(" -datasetname "); - args.append(datasetname); - } - - // Dump the databuffer - - ok = false; - try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - OutputStreamWriter outputStreamWriter = new OutputStreamWriter(byteArrayOutputStream, StandardCharsets.UTF_8)) { - ok = ucar.nc2.NCdumpW.print(ncfile, args.toString(), outputStreamWriter, null); - dump = byteArrayOutputStream.toString(StandardCharsets.UTF_8.name()); - } catch (IOException ioe) { - ioe.printStackTrace(); - ok = false; - } - - if (!ok) { - System.err.println("NcdumpW failed"); - System.exit(1); - } - // return shortenFileName(sw.toString(), ncfile.getLocation()); - return dump; - } -} - diff --git a/dap4/d4tests/src/test/java/dap4/test/TestParserCE.java b/dap4/d4tests/src/test/java/dap4/test/TestParserCE.java deleted file mode 100644 index 3acb391e0e..0000000000 --- a/dap4/d4tests/src/test/java/dap4/test/TestParserCE.java +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.test; - - -import dap4.core.ce.CECompiler; -import dap4.core.ce.CEConstraint; -import dap4.core.ce.parser.CEParserImpl; -import dap4.core.dmr.DMRFactory; -import dap4.core.dmr.DapDataset; -import dap4.core.dmr.parser.DOM4Parser; -import dap4.core.dmr.parser.Dap4Parser; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.lang.invoke.MethodHandles; -import java.util.ArrayList; -import java.util.List; - -public class TestParserCE extends DapTestCommon { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - - ////////////////////////////////////////////////// - // Constants - static final boolean DUMPDMR = false; - static final boolean DMRPARSEDEBUG = false; - static final boolean CEPARSEDEBUG = false; - - static final String TESTCASEDIR = "src/test/data/resources/TestParsers"; // relative to dap4 root - - static final boolean USEDOM = false; - - ////////////////////////////////////////////////// - // Type decls - static class TestSet { - public String dmr; - public String constraint; - public String expected = null; - public String[] debug = null; - public int id = 0; - - public TestSet(int id, String cedmr, String ces, String expected) throws IOException { - this.id = id; - this.dmr = cedmr; - this.constraint = ces; - this.expected = expected; - } - - public TestSet setdebug(String[] debug) { - this.debug = debug; - return this; - } - - public TestSet setdebug(String debug) { - return setdebug(new String[] {debug}); - } - - public String toString() { - return constraint; - } - - } - - ////////////////////////////////////////////////// - // Instance methods - - // All test cases - List alltestsets = new ArrayList<>(); - List chosentests = new ArrayList<>(); - - DapDataset dmr = null; - - ////////////////////////////////////////////////// - @Before - public void setup() { - try { - defineAllTestCases(); - chooseTestcases(); - } catch (IOException ioe) { - ioe.printStackTrace(); - } - } - - ////////////////////////////////////////////////// - // Misc. methods - - protected void chooseTestcases() { - if (false) { - chosentests = locate(7); - assert chosentests.size() > 0 : "Not tests chosen"; - } else { - for (TestSet tc : alltestsets) { - chosentests.add(tc); - } - } - } - - // Locate the test cases - List locate(Object ce) { - List results = new ArrayList<>(); - for (TestSet ct : this.alltestsets) { - if (ce instanceof String) { - if (ct.constraint.equals(ce)) - results.add(ct); - } else if (ce instanceof Integer) { - if (ct.id == ((Integer) ce)) - results.add(ct); - } - } - return results; - } - - protected void defineAllTestCases() throws IOException { - alltestsets.add(new TestSet(1, CE1_DMR, "/a[1]", "/a[1]")); - alltestsets.add(new TestSet(2, CE1_DMR, "/b[10:16]", "/b[10:16]")); - alltestsets.add(new TestSet(3, CE1_DMR, "/c[8:2:15]", "/c[8:2:15]")); - alltestsets.add(new TestSet(4, CE1_DMR, "/a[1];/b[10:16];/c[8:2:15]", "/a[1];/b[10:16];/c[8:2:15]")); - alltestsets - .add(new TestSet(5, CE1_DMR, "/d[1][0:2:2];/a[1];/e[1][0];/f[0][1]", "/d[1][0:2:2];/a[1];/e[1][0];/f[0][1]")); - alltestsets.add(new TestSet(6, CE1_DMR, "/s[0:3][0:2].x;/s[0:3][0:2].y", "/s[0:3][0:2]")); - alltestsets.add(new TestSet(7, CE1_DMR, "/seq|i1<0", "/seq|i1<0")); - alltestsets.add(new TestSet(8, CE1_DMR, "/seq|00,i1<10")); - alltestsets.add(new TestSet(9, CE2_DMR, "vo[1:1][0,0]", "/vo[1][0,0]")); - } - - ////////////////////////////////////////////////// - // Junit test method - - @Test - public void testParserCE() throws Exception { - for (TestSet testset : chosentests) { - if (!doOneTest(testset)) { - Assert.assertTrue(false); - System.exit(1); - } - } - } - - boolean doOneTest(TestSet testset) throws Exception { - boolean pass = true; - - System.out.println("Test Set: " + testset.constraint); - - if (DUMPDMR) { - visual("DMR:", testset.dmr); - } - - // Create the DMR tree - System.out.println("Parsing DMR"); - Dap4Parser parser; - if (!USEDOM) - parser = new DOM4Parser(new DMRFactory()); - if (DMRPARSEDEBUG) - parser.setDebugLevel(1); - boolean parseok = parser.parse(testset.dmr); - if (parseok) - dmr = parser.getDMR(); - if (dmr == null) - parseok = false; - if (!parseok) - throw new Exception("DMR Parse failed"); - System.out.flush(); - System.err.flush(); - - // Iterate over the constraints - String results = ""; - CEConstraint ceroot = null; - System.out.println("constraint: " + testset.constraint); - System.out.flush(); - CEParserImpl ceparser = null; - try { - ceparser = new CEParserImpl(dmr); - if (CEPARSEDEBUG) - ceparser.setDebugLevel(1); - parseok = ceparser.parse(testset.constraint); - CECompiler compiler = new CECompiler(); - ceroot = compiler.compile(dmr, ceparser.getCEAST()); - } catch (Exception e) { - e.printStackTrace(); - parseok = false; - } - if (ceroot == null) - parseok = false; - if (!parseok) - throw new Exception("CE Parse failed"); - - // Dump the parsed CE for comparison purposes - String cedump = ceroot.toConstraintString(); - if (prop_visual) - visual("|" + testset.constraint + "|", cedump); - results += (cedump + "\n"); - if (prop_diff) { // compare with baseline - // Read the baseline file - String baselinecontent = testset.expected; - pass = same(getTitle(), baselinecontent, results); - } - return pass; - } - - - //////////////////////////////////// - // Data for the tests - - String CE1_DMR = "" + " " - + " " + " " + " " + " " - + " " + " " + " " + " " - + " " + " " + " " + " " - + " " + " " + " " + " " - + " " + " " + " " + " " - + " " + " " + " " + " " - + " " + " " + " " + " " - + " " + " " + " " + " " - + ""; - - - String CE2_DMR = "" + " " - + " " + " " + " " + " " + ""; -} diff --git a/dap4/d4tests/src/test/java/dap4/test/TestParserDMR.java b/dap4/d4tests/src/test/java/dap4/test/TestParserDMR.java deleted file mode 100644 index 39b0779c6e..0000000000 --- a/dap4/d4tests/src/test/java/dap4/test/TestParserDMR.java +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.test; - -import dap4.core.dmr.DMRFactory; -import dap4.core.dmr.DapDataset; -import dap4.core.dmr.ErrorResponse; -import dap4.core.dmr.parser.DOM4Parser; -import dap4.core.dmr.parser.Dap4Parser; -import dap4.core.dmr.parser.ParseUtil; -import dap4.dap4lib.DMRPrinter; -import org.junit.Assert; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.io.File; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.lang.invoke.MethodHandles; -import java.util.ArrayList; -import java.util.List; - - -public class TestParserDMR extends DapTestCommon { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - - static final boolean PARSEDEBUG = false; - - // Do a special test to compare the dmr parser print output - // to the original input. This will often fail in non-essential - // ways, so it must be verified by hand. - static final boolean BACKCOMPARE = false; - - ////////////////////////////////////////////////// - // Constants - // Define the input set(s) - static protected final String DIR1 = "/TestParsers/dmrset"; // relative to dap4 root - static protected final String DIR2 = "/TestServlet/baseline"; // relative to dap4 root - static protected final String BASELINE = "/TestParsers/baseline"; // relative to dap4 root - - ////////////////////////////////////////////////// - - static protected class TestCase { - static public String resourceroot = null; - - String name; - String dir; - String ext; - String input; - String baseline; - - public TestCase(String dir, String name, String ext) { - this.name = name; - this.dir = dir; - this.ext = ext; - this.input = resourceroot + dir + "/" + name + "." + ext; - this.baseline = resourceroot + BASELINE + "/" + name + "." + "dmp"; - } - } - ////////////////////////////////////////////////// - // Instance methods - - // Test cases - protected List alltestcases = new ArrayList(); - protected List chosentests = new ArrayList(); - protected int flags = ParseUtil.FLAG_NONE; - protected boolean debug = false; - - ////////////////////////////////////////////////// - - public TestParserDMR() { - super(); - setControls(); - defineTestCases(); - chooseTestcases(); - } - - ////////////////////////////////////////////////// - // Misc. methods - - protected void chooseTestcases() { - if (false) { - chosentests = locate("test_struct_nested.hdf5"); - prop_visual = true; - assert chosentests.size() > 0 : "No tests chosen"; - } else { - for (TestCase tc : alltestcases) { - chosentests.add(tc); - } - } - } - - // Locate the test cases with given prefix - List locate(String prefix) { - List results = new ArrayList(); - for (TestCase ct : this.alltestcases) { - if (ct.name.startsWith(prefix)) - results.add(ct); - } - return results; - } - - protected void defineTestCases() { - String root = getResourceRoot(); - TestCase.resourceroot = root; - loadDir(DIR1, "dmr"); - loadDir(DIR2, "dmr"); - } - - void loadDir(String dirsuffix, String... extensions) { - File dir = new File(TestCase.resourceroot + dirsuffix); - File[] filelist = dir.listFiles(); - for (int i = 0; i < filelist.length; i++) { - File file = filelist[i]; - String name = file.getName(); - // check the extension - String match = null; - for (String ext : extensions) { - if (name.endsWith(ext)) { - match = ext; - break; - } - } - if (match != null) { - String basename = name.substring(0, name.length() - (match.length() + 1)); - TestCase ct = new TestCase(dirsuffix, basename, match); - addtestcase(ct); - } - } - } - - protected void addtestcase(TestCase ct) { - if (DEBUG) { - System.err.printf("Adding Test: input=%s%n", ct.input); - if (!new File(ct.input).exists()) - System.err.printf(" +++%s does not exist%n", ct.input); - System.err.printf(" baseline=%s%n", ct.baseline); - if (!new File(ct.baseline).exists()) - System.err.printf(" ***%s does not exist%n", ct.baseline); - System.err.flush(); - } - this.alltestcases.add(ct); - } - - void setControls() { - if (prop_controls == null) - return; - flags = ParseUtil.FLAG_NOCR; // always - for (int i = 0; i < prop_controls.length(); i++) { - char c = prop_controls.charAt(i); - switch (c) { - case 'w': - flags |= ParseUtil.FLAG_TRIMTEXT; - break; - case 'l': - flags |= ParseUtil.FLAG_ELIDETEXT; - break; - case 'e': - flags |= ParseUtil.FLAG_ESCAPE; - break; - case 'T': - flags |= ParseUtil.FLAG_TRACE; - break; - case 'd': - debug = true; - break; - default: - System.err.println("unknown X option: " + c); - break; - } - } - } - - ////////////////////////////////////////////////// - // Junit test method - - @Test - public void testParser() throws Exception { - int ntests = 0; - for (TestCase testcase : chosentests) { - ntests++; - doOneTest(testcase); - } - Assert.assertTrue("***Pass ", true); - } - - void doOneTest(TestCase testcase) throws Exception { - String document; - int i, c; - - String testinput = testcase.input; - String baseline = testcase.baseline; - - System.err.println("Testcase: " + testinput); - System.err.println("Baseline: " + baseline); - System.err.flush(); - - document = readfile(testinput); - - Dap4Parser parser = new DOM4Parser(new DMRFactory()); - if (PARSEDEBUG || debug) - parser.setDebugLevel(1); - - if (!parser.parse(document)) - throw new Exception("DMR Parse failed: " + testinput); - DapDataset dmr = parser.getDMR(); - ErrorResponse err = parser.getErrorResponse(); - if (err != null) - System.err.println("Error response:\n" + err.buildXML()); - if (dmr == null) { - System.err.println("No dataset created"); - return; - } - - // Dump the parsed DMR for comparison purposes - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - DMRPrinter dapprinter = new DMRPrinter(dmr, pw); - dapprinter.testprint(); - pw.close(); - sw.close(); - String testresult = sw.toString(); - - // Read the baseline file - String baselinecontent; - if (BACKCOMPARE) - baselinecontent = document; - else - baselinecontent = readfile(baseline); - if (prop_visual) { - visual("Baseline", baselinecontent); - visual("Output", testresult); - } - - if (prop_baseline) { - writefile(baseline, testresult); - } else if (prop_diff) { // compare with baseline - Assert.assertTrue("Files are different", same(getTitle(), baselinecontent, testresult)); - } - } -} diff --git a/dap4/d4tests/src/test/java/dap4/test/TestPrinter.java b/dap4/d4tests/src/test/java/dap4/test/TestPrinter.java deleted file mode 100644 index d22ff1ac97..0000000000 --- a/dap4/d4tests/src/test/java/dap4/test/TestPrinter.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2012, UCAR/Unidata. - * See the LICENSE file for more information. - */ - -package dap4.test; - -import dap4.cdm.nc2.DapNetcdfFile; -import dap4.core.dmr.DapDataset; -import dap4.core.util.*; -import dap4.core.data.DSP; -import dap4.dap4lib.DMRPrinter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ucar.nc2.*; -import java.io.IOException; -import java.io.PrintWriter; -import java.lang.invoke.MethodHandles; -import java.util.Map; - -/** - * Dump DMR and/or data part of a DSP - */ - -public class TestPrinter { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - - ////////////////////////////////////////////////// - // Constants - - // Could use enumset, but it is so ugly, - // so use good old OR'able flags - static final int NILFLAGS = 0; - static final int PERLINE = 1; // print xml attributes 1 per line - static final int NONAME = 2; // do not print name xml attribute - static final int NONNIL = 4; // print empty xml attributes - - ////////////////////////////////////////////////// - // Instance Variables - - protected NetcdfFile ncfile = null; // dsp can be extracted from this - protected DSP dsp = null; - protected DapDataset dmr = null; - protected PrintWriter writer = null; - protected Map varmap = null; - protected IndentWriter printer = null; - - ////////////////////////////////////////////////// - // Constructor(s) - - public TestPrinter(NetcdfFile ncfile, PrintWriter writer) { - try { - setDataset(ncfile); - } catch (DapException de) { - System.err.println("Bad NetcdfFile"); - System.exit(1); - } - setWriter(writer); - setVarMap(null); - } - - public TestPrinter(DSP dsp, PrintWriter writer) { - try { - setDSP(dsp); - } catch (DapException de) { - System.err.println("Bad DSP"); - System.exit(1); - } - setWriter(writer); - setVarMap(null); - } - - ////////////////////////////////////////////////// - // Accessors - - public void setWriter(PrintWriter writer) { - this.writer = writer; - this.printer = new IndentWriter(writer); - } - - public void setDataset(NetcdfFile ncfile) throws DapException { - this.ncfile = ncfile; - setDSP(((DapNetcdfFile) this.ncfile).getDSP()); - } - - public void setDSP(DSP dsp) throws DapException { - this.dsp = dsp; - this.dmr = dsp.getDMR(); - } - - public void setVarMap(Map map) { - this.varmap = map; - } - - ////////////////////////////////////////////////// - // Print methods - - public void flush() throws IOException { - printer.flush(); - writer.flush(); - } - - /** - * Print the CDM metadata for a NetcdfFile object in DMR format - * - * @throws IOException - */ - - public void print() throws IOException { - printer.setIndent(0); - DMRPrinter dmrprinter = new DMRPrinter(this.dmr, writer); - dmrprinter.print(); - dmrprinter.flush(); - } - -} // class TestPrinter diff --git a/dap4/d4tests/src/test/java/dap4/test/TestSerial.java b/dap4/d4tests/src/test/java/dap4/test/TestSerial.java deleted file mode 100644 index 1bab343587..0000000000 --- a/dap4/d4tests/src/test/java/dap4/test/TestSerial.java +++ /dev/null @@ -1,302 +0,0 @@ -package dap4.test; - -import dap4.core.util.DapUtil; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import ucar.nc2.dataset.NetcdfDataset; -import ucar.unidata.util.test.TestDir; -import ucar.unidata.util.test.UnitTestCommon; -import java.io.IOException; -import java.io.StringWriter; -import java.lang.invoke.MethodHandles; -import java.util.ArrayList; -import java.util.List; - -/** - * Test at the NetcdfDataset level; access .ser files on server. - */ -public class TestSerial extends DapTestCommon { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - - static protected final boolean DEBUG = false; - - static protected final String TESTINPUTDIR = "/testfiles"; - - static protected final boolean NCDUMP = true; // Use NcDumpW instead of D4Print - - static protected final String EXTENSION = (NCDUMP ? "ncdump" : "dmp"); - - static protected final String DAP4TAG = "#dap4"; - - static protected final String[] EMPTY = new String[] {""}; - - ////////////////////////////////////////////////// - // Constants - - static protected final String DATADIR = "src/test/data"; // relative to dap4 root - static protected final String TESTDATADIR = DATADIR + "/resources/TestCDMClient"; - static protected final String BASELINEDIR = TESTDATADIR + "/baseline"; - - static protected final String alpha = "abcdefghijklmnopqrstuvwxyz" + "abcdefghijklmnopqrstuvwxyz".toUpperCase(); - - ////////////////////////////////////////////////// - // Type Declarations - - static protected class ClientTest { - static protected String root = null; - static protected String server = null; - - String title; - String dataset; - String baselinepath; - String[] constraints; - - ClientTest(String dataset) { - this(dataset, EMPTY); - } - - ClientTest(String dataset, String[] constraints) { - this.title = dataset; - this.dataset = dataset; - this.baselinepath = root + "/" + BASELINEDIR + "/" + dataset; - assert constraints != null && constraints.length > 0; - this.constraints = constraints; - } - - String makeurl(String ce) { - StringBuilder url = new StringBuilder(); - url.append("http://"); - url.append(this.server); - url.append("/d4ts"); - url.append("/"); - url.append(TESTINPUTDIR); - url.append("/"); - url.append(this.dataset); - url.append("."); - url.append("nc"); - url.append(DAP4TAG); - if (ce != null && ce.length() > 0) { - url.append("?"); - url.append(DapTestCommon.CONSTRAINTTAG); - url.append("="); - url.append(ce); - } - return url.toString(); - } - - public String toString() { - StringBuilder buf = new StringBuilder(); - buf.append(dataset); - buf.append("{"); - if (constraints != null) - for (int i = 0; i < constraints.length; i++) { - if (i > 0) - buf.append(","); - String ce = constraints[i]; - buf.append(ce == null ? "all" : ce); - } - buf.append("}"); - return buf.toString(); - } - } - - ////////////////////////////////////////////////// - // Instance variables - - // Test cases - - protected List alltestcases = new ArrayList(); - protected List chosentests = new ArrayList(); - - protected String resourceroot = null; - protected String datasetpath = null; - - protected String sourceurl = null; - - ////////////////////////////////////////////////// - - @Before - public void setup() throws Exception { - this.resourceroot = getResourceRoot(); - this.resourceroot = DapUtil.absolutize(this.resourceroot); - this.datasetpath = this.resourceroot + "/" + BASELINEDIR; - // findServer(this.datasetpath); - // this.sourceurl = this.d4tsserver; - this.sourceurl = TestDir.dap4TestServer; - System.out.println("Using source url " + this.sourceurl); - defineAllTestcases(this.resourceroot, this.sourceurl); - chooseTestcases(); - } - - ////////////////////////////////////////////////// - // Define test cases - - void chooseTestcases() { - if (false) { - chosentests = locate("test_atomic_array"); - } else { - for (ClientTest tc : alltestcases) { - chosentests.add(tc); - } - } - } - - void defineAllTestcases(String root, String server) { - ClientTest.root = root; - ClientTest.server = server; - alltestcases.add(new ClientTest("test_one_var")); - alltestcases.add(new ClientTest("test_atomic_types")); - alltestcases.add(new ClientTest("test_atomic_array")); - - } - - ////////////////////////////////////////////////// - // Junit test method - - @Test - public void testSerial() throws Exception { - for (ClientTest testcase : chosentests) { - if (!doOneTest(testcase)) { - Assert.assertTrue(false); - } - } - } - - ////////////////////////////////////////////////// - // Primary test method - boolean doOneTest(ClientTest testcase) throws Exception { - boolean pass = true; - int testcounter = 0; - - System.out.println("Testcase: " + testcase.dataset); - - String[] constraints = testcase.constraints; - for (int i = 0; i < constraints.length; i++) { - String url = testcase.makeurl(constraints[i]); - NetcdfDataset ncfile = null; - try { - ncfile = openDataset(url); - } catch (Exception e) { - throw e; - } - - String usethisname = UnitTestCommon.extractDatasetname(url, null); - String metadata = (NCDUMP ? ncdumpmetadata(ncfile, usethisname) : null); - String data = (NCDUMP ? ncdumpdata(ncfile, usethisname) : null); - - if (prop_visual) { - visual("DMR: " + url, metadata); - visual("DAP: " + url, data); - } - - String testoutput = (NCDUMP ? data : metadata + data); - - String baselinefile = String.format("%s.nc.%s", testcase.baselinepath, EXTENSION); - if (prop_baseline) - writefile(baselinefile, testoutput); - - if (prop_diff) { // compare with baseline - // Read the baseline file(s) - String baselinecontent = readfile(baselinefile); - System.out.println("Comparison:"); - pass = pass && same(getTitle(), baselinecontent, testoutput); - System.out.println(pass ? "Pass" : "Fail"); - } - } - return pass; - } - - ////////////////////////////////////////////////// - // Dump methods - - String ncdumpmetadata(NetcdfDataset ncfile, String datasetname) { - boolean ok = false; - String metadata = null; - StringWriter sw = new StringWriter(); - - StringBuilder args = new StringBuilder("-strict"); - if (datasetname != null) { - args.append(" -datasetname "); - args.append(datasetname); - } - - // Print the meta-databuffer using these args to NcdumpW - ok = false; - try { - ok = ucar.nc2.NCdumpW.print(ncfile, args.toString(), sw, null); - } catch (IOException ioe) { - ioe.printStackTrace(); - ok = false; - } - try { - sw.close(); - } catch (IOException e) { - } ; - if (!ok) { - System.err.println("NcdumpW failed"); - System.exit(1); - } - return sw.toString(); - } - - String ncdumpdata(NetcdfDataset ncfile, String datasetname) { - boolean ok = false; - StringWriter sw = new StringWriter(); - - StringBuilder args = new StringBuilder("-strict -vall"); - if (datasetname != null) { - args.append(" -datasetname "); - args.append(datasetname); - } - - // Dump the databuffer - sw = new StringWriter(); - ok = false; - try { - ok = ucar.nc2.NCdumpW.print(ncfile, args.toString(), sw, null); - } catch (IOException ioe) { - ioe.printStackTrace(); - ok = false; - } - try { - sw.close(); - } catch (IOException e) { - } ; - if (!ok) { - System.err.println("NcdumpW failed"); - System.exit(1); - } - return sw.toString(); - } - - ////////////////////////////////////////////////// - // Utility methods - - - // Locate the test cases with given prefix - ClientTest locate1(String prefix) { - List tests = locate(prefix); - assert tests.size() > 0; - return tests.get(0); - } - - // Locate the test cases with given prefix and optional constraint - List locate(String prefix) { - List results = new ArrayList(); - for (ClientTest ct : this.alltestcases) { - if (!ct.dataset.startsWith(prefix)) - continue; - results.add(ct); - } - return results; - } - - static protected boolean report(String msg) { - System.err.println(msg); - return false; - } - -} // class TestConstraints diff --git a/dap4/d4tests/src/test/resources/logback-test.xml b/dap4/d4tests/src/test/resources/logback-test.xml deleted file mode 100644 index d24280d3c9..0000000000 --- a/dap4/d4tests/src/test/resources/logback-test.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - %highlight([%d{HH:mm:ss.SSS} %-5level %logger{36}]) %message%n - - - - - - - - - - - - - - - - diff --git a/dap4/grammars/Makefile b/dap4/grammars/Makefile index 8e2617365b..67d679ca09 100644 --- a/dap4/grammars/Makefile +++ b/dap4/grammars/Makefile @@ -1,26 +1,26 @@ -/* -Note: The bison parser has been replaced by a DOM parser+walker. -The bison code is left in the build tree in case it is useful -elsewhere. -*. +#Note: The bison parser has been replaced by a DOM parser+walker. +#The bison code is left in the build tree in case it is useful +#elsewhere. -DAP4TARGET=../d4core/src/main/java/dap4/core/dmr/parser/bison/Dap4BisonParser.java -CETARGET=../d4core/src/main/java/dap4/core/ce/parser/CEBisonParser.java +DAP4TARGET=../src/main/java/dap4/core/dmr/parser/bison/Dap4BisonParser.java + +CETARGET=../src/main/java/dap4/core/ce/parser/CEBisonParser.java .PHONEY: bison -all: bison +all: dap4 ce # Requires bison 3.0 or later -bison: +dap4:: bison -v dap4.y -o Dap4BisonParser.java +# if test -f ${DAP4TARGET} ; then rm ${DAP4TARGET}; fi +# cp Dap4BisonParser.java ${DAP4TARGET} + +ce:: bison -v ce.y -o CEBisonParser.java - if test -f ${DAP4TARGET} ; then rm ${DAP4TARGET}; fi if test -f ${CETARGET} ; then rm ${CETARGET}; fi - cp Dap4BisonParser.java ${DAP4TARGET} cp CEBisonParser.java ${CETARGET} - clean:: rm -fr Dap4BisonParser.java Dap4BisonParser.output diff --git a/dap4/grammars/ce.y b/dap4/grammars/ce.y index 721b333790..96db9cd9ed 100644 --- a/dap4/grammars/ce.y +++ b/dap4/grammars/ce.y @@ -3,15 +3,15 @@ %language "Java" %debug -%error-verbose +%define parse.error verbose /* Comment out in case we are using an older version of bison %define api.push-pull pull */ -%define abstract -%define package {dap4.core.ce.parser} -%define parser_class_name {CEBisonParser} +%define api.parser.abstract +%define api.package {dap4.core.ce.parser} +%define api.parser.class {CEBisonParser} %define throws {ParseException} %define lex_throws {ParseException} @@ -60,7 +60,7 @@ abstract CEAST.SliceList slicelist(CEAST.SliceList list, Slice slice); %type slice subslice %type filter predicate %type dimredef -%type index +%type extent %type relop eqop %type clauselist %type segmentforest @@ -180,19 +180,19 @@ subslicelist: ; subslice: - index /* case 1 */ + extent /* case 1 */ {$$=subslice(1,$1,null,null);} - | index ':' index /* case 2 */ + | extent ':' extent /* case 2 */ {$$=subslice(2,$1,$3,null);} - | index ':' index ':' index /*case 3*/ + | extent ':' extent ':' extent /*case 3*/ {$$=subslice(3,$1,$5,$3);} - | index ':' /* case 4 */ + | extent ':' /* case 4 */ {$$=subslice(4,$1,null,null);} - | index ':' index ':' /* case 5 */ + | extent ':' extent ':' /* case 5 */ {$$=subslice(5,$1,null,$3);} ; -index: LONG ; +extent: LONG ; /* Semantics: The projection in a selection currently cannot have any diff --git a/dap4/d4core/src/main/java/dap4/core/ce/CEAST.java b/dap4/src/main/java/dap4/core/ce/CEAST.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/ce/CEAST.java rename to dap4/src/main/java/dap4/core/ce/CEAST.java diff --git a/dap4/d4core/src/main/java/dap4/core/ce/CECompiler.java b/dap4/src/main/java/dap4/core/ce/CECompiler.java similarity index 97% rename from dap4/d4core/src/main/java/dap4/core/ce/CECompiler.java rename to dap4/src/main/java/dap4/core/ce/CECompiler.java index 7e04417c0a..69b8ced85a 100644 --- a/dap4/d4core/src/main/java/dap4/core/ce/CECompiler.java +++ b/dap4/src/main/java/dap4/core/ce/CECompiler.java @@ -69,7 +69,7 @@ protected void compileAST(CEAST ast) throws DapException { dimredef(ast); break; default: - assert false : "uknown CEAST node type"; + throw new IllegalStateException("unknown CEAST node type = " + ast.sort); } } @@ -118,7 +118,7 @@ protected DapVariable compilesegment(CEAST ast) throws DapException { node = seq.findByName(ast.name); break; default: - assert false : "Container cannot be atomic variable"; + throw new DapException("Container cannot be atomic variable, sort = " + parent.getSort()); } default: throw new DapException("relative names must be WRT to structure|dataset object: " + parent.getFQN()); diff --git a/dap4/d4core/src/main/java/dap4/core/ce/CEConstraint.java b/dap4/src/main/java/dap4/core/ce/CEConstraint.java similarity index 84% rename from dap4/d4core/src/main/java/dap4/core/ce/CEConstraint.java rename to dap4/src/main/java/dap4/core/ce/CEConstraint.java index 667cded009..703def6799 100644 --- a/dap4/d4core/src/main/java/dap4/core/ce/CEConstraint.java +++ b/dap4/src/main/java/dap4/core/ce/CEConstraint.java @@ -6,11 +6,11 @@ package dap4.core.ce; import dap4.core.ce.parser.CEParserImpl; -import dap4.core.data.Constraint; -import dap4.core.data.DataCursor; import dap4.core.dmr.*; import dap4.core.dmr.parser.ParseException; import dap4.core.util.*; +import dap4.dap4lib.D4Array; + import java.util.*; /** @@ -77,7 +77,7 @@ * inverse of iteration and that is fairly tricky. */ -public class CEConstraint implements Constraint { +public class CEConstraint { ////////////////////////////////////////////////// // Constants @@ -97,8 +97,6 @@ protected static enum Expand { NONE, EXPANDED, CONTRACTED } - ; - protected static class Segment { DapVariable var; List slices; // projection slices for this variable @@ -142,109 +140,6 @@ public String toString() { } } - /* - * static protected class ReferenceIterator implements Iterator - * { - * - * ////////////////////////////////////////////////// - * // Instance Variables - * - * List list = new ArrayList<>(); - * Iterator listiter = null; - ** - * - * @param ce the constraint over which to iterate - * - * @throws DapException - * - * public ReferenceIterator(CEConstraint ce) - * throws DapException - * { - * list.addAll(ce.dimrefs); - * list.addAll(ce.enums); - * list.addAll(ce.variables); - * listiter = list.iterator(); - * } - * - * ////////////////////////////////////////////////// - * // Iterator Interface - * - * public boolean hasNext() - * { - * return listiter.hasNext(); - * } - * - * public DapNode next() - * { - * return listiter.next(); - * } - * - * public void remove() - * { - * throw new UnsupportedOperationException(); - * } - * - * } - * - * static protected class FilterIterator implements Iterator - * { - * protected DapSequence seq; - * protected DataCursor data; - * protected long nrecords; - * protected CEAST filter; - * - * protected int recno; - * protected DataCursor current; - * CEConstraint ce; - * - * public FilterIterator(CEConstraint ce, DapSequence seq, DataCursor data, CEAST filter) - * { - * this.ce = ce; - * this.filter = filter; - * this.seq = seq; - * this.data = data; - * this.nrecords = data.getRecordCount(); - * this.recno = 0; // actually recno of next record to read - * this.current = null; - * } - * - * // Iterator interface - * public boolean hasNext() - * { - * if(recno < nrecords) - * return false; - * try { - * // look for next matching record starting at recno - * if(filter == null) { - * this.current = data.getRecord(this.recno); - * this.recno++; - * return true; - * } else for(;recno < nrecords;recno++) { - * this.current = data.getRecord(this.recno); - * if(ce.matches(this.seq, this.current, filter)) - * return true; - * } - * } catch (DapException de) { - * return false; - * } - * this.current = null; - * return false; - * } - * - * public DataCursor next() - * { - * if(this.recno >= nrecords || this.current == null) - * throw new NoSuchElementException(); - * return this.current; - * } - * - * public void remove() - * { - * throw new UnsupportedOperationException(); - * } - * } - */ - ////////////////////////////////////////////////// // class variables and methods @@ -268,22 +163,6 @@ public static void release(DapDataset dmr) { universals.remove(dmr); } - protected static DataCursor fieldValue(DapVariable sqvar, DapSequence seq, DataCursor record, String field) - throws DapException { - DapVariable dapv = seq.findByName(field); - if (dapv == null) - throw new DapException("Unknown variable in filter: " + field); - if (!dapv.isAtomic()) - throw new DapException("Non-atomic variable in filter: " + field); - if (dapv.getRank() > 0) - throw new DapException("Non-scalar variable in filter: " + field); - int fieldindex = seq.indexByName(field); - DataCursor da = (DataCursor) (record.readField(fieldindex)); - if (da == null) - throw new DapException("No such field: " + field); - return da; - } - protected static int compare(Object lvalue, Object rvalue) throws DapException { if (lvalue instanceof String && rvalue instanceof String) return ((String) lvalue).compareTo((String) rvalue); @@ -312,14 +191,14 @@ protected static int compare(Object lvalue, Object rvalue) throws DapException { * @throws DapException * @return the value of the expression (usually a Boolean) */ - protected Object eval(DapVariable var, DapSequence seq, DataCursor record, CEAST expr) throws DapException { + protected Object eval(DapVariable var, DapSequence seq, D4Array record, CEAST expr) throws DapException { switch (expr.sort) { case CONSTANT: return expr.value; case SEGMENT: - return fieldValue(var, seq, record, expr.name); + return null; // ???return fieldValue(var, seq, record, expr.name); case EXPR: Object lhs = eval(var, seq, record, expr.lhs); @@ -455,7 +334,7 @@ public List getConstrainedSlices(DapVariable var) throws DapException { Segment seg = findSegment(var); if (seg != null) slices = seg.slices; - if (slices == null) + if (slices == null || slices.isEmpty()) slices = Universal.universalSlices(var); return slices; } @@ -618,56 +497,6 @@ public boolean references(DapNode node) { return isref; } - /** - * Reference X Iterator - * Iterate over the variables and return - * those that are referenced. The order of - * return is preorder. - * Inputs: - * 1. the variable whose slices are to be iterated. - * - * @return ReferenceIterator - * @throws DapException if could not create. - */ - /* - * public ReferenceIterator - * referenceIterator() - * throws DapException - * { - * return new ReferenceIterator(this); - * } - */ - - ////////////////////////////////////////////////// - // Projection processing - - /** - * Projection X match - * This is actually rather difficult because it requires - * sort of the inverse of an odometer. For this reason, - * It's implementation is deferred. - */ - - /** - * Projection X Iterator - * This basically returns an odometer that - * will iterate over the appropriate values. - * - * @param var over whose dimensions to iterate - * @throws DapException - */ - /* - * public Odometer - * projectionIterator(DapVariable var) - * throws DapException - * { - * Segment seg = findSegment(var); - * if(seg == null) - * return null; - * return Odometer.factory(seg.slices, seg.dimset, false); - * } - */ - ////////////////////////////////////////////////// // Selection (Filter) processing @@ -682,7 +511,7 @@ public boolean references(DapNode node) { * @throws DapException * @return true if the filter matches the record */ - public boolean match(DapVariable sqvar, DapSequence seq, DataCursor rec) throws DapException { + public boolean match(DapVariable sqvar, DapSequence seq, D4Array rec) throws DapException { Segment sseq = findSegment(sqvar); if (sseq == null) return false; @@ -703,7 +532,7 @@ public boolean match(DapVariable sqvar, DapSequence seq, DataCursor rec) throws * @return true if a match * @throws DapException */ - protected boolean matches(DapVariable var, DapSequence seq, DataCursor rec, CEAST filter) throws DapException { + protected boolean matches(DapVariable var, DapSequence seq, D4Array rec, CEAST filter) throws DapException { Object value = eval(var, seq, rec, filter); return ((Boolean) value); } @@ -947,7 +776,7 @@ protected void computedimensions() throws DapException { if (newdim == null) newdim = dim0; // fill in the undefined last value - slice.setMaxSize(newdim.getSize()); + slice.setMaxSize((int) newdim.getSize()); slice.finish(); Slice newslice = null; if (slice.isConstrained()) { diff --git a/dap4/d4core/src/main/java/dap4/core/ce/Universal.java b/dap4/src/main/java/dap4/core/ce/Universal.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/ce/Universal.java rename to dap4/src/main/java/dap4/core/ce/Universal.java diff --git a/dap4/d4core/src/main/java/dap4/core/ce/parser/CEActions.java b/dap4/src/main/java/dap4/core/ce/parser/CEActions.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/ce/parser/CEActions.java rename to dap4/src/main/java/dap4/core/ce/parser/CEActions.java diff --git a/dap4/src/main/java/dap4/core/ce/parser/CEBisonParser.java b/dap4/src/main/java/dap4/core/ce/parser/CEBisonParser.java new file mode 100644 index 0000000000..61cc21b4a1 --- /dev/null +++ b/dap4/src/main/java/dap4/core/ce/parser/CEBisonParser.java @@ -0,0 +1,1545 @@ +/* A Bison parser, made by GNU Bison 3.8.2. */ + +/* + * Skeleton implementation for Bison LALR(1) parsers in Java + * + * Copyright (C) 2007-2015, 2018-2021 Free Software Foundation, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * As a special exception, you may create a larger work that contains + * part or all of the Bison parser skeleton and distribute that work + * under terms of your choice, so long as that work isn't itself a + * parser generator using the skeleton or a modified version thereof + * as a parser skeleton. Alternatively, if you modify or redistribute + * the parser skeleton itself, you may (at your option) remove this + * special exception, which will cause the skeleton and the resulting + * Bison output files to be licensed under the GNU General Public + * License without this special exception. + * + * This special exception was added by the Free Software Foundation in + * version 2.2 of Bison. + */ + +/* + * DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + * especially those whose name start with YY_ or yy_. They are + * private implementation details that can be changed or removed. + */ + +package dap4.core.ce.parser; + + + +import java.text.MessageFormat; +import java.util.ArrayList; +/* "%code imports" blocks. */ +/* "ce.y":18 */ + +import dap4.core.util.Slice; +import dap4.core.dmr.parser.ParseException; +import dap4.core.ce.CEAST; + +/* "CEBisonParser.java":51 */ + +/** + * A Bison parser, automatically generated from ce.y. + * + * @author LALR (1) parser skeleton written by Paolo Bonzini. + */ +abstract class CEBisonParser { + /** Version number for the Bison executable that generated this parser. */ + public static final String bisonVersion = "3.8.2"; + + /** Name of the skeleton that generated this parser. */ + public static final String bisonSkeleton = "lalr1.java"; + + + + /** + * True if verbose error messages are enabled. + */ + private boolean yyErrorVerbose = true; + + /** + * Whether verbose error messages are enabled. + */ + public final boolean getErrorVerbose() { + return yyErrorVerbose; + } + + /** + * Set the verbosity of error messages. + * + * @param verbose True to request verbose error messages. + */ + public final void setErrorVerbose(boolean verbose) { + yyErrorVerbose = verbose; + } + + + + public enum SymbolKind { + S_YYEOF(0), /* "end of file" */ + S_YYerror(1), /* error */ + S_YYUNDEF(2), /* "invalid token" */ + S_NAME(3), /* NAME */ + S_STRING(4), /* STRING */ + S_LONG(5), /* LONG */ + S_DOUBLE(6), /* DOUBLE */ + S_BOOLEAN(7), /* BOOLEAN */ + S_8_(8), /* ',' */ + S_NOT(9), /* NOT */ + S_10_(10), /* ';' */ + S_11_(11), /* '.' */ + S_12_(12), /* '{' */ + S_13_(13), /* '}' */ + S_14_(14), /* '[' */ + S_15_(15), /* ']' */ + S_16_(16), /* ':' */ + S_17_(17), /* '|' */ + S_18_(18), /* '!' */ + S_19_(19), /* '<' */ + S_20_(20), /* '=' */ + S_21_(21), /* '>' */ + S_22_(22), /* '~' */ + S_23_(23), /* '(' */ + S_24_(24), /* ')' */ + S_YYACCEPT(25), /* $accept */ + S_constraint(26), /* constraint */ + S_dimredeflist(27), /* dimredeflist */ + S_clauselist(28), /* clauselist */ + S_clause(29), /* clause */ + S_projection(30), /* projection */ + S_segmenttree(31), /* segmenttree */ + S_segmentforest(32), /* segmentforest */ + S_segment(33), /* segment */ + S_slicelist(34), /* slicelist */ + S_slice(35), /* slice */ + S_subslicelist(36), /* subslicelist */ + S_subslice(37), /* subslice */ + S_extent(38), /* extent */ + S_selection(39), /* selection */ + S_filter(40), /* filter */ + S_predicate(41), /* predicate */ + S_relop(42), /* relop */ + S_eqop(43), /* eqop */ + S_primary(44), /* primary */ + S_dimredef(45), /* dimredef */ + S_fieldname(46), /* fieldname */ + S_constant(47); /* constant */ + + + private final int yycode_; + + SymbolKind(int n) { + this.yycode_ = n; + } + + private static final SymbolKind[] values_ = {SymbolKind.S_YYEOF, SymbolKind.S_YYerror, SymbolKind.S_YYUNDEF, + SymbolKind.S_NAME, SymbolKind.S_STRING, SymbolKind.S_LONG, SymbolKind.S_DOUBLE, SymbolKind.S_BOOLEAN, + SymbolKind.S_8_, SymbolKind.S_NOT, SymbolKind.S_10_, SymbolKind.S_11_, SymbolKind.S_12_, SymbolKind.S_13_, + SymbolKind.S_14_, SymbolKind.S_15_, SymbolKind.S_16_, SymbolKind.S_17_, SymbolKind.S_18_, SymbolKind.S_19_, + SymbolKind.S_20_, SymbolKind.S_21_, SymbolKind.S_22_, SymbolKind.S_23_, SymbolKind.S_24_, SymbolKind.S_YYACCEPT, + SymbolKind.S_constraint, SymbolKind.S_dimredeflist, SymbolKind.S_clauselist, SymbolKind.S_clause, + SymbolKind.S_projection, SymbolKind.S_segmenttree, SymbolKind.S_segmentforest, SymbolKind.S_segment, + SymbolKind.S_slicelist, SymbolKind.S_slice, SymbolKind.S_subslicelist, SymbolKind.S_subslice, + SymbolKind.S_extent, SymbolKind.S_selection, SymbolKind.S_filter, SymbolKind.S_predicate, SymbolKind.S_relop, + SymbolKind.S_eqop, SymbolKind.S_primary, SymbolKind.S_dimredef, SymbolKind.S_fieldname, SymbolKind.S_constant}; + + static final SymbolKind get(int code) { + return values_[code]; + } + + public final int getCode() { + return this.yycode_; + } + + /* + * Return YYSTR after stripping away unnecessary quotes and + * backslashes, so that it's suitable for yyerror. The heuristic is + * that double-quoting is unnecessary unless the string contains an + * apostrophe, a comma, or backslash (other than backslash-backslash). + * YYSTR is taken from yytname. + */ + private static String yytnamerr_(String yystr) { + if (yystr.charAt(0) == '"') { + StringBuffer yyr = new StringBuffer(); + strip_quotes: for (int i = 1; i < yystr.length(); i++) + switch (yystr.charAt(i)) { + case '\'': + case ',': + break strip_quotes; + + case '\\': + if (yystr.charAt(++i) != '\\') + break strip_quotes; + /* Fall through. */ + default: + yyr.append(yystr.charAt(i)); + break; + + case '"': + return yyr.toString(); + } + } + return yystr; + } + + /* + * YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + * First, the terminals, then, starting at \a YYNTOKENS_, nonterminals. + */ + private static final String[] yytname_ = yytname_init(); + + private static final String[] yytname_init() { + return new String[] {"\"end of file\"", "error", "\"invalid token\"", "NAME", "STRING", "LONG", "DOUBLE", + "BOOLEAN", "','", "NOT", "';'", "'.'", "'{'", "'}'", "'['", "']'", "':'", "'|'", "'!'", "'<'", "'='", "'>'", + "'~'", "'('", "')'", "$accept", "constraint", "dimredeflist", "clauselist", "clause", "projection", + "segmenttree", "segmentforest", "segment", "slicelist", "slice", "subslicelist", "subslice", "extent", + "selection", "filter", "predicate", "relop", "eqop", "primary", "dimredef", "fieldname", "constant", null}; + } + + /* The user-facing name of this symbol. */ + public final String getName() { + return yytnamerr_(yytname_[yycode_]); + } + + }; + + + /** + * Communication interface between the scanner and the Bison-generated + * parser CEBisonParser. + */ + public interface Lexer { + /* Token kinds. */ + /** Token "end of file", to be returned by the scanner. */ + static final int YYEOF = 0; + /** Token error, to be returned by the scanner. */ + static final int YYerror = 256; + /** Token "invalid token", to be returned by the scanner. */ + static final int YYUNDEF = 257; + /** Token NAME, to be returned by the scanner. */ + static final int NAME = 258; + /** Token STRING, to be returned by the scanner. */ + static final int STRING = 259; + /** Token LONG, to be returned by the scanner. */ + static final int LONG = 260; + /** Token DOUBLE, to be returned by the scanner. */ + static final int DOUBLE = 261; + /** Token BOOLEAN, to be returned by the scanner. */ + static final int BOOLEAN = 262; + /** Token NOT, to be returned by the scanner. */ + static final int NOT = 263; + + /** Deprecated, use YYEOF instead. */ + public static final int EOF = YYEOF; + + + /** + * Method to retrieve the semantic value of the last scanned token. + * + * @return the semantic value of the last scanned token. + */ + Object getLVal(); + + /** + * Entry point for the scanner. Returns the token identifier corresponding + * to the next token and prepares to return the semantic value + * of the token. + * + * @return the token identifier corresponding to the next token. + */ + int yylex() throws ParseException; + + /** + * Emit an errorin a user-defined way. + * + * + * @param msg The string for the error message. + */ + void yyerror(String msg); + + + } + + + /** + * The object doing lexical analysis for us. + */ + private Lexer yylexer; + + + + /** + * Instantiates the Bison-generated parser. + * + * @param yylexer The scanner that will supply tokens to the parser. + */ + public CEBisonParser(Lexer yylexer) { + + this.yylexer = yylexer; + + } + + + private java.io.PrintStream yyDebugStream = System.err; + + /** + * The PrintStream on which the debugging output is printed. + */ + public final java.io.PrintStream getDebugStream() { + return yyDebugStream; + } + + /** + * Set the PrintStream on which the debug output is printed. + * + * @param s The stream that is used for debugging output. + */ + public final void setDebugStream(java.io.PrintStream s) { + yyDebugStream = s; + } + + private int yydebug = 0; + + /** + * Answer the verbosity of the debugging output; 0 means that all kinds of + * output from the parser are suppressed. + */ + public final int getDebugLevel() { + return yydebug; + } + + /** + * Set the verbosity of the debugging output; 0 means that all kinds of + * output from the parser are suppressed. + * + * @param level The verbosity level for debugging output. + */ + public final void setDebugLevel(int level) { + yydebug = level; + } + + + private int yynerrs = 0; + + /** + * The number of syntax errors so far. + */ + public final int getNumberOfErrors() { + return yynerrs; + } + + /** + * Print an error message via the lexer. + * + * @param msg The error message. + */ + public final void yyerror(String msg) { + yylexer.yyerror(msg); + } + + + protected final void yycdebugNnl(String s) { + if (0 < yydebug) + yyDebugStream.print(s); + } + + protected final void yycdebug(String s) { + if (0 < yydebug) + yyDebugStream.println(s); + } + + private final class YYStack { + private int[] stateStack = new int[16]; + private Object[] valueStack = new Object[16]; + + public int size = 16; + public int height = -1; + + public final void push(int state, Object value) { + height++; + if (size == height) { + int[] newStateStack = new int[size * 2]; + System.arraycopy(stateStack, 0, newStateStack, 0, height); + stateStack = newStateStack; + + Object[] newValueStack = new Object[size * 2]; + System.arraycopy(valueStack, 0, newValueStack, 0, height); + valueStack = newValueStack; + + size *= 2; + } + + stateStack[height] = state; + valueStack[height] = value; + } + + public final void pop() { + pop(1); + } + + public final void pop(int num) { + // Avoid memory leaks... garbage collection is a white lie! + if (0 < num) { + java.util.Arrays.fill(valueStack, height - num + 1, height + 1, null); + } + height -= num; + } + + public final int stateAt(int i) { + return stateStack[height - i]; + } + + public final Object valueAt(int i) { + return valueStack[height - i]; + } + + // Print the state stack on the debug stream. + public void print(java.io.PrintStream out) { + out.print("Stack now"); + + for (int i = 0; i <= height; i++) { + out.print(' '); + out.print(stateStack[i]); + } + out.println(); + } + } + + /** + * Returned by a Bison action in order to stop the parsing process and + * return success (true). + */ + public static final int YYACCEPT = 0; + + /** + * Returned by a Bison action in order to stop the parsing process and + * return failure (false). + */ + public static final int YYABORT = 1; + + + + /** + * Returned by a Bison action in order to start error recovery without + * printing an error message. + */ + public static final int YYERROR = 2; + + /** + * Internal return codes that are not supported for user semantic + * actions. + */ + private static final int YYERRLAB = 3; + private static final int YYNEWSTATE = 4; + private static final int YYDEFAULT = 5; + private static final int YYREDUCE = 6; + private static final int YYERRLAB1 = 7; + private static final int YYRETURN = 8; + + + private int yyerrstatus_ = 0; + + + /** + * Whether error recovery is being done. In this state, the parser + * reads token until it reaches a known state, and then restarts normal + * operation. + */ + public final boolean recovering() { + return yyerrstatus_ == 0; + } + + /** + * Compute post-reduction state. + * + * @param yystate the current state + * @param yysym the nonterminal to push on the stack + */ + private int yyLRGotoState(int yystate, int yysym) { + int yyr = yypgoto_[yysym - YYNTOKENS_] + yystate; + if (0 <= yyr && yyr <= YYLAST_ && yycheck_[yyr] == yystate) + return yytable_[yyr]; + else + return yydefgoto_[yysym - YYNTOKENS_]; + } + + private int yyaction(int yyn, YYStack yystack, int yylen) throws ParseException { + /* + * If YYLEN is nonzero, implement the default value of the action: + * '$$ = $1'. Otherwise, use the top of the stack. + * + * Otherwise, the following line sets YYVAL to garbage. + * This behavior is undocumented and Bison + * users should not rely upon it. + */ + Object yyval = (0 < yylen) ? yystack.valueAt(yylen - 1) : yystack.valueAt(0); + + yyReducePrint(yyn, yystack); + + switch (yyn) { + case 2: /* constraint: dimredeflist clauselist */ + if (yyn == 2) + /* "ce.y":103 */ + { + yyval = constraint(((CEAST.NodeList) (yystack.valueAt(0)))); + } ; + break; + + + case 5: /* clauselist: clause */ + if (yyn == 5) + /* "ce.y":113 */ + { + yyval = nodelist(null, ((CEAST) (yystack.valueAt(0)))); + } ; + break; + + + case 6: /* clauselist: clauselist ';' clause */ + if (yyn == 6) + /* "ce.y":115 */ + { + yyval = nodelist(((CEAST.NodeList) (yystack.valueAt(2))), ((CEAST) (yystack.valueAt(0)))); + } ; + break; + + + case 9: /* projection: segmenttree */ + if (yyn == 9) + /* "ce.y":133 */ + { + yyval = projection(((CEAST) (yystack.valueAt(0)))); + } ; + break; + + + case 10: /* segmenttree: segment */ + if (yyn == 10) + /* "ce.y":138 */ + { + yyval = segmenttree(null, ((CEAST) (yystack.valueAt(0)))); + } ; + break; + + + case 11: /* segmenttree: segmenttree '.' segment */ + if (yyn == 11) + /* "ce.y":140 */ + { + yyval = segmenttree(((CEAST) (yystack.valueAt(2))), ((CEAST) (yystack.valueAt(0)))); + } ; + break; + + + case 12: /* segmenttree: segmenttree '.' '{' segmentforest '}' */ + if (yyn == 12) + /* "ce.y":142 */ + { + yyval = segmenttree(((CEAST) (yystack.valueAt(4))), ((CEAST.NodeList) (yystack.valueAt(1)))); + } ; + break; + + + case 13: /* segmenttree: segmenttree '{' segmentforest '}' */ + if (yyn == 13) + /* "ce.y":144 */ + { + yyval = segmenttree(((CEAST) (yystack.valueAt(3))), ((CEAST.NodeList) (yystack.valueAt(1)))); + } ; + break; + + + case 14: /* segmentforest: segmenttree */ + if (yyn == 14) + /* "ce.y":149 */ + { + yyval = nodelist(null, ((CEAST) (yystack.valueAt(0)))); + } ; + break; + + + case 15: /* segmentforest: segmentforest ',' segmenttree */ + if (yyn == 15) + /* "ce.y":151 */ + { + yyval = nodelist(((CEAST.NodeList) (yystack.valueAt(2))), ((CEAST) (yystack.valueAt(0)))); + } ; + break; + + + case 16: /* segment: NAME */ + if (yyn == 16) + /* "ce.y":156 */ + { + yyval = segment(((String) (yystack.valueAt(0))), null); + } ; + break; + + + case 17: /* segment: NAME slicelist */ + if (yyn == 17) + /* "ce.y":158 */ + { + yyval = segment(((String) (yystack.valueAt(1))), ((CEAST.SliceList) (yystack.valueAt(0)))); + } ; + break; + + + case 18: /* slicelist: slice */ + if (yyn == 18) + /* "ce.y":163 */ + { + yyval = slicelist(null, ((Slice) (yystack.valueAt(0)))); + } ; + break; + + + case 19: /* slicelist: slicelist slice */ + if (yyn == 19) + /* "ce.y":165 */ + { + yyval = slicelist(((CEAST.SliceList) (yystack.valueAt(1))), ((Slice) (yystack.valueAt(0)))); + } ; + break; + + + case 20: /* slice: '[' ']' */ + if (yyn == 20) + /* "ce.y":170 */ + { + yyval = slice(null); + } ; + break; + + + case 21: /* slice: '[' subslicelist ']' */ + if (yyn == 21) + /* "ce.y":172 */ + { + yyval = slice(((CEAST.SliceList) (yystack.valueAt(1)))); + } ; + break; + + + case 22: /* subslicelist: subslice */ + if (yyn == 22) + /* "ce.y":177 */ + { + yyval = slicelist(null, ((Slice) (yystack.valueAt(0)))); + } ; + break; + + + case 23: /* subslicelist: subslicelist ',' subslice */ + if (yyn == 23) + /* "ce.y":179 */ + { + yyval = slicelist(((CEAST.SliceList) (yystack.valueAt(2))), ((Slice) (yystack.valueAt(0)))); + } ; + break; + + + case 24: /* subslice: extent */ + if (yyn == 24) + /* "ce.y":184 */ + { + yyval = subslice(1, ((String) (yystack.valueAt(0))), null, null); + } ; + break; + + + case 25: /* subslice: extent ':' extent */ + if (yyn == 25) + /* "ce.y":186 */ + { + yyval = subslice(2, ((String) (yystack.valueAt(2))), ((String) (yystack.valueAt(0))), null); + } ; + break; + + + case 26: /* subslice: extent ':' extent ':' extent */ + if (yyn == 26) + /* "ce.y":188 */ + { + yyval = subslice(3, ((String) (yystack.valueAt(4))), ((String) (yystack.valueAt(0))), + ((String) (yystack.valueAt(2)))); + } ; + break; + + + case 27: /* subslice: extent ':' */ + if (yyn == 27) + /* "ce.y":190 */ + { + yyval = subslice(4, ((String) (yystack.valueAt(1))), null, null); + } ; + break; + + + case 28: /* subslice: extent ':' extent ':' */ + if (yyn == 28) + /* "ce.y":192 */ + { + yyval = subslice(5, ((String) (yystack.valueAt(3))), null, ((String) (yystack.valueAt(1)))); + } ; + break; + + + case 30: /* selection: segmenttree '|' filter */ + if (yyn == 30) + /* "ce.y":203 */ + { + yyval = selection(((CEAST) (yystack.valueAt(2))), ((CEAST) (yystack.valueAt(0)))); + } ; + break; + + + case 32: /* filter: predicate ',' predicate */ + if (yyn == 32) + /* "ce.y":209 */ + { + yyval = logicalAnd(((CEAST) (yystack.valueAt(2))), ((CEAST) (yystack.valueAt(0)))); + } ; + break; + + + case 33: /* filter: '!' predicate */ + if (yyn == 33) + /* "ce.y":211 */ + { + yyval = logicalNot(((CEAST) (yystack.valueAt(0)))); + } ; + break; + + + case 34: /* predicate: primary relop primary */ + if (yyn == 34) + /* "ce.y":216 */ + { + yyval = predicate(((CEAST.Operator) (yystack.valueAt(1))), ((CEAST) (yystack.valueAt(2))), + ((CEAST) (yystack.valueAt(0)))); + } ; + break; + + + case 35: /* predicate: primary relop primary relop primary */ + if (yyn == 35) + /* "ce.y":218 */ + { + yyval = predicaterange(((CEAST.Operator) (yystack.valueAt(3))), ((CEAST.Operator) (yystack.valueAt(1))), + ((CEAST) (yystack.valueAt(4))), ((CEAST) (yystack.valueAt(2))), ((CEAST) (yystack.valueAt(0)))); + } ; + break; + + + case 36: /* predicate: primary eqop primary */ + if (yyn == 36) + /* "ce.y":220 */ + { + yyval = predicate(((CEAST.Operator) (yystack.valueAt(1))), ((CEAST) (yystack.valueAt(2))), + ((CEAST) (yystack.valueAt(0)))); + } ; + break; + + + case 37: /* relop: '<' '=' */ + if (yyn == 37) + /* "ce.y":224 */ + { + yyval = CEAST.Operator.LE; + } ; + break; + + + case 38: /* relop: '>' '=' */ + if (yyn == 38) + /* "ce.y":225 */ + { + yyval = CEAST.Operator.GE; + } ; + break; + + + case 39: /* relop: '<' */ + if (yyn == 39) + /* "ce.y":226 */ + { + yyval = CEAST.Operator.LT; + } ; + break; + + + case 40: /* relop: '>' */ + if (yyn == 40) + /* "ce.y":227 */ + { + yyval = CEAST.Operator.GT; + } ; + break; + + + case 41: /* eqop: '=' '=' */ + if (yyn == 41) + /* "ce.y":231 */ + { + yyval = CEAST.Operator.EQ; + } ; + break; + + + case 42: /* eqop: '!' '=' */ + if (yyn == 42) + /* "ce.y":232 */ + { + yyval = CEAST.Operator.NEQ; + } ; + break; + + + case 43: /* eqop: '~' '=' */ + if (yyn == 43) + /* "ce.y":233 */ + { + yyval = CEAST.Operator.REQ; + } ; + break; + + + case 46: /* primary: '(' predicate ')' */ + if (yyn == 46) + /* "ce.y":239 */ + { + yyval = ((CEAST) (yystack.valueAt(1))); + } ; + break; + + + case 47: /* dimredef: NAME '=' slice */ + if (yyn == 47) + /* "ce.y":245 */ + { + yyval = null; + dimredef(((String) (yystack.valueAt(2))), ((Slice) (yystack.valueAt(0)))); + } ; + break; + + + case 48: /* fieldname: NAME */ + if (yyn == 48) + /* "ce.y":249 */ + { + yyval = fieldname(((String) (yystack.valueAt(0)))); + } ; + break; + + + case 49: /* constant: STRING */ + if (yyn == 49) + /* "ce.y":253 */ + { + yyval = constant(CEAST.Constant.STRING, ((String) (yystack.valueAt(0)))); + } ; + break; + + + case 50: /* constant: LONG */ + if (yyn == 50) + /* "ce.y":254 */ + { + yyval = constant(CEAST.Constant.LONG, ((String) (yystack.valueAt(0)))); + } ; + break; + + + case 51: /* constant: DOUBLE */ + if (yyn == 51) + /* "ce.y":255 */ + { + yyval = constant(CEAST.Constant.DOUBLE, ((String) (yystack.valueAt(0)))); + } ; + break; + + + case 52: /* constant: BOOLEAN */ + if (yyn == 52) + /* "ce.y":256 */ + { + yyval = constant(CEAST.Constant.BOOLEAN, ((String) (yystack.valueAt(0)))); + } ; + break; + + + + /* "CEBisonParser.java":825 */ + + default: + break; + } + + yySymbolPrint("-> $$ =", SymbolKind.get(yyr1_[yyn]), yyval); + + yystack.pop(yylen); + yylen = 0; + /* Shift the result of the reduction. */ + int yystate = yyLRGotoState(yystack.stateAt(0), yyr1_[yyn]); + yystack.push(yystate, yyval); + return YYNEWSTATE; + } + + + /*--------------------------------. + | Print this symbol on YYOUTPUT. | + `--------------------------------*/ + + private void yySymbolPrint(String s, SymbolKind yykind, Object yyvalue) { + if (0 < yydebug) { + yycdebug(s + (yykind.getCode() < YYNTOKENS_ ? " token " : " nterm ") + yykind.getName() + " (" + + (yyvalue == null ? "(null)" : yyvalue.toString()) + ")"); + } + } + + + /** + * Parse input from the scanner that was specified at object construction + * time. Return whether the end of the input was reached successfully. + * + * @return true if the parsing succeeds. Note that this does not + * imply that there were no syntax errors. + */ + public boolean parse() throws ParseException, ParseException + + { + + + /* Lookahead token kind. */ + int yychar = YYEMPTY_; + /* Lookahead symbol kind. */ + SymbolKind yytoken = null; + + /* State. */ + int yyn = 0; + int yylen = 0; + int yystate = 0; + YYStack yystack = new YYStack(); + int label = YYNEWSTATE; + + + + /* Semantic value of the lookahead. */ + Object yylval = null; + + + + yycdebug("Starting parse"); + yyerrstatus_ = 0; + yynerrs = 0; + + /* Initialize the stack. */ + yystack.push(yystate, yylval); + + + + for (;;) + switch (label) { + /* + * New state. Unlike in the C/C++ skeletons, the state is already + * pushed when we come here. + */ + case YYNEWSTATE: + yycdebug("Entering state " + yystate); + if (0 < yydebug) + yystack.print(yyDebugStream); + + /* Accept? */ + if (yystate == YYFINAL_) + return true; + + /* Take a decision. First try without lookahead. */ + yyn = yypact_[yystate]; + if (yyPactValueIsDefault(yyn)) { + label = YYDEFAULT; + break; + } + + /* Read a lookahead token. */ + if (yychar == YYEMPTY_) { + + yycdebug("Reading a token"); + yychar = yylexer.yylex(); + yylval = yylexer.getLVal(); + + } + + /* Convert token to internal form. */ + yytoken = yytranslate_(yychar); + yySymbolPrint("Next token is", yytoken, yylval); + + if (yytoken == SymbolKind.S_YYerror) { + // The scanner already issued an error message, process directly + // to error recovery. But do not keep the error token as + // lookahead, it is too special and may lead us to an endless + // loop in error recovery. */ + yychar = Lexer.YYUNDEF; + yytoken = SymbolKind.S_YYUNDEF; + label = YYERRLAB1; + } else { + /* + * If the proper action on seeing token YYTOKEN is to reduce or to + * detect an error, take that action. + */ + yyn += yytoken.getCode(); + if (yyn < 0 || YYLAST_ < yyn || yycheck_[yyn] != yytoken.getCode()) { + label = YYDEFAULT; + } + + /* <= 0 means reduce or error. */ + else if ((yyn = yytable_[yyn]) <= 0) { + if (yyTableValueIsError(yyn)) { + label = YYERRLAB; + } else { + yyn = -yyn; + label = YYREDUCE; + } + } + + else { + /* Shift the lookahead token. */ + yySymbolPrint("Shifting", yytoken, yylval); + + /* Discard the token being shifted. */ + yychar = YYEMPTY_; + + /* + * Count tokens shifted since error; after three, turn off error + * status. + */ + if (yyerrstatus_ > 0) + --yyerrstatus_; + + yystate = yyn; + yystack.push(yystate, yylval); + label = YYNEWSTATE; + } + } + break; + + /*-----------------------------------------------------------. + | yydefault -- do the default action for the current state. | + `-----------------------------------------------------------*/ + case YYDEFAULT: + yyn = yydefact_[yystate]; + if (yyn == 0) + label = YYERRLAB; + else + label = YYREDUCE; + break; + + /*-----------------------------. + | yyreduce -- Do a reduction. | + `-----------------------------*/ + case YYREDUCE: + yylen = yyr2_[yyn]; + label = yyaction(yyn, yystack, yylen); + yystate = yystack.stateAt(0); + break; + + /*------------------------------------. + | yyerrlab -- here on detecting error | + `------------------------------------*/ + case YYERRLAB: + /* If not already recovering from an error, report this error. */ + if (yyerrstatus_ == 0) { + ++yynerrs; + if (yychar == YYEMPTY_) + yytoken = null; + yyreportSyntaxError(new Context(this, yystack, yytoken)); + } + + if (yyerrstatus_ == 3) { + /* + * If just tried and failed to reuse lookahead token after an + * error, discard it. + */ + + if (yychar <= Lexer.YYEOF) { + /* Return failure if at end of input. */ + if (yychar == Lexer.YYEOF) + return false; + } else + yychar = YYEMPTY_; + } + + /* + * Else will try to reuse lookahead token after shifting the error + * token. + */ + label = YYERRLAB1; + break; + + /*-------------------------------------------------. + | errorlab -- error raised explicitly by YYERROR. | + `-------------------------------------------------*/ + case YYERROR: + /* + * Do not reclaim the symbols of the rule which action triggered + * this YYERROR. + */ + yystack.pop(yylen); + yylen = 0; + yystate = yystack.stateAt(0); + label = YYERRLAB1; + break; + + /*-------------------------------------------------------------. + | yyerrlab1 -- common code for both syntax error and YYERROR. | + `-------------------------------------------------------------*/ + case YYERRLAB1: + yyerrstatus_ = 3; /* Each real token shifted decrements this. */ + + // Pop stack until we find a state that shifts the error token. + for (;;) { + yyn = yypact_[yystate]; + if (!yyPactValueIsDefault(yyn)) { + yyn += SymbolKind.S_YYerror.getCode(); + if (0 <= yyn && yyn <= YYLAST_ && yycheck_[yyn] == SymbolKind.S_YYerror.getCode()) { + yyn = yytable_[yyn]; + if (0 < yyn) + break; + } + } + + /* + * Pop the current state because it cannot handle the + * error token. + */ + if (yystack.height == 0) + return false; + + + yystack.pop(); + yystate = yystack.stateAt(0); + if (0 < yydebug) + yystack.print(yyDebugStream); + } + + if (label == YYABORT) + /* Leave the switch. */ + break; + + + + /* Shift the error token. */ + yySymbolPrint("Shifting", SymbolKind.get(yystos_[yyn]), yylval); + + yystate = yyn; + yystack.push(yyn, yylval); + label = YYNEWSTATE; + break; + + /* Accept. */ + case YYACCEPT: + return true; + + /* Abort. */ + case YYABORT: + return false; + } + } + + + + /** + * Information needed to get the list of expected tokens and to forge + * a syntax error diagnostic. + */ + public static final class Context { + Context(CEBisonParser parser, YYStack stack, SymbolKind token) { + yyparser = parser; + yystack = stack; + yytoken = token; + } + + private CEBisonParser yyparser; + private YYStack yystack; + + + /** + * The symbol kind of the lookahead token. + */ + public final SymbolKind getToken() { + return yytoken; + } + + private SymbolKind yytoken; + static final int NTOKENS = CEBisonParser.YYNTOKENS_; + + /** + * Put in YYARG at most YYARGN of the expected tokens given the + * current YYCTX, and return the number of tokens stored in YYARG. If + * YYARG is null, return the number of expected tokens (guaranteed to + * be less than YYNTOKENS). + */ + int getExpectedTokens(SymbolKind yyarg[], int yyargn) { + return getExpectedTokens(yyarg, 0, yyargn); + } + + int getExpectedTokens(SymbolKind yyarg[], int yyoffset, int yyargn) { + int yycount = yyoffset; + int yyn = yypact_[this.yystack.stateAt(0)]; + if (!yyPactValueIsDefault(yyn)) { + /* + * Start YYX at -YYN if negative to avoid negative + * indexes in YYCHECK. In other words, skip the first + * -YYN actions for this state because they are default + * actions. + */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST_ - yyn + 1; + int yyxend = yychecklim < NTOKENS ? yychecklim : NTOKENS; + for (int yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck_[yyx + yyn] == yyx && yyx != SymbolKind.S_YYerror.getCode() + && !yyTableValueIsError(yytable_[yyx + yyn])) { + if (yyarg == null) + yycount += 1; + else if (yycount == yyargn) + return 0; // FIXME: this is incorrect. + else + yyarg[yycount++] = SymbolKind.get(yyx); + } + } + if (yyarg != null && yycount == yyoffset && yyoffset < yyargn) + yyarg[yycount] = null; + return yycount - yyoffset; + } + } + + + + private int yysyntaxErrorArguments(Context yyctx, SymbolKind[] yyarg, int yyargn) { + /* + * There are many possibilities here to consider: + * - If this state is a consistent state with a default action, + * then the only way this function was invoked is if the + * default action is an error action. In that case, don't + * check for expected tokens because there are none. + * - The only way there can be no lookahead present (in tok) is + * if this state is a consistent state with a default action. + * Thus, detecting the absence of a lookahead is sufficient to + * determine that there is no unexpected or expected token to + * report. In that case, just report a simple "syntax error". + * - Don't assume there isn't a lookahead just because this + * state is a consistent state with a default action. There + * might have been a previous inconsistent state, consistent + * state with a non-default action, or user semantic action + * that manipulated yychar. (However, yychar is currently out + * of scope during semantic actions.) + * - Of course, the expected token list depends on states to + * have correct lookahead information, and it depends on the + * parser not to perform extra reductions after fetching a + * lookahead from the scanner and before detecting a syntax + * error. Thus, state merging (from LALR or IELR) and default + * reductions corrupt the expected token list. However, the + * list is correct for canonical LR with one exception: it + * will still contain any token that will not be accepted due + * to an error action in a later state. + */ + int yycount = 0; + if (yyctx.getToken() != null) { + if (yyarg != null) + yyarg[yycount] = yyctx.getToken(); + yycount += 1; + yycount += yyctx.getExpectedTokens(yyarg, 1, yyargn); + } + return yycount; + } + + + /** + * Build and emit a "syntax error" message in a user-defined way. + * + * @param ctx The context of the error. + */ + private void yyreportSyntaxError(Context yyctx) { + if (yyErrorVerbose) { + final int argmax = 5; + SymbolKind[] yyarg = new SymbolKind[argmax]; + int yycount = yysyntaxErrorArguments(yyctx, yyarg, argmax); + String[] yystr = new String[yycount]; + for (int yyi = 0; yyi < yycount; ++yyi) { + yystr[yyi] = yyarg[yyi].getName(); + } + String yyformat; + switch (yycount) { + default: + case 0: + yyformat = "syntax error"; + break; + case 1: + yyformat = "syntax error, unexpected {0}"; + break; + case 2: + yyformat = "syntax error, unexpected {0}, expecting {1}"; + break; + case 3: + yyformat = "syntax error, unexpected {0}, expecting {1} or {2}"; + break; + case 4: + yyformat = "syntax error, unexpected {0}, expecting {1} or {2} or {3}"; + break; + case 5: + yyformat = "syntax error, unexpected {0}, expecting {1} or {2} or {3} or {4}"; + break; + } + yyerror(new MessageFormat(yyformat).format(yystr)); + } else { + yyerror("syntax error"); + } + } + + /** + * Whether the given yypact_ value indicates a defaulted state. + * + * @param yyvalue the value to check + */ + private static boolean yyPactValueIsDefault(int yyvalue) { + return yyvalue == yypact_ninf_; + } + + /** + * Whether the given yytable_ + * value indicates a syntax error. + * + * @param yyvalue the value to check + */ + private static boolean yyTableValueIsError(int yyvalue) { + return yyvalue == yytable_ninf_; + } + + private static final byte yypact_ninf_ = -47; + private static final byte yytable_ninf_ = -1; + + /* + * YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + * STATE-NUM. + */ + private static final byte[] yypact_ = yypact_init(); + + private static final byte[] yypact_init() { + return new byte[] {-47, 40, 18, -47, -5, 23, 17, -47, -47, 26, -47, -47, 15, -5, -47, 35, -47, 50, 21, 50, -1, -47, + -47, 27, -47, 41, -47, -5, -47, 50, -47, 34, 28, -47, -47, -47, -47, -47, 9, 9, -47, 48, 29, -47, -47, 53, -47, + 53, -47, 31, 50, -47, -47, 36, 9, 39, 42, 43, 44, 45, 9, 9, -47, 51, -47, 34, -47, -47, -47, -47, -47, -47, -47, + 33, -47, 53, 9, -47, -47}; + } + + /* + * YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + * Performed when YYTABLE does not specify something else to do. Zero + * means the default is an error. + */ + private static final byte[] yydefact_ = yydefact_init(); + + private static final byte[] yydefact_init() { + return new byte[] {3, 0, 0, 1, 16, 0, 2, 5, 7, 9, 10, 8, 0, 17, 18, 0, 4, 0, 0, 0, 0, 29, 20, 0, 22, 24, 19, 0, 6, + 0, 11, 14, 0, 48, 49, 50, 51, 52, 0, 0, 30, 31, 0, 44, 45, 0, 21, 27, 47, 0, 0, 13, 33, 0, 0, 0, 39, 0, 40, 0, + 0, 0, 23, 25, 12, 15, 46, 32, 42, 37, 41, 38, 43, 34, 36, 28, 0, 26, 35}; + } + + /* YYPGOTO[NTERM-NUM]. */ + private static final byte[] yypgoto_ = yypgoto_init(); + + private static final byte[] yypgoto_init() { + return new byte[] {-47, -47, -47, -47, 49, -47, -19, 32, 52, -47, -2, -47, 24, -46, -47, -47, -31, 0, -47, -42, -47, + -47, -47}; + } + + /* YYDEFGOTO[NTERM-NUM]. */ + private static final byte[] yydefgoto_ = yydefgoto_init(); + + private static final byte[] yydefgoto_init() { + return new byte[] {0, 1, 2, 6, 7, 8, 9, 32, 10, 13, 14, 23, 24, 25, 11, 40, 41, 60, 61, 42, 16, 43, 44}; + } + + /* + * YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + * positive, shift that token. If negative, reduce the rule whose + * number is the opposite. If YYTABLE_NINF, syntax error. + */ + private static final byte[] yytable_ = yytable_init(); + + private static final byte[] yytable_init() { + return new byte[] {31, 63, 33, 34, 35, 36, 37, 52, 53, 12, 31, 26, 33, 34, 35, 36, 37, 38, 73, 74, 21, 4, 39, 67, 4, + 48, 15, 17, 5, 77, 22, 65, 39, 29, 78, 45, 50, 18, 19, 50, 3, 51, 46, 20, 64, 18, 19, 55, 56, 57, 58, 59, 56, 4, + 58, 27, 54, 47, 21, 68, 66, 49, 69, 70, 71, 72, 28, 75, 0, 62, 30, 0, 0, 76}; + } + + private static final byte[] yycheck_ = yycheck_init(); + + private static final byte[] yycheck_init() { + return new byte[] {19, 47, 3, 4, 5, 6, 7, 38, 39, 14, 29, 13, 3, 4, 5, 6, 7, 18, 60, 61, 5, 3, 23, 54, 3, 27, 3, 10, + 10, 75, 15, 50, 23, 12, 76, 8, 8, 11, 12, 8, 0, 13, 15, 17, 13, 11, 12, 18, 19, 20, 21, 22, 19, 3, 21, 20, 8, + 16, 5, 20, 24, 29, 20, 20, 20, 20, 17, 16, -1, 45, 18, -1, -1, 73}; + } + + /* + * YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + * state STATE-NUM. + */ + private static final byte[] yystos_ = yystos_init(); + + private static final byte[] yystos_init() { + return new byte[] {0, 26, 27, 0, 3, 10, 28, 29, 30, 31, 33, 39, 14, 34, 35, 3, 45, 10, 11, 12, 17, 5, 15, 36, 37, + 38, 35, 20, 29, 12, 33, 31, 32, 3, 4, 5, 6, 7, 18, 23, 40, 41, 44, 46, 47, 8, 15, 16, 35, 32, 8, 13, 41, 41, 8, + 18, 19, 20, 21, 22, 42, 43, 37, 38, 13, 31, 24, 41, 20, 20, 20, 20, 20, 44, 44, 16, 42, 38, 44}; + } + + /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ + private static final byte[] yyr1_ = yyr1_init(); + + private static final byte[] yyr1_init() { + return new byte[] {0, 25, 26, 27, 27, 28, 28, 29, 29, 30, 31, 31, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, + 37, 37, 37, 37, 37, 38, 39, 40, 40, 40, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 44, 44, 44, 45, 46, 47, 47, 47, + 47}; + } + + /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ + private static final byte[] yyr2_ = yyr2_init(); + + private static final byte[] yyr2_init() { + return new byte[] {0, 2, 2, 0, 3, 1, 3, 1, 1, 1, 1, 3, 5, 4, 1, 3, 1, 2, 1, 2, 2, 3, 1, 3, 1, 3, 5, 2, 4, 1, 3, 1, + 3, 2, 3, 5, 3, 2, 2, 1, 1, 2, 2, 2, 1, 1, 3, 3, 1, 1, 1, 1, 1}; + } + + + + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ + private static final short[] yyrline_ = yyrline_init(); + + private static final short[] yyrline_init() { + return new short[] {0, 101, 101, 106, 108, 112, 114, 119, 120, 132, 137, 139, 141, 143, 148, 150, 155, 157, 162, + 164, 169, 171, 176, 178, 183, 185, 187, 189, 191, 195, 202, 207, 208, 210, 215, 217, 219, 224, 225, 226, 227, + 231, 232, 233, 237, 238, 239, 244, 249, 253, 254, 255, 256}; + } + + + // Report on the debug stream that the rule yyrule is going to be reduced. + private void yyReducePrint(int yyrule, YYStack yystack) { + if (yydebug == 0) + return; + + int yylno = yyrline_[yyrule]; + int yynrhs = yyr2_[yyrule]; + /* Print the symbols being reduced, and their result. */ + yycdebug("Reducing stack by rule " + (yyrule - 1) + " (line " + yylno + "):"); + + /* The symbols being reduced. */ + for (int yyi = 0; yyi < yynrhs; yyi++) + yySymbolPrint(" $" + (yyi + 1) + " =", SymbolKind.get(yystos_[yystack.stateAt(yynrhs - (yyi + 1))]), + yystack.valueAt((yynrhs) - (yyi + 1))); + } + + /* + * YYTRANSLATE_(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + * as returned by yylex, with out-of-bounds checking. + */ + private static final SymbolKind yytranslate_(int t) { + // Last valid token kind. + int code_max = 263; + if (t <= 0) + return SymbolKind.S_YYEOF; + else if (t <= code_max) + return SymbolKind.get(yytranslate_table_[t]); + else + return SymbolKind.S_YYUNDEF; + } + + private static final byte[] yytranslate_table_ = yytranslate_table_init(); + + private static final byte[] yytranslate_table_init() { + return new byte[] {0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 18, 2, 2, 2, 2, 2, 2, 23, 24, 2, 2, 8, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 10, 19, 20, 21, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 14, 2, 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 12, 17, 13, 22, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 9}; + } + + + private static final int YYLAST_ = 73; + private static final int YYEMPTY_ = -2; + private static final int YYFINAL_ = 3; + private static final int YYNTOKENS_ = 25; + + /* Unqualified %code blocks. */ + /* "ce.y":24 */ + + + // Provide accessors for the parser lexer + Lexer getLexer() { + return this.yylexer; + } + + void setLexer(Lexer lexer) { + this.yylexer = lexer; + } + /* "ce.y":31 */ + // Abstract Parser actions + + abstract CEAST constraint(CEAST.NodeList clauses) throws ParseException; + + abstract CEAST projection(CEAST segmenttree) throws ParseException; + + abstract CEAST segment(String name, CEAST.SliceList slices) throws ParseException; + + abstract Slice slice(CEAST.SliceList subslices) throws ParseException; + + abstract Slice subslice(int state, String sfirst, String send, String sstride) throws ParseException; + + abstract void dimredef(String name, Slice slice) throws ParseException; + + abstract CEAST selection(CEAST projection, CEAST filter) throws ParseException; + + abstract CEAST logicalAnd(CEAST lhs, CEAST rhs) throws ParseException; + + abstract CEAST logicalNot(CEAST lhs) throws ParseException; + + abstract CEAST predicate(CEAST.Operator op, CEAST lhs, CEAST rhs) throws ParseException; + + abstract CEAST predicaterange(CEAST.Operator op1, CEAST.Operator op2, CEAST lhs, CEAST mid, CEAST rhs) + throws ParseException; + + abstract CEAST fieldname(String value) throws ParseException; + + abstract CEAST constant(CEAST.Constant sort, String value) throws ParseException; + + abstract CEAST segmenttree(CEAST tree, CEAST segment); + + abstract CEAST segmenttree(CEAST tree, CEAST.NodeList forest); + + abstract CEAST.NodeList nodelist(CEAST.NodeList list, CEAST ast); + + abstract CEAST.SliceList slicelist(CEAST.SliceList list, Slice slice); + + + /* "CEBisonParser.java":1534 */ + +} diff --git a/dap4/d4core/src/main/java/dap4/core/ce/parser/CELexer.java b/dap4/src/main/java/dap4/core/ce/parser/CELexer.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/ce/parser/CELexer.java rename to dap4/src/main/java/dap4/core/ce/parser/CELexer.java diff --git a/dap4/d4core/src/main/java/dap4/core/ce/parser/CEParserImpl.java b/dap4/src/main/java/dap4/core/ce/parser/CEParserImpl.java similarity index 97% rename from dap4/d4core/src/main/java/dap4/core/ce/parser/CEParserImpl.java rename to dap4/src/main/java/dap4/core/ce/parser/CEParserImpl.java index 51e89238ad..e1594c08c5 100644 --- a/dap4/d4core/src/main/java/dap4/core/ce/parser/CEParserImpl.java +++ b/dap4/src/main/java/dap4/core/ce/parser/CEParserImpl.java @@ -157,7 +157,7 @@ Slice subslice(int state, String sfirst, String send, String sstride) throws Par Slice x; try { - x = new Slice(first, stop, stride); + x = new Slice((int) first, (int) stop, (int) stride); } catch (DapException de) { throw new ParseException(de); } @@ -179,7 +179,7 @@ Slice subslice(int state, String sfirst, String send, String sstride) throws Par case 5: // [f:s:] break; default: - assert false : "Illegal slice case"; + throw new ParseException("Illegal slice case, state = " + state); } } catch (DapException de) { throw new ParseException(de); @@ -203,7 +203,7 @@ void dimredef(String name, Slice slice) throws ParseException { throw new ParseException("Attempt to redefine a non-existent shared dimension: " + name); // Verify that the slice is consistent with the shared dimension try { - slice.setMaxSize(dim.getSize()); + slice.setMaxSize((int) dim.getSize()); slice.finish(); } catch (DapException de) { throw new ParseException(de); diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DMRFactory.java b/dap4/src/main/java/dap4/core/dmr/DMRFactory.java similarity index 98% rename from dap4/d4core/src/main/java/dap4/core/dmr/DMRFactory.java rename to dap4/src/main/java/dap4/core/dmr/DMRFactory.java index b72dfcce3e..bb43efd184 100644 --- a/dap4/d4core/src/main/java/dap4/core/dmr/DMRFactory.java +++ b/dap4/src/main/java/dap4/core/dmr/DMRFactory.java @@ -43,7 +43,7 @@ public DapDimension newDimension(String name, long size) { return node; } - public DapMap newMap(DapVariable target) { + public DapMap newMap(String target) { DapMap node = new DapMap(target); if (DEBUG) debug(node); diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/DMRPrinter.java b/dap4/src/main/java/dap4/core/dmr/DMRPrinter.java similarity index 75% rename from dap4/d4lib/src/main/java/dap4/dap4lib/DMRPrinter.java rename to dap4/src/main/java/dap4/core/dmr/DMRPrinter.java index 57823889c2..be0d681dee 100644 --- a/dap4/d4lib/src/main/java/dap4/dap4lib/DMRPrinter.java +++ b/dap4/src/main/java/dap4/core/dmr/DMRPrinter.java @@ -3,13 +3,17 @@ * See the LICENSE file for more information. */ -package dap4.dap4lib; +package dap4.core.dmr; import dap4.core.ce.CEConstraint; -import dap4.core.dmr.*; import dap4.core.util.*; + import java.io.IOException; +import java.io.PrintStream; import java.io.PrintWriter; +import java.io.StringWriter; +import java.nio.ByteOrder; +import java.util.EnumSet; import java.util.List; import java.util.Map; @@ -43,6 +47,41 @@ public class DMRPrinter { public static final boolean ALLOWFIELDMAPS = false; + public static final String XMLDOCUMENTHEADER = ""; + + ////////////////////////////////////////////////// + // Types + + public enum Controls { + RESERVED; // print reserved attributes + } + + ////////////////////////////////////////////////// + // Static Methods + public static void print(DapDataset dmr, PrintStream stream) { + try { + PrintWriter pw = new PrintWriter(stream); + new DMRPrinter(dmr, pw).print(); + pw.close(); + } catch (IOException ioe) { + } ; + } + + public static String printAsString(DapDataset dmr) { + String s = null; + try { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + new DMRPrinter(dmr, pw).print(); + pw.close(); + s = sw.toString(); + sw.close(); + } catch (IOException ioe) { + s = null; + } ; + return s; + } + ////////////////////////////////////////////////// // Instance Variables @@ -51,7 +90,12 @@ public class DMRPrinter { protected DapDataset dmr = null; protected CEConstraint ce = null; protected ResponseFormat format = null; - protected boolean testing = false; + protected DapContext cxt = null; + // Following extracted from context + protected ByteOrder order = null; + protected Map localchecksummap = null; + + protected EnumSet controls = EnumSet.noneOf(Controls.class); ////////////////////////////////////////////////// // Constructor(s) @@ -63,12 +107,19 @@ public DMRPrinter(DapDataset dmr, PrintWriter writer) { } public DMRPrinter(DapDataset dmr, CEConstraint ce, PrintWriter writer, ResponseFormat format) { + this(dmr, ce, writer, format, null); + } + + public DMRPrinter(DapDataset dmr, CEConstraint ce, PrintWriter writer, ResponseFormat format, DapContext cxt) { this(); this.dmr = dmr; - this.ce = ce; + this.ce = (ce == null ? CEConstraint.getUniversal(dmr) : ce); this.writer = writer; this.printer = new IndentWriter(writer); this.format = (format == null ? ResponseFormat.XML : format); + this.cxt = (cxt == null ? new DapContext() : cxt); + this.order = (ByteOrder) this.cxt.get(DapConstants.DAP4ENDIANTAG); + this.localchecksummap = (Map) this.cxt.get("checksummap"); } ////////////////////////////////////////////////// @@ -85,6 +136,10 @@ public void close() { ////////////////////////////////////////////////// // External API + public void setControl(Controls ctl) { + this.controls.add(ctl); + } + /** * Print a DapDataset: * - as DMR @@ -94,25 +149,11 @@ public void close() { */ public void print() throws IOException { - if (this.ce == null) - this.ce = CEConstraint.getUniversal(dmr); - assert (this.ce != null); this.printer.setIndent(0); - printNode(dmr); // start printing at the root - printer.eol(); - } - - - /** - * Same as print() except certain items of - * information are suppressed. - * - * @throws IOException - */ - - public void testprint() throws IOException { - this.testing = true; - print(); + // Print XML Document Header + this.printer.marginPrintln(XMLDOCUMENTHEADER); + if (printNode(dmr)) // start printing at the root + printer.eol(); } ////////////////////////////////////////////////// @@ -133,21 +174,34 @@ public void testprint() throws IOException { * printDimrefs, printMaps * * @param node - the node to print + * @return true if anything was printed -- needed to control eol output * @throws IOException Note that the PrintWriter is global. */ - public void printNode(DapNode node) throws IOException { + public boolean printNode(DapNode node) throws IOException { if (node == null) - return; + return false; + // Do first level suppression check DapSort sort = node.getSort(); + switch (sort) { + case DATASET: + case GROUP: + case DIMENSION: + case ENUMERATION: + case VARIABLE: + if (!this.ce.references(node)) + return false; + break; + default: + break; + } + String dmrname = sort.getName(); switch (sort) { case DATASET:// treat like group case GROUP: - if (!this.ce.references(node)) - break; DapGroup group = (DapGroup) node; printer.marginPrint("<" + dmrname); int flags = (sort == DapSort.DATASET ? PERLINE : NILFLAGS); @@ -159,47 +213,46 @@ public void printNode(DapNode node) throws IOException { for (DapNode subnode : group.getDimensions()) { if (!this.ce.references(subnode)) continue; - printNode(subnode); - printer.eol(); + if (printNode(subnode)) + printer.eol(); } } if (group.getEnums().size() > 0) { for (DapNode subnode : group.getEnums()) { if (!this.ce.references(subnode)) continue; - printNode(subnode); - printer.eol(); + if (printNode(subnode)) + printer.eol(); } } if (group.getVariables().size() > 0) for (DapNode subnode : group.getVariables()) { if (!this.ce.references(subnode)) continue; - printNode(subnode); - printer.eol(); + if (printNode(subnode)) + printer.eol(); } printMetadata(node); - if (group.getGroups().size() > 0) + if (group.getGroups().size() > 0) { for (DapNode subnode : group.getGroups()) { if (!this.ce.references(subnode)) continue; - printNode(subnode); - printer.eol(); + if (printNode(subnode)) + printer.eol(); } + } printer.outdent(); printer.marginPrint(""); break; case DIMENSION: - if (!this.ce.references(node)) - break; DapDimension dim = (DapDimension) node; if (!dim.isShared()) - break; // ignore, here, anonymous dimensions + return false; // ignore, here, anonymous dimensions printer.marginPrint("<" + dmrname); printXMLAttributes(node, ce, NILFLAGS); if (dim.isUnlimited()) - printXMLAttribute(AbstractDSP.UCARTAGUNLIMITED, "1", NILFLAGS); + printXMLAttribute(DapAttribute.UCARTAGUNLIMITED, "1", NILFLAGS); if (hasMetadata(node)) { printer.println(">"); printMetadata(node); @@ -210,8 +263,6 @@ public void printNode(DapNode node) throws IOException { break; case ENUMERATION: - if (!this.ce.references(node)) - break; DapEnumeration en = (DapEnumeration) node; printer.marginPrint("<" + dmrname); printXMLAttributes(en, ce, NILFLAGS); @@ -230,14 +281,14 @@ public void printNode(DapNode node) throws IOException { break; case VARIABLE: - if (!this.ce.references(node)) - break; DapVariable var = (DapVariable) node; + if (var.getCount() == 0) // Has zero-length dimension + return false; DapType type = var.getBaseType(); printer.marginPrint("<" + type.getTypeSort().name()); printXMLAttributes(node, ce, NILFLAGS); if (type.isAtomic()) { - if ((hasMetadata(node) || hasDimensions(var) || hasMaps(var))) { + if ((hasMetadata(node) || hasDimensions(var) || hasMaps(var) || hasRequestData(var))) { printer.println(">"); printer.indent(); if (hasDimensions(var)) @@ -246,6 +297,8 @@ public void printNode(DapNode node) throws IOException { printMetadata(var); if (hasMaps(var)) printMaps(var); + if (hasRequestData(var)) + printRequestData(var); printer.outdent(); printer.marginPrint(""); } else @@ -257,23 +310,24 @@ public void printNode(DapNode node) throws IOException { for (DapVariable field : struct.getFields()) { if (!this.ce.references(field)) continue; - printNode(field); - printer.eol(); + if (printNode(field)) + printer.eol(); } printDimrefs(var); printMetadata(var); printMaps(var); + if (hasRequestData(var)) + printRequestData(var); printer.outdent(); printer.marginPrint(""); } else - assert false : "Illegal variable base type"; + throw new IllegalStateException("Illegal variable base type"); break; default: - assert (false) : "Unexpected sort: " + sort.name(); - break; + throw new IllegalStateException("Unexpected sort: " + sort.name()); } - + return true; } /** @@ -299,8 +353,8 @@ void printXMLAttributes(DapNode node, CEConstraint ce, int flags) throws IOExcep printXMLAttribute("dapVersion", dataset.getDapVersion(), flags); printXMLAttribute("dmrVersion", dataset.getDMRVersion(), flags); // boilerplate - printXMLAttribute("xmlns", "http://xml.opendap.org/ns/DAP/4.0#", flags); - printXMLAttribute("xmlns:dap", "http://xml.opendap.org/ns/DAP/4.0#", flags); + printXMLAttribute("xmlns", DapConstants.X_DAP_NS, flags); + printXMLAttribute("xmlns:dap", DapConstants.X_DAP_NS, flags); break; case DIMENSION: @@ -340,7 +394,7 @@ void printXMLAttributes(DapNode node, CEConstraint ce, int flags) throws IOExcep default: break; // node either has no attributes or name only } // switch - if (!this.testing) + if (controls.contains(Controls.RESERVED)) printReserved(node); if ((flags & PERLINE) != 0) { printer.outdent(2); @@ -387,11 +441,10 @@ protected void printReserved(DapNode node) throws DapException { } protected void printMetadata(DapNode node) throws IOException { - + boolean isdataset = node.getSort() == DapSort.DATASET; Map attributes = node.getAttributes(); - if (attributes.size() == 0) { + if (!isdataset && attributes.size() == 0) return; - } for (Map.Entry entry : attributes.entrySet()) { DapAttribute attr = entry.getValue(); assert (attr != null); @@ -407,6 +460,8 @@ protected void printMetadata(DapNode node) throws IOException { break; } } + if (isdataset) + printRequestMetaData(node); } protected void printContainerAttribute(DapAttribute attr) {} @@ -447,8 +502,6 @@ static boolean isSpecial(DapAttribute attr) { } void printAttribute(DapAttribute attr) throws IOException { - if (this.testing && isSpecial(attr)) - return; printer.marginPrint(" maps = parent.getMaps(); if (maps.size() == 0) return; @@ -529,11 +580,11 @@ void printMaps(DapVariable parent) throws IOException { // Optionally suppress field maps if (!ALLOWFIELDMAPS) { DapVariable mapvar = map.getVariable(); - if (mapvar.getParent() != null && !mapvar.getParent().getSort().isGroup()) + if (mapvar != null && mapvar.getParent() != null && !mapvar.getParent().getSort().isGroup()) continue; // Supress maps with non-top-level vars } // Separate out name attribute so we can use FQN. - String name = map.getFQN(); + String name = map.getTargetName(); assert (name != null) : "Illegal reference"; printer.marginPrint("DAP + * translations. + */ + void printRequestMetaData(DapNode dataset) throws DapException { + try { + // Add dap4.ce attribute + if (!this.ce.isUniversal()) { + String sce = this.ce.toConstraintString(); + DapAttribute a = new DapAttribute(DapConstants.CEATTRNAME, DapType.STRING); + a.setValues(new String[] {sce}); + printAttribute(a); + } + // Add + DapAttribute a = new DapAttribute(DapConstants.LITTLEENDIANATTRNAME, DapType.UINT8); + String[] value = new String[1]; + value[0] = (this.order == ByteOrder.LITTLE_ENDIAN ? "1" : "0"); + a.setValues(value); + printAttribute(a); + } catch (IOException ioe) { + throw new DapException(ioe); + } + } + + /** + * Print request-specific per-variable data + * Like printRequestMetaData, this is nasty hack + * to avoid modifying the DMR. + * + * @param var + */ + protected void printRequestData(DapVariable var) throws DapException { + try {// Add per-variable checksum + Long csum = localchecksummap.get(var); + if (csum == null) + return; + DapAttribute a = var.getChecksumAttribute(); + if (a == null) { + a = new DapAttribute(DapConstants.CHECKSUMATTRNAME, DapType.INT32); + a.setValues(new String[] {csum.toString()}); + } + printAttribute(a); + } catch (IOException ioe) { + throw new DapException(ioe); + } + } + ////////////////////////////////////////////////// // Misc. Static Utilities @@ -606,13 +706,17 @@ protected boolean hasMetadata(DapNode node) { return node.getAttributes().size() > 0; } - protected static boolean hasMaps(DapVariable var) { + protected boolean hasMaps(DapVariable var) { return var.getMaps().size() > 0; } - protected static boolean hasDimensions(DapVariable var) { + protected boolean hasDimensions(DapVariable var) { return var.getDimensions().size() > 0; } + protected boolean hasRequestData(DapVariable var) { + return localchecksummap != null && localchecksummap.containsKey(var); + } + } // class DapPrint diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapAttribute.java b/dap4/src/main/java/dap4/core/dmr/DapAttribute.java similarity index 78% rename from dap4/d4core/src/main/java/dap4/core/dmr/DapAttribute.java rename to dap4/src/main/java/dap4/core/dmr/DapAttribute.java index cebd220a4f..e890d32e0c 100644 --- a/dap4/d4core/src/main/java/dap4/core/dmr/DapAttribute.java +++ b/dap4/src/main/java/dap4/core/dmr/DapAttribute.java @@ -16,8 +16,17 @@ public class DapAttribute extends DapNode { ////////////////////////////////////////////////// - // Instance Variables + // Constants + + // Define reserved XML attributes + public static final String UCARTAGOPAQUE = "_edu.ucar.opaque.size"; + public static final String UCARTAGUNLIMITED = "_edu.ucar.isunlimited"; + // Not yet implemented + public static final String UCARTAGVLEN = "_edu.ucar.isvlen"; + public static final String UCARTAGORIGTYPE = "_edu.ucar.orig.type"; + ////////////////////////////////////////////////// + // Instance Variables protected List namespaceList = new ArrayList(); diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapAttributeSet.java b/dap4/src/main/java/dap4/core/dmr/DapAttributeSet.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/dmr/DapAttributeSet.java rename to dap4/src/main/java/dap4/core/dmr/DapAttributeSet.java diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapDataset.java b/dap4/src/main/java/dap4/core/dmr/DapDataset.java similarity index 98% rename from dap4/d4core/src/main/java/dap4/core/dmr/DapDataset.java rename to dap4/src/main/java/dap4/core/dmr/DapDataset.java index f723fb38ce..ffe08cbc68 100644 --- a/dap4/d4core/src/main/java/dap4/core/dmr/DapDataset.java +++ b/dap4/src/main/java/dap4/core/dmr/DapDataset.java @@ -10,8 +10,7 @@ import java.util.*; /** - * This class defines a non-Gridd Grid: - * i.e. one with an atomic type. + * This is the root object of a DMR tree. */ public class DapDataset extends DapGroup { @@ -49,6 +48,8 @@ public class DapDataset extends DapGroup { protected boolean finished = false; + protected Map checksummap = null; + ////////////////////////////////////////////////// // Constructors @@ -131,9 +132,8 @@ public CEConstraint getConstraint() { return this.ce; } - public DapDataset setConstraint(CEConstraint ce) { + public void setConstraint(CEConstraint ce) { this.ce = ce; - return this; } public String getDapVersion() { diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapDecl.java b/dap4/src/main/java/dap4/core/dmr/DapDecl.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/dmr/DapDecl.java rename to dap4/src/main/java/dap4/core/dmr/DapDecl.java diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapDimension.java b/dap4/src/main/java/dap4/core/dmr/DapDimension.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/dmr/DapDimension.java rename to dap4/src/main/java/dap4/core/dmr/DapDimension.java diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapEnumConst.java b/dap4/src/main/java/dap4/core/dmr/DapEnumConst.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/dmr/DapEnumConst.java rename to dap4/src/main/java/dap4/core/dmr/DapEnumConst.java diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapEnumeration.java b/dap4/src/main/java/dap4/core/dmr/DapEnumeration.java similarity index 81% rename from dap4/d4core/src/main/java/dap4/core/dmr/DapEnumeration.java rename to dap4/src/main/java/dap4/core/dmr/DapEnumeration.java index 4a869aa02f..88f8de9944 100644 --- a/dap4/d4core/src/main/java/dap4/core/dmr/DapEnumeration.java +++ b/dap4/src/main/java/dap4/core/dmr/DapEnumeration.java @@ -17,6 +17,33 @@ public class DapEnumeration extends DapType { public static final DapType DEFAULTBASETYPE = DapType.INT32; + ////////////////////////////////////////////////// + // Static Methods + + // See if two enumeration objects appear to be identical + public static boolean same(DapEnumeration enum1, DapEnumeration enum2) { + if (!enum1.getShortName().equals(enum2.getShortName())) + return false; + if (enum1.getBaseType() != enum2.getBaseType()) + return false; + List list1 = enum1.getEnumConsts(); + List list2 = enum2.getEnumConsts(); + if (list1.size() != list2.size()) + return false; + for (DapEnumConst ec1 : list1) { + boolean found = false; + for (DapEnumConst ec2 : list2) { + if (ec1.getShortName().equals(ec2.getShortName()) && ec1.getValue().equals(ec2.getValue())) { + found = true; + break; + } + } + if (!found) + return false; + } + return true; + } + ////////////////////////////////////////////////// // Instance Variables @@ -55,6 +82,10 @@ public DapType getBaseType() { return basetype; } + public List getEnumConsts() { + return constants; + } + public void setBaseType(DapType basetype) { // validate the base type if (!basetype.isIntegerType()) diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapGroup.java b/dap4/src/main/java/dap4/core/dmr/DapGroup.java similarity index 91% rename from dap4/d4core/src/main/java/dap4/core/dmr/DapGroup.java rename to dap4/src/main/java/dap4/core/dmr/DapGroup.java index 6cc648183a..27a7fc8ae8 100644 --- a/dap4/d4core/src/main/java/dap4/core/dmr/DapGroup.java +++ b/dap4/src/main/java/dap4/core/dmr/DapGroup.java @@ -68,8 +68,14 @@ public void addDecl(DapNode newdecl) throws DapException { // Look for name conflicts (ignore anonymous dimensions) if (newsort != DapSort.DIMENSION || newname != null) { for (DapNode decl : decls) { - if (newsort == decl.getSort() && newname.equals(decl.getShortName())) - throw new DapException("DapGroup: attempt to add duplicate decl: " + newname); + if (newsort == decl.getSort() && newname.equals(decl.getShortName())) { + if (false) { + // If we have duplicate enums, then just use the first one + if (newsort != DapSort.ENUMERATION || !DapEnumeration.same((DapEnumeration) decl, (DapEnumeration) newdecl)) + throw new DapException("DapGroup: attempt to add duplicate decl: " + newname); + } + return; // Duplicate enumeration + } } } else { // Anonymous DapDimension anon = (DapDimension) newdecl; @@ -132,7 +138,7 @@ void updateGroups(List groups) { assert (groups.size() == this.groups.size()) : "Update groups: not same size"; for (DapGroup g : groups) { if (!this.groups.contains(g)) - assert (false) : "Update groups: attempt to add new group"; + throw new IllegalStateException("Update groups: attempt to add new group"); } } @@ -160,6 +166,15 @@ public List getVariables() { ////////////////////////////////////////////////// // Lookup Functions + // Test for specific decl + public boolean containsDecl(DapNode decl) { + for (DapNode d : getDecls()) { + if (d == decl) + return true; + } + return false; + } + public DapNode findByName(String name, DapSort... sortset) { return findInGroup(name, sortset); } diff --git a/dap4/src/main/java/dap4/core/dmr/DapMap.java b/dap4/src/main/java/dap4/core/dmr/DapMap.java new file mode 100644 index 0000000000..18aa008c3c --- /dev/null +++ b/dap4/src/main/java/dap4/core/dmr/DapMap.java @@ -0,0 +1,65 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.core.dmr; + +/** + * This class holds a reference to a map variable. + */ + +public class DapMap extends DapNode { + DapVariable actualvar = null; + + String target = null; + + ////////////////////////////////////////////////// + // Constructors + + public DapMap() { + super(); + } + + public DapMap(String target) { + super(); + this.target = target; + // Use for toString() + this.setShortName(this.target); + } + + ////////////////////////////////////////////////// + // Get/set + + public String getTargetName() { + if (this.actualvar != null) + return this.actualvar.getFQN(); + else + return this.target; + } + + public DapVariable getVariable() { + return this.actualvar; + } + + public void setVariable(DapVariable var) { + this.actualvar = var; + } + + ////////////////////////////////////////////////// + // Overrides + + public String getShortName() { + if (actualvar != null) + return actualvar.getShortName(); + return null; + } + + public String getFQN() { + if (actualvar != null) + return actualvar.getFQN(); + return null; + } + +} // class DapMap + diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapNode.java b/dap4/src/main/java/dap4/core/dmr/DapNode.java similarity index 92% rename from dap4/d4core/src/main/java/dap4/core/dmr/DapNode.java rename to dap4/src/main/java/dap4/core/dmr/DapNode.java index 584e792383..80c28e7f8a 100644 --- a/dap4/d4core/src/main/java/dap4/core/dmr/DapNode.java +++ b/dap4/src/main/java/dap4/core/dmr/DapNode.java @@ -102,12 +102,10 @@ else if (this instanceof DapType) // must follow enumeration this.sort = DapSort.ATOMICTYPE; else if (this instanceof DapEnumConst) this.sort = DapSort.ENUMCONST; - else if (this instanceof DapEnumeration) - this.sort = DapSort.ENUMERATION; else if (this instanceof DapMap) this.sort = DapSort.MAP; else - assert (false) : "Internal error"; + throw new IllegalStateException("Unexpected type = " + this.getClass()); } public DapNode(String shortname) { @@ -240,7 +238,8 @@ public DapDataset getDataset() { assert curr != null; next = curr.getGroup(); } while (curr.getSort() != DapSort.DATASET); - setDataset((DapDataset) curr); + // setDataset((DapDataset) curr); + assert (curr != null); } return this.dataset; } @@ -311,7 +310,7 @@ public DapNode getParent() { /** * Set the parent DapNode; may sometimes be same as container, * but not always (think attributes or maps). - * Invariant: parent must be either a group or a variable. + * Invariant: parent must be either a group (including DapDataset) or a variable. * We can infer the container, so set that also. * * @param parent the proposed parent node @@ -319,9 +318,10 @@ public DapNode getParent() { public void setParent(DapNode parent) { assert this.parent == null; assert ((this.getSort() == DapSort.ENUMCONST && parent.getSort() == DapSort.ENUMERATION) - || parent.getSort().isa(DapSort.GROUP) || parent.getSort() == DapSort.VARIABLE - || parent.getSort() == DapSort.STRUCTURE || parent.getSort() == DapSort.SEQUENCE - || this.getSort() == DapSort.ATTRIBUTE || this.getSort() == DapSort.ATTRIBUTESET); + || parent.getSort().isa(DapSort.GROUP) || parent.getSort().isa(DapSort.DATASET) + || parent.getSort() == DapSort.VARIABLE || parent.getSort() == DapSort.STRUCTURE + || parent.getSort() == DapSort.SEQUENCE || this.getSort() == DapSort.ATTRIBUTE + || this.getSort() == DapSort.ATTRIBUTESET); this.parent = parent; } @@ -366,9 +366,8 @@ public String getFQN() { } /** - * Compute the path upto, and including - * some specified containing node (null=>root) - * The containing node is included as is this node. + * Compute the path upto, and including the root Dataset. + * This node is included as last element in path. * * @return ordered list of parent nodes */ @@ -430,8 +429,8 @@ public List getGroupPath() { * Compute the FQN of this node */ public String computefqn() { - List path = getPath(); // excludes root/wrt - StringBuilder fqn = new StringBuilder(); + List path = getPath(); // including root + StringBuilder sfqn = new StringBuilder(); DapNode parent = path.get(0); for (int i = 1; i < path.size(); i++) { // start at 1 to skip root DapNode current = path.get(i); @@ -440,23 +439,22 @@ public String computefqn() { case DATASET: case GROUP: case ENUMERATION: - fqn.append('/'); - fqn.append(Escape.backslashEscape(current.getShortName(), "/.")); + sfqn.append('/'); break; // These use '.' case STRUCTURE: case SEQUENCE: case ENUMCONST: case VARIABLE: - fqn.append('.'); - fqn.append(current.getEscapedShortName()); + sfqn.append('.'); break; default: // Others should never happen throw new IllegalArgumentException("Illegal FQN parent"); } + sfqn.append(current.getEscapedShortName()); parent = current; } - return fqn.toString(); + return sfqn.toString(); } ////////////////////////////////////////////////// @@ -471,10 +469,9 @@ public boolean isTopLevel() { public String toString() { String sortname = (sort == null ? "undefined" : sort.name()); - // String name = getFQN(); - String name = null; + String name = this.fqn; if (name == null) - name = getShortName(); + name = this.shortname; if (name == null) name = "?"; return sortname + "::" + name; diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapOtherXML.java b/dap4/src/main/java/dap4/core/dmr/DapOtherXML.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/dmr/DapOtherXML.java rename to dap4/src/main/java/dap4/core/dmr/DapOtherXML.java diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapSequence.java b/dap4/src/main/java/dap4/core/dmr/DapSequence.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/dmr/DapSequence.java rename to dap4/src/main/java/dap4/core/dmr/DapSequence.java diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapStructure.java b/dap4/src/main/java/dap4/core/dmr/DapStructure.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/dmr/DapStructure.java rename to dap4/src/main/java/dap4/core/dmr/DapStructure.java diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapType.java b/dap4/src/main/java/dap4/core/dmr/DapType.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/dmr/DapType.java rename to dap4/src/main/java/dap4/core/dmr/DapType.java diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/DapVariable.java b/dap4/src/main/java/dap4/core/dmr/DapVariable.java similarity index 93% rename from dap4/d4core/src/main/java/dap4/core/dmr/DapVariable.java rename to dap4/src/main/java/dap4/core/dmr/DapVariable.java index 483a2de6bb..8c1ba6f9d9 100644 --- a/dap4/d4core/src/main/java/dap4/core/dmr/DapVariable.java +++ b/dap4/src/main/java/dap4/core/dmr/DapVariable.java @@ -22,7 +22,7 @@ public class DapVariable extends DapNode implements DapDecl { protected DapType basetype = null; protected List dimensions = new ArrayList(); protected List maps = new ArrayList(); // maps are ordered - protected int checksum = 0; + protected DapAttribute attributechecksum = null; protected int fieldindex = -1; ////////////////////////////////////////////////// @@ -86,12 +86,12 @@ public void addMap(DapMap map) throws DapException { maps.add(map); } - public int getChecksum() { - return this.checksum; + public DapAttribute getChecksumAttribute() { + return this.attributechecksum; } - public void setChecksum(int csum) { - this.checksum = csum; + public void setAttributeChecksum(DapAttribute csum) { + this.attributechecksum = csum; } public int getFieldIndex() { diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/ErrorResponse.java b/dap4/src/main/java/dap4/core/dmr/ErrorResponse.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/dmr/ErrorResponse.java rename to dap4/src/main/java/dap4/core/dmr/ErrorResponse.java diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/TypeSort.java b/dap4/src/main/java/dap4/core/dmr/TypeSort.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/dmr/TypeSort.java rename to dap4/src/main/java/dap4/core/dmr/TypeSort.java diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/DOM4Parser.java b/dap4/src/main/java/dap4/core/dmr/parser/DOM4Parser.java similarity index 94% rename from dap4/d4core/src/main/java/dap4/core/dmr/parser/DOM4Parser.java rename to dap4/src/main/java/dap4/core/dmr/parser/DOM4Parser.java index d0d3c900b3..93a4a2c1df 100644 --- a/dap4/d4core/src/main/java/dap4/core/dmr/parser/DOM4Parser.java +++ b/dap4/src/main/java/dap4/core/dmr/parser/DOM4Parser.java @@ -70,6 +70,7 @@ public class DOM4Parser implements Dap4Parser { sortmap.put("sequence", DapSort.SEQUENCE); sortmap.put("structure", DapSort.STRUCTURE); sortmap.put("char", DapSort.VARIABLE); + sortmap.put("byte", DapSort.VARIABLE); sortmap.put("int8", DapSort.VARIABLE); sortmap.put("uint8", DapSort.VARIABLE); sortmap.put("int16", DapSort.VARIABLE); @@ -88,6 +89,7 @@ public class DOM4Parser implements Dap4Parser { typemap = new HashMap(); // se lower cas enames typemap.put("char", TypeSort.Char); + typemap.put("byte", TypeSort.UInt8); // alias typemap.put("int8", TypeSort.Int8); typemap.put("uint8", TypeSort.UInt8); typemap.put("int16", TypeSort.Int16); @@ -280,6 +282,12 @@ protected String pull(Node n, String name) { return attr.getNodeValue(); } + protected boolean notexists(Node n, String name) { + NamedNodeMap map = n.getAttributes(); + Node attr = map.getNamedItem(name); + return (attr == null); + } + ////////////////////////////////////////////////// // Attribute construction @@ -378,7 +386,7 @@ protected void addField(DapType t, DapVariable field) throws DapException { field.setParent(t); break; default: - assert false : "Container must be struct or seq"; + throw new IllegalStateException("Container must be struct or seq, sort = " + t.getTypeSort()); } } @@ -407,6 +415,12 @@ protected void recordattr(DapAttribute attr, DapNode parent) throws ParseExcepti } } + protected boolean isattributeset(Node node) { + String type = pull(node, "type"); + // See DAP4 Spec. PR https://github.com/OPENDAP/dap4-specification/pull/3 + return (nodesort(node) == DapSort.ATTRIBUTE && (isempty(type) || "Container".equalsIgnoreCase(type))); + } + ////////////////////////////////////////////////// // Recursive descent parser @@ -545,11 +559,8 @@ else if (type.isAtomic()) recorddecl(v.getBaseType(), group); recorddecl(v, group); break; - case ATTRIBUTESET: - recordattr(parseattrset(n), group); - break; case ATTRIBUTE: - recordattr(parseattr(n), group); + parseattr(n, group, null); break; case OTHERXML: recordattr(parseotherxml(n), group); @@ -692,8 +703,8 @@ protected DapDimension parsedimdef(Node node) throws ParseException { throw new ParseException("Dimdef: Empty dimension declaration size"); try { lvalue = Long.parseLong(size); - if (lvalue <= 0) - throw new ParseException("Dimdef: value <= 0: " + lvalue); + // Allow zero length dimensions ; they will be elided later + // if (lvalue <= 0) throw new ParseException("Dimdef: value <= 0: " + lvalue); } catch (NumberFormatException nfe) { throw new ParseException("Dimdef: non-integer value: " + size); } @@ -855,10 +866,7 @@ protected void fillmetadata(Node node, DapVariable var) throws ParseException { var.addMap(parsemap(n)); break; case ATTRIBUTE: - recordattr(parseattr(n), var); - break; - case ATTRIBUTESET: - recordattr(parseattrset(n), var); + parseattr(n, var, null); break; case OTHERXML: recordattr(parseotherxml(n), var); @@ -916,43 +924,27 @@ protected DapMap parsemap(Node node) throws ParseException { String name = pull(node, "name"); if (isempty(name)) throw new ParseException("Mapref: Empty map name"); - DapVariable target; - try { - target = (DapVariable) this.root.findByFQN(name, DapSort.VARIABLE, DapSort.SEQUENCE, DapSort.STRUCTURE); - } catch (DapException de) { - throw new ParseException(de); - } - if (target == null) - throw new ParseException("Mapref: undefined target variable: " + name); - // Verify that this is a legal map => - // 1. it is outside the scope of its parent if the parent - // is a structure. - DapNode container = target.getContainer(); - DapNode scope; - try { - scope = getParentScope(); - } catch (DapException de) { - throw new ParseException(de); - } - if ((container.getSort() == DapSort.STRUCTURE || container.getSort() == DapSort.SEQUENCE) && container == scope) - throw new ParseException("Mapref: map target variable not in outer scope: " + name); - DapMap map = factory.newMap(target); + DapMap map = factory.newMap(name); if (trace) trace("map.exit"); return map; } - protected DapAttribute parseattr(Node node) throws ParseException { + protected void parseattr(Node node, DapNode parent, String prefix) throws ParseException { try { if (trace) trace("attribute.enter"); + if (isattributeset(node)) { + parseattrset(node, parent); + return; + } String name = pull(node, "name"); if (isempty(name)) throw new ParseException("Attribute: Empty attribute name"); + if (prefix != null) + name = prefix + "." + name; String type = pull(node, "type"); - if (isempty(type)) - type = DEFAULTATTRTYPE; - else if ("Byte".equalsIgnoreCase(type)) + if ("Byte".equalsIgnoreCase(type)) type = "UInt8"; // Convert type to basetype DapType basetype = (DapType) this.root.lookup(type, DapSort.ENUMERATION, DapSort.ATOMICTYPE); @@ -998,44 +990,47 @@ else if ("Byte".equalsIgnoreCase(type)) values.set(i, ds); } attr.setValues(values.toArray(new String[values.size()])); + recordattr(attr, parent); scopestack.pop(); if (trace) trace("attribute.exit"); - return attr; + return; } catch (DapException e) { throw new ParseException(e); } } - protected DapAttributeSet parseattrset(Node node) throws ParseException { + // Attributes in an attributeset are flattened + protected void parseattrset(Node node, DapNode parent) throws ParseException { + parseattrset(node, parent, null); + } + + protected void parseattrset(Node node, DapNode parent, String prefix) throws ParseException { try { if (trace) trace("attrset.enter"); - String name = pull(node, "name"); - if (isempty(name)) - throw new ParseException("AttributeSet: Empty attribute name"); List nslist = parsenamespaces(node); - DapAttributeSet attrset = (DapAttributeSet) makeAttribute(DapSort.ATTRIBUTESET, name, null, nslist); - scopestack.push(attrset); + String setname = pull(node, "name"); + if (isempty(setname)) + throw new ParseException("Attribute: Empty attribute set name"); + String nextprefix = (prefix == null ? setname : prefix + "." + setname); List nodes = getSubnodes(node); for (int i = 0; i < nodes.size(); i++) { Node n = nodes.get(i); DapSort sort = nodesort(n); switch (sort) { case ATTRIBUTE: - recordattr(parseattr(n), attrset); - break; - case ATTRIBUTESET: - recordattr(parseattrset(n), attrset); + if (isattributeset(n)) + parseattrset(node, parent, nextprefix); + else + parseattr(n, parent, nextprefix); break; default: throw new ParseException("Unexpected attribute set element: " + n); } } - scopestack.pop(); if (trace) trace("attributeset.exit"); - return attrset; } catch (DapException e) { throw new ParseException(e); } diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/Dap4Parser.java b/dap4/src/main/java/dap4/core/dmr/parser/Dap4Parser.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/dmr/parser/Dap4Parser.java rename to dap4/src/main/java/dap4/core/dmr/parser/Dap4Parser.java diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/ParseException.java b/dap4/src/main/java/dap4/core/dmr/parser/ParseException.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/dmr/parser/ParseException.java rename to dap4/src/main/java/dap4/core/dmr/parser/ParseException.java diff --git a/dap4/d4core/src/main/java/dap4/core/dmr/parser/ParseUtil.java b/dap4/src/main/java/dap4/core/dmr/parser/ParseUtil.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/dmr/parser/ParseUtil.java rename to dap4/src/main/java/dap4/core/dmr/parser/ParseUtil.java diff --git a/dap4/src/main/java/dap4/core/interfaces/ArrayScheme.java b/dap4/src/main/java/dap4/core/interfaces/ArrayScheme.java new file mode 100644 index 0000000000..6fd1da577d --- /dev/null +++ b/dap4/src/main/java/dap4/core/interfaces/ArrayScheme.java @@ -0,0 +1,37 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.core.interfaces; + + +import dap4.core.dmr.DapType; +import dap4.core.dmr.DapVariable; + +/** + * Track kinds of Arrays + */ + +public enum ArrayScheme { + ATOMIC, STRUCTARRAY, STRUCTURE, SEQARRAY, SEQUENCE, RECORD; + + ////////////////////////////////////////////////// + // Static methods + + public static ArrayScheme schemeFor(DapVariable field) { + DapType ftype = field.getBaseType(); + ArrayScheme scheme = null; + boolean isscalar = field.getRank() == 0; + if (ftype.getTypeSort().isAtomic()) + scheme = ArrayScheme.ATOMIC; + else { + if (ftype.getTypeSort().isStructType()) + scheme = ArrayScheme.STRUCTARRAY; + else if (ftype.getTypeSort().isSeqType()) + scheme = ArrayScheme.SEQARRAY; + } + return scheme; + } +} + diff --git a/dap4/src/main/java/dap4/core/util/ChecksumMode.java b/dap4/src/main/java/dap4/core/util/ChecksumMode.java new file mode 100644 index 0000000000..9c341a0610 --- /dev/null +++ b/dap4/src/main/java/dap4/core/util/ChecksumMode.java @@ -0,0 +1,62 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.core.util; + +/** + * Define possible checksum modes: + * + */ +public enum ChecksumMode { + NONE, // => dap4.checksum was not specified + FALSE, // => dap4.checksum=false + TRUE; // => dap4.checksum=true + + public static final ChecksumMode dfalt = TRUE; // Must be TRUE|FALSE + + static final String[] trues = new String[] {"true", "on", "yes", "1"}; + static final String[] falses = new String[] {"false", "off", "no", "0"}; + + public static String toString(ChecksumMode mode) { + if (mode == null) + mode = ChecksumMode.dfalt; + switch (mode) { + case NONE: + return toString(ChecksumMode.FALSE); + case FALSE: + return "false"; + case TRUE: + return "true"; + } + return ChecksumMode.toString(dfalt); + } + + public static ChecksumMode modeFor(String s) { + if (s == null || s.length() == 0) + return null; + for (String f : falses) { + if (f.equalsIgnoreCase(s)) + return FALSE; + } + for (String t : trues) { + if (t.equalsIgnoreCase(s)) + return TRUE; + } + return null; + } + + /** + * force mode to be TRUE or FALSE + * + * @param mode + * @return TRUE|FALSE + */ + public static ChecksumMode asTrueFalse(ChecksumMode mode) { + if (mode == null || mode == NONE) + mode = dfalt; + return mode; + } + +} diff --git a/dap4/d4core/src/main/java/dap4/core/util/ConversionException.java b/dap4/src/main/java/dap4/core/util/ConversionException.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/util/ConversionException.java rename to dap4/src/main/java/dap4/core/util/ConversionException.java diff --git a/dap4/d4core/src/main/java/dap4/core/util/Convert.java b/dap4/src/main/java/dap4/core/util/Convert.java similarity index 99% rename from dap4/d4core/src/main/java/dap4/core/util/Convert.java rename to dap4/src/main/java/dap4/core/util/Convert.java index 8bbf6ef2ce..c0661008d5 100644 --- a/dap4/d4core/src/main/java/dap4/core/util/Convert.java +++ b/dap4/src/main/java/dap4/core/util/Convert.java @@ -304,6 +304,7 @@ else if (lvalues != null) for (int i = 0; i < count; i++) { fresult[i] = (float) dvalues[i]; } + result = fresult; break; case Float64: if (svalues != null) diff --git a/dap4/d4core/src/main/java/dap4/core/util/CoreTypeFcns.java b/dap4/src/main/java/dap4/core/util/CoreTypeFcns.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/util/CoreTypeFcns.java rename to dap4/src/main/java/dap4/core/util/CoreTypeFcns.java diff --git a/dap4/src/main/java/dap4/core/util/DapConstants.java b/dap4/src/main/java/dap4/core/util/DapConstants.java new file mode 100644 index 0000000000..d0e88c89c3 --- /dev/null +++ b/dap4/src/main/java/dap4/core/util/DapConstants.java @@ -0,0 +1,72 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.core.util; + +import dap4.core.dmr.*; +import java.io.*; +import java.math.BigInteger; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.charset.Charset; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Deque; +import java.util.List; + +/** + * DAP4 Related Constants both client and server side. + */ + +public abstract class DapConstants { + ////////////////////////////////////////////////// + // Constants + + // Default http protocol + // Default http protocol + public static final String HTTPSCHEME = "http:"; + + // XML Tags for DAP4 + public static final String X_DAP_SERVER = "TDS-5"; + public static final String X_DAP_VERSION = "4.0"; + public static final String X_DMR_VERSION = "1.0"; + public static final String X_DAP_NS = "http://xml.opendap.org/ns/DAP/4.0#"; + + // Known dap4 specific query tags + public static final String CONSTRAINTTAG = "dap4.ce"; + public static final String CHECKSUMTAG = "dap4.checksum"; // May also be in fragment + + // Define the Serialization Constants common to servlet and client + + // Use Bit flags to avoid heavyweight enumset + public static final int CHUNK_DATA = 0; // bit 0 : value 0 + public static final int CHUNK_END = 1; // bit 0 : value 1 + public static final int CHUNK_ERROR = 2; // bit 1 : value 1 + public static final int CHUNK_LITTLE_ENDIAN = 4; // bit 2: value 1 + + // Construct the union of all flags + public static final int CHUNK_ALL = CHUNK_DATA | CHUNK_ERROR | CHUNK_END | CHUNK_LITTLE_ENDIAN; + public static final int COUNTSIZE = 8; // databuffer as specified by the DAP4 spec + public static final int CHECKSUMSIZE = 4; // bytes if CRC32 + public static final String DIGESTER = "CRC32"; + public static final String CHECKSUMATTRNAME = "_DAP4_Checksum_CRC32"; + public static final String LITTLEENDIANATTRNAME = "_DAP4_Little_Endian"; + public static final String CEATTRNAME = "_" + CONSTRAINTTAG; + + + ////////////////////////////////////////////////// + // Constants via Enumerations + + public enum ChecksumSource { + LOCAL, REMOTE + }; + + ////////////////////////////////////////////////// + // Dap4 Annotations + + public static final String DAP4ENDIANTAG = "ucar.littleendian"; // value = 1 | 0 + // public static final String DAP4TESTTAG = "ucar.testing"; // value = NONE|DAP|DMR|ALL + +} diff --git a/dap4/src/main/java/dap4/core/util/DapContext.java b/dap4/src/main/java/dap4/core/util/DapContext.java new file mode 100644 index 0000000000..98d89ada3f --- /dev/null +++ b/dap4/src/main/java/dap4/core/util/DapContext.java @@ -0,0 +1,50 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.core.util; + +import java.util.List; +import java.util.Map; + +/** + * Provide a general map of Object->Object to serve + * to pass context/env info into various classes. + * Note that we cannot use e.g. java.util.Properties + * because it is a String->String map. + */ + +public class DapContext extends java.util.HashMap { + public DapContext() { + super(); + } + + public DapContext insert(Map map, boolean override) { + for (Map.Entry entry : map.entrySet()) { + if (!super.containsKey(entry.getKey()) || override) + super.put(entry.getKey(), entry.getValue()); + } + return this; + } + + public String toString() { + StringBuilder buf = new StringBuilder("DapContext{"); + boolean first = true; + for (Map.Entry entry : super.entrySet()) { + if (!first) + buf.append(","); + buf.append("|"); + buf.append(DapUtil.stringable(entry.getKey()).toString()); + buf.append("|"); + buf.append("="); + buf.append("|"); + buf.append(DapUtil.stringable(entry.getValue()).toString()); + buf.append("|"); + first = false; + } + buf.append("}"); + return buf.toString(); + } + +} diff --git a/dap4/src/main/java/dap4/core/util/DapDump.java b/dap4/src/main/java/dap4/core/util/DapDump.java new file mode 100644 index 0000000000..328276d5e5 --- /dev/null +++ b/dap4/src/main/java/dap4/core/util/DapDump.java @@ -0,0 +1,137 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + + +package dap4.core.util; + +import java.io.*; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.Arrays; + +public abstract class DapDump { + ////////////////////////////////////////////////// + // Provide a simple dump of binary data + // (Static method) + + ////////////////////////////////////////////////// + // Constants + + static int MAXLIMIT = 20000; + ////////////////////////////////////////////////// + // Provide a simple dump of binary data + + public static void dumpbytesbuf(ByteBuffer buf0, boolean skipdmr) { + int savepos = buf0.position(); + int limit0 = buf0.limit(); + int skipcount = 0; + if (limit0 > MAXLIMIT) + limit0 = MAXLIMIT; + if (limit0 >= buf0.limit()) + limit0 = buf0.limit(); + if (skipdmr) { + ByteOrder saveorder = buf0.order(); + buf0.order(ByteOrder.BIG_ENDIAN); // must read in network order + skipcount = buf0.getInt(); // dmr count + buf0.order(saveorder); + skipcount &= 0xFFFFFF; // mask off the flags to get true count + skipcount += 4; // skip the count also + } + byte[] bytes = new byte[(limit0 + 8) - skipcount]; + Arrays.fill(bytes, (byte) 0); + buf0.position(savepos + skipcount); + buf0.get(bytes, 0, limit0 - skipcount); + buf0.position(savepos); + + System.err.println("order=" + buf0.order()); + + ByteBuffer buf = ByteBuffer.wrap(bytes).order(buf0.order()); + dumpbytesbuf(buf); + } + + /** + * Dump the contents of a buffer from 0 to position + * + * @param buf0 byte buffer to dump + */ + public static void dumpbytesbuf(ByteBuffer buf0) { + int stop = buf0.limit(); + int size = stop + 8; + int savepos = buf0.position(); + assert savepos == 0; + byte[] bytes = new byte[size]; + Arrays.fill(bytes, (byte) 0); + buf0.get(bytes, 0, stop); + buf0.position(savepos); + ByteBuffer buf = ByteBuffer.wrap(bytes).order(buf0.order()); + buf.position(0); + buf.limit(size); + int i = 0; + try { + System.err.printf("[pos] X U S C\t I UI XI Sh USh%n"); + System.err.println("-------------------------------------------------------------------------------------"); + for (i = 0; buf.position() < stop; i++) { + savepos = buf.position(); + int iv = buf.getInt(); + buf.position(savepos); + long lv = buf.getLong(); + buf.position(savepos); + short sv = buf.getShort(); + buf.position(savepos); + byte b = buf.get(); + int ub = ((int) b) & 0x000000FF; + long uiv = ((long) iv) & 0xFFFFFFFFL; + int usv = ((int) sv) & 0xFFFF; + int ib = (int) b; + char c = (char) ub; + String s = Character.toString(c); + if (c == '\r') + s = "\\r"; + else if (c == '\n') + s = "\\n"; + else if (c < ' ' || c >= 0x7f) + s = "?"; + System.err.printf("[%03d] 0x%02x %03d %04d '%s'", i, ub, ub, ib, s); + System.err.printf("\t%12d %12d 0x%08x", iv, uiv, uiv); + System.err.printf(" %8d %8d", sv, usv); + System.err.println(); + System.err.flush(); + } + + } catch (Exception e) { + System.err.println("failure:" + e); + } finally { + System.err.flush(); + // new Exception().printStackTrace(System.err); + System.err.flush(); + } + } + + public static void dumpbytesstream(OutputStream stream, ByteOrder order, String tag) { + if (stream instanceof ByteArrayOutputStream) { + byte[] content = ((ByteArrayOutputStream) stream).toByteArray(); + dumpbytesraw(content, order, tag); + } + } + + public static void dumpbytesrawbuf(ByteBuffer buf, ByteOrder order, String tag) { + dumpbytesraw(buf.array(), 0, buf.limit(), order, tag); + } + + public static void dumpbytesraw(byte[] content, ByteOrder order, String tag) { + dumpbytesraw(content, 0, content.length, order, tag); + } + + public static void dumpbytesraw(byte[] content, int start, int len, ByteOrder order, String tag) { + System.err.println("++++++++++ " + tag + " ++++++++++ "); + ByteBuffer tmp = ByteBuffer.wrap(content).order(order); + tmp.position(start); + tmp.limit(len); + DapDump.dumpbytesbuf(tmp); + System.err.println("++++++++++ " + tag + " ++++++++++ "); + System.err.flush(); + } + +} diff --git a/dap4/d4core/src/main/java/dap4/core/util/DapException.java b/dap4/src/main/java/dap4/core/util/DapException.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/util/DapException.java rename to dap4/src/main/java/dap4/core/util/DapException.java diff --git a/dap4/d4core/src/main/java/dap4/core/util/DapIterator.java b/dap4/src/main/java/dap4/core/util/DapIterator.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/util/DapIterator.java rename to dap4/src/main/java/dap4/core/util/DapIterator.java diff --git a/dap4/d4core/src/main/java/dap4/core/util/DapSort.java b/dap4/src/main/java/dap4/core/util/DapSort.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/util/DapSort.java rename to dap4/src/main/java/dap4/core/util/DapSort.java diff --git a/dap4/d4core/src/main/java/dap4/core/util/DapUtil.java b/dap4/src/main/java/dap4/core/util/DapUtil.java similarity index 80% rename from dap4/d4core/src/main/java/dap4/core/util/DapUtil.java rename to dap4/src/main/java/dap4/core/util/DapUtil.java index 11f985b584..4030dc637d 100644 --- a/dap4/d4core/src/main/java/dap4/core/util/DapUtil.java +++ b/dap4/src/main/java/dap4/core/util/DapUtil.java @@ -6,6 +6,7 @@ package dap4.core.util; import dap4.core.dmr.*; + import java.io.*; import java.math.BigInteger; import java.nio.ByteBuffer; @@ -15,6 +16,8 @@ import java.util.ArrayList; import java.util.Deque; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * Misc. Utility methods @@ -33,30 +36,11 @@ public abstract class DapUtil // Should only contain static methods public static final ByteOrder NETWORK_ORDER = ByteOrder.BIG_ENDIAN; public static final ByteOrder NATIVE_ORDER = ByteOrder.nativeOrder(); - // Use Bit flags to avoid heavyweight enumset - public static final int CHUNK_DATA = 0; // bit 0 : value 0 - public static final int CHUNK_END = 1; // bit 0 : value 1 - public static final int CHUNK_ERROR = 2; // bit 1 : value 1 - public static final int CHUNK_LITTLE_ENDIAN = 4; // bit 2: value 1 - public static final int CHUNK_NOCHECKSUM = 8; // bit 2: value 1 - - // Construct the union of all flags - public static final int CHUNK_ALL = CHUNK_DATA | CHUNK_ERROR | CHUNK_END | CHUNK_LITTLE_ENDIAN; - public static final String LF = "\n"; public static final String CRLF = "\r\n"; public static final int CRLFSIZE = 2; - // static final public int CHECKSUMSIZE = 16; // bytes if MD5 - // static final public String DIGESTOR = "MD5"; - - public static final int CHECKSUMSIZE = 4; // bytes if CRC32 - public static final String DIGESTER = "CRC32"; - public static final String CHECKSUMATTRNAME = "_DAP4_Checksum_CRC32"; - public static final String LITTLEENDIANATTRNAME = "_DAP4_Little_Endian"; - public static final String CEATTRNAME = "_dap4.ce"; - - public static final String DRIVELETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + public static Pattern DAP4EXT_RE = Pattern.compile("^.*(.dmr|.dap|.dsr|.xml|.html)$"); ////////////////////////////////////////////////// // return last name part of an fqn; result will be escaped. @@ -240,7 +224,7 @@ public static String canonicalpath(String path) { path = path.substring(0, path.length() - 1); boolean abs = (path.length() > 0 && path.charAt(0) == '/'); if (abs) - path = path.substring(1); // temporary + path = path.substring(1); // temporarily remove leading '/' if (DapUtil.hasDriveLetter(path)) { // As a last step, lowercase the drive letter, if any path = path.substring(0, 1).toLowerCase() + path.substring(1); @@ -250,7 +234,10 @@ public static String canonicalpath(String path) { } public static String relativize(String path) { - if (path != null) { + if (path == null) + return path; + path = path.replace('\\', '/'); + if (path.length() > 0) { if (path.startsWith("/")) path = path.substring(1); if (hasDriveLetter(path)) @@ -315,6 +302,34 @@ public static byte[] readbinaryfile(InputStream stream) throws IOException { return bytes.toByteArray(); } + /** + * Read a limited number of bytes from a stream + * + * @param stream + * @param buffer into which to read + * @parm offset place to start read into buffer + * @param count amount to read; <= |buffer| + * @return amount actually read + * @throws IOException + */ + public static int readbinaryfilepartial(InputStream stream, byte[] buffer, int count) throws IOException { + try { + // Extract the stream into a bytebuffer + int offset = 0; + int remainder = count; + while (remainder > 0) { + int red = stream.read(buffer, offset, remainder); + if (red <= 0) + break; + remainder -= red; + offset += red; + } + return offset; + } catch (IOException ioe) { + throw new dap4.core.util.DapException(ioe); + } + } + public static String readtextfile(InputStream stream) throws IOException { StringBuilder buf = new StringBuilder(); InputStreamReader rdr = new InputStreamReader(stream, UTF8); @@ -345,7 +360,7 @@ public static List getStructurePath(DapVariable var) { structpath.add((DapVariable) node); break; default: - assert false : "Internal error"; + throw new IllegalStateException("Internal error, sort = " + node.getSort()); } } return structpath; @@ -361,6 +376,16 @@ public static String denullify(String path) { return (path == null ? "" : path); } + /** + * Convert null objects to "" + * + * @param obj + * @return obj or "" + */ + public static Object stringable(Object obj) { + return (obj == null ? "" : obj); + } + /** * Convert "" paths to null * @@ -490,17 +515,25 @@ public static String xrelpath(String path) { } /** - * return true if this path appears to start with a windows drive letter + * Return true if this path appears to start with a windows drive letter + * This tests the patterns "/x:/" and "x:/" * * @param path * @return true, if path has drive letter */ public static boolean hasDriveLetter(String path) { - boolean hasdr = false; - if (path != null && path.length() >= 2) { - hasdr = (DRIVELETTERS.indexOf(path.charAt(0)) >= 0 && path.charAt(1) == ':'); - } - return hasdr; + return XURI.hasDriveLetter(path); + } + + /** + * Convert a path of the form "/x:/" to "x:/" to expose drive letter; + * otherwise leave unchanged + * + * @param path + * @return repaired path + */ + public static String repairPath(String path) { + return XURI.hideDriveLetter(path); } /** @@ -587,9 +620,15 @@ public static String canonjoin(String prefix, String suffix) { prefix = DapUtil.canonicalpath(prefix); suffix = DapUtil.canonicalpath(suffix); result.append(prefix); - if (!prefix.endsWith("/")) - result.append("/"); - result.append(suffix.startsWith("/") ? suffix.substring(1) : suffix); + result.append("/"); + result.append(suffix); + // Remove // occurrences + while (true) { + int pos = result.indexOf("//"); + if (pos < 0) + break; + result.deleteCharAt(pos); + } return result.toString(); } @@ -611,84 +650,25 @@ public static String canonFileURL(String url) { return "file:" + absolutize(url); } - ////////////////////////////////////////////////// - - /** - * Helper functions for reading - */ - - /** - * Provide a helper function to convert an Index object to - * a slice list. - * - * @param indices indicate value to read - * @param template variable template - * @return corresponding List - * @throws DapException - */ - - public static List indexToSlices(Index indices, DapVariable template) throws dap4.core.util.DapException { - List dims = template.getDimensions(); - List slices = indexToSlices(indices, dims); - return slices; - } - - public static List indexToSlices(Index indices, List dimset) throws dap4.core.util.DapException { - List slices = indexToSlices(indices); - return slices; - } - - /** - * Provide a helper function to convert an offset to - * a slice list. - * - * @param offset offset - * @param template variable template - * - * @return slices - * @throws DapException - */ - public static List offsetToSlices(long offset, DapVariable template) throws DapException { - List dims = template.getDimensions(); - long[] dimsizes = DapUtil.getDimSizes(dims); - return indexToSlices(offsetToIndex(offset, dimsizes), template); + public static String stripDap4Extensions(String path) { + for (;;) { + Matcher m = DAP4EXT_RE.matcher(path); + if (!m.matches()) + break; + String match = m.group(1); + int pathlen = path.length(); + path = path.substring(0, pathlen - match.length()); + } + return path; } - /** - * Given an offset (single index) and a set of dimensions - * compute the set of dimension indices that correspond - * to the offset. - */ - public static Index offsetToIndex(long offset, long[] dimsizes) { - // offset = d3*(d2*(d1*(x1))+x2)+x3 - long[] indices = new long[dimsizes.length]; - for (int i = dimsizes.length - 1; i >= 0; i--) { - indices[i] = offset % dimsizes[i]; - offset = (offset - indices[i]) / dimsizes[i]; - } - return new Index(indices, dimsizes); - } + ////////////////////////////////////////////////// /** - * Given an offset (single index) and a set of dimensions - * compute the set of dimension indices that correspond - * to the offset. + * Helper functions for reading */ - public static List indexToSlices(Index indices) throws DapException { - // short circuit the scalar case - if (indices.getRank() == 0) - return Slice.SCALARSLICES; - // offset = d3*(d2*(d1*(x1))+x2)+x3 - List slices = new ArrayList<>(indices.rank); - for (int i = 0; i < indices.rank; i++) { - long isize = indices.indices[i]; - slices.add(new Slice(isize, isize + 1, 1, indices.dimsizes[i])); - } - return slices; - } - /** * Test if a set of slices represent a contiguous region * This is equivalent to saying all strides are one @@ -718,27 +698,6 @@ public static boolean isSinglePoint(List slices) { return true; } - /** - * If a set of slices refers to a single position, - * then return the corresponding Index. Otherwise, - * throw Exception. - * - * @param slices - * @return Index corresponding to slices - * @throws DapException - */ - public static Index slicesToIndex(List slices) throws DapException { - long[] positions = new long[slices.size()]; - long[] dimsizes = new long[slices.size()]; - for (int i = 0; i < positions.length; i++) { - Slice s = slices.get(i); - if (s.getCount() != 1) - throw new DapException("Attempt to convert non-singleton sliceset to index"); - positions[i] = s.getFirst(); - dimsizes[i] = s.getMax(); - } - return new Index(positions, dimsizes); - } public static List dimsetToSlices(List dimset) throws dap4.core.util.DapException { if (dimset == null || dimset.size() == 0) @@ -759,5 +718,18 @@ public static boolean isScalarSlices(List slices) { return (s.getFirst() == 0 && s.getStop() == 1); } + public static long[] longvector(int[] iv) { + long[] lv = new long[iv.length]; + for (int i = 0; i < iv.length; i++) + lv[i] = (long) iv[i]; + return lv; + } + + public static int[] intvector(long[] lv) { + int[] iv = new int[lv.length]; + for (int i = 0; i < lv.length; i++) + iv[i] = (int) lv[i]; + return iv; + } } diff --git a/dap4/d4core/src/main/java/dap4/core/util/Escape.java b/dap4/src/main/java/dap4/core/util/Escape.java similarity index 99% rename from dap4/d4core/src/main/java/dap4/core/util/Escape.java rename to dap4/src/main/java/dap4/core/util/Escape.java index 80c3c470d0..872d0e0a34 100644 --- a/dap4/d4core/src/main/java/dap4/core/util/Escape.java +++ b/dap4/src/main/java/dap4/core/util/Escape.java @@ -57,6 +57,9 @@ public static String entityEscape(String s, String wrt) { StringBuilder escaped = new StringBuilder(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); + // XML cannot handle nul char so just suppress it altogether + if (c == 0) + continue; int index = wrt.indexOf(c); if (index < 0) escaped.append(c); @@ -82,9 +85,6 @@ public static String entityEscape(String s, String wrt) { case '\n': escaped.append(c); // These are the only legal control chars break; - case '\0': - // What to do about nul? currrently we suppress it - break; default: if (c >= ' ') escaped.append(c); diff --git a/dap4/d4core/src/main/java/dap4/core/util/IndentWriter.java b/dap4/src/main/java/dap4/core/util/IndentWriter.java similarity index 95% rename from dap4/d4core/src/main/java/dap4/core/util/IndentWriter.java rename to dap4/src/main/java/dap4/core/util/IndentWriter.java index ff3bec0ed9..42cc4c63f0 100644 --- a/dap4/d4core/src/main/java/dap4/core/util/IndentWriter.java +++ b/dap4/src/main/java/dap4/core/util/IndentWriter.java @@ -114,11 +114,17 @@ public void pop() { // Margin cognizant print functions public void eol() { - super.println(""); + super.print("\r\n"); + } + + @Override + public void println() { + eol(); } public void marginPrintln(String text) { - marginPrint(text + "\n"); + marginPrint(text); + println(); } public void marginPrintln() { diff --git a/dap4/d4core/src/main/java/dap4/core/util/MultiSlice.java b/dap4/src/main/java/dap4/core/util/MultiSlice.java similarity index 97% rename from dap4/d4core/src/main/java/dap4/core/util/MultiSlice.java rename to dap4/src/main/java/dap4/core/util/MultiSlice.java index 716c3895c6..f5916d01de 100644 --- a/dap4/d4core/src/main/java/dap4/core/util/MultiSlice.java +++ b/dap4/src/main/java/dap4/core/util/MultiSlice.java @@ -22,7 +22,7 @@ public class MultiSlice extends Slice { protected List subslices; // cache some values - protected long count = -1; + protected int count = -1; ////////////////////////////////////////////////// // Constructor(s) @@ -78,7 +78,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - long accum = 0; + int accum = 0; for (int i = 0; i < this.subslices.size(); i++) { Slice s = this.subslices.get(i); accum += s.hashCode() * i; @@ -166,12 +166,12 @@ public Slice getSubSlice(int i) { @Override - public long getCount() { + public int getCount() { return this.count; } @Override - public Slice setMaxSize(long size) throws DapException { + public Slice setMaxSize(int size) throws DapException { for (int i = 0; i < this.subslices.size(); i++) { this.subslices.get(i).setMaxSize(size); } diff --git a/dap4/d4core/src/main/java/dap4/core/util/PowerSet.java b/dap4/src/main/java/dap4/core/util/PowerSet.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/util/PowerSet.java rename to dap4/src/main/java/dap4/core/util/PowerSet.java diff --git a/dap4/src/main/java/dap4/core/util/ResponseFormat.java b/dap4/src/main/java/dap4/core/util/ResponseFormat.java new file mode 100644 index 0000000000..85ee220644 --- /dev/null +++ b/dap4/src/main/java/dap4/core/util/ResponseFormat.java @@ -0,0 +1,56 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + + +package dap4.core.util; + +/** + * Define the enum for the possible Response/Response modes + */ +public enum ResponseFormat { + TEXT("text", "txt"), XML("xml", "xml"), HTML("html", "html"), NONE("none", null); + + private String id; + private String format; + + ResponseFormat(String id, String format) { + this.id = id; + this.format = format; + } + + public String id() { + return id; + } + + public String format() { + return format; + } + + public static ResponseFormat formatFor(String s) { + if (s == null) + return null; + for (ResponseFormat format : ResponseFormat.values()) { + if (s.equalsIgnoreCase(format.format) || s.equalsIgnoreCase("." + format.format)) + return format; + } + return null; + } + + public static ResponseFormat idFormat(String id) { + if (id == null) + return null; + for (ResponseFormat format : ResponseFormat.values()) { + if (id.equalsIgnoreCase(format.id)) + return format; + } + return null; + } + + public String toString() { + return id; + } +} + + diff --git a/dap4/d4core/src/main/java/dap4/core/util/Slice.java b/dap4/src/main/java/dap4/core/util/Slice.java similarity index 86% rename from dap4/d4core/src/main/java/dap4/core/util/Slice.java rename to dap4/src/main/java/dap4/core/util/Slice.java index b0b5a2f558..f801e99014 100644 --- a/dap4/d4core/src/main/java/dap4/core/util/Slice.java +++ b/dap4/src/main/java/dap4/core/util/Slice.java @@ -20,6 +20,9 @@ * Note that first cannot be undefined because it always defaults to zero; * similarly stride defaults to one. * Slice Supports iteration. + * + * Note that a slice is quite similar to a scalar DataIndex. + * * Modifiied 10/15/2016 to support zero sized slices. */ @@ -32,12 +35,11 @@ public class Slice { // its "last" value is the UNDEFINED value). // This will primarily be used in the constraint expression parser - // static public final long UNDEFINED = 0x7FFFFFFFFFFFFFFFL; - public static final long UNDEFINED = -1L; + public static final int UNDEFINED = -1; // Define maximum legal dimension based on the spec - public static final long MAXLENGTH = 0x3FFFFFFFFFFFFFFFL; + public static final int MAXLENGTH = 0x3FFFFFFF; public static enum Sort { Single, Multi; @@ -66,22 +68,22 @@ public static enum Sort { /** * First index */ - long first = UNDEFINED; + int first = UNDEFINED; /** * Last+1 index; (stop - first) should be size of the slice. */ - long stop = UNDEFINED; + int stop = UNDEFINED; /** * Stride */ - long stride = UNDEFINED; + int stride = UNDEFINED; /** * Max size (typically the size of the underlying dimension) */ - long maxsize = MAXLENGTH; + int maxsize = MAXLENGTH; /** * Indicate if this is known to be a whole slice @@ -103,11 +105,11 @@ public static enum Sort { public Slice() {} - public Slice(long first, long stop, long stride) throws DapException { + public Slice(int first, int stop, int stride) throws DapException { this(first, stop, stride, UNDEFINED); } - public Slice(long first, long stop, long stride, long maxsize) throws DapException { + public Slice(int first, int stop, int stride, int maxsize) throws DapException { this(); setIndices(first, stop, stride, maxsize); } @@ -121,7 +123,7 @@ public Slice(Slice s) throws DapException { public Slice(DapDimension dim) throws DapException { this(); - setIndices(0, dim.getSize(), 1, dim.getSize()); + setIndices(0, (int) dim.getSize(), 1, (int) dim.getSize()); setWhole(true); setConstrained(false); } @@ -178,41 +180,45 @@ public Sort getSort() { return this.sort; } - public long getFirst() { + public int getFirst() { return this.first; } - public long getStop() { + public int getStop() { return this.stop; } - public long getLast() { + public int getLast() { return ((this.stop - this.first) == 0 ? 0 : this.stop - 1); } - public long getStride() { + public int getStride() { return this.stride; } - public long getSize() // not same as getcount and not same as maxsize + public int getSize() // not same as getcount and not same as maxsize { return (this.stop - this.first); } - public long getMax() // not same as getcount and not same as maxsize + public int getMax() // not same as getcount and not same as maxsize { return this.maxsize; } - public Slice setMaxSize(long size) throws DapException { + public boolean isScalar() { + return this.getSize() <= 1; + } + + public Slice setMaxSize(int size) throws DapException { return setIndices(this.first, this.stop, this.stride, size); } - public Slice setIndices(long first, long stop, long stride) throws DapException { + public Slice setIndices(int first, int stop, int stride) throws DapException { return setIndices(first, stop, stride, UNDEFINED); } - public Slice setIndices(long first, long stop, long stride, long maxsize) throws DapException { + public Slice setIndices(int first, int stop, int stride, int maxsize) throws DapException { this.first = first; this.stop = stop; this.stride = stride; @@ -246,9 +252,9 @@ public Slice setConstrained(Boolean tf) { * the slice. Note that this is different from * getStop() because stride is taken into account. */ - public long getCount() { + public int getCount() { assert this.first != UNDEFINED && this.stride != UNDEFINED && this.stop != UNDEFINED; - long count = (this.stop) - this.first; + int count = (this.stop) - this.first; count = (count + this.stride - 1); count /= this.stride; return count; @@ -331,10 +337,10 @@ public String toConstraintString() throws DapException { * @throws DapException */ public static Slice compose(Slice target, Slice src) throws DapException { - long sr_stride = target.getStride() * src.getStride(); - long sr_first = MAP(target, src.getFirst()); - long lastx = MAP(target, src.getLast()); - long sr_last = (target.getLast() < lastx ? target.getLast() : lastx); // min(last(),lastx) + int sr_stride = target.getStride() * src.getStride(); + int sr_first = MAP(target, src.getFirst()); + int lastx = MAP(target, src.getLast()); + int sr_last = (target.getLast() < lastx ? target.getLast() : lastx); // min(last(),lastx) return new Slice(sr_first, sr_last + 1, sr_stride, sr_last + 1).finish(); } @@ -346,7 +352,7 @@ public static Slice compose(Slice target, Slice src) throws DapException { * @return the i-th element of a range * @throws DapException if index is invalid */ - static long MAP(Slice target, long i) throws DapException { + static int MAP(Slice target, int i) throws DapException { if (i < 0) throw new DapException("Slice.compose: i must be >= 0"); if (i > target.getStop()) diff --git a/dap4/d4core/src/main/java/dap4/core/util/SliceConstraint.java b/dap4/src/main/java/dap4/core/util/SliceConstraint.java similarity index 98% rename from dap4/d4core/src/main/java/dap4/core/util/SliceConstraint.java rename to dap4/src/main/java/dap4/core/util/SliceConstraint.java index 2512165df2..30e9452ec3 100644 --- a/dap4/d4core/src/main/java/dap4/core/util/SliceConstraint.java +++ b/dap4/src/main/java/dap4/core/util/SliceConstraint.java @@ -63,7 +63,7 @@ public String toString() { } protected void add(List slices) throws DapException { - if (slices == null || slices.size() == 0) + if (slices == null || slices.isEmpty()) throw new DapException("Null slice set"); if (this.slicesets.size() == this.rank) throw new DapException("Sliceset overflow"); diff --git a/dap4/d4core/src/main/java/dap4/core/util/SliceIterator.java b/dap4/src/main/java/dap4/core/util/SliceIterator.java similarity index 100% rename from dap4/d4core/src/main/java/dap4/core/util/SliceIterator.java rename to dap4/src/main/java/dap4/core/util/SliceIterator.java diff --git a/dap4/src/main/java/dap4/core/util/XURI.java b/dap4/src/main/java/dap4/core/util/XURI.java new file mode 100644 index 0000000000..74a0a55129 --- /dev/null +++ b/dap4/src/main/java/dap4/core/util/XURI.java @@ -0,0 +1,567 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.core.util; + +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Provide an extended form of URI parser with the following features: + * 1. can parse the query and fragment parts. + * 2. supports multiple protocols + * 3. supports modification of the URI path. + * 4. supports url -> string as controlled by flags + */ + +public class XURI { + + ////////////////////////////////////////////////// + // Constants + static final char QUERYSEP = '&'; + static final char FRAGMENTSEP = QUERYSEP; + static final char ESCAPECHAR = '\\'; + static final char PAIRSEP = '='; + + // static final String DRIVELETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + protected static final Pattern drivelettertest = Pattern.compile("^([/]?)[a-zA-Z][:]"); + protected static final Pattern filedrivelettertest = Pattern.compile("^(file://)([a-zA-Z][:].*)"); + + // Define assembly flags + + public static enum Parts { + SCHEME, // base protocol(s) + PWD, // including user + HOST, // including port + PATH, QUERY, FRAG; + } + + // Mnemonics + public static final EnumSet URLONLY = EnumSet.of(Parts.SCHEME, Parts.PWD, Parts.HOST, Parts.PATH); + public static final EnumSet URLALL = + EnumSet.of(Parts.SCHEME, Parts.PWD, Parts.HOST, Parts.PATH, Parts.QUERY, Parts.FRAG); + public static final EnumSet URLQUERY = + EnumSet.of(Parts.SCHEME, Parts.PWD, Parts.HOST, Parts.PATH, Parts.QUERY); + + ////////////////////////////////////////////////// + // Instance variables + + // Unfortunately, URI is final and so cannot be used as super class + // Rather we use delegation. + URI parent; // Does the bulk of the parsing + + // protected String originaluri = null; + protected boolean isfile = false; + + protected List nonleadschemes = new ArrayList<>(); // all schemes after the first + + protected Map queryfields // decomposed query + = null; + protected Map fragfields // decomposed fragment + = null; + + ////////////////////////////////////////////////// + // Constructor(s) + + public XURI(String xu) throws URISyntaxException { + xu = XURI.canonical(xu); + if (xu == null) + throw new URISyntaxException("null", "null valued URI string"); + xu = fixURI(xu); + parent = new URI(xu); // this should be correct + this.isfile = "file".equalsIgnoreCase(getScheme()); + } + + /** + * This makes an incoming url parseable by URI + * Fix various issues such as: + * -- multiple schemes + * -- windows drive letters in path + */ + String fixURI(String xu) throws URISyntaxException { + // Extract all schemes + String[] schemes = allSchemes(xu); + if (schemes.length == 0) + return xu; // no schemes at all + int iremainder = xu.indexOf("//"); + xu = schemes[0] + ":" + xu.substring(iremainder); // remove all but lead scheme + nonleadschemes.addAll(Arrays.asList(schemes).subList(1, schemes.length)); + // Look for windows drive letter + Matcher m = filedrivelettertest.matcher(xu); + if (m.lookingAt()) { + String prefix = m.group(1); + String pathplus = m.group(2); + // rebuild + xu = prefix + hideDriveLetter(pathplus); + } + return xu; + } + + // Pull off all the schemes into schemelist + // return the uri string with just the leading scheme + String parseSchemes(String xu, List schemelist) throws URISyntaxException { + int iremainder = xu.indexOf("//"); + if (iremainder <= 0) + throw new URISyntaxException(xu, "URI has no scheme"); + String[] schemes = xu.substring(0, iremainder).split(":"); + String lead = schemes[0]; + xu = lead + ":" + xu.substring(iremainder, xu.length()); + schemelist.clear(); + for (int i = 1; i < schemes.length; i++) + schemelist.add(schemes[i]); + return xu; + } + + public XURI(URL xu) throws URISyntaxException { + this.parent = new URI(xu.getProtocol().toLowerCase(), xu.getUserInfo(), xu.getHost(), xu.getPort(), xu.getFile(), + xu.getQuery(), xu.getRef()); + // this.originaluri = this.toString(); // save the original uri + } + + public XURI(URI xu) throws URISyntaxException { + this.parent = new URI(xu.getScheme().toLowerCase(), xu.getUserInfo(), xu.getHost(), xu.getPort(), xu.getPath(), + xu.getQuery(), xu.getFragment()); + // this.originaluri = this.toString(); // save the original uri + } + + ////////////////////////////////////////////////// + // Delegation + + // Getters + public String getUserInfo() { + return parent.getUserInfo(); + } + + public String getHost() { + return parent.getHost(); + } + + public int getPort() { + return parent.getPort(); + } + + public String getPath() { + return parent.getPath(); + } + + /** + * Return a path that can be used to open a file + * + * @return + */ + public String getRealPath() { + return truePath(getPath()); + } + + public String getQuery() { + return parent.getQuery(); + } + + public String getFragment() { + return parent.getFragment(); + } + + public String getScheme() { + return parent.getScheme(); + } // return lead protocol + + public List getSchemes() { // return lead scheme + nonleadschemes + if (parent.getScheme() == null) + return null; + List allschemes = new ArrayList<>(); + allschemes.add(parent.getScheme()); + allschemes.addAll(nonleadschemes); + return allschemes; // return lead scheme + } + + // Setters + public void setScheme(String xscheme) { + try { + this.parent = new URI(xscheme.toLowerCase(), parent.getUserInfo(), parent.getHost(), parent.getPort(), + parent.getPath(), parent.getQuery(), parent.getFragment()); + } catch (URISyntaxException use) { + throw new AssertionError("URI.setScheme: Internal error: malformed URI", use); + } + } + + public void setUserInfo(String xuserinfo) { + try { + this.parent = new URI(parent.getScheme(), xuserinfo, parent.getHost(), parent.getPort(), parent.getPath(), + parent.getQuery(), parent.getFragment()); + } catch (URISyntaxException use) { + throw new AssertionError("URI.setUserInfo: Internal error: malformed URI", use); + } + } + + public void setHost(String xhost) { + try { + this.parent = new URI(parent.getScheme(), parent.getUserInfo(), xhost, parent.getPort(), parent.getPath(), + parent.getQuery(), parent.getFragment()); + } catch (URISyntaxException use) { + throw new AssertionError("URI.setHost: Internal error: malformed URI", use); + } + } + + public void setPort(int xport) { + try { + this.parent = new URI(parent.getScheme(), parent.getUserInfo(), parent.getHost(), xport, parent.getPath(), + parent.getQuery(), parent.getFragment()); + } catch (URISyntaxException use) { + throw new AssertionError("URI.setPort: Internal error: malformed URI", use); + } + } + + public void setPath(String xpath) { + try { + if (hasDriveLetter(xpath) && xpath.charAt(0) != '/') + xpath = "/" + xpath; // make it URI parseable + this.parent = new URI(parent.getScheme(), parent.getUserInfo(), parent.getHost(), parent.getPort(), xpath, + parent.getQuery(), parent.getFragment()); + } catch (URISyntaxException use) { + throw new AssertionError("URI.setPath: Internal error: malformed URI", use); + } + } + + public void setQuery(String xquery) { + try { + this.parent = new URI(parent.getScheme(), parent.getUserInfo(), parent.getHost(), parent.getPort(), + parent.getPath(), xquery, parent.getFragment()); + this.queryfields = null; + } catch (URISyntaxException use) { + throw new AssertionError("URI.setQuery: Internal error: malformed URI", use); + } + } + + public void setFragment(String xfragment) { + try { + this.parent = new URI(parent.getScheme(), parent.getUserInfo(), parent.getHost(), parent.getPort(), + parent.getPath(), parent.getQuery(), xfragment); + this.fragfields = null; + } catch (URISyntaxException use) { + throw new AssertionError("URI.setFragment: Internal error: malformed URI", use); + } + } + + public String toString() { + return assemble(URLALL); + } + + /** + * Allow queryfields to be inserted + * + * @param key + * @param newval + * @return previous value or this value if key not set + */ + public void insertQueryField(String key, String newval) { + // Watch out in case there is no query + this.queryfields = insertAmpField(key, newval, parent.getQuery()); + rebuildQuery(); + } + + /** + * Allow fragment fields to be inserted + * + * @param key + * @param newval + * @return previous value or this value if key not set + */ + public void insertFragmentField(String key, String newval) { + // Watch out in case there is no query + this.fragfields = insertAmpField(key, newval, parent.getFragment()); + rebuildQuery(); + } + + /** + * Allow queryfields to be removed + * + * @param key + * @return previous value (may be null) + */ + public void removeQueryField(String key) { + // Watch out in case there is no query + this.queryfields = removeAmpField(key, parent.getQuery()); + rebuildQuery(); + } + + /** + * Rebuild query from current queryfields + */ + protected void rebuildQuery() { + if (queryfields == null) + return; + StringBuffer query = new StringBuffer(); + boolean first = true; + for (Map.Entry entry : queryfields.entrySet()) { + if (!first) + query.append("&"); + query.append(Escape.urlEncodeQuery((String) entry.getKey())); + query.append("="); + query.append(Escape.urlEncodeQuery((String) entry.getValue())); + first = false; + } + String newquery = null; + if (query.length() > 0) + newquery = query.toString(); + setQuery(newquery); + } + + ////////////////////////////////////////////////// + // Accessors (other than delegations) + + // public String getOriginal() { + // return originaluri; + // } + + public boolean isFile() { + return this.isfile; + } + + public Map getQueryFields() { + if (this.queryfields == null) + parseQuery(); + return this.queryfields; + } + + public Map getFragFields() { + if (this.fragfields == null) + parseFragment(); + return this.fragfields; + } + + protected void parseQuery() { + this.queryfields = parseAmpList(getQuery(), QUERYSEP, ESCAPECHAR); + } + + protected void parseFragment() { + this.fragfields = parseAmpList(getFragment(), FRAGMENTSEP, ESCAPECHAR); + } + + protected Map insertAmpField(String key, String value, String query) { + Map fields = parseAmpList(query, '&', '\\'); + fields.put(key, value); + return fields; + } + + protected Map removeAmpField(String key, String query) { + Map fields = parseAmpList(query, '&', '\\'); + fields.remove(key); + return fields; + } + + protected Map parseAmpList(String s, char sep, char escape) { + Map map = new HashMap<>(); + List pieces; + if (s == null) + s = ""; + pieces = escapedsplit(s, sep, escape); + for (String piece : pieces) { + int plen = piece.length(); + // Split on first '=' + int index = findunescaped(piece, 0, PAIRSEP, escape, plen); + if (index < 0) + index = plen; + String key = piece.substring(0, index); + String value = (index >= plen ? "" : piece.substring(index + 1, plen)); + key = Escape.urlDecode(key); + key = key.toLowerCase(); // for consistent lookup + value = Escape.urlDecode(value); + map.put(key, value); + } + return map; + } + + /* + * Split s into pieces as separated by separator and taking + * escape characters into account. + */ + protected List escapedsplit(String s, char sep, char escape) { + List pieces = new ArrayList<>(); + int len = s.length(); + int from = 0; + while (from < len) { + int index = findunescaped(s, from, sep, escape, len); + if (index < 0) + index = len; + pieces.add(s.substring(from, index)); + from = index + 1; + } + return pieces; + } + + /* + * It is probably possible to do this with regexp patterns, + * but I do not know how. + * + * The goal is to find next instance of unescaped separator character. + * Leave any escape characters in place. + * Return index of next separator starting at start. + * If not found, then return -1; + */ + protected int findunescaped(String s, int start, char sep, char escape, int len) { + int i; + for (i = start; i < len; i++) { + char c = s.charAt(i); + if (c == escape) { + i++; + } else if (c == sep) { + return i; + } + } + return -1; /* not found */ + } + + ////////////////////////////////////////////////// + // API + + /** + * Reassemble the url using the specified parts + * + * @param parts to include + * @return the assembled uri + */ + + public String assemble(EnumSet parts) { + StringBuilder uri = new StringBuilder(); + if (parts.contains(Parts.SCHEME) && this.getScheme() != null) { + uri.append(this.getScheme()); + for (int i = 0; i < nonleadschemes.size(); i++) { + uri.append(':'); + uri.append(nonleadschemes.get(i)); + } + uri.append("://"); + } + if (parts.contains(Parts.PWD) && this.getUserInfo() != null) { + uri.append(this.getUserInfo()); + uri.append("@"); + } + if (parts.contains(Parts.HOST) && this.getHost() != null) { + uri.append(this.getHost()); + if (this.getPort() > 0) { + uri.append(":"); + uri.append(this.getPort()); + } + } + if (parts.contains(Parts.PATH) && this.getPath() != null) { + uri.append(this.getPath()); + } + if (parts.contains(Parts.QUERY) && this.getQuery() != null) { + uri.append("?"); + uri.append(this.getQuery()); + } + if (parts.contains(Parts.FRAG) && this.getFragment() != null) { + uri.append("#"); + uri.append(this.getFragment()); + } + return uri.toString(); + } + + + // if the url is file:// and the path part has a windows drive letter, then the parent URL will not recognize this + // correctly. + public String fixdriveletter(URI uri) throws URISyntaxException { + if (!uri.getScheme().equalsIgnoreCase("file")) + return uri.toString(); + String tmp = uri.getHost(); // we use host because this is how URI parses such urls + if (!hasDriveLetter(tmp)) + return uri.toString(); // Original file url did not a have Windows drive letter + // rebuild the original URI (ugh!) + StringBuilder newxu = new StringBuilder(); + newxu.append(uri.getScheme()); + newxu.append("://"); + if (uri.getUserInfo() != null) { + newxu.append(uri.getUserInfo()); + newxu.append("@"); + } + newxu.append("/"); + newxu.append(uri.getHost()); // that's where the drive letter ends up + newxu.append(":"); + newxu.append(uri.getPath()); + if (uri.getQuery() != null) { + newxu.append("?"); + newxu.append(uri.getQuery()); + } + if (uri.getFragment() != null) { + newxu.append("#"); + newxu.append(uri.getFragment()); + } + return newxu.toString(); + } + + //////////////////////////////////////////////// + /** + * Canonicalize a part of a URL + * + * @param s part of the url + */ + public static String canonical(String s) { + if (s != null) { + s = s.trim(); + if (s.length() == 0) + s = null; + } + return s; + } + + /** + * return true if this path appears to start with a windows drive letter + * including those hidden by leading '/' + * + * @param path + * @return true, if path has drive letter + */ + public static boolean hasDriveLetter(String path) { + Matcher m = drivelettertest.matcher(path); + return m.lookingAt(); + } + + /** + * Return a path with possible windows drive letter hidden by '/'. + * Repair => convert "x:/" to "/x:/" where x is a drive letter + * + * @return repaired path + */ + public static String hideDriveLetter(String path) { + Matcher m = drivelettertest.matcher(path); + if (m.lookingAt()) { + if (m.group(1).equals("")) + path = "/" + path; + } + return path; + } + + /** + * Extract all schemes at front of a url. + * + * @parem xu url string + * @return vector of schemes + */ + public static String[] allSchemes(String xu) { + int endschemes = xu.indexOf("//"); + if (endschemes < 0) + return new String[0]; + String[] schemes = xu.substring(0, endschemes).split(":"); + return schemes; + } + + /** + * return repaired path; if this path appears to start with a windows drive letter + * hidden by leading '/', then the leading '/' is removed + * + * @param path + * @return repaired path + */ + public static String truePath(String path) { + // Check for a windows drive and repair + Matcher m = drivelettertest.matcher(path); + if (m.lookingAt() && m.group(1) != null) + path = path.substring(1); + return path; + } +} diff --git a/dap4/src/main/java/dap4/dap4lib/D4Array.java b/dap4/src/main/java/dap4/dap4lib/D4Array.java new file mode 100644 index 0000000000..bed89c73a6 --- /dev/null +++ b/dap4/src/main/java/dap4/dap4lib/D4Array.java @@ -0,0 +1,94 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.dap4lib; + +import dap4.core.dmr.*; +import dap4.core.interfaces.ArrayScheme; +import ucar.ma2.Array; + +/** + * Wrap an Array representing a variables' data, where the variable + * is top-level or a field. The wrapper contains some additional + * information beside the Array. + */ + +public class D4Array { + + ////////////////////////////////////////////////// + // Mnemonics + static final long NULLOFFSET = -1; + + static final int D4LENSIZE = 8; + + ////////////////////////////////////////////////// + // Instance Variables + + protected D4DSP dsp; + protected ArrayScheme scheme; // Roughly, what kind of array + protected DapNode template; + protected Array array = null; // the Array object for the variable + protected Object storage = null; // The storage underlying Array + + ////////////////////////////////////////////////// + // Constructor(s) + + public D4Array(ArrayScheme scheme, D4DSP dsp, DapVariable template) { + this.scheme = scheme; + this.template = template; + this.dsp = dsp; + } + + public String toString() { + StringBuilder buf = new StringBuilder(); + buf.append(getScheme().toString()); + if (getScheme() == ArrayScheme.STRUCTARRAY || getScheme() == ArrayScheme.SEQARRAY) + buf.append("[]"); + buf.append(":"); + buf.append(getTemplate().toString()); + return buf.toString(); + } + + ////////////////////////////////////////////////// + // set/get + + public D4DSP getDSP() { + return this.dsp; + } + + public ArrayScheme getScheme() { + return this.scheme; + } + + public DapNode getTemplate() { + return this.template; + } + + public Array getArray() { + return this.array; + } + + public Object getStorage() { + return this.storage; + } + + public boolean isScalar() { + return ((DapVariable) getTemplate()).getRank() == 0; + } + + public D4Array setArray(Array a) { + this.array = a; + return this; + } + + public D4Array setStorage(Object store) { + this.storage = store; + return this; + } + + +} + + diff --git a/dap4/src/main/java/dap4/dap4lib/D4DSP.java b/dap4/src/main/java/dap4/dap4lib/D4DSP.java new file mode 100644 index 0000000000..e6f1edc533 --- /dev/null +++ b/dap4/src/main/java/dap4/dap4lib/D4DSP.java @@ -0,0 +1,401 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.dap4lib; + +import dap4.core.dmr.*; +import dap4.core.dmr.parser.DOM4Parser; +import dap4.core.dmr.parser.Dap4Parser; +import dap4.core.util.ChecksumMode; +import dap4.core.util.*; +import org.xml.sax.SAXException; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URISyntaxException; +import java.nio.ByteOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static dap4.core.util.DapConstants.*; + +/** + * This Class takes a DAP4 serialization (as chunked input) stream + * and exports access to a compiled DMR, a compiled DAP4 data stream, + * and various parameters such as byteorder of the data stream. + * + * Most of the work is done by this class. Its subclasses need + * only provide a raw byte stream to DAP4 chunked data taken + * from e.g. a raw data file or an HTTP connection. + * + * It cannot be used standalone. + */ + +public abstract class D4DSP { + + ////////////////////////////////////////////////// + // Constants + + public static boolean DEBUG = false; + protected static final boolean PARSEDEBUG = true; + + ////////////////////////////////////////////////// + // Instance variables + + protected String dmrtext = null; + protected DapDataset dmr = null; + protected String location = null; + + // Input stream + protected DeChunkedInputStream stream = null; + protected boolean streamclosed = false; + + protected XURI xuri = null; + + // Exported information + protected ByteOrder remoteorder = null; + protected ChecksumMode checksummode = null; + protected RequestMode mode = null; + + // DAP stream compilation + D4DataCompiler d4compiler = null; + + protected Map datamap = new HashMap<>(); + + ////////////////////////////////////////////////// + // Constructor(s) + + public D4DSP() {} + + ////////////////////////////////////////////////// + + /** + * "open" a reference to a data source and return the DSP wrapper. + * + * @param location - Object that defines the data source + * @param cmode + * @return = wrapping dsp + * @throws DapException + */ + public D4DSP open(String location, ChecksumMode cmode) throws DapException { + this.location = location; + this.checksummode = cmode; + parseURL(location); + return this; + } + + + ////////////////////////////////////////////////// + // Accessors + + public DeChunkedInputStream getStream() { + return this.stream; + } + + public ChecksumMode getChecksumMode() { + return this.checksummode; + } + + public Map getVariableDataMap() { + return this.datamap; + } + + public Map getChecksumMap(ChecksumSource src) { + if (src == ChecksumSource.LOCAL) + return this.d4compiler.localchecksummap; + else + return this.d4compiler.remotechecksummap; + } + + protected D4DSP setStream(InputStream input, RequestMode mode) throws IOException { + this.mode = mode; + this.stream = new DeChunkedInputStream(input, mode); // side effect: read DMR &/or error + this.streamclosed = false; + if (this.stream.getState() == DeChunkedInputStream.State.ERROR) + reportError(this.stream.getErrorText()); + this.dmrtext = this.stream.getDMRText(); + // This is the definitive remote byte order + this.remoteorder = this.stream.getRemoteOrder(); + return this; + } + + protected void addVariableData(DapVariable var, D4Array cursor) { + this.datamap.put(var, cursor); + } + + public DapDataset getDMR() { + return this.dmr; + } + + protected void setDMR(DapDataset dmr) { + this.dmr = dmr; + if (this.dmr != null) { + // Add some canonical attributes to the + this.dmr.setDataset(this.dmr); + this.dmr.setDapVersion(DapConstants.X_DAP_VERSION); + this.dmr.setDMRVersion(DapConstants.X_DMR_VERSION); + this.dmr.setNS(DapConstants.X_DAP_NS); + } + } + + /* + * public static String printDMR(DapDataset dmr) { + * StringWriter sw = new StringWriter(); + * PrintWriter pw = new PrintWriter(sw); + * DMRPrinter printer = new DMRPrinter(dmr, pw); + * try { + * printer.print(); + * pw.close(); + * sw.close(); + * } catch (IOException e) { + * } + * return sw.toString(); + * } + */ + + ////////////////////////////////////////////////// + // Subclass defined + + /** + * Determine if a path refers to an object processable by this DSP + * + * @param path + * @param context + * @return true if this path can be processed by an instance of this DSP + */ + abstract public boolean dspMatch(String path, DapContext context); + + ////////////////////////////////////////////////// + // Compilation + + /** + * Extract the DMR from available dechunked data + * + * @throws DapException + */ + public void loadDMR() throws IOException { + String document = readDMR(); + DapDataset dmr = parseDMR(document); + setDMR(dmr); + if (this.mode == RequestMode.DMR) { + assert !this.streamclosed; + this.stream.close(); // no longer needed + this.streamclosed = true; + } + } + + public void loadDAP() throws IOException { + try { + // "Compile" the databuffer section of the server response + d4compiler = new D4DataCompiler(this, this.checksummode, this.remoteorder); + d4compiler.compile(); + assert !this.streamclosed; + this.stream.close(); // no longer needed + this.streamclosed = true; + } catch (IOException ioe) { + throw new DapException(ioe); + } + } + + public void loadContext(DapContext cxt, RequestMode mode) { + switch (mode) { + case DMR: + break; + case DAP: + cxt.put(ChecksumSource.REMOTE, d4compiler.getChecksumMap(ChecksumSource.REMOTE)); + cxt.put(ChecksumSource.LOCAL, d4compiler.getChecksumMap(ChecksumSource.LOCAL)); + cxt.put(D4Array.class, getVariableDataMap()); + break; + } + } + + protected String readDMR() throws IOException { + // Get and clean up dmr + String dmrtext = this.stream.getDMRText(); + dmrtext = dmrtext.trim(); + if (dmrtext.length() == 0) + throw new DapException("Empty DMR"); + StringBuilder buf = new StringBuilder(dmrtext); + // remove any trailing '\n' + int len = buf.length(); + if (buf.charAt(len - 1) == '\n') + buf.setLength(--len); + // Make sure it has trailing \r" + if (buf.charAt(len - 1) != '\r') + buf.append('\r'); + // Make sure it has trailing \n" + buf.append('\n'); + return buf.toString(); + } + + ////////////////////////////////////////////////// + // Misc. Utilities + + protected void parseURL(String url) throws DapException { + try { + this.xuri = new XURI(url); + } catch (URISyntaxException use) { + throw new DapException(use); + } + } + + protected String getMethodUrl(RequestMode mode, ChecksumMode csum) throws DapException { + xuri.removeQueryField(DapConstants.CHECKSUMTAG); + csum = ChecksumMode.asTrueFalse(csum); + String scsum = ChecksumMode.toString(csum); + xuri.insertQueryField(DapConstants.CHECKSUMTAG, scsum); + String corepath = DapUtil.stripDap4Extensions(xuri.getPath()); + // modify url to read the dmr|dap + if (mode == RequestMode.DMR) + xuri.setPath(corepath + ".dmr.xml"); + else if (mode == RequestMode.DAP) + xuri.setPath(corepath + ".dap"); + else + throw new DapException("Unexpected mode: " + mode); + String methodurl = xuri.assemble(XURI.URLQUERY); + return methodurl; + } + + /** + * It is common to want to parse a DMR text to a DapDataset, + * so provide this utility. + * + * @param document the dmr to parse + * @return the parsed dmr + * @throws DapException on parse errors + */ + + protected DapDataset parseDMR(String document) throws DapException { + // Parse the dmr + Dap4Parser parser; + // if(USEDOM) + parser = new DOM4Parser(null); + // else + // parser = new DOM4Parser(new DefaultDMRFactory()); + if (PARSEDEBUG) + parser.setDebugLevel(1); + try { + if (!parser.parse(document)) + throw new DapException("DMR Parse failed"); + } catch (SAXException se) { + throw new DapException(se); + } + if (parser.getErrorResponse() != null) + throw new DapException("Error Response Document not supported"); + DapDataset result = parser.getDMR(); + processAttributes(result); + processMaps(result); + return result; + } + + /** + * Some attributes that are added by the NetcdfDataset + * need to be kept out of the DMR. This function + * defines that set. + * + * @param attrname + * @return true if the attribute should be suppressed, false otherwise. + */ + protected boolean suppressAttributes(String attrname) { + if (attrname.startsWith("_Coord")) + return true; + if (attrname.equals("_Unsigned")) + return true; + return false; + } + + void getEndianAttribute(DapDataset dataset) { + DapAttribute a = dataset.findAttribute(DapConstants.LITTLEENDIANATTRNAME); + if (a == null) + return; + Object v = a.getValues(); + int len = java.lang.reflect.Array.getLength(v); + if (len == 0) + this.remoteorder = ByteOrder.LITTLE_ENDIAN; + else { + String onezero = java.lang.reflect.Array.get(v, 0).toString(); + int islittle = 1; + try { + islittle = Integer.parseInt(onezero); + } catch (NumberFormatException e) { + islittle = 1; + } + if (islittle == 0) + this.remoteorder = ByteOrder.BIG_ENDIAN; + else + this.remoteorder = ByteOrder.LITTLE_ENDIAN; + } + } + + /** + * Walk the dataset tree and remove selected attributes + * such as _Unsigned + * + * @param dataset + */ + protected void processAttributes(DapDataset dataset) throws DapException { + List nodes = dataset.getNodeList(); + for (DapNode node : nodes) { + switch (node.getSort()) { + case GROUP: + case DATASET: + case VARIABLE: + Map attrs = node.getAttributes(); + if (attrs.size() > 0) { + List suppressed = new ArrayList<>(); + for (DapAttribute dattr : attrs.values()) { + if (suppressAttributes(dattr.getShortName())) + suppressed.add(dattr); + } + for (DapAttribute dattr : suppressed) { + node.removeAttribute(dattr); + } + } + break; + default: + break; /* ignore */ + } + } + // Try to extract the byte order + getEndianAttribute(dataset); + } + + /** + * Walk the dataset tree and link nodes = dataset.getNodeList(); + for (DapNode node : nodes) { + switch (node.getSort()) { + case MAP: + DapMap map = (DapMap) node; + String targetname = map.getTargetName(); + DapVariable target; + target = (DapVariable) dataset.findByFQN(targetname, DapSort.VARIABLE, DapSort.SEQUENCE, DapSort.STRUCTURE); + if (target == null) + throw new DapException("Mapref: undefined target variable: " + targetname); + // Verify that this is a legal map => + // 1. it is outside the scope of its parent if the parent + // is a structure. + DapNode container = target.getContainer(); + if ((container.getSort() == DapSort.STRUCTURE || container.getSort() == DapSort.SEQUENCE)) + throw new DapException("Mapref: map target variable not in outer scope: " + targetname); + map.setVariable(target); + break; + default: + break; /* ignore */ + } + } + } + + protected void reportError(String errmsg) throws IOException { + throw new DapException(errmsg); + } + +} diff --git a/dap4/src/main/java/dap4/dap4lib/D4DataCompiler.java b/dap4/src/main/java/dap4/dap4lib/D4DataCompiler.java new file mode 100644 index 0000000000..45907bdd39 --- /dev/null +++ b/dap4/src/main/java/dap4/dap4lib/D4DataCompiler.java @@ -0,0 +1,500 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + + +package dap4.dap4lib; + +import dap4.core.util.ChecksumMode; +import dap4.core.dmr.*; +import dap4.core.util.*; +import dap4.dap4lib.cdm.CDMTypeFcns; +import dap4.dap4lib.cdm.CDMUtil; +import dap4.dap4lib.cdm.nc2.D4StructureDataIterator; +import ucar.ma2.*; + +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static dap4.core.interfaces.ArrayScheme.*; + +public class D4DataCompiler { + + public static boolean DEBUG = false; + + ////////////////////////////////////////////////// + // Constants + + ////////////////////////////////////////////////// + // Instance variables + + protected DapDataset dmr = null; + + protected ChecksumMode checksummode = null; + protected ByteOrder remoteorder = null; + + protected D4DSP dsp; + protected DeChunkedInputStream stream = null; + + // Checksum information + // We have two checksum maps: one for the remotely calculated value + // and one for the locally calculated value. + protected Map localchecksummap = new HashMap<>(); + protected Map remotechecksummap = new HashMap<>(); + + ////////////////////////////////////////////////// + // Constructor(s) + + /** + * Constructor + * + * @param dsp the D4DSP + * @param checksummode + * @param remoteorder + */ + + public D4DataCompiler(D4DSP dsp, ChecksumMode checksummode, ByteOrder remoteorder) throws DapException { + this.dsp = dsp; + this.dmr = this.dsp.getDMR(); + this.stream = this.dsp.getStream(); + this.checksummode = ChecksumMode.asTrueFalse(checksummode); + this.remoteorder = remoteorder; + } + + ////////////////////////////////////////////////// + // Accessors + + public Map getChecksumMap(DapConstants.ChecksumSource src) { + switch (src) { + case LOCAL: + return this.localchecksummap; + case REMOTE: + return this.remotechecksummap; + } + return null; + } + + protected void setChecksum(DapConstants.ChecksumSource src, DapVariable dvar, Long csum) { + switch (src) { + case LOCAL: + this.localchecksummap.put(dvar, csum); + case REMOTE: + this.remotechecksummap.put(dvar, csum); + } + } + + ////////////////////////////////////////////////// + // DataCompiler API + + /** + * The goal here is to process the serialized + * databuffer and pull out top-level variable positions + * in the serialized databuffer. + * In some cases -- String, Sequence, Structure -- + * significant transforms are applied to the data + * to make it usable with ucar.ma2.Array. + * + * @throws DapException + */ + public void compile() throws IOException { + assert (this.dmr != null && this.stream != null); + // iterate over the variables represented in the databuffer + for (DapVariable vv : this.dmr.getTopVariables()) { + Object storage = compileVar(vv); + D4Array data = new D4Array(schemeFor(vv), this.dsp, vv).setStorage(storage); + assert data.getArray() == null; + data.setArray(createArray(vv, data.getStorage())); + this.dsp.addVariableData(vv, data); + } + } + + /** + * Return a compiled version of the data for this variable. + * Possible return values are: + * 1. String - String[] + * 2. Opaque - Bytebuffer[] + * 3. Fixed atomic - [] + * 4. Structure - Object[][nfields] + * 5. Sequence - Object[][nfields] + */ + protected Object compileVar(DapVariable dapvar) throws IOException { + Object data = null; + DapType type = dapvar.getBaseType(); + if (dapvar.isTopLevel() && this.checksummode == ChecksumMode.TRUE) + this.stream.startChecksum(); + if (type.isAtomic()) + data = compileAtomicVar(dapvar); + else if (type.isStructType()) { + data = compileStructureArray(dapvar); + } else if (type.isSeqType()) { + data = compileSequenceArray(dapvar); + } + if (dapvar.isTopLevel() && this.checksummode == ChecksumMode.TRUE) { + // Save the locally computed checksum + long localcrc32 = this.stream.endChecksum(); // extract the remotechecksum from databuffer src, + setChecksum(DapConstants.ChecksumSource.LOCAL, dapvar, localcrc32); + // Save the checksum sent by the server + long remotecrc32 = extractChecksum(); + setChecksum(DapConstants.ChecksumSource.REMOTE, dapvar, remotecrc32); + } + return data; + } + + /** + * Compile fixed-sized atomic types + * Storage = [] + * + * @param var + * @return data + * @throws DapException + */ + protected Object compileAtomicVar(DapVariable var) throws IOException { + DapType daptype = var.getBaseType(); + + // special cases + if (daptype.isStringType()) // string or URL + return compileStringVar(var); + if (daptype.isOpaqueType()) + return compileOpaqueVar(var); + + // All other fixed-size atomic types + long dimproduct = var.getCount(); + long total = dimproduct * daptype.getSize(); + byte[] bytes = new byte[(int) total]; // total space required + int red = this.stream.read(bytes); + if (red <= 0) + throw new IOException("D4DataCompiler: read failure"); + if (red < total) + throw new DapException("D4DataCompiler: short read"); + // Convert to vector of required type + Object storage = CDMTypeFcns.bytesAsTypeVec(daptype, bytes); + CDMTypeFcns.decodebytes(this.remoteorder, daptype, bytes, storage); + return storage; + } + + /** + * Read and convert a string typed array + * + * @param var + * @return cursor + * @throws DapException + */ + protected Object compileStringVar(DapVariable var) throws IOException { + DapType daptype = var.getBaseType(); + assert daptype.isStringType(); + long dimproduct = var.getCount(); // == # strings + String[] storage = new String[(int) dimproduct]; + int count = 0; + // read each string + for (int i = 0; i < dimproduct; i++) { + int strsize = getCount(); + byte[] sbytes = new byte[strsize]; + int red = this.stream.read(sbytes); + assert red == strsize; + storage[count] = new String(sbytes, DapUtil.UTF8); + count++; + } + return storage; + } + + /** + * Read and convert an opaque typed array + * + * @param var + * @return cursor + * @throws DapException + */ + protected Object compileOpaqueVar(DapVariable var) throws IOException { + DapType daptype = var.getBaseType(); + assert daptype.isOpaqueType(); + long dimproduct = var.getCount(); // == # opaque objects + ByteBuffer[] storage = new ByteBuffer[(int) dimproduct]; + int count = 0; + // read each string + for (int i = 0; i < dimproduct; i++) { + int osize = getCount(); + byte[] obytes = new byte[osize]; + int red = this.stream.read(obytes); + assert red == osize; + storage[count] = ByteBuffer.wrap(obytes); + count++; + } + return storage; + } + + /** + * Compile a structure array. + * Since we are using ArrayStructureMA, we need to capture + * Our storage is Object[dimproduct]; this will be + * converted properly when the D4Cursor Array is created. + * + * @param var the template + * @return a StructureData[dimproduct] for the data for this struct. + * @throws DapException + */ + protected Object compileStructureArray(DapVariable var) throws IOException { + DapStructure dapstruct = (DapStructure) var.getBaseType(); + long dimproduct = var.getCount(); + Object[] storage = new Object[(int) dimproduct]; + Index idx = Index.factory(CDMUtil.computeEffectiveShape(var.getDimensions())); + long idxsize = idx.getSize(); + for (int offset = 0; (offset < idxsize); offset++) { + Object instance = compileStructure(dapstruct); + storage[offset] = instance; + } + return storage; + } + + /** + * Compile a structure instance. + * Storage is Object[dapstruct.getFields().size()]; + * + * @param dapstruct The template + * @return A DataStructure for the databuffer for this struct. + * @throws DapException + */ + protected Object compileStructure(DapStructure dapstruct) throws IOException { + List dfields = dapstruct.getFields(); + Object[] storage = new Object[dfields.size()]; + for (int m = 0; m < dfields.size(); m++) { + DapVariable dfield = dfields.get(m); + Object dvfield = compileVar(dfield); + storage[m] = dvfield; + } + return storage; + } + + /** + * Compile a sequence array. + * Our storage is Object[dimproduct] + * + * @param var the template + * @return Object[recordcount] + * @throws DapException + */ + protected Object compileSequenceArray(DapVariable var) throws IOException { + DapSequence dapseq = (DapSequence) var.getBaseType(); + long dimproduct = var.getCount(); + Object[] storage = new Object[(int) dimproduct]; + Index idx = Index.factory(CDMUtil.computeEffectiveShape(var.getDimensions())); + long idxsize = idx.getSize(); + for (int offset = 0; (offset < idxsize); offset++) { + Object seq = compileSequence(dapseq); + storage[offset] = seq; + } + return storage; + } + + /** + * Compile a sequence as a set of records. + * Our storage is Object[] where |storage| == nrecords + * + * @param dapseq + * @return sequence + * @throws DapException + */ + public Object compileSequence(DapSequence dapseq) throws IOException { + List dfields = dapseq.getFields(); + // Get the count of the number of records + long nrecs = getCount(); + Object[] records = new Object[(int) nrecs]; + for (int r = 0; r < nrecs; r++) { + Object record = compileStructure((DapStructure) dapseq); + records[r] = record; + } + return records; + } + + ////////////////////////////////////////////////// + // Utilities + + protected long extractChecksum() throws IOException { + assert this.checksummode == ChecksumMode.TRUE; + byte[] bytes = new byte[4]; // 4 == sizeof(checksum) + int red = this.stream.read(bytes); + assert red == 4; + ByteBuffer bb = ByteBuffer.wrap(bytes).order(this.remoteorder); + long csum = (int) bb.getInt(); + csum = csum & 0x00000000FFFFFFFF; + csum = csum & 0x00000000FFFFFFFFL; /* crc is 32 bits unsigned */ + return csum; + } + + protected void skip(long count) throws IOException { + for (long i = 0; i < count; i++) { + int c = this.stream.read(); + if (c < 0) + break; + } + } + + protected int getCount() throws IOException { + byte[] bytes = new byte[8]; // 8 == sizeof(long) + int red = this.stream.read(bytes); + assert red == 8; + ByteBuffer bb = ByteBuffer.wrap(bytes).order(this.remoteorder); + long count = bb.getLong(); + count = (count & 0xFFFFFFFF); + return (int) count; + } + + /** + * Compute the size in databuffer of the serialized form + * + * @param daptype + * @return type's serialized form size + */ + protected int computeTypeSize(DapType daptype) { + return LibTypeFcns.size(daptype); + } + + protected long walkByteStrings(long[] positions, ByteBuffer databuffer) throws IOException { + int count = positions.length; + long total = 0; + int savepos = databuffer.position(); + // Walk each bytestring + for (int i = 0; i < count; i++) { + int pos = databuffer.position(); + positions[i] = pos; + int size = getCount(); + total += DapConstants.COUNTSIZE; + total += size; + skip(size); + } + databuffer.position(savepos);// leave position unchanged + return total; + } + + public Array createArray(DapVariable var, Object storage) { + Array array = null; + switch (schemeFor(var)) { + case ATOMIC: + array = createAtomicArray(var, storage); + break; + case STRUCTARRAY: + array = createStructureArray(var, storage); + break; + case SEQARRAY: + array = createSequenceArray(var, storage); + break; + case STRUCTURE: + case SEQUENCE: + default: + throw new IllegalStateException("Unexpected scheme = " + schemeFor(var)); + } + return array; + } + + protected Array createAtomicArray(DapVariable var, Object storage) { + DapType dtype = var.getBaseType(); + if (dtype.isEnumType()) { + // Coverity[FB.BC_UNCONFIRMED_CAST] + dtype = ((DapEnumeration) (var.getBaseType())); + } + DataType cdmtype = CDMTypeFcns.daptype2cdmtype(dtype); + int[] shape = CDMUtil.computeEffectiveShape(var.getDimensions()); + Array array = Array.factory(cdmtype, shape, storage); + return array; + } + + protected Array createStructureArray(DapVariable var, Object storage) { + DapType dtype = var.getBaseType(); + StructureMembers members = computemembers(var); + int[] shape = CDMUtil.computeEffectiveShape(var.getDimensions()); + Object[] instances = (Object[]) storage; + StructureData[] structdata = new StructureData[instances.length]; + for (int i = 0; i < instances.length; i++) { + Object[] fields = (Object[]) instances[i]; + StructureDataW sdw = new StructureDataW(members); + for (int f = 0; f < members.getMembers().size(); f++) { + StructureMembers.Member fm = sdw.getMembers().get(f); + DapVariable d4field = ((DapStructure) dtype).getField(f); + Object fielddata = fields[f]; + Array fieldarray = createArray(d4field, fielddata); + sdw.setMemberData(fm, fieldarray); + } + structdata[i] = sdw; + } + ArrayStructureW array = new ArrayStructureW(members, shape, structdata); + return array; + } + + /** + * Create an Array object for a DAP4 Sequence. + * Unfortunately, the whole CDM Sequence/VLEN mechanism + * is completely hosed, with no hope of a simple fix. + * It appears that the only thing we can do is support scalar sequences. + * However in useless hope, the code is written as if arrays of sequences + * can be supported. + * + * @param var + * @param storage + * @return + */ + protected Array createSequenceArray(DapVariable var, Object storage) { + DapType dtype = var.getBaseType(); + StructureMembers members = computemembers(var); + int[] shape = CDMUtil.computeEffectiveShape(var.getDimensions()); + Object[] allinstancedata = (Object[]) storage; + int ninstances = allinstancedata.length; + if (ninstances != 1) // enforce scalar assumption + throw new IndexOutOfBoundsException("Non-scalar Dap4 Sequences not supported"); + Array[] allinstances = new Array[ninstances]; + for (int i = 0; i < ninstances; i++) { // iterate over all sequence instances array + Object[] ithelemdata = (Object[]) allinstancedata[i]; + int nrecords = ithelemdata.length; + StructureData[] allrecords = new StructureData[nrecords]; // for creating the record iterator + for (int r = 0; r < nrecords; r++) { // iterate over the records of one sequence + Object[] onerecorddata = (Object[]) ithelemdata[r]; + StructureDataW onerecord = new StructureDataW(members); + for (int f = 0; f < members.getMembers().size(); f++) { // iterate over fields in one record + StructureMembers.Member fm = members.getMember(f); + DapVariable d4field = ((DapStructure) dtype).getField(f); + Array fieldarray = createArray(d4field, onerecorddata[f]); + onerecord.setMemberData(fm, fieldarray); + } + allrecords[r] = onerecord; + } + D4StructureDataIterator onesequence = new D4StructureDataIterator().setList(allrecords); + ArraySequence oneseq = new ArraySequence(members, onesequence, nrecords); + allinstances[i] = oneseq; + } + return allinstances[0]; // enforce scalar assumption + } + + /** + * Compute the StructureMembers object + * from a DapStructure. May need to recurse + * if a field is itself a Structure + * + * @param var The DapVariable to use to construct + * a StructureMembers object. + * @return The StructureMembers object for the given DapStructure + */ + static StructureMembers computemembers(DapVariable var) { + DapStructure ds = (DapStructure) var.getBaseType(); + StructureMembers sm = new StructureMembers(ds.getShortName()); + List fields = ds.getFields(); + for (int i = 0; i < fields.size(); i++) { + DapVariable field = fields.get(i); + DapType dt = field.getBaseType(); + DataType cdmtype = CDMTypeFcns.daptype2cdmtype(dt); + StructureMembers.Member m = + sm.addMember(field.getShortName(), "", null, cdmtype, CDMUtil.computeEffectiveShape(field.getDimensions())); + m.setDataParam(i); // So we can index into various lists + // recurse if this field is itself a structure + if (dt.getTypeSort().isStructType()) { + StructureMembers subsm = computemembers(field); + m.setStructureMembers(subsm); + } + } + return sm; + } + +} + diff --git a/dap4/src/main/java/dap4/dap4lib/D4Index.java b/dap4/src/main/java/dap4/dap4lib/D4Index.java new file mode 100644 index 0000000000..cec1ea0c99 --- /dev/null +++ b/dap4/src/main/java/dap4/dap4lib/D4Index.java @@ -0,0 +1,152 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.dap4lib; + +import dap4.core.util.DapException; +import dap4.core.util.Slice; +import ucar.ma2.Index; + +import java.util.ArrayList; +import java.util.List; + +public class D4Index extends ucar.ma2.Index { + + public static final D4Index SCALAR = new D4Index(0); + + ////////////////////////////////////////////////// + // Static methods + + /** + * Given an offset (single index) and a set of dimensions + * compute the set of dimension indices that correspond + * to the offset. + */ + public static Index offsetToIndex(int offset, int[] shape) { + // offset = d3*(d2*(d1*(x1))+x2)+x3 + int[] indices = new int[shape.length]; + for (int i = shape.length - 1; i >= 0; i--) { + indices[i] = offset % shape[i]; + offset = (offset - indices[i]) / shape[i]; + } + return new Index(indices, shape); + } + + /** + * Convert ucar.ma2.Index to list of slices + * + * @param indices to convert + * @return list of corresponding slices + */ + + public static List indexToSlices(ucar.ma2.Index indices) throws DapException { + // short circuit the scalar case + int rank = indices.getRank(); + if (rank == 0) + return Slice.SCALARSLICES; + List slices = new ArrayList<>(rank); + int[] counter = indices.getCurrentCounter(); + for (int i = 0; i < rank; i++) { + int isize = counter[i]; + slices.add(new Slice(isize, isize + 1, 1, indices.getShape(i))); + } + return slices; + } + + /** + * If a set of slices refers to a single position, + * then return the corresponding Index. Otherwise, + * throw Exception. + * + * @param slices + * @return Index corresponding to slices + * @throws DapException + */ + public static D4Index slicesToIndex(List slices) throws DapException { + int[] positions = new int[slices.size()]; + int[] dimsizes = new int[slices.size()]; + for (int i = 0; i < positions.length; i++) { + Slice s = slices.get(i); + if (s.getCount() != 1) + throw new DapException("Attempt to convert non-singleton sliceset to index"); + positions[i] = s.getFirst(); + dimsizes[i] = s.getMax(); + } + D4Index result = new D4Index(dimsizes); + result.set(positions); + return result; + } + + ////////////////////////////////////////////////// + // Constructor(s) + + public D4Index(int rank) { + super(rank); + } + + public D4Index(int[] _shape) { + super(_shape); + } + + public D4Index(D4Index index) { + this(index.getRank()); + if (this.rank > 0) { + System.arraycopy(index.getCurrentCounter(), 0, this.current, 0, this.rank); + System.arraycopy(index.getShape(), 0, this.getShape(), 0, this.rank); + } + } + + public D4Index(int[] indices, int[] dimsizes) { + super(dimsizes); + if (this.rank > 0) { + System.arraycopy(indices, 0, this.current, 0, this.rank); + } + } + + public String toString() { + StringBuilder buf = new StringBuilder(); + buf.append('['); + for (int i = 0; i < this.rank; i++) { + if (i > 0) + buf.append(','); + buf.append(this.current[i]); + buf.append('/'); + buf.append(this.shape[i]); + } + buf.append("]("); + buf.append(this.index()); + buf.append(")"); + return buf.toString(); + } + + /** + * Compute the linear index + * from the current odometer indices. + * Not quite the same as super.currentElement(), + * which does not use shape[], but does use the super's + * "unexpected" notion of stride, although result may be same. + */ + public int index() { + int offset = this.offset; + int[] cur = getCurrentCounter(); + int[] sh = getShape(); + for (int i = 0; i < cur.length; i++) { + offset *= sh[i]; + offset += cur[i]; + } + return offset; + } + + public int getCurrentCounter(int i) { + if (i < 0 || i >= this.rank) + throw new IllegalArgumentException(); + return getCurrentCounter()[i]; + } + + public boolean isScalar() { + return (rank == 0 && getCurrentCounter().length == 1 && index() == 1); + } + +} diff --git a/dap4/d4core/src/main/java/dap4/core/data/DSPRegistry.java b/dap4/src/main/java/dap4/dap4lib/DSPRegistry.java similarity index 85% rename from dap4/d4core/src/main/java/dap4/core/data/DSPRegistry.java rename to dap4/src/main/java/dap4/dap4lib/DSPRegistry.java index 24b228cc8d..bdc920a2e6 100644 --- a/dap4/d4core/src/main/java/dap4/core/data/DSPRegistry.java +++ b/dap4/src/main/java/dap4/dap4lib/DSPRegistry.java @@ -3,7 +3,7 @@ * See the LICENSE file for more information. */ -package dap4.core.data; +package dap4.dap4lib; import dap4.core.util.DapContext; import dap4.core.util.DapException; @@ -25,10 +25,10 @@ public class DSPRegistry { // Type Decls protected static class Registration { - Class dspclass; - DSP matcher; + Class dspclass; + D4DSP matcher; - public Registration(Class cl) { + public Registration(Class cl) { this.dspclass = cl; try { this.matcher = dspclass.newInstance(); @@ -83,7 +83,7 @@ public static void setLoader(ClassLoader ldr) { */ public synchronized void register(String className, boolean last) throws DapException { try { - Class klass = (Class) loader.loadClass(className); + Class klass = (Class) loader.loadClass(className); register(klass, last); } catch (ClassNotFoundException e) { throw new DapException(e); @@ -99,7 +99,7 @@ public synchronized void register(String className, boolean last) throws DapExce * @throws InstantiationException if class doesnt have a no-arg constructor. * @throws ClassCastException if class doesnt implement DSP interface. */ - public synchronized void register(Class klass, boolean last) { + public synchronized void register(Class klass, boolean last) { // is this already defined? if (registered(klass)) return; @@ -115,7 +115,7 @@ public synchronized void register(Class klass, boolean last) { * @param klass Class for which to search */ - public synchronized boolean registered(Class klass) { + public synchronized boolean registered(Class klass) { for (Registration r : registry) { if (r.dspclass == klass) return true; @@ -128,7 +128,7 @@ public synchronized boolean registered(Class klass) { * * @param klass Class for which to search */ - public synchronized void unregister(Class klass) { + public synchronized void unregister(Class klass) { for (int i = 0; i < registry.size(); i++) { if (registry.get(i).dspclass == klass) { registry.remove(i); @@ -143,13 +143,13 @@ public synchronized void unregister(Class klass) { * @throws DapException */ - public synchronized DSP findMatchingDSP(String path, DapContext cxt) throws DapException { + public synchronized D4DSP findMatchingDSP(String path, DapContext cxt) throws DapException { for (int i = 0; i < registry.size(); i++) { try { Registration tester = registry.get(i); boolean ismatch = (Boolean) tester.matcher.dspMatch(path, cxt); if (ismatch) { - DSP dsp = (DSP) tester.dspclass.newInstance(); + D4DSP dsp = (D4DSP) tester.dspclass.newInstance(); return dsp; } } catch (Exception e) { diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/DapCodes.java b/dap4/src/main/java/dap4/dap4lib/DapCodes.java similarity index 100% rename from dap4/d4lib/src/main/java/dap4/dap4lib/DapCodes.java rename to dap4/src/main/java/dap4/dap4lib/DapCodes.java diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/DapLog.java b/dap4/src/main/java/dap4/dap4lib/DapLog.java similarity index 100% rename from dap4/d4lib/src/main/java/dap4/dap4lib/DapLog.java rename to dap4/src/main/java/dap4/dap4lib/DapLog.java diff --git a/dap4/src/main/java/dap4/dap4lib/DapProtocol.java b/dap4/src/main/java/dap4/dap4lib/DapProtocol.java new file mode 100644 index 0000000000..28af2994a8 --- /dev/null +++ b/dap4/src/main/java/dap4/dap4lib/DapProtocol.java @@ -0,0 +1,164 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.dap4lib; + +import dap4.core.util.ResponseFormat; +import dap4.core.util.XURI; + +import java.net.URISyntaxException; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/** + * Store protocol related constants + */ + +public abstract class DapProtocol implements DapCodes { + + ////////////////////////////////////////////////// + // Constants + + // protected static final String DAPVERSION = "4.0"; + // protected static final String DMRVERSION = "1.0"; + + protected static final String DAP4PROTO = "dap4"; + + ////////////////////////////////////////////////// + // Static variables + + protected static final Set DAP4EXTENSIONS; + protected static final Set DAP4QUERYMARKERS; + protected static final Set DAP4SCHEMES; + + static { + DAP4EXTENSIONS = new HashSet(); + DAP4EXTENSIONS.add("dmr"); + DAP4EXTENSIONS.add("dap"); + DAP4EXTENSIONS.add("dst"); + + DAP4QUERYMARKERS = new HashSet(); + DAP4QUERYMARKERS.add("dap4.checksum"); + DAP4QUERYMARKERS.add("dap4.ce"); + + DAP4SCHEMES = new HashSet(); + DAP4SCHEMES.add("dap4"); + DAP4SCHEMES.add("http"); + DAP4SCHEMES.add("https"); + // Note that file: is missing + }; + + + // Map RequestMode X ResponseFormat => ContentType + public static Map contenttypes; + + public static String contentKey(RequestMode mode, ResponseFormat format) { + return mode.id() + "." + format.id(); + } + + static { + // Map request x response -> (contentype,mimetype) + // If response is none, then this indicates the default + contenttypes = new HashMap(); + contenttypes.put(contentKey(RequestMode.NONE, ResponseFormat.NONE), new ContentType(RequestMode.DSR, + ResponseFormat.XML, "application/vnd.opendap.dap4.dataset-services+xml", "text/xml")); + contenttypes.put(contentKey(RequestMode.DMR, ResponseFormat.NONE), new ContentType(RequestMode.DMR, + ResponseFormat.XML, "application/vnd.opendap.dap4.dataset-metadata+xml", "text/xml")); + contenttypes.put(contentKey(RequestMode.DMR, ResponseFormat.XML), new ContentType(RequestMode.DMR, + ResponseFormat.XML, "application/vnd.opendap.dap4.dataset-metadata+xml", "text/xml")); + contenttypes.put(contentKey(RequestMode.DAP, ResponseFormat.NONE), new ContentType(RequestMode.DAP, + ResponseFormat.NONE, "application/vnd.opendap.dap4.data", "application/octet-stream")); + contenttypes.put(contentKey(RequestMode.DSR, ResponseFormat.NONE), new ContentType(RequestMode.DSR, + ResponseFormat.HTML, "application/vnd.opendap.dap4.dataset-services+html", "text/html")); + contenttypes.put(contentKey(RequestMode.DSR, ResponseFormat.XML), new ContentType(RequestMode.DSR, + ResponseFormat.XML, "application/vnd.opendap.dap4.dataset-services+xml", "text/xml")); + contenttypes.put(contentKey(RequestMode.DSR, ResponseFormat.HTML), new ContentType(RequestMode.DSR, + ResponseFormat.HTML, "application/vnd.opendap.dap4.dataset-services+html", "text/html")); + contenttypes.put(contentKey(RequestMode.CAPABILITIES, ResponseFormat.NONE), new ContentType( + RequestMode.CAPABILITIES, ResponseFormat.HTML, "application/vnd.opendap.dap4.capabilities+html", "text/html")); + contenttypes.put(contentKey(RequestMode.CAPABILITIES, ResponseFormat.XML), new ContentType(RequestMode.CAPABILITIES, + ResponseFormat.XML, "application/vnd.opendap.dap4.capabilities+xml", "text/xml")); + contenttypes.put(contentKey(RequestMode.CAPABILITIES, ResponseFormat.HTML), new ContentType( + RequestMode.CAPABILITIES, ResponseFormat.HTML, "application/vnd.opendap.dap4.capabilities+html", "text/html")); + contenttypes.put(contentKey(RequestMode.ERROR, ResponseFormat.NONE), + new ContentType(RequestMode.ERROR, ResponseFormat.XML, "application/vnd.opendap.dap4.error+xml", "text/xml")); + contenttypes.put(contentKey(RequestMode.ERROR, ResponseFormat.XML), + new ContentType(RequestMode.ERROR, ResponseFormat.XML, "application/vnd.opendap.dap4.error+xml", "text/xml")); + // Everything else is an error + } + + ////////////////////////////////////////////////// + + public static class ContentType { + public RequestMode mode; + public ResponseFormat format; + public String contenttype; + public String mimetype; + + public ContentType(RequestMode mode, ResponseFormat format, String contenttype, String mimetype) { + this.mode = mode; + this.format = format; + this.contenttype = contenttype; + this.mimetype = mimetype; + } + } + + ////////////////////////////////////////////////// + // Definitive test if a url looks like it is a DAP4 url + + /** + * A path is a DAP4 path if at least one of the following is true. + * 1. it has "dap4:" as its leading protocol + * 2. it has protocol=dap4 | mode=dap4 | dap4 in its fragment + * 3. it has dmr|dsr|dap as its request extension + * 4. it has dap4|d4ts in its path + * + * @param xuri parsed uri + * @return true if this uri appears to be processible by DAP4 + */ + public static boolean isDap4URI(XURI xuri) { + boolean found = false; + // This is definitive + if ("dap4".equalsIgnoreCase(xuri.getScheme())) + return true; + // Necessary but not sufficient + if (!DAP4SCHEMES.contains(xuri.getScheme().toLowerCase())) + return false; + for (Map.Entry entry : xuri.getQueryFields().entrySet()) { + if (DAP4QUERYMARKERS.contains(entry.getKey())) + return true; // definitive + } + // Fragment checking is a bit more complex + String d4 = xuri.getFragFields().get("dap4"); + if (d4 != null) + return true; // definitive + String p = xuri.getFragFields().get("protocol"); + if (p != null) { + if (p.equalsIgnoreCase("dap4")) + return true; // definitive + } + String modes = xuri.getFragFields().get("mode"); + if (modes != null) { + String[] modelist = modes.split("[,]"); + for (String mode : modelist) { + if (mode.equalsIgnoreCase("dap4")) + return true; // definitive + } + } + return false; + } + + public static boolean isDap4URI(String uri) { + try { + XURI xuri = new XURI(uri); + return isDap4URI(xuri); + } catch (URISyntaxException use) { + return false; + } + } + +} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/DapStartLog.java b/dap4/src/main/java/dap4/dap4lib/DapStartLog.java similarity index 100% rename from dap4/d4lib/src/main/java/dap4/dap4lib/DapStartLog.java rename to dap4/src/main/java/dap4/dap4lib/DapStartLog.java diff --git a/dap4/src/main/java/dap4/dap4lib/DeChunkedInputStream.java b/dap4/src/main/java/dap4/dap4lib/DeChunkedInputStream.java new file mode 100644 index 0000000000..d72bc785da --- /dev/null +++ b/dap4/src/main/java/dap4/dap4lib/DeChunkedInputStream.java @@ -0,0 +1,333 @@ +/* + * Copyright 2012, UCAR/Unidmodeata. + * See the LICENSE file for more information. + */ + +package dap4.dap4lib; + + +import dap4.core.util.DapConstants; +import dap4.core.util.DapException; +import dap4.core.util.DapUtil; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.zip.Checksum; + +/** + * This class transforms a chunked input stream to a de-chunked input stream. + * Given the input stream, produce a ByteBuffer with all chunking information removed. + * There are two special cases. + * 1. Error chunk -- cache the error chunk as text and provide accessors to obtain it. + * 2. DMR -- cache the DMR, whatever the mode, and provide accessors. + * + */ + +public class DeChunkedInputStream extends InputStream { + + ////////////////////////////////////////////////// + // Constants + + static final int DFALTCHUNKSIZE = 0x00FFFFFF; + + static final byte CR8 = DapUtil.extract(DapUtil.UTF8.encode("\r"))[0]; + static final byte LF8 = DapUtil.extract(DapUtil.UTF8.encode("\n"))[0]; + + static final int HDRSIZE = 4; // bytes + + ////////////////////////////////////////////////// + // Types + + protected static class Chunk { // Could we use ByteBuffer? + public byte[] chunk; + public int size; // note that chunk.length > size is possible + public int avail; + public int pos; + public int flags; // from last chunk header + + public Chunk() { + chunk = null; + size = 0; + avail = 0; + pos = 0; + flags = 0; + } + } + + public static enum State { + INITIAL, MORE, END, ERROR; + } + + ////////////////////////////////////////////////// + // Fields + + InputStream source = null; + + protected RequestMode mode = RequestMode.NONE; + + protected ByteOrder remoteorder = null; + protected State state = State.INITIAL; + protected Chunk chunk = null; // the whole current chunk + + protected Checksum crc32alg = new java.util.zip.CRC32(); + protected long crc32 = 0; + protected boolean checksumming = false; + + // Cache two special chunks + protected String errortext = null; + protected String dmrtext = null; + + ////////////////////////////////////////////////// + // Constructor(s) + + public DeChunkedInputStream(InputStream src, RequestMode mode) throws IOException { + this.source = src; + this.chunk = new Chunk(); + this.mode = mode; + readDMR(this.chunk); + if (state == State.ERROR) + throw new DapException("DeChunkedInputStream: cannot read DMR"); + } + + ////////////////////////////////////////////////// + // InputStream Defining Methods + + public int available() throws IOException { + throw new UnsupportedOperationException(); + } + + public void close() throws IOException { + this.source.close(); + } + + public void mark(int readlimit) { + throw new UnsupportedOperationException(); + } + + public void reset() throws IOException { + source.reset(); + } + + public boolean markSupported() { + return false; + } + + public int read() throws IOException { + if (this.chunk.avail == 0) { + int red = readChunk(this.chunk); // read next chunk + if (red <= 0) + return red; + } + assert this.chunk.avail > 0; + int c = this.chunk.chunk[this.chunk.pos]; + this.chunk.pos++; + this.chunk.avail--; + if (checksumming) + computeChecksum(c); + return c; + } + + // Reads some number of bytes from the input stream and stores them + // into the buffer array b. + public int read(byte[] b) throws IOException { + return read(b, 0, b.length); + } + + // Reads up to len bytes of data from the input stream into an array of bytes. + public int read(byte[] b, int off, int len) throws IOException { + if (b.length < off + len) + throw new DapException("DeChunkedInputStream: illegal arguments: len+offset > |b|"); // avoid overflow + int remainder = len; // track # of bytes to read + int pos = off; // read point in b + while (remainder > 0) { + if (this.chunk.avail == 0) { + int red = readChunk(this.chunk); // read next chunk + if (red <= 0) + throw new IOException("DeChunkedInputStream: IO error"); + assert this.chunk.avail == red; + } + assert this.chunk.avail > 0; + int avail = this.chunk.avail; + int toread = avail; // max readable + if (avail > remainder) + toread = remainder; // only read what we need + System.arraycopy(this.chunk.chunk, this.chunk.pos, b, pos, toread); // transfer what we can + this.chunk.pos += toread; // track source availability + this.chunk.avail -= toread; + pos += toread; // track dest availability + remainder -= toread; + } + if (checksumming) + computeChecksum(b, off, len); + return len; + } + + public long skip(long n) throws IOException { + long count = n; + while (count > 0) { + if (this.chunk.avail == 0) { + int red = readChunk(this.chunk); // read next chunk + if (red <= 0) + return (n - count); + assert this.chunk.avail == red; + } + assert this.chunk.avail > 0; + if (count <= this.chunk.avail) { + this.chunk.pos += count; + this.chunk.avail -= count; + count = n; // we read n bytes + break; + } else { + this.chunk.pos += this.chunk.avail; + this.chunk.avail -= this.chunk.avail; + count -= this.chunk.avail; + } + } + return count; + } + + ////////////////////////////////////////////////// + // Accessors + + public State getState() { + return this.state; + } + + public String getErrorText() { + return this.errortext; + } + + public String getDMRText() { + return this.dmrtext; + } + + // Primarily to access DMR and ERROR chunks + public byte[] getCurrentChunk() throws IOException { + if (this.state == State.INITIAL) + this.readChunk(this.chunk); // prime pump + byte[] truechunk = new byte[this.chunk.size]; + System.arraycopy(this.chunk.chunk, 0, truechunk, 0, this.chunk.size); + return truechunk; + }; + + public ByteOrder getRemoteOrder() { + return this.remoteorder; + } + + ////////////////////////////////////////////////// + // Methods + + protected int readChunk(Chunk chunk) throws IOException { + assert this.mode == RequestMode.DAP; + switch (state) { + case INITIAL: + case MORE: + if (!readHeader(this.chunk)) + throw new DapException("Malformed chunked source"); + if (state == State.INITIAL) + this.remoteorder = (this.chunk.flags & DapConstants.CHUNK_LITTLE_ENDIAN) == 0 ? ByteOrder.BIG_ENDIAN + : ByteOrder.LITTLE_ENDIAN; + // Figure out the next state + if ((this.chunk.flags & DapConstants.CHUNK_ERROR) == 1) + state = State.ERROR; + else if ((this.chunk.flags & DapConstants.CHUNK_END) == 1) + state = State.END; + else + state = State.MORE; + // Now read the chunk + if (this.chunk.chunk == null || this.chunk.size > this.chunk.chunk.length) + this.chunk.chunk = new byte[this.chunk.size]; // reallocate + this.chunk.pos = 0; + this.chunk.avail = this.chunk.size; + // read the whole chunk + int red = DapUtil.readbinaryfilepartial(source, this.chunk.chunk, this.chunk.size); + assert (red == this.chunk.size); + // If we are in an error state, then throw exception + if (this.state == State.ERROR) + throw new DapException("DeChunkedInputStream: Error chunk encountered"); + break; + case END: + case ERROR: + throw new DapException("Illegal chunk state"); + } + return this.chunk.size; + } + + protected int readDMR(Chunk chunk) throws IOException { + assert (this.state == State.INITIAL); + switch (this.mode) { + case DMR: + this.remoteorder = ByteOrder.nativeOrder(); // do not really know + this.chunk.chunk = DapUtil.readbinaryfile(source); // read whole input stream as DMR + this.chunk.size = this.chunk.chunk.length; + if (this.chunk.size > 0) { + this.dmrtext = new String(this.chunk.chunk, DapUtil.UTF8); + // Make sure the state looks correct + this.chunk.pos = this.chunk.size; + this.chunk.avail = 0; + this.state = State.END; + this.remoteorder = ByteOrder.nativeOrder(); // do not really know + } else { + this.state = State.ERROR; + throw new DapException("DeChunkedInputStream: Error chunk encountered when reading DMR"); + } + break; + case DAP: + this.remoteorder = ByteOrder.nativeOrder(); // do not really know + readChunk(this.chunk); + this.dmrtext = new String(this.chunk.chunk, DapUtil.UTF8); + this.skip(this.chunk.size); + break; + default: + throw new DapException("Illegal request mode"); + } + return this.chunk.size; + } + + /** + * Read the size+flags header from the input source and use it to + * initialize the chunk state + * + * @return true if header read false if immediate eof encountered or chunk is too short + */ + + protected boolean readHeader(Chunk chunk) throws IOException { + byte[] bytehdr = new byte[HDRSIZE]; + int red = this.source.read(bytehdr); + if (red < HDRSIZE) + return false; + int flags = ((int) bytehdr[0]) & 0xFF; // Keep unsigned + bytehdr[0] = 0; + ByteBuffer buf = ByteBuffer.wrap(bytehdr).order(ByteOrder.BIG_ENDIAN); + int size = buf.getInt(); + this.chunk.size = size; + this.chunk.flags = flags; + return true; + } + + public void startChecksum() { + this.checksumming = true; + crc32alg.reset(); + } + + public void computeChecksum(byte[] b, int offset, int extent) { + // Slice out the part on which to compute the CRC32 and compute CRC32 + crc32alg.update(b, offset, extent); + } + + public void computeChecksum(int b) { + // Slice out the part on which to compute the CRC32 and compute CRC32 + crc32alg.update(b); + } + + public long endChecksum() { + this.crc32 = crc32alg.getValue(); // get the digest value + this.crc32 = this.crc32 & 0x00000000FFFFFFFFL; /* crc is 32 bits unsigned */ + this.checksumming = false; + return this.crc32; + } + + +} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/ErrorException.java b/dap4/src/main/java/dap4/dap4lib/ErrorException.java similarity index 100% rename from dap4/d4lib/src/main/java/dap4/dap4lib/ErrorException.java rename to dap4/src/main/java/dap4/dap4lib/ErrorException.java diff --git a/dap4/src/main/java/dap4/dap4lib/HttpDSP.java b/dap4/src/main/java/dap4/dap4lib/HttpDSP.java new file mode 100644 index 0000000000..c5e0cd752c --- /dev/null +++ b/dap4/src/main/java/dap4/dap4lib/HttpDSP.java @@ -0,0 +1,179 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.dap4lib; + +import dap4.core.util.ChecksumMode; +import dap4.core.dmr.DapDataset; +import dap4.core.util.*; +import dap4.dap4lib.D4DSP; +import dap4.dap4lib.D4DataCompiler; +import org.apache.http.HttpStatus; +import ucar.httpservices.*; +import ucar.nc2.NetcdfFile; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.ByteBuffer; +import java.util.Map; + +/** + * Make a request to a server and convert the reply + * to a DapDataset from the returned bytes. + */ + +public class HttpDSP extends D4DSP { + + ////////////////////////////////////////////////// + // Constants + + protected static final boolean DEBUG = false; + + protected static final int DFALTPRELOADSIZE = 50000; // databuffer + + ////////////////////////////////////////////////// + // Static methods + + public static void setHttpDebug() { + HTTPIntercepts.setGlobalDebugInterceptors(true); + } + + ////////////////////////////////////////////////// + // Instance variables + + protected boolean allowCompression = true; + protected int status = HttpStatus.SC_OK; // response + + ////////////////////////////////////////////////// + // Constructor(s) + + public HttpDSP() { + super(); + } + + ////////////////////////////////////////////////// + // DSP API + + public D4DSP open(String fileurl, ChecksumMode cmode) throws DapException { + super.open(fileurl, cmode); + return this; + } + + /** + * @param url + * @param context Any parameters that may help to decide. + * @return true if this url appears to be processible by this DSP + */ + public boolean dspMatch(String url, DapContext context) { + return DapProtocol.isDap4URI(url); + } + + ///////////////////////////////////////// + // AbstractDSP extensions + + /* + * @Override + * public String getPath() + * { + * return this.originalurl; + * } + */ + + ////////////////////////////////////////////////// + // Load methods + + public void loadDMR() throws DapException { + String methodurl = getMethodUrl(RequestMode.DMR, this.checksummode); + try { + InputStream stream = makeRequest(methodurl); // close later + setStream(stream, RequestMode.DMR); + super.loadDMR(); + } catch (IOException e) { + throw new DapException(e); + } + } + + /** + * This will be called lazily when trying to read data. + * + * @throws DapException + */ + public void loadDAP() throws DapException { + String methodurl = getMethodUrl(RequestMode.DAP, this.checksummode); + try (InputStream stream = makeRequest(methodurl)) { + // Extract and "compile" the server response, ignoring the leading DMR + setStream(stream, RequestMode.DAP); + super.loadDAP(); + } catch (IOException ioe) { + throw new DapException(ioe); + } + } + + ////////////////////////////////////////////////// + // Request/Response methods + + /** + * Open a connection and make a request for the (possibly constrained) DMR|DAP + * (choice is made by url extension) + * + * @throws DapException + */ + + protected InputStream makeRequest(String methodurl) throws DapException { + // Assume mode is consistent with the url. + InputStream stream; + // Make the request and return the input stream for accessing the databuffer + URI uri; + try { + uri = HTTPUtil.parseToURI(methodurl); + } catch (URISyntaxException mue) { + throw new DapException("Malformed url: " + methodurl); + } + long start = System.currentTimeMillis(); + long stop = 0; + this.status = 0; + HTTPMethod method = null; // Implicitly passed out to caller via stream + try { // Note that we cannot use try with resources because we export the method stream, so method + // must not be closed. + method = HTTPFactory.Get(methodurl); + if (allowCompression) + method.setCompression("deflate,gzip"); + this.status = method.execute(); + if (this.status != HttpStatus.SC_OK) { + String msg = method.getResponseAsString(); + throw new DapException("Request failure: " + status + ": " + methodurl).setCode(status); + } + // Get the response body stream => do not close the method + return method.getResponseAsStream(); + } catch (HTTPException e) { + if (method != null) + method.close(); + throw new DapException(e); + } + } + + ////////////////////////////////////////////////// + // Utilities + + protected static String buildURL(String baseurl, String suffix, DapDataset template, String ce) { + StringBuilder methodurl = new StringBuilder(); + methodurl.append(baseurl); + if (suffix != null) { + methodurl.append('.'); + methodurl.append(suffix); + } + if (ce != null && ce.length() > 0) { + methodurl.append("?"); + methodurl.append(DapConstants.CONSTRAINTTAG); + methodurl.append('='); + methodurl.append(ce); + } + return methodurl.toString(); + } + +} diff --git a/dap4/d4lib/src/main/java/dap4/dap4lib/LibTypeFcns.java b/dap4/src/main/java/dap4/dap4lib/LibTypeFcns.java similarity index 100% rename from dap4/d4lib/src/main/java/dap4/dap4lib/LibTypeFcns.java rename to dap4/src/main/java/dap4/dap4lib/LibTypeFcns.java diff --git a/dap4/src/main/java/dap4/dap4lib/RawDSP.java b/dap4/src/main/java/dap4/dap4lib/RawDSP.java new file mode 100644 index 0000000000..70ffe9bb1b --- /dev/null +++ b/dap4/src/main/java/dap4/dap4lib/RawDSP.java @@ -0,0 +1,109 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.dap4lib; + +import dap4.core.dmr.parser.DOM4Parser; +import dap4.core.dmr.parser.Dap4Parser; +import dap4.core.util.*; + +import java.io.*; +import java.net.URISyntaxException; + +/** + * Provide a DSP interface to raw data + */ + +public class RawDSP extends D4DSP { + ////////////////////////////////////////////////// + // Constants + + protected static final String[] EXTENSIONS = new String[] {".dap", ".raw"}; + + ////////////////////////////////////////////////// + // Instance variables + + ////////////////////////////////////////////////// + // Constructor(s) + + public RawDSP() {} + + ////////////////////////////////////////////////// + // D4DSP API + + // Note that there is no point in delaying the compilation of the + // DMR and DAP since we are reading the whole DAP anyway + @Override + public D4DSP open(String fileurl, ChecksumMode cmode) throws DapException { + mode = RequestMode.DAP; // force it + super.open(fileurl, cmode); + String methodurl = getMethodUrl(mode, this.checksummode); + parseURL(methodurl); // reparse + String realpath = this.xuri.getRealPath(); + try { + FileInputStream stream = new FileInputStream(realpath); + setStream(stream, RequestMode.DAP); + } catch (IOException ioe) { + throw new DapException(ioe).setCode(DapCodes.SC_INTERNAL_SERVER_ERROR); + } + return this; + } + + /** + * A path is file if it has no base protocol or is file: + * + * @param location file:/ or possibly an absolute path + * @param context Any parameters that may help to decide. + * @return true if this path appears to be processible by this DSP + */ + public boolean dspMatch(String location, DapContext context) { + try { + XURI xuri = new XURI(location); + if (xuri.isFile()) { + String path = xuri.getPath(); + for (String ext : EXTENSIONS) { + if (path.endsWith(ext)) + return true; + } + } + } catch (URISyntaxException use) { + return false; + } + return false; + } + + ////////////////////////////////////////////////// + // Load Operations + + /** + * LoadDMR actually loads DAP since we know that we will need that eventually. + * + * @throws DapException + */ + + public void loadDMR() throws DapException { + String methodurl = getMethodUrl(mode, this.checksummode); + parseURL(methodurl); // reparse + String realpath = this.xuri.getRealPath(); + try { + FileInputStream stream = new FileInputStream(realpath); + setStream(stream, RequestMode.DAP); + super.loadDMR(); + } catch (IOException ioe) { + throw new DapException(ioe).setCode(DapCodes.SC_INTERNAL_SERVER_ERROR); + } + } + + /** + * loadDMR will have already loaded the DAP stream, + * so all that is left is to compile the data stream, + * + * @throws DapException + */ + public void loadDAP() throws IOException { + super.loadDAP(); + } + +} diff --git a/dap4/src/main/java/dap4/dap4lib/RequestMode.java b/dap4/src/main/java/dap4/dap4lib/RequestMode.java new file mode 100644 index 0000000000..a650d3b0f3 --- /dev/null +++ b/dap4/src/main/java/dap4/dap4lib/RequestMode.java @@ -0,0 +1,53 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + + +package dap4.dap4lib; + +/** + * Define the enum for the possible Request/Response modes + */ +public enum RequestMode { + DMR("dmr", "dmr"), DAP("dap", "dap"), DSR("dsr", "dsr"), CAPABILITIES("capabilities", ""), ERROR("error", + null), NONE("none", null); + + private String id; + private String extension; + + RequestMode(String id, String extension) { + this.id = id; + this.extension = extension; + } + + public String id() { + return id; + } + + public String extension() { + return extension; + } + + public static RequestMode modeFor(String s) { + for (RequestMode mode : RequestMode.values()) { + if (mode.extension() != null && s.equalsIgnoreCase(mode.extension) || s.equalsIgnoreCase("." + mode.extension)) + return mode; + } + return null; + } + + public static RequestMode idMode(String id) { + for (RequestMode mode : RequestMode.values()) { + if (mode.id() != null && id.equalsIgnoreCase(mode.id)) + return mode; + } + return null; + } + + public String toString() { + return id; + } +} + + diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/CDMTypeFcns.java b/dap4/src/main/java/dap4/dap4lib/cdm/CDMTypeFcns.java similarity index 93% rename from dap4/d4cdm/src/main/java/dap4/cdm/CDMTypeFcns.java rename to dap4/src/main/java/dap4/dap4lib/cdm/CDMTypeFcns.java index 535fca567c..eaf93aadf6 100644 --- a/dap4/d4cdm/src/main/java/dap4/cdm/CDMTypeFcns.java +++ b/dap4/src/main/java/dap4/dap4lib/cdm/CDMTypeFcns.java @@ -3,7 +3,7 @@ * See the LICENSE file for more information. */ -package dap4.cdm; +package dap4.dap4lib.cdm; import dap4.core.dmr.DapEnumeration; import dap4.core.dmr.DapType; @@ -16,9 +16,12 @@ import ucar.ma2.DataType; import ucar.ma2.ForbiddenConversionException; import ucar.nc2.EnumTypedef; +import ucar.nc2.Sequence; +import ucar.nc2.Structure; + import java.math.BigDecimal; import java.math.BigInteger; -import java.nio.ByteBuffer; +import java.nio.*; import java.util.ArrayList; import java.util.List; @@ -43,36 +46,36 @@ public abstract class CDMTypeFcns { public static Class cdmElementClass(DataType dt) { switch (dt) { case BOOLEAN: - return boolean.class; + return Boolean.class; case ENUM1: case BYTE: - return byte.class; + return Byte.class; case CHAR: - return char.class; + return Character.class; case ENUM2: case SHORT: - return short.class; + return Short.class; case ENUM4: case INT: - return int.class; + return Integer.class; case LONG: - return long.class; + return Long.class; case FLOAT: - return float.class; + return Float.class; case DOUBLE: - return double.class; + return Double.class; case STRING: return String.class; case OPAQUE: return ByteBuffer.class; case UBYTE: - return byte.class; + return Byte.class; case USHORT: - return short.class; + return Short.class; case UINT: - return int.class; + return Integer.class; case ULONG: - return long.class; + return Long.class; default: break; } @@ -126,6 +129,10 @@ public static Object createVector(DataType type, long count) { return vector; } + public static boolean signify(DapType type) { + return daptype2cdmtype(type).isUnsigned(); + } + public static Object createVector(DapType type, long count) { if (type.getAtomicType() == TypeSort.Enum) return createVector(((DapEnumeration) type).getBaseType(), count); @@ -265,7 +272,6 @@ public static DataType daptype2cdmtype(DapType type) { return null; } - /** * Conmpute the size, in databuffer, * of the daptype wrt to a serialization; @@ -1352,24 +1358,87 @@ public static List listify(Object vector) { return list; } + public static Object bytesAsTypeVec(DapType daptype, byte[] bytes) { + TypeSort tsort = daptype.getTypeSort(); + int count = (bytes.length / daptype.getSize()); + switch (tsort) { + case Char: + return new char[count]; + case Int8: + case UInt8: + return new byte[count]; + case Int16: + case UInt16: + return new short[count]; + case Int32: + case UInt32: + return new int[count]; + case Int64: + case UInt64: + return new long[count]; + case Float32: + return new float[count]; + case Float64: + return new double[count]; + case Enum: + // Coverity[FB.BC_UNCONFIRMED_CAST] + return bytesAsTypeVec(((DapEnumeration) daptype).getBaseType(), bytes); + default: + break; + } + return null; + } + + public static void decodebytes(ByteOrder remoteorder, DapType daptype, byte[] bytes, Object vector) { + TypeSort tsort = daptype.getTypeSort(); + ByteBuffer bb = ByteBuffer.wrap(bytes).order(remoteorder); + switch (tsort) { + case Char: + String cb = new String(bytes, DapUtil.UTF8); + char[] cv = (char[]) vector; + for (int i = 0; i < cv.length; i++) + cv[i] = cb.charAt(i); + break; + case Int8: + case UInt8: + bb.get((byte[]) vector); + break; + case Int16: + case UInt16: + ShortBuffer sb = bb.asShortBuffer(); + short[] sv = (short[]) vector; + sb.get(sv); + break; + case Int32: + case UInt32: + IntBuffer ib = bb.asIntBuffer(); + int[] iv = (int[]) vector; + ib.get(iv); + break; + case Int64: + case UInt64: + LongBuffer lb = bb.asLongBuffer(); + long[] lv = (long[]) vector; + lb.get(lv); + break; + case Float32: + FloatBuffer fb = bb.asFloatBuffer(); + float[] fv = (float[]) vector; + fb.get(fv); + break; + case Float64: + DoubleBuffer db = bb.asDoubleBuffer(); + double[] dv = (double[]) vector; + db.get(dv); + break; + case Enum: + // Coverity[FB.BC_UNCONFIRMED_CAST] + decodebytes(remoteorder, ((DapEnumeration) daptype).getBaseType(), bytes, vector); + break; + default: + break; + } + + } - /* - * static public Array - * arraysection(Array a, List slices) - * { - * int rank = slices.size(); - * int[] origin = new int[rank]; - * int[] subshape = new int[rank]; - * for(int i = 0; i < rank; i++) { - * origin[i] = 0; - * subshape[i] = (int) index.get(i); - * } - * subshape[rank - 1] = 1; // remove vlen dimension - * Array records; - * try { - * records = seqarray.section(origin, subshape, null); - * } catch (InvalidRangeException e) { - * throw new DapException("Illegal index", e); - * } - */ } diff --git a/dap4/src/main/java/dap4/dap4lib/cdm/CDMUtil.java b/dap4/src/main/java/dap4/dap4lib/cdm/CDMUtil.java new file mode 100644 index 0000000000..9bd5e9d5c7 --- /dev/null +++ b/dap4/src/main/java/dap4/dap4lib/cdm/CDMUtil.java @@ -0,0 +1,342 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.dap4lib.cdm; + +import dap4.core.dmr.DapDimension; +import dap4.core.dmr.DapType; +import dap4.core.dmr.TypeSort; +import dap4.core.util.DapException; +import dap4.core.util.Slice; +import ucar.ma2.ForbiddenConversionException; +import ucar.ma2.Index; +import ucar.ma2.InvalidRangeException; +import ucar.ma2.Range; +import ucar.nc2.CDMNode; +import ucar.nc2.Dimension; +import ucar.nc2.NetcdfFile; +import ucar.nc2.Variable; +import ucar.nc2.dataset.NetcdfDataset; +import java.util.ArrayList; +import java.util.List; + +/** + * CDM related Constants and utilities + * common to client and server code + */ + +public abstract class CDMUtil { + + static final String hexchars = "0123456789abcdef"; + + static final public Index SCALAR = new Index(new int[0], new int[0]); + + /** + * Convert a list of ucar.ma2.Range to a list of Slice + * More or less the inverst of create CDMRanges + * + * @param rangelist the set of ucar.ma2.Range + * @return the equivalent list of Slice + */ + public static List createSlices(List rangelist) throws dap4.core.util.DapException { + List slices = new ArrayList(rangelist.size()); + for (int i = 0; i < rangelist.size(); i++) { + Range r = rangelist.get(i); + // r does not store last + int stride = r.stride(); + int first = r.first(); + int n = r.length(); + int stop = first + (n * stride); + Slice cer = new Slice(first, stop - 1, stride); + slices.add(cer); + } + return slices; + } + + /** + * Test a List against a List + * to see if the range list represents the whole + * set of dimensions within the specified indices. + * + * @param rangelist the set of ucar.ma2.Range + * @param dimset the set of DapDimensions + * @param start start looking here + * @param stop stop looking here + * @return true if rangelist is whole; false otherwise. + */ + + public static boolean isWhole(List rangelist, List dimset, int start, int stop) + throws dap4.core.util.DapException { + int rsize = (rangelist == null ? 0 : rangelist.size()); + if (rsize != dimset.size()) + throw new dap4.core.util.DapException("range/dimset rank mismatch"); + if (rsize == 0) + return true; + if (start < 0 || stop < start || stop > rsize) + throw new dap4.core.util.DapException("Invalid start/stop indices"); + + for (int i = start; i < stop; i++) { + Range r = rangelist.get(i); + DapDimension d = dimset.get(i); + if (r.stride() != 1 || r.first() != 0 || r.length() != d.getSize()) + return false; + } + return true; + } + + /** + * Test a List against a List + * to see if the range list is whole + * wrt the slices + * + * @param rangelist the set of ucar.ma2.Range + * @param slices the set of slices + * @return true if rangelist is whole wrt slices; false otherwise. + */ + public static boolean isWhole(List rangelist, List slices) throws dap4.core.util.DapException { + if (rangelist.size() != slices.size()) + return false; + for (int i = 0; i < rangelist.size(); i++) { + Range r = rangelist.get(i); + Slice slice = slices.get(i); + if (r.stride() != 1 || r.first() != 0 || r.length() != slice.getCount()) + return false; + } + return true; + } + + /** + * Test a List against the CDM variable's dimensions + * to see if the range list is whole + * wrt the dimensions + * + * @param rangelist the set of ucar.ma2.Range + * @param var the cdm var + * @return true if rangelist is whole wrt slices; false otherwise. + */ + public static boolean isWhole(List rangelist, Variable var) throws dap4.core.util.DapException { + List dimset = var.getDimensions(); + if (rangelist.size() != dimset.size()) + return false; + for (int i = 0; i < rangelist.size(); i++) { + Range r = rangelist.get(i); + Dimension dim = dimset.get(i); + if (r.stride() != 1 || r.first() != 0 || r.length() != dim.getLength()) + return false; + } + return true; + } + + public static List createCDMRanges(List slices) throws DapException { + List cdmranges = new ArrayList(); + for (int i = 0; i < slices.size(); i++) { + Slice r = slices.get(i); + try { + ucar.ma2.Range cmdr; + cmdr = new ucar.ma2.Range((int) r.getFirst(), (int) r.getLast(), (int) r.getStride()); + cdmranges.add(cmdr); + } catch (InvalidRangeException ire) { + throw new DapException(ire); + } + } + return cdmranges; + } + + /** + * NetcdfDataset can end up wrapping a variable + * in multiple wrapping classes (e.g. VariableDS). + * Goal of this procedure is to get down to the + * lowest level Variable instance + * + * @param var possibly wrapped variable + * @return the lowest level Variable instance + */ + public static Variable unwrap(Variable var) { + return (Variable) CDMNode.unwrap(var); + } + + /** + * NetcdfDataset can wrap a NetcdfFile. + * Goal of this procedure is to get down to the + * lowest level NetcdfFile instance. + * + * @param file NetcdfFile or NetcdfDataset + * @return the lowest level NetcdfFile instance + */ + public static NetcdfFile unwrapfile(NetcdfFile file) { + for (;;) { + if (file instanceof NetcdfDataset) { + NetcdfDataset ds = (NetcdfDataset) file; + file = ds.getReferencedFile(); + if (file == null) + break; + } else + break; + } + return file; + } + + public static boolean hasVLEN(List ranges) { + if (ranges == null || ranges.isEmpty()) + return false; + return ranges.get(ranges.size() - 1) == Range.VLEN; + } + + /** + * Test if any dimension is variable length + */ + public static boolean hasVLEN(Variable v) { + return containsVLEN(v.getDimensions()); + } + + /** + * Test if any dimension is variable length + */ + public static boolean containsVLEN(List dimset) { + if (dimset == null) + return false; + for (Dimension dim : dimset) { + if (dim.isVariableLength()) + return true; + } + return false; + } + + /** + * Compute the shape inferred from a set of slices. + * 'Effective' means that any trailing vlen will be + * ignored. + * + * @param dimset from which to generate shape + * @return effective shape + */ + public static int[] computeEffectiveShape(List dimset) { + if (dimset == null || dimset.isEmpty()) + return new int[0]; + int effectiverank = dimset.size(); + int[] shape = new int[effectiverank]; + for (int i = 0; i < effectiverank; i++) { + shape[i] = (int) dimset.get(i).getSize(); + } + return shape; + } + + /** + * Convert an array of one type of values to another type + * + * @param dsttype target type + * @param srctype source type + * @param src array of values to convert + * @return resulting array of converted values as an object + */ + + public static Object convertVector(DapType dsttype, DapType srctype, Object src) { + int i; + + TypeSort srcatomtype = srctype.getAtomicType(); + TypeSort dstatomtype = dsttype.getAtomicType(); + + if (srcatomtype == dstatomtype) { + return src; + } + if (srcatomtype.isIntegerType() && TypeSort.getSignedVersion(srcatomtype) == TypeSort.getSignedVersion(dstatomtype)) + return src; + + Object result = CDMTypeFcns.convert(dstatomtype, srcatomtype, src); + if (result == null) + throw new ForbiddenConversionException(); + return result; + } + + public static String getChecksumString(byte[] checksum) { + StringBuilder buf = new StringBuilder(); + for (int i = 0; i < checksum.length; i++) { + byte b = checksum[i]; + buf.append(hexchars.charAt(b >> 4)); + buf.append(hexchars.charAt(b & 0xF)); + } + return buf.toString(); + } + + public static List dimsetToRanges(List dimset) throws dap4.core.util.DapException { + if (dimset == null) + return null; + List ranges = new ArrayList<>(); + for (int i = 0; i < dimset.size(); i++) { + DapDimension dim = dimset.get(i); + try { + Range r = new Range(dim.getShortName(), 0, (int) dim.getSize() - 1, 1); + ranges.add(r); + } catch (InvalidRangeException ire) { + throw new dap4.core.util.DapException(ire); + } + } + return ranges; + } + + public static List shapeToSlices(int[] shape) throws dap4.core.util.DapException { + if (shape == null) + return null; + List slices = new ArrayList<>(shape.length); + for (int i = 0; i < shape.length; i++) { + Slice sl = new Slice(0, shape[i] - 1, 1); + slices.add(sl); + } + return slices; + } + + public static Index cdmIndexToIndex(ucar.ma2.Index cdmidx) { + Index dapidx = new Index(cdmidx.getCurrentCounter(), cdmidx.getShape()); + return dapidx; + } + + public static ucar.ma2.Index indexToCcMIndex(Index d4) { + return (Index) d4; + } + + /** + * Convert DataIndex to list of slices + * + * @param indices to convert + * @return list of corresponding slices + */ + + public static List indexToSlices(Index indices) throws DapException { + // short circuit the scalar case + int rank = indices.getRank(); + if (rank == 0) + return Slice.SCALARSLICES; + // offset = d3*(d2*(d1*(x1))+x2)+x3 + List slices = new ArrayList<>(rank); + for (int i = 0; i < rank; i++) { + int isize = indices.getCurrentCounter()[i]; + slices.add(new Slice(isize, isize + 1, 1, indices.getShape(i))); + } + return slices; + } + + /** + * If a set of slices refers to a single position, + * then return the corresponding Index. Otherwise, + * throw Exception. + * + * @param slices + * @return Index corresponding to slices + * @throws DapException + */ + public static Index slicesToIndex(List slices) throws DapException { + int[] positions = new int[slices.size()]; + int[] dimsizes = new int[slices.size()]; + for (int i = 0; i < positions.length; i++) { + Slice s = slices.get(i); + if (s.getCount() != 1) + throw new DapException("Attempt to convert non-singleton sliceset to index"); + positions[i] = s.getFirst(); + dimsizes[i] = s.getMax(); + } + return new Index(positions, dimsizes); + } + +} diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/NodeMap.java b/dap4/src/main/java/dap4/dap4lib/cdm/NodeMap.java similarity index 98% rename from dap4/d4cdm/src/main/java/dap4/cdm/NodeMap.java rename to dap4/src/main/java/dap4/dap4lib/cdm/NodeMap.java index a3c242cb5f..64a4aeed4a 100644 --- a/dap4/d4cdm/src/main/java/dap4/cdm/NodeMap.java +++ b/dap4/src/main/java/dap4/dap4lib/cdm/NodeMap.java @@ -3,7 +3,7 @@ * See the LICENSE file for more information. */ -package dap4.cdm; +package dap4.dap4lib.cdm; import dap4.core.dmr.DapNode; import ucar.nc2.CDMNode; diff --git a/dap4/src/main/java/dap4/dap4lib/cdm/nc2/CDMCompiler.java b/dap4/src/main/java/dap4/dap4lib/cdm/nc2/CDMCompiler.java new file mode 100644 index 0000000000..f610c9a878 --- /dev/null +++ b/dap4/src/main/java/dap4/dap4lib/cdm/nc2/CDMCompiler.java @@ -0,0 +1,114 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + + +package dap4.dap4lib.cdm.nc2; + +import dap4.dap4lib.D4DSP; +import dap4.dap4lib.cdm.NodeMap; +import dap4.core.dmr.DapDataset; +import dap4.core.dmr.DapNode; +import dap4.core.util.DapException; +import ucar.ma2.Array; +import ucar.nc2.CDMNode; +import ucar.nc2.NetcdfFile; +import ucar.nc2.Variable; +import java.util.Map; + +/** + * The goal for the CDM compiler is produce a NetcdfDataset + * whose content comes from a DSP. In a sense it is the + * inverse of CDMDSP. + * + * Compilation implies two translations/wraps. + * 1. Create a set of CDMNodes corresponding to the + * relevant nodes in the DMR. + * 2. Create a set of CDM ucar.ma2.array objects that wrap the + * DataDataset object. + * Note that this compiler has nothing to do with D4DataCompiler. + */ + +public class CDMCompiler { + + public static boolean DEBUG = false; + + /* + * //////////////////////////////////////////////// + * Constants + * + * //////////////////////////////////////////////// + * Instance variables + */ + + protected DapNetcdfFile ncfile = null; + protected D4DSP dsp = null; + protected DapDataset dmr = null; + protected NodeMap nodemap = null; // Bi-directional + protected Map arraymap = null; + + ////////////////////////////////////////////////// + // Constructor(s) + + /** + * Constructor + * + * @param ncfile the target NetcdfDataset (as yet empty) + * @param dsp + */ + + public CDMCompiler(DapNetcdfFile ncfile, D4DSP dsp) throws DapException { + this.ncfile = ncfile; + this.dsp = dsp; + this.dmr = this.dsp.getDMR(); + } + + ////////////////////////////////////////////////// + // Accessors + + public NodeMap getNodeMap() { + return this.nodemap; + } + + public Map getArrayMap() { + return this.arraymap; + } + + public NetcdfFile getNetcdfFile() { + return this.ncfile; + } + + ////////////////////////////////////////////////// + // Compile DMR->set of CDM nodes + + /** + * Convert a DMR to equivalent CDM meta-databuffer + * and populate a NetcdfDataset with it. + * + * @throws DapException + */ + + public void compileDMR() throws DapException { + // Convert the DMR to CDM metadata + // and return a mapping from DapNode -> CDMNode + this.nodemap = new DMRToCDM(this.ncfile, this.dsp).create(); + } + + ////////////////////////////////////////////////// + // Compile Data->set of CDM Array objects + + /** + * Convert a DataDataset to equivalent CDM data (Array objects). + * and populate a NetcdfDataset with it. + * + * @throws DapException + */ + + public void compileData() throws DapException { + // Convert the Data to CDM arrays + // and return a mapping from Variable -> Array + this.arraymap = DataToCDM.createDataMap(this.dsp, this.nodemap); + } + +} diff --git a/dap4/src/main/java/dap4/dap4lib/cdm/nc2/D4StructureDataIterator.java b/dap4/src/main/java/dap4/dap4lib/cdm/nc2/D4StructureDataIterator.java new file mode 100644 index 0000000000..eceb0e796a --- /dev/null +++ b/dap4/src/main/java/dap4/dap4lib/cdm/nc2/D4StructureDataIterator.java @@ -0,0 +1,53 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.dap4lib.cdm.nc2; + +import ucar.ma2.StructureData; +import ucar.ma2.StructureDataIterator; + +import java.io.IOException; + +public class D4StructureDataIterator implements StructureDataIterator { + + protected StructureData[] list; + protected int position; + + public D4StructureDataIterator() { + this.list = null; + this.position = 0; + } + + ////////////////////////////////////////////////// + // Accessors + + public D4StructureDataIterator setList(StructureData[] list) { + this.list = list; + return this; + } + + ////////////////////////////////////////////////// + // StructureDataIterator Interface Implementation + + public boolean hasNext() throws IOException { + return position < list.length; + } + + public StructureData next() throws IOException { + if (position >= list.length) + throw new IOException("No next element"); + return list[position++]; + } + + public StructureDataIterator reset() { + position = 0; + return this; + } + + public int getCurrentRecno() { + return position; + } + +} diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/DMRToCDM.java b/dap4/src/main/java/dap4/dap4lib/cdm/nc2/DMRToCDM.java similarity index 96% rename from dap4/d4cdm/src/main/java/dap4/cdm/nc2/DMRToCDM.java rename to dap4/src/main/java/dap4/dap4lib/cdm/nc2/DMRToCDM.java index 148ddd6297..6c320b6da3 100644 --- a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/DMRToCDM.java +++ b/dap4/src/main/java/dap4/dap4lib/cdm/nc2/DMRToCDM.java @@ -3,11 +3,12 @@ * See the LICENSE file for more information. */ -package dap4.cdm.nc2; +package dap4.dap4lib.cdm.nc2; -import dap4.cdm.CDMTypeFcns; -import dap4.cdm.NodeMap; -import dap4.core.data.DSP; +import dap4.core.util.DapContext; +import dap4.dap4lib.D4DSP; +import dap4.dap4lib.cdm.CDMTypeFcns; +import dap4.dap4lib.cdm.NodeMap; import dap4.core.dmr.*; import dap4.core.util.Convert; import dap4.core.util.DapException; @@ -28,7 +29,7 @@ public class DMRToCDM { // Instance Variables protected DapNetcdfFile ncfile; - protected DSP dsp; + protected D4DSP dsp; protected DapDataset dmr; protected NodeMap nodemap; @@ -41,10 +42,10 @@ public class DMRToCDM { * @param dsp - the DSP being wrapped */ - public DMRToCDM(DapNetcdfFile ncfile, DSP dsp) throws DapException { + public DMRToCDM(DapNetcdfFile ncfile, D4DSP dsp) throws DapException { this.ncfile = ncfile; this.dsp = dsp; - this.dmr = dsp.getDMR(); + this.dmr = this.dsp.getDMR(); this.nodemap = new NodeMap<>(); } @@ -176,8 +177,9 @@ protected void createVar(DapVariable dapvar, NetcdfFile ncfile, Group cdmgroup, cdmvar.addAttribute(warning); } - } else - assert (false) : "Unknown variable sort: " + dapvar.getSort(); + } else { + throw new IllegalStateException("Unknown variable sort: " + dapvar.getSort()); + } int rank = dapvar.getRank(); List cdmdims = new ArrayList(rank + 1); // +1 for vlen for (int i = 0; i < rank; i++) { diff --git a/dap4/src/main/java/dap4/dap4lib/cdm/nc2/DapNetcdfFile.java b/dap4/src/main/java/dap4/dap4lib/cdm/nc2/DapNetcdfFile.java new file mode 100644 index 0000000000..ecd04674ce --- /dev/null +++ b/dap4/src/main/java/dap4/dap4lib/cdm/nc2/DapNetcdfFile.java @@ -0,0 +1,379 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.dap4lib.cdm.nc2; + +import dap4.core.dmr.*; +import dap4.core.util.*; +import dap4.dap4lib.*; +import dap4.dap4lib.cdm.CDMUtil; +import dap4.dap4lib.cdm.NodeMap; +import ucar.ma2.*; +import ucar.nc2.CDMNode; +import ucar.nc2.NetcdfFile; +import ucar.nc2.ParsedSectionSpec; +import ucar.nc2.Variable; +import ucar.nc2.dataset.NetcdfDataset; +import ucar.nc2.iosp.IospHelper; +import ucar.nc2.util.CancelTask; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.channels.WritableByteChannel; +import java.util.*; + + +/** + * This class is the work-horse of the client side. + * It uses a D4DSP instance to obtain access to a DMR and + * (optionally) a compiled DAP4 data stream. + * + * Given that, it constructs a translation to CDM. + */ + +public class DapNetcdfFile extends NetcdfFile { + + static final boolean DEBUG = false; + static final boolean PARSEDEBUG = false; + static final boolean MERGE = false; + + // NetcdfDataset enhancement to use: need only coord systems + static Set ENHANCEMENT = EnumSet.of(NetcdfDataset.Enhance.CoordSystems); + + ////////////////////////////////////////////////// + // Constants + + ////////////////////////////////////////////////// + // Type Declarations + + protected static class NullCancelTask implements CancelTask { + public boolean isCancel() { + return false; + } + + public boolean isDone() { + return false; + } + + public void setDone(boolean done) {} + + public void setError(String msg) {} + + public void setProgress(String msg, int progress) {} + } + + ////////////////////////////////////////////////// + // Static variables + + protected static final NullCancelTask nullcancel = new NullCancelTask(); + + /** + * Define a map of known DSP classes. + */ + protected static DSPRegistry dspregistry = new DSPRegistry(); + + static { + dspregistry.register(RawDSP.class, DSPRegistry.FIRST); + dspregistry.register(HttpDSP.class, DSPRegistry.FIRST); + } + + ////////////////////////////////////////////////// + // Instance Variables + + protected boolean allowCompression = true; + protected boolean closed = false; + protected String location = null; // original argument passed to open + protected CancelTask cancel = null; + + protected String dsplocation = null; // what is passed to DSP + protected XURI xuri = null; + + protected DapContext cxt = null; + protected D4DSP dsp = null; + // Extractions from dsp + protected DapDataset dmr = null; + + protected CDMCompiler cdmCompiler = null; + + protected ChecksumMode checksummode = null; + + protected boolean daploaded = false; // avoid multiple loads + + // Variable map + protected Map arraymap = null; + + ///////////////////////////////////////////////// + // Constructor(s) + + /** + * Open a Dap4 connection or file via a D4DSP. + * Warning: we do not use a Builder because this object is mutable over time. + * + * @param location URL for the request. Note that if this is + * intended to send to a file oriented + * DSP, then if must be converted to an absolute path. + * Note also that the URL path should not have any .dap or .dmr + * extension since using those is the purview of this class. + * @param cancelTask check if task is cancelled; may be null. + * @throws IOException + */ + public DapNetcdfFile(String location, CancelTask cancelTask) throws IOException { + super(); + this.location = location; + // Figure out the location: url vs path + XURI xuri; + try { + xuri = new XURI(location); + } catch (URISyntaxException use) { + throw new IOException(use); + } + // We need to convert the protocol to #dap4 + if ("dap4".equalsIgnoreCase(xuri.getScheme())) { + xuri.setScheme("https"); // Note that this should be https, but + // test.opendap.org still uses http; one + // hopes that other servers are setup to + // redirect http: to https: + } + this.dsplocation = xuri.assemble(XURI.URLQUERY); + cancel = (cancelTask == null ? nullcancel : cancelTask); + + // The DapContext object is the primary means of passing information + // between various parts of the DAP4 system. + this.cxt = new DapContext(); + // Insert fragment as (key,value) pairs into the context + cxt.insert(xuri.getFragFields(), true); + // Query takes precedence over fragment + cxt.insert(xuri.getQueryFields(), true); + String csummode = (String) cxt.get(DapConstants.CHECKSUMTAG); + this.checksummode = ChecksumMode.modeFor(csummode); + this.checksummode = ChecksumMode.asTrueFalse(this.checksummode); // Fix the checksum mode to be only TRUE or FALSE + this.cxt.put(ChecksumMode.class, this.checksummode); + + // Find the D4DSP class that can process this URL location. + this.dsp = dspregistry.findMatchingDSP(this.location, cxt); // find relevant D4DSP subclass + if (this.dsp == null) + throw new IOException("No matching DSP: " + this.location); + this.dsp.open(this.dsplocation, this.checksummode); // side effect: get DMR + ensuredmr(); + this.dmr = this.dsp.getDMR(); // get DMR + this.cxt.put(DapDataset.class, this.dmr); + // set the pseudo-location, otherwise we get a name that is full path. + setLocation(this.dmr.getDataset().getShortName()); + finish(); + this.dsp.loadContext(this.cxt, RequestMode.DMR); + } + + /** + * Open a Dap4 connection + * + * @param url URL for the request. + * @throws IOException + */ + + public DapNetcdfFile(String url) throws IOException { + this(url, null); + } + + ////////////////////////////////////////////////// + // Close + + /** + * Close all resources (files, sockets, etc) associated with this file. + * + * @throws java.io.IOException if error when closing + */ + @Override + public synchronized void close() throws java.io.IOException { + if (closed) + return; + closed = true; // avoid circular calls + dsp = null; + } + + ////////////////////////////////////////////////// + // Accessors + + /** + * @return true if we can ask the server to do constraint processing + */ + public boolean isconstrainable() { + return true; + } + + public String getLocation() { + return location; + } + + public D4DSP getDSP() { + return this.dsp; + } + + ////////////////////////////////////////////////// + // Override NetcdfFile.readXXX Methods + + /** + * Do a bulk read on a list of Variables and + * return a corresponding list of Array that contains the results + * of a full read on each Variable. + * TODO: optimize to make only a single server call and cache the results. + * + * @param variables List of type Variable + * @return List of Array, one for each Variable in the input. + * @throws IOException if read error + */ + + @Override + public List readArrays(List variables) throws IOException { + List result = new ArrayList(); + for (Variable variable : variables) { + result.add(variable.read()); + } + return result; + } + + /** + * Read databuffer from a top level Variable + * and send databuffer to a WritableByteChannel. + * Experimental. + * + * @param v a top-level Variable + * @param section the section of databuffer to read. + * There must be a Range for each Dimension in the variable, + * in order. + * Note: no nulls allowed. IOSP may not modify. + * @param channel write databuffer to this WritableByteChannel + * @return the number of databuffer written to the channel + * @throws java.io.IOException if read error + * @throws ucar.ma2.InvalidRangeException if invalid section + */ + + @Override + public long readToByteChannel(Variable v, Section section, WritableByteChannel channel) + throws java.io.IOException, ucar.ma2.InvalidRangeException { + Array result = readData(v, section); + return IospHelper.transferData(result, channel); + } + + public Array readSection(String variableSection) throws IOException, InvalidRangeException { + ParsedSectionSpec cer = ParsedSectionSpec.parseVariableSection(this, variableSection); + return cer.v.read(cer.section); + } + + /** + * b * Primary read entry point. + * This is the primary implementor of Variable.read. + * + * @param cdmvar A top-level variable + * @param section the section of databuffer to read. + * There must be a Range for each Dimension in the variable, + * in order. Note: no nulls allowed. + * @return An Array object for accessing the databuffer + * @throws IOException if read error + * @throws InvalidRangeException if invalid section + */ + + @Override + protected Array readData(Variable cdmvar, Section section) throws IOException, InvalidRangeException { + // The section is applied wrt to the DataDMR, so it + // takes into account any constraint used in forming the dataDMR. + // We use the Section to produce a view of the underlying variable array. + + // Read and compile the DAP4 data + // Ensure that the DSP has data + ensuredata(); + Array result = arraymap.get(cdmvar); + if (result == null) + throw new IOException("No data for variable: " + cdmvar.getFullName()); + if (section != null) { + if (cdmvar.getRank() != section.getRank()) + throw new InvalidRangeException(String.format("Section rank != %s rank", cdmvar.getFullName())); + List ranges = section.getRanges(); + // Case out the possibilities + if (CDMUtil.hasVLEN(ranges)) { + ranges = ranges.subList(0, ranges.size() - 1);// may produce empty list + } + if (ranges.size() > 0 && !CDMUtil.isWhole(ranges, cdmvar)) + result = result.sectionNoReduce(ranges); + } + return result; + } + + protected void loadContext() { + this.cxt.put(DapConstants.ChecksumSource.REMOTE, this.dsp.getChecksumMap(DapConstants.ChecksumSource.REMOTE)); + this.cxt.put(DapConstants.ChecksumSource.LOCAL, this.dsp.getChecksumMap(DapConstants.ChecksumSource.LOCAL)); + this.cxt.put(D4Array.class, this.dsp.getVariableDataMap()); + } + + protected void verifyChecksums() throws DapException { + ChecksumMode cmode = (ChecksumMode) this.cxt.get(ChecksumMode.class); + Map remotechecksummap = (Map) cxt.get(DapConstants.ChecksumSource.REMOTE); + Map localchecksummap = (Map) cxt.get(DapConstants.ChecksumSource.LOCAL); + + if (cmode != ChecksumMode.TRUE) + return; + for (DapVariable dvar : dmr.getTopVariables()) { + // Verify the calculated checksums + Long remotechecksum = remotechecksummap.get(dvar); + Long localchecksum = localchecksummap.get(dvar); + assert ((localchecksum != null) && (remotechecksum != null)); + if (!cxt.containsKey("hyrax")) {// Suppress the check for Hyrax, for now + if (localchecksum.longValue() != remotechecksum.longValue()) + throw new DapException("Checksum mismatch: local=" + localchecksum + " remote=" + remotechecksum); + } + // Verify the checksum Attribute, if any + DapAttribute csumattr = dvar.getChecksumAttribute(); + if (csumattr != null) { + assert (csumattr.getValues().length == 1 && csumattr.getBaseType() == DapType.INT32); + Long attrcsum = (long) 0; + try { + attrcsum = Long.parseLong(csumattr.getValues()[0]); + } catch (NumberFormatException nfe) { + throw new DapException("Illegal Checksum attribute value", nfe); + } + if (!cxt.containsKey("hyrax")) { // Suppress the check for Hyrax, for now + if (localchecksum.longValue() != attrcsum.longValue()) + throw new DapException("Checksum mismatch: local=" + localchecksum + " attribute=" + attrcsum); + } + } + } + } + + /** + * Do what is necessary to ensure that DMR and DAP compilation will work + */ + public void ensuredmr() throws IOException { + if (this.dmr == null) { // do not call twice + this.dsp.loadDMR(); + this.dmr = this.dsp.getDMR(); + if (this.cdmCompiler == null) + this.cdmCompiler = new CDMCompiler(this, this.dsp); + this.cdmCompiler.compileDMR(); + } + } + + public void ensuredata() throws IOException { + if (!this.daploaded) { // do not call twice + this.daploaded = true; + this.dsp.loadDAP(); + loadContext(); + verifyChecksums(); + this.dsp.loadContext(this.cxt, RequestMode.DAP); + if (this.cdmCompiler == null) + this.cdmCompiler = new CDMCompiler(this, this.dsp); + this.cdmCompiler.compileData(); + // Prepare the array map + assert this.arraymap == null; + this.arraymap = new HashMap(); + Map datamap = this.dsp.getVariableDataMap(); + NodeMap nodemap = this.cdmCompiler.getNodeMap(); + for (Map.Entry entry : datamap.entrySet()) { + DapVariable dv = entry.getKey(); + D4Array dc = entry.getValue(); + Variable v = (Variable) nodemap.get(entry.getKey()); + assert (dc.getArray() != null); + arraymap.put(v, dc.getArray()); + } + } + } +} diff --git a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/DapNetcdfFileProvider.java b/dap4/src/main/java/dap4/dap4lib/cdm/nc2/DapNetcdfFileProvider.java similarity index 96% rename from dap4/d4cdm/src/main/java/dap4/cdm/nc2/DapNetcdfFileProvider.java rename to dap4/src/main/java/dap4/dap4lib/cdm/nc2/DapNetcdfFileProvider.java index 6aee9b8bf5..b1d304511f 100644 --- a/dap4/d4cdm/src/main/java/dap4/cdm/nc2/DapNetcdfFileProvider.java +++ b/dap4/src/main/java/dap4/dap4lib/cdm/nc2/DapNetcdfFileProvider.java @@ -1,4 +1,4 @@ -package dap4.cdm.nc2; +package dap4.dap4lib.cdm.nc2; import java.io.IOException; import org.slf4j.Logger; diff --git a/dap4/src/main/java/dap4/dap4lib/cdm/nc2/DataToCDM.java b/dap4/src/main/java/dap4/dap4lib/cdm/nc2/DataToCDM.java new file mode 100644 index 0000000000..d94a5c09a7 --- /dev/null +++ b/dap4/src/main/java/dap4/dap4lib/cdm/nc2/DataToCDM.java @@ -0,0 +1,77 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + + +package dap4.dap4lib.cdm.nc2; + +import dap4.dap4lib.D4Array; +import dap4.dap4lib.D4DSP; +import dap4.dap4lib.cdm.NodeMap; +import dap4.core.dmr.*; +import dap4.core.util.*; +import ucar.ma2.Array; +import ucar.nc2.Group; +import ucar.nc2.Variable; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Associate the Array objects created in D4DataCompiler + * with the corresponding CDM Variable. + * Class is not intended to be instantiated + * Note: this class is rather short, so could be eliminated. + */ + +abstract public class DataToCDM { + + public static boolean DEBUG = false; + + ////////////////////////////////////////////////// + // Constants + + protected static final int COUNTSIZE = 8; // databuffer as specified by the DAP4 spec + + protected static final String LBRACE = "{"; + protected static final String RBRACE = "}"; + + ////////////////////////////////////////////////// + // Instance variables + + protected DapNetcdfFile ncfile = null; + protected D4DSP dsp = null; + // Extractions from dsp + protected DapDataset dmr = null; + protected ChecksumMode checksummode = null; + protected Map localchecksummap = null; + + protected Group cdmroot = null; + protected Map datamap = null; + protected NodeMap nodemap = null; + + ////////////////////////////////////////////////// + // Constructor(s) + + ////////////////////////////////////////////////// + // Correlate CDM Variables with ucar.ma2.Array objects + + public static Map createDataMap(D4DSP dsp, NodeMap nodemap) throws DapException { + Map datamap = dsp.getVariableDataMap(); + DapDataset dmr = dsp.getDMR(); + Map arraymap = new HashMap<>(); + // iterate over the variables represented in the nodemap + List topvars = dmr.getTopVariables(); + Map map = null; + for (DapVariable var : topvars) { + D4Array cursor = datamap.get(var); + Variable v = (Variable) nodemap.get(var); + assert cursor != null && v != null; + Array array = cursor.getArray(); + assert array != null; + arraymap.put(v, array); + } + return arraymap; + } +} diff --git a/dap4/src/main/resources/META-INF/services/ucar.nc2.dataset.spi.NetcdfFileProvider b/dap4/src/main/resources/META-INF/services/ucar.nc2.dataset.spi.NetcdfFileProvider new file mode 100644 index 0000000000..d5a8e8dc1c --- /dev/null +++ b/dap4/src/main/resources/META-INF/services/ucar.nc2.dataset.spi.NetcdfFileProvider @@ -0,0 +1 @@ +dap4.dap4lib.cdm.nc2.DapNetcdfFileProvider diff --git a/dap4/src/test/data/resources/baselineconstraints/test_atomic_array.1.nc.ncdump b/dap4/src/test/data/resources/baselineconstraints/test_atomic_array.1.nc.ncdump new file mode 100644 index 0000000000..b1b145dcd5 --- /dev/null +++ b/dap4/src/test/data/resources/baselineconstraints/test_atomic_array.1.nc.ncdump @@ -0,0 +1,58 @@ +netcdf test_atomic_array.1 { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + dimensions: + d1 = 1; + d2 = 2; + d3 = 3; + d4 = 4; + d5 = 5; + variables: + ubyte vu8(d2, d3); + + short v16(d4); + + uint vu32(d2, d3); + + double vd(d2); + + char vc(d2); + + string vs(d2, d2); + + opaque vo(d1, d2); + + enum cloud_class_t primary_cloud(d5); + string primary_cloud:_FillValue = "Missing"; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vu8 = + { + {255, 1, 2}, + {3, 4, 5} + } + v16 = + {1, 2, 3, 4} + vu32 = + { + {5, 4, 3}, + {2, 1, 0} + } + vd = + {17.9, 1024.8} + vc = "@&" + vs = + { "hello world", " +", "Καλημέα", "abc" + } + vo = 0x0123456789abcdef, + 0xabcdef0000000000; + + primary_cloud = + {0, 2, 0, 1, 127} +} diff --git a/dap4/src/test/data/resources/baselineconstraints/test_atomic_array.2.nc.ncdump b/dap4/src/test/data/resources/baselineconstraints/test_atomic_array.2.nc.ncdump new file mode 100644 index 0000000000..0eec0bc2e2 --- /dev/null +++ b/dap4/src/test/data/resources/baselineconstraints/test_atomic_array.2.nc.ncdump @@ -0,0 +1,58 @@ +netcdf test_atomic_array.2 { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + dimensions: + d1 = 1; + d2 = 2; + d3 = 3; + d4 = 4; + d5 = 5; + variables: + ubyte vu8(d2, d3); + + short v16(d4); + + uint vu32(d2, d3); + + double vd(d2); + + char vc(d2); + + string vs(d2, d2); + + opaque vo(d1, d2); + + enum cloud_class_t primary_cloud(d5); + string primary_cloud:_FillValue = "Missing"; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vu8 = + { + {255, 1, 2}, + {3, 4, 5} + } + v16 = + {1, 2, 3, 4} + vu32 = + { + {5, 4, 3}, + {2, 1, 0} + } + vd = + {17.9, 1024.8} + vc = "@&" + vs = + { "hello world", " +", "Καλημέα", "abc" + } + vo = 0x0123456789abcdef, + 0xabcdef0000000000; + + primary_cloud = + {0, 2, 0, 1, 127} +} diff --git a/dap4/src/test/data/resources/baselineconstraints/test_atomic_array.3.nc.ncdump b/dap4/src/test/data/resources/baselineconstraints/test_atomic_array.3.nc.ncdump new file mode 100644 index 0000000000..6713fac454 --- /dev/null +++ b/dap4/src/test/data/resources/baselineconstraints/test_atomic_array.3.nc.ncdump @@ -0,0 +1,58 @@ +netcdf test_atomic_array.3 { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + dimensions: + d1 = 1; + d2 = 2; + d3 = 3; + d4 = 4; + d5 = 5; + variables: + ubyte vu8(d2, d3); + + short v16(d4); + + uint vu32(d2, d3); + + double vd(d2); + + char vc(d2); + + string vs(d2, d2); + + opaque vo(d1, d2); + + enum cloud_class_t primary_cloud(d5); + string primary_cloud:_FillValue = "Missing"; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vu8 = + { + {255, 1, 2}, + {3, 4, 5} + } + v16 = + {1, 2, 3, 4} + vu32 = + { + {5, 4, 3}, + {2, 1, 0} + } + vd = + {17.9, 1024.8} + vc = "@&" + vs = + { "hello world", " +", "Καλημέα", "abc" + } + vo = 0x0123456789abcdef, + 0xabcdef0000000000; + + primary_cloud = + {0, 2, 0, 1, 127} +} diff --git a/dap4/src/test/data/resources/baselineconstraints/test_enum_array.6.nc.ncdump b/dap4/src/test/data/resources/baselineconstraints/test_enum_array.6.nc.ncdump new file mode 100644 index 0000000000..57f2a0ce47 --- /dev/null +++ b/dap4/src/test/data/resources/baselineconstraints/test_enum_array.6.nc.ncdump @@ -0,0 +1,18 @@ +netcdf test_enum_array.6 { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + dimensions: + d5 = 5; + variables: + enum cloud_class_t primary_cloud(d5); + string primary_cloud:_FillValue = "Missing"; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + primary_cloud = + {0, 2, 0, 1, 127} +} diff --git a/dap4/src/test/data/resources/baselineconstraints/test_one_vararray.4.nc.ncdump b/dap4/src/test/data/resources/baselineconstraints/test_one_vararray.4.nc.ncdump new file mode 100644 index 0000000000..f4bfee691f --- /dev/null +++ b/dap4/src/test/data/resources/baselineconstraints/test_one_vararray.4.nc.ncdump @@ -0,0 +1,14 @@ +netcdf test_one_vararray.4 { + dimensions: + d2 = 2; + variables: + int t(d2); + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + t = + {17, 37} +} diff --git a/dap4/src/test/data/resources/baselineconstraints/test_one_vararray.5.nc.ncdump b/dap4/src/test/data/resources/baselineconstraints/test_one_vararray.5.nc.ncdump new file mode 100644 index 0000000000..31eab0d90e --- /dev/null +++ b/dap4/src/test/data/resources/baselineconstraints/test_one_vararray.5.nc.ncdump @@ -0,0 +1,14 @@ +netcdf test_one_vararray.5 { + dimensions: + d2 = 2; + variables: + int t(d2); + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + t = + {17, 37} +} diff --git a/dap4/src/test/data/resources/baselineconstraints/test_opaque_array.7.nc.ncdump b/dap4/src/test/data/resources/baselineconstraints/test_opaque_array.7.nc.ncdump new file mode 100644 index 0000000000..bcc6c0a624 --- /dev/null +++ b/dap4/src/test/data/resources/baselineconstraints/test_opaque_array.7.nc.ncdump @@ -0,0 +1,17 @@ +netcdf test_opaque_array.7 { + dimensions: + d2 = 2; + variables: + opaque vo2(d2, d2); + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vo2 = 0x0123456789abcdef, + 0xabcdef0000000000, + 0xfedcba9876543210, + 0xfedcba9999999999; + +} diff --git a/dap4/src/test/data/resources/baselineconstraints/test_struct_array.8.nc.ncdump b/dap4/src/test/data/resources/baselineconstraints/test_struct_array.8.nc.ncdump new file mode 100644 index 0000000000..6177ea4ee3 --- /dev/null +++ b/dap4/src/test/data/resources/baselineconstraints/test_struct_array.8.nc.ncdump @@ -0,0 +1,57 @@ +netcdf test_struct_array.8 { + dimensions: + dx = 4; + dy = 3; + variables: + + Structure { + int x; + string x:_CoordinateAxisType = "GeoX"; + int y; + string y:_CoordinateAxisType = "GeoY"; + } s(dx, dy); + + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + s = + { x = 1 + y = -1 + } s(0) + { x = 17 + y = 37 + } s(1) + { x = -32767 + y = 32767 + } s(2) + { x = -1 + y = 3 + } s(3) + { x = -2 + y = 2 + } s(4) + { x = -3 + y = 1 + } s(5) + { x = -4 + y = 12 + } s(6) + { x = -8 + y = 8 + } s(7) + { x = -12 + y = 4 + } s(8) + { x = -5 + y = 15 + } s(9) + { x = -10 + y = 10 + } s(10) + { x = -15 + y = 5 + } s(11) +} diff --git a/dap4/src/test/data/resources/baselinehyrax/AIRS.2002.12.01.L3.RetStd_H031.v4.0.21.0.G06101132853.hdf.ncdump b/dap4/src/test/data/resources/baselinehyrax/AIRS.2002.12.01.L3.RetStd_H031.v4.0.21.0.G06101132853.hdf.ncdump new file mode 100644 index 0000000000..701d8f7096 --- /dev/null +++ b/dap4/src/test/data/resources/baselinehyrax/AIRS.2002.12.01.L3.RetStd_H031.v4.0.21.0.G06101132853.hdf.ncdump @@ -0,0 +1,213 @@ +netcdf AIRS.2002.12.01.L3.RetStd_H031.v4.0.21.0.G06101132853.hdf { + dimensions: + Latitude = 180; + Longitude = 360; + variables: + short TotalCounts_A(Latitude, Longitude); + TotalCounts_A:_FillValue = 0S; + string TotalCounts_A:coordinates = "Latitude Longitude"; + string TotalCounts_A:long_name = "ascending:TotalCounts_A"; + + // global attributes: + string :location.DescendingGridStartTimeUTC = "2002-11-30T13:30:00.000000Z"; + string :location.AscendingGridStartTimeUTC = "2002-12-01T01:30:00.000000Z"; + string :HDF_GLOBAL.HDFEOSVersion = "HDFEOS_V2.12"; + :location.TempPresLvlNum = 24; + :location.H2OPresLvls = 1000.0f, 925.0f, 850.0f, 700.0f, 600.0f, 500.0f, 400.0f, 300.0f, 250.0f, 200.0f, 150.0f, 100.0f; + :location.NumOfDays = 31; + string :location.AscendingGridEndTimeUTC = "2003-01-01T01:29:59.999999Z"; + :location.Month = 12; + :location.MWEmisFreqs = 23.8f, 50.3f, 89.0f; + string :location.DescendingGridEndTimeUTC = "2002-12-31T13:29:59.999999Z"; + :location.IREmisFreqs = 832.0f, 961.0f, 1203.0f, 2616.0f; + :location.Day = 1; + :location.TempPresLvls = 1000.0f, 925.0f, 850.0f, 700.0f, 600.0f, 500.0f, 400.0f, 300.0f, 250.0f, 200.0f, 150.0f, 100.0f, 70.0f, 50.0f, 30.0f, 20.0f, 15.0f, 10.0f, 7.0f, 5.0f, 3.0f, 2.0f, 1.5f, 1.0f; + :location.H2OPresLvlNum = 12; + :location.Year = 2002; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + TotalCounts_A = + { + {2, 2, 4, 0, 4, 0, 2, 2, 0, 2, 4, 4, 2, 4, 4, 4, 8, 6, 4, 12, 6, 0, 6, 8, 12, 6, 8, 10, 8, 10, 8, 4, 6, 2, 6, 6, 4, 6, 4, 2, 0, 4, 2, 2, 2, 0, 6, 4, 2, 4, 0, 0, 2, 8, 0, 6, 14, 6, 2, 2, 2, 16, 8, 4, 12, 4, 2, 10, 10, 8, 8, 4, 2, 10, 4, 2, 6, 4, 8, 4, 2, 0, 0, 2, 4, 0, 0, 4, 6, 4, 2, 4, 4, 4, 2, 6, 4, 4, 4, 4, 6, 12, 8, 6, 2, 8, 10, 14, 4, 10, 10, 8, 2, 10, 2, 2, 6, 4, 4, 8, 2, 4, 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 6, 6, 4, 2, 4, 10, 2, 6, 4, 10, 2, 4, 8, 8, 14, 8, 12, 6, 4, 6, 4, 10, 2, 4, 4, 8, 6, 2, 4, 0, 0, 2, 4, 4, 0, 6, 2, 2, 4, 0, 6, 2, 6, 4, 2, 8, 2, 8, 6, 6, 10, 10, 14, 4, 4, 4, 2, 14, 10, 10, 4, 4, 4, 2, 6, 6, 8, 6, 2, 2, 2, 2, 0, 0, 4, 0, 4, 2, 4, 4, 8, 2, 4, 2, 0, 10, 6, 8, 6, 4, 2, 6, 14, 10, 16, 2, 6, 4, 8, 4, 4, 8, 8, 2, 8, 4, 2, 2, 4, 0, 0, 6, 4, 0, 0, 2, 0, 6, 2, 0, 6, 6, 2, 6, 14, 0, 0, 4, 10, 10, 10, 10, 4, 8, 8, 6, 6, 12, 10, 4, 2, 4, 6, 6, 4, 4, 6, 4, 0, 2, 2, 2, 4, 2, 6, 2, 0, 2, 4, 2, 2, 6, 6, 6, 6, 4, 4, 8, 4, 14, 8, 10, 4, 6, 6, 10, 8, 8, 8, 2, 8, 10, 4, 4, 4, 4, 2, 6, 2, 4, 2, 0, 0, 0, 6, 0, 2, 2, 8, 4, 4, 6, 0, 4, 4, 4, 4, 14, 6, 8, 4, 8, 4, 14, 8, 8, 2, 12, 10, 4, 4, 10, 0, 2, 2, 10, 6, 4}, + {16, 22, 12, 20, 10, 4, 16, 12, 4, 20, 14, 24, 14, 6, 8, 20, 14, 22, 14, 10, 14, 0, 10, 18, 14, 10, 14, 10, 18, 12, 14, 20, 14, 12, 10, 18, 0, 8, 20, 8, 16, 18, 14, 10, 6, 18, 20, 26, 6, 10, 8, 16, 10, 4, 22, 8, 24, 4, 16, 24, 12, 8, 14, 10, 8, 14, 16, 8, 12, 6, 10, 14, 10, 24, 12, 6, 24, 16, 8, 10, 18, 10, 8, 10, 2, 18, 22, 18, 16, 8, 8, 16, 12, 20, 18, 10, 8, 6, 10, 18, 4, 20, 12, 10, 22, 10, 8, 12, 16, 6, 18, 8, 14, 6, 18, 14, 8, 18, 10, 22, 10, 20, 8, 20, 8, 8, 18, 14, 8, 4, 14, 14, 18, 14, 24, 10, 6, 18, 6, 12, 20, 14, 8, 12, 6, 8, 16, 14, 20, 12, 10, 16, 18, 10, 10, 16, 8, 12, 10, 2, 10, 22, 10, 18, 12, 18, 20, 4, 14, 18, 10, 14, 6, 12, 20, 10, 8, 14, 22, 12, 18, 22, 16, 4, 10, 18, 6, 18, 8, 14, 14, 10, 2, 18, 24, 14, 16, 14, 10, 12, 18, 4, 14, 20, 8, 10, 6, 10, 22, 28, 20, 10, 6, 12, 8, 14, 18, 20, 8, 8, 6, 14, 12, 22, 8, 10, 20, 14, 14, 8, 18, 6, 10, 14, 4, 10, 18, 14, 12, 16, 10, 32, 6, 10, 10, 18, 8, 12, 22, 14, 10, 4, 8, 18, 12, 32, 16, 16, 4, 12, 8, 10, 18, 12, 8, 8, 14, 6, 12, 24, 16, 14, 18, 8, 16, 20, 6, 12, 18, 8, 10, 12, 10, 14, 26, 14, 16, 22, 2, 12, 12, 14, 8, 20, 10, 8, 16, 10, 12, 14, 14, 22, 10, 20, 8, 8, 16, 12, 14, 8, 12, 18, 8, 16, 8, 18, 22, 14, 16, 6, 12, 10, 14, 8, 20, 20, 6, 6, 14, 4, 28, 24, 22, 0, 12, 12, 6, 10, 20, 12, 12, 8, 8, 14, 28, 12, 14, 12, 8, 24, 4, 14, 14, 10, 6, 14, 10, 14, 14, 14}, + {30, 20, 28, 14, 18, 28, 24, 34, 36, 20, 22, 30, 26, 26, 22, 28, 22, 24, 20, 24, 30, 18, 34, 26, 26, 30, 20, 26, 38, 20, 20, 22, 16, 22, 26, 26, 34, 30, 16, 24, 20, 32, 28, 26, 20, 24, 22, 28, 22, 24, 20, 28, 18, 18, 38, 36, 16, 26, 26, 24, 30, 20, 22, 30, 32, 18, 30, 20, 26, 28, 22, 26, 24, 20, 24, 22, 26, 30, 8, 28, 16, 32, 28, 36, 24, 18, 26, 30, 16, 30, 26, 12, 32, 16, 22, 38, 10, 34, 24, 22, 24, 26, 30, 30, 18, 28, 18, 26, 24, 18, 30, 28, 28, 26, 18, 28, 32, 24, 28, 20, 14, 22, 28, 24, 20, 20, 24, 26, 24, 30, 28, 34, 20, 12, 34, 22, 28, 22, 14, 36, 16, 36, 16, 36, 24, 22, 34, 20, 16, 24, 32, 22, 26, 18, 24, 20, 16, 38, 28, 36, 22, 16, 28, 20, 34, 22, 16, 22, 20, 34, 24, 22, 28, 20, 32, 18, 28, 38, 34, 14, 22, 22, 32, 28, 16, 26, 30, 34, 24, 18, 38, 34, 26, 22, 18, 26, 16, 36, 22, 26, 18, 18, 22, 24, 30, 34, 40, 14, 14, 38, 16, 34, 18, 26, 20, 30, 24, 18, 32, 28, 26, 26, 22, 22, 24, 24, 30, 22, 28, 18, 28, 20, 22, 30, 36, 22, 16, 36, 20, 30, 18, 20, 26, 18, 38, 18, 24, 22, 30, 22, 26, 20, 50, 18, 22, 22, 20, 36, 18, 26, 20, 30, 32, 16, 36, 26, 34, 24, 18, 28, 14, 24, 26, 28, 28, 22, 16, 24, 16, 34, 36, 28, 24, 18, 32, 20, 28, 24, 18, 22, 24, 22, 28, 32, 26, 28, 18, 30, 30, 18, 26, 30, 14, 34, 26, 12, 38, 12, 42, 24, 30, 20, 28, 34, 26, 12, 30, 16, 22, 30, 32, 22, 22, 18, 24, 24, 30, 36, 18, 32, 12, 24, 38, 14, 34, 20, 22, 38, 24, 34, 26, 30, 26, 22, 26, 16, 16, 32, 22, 34, 20, 22, 26, 24, 26, 28, 34, 22, 24, 20}, + {44, 34, 42, 34, 36, 40, 36, 38, 36, 44, 34, 42, 34, 50, 42, 38, 38, 46, 40, 36, 36, 46, 50, 32, 42, 34, 30, 44, 38, 36, 42, 36, 46, 40, 26, 50, 32, 40, 32, 40, 34, 34, 50, 22, 48, 40, 24, 38, 48, 44, 42, 36, 40, 36, 42, 36, 40, 36, 44, 44, 28, 52, 32, 40, 40, 38, 28, 42, 36, 54, 38, 28, 40, 34, 30, 50, 34, 34, 38, 34, 38, 34, 32, 42, 40, 34, 34, 26, 52, 38, 44, 36, 44, 36, 36, 36, 46, 40, 48, 30, 38, 40, 34, 40, 38, 38, 40, 46, 24, 40, 34, 36, 44, 28, 36, 38, 44, 42, 30, 40, 34, 36, 40, 40, 40, 40, 46, 32, 30, 42, 38, 34, 40, 40, 38, 38, 38, 50, 32, 44, 38, 38, 40, 32, 56, 44, 34, 34, 44, 34, 42, 42, 26, 38, 46, 38, 40, 34, 36, 38, 38, 32, 38, 46, 34, 36, 40, 40, 34, 42, 28, 50, 36, 44, 34, 36, 38, 44, 40, 42, 38, 38, 50, 36, 50, 34, 48, 32, 28, 40, 42, 34, 50, 32, 40, 36, 32, 44, 28, 50, 36, 36, 38, 28, 54, 28, 42, 32, 40, 36, 40, 46, 40, 48, 44, 36, 40, 44, 28, 52, 40, 46, 24, 48, 40, 34, 46, 38, 38, 38, 40, 32, 44, 40, 34, 34, 28, 42, 42, 48, 32, 36, 44, 40, 34, 28, 54, 38, 36, 36, 40, 42, 46, 34, 36, 40, 28, 54, 26, 60, 30, 44, 40, 28, 38, 44, 38, 48, 40, 30, 36, 42, 36, 38, 40, 32, 42, 38, 36, 48, 28, 38, 38, 40, 26, 48, 40, 42, 42, 46, 36, 40, 42, 36, 46, 36, 48, 30, 38, 48, 34, 42, 42, 34, 40, 48, 40, 46, 30, 36, 36, 34, 42, 40, 38, 38, 38, 44, 36, 34, 40, 40, 44, 34, 36, 42, 36, 48, 36, 38, 42, 30, 42, 38, 54, 36, 38, 40, 32, 38, 46, 38, 42, 38, 50, 24, 52, 38, 38, 38, 38, 36, 38, 42, 46, 32, 36, 38, 32, 36}, + {60, 66, 64, 52, 48, 56, 50, 58, 64, 56, 54, 52, 58, 66, 54, 56, 46, 50, 64, 60, 54, 50, 80, 54, 62, 46, 52, 62, 66, 66, 54, 50, 66, 48, 68, 58, 58, 54, 52, 66, 58, 52, 70, 42, 56, 60, 44, 54, 56, 60, 62, 56, 44, 56, 52, 60, 56, 56, 62, 50, 58, 62, 60, 70, 40, 46, 62, 64, 54, 56, 64, 50, 50, 54, 46, 62, 70, 54, 56, 44, 54, 56, 50, 70, 58, 48, 44, 58, 60, 60, 50, 46, 46, 66, 50, 48, 62, 64, 56, 64, 42, 42, 68, 54, 60, 52, 54, 54, 38, 74, 56, 62, 46, 44, 66, 68, 54, 62, 54, 60, 56, 50, 52, 54, 64, 52, 54, 52, 58, 52, 60, 56, 68, 38, 56, 52, 68, 52, 60, 42, 50, 68, 56, 50, 50, 72, 58, 50, 48, 56, 64, 60, 48, 62, 44, 68, 44, 68, 54, 62, 50, 52, 54, 70, 64, 58, 36, 62, 56, 56, 50, 52, 72, 50, 54, 60, 54, 62, 56, 58, 52, 54, 62, 50, 72, 58, 54, 56, 48, 66, 66, 64, 60, 52, 56, 50, 56, 60, 54, 70, 46, 62, 46, 66, 60, 58, 56, 62, 50, 52, 58, 68, 60, 50, 44, 52, 70, 50, 68, 50, 70, 54, 56, 52, 52, 70, 54, 52, 60, 48, 66, 44, 64, 66, 52, 58, 46, 70, 54, 72, 58, 38, 66, 52, 48, 68, 50, 58, 56, 56, 52, 62, 46, 66, 54, 60, 54, 48, 54, 76, 58, 60, 46, 48, 72, 46, 76, 48, 62, 60, 44, 60, 56, 62, 64, 40, 72, 54, 50, 58, 60, 58, 58, 50, 52, 68, 54, 70, 46, 46, 58, 60, 50, 62, 60, 66, 42, 70, 46, 64, 56, 54, 48, 64, 60, 54, 50, 72, 70, 54, 54, 52, 56, 76, 60, 58, 54, 62, 54, 42, 66, 56, 66, 40, 58, 58, 54, 58, 54, 52, 66, 52, 48, 62, 58, 68, 52, 42, 54, 66, 48, 60, 68, 58, 50, 56, 58, 54, 68, 58, 48, 60, 60, 58, 58, 60, 58, 54, 50, 56}, + {84, 78, 78, 82, 74, 80, 70, 82, 72, 88, 68, 86, 76, 74, 68, 78, 80, 84, 72, 74, 80, 64, 80, 84, 74, 80, 66, 72, 76, 64, 74, 72, 62, 78, 72, 82, 68, 80, 68, 82, 60, 84, 88, 70, 80, 64, 72, 76, 72, 90, 70, 76, 70, 82, 74, 78, 76, 70, 76, 92, 62, 82, 60, 80, 88, 62, 72, 66, 68, 70, 78, 72, 66, 68, 72, 76, 68, 82, 72, 58, 80, 76, 72, 82, 54, 82, 88, 64, 80, 70, 84, 72, 98, 72, 52, 90, 60, 82, 90, 66, 78, 60, 84, 74, 60, 74, 66, 80, 76, 60, 64, 86, 70, 68, 78, 60, 74, 90, 60, 90, 60, 76, 70, 78, 74, 82, 66, 76, 78, 82, 70, 82, 82, 62, 96, 60, 78, 72, 72, 92, 62, 82, 68, 80, 64, 78, 80, 70, 72, 64, 78, 86, 66, 80, 56, 72, 86, 62, 78, 62, 78, 78, 70, 80, 72, 80, 78, 82, 74, 64, 86, 72, 84, 76, 74, 70, 82, 74, 92, 72, 66, 76, 84, 70, 88, 60, 88, 92, 56, 74, 78, 68, 78, 70, 72, 72, 76, 58, 80, 86, 74, 78, 64, 78, 86, 70, 78, 70, 72, 84, 76, 82, 76, 76, 76, 80, 74, 78, 82, 60, 82, 78, 74, 80, 60, 80, 72, 68, 72, 70, 78, 68, 84, 72, 60, 92, 56, 84, 62, 84, 70, 82, 78, 58, 90, 66, 74, 80, 78, 78, 70, 78, 90, 70, 82, 82, 66, 86, 68, 84, 80, 66, 86, 66, 74, 76, 74, 74, 66, 76, 82, 56, 86, 70, 84, 68, 82, 54, 90, 76, 62, 98, 58, 86, 72, 68, 86, 72, 86, 76, 88, 74, 76, 80, 74, 86, 82, 70, 80, 70, 80, 80, 54, 78, 66, 78, 76, 76, 64, 86, 76, 44, 92, 72, 70, 76, 60, 88, 76, 66, 74, 70, 82, 78, 76, 72, 78, 84, 68, 82, 76, 64, 106, 68, 78, 72, 84, 76, 76, 72, 86, 76, 64, 76, 72, 78, 84, 58, 86, 80, 62, 76, 66, 82, 82, 68, 82, 70, 72, 70}, + {98, 126, 94, 80, 94, 116, 116, 86, 98, 116, 112, 92, 102, 108, 126, 100, 94, 86, 120, 114, 86, 108, 104, 106, 92, 94, 112, 104, 122, 96, 82, 116, 106, 86, 100, 108, 112, 102, 90, 86, 110, 118, 88, 90, 106, 114, 100, 98, 102, 110, 104, 98, 86, 116, 118, 100, 100, 102, 98, 96, 106, 94, 106, 124, 86, 98, 92, 130, 100, 78, 118, 100, 98, 82, 98, 118, 108, 102, 68, 104, 120, 84, 104, 90, 112, 104, 96, 102, 82, 130, 86, 84, 98, 116, 106, 86, 100, 100, 120, 86, 100, 100, 122, 104, 76, 96, 114, 126, 86, 88, 98, 120, 90, 92, 96, 118, 112, 88, 102, 102, 108, 88, 92, 104, 116, 94, 96, 70, 124, 122, 76, 100, 108, 108, 88, 108, 96, 126, 102, 102, 96, 104, 124, 86, 100, 108, 114, 90, 88, 104, 100, 120, 86, 72, 130, 98, 100, 98, 100, 112, 104, 86, 102, 106, 112, 98, 84, 104, 130, 90, 92, 112, 110, 108, 96, 94, 122, 128, 90, 92, 108, 116, 102, 96, 90, 116, 126, 80, 100, 106, 114, 118, 76, 120, 108, 100, 98, 88, 110, 102, 96, 88, 100, 128, 94, 100, 100, 110, 116, 92, 100, 122, 102, 106, 92, 82, 130, 114, 80, 110, 120, 98, 98, 98, 104, 114, 100, 94, 94, 108, 110, 84, 100, 112, 106, 88, 98, 106, 118, 120, 74, 106, 120, 100, 104, 96, 110, 104, 106, 92, 88, 140, 100, 100, 94, 94, 124, 86, 112, 98, 120, 98, 96, 104, 102, 130, 76, 100, 116, 110, 90, 86, 102, 116, 106, 88, 94, 124, 104, 96, 90, 108, 122, 90, 100, 104, 116, 106, 92, 74, 122, 140, 66, 108, 98, 110, 102, 96, 106, 116, 126, 98, 78, 110, 124, 108, 84, 114, 120, 104, 96, 86, 96, 134, 110, 78, 102, 114, 104, 94, 84, 130, 106, 90, 98, 102, 116, 108, 88, 96, 122, 100, 92, 116, 108, 120, 102, 96, 108, 124, 106, 76, 116, 114, 112, 90, 90, 108, 120, 90, 94, 90, 118, 110, 74, 116, 98, 108, 94, 96}, + {100, 140, 114, 118, 138, 120, 134, 116, 104, 158, 98, 150, 112, 122, 152, 108, 106, 152, 112, 134, 124, 120, 148, 114, 138, 124, 100, 146, 112, 136, 122, 116, 122, 110, 138, 124, 110, 132, 122, 130, 134, 112, 136, 122, 108, 132, 116, 118, 132, 104, 132, 118, 116, 136, 128, 126, 118, 136, 120, 108, 144, 118, 128, 120, 120, 136, 116, 110, 126, 104, 136, 110, 122, 120, 110, 122, 136, 110, 124, 118, 126, 126, 116, 124, 112, 120, 116, 120, 132, 116, 120, 134, 110, 118, 122, 100, 148, 118, 120, 128, 98, 136, 124, 106, 128, 114, 128, 104, 116, 132, 116, 130, 108, 114, 150, 110, 130, 106, 120, 134, 106, 104, 128, 110, 136, 124, 106, 132, 118, 118, 146, 104, 130, 114, 116, 132, 126, 126, 100, 118, 142, 106, 150, 98, 136, 142, 102, 122, 130, 104, 140, 114, 122, 128, 112, 124, 110, 114, 148, 94, 128, 126, 106, 136, 112, 112, 140, 118, 130, 112, 126, 142, 102, 140, 110, 112, 154, 104, 126, 146, 108, 144, 106, 120, 154, 114, 142, 106, 122, 148, 106, 124, 130, 110, 124, 108, 120, 140, 104, 136, 120, 126, 132, 118, 130, 130, 108, 140, 108, 134, 132, 98, 158, 106, 116, 148, 108, 130, 134, 114, 146, 112, 142, 106, 126, 120, 110, 140, 120, 114, 126, 114, 126, 136, 122, 104, 132, 116, 140, 130, 110, 132, 116, 124, 116, 122, 138, 112, 130, 110, 134, 114, 124, 138, 120, 136, 110, 128, 142, 110, 134, 126, 116, 124, 120, 128, 116, 128, 132, 116, 114, 130, 124, 128, 128, 112, 136, 128, 106, 138, 116, 138, 92, 130, 106, 122, 144, 114, 124, 142, 106, 132, 118, 116, 144, 136, 108, 140, 114, 128, 116, 114, 140, 118, 120, 110, 132, 144, 102, 146, 110, 122, 156, 108, 130, 128, 110, 146, 100, 110, 144, 108, 116, 126, 98, 156, 116, 114, 148, 102, 134, 114, 118, 140, 114, 152, 96, 120, 152, 120, 132, 110, 112, 164, 98, 132, 130, 114, 138, 112, 124, 124, 116, 128, 124, 126, 122, 122, 102, 152}, + {154, 130, 150, 136, 158, 138, 130, 160, 146, 146, 138, 138, 142, 144, 152, 130, 148, 152, 162, 138, 144, 170, 126, 162, 142, 150, 148, 142, 152, 138, 172, 142, 136, 156, 130, 162, 138, 144, 146, 144, 144, 138, 138, 146, 156, 128, 148, 146, 144, 146, 132, 154, 138, 146, 146, 138, 142, 162, 138, 144, 160, 138, 144, 146, 150, 140, 142, 162, 118, 174, 144, 126, 146, 142, 154, 146, 130, 154, 130, 156, 140, 134, 142, 148, 136, 144, 150, 136, 142, 140, 142, 146, 138, 160, 140, 140, 156, 136, 144, 140, 156, 134, 140, 138, 160, 136, 156, 136, 128, 162, 126, 160, 152, 128, 162, 138, 144, 138, 160, 140, 116, 158, 150, 146, 136, 142, 146, 142, 148, 134, 154, 144, 150, 130, 148, 158, 126, 152, 146, 132, 160, 138, 152, 146, 146, 142, 146, 146, 160, 148, 128, 156, 146, 154, 146, 160, 130, 144, 160, 126, 172, 146, 136, 158, 146, 146, 146, 140, 146, 144, 144, 136, 160, 134, 154, 132, 146, 154, 128, 166, 142, 140, 152, 168, 138, 144, 170, 144, 152, 148, 158, 148, 156, 148, 138, 148, 136, 160, 146, 144, 152, 132, 170, 134, 124, 150, 150, 144, 130, 156, 146, 156, 138, 138, 142, 150, 164, 134, 158, 150, 142, 144, 152, 150, 146, 148, 140, 144, 166, 150, 126, 152, 154, 130, 148, 130, 164, 160, 136, 146, 138, 156, 144, 130, 162, 142, 150, 130, 164, 150, 140, 152, 142, 164, 138, 160, 124, 158, 162, 128, 170, 134, 156, 156, 132, 152, 138, 180, 148, 116, 170, 148, 138, 142, 158, 134, 160, 144, 146, 136, 154, 152, 136, 152, 156, 138, 162, 124, 160, 138, 164, 148, 134, 148, 152, 134, 144, 166, 136, 142, 154, 144, 148, 130, 168, 148, 146, 164, 136, 152, 150, 146, 152, 148, 140, 152, 156, 142, 126, 158, 158, 138, 152, 150, 136, 156, 140, 128, 166, 150, 130, 134, 162, 148, 136, 152, 148, 148, 152, 164, 118, 172, 144, 142, 148, 152, 156, 130, 156, 156, 142, 158, 148, 158, 134, 164, 142, 138, 150, 148}, + {168, 176, 158, 168, 166, 168, 178, 182, 172, 174, 180, 190, 170, 166, 186, 172, 148, 212, 146, 182, 168, 172, 172, 172, 174, 160, 176, 172, 162, 178, 156, 174, 196, 164, 172, 170, 162, 176, 168, 176, 178, 150, 188, 166, 184, 172, 162, 164, 188, 152, 184, 170, 170, 166, 162, 180, 182, 152, 170, 176, 170, 164, 184, 158, 158, 182, 188, 146, 180, 158, 162, 170, 170, 162, 156, 172, 176, 148, 168, 182, 158, 168, 178, 146, 174, 184, 158, 172, 162, 180, 152, 178, 146, 176, 172, 152, 166, 176, 144, 184, 160, 166, 188, 162, 146, 188, 156, 176, 158, 152, 162, 180, 146, 174, 164, 170, 160, 186, 156, 172, 184, 156, 160, 164, 168, 176, 152, 146, 188, 154, 168, 168, 152, 192, 184, 142, 184, 162, 182, 166, 190, 150, 184, 168, 164, 164, 190, 158, 174, 158, 176, 168, 142, 180, 182, 150, 196, 144, 166, 170, 166, 172, 170, 154, 180, 162, 174, 170, 178, 164, 174, 168, 180, 186, 166, 164, 184, 178, 164, 192, 150, 182, 190, 158, 166, 180, 162, 168, 170, 178, 146, 202, 152, 174, 176, 166, 156, 170, 168, 180, 158, 168, 176, 166, 180, 186, 156, 180, 164, 176, 176, 190, 162, 170, 180, 184, 160, 174, 172, 174, 176, 166, 186, 154, 178, 172, 162, 180, 186, 148, 180, 168, 166, 170, 182, 158, 176, 174, 174, 158, 178, 170, 182, 174, 166, 162, 182, 158, 182, 168, 172, 174, 160, 164, 174, 178, 182, 158, 186, 170, 164, 184, 160, 174, 186, 170, 164, 168, 168, 180, 164, 166, 176, 172, 160, 158, 166, 194, 148, 200, 150, 154, 196, 182, 156, 160, 198, 176, 144, 188, 158, 174, 174, 180, 150, 194, 178, 162, 180, 178, 184, 164, 170, 182, 166, 172, 170, 168, 186, 164, 178, 168, 170, 174, 176, 158, 184, 170, 168, 154, 178, 158, 164, 190, 156, 152, 194, 160, 184, 166, 164, 204, 162, 164, 188, 164, 174, 166, 178, 182, 174, 170, 162, 184, 178, 158, 170, 176, 168, 166, 166, 180, 166, 174, 178, 152, 172, 174, 156, 180}, + {184, 192, 186, 178, 186, 188, 182, 190, 168, 194, 192, 166, 200, 178, 184, 190, 180, 188, 180, 190, 192, 162, 202, 188, 176, 184, 178, 200, 178, 170, 202, 162, 192, 178, 172, 206, 182, 188, 184, 174, 202, 176, 180, 194, 176, 178, 182, 176, 184, 186, 190, 194, 174, 190, 174, 188, 188, 188, 186, 176, 182, 194, 166, 182, 196, 158, 188, 176, 184, 182, 164, 202, 158, 186, 180, 178, 190, 180, 182, 186, 166, 190, 178, 172, 196, 168, 204, 186, 170, 202, 160, 196, 188, 160, 190, 160, 202, 176, 184, 178, 186, 166, 180, 160, 198, 174, 172, 190, 178, 168, 182, 178, 178, 190, 166, 198, 172, 174, 194, 168, 192, 176, 190, 178, 174, 188, 184, 186, 188, 174, 204, 172, 164, 192, 156, 216, 184, 150, 206, 156, 190, 180, 172, 194, 168, 206, 156, 178, 192, 176, 184, 170, 170, 200, 166, 172, 194, 188, 182, 186, 166, 206, 186, 170, 212, 168, 194, 190, 180, 196, 178, 170, 194, 176, 186, 170, 204, 176, 176, 202, 166, 188, 192, 160, 206, 180, 196, 190, 162, 200, 186, 176, 210, 182, 172, 176, 196, 184, 186, 196, 172, 190, 180, 174, 192, 192, 188, 182, 176, 192, 194, 174, 182, 192, 174, 204, 196, 160, 194, 178, 194, 188, 180, 184, 176, 176, 190, 168, 192, 174, 202, 178, 160, 216, 160, 200, 186, 172, 204, 178, 184, 198, 170, 182, 196, 186, 178, 186, 186, 194, 192, 176, 192, 200, 188, 170, 186, 182, 208, 166, 180, 190, 168, 188, 190, 166, 194, 198, 172, 184, 192, 174, 188, 190, 194, 182, 180, 182, 176, 186, 196, 170, 204, 154, 216, 188, 174, 206, 172, 192, 190, 170, 192, 188, 180, 184, 168, 202, 184, 178, 164, 182, 196, 168, 172, 192, 176, 214, 156, 186, 180, 186, 188, 196, 164, 210, 172, 178, 186, 186, 186, 198, 178, 194, 170, 200, 198, 172, 202, 196, 160, 190, 170, 198, 178, 174, 208, 156, 204, 180, 170, 208, 178, 182, 182, 176, 204, 162, 190, 168, 188, 188, 184, 176, 188, 184, 202, 166, 192, 192}, + {196, 226, 164, 214, 202, 180, 212, 198, 198, 194, 206, 200, 162, 226, 206, 162, 244, 172, 196, 232, 154, 218, 214, 184, 224, 192, 200, 194, 200, 202, 186, 216, 196, 178, 204, 196, 186, 208, 192, 200, 206, 178, 226, 178, 200, 192, 176, 234, 162, 206, 228, 140, 218, 200, 172, 222, 196, 188, 212, 180, 206, 190, 216, 182, 180, 236, 164, 210, 216, 148, 230, 186, 180, 214, 170, 200, 190, 184, 212, 180, 202, 204, 170, 216, 176, 180, 212, 170, 196, 208, 170, 208, 178, 210, 182, 200, 210, 158, 220, 204, 152, 232, 180, 168, 214, 190, 182, 218, 178, 208, 182, 194, 200, 192, 212, 172, 210, 190, 168, 226, 178, 182, 206, 184, 182, 190, 206, 198, 168, 220, 192, 176, 226, 180, 186, 222, 160, 224, 200, 162, 228, 190, 198, 196, 220, 198, 166, 222, 186, 190, 232, 172, 182, 216, 186, 194, 196, 192, 194, 194, 210, 178, 192, 224, 170, 198, 194, 176, 220, 172, 192, 212, 198, 198, 172, 234, 180, 194, 212, 184, 198, 230, 166, 202, 222, 186, 212, 194, 194, 206, 196, 206, 196, 214, 190, 186, 212, 184, 190, 220, 182, 208, 204, 178, 200, 204, 196, 194, 196, 222, 166, 206, 226, 146, 240, 188, 186, 236, 168, 198, 204, 190, 214, 202, 198, 178, 210, 206, 182, 200, 206, 170, 222, 184, 186, 222, 184, 210, 196, 178, 220, 164, 222, 196, 174, 222, 174, 194, 220, 182, 200, 216, 170, 206, 194, 180, 202, 202, 218, 174, 230, 198, 174, 238, 168, 210, 220, 166, 206, 202, 180, 196, 210, 196, 198, 200, 212, 184, 196, 214, 178, 222, 180, 190, 200, 186, 216, 188, 202, 204, 184, 216, 180, 204, 218, 166, 220, 216, 168, 228, 204, 166, 224, 194, 202, 200, 202, 214, 186, 222, 174, 192, 234, 160, 228, 216, 178, 212, 184, 196, 200, 204, 186, 182, 198, 216, 168, 220, 200, 164, 240, 174, 190, 222, 192, 204, 194, 206, 204, 192, 204, 162, 230, 206, 170, 222, 204, 172, 230, 188, 188, 218, 186, 206, 208, 194, 180, 184, 232, 172}, + {216, 204, 212, 194, 218, 196, 204, 218, 192, 220, 212, 192, 216, 214, 206, 202, 228, 200, 212, 224, 206, 216, 198, 220, 208, 210, 220, 196, 218, 218, 200, 200, 228, 208, 214, 206, 204, 216, 212, 194, 212, 234, 194, 186, 222, 194, 208, 208, 210, 202, 202, 208, 206, 226, 190, 212, 210, 200, 218, 192, 220, 206, 230, 210, 194, 220, 200, 196, 206, 216, 204, 192, 220, 188, 208, 218, 192, 202, 200, 202, 204, 208, 194, 216, 208, 194, 210, 192, 214, 202, 218, 196, 202, 212, 198, 196, 200, 212, 198, 188, 224, 198, 216, 198, 208, 186, 200, 220, 180, 206, 192, 232, 196, 178, 230, 200, 200, 212, 214, 194, 208, 208, 202, 212, 188, 218, 208, 190, 208, 192, 214, 188, 218, 194, 192, 214, 198, 222, 196, 224, 178, 222, 216, 200, 196, 216, 218, 192, 204, 222, 198, 214, 192, 220, 212, 206, 214, 216, 202, 194, 226, 188, 206, 224, 196, 216, 192, 222, 192, 212, 208, 196, 224, 192, 218, 210, 210, 198, 218, 200, 202, 226, 210, 206, 216, 208, 218, 198, 236, 190, 220, 228, 188, 208, 216, 224, 186, 214, 204, 210, 198, 206, 224, 214, 190, 206, 226, 196, 212, 224, 184, 230, 214, 198, 208, 214, 226, 196, 214, 216, 216, 198, 214, 218, 202, 214, 202, 220, 196, 210, 220, 198, 220, 200, 210, 190, 214, 218, 176, 248, 204, 220, 190, 202, 224, 204, 208, 202, 216, 178, 222, 232, 188, 218, 216, 222, 186, 218, 218, 204, 228, 188, 220, 216, 214, 216, 188, 242, 204, 212, 194, 208, 214, 202, 216, 190, 234, 190, 208, 214, 180, 228, 222, 198, 194, 232, 206, 194, 248, 192, 208, 212, 212, 212, 204, 222, 198, 232, 174, 236, 214, 204, 192, 202, 236, 192, 204, 220, 198, 228, 208, 212, 212, 234, 188, 194, 252, 184, 218, 208, 212, 202, 204, 206, 200, 238, 176, 220, 218, 188, 218, 210, 206, 204, 220, 204, 204, 218, 204, 220, 206, 222, 202, 200, 228, 202, 214, 204, 220, 198, 216, 208, 208, 224, 192, 234, 210, 198, 212, 196}, + {236, 202, 184, 222, 206, 220, 198, 200, 208, 216, 204, 210, 212, 210, 200, 236, 186, 220, 212, 194, 224, 206, 182, 212, 218, 204, 202, 208, 198, 216, 200, 204, 210, 204, 208, 194, 206, 212, 198, 204, 208, 198, 202, 222, 206, 202, 204, 200, 208, 236, 180, 216, 202, 198, 224, 208, 190, 220, 206, 208, 214, 182, 206, 218, 216, 190, 220, 190, 218, 212, 188, 202, 208, 196, 200, 202, 198, 214, 198, 196, 208, 196, 216, 202, 180, 218, 212, 200, 224, 200, 190, 214, 202, 194, 216, 198, 202, 210, 216, 186, 220, 196, 208, 202, 184, 208, 208, 196, 206, 194, 198, 198, 196, 224, 194, 204, 208, 208, 192, 202, 182, 208, 214, 188, 198, 222, 204, 192, 204, 218, 176, 220, 190, 216, 220, 188, 196, 226, 178, 216, 212, 198, 220, 186, 210, 218, 202, 208, 200, 198, 224, 210, 186, 194, 208, 188, 220, 192, 198, 212, 216, 194, 226, 194, 206, 222, 196, 210, 208, 202, 212, 208, 198, 206, 214, 208, 220, 194, 210, 228, 194, 200, 244, 190, 190, 226, 200, 204, 212, 200, 222, 202, 182, 224, 210, 204, 216, 190, 206, 222, 192, 208, 204, 212, 220, 204, 188, 222, 190, 204, 230, 204, 192, 244, 210, 184, 220, 202, 216, 222, 188, 200, 210, 200, 212, 198, 214, 218, 204, 196, 206, 226, 202, 202, 200, 220, 202, 192, 226, 224, 178, 214, 218, 192, 234, 184, 200, 228, 214, 202, 210, 202, 224, 220, 200, 198, 228, 198, 204, 208, 208, 196, 224, 212, 204, 206, 210, 218, 190, 206, 210, 196, 208, 212, 182, 212, 224, 202, 206, 206, 210, 224, 194, 196, 236, 182, 210, 220, 198, 208, 218, 190, 230, 208, 186, 228, 212, 192, 210, 202, 198, 226, 206, 198, 216, 202, 212, 216, 194, 226, 186, 224, 212, 200, 202, 218, 210, 194, 204, 206, 210, 208, 212, 208, 208, 190, 234, 214, 176, 232, 202, 204, 226, 194, 192, 236, 210, 192, 218, 220, 206, 224, 196, 210, 224, 202, 202, 212, 198, 212, 202, 204, 216, 194, 208, 204, 200, 214, 210, 180}, + {202, 232, 228, 212, 240, 226, 214, 220, 222, 214, 224, 216, 226, 224, 228, 226, 206, 220, 224, 234, 220, 206, 236, 228, 220, 224, 222, 216, 218, 222, 218, 200, 226, 220, 228, 244, 200, 226, 224, 220, 212, 212, 242, 214, 218, 206, 228, 218, 224, 198, 230, 196, 246, 220, 228, 230, 216, 202, 216, 232, 210, 228, 236, 194, 230, 206, 230, 212, 216, 232, 208, 198, 230, 222, 220, 200, 232, 212, 214, 208, 220, 226, 204, 232, 234, 180, 238, 218, 194, 224, 216, 224, 206, 228, 200, 212, 228, 210, 198, 220, 206, 234, 206, 220, 212, 198, 206, 230, 212, 208, 214, 240, 212, 194, 234, 224, 194, 236, 216, 202, 228, 204, 200, 234, 202, 208, 214, 222, 204, 216, 232, 214, 240, 202, 194, 234, 210, 200, 230, 216, 218, 212, 232, 206, 230, 206, 222, 216, 238, 188, 240, 206, 224, 206, 216, 234, 214, 220, 214, 196, 230, 218, 220, 216, 228, 210, 244, 204, 204, 252, 206, 216, 224, 210, 230, 220, 200, 228, 230, 236, 214, 236, 200, 226, 234, 228, 214, 230, 206, 240, 220, 208, 230, 230, 208, 208, 224, 240, 204, 230, 228, 208, 218, 228, 216, 236, 218, 202, 220, 252, 194, 238, 226, 212, 216, 244, 212, 224, 224, 212, 228, 240, 208, 230, 224, 200, 216, 224, 236, 208, 222, 218, 218, 226, 220, 212, 246, 204, 220, 232, 232, 204, 232, 228, 204, 222, 236, 204, 238, 220, 208, 222, 238, 206, 232, 222, 196, 242, 238, 200, 218, 230, 220, 216, 224, 220, 224, 220, 216, 226, 220, 232, 214, 230, 218, 216, 214, 254, 194, 238, 200, 236, 236, 208, 206, 240, 220, 234, 202, 224, 228, 220, 214, 224, 234, 214, 214, 242, 196, 240, 224, 222, 210, 220, 210, 228, 232, 226, 214, 244, 212, 216, 212, 240, 218, 226, 212, 226, 228, 208, 212, 236, 210, 202, 246, 218, 212, 226, 228, 204, 232, 244, 194, 220, 244, 204, 244, 210, 216, 220, 240, 222, 222, 216, 222, 226, 238, 206, 232, 218, 214, 216, 218, 222, 226, 238, 214, 192, 228, 242}, + {220, 218, 208, 218, 216, 208, 238, 200, 226, 236, 202, 212, 222, 220, 206, 230, 216, 214, 232, 220, 188, 238, 228, 222, 228, 194, 210, 224, 218, 226, 232, 220, 198, 214, 226, 200, 240, 234, 208, 232, 216, 188, 234, 224, 202, 212, 232, 224, 208, 222, 210, 206, 252, 190, 214, 244, 192, 232, 234, 196, 214, 214, 230, 218, 202, 230, 202, 232, 220, 192, 246, 224, 198, 212, 212, 208, 220, 230, 218, 216, 218, 198, 208, 242, 188, 236, 214, 198, 216, 214, 208, 218, 218, 210, 216, 220, 194, 218, 208, 222, 208, 226, 210, 192, 224, 198, 224, 210, 208, 212, 220, 218, 206, 216, 202, 208, 232, 196, 206, 228, 208, 212, 216, 178, 240, 222, 202, 212, 200, 202, 222, 220, 206, 208, 226, 214, 192, 222, 210, 216, 226, 202, 216, 220, 218, 206, 202, 210, 220, 220, 226, 194, 214, 216, 188, 234, 214, 202, 232, 232, 186, 210, 226, 216, 200, 242, 196, 220, 228, 202, 212, 222, 208, 234, 206, 214, 218, 212, 226, 214, 224, 202, 228, 224, 210, 206, 240, 214, 218, 230, 226, 208, 210, 228, 206, 208, 230, 208, 232, 228, 184, 228, 230, 200, 244, 202, 212, 236, 224, 176, 232, 214, 206, 224, 240, 204, 218, 238, 200, 218, 232, 208, 224, 216, 226, 196, 226, 218, 216, 230, 216, 208, 240, 204, 196, 238, 208, 222, 230, 204, 208, 228, 212, 208, 218, 232, 212, 236, 220, 186, 228, 220, 202, 238, 206, 234, 218, 222, 186, 242, 222, 216, 212, 230, 204, 218, 240, 194, 234, 224, 198, 226, 216, 222, 214, 224, 222, 216, 224, 210, 212, 224, 190, 220, 228, 206, 234, 232, 198, 206, 232, 210, 220, 216, 224, 220, 226, 188, 222, 240, 200, 216, 246, 196, 212, 224, 226, 202, 218, 236, 218, 214, 222, 210, 226, 230, 192, 232, 228, 192, 230, 210, 206, 214, 230, 210, 224, 234, 196, 214, 238, 190, 222, 238, 208, 226, 202, 234, 204, 220, 216, 232, 224, 214, 218, 220, 194, 234, 224, 214, 218, 216, 222, 206, 216, 226, 216, 224, 214, 210}, + {204, 206, 218, 220, 200, 214, 198, 204, 208, 204, 208, 214, 216, 202, 204, 216, 192, 220, 212, 182, 228, 198, 228, 196, 206, 212, 198, 230, 202, 204, 218, 214, 200, 218, 192, 212, 210, 200, 206, 212, 200, 208, 220, 216, 192, 214, 200, 212, 212, 210, 188, 222, 186, 214, 218, 188, 204, 210, 196, 206, 214, 220, 196, 216, 210, 204, 220, 198, 196, 222, 208, 212, 196, 204, 206, 204, 220, 188, 200, 218, 182, 230, 206, 182, 214, 210, 206, 194, 220, 192, 204, 218, 192, 196, 206, 214, 198, 200, 208, 194, 220, 202, 208, 208, 186, 212, 210, 200, 202, 202, 208, 192, 200, 226, 192, 220, 188, 212, 208, 222, 190, 190, 200, 208, 198, 212, 198, 216, 200, 192, 198, 204, 186, 218, 216, 198, 200, 206, 208, 204, 208, 194, 204, 210, 204, 212, 196, 198, 214, 222, 198, 208, 210, 194, 216, 210, 194, 206, 214, 216, 190, 218, 206, 212, 210, 198, 196, 224, 202, 214, 206, 198, 210, 202, 224, 188, 224, 210, 182, 228, 214, 190, 224, 228, 184, 196, 216, 214, 206, 216, 212, 200, 226, 198, 214, 214, 210, 216, 218, 188, 208, 212, 200, 224, 212, 190, 220, 220, 200, 184, 240, 202, 202, 216, 196, 208, 206, 202, 208, 188, 224, 214, 208, 216, 202, 200, 222, 198, 226, 192, 204, 228, 224, 184, 214, 200, 218, 216, 218, 196, 208, 220, 202, 204, 224, 192, 214, 206, 208, 210, 198, 218, 204, 200, 212, 206, 208, 204, 206, 212, 202, 210, 220, 192, 214, 214, 194, 228, 208, 224, 204, 212, 212, 188, 220, 208, 196, 226, 198, 212, 234, 204, 194, 212, 214, 204, 216, 200, 204, 218, 200, 202, 224, 214, 196, 238, 196, 198, 214, 206, 226, 204, 208, 208, 216, 216, 180, 210, 220, 204, 212, 218, 200, 214, 212, 206, 224, 208, 198, 230, 210, 192, 208, 218, 214, 190, 222, 192, 218, 214, 190, 210, 214, 216, 208, 224, 192, 206, 226, 200, 210, 212, 206, 214, 202, 198, 210, 226, 198, 206, 210, 218, 196, 232, 206, 186, 210, 228, 202, 208}, + {182, 188, 194, 186, 190, 222, 186, 184, 224, 170, 184, 212, 180, 200, 206, 180, 204, 190, 182, 202, 174, 210, 200, 182, 192, 200, 174, 196, 192, 198, 198, 190, 200, 214, 166, 190, 236, 180, 176, 232, 170, 194, 226, 160, 200, 208, 178, 210, 200, 170, 208, 186, 192, 208, 194, 186, 184, 200, 186, 196, 200, 188, 196, 186, 200, 180, 182, 212, 172, 194, 208, 190, 198, 206, 172, 200, 226, 162, 210, 204, 174, 208, 184, 184, 206, 194, 176, 196, 186, 184, 218, 170, 178, 212, 172, 184, 214, 166, 204, 192, 170, 194, 184, 190, 190, 176, 196, 188, 174, 206, 198, 166, 194, 194, 184, 198, 184, 174, 200, 186, 180, 218, 174, 174, 208, 178, 176, 220, 166, 176, 216, 170, 174, 204, 172, 194, 182, 188, 196, 178, 188, 206, 182, 184, 196, 168, 206, 180, 174, 194, 190, 168, 210, 170, 178, 214, 172, 182, 218, 170, 186, 206, 174, 182, 216, 174, 200, 210, 182, 188, 196, 182, 198, 200, 178, 208, 176, 180, 208, 168, 192, 196, 184, 212, 184, 176, 212, 190, 180, 202, 184, 190, 210, 178, 192, 200, 184, 180, 220, 184, 210, 202, 168, 208, 206, 164, 220, 198, 178, 206, 178, 190, 214, 182, 196, 208, 178, 194, 194, 186, 182, 194, 190, 202, 178, 200, 200, 186, 182, 218, 176, 204, 208, 158, 202, 202, 172, 210, 196, 200, 198, 192, 180, 214, 176, 194, 222, 184, 180, 204, 176, 186, 216, 184, 184, 194, 198, 204, 164, 194, 222, 186, 194, 200, 180, 194, 200, 180, 194, 202, 192, 208, 192, 188, 210, 186, 196, 208, 182, 190, 218, 182, 182, 224, 174, 194, 220, 164, 208, 206, 164, 198, 190, 182, 204, 196, 178, 210, 176, 200, 194, 180, 202, 186, 194, 206, 180, 202, 208, 196, 182, 222, 172, 200, 208, 158, 200, 214, 156, 202, 228, 156, 200, 204, 180, 202, 192, 182, 204, 194, 178, 182, 190, 186, 212, 180, 190, 192, 184, 200, 190, 184, 218, 190, 190, 200, 170, 196, 206, 166, 206, 210, 164, 212, 200, 174, 210, 186, 190, 206}, + {180, 206, 180, 186, 180, 180, 198, 198, 166, 206, 196, 162, 204, 190, 188, 202, 174, 198, 188, 190, 184, 172, 194, 206, 180, 178, 202, 178, 172, 196, 184, 170, 192, 180, 180, 194, 166, 182, 198, 172, 200, 186, 170, 206, 192, 182, 200, 184, 190, 192, 196, 174, 186, 192, 198, 178, 182, 194, 192, 154, 192, 196, 166, 204, 192, 170, 206, 180, 178, 184, 174, 188, 186, 180, 192, 178, 158, 198, 180, 182, 200, 170, 186, 188, 182, 172, 190, 190, 170, 198, 164, 196, 190, 158, 198, 186, 162, 206, 176, 166, 192, 186, 170, 182, 184, 186, 178, 166, 176, 178, 166, 196, 170, 172, 186, 174, 168, 192, 164, 174, 190, 164, 182, 184, 166, 194, 178, 166, 196, 168, 178, 198, 178, 170, 200, 178, 186, 178, 178, 184, 184, 178, 172, 186, 166, 194, 174, 168, 182, 188, 168, 202, 166, 182, 188, 184, 184, 174, 180, 196, 184, 182, 184, 182, 166, 194, 178, 176, 208, 184, 176, 206, 170, 188, 198, 168, 192, 206, 150, 186, 196, 162, 200, 172, 196, 206, 170, 184, 182, 196, 188, 190, 174, 204, 194, 176, 188, 200, 160, 204, 186, 170, 196, 180, 178, 204, 160, 198, 200, 172, 194, 188, 186, 202, 184, 176, 214, 184, 176, 208, 188, 176, 186, 186, 192, 184, 166, 180, 202, 176, 178, 184, 180, 212, 176, 176, 200, 172, 188, 188, 172, 200, 198, 192, 182, 176, 180, 204, 184, 176, 212, 178, 168, 200, 194, 172, 198, 188, 174, 200, 168, 200, 190, 168, 206, 200, 166, 192, 186, 166, 196, 186, 178, 188, 178, 176, 190, 184, 186, 182, 174, 200, 194, 158, 200, 194, 160, 212, 188, 182, 202, 182, 180, 194, 192, 186, 190, 184, 202, 176, 172, 210, 188, 172, 196, 178, 180, 184, 172, 162, 200, 182, 182, 188, 176, 186, 184, 178, 206, 192, 168, 196, 196, 166, 192, 202, 180, 182, 180, 194, 202, 178, 190, 194, 172, 210, 186, 178, 200, 180, 176, 194, 182, 174, 202, 180, 180, 188, 184, 196, 178, 176, 200, 178, 184, 186, 184, 176, 192, 188}, + {180, 184, 174, 174, 194, 162, 184, 186, 164, 174, 196, 174, 190, 174, 166, 190, 178, 176, 204, 168, 192, 200, 158, 182, 184, 166, 194, 180, 178, 186, 186, 176, 192, 174, 178, 188, 180, 166, 194, 170, 172, 200, 168, 184, 186, 162, 188, 174, 166, 204, 174, 176, 192, 156, 182, 206, 166, 184, 192, 176, 190, 180, 176, 192, 188, 174, 184, 180, 188, 184, 168, 188, 192, 154, 188, 190, 158, 188, 180, 164, 178, 180, 160, 188, 178, 170, 184, 172, 178, 204, 168, 160, 210, 172, 184, 194, 156, 196, 178, 176, 184, 168, 176, 194, 162, 172, 182, 166, 182, 190, 160, 178, 182, 164, 178, 180, 172, 174, 182, 174, 188, 166, 170, 196, 156, 182, 180, 166, 182, 178, 150, 192, 170, 170, 184, 168, 170, 198, 168, 176, 186, 166, 178, 188, 174, 170, 204, 164, 184, 178, 170, 180, 184, 170, 178, 164, 176, 192, 146, 184, 184, 152, 190, 180, 162, 202, 188, 164, 180, 180, 166, 190, 186, 166, 190, 176, 178, 202, 178, 180, 194, 170, 182, 186, 162, 198, 178, 178, 208, 160, 186, 194, 160, 174, 190, 164, 184, 190, 168, 188, 186, 168, 196, 180, 168, 188, 182, 166, 188, 164, 182, 198, 168, 190, 198, 156, 184, 186, 170, 192, 180, 180, 198, 170, 180, 204, 174, 180, 202, 156, 184, 196, 156, 180, 184, 172, 186, 182, 178, 196, 166, 176, 190, 152, 186, 184, 170, 182, 192, 166, 200, 196, 164, 196, 184, 168, 190, 172, 174, 208, 172, 170, 206, 162, 178, 192, 170, 190, 192, 178, 190, 160, 180, 190, 166, 178, 192, 160, 196, 180, 162, 182, 190, 170, 172, 200, 166, 196, 180, 162, 200, 170, 186, 206, 168, 188, 192, 162, 190, 190, 170, 190, 186, 164, 192, 176, 182, 188, 180, 178, 202, 172, 170, 196, 174, 176, 200, 166, 182, 184, 170, 186, 186, 176, 198, 162, 178, 194, 160, 184, 188, 170, 194, 172, 176, 180, 186, 184, 188, 186, 172, 196, 182, 170, 192, 176, 178, 210, 164, 166, 206, 156, 188, 194, 162, 200, 180, 176, 180, 160}, + {188, 168, 176, 198, 158, 196, 190, 148, 194, 166, 154, 198, 160, 164, 206, 160, 178, 190, 162, 178, 192, 154, 184, 194, 164, 182, 180, 166, 190, 178, 164, 206, 162, 178, 182, 166, 184, 190, 154, 192, 182, 156, 192, 174, 160, 196, 170, 172, 188, 172, 174, 202, 156, 184, 202, 160, 176, 190, 166, 182, 188, 152, 194, 176, 152, 208, 166, 174, 192, 158, 178, 188, 166, 188, 188, 166, 192, 188, 168, 186, 174, 172, 198, 168, 162, 202, 164, 170, 188, 156, 180, 198, 142, 196, 188, 152, 182, 170, 164, 192, 166, 178, 180, 158, 170, 188, 156, 174, 184, 148, 178, 188, 162, 176, 172, 162, 190, 178, 156, 192, 160, 178, 182, 160, 184, 178, 156, 184, 176, 154, 190, 168, 158, 190, 158, 162, 186, 158, 160, 190, 166, 164, 184, 154, 176, 180, 160, 182, 162, 160, 188, 170, 162, 190, 166, 178, 182, 158, 180, 184, 158, 188, 190, 156, 192, 172, 160, 176, 176, 166, 192, 166, 168, 200, 148, 182, 178, 166, 176, 178, 154, 202, 174, 162, 200, 154, 180, 188, 158, 186, 182, 158, 182, 196, 170, 184, 186, 156, 192, 180, 160, 192, 166, 166, 196, 164, 176, 188, 168, 186, 170, 166, 180, 186, 154, 186, 190, 162, 202, 176, 154, 192, 168, 184, 198, 166, 176, 186, 156, 190, 188, 154, 198, 182, 164, 196, 162, 174, 188, 160, 178, 196, 168, 186, 184, 166, 186, 186, 166, 184, 166, 156, 194, 170, 156, 204, 172, 174, 200, 144, 188, 190, 162, 192, 178, 166, 194, 172, 170, 184, 182, 174, 184, 170, 182, 194, 172, 180, 192, 162, 188, 182, 150, 200, 180, 138, 208, 168, 170, 208, 156, 174, 192, 162, 174, 196, 164, 182, 174, 162, 188, 190, 154, 196, 172, 176, 186, 168, 162, 192, 160, 184, 192, 162, 188, 184, 146, 192, 188, 158, 200, 186, 168, 196, 172, 178, 196, 164, 178, 194, 166, 180, 190, 156, 184, 186, 148, 200, 162, 152, 206, 158, 166, 198, 158, 186, 192, 166, 180, 188, 168, 182, 190, 160, 192, 160, 170, 196, 166, 176}, + {162, 188, 178, 176, 174, 186, 160, 184, 176, 176, 182, 174, 182, 174, 170, 186, 172, 176, 176, 170, 168, 180, 176, 166, 182, 176, 164, 184, 174, 166, 182, 162, 182, 172, 164, 182, 170, 162, 186, 172, 176, 180, 180, 166, 184, 174, 170, 180, 178, 176, 184, 164, 180, 188, 154, 188, 180, 164, 186, 174, 166, 178, 168, 176, 180, 162, 176, 172, 174, 184, 174, 180, 168, 184, 158, 176, 178, 156, 186, 174, 164, 176, 172, 186, 176, 164, 180, 188, 158, 184, 176, 160, 194, 174, 166, 172, 176, 170, 174, 160, 176, 168, 166, 172, 180, 164, 174, 178, 156, 174, 174, 152, 184, 162, 162, 176, 160, 162, 176, 162, 178, 166, 160, 164, 180, 162, 170, 168, 174, 178, 166, 162, 180, 164, 174, 176, 156, 180, 178, 150, 170, 178, 152, 184, 178, 150, 190, 164, 164, 174, 168, 170, 166, 152, 172, 176, 164, 170, 170, 168, 176, 172, 154, 178, 174, 156, 194, 164, 172, 170, 174, 180, 180, 164, 178, 174, 168, 174, 178, 164, 186, 170, 176, 190, 178, 174, 172, 160, 180, 178, 160, 180, 180, 154, 180, 190, 158, 186, 170, 174, 188, 166, 182, 180, 166, 180, 178, 162, 186, 184, 164, 182, 174, 164, 188, 174, 168, 184, 174, 168, 192, 166, 180, 158, 168, 186, 164, 166, 182, 182, 158, 188, 160, 178, 182, 168, 174, 182, 178, 180, 188, 164, 162, 188, 152, 186, 178, 174, 196, 172, 182, 172, 174, 194, 174, 172, 182, 166, 164, 186, 166, 176, 170, 178, 160, 174, 178, 164, 178, 176, 174, 176, 178, 174, 172, 168, 184, 172, 170, 178, 162, 172, 182, 178, 174, 190, 174, 180, 174, 160, 192, 178, 168, 168, 180, 158, 186, 180, 158, 184, 184, 160, 186, 170, 178, 172, 170, 178, 180, 172, 176, 158, 166, 188, 162, 172, 184, 174, 172, 180, 174, 164, 188, 166, 168, 180, 178, 176, 182, 154, 186, 180, 158, 184, 172, 176, 190, 160, 188, 170, 176, 184, 178, 166, 182, 174, 160, 180, 174, 166, 180, 180, 164, 176, 174, 176, 190, 160, 176, 184}, + {188, 176, 170, 176, 178, 162, 180, 166, 172, 188, 154, 170, 186, 164, 172, 178, 164, 176, 174, 182, 178, 160, 170, 190, 160, 168, 184, 166, 170, 182, 166, 184, 170, 172, 174, 174, 162, 182, 176, 170, 178, 168, 174, 188, 162, 168, 188, 154, 186, 178, 158, 178, 152, 180, 178, 164, 162, 172, 164, 166, 182, 164, 170, 182, 160, 178, 188, 160, 174, 178, 160, 172, 180, 168, 190, 154, 186, 180, 166, 176, 178, 174, 176, 164, 160, 186, 154, 170, 176, 166, 160, 166, 160, 160, 166, 164, 176, 174, 152, 170, 180, 160, 168, 172, 168, 180, 160, 168, 184, 150, 178, 176, 152, 180, 172, 154, 176, 174, 156, 172, 166, 164, 174, 168, 154, 176, 168, 154, 176, 158, 164, 172, 156, 176, 166, 168, 166, 168, 156, 190, 148, 170, 184, 156, 164, 176, 146, 170, 178, 150, 174, 190, 146, 188, 180, 152, 170, 176, 160, 178, 174, 154, 190, 150, 182, 176, 148, 178, 162, 176, 168, 172, 170, 172, 164, 172, 182, 154, 168, 180, 162, 170, 178, 162, 174, 182, 152, 190, 178, 172, 178, 170, 176, 184, 168, 174, 184, 166, 180, 172, 160, 182, 172, 166, 184, 172, 162, 188, 164, 176, 176, 170, 172, 192, 150, 172, 184, 152, 178, 178, 154, 178, 170, 172, 174, 180, 180, 172, 166, 176, 186, 164, 174, 176, 154, 182, 182, 158, 182, 168, 158, 196, 168, 168, 192, 160, 162, 176, 162, 164, 176, 174, 170, 160, 174, 174, 170, 166, 174, 166, 184, 178, 170, 178, 186, 156, 186, 182, 154, 176, 178, 162, 188, 186, 164, 190, 166, 178, 174, 168, 178, 176, 162, 172, 174, 170, 164, 172, 162, 182, 162, 166, 174, 166, 164, 194, 162, 176, 186, 152, 180, 186, 168, 168, 182, 164, 174, 188, 158, 176, 174, 180, 184, 164, 184, 172, 166, 178, 182, 150, 178, 178, 164, 178, 164, 178, 174, 164, 160, 194, 164, 178, 186, 172, 160, 178, 170, 166, 176, 178, 170, 180, 168, 178, 168, 178, 178, 168, 176, 180, 158, 182, 174, 170, 170, 188, 154, 186, 168, 162}, + {180, 148, 180, 170, 164, 184, 162, 180, 186, 144, 180, 178, 154, 182, 170, 150, 196, 170, 154, 176, 162, 162, 180, 148, 182, 186, 152, 168, 178, 154, 176, 182, 142, 194, 168, 158, 188, 174, 170, 176, 160, 168, 182, 156, 182, 184, 150, 176, 170, 150, 182, 184, 162, 166, 186, 150, 196, 164, 178, 178, 166, 174, 174, 154, 186, 180, 132, 196, 162, 154, 188, 172, 154, 190, 156, 164, 182, 158, 168, 196, 148, 176, 182, 156, 182, 192, 142, 172, 196, 142, 186, 166, 174, 184, 152, 180, 176, 148, 184, 174, 146, 180, 170, 148, 190, 162, 158, 172, 162, 148, 182, 150, 168, 184, 152, 178, 172, 146, 172, 172, 148, 182, 166, 158, 178, 158, 178, 178, 134, 172, 180, 158, 166, 188, 140, 180, 174, 136, 182, 174, 140, 182, 162, 146, 182, 156, 174, 174, 148, 180, 164, 144, 186, 158, 156, 168, 172, 154, 182, 156, 166, 184, 150, 170, 180, 160, 174, 178, 152, 188, 182, 136, 168, 174, 154, 166, 180, 160, 170, 160, 176, 180, 158, 172, 188, 148, 188, 172, 144, 186, 176, 148, 176, 180, 150, 184, 166, 166, 184, 144, 190, 184, 152, 190, 172, 160, 176, 178, 160, 180, 170, 158, 182, 162, 190, 176, 146, 176, 186, 156, 170, 190, 148, 178, 178, 140, 198, 162, 160, 174, 168, 168, 186, 148, 190, 172, 150, 196, 178, 158, 184, 168, 164, 180, 168, 164, 180, 164, 186, 188, 150, 198, 164, 164, 168, 182, 154, 188, 174, 156, 174, 162, 166, 172, 158, 176, 166, 150, 190, 174, 148, 186, 180, 144, 180, 162, 166, 178, 166, 164, 178, 168, 172, 190, 162, 180, 180, 156, 192, 176, 160, 188, 170, 156, 182, 164, 170, 182, 158, 172, 168, 160, 186, 180, 146, 182, 174, 142, 192, 178, 156, 182, 164, 162, 184, 166, 176, 178, 150, 180, 176, 156, 180, 176, 168, 170, 190, 160, 184, 180, 164, 172, 168, 166, 182, 158, 182, 180, 142, 190, 170, 136, 186, 174, 148, 190, 158, 158, 184, 166, 164, 180, 166, 178, 174, 156, 168, 186, 148, 180}, + {150, 186, 180, 152, 168, 170, 168, 164, 160, 172, 178, 156, 178, 180, 152, 178, 180, 146, 196, 172, 156, 186, 168, 156, 184, 154, 172, 182, 170, 182, 170, 162, 174, 178, 154, 170, 174, 154, 174, 166, 164, 180, 164, 168, 170, 158, 174, 188, 152, 186, 174, 156, 186, 168, 150, 190, 156, 166, 192, 158, 168, 184, 162, 174, 178, 154, 186, 178, 154, 182, 180, 148, 184, 166, 150, 188, 166, 170, 174, 162, 172, 170, 166, 168, 164, 158, 178, 178, 154, 186, 162, 164, 172, 166, 174, 166, 160, 166, 182, 158, 166, 176, 142, 182, 172, 140, 200, 158, 152, 182, 162, 148, 180, 156, 160, 174, 156, 176, 168, 146, 170, 176, 146, 172, 168, 144, 170, 164, 154, 180, 154, 162, 164, 144, 172, 168, 148, 180, 164, 144, 194, 158, 148, 178, 166, 150, 170, 158, 166, 164, 156, 174, 174, 152, 170, 164, 144, 184, 172, 138, 188, 154, 148, 184, 154, 164, 168, 150, 164, 170, 150, 178, 166, 162, 180, 166, 156, 176, 160, 170, 168, 168, 170, 174, 156, 180, 170, 154, 194, 164, 150, 206, 162, 152, 202, 162, 150, 180, 168, 166, 176, 162, 146, 186, 146, 172, 176, 144, 188, 176, 146, 184, 160, 166, 178, 152, 166, 186, 158, 170, 180, 152, 182, 172, 156, 184, 170, 158, 190, 172, 162, 184, 164, 160, 180, 154, 180, 170, 146, 188, 176, 152, 194, 160, 156, 196, 168, 150, 184, 154, 154, 170, 168, 172, 176, 158, 168, 184, 146, 188, 174, 158, 186, 170, 168, 186, 164, 158, 186, 158, 172, 174, 158, 194, 164, 152, 190, 166, 156, 194, 170, 160, 180, 156, 170, 170, 164, 174, 170, 160, 176, 178, 142, 184, 184, 134, 194, 168, 150, 174, 172, 168, 164, 166, 168, 174, 164, 174, 170, 154, 178, 170, 164, 178, 170, 168, 174, 170, 160, 180, 158, 184, 174, 158, 174, 178, 142, 188, 158, 156, 188, 158, 158, 180, 160, 174, 168, 166, 164, 188, 170, 174, 178, 158, 170, 172, 154, 184, 174, 160, 182, 176, 162, 166, 166, 168, 184, 160, 182, 176}, + {166, 170, 154, 182, 180, 156, 188, 166, 164, 182, 154, 162, 186, 146, 172, 188, 152, 172, 182, 150, 172, 182, 158, 176, 174, 164, 176, 156, 160, 172, 142, 184, 170, 148, 178, 172, 156, 180, 168, 150, 190, 172, 164, 188, 166, 164, 182, 160, 156, 182, 156, 166, 176, 158, 174, 164, 170, 174, 162, 160, 186, 150, 170, 176, 150, 172, 176, 156, 172, 180, 146, 188, 170, 150, 188, 170, 156, 180, 162, 160, 178, 162, 178, 172, 156, 180, 170, 152, 178, 168, 162, 182, 160, 164, 192, 150, 164, 170, 148, 160, 180, 146, 180, 172, 150, 162, 170, 150, 168, 172, 154, 178, 162, 156, 174, 146, 162, 168, 144, 178, 178, 138, 182, 148, 152, 178, 150, 150, 180, 160, 150, 172, 164, 164, 178, 152, 158, 176, 146, 172, 166, 152, 174, 168, 148, 176, 156, 152, 184, 156, 160, 168, 146, 162, 170, 142, 174, 160, 152, 178, 172, 138, 178, 162, 156, 170, 168, 160, 188, 150, 170, 176, 150, 172, 160, 160, 172, 170, 158, 182, 152, 164, 172, 168, 158, 178, 144, 176, 182, 150, 182, 172, 158, 174, 178, 148, 182, 168, 162, 184, 152, 170, 188, 154, 176, 178, 168, 176, 178, 166, 172, 174, 158, 186, 162, 164, 190, 156, 162, 182, 148, 164, 184, 152, 162, 190, 146, 170, 168, 156, 170, 168, 148, 180, 160, 170, 188, 166, 170, 176, 148, 178, 166, 162, 172, 164, 158, 180, 166, 156, 192, 158, 168, 186, 152, 182, 170, 158, 166, 180, 150, 184, 164, 168, 172, 160, 174, 180, 170, 156, 174, 160, 166, 168, 164, 168, 184, 146, 192, 162, 150, 182, 170, 148, 188, 146, 162, 192, 154, 180, 172, 160, 174, 172, 158, 176, 168, 166, 180, 174, 156, 186, 148, 174, 180, 158, 170, 172, 156, 180, 172, 148, 182, 174, 160, 172, 164, 160, 184, 172, 144, 178, 154, 166, 178, 156, 172, 164, 166, 164, 186, 156, 180, 164, 166, 174, 156, 172, 186, 142, 172, 180, 140, 190, 174, 156, 176, 174, 156, 176, 164, 152, 178, 162, 164, 174, 156, 164, 170, 164}, + {178, 136, 184, 172, 138, 170, 178, 144, 178, 162, 164, 168, 172, 152, 174, 152, 172, 166, 160, 174, 176, 152, 168, 176, 140, 172, 168, 164, 168, 178, 166, 174, 164, 164, 182, 162, 164, 190, 146, 168, 176, 152, 172, 164, 162, 170, 168, 162, 166, 162, 170, 172, 148, 180, 162, 148, 174, 168, 158, 168, 174, 152, 170, 158, 168, 180, 170, 162, 182, 158, 166, 176, 158, 174, 164, 158, 168, 172, 160, 182, 162, 162, 158, 168, 162, 174, 170, 166, 166, 154, 172, 176, 150, 164, 164, 150, 180, 166, 158, 170, 162, 164, 168, 156, 172, 168, 154, 180, 158, 168, 158, 178, 146, 172, 164, 160, 172, 152, 164, 174, 154, 158, 172, 150, 168, 168, 158, 164, 176, 146, 172, 148, 174, 158, 168, 162, 156, 164, 170, 162, 154, 172, 166, 144, 168, 172, 152, 172, 166, 146, 166, 160, 154, 178, 164, 166, 174, 146, 168, 174, 142, 166, 178, 156, 172, 166, 158, 160, 160, 164, 162, 160, 166, 180, 150, 174, 164, 144, 168, 170, 164, 166, 176, 158, 176, 164, 168, 164, 166, 176, 168, 158, 184, 172, 154, 170, 172, 166, 164, 182, 150, 168, 176, 158, 170, 164, 154, 176, 138, 170, 182, 142, 166, 186, 148, 174, 168, 160, 170, 162, 180, 162, 154, 180, 168, 158, 170, 174, 172, 158, 184, 160, 172, 182, 156, 180, 164, 154, 176, 156, 168, 182, 158, 176, 184, 142, 176, 170, 154, 172, 170, 156, 174, 164, 166, 168, 160, 170, 168, 166, 154, 188, 150, 174, 174, 154, 170, 176, 158, 176, 170, 164, 176, 142, 182, 176, 144, 170, 174, 156, 176, 166, 160, 172, 178, 150, 180, 166, 156, 164, 172, 162, 172, 156, 162, 190, 140, 176, 170, 156, 168, 174, 156, 170, 166, 162, 176, 164, 160, 182, 150, 178, 182, 152, 174, 172, 154, 168, 184, 152, 178, 170, 170, 170, 164, 170, 172, 150, 180, 166, 154, 184, 166, 150, 168, 168, 160, 170, 164, 166, 182, 168, 160, 184, 154, 170, 168, 162, 164, 184, 146, 178, 172, 160, 170, 178, 168, 172, 166, 170}, + {166, 164, 164, 160, 164, 172, 156, 178, 166, 150, 190, 166, 152, 182, 168, 154, 178, 174, 158, 170, 154, 180, 160, 170, 174, 174, 158, 168, 166, 164, 168, 162, 166, 162, 160, 162, 164, 156, 172, 160, 156, 178, 162, 160, 180, 162, 154, 188, 162, 160, 178, 152, 164, 174, 166, 172, 178, 162, 172, 172, 164, 166, 174, 154, 174, 170, 150, 182, 166, 156, 172, 150, 180, 166, 152, 184, 166, 154, 180, 166, 144, 180, 154, 168, 178, 152, 170, 168, 156, 180, 168, 162, 178, 172, 164, 180, 160, 150, 186, 164, 152, 174, 164, 156, 166, 152, 164, 172, 140, 170, 154, 150, 172, 170, 146, 172, 154, 148, 178, 156, 158, 164, 156, 158, 158, 152, 166, 158, 142, 176, 154, 148, 178, 160, 150, 172, 164, 154, 174, 156, 168, 166, 142, 170, 164, 150, 166, 162, 152, 176, 148, 156, 166, 162, 150, 156, 158, 158, 168, 140, 172, 168, 132, 180, 160, 148, 170, 168, 144, 182, 144, 166, 160, 160, 168, 152, 160, 170, 156, 174, 166, 164, 150, 176, 168, 146, 186, 164, 158, 174, 156, 176, 174, 144, 172, 174, 138, 182, 156, 154, 184, 166, 152, 174, 154, 158, 178, 168, 168, 168, 160, 162, 174, 158, 180, 168, 154, 188, 160, 156, 184, 166, 162, 184, 152, 176, 174, 148, 178, 160, 150, 182, 154, 152, 168, 172, 150, 182, 158, 168, 164, 160, 162, 168, 158, 156, 188, 154, 170, 174, 138, 180, 168, 158, 176, 156, 168, 180, 162, 166, 170, 162, 172, 162, 154, 178, 172, 158, 186, 160, 152, 168, 174, 162, 176, 156, 156, 188, 152, 170, 174, 150, 182, 164, 140, 194, 158, 160, 186, 162, 172, 168, 166, 168, 166, 164, 172, 172, 156, 154, 174, 170, 172, 170, 160, 176, 158, 154, 184, 158, 166, 172, 160, 174, 164, 158, 186, 152, 148, 188, 162, 152, 184, 156, 156, 168, 164, 168, 156, 166, 182, 158, 164, 160, 184, 152, 172, 172, 158, 184, 152, 160, 170, 164, 172, 172, 156, 178, 162, 152, 188, 162, 150, 178, 158, 158, 176, 156, 164, 160}, + {154, 178, 178, 138, 180, 168, 148, 172, 174, 164, 172, 162, 164, 176, 148, 168, 172, 154, 164, 176, 162, 170, 160, 156, 182, 162, 158, 176, 150, 170, 166, 160, 172, 174, 140, 186, 178, 146, 182, 176, 152, 186, 164, 166, 172, 152, 166, 178, 146, 178, 174, 150, 176, 170, 146, 178, 150, 152, 172, 162, 156, 178, 152, 162, 174, 156, 172, 182, 148, 178, 174, 150, 190, 172, 152, 174, 158, 164, 178, 142, 160, 190, 148, 182, 172, 140, 178, 174, 138, 190, 164, 144, 174, 160, 154, 168, 160, 152, 168, 148, 176, 170, 144, 170, 172, 144, 170, 158, 148, 172, 162, 150, 174, 148, 160, 178, 140, 178, 164, 138, 178, 164, 140, 176, 164, 152, 172, 150, 156, 160, 164, 158, 156, 158, 162, 168, 148, 160, 168, 144, 178, 162, 142, 182, 158, 146, 164, 150, 156, 168, 150, 158, 164, 148, 168, 164, 150, 172, 162, 152, 176, 166, 148, 166, 156, 158, 168, 158, 156, 170, 148, 170, 170, 148, 174, 182, 138, 180, 156, 144, 176, 150, 166, 168, 156, 162, 166, 158, 172, 168, 154, 180, 162, 162, 180, 164, 160, 188, 162, 162, 172, 146, 176, 186, 144, 188, 156, 156, 174, 162, 156, 170, 162, 154, 184, 154, 156, 182, 152, 164, 178, 162, 150, 176, 152, 166, 188, 140, 180, 170, 148, 180, 160, 172, 170, 154, 168, 178, 152, 180, 170, 150, 176, 168, 168, 170, 162, 162, 176, 152, 166, 174, 152, 164, 172, 154, 170, 176, 138, 174, 170, 144, 182, 166, 156, 178, 150, 170, 168, 152, 164, 174, 152, 168, 168, 150, 170, 170, 144, 182, 166, 156, 174, 152, 172, 176, 160, 162, 170, 160, 170, 162, 152, 186, 162, 160, 178, 156, 168, 184, 152, 160, 176, 150, 170, 172, 144, 160, 184, 142, 172, 172, 142, 184, 162, 162, 186, 162, 162, 184, 152, 172, 172, 150, 176, 170, 152, 186, 162, 148, 172, 166, 162, 172, 158, 158, 178, 152, 168, 176, 142, 172, 180, 132, 180, 172, 142, 188, 162, 158, 172, 162, 152, 178, 142, 184, 174, 144, 176, 170}, + {158, 174, 152, 170, 156, 156, 174, 160, 156, 158, 156, 158, 170, 160, 152, 176, 156, 172, 178, 150, 172, 184, 150, 172, 166, 150, 180, 156, 162, 178, 160, 160, 168, 152, 176, 166, 148, 168, 168, 152, 164, 160, 158, 168, 160, 144, 176, 160, 152, 182, 144, 170, 184, 158, 162, 170, 156, 176, 156, 162, 170, 164, 168, 180, 156, 166, 172, 150, 164, 170, 150, 168, 158, 154, 170, 162, 154, 172, 170, 156, 172, 154, 156, 174, 160, 168, 174, 150, 160, 170, 160, 160, 170, 164, 178, 154, 158, 180, 164, 160, 176, 154, 154, 174, 150, 162, 166, 166, 164, 160, 150, 170, 156, 154, 168, 152, 158, 166, 150, 166, 158, 148, 160, 156, 154, 162, 158, 154, 172, 154, 150, 162, 160, 146, 176, 154, 144, 168, 164, 156, 164, 148, 162, 166, 148, 180, 158, 156, 168, 160, 156, 180, 140, 168, 166, 150, 164, 160, 152, 176, 148, 146, 166, 158, 158, 164, 164, 146, 180, 154, 144, 164, 156, 164, 148, 158, 176, 156, 154, 180, 156, 166, 184, 150, 166, 188, 154, 162, 186, 148, 176, 166, 166, 156, 164, 166, 168, 160, 152, 174, 156, 162, 170, 158, 156, 170, 154, 166, 166, 154, 178, 156, 156, 186, 160, 164, 178, 152, 154, 178, 162, 158, 184, 162, 168, 166, 162, 160, 158, 160, 166, 174, 158, 186, 142, 168, 174, 160, 160, 170, 146, 174, 164, 154, 174, 156, 162, 186, 150, 160, 174, 164, 162, 176, 162, 156, 178, 150, 164, 178, 160, 164, 172, 150, 190, 154, 164, 180, 158, 158, 186, 148, 158, 176, 158, 182, 168, 152, 174, 162, 160, 162, 164, 166, 172, 156, 150, 180, 154, 156, 180, 158, 166, 178, 146, 164, 176, 160, 172, 154, 154, 192, 142, 162, 182, 158, 166, 182, 156, 172, 162, 156, 184, 164, 152, 166, 160, 152, 168, 168, 146, 184, 156, 162, 176, 154, 158, 168, 152, 170, 160, 156, 178, 144, 168, 180, 162, 164, 170, 168, 164, 170, 158, 176, 168, 156, 174, 172, 148, 168, 172, 150, 188, 160, 158, 176, 156, 168, 178, 156}, + {188, 162, 148, 184, 162, 162, 176, 154, 172, 170, 162, 174, 178, 158, 176, 178, 142, 176, 176, 146, 172, 162, 148, 176, 152, 166, 174, 150, 168, 178, 134, 172, 186, 122, 184, 162, 154, 172, 160, 158, 180, 164, 160, 182, 156, 170, 184, 154, 172, 170, 148, 172, 170, 140, 178, 172, 146, 174, 160, 162, 170, 142, 174, 170, 148, 172, 174, 138, 178, 172, 148, 188, 154, 160, 176, 160, 154, 182, 148, 166, 190, 138, 174, 178, 136, 180, 168, 148, 172, 176, 152, 182, 164, 152, 186, 152, 170, 174, 144, 174, 170, 148, 174, 170, 138, 178, 158, 156, 164, 158, 154, 166, 138, 164, 164, 132, 180, 166, 132, 172, 170, 134, 182, 164, 144, 166, 156, 152, 170, 156, 162, 164, 146, 174, 166, 142, 172, 170, 130, 182, 166, 142, 174, 152, 150, 172, 136, 160, 174, 128, 174, 162, 142, 166, 162, 132, 170, 158, 148, 162, 158, 154, 172, 136, 164, 168, 132, 164, 178, 132, 174, 182, 132, 182, 166, 144, 180, 158, 154, 176, 156, 146, 176, 146, 168, 162, 150, 174, 170, 144, 170, 168, 144, 176, 158, 162, 170, 146, 172, 176, 140, 174, 176, 142, 180, 168, 152, 172, 174, 146, 180, 166, 154, 180, 150, 160, 180, 154, 180, 162, 140, 182, 168, 144, 170, 176, 148, 194, 156, 150, 168, 158, 166, 166, 148, 166, 174, 136, 178, 180, 144, 172, 170, 154, 176, 162, 150, 176, 164, 168, 176, 130, 176, 172, 138, 176, 176, 144, 172, 168, 152, 174, 166, 150, 178, 152, 162, 172, 146, 160, 178, 144, 180, 166, 142, 174, 170, 156, 176, 160, 162, 162, 160, 172, 168, 152, 170, 182, 140, 176, 176, 140, 176, 168, 148, 188, 162, 134, 186, 156, 162, 180, 144, 168, 182, 138, 176, 168, 148, 170, 168, 140, 170, 164, 162, 182, 156, 158, 174, 156, 170, 170, 150, 170, 172, 144, 182, 168, 142, 180, 180, 152, 166, 158, 168, 174, 154, 166, 176, 138, 174, 186, 138, 176, 166, 150, 180, 162, 148, 178, 158, 162, 174, 136, 174, 174, 136, 174, 168, 136}, + {174, 160, 168, 168, 158, 156, 168, 160, 164, 160, 156, 176, 136, 162, 174, 150, 166, 174, 148, 168, 172, 150, 174, 176, 152, 172, 160, 160, 166, 160, 170, 176, 140, 164, 180, 160, 158, 178, 156, 154, 172, 162, 164, 164, 152, 174, 150, 152, 176, 152, 156, 178, 156, 174, 164, 158, 164, 166, 166, 156, 154, 166, 180, 146, 168, 174, 146, 164, 172, 158, 160, 176, 152, 162, 178, 156, 166, 160, 158, 170, 148, 166, 176, 156, 164, 172, 148, 160, 178, 156, 162, 176, 154, 170, 152, 152, 172, 154, 160, 170, 142, 158, 170, 138, 172, 168, 146, 156, 160, 164, 164, 164, 156, 164, 148, 166, 172, 146, 162, 166, 140, 148, 172, 152, 156, 166, 152, 160, 160, 160, 162, 160, 144, 160, 150, 162, 174, 142, 154, 172, 138, 164, 160, 152, 156, 158, 162, 166, 136, 166, 174, 140, 158, 168, 146, 162, 172, 156, 158, 174, 152, 160, 174, 154, 166, 152, 158, 176, 140, 166, 172, 136, 158, 170, 146, 158, 156, 162, 164, 156, 156, 176, 158, 160, 172, 162, 158, 170, 158, 158, 180, 158, 166, 174, 156, 172, 170, 160, 178, 158, 160, 180, 142, 168, 178, 144, 168, 168, 158, 156, 166, 166, 158, 162, 168, 170, 154, 168, 166, 160, 156, 168, 152, 158, 178, 144, 162, 170, 158, 168, 166, 152, 168, 162, 176, 162, 150, 176, 170, 146, 174, 168, 154, 154, 180, 150, 174, 162, 156, 166, 164, 166, 180, 154, 164, 182, 150, 172, 168, 142, 174, 170, 150, 168, 166, 168, 168, 160, 170, 172, 150, 168, 160, 166, 156, 174, 156, 158, 174, 158, 160, 182, 148, 170, 158, 166, 170, 154, 166, 184, 144, 170, 170, 144, 166, 164, 150, 174, 166, 154, 170, 158, 166, 176, 144, 160, 178, 142, 158, 176, 162, 156, 178, 150, 172, 172, 154, 170, 160, 156, 176, 156, 168, 164, 160, 170, 164, 152, 168, 166, 146, 162, 174, 148, 172, 160, 164, 174, 150, 160, 182, 146, 162, 184, 152, 156, 170, 152, 174, 164, 156, 166, 160, 164, 170, 162, 172, 172, 158, 160}, + {168, 136, 170, 158, 148, 190, 170, 138, 172, 164, 160, 164, 154, 170, 176, 138, 178, 178, 146, 174, 174, 142, 174, 158, 150, 168, 158, 162, 176, 150, 164, 166, 152, 172, 164, 142, 184, 168, 138, 174, 166, 144, 174, 164, 158, 176, 146, 164, 176, 142, 182, 168, 136, 174, 170, 140, 190, 158, 142, 180, 166, 160, 166, 156, 166, 178, 142, 186, 170, 140, 180, 170, 138, 168, 164, 148, 182, 156, 154, 184, 146, 168, 174, 138, 174, 172, 142, 172, 178, 130, 180, 154, 144, 176, 170, 152, 172, 162, 168, 176, 142, 182, 170, 140, 182, 166, 130, 180, 168, 142, 166, 156, 142, 168, 160, 152, 168, 140, 174, 158, 140, 176, 152, 142, 170, 170, 128, 170, 158, 140, 182, 146, 156, 170, 140, 170, 166, 142, 184, 158, 128, 188, 166, 142, 184, 146, 146, 168, 156, 158, 170, 138, 176, 164, 134, 172, 162, 136, 162, 160, 138, 170, 156, 144, 174, 150, 160, 160, 136, 168, 160, 134, 176, 166, 136, 172, 172, 132, 180, 156, 156, 162, 156, 162, 166, 154, 178, 168, 140, 190, 170, 132, 178, 168, 126, 176, 160, 148, 178, 154, 158, 178, 146, 170, 170, 148, 176, 176, 136, 172, 162, 150, 178, 162, 154, 170, 156, 170, 172, 142, 170, 174, 150, 174, 176, 142, 180, 176, 132, 186, 164, 152, 172, 152, 162, 172, 152, 172, 168, 144, 186, 164, 142, 176, 162, 148, 160, 172, 140, 180, 160, 150, 178, 144, 166, 176, 124, 176, 176, 142, 182, 166, 146, 178, 162, 146, 176, 152, 170, 164, 148, 178, 160, 144, 172, 158, 150, 176, 176, 130, 182, 166, 140, 174, 160, 148, 172, 150, 178, 172, 138, 184, 178, 138, 186, 172, 144, 180, 164, 154, 176, 156, 166, 166, 150, 182, 166, 156, 178, 170, 130, 190, 172, 142, 176, 168, 140, 176, 156, 156, 172, 146, 166, 174, 134, 180, 172, 144, 192, 166, 148, 178, 162, 154, 164, 164, 152, 174, 162, 168, 170, 140, 180, 174, 128, 188, 168, 142, 178, 164, 146, 176, 162, 154, 182, 138, 168, 170, 140, 174}, + {156, 172, 162, 154, 178, 162, 140, 186, 168, 146, 172, 170, 154, 166, 158, 166, 168, 152, 162, 174, 148, 168, 170, 142, 180, 158, 156, 178, 152, 152, 168, 164, 164, 170, 162, 164, 152, 150, 176, 166, 144, 180, 164, 144, 178, 164, 156, 172, 154, 164, 164, 154, 166, 176, 150, 178, 156, 154, 172, 170, 146, 174, 168, 148, 162, 160, 158, 160, 160, 160, 162, 144, 182, 166, 138, 172, 164, 134, 176, 162, 152, 178, 160, 174, 156, 150, 174, 158, 152, 184, 162, 152, 190, 168, 144, 178, 164, 138, 172, 152, 156, 164, 154, 168, 162, 146, 170, 164, 140, 168, 172, 138, 172, 146, 146, 166, 162, 148, 150, 162, 158, 160, 142, 172, 158, 142, 174, 166, 140, 176, 150, 144, 176, 150, 160, 166, 142, 176, 144, 160, 166, 154, 136, 170, 156, 148, 158, 160, 142, 158, 156, 154, 154, 152, 160, 162, 150, 156, 176, 144, 166, 168, 136, 170, 158, 150, 168, 154, 150, 162, 150, 174, 154, 142, 174, 158, 144, 176, 158, 148, 170, 170, 144, 172, 160, 162, 168, 154, 154, 162, 160, 166, 178, 154, 184, 160, 146, 174, 160, 148, 168, 160, 160, 162, 172, 154, 160, 148, 180, 164, 152, 176, 164, 146, 176, 168, 148, 176, 162, 164, 170, 148, 168, 162, 148, 172, 154, 144, 182, 162, 146, 178, 162, 156, 170, 156, 148, 170, 168, 154, 168, 152, 168, 176, 142, 176, 174, 144, 176, 168, 150, 184, 152, 166, 164, 168, 172, 156, 156, 178, 156, 144, 182, 172, 136, 188, 166, 146, 162, 164, 150, 164, 156, 168, 166, 154, 166, 162, 148, 174, 180, 142, 178, 154, 152, 174, 168, 158, 164, 168, 162, 166, 156, 168, 160, 142, 174, 164, 142, 170, 158, 150, 172, 166, 150, 164, 166, 158, 162, 148, 178, 158, 146, 158, 176, 138, 182, 172, 142, 178, 164, 148, 168, 168, 154, 180, 146, 166, 164, 150, 166, 166, 152, 182, 164, 146, 172, 174, 154, 172, 158, 162, 162, 152, 176, 152, 148, 168, 166, 140, 182, 166, 148, 180, 164, 158, 162, 162, 158, 170}, + {138, 156, 184, 144, 174, 166, 152, 160, 160, 156, 168, 154, 166, 184, 148, 154, 182, 132, 164, 188, 138, 162, 172, 146, 164, 166, 148, 164, 154, 154, 180, 150, 158, 176, 144, 166, 176, 160, 160, 172, 158, 168, 176, 142, 176, 162, 144, 182, 148, 160, 172, 142, 164, 172, 136, 170, 170, 154, 164, 164, 148, 178, 150, 162, 180, 146, 162, 180, 144, 162, 184, 146, 164, 174, 152, 170, 168, 154, 172, 162, 156, 174, 152, 154, 182, 146, 164, 182, 144, 156, 182, 150, 156, 168, 146, 176, 160, 158, 174, 148, 154, 178, 148, 154, 174, 146, 152, 184, 140, 160, 158, 158, 160, 170, 148, 174, 138, 156, 180, 130, 158, 174, 138, 154, 172, 150, 150, 160, 144, 168, 166, 142, 168, 154, 148, 172, 144, 156, 168, 140, 158, 182, 132, 162, 166, 146, 160, 156, 146, 174, 140, 162, 174, 144, 152, 164, 152, 154, 170, 144, 164, 162, 146, 174, 162, 142, 174, 158, 148, 178, 128, 160, 166, 138, 156, 172, 146, 148, 164, 156, 166, 154, 152, 188, 144, 156, 182, 144, 160, 182, 142, 160, 178, 130, 166, 174, 142, 178, 160, 158, 172, 160, 156, 182, 138, 172, 188, 148, 160, 174, 148, 156, 170, 154, 180, 164, 146, 178, 142, 154, 178, 146, 156, 176, 140, 170, 164, 148, 164, 176, 148, 166, 170, 156, 168, 156, 150, 188, 140, 164, 182, 140, 172, 174, 154, 158, 170, 146, 168, 158, 148, 176, 146, 158, 182, 144, 150, 192, 140, 160, 172, 158, 148, 184, 146, 166, 158, 160, 174, 154, 160, 188, 140, 154, 180, 148, 166, 174, 154, 160, 166, 144, 170, 166, 158, 182, 142, 162, 186, 142, 158, 188, 134, 166, 170, 144, 162, 180, 144, 156, 170, 152, 174, 154, 166, 188, 138, 164, 174, 150, 160, 174, 152, 184, 176, 148, 166, 168, 146, 174, 156, 156, 180, 142, 154, 186, 140, 170, 174, 148, 166, 180, 152, 158, 156, 162, 170, 152, 158, 176, 142, 166, 174, 144, 152, 192, 148, 156, 172, 146, 156, 176, 138, 172, 160, 156, 182, 144, 168, 172}, + {142, 188, 146, 150, 172, 146, 162, 170, 162, 170, 164, 150, 176, 138, 154, 184, 158, 160, 176, 158, 156, 176, 152, 162, 168, 152, 164, 166, 156, 174, 162, 138, 186, 154, 154, 186, 148, 156, 168, 152, 154, 176, 146, 188, 150, 148, 190, 156, 148, 188, 150, 154, 168, 164, 150, 170, 160, 156, 170, 156, 166, 158, 152, 180, 146, 160, 190, 152, 152, 184, 154, 148, 178, 150, 160, 170, 144, 180, 154, 154, 174, 160, 148, 176, 160, 158, 178, 150, 150, 186, 150, 160, 180, 154, 168, 158, 156, 176, 146, 154, 192, 144, 152, 178, 160, 140, 176, 146, 162, 166, 158, 160, 160, 134, 164, 154, 156, 176, 154, 142, 174, 130, 150, 176, 142, 152, 166, 142, 168, 144, 144, 172, 146, 150, 178, 150, 152, 164, 148, 142, 172, 146, 152, 164, 136, 162, 158, 144, 166, 144, 154, 174, 148, 146, 184, 142, 146, 180, 158, 144, 160, 150, 166, 152, 140, 172, 146, 146, 170, 144, 152, 164, 150, 148, 172, 140, 146, 176, 138, 164, 152, 156, 172, 156, 158, 174, 148, 150, 186, 154, 156, 186, 156, 160, 172, 146, 176, 154, 148, 172, 166, 146, 170, 150, 156, 178, 144, 156, 184, 140, 162, 174, 150, 166, 162, 146, 184, 152, 160, 184, 150, 148, 186, 152, 150, 178, 160, 158, 170, 150, 166, 168, 150, 172, 162, 150, 178, 150, 160, 184, 156, 150, 190, 138, 162, 174, 144, 166, 164, 140, 180, 148, 138, 192, 150, 152, 182, 156, 162, 170, 164, 146, 170, 156, 172, 164, 154, 166, 162, 150, 176, 156, 150, 190, 152, 140, 182, 148, 162, 180, 148, 176, 174, 150, 172, 140, 160, 174, 144, 158, 180, 156, 158, 180, 150, 154, 176, 140, 164, 174, 150, 168, 156, 150, 174, 150, 146, 192, 154, 150, 180, 154, 156, 164, 146, 176, 168, 146, 182, 158, 144, 182, 146, 152, 178, 158, 150, 178, 158, 146, 180, 142, 162, 170, 142, 170, 152, 156, 186, 146, 152, 192, 142, 158, 178, 146, 164, 170, 154, 156, 178, 146, 178, 160, 148, 168, 162, 152, 176, 158}, + {164, 162, 152, 164, 162, 154, 162, 168, 146, 164, 174, 150, 168, 168, 160, 152, 166, 164, 152, 158, 172, 166, 142, 164, 180, 148, 154, 184, 140, 154, 172, 154, 162, 158, 158, 166, 156, 168, 164, 152, 172, 164, 150, 162, 182, 146, 154, 174, 148, 152, 164, 162, 152, 154, 172, 168, 146, 160, 178, 144, 160, 178, 150, 158, 176, 150, 162, 168, 154, 170, 154, 176, 152, 146, 166, 166, 150, 166, 160, 146, 156, 178, 146, 168, 166, 154, 158, 164, 164, 164, 150, 166, 172, 146, 172, 176, 152, 158, 170, 146, 156, 166, 158, 160, 152, 174, 162, 150, 168, 162, 138, 160, 166, 148, 162, 170, 146, 146, 160, 148, 148, 170, 150, 154, 148, 160, 164, 142, 160, 170, 146, 156, 170, 152, 158, 172, 150, 148, 164, 154, 160, 150, 168, 166, 142, 160, 170, 140, 156, 168, 142, 150, 164, 146, 150, 160, 164, 152, 150, 174, 160, 146, 152, 166, 152, 158, 178, 136, 158, 172, 148, 158, 158, 152, 156, 154, 172, 156, 148, 160, 168, 148, 166, 172, 154, 158, 172, 156, 154, 164, 156, 166, 150, 178, 164, 148, 166, 174, 144, 158, 168, 142, 162, 176, 154, 154, 172, 166, 160, 156, 176, 158, 154, 162, 178, 146, 164, 178, 142, 162, 172, 152, 158, 160, 166, 162, 146, 160, 170, 150, 160, 176, 152, 170, 166, 146, 156, 176, 158, 158, 160, 166, 152, 164, 164, 166, 152, 166, 170, 148, 158, 184, 144, 170, 172, 152, 162, 158, 158, 176, 144, 166, 170, 150, 162, 178, 144, 164, 184, 150, 154, 166, 160, 144, 160, 168, 160, 156, 158, 158, 152, 166, 172, 136, 170, 182, 150, 164, 170, 150, 166, 156, 162, 158, 160, 168, 162, 152, 160, 176, 140, 158, 174, 156, 152, 176, 150, 162, 158, 166, 158, 156, 164, 174, 156, 162, 174, 144, 166, 174, 144, 170, 174, 150, 154, 158, 162, 156, 150, 166, 164, 158, 170, 172, 152, 166, 178, 148, 164, 176, 150, 166, 162, 156, 160, 158, 162, 162, 146, 176, 156, 146, 162, 184, 150, 168, 172, 154, 156, 164}, + {180, 160, 146, 166, 166, 148, 172, 162, 146, 176, 150, 162, 166, 146, 176, 170, 136, 178, 180, 132, 190, 158, 148, 162, 158, 146, 172, 140, 164, 176, 142, 164, 166, 150, 178, 170, 136, 172, 168, 136, 176, 164, 150, 174, 144, 168, 180, 140, 174, 172, 132, 180, 180, 132, 170, 156, 154, 172, 162, 158, 172, 150, 164, 164, 148, 160, 168, 146, 174, 164, 132, 180, 170, 138, 176, 158, 146, 174, 154, 164, 182, 122, 182, 162, 140, 180, 172, 142, 172, 168, 138, 180, 162, 152, 172, 140, 160, 168, 150, 172, 162, 140, 174, 160, 136, 174, 162, 134, 186, 154, 158, 158, 152, 152, 164, 138, 170, 166, 132, 174, 174, 120, 178, 162, 132, 172, 146, 150, 168, 140, 170, 162, 132, 162, 170, 132, 178, 164, 134, 168, 154, 138, 170, 160, 142, 164, 150, 150, 160, 132, 164, 170, 126, 178, 176, 128, 160, 166, 140, 166, 162, 144, 168, 146, 160, 168, 130, 176, 152, 130, 166, 158, 126, 172, 156, 128, 166, 156, 146, 172, 152, 150, 172, 140, 174, 172, 134, 178, 172, 144, 178, 174, 134, 170, 164, 148, 174, 144, 166, 170, 144, 178, 162, 140, 180, 172, 134, 170, 174, 132, 176, 168, 146, 180, 160, 152, 178, 146, 170, 164, 144, 172, 170, 130, 174, 166, 140, 178, 158, 146, 170, 156, 160, 174, 136, 180, 172, 140, 174, 172, 142, 180, 176, 142, 178, 162, 152, 164, 158, 156, 166, 146, 170, 164, 132, 176, 170, 138, 184, 162, 148, 178, 156, 148, 168, 162, 162, 170, 148, 162, 178, 136, 174, 182, 136, 172, 172, 140, 174, 172, 140, 176, 158, 158, 178, 140, 172, 168, 134, 188, 166, 142, 186, 168, 144, 174, 156, 144, 172, 154, 160, 172, 144, 162, 174, 148, 174, 172, 146, 168, 170, 134, 180, 172, 142, 176, 158, 148, 176, 146, 176, 162, 124, 182, 168, 134, 182, 160, 150, 172, 168, 148, 166, 172, 154, 164, 148, 162, 166, 144, 172, 166, 136, 182, 176, 130, 176, 168, 138, 168, 164, 152, 174, 130, 176, 168, 130, 178, 176, 142}, + {162, 150, 166, 166, 140, 170, 166, 144, 174, 156, 156, 162, 174, 160, 154, 160, 164, 160, 146, 178, 148, 150, 164, 174, 140, 166, 170, 154, 162, 158, 156, 164, 164, 164, 156, 158, 170, 156, 152, 176, 164, 142, 176, 176, 152, 160, 156, 166, 150, 146, 174, 148, 142, 172, 158, 150, 168, 164, 140, 170, 170, 154, 172, 160, 166, 156, 174, 160, 162, 152, 174, 152, 150, 182, 162, 142, 172, 160, 152, 158, 158, 172, 158, 160, 164, 158, 154, 166, 158, 146, 178, 162, 150, 170, 172, 154, 168, 166, 152, 160, 158, 158, 156, 158, 168, 152, 154, 174, 152, 144, 160, 170, 148, 162, 152, 162, 154, 156, 156, 146, 154, 158, 148, 146, 166, 146, 152, 164, 158, 142, 156, 166, 154, 158, 150, 170, 152, 150, 170, 146, 152, 164, 156, 136, 162, 162, 140, 158, 158, 154, 152, 152, 164, 150, 154, 164, 160, 142, 168, 162, 146, 174, 156, 152, 160, 164, 148, 148, 156, 162, 154, 156, 162, 146, 152, 158, 158, 138, 160, 160, 144, 164, 164, 156, 162, 166, 166, 154, 144, 176, 162, 148, 180, 160, 144, 182, 160, 152, 156, 168, 154, 162, 162, 164, 152, 152, 168, 154, 158, 174, 158, 152, 162, 158, 152, 176, 152, 158, 160, 172, 148, 166, 152, 180, 156, 146, 170, 154, 146, 178, 164, 142, 170, 168, 154, 158, 156, 178, 156, 154, 172, 164, 142, 172, 158, 148, 170, 164, 144, 166, 162, 154, 152, 168, 158, 150, 160, 166, 158, 158, 174, 152, 146, 174, 176, 134, 170, 174, 144, 170, 158, 166, 154, 148, 166, 166, 138, 172, 158, 150, 176, 156, 146, 168, 166, 164, 152, 164, 166, 158, 156, 168, 148, 160, 164, 162, 152, 166, 164, 140, 162, 164, 152, 170, 146, 164, 156, 154, 168, 152, 160, 174, 164, 142, 180, 160, 152, 172, 166, 158, 154, 166, 166, 156, 150, 186, 148, 152, 162, 162, 144, 170, 168, 144, 170, 164, 154, 160, 168, 162, 164, 156, 172, 156, 154, 180, 154, 142, 172, 162, 142, 162, 186, 158, 156, 160, 164, 170, 164, 168}, + {168, 142, 158, 158, 158, 160, 156, 152, 166, 164, 152, 172, 166, 148, 174, 154, 150, 174, 170, 144, 176, 154, 164, 160, 156, 170, 160, 140, 180, 158, 138, 174, 158, 148, 182, 148, 156, 172, 166, 160, 160, 162, 166, 158, 150, 174, 170, 144, 174, 170, 136, 176, 164, 146, 166, 158, 152, 168, 156, 168, 160, 148, 174, 162, 146, 162, 170, 148, 184, 156, 158, 172, 160, 154, 170, 156, 152, 164, 142, 172, 162, 138, 176, 160, 152, 168, 160, 156, 176, 152, 148, 168, 162, 156, 160, 154, 160, 162, 138, 172, 160, 144, 182, 156, 146, 168, 168, 156, 164, 148, 166, 154, 156, 170, 158, 148, 160, 164, 136, 168, 146, 154, 168, 142, 150, 158, 144, 148, 156, 144, 160, 162, 136, 168, 164, 138, 178, 164, 140, 164, 154, 162, 156, 158, 150, 156, 154, 154, 158, 144, 170, 154, 136, 168, 146, 148, 162, 158, 148, 160, 154, 158, 154, 148, 158, 156, 148, 162, 164, 134, 164, 156, 138, 162, 142, 150, 160, 152, 154, 158, 162, 152, 156, 148, 170, 172, 134, 182, 160, 156, 168, 162, 156, 168, 162, 154, 168, 154, 170, 162, 140, 168, 162, 136, 168, 160, 156, 178, 144, 166, 164, 164, 164, 156, 154, 166, 172, 140, 174, 160, 148, 176, 162, 140, 172, 160, 156, 168, 148, 158, 172, 156, 166, 162, 154, 176, 174, 132, 174, 158, 150, 176, 152, 158, 174, 152, 162, 164, 148, 164, 162, 140, 170, 164, 144, 168, 156, 152, 168, 166, 158, 168, 156, 160, 168, 162, 166, 154, 162, 174, 162, 142, 174, 152, 142, 176, 150, 160, 164, 156, 162, 164, 158, 158, 176, 144, 174, 162, 142, 178, 164, 140, 180, 146, 164, 174, 148, 164, 160, 164, 164, 154, 142, 174, 180, 142, 172, 164, 146, 180, 154, 162, 158, 172, 158, 170, 146, 152, 180, 146, 166, 164, 134, 172, 160, 138, 172, 146, 154, 170, 160, 158, 164, 160, 170, 160, 152, 162, 170, 140, 182, 162, 140, 186, 154, 152, 170, 160, 140, 168, 154, 168, 156, 144, 170, 166, 142, 172, 160, 148}, + {152, 152, 168, 156, 150, 166, 152, 148, 178, 138, 160, 178, 144, 170, 170, 144, 172, 164, 150, 186, 154, 146, 180, 162, 142, 176, 142, 170, 166, 140, 170, 158, 142, 176, 150, 158, 162, 158, 152, 176, 152, 148, 178, 162, 142, 176, 140, 172, 164, 140, 166, 158, 138, 180, 158, 140, 174, 154, 156, 168, 146, 164, 170, 142, 178, 162, 148, 184, 148, 152, 172, 154, 144, 186, 140, 150, 178, 144, 150, 178, 142, 164, 166, 140, 174, 164, 150, 176, 162, 152, 178, 158, 158, 182, 148, 156, 182, 142, 172, 172, 138, 176, 154, 146, 176, 156, 142, 176, 156, 140, 174, 152, 154, 168, 134, 164, 162, 140, 172, 148, 140, 170, 144, 148, 166, 146, 148, 170, 146, 150, 164, 144, 152, 164, 140, 170, 164, 142, 166, 154, 140, 174, 158, 142, 172, 146, 148, 172, 132, 150, 160, 130, 164, 154, 142, 160, 156, 150, 166, 154, 150, 182, 156, 152, 166, 138, 158, 158, 148, 166, 154, 136, 174, 152, 146, 162, 154, 150, 168, 144, 150, 174, 146, 162, 172, 138, 182, 162, 150, 172, 162, 150, 180, 154, 140, 192, 140, 154, 172, 138, 170, 160, 144, 176, 152, 150, 166, 156, 160, 162, 162, 156, 172, 156, 156, 174, 156, 168, 162, 146, 182, 152, 146, 174, 156, 140, 180, 152, 150, 182, 146, 156, 172, 144, 164, 166, 144, 176, 160, 154, 170, 160, 156, 170, 156, 146, 174, 148, 152, 174, 144, 158, 166, 136, 184, 162, 144, 178, 150, 148, 180, 156, 146, 180, 158, 152, 170, 158, 152, 168, 144, 176, 158, 142, 172, 154, 150, 162, 156, 152, 176, 142, 154, 186, 140, 168, 168, 140, 180, 154, 152, 180, 156, 156, 174, 148, 150, 174, 150, 146, 170, 152, 162, 160, 142, 168, 164, 142, 176, 158, 150, 174, 164, 148, 176, 154, 160, 180, 138, 168, 166, 148, 164, 166, 140, 180, 154, 152, 176, 152, 144, 182, 146, 156, 170, 146, 166, 172, 146, 172, 170, 140, 180, 158, 152, 172, 154, 152, 170, 158, 142, 178, 148, 160, 172, 142, 168, 164, 150, 180}, + {168, 146, 162, 170, 154, 164, 160, 160, 146, 160, 174, 152, 156, 180, 144, 164, 168, 172, 152, 158, 164, 156, 150, 158, 166, 144, 158, 168, 144, 164, 170, 152, 158, 158, 164, 152, 162, 170, 162, 160, 166, 168, 148, 158, 176, 150, 160, 168, 150, 156, 174, 162, 146, 154, 158, 166, 156, 164, 158, 160, 152, 178, 146, 166, 166, 156, 152, 180, 154, 154, 170, 164, 170, 140, 174, 162, 142, 156, 170, 148, 152, 176, 154, 154, 160, 162, 156, 156, 168, 160, 156, 162, 166, 148, 160, 182, 140, 160, 166, 152, 154, 170, 150, 158, 152, 166, 160, 150, 156, 174, 146, 152, 168, 144, 172, 160, 148, 150, 168, 152, 148, 156, 158, 136, 146, 158, 158, 136, 164, 158, 144, 154, 174, 150, 158, 166, 158, 148, 158, 164, 158, 156, 150, 164, 142, 146, 168, 136, 160, 164, 138, 152, 160, 148, 150, 160, 160, 148, 150, 164, 162, 136, 168, 162, 146, 154, 178, 146, 146, 164, 146, 152, 156, 152, 144, 156, 150, 148, 160, 152, 154, 142, 154, 170, 146, 160, 166, 156, 164, 160, 164, 152, 160, 166, 170, 142, 160, 170, 152, 150, 172, 150, 160, 164, 154, 152, 172, 150, 160, 162, 170, 156, 154, 162, 166, 152, 152, 178, 154, 152, 178, 150, 160, 154, 168, 152, 150, 156, 160, 152, 144, 164, 158, 154, 174, 154, 168, 166, 160, 148, 174, 164, 154, 158, 170, 160, 152, 154, 176, 148, 158, 176, 146, 150, 166, 156, 156, 164, 166, 164, 152, 168, 162, 154, 160, 178, 150, 158, 180, 146, 164, 160, 164, 146, 170, 162, 152, 166, 156, 158, 148, 152, 172, 150, 156, 170, 152, 168, 162, 166, 152, 164, 164, 152, 172, 158, 166, 148, 158, 168, 142, 164, 162, 152, 154, 172, 154, 164, 168, 162, 156, 158, 162, 160, 150, 160, 170, 148, 166, 172, 144, 162, 172, 156, 148, 156, 162, 148, 162, 162, 158, 156, 168, 168, 156, 170, 162, 156, 152, 182, 156, 156, 166, 156, 156, 154, 158, 162, 144, 162, 166, 144, 156, 166, 148, 160, 166, 154, 158, 156}, + {160, 158, 170, 140, 170, 158, 136, 154, 178, 146, 162, 176, 146, 158, 174, 152, 166, 148, 170, 168, 140, 176, 176, 144, 160, 180, 144, 146, 176, 142, 154, 164, 158, 162, 148, 164, 158, 148, 164, 170, 154, 164, 174, 148, 162, 182, 142, 162, 178, 152, 150, 160, 160, 166, 140, 168, 158, 134, 168, 170, 150, 154, 182, 142, 164, 172, 158, 156, 158, 158, 160, 150, 162, 166, 144, 164, 176, 134, 158, 176, 146, 146, 172, 158, 160, 162, 154, 166, 148, 168, 164, 150, 176, 174, 142, 158, 176, 146, 156, 178, 146, 162, 160, 164, 154, 142, 164, 170, 138, 158, 172, 144, 158, 168, 146, 156, 168, 146, 162, 152, 154, 156, 130, 172, 158, 142, 152, 164, 136, 150, 178, 140, 146, 160, 154, 148, 154, 164, 156, 154, 154, 162, 142, 158, 172, 140, 154, 168, 138, 146, 170, 142, 146, 160, 156, 154, 136, 172, 150, 142, 170, 174, 144, 156, 172, 138, 148, 166, 148, 152, 164, 146, 142, 150, 158, 158, 134, 160, 154, 134, 164, 176, 156, 150, 172, 148, 162, 166, 164, 164, 158, 164, 174, 146, 166, 172, 140, 160, 166, 146, 156, 166, 154, 150, 166, 156, 162, 148, 172, 158, 144, 166, 176, 146, 162, 190, 146, 156, 182, 144, 152, 166, 158, 164, 150, 162, 164, 150, 166, 170, 144, 164, 164, 148, 164, 168, 150, 160, 168, 160, 162, 146, 174, 170, 140, 174, 170, 146, 154, 176, 144, 144, 176, 154, 152, 162, 146, 162, 150, 170, 160, 146, 172, 166, 148, 168, 164, 150, 158, 176, 152, 158, 162, 152, 164, 144, 164, 160, 148, 168, 166, 152, 162, 172, 152, 156, 178, 152, 162, 166, 160, 164, 152, 170, 160, 144, 172, 160, 142, 160, 180, 146, 154, 176, 146, 152, 168, 140, 160, 166, 158, 172, 156, 164, 174, 154, 160, 180, 138, 160, 172, 140, 152, 166, 160, 152, 156, 158, 168, 144, 162, 168, 146, 158, 180, 140, 156, 190, 140, 156, 174, 148, 162, 162, 158, 164, 152, 170, 164, 142, 156, 174, 154, 152, 162, 156, 154, 172, 152, 160}, + {148, 156, 158, 148, 162, 160, 152, 172, 150, 156, 166, 142, 162, 174, 132, 178, 164, 146, 174, 162, 148, 168, 154, 156, 168, 148, 164, 168, 150, 160, 162, 140, 162, 154, 154, 172, 168, 146, 170, 160, 154, 172, 152, 160, 170, 134, 176, 172, 134, 170, 166, 144, 156, 174, 138, 166, 168, 154, 164, 154, 154, 168, 144, 174, 166, 146, 164, 176, 140, 178, 176, 142, 168, 158, 158, 160, 156, 158, 166, 138, 156, 164, 142, 168, 162, 146, 168, 180, 144, 162, 166, 150, 174, 154, 166, 168, 154, 160, 172, 126, 176, 160, 142, 164, 168, 144, 162, 156, 162, 168, 150, 156, 168, 142, 166, 162, 140, 166, 154, 132, 170, 158, 146, 144, 160, 142, 154, 152, 144, 168, 128, 162, 170, 134, 168, 172, 142, 154, 172, 144, 168, 162, 140, 166, 150, 150, 166, 130, 158, 156, 132, 158, 158, 134, 168, 162, 144, 162, 164, 150, 160, 156, 158, 158, 140, 164, 176, 140, 160, 164, 130, 158, 164, 140, 154, 160, 136, 168, 148, 146, 164, 146, 148, 166, 132, 170, 168, 140, 174, 160, 156, 170, 158, 152, 168, 158, 164, 172, 146, 160, 170, 140, 166, 162, 140, 162, 164, 144, 162, 172, 152, 166, 152, 164, 168, 148, 162, 174, 136, 174, 172, 142, 170, 158, 156, 154, 168, 138, 174, 148, 146, 174, 150, 158, 170, 148, 164, 168, 150, 172, 168, 140, 166, 164, 150, 166, 154, 156, 170, 146, 160, 168, 136, 160, 168, 142, 174, 170, 148, 160, 174, 144, 170, 166, 164, 166, 160, 156, 174, 142, 168, 160, 144, 170, 162, 140, 168, 162, 142, 158, 160, 154, 168, 146, 162, 172, 146, 162, 172, 144, 166, 178, 138, 168, 160, 158, 162, 160, 160, 166, 140, 164, 166, 136, 166, 170, 140, 174, 170, 138, 168, 170, 152, 166, 160, 148, 172, 154, 166, 170, 140, 174, 164, 142, 166, 174, 130, 162, 164, 146, 162, 156, 156, 176, 146, 158, 174, 140, 174, 172, 138, 170, 174, 138, 182, 160, 146, 170, 158, 154, 162, 140, 162, 166, 152, 162, 170, 144, 172, 166}, + {158, 172, 146, 158, 158, 142, 162, 144, 156, 168, 154, 152, 170, 166, 152, 164, 154, 170, 160, 152, 170, 170, 154, 170, 152, 148, 158, 156, 150, 166, 162, 146, 164, 160, 154, 164, 154, 162, 160, 146, 174, 150, 158, 176, 172, 142, 166, 158, 156, 164, 150, 166, 160, 142, 176, 150, 142, 174, 146, 152, 172, 158, 148, 168, 166, 154, 170, 164, 162, 160, 156, 164, 158, 150, 168, 160, 144, 174, 154, 146, 170, 164, 144, 162, 154, 162, 162, 154, 162, 156, 152, 186, 154, 150, 166, 162, 152, 170, 160, 164, 164, 154, 158, 162, 142, 166, 152, 156, 172, 154, 150, 170, 152, 156, 160, 158, 148, 158, 164, 148, 150, 148, 156, 150, 140, 166, 142, 138, 166, 146, 144, 164, 156, 152, 164, 144, 156, 162, 152, 166, 160, 154, 170, 150, 142, 162, 152, 146, 158, 158, 138, 156, 160, 144, 152, 142, 158, 148, 128, 172, 162, 142, 174, 162, 144, 166, 160, 146, 154, 162, 150, 152, 150, 154, 156, 136, 166, 142, 140, 166, 146, 148, 174, 152, 158, 164, 168, 156, 156, 156, 164, 166, 150, 176, 150, 154, 166, 156, 146, 168, 156, 150, 164, 150, 148, 164, 158, 160, 162, 148, 156, 164, 142, 172, 160, 156, 178, 158, 154, 172, 160, 156, 162, 156, 162, 156, 142, 174, 148, 152, 174, 154, 152, 170, 158, 148, 172, 160, 158, 154, 162, 166, 170, 150, 168, 152, 142, 174, 150, 152, 174, 154, 146, 180, 154, 150, 162, 156, 148, 160, 152, 170, 166, 148, 174, 166, 140, 172, 168, 148, 160, 170, 156, 162, 148, 164, 156, 140, 170, 154, 146, 172, 154, 156, 168, 166, 142, 170, 160, 160, 170, 154, 164, 160, 156, 166, 162, 144, 178, 140, 140, 180, 152, 148, 166, 164, 146, 166, 154, 164, 158, 150, 180, 152, 158, 170, 162, 144, 172, 152, 154, 168, 160, 150, 162, 154, 164, 160, 146, 164, 166, 144, 168, 148, 164, 168, 160, 158, 168, 170, 152, 170, 156, 170, 158, 146, 170, 148, 146, 172, 152, 146, 170, 148, 142, 172, 156, 152, 160, 164}, + {162, 154, 158, 154, 176, 142, 156, 164, 166, 152, 162, 162, 148, 148, 170, 162, 154, 168, 178, 152, 158, 170, 162, 152, 170, 158, 154, 154, 164, 150, 144, 154, 158, 150, 166, 164, 144, 162, 174, 158, 150, 172, 166, 152, 164, 164, 154, 158, 176, 146, 164, 154, 166, 148, 154, 166, 158, 150, 162, 156, 152, 160, 164, 148, 156, 172, 160, 156, 158, 178, 148, 158, 168, 154, 148, 166, 158, 142, 166, 164, 146, 144, 176, 148, 150, 160, 164, 156, 164, 170, 154, 154, 178, 156, 152, 174, 166, 148, 152, 164, 150, 150, 160, 158, 152, 148, 168, 148, 150, 162, 162, 152, 162, 156, 156, 148, 168, 158, 154, 152, 162, 142, 152, 168, 142, 138, 168, 148, 142, 158, 154, 146, 142, 168, 154, 164, 156, 162, 148, 152, 158, 152, 152, 164, 152, 142, 150, 164, 140, 150, 156, 146, 142, 150, 156, 144, 154, 170, 148, 140, 170, 162, 144, 156, 166, 148, 154, 162, 156, 154, 156, 156, 144, 156, 156, 150, 144, 158, 146, 144, 158, 160, 142, 148, 156, 158, 154, 166, 166, 152, 164, 174, 154, 146, 180, 162, 156, 160, 162, 152, 154, 166, 160, 152, 166, 154, 150, 164, 164, 162, 162, 172, 166, 144, 170, 168, 162, 156, 160, 158, 154, 170, 152, 156, 156, 168, 144, 150, 164, 160, 142, 158, 158, 146, 162, 168, 152, 156, 170, 164, 158, 156, 170, 154, 158, 168, 160, 156, 164, 162, 146, 152, 170, 146, 152, 168, 162, 144, 162, 170, 148, 164, 166, 158, 154, 176, 158, 156, 158, 172, 160, 140, 166, 166, 144, 164, 166, 152, 152, 154, 158, 148, 162, 162, 146, 156, 176, 156, 156, 170, 166, 150, 160, 170, 154, 162, 168, 156, 144, 168, 168, 142, 160, 164, 152, 140, 172, 152, 160, 168, 160, 160, 146, 166, 164, 156, 166, 170, 150, 158, 172, 152, 148, 166, 166, 150, 152, 164, 150, 152, 170, 154, 152, 156, 158, 156, 158, 170, 158, 162, 170, 160, 150, 162, 162, 150, 156, 180, 156, 140, 170, 152, 146, 156, 170, 156, 144, 162, 160, 148}, + {158, 162, 152, 158, 158, 154, 166, 158, 142, 170, 156, 144, 176, 158, 154, 164, 160, 158, 160, 156, 170, 154, 156, 172, 150, 144, 168, 160, 136, 174, 152, 152, 170, 150, 152, 162, 160, 162, 158, 156, 168, 150, 154, 182, 160, 144, 172, 160, 146, 174, 150, 154, 160, 154, 164, 146, 148, 172, 150, 156, 166, 158, 144, 180, 148, 150, 170, 162, 162, 164, 164, 164, 156, 156, 168, 156, 148, 168, 154, 140, 176, 156, 146, 170, 150, 158, 154, 148, 168, 160, 162, 162, 164, 162, 170, 152, 148, 176, 152, 160, 174, 156, 150, 172, 140, 166, 144, 162, 162, 160, 146, 166, 156, 154, 164, 156, 144, 172, 142, 154, 158, 158, 160, 144, 150, 162, 146, 142, 168, 140, 140, 170, 156, 142, 162, 148, 160, 160, 158, 156, 158, 156, 170, 154, 146, 168, 160, 130, 164, 148, 134, 162, 140, 150, 152, 150, 152, 150, 164, 156, 154, 146, 182, 156, 140, 172, 164, 142, 168, 138, 154, 158, 150, 140, 154, 148, 156, 160, 138, 156, 150, 138, 166, 160, 146, 172, 152, 156, 164, 168, 156, 166, 156, 172, 152, 150, 168, 166, 144, 168, 160, 146, 158, 144, 152, 164, 158, 152, 160, 156, 160, 154, 144, 172, 162, 154, 174, 156, 150, 172, 148, 160, 170, 156, 158, 156, 146, 172, 148, 146, 170, 158, 152, 162, 160, 146, 170, 158, 142, 168, 162, 170, 160, 162, 168, 154, 156, 164, 160, 144, 174, 152, 152, 166, 152, 152, 160, 152, 158, 160, 158, 164, 162, 160, 162, 164, 156, 168, 160, 148, 168, 150, 148, 156, 168, 160, 156, 154, 160, 154, 152, 174, 156, 146, 176, 152, 150, 168, 160, 154, 178, 160, 160, 166, 154, 164, 154, 158, 168, 152, 142, 166, 156, 142, 166, 156, 148, 164, 148, 158, 160, 156, 164, 158, 154, 184, 158, 140, 172, 164, 146, 174, 162, 140, 166, 152, 150, 156, 154, 174, 148, 152, 168, 164, 150, 174, 162, 146, 166, 156, 154, 166, 164, 160, 160, 160, 156, 148, 156, 178, 150, 144, 176, 154, 134, 176, 156, 146, 166, 162}, + {168, 154, 144, 180, 140, 156, 168, 140, 164, 166, 140, 172, 160, 152, 164, 160, 156, 168, 156, 162, 168, 154, 152, 170, 154, 160, 162, 148, 166, 158, 150, 160, 152, 146, 176, 148, 144, 176, 152, 146, 174, 152, 170, 174, 154, 170, 166, 154, 174, 154, 150, 166, 144, 150, 162, 150, 156, 160, 146, 156, 166, 142, 166, 158, 158, 174, 150, 160, 172, 148, 152, 166, 156, 154, 168, 160, 154, 160, 148, 170, 154, 144, 168, 160, 148, 168, 160, 152, 172, 142, 158, 166, 152, 166, 170, 154, 168, 158, 152, 164, 154, 148, 160, 148, 146, 166, 152, 146, 170, 142, 158, 170, 140, 172, 156, 152, 168, 170, 154, 166, 146, 142, 152, 146, 142, 158, 144, 150, 158, 138, 164, 152, 140, 166, 156, 148, 162, 164, 146, 164, 148, 154, 166, 146, 152, 168, 132, 162, 154, 144, 158, 156, 140, 164, 142, 144, 160, 142, 144, 164, 160, 150, 158, 148, 158, 158, 142, 178, 150, 154, 166, 144, 144, 164, 140, 148, 158, 128, 152, 162, 134, 160, 158, 144, 160, 156, 152, 170, 154, 152, 172, 156, 158, 170, 152, 162, 170, 138, 174, 160, 146, 164, 162, 154, 166, 144, 152, 176, 146, 146, 176, 156, 156, 166, 148, 164, 180, 148, 166, 162, 162, 168, 150, 140, 168, 152, 154, 168, 146, 160, 160, 140, 164, 168, 146, 166, 170, 148, 176, 152, 156, 174, 152, 158, 166, 156, 156, 168, 146, 162, 158, 146, 164, 150, 150, 160, 156, 158, 162, 158, 152, 170, 150, 158, 162, 152, 172, 164, 150, 170, 160, 156, 180, 154, 142, 172, 142, 138, 166, 152, 160, 170, 136, 168, 160, 144, 174, 162, 152, 170, 164, 152, 162, 154, 162, 172, 144, 158, 164, 146, 158, 170, 150, 166, 160, 144, 164, 160, 154, 170, 152, 152, 164, 150, 162, 174, 146, 170, 168, 150, 168, 158, 150, 174, 152, 154, 170, 150, 152, 162, 152, 150, 170, 142, 160, 170, 150, 168, 166, 154, 176, 158, 154, 170, 150, 152, 172, 150, 148, 174, 146, 152, 156, 144, 162, 162, 144, 174, 158, 148}, + {172, 144, 166, 154, 156, 166, 140, 152, 164, 146, 154, 162, 146, 156, 172, 148, 168, 164, 160, 164, 164, 162, 172, 150, 160, 158, 150, 158, 160, 156, 144, 164, 150, 158, 162, 146, 174, 158, 162, 164, 154, 166, 160, 150, 156, 170, 148, 164, 164, 148, 160, 168, 164, 160, 154, 160, 158, 148, 158, 166, 148, 156, 162, 152, 160, 168, 150, 158, 170, 172, 156, 168, 160, 160, 154, 154, 172, 146, 152, 166, 140, 164, 168, 142, 154, 160, 156, 162, 160, 162, 164, 162, 158, 172, 150, 152, 168, 144, 164, 170, 150, 152, 172, 156, 156, 154, 152, 164, 148, 162, 156, 156, 152, 168, 148, 152, 164, 142, 158, 168, 146, 160, 154, 148, 162, 140, 150, 154, 138, 148, 146, 132, 156, 166, 140, 156, 164, 150, 154, 162, 162, 158, 160, 156, 156, 144, 150, 162, 140, 150, 162, 128, 154, 156, 146, 156, 160, 154, 158, 152, 154, 168, 154, 152, 162, 146, 160, 166, 148, 144, 164, 148, 156, 148, 152, 152, 146, 150, 158, 136, 156, 158, 136, 154, 162, 146, 162, 166, 152, 160, 164, 160, 170, 158, 162, 166, 154, 158, 160, 144, 166, 160, 144, 156, 164, 150, 156, 160, 148, 166, 154, 158, 168, 148, 176, 158, 154, 162, 168, 146, 162, 170, 150, 170, 164, 160, 156, 152, 156, 154, 158, 148, 164, 146, 158, 172, 136, 162, 162, 158, 164, 168, 168, 160, 160, 160, 174, 148, 164, 160, 142, 160, 164, 138, 156, 168, 146, 154, 166, 144, 162, 154, 168, 164, 152, 160, 168, 150, 160, 170, 142, 156, 168, 152, 156, 156, 164, 168, 154, 146, 160, 154, 156, 154, 154, 164, 166, 148, 164, 164, 162, 160, 168, 160, 160, 152, 164, 160, 152, 158, 172, 130, 152, 170, 140, 146, 178, 142, 164, 158, 156, 172, 158, 162, 166, 160, 164, 166, 142, 166, 172, 148, 160, 162, 148, 154, 158, 150, 158, 162, 146, 162, 156, 154, 168, 150, 156, 168, 144, 158, 172, 156, 156, 170, 156, 158, 160, 162, 164, 148, 158, 168, 140, 154, 170, 142, 156, 160, 154, 156}, + {144, 170, 160, 152, 150, 154, 150, 152, 160, 160, 156, 156, 158, 156, 152, 158, 164, 144, 164, 172, 148, 156, 166, 162, 156, 170, 158, 158, 156, 152, 154, 146, 172, 148, 148, 158, 154, 160, 150, 164, 150, 156, 170, 168, 164, 156, 164, 158, 146, 166, 156, 150, 160, 154, 144, 150, 168, 148, 148, 160, 160, 162, 164, 158, 154, 150, 174, 156, 158, 162, 174, 144, 152, 176, 150, 160, 162, 162, 150, 154, 164, 148, 148, 158, 156, 156, 156, 160, 146, 156, 170, 156, 156, 172, 170, 158, 164, 166, 154, 148, 170, 156, 140, 162, 162, 144, 158, 164, 152, 152, 168, 156, 160, 162, 162, 148, 160, 162, 156, 148, 152, 160, 138, 150, 162, 148, 144, 160, 150, 146, 158, 166, 140, 150, 162, 156, 148, 160, 164, 144, 150, 172, 152, 150, 160, 160, 148, 152, 160, 150, 146, 152, 154, 134, 152, 148, 138, 148, 162, 138, 156, 164, 160, 152, 160, 166, 154, 154, 170, 154, 146, 154, 160, 136, 146, 158, 140, 144, 150, 154, 144, 156, 166, 146, 146, 164, 164, 146, 170, 172, 150, 158, 174, 154, 152, 168, 162, 154, 168, 156, 162, 158, 152, 150, 148, 162, 156, 146, 152, 166, 150, 154, 164, 160, 150, 166, 174, 158, 148, 178, 154, 146, 160, 160, 150, 150, 168, 150, 144, 174, 154, 156, 162, 160, 156, 152, 162, 150, 148, 170, 160, 156, 164, 168, 152, 156, 158, 158, 156, 162, 164, 152, 148, 170, 160, 144, 156, 164, 150, 162, 168, 150, 154, 174, 154, 156, 168, 176, 152, 162, 168, 158, 148, 170, 156, 150, 152, 154, 146, 158, 162, 152, 152, 166, 160, 148, 164, 168, 152, 156, 164, 172, 152, 156, 174, 148, 152, 170, 162, 146, 162, 170, 154, 146, 164, 158, 140, 168, 154, 148, 156, 160, 144, 162, 174, 162, 152, 170, 172, 150, 162, 164, 158, 148, 160, 160, 144, 160, 156, 150, 150, 162, 152, 150, 164, 162, 158, 158, 168, 158, 156, 176, 162, 142, 158, 172, 152, 154, 164, 154, 144, 168, 160, 146, 154, 168, 156, 148, 162, 172}, + {166, 150, 156, 170, 152, 148, 166, 154, 154, 158, 152, 152, 154, 166, 160, 152, 172, 160, 152, 166, 180, 152, 146, 174, 150, 148, 162, 158, 154, 156, 162, 154, 146, 166, 164, 146, 158, 172, 140, 154, 170, 156, 152, 168, 164, 166, 154, 172, 164, 150, 170, 156, 156, 152, 166, 150, 148, 162, 148, 154, 154, 164, 144, 156, 166, 166, 146, 180, 164, 150, 164, 176, 144, 158, 168, 150, 154, 158, 164, 150, 146, 166, 164, 142, 166, 164, 150, 154, 160, 156, 156, 168, 158, 154, 166, 164, 152, 160, 164, 166, 148, 168, 162, 144, 152, 168, 140, 154, 170, 146, 146, 168, 152, 152, 148, 170, 152, 152, 170, 170, 140, 170, 154, 140, 146, 154, 140, 144, 146, 142, 148, 136, 160, 154, 142, 162, 166, 150, 160, 166, 160, 144, 166, 150, 158, 162, 150, 146, 140, 160, 148, 144, 156, 154, 138, 158, 162, 138, 148, 176, 146, 150, 162, 154, 158, 154, 162, 160, 150, 166, 156, 144, 154, 160, 148, 144, 164, 140, 148, 148, 150, 146, 150, 156, 152, 148, 164, 162, 144, 156, 166, 154, 160, 176, 158, 158, 166, 154, 156, 162, 158, 158, 148, 160, 156, 148, 162, 160, 152, 152, 168, 146, 158, 162, 168, 150, 156, 164, 168, 144, 174, 168, 150, 162, 168, 154, 144, 170, 148, 150, 168, 144, 154, 154, 162, 154, 154, 172, 168, 156, 170, 164, 158, 160, 170, 142, 170, 160, 162, 146, 156, 162, 158, 138, 168, 164, 136, 154, 170, 140, 156, 176, 146, 150, 174, 160, 160, 158, 176, 158, 146, 170, 168, 142, 164, 156, 152, 158, 164, 142, 154, 166, 148, 152, 160, 160, 152, 154, 170, 160, 150, 162, 178, 156, 154, 168, 154, 148, 168, 156, 150, 152, 154, 156, 144, 158, 166, 140, 170, 162, 154, 154, 174, 144, 158, 164, 168, 150, 166, 162, 158, 150, 164, 168, 146, 162, 164, 142, 160, 172, 142, 146, 176, 154, 150, 158, 162, 160, 154, 174, 158, 154, 170, 166, 154, 160, 170, 146, 156, 168, 150, 148, 160, 162, 150, 142, 166, 158, 142, 158}, + {154, 158, 162, 146, 158, 166, 138, 162, 158, 140, 166, 158, 156, 154, 164, 150, 156, 164, 154, 164, 156, 174, 176, 136, 170, 176, 138, 164, 166, 138, 156, 164, 146, 148, 158, 146, 162, 152, 162, 168, 146, 168, 166, 146, 160, 170, 156, 156, 166, 154, 160, 164, 148, 166, 148, 158, 164, 146, 162, 166, 142, 160, 162, 158, 156, 160, 154, 156, 164, 164, 166, 154, 168, 168, 140, 176, 162, 140, 162, 158, 148, 160, 156, 146, 152, 168, 146, 162, 162, 160, 160, 152, 170, 168, 146, 172, 164, 150, 152, 166, 140, 164, 158, 152, 162, 158, 158, 160, 138, 170, 156, 144, 166, 164, 152, 160, 156, 154, 152, 156, 150, 156, 156, 150, 158, 140, 164, 146, 134, 160, 156, 144, 148, 152, 142, 156, 158, 154, 162, 150, 156, 160, 146, 162, 162, 144, 156, 166, 140, 152, 158, 134, 150, 146, 146, 146, 150, 148, 160, 136, 166, 164, 140, 164, 156, 156, 156, 164, 150, 160, 158, 150, 150, 144, 146, 158, 132, 162, 152, 136, 156, 154, 134, 160, 156, 152, 156, 162, 158, 164, 158, 166, 168, 150, 176, 162, 142, 166, 170, 130, 166, 156, 150, 162, 156, 148, 158, 158, 156, 164, 152, 164, 168, 136, 168, 172, 144, 168, 168, 164, 156, 160, 150, 160, 162, 152, 170, 144, 162, 156, 134, 160, 166, 140, 162, 162, 138, 158, 160, 158, 160, 166, 162, 170, 154, 172, 158, 144, 172, 168, 146, 154, 156, 160, 152, 150, 156, 166, 154, 152, 170, 140, 170, 164, 136, 166, 170, 146, 170, 164, 156, 154, 170, 142, 170, 160, 154, 154, 146, 162, 162, 138, 162, 158, 152, 158, 164, 150, 166, 156, 164, 160, 162, 150, 170, 152, 164, 166, 142, 164, 164, 142, 162, 164, 146, 156, 152, 150, 160, 156, 156, 168, 146, 172, 172, 146, 170, 172, 144, 164, 170, 144, 164, 160, 152, 154, 152, 158, 154, 142, 160, 156, 144, 160, 164, 142, 170, 166, 162, 148, 166, 164, 168, 160, 156, 160, 152, 164, 164, 138, 162, 166, 136, 164, 164, 152, 154, 164, 150, 162}, + {154, 164, 162, 148, 166, 152, 156, 154, 154, 154, 168, 154, 146, 164, 152, 168, 166, 148, 174, 154, 158, 166, 156, 156, 166, 152, 158, 162, 154, 158, 160, 146, 156, 154, 148, 166, 152, 148, 164, 150, 150, 170, 158, 156, 180, 158, 154, 174, 146, 168, 158, 144, 168, 154, 146, 160, 150, 138, 166, 142, 150, 168, 152, 154, 168, 152, 160, 164, 152, 176, 166, 140, 168, 158, 150, 162, 152, 154, 160, 160, 150, 156, 146, 160, 156, 146, 166, 164, 140, 174, 152, 152, 168, 152, 162, 174, 166, 158, 164, 154, 170, 164, 140, 168, 152, 132, 162, 156, 138, 164, 154, 148, 164, 160, 148, 156, 158, 170, 160, 146, 170, 156, 136, 166, 144, 136, 158, 150, 142, 156, 154, 140, 160, 154, 150, 158, 136, 176, 158, 146, 162, 156, 142, 176, 156, 154, 164, 146, 144, 156, 150, 152, 150, 142, 152, 154, 136, 170, 138, 152, 162, 154, 152, 174, 156, 144, 154, 152, 162, 158, 136, 168, 150, 148, 154, 146, 142, 152, 150, 140, 156, 150, 144, 156, 148, 156, 170, 140, 168, 166, 146, 168, 162, 162, 160, 162, 160, 170, 156, 166, 150, 164, 152, 154, 150, 160, 150, 142, 162, 156, 138, 172, 158, 156, 162, 158, 156, 168, 156, 168, 160, 154, 170, 166, 146, 166, 152, 148, 170, 148, 152, 164, 156, 148, 166, 156, 160, 164, 144, 168, 156, 146, 170, 166, 150, 162, 162, 152, 162, 156, 146, 162, 160, 148, 154, 150, 154, 152, 138, 170, 154, 150, 168, 152, 156, 172, 158, 170, 166, 158, 162, 166, 138, 174, 150, 152, 164, 158, 148, 160, 154, 146, 162, 162, 144, 168, 162, 158, 160, 158, 172, 164, 152, 180, 162, 152, 162, 154, 152, 174, 158, 152, 160, 148, 154, 158, 150, 166, 156, 148, 164, 144, 154, 168, 150, 160, 172, 158, 164, 168, 160, 158, 158, 160, 160, 156, 142, 170, 158, 138, 170, 154, 148, 168, 156, 154, 162, 156, 146, 162, 156, 164, 166, 156, 168, 154, 158, 166, 150, 156, 162, 152, 154, 156, 154, 148, 164, 138, 168, 158}, + {154, 162, 162, 148, 154, 164, 150, 150, 150, 162, 144, 136, 182, 150, 150, 162, 164, 150, 164, 166, 160, 162, 170, 160, 158, 148, 170, 152, 148, 170, 156, 148, 170, 154, 142, 162, 160, 146, 158, 170, 154, 152, 166, 174, 150, 150, 186, 148, 156, 166, 162, 140, 168, 156, 154, 164, 160, 158, 150, 148, 170, 144, 150, 176, 150, 146, 176, 150, 160, 170, 170, 154, 162, 174, 162, 154, 162, 168, 154, 136, 174, 146, 144, 168, 154, 136, 168, 152, 154, 166, 164, 162, 150, 166, 166, 152, 154, 174, 154, 144, 172, 142, 156, 166, 160, 154, 160, 156, 156, 160, 144, 168, 156, 140, 180, 144, 142, 168, 158, 146, 160, 162, 142, 148, 156, 148, 142, 140, 164, 136, 128, 166, 140, 134, 168, 148, 148, 160, 156, 150, 162, 156, 160, 160, 152, 166, 142, 152, 168, 138, 136, 158, 142, 142, 160, 140, 144, 154, 152, 150, 140, 164, 162, 152, 150, 178, 148, 152, 170, 156, 154, 162, 156, 140, 148, 154, 148, 144, 150, 150, 140, 148, 156, 146, 138, 164, 146, 154, 160, 160, 148, 168, 166, 160, 160, 166, 164, 156, 138, 176, 158, 140, 170, 160, 146, 168, 154, 150, 160, 168, 154, 148, 160, 160, 154, 156, 170, 162, 148, 178, 158, 146, 168, 160, 148, 164, 154, 158, 144, 162, 152, 152, 140, 180, 140, 148, 168, 164, 146, 174, 158, 158, 166, 166, 158, 158, 158, 176, 150, 152, 176, 154, 140, 172, 152, 142, 168, 154, 146, 160, 160, 160, 160, 168, 162, 150, 156, 174, 152, 152, 174, 152, 154, 170, 154, 150, 164, 156, 150, 154, 152, 160, 148, 140, 174, 152, 138, 176, 152, 144, 170, 162, 154, 160, 174, 148, 162, 160, 166, 146, 142, 182, 146, 136, 182, 144, 150, 160, 160, 148, 162, 166, 154, 150, 170, 164, 156, 164, 176, 154, 148, 174, 152, 146, 164, 160, 146, 156, 156, 146, 154, 156, 160, 146, 156, 168, 156, 146, 182, 154, 152, 178, 160, 148, 172, 166, 150, 154, 170, 156, 152, 152, 162, 148, 144, 170, 148, 144, 168, 156}, + {168, 148, 154, 166, 160, 132, 166, 156, 152, 152, 164, 152, 146, 166, 164, 144, 162, 164, 152, 164, 174, 166, 144, 174, 162, 150, 160, 162, 148, 150, 162, 160, 142, 148, 170, 146, 142, 174, 156, 144, 170, 160, 148, 160, 170, 158, 152, 178, 158, 148, 170, 168, 148, 150, 168, 152, 136, 170, 150, 144, 158, 160, 146, 150, 168, 158, 146, 166, 174, 154, 154, 180, 152, 142, 168, 164, 146, 154, 164, 154, 152, 160, 154, 144, 164, 162, 142, 152, 172, 156, 144, 168, 156, 150, 166, 168, 156, 158, 172, 160, 150, 164, 164, 146, 150, 164, 146, 146, 166, 152, 148, 166, 154, 160, 154, 164, 164, 148, 162, 168, 150, 152, 170, 150, 136, 166, 142, 142, 152, 156, 144, 146, 160, 146, 138, 156, 170, 156, 146, 176, 148, 150, 172, 152, 148, 168, 156, 142, 150, 164, 150, 140, 162, 150, 132, 154, 152, 142, 142, 162, 152, 138, 162, 162, 150, 150, 160, 160, 146, 160, 168, 148, 142, 166, 146, 136, 162, 144, 130, 156, 144, 142, 150, 164, 150, 138, 166, 166, 150, 158, 166, 158, 152, 172, 162, 150, 170, 162, 152, 158, 168, 154, 144, 164, 156, 144, 146, 162, 142, 136, 174, 152, 146, 168, 162, 156, 152, 176, 166, 156, 168, 162, 150, 150, 178, 144, 154, 160, 166, 142, 170, 150, 148, 148, 164, 154, 148, 164, 166, 144, 154, 176, 156, 152, 186, 158, 146, 158, 164, 142, 160, 160, 154, 152, 156, 158, 144, 158, 158, 148, 148, 162, 160, 138, 168, 162, 160, 164, 174, 158, 158, 176, 160, 150, 158, 166, 152, 140, 168, 158, 140, 164, 158, 150, 162, 150, 164, 154, 158, 174, 142, 166, 176, 154, 148, 178, 160, 144, 174, 150, 160, 154, 158, 154, 144, 164, 158, 146, 148, 168, 154, 144, 178, 162, 144, 172, 164, 148, 158, 176, 154, 152, 168, 162, 150, 154, 174, 144, 148, 172, 146, 138, 162, 156, 150, 154, 164, 158, 142, 172, 166, 150, 166, 182, 150, 156, 174, 152, 136, 168, 160, 150, 152, 158, 152, 146, 162, 158, 146, 156}, + {156, 164, 150, 154, 162, 158, 150, 156, 158, 150, 144, 164, 156, 146, 156, 164, 146, 160, 166, 156, 158, 166, 166, 152, 166, 168, 154, 166, 160, 158, 146, 158, 158, 146, 156, 148, 162, 146, 150, 160, 154, 162, 164, 154, 158, 168, 160, 158, 164, 166, 146, 152, 160, 154, 150, 168, 156, 142, 164, 154, 150, 156, 166, 156, 148, 166, 156, 152, 162, 164, 162, 158, 170, 164, 148, 168, 154, 154, 156, 162, 148, 146, 166, 148, 148, 148, 164, 146, 146, 166, 154, 154, 166, 164, 164, 172, 172, 160, 154, 160, 162, 150, 156, 162, 152, 156, 154, 152, 152, 158, 160, 148, 156, 162, 160, 148, 156, 166, 142, 158, 160, 154, 150, 154, 156, 132, 160, 150, 140, 144, 152, 142, 138, 158, 148, 146, 146, 162, 150, 152, 170, 146, 154, 168, 164, 148, 158, 166, 144, 140, 158, 154, 134, 146, 156, 138, 142, 156, 158, 134, 158, 164, 146, 154, 176, 158, 152, 160, 162, 150, 152, 166, 144, 144, 156, 148, 142, 158, 156, 146, 150, 154, 150, 146, 156, 158, 140, 162, 158, 150, 154, 168, 166, 156, 166, 162, 156, 162, 166, 156, 148, 166, 160, 142, 162, 158, 146, 156, 154, 160, 148, 162, 164, 146, 166, 156, 162, 156, 170, 168, 150, 170, 160, 160, 148, 166, 152, 152, 158, 150, 144, 156, 160, 152, 156, 158, 158, 148, 160, 162, 154, 156, 170, 160, 150, 178, 160, 154, 162, 170, 150, 154, 162, 150, 146, 160, 162, 148, 154, 162, 156, 150, 160, 160, 144, 174, 166, 154, 158, 170, 160, 150, 160, 162, 148, 148, 162, 162, 148, 150, 156, 150, 156, 158, 146, 166, 158, 158, 156, 156, 162, 150, 166, 164, 162, 150, 172, 164, 140, 168, 156, 154, 156, 156, 158, 142, 154, 156, 146, 152, 166, 156, 146, 162, 160, 154, 168, 172, 162, 160, 164, 166, 142, 164, 168, 140, 154, 160, 154, 146, 160, 160, 146, 160, 158, 148, 152, 160, 160, 152, 166, 168, 148, 156, 174, 158, 152, 170, 160, 152, 160, 164, 148, 158, 156, 158, 144, 158, 164, 138}, + {156, 164, 154, 160, 160, 150, 154, 158, 146, 156, 158, 146, 162, 146, 160, 162, 156, 156, 166, 160, 168, 164, 156, 164, 152, 156, 156, 152, 162, 158, 158, 148, 156, 156, 150, 160, 150, 160, 158, 152, 168, 156, 152, 158, 160, 166, 162, 156, 164, 160, 164, 156, 164, 150, 158, 152, 150, 158, 152, 154, 162, 142, 148, 162, 154, 160, 162, 160, 160, 172, 154, 166, 168, 158, 160, 156, 164, 152, 156, 150, 164, 150, 146, 162, 152, 154, 158, 158, 160, 160, 152, 158, 164, 152, 164, 146, 166, 166, 154, 162, 166, 160, 156, 160, 154, 160, 156, 152, 154, 150, 154, 146, 160, 146, 160, 160, 158, 160, 162, 152, 168, 152, 162, 150, 146, 158, 150, 140, 150, 150, 144, 154, 146, 138, 164, 144, 150, 164, 160, 158, 160, 148, 160, 152, 158, 158, 152, 150, 158, 142, 144, 152, 152, 144, 152, 136, 160, 144, 142, 154, 152, 150, 160, 152, 146, 164, 162, 144, 164, 152, 158, 168, 150, 154, 158, 140, 154, 142, 140, 148, 146, 140, 146, 146, 144, 160, 152, 158, 162, 156, 162, 162, 158, 162, 168, 156, 164, 152, 164, 158, 156, 152, 162, 156, 146, 160, 154, 150, 158, 148, 156, 156, 144, 166, 152, 156, 158, 160, 154, 164, 164, 158, 164, 154, 168, 160, 154, 160, 156, 154, 160, 150, 150, 160, 144, 156, 160, 158, 156, 166, 156, 160, 168, 158, 168, 160, 156, 168, 148, 160, 154, 156, 152, 168, 152, 152, 158, 146, 156, 162, 148, 158, 164, 154, 162, 158, 154, 168, 158, 160, 166, 158, 160, 168, 156, 160, 162, 146, 162, 152, 152, 152, 146, 154, 156, 144, 148, 168, 156, 154, 166, 162, 164, 166, 164, 170, 152, 160, 162, 160, 156, 154, 152, 150, 162, 150, 148, 162, 150, 156, 160, 156, 160, 156, 154, 158, 162, 152, 160, 166, 160, 158, 162, 150, 162, 164, 146, 162, 144, 160, 154, 148, 162, 152, 152, 158, 156, 156, 168, 152, 156, 170, 166, 166, 164, 162, 162, 156, 148, 162, 154, 150, 154, 152, 152, 154, 148, 154, 164, 160}, + {170, 156, 160, 166, 148, 160, 158, 148, 160, 166, 140, 154, 158, 148, 154, 160, 146, 162, 148, 160, 166, 156, 168, 176, 148, 164, 172, 144, 150, 170, 138, 160, 152, 148, 150, 160, 146, 160, 148, 160, 160, 142, 164, 170, 150, 168, 166, 158, 158, 160, 152, 166, 148, 162, 164, 144, 162, 162, 138, 148, 166, 144, 166, 160, 152, 160, 160, 156, 150, 162, 160, 164, 154, 166, 166, 146, 160, 168, 152, 158, 164, 140, 160, 156, 148, 156, 154, 152, 152, 150, 166, 162, 150, 164, 174, 156, 166, 168, 150, 158, 164, 154, 154, 154, 150, 158, 144, 156, 156, 148, 156, 170, 140, 164, 160, 152, 154, 160, 148, 160, 160, 152, 154, 148, 150, 154, 136, 152, 162, 128, 152, 156, 136, 150, 154, 148, 144, 162, 150, 160, 156, 162, 156, 154, 164, 160, 152, 160, 158, 146, 152, 154, 136, 146, 152, 142, 146, 144, 152, 152, 136, 156, 168, 148, 166, 164, 146, 158, 168, 150, 162, 154, 146, 152, 140, 154, 158, 136, 156, 150, 142, 154, 158, 138, 156, 142, 152, 150, 164, 148, 162, 150, 164, 168, 150, 174, 168, 156, 154, 166, 140, 158, 166, 140, 166, 148, 148, 154, 154, 156, 168, 144, 162, 164, 148, 158, 170, 154, 170, 164, 152, 158, 170, 150, 162, 152, 158, 158, 146, 160, 160, 146, 154, 160, 144, 162, 154, 148, 162, 148, 162, 156, 150, 168, 170, 148, 168, 166, 146, 160, 170, 144, 166, 158, 140, 158, 152, 148, 154, 146, 158, 160, 134, 172, 158, 156, 158, 176, 148, 172, 166, 150, 158, 156, 158, 160, 154, 154, 154, 152, 154, 164, 144, 160, 162, 146, 162, 154, 154, 160, 156, 150, 170, 158, 164, 164, 158, 158, 166, 148, 158, 172, 146, 156, 160, 150, 146, 162, 154, 152, 156, 152, 160, 152, 164, 166, 146, 176, 170, 150, 164, 170, 142, 164, 170, 144, 164, 152, 150, 160, 142, 164, 154, 150, 158, 166, 152, 160, 166, 150, 160, 166, 154, 158, 164, 160, 160, 146, 168, 166, 146, 162, 160, 142, 154, 168, 136, 156, 146, 150}, + {158, 146, 150, 166, 138, 158, 168, 138, 150, 156, 156, 162, 146, 162, 164, 148, 164, 168, 148, 162, 178, 144, 164, 168, 156, 158, 150, 164, 160, 148, 170, 162, 142, 154, 166, 132, 154, 172, 140, 158, 162, 156, 152, 162, 162, 166, 158, 170, 166, 150, 170, 170, 142, 160, 160, 150, 150, 156, 154, 158, 152, 158, 144, 148, 160, 158, 142, 172, 168, 144, 166, 172, 152, 164, 162, 158, 154, 156, 154, 156, 146, 166, 154, 132, 168, 158, 146, 156, 170, 144, 158, 166, 150, 158, 162, 160, 162, 154, 174, 164, 138, 170, 164, 144, 160, 166, 142, 156, 152, 142, 150, 150, 160, 160, 156, 156, 164, 150, 164, 166, 142, 164, 174, 138, 150, 158, 138, 148, 144, 148, 150, 140, 158, 144, 146, 156, 164, 134, 160, 166, 146, 156, 168, 154, 154, 162, 152, 156, 154, 154, 150, 134, 158, 164, 130, 144, 160, 132, 154, 156, 140, 150, 160, 148, 158, 148, 166, 154, 146, 168, 166, 146, 162, 168, 138, 152, 158, 138, 146, 154, 140, 138, 144, 156, 148, 140, 164, 162, 142, 166, 166, 150, 156, 176, 142, 162, 170, 156, 166, 150, 172, 158, 146, 170, 162, 142, 154, 170, 136, 154, 166, 144, 156, 158, 156, 162, 156, 164, 170, 150, 174, 168, 142, 166, 174, 144, 148, 170, 148, 146, 152, 152, 154, 152, 150, 154, 148, 166, 170, 148, 160, 172, 146, 160, 174, 160, 162, 160, 166, 154, 150, 162, 154, 146, 170, 154, 136, 170, 162, 144, 162, 162, 156, 148, 164, 152, 160, 156, 168, 160, 152, 174, 164, 144, 158, 172, 142, 156, 166, 142, 150, 148, 150, 152, 152, 164, 152, 152, 166, 160, 148, 176, 174, 144, 168, 162, 152, 154, 160, 158, 158, 150, 154, 160, 146, 162, 160, 140, 152, 168, 134, 166, 162, 152, 156, 170, 152, 158, 162, 170, 166, 156, 170, 158, 136, 164, 168, 146, 154, 158, 144, 154, 158, 150, 150, 156, 150, 162, 150, 168, 166, 154, 160, 176, 146, 172, 168, 156, 154, 162, 146, 156, 154, 164, 148, 144, 162, 164, 138, 164}, + {170, 154, 170, 148, 172, 154, 142, 166, 162, 130, 156, 154, 142, 150, 164, 150, 158, 158, 162, 158, 152, 172, 170, 154, 172, 172, 142, 156, 174, 140, 158, 156, 154, 156, 146, 160, 162, 140, 164, 156, 148, 158, 176, 136, 170, 172, 146, 158, 172, 156, 158, 162, 158, 160, 154, 158, 164, 144, 160, 164, 134, 150, 170, 138, 158, 158, 166, 148, 150, 164, 164, 156, 164, 164, 154, 164, 172, 142, 168, 158, 146, 152, 168, 146, 148, 156, 152, 154, 146, 168, 160, 148, 174, 162, 148, 162, 182, 144, 162, 172, 158, 152, 162, 154, 154, 142, 170, 156, 142, 164, 164, 138, 158, 156, 136, 168, 168, 146, 150, 168, 150, 158, 146, 160, 156, 142, 164, 156, 136, 148, 158, 134, 144, 164, 134, 146, 142, 158, 156, 146, 166, 166, 146, 164, 164, 150, 156, 170, 134, 150, 158, 142, 144, 148, 142, 146, 142, 152, 150, 140, 164, 154, 138, 162, 172, 140, 160, 166, 154, 154, 164, 150, 154, 152, 154, 150, 130, 156, 152, 132, 154, 154, 140, 146, 158, 146, 142, 162, 156, 152, 152, 166, 164, 148, 178, 172, 148, 160, 168, 144, 154, 168, 144, 154, 156, 158, 156, 148, 152, 164, 140, 164, 158, 146, 158, 170, 138, 174, 168, 152, 156, 168, 164, 158, 152, 164, 166, 142, 166, 160, 146, 156, 166, 134, 158, 166, 144, 152, 154, 158, 154, 144, 176, 164, 152, 164, 172, 146, 162, 168, 148, 160, 162, 152, 144, 160, 148, 144, 150, 158, 150, 146, 164, 164, 144, 172, 170, 144, 158, 180, 148, 158, 166, 158, 156, 154, 160, 162, 142, 174, 160, 144, 158, 162, 142, 148, 170, 146, 158, 172, 154, 154, 160, 170, 156, 158, 174, 168, 152, 160, 162, 146, 154, 168, 138, 150, 166, 146, 146, 150, 164, 152, 146, 164, 164, 144, 168, 170, 152, 150, 184, 140, 158, 170, 156, 160, 156, 150, 160, 150, 162, 158, 142, 160, 168, 138, 158, 168, 142, 154, 164, 154, 162, 160, 166, 158, 160, 162, 162, 148, 164, 170, 136, 148, 168, 140, 152, 146, 160, 152}, + {146, 158, 168, 146, 154, 160, 162, 150, 152, 162, 146, 150, 160, 158, 148, 158, 168, 142, 166, 162, 156, 158, 166, 152, 150, 162, 160, 160, 148, 164, 164, 132, 164, 154, 150, 152, 164, 140, 154, 162, 156, 162, 156, 158, 158, 152, 168, 168, 154, 168, 166, 138, 162, 162, 146, 156, 158, 144, 146, 158, 150, 160, 144, 158, 164, 146, 162, 162, 154, 170, 170, 148, 164, 180, 150, 152, 160, 162, 154, 152, 164, 156, 138, 168, 156, 136, 160, 162, 150, 152, 158, 150, 150, 164, 164, 160, 158, 164, 162, 154, 162, 162, 144, 168, 170, 146, 148, 162, 150, 146, 154, 158, 152, 152, 162, 158, 150, 170, 156, 150, 166, 162, 152, 156, 162, 142, 144, 154, 140, 144, 144, 146, 148, 140, 160, 158, 138, 168, 158, 150, 154, 162, 154, 152, 166, 154, 158, 144, 168, 150, 142, 156, 152, 138, 154, 152, 140, 148, 154, 140, 142, 154, 152, 154, 150, 164, 158, 160, 164, 164, 142, 168, 160, 146, 154, 160, 142, 142, 148, 148, 142, 142, 146, 148, 138, 156, 158, 142, 158, 174, 144, 156, 164, 156, 158, 166, 160, 162, 158, 162, 170, 148, 166, 164, 138, 164, 154, 146, 156, 158, 140, 146, 170, 150, 158, 158, 160, 156, 146, 176, 164, 158, 166, 172, 138, 158, 168, 148, 146, 160, 148, 150, 148, 158, 154, 146, 162, 162, 148, 162, 166, 150, 154, 176, 150, 164, 170, 154, 164, 154, 156, 158, 146, 160, 162, 142, 168, 162, 138, 150, 166, 148, 154, 158, 158, 146, 158, 166, 166, 154, 168, 162, 154, 164, 168, 140, 164, 164, 148, 142, 158, 150, 152, 156, 150, 160, 146, 162, 158, 146, 168, 162, 158, 158, 172, 154, 160, 166, 158, 148, 164, 154, 152, 144, 160, 160, 142, 164, 162, 142, 160, 162, 148, 158, 160, 150, 158, 162, 162, 174, 148, 178, 162, 140, 172, 152, 148, 164, 164, 138, 150, 160, 148, 150, 146, 156, 156, 148, 164, 166, 152, 166, 168, 152, 168, 170, 146, 158, 166, 154, 152, 152, 162, 158, 152, 166, 148, 150, 154, 164}, + {162, 160, 152, 168, 156, 150, 152, 158, 144, 154, 160, 154, 146, 162, 154, 142, 158, 152, 162, 160, 162, 160, 160, 166, 176, 150, 162, 164, 150, 154, 160, 154, 154, 160, 142, 150, 144, 162, 158, 150, 152, 154, 152, 162, 168, 160, 168, 158, 158, 154, 170, 160, 158, 160, 158, 158, 148, 158, 156, 144, 156, 152, 146, 158, 156, 156, 146, 162, 156, 156, 158, 160, 166, 154, 170, 158, 160, 162, 160, 152, 150, 168, 148, 144, 162, 148, 148, 156, 152, 158, 152, 160, 160, 152, 168, 168, 148, 168, 164, 162, 156, 166, 152, 150, 152, 152, 156, 148, 156, 156, 146, 154, 162, 148, 162, 160, 156, 148, 156, 156, 158, 158, 158, 160, 152, 150, 146, 148, 154, 148, 144, 152, 146, 142, 138, 144, 150, 140, 156, 156, 160, 150, 158, 168, 142, 162, 160, 156, 160, 156, 152, 148, 148, 142, 140, 148, 142, 156, 136, 154, 148, 146, 160, 158, 154, 158, 162, 148, 156, 160, 166, 148, 162, 152, 156, 138, 154, 154, 140, 150, 150, 142, 152, 148, 152, 144, 150, 156, 152, 150, 160, 164, 148, 170, 162, 148, 168, 172, 154, 164, 164, 152, 152, 162, 154, 150, 152, 154, 146, 150, 158, 164, 138, 164, 168, 144, 162, 170, 164, 158, 164, 158, 154, 160, 166, 160, 152, 164, 166, 140, 160, 162, 150, 152, 152, 150, 152, 160, 150, 152, 162, 164, 164, 150, 164, 168, 154, 168, 160, 160, 162, 160, 154, 154, 164, 148, 146, 150, 150, 154, 148, 158, 158, 152, 160, 164, 152, 168, 160, 162, 162, 176, 154, 156, 162, 164, 154, 156, 148, 164, 150, 154, 156, 150, 162, 150, 156, 152, 158, 158, 150, 154, 160, 166, 154, 168, 168, 152, 162, 166, 146, 168, 152, 154, 156, 154, 150, 146, 150, 156, 154, 154, 158, 156, 152, 162, 152, 158, 170, 162, 156, 160, 166, 166, 148, 170, 150, 154, 148, 166, 158, 136, 160, 154, 150, 166, 158, 154, 152, 158, 150, 158, 166, 162, 166, 154, 168, 166, 154, 158, 164, 148, 162, 156, 146, 146, 166, 152, 144, 158}, + {168, 158, 154, 160, 156, 158, 158, 160, 154, 152, 154, 144, 152, 148, 154, 166, 152, 162, 152, 156, 168, 160, 158, 160, 160, 166, 160, 160, 158, 168, 152, 156, 148, 150, 160, 158, 150, 162, 146, 150, 162, 162, 154, 158, 152, 156, 166, 162, 162, 168, 152, 162, 160, 152, 160, 154, 154, 150, 156, 158, 146, 160, 156, 152, 146, 162, 162, 154, 158, 164, 158, 172, 156, 162, 162, 170, 146, 154, 164, 148, 164, 148, 156, 152, 148, 160, 158, 150, 160, 152, 154, 156, 162, 156, 158, 166, 170, 150, 162, 156, 168, 156, 160, 162, 148, 162, 152, 154, 148, 158, 150, 146, 152, 156, 154, 156, 150, 160, 170, 152, 158, 154, 162, 150, 158, 148, 150, 148, 136, 146, 142, 140, 146, 144, 150, 152, 150, 154, 152, 158, 148, 160, 164, 156, 160, 150, 160, 156, 148, 152, 146, 152, 148, 150, 144, 148, 150, 144, 148, 146, 150, 142, 146, 158, 154, 156, 150, 162, 158, 158, 152, 160, 148, 162, 148, 154, 148, 142, 150, 138, 152, 140, 150, 140, 140, 152, 152, 156, 148, 160, 164, 154, 158, 154, 164, 172, 154, 166, 158, 162, 152, 162, 154, 156, 154, 154, 156, 152, 162, 150, 156, 144, 158, 148, 152, 162, 160, 148, 164, 162, 158, 162, 168, 154, 164, 158, 152, 154, 158, 158, 152, 150, 152, 156, 150, 152, 156, 150, 160, 162, 156, 152, 158, 172, 162, 156, 168, 158, 172, 144, 158, 164, 154, 156, 146, 154, 160, 144, 162, 152, 152, 158, 148, 152, 152, 156, 156, 160, 164, 158, 158, 156, 164, 160, 164, 152, 158, 152, 162, 154, 150, 152, 158, 144, 144, 162, 144, 168, 158, 150, 162, 156, 168, 156, 160, 164, 158, 164, 150, 164, 162, 150, 162, 152, 148, 156, 154, 150, 154, 146, 158, 148, 154, 158, 166, 156, 168, 158, 156, 168, 162, 156, 164, 152, 160, 150, 158, 158, 152, 154, 148, 160, 148, 154, 146, 146, 152, 160, 162, 150, 166, 158, 152, 158, 168, 162, 168, 154, 154, 160, 156, 160, 146, 158, 154, 152, 150, 150, 158, 150}, + {160, 168, 156, 154, 158, 146, 158, 150, 152, 148, 162, 154, 144, 160, 160, 142, 160, 150, 164, 154, 160, 170, 160, 156, 170, 160, 152, 162, 154, 152, 156, 154, 160, 148, 148, 156, 146, 148, 158, 152, 154, 154, 150, 158, 160, 174, 154, 162, 160, 156, 170, 162, 162, 150, 156, 156, 156, 148, 156, 148, 152, 148, 150, 154, 158, 158, 158, 162, 158, 150, 164, 152, 176, 160, 162, 156, 158, 158, 156, 162, 146, 154, 164, 150, 148, 154, 150, 148, 150, 160, 158, 154, 154, 154, 168, 156, 162, 162, 160, 174, 164, 152, 158, 162, 152, 152, 158, 150, 152, 160, 146, 156, 154, 150, 156, 158, 156, 160, 154, 162, 166, 158, 146, 162, 146, 154, 158, 146, 146, 154, 146, 144, 148, 146, 140, 152, 144, 154, 156, 146, 164, 154, 148, 168, 148, 164, 154, 156, 152, 160, 152, 146, 148, 148, 152, 142, 144, 148, 142, 144, 150, 158, 146, 160, 152, 156, 170, 156, 152, 164, 154, 160, 162, 148, 158, 146, 150, 148, 138, 148, 138, 146, 138, 156, 148, 136, 152, 152, 156, 158, 144, 164, 158, 164, 168, 160, 162, 164, 160, 154, 172, 150, 158, 154, 164, 154, 150, 150, 154, 148, 150, 156, 148, 158, 156, 160, 146, 162, 166, 154, 160, 170, 162, 166, 154, 164, 152, 162, 150, 152, 150, 154, 154, 148, 152, 154, 152, 154, 156, 156, 156, 160, 154, 152, 166, 168, 154, 166, 158, 162, 154, 156, 164, 146, 158, 156, 150, 152, 152, 158, 150, 150, 160, 152, 162, 162, 158, 152, 164, 170, 154, 166, 166, 172, 148, 162, 160, 154, 150, 152, 150, 150, 152, 162, 150, 142, 160, 148, 152, 158, 160, 160, 162, 172, 158, 158, 166, 156, 166, 158, 154, 150, 164, 156, 156, 158, 148, 152, 158, 150, 156, 158, 152, 158, 150, 150, 168, 156, 166, 160, 162, 158, 174, 158, 160, 160, 156, 158, 148, 158, 154, 146, 150, 152, 160, 146, 166, 148, 148, 162, 154, 156, 174, 162, 166, 158, 156, 160, 166, 154, 160, 156, 156, 158, 152, 146, 162, 148, 150, 154}, + {154, 172, 160, 154, 168, 162, 146, 166, 162, 150, 152, 144, 162, 148, 142, 170, 150, 154, 158, 156, 148, 166, 166, 158, 156, 166, 164, 158, 156, 166, 156, 160, 154, 150, 154, 158, 144, 146, 158, 154, 156, 156, 168, 152, 158, 156, 168, 160, 158, 168, 154, 154, 164, 160, 148, 160, 158, 146, 158, 156, 148, 156, 148, 160, 152, 146, 160, 148, 152, 168, 156, 160, 174, 156, 162, 162, 166, 162, 156, 156, 164, 146, 150, 160, 144, 148, 160, 150, 142, 162, 150, 156, 160, 160, 152, 162, 166, 162, 162, 154, 162, 152, 158, 166, 154, 150, 160, 156, 146, 156, 156, 152, 146, 160, 152, 156, 156, 160, 156, 152, 158, 154, 152, 160, 158, 152, 148, 150, 142, 146, 144, 154, 136, 148, 154, 138, 146, 162, 146, 152, 164, 156, 162, 156, 166, 156, 160, 160, 160, 152, 150, 156, 142, 140, 150, 138, 146, 152, 144, 148, 148, 146, 150, 150, 162, 158, 146, 156, 166, 152, 156, 158, 150, 154, 164, 148, 146, 150, 156, 144, 152, 144, 158, 146, 134, 160, 144, 148, 160, 152, 158, 166, 152, 152, 162, 166, 162, 164, 164, 166, 146, 154, 162, 156, 146, 158, 148, 148, 156, 158, 142, 160, 158, 146, 158, 156, 166, 158, 160, 166, 164, 140, 170, 152, 156, 168, 166, 148, 164, 158, 154, 154, 154, 156, 154, 154, 152, 154, 152, 158, 152, 150, 162, 164, 146, 172, 164, 158, 160, 162, 162, 158, 152, 166, 148, 144, 160, 150, 148, 158, 146, 152, 156, 156, 154, 162, 164, 158, 156, 164, 168, 156, 152, 164, 152, 152, 166, 152, 156, 162, 156, 150, 152, 152, 154, 150, 154, 162, 162, 152, 162, 150, 152, 162, 154, 162, 166, 170, 160, 156, 162, 158, 160, 142, 166, 146, 146, 162, 146, 142, 164, 144, 148, 160, 156, 158, 156, 166, 164, 158, 154, 174, 152, 156, 166, 144, 150, 162, 152, 144, 166, 164, 144, 156, 152, 160, 150, 154, 168, 156, 152, 164, 154, 154, 162, 158, 160, 170, 158, 158, 156, 160, 156, 150, 148, 162, 148, 146, 158, 146}, + {164, 152, 164, 162, 148, 150, 168, 142, 140, 166, 140, 146, 162, 152, 150, 154, 160, 156, 162, 166, 162, 156, 158, 172, 154, 152, 168, 154, 144, 168, 150, 150, 166, 158, 150, 146, 162, 162, 142, 148, 164, 152, 136, 172, 148, 162, 164, 160, 158, 168, 168, 160, 152, 162, 158, 160, 150, 168, 150, 136, 168, 144, 148, 160, 154, 152, 160, 164, 156, 152, 160, 166, 158, 158, 166, 158, 150, 174, 148, 152, 160, 164, 140, 156, 158, 152, 154, 156, 158, 148, 146, 166, 154, 148, 176, 156, 148, 168, 156, 158, 170, 162, 156, 158, 166, 162, 148, 154, 166, 140, 142, 164, 150, 144, 168, 146, 148, 166, 160, 156, 160, 164, 162, 154, 152, 160, 150, 144, 158, 138, 134, 150, 144, 138, 152, 142, 138, 150, 162, 154, 154, 146, 162, 156, 154, 166, 152, 146, 170, 142, 152, 154, 146, 150, 142, 146, 144, 138, 152, 146, 146, 138, 158, 142, 142, 170, 154, 148, 168, 164, 152, 156, 166, 160, 146, 148, 156, 146, 134, 160, 136, 132, 156, 132, 150, 152, 152, 146, 146, 158, 160, 148, 162, 158, 160, 156, 168, 150, 146, 178, 162, 148, 166, 158, 152, 162, 160, 152, 154, 150, 158, 138, 148, 174, 148, 148, 164, 154, 150, 168, 164, 170, 154, 176, 162, 152, 156, 162, 152, 146, 164, 146, 150, 154, 146, 142, 164, 152, 150, 156, 166, 158, 158, 166, 178, 160, 154, 168, 158, 154, 170, 152, 144, 158, 162, 146, 156, 152, 152, 148, 156, 160, 150, 146, 168, 144, 148, 170, 162, 154, 164, 164, 166, 166, 168, 162, 152, 164, 160, 146, 142, 162, 150, 136, 166, 148, 142, 166, 142, 152, 158, 174, 152, 164, 166, 160, 162, 150, 170, 154, 158, 166, 144, 162, 156, 154, 148, 154, 154, 158, 146, 166, 156, 160, 148, 162, 150, 160, 166, 162, 156, 174, 160, 156, 162, 166, 152, 158, 160, 162, 140, 150, 162, 140, 142, 168, 140, 150, 160, 158, 158, 168, 158, 168, 162, 172, 160, 160, 160, 166, 154, 144, 164, 148, 150, 166, 142, 156, 160, 156}, + {168, 162, 154, 168, 152, 150, 160, 164, 150, 150, 164, 152, 146, 148, 162, 146, 148, 162, 154, 138, 174, 152, 158, 168, 170, 158, 166, 172, 162, 150, 164, 158, 142, 144, 166, 142, 136, 164, 148, 148, 160, 160, 154, 158, 162, 156, 160, 160, 170, 146, 156, 182, 150, 148, 172, 152, 146, 162, 150, 156, 144, 166, 148, 146, 152, 160, 152, 142, 168, 154, 154, 178, 156, 148, 178, 158, 162, 152, 170, 158, 152, 152, 168, 144, 144, 166, 146, 136, 172, 148, 150, 162, 156, 160, 152, 168, 160, 156, 160, 174, 154, 154, 170, 142, 142, 164, 150, 146, 160, 152, 152, 152, 152, 160, 146, 160, 166, 144, 152, 172, 150, 140, 168, 160, 142, 166, 146, 146, 150, 150, 150, 142, 152, 154, 140, 142, 158, 142, 138, 166, 140, 158, 170, 154, 158, 156, 168, 160, 152, 158, 156, 148, 146, 154, 142, 140, 158, 140, 136, 150, 146, 142, 158, 162, 152, 152, 158, 166, 148, 154, 174, 152, 140, 164, 152, 146, 162, 138, 150, 152, 148, 150, 144, 148, 146, 144, 142, 160, 150, 142, 160, 156, 148, 168, 158, 160, 170, 170, 164, 158, 166, 162, 150, 150, 170, 144, 136, 168, 142, 138, 168, 154, 148, 160, 156, 158, 160, 162, 160, 152, 158, 168, 160, 144, 180, 152, 156, 168, 156, 150, 162, 156, 148, 150, 162, 162, 138, 150, 164, 152, 142, 168, 152, 140, 172, 152, 160, 166, 168, 158, 152, 164, 168, 162, 148, 168, 144, 142, 170, 144, 142, 160, 150, 150, 158, 160, 158, 150, 170, 166, 152, 154, 168, 160, 144, 172, 150, 142, 166, 156, 152, 160, 156, 150, 146, 150, 170, 146, 152, 170, 146, 144, 176, 150, 148, 184, 158, 158, 168, 162, 156, 156, 166, 156, 146, 156, 154, 144, 144, 160, 154, 132, 168, 148, 156, 166, 154, 154, 168, 166, 160, 156, 158, 174, 158, 144, 168, 148, 138, 166, 156, 144, 152, 158, 146, 152, 160, 152, 156, 148, 164, 142, 162, 168, 154, 148, 176, 154, 148, 168, 156, 158, 158, 154, 156, 148, 156, 152, 142, 144}, + {174, 154, 160, 156, 160, 170, 152, 144, 174, 146, 132, 170, 144, 144, 160, 152, 148, 164, 156, 160, 152, 166, 168, 162, 152, 170, 154, 148, 172, 160, 138, 174, 156, 146, 156, 156, 160, 146, 154, 160, 142, 154, 166, 148, 142, 176, 160, 148, 168, 166, 154, 164, 170, 156, 150, 172, 158, 144, 158, 154, 150, 134, 168, 146, 144, 168, 154, 150, 162, 160, 158, 158, 164, 168, 152, 160, 178, 148, 142, 166, 158, 142, 158, 150, 146, 156, 152, 154, 150, 160, 158, 150, 150, 162, 154, 152, 172, 164, 152, 176, 160, 156, 158, 164, 166, 158, 156, 158, 144, 152, 160, 142, 140, 168, 148, 144, 154, 162, 152, 162, 170, 160, 154, 156, 170, 144, 148, 162, 136, 140, 156, 144, 128, 160, 140, 140, 154, 148, 152, 154, 154, 164, 142, 160, 162, 150, 146, 176, 150, 144, 168, 144, 142, 158, 142, 148, 140, 150, 148, 144, 142, 156, 140, 142, 170, 152, 142, 170, 162, 152, 162, 156, 154, 156, 158, 154, 148, 150, 154, 132, 146, 152, 138, 134, 160, 142, 138, 152, 152, 156, 162, 154, 160, 148, 164, 174, 148, 156, 162, 154, 148, 176, 156, 140, 170, 156, 150, 150, 158, 160, 144, 142, 166, 142, 156, 164, 154, 138, 178, 156, 148, 180, 154, 164, 160, 166, 156, 152, 164, 156, 142, 152, 162, 146, 136, 160, 156, 142, 168, 158, 152, 158, 164, 160, 158, 170, 164, 150, 154, 180, 148, 144, 168, 146, 146, 160, 156, 152, 154, 158, 146, 150, 152, 168, 142, 150, 160, 160, 148, 168, 164, 154, 172, 160, 164, 148, 166, 166, 148, 156, 166, 142, 146, 162, 144, 148, 164, 152, 146, 154, 164, 158, 154, 166, 162, 152, 160, 172, 142, 156, 172, 142, 148, 162, 156, 144, 166, 150, 148, 154, 152, 160, 146, 152, 164, 140, 158, 168, 156, 144, 186, 164, 146, 172, 154, 154, 166, 156, 166, 146, 152, 162, 142, 152, 166, 142, 138, 166, 144, 152, 168, 158, 152, 168, 164, 168, 150, 170, 172, 152, 158, 162, 152, 148, 172, 148, 134, 170, 156, 142}, + {148, 168, 174, 160, 136, 174, 152, 150, 160, 150, 160, 146, 152, 156, 146, 156, 158, 144, 150, 164, 148, 146, 178, 156, 158, 172, 156, 164, 156, 152, 162, 146, 160, 164, 140, 142, 160, 156, 136, 166, 156, 136, 164, 160, 160, 158, 154, 168, 156, 152, 176, 154, 152, 170, 154, 138, 168, 152, 142, 170, 138, 156, 152, 152, 162, 144, 158, 168, 144, 156, 164, 160, 144, 176, 160, 146, 174, 162, 160, 158, 148, 164, 146, 158, 166, 148, 146, 154, 140, 142, 170, 148, 150, 170, 156, 160, 168, 156, 166, 154, 158, 174, 150, 152, 164, 148, 146, 162, 154, 136, 164, 146, 150, 152, 150, 162, 152, 152, 174, 142, 158, 170, 146, 148, 164, 152, 146, 156, 150, 140, 148, 138, 150, 140, 148, 158, 132, 144, 162, 144, 146, 162, 166, 142, 172, 164, 158, 158, 158, 160, 148, 154, 158, 134, 146, 156, 142, 128, 160, 144, 130, 156, 146, 146, 160, 146, 162, 150, 154, 164, 148, 160, 168, 150, 150, 160, 156, 130, 164, 138, 140, 154, 144, 150, 136, 146, 158, 142, 156, 156, 154, 146, 172, 158, 146, 180, 160, 154, 172, 162, 168, 148, 158, 170, 144, 156, 164, 146, 136, 164, 152, 150, 154, 154, 144, 160, 152, 158, 154, 168, 170, 150, 156, 174, 160, 148, 172, 158, 142, 170, 160, 148, 158, 148, 156, 146, 150, 166, 140, 152, 166, 154, 152, 170, 158, 148, 170, 168, 150, 168, 164, 164, 150, 166, 164, 140, 158, 158, 144, 138, 164, 148, 138, 172, 156, 152, 168, 150, 164, 160, 158, 170, 154, 164, 176, 150, 148, 162, 156, 144, 164, 148, 144, 160, 152, 148, 148, 156, 162, 150, 156, 166, 154, 158, 176, 156, 154, 178, 162, 156, 166, 164, 162, 152, 148, 164, 142, 154, 166, 138, 150, 156, 154, 144, 166, 162, 146, 168, 156, 164, 158, 164, 170, 154, 160, 172, 142, 152, 162, 160, 136, 172, 148, 140, 158, 152, 160, 154, 152, 166, 146, 160, 162, 154, 156, 174, 162, 148, 174, 158, 144, 174, 146, 160, 156, 148, 164, 134, 150, 162}, + {156, 156, 164, 152, 168, 150, 162, 156, 142, 156, 152, 148, 146, 162, 150, 144, 164, 152, 156, 164, 156, 168, 152, 162, 166, 146, 166, 164, 160, 152, 166, 160, 142, 162, 150, 152, 154, 150, 162, 140, 150, 172, 150, 154, 160, 152, 162, 166, 160, 160, 174, 158, 156, 166, 152, 158, 154, 154, 164, 138, 156, 162, 150, 144, 154, 160, 134, 166, 158, 152, 170, 158, 170, 152, 160, 168, 152, 164, 160, 154, 158, 170, 152, 142, 168, 148, 140, 164, 152, 154, 146, 162, 164, 138, 160, 166, 152, 156, 172, 162, 154, 170, 158, 158, 164, 156, 160, 156, 146, 164, 150, 158, 158, 146, 148, 160, 152, 148, 166, 164, 146, 172, 154, 156, 152, 156, 162, 140, 146, 162, 142, 140, 158, 144, 132, 150, 146, 144, 156, 150, 156, 154, 142, 166, 152, 162, 166, 146, 152, 162, 156, 146, 162, 144, 134, 160, 138, 148, 140, 144, 160, 138, 140, 158, 146, 160, 164, 162, 150, 170, 164, 140, 172, 148, 160, 152, 148, 160, 136, 154, 142, 146, 140, 146, 142, 134, 162, 136, 144, 168, 142, 160, 156, 144, 172, 148, 164, 164, 152, 162, 168, 164, 142, 170, 156, 144, 160, 152, 160, 146, 150, 150, 148, 154, 166, 152, 154, 158, 154, 152, 164, 160, 160, 172, 152, 164, 158, 154, 160, 144, 152, 164, 140, 152, 162, 148, 138, 162, 158, 142, 162, 156, 150, 162, 154, 166, 160, 154, 174, 156, 152, 168, 160, 142, 160, 158, 146, 168, 144, 154, 158, 150, 158, 146, 154, 164, 138, 162, 168, 158, 154, 170, 160, 146, 172, 158, 154, 160, 162, 158, 142, 160, 166, 140, 150, 160, 146, 140, 166, 148, 144, 168, 152, 154, 162, 160, 164, 156, 162, 166, 150, 154, 156, 156, 148, 170, 158, 136, 160, 146, 146, 162, 152, 158, 146, 150, 174, 148, 162, 174, 150, 154, 164, 158, 158, 160, 160, 154, 162, 146, 160, 142, 156, 168, 136, 152, 154, 148, 154, 162, 154, 150, 172, 158, 154, 158, 160, 172, 152, 158, 166, 142, 166, 154, 152, 152, 152, 154, 138, 166}, + {166, 166, 162, 168, 156, 156, 152, 160, 160, 148, 172, 138, 152, 152, 146, 164, 144, 162, 150, 160, 154, 158, 164, 154, 176, 156, 156, 178, 154, 158, 156, 146, 162, 140, 158, 150, 152, 146, 150, 158, 144, 160, 150, 150, 164, 148, 164, 160, 162, 162, 154, 162, 168, 154, 162, 160, 148, 148, 158, 154, 148, 160, 140, 152, 154, 148, 162, 146, 156, 162, 144, 164, 164, 166, 154, 174, 158, 152, 170, 152, 142, 156, 152, 158, 144, 156, 158, 142, 144, 160, 152, 146, 160, 162, 150, 164, 156, 166, 168, 156, 164, 158, 158, 160, 150, 160, 158, 154, 144, 158, 152, 138, 160, 152, 148, 154, 152, 168, 150, 154, 172, 144, 156, 164, 162, 144, 164, 152, 148, 152, 140, 140, 150, 138, 152, 142, 144, 152, 142, 148, 158, 160, 150, 162, 154, 154, 174, 152, 154, 164, 146, 160, 148, 144, 158, 132, 146, 150, 142, 144, 144, 156, 140, 152, 150, 156, 158, 146, 158, 156, 162, 166, 148, 156, 158, 160, 154, 150, 146, 140, 160, 134, 144, 150, 144, 150, 140, 152, 156, 150, 160, 156, 160, 162, 156, 164, 150, 176, 152, 158, 174, 146, 168, 152, 158, 158, 138, 154, 156, 150, 146, 156, 148, 142, 168, 146, 152, 162, 154, 168, 158, 164, 164, 152, 164, 166, 162, 154, 166, 152, 150, 164, 150, 148, 158, 148, 162, 142, 154, 162, 148, 154, 168, 148, 160, 170, 156, 162, 172, 154, 160, 164, 150, 162, 156, 148, 164, 142, 156, 152, 152, 140, 160, 150, 138, 168, 162, 144, 166, 156, 170, 160, 164, 174, 154, 160, 162, 150, 152, 162, 154, 142, 160, 148, 146, 160, 150, 156, 150, 152, 172, 144, 160, 158, 164, 152, 168, 164, 152, 176, 158, 156, 166, 150, 158, 156, 142, 158, 148, 156, 156, 142, 146, 164, 156, 146, 158, 158, 154, 174, 158, 162, 162, 162, 166, 162, 152, 164, 150, 158, 154, 158, 142, 156, 158, 146, 158, 150, 156, 160, 142, 168, 146, 166, 172, 156, 156, 166, 174, 148, 172, 154, 154, 170, 146, 158, 156, 152, 154, 138}, + {160, 162, 154, 162, 172, 146, 158, 160, 144, 158, 140, 158, 154, 152, 152, 150, 150, 154, 158, 148, 162, 160, 154, 164, 154, 160, 156, 162, 164, 160, 156, 168, 154, 158, 142, 170, 144, 150, 164, 134, 158, 154, 152, 162, 150, 164, 158, 164, 160, 170, 160, 154, 168, 154, 156, 162, 156, 162, 162, 148, 150, 154, 152, 162, 150, 150, 156, 150, 150, 168, 154, 156, 170, 148, 166, 156, 160, 172, 152, 166, 170, 150, 154, 162, 150, 142, 158, 146, 154, 160, 148, 154, 150, 158, 162, 150, 166, 164, 160, 156, 168, 160, 150, 176, 156, 142, 170, 140, 166, 148, 146, 154, 144, 156, 156, 154, 150, 158, 158, 150, 160, 160, 160, 160, 146, 166, 150, 144, 152, 140, 150, 142, 150, 140, 150, 142, 138, 156, 144, 150, 164, 144, 162, 156, 148, 164, 154, 158, 158, 146, 152, 158, 156, 140, 148, 148, 146, 146, 138, 150, 144, 138, 152, 144, 154, 146, 164, 154, 158, 152, 160, 162, 158, 152, 160, 148, 156, 158, 140, 146, 150, 146, 146, 142, 140, 156, 142, 140, 146, 150, 156, 160, 152, 156, 168, 152, 164, 156, 160, 158, 160, 166, 156, 160, 152, 162, 164, 152, 166, 144, 148, 160, 142, 154, 150, 160, 156, 160, 156, 156, 164, 152, 172, 158, 156, 174, 150, 164, 160, 154, 158, 146, 154, 150, 150, 150, 146, 154, 148, 158, 152, 152, 164, 156, 154, 164, 154, 162, 158, 166, 160, 162, 160, 158, 152, 152, 164, 146, 150, 160, 142, 158, 160, 142, 168, 148, 156, 164, 150, 158, 162, 156, 154, 162, 158, 158, 166, 162, 154, 164, 148, 162, 146, 154, 148, 148, 146, 156, 152, 144, 160, 160, 150, 174, 148, 164, 164, 156, 164, 152, 160, 160, 152, 156, 166, 154, 150, 156, 146, 152, 160, 152, 154, 152, 150, 164, 152, 152, 162, 148, 162, 170, 160, 156, 166, 162, 154, 166, 146, 156, 162, 142, 154, 148, 142, 156, 148, 156, 150, 158, 152, 158, 156, 158, 166, 156, 166, 160, 150, 170, 156, 152, 158, 148, 156, 156, 152, 144, 154, 154}, + {160, 166, 164, 156, 158, 164, 154, 160, 148, 156, 150, 158, 150, 140, 158, 160, 148, 158, 154, 164, 152, 166, 160, 166, 168, 156, 162, 156, 162, 164, 152, 150, 162, 152, 158, 146, 154, 144, 150, 154, 154, 152, 152, 158, 158, 152, 160, 160, 158, 168, 152, 164, 156, 166, 162, 158, 158, 152, 146, 158, 152, 150, 150, 154, 142, 158, 156, 150, 156, 148, 162, 160, 158, 164, 164, 164, 158, 160, 164, 148, 158, 152, 156, 158, 152, 152, 152, 154, 152, 152, 150, 158, 156, 148, 162, 150, 162, 166, 154, 166, 166, 154, 172, 160, 152, 166, 152, 158, 152, 154, 148, 156, 148, 146, 156, 148, 154, 158, 156, 158, 162, 154, 156, 158, 158, 158, 156, 152, 152, 150, 144, 154, 130, 150, 146, 138, 148, 148, 148, 148, 152, 152, 154, 158, 162, 162, 154, 156, 164, 158, 158, 156, 148, 152, 152, 134, 146, 140, 148, 138, 148, 142, 144, 150, 148, 164, 136, 158, 158, 150, 162, 162, 156, 160, 158, 154, 152, 150, 148, 148, 142, 136, 148, 134, 156, 142, 138, 154, 152, 148, 152, 156, 160, 150, 156, 160, 160, 160, 168, 170, 150, 164, 170, 148, 162, 152, 144, 152, 152, 148, 154, 150, 154, 152, 150, 152, 160, 150, 162, 162, 156, 170, 154, 156, 162, 160, 164, 156, 150, 160, 158, 158, 152, 160, 148, 152, 160, 140, 156, 154, 150, 158, 150, 158, 158, 164, 166, 164, 160, 156, 168, 148, 154, 162, 150, 158, 152, 152, 146, 148, 158, 150, 150, 150, 156, 154, 152, 160, 154, 164, 166, 154, 166, 162, 160, 166, 156, 154, 154, 150, 158, 156, 156, 150, 156, 144, 150, 158, 146, 164, 156, 152, 158, 158, 162, 166, 162, 156, 168, 164, 160, 164, 152, 156, 154, 146, 164, 148, 150, 144, 152, 150, 146, 158, 152, 158, 160, 162, 158, 160, 162, 162, 156, 168, 160, 154, 162, 152, 156, 152, 158, 154, 160, 148, 150, 156, 146, 158, 158, 146, 164, 158, 148, 164, 162, 164, 154, 164, 162, 158, 166, 160, 160, 154, 158, 154, 146, 160, 152, 142}, + {164, 158, 162, 164, 152, 164, 160, 148, 168, 156, 150, 146, 158, 148, 142, 154, 152, 146, 158, 152, 160, 142, 168, 158, 150, 168, 170, 160, 156, 168, 160, 150, 158, 154, 154, 148, 158, 152, 146, 158, 156, 140, 162, 150, 150, 156, 160, 156, 158, 158, 172, 160, 162, 162, 162, 146, 154, 162, 152, 160, 152, 148, 148, 158, 148, 146, 154, 156, 160, 160, 158, 156, 152, 164, 166, 148, 168, 166, 152, 164, 154, 154, 158, 152, 150, 154, 144, 154, 156, 142, 154, 156, 146, 164, 156, 154, 158, 166, 162, 158, 154, 170, 158, 156, 158, 158, 148, 160, 158, 146, 158, 154, 146, 158, 144, 156, 148, 156, 152, 156, 158, 160, 166, 150, 154, 160, 146, 162, 154, 140, 146, 146, 148, 142, 150, 138, 152, 142, 146, 154, 144, 164, 156, 146, 166, 162, 160, 150, 158, 150, 150, 164, 150, 148, 148, 152, 144, 142, 142, 154, 138, 150, 142, 146, 156, 156, 156, 156, 166, 158, 162, 164, 152, 160, 150, 158, 150, 148, 152, 152, 136, 150, 146, 150, 132, 152, 144, 142, 146, 156, 152, 150, 150, 164, 150, 170, 160, 160, 156, 166, 170, 154, 166, 160, 152, 162, 152, 158, 144, 164, 148, 144, 158, 156, 146, 152, 158, 154, 148, 160, 162, 158, 164, 164, 160, 158, 166, 172, 146, 158, 154, 150, 156, 156, 152, 138, 150, 162, 144, 154, 152, 158, 156, 160, 152, 154, 164, 160, 156, 168, 166, 162, 162, 156, 160, 162, 152, 158, 156, 142, 154, 156, 146, 154, 162, 144, 156, 154, 154, 164, 166, 162, 164, 160, 162, 160, 168, 152, 164, 150, 158, 158, 146, 150, 156, 152, 152, 150, 152, 148, 154, 154, 158, 150, 162, 168, 152, 164, 166, 154, 170, 162, 156, 154, 158, 158, 142, 164, 152, 154, 146, 154, 156, 144, 160, 154, 146, 152, 168, 152, 158, 172, 156, 158, 168, 160, 156, 166, 156, 162, 142, 152, 152, 144, 156, 152, 154, 144, 160, 154, 150, 164, 162, 156, 158, 156, 164, 154, 162, 162, 156, 160, 164, 148, 152, 156, 158, 144, 152, 154}, + {164, 152, 160, 164, 160, 148, 166, 154, 152, 158, 158, 150, 144, 160, 158, 146, 162, 160, 144, 160, 158, 158, 156, 170, 168, 146, 160, 168, 154, 158, 162, 160, 142, 160, 158, 148, 150, 158, 146, 140, 158, 160, 144, 170, 156, 164, 144, 174, 166, 148, 168, 158, 154, 164, 168, 160, 150, 154, 156, 144, 162, 150, 154, 138, 160, 152, 148, 156, 152, 146, 160, 164, 164, 148, 172, 164, 156, 162, 160, 158, 164, 156, 156, 146, 160, 154, 148, 148, 156, 156, 142, 160, 154, 148, 158, 164, 154, 158, 170, 158, 154, 158, 166, 158, 150, 168, 156, 148, 160, 158, 142, 148, 158, 146, 156, 152, 156, 144, 162, 156, 152, 162, 162, 160, 156, 156, 162, 142, 154, 158, 138, 144, 150, 138, 138, 154, 142, 140, 148, 154, 148, 146, 160, 154, 144, 162, 168, 162, 156, 164, 164, 136, 162, 156, 138, 148, 148, 146, 140, 144, 146, 140, 152, 148, 140, 150, 152, 152, 146, 162, 158, 154, 166, 162, 152, 152, 164, 152, 142, 150, 158, 144, 142, 142, 150, 132, 152, 148, 142, 154, 158, 152, 156, 158, 162, 150, 168, 158, 158, 158, 160, 162, 152, 164, 156, 144, 162, 166, 148, 144, 162, 146, 140, 156, 162, 146, 162, 160, 166, 144, 160, 170, 144, 172, 166, 154, 154, 164, 164, 148, 166, 146, 150, 154, 156, 154, 140, 152, 160, 140, 166, 156, 148, 156, 174, 156, 156, 170, 162, 156, 156, 162, 162, 148, 154, 154, 142, 160, 154, 154, 142, 162, 152, 142, 158, 164, 150, 156, 164, 150, 148, 170, 158, 154, 168, 164, 154, 160, 162, 156, 148, 154, 156, 148, 146, 154, 154, 148, 152, 158, 146, 156, 158, 156, 160, 166, 168, 152, 160, 164, 152, 156, 164, 154, 148, 162, 158, 144, 156, 152, 144, 152, 158, 152, 142, 162, 160, 150, 156, 166, 160, 154, 166, 162, 156, 168, 160, 146, 160, 158, 156, 154, 152, 152, 148, 154, 150, 152, 140, 162, 156, 144, 160, 164, 162, 162, 168, 166, 152, 170, 166, 146, 158, 158, 160, 146, 156, 160, 148, 150}, + {174, 166, 152, 164, 168, 162, 142, 164, 166, 140, 154, 152, 146, 142, 156, 152, 136, 158, 164, 142, 160, 164, 160, 152, 166, 158, 160, 164, 174, 156, 152, 166, 158, 146, 164, 160, 142, 148, 156, 146, 148, 152, 158, 130, 164, 158, 154, 148, 174, 166, 142, 176, 166, 152, 164, 162, 164, 150, 164, 160, 134, 160, 152, 148, 144, 164, 154, 138, 168, 160, 148, 160, 160, 164, 150, 162, 168, 144, 170, 166, 152, 152, 164, 160, 142, 162, 154, 148, 142, 156, 160, 138, 162, 162, 144, 160, 164, 150, 160, 170, 158, 154, 166, 170, 152, 156, 158, 152, 146, 164, 150, 150, 156, 148, 140, 152, 156, 158, 148, 162, 166, 148, 162, 164, 158, 148, 158, 160, 140, 148, 156, 136, 146, 154, 148, 130, 152, 144, 142, 144, 162, 150, 154, 164, 158, 140, 170, 158, 148, 158, 160, 162, 140, 160, 148, 136, 148, 144, 144, 138, 152, 146, 140, 148, 158, 146, 158, 164, 152, 150, 164, 166, 152, 162, 156, 152, 152, 160, 156, 134, 144, 146, 142, 144, 154, 144, 130, 156, 152, 132, 162, 154, 154, 152, 150, 168, 152, 168, 166, 158, 162, 170, 158, 150, 170, 156, 148, 156, 162, 146, 148, 162, 146, 144, 156, 160, 140, 160, 158, 156, 150, 172, 170, 142, 162, 172, 152, 164, 162, 164, 146, 166, 154, 146, 156, 156, 144, 150, 150, 164, 140, 162, 160, 156, 150, 172, 164, 150, 170, 168, 150, 166, 174, 156, 154, 162, 162, 142, 160, 148, 150, 140, 158, 158, 134, 158, 156, 152, 158, 168, 164, 154, 170, 162, 146, 170, 168, 154, 160, 156, 164, 144, 162, 154, 148, 154, 154, 148, 144, 164, 158, 150, 162, 166, 148, 152, 174, 162, 158, 168, 164, 156, 156, 170, 158, 150, 156, 160, 138, 156, 158, 142, 148, 158, 158, 148, 158, 160, 150, 166, 166, 164, 156, 174, 160, 150, 162, 170, 154, 152, 164, 146, 146, 166, 152, 142, 154, 154, 152, 148, 158, 158, 146, 160, 164, 152, 160, 166, 164, 154, 162, 170, 146, 162, 154, 154, 148, 162, 146, 144}, + {150, 170, 162, 152, 164, 168, 158, 146, 156, 168, 140, 166, 162, 142, 146, 154, 158, 140, 160, 160, 146, 154, 162, 164, 146, 180, 160, 146, 162, 170, 156, 152, 156, 158, 142, 156, 154, 152, 150, 162, 146, 148, 164, 166, 142, 160, 164, 154, 156, 170, 160, 152, 160, 168, 146, 158, 164, 154, 144, 162, 164, 140, 156, 162, 142, 146, 154, 162, 146, 156, 160, 148, 164, 170, 162, 160, 168, 172, 144, 168, 166, 148, 152, 162, 156, 136, 160, 158, 144, 152, 156, 156, 146, 156, 160, 148, 164, 172, 152, 158, 166, 164, 154, 160, 164, 148, 166, 158, 154, 144, 164, 154, 134, 158, 158, 146, 152, 156, 162, 144, 162, 160, 148, 162, 160, 150, 152, 160, 162, 136, 150, 156, 136, 136, 152, 144, 134, 156, 140, 138, 156, 160, 140, 144, 166, 170, 142, 174, 162, 148, 152, 158, 156, 144, 156, 150, 132, 154, 148, 140, 140, 152, 148, 134, 152, 160, 138, 154, 162, 160, 146, 170, 154, 144, 162, 156, 148, 150, 156, 152, 134, 152, 148, 126, 146, 148, 148, 138, 150, 158, 142, 160, 156, 152, 156, 170, 162, 144, 172, 166, 146, 164, 164, 158, 150, 160, 162, 144, 156, 150, 146, 144, 170, 150, 134, 160, 162, 142, 158, 166, 158, 156, 162, 168, 158, 160, 166, 150, 154, 162, 160, 138, 166, 160, 136, 152, 164, 144, 148, 150, 154, 140, 158, 156, 154, 154, 176, 158, 142, 172, 166, 150, 156, 166, 150, 152, 164, 154, 138, 160, 156, 140, 148, 162, 160, 142, 168, 160, 140, 156, 164, 160, 150, 166, 172, 144, 162, 168, 150, 158, 152, 158, 144, 160, 150, 146, 152, 156, 156, 140, 160, 158, 142, 162, 166, 158, 160, 164, 162, 144, 170, 166, 144, 156, 160, 156, 146, 158, 158, 136, 154, 160, 140, 154, 154, 150, 146, 162, 160, 152, 168, 160, 166, 150, 172, 162, 152, 160, 156, 144, 154, 164, 154, 138, 154, 162, 136, 158, 156, 144, 160, 158, 160, 142, 174, 156, 154, 162, 168, 158, 150, 170, 164, 140, 170, 146, 150, 148, 158, 148}, + {170, 144, 178, 164, 146, 164, 164, 152, 150, 158, 154, 138, 156, 156, 142, 146, 154, 164, 134, 162, 166, 138, 162, 168, 162, 150, 168, 168, 146, 168, 162, 156, 154, 164, 160, 136, 166, 148, 138, 154, 156, 152, 140, 154, 158, 144, 164, 160, 158, 150, 176, 166, 146, 172, 178, 142, 154, 170, 148, 142, 160, 154, 140, 150, 152, 144, 158, 154, 156, 140, 166, 166, 142, 172, 162, 154, 160, 158, 166, 150, 158, 158, 152, 152, 160, 160, 132, 162, 156, 138, 152, 160, 142, 160, 166, 156, 138, 168, 166, 150, 166, 174, 164, 150, 176, 156, 138, 166, 154, 152, 148, 154, 156, 134, 150, 162, 144, 156, 156, 162, 148, 164, 168, 154, 158, 166, 146, 152, 152, 164, 134, 150, 146, 140, 144, 148, 150, 134, 160, 154, 128, 160, 164, 164, 150, 154, 162, 146, 166, 160, 148, 156, 158, 154, 134, 162, 148, 136, 152, 156, 136, 136, 156, 142, 136, 160, 154, 144, 156, 164, 156, 154, 170, 166, 140, 164, 168, 146, 152, 156, 148, 134, 152, 150, 136, 150, 142, 146, 134, 154, 158, 136, 166, 162, 148, 152, 162, 168, 154, 168, 168, 146, 166, 170, 160, 148, 162, 164, 134, 170, 154, 146, 142, 160, 158, 140, 166, 154, 154, 156, 158, 158, 150, 170, 168, 144, 180, 162, 158, 154, 158, 158, 140, 156, 158, 148, 146, 160, 146, 150, 164, 162, 140, 166, 166, 150, 154, 170, 168, 152, 160, 170, 148, 164, 160, 154, 142, 168, 158, 134, 162, 160, 140, 150, 156, 156, 142, 166, 156, 150, 166, 164, 162, 156, 172, 168, 150, 166, 166, 148, 162, 160, 152, 138, 158, 154, 134, 156, 154, 150, 150, 156, 160, 142, 162, 172, 148, 164, 170, 166, 152, 166, 170, 140, 158, 156, 158, 144, 164, 160, 136, 154, 162, 138, 162, 156, 160, 148, 164, 158, 146, 170, 162, 154, 158, 176, 166, 146, 174, 158, 150, 154, 164, 150, 142, 158, 148, 140, 158, 158, 142, 144, 174, 162, 150, 172, 166, 150, 162, 180, 156, 160, 160, 162, 136, 168, 162, 148, 154, 156}, + {166, 162, 150, 166, 164, 148, 160, 164, 156, 148, 164, 162, 136, 156, 166, 142, 150, 156, 152, 146, 156, 164, 142, 166, 156, 164, 148, 174, 168, 140, 168, 170, 144, 160, 150, 166, 134, 168, 150, 140, 158, 150, 154, 148, 160, 168, 138, 174, 168, 150, 160, 166, 162, 150, 160, 166, 152, 156, 162, 158, 140, 166, 162, 126, 168, 152, 140, 150, 158, 166, 136, 166, 158, 148, 164, 168, 158, 156, 172, 170, 144, 170, 156, 152, 156, 160, 148, 138, 156, 154, 138, 156, 164, 148, 144, 166, 166, 140, 176, 164, 146, 160, 168, 162, 150, 162, 162, 144, 166, 156, 148, 148, 156, 158, 138, 164, 162, 142, 160, 154, 148, 154, 164, 162, 142, 168, 160, 148, 152, 154, 148, 132, 156, 154, 128, 148, 148, 146, 130, 150, 156, 138, 154, 156, 154, 154, 164, 174, 140, 172, 164, 146, 162, 154, 152, 138, 146, 148, 132, 144, 144, 144, 140, 154, 154, 134, 166, 164, 138, 158, 170, 154, 156, 162, 156, 146, 160, 156, 142, 140, 154, 150, 132, 150, 158, 122, 156, 158, 138, 142, 162, 156, 136, 158, 164, 148, 170, 160, 166, 144, 168, 172, 138, 164, 164, 152, 154, 156, 162, 130, 160, 152, 144, 150, 152, 158, 132, 168, 162, 140, 170, 162, 156, 160, 156, 168, 142, 172, 160, 152, 158, 160, 162, 144, 160, 154, 134, 162, 156, 146, 146, 160, 162, 138, 172, 152, 154, 154, 170, 164, 144, 172, 174, 142, 166, 162, 150, 146, 162, 154, 136, 150, 150, 146, 152, 152, 162, 142, 168, 160, 142, 170, 162, 156, 152, 166, 162, 150, 162, 162, 144, 160, 158, 162, 138, 160, 162, 130, 158, 160, 150, 158, 162, 156, 144, 166, 162, 142, 168, 162, 162, 152, 178, 162, 144, 170, 154, 148, 150, 150, 156, 140, 158, 156, 138, 156, 160, 158, 142, 164, 172, 142, 174, 164, 156, 154, 164, 166, 136, 164, 158, 144, 144, 162, 154, 138, 164, 164, 130, 162, 166, 150, 150, 156, 158, 152, 172, 162, 150, 160, 164, 156, 150, 164, 168, 136, 162, 166, 134, 150}, + {162, 162, 170, 144, 178, 174, 140, 162, 164, 150, 146, 166, 148, 142, 152, 144, 148, 150, 160, 162, 142, 166, 170, 142, 174, 172, 152, 158, 172, 156, 148, 162, 164, 146, 160, 148, 164, 136, 160, 166, 128, 164, 160, 142, 148, 162, 158, 134, 180, 160, 154, 164, 162, 168, 152, 164, 166, 140, 162, 162, 142, 148, 156, 154, 136, 160, 154, 150, 158, 150, 172, 146, 166, 170, 146, 168, 160, 154, 160, 164, 170, 146, 164, 152, 148, 152, 156, 160, 136, 164, 162, 128, 160, 158, 152, 154, 160, 162, 152, 166, 164, 150, 164, 166, 166, 148, 170, 160, 138, 164, 164, 144, 150, 148, 160, 136, 154, 156, 144, 158, 168, 162, 148, 176, 166, 134, 168, 156, 150, 158, 154, 140, 138, 146, 146, 132, 146, 148, 148, 134, 162, 164, 136, 170, 152, 146, 164, 150, 172, 144, 162, 156, 138, 162, 152, 146, 140, 150, 152, 128, 160, 146, 136, 142, 152, 148, 136, 164, 158, 142, 154, 162, 170, 144, 168, 168, 138, 166, 162, 148, 148, 148, 144, 136, 148, 152, 132, 142, 142, 146, 140, 162, 166, 136, 164, 164, 146, 166, 172, 158, 156, 166, 166, 150, 166, 158, 154, 154, 158, 162, 136, 158, 162, 136, 160, 156, 148, 140, 166, 162, 138, 170, 160, 158, 158, 166, 180, 140, 168, 166, 142, 168, 148, 158, 144, 160, 152, 136, 160, 148, 150, 150, 158, 166, 140, 170, 178, 152, 164, 166, 164, 148, 164, 168, 144, 160, 162, 152, 148, 156, 164, 132, 164, 154, 142, 160, 152, 160, 146, 160, 166, 150, 170, 166, 156, 160, 166, 170, 140, 170, 164, 142, 158, 156, 152, 142, 150, 160, 142, 154, 156, 148, 142, 166, 172, 138, 178, 176, 140, 172, 166, 160, 148, 164, 158, 140, 166, 150, 146, 148, 158, 154, 130, 164, 168, 138, 166, 160, 152, 160, 162, 164, 146, 176, 164, 156, 160, 162, 166, 138, 174, 154, 138, 164, 156, 146, 140, 156, 160, 136, 160, 154, 148, 154, 168, 164, 142, 176, 176, 144, 172, 168, 160, 148, 160, 160, 142, 158, 154, 148}, + {146, 166, 164, 158, 146, 170, 168, 142, 156, 162, 150, 142, 160, 164, 128, 172, 156, 138, 158, 152, 158, 138, 162, 164, 146, 170, 160, 166, 150, 172, 176, 142, 168, 162, 144, 162, 156, 152, 144, 148, 154, 138, 158, 150, 154, 146, 168, 168, 138, 176, 166, 148, 168, 166, 156, 158, 162, 162, 148, 162, 158, 148, 146, 154, 158, 134, 158, 160, 138, 168, 148, 156, 154, 160, 170, 146, 172, 162, 156, 156, 164, 164, 142, 170, 162, 140, 158, 154, 154, 136, 154, 160, 138, 162, 156, 158, 148, 160, 170, 136, 178, 172, 142, 174, 166, 156, 146, 160, 162, 144, 154, 152, 146, 150, 154, 158, 136, 170, 162, 132, 160, 162, 154, 154, 162, 164, 144, 164, 156, 142, 142, 162, 150, 130, 158, 152, 126, 156, 152, 134, 136, 160, 158, 138, 164, 162, 144, 162, 166, 162, 144, 172, 164, 130, 170, 150, 136, 144, 154, 146, 122, 158, 142, 146, 144, 150, 164, 134, 164, 166, 138, 170, 162, 154, 150, 162, 154, 140, 158, 156, 134, 148, 144, 148, 132, 148, 154, 130, 158, 152, 144, 146, 156, 162, 138, 168, 164, 148, 162, 164, 166, 142, 174, 170, 140, 164, 164, 144, 150, 156, 158, 138, 154, 148, 142, 154, 160, 160, 140, 158, 170, 140, 176, 162, 162, 164, 156, 168, 144, 164, 160, 142, 162, 152, 154, 136, 160, 166, 130, 164, 160, 142, 158, 156, 156, 144, 162, 156, 150, 164, 154, 168, 148, 168, 166, 142, 170, 162, 142, 158, 146, 156, 136, 156, 160, 138, 162, 148, 168, 148, 156, 172, 142, 172, 162, 156, 162, 168, 170, 138, 160, 162, 148, 148, 154, 156, 134, 162, 160, 132, 164, 154, 148, 154, 156, 168, 150, 160, 170, 144, 162, 166, 162, 150, 170, 160, 138, 176, 160, 142, 158, 154, 150, 138, 158, 158, 140, 152, 164, 150, 154, 172, 168, 134, 174, 170, 150, 170, 160, 154, 144, 166, 164, 128, 156, 152, 148, 150, 156, 168, 130, 168, 166, 146, 158, 168, 166, 148, 160, 162, 148, 164, 160, 158, 154, 156, 166, 134, 170, 158}, + {166, 148, 162, 170, 166, 146, 172, 164, 146, 174, 156, 144, 150, 160, 152, 128, 158, 154, 146, 160, 156, 166, 146, 162, 172, 138, 174, 164, 150, 166, 162, 168, 138, 164, 162, 144, 152, 154, 154, 136, 160, 166, 128, 170, 152, 156, 146, 160, 162, 148, 172, 156, 152, 162, 162, 164, 146, 158, 164, 132, 168, 160, 144, 152, 158, 152, 138, 158, 160, 136, 162, 154, 166, 150, 168, 178, 140, 174, 166, 152, 162, 164, 154, 142, 162, 148, 146, 154, 146, 154, 146, 152, 164, 134, 168, 160, 144, 162, 166, 164, 158, 160, 174, 140, 164, 162, 162, 150, 154, 168, 132, 168, 156, 142, 154, 152, 156, 132, 160, 170, 144, 166, 154, 166, 150, 162, 164, 140, 166, 156, 138, 148, 150, 142, 130, 148, 144, 138, 144, 150, 154, 142, 156, 166, 134, 172, 162, 152, 168, 160, 158, 142, 158, 160, 134, 156, 150, 140, 140, 154, 150, 126, 156, 148, 134, 158, 154, 144, 148, 164, 166, 134, 174, 162, 156, 144, 166, 166, 136, 168, 154, 132, 160, 144, 142, 140, 146, 144, 134, 150, 148, 158, 154, 150, 172, 142, 168, 170, 144, 172, 162, 156, 156, 164, 168, 150, 156, 160, 156, 144, 158, 164, 126, 168, 160, 136, 160, 148, 166, 154, 158, 164, 148, 168, 154, 158, 152, 168, 180, 144, 172, 162, 136, 166, 170, 142, 146, 150, 152, 138, 154, 160, 148, 146, 166, 170, 140, 176, 170, 144, 180, 160, 162, 150, 162, 158, 140, 160, 150, 146, 152, 152, 164, 134, 160, 164, 134, 164, 158, 146, 162, 162, 164, 144, 176, 158, 152, 156, 158, 170, 144, 162, 158, 138, 166, 158, 142, 142, 154, 168, 132, 170, 156, 152, 152, 152, 170, 148, 170, 172, 146, 176, 164, 156, 144, 168, 158, 132, 162, 154, 138, 150, 160, 154, 140, 160, 166, 136, 166, 172, 150, 156, 168, 164, 152, 166, 158, 154, 160, 162, 160, 144, 158, 170, 138, 162, 158, 142, 152, 150, 152, 140, 162, 158, 142, 174, 158, 168, 154, 172, 180, 142, 178, 160, 146, 162, 154, 156, 136, 160}, + {174, 172, 142, 170, 162, 156, 152, 164, 160, 140, 152, 156, 150, 144, 156, 168, 138, 152, 160, 140, 166, 156, 152, 162, 156, 170, 148, 170, 164, 152, 156, 152, 174, 142, 164, 166, 134, 162, 158, 146, 144, 156, 154, 138, 156, 150, 164, 154, 158, 176, 140, 170, 170, 144, 176, 160, 166, 156, 160, 162, 140, 160, 152, 146, 150, 152, 158, 134, 168, 168, 132, 170, 160, 148, 156, 162, 164, 146, 166, 174, 154, 150, 164, 162, 142, 162, 164, 136, 168, 150, 144, 148, 154, 160, 134, 170, 160, 144, 164, 160, 164, 148, 162, 178, 146, 178, 154, 148, 152, 164, 158, 142, 156, 154, 142, 148, 152, 164, 138, 158, 166, 138, 172, 158, 156, 156, 154, 162, 136, 164, 162, 136, 150, 142, 154, 134, 152, 150, 128, 154, 148, 144, 150, 160, 166, 134, 164, 156, 154, 160, 158, 162, 146, 158, 166, 134, 158, 152, 132, 142, 154, 148, 132, 146, 148, 138, 152, 154, 162, 140, 160, 170, 140, 180, 158, 154, 160, 160, 150, 138, 150, 150, 134, 146, 140, 148, 134, 154, 158, 126, 158, 154, 140, 168, 150, 156, 154, 166, 164, 150, 166, 164, 166, 154, 162, 170, 140, 168, 160, 140, 156, 158, 148, 130, 156, 152, 142, 162, 144, 164, 146, 160, 176, 140, 180, 166, 152, 166, 158, 168, 142, 158, 166, 140, 150, 158, 150, 144, 152, 168, 130, 170, 160, 148, 156, 160, 160, 152, 170, 162, 142, 166, 166, 166, 152, 170, 160, 144, 166, 164, 138, 156, 148, 156, 136, 154, 160, 140, 158, 164, 156, 158, 162, 176, 138, 176, 170, 146, 176, 158, 150, 146, 170, 154, 130, 162, 152, 148, 144, 148, 168, 132, 166, 160, 144, 174, 158, 166, 156, 158, 168, 146, 170, 164, 162, 152, 152, 172, 136, 162, 154, 140, 156, 156, 148, 146, 158, 162, 140, 156, 160, 162, 144, 170, 170, 138, 176, 170, 144, 162, 160, 154, 150, 152, 150, 144, 146, 150, 154, 146, 154, 168, 138, 168, 160, 144, 172, 162, 154, 158, 162, 164, 144, 166, 150, 154, 152, 160, 164, 130}, + {150, 166, 156, 154, 172, 152, 180, 142, 162, 170, 138, 172, 162, 142, 158, 146, 144, 146, 158, 156, 142, 156, 154, 160, 150, 170, 176, 136, 172, 168, 150, 176, 164, 150, 150, 154, 162, 136, 156, 146, 156, 140, 154, 166, 142, 170, 158, 142, 168, 160, 160, 156, 160, 176, 146, 164, 158, 154, 148, 156, 172, 134, 170, 154, 138, 152, 152, 150, 142, 156, 168, 138, 164, 160, 166, 154, 164, 172, 142, 174, 168, 148, 170, 160, 156, 146, 158, 148, 138, 154, 152, 152, 142, 158, 168, 134, 164, 162, 146, 170, 166, 160, 158, 164, 164, 142, 168, 160, 156, 154, 154, 162, 130, 160, 162, 134, 164, 156, 146, 150, 160, 160, 138, 170, 160, 154, 154, 156, 174, 134, 158, 156, 128, 162, 140, 136, 138, 150, 146, 134, 154, 142, 150, 146, 148, 178, 142, 168, 172, 146, 172, 154, 146, 154, 158, 156, 132, 146, 148, 144, 134, 144, 152, 130, 152, 154, 138, 164, 146, 160, 154, 154, 164, 150, 162, 156, 156, 148, 150, 172, 134, 156, 150, 130, 160, 144, 134, 144, 150, 152, 134, 156, 152, 150, 148, 160, 168, 138, 172, 176, 140, 174, 158, 152, 156, 158, 160, 144, 154, 160, 152, 144, 156, 166, 144, 156, 160, 134, 174, 158, 148, 160, 162, 166, 144, 170, 160, 156, 162, 154, 166, 146, 158, 164, 134, 170, 160, 142, 148, 146, 160, 128, 162, 154, 148, 158, 154, 168, 144, 170, 180, 138, 178, 158, 154, 148, 166, 156, 140, 158, 154, 144, 148, 152, 162, 136, 164, 168, 138, 166, 156, 152, 164, 162, 164, 148, 168, 164, 152, 158, 164, 158, 146, 162, 162, 134, 166, 152, 144, 154, 154, 154, 140, 162, 156, 140, 170, 158, 166, 148, 164, 178, 136, 174, 160, 144, 168, 152, 152, 142, 158, 150, 146, 152, 144, 160, 142, 160, 170, 140, 172, 160, 150, 168, 168, 166, 144, 166, 166, 152, 156, 150, 164, 142, 158, 164, 132, 172, 152, 138, 162, 148, 162, 148, 156, 164, 148, 158, 166, 166, 150, 164, 180, 140, 176, 160, 136, 162, 148, 158}, + {170, 148, 170, 170, 146, 178, 150, 162, 158, 162, 160, 134, 154, 152, 144, 152, 150, 160, 130, 162, 158, 140, 170, 166, 150, 156, 166, 166, 150, 158, 166, 150, 158, 158, 160, 146, 162, 164, 136, 166, 150, 144, 152, 150, 158, 136, 168, 158, 142, 160, 164, 172, 146, 162, 178, 144, 180, 160, 146, 160, 148, 162, 142, 152, 156, 142, 148, 160, 160, 148, 152, 168, 138, 172, 158, 154, 162, 162, 174, 142, 164, 166, 142, 154, 150, 164, 138, 160, 162, 130, 168, 160, 138, 156, 152, 166, 146, 162, 160, 156, 158, 168, 160, 150, 168, 176, 144, 172, 158, 142, 158, 154, 158, 140, 154, 152, 144, 154, 150, 166, 142, 162, 172, 136, 178, 158, 144, 168, 152, 154, 146, 148, 150, 136, 148, 144, 156, 136, 144, 160, 130, 162, 162, 144, 168, 146, 156, 156, 160, 162, 140, 168, 154, 154, 144, 154, 160, 130, 158, 146, 126, 154, 154, 140, 142, 146, 152, 142, 162, 150, 164, 150, 158, 174, 146, 170, 158, 146, 168, 146, 154, 134, 158, 142, 130, 152, 142, 144, 138, 142, 160, 134, 170, 156, 144, 158, 164, 162, 150, 160, 166, 152, 164, 162, 168, 150, 162, 168, 140, 162, 160, 142, 158, 148, 142, 146, 156, 160, 134, 164, 156, 150, 160, 160, 176, 144, 176, 168, 148, 174, 160, 152, 150, 164, 162, 134, 154, 148, 146, 140, 158, 170, 138, 168, 166, 138, 178, 156, 162, 158, 160, 170, 142, 170, 160, 160, 150, 154, 174, 138, 160, 156, 140, 154, 152, 146, 144, 158, 162, 140, 162, 158, 164, 156, 164, 170, 144, 170, 174, 144, 168, 158, 152, 144, 160, 158, 142, 154, 148, 150, 142, 156, 172, 138, 158, 170, 146, 174, 162, 158, 162, 166, 162, 148, 166, 152, 158, 154, 154, 166, 138, 162, 154, 136, 172, 150, 142, 158, 150, 164, 138, 172, 164, 154, 162, 152, 174, 150, 166, 164, 146, 178, 148, 148, 152, 146, 150, 136, 156, 154, 150, 156, 146, 172, 144, 168, 174, 142, 176, 164, 156, 164, 158, 166, 136, 164, 158, 148, 152, 150}, + {162, 156, 152, 164, 166, 140, 166, 166, 150, 152, 156, 170, 146, 162, 156, 132, 164, 150, 158, 144, 162, 162, 142, 164, 156, 164, 152, 158, 176, 150, 172, 168, 148, 168, 154, 150, 144, 160, 150, 136, 154, 154, 148, 150, 152, 168, 138, 162, 168, 148, 174, 160, 160, 156, 162, 170, 140, 168, 162, 150, 166, 144, 166, 132, 160, 158, 136, 154, 156, 140, 158, 154, 162, 142, 168, 158, 160, 152, 156, 178, 152, 170, 166, 146, 178, 150, 146, 152, 150, 160, 130, 152, 152, 152, 154, 144, 170, 140, 164, 170, 152, 174, 158, 154, 162, 162, 164, 144, 154, 154, 152, 150, 148, 162, 136, 156, 158, 134, 168, 152, 148, 156, 156, 170, 148, 162, 158, 154, 156, 146, 168, 138, 152, 150, 130, 158, 138, 138, 152, 136, 148, 134, 148, 150, 148, 150, 164, 160, 148, 176, 176, 134, 172, 152, 146, 158, 148, 148, 138, 144, 156, 130, 140, 140, 152, 136, 150, 162, 138, 172, 152, 146, 160, 154, 164, 144, 162, 156, 146, 158, 152, 154, 136, 150, 156, 124, 164, 148, 132, 146, 152, 152, 138, 158, 160, 152, 158, 150, 174, 146, 164, 176, 138, 176, 162, 156, 164, 150, 162, 142, 158, 144, 142, 154, 152, 162, 138, 160, 170, 134, 170, 162, 150, 168, 164, 160, 146, 160, 172, 146, 158, 156, 160, 148, 150, 166, 136, 166, 156, 140, 154, 156, 156, 138, 160, 158, 142, 166, 158, 166, 154, 158, 178, 146, 176, 160, 146, 168, 142, 152, 144, 156, 150, 148, 152, 154, 154, 144, 156, 166, 142, 170, 162, 146, 168, 168, 164, 154, 158, 160, 146, 154, 148, 176, 138, 152, 160, 136, 164, 158, 138, 168, 146, 160, 156, 150, 160, 150, 162, 164, 166, 150, 164, 176, 146, 172, 158, 136, 168, 146, 154, 144, 154, 150, 140, 154, 150, 160, 142, 160, 172, 138, 176, 168, 148, 178, 158, 156, 156, 160, 156, 134, 168, 158, 154, 154, 152, 168, 132, 156, 156, 136, 170, 152, 154, 148, 168, 168, 138, 168, 162, 160, 154, 166, 178, 138, 168, 162, 140, 164}, + {162, 164, 172, 152, 164, 182, 148, 172, 160, 146, 168, 146, 154, 142, 152, 154, 140, 158, 146, 156, 144, 150, 176, 136, 174, 164, 150, 166, 164, 158, 144, 170, 162, 152, 158, 154, 170, 134, 158, 168, 132, 162, 158, 136, 162, 146, 164, 142, 156, 158, 154, 164, 160, 166, 150, 162, 180, 140, 166, 160, 140, 172, 148, 152, 146, 158, 150, 144, 152, 158, 162, 142, 152, 172, 142, 176, 162, 158, 172, 158, 156, 150, 158, 158, 140, 166, 150, 158, 152, 144, 172, 134, 160, 158, 136, 170, 160, 152, 158, 168, 160, 144, 170, 158, 166, 150, 158, 174, 142, 172, 158, 138, 168, 152, 144, 146, 148, 158, 138, 156, 158, 158, 148, 150, 176, 142, 170, 162, 138, 174, 142, 148, 144, 156, 142, 128, 152, 142, 144, 140, 144, 162, 142, 168, 158, 146, 164, 162, 156, 154, 158, 156, 144, 168, 148, 152, 146, 142, 152, 134, 148, 156, 130, 160, 150, 142, 142, 152, 154, 136, 170, 156, 156, 166, 160, 172, 138, 168, 168, 130, 168, 148, 142, 142, 148, 150, 124, 148, 148, 140, 142, 146, 164, 142, 156, 162, 140, 178, 148, 160, 160, 156, 176, 136, 174, 162, 154, 158, 150, 174, 138, 166, 156, 134, 172, 144, 150, 148, 156, 162, 138, 156, 158, 162, 152, 166, 176, 144, 168, 176, 146, 176, 152, 146, 158, 152, 156, 136, 154, 152, 146, 142, 150, 172, 140, 162, 168, 150, 176, 156, 152, 164, 164, 162, 150, 164, 154, 156, 160, 152, 170, 140, 156, 154, 136, 164, 156, 146, 160, 160, 154, 142, 170, 164, 154, 162, 156, 176, 152, 168, 170, 142, 174, 148, 146, 156, 152, 152, 142, 144, 154, 148, 154, 146, 168, 146, 168, 174, 146, 176, 154, 154, 164, 162, 160, 146, 162, 156, 144, 156, 144, 160, 136, 152, 162, 142, 172, 150, 150, 158, 158, 168, 146, 172, 156, 156, 162, 158, 178, 148, 164, 168, 136, 166, 156, 134, 158, 154, 148, 148, 150, 156, 144, 158, 156, 160, 148, 168, 180, 142, 176, 164, 152, 162, 150, 160, 146, 156, 160, 142}, + {142, 178, 160, 152, 158, 160, 166, 144, 162, 156, 152, 158, 152, 170, 134, 158, 162, 132, 166, 158, 146, 160, 150, 160, 146, 164, 162, 154, 158, 168, 170, 146, 166, 166, 142, 174, 148, 148, 158, 150, 160, 134, 148, 150, 152, 158, 144, 180, 142, 168, 168, 152, 182, 156, 156, 168, 156, 164, 148, 156, 154, 150, 148, 152, 156, 142, 156, 164, 134, 168, 154, 144, 160, 158, 168, 148, 162, 152, 158, 162, 154, 180, 144, 162, 166, 138, 170, 158, 140, 162, 142, 160, 146, 154, 150, 144, 150, 158, 164, 148, 164, 182, 142, 176, 162, 154, 170, 156, 156, 144, 164, 156, 136, 152, 152, 156, 146, 156, 164, 134, 164, 158, 152, 168, 160, 164, 144, 160, 160, 138, 158, 160, 148, 138, 152, 156, 126, 158, 146, 134, 150, 148, 148, 142, 158, 158, 142, 160, 158, 168, 148, 158, 172, 132, 172, 158, 146, 158, 144, 148, 132, 148, 140, 132, 144, 144, 154, 146, 154, 170, 136, 164, 158, 148, 170, 152, 156, 144, 152, 172, 132, 158, 140, 146, 138, 142, 160, 122, 154, 152, 134, 154, 150, 154, 148, 162, 156, 146, 170, 158, 166, 154, 158, 180, 144, 168, 160, 140, 174, 150, 154, 142, 158, 154, 134, 152, 146, 156, 144, 154, 178, 142, 168, 168, 152, 174, 152, 166, 154, 160, 158, 150, 160, 154, 166, 142, 150, 166, 138, 160, 158, 138, 172, 148, 156, 150, 156, 160, 146, 168, 164, 162, 158, 154, 174, 140, 168, 162, 134, 168, 146, 150, 148, 152, 148, 146, 148, 152, 158, 136, 166, 168, 140, 174, 168, 148, 174, 154, 156, 158, 160, 162, 140, 162, 152, 150, 144, 150, 168, 140, 154, 162, 138, 174, 152, 154, 156, 158, 168, 142, 172, 168, 160, 154, 162, 168, 140, 162, 158, 140, 170, 152, 146, 148, 148, 152, 130, 160, 160, 150, 162, 144, 178, 144, 170, 170, 142, 174, 154, 160, 148, 162, 160, 142, 156, 154, 144, 146, 150, 162, 138, 162, 162, 146, 168, 158, 152, 158, 162, 166, 144, 162, 166, 158, 158, 154, 166, 144, 158, 162}, + {168, 148, 164, 168, 164, 152, 166, 182, 148, 170, 162, 140, 164, 146, 148, 142, 154, 156, 136, 150, 152, 154, 146, 158, 172, 146, 172, 168, 150, 174, 158, 164, 158, 158, 158, 140, 164, 150, 152, 152, 142, 166, 140, 156, 160, 138, 168, 148, 154, 152, 166, 158, 144, 168, 156, 164, 158, 158, 174, 144, 166, 158, 144, 164, 146, 144, 146, 152, 154, 140, 156, 160, 158, 152, 148, 184, 148, 178, 170, 142, 180, 152, 162, 150, 162, 160, 134, 158, 152, 148, 144, 140, 166, 136, 158, 162, 144, 168, 158, 152, 166, 162, 158, 150, 162, 158, 158, 160, 160, 168, 138, 164, 162, 138, 172, 148, 140, 148, 156, 162, 142, 164, 150, 152, 160, 160, 168, 146, 158, 170, 136, 166, 150, 136, 148, 144, 146, 132, 146, 146, 138, 142, 152, 158, 140, 158, 170, 140, 176, 154, 158, 158, 160, 162, 132, 162, 152, 142, 140, 138, 162, 130, 154, 152, 138, 154, 142, 144, 160, 150, 166, 142, 156, 160, 160, 164, 158, 166, 146, 154, 174, 130, 164, 144, 136, 152, 136, 150, 136, 146, 146, 142, 154, 150, 166, 140, 160, 170, 146, 178, 158, 156, 168, 166, 164, 154, 160, 164, 140, 158, 150, 166, 140, 154, 168, 136, 168, 150, 142, 164, 150, 156, 148, 164, 158, 152, 172, 148, 178, 148, 160, 172, 138, 172, 154, 146, 164, 146, 150, 144, 152, 152, 144, 152, 148, 170, 152, 158, 174, 148, 174, 158, 148, 180, 160, 168, 144, 164, 162, 138, 158, 146, 160, 140, 154, 164, 140, 164, 152, 156, 156, 160, 166, 150, 168, 152, 158, 168, 150, 174, 152, 154, 164, 146, 172, 156, 144, 166, 140, 150, 146, 148, 156, 140, 160, 156, 154, 156, 164, 176, 140, 176, 166, 148, 172, 162, 154, 154, 162, 158, 140, 148, 146, 152, 148, 150, 172, 138, 160, 160, 140, 184, 148, 170, 156, 156, 170, 146, 172, 160, 164, 150, 152, 170, 140, 168, 160, 140, 156, 150, 148, 144, 156, 158, 146, 152, 160, 166, 152, 160, 182, 148, 172, 168, 148, 168, 154, 156, 150, 146}, + {156, 170, 148, 172, 162, 154, 172, 152, 162, 146, 156, 158, 152, 156, 150, 160, 140, 152, 164, 136, 172, 160, 142, 156, 156, 168, 150, 160, 158, 156, 160, 148, 178, 150, 160, 168, 144, 170, 160, 142, 162, 148, 148, 148, 150, 152, 146, 162, 150, 166, 154, 162, 178, 146, 172, 162, 148, 170, 152, 156, 152, 162, 152, 138, 158, 150, 156, 142, 152, 168, 136, 164, 156, 148, 170, 156, 158, 160, 154, 170, 148, 168, 164, 164, 154, 150, 170, 142, 164, 154, 138, 162, 152, 158, 142, 156, 164, 142, 156, 162, 158, 152, 160, 184, 146, 172, 166, 150, 164, 150, 160, 144, 162, 148, 138, 154, 154, 154, 142, 150, 168, 140, 168, 162, 152, 174, 160, 152, 156, 154, 164, 136, 154, 142, 148, 140, 144, 158, 130, 150, 154, 136, 156, 156, 152, 152, 156, 156, 142, 162, 160, 158, 144, 158, 168, 134, 162, 150, 134, 168, 142, 136, 136, 148, 148, 136, 152, 144, 154, 150, 146, 178, 142, 164, 172, 146, 170, 150, 148, 156, 148, 154, 138, 144, 142, 142, 140, 138, 152, 134, 154, 154, 136, 166, 148, 154, 156, 156, 164, 148, 164, 162, 154, 152, 158, 178, 146, 164, 168, 138, 168, 150, 146, 150, 146, 152, 140, 154, 152, 150, 150, 158, 166, 144, 170, 170, 144, 180, 154, 160, 164, 158, 158, 142, 164, 154, 138, 150, 152, 164, 138, 156, 162, 142, 174, 154, 148, 158, 162, 162, 146, 170, 162, 152, 158, 164, 170, 142, 162, 162, 142, 166, 154, 144, 148, 146, 156, 138, 162, 160, 150, 156, 148, 174, 142, 180, 172, 140, 178, 164, 156, 156, 162, 156, 138, 158, 152, 140, 158, 148, 158, 142, 156, 166, 142, 168, 160, 150, 162, 160, 166, 144, 164, 168, 152, 152, 160, 164, 146, 152, 164, 142, 170, 152, 144, 156, 156, 160, 138, 158, 156, 144, 164, 156, 172, 150, 162, 182, 142, 172, 160, 148, 168, 150, 150, 140, 152, 150, 146, 146, 154, 158, 140, 156, 172, 144, 174, 162, 150, 170, 156, 164, 152, 156, 162, 160, 154, 142, 174, 144}, + {164, 160, 164, 150, 162, 158, 164, 156, 158, 172, 144, 160, 158, 138, 168, 150, 144, 154, 152, 154, 138, 152, 164, 148, 160, 144, 172, 152, 168, 174, 144, 184, 146, 156, 156, 160, 158, 134, 160, 148, 146, 152, 146, 166, 142, 158, 162, 140, 168, 164, 148, 166, 160, 160, 152, 162, 162, 152, 164, 156, 158, 142, 160, 166, 134, 172, 146, 144, 156, 148, 158, 138, 162, 160, 144, 160, 160, 168, 156, 162, 174, 146, 174, 154, 146, 170, 146, 158, 142, 154, 152, 140, 148, 148, 162, 142, 154, 172, 142, 174, 164, 152, 164, 154, 166, 148, 168, 162, 152, 158, 148, 170, 138, 156, 166, 136, 164, 154, 144, 160, 156, 158, 146, 152, 162, 152, 158, 158, 158, 146, 154, 168, 134, 158, 142, 132, 148, 142, 146, 134, 148, 144, 132, 150, 152, 166, 136, 158, 174, 148, 178, 158, 156, 170, 148, 158, 142, 156, 150, 126, 148, 144, 154, 136, 140, 158, 130, 154, 156, 138, 172, 148, 156, 152, 164, 162, 142, 172, 152, 162, 146, 150, 162, 134, 160, 148, 134, 156, 146, 142, 138, 148, 152, 144, 158, 150, 160, 148, 152, 176, 148, 176, 164, 156, 172, 154, 164, 148, 162, 164, 138, 164, 148, 156, 138, 148, 168, 136, 164, 158, 150, 162, 160, 164, 158, 162, 160, 154, 168, 152, 172, 156, 156, 170, 138, 164, 160, 140, 166, 148, 148, 144, 152, 158, 132, 160, 158, 160, 160, 160, 180, 142, 172, 168, 144, 170, 154, 154, 152, 160, 152, 140, 148, 148, 152, 146, 148, 168, 138, 162, 162, 142, 180, 156, 166, 152, 160, 174, 136, 172, 160, 160, 148, 152, 174, 138, 160, 154, 140, 160, 148, 152, 154, 152, 162, 142, 158, 158, 166, 158, 156, 182, 146, 168, 172, 152, 168, 150, 154, 154, 146, 158, 136, 156, 144, 148, 142, 152, 172, 140, 164, 168, 148, 176, 162, 156, 162, 160, 168, 152, 162, 150, 154, 152, 150, 170, 138, 162, 154, 138, 166, 154, 148, 156, 152, 158, 142, 168, 164, 154, 164, 156, 174, 150, 166, 162, 144, 178, 148, 148}, + {156, 156, 166, 176, 148, 168, 166, 148, 176, 154, 156, 150, 162, 158, 132, 160, 150, 148, 138, 156, 164, 140, 156, 170, 142, 174, 162, 156, 160, 158, 166, 144, 176, 166, 156, 158, 152, 170, 138, 166, 156, 136, 158, 148, 148, 144, 160, 164, 142, 154, 162, 164, 148, 164, 178, 146, 172, 174, 146, 170, 158, 152, 152, 154, 154, 138, 154, 152, 148, 146, 154, 174, 138, 162, 168, 146, 178, 160, 156, 156, 166, 168, 142, 162, 158, 154, 156, 150, 166, 134, 164, 156, 140, 166, 154, 146, 154, 152, 154, 142, 162, 160, 164, 164, 158, 174, 146, 170, 162, 142, 180, 152, 148, 152, 150, 154, 138, 146, 148, 158, 150, 144, 174, 142, 162, 172, 148, 174, 154, 150, 156, 156, 154, 138, 150, 150, 142, 138, 140, 158, 130, 152, 160, 138, 164, 148, 154, 158, 152, 162, 148, 158, 156, 148, 156, 146, 172, 132, 152, 156, 130, 156, 144, 134, 154, 146, 148, 142, 154, 150, 148, 156, 154, 164, 152, 168, 172, 134, 172, 152, 146, 156, 144, 146, 132, 152, 148, 134, 138, 144, 154, 136, 152, 164, 134, 168, 158, 152, 166, 162, 166, 150, 170, 156, 152, 164, 164, 164, 146, 156, 164, 132, 170, 154, 144, 154, 150, 154, 136, 158, 162, 150, 154, 150, 168, 146, 166, 176, 138, 174, 162, 150, 162, 148, 168, 142, 160, 150, 140, 152, 156, 156, 140, 156, 176, 142, 162, 158, 148, 170, 156, 164, 152, 168, 168, 156, 162, 156, 162, 146, 156, 162, 140, 166, 150, 144, 156, 154, 148, 140, 162, 156, 148, 166, 152, 170, 148, 158, 184, 142, 174, 160, 146, 174, 156, 146, 148, 162, 150, 140, 150, 146, 160, 142, 150, 174, 138, 170, 166, 144, 174, 158, 164, 158, 154, 160, 154, 160, 146, 170, 142, 150, 164, 138, 170, 154, 140, 164, 152, 154, 152, 158, 164, 148, 160, 160, 162, 150, 154, 176, 142, 172, 160, 140, 166, 150, 152, 142, 152, 152, 142, 152, 148, 162, 140, 160, 170, 140, 174, 172, 148, 170, 164, 158, 160, 164, 156, 134, 164, 154}, + {158, 148, 162, 162, 160, 150, 158, 178, 144, 164, 152, 162, 144, 156, 170, 130, 166, 156, 142, 154, 152, 154, 148, 158, 158, 144, 162, 166, 168, 150, 164, 182, 140, 170, 160, 142, 170, 142, 156, 140, 154, 152, 142, 160, 152, 154, 142, 150, 172, 140, 172, 162, 156, 166, 158, 170, 150, 162, 166, 144, 156, 150, 168, 142, 154, 164, 134, 162, 154, 140, 166, 144, 162, 148, 150, 164, 154, 160, 166, 166, 146, 164, 180, 148, 170, 156, 140, 164, 148, 156, 138, 160, 148, 138, 154, 148, 166, 142, 164, 174, 146, 172, 168, 148, 174, 160, 156, 152, 158, 164, 136, 162, 150, 154, 152, 146, 170, 138, 158, 156, 138, 168, 152, 156, 160, 162, 164, 140, 162, 156, 152, 144, 152, 166, 130, 152, 146, 130, 154, 144, 144, 140, 144, 154, 138, 160, 156, 156, 156, 154, 178, 146, 168, 164, 138, 172, 148, 152, 140, 152, 148, 128, 154, 142, 140, 134, 142, 164, 136, 166, 158, 144, 164, 164, 150, 158, 164, 154, 142, 160, 154, 154, 148, 148, 152, 130, 148, 152, 132, 158, 150, 146, 148, 150, 164, 134, 162, 156, 154, 164, 152, 172, 142, 174, 172, 144, 178, 158, 150, 156, 158, 160, 138, 152, 150, 144, 146, 154, 164, 140, 160, 166, 142, 178, 152, 158, 168, 160, 170, 144, 170, 162, 152, 158, 146, 174, 136, 162, 160, 138, 158, 148, 146, 154, 148, 160, 144, 156, 158, 162, 162, 158, 170, 142, 168, 168, 142, 172, 158, 148, 156, 154, 158, 142, 158, 144, 154, 150, 158, 170, 138, 162, 166, 146, 178, 160, 160, 170, 156, 162, 150, 158, 152, 148, 148, 154, 164, 138, 156, 158, 140, 166, 150, 142, 164, 152, 164, 142, 166, 166, 150, 164, 152, 172, 152, 166, 166, 138, 174, 152, 154, 156, 148, 154, 138, 148, 156, 146, 154, 154, 162, 148, 160, 176, 144, 180, 164, 154, 170, 160, 170, 144, 162, 160, 140, 158, 148, 162, 138, 154, 166, 136, 168, 150, 154, 156, 160, 174, 148, 164, 160, 156, 160, 156, 176, 150, 158, 176, 138, 168}, + {162, 158, 160, 156, 166, 174, 144, 162, 170, 142, 168, 156, 150, 154, 150, 158, 142, 148, 156, 146, 148, 156, 162, 146, 160, 166, 144, 176, 158, 156, 156, 166, 168, 148, 164, 160, 154, 162, 144, 166, 136, 154, 164, 126, 168, 158, 146, 164, 152, 160, 142, 164, 156, 160, 164, 154, 172, 154, 166, 164, 144, 178, 150, 140, 162, 148, 156, 140, 154, 150, 146, 156, 144, 174, 146, 164, 170, 148, 176, 154, 156, 168, 158, 162, 142, 166, 154, 146, 156, 148, 162, 132, 156, 162, 140, 168, 154, 148, 154, 160, 162, 152, 160, 162, 154, 162, 158, 182, 144, 166, 164, 138, 174, 160, 134, 158, 148, 148, 148, 152, 154, 144, 152, 162, 156, 148, 168, 174, 138, 176, 154, 144, 154, 148, 148, 134, 152, 154, 134, 142, 144, 154, 136, 150, 170, 134, 170, 154, 146, 164, 152, 170, 148, 158, 158, 142, 152, 156, 150, 140, 144, 158, 124, 160, 148, 134, 146, 148, 146, 134, 162, 164, 144, 156, 164, 166, 148, 164, 176, 134, 168, 156, 144, 154, 146, 156, 138, 156, 150, 140, 144, 152, 150, 144, 154, 172, 136, 166, 160, 144, 176, 166, 160, 152, 160, 164, 144, 164, 154, 160, 150, 150, 168, 132, 166, 154, 144, 162, 156, 154, 146, 154, 158, 142, 172, 160, 164, 152, 156, 182, 144, 170, 166, 140, 176, 144, 152, 140, 156, 162, 136, 154, 150, 154, 150, 150, 170, 140, 170, 166, 148, 174, 160, 164, 154, 164, 162, 148, 152, 158, 154, 142, 154, 166, 132, 164, 154, 136, 164, 150, 154, 154, 160, 164, 146, 156, 162, 160, 156, 162, 178, 148, 174, 164, 144, 162, 150, 148, 148, 150, 150, 142, 158, 154, 154, 146, 162, 172, 140, 170, 174, 144, 176, 158, 156, 156, 158, 164, 138, 164, 152, 144, 150, 148, 164, 138, 158, 164, 136, 168, 156, 148, 150, 162, 166, 142, 164, 168, 154, 154, 162, 168, 140, 164, 166, 138, 172, 150, 146, 148, 150, 160, 132, 158, 158, 150, 156, 148, 176, 144, 170, 170, 148, 174, 158, 160, 152, 152, 166, 142}, + {138, 168, 168, 146, 168, 164, 162, 160, 170, 168, 146, 156, 152, 166, 142, 148, 164, 134, 162, 160, 136, 164, 152, 160, 148, 154, 170, 148, 164, 168, 160, 150, 162, 178, 144, 164, 158, 142, 168, 156, 152, 146, 154, 158, 134, 150, 148, 160, 146, 156, 174, 146, 176, 166, 146, 174, 162, 152, 158, 162, 162, 140, 162, 162, 144, 152, 148, 168, 132, 160, 166, 136, 170, 156, 146, 152, 164, 164, 144, 174, 164, 154, 154, 158, 176, 140, 170, 158, 136, 170, 152, 152, 146, 144, 162, 134, 156, 156, 156, 154, 154, 178, 144, 172, 168, 146, 176, 154, 164, 148, 166, 160, 132, 160, 154, 144, 148, 154, 160, 136, 168, 160, 142, 166, 164, 156, 156, 160, 156, 144, 162, 158, 150, 146, 144, 152, 130, 148, 150, 126, 162, 146, 138, 148, 148, 162, 132, 172, 156, 152, 174, 154, 170, 142, 164, 170, 134, 168, 152, 134, 146, 144, 146, 126, 152, 144, 146, 140, 154, 164, 140, 158, 174, 136, 170, 154, 160, 156, 152, 166, 140, 162, 166, 146, 158, 150, 172, 144, 158, 160, 144, 164, 160, 138, 156, 156, 164, 144, 156, 166, 154, 152, 160, 172, 148, 168, 178, 140, 174, 152, 144, 158, 154, 158, 140, 154, 148, 142, 146, 146, 168, 140, 160, 170, 144, 172, 156, 158, 170, 158, 164, 154, 158, 162, 146, 162, 152, 166, 142, 150, 164, 132, 164, 158, 142, 164, 156, 158, 148, 162, 160, 148, 170, 154, 170, 150, 166, 172, 140, 172, 158, 140, 160, 146, 152, 142, 150, 160, 138, 158, 152, 166, 144, 160, 174, 148, 178, 160, 148, 164, 160, 162, 138, 162, 156, 142, 160, 152, 154, 140, 154, 160, 134, 168, 154, 148, 158, 156, 160, 156, 166, 164, 148, 166, 168, 170, 154, 154, 168, 138, 174, 158, 140, 156, 158, 146, 144, 140, 168, 136, 158, 160, 156, 158, 160, 180, 140, 172, 166, 150, 172, 156, 160, 140, 166, 156, 138, 154, 150, 154, 142, 150, 174, 144, 162, 162, 140, 178, 150, 168, 156, 160, 156, 154, 172, 156, 162, 156, 150, 170}, + {156, 150, 158, 166, 150, 166, 154, 166, 150, 160, 168, 146, 174, 152, 142, 166, 154, 150, 138, 150, 150, 150, 158, 146, 170, 144, 158, 174, 148, 170, 164, 150, 170, 158, 166, 146, 162, 158, 140, 148, 154, 160, 142, 146, 172, 134, 174, 152, 146, 160, 152, 162, 150, 168, 166, 152, 166, 152, 170, 142, 160, 170, 136, 166, 164, 136, 158, 148, 154, 138, 148, 164, 140, 154, 166, 162, 152, 160, 178, 138, 174, 168, 152, 168, 160, 158, 140, 168, 156, 134, 158, 146, 154, 150, 150, 170, 136, 164, 162, 146, 162, 158, 164, 154, 158, 170, 138, 172, 164, 156, 150, 158, 172, 136, 168, 160, 138, 154, 156, 154, 136, 158, 168, 134, 164, 154, 162, 148, 164, 164, 134, 170, 160, 138, 152, 142, 148, 134, 152, 146, 130, 144, 154, 148, 146, 158, 174, 134, 166, 166, 142, 176, 158, 154, 146, 152, 164, 132, 152, 150, 146, 138, 154, 154, 122, 154, 150, 132, 158, 152, 150, 146, 152, 164, 144, 168, 162, 166, 152, 164, 184, 150, 170, 168, 144, 176, 146, 146, 152, 152, 148, 138, 150, 154, 148, 150, 150, 170, 138, 168, 172, 146, 176, 162, 156, 156, 160, 166, 146, 160, 162, 152, 144, 152, 166, 134, 158, 158, 136, 172, 150, 160, 150, 158, 166, 148, 172, 160, 158, 164, 158, 174, 142, 168, 166, 134, 172, 154, 140, 150, 150, 152, 134, 154, 166, 142, 148, 166, 166, 144, 178, 174, 140, 180, 160, 158, 156, 158, 170, 138, 158, 168, 140, 154, 150, 162, 138, 156, 164, 136, 168, 152, 150, 160, 168, 164, 144, 168, 170, 152, 160, 166, 174, 140, 172, 160, 138, 170, 152, 142, 146, 154, 164, 130, 156, 162, 150, 160, 156, 172, 148, 164, 174, 140, 174, 164, 156, 154, 168, 162, 136, 156, 154, 138, 142, 158, 158, 146, 160, 166, 142, 166, 164, 150, 162, 164, 170, 148, 164, 164, 150, 158, 160, 166, 136, 156, 164, 138, 166, 154, 136, 156, 152, 150, 144, 158, 164, 146, 166, 152, 168, 152, 172, 174, 134, 172, 162, 138, 170, 150}, + {164, 168, 146, 174, 172, 138, 176, 166, 158, 162, 160, 156, 144, 154, 162, 144, 148, 154, 164, 138, 160, 162, 138, 166, 154, 150, 162, 160, 168, 144, 170, 164, 152, 158, 160, 170, 138, 168, 168, 138, 166, 152, 142, 150, 146, 160, 126, 164, 158, 154, 154, 162, 170, 142, 170, 172, 140, 186, 162, 160, 158, 156, 156, 144, 156, 152, 140, 148, 152, 160, 138, 164, 168, 134, 170, 154, 152, 168, 160, 166, 148, 162, 168, 158, 154, 164, 158, 146, 162, 166, 132, 168, 150, 138, 150, 152, 160, 136, 162, 164, 144, 174, 158, 168, 148, 166, 188, 134, 178, 162, 146, 154, 158, 154, 138, 154, 156, 144, 146, 150, 162, 138, 156, 174, 136, 174, 162, 160, 162, 164, 154, 140, 162, 158, 142, 150, 136, 158, 130, 150, 158, 122, 154, 148, 140, 154, 150, 162, 138, 158, 166, 144, 156, 160, 158, 152, 154, 174, 134, 158, 148, 136, 136, 150, 148, 138, 148, 146, 138, 156, 146, 166, 144, 158, 172, 138, 178, 160, 152, 166, 160, 154, 152, 162, 156, 142, 162, 150, 158, 142, 162, 162, 134, 160, 164, 138, 162, 158, 158, 150, 162, 160, 144, 170, 164, 164, 152, 160, 168, 138, 172, 158, 142, 162, 150, 152, 146, 158, 158, 138, 160, 148, 160, 148, 162, 174, 140, 174, 164, 150, 168, 158, 168, 146, 156, 160, 136, 160, 152, 150, 144, 154, 170, 128, 164, 156, 142, 164, 156, 158, 152, 160, 172, 138, 170, 160, 160, 146, 164, 166, 140, 164, 160, 136, 160, 154, 148, 146, 152, 160, 136, 166, 158, 148, 160, 164, 172, 140, 170, 174, 146, 172, 152, 152, 142, 172, 162, 132, 156, 158, 150, 142, 148, 168, 138, 166, 162, 144, 162, 158, 166, 156, 160, 168, 144, 162, 164, 154, 146, 156, 170, 142, 162, 166, 132, 160, 156, 140, 146, 156, 160, 140, 154, 166, 156, 152, 158, 178, 140, 176, 172, 152, 164, 152, 162, 148, 156, 156, 136, 152, 158, 148, 142, 154, 174, 140, 162, 164, 144, 180, 168, 148, 156, 166, 166, 154, 164, 158, 156, 148}, + {152, 164, 154, 154, 164, 170, 150, 164, 160, 158, 150, 166, 168, 142, 162, 162, 140, 156, 148, 154, 138, 156, 158, 140, 158, 156, 154, 160, 158, 174, 142, 174, 170, 146, 172, 160, 152, 150, 156, 156, 132, 164, 154, 146, 144, 160, 168, 132, 164, 160, 142, 164, 160, 164, 160, 152, 176, 140, 162, 166, 150, 156, 156, 170, 140, 168, 156, 142, 160, 146, 152, 138, 156, 168, 132, 168, 162, 154, 152, 168, 180, 138, 170, 168, 146, 164, 164, 152, 146, 154, 156, 132, 160, 152, 152, 146, 154, 172, 140, 160, 172, 138, 170, 166, 158, 162, 152, 170, 148, 162, 156, 150, 150, 162, 160, 134, 158, 164, 128, 168, 152, 148, 160, 158, 162, 136, 162, 166, 150, 150, 162, 164, 140, 158, 156, 128, 164, 140, 142, 136, 146, 156, 136, 154, 142, 152, 150, 154, 174, 140, 172, 180, 140, 168, 158, 146, 154, 154, 158, 134, 144, 150, 144, 138, 152, 154, 126, 154, 158, 132, 166, 148, 164, 154, 156, 162, 146, 168, 162, 154, 162, 168, 170, 144, 172, 172, 134, 172, 162, 140, 144, 158, 154, 138, 154, 166, 144, 148, 160, 160, 150, 168, 180, 140, 174, 166, 158, 164, 164, 158, 140, 164, 164, 136, 152, 150, 156, 136, 156, 164, 136, 170, 164, 144, 158, 164, 168, 142, 170, 164, 148, 164, 164, 164, 150, 162, 170, 138, 168, 160, 140, 150, 142, 168, 136, 164, 166, 138, 160, 158, 166, 148, 170, 182, 132, 188, 168, 158, 156, 162, 160, 138, 154, 158, 142, 148, 154, 154, 138, 164, 170, 132, 166, 166, 152, 162, 162, 166, 148, 160, 164, 154, 166, 158, 158, 140, 158, 166, 130, 158, 156, 146, 162, 160, 152, 142, 162, 158, 144, 168, 160, 168, 150, 168, 186, 140, 174, 172, 146, 162, 148, 152, 138, 154, 160, 134, 154, 156, 156, 144, 156, 172, 142, 170, 170, 152, 168, 156, 170, 144, 164, 156, 154, 162, 148, 162, 148, 160, 164, 134, 156, 158, 140, 160, 146, 166, 148, 156, 164, 144, 156, 170, 168, 150, 168, 176, 136, 170, 156, 144}, + {154, 150, 162, 170, 148, 166, 176, 138, 174, 172, 154, 154, 154, 160, 144, 158, 156, 140, 158, 150, 156, 138, 164, 168, 134, 172, 166, 148, 160, 168, 162, 150, 168, 162, 148, 158, 166, 152, 150, 162, 164, 128, 162, 164, 144, 150, 154, 152, 142, 172, 170, 136, 168, 160, 160, 152, 166, 176, 142, 174, 168, 144, 154, 160, 158, 134, 164, 148, 140, 158, 154, 156, 144, 158, 170, 138, 164, 170, 152, 164, 156, 170, 152, 168, 168, 142, 160, 158, 154, 146, 154, 172, 124, 166, 160, 144, 154, 152, 164, 148, 158, 166, 144, 166, 164, 158, 150, 170, 172, 140, 168, 164, 148, 152, 158, 152, 142, 154, 152, 140, 160, 160, 146, 138, 160, 174, 142, 174, 166, 146, 160, 158, 158, 142, 152, 152, 132, 150, 142, 148, 134, 142, 158, 124, 160, 160, 148, 160, 154, 150, 152, 154, 170, 138, 166, 164, 146, 150, 160, 156, 132, 156, 146, 130, 152, 138, 154, 132, 148, 162, 138, 162, 150, 154, 150, 162, 178, 142, 180, 170, 144, 170, 160, 162, 144, 154, 162, 140, 146, 164, 146, 142, 156, 158, 132, 162, 160, 144, 162, 164, 150, 158, 166, 162, 148, 168, 158, 154, 152, 166, 166, 138, 162, 168, 136, 160, 154, 146, 144, 160, 152, 140, 156, 170, 144, 162, 166, 174, 140, 174, 174, 136, 172, 156, 150, 150, 156, 160, 128, 156, 160, 144, 150, 148, 164, 140, 156, 172, 140, 166, 166, 160, 156, 158, 170, 140, 164, 160, 154, 154, 154, 166, 142, 156, 162, 134, 162, 156, 144, 146, 158, 164, 140, 162, 160, 152, 158, 164, 178, 142, 168, 168, 146, 166, 160, 154, 146, 154, 164, 140, 158, 150, 140, 144, 156, 170, 138, 164, 168, 142, 166, 166, 152, 158, 154, 168, 146, 156, 160, 146, 158, 160, 160, 132, 158, 162, 132, 160, 158, 150, 152, 156, 160, 146, 162, 164, 154, 164, 156, 174, 152, 170, 168, 140, 174, 154, 144, 152, 146, 162, 132, 156, 160, 134, 158, 152, 166, 142, 166, 176, 146, 170, 164, 154, 154, 164, 172, 142, 162, 158}, + {162, 142, 168, 158, 166, 158, 168, 168, 152, 162, 162, 150, 152, 158, 166, 130, 166, 164, 134, 160, 156, 152, 142, 152, 162, 138, 156, 168, 158, 156, 162, 170, 144, 172, 178, 146, 166, 164, 146, 150, 164, 152, 136, 154, 148, 146, 144, 166, 160, 136, 158, 172, 146, 168, 176, 156, 160, 164, 164, 146, 162, 162, 148, 160, 152, 164, 132, 160, 166, 130, 160, 156, 140, 156, 158, 164, 136, 172, 166, 150, 168, 156, 166, 148, 166, 172, 142, 164, 162, 148, 150, 150, 158, 130, 154, 154, 148, 152, 152, 164, 146, 160, 178, 144, 172, 164, 160, 158, 158, 176, 144, 160, 154, 148, 150, 154, 160, 136, 164, 158, 132, 156, 166, 166, 152, 154, 164, 150, 162, 168, 144, 156, 158, 154, 138, 150, 156, 126, 152, 152, 138, 148, 142, 154, 132, 154, 158, 140, 160, 168, 156, 148, 172, 168, 134, 164, 168, 142, 150, 150, 148, 136, 150, 154, 132, 142, 144, 154, 138, 156, 164, 130, 166, 160, 146, 156, 156, 168, 148, 168, 168, 146, 166, 162, 160, 142, 162, 164, 134, 166, 164, 142, 148, 156, 156, 138, 162, 156, 150, 154, 166, 164, 146, 172, 174, 142, 178, 170, 150, 158, 156, 158, 146, 160, 156, 136, 160, 152, 154, 134, 166, 162, 138, 164, 168, 146, 164, 166, 160, 150, 166, 168, 154, 164, 166, 148, 156, 158, 166, 138, 156, 164, 136, 156, 154, 150, 148, 160, 162, 140, 172, 162, 154, 160, 162, 182, 142, 170, 164, 144, 166, 154, 152, 150, 158, 152, 132, 158, 154, 150, 146, 156, 170, 142, 166, 176, 144, 166, 158, 170, 150, 160, 178, 142, 160, 156, 158, 146, 150, 160, 128, 160, 164, 138, 162, 150, 164, 148, 160, 162, 154, 162, 170, 156, 158, 168, 172, 142, 170, 166, 142, 156, 162, 154, 146, 150, 152, 138, 154, 166, 146, 142, 162, 172, 140, 174, 170, 148, 172, 162, 164, 156, 158, 166, 138, 162, 158, 148, 150, 154, 162, 132, 158, 168, 138, 162, 164, 150, 148, 160, 170, 150, 164, 168, 158, 158, 166, 162, 142, 168}, + {154, 164, 140, 170, 160, 158, 154, 164, 168, 142, 174, 168, 152, 162, 152, 162, 140, 156, 158, 136, 154, 152, 150, 146, 160, 168, 138, 168, 162, 154, 164, 162, 164, 148, 158, 164, 148, 160, 166, 154, 142, 168, 160, 128, 162, 166, 140, 152, 158, 164, 144, 162, 158, 148, 160, 166, 156, 150, 170, 174, 144, 170, 160, 142, 158, 156, 156, 138, 150, 154, 144, 156, 164, 146, 148, 164, 170, 136, 170, 176, 154, 166, 168, 160, 152, 156, 170, 144, 162, 156, 148, 146, 156, 162, 132, 156, 164, 140, 162, 160, 154, 154, 168, 160, 140, 170, 174, 152, 158, 168, 164, 140, 166, 168, 134, 164, 150, 154, 140, 154, 162, 140, 154, 154, 152, 156, 162, 166, 142, 156, 168, 138, 164, 156, 152, 144, 154, 150, 136, 146, 146, 140, 138, 154, 154, 134, 160, 168, 136, 160, 170, 152, 158, 160, 160, 150, 152, 168, 140, 146, 152, 146, 130, 150, 156, 130, 154, 144, 142, 138, 162, 154, 138, 162, 162, 152, 166, 162, 168, 144, 170, 174, 140, 166, 170, 156, 158, 154, 164, 132, 156, 154, 140, 150, 156, 160, 136, 164, 166, 140, 166, 152, 168, 156, 162, 164, 146, 168, 166, 152, 158, 158, 158, 136, 160, 160, 134, 158, 156, 152, 148, 156, 166, 140, 162, 162, 142, 164, 168, 162, 144, 168, 170, 140, 164, 164, 152, 150, 156, 154, 136, 154, 158, 142, 156, 162, 156, 142, 162, 162, 146, 166, 176, 152, 156, 160, 172, 150, 156, 164, 142, 160, 160, 148, 138, 160, 166, 130, 158, 160, 144, 160, 158, 156, 142, 166, 168, 150, 158, 170, 158, 152, 164, 172, 140, 164, 162, 152, 156, 152, 162, 138, 152, 158, 134, 156, 158, 154, 144, 160, 176, 142, 168, 168, 158, 160, 162, 170, 142, 160, 160, 144, 150, 156, 156, 138, 166, 162, 132, 158, 164, 154, 154, 156, 168, 152, 158, 164, 148, 160, 170, 158, 148, 160, 172, 134, 162, 170, 136, 150, 152, 152, 144, 150, 160, 140, 156, 162, 154, 156, 166, 170, 140, 172, 170, 148, 160, 166, 158, 144}, + {146, 160, 174, 144, 174, 162, 162, 160, 164, 162, 142, 160, 156, 156, 154, 164, 152, 138, 156, 162, 138, 154, 168, 144, 160, 154, 166, 142, 170, 166, 144, 164, 168, 166, 156, 166, 166, 140, 158, 154, 152, 144, 156, 158, 140, 150, 156, 148, 156, 152, 160, 148, 168, 168, 148, 170, 172, 154, 160, 158, 166, 140, 162, 164, 140, 156, 156, 152, 142, 154, 158, 132, 154, 160, 160, 152, 156, 170, 146, 168, 166, 138, 166, 172, 158, 148, 164, 158, 142, 160, 170, 140, 144, 158, 154, 144, 154, 158, 138, 158, 164, 154, 148, 168, 178, 138, 166, 174, 150, 164, 162, 160, 142, 162, 162, 136, 158, 152, 148, 140, 156, 166, 140, 160, 160, 150, 158, 166, 172, 156, 158, 162, 140, 158, 158, 142, 128, 150, 154, 124, 154, 150, 136, 142, 150, 152, 140, 158, 164, 146, 154, 166, 162, 146, 174, 164, 142, 158, 164, 148, 146, 156, 144, 134, 148, 148, 138, 146, 150, 142, 142, 164, 168, 136, 162, 168, 144, 160, 166, 164, 154, 158, 172, 146, 166, 156, 150, 150, 166, 160, 138, 162, 162, 140, 152, 162, 154, 146, 154, 166, 146, 174, 164, 156, 154, 174, 166, 152, 162, 168, 144, 162, 158, 158, 150, 156, 154, 136, 156, 154, 148, 154, 152, 164, 146, 162, 172, 152, 166, 170, 160, 156, 158, 182, 130, 164, 156, 156, 148, 162, 152, 138, 158, 168, 132, 152, 160, 166, 148, 168, 158, 146, 168, 168, 150, 160, 164, 170, 146, 166, 162, 140, 160, 164, 148, 142, 158, 148, 144, 154, 162, 142, 146, 170, 168, 142, 170, 176, 150, 162, 174, 158, 164, 158, 154, 146, 162, 154, 142, 152, 152, 158, 134, 156, 164, 138, 162, 164, 152, 152, 168, 158, 154, 172, 168, 152, 158, 166, 164, 140, 166, 164, 140, 158, 154, 154, 146, 156, 160, 140, 158, 154, 150, 160, 154, 168, 152, 168, 176, 150, 166, 166, 162, 152, 158, 162, 140, 152, 162, 148, 146, 162, 148, 144, 160, 166, 138, 158, 170, 150, 152, 166, 170, 156, 162, 174, 152, 164, 158, 164}, + {158, 144, 162, 162, 144, 172, 168, 152, 158, 174, 166, 152, 160, 164, 144, 156, 160, 150, 146, 150, 152, 142, 156, 156, 142, 158, 160, 158, 140, 174, 172, 156, 162, 172, 156, 158, 160, 162, 150, 162, 160, 150, 152, 156, 148, 142, 154, 164, 136, 164, 160, 154, 148, 170, 162, 144, 170, 164, 152, 164, 164, 166, 142, 162, 162, 144, 154, 164, 146, 144, 158, 166, 144, 154, 154, 152, 156, 158, 162, 148, 166, 182, 142, 164, 174, 156, 150, 162, 164, 144, 154, 158, 146, 150, 154, 154, 140, 162, 162, 146, 160, 166, 158, 150, 166, 160, 156, 166, 162, 152, 158, 162, 154, 146, 160, 168, 140, 148, 166, 146, 148, 150, 160, 140, 166, 150, 150, 158, 162, 158, 146, 160, 162, 138, 156, 160, 144, 146, 144, 152, 128, 152, 152, 134, 150, 154, 158, 142, 160, 162, 142, 162, 162, 160, 152, 154, 164, 136, 156, 154, 142, 142, 150, 146, 134, 148, 150, 136, 150, 150, 150, 146, 154, 162, 146, 162, 158, 162, 158, 168, 160, 154, 164, 172, 142, 162, 168, 146, 150, 162, 158, 140, 146, 162, 138, 150, 156, 158, 148, 158, 166, 142, 170, 162, 158, 156, 168, 162, 154, 154, 160, 150, 156, 156, 148, 142, 158, 158, 138, 154, 166, 138, 164, 160, 160, 146, 162, 166, 146, 162, 178, 152, 160, 162, 174, 144, 164, 150, 150, 142, 166, 150, 142, 146, 162, 146, 156, 156, 150, 150, 164, 166, 148, 160, 176, 148, 162, 168, 168, 146, 162, 168, 140, 154, 160, 150, 144, 162, 154, 136, 158, 162, 150, 152, 152, 166, 150, 164, 160, 150, 164, 166, 160, 150, 172, 158, 146, 158, 166, 144, 144, 158, 148, 146, 158, 166, 136, 160, 164, 150, 148, 174, 168, 142, 162, 178, 148, 166, 162, 162, 148, 158, 156, 142, 154, 152, 144, 144, 158, 164, 136, 160, 162, 148, 156, 168, 160, 156, 156, 166, 144, 172, 162, 158, 146, 162, 162, 136, 156, 162, 140, 150, 154, 158, 142, 156, 160, 150, 158, 160, 164, 156, 168, 158, 144, 166, 170, 146, 156, 156}, + {162, 156, 150, 156, 178, 140, 164, 166, 156, 156, 172, 164, 138, 164, 156, 150, 154, 162, 150, 142, 164, 150, 140, 160, 164, 148, 154, 168, 158, 154, 162, 164, 152, 164, 166, 152, 146, 168, 160, 148, 156, 156, 146, 146, 164, 154, 148, 152, 158, 142, 158, 162, 148, 158, 168, 162, 144, 176, 170, 154, 166, 160, 158, 146, 158, 156, 144, 154, 164, 146, 144, 148, 162, 144, 162, 160, 154, 158, 166, 168, 146, 158, 168, 156, 162, 170, 162, 150, 156, 164, 138, 162, 152, 144, 150, 156, 154, 138, 154, 166, 144, 160, 162, 160, 156, 172, 164, 148, 168, 172, 162, 158, 160, 160, 146, 154, 156, 146, 150, 158, 144, 152, 158, 160, 144, 172, 162, 154, 160, 166, 154, 154, 154, 160, 140, 146, 160, 138, 142, 146, 150, 128, 144, 162, 130, 150, 154, 154, 152, 160, 160, 146, 172, 166, 148, 160, 154, 168, 146, 160, 150, 140, 136, 154, 138, 142, 148, 148, 136, 156, 150, 144, 156, 156, 164, 142, 160, 170, 150, 166, 162, 166, 154, 164, 172, 142, 158, 162, 150, 152, 150, 154, 140, 160, 160, 144, 152, 162, 156, 146, 158, 164, 152, 174, 166, 154, 158, 168, 160, 154, 160, 166, 144, 156, 160, 152, 144, 154, 156, 144, 154, 160, 144, 148, 164, 156, 150, 172, 166, 158, 158, 170, 158, 158, 158, 160, 146, 156, 164, 146, 148, 160, 150, 142, 158, 158, 140, 160, 164, 154, 146, 168, 164, 154, 168, 170, 150, 160, 162, 160, 142, 154, 164, 140, 162, 150, 150, 146, 158, 154, 138, 160, 158, 160, 160, 166, 156, 150, 166, 168, 148, 164, 168, 160, 150, 162, 162, 144, 154, 154, 148, 148, 158, 150, 140, 156, 164, 148, 158, 164, 156, 152, 174, 160, 152, 162, 166, 142, 162, 162, 154, 150, 162, 160, 142, 148, 166, 144, 148, 150, 158, 146, 158, 162, 154, 160, 164, 164, 158, 162, 176, 148, 156, 166, 154, 156, 160, 156, 146, 154, 156, 134, 156, 154, 154, 144, 162, 162, 142, 162, 166, 158, 162, 164, 176, 150, 168, 172, 148, 162}, + {154, 164, 150, 156, 160, 166, 156, 166, 172, 150, 160, 162, 162, 146, 158, 160, 142, 152, 152, 150, 144, 154, 162, 134, 156, 160, 150, 156, 158, 166, 158, 168, 168, 150, 166, 172, 160, 148, 158, 160, 144, 160, 154, 146, 148, 156, 148, 142, 164, 158, 152, 160, 160, 150, 164, 160, 166, 154, 158, 170, 154, 160, 160, 158, 154, 160, 154, 150, 144, 154, 154, 154, 154, 154, 142, 156, 158, 148, 164, 166, 164, 156, 162, 166, 156, 158, 158, 158, 150, 156, 162, 140, 160, 156, 136, 152, 156, 160, 148, 156, 156, 150, 158, 166, 156, 154, 164, 170, 148, 162, 166, 146, 162, 156, 152, 152, 154, 148, 150, 148, 158, 148, 154, 160, 158, 142, 158, 160, 154, 158, 162, 150, 164, 154, 160, 142, 148, 154, 140, 140, 154, 154, 138, 144, 148, 134, 156, 160, 148, 152, 164, 164, 148, 158, 170, 146, 160, 154, 160, 142, 150, 152, 148, 144, 150, 148, 136, 150, 148, 134, 146, 156, 146, 156, 162, 160, 146, 170, 166, 148, 170, 164, 168, 156, 162, 162, 148, 154, 164, 150, 152, 154, 154, 146, 152, 160, 144, 154, 158, 150, 158, 156, 168, 148, 168, 164, 152, 160, 172, 158, 152, 156, 162, 144, 158, 154, 150, 146, 156, 148, 144, 154, 164, 152, 154, 160, 160, 152, 164, 162, 156, 162, 166, 154, 160, 158, 166, 160, 152, 156, 150, 148, 156, 152, 148, 150, 158, 142, 160, 156, 162, 158, 170, 162, 150, 164, 176, 156, 166, 164, 162, 154, 158, 158, 136, 160, 156, 140, 154, 154, 164, 144, 162, 150, 156, 152, 172, 170, 152, 164, 172, 154, 166, 168, 156, 156, 152, 162, 140, 160, 156, 144, 150, 158, 164, 144, 150, 164, 150, 160, 160, 158, 156, 172, 158, 160, 166, 170, 162, 160, 164, 156, 144, 154, 162, 142, 156, 150, 142, 158, 158, 154, 150, 162, 168, 150, 156, 166, 162, 156, 168, 164, 162, 156, 158, 146, 156, 162, 156, 144, 160, 164, 144, 148, 156, 156, 150, 156, 166, 144, 162, 164, 154, 160, 156, 166, 156, 160, 160, 152}, + {148, 160, 156, 154, 162, 164, 164, 154, 158, 168, 154, 162, 154, 164, 150, 158, 164, 140, 168, 152, 152, 150, 154, 160, 146, 160, 156, 154, 150, 170, 164, 154, 164, 168, 148, 166, 166, 152, 162, 154, 156, 150, 150, 154, 152, 146, 162, 152, 142, 158, 158, 146, 170, 154, 152, 166, 166, 160, 156, 156, 166, 158, 156, 150, 162, 148, 158, 152, 146, 156, 152, 140, 158, 152, 152, 164, 158, 162, 154, 158, 162, 168, 152, 162, 166, 160, 160, 158, 156, 152, 160, 154, 144, 152, 162, 146, 150, 146, 162, 148, 160, 164, 144, 162, 170, 156, 162, 160, 166, 162, 158, 154, 160, 146, 162, 154, 150, 154, 158, 144, 148, 162, 146, 152, 154, 162, 150, 164, 164, 150, 160, 152, 162, 140, 154, 158, 142, 146, 148, 140, 142, 148, 136, 148, 152, 148, 140, 154, 162, 152, 150, 156, 162, 154, 156, 158, 148, 162, 152, 156, 144, 150, 146, 140, 140, 140, 150, 142, 152, 144, 146, 154, 156, 146, 160, 156, 162, 148, 162, 166, 158, 160, 162, 168, 152, 162, 162, 154, 152, 158, 146, 154, 154, 146, 150, 152, 156, 148, 158, 164, 154, 156, 164, 164, 154, 170, 158, 156, 164, 166, 156, 158, 154, 160, 154, 152, 156, 148, 148, 158, 160, 138, 154, 160, 156, 158, 156, 158, 160, 164, 170, 152, 168, 168, 156, 154, 154, 160, 144, 160, 150, 144, 154, 154, 144, 158, 150, 156, 160, 160, 150, 156, 152, 166, 164, 156, 158, 162, 148, 162, 148, 156, 152, 162, 156, 150, 150, 156, 148, 152, 148, 166, 140, 162, 154, 150, 162, 162, 164, 156, 156, 156, 158, 158, 154, 162, 154, 154, 156, 144, 158, 154, 144, 148, 148, 150, 156, 150, 156, 156, 162, 160, 160, 156, 164, 170, 140, 166, 158, 148, 150, 158, 158, 152, 158, 148, 152, 154, 148, 148, 156, 156, 154, 152, 152, 160, 156, 170, 160, 162, 164, 162, 156, 152, 162, 162, 148, 148, 156, 152, 138, 152, 152, 148, 158, 154, 154, 158, 160, 162, 160, 158, 166, 156, 166, 162, 164, 156, 158, 162}, + {152, 154, 162, 150, 162, 156, 166, 166, 156, 174, 164, 150, 170, 152, 164, 154, 152, 162, 140, 152, 150, 152, 152, 148, 158, 150, 164, 154, 156, 164, 156, 164, 164, 158, 168, 156, 166, 154, 156, 154, 160, 154, 150, 160, 144, 148, 150, 156, 150, 158, 150, 158, 154, 164, 160, 162, 160, 168, 172, 156, 170, 164, 150, 160, 150, 154, 158, 156, 148, 148, 158, 150, 148, 148, 158, 158, 152, 160, 158, 156, 166, 158, 164, 164, 160, 158, 162, 152, 148, 168, 144, 154, 164, 144, 154, 148, 152, 162, 144, 152, 166, 158, 156, 160, 168, 160, 166, 156, 156, 172, 156, 162, 160, 152, 158, 154, 156, 148, 150, 152, 152, 144, 152, 160, 152, 154, 166, 148, 164, 166, 156, 160, 152, 158, 154, 154, 148, 148, 146, 140, 146, 138, 150, 148, 142, 150, 154, 146, 150, 156, 160, 156, 158, 162, 166, 158, 158, 154, 156, 154, 156, 142, 152, 146, 142, 152, 136, 142, 152, 148, 140, 150, 158, 156, 144, 160, 152, 166, 152, 164, 172, 150, 174, 156, 156, 156, 160, 158, 156, 150, 156, 148, 146, 164, 154, 142, 162, 158, 144, 162, 150, 160, 164, 158, 164, 164, 166, 160, 158, 158, 156, 160, 150, 156, 150, 144, 158, 156, 142, 158, 146, 160, 158, 154, 150, 160, 160, 160, 168, 152, 166, 168, 150, 170, 162, 150, 164, 152, 162, 154, 158, 148, 148, 150, 150, 154, 146, 158, 154, 150, 170, 156, 164, 166, 162, 162, 162, 164, 164, 160, 160, 146, 174, 146, 158, 156, 140, 156, 154, 144, 154, 146, 158, 168, 154, 158, 160, 162, 156, 172, 150, 172, 162, 162, 162, 154, 148, 164, 154, 156, 150, 154, 148, 154, 156, 146, 164, 150, 164, 162, 142, 166, 162, 172, 160, 160, 164, 164, 166, 158, 164, 150, 156, 154, 140, 162, 144, 152, 154, 156, 144, 162, 156, 160, 154, 160, 158, 154, 168, 164, 164, 154, 164, 174, 150, 162, 160, 158, 158, 152, 154, 150, 150, 156, 148, 156, 152, 152, 152, 160, 156, 164, 160, 162, 154, 172, 158, 160, 160, 164}, + {170, 154, 144, 172, 150, 162, 162, 160, 154, 160, 170, 154, 156, 160, 152, 164, 148, 154, 160, 148, 152, 148, 148, 156, 148, 152, 156, 156, 156, 156, 164, 154, 172, 152, 166, 158, 154, 168, 152, 158, 154, 154, 150, 150, 160, 144, 156, 150, 150, 158, 146, 164, 158, 150, 168, 160, 152, 166, 154, 160, 166, 162, 148, 166, 160, 150, 164, 138, 164, 152, 144, 158, 156, 150, 162, 148, 156, 164, 154, 160, 162, 162, 158, 166, 160, 162, 164, 156, 164, 148, 158, 158, 142, 148, 152, 156, 142, 154, 158, 144, 160, 146, 164, 158, 148, 174, 152, 162, 174, 152, 158, 164, 160, 154, 164, 160, 140, 166, 142, 148, 154, 150, 162, 146, 148, 164, 152, 156, 162, 158, 154, 166, 156, 150, 156, 142, 152, 148, 136, 156, 142, 150, 150, 136, 142, 152, 140, 154, 156, 156, 154, 158, 148, 166, 156, 152, 156, 162, 144, 160, 146, 148, 148, 146, 144, 150, 152, 136, 140, 142, 150, 154, 140, 166, 160, 148, 166, 152, 160, 168, 156, 156, 160, 168, 156, 164, 150, 162, 162, 150, 156, 154, 152, 152, 142, 152, 154, 154, 152, 152, 168, 148, 162, 156, 156, 172, 150, 168, 152, 162, 164, 152, 164, 158, 158, 158, 148, 150, 148, 156, 150, 148, 156, 150, 162, 154, 148, 164, 156, 160, 164, 154, 162, 164, 166, 148, 166, 148, 150, 158, 146, 158, 156, 146, 154, 148, 156, 158, 152, 150, 156, 158, 150, 168, 154, 166, 164, 156, 168, 156, 158, 164, 144, 156, 158, 148, 150, 158, 148, 152, 156, 154, 150, 158, 152, 164, 156, 152, 172, 150, 164, 162, 160, 162, 168, 160, 144, 164, 152, 150, 158, 144, 160, 148, 144, 166, 144, 150, 156, 156, 154, 162, 156, 152, 162, 156, 160, 164, 152, 162, 154, 156, 158, 156, 158, 154, 150, 146, 154, 150, 152, 150, 152, 156, 162, 146, 168, 160, 148, 170, 156, 158, 164, 150, 158, 152, 154, 150, 158, 148, 154, 156, 142, 156, 160, 144, 158, 156, 152, 162, 156, 154, 168, 162, 160, 160, 160, 156, 160, 146}, + {150, 156, 152, 154, 162, 154, 168, 158, 168, 168, 146, 172, 160, 156, 164, 140, 156, 160, 150, 146, 158, 152, 150, 154, 154, 154, 158, 148, 170, 152, 158, 174, 150, 162, 170, 156, 162, 156, 166, 144, 168, 148, 154, 158, 142, 162, 146, 148, 160, 144, 158, 162, 152, 156, 154, 164, 154, 168, 158, 156, 168, 158, 162, 146, 152, 164, 150, 150, 150, 148, 156, 150, 150, 144, 166, 148, 152, 162, 150, 166, 160, 160, 164, 160, 162, 164, 152, 154, 164, 160, 144, 168, 152, 150, 156, 140, 168, 148, 152, 164, 146, 158, 164, 154, 162, 166, 166, 148, 168, 162, 154, 164, 154, 164, 152, 144, 166, 140, 156, 160, 146, 148, 160, 156, 144, 164, 152, 154, 168, 156, 162, 152, 158, 160, 152, 152, 154, 146, 148, 144, 148, 130, 156, 144, 142, 156, 142, 158, 156, 150, 166, 148, 168, 158, 160, 152, 172, 146, 160, 156, 156, 142, 156, 138, 146, 134, 142, 158, 140, 144, 160, 138, 154, 158, 156, 148, 160, 160, 154, 164, 156, 172, 162, 152, 176, 156, 154, 162, 146, 158, 154, 156, 148, 150, 158, 144, 152, 154, 160, 158, 148, 166, 146, 164, 172, 152, 158, 172, 166, 150, 164, 158, 144, 166, 150, 150, 152, 154, 164, 148, 144, 170, 134, 154, 160, 154, 154, 162, 172, 152, 170, 156, 166, 158, 160, 164, 144, 164, 166, 152, 154, 156, 152, 144, 158, 152, 144, 162, 152, 156, 154, 156, 172, 160, 156, 172, 148, 166, 166, 164, 146, 162, 158, 144, 166, 146, 154, 150, 152, 154, 148, 152, 164, 142, 154, 158, 158, 158, 162, 170, 148, 176, 156, 156, 156, 154, 166, 148, 150, 164, 140, 152, 152, 152, 148, 154, 158, 144, 168, 148, 164, 164, 162, 166, 154, 168, 170, 150, 164, 166, 164, 148, 166, 152, 134, 168, 152, 144, 158, 144, 164, 146, 156, 160, 148, 160, 162, 162, 158, 174, 156, 154, 170, 160, 162, 160, 154, 162, 148, 154, 164, 138, 158, 158, 142, 150, 160, 162, 148, 162, 148, 170, 160, 158, 172, 158, 158, 172, 158, 160}, + {166, 146, 160, 154, 154, 170, 148, 164, 166, 152, 164, 172, 162, 146, 166, 156, 150, 154, 150, 156, 146, 150, 162, 142, 154, 162, 150, 158, 152, 156, 154, 172, 166, 150, 172, 158, 162, 168, 148, 164, 142, 166, 154, 140, 150, 166, 150, 142, 160, 156, 136, 162, 150, 158, 164, 162, 174, 158, 156, 180, 150, 158, 166, 156, 148, 172, 154, 146, 170, 146, 146, 152, 148, 160, 138, 160, 168, 138, 158, 172, 164, 148, 176, 152, 154, 174, 160, 162, 154, 156, 166, 140, 152, 162, 144, 152, 154, 150, 140, 166, 158, 144, 170, 146, 156, 160, 156, 176, 156, 158, 174, 146, 150, 162, 156, 150, 168, 152, 138, 160, 150, 152, 156, 152, 162, 148, 148, 172, 142, 162, 160, 150, 150, 160, 152, 148, 160, 138, 144, 156, 132, 164, 132, 144, 160, 132, 146, 156, 148, 148, 162, 160, 138, 172, 160, 152, 166, 148, 166, 146, 150, 158, 136, 148, 148, 152, 134, 150, 140, 132, 158, 146, 150, 160, 146, 168, 148, 152, 176, 142, 168, 162, 154, 160, 166, 162, 150, 168, 154, 154, 158, 142, 158, 142, 150, 162, 144, 150, 158, 148, 152, 162, 160, 152, 170, 156, 168, 164, 156, 176, 154, 156, 166, 142, 164, 162, 146, 142, 156, 154, 142, 160, 158, 152, 158, 156, 170, 148, 156, 168, 154, 156, 180, 150, 156, 164, 164, 134, 170, 148, 146, 162, 144, 156, 150, 148, 160, 138, 158, 166, 152, 152, 168, 156, 150, 164, 166, 152, 166, 156, 168, 156, 158, 170, 142, 156, 160, 148, 140, 160, 152, 140, 166, 158, 148, 168, 156, 164, 160, 162, 168, 158, 166, 166, 158, 154, 168, 154, 148, 166, 148, 150, 158, 148, 162, 148, 152, 162, 144, 152, 166, 154, 154, 170, 160, 144, 166, 168, 158, 162, 150, 166, 150, 150, 176, 140, 150, 164, 140, 152, 156, 156, 146, 170, 156, 150, 170, 148, 168, 162, 162, 174, 154, 162, 166, 146, 160, 158, 156, 140, 154, 154, 140, 160, 146, 158, 156, 146, 168, 144, 162, 160, 152, 160, 170, 156, 158, 170, 158, 150}, + {134, 162, 164, 156, 148, 166, 162, 146, 174, 160, 156, 164, 156, 168, 148, 158, 172, 144, 150, 162, 146, 144, 164, 148, 144, 172, 150, 156, 162, 156, 166, 152, 162, 172, 150, 160, 172, 146, 152, 170, 152, 140, 172, 154, 154, 150, 152, 160, 148, 156, 162, 144, 158, 170, 144, 148, 168, 160, 156, 164, 166, 154, 160, 166, 160, 146, 154, 166, 132, 156, 164, 144, 146, 160, 160, 136, 158, 166, 152, 164, 154, 166, 164, 162, 178, 142, 162, 168, 148, 156, 160, 156, 150, 164, 150, 146, 154, 150, 158, 150, 156, 170, 144, 162, 172, 154, 152, 166, 162, 156, 168, 170, 152, 168, 148, 160, 146, 156, 162, 140, 148, 162, 138, 144, 164, 154, 154, 166, 160, 158, 166, 160, 162, 152, 148, 172, 140, 150, 158, 130, 148, 150, 148, 134, 148, 152, 140, 150, 152, 162, 154, 152, 170, 146, 156, 178, 142, 154, 164, 150, 146, 158, 150, 138, 156, 134, 154, 142, 148, 160, 136, 142, 164, 136, 150, 168, 158, 146, 164, 166, 150, 170, 164, 162, 164, 158, 168, 146, 158, 168, 142, 150, 162, 156, 138, 166, 146, 150, 164, 150, 158, 154, 160, 166, 154, 162, 168, 148, 160, 162, 156, 152, 168, 154, 146, 156, 152, 154, 152, 156, 158, 146, 154, 158, 148, 148, 160, 158, 150, 172, 160, 158, 168, 166, 156, 166, 152, 170, 138, 162, 166, 136, 154, 160, 146, 150, 160, 166, 138, 158, 158, 160, 162, 162, 174, 154, 156, 180, 150, 160, 160, 150, 148, 156, 158, 142, 164, 150, 148, 152, 144, 170, 136, 156, 172, 138, 154, 166, 154, 150, 178, 158, 148, 170, 158, 152, 158, 158, 162, 144, 160, 162, 140, 148, 158, 148, 144, 164, 156, 152, 166, 156, 156, 162, 162, 174, 154, 150, 176, 154, 152, 166, 146, 150, 170, 154, 138, 158, 154, 150, 152, 144, 168, 146, 152, 168, 146, 166, 176, 148, 148, 172, 152, 156, 168, 154, 158, 164, 148, 166, 150, 146, 166, 142, 150, 164, 138, 150, 160, 164, 140, 170, 162, 156, 162, 164, 174, 152, 156, 172}, + {160, 142, 160, 156, 162, 156, 166, 176, 160, 152, 180, 148, 158, 166, 156, 142, 162, 160, 144, 150, 154, 158, 152, 150, 160, 138, 154, 170, 144, 150, 172, 156, 150, 178, 162, 154, 164, 168, 162, 154, 156, 168, 142, 150, 166, 142, 144, 152, 156, 138, 166, 160, 144, 156, 168, 158, 162, 164, 172, 152, 158, 180, 146, 150, 168, 152, 144, 166, 156, 148, 154, 154, 154, 150, 156, 166, 146, 154, 168, 146, 154, 172, 148, 154, 164, 170, 154, 158, 160, 156, 156, 152, 162, 142, 152, 168, 134, 148, 168, 142, 144, 162, 160, 146, 158, 164, 160, 164, 160, 174, 148, 156, 180, 136, 160, 164, 144, 144, 172, 144, 146, 162, 162, 154, 152, 150, 168, 148, 154, 166, 150, 150, 174, 144, 154, 168, 150, 142, 152, 146, 146, 146, 148, 150, 138, 142, 158, 140, 150, 162, 144, 148, 170, 154, 152, 162, 164, 152, 160, 156, 166, 144, 152, 154, 130, 150, 156, 138, 136, 154, 144, 142, 154, 156, 152, 162, 154, 164, 154, 152, 178, 150, 160, 174, 150, 154, 166, 158, 150, 164, 160, 152, 154, 154, 158, 148, 148, 164, 138, 156, 168, 150, 144, 172, 158, 152, 166, 170, 160, 172, 172, 154, 150, 156, 168, 144, 146, 166, 144, 140, 162, 146, 146, 168, 160, 154, 160, 156, 162, 156, 164, 172, 148, 158, 178, 148, 158, 166, 152, 138, 162, 160, 148, 150, 152, 158, 150, 138, 172, 146, 154, 166, 148, 150, 166, 160, 160, 168, 168, 156, 158, 168, 164, 158, 152, 162, 142, 150, 168, 136, 146, 162, 156, 142, 158, 162, 152, 164, 170, 164, 158, 156, 182, 138, 166, 180, 140, 150, 162, 154, 138, 160, 154, 148, 154, 152, 158, 152, 154, 170, 140, 158, 170, 154, 150, 172, 158, 166, 180, 158, 152, 158, 154, 160, 146, 154, 162, 144, 146, 168, 142, 146, 168, 150, 154, 162, 156, 154, 166, 170, 162, 160, 164, 176, 152, 154, 166, 144, 152, 166, 150, 146, 154, 154, 140, 160, 162, 156, 160, 150, 172, 144, 158, 180, 146, 154, 172, 162, 154, 164}, + {144, 162, 146, 152, 164, 146, 156, 164, 160, 158, 164, 164, 162, 160, 160, 162, 158, 146, 172, 146, 152, 160, 138, 148, 158, 156, 146, 156, 162, 160, 158, 166, 164, 154, 156, 178, 150, 162, 166, 150, 146, 168, 150, 150, 152, 162, 144, 160, 150, 160, 150, 154, 170, 154, 142, 170, 154, 154, 174, 152, 158, 164, 164, 158, 156, 162, 158, 152, 150, 164, 138, 148, 168, 138, 146, 162, 156, 148, 172, 164, 156, 156, 172, 166, 164, 154, 176, 152, 152, 164, 156, 142, 166, 150, 144, 152, 164, 144, 154, 162, 160, 150, 156, 164, 156, 154, 184, 148, 154, 168, 162, 148, 166, 164, 154, 158, 160, 154, 148, 150, 162, 142, 142, 164, 140, 150, 166, 150, 150, 160, 166, 154, 154, 158, 158, 152, 154, 162, 140, 144, 160, 130, 140, 154, 144, 142, 156, 152, 142, 158, 154, 160, 152, 160, 162, 146, 158, 164, 142, 152, 160, 146, 140, 148, 152, 144, 148, 146, 142, 142, 148, 158, 140, 144, 170, 142, 150, 170, 148, 162, 166, 164, 154, 168, 170, 162, 160, 158, 160, 144, 148, 166, 140, 146, 162, 144, 148, 160, 154, 148, 160, 162, 160, 150, 166, 178, 148, 152, 174, 142, 152, 170, 154, 150, 166, 160, 146, 156, 158, 150, 150, 156, 160, 146, 152, 164, 146, 150, 176, 154, 152, 174, 162, 154, 166, 170, 152, 158, 160, 164, 154, 146, 170, 142, 148, 164, 142, 148, 166, 154, 152, 160, 170, 154, 162, 162, 166, 152, 152, 182, 146, 148, 170, 144, 148, 172, 154, 146, 152, 164, 152, 148, 156, 164, 150, 152, 170, 144, 150, 176, 148, 158, 162, 168, 152, 160, 168, 158, 156, 158, 166, 150, 152, 162, 140, 142, 166, 140, 148, 168, 158, 154, 162, 162, 160, 166, 158, 170, 148, 152, 172, 146, 156, 166, 152, 146, 160, 148, 146, 156, 156, 152, 152, 156, 160, 152, 154, 166, 150, 152, 174, 150, 154, 166, 160, 154, 158, 160, 158, 158, 156, 154, 150, 144, 162, 146, 136, 168, 144, 150, 162, 154, 158, 166, 166, 160, 162, 160, 174, 154}, + {148, 164, 156, 154, 154, 168, 156, 164, 164, 166, 154, 160, 170, 148, 160, 166, 142, 160, 154, 154, 146, 156, 162, 148, 148, 158, 154, 154, 154, 164, 150, 150, 174, 156, 156, 162, 164, 156, 158, 164, 164, 152, 158, 166, 140, 146, 166, 136, 148, 168, 144, 148, 160, 152, 162, 166, 166, 156, 160, 166, 170, 162, 154, 172, 138, 152, 170, 146, 150, 166, 148, 146, 154, 156, 154, 152, 154, 166, 146, 154, 164, 158, 156, 180, 146, 162, 166, 162, 156, 160, 158, 154, 158, 152, 162, 146, 136, 168, 142, 146, 166, 148, 148, 174, 152, 152, 164, 172, 164, 162, 158, 176, 154, 154, 166, 150, 146, 168, 144, 152, 156, 158, 146, 158, 158, 152, 162, 160, 164, 154, 158, 168, 160, 146, 166, 144, 144, 156, 142, 142, 146, 154, 144, 146, 146, 150, 146, 138, 158, 148, 154, 172, 152, 152, 164, 162, 152, 158, 164, 154, 158, 156, 156, 146, 140, 154, 136, 136, 162, 138, 142, 154, 150, 142, 156, 158, 154, 158, 158, 164, 152, 166, 162, 152, 156, 178, 146, 158, 166, 148, 160, 156, 160, 158, 148, 162, 152, 150, 154, 160, 144, 152, 164, 152, 150, 162, 164, 160, 168, 170, 160, 156, 158, 168, 152, 152, 164, 144, 152, 166, 140, 138, 164, 146, 146, 162, 160, 158, 154, 166, 164, 154, 164, 178, 146, 160, 170, 134, 152, 160, 152, 146, 160, 152, 148, 156, 154, 160, 144, 160, 162, 146, 148, 172, 154, 154, 176, 150, 166, 160, 170, 158, 152, 168, 152, 150, 156, 162, 144, 140, 162, 150, 142, 162, 148, 152, 166, 166, 154, 164, 166, 164, 164, 152, 170, 156, 146, 164, 152, 142, 166, 146, 148, 150, 160, 150, 152, 162, 154, 150, 156, 158, 156, 152, 176, 148, 160, 170, 162, 158, 160, 154, 154, 156, 156, 160, 154, 150, 160, 146, 146, 162, 146, 144, 166, 152, 154, 160, 170, 162, 158, 174, 166, 160, 160, 166, 156, 144, 172, 138, 144, 172, 138, 156, 158, 160, 154, 156, 154, 164, 156, 160, 164, 150, 160, 174, 150, 158, 164, 160}, + {160, 144, 156, 162, 156, 146, 170, 146, 158, 176, 156, 158, 164, 170, 152, 154, 160, 158, 150, 154, 162, 146, 144, 166, 144, 146, 170, 146, 156, 166, 162, 156, 154, 170, 162, 160, 164, 164, 154, 154, 160, 154, 150, 154, 156, 152, 154, 158, 150, 152, 158, 158, 154, 158, 160, 150, 150, 172, 158, 158, 164, 158, 160, 158, 162, 164, 146, 156, 164, 146, 152, 162, 146, 156, 158, 146, 154, 156, 152, 154, 160, 162, 160, 150, 168, 170, 156, 162, 168, 150, 150, 168, 150, 148, 158, 148, 166, 148, 152, 158, 150, 156, 160, 148, 164, 162, 150, 162, 162, 160, 156, 162, 158, 152, 164, 152, 154, 152, 158, 148, 150, 154, 166, 146, 144, 166, 144, 154, 164, 152, 150, 168, 146, 164, 156, 164, 156, 148, 150, 150, 144, 144, 146, 142, 144, 152, 140, 148, 156, 152, 152, 148, 158, 158, 156, 162, 162, 160, 150, 158, 152, 148, 154, 148, 140, 152, 154, 144, 142, 148, 142, 144, 146, 156, 150, 148, 168, 150, 156, 170, 156, 156, 176, 158, 162, 162, 164, 160, 152, 164, 156, 152, 150, 158, 140, 142, 156, 150, 144, 166, 156, 162, 154, 166, 154, 164, 164, 170, 152, 164, 164, 156, 156, 168, 154, 156, 160, 152, 144, 150, 160, 156, 152, 160, 156, 152, 154, 158, 158, 150, 172, 156, 156, 162, 162, 168, 158, 166, 162, 152, 154, 164, 140, 154, 158, 154, 144, 162, 148, 148, 166, 152, 162, 156, 160, 170, 154, 166, 168, 158, 154, 170, 152, 142, 162, 152, 148, 158, 146, 156, 152, 152, 162, 146, 156, 172, 148, 148, 166, 156, 162, 168, 154, 162, 176, 156, 156, 162, 160, 162, 156, 154, 156, 154, 150, 152, 152, 140, 168, 152, 148, 166, 152, 152, 166, 166, 164, 158, 166, 172, 156, 158, 158, 156, 150, 156, 146, 144, 164, 156, 148, 160, 154, 158, 152, 160, 158, 156, 162, 164, 162, 148, 166, 158, 152, 166, 154, 160, 152, 166, 152, 146, 158, 148, 148, 148, 154, 146, 154, 162, 154, 146, 170, 158, 156, 164, 166, 156, 162, 164}, + {162, 154, 150, 160, 158, 156, 160, 164, 166, 154, 162, 162, 164, 158, 166, 152, 156, 160, 154, 148, 160, 148, 158, 148, 158, 150, 144, 166, 154, 150, 158, 162, 166, 160, 168, 162, 154, 164, 166, 156, 162, 156, 160, 154, 156, 152, 144, 162, 146, 156, 154, 154, 152, 150, 170, 158, 156, 160, 166, 162, 156, 168, 164, 158, 164, 156, 158, 152, 154, 152, 154, 152, 144, 152, 146, 148, 160, 156, 158, 162, 156, 156, 168, 170, 156, 162, 154, 160, 160, 156, 166, 152, 156, 160, 148, 152, 152, 154, 154, 150, 158, 150, 162, 156, 150, 164, 166, 154, 168, 156, 168, 158, 168, 166, 148, 154, 166, 148, 148, 162, 148, 146, 154, 150, 152, 156, 158, 150, 164, 150, 168, 158, 166, 152, 158, 144, 166, 144, 140, 156, 142, 146, 150, 142, 152, 142, 146, 144, 152, 148, 154, 156, 162, 156, 158, 162, 156, 156, 156, 158, 152, 148, 156, 148, 156, 142, 150, 142, 146, 144, 162, 144, 142, 156, 152, 154, 152, 156, 156, 156, 154, 166, 154, 166, 160, 164, 158, 158, 156, 148, 160, 152, 152, 162, 154, 156, 154, 152, 160, 148, 160, 154, 156, 160, 162, 160, 152, 170, 158, 156, 164, 164, 156, 152, 156, 162, 146, 164, 160, 146, 146, 154, 150, 144, 160, 156, 152, 172, 154, 160, 158, 168, 164, 154, 170, 152, 164, 152, 156, 162, 150, 162, 158, 144, 156, 148, 154, 142, 158, 160, 150, 160, 162, 160, 156, 160, 170, 158, 164, 156, 162, 156, 152, 174, 154, 156, 164, 148, 154, 156, 146, 164, 144, 160, 150, 150, 154, 160, 154, 162, 162, 156, 164, 164, 152, 166, 162, 160, 146, 164, 146, 156, 154, 148, 156, 162, 150, 160, 150, 160, 158, 150, 158, 170, 152, 166, 158, 160, 154, 166, 158, 152, 166, 152, 156, 160, 158, 158, 146, 146, 154, 154, 152, 154, 154, 156, 160, 162, 152, 168, 154, 172, 164, 164, 160, 160, 162, 158, 158, 152, 152, 158, 152, 160, 148, 148, 164, 152, 152, 160, 152, 166, 150, 164, 164, 160, 158, 166, 164, 156}, + {150, 160, 152, 150, 156, 160, 162, 156, 158, 166, 166, 162, 162, 164, 150, 160, 160, 158, 146, 158, 150, 162, 144, 154, 146, 158, 162, 148, 154, 156, 156, 156, 156, 162, 158, 164, 164, 158, 166, 152, 160, 166, 148, 164, 152, 154, 152, 150, 154, 150, 148, 158, 154, 160, 152, 162, 154, 164, 162, 162, 162, 168, 158, 160, 152, 160, 148, 156, 158, 158, 146, 150, 162, 152, 160, 162, 150, 152, 164, 154, 158, 156, 168, 152, 164, 162, 164, 168, 156, 160, 150, 162, 160, 146, 166, 144, 154, 148, 150, 158, 144, 158, 158, 158, 160, 156, 158, 156, 172, 166, 156, 170, 166, 148, 168, 150, 158, 160, 158, 150, 154, 150, 156, 154, 156, 158, 152, 164, 150, 160, 156, 158, 156, 160, 150, 168, 154, 156, 160, 142, 148, 144, 146, 156, 140, 150, 144, 150, 144, 146, 162, 150, 152, 162, 160, 148, 162, 162, 154, 164, 158, 158, 146, 154, 144, 152, 144, 152, 140, 144, 146, 144, 148, 150, 154, 150, 160, 160, 152, 166, 164, 154, 168, 160, 172, 152, 164, 162, 154, 164, 154, 156, 148, 156, 156, 148, 156, 156, 142, 158, 154, 152, 160, 150, 160, 156, 166, 158, 168, 168, 164, 160, 158, 162, 164, 140, 168, 146, 150, 152, 156, 150, 158, 160, 144, 166, 150, 150, 164, 154, 172, 164, 162, 158, 162, 166, 160, 154, 168, 152, 162, 152, 152, 150, 156, 154, 148, 160, 158, 148, 154, 160, 158, 152, 156, 172, 150, 168, 158, 168, 162, 160, 164, 146, 160, 156, 146, 162, 150, 152, 154, 144, 162, 150, 158, 158, 160, 152, 164, 164, 160, 172, 160, 160, 164, 162, 158, 156, 164, 148, 156, 160, 154, 156, 142, 152, 152, 152, 160, 150, 156, 160, 156, 158, 166, 156, 168, 156, 170, 158, 166, 164, 150, 158, 158, 154, 148, 156, 154, 154, 156, 138, 154, 164, 154, 152, 162, 152, 156, 160, 168, 156, 166, 158, 168, 152, 156, 166, 154, 160, 160, 148, 150, 144, 158, 152, 156, 154, 152, 154, 160, 152, 164, 164, 158, 152, 162, 168, 152, 166}, + {152, 158, 150, 170, 152, 160, 154, 158, 164, 160, 156, 168, 160, 154, 170, 162, 152, 162, 162, 148, 154, 148, 162, 144, 152, 160, 144, 156, 158, 164, 152, 172, 152, 158, 162, 168, 152, 172, 160, 162, 156, 148, 160, 156, 150, 160, 152, 148, 160, 160, 144, 160, 160, 148, 158, 158, 156, 154, 164, 168, 164, 146, 168, 168, 152, 160, 162, 154, 156, 158, 148, 156, 152, 150, 154, 144, 158, 154, 148, 164, 162, 150, 166, 170, 152, 168, 170, 150, 158, 172, 152, 156, 148, 160, 148, 154, 156, 158, 146, 162, 166, 134, 166, 154, 144, 158, 168, 162, 160, 152, 166, 158, 160, 166, 154, 158, 158, 164, 146, 152, 158, 150, 154, 154, 150, 154, 154, 154, 152, 154, 168, 166, 146, 162, 162, 146, 162, 150, 144, 148, 152, 138, 148, 142, 150, 138, 148, 144, 154, 144, 154, 168, 148, 158, 158, 158, 156, 166, 156, 158, 148, 162, 146, 144, 156, 148, 146, 140, 156, 140, 148, 148, 142, 150, 152, 156, 154, 150, 164, 152, 152, 164, 162, 158, 162, 172, 150, 162, 160, 150, 162, 162, 154, 152, 152, 156, 146, 148, 164, 152, 150, 164, 160, 156, 162, 158, 156, 162, 170, 152, 162, 166, 156, 154, 146, 170, 148, 156, 166, 154, 142, 162, 156, 138, 160, 150, 160, 162, 154, 156, 148, 158, 166, 160, 154, 170, 168, 152, 156, 166, 152, 156, 166, 144, 154, 158, 160, 146, 146, 160, 150, 150, 158, 158, 156, 160, 174, 150, 172, 168, 154, 160, 156, 164, 148, 150, 166, 152, 144, 154, 164, 150, 156, 160, 142, 158, 166, 152, 156, 156, 168, 154, 158, 166, 162, 158, 164, 168, 146, 168, 154, 142, 154, 164, 146, 152, 156, 152, 144, 160, 154, 156, 152, 162, 160, 156, 168, 168, 150, 170, 158, 152, 158, 162, 162, 152, 158, 156, 144, 156, 152, 162, 148, 162, 152, 156, 154, 168, 150, 164, 162, 166, 154, 168, 156, 170, 150, 156, 160, 148, 156, 160, 152, 164, 150, 152, 152, 148, 164, 150, 150, 168, 152, 144, 166, 168, 160, 166, 170, 158}, + {146, 138, 176, 150, 144, 160, 166, 156, 164, 170, 150, 170, 172, 154, 154, 154, 164, 154, 148, 168, 152, 144, 156, 156, 148, 158, 162, 144, 160, 158, 154, 150, 164, 172, 162, 150, 172, 156, 156, 166, 160, 148, 168, 160, 146, 158, 162, 140, 150, 154, 156, 148, 150, 168, 152, 148, 174, 160, 146, 174, 168, 152, 164, 164, 156, 162, 154, 154, 156, 144, 162, 152, 138, 166, 162, 146, 160, 162, 148, 164, 164, 150, 156, 164, 166, 164, 156, 174, 154, 138, 170, 158, 152, 158, 166, 140, 154, 162, 144, 146, 156, 156, 156, 148, 170, 158, 146, 168, 170, 152, 168, 170, 150, 156, 170, 146, 162, 148, 162, 146, 154, 162, 152, 140, 160, 154, 148, 160, 168, 146, 162, 164, 154, 154, 162, 154, 150, 152, 152, 146, 142, 154, 150, 132, 152, 148, 142, 154, 152, 148, 152, 152, 156, 154, 158, 162, 156, 144, 172, 152, 150, 162, 160, 140, 152, 152, 132, 152, 146, 146, 144, 140, 158, 148, 140, 158, 162, 144, 166, 168, 146, 172, 166, 158, 160, 158, 168, 154, 158, 168, 160, 136, 172, 160, 142, 158, 164, 142, 152, 168, 140, 158, 156, 162, 152, 160, 168, 162, 148, 176, 162, 152, 170, 166, 150, 154, 166, 144, 154, 156, 154, 144, 150, 168, 150, 152, 166, 156, 144, 170, 166, 158, 158, 176, 152, 164, 164, 156, 166, 150, 156, 154, 138, 174, 150, 134, 160, 162, 144, 162, 166, 150, 158, 164, 148, 160, 154, 164, 166, 148, 174, 160, 152, 160, 160, 152, 158, 160, 152, 152, 150, 150, 150, 152, 158, 158, 138, 168, 160, 150, 164, 176, 154, 158, 178, 154, 158, 160, 154, 158, 150, 170, 156, 140, 164, 154, 138, 164, 168, 134, 164, 162, 150, 156, 162, 166, 156, 164, 170, 164, 152, 164, 164, 150, 154, 166, 142, 158, 164, 148, 154, 158, 150, 146, 162, 152, 158, 148, 170, 156, 142, 182, 166, 154, 170, 160, 156, 162, 156, 150, 150, 158, 154, 148, 144, 160, 156, 146, 154, 164, 152, 162, 168, 156, 164, 168, 158, 160, 156, 172}, + {170, 144, 150, 162, 150, 160, 158, 162, 158, 156, 170, 160, 142, 172, 170, 146, 164, 162, 150, 160, 162, 146, 154, 160, 148, 150, 150, 168, 156, 146, 162, 168, 142, 160, 174, 152, 164, 180, 152, 158, 160, 158, 162, 152, 158, 158, 136, 166, 158, 132, 172, 162, 142, 156, 166, 146, 154, 160, 166, 158, 164, 172, 160, 152, 170, 168, 144, 162, 174, 144, 156, 160, 156, 148, 148, 156, 154, 154, 160, 156, 152, 168, 162, 138, 178, 162, 158, 162, 174, 158, 152, 158, 152, 156, 146, 174, 148, 130, 172, 162, 140, 164, 164, 146, 158, 172, 156, 162, 160, 166, 160, 154, 178, 162, 144, 172, 158, 140, 166, 170, 140, 150, 166, 144, 154, 158, 154, 154, 148, 166, 156, 136, 174, 160, 142, 170, 164, 138, 152, 160, 150, 148, 146, 154, 142, 142, 154, 152, 136, 160, 154, 138, 168, 162, 150, 158, 172, 148, 160, 164, 150, 152, 154, 156, 150, 126, 170, 146, 130, 164, 150, 138, 148, 156, 146, 152, 156, 152, 156, 152, 168, 154, 150, 170, 166, 148, 176, 176, 142, 162, 162, 148, 156, 160, 148, 152, 150, 162, 158, 130, 176, 154, 144, 164, 166, 148, 166, 172, 152, 162, 174, 154, 154, 158, 156, 162, 150, 160, 156, 136, 160, 162, 146, 160, 166, 136, 162, 162, 152, 160, 158, 162, 164, 156, 170, 160, 146, 170, 164, 144, 164, 166, 144, 152, 156, 156, 156, 148, 158, 150, 148, 160, 166, 132, 174, 166, 146, 172, 172, 156, 166, 164, 158, 148, 164, 154, 160, 150, 158, 160, 136, 168, 158, 138, 160, 166, 152, 160, 162, 154, 160, 150, 170, 166, 146, 180, 162, 146, 168, 160, 144, 154, 162, 144, 156, 160, 150, 152, 142, 174, 150, 150, 166, 160, 140, 168, 168, 148, 164, 168, 156, 154, 160, 156, 160, 154, 160, 154, 144, 162, 154, 138, 164, 162, 136, 164, 166, 158, 152, 164, 168, 156, 158, 170, 154, 158, 164, 154, 140, 178, 170, 136, 160, 156, 146, 160, 152, 150, 158, 152, 158, 152, 150, 164, 162, 146, 174, 168, 150, 172}, + {148, 158, 158, 142, 172, 156, 142, 166, 170, 148, 166, 166, 164, 164, 162, 164, 158, 152, 162, 154, 142, 162, 162, 130, 166, 160, 138, 158, 166, 142, 164, 148, 162, 158, 162, 170, 164, 140, 172, 162, 146, 168, 164, 142, 160, 158, 150, 152, 162, 148, 150, 146, 158, 162, 144, 174, 166, 142, 168, 162, 150, 160, 178, 146, 164, 146, 160, 160, 142, 164, 158, 142, 160, 164, 138, 164, 164, 138, 156, 166, 146, 160, 158, 170, 162, 156, 166, 164, 144, 168, 162, 144, 168, 166, 142, 156, 166, 146, 152, 144, 162, 154, 144, 168, 154, 150, 162, 158, 148, 170, 176, 150, 162, 170, 152, 166, 158, 156, 148, 148, 156, 162, 140, 166, 160, 132, 172, 154, 146, 162, 170, 146, 160, 156, 158, 158, 144, 172, 144, 140, 150, 154, 138, 158, 160, 126, 154, 152, 142, 146, 152, 160, 158, 154, 158, 164, 148, 166, 160, 132, 174, 170, 136, 160, 160, 144, 144, 150, 144, 146, 138, 154, 142, 144, 154, 154, 142, 174, 162, 146, 162, 168, 152, 164, 162, 168, 156, 156, 166, 162, 150, 170, 160, 136, 168, 166, 140, 154, 156, 148, 154, 168, 146, 164, 154, 168, 148, 154, 174, 166, 142, 176, 156, 150, 168, 164, 148, 162, 160, 152, 148, 154, 140, 154, 144, 166, 160, 146, 172, 164, 148, 162, 170, 152, 162, 174, 158, 162, 150, 168, 156, 148, 164, 158, 142, 168, 152, 140, 160, 170, 146, 156, 154, 160, 156, 150, 170, 160, 150, 168, 164, 150, 172, 176, 138, 166, 166, 144, 158, 160, 150, 156, 144, 164, 154, 140, 164, 154, 146, 178, 162, 144, 182, 164, 154, 158, 160, 162, 156, 146, 158, 148, 152, 162, 154, 140, 166, 168, 138, 152, 170, 150, 162, 166, 152, 160, 164, 164, 168, 148, 182, 162, 144, 174, 162, 142, 168, 166, 130, 160, 156, 144, 156, 146, 162, 152, 146, 158, 164, 148, 162, 172, 144, 166, 176, 152, 160, 166, 154, 152, 154, 162, 156, 154, 156, 154, 152, 162, 160, 136, 164, 170, 142, 166, 162, 152, 164, 160, 164, 154}, + {142, 158, 156, 148, 154, 152, 158, 158, 148, 162, 164, 158, 172, 168, 150, 158, 164, 150, 160, 158, 156, 150, 152, 154, 150, 150, 160, 158, 146, 170, 162, 150, 174, 152, 152, 166, 162, 160, 172, 158, 160, 156, 154, 160, 156, 150, 168, 148, 142, 164, 160, 148, 160, 160, 152, 158, 154, 162, 162, 160, 170, 172, 148, 176, 162, 156, 162, 166, 152, 162, 160, 142, 160, 148, 156, 152, 142, 160, 160, 144, 168, 164, 150, 166, 168, 156, 162, 174, 156, 160, 162, 148, 162, 148, 158, 160, 146, 152, 158, 150, 160, 158, 148, 164, 162, 148, 152, 168, 156, 174, 144, 172, 158, 150, 172, 166, 146, 166, 166, 144, 164, 156, 146, 154, 146, 160, 150, 154, 158, 166, 146, 170, 152, 150, 164, 170, 150, 156, 166, 140, 158, 146, 134, 150, 140, 154, 148, 140, 156, 162, 136, 156, 160, 148, 164, 162, 148, 154, 168, 162, 154, 148, 158, 152, 136, 156, 150, 142, 154, 154, 142, 154, 150, 142, 156, 150, 152, 148, 150, 166, 154, 154, 160, 178, 154, 170, 168, 158, 154, 164, 152, 160, 146, 160, 152, 150, 150, 156, 146, 158, 160, 142, 160, 160, 144, 166, 166, 150, 168, 168, 156, 162, 162, 162, 152, 158, 160, 158, 144, 168, 158, 146, 170, 160, 142, 162, 154, 148, 160, 154, 158, 168, 144, 166, 168, 152, 170, 164, 150, 156, 170, 148, 160, 158, 144, 152, 152, 154, 150, 140, 164, 164, 152, 172, 162, 160, 162, 174, 148, 170, 170, 152, 166, 142, 162, 164, 142, 164, 162, 140, 160, 156, 140, 156, 162, 150, 162, 164, 148, 156, 152, 162, 164, 160, 164, 164, 150, 168, 164, 156, 166, 170, 146, 152, 162, 144, 154, 140, 156, 158, 144, 156, 160, 152, 166, 162, 150, 168, 176, 146, 164, 166, 156, 158, 150, 156, 152, 144, 172, 154, 146, 166, 158, 150, 164, 158, 148, 164, 158, 148, 168, 162, 168, 160, 156, 162, 168, 146, 170, 166, 148, 156, 164, 140, 160, 156, 144, 152, 154, 154, 160, 146, 174, 162, 152, 164, 168, 156, 180, 168}, + {152, 150, 154, 164, 158, 154, 172, 156, 158, 160, 156, 156, 162, 158, 164, 154, 160, 152, 168, 150, 164, 154, 158, 162, 152, 156, 158, 154, 152, 158, 152, 156, 162, 156, 162, 170, 158, 162, 164, 158, 164, 152, 158, 158, 156, 146, 154, 164, 142, 160, 148, 152, 160, 148, 158, 158, 162, 162, 162, 152, 172, 158, 156, 166, 160, 148, 168, 154, 158, 158, 146, 156, 158, 150, 158, 146, 162, 160, 154, 148, 164, 150, 156, 154, 164, 156, 168, 158, 166, 164, 152, 166, 156, 158, 166, 158, 144, 166, 154, 142, 154, 150, 154, 158, 154, 156, 170, 154, 164, 152, 170, 166, 166, 156, 158, 152, 162, 160, 146, 154, 152, 154, 152, 162, 148, 160, 154, 154, 162, 152, 158, 164, 156, 152, 170, 148, 152, 164, 152, 146, 152, 148, 150, 148, 150, 154, 144, 136, 156, 136, 150, 158, 150, 152, 164, 154, 154, 162, 148, 166, 154, 168, 164, 142, 152, 158, 144, 142, 158, 138, 136, 148, 142, 152, 150, 154, 154, 162, 150, 166, 158, 150, 168, 154, 156, 166, 158, 160, 166, 154, 158, 170, 148, 164, 146, 158, 166, 150, 150, 160, 154, 154, 156, 156, 150, 168, 154, 162, 164, 158, 166, 166, 164, 164, 154, 158, 160, 158, 152, 150, 146, 154, 156, 146, 160, 160, 152, 168, 156, 158, 160, 158, 162, 168, 170, 154, 168, 158, 156, 164, 150, 160, 154, 152, 160, 154, 148, 162, 156, 154, 152, 156, 148, 154, 154, 156, 156, 158, 164, 168, 156, 170, 154, 162, 166, 154, 156, 166, 134, 158, 156, 152, 150, 158, 154, 150, 164, 150, 160, 160, 160, 170, 160, 160, 170, 166, 156, 164, 154, 150, 162, 146, 150, 166, 152, 156, 166, 154, 166, 148, 158, 168, 152, 154, 160, 166, 156, 166, 148, 168, 168, 154, 168, 158, 154, 164, 158, 154, 164, 146, 146, 156, 140, 152, 152, 162, 158, 162, 152, 156, 162, 158, 168, 160, 158, 172, 152, 158, 162, 152, 152, 166, 146, 152, 158, 148, 158, 156, 152, 166, 150, 156, 166, 150, 154, 164, 160, 152, 162, 158}, + {160, 142, 160, 154, 152, 152, 156, 162, 154, 166, 170, 166, 162, 172, 164, 158, 162, 168, 152, 160, 158, 146, 150, 158, 156, 138, 156, 164, 144, 160, 162, 156, 160, 160, 164, 150, 168, 174, 158, 166, 158, 168, 146, 164, 162, 154, 158, 152, 160, 144, 160, 158, 144, 164, 160, 154, 150, 162, 158, 150, 160, 170, 160, 160, 170, 160, 154, 158, 162, 148, 160, 166, 142, 158, 158, 158, 138, 158, 166, 148, 158, 162, 162, 156, 160, 168, 162, 162, 170, 150, 158, 162, 160, 150, 152, 160, 156, 154, 158, 158, 148, 160, 166, 152, 152, 168, 148, 156, 162, 170, 148, 170, 166, 152, 162, 164, 154, 152, 164, 162, 148, 156, 158, 146, 152, 156, 158, 142, 160, 162, 150, 156, 164, 156, 144, 168, 168, 146, 162, 162, 142, 146, 160, 148, 130, 154, 146, 148, 146, 160, 150, 142, 164, 156, 154, 156, 170, 148, 154, 166, 154, 136, 166, 162, 134, 154, 148, 144, 138, 166, 158, 138, 158, 154, 138, 146, 164, 148, 154, 156, 166, 156, 156, 170, 158, 156, 168, 164, 150, 164, 166, 146, 160, 158, 160, 144, 154, 158, 146, 150, 158, 154, 154, 166, 164, 152, 158, 162, 156, 162, 178, 154, 156, 160, 162, 146, 162, 160, 152, 160, 160, 160, 140, 162, 156, 146, 158, 150, 162, 148, 170, 160, 148, 164, 162, 160, 156, 166, 160, 156, 160, 162, 150, 164, 158, 154, 148, 150, 166, 140, 156, 166, 152, 152, 162, 170, 152, 166, 176, 154, 166, 168, 160, 152, 162, 168, 148, 160, 166, 150, 146, 166, 156, 144, 150, 174, 140, 156, 162, 156, 146, 156, 164, 150, 168, 162, 160, 156, 162, 170, 150, 164, 170, 146, 142, 158, 146, 148, 158, 158, 142, 160, 162, 158, 156, 162, 164, 148, 174, 166, 158, 170, 158, 162, 148, 168, 144, 148, 166, 154, 152, 150, 166, 160, 148, 156, 164, 150, 160, 168, 160, 150, 176, 162, 154, 168, 168, 160, 154, 168, 156, 156, 162, 160, 152, 148, 162, 144, 148, 162, 150, 156, 152, 160, 156, 156, 170, 166, 156, 168}, + {156, 166, 146, 152, 168, 156, 146, 166, 156, 150, 164, 164, 162, 160, 162, 164, 152, 156, 178, 144, 158, 168, 142, 156, 158, 168, 144, 154, 170, 146, 154, 164, 160, 148, 162, 170, 144, 162, 172, 158, 146, 166, 162, 148, 158, 162, 152, 154, 154, 160, 148, 150, 174, 136, 152, 174, 156, 146, 172, 166, 152, 162, 172, 156, 160, 164, 166, 146, 164, 168, 138, 160, 170, 142, 138, 164, 158, 146, 158, 164, 156, 154, 164, 162, 148, 174, 180, 148, 152, 186, 150, 152, 174, 160, 148, 162, 152, 146, 146, 160, 158, 150, 146, 170, 148, 156, 176, 142, 154, 166, 166, 156, 168, 180, 148, 158, 166, 158, 150, 162, 172, 140, 150, 178, 144, 150, 166, 154, 148, 158, 170, 152, 150, 168, 154, 150, 160, 170, 138, 144, 168, 142, 140, 158, 148, 136, 160, 152, 144, 142, 154, 154, 136, 164, 166, 148, 156, 176, 140, 154, 168, 162, 148, 156, 168, 138, 158, 154, 150, 132, 146, 156, 128, 152, 162, 146, 138, 166, 156, 150, 166, 164, 158, 152, 176, 156, 162, 162, 170, 154, 154, 172, 146, 154, 164, 150, 146, 158, 160, 154, 154, 164, 152, 148, 156, 168, 148, 170, 162, 156, 156, 176, 162, 150, 168, 168, 152, 160, 168, 148, 148, 162, 158, 140, 150, 170, 144, 150, 168, 152, 152, 166, 170, 154, 164, 176, 160, 162, 156, 172, 140, 158, 168, 144, 152, 162, 154, 144, 158, 174, 144, 154, 168, 156, 152, 160, 164, 142, 158, 180, 146, 144, 176, 154, 156, 164, 158, 148, 154, 166, 150, 142, 166, 162, 148, 144, 176, 146, 154, 178, 156, 154, 166, 178, 152, 166, 172, 160, 156, 152, 166, 146, 148, 176, 148, 152, 170, 146, 136, 166, 158, 152, 152, 168, 156, 154, 160, 166, 144, 162, 182, 142, 148, 174, 150, 150, 172, 164, 146, 158, 162, 150, 152, 162, 154, 144, 152, 166, 146, 154, 166, 158, 156, 168, 172, 148, 160, 166, 164, 158, 156, 154, 144, 154, 170, 142, 152, 166, 146, 156, 166, 156, 150, 166, 166, 154, 158, 174, 162, 148}, + {148, 156, 158, 148, 150, 162, 164, 152, 160, 174, 142, 162, 178, 150, 154, 176, 152, 164, 156, 164, 156, 152, 160, 154, 150, 150, 164, 144, 140, 184, 138, 152, 174, 156, 152, 162, 174, 164, 154, 174, 166, 150, 154, 172, 150, 154, 178, 138, 146, 174, 144, 152, 158, 164, 154, 154, 160, 162, 154, 158, 172, 154, 156, 184, 144, 150, 172, 160, 144, 160, 160, 154, 148, 162, 162, 144, 160, 166, 144, 154, 166, 144, 150, 172, 154, 154, 160, 166, 162, 156, 160, 170, 150, 158, 170, 146, 154, 172, 140, 148, 176, 142, 154, 162, 152, 156, 160, 172, 158, 150, 166, 164, 156, 150, 180, 152, 148, 164, 152, 152, 156, 162, 150, 144, 162, 160, 156, 150, 170, 152, 150, 174, 156, 146, 178, 150, 150, 158, 160, 156, 142, 160, 160, 138, 144, 160, 138, 136, 168, 134, 146, 160, 152, 150, 154, 162, 154, 150, 168, 160, 160, 150, 170, 146, 142, 166, 142, 134, 172, 148, 142, 154, 154, 146, 146, 156, 158, 144, 160, 162, 150, 148, 174, 142, 158, 190, 144, 160, 168, 154, 162, 154, 168, 160, 156, 158, 164, 146, 152, 166, 146, 140, 178, 148, 154, 164, 164, 150, 162, 170, 168, 154, 168, 166, 152, 148, 172, 142, 152, 178, 142, 146, 174, 154, 150, 144, 172, 148, 156, 156, 160, 152, 154, 180, 142, 156, 186, 144, 162, 166, 164, 152, 160, 158, 164, 152, 148, 170, 148, 150, 172, 142, 148, 174, 150, 150, 172, 164, 160, 162, 172, 170, 156, 162, 166, 146, 160, 168, 146, 144, 174, 144, 138, 166, 152, 148, 160, 158, 164, 150, 156, 166, 152, 158, 178, 144, 150, 176, 156, 150, 170, 156, 164, 150, 154, 158, 152, 158, 164, 150, 144, 170, 152, 148, 174, 150, 160, 168, 168, 156, 164, 180, 168, 152, 160, 166, 150, 152, 166, 148, 146, 172, 142, 148, 168, 156, 152, 162, 162, 162, 148, 162, 168, 160, 152, 182, 154, 152, 174, 142, 154, 170, 154, 150, 156, 162, 154, 150, 156, 162, 136, 162, 168, 150, 142, 184, 134, 156, 176, 166}, + {162, 152, 152, 170, 148, 150, 174, 150, 148, 166, 160, 174, 160, 158, 174, 156, 154, 172, 138, 154, 168, 148, 156, 170, 134, 160, 162, 150, 158, 152, 156, 162, 156, 154, 168, 152, 160, 172, 150, 162, 172, 158, 154, 168, 146, 172, 146, 162, 158, 146, 164, 158, 142, 162, 160, 150, 150, 174, 140, 166, 162, 158, 170, 158, 164, 172, 146, 162, 164, 154, 146, 172, 148, 152, 166, 138, 154, 168, 140, 162, 162, 166, 160, 154, 158, 176, 154, 156, 176, 146, 160, 170, 140, 162, 158, 154, 156, 150, 154, 166, 144, 158, 156, 152, 156, 172, 132, 154, 178, 146, 160, 184, 146, 170, 160, 164, 166, 158, 152, 180, 144, 152, 162, 150, 152, 166, 140, 158, 160, 146, 162, 160, 150, 162, 142, 156, 168, 156, 146, 160, 144, 150, 156, 138, 150, 156, 138, 156, 142, 150, 164, 148, 148, 158, 160, 150, 172, 140, 152, 166, 150, 160, 166, 146, 156, 156, 142, 162, 144, 142, 156, 142, 142, 158, 144, 138, 162, 146, 152, 172, 144, 170, 160, 162, 176, 148, 168, 172, 154, 168, 168, 140, 156, 166, 146, 150, 164, 148, 158, 162, 154, 166, 150, 148, 168, 154, 156, 162, 152, 156, 172, 148, 162, 178, 154, 164, 166, 150, 164, 146, 168, 158, 144, 152, 164, 146, 150, 172, 146, 152, 178, 140, 166, 160, 164, 170, 158, 164, 160, 150, 158, 160, 162, 150, 168, 140, 160, 162, 138, 156, 154, 150, 164, 154, 166, 158, 154, 150, 170, 158, 154, 166, 152, 158, 174, 148, 158, 158, 166, 166, 148, 156, 170, 146, 158, 162, 148, 150, 170, 142, 166, 166, 154, 160, 170, 156, 176, 158, 160, 174, 154, 150, 170, 148, 150, 160, 146, 154, 172, 134, 164, 162, 152, 162, 156, 158, 162, 150, 154, 176, 152, 148, 164, 158, 156, 170, 152, 150, 164, 148, 152, 154, 150, 168, 152, 144, 170, 152, 154, 176, 148, 156, 178, 144, 172, 160, 164, 168, 154, 164, 162, 158, 148, 172, 150, 142, 162, 148, 148, 168, 150, 154, 168, 150, 166, 150, 170, 172, 164, 150}, + {166, 138, 164, 160, 154, 162, 152, 162, 158, 154, 162, 146, 158, 172, 164, 152, 174, 162, 152, 176, 156, 148, 164, 148, 166, 156, 140, 162, 164, 140, 162, 166, 134, 170, 164, 146, 170, 170, 152, 170, 162, 158, 160, 160, 156, 150, 152, 158, 162, 144, 154, 172, 134, 160, 166, 150, 162, 156, 166, 162, 156, 162, 158, 156, 168, 168, 146, 168, 168, 142, 166, 170, 144, 160, 146, 158, 158, 150, 160, 164, 144, 162, 160, 154, 160, 170, 148, 170, 174, 158, 156, 160, 168, 162, 156, 160, 152, 158, 156, 154, 142, 164, 164, 140, 162, 162, 156, 166, 156, 158, 168, 152, 174, 164, 148, 166, 158, 152, 164, 156, 148, 158, 164, 146, 156, 152, 156, 168, 138, 168, 162, 146, 164, 166, 146, 166, 164, 140, 176, 158, 148, 156, 152, 148, 154, 142, 156, 146, 142, 150, 150, 146, 152, 160, 140, 168, 166, 150, 156, 162, 148, 166, 150, 164, 150, 148, 148, 158, 134, 158, 158, 130, 156, 154, 140, 168, 148, 148, 150, 156, 158, 154, 156, 158, 154, 164, 158, 178, 146, 158, 168, 154, 164, 154, 160, 152, 154, 152, 154, 138, 168, 158, 140, 168, 166, 136, 170, 168, 150, 168, 158, 158, 168, 150, 158, 162, 152, 160, 154, 152, 152, 172, 138, 162, 164, 144, 164, 156, 154, 160, 148, 160, 162, 160, 162, 170, 144, 176, 168, 150, 164, 168, 148, 166, 158, 152, 162, 150, 156, 156, 148, 162, 158, 138, 168, 166, 148, 164, 168, 148, 172, 174, 156, 170, 150, 152, 166, 156, 146, 152, 154, 156, 162, 136, 158, 176, 142, 164, 158, 154, 164, 158, 162, 164, 142, 174, 166, 148, 168, 162, 150, 160, 164, 144, 164, 166, 144, 154, 154, 156, 160, 138, 164, 158, 148, 160, 174, 152, 164, 174, 152, 174, 160, 160, 170, 146, 164, 164, 156, 158, 166, 142, 156, 166, 130, 164, 164, 142, 160, 162, 146, 166, 152, 158, 164, 164, 160, 162, 154, 156, 174, 142, 170, 166, 138, 164, 162, 148, 164, 154, 164, 154, 150, 156, 162, 152, 158, 164, 148, 174}, + {154, 158, 154, 138, 166, 150, 146, 164, 170, 154, 162, 174, 156, 160, 166, 156, 154, 150, 166, 146, 150, 172, 148, 154, 158, 164, 146, 152, 166, 150, 166, 156, 160, 160, 154, 164, 156, 150, 172, 164, 152, 170, 168, 142, 168, 166, 148, 150, 178, 142, 156, 148, 170, 152, 152, 166, 158, 146, 164, 164, 148, 166, 178, 156, 168, 154, 164, 152, 152, 170, 152, 146, 162, 158, 146, 160, 162, 142, 160, 164, 150, 152, 172, 154, 154, 156, 164, 162, 152, 168, 170, 144, 164, 174, 150, 158, 168, 146, 160, 172, 146, 146, 160, 166, 148, 148, 162, 160, 148, 164, 166, 150, 166, 170, 160, 156, 164, 162, 154, 154, 166, 152, 148, 164, 156, 146, 164, 162, 144, 168, 166, 146, 172, 160, 156, 144, 158, 160, 158, 146, 164, 154, 136, 162, 148, 140, 150, 162, 142, 146, 160, 152, 148, 156, 154, 160, 146, 180, 154, 144, 168, 168, 144, 172, 156, 152, 154, 164, 136, 150, 146, 158, 144, 134, 156, 142, 146, 164, 156, 148, 160, 176, 142, 162, 176, 158, 166, 160, 170, 160, 148, 170, 150, 154, 164, 166, 146, 158, 168, 146, 152, 162, 154, 160, 146, 172, 152, 150, 174, 148, 156, 180, 164, 156, 170, 166, 148, 166, 166, 142, 158, 164, 148, 152, 144, 166, 158, 156, 164, 166, 150, 166, 166, 146, 158, 174, 156, 162, 154, 172, 152, 160, 158, 150, 150, 166, 156, 142, 168, 168, 140, 156, 164, 156, 152, 158, 168, 156, 154, 172, 158, 156, 176, 162, 150, 176, 164, 140, 172, 174, 144, 150, 158, 154, 152, 142, 166, 148, 146, 166, 166, 146, 160, 170, 158, 166, 170, 156, 156, 158, 164, 154, 154, 164, 150, 152, 166, 160, 142, 164, 166, 146, 160, 170, 146, 160, 154, 152, 160, 170, 164, 164, 146, 170, 162, 146, 168, 158, 148, 158, 160, 150, 158, 152, 162, 146, 158, 162, 166, 140, 184, 158, 156, 164, 176, 148, 168, 172, 164, 156, 158, 150, 154, 140, 174, 152, 144, 164, 156, 140, 160, 164, 152, 162, 168, 150, 164, 158, 162, 152}, + {156, 148, 168, 158, 148, 176, 154, 150, 158, 170, 146, 154, 164, 162, 170, 174, 166, 160, 154, 172, 152, 148, 168, 158, 148, 158, 158, 152, 150, 162, 154, 150, 158, 168, 158, 160, 176, 162, 156, 166, 160, 148, 162, 176, 142, 162, 164, 156, 150, 166, 156, 148, 156, 162, 152, 146, 168, 152, 148, 170, 156, 156, 160, 164, 164, 158, 174, 170, 152, 156, 164, 160, 152, 154, 158, 148, 158, 158, 150, 154, 168, 158, 152, 172, 168, 154, 156, 176, 156, 164, 168, 158, 152, 158, 156, 154, 152, 170, 150, 144, 160, 158, 148, 162, 168, 158, 148, 164, 168, 150, 164, 164, 152, 164, 172, 154, 154, 164, 162, 154, 154, 172, 158, 146, 160, 156, 142, 162, 164, 142, 154, 174, 144, 152, 158, 170, 154, 164, 158, 150, 140, 160, 150, 146, 154, 146, 148, 140, 156, 146, 146, 150, 152, 150, 156, 170, 154, 148, 150, 160, 144, 160, 162, 146, 154, 164, 142, 140, 164, 148, 148, 148, 156, 150, 144, 160, 150, 148, 160, 156, 136, 154, 174, 150, 154, 162, 166, 158, 164, 166, 154, 158, 168, 152, 150, 160, 164, 146, 156, 158, 160, 152, 160, 160, 156, 156, 168, 160, 158, 166, 162, 154, 170, 166, 148, 166, 166, 152, 154, 170, 158, 148, 168, 162, 150, 152, 158, 154, 150, 156, 166, 150, 162, 160, 162, 160, 166, 168, 160, 168, 164, 158, 154, 166, 160, 140, 166, 152, 138, 150, 164, 154, 154, 166, 158, 154, 164, 160, 154, 152, 182, 150, 156, 166, 152, 154, 158, 168, 144, 154, 170, 154, 148, 166, 168, 150, 154, 176, 152, 152, 164, 158, 160, 154, 164, 152, 166, 166, 162, 164, 166, 172, 150, 152, 170, 156, 142, 160, 160, 142, 160, 166, 144, 152, 178, 156, 150, 172, 166, 152, 162, 170, 160, 148, 172, 154, 150, 154, 176, 148, 150, 166, 152, 152, 160, 166, 150, 158, 166, 154, 150, 160, 154, 160, 158, 174, 154, 156, 164, 164, 150, 166, 172, 158, 152, 156, 150, 138, 164, 160, 144, 162, 160, 148, 154, 170, 156, 160, 168, 172}, + {158, 148, 158, 156, 152, 160, 152, 164, 160, 146, 176, 162, 150, 172, 154, 150, 168, 162, 162, 162, 154, 162, 156, 158, 162, 154, 148, 160, 162, 136, 172, 156, 152, 162, 160, 152, 156, 150, 166, 174, 160, 168, 162, 148, 180, 148, 146, 170, 162, 136, 178, 152, 146, 162, 156, 150, 162, 160, 166, 156, 152, 166, 166, 152, 176, 162, 146, 152, 166, 152, 168, 156, 154, 166, 150, 160, 156, 154, 164, 154, 140, 170, 164, 138, 172, 150, 156, 164, 168, 168, 164, 164, 160, 162, 152, 166, 160, 144, 168, 156, 146, 158, 160, 146, 162, 150, 160, 162, 154, 164, 156, 160, 178, 162, 140, 176, 170, 150, 170, 150, 150, 162, 164, 146, 164, 148, 162, 156, 160, 162, 156, 152, 164, 158, 146, 160, 160, 150, 166, 160, 154, 154, 150, 154, 150, 146, 164, 146, 136, 154, 156, 146, 156, 152, 142, 160, 156, 154, 172, 156, 164, 160, 154, 166, 172, 132, 168, 156, 136, 160, 146, 140, 156, 154, 142, 160, 142, 152, 158, 144, 172, 160, 146, 174, 160, 148, 168, 166, 156, 170, 166, 148, 164, 158, 156, 168, 148, 170, 154, 140, 162, 154, 150, 170, 156, 158, 158, 152, 156, 166, 156, 170, 162, 160, 170, 154, 146, 168, 158, 142, 170, 154, 138, 160, 158, 144, 170, 152, 154, 164, 148, 162, 158, 150, 166, 166, 148, 174, 158, 152, 162, 160, 154, 168, 156, 162, 156, 162, 166, 156, 152, 166, 156, 140, 160, 158, 146, 174, 158, 154, 162, 170, 158, 164, 170, 164, 158, 144, 170, 156, 140, 162, 152, 152, 156, 154, 156, 154, 158, 158, 164, 162, 170, 158, 154, 174, 160, 148, 170, 162, 148, 158, 158, 148, 172, 156, 154, 154, 154, 160, 152, 142, 170, 162, 140, 164, 162, 144, 166, 176, 148, 172, 162, 156, 164, 156, 176, 164, 148, 162, 150, 142, 162, 160, 142, 158, 164, 140, 170, 152, 160, 162, 160, 166, 162, 152, 174, 170, 148, 160, 162, 148, 162, 152, 160, 164, 156, 160, 166, 148, 158, 160, 152, 160, 158, 142, 170, 162, 142, 164}, + {150, 164, 162, 150, 164, 154, 144, 164, 156, 154, 170, 152, 162, 162, 162, 172, 170, 146, 170, 158, 148, 168, 160, 148, 164, 152, 152, 168, 144, 158, 164, 152, 168, 166, 136, 176, 164, 154, 168, 158, 158, 172, 152, 160, 170, 154, 160, 168, 144, 168, 150, 146, 164, 154, 154, 166, 152, 150, 168, 150, 158, 170, 156, 164, 182, 150, 162, 180, 136, 168, 166, 148, 162, 146, 164, 158, 148, 148, 180, 142, 162, 168, 144, 158, 176, 148, 174, 160, 156, 166, 162, 154, 164, 150, 158, 162, 152, 158, 166, 150, 158, 162, 146, 158, 156, 156, 162, 158, 150, 170, 156, 156, 166, 154, 170, 166, 160, 162, 170, 142, 162, 168, 138, 176, 148, 156, 162, 140, 148, 170, 156, 152, 174, 148, 162, 158, 148, 162, 156, 156, 162, 146, 144, 166, 140, 150, 152, 152, 148, 164, 144, 150, 162, 140, 158, 154, 152, 172, 144, 154, 170, 146, 144, 174, 146, 152, 156, 140, 160, 156, 138, 154, 152, 136, 156, 144, 146, 170, 142, 150, 162, 156, 158, 172, 148, 162, 176, 146, 172, 162, 156, 172, 156, 150, 176, 148, 146, 170, 146, 156, 162, 148, 158, 168, 138, 174, 166, 146, 174, 150, 166, 162, 164, 158, 172, 152, 166, 174, 148, 164, 168, 140, 172, 156, 144, 176, 148, 140, 170, 150, 152, 176, 152, 164, 174, 150, 162, 178, 154, 162, 168, 152, 170, 154, 152, 158, 154, 148, 162, 146, 154, 170, 146, 166, 172, 146, 168, 166, 150, 164, 162, 156, 176, 158, 148, 168, 150, 158, 176, 152, 158, 174, 148, 160, 160, 150, 158, 158, 150, 168, 150, 140, 172, 144, 164, 170, 160, 172, 162, 152, 164, 174, 146, 162, 162, 150, 164, 150, 152, 158, 158, 146, 166, 148, 164, 168, 146, 162, 164, 152, 168, 156, 160, 182, 152, 156, 166, 152, 154, 166, 152, 170, 164, 144, 164, 164, 142, 172, 154, 148, 170, 158, 152, 164, 160, 158, 170, 158, 156, 174, 142, 166, 166, 140, 166, 154, 148, 164, 154, 144, 176, 146, 152, 170, 150, 162, 180, 148, 162, 160}, + {156, 176, 140, 156, 156, 150, 166, 160, 154, 170, 156, 148, 170, 156, 156, 180, 150, 160, 170, 154, 150, 170, 146, 162, 160, 150, 168, 144, 160, 176, 144, 156, 168, 146, 150, 182, 152, 160, 156, 166, 162, 162, 158, 162, 156, 152, 164, 148, 154, 174, 142, 156, 162, 150, 154, 162, 152, 158, 156, 158, 168, 166, 150, 166, 154, 166, 176, 144, 166, 176, 156, 156, 164, 150, 154, 158, 152, 170, 140, 154, 170, 142, 160, 182, 144, 158, 166, 150, 156, 180, 162, 156, 168, 152, 166, 158, 152, 168, 150, 150, 170, 144, 154, 170, 152, 152, 166, 158, 160, 160, 162, 166, 156, 158, 170, 158, 154, 176, 154, 164, 168, 146, 158, 176, 140, 158, 156, 158, 158, 154, 150, 168, 146, 162, 170, 152, 156, 162, 156, 156, 156, 158, 150, 156, 154, 154, 148, 136, 168, 136, 140, 168, 136, 158, 164, 154, 150, 166, 162, 152, 158, 160, 158, 160, 162, 162, 142, 152, 170, 140, 150, 162, 144, 154, 152, 148, 154, 152, 144, 158, 150, 152, 166, 152, 156, 176, 146, 160, 182, 160, 148, 174, 156, 154, 158, 162, 160, 162, 152, 174, 148, 152, 170, 138, 164, 162, 146, 156, 178, 160, 148, 166, 154, 172, 152, 160, 170, 148, 158, 170, 144, 156, 170, 146, 154, 154, 158, 156, 162, 158, 154, 158, 160, 158, 156, 158, 172, 146, 174, 172, 142, 164, 172, 152, 154, 164, 156, 158, 154, 148, 160, 152, 150, 164, 138, 156, 176, 146, 158, 170, 156, 152, 172, 162, 168, 154, 158, 170, 152, 162, 170, 134, 168, 164, 144, 152, 174, 152, 154, 162, 154, 168, 158, 162, 164, 160, 156, 176, 146, 164, 174, 146, 164, 162, 150, 150, 172, 144, 158, 164, 150, 174, 152, 154, 170, 144, 152, 186, 154, 152, 174, 158, 162, 154, 166, 158, 168, 158, 160, 160, 140, 172, 138, 152, 170, 140, 154, 166, 156, 148, 176, 154, 160, 162, 158, 170, 158, 162, 168, 144, 166, 172, 150, 164, 170, 154, 156, 168, 148, 156, 158, 150, 164, 156, 150, 178, 142, 156, 176, 150}, + {162, 146, 158, 168, 152, 152, 162, 148, 156, 152, 172, 158, 160, 166, 156, 158, 170, 164, 150, 158, 174, 156, 164, 162, 156, 152, 164, 154, 154, 152, 164, 154, 152, 162, 162, 156, 158, 170, 158, 152, 172, 160, 164, 164, 168, 152, 158, 160, 152, 150, 156, 170, 142, 158, 172, 146, 160, 172, 158, 144, 168, 160, 158, 158, 172, 160, 148, 166, 164, 156, 156, 170, 152, 152, 172, 150, 152, 158, 162, 150, 154, 168, 156, 148, 160, 174, 154, 166, 160, 162, 156, 174, 150, 154, 168, 158, 160, 156, 172, 146, 156, 154, 168, 144, 164, 164, 150, 152, 168, 152, 160, 162, 158, 152, 168, 168, 158, 150, 164, 162, 148, 160, 168, 144, 156, 172, 144, 156, 162, 166, 146, 156, 168, 142, 150, 168, 160, 150, 150, 170, 158, 152, 166, 156, 140, 160, 156, 138, 148, 160, 150, 148, 156, 150, 148, 158, 156, 156, 158, 166, 156, 142, 160, 158, 148, 156, 164, 144, 146, 156, 156, 140, 150, 166, 148, 148, 162, 150, 146, 166, 154, 146, 162, 178, 148, 154, 164, 156, 154, 170, 180, 144, 158, 180, 154, 154, 164, 162, 146, 148, 160, 148, 148, 162, 166, 150, 156, 172, 146, 156, 180, 154, 162, 174, 158, 156, 160, 176, 152, 148, 160, 166, 150, 158, 174, 146, 148, 172, 164, 152, 170, 162, 152, 160, 172, 150, 158, 176, 160, 148, 170, 164, 150, 164, 170, 150, 150, 180, 144, 152, 166, 166, 146, 152, 168, 158, 156, 166, 166, 152, 158, 174, 158, 164, 160, 166, 160, 160, 168, 146, 154, 168, 152, 152, 162, 162, 142, 154, 170, 156, 148, 176, 156, 154, 172, 164, 148, 156, 172, 154, 150, 168, 160, 148, 166, 168, 156, 156, 164, 150, 152, 154, 166, 144, 160, 164, 160, 146, 160, 172, 152, 162, 178, 160, 154, 170, 160, 160, 160, 158, 152, 156, 166, 158, 142, 156, 168, 142, 160, 172, 152, 152, 168, 158, 154, 162, 164, 154, 162, 170, 172, 144, 168, 162, 152, 152, 172, 150, 158, 160, 156, 146, 172, 158, 154, 154, 172, 156, 152, 164}, + {156, 172, 146, 148, 170, 154, 152, 164, 154, 164, 148, 160, 172, 152, 160, 180, 162, 156, 168, 146, 152, 178, 142, 162, 160, 154, 162, 156, 162, 166, 144, 162, 162, 152, 160, 170, 158, 150, 174, 148, 158, 170, 150, 168, 150, 168, 164, 154, 168, 174, 150, 146, 174, 144, 154, 176, 148, 152, 162, 164, 156, 160, 166, 170, 150, 164, 176, 158, 154, 178, 152, 150, 174, 146, 162, 162, 144, 160, 156, 160, 156, 148, 160, 168, 156, 148, 182, 144, 162, 172, 158, 154, 182, 150, 158, 166, 152, 168, 146, 158, 170, 150, 154, 176, 138, 150, 178, 144, 162, 176, 148, 166, 156, 166, 168, 152, 166, 168, 158, 154, 172, 154, 146, 178, 154, 148, 164, 150, 148, 162, 164, 160, 150, 170, 166, 150, 158, 166, 146, 146, 164, 140, 152, 162, 152, 146, 148, 150, 164, 136, 152, 154, 142, 152, 162, 150, 154, 168, 148, 148, 168, 158, 152, 162, 160, 158, 140, 166, 156, 144, 154, 162, 134, 136, 162, 138, 150, 166, 150, 152, 152, 150, 162, 148, 156, 176, 152, 162, 176, 156, 152, 174, 142, 154, 172, 150, 156, 152, 168, 170, 148, 168, 170, 148, 148, 166, 146, 144, 180, 144, 158, 176, 144, 164, 164, 158, 164, 160, 156, 174, 154, 154, 174, 146, 154, 166, 152, 148, 164, 150, 160, 158, 160, 164, 154, 168, 170, 148, 162, 180, 146, 166, 172, 150, 156, 166, 148, 156, 166, 152, 156, 150, 162, 172, 144, 156, 172, 156, 152, 172, 152, 156, 176, 150, 166, 168, 158, 164, 156, 164, 166, 148, 156, 172, 140, 152, 168, 156, 146, 170, 144, 154, 168, 148, 166, 154, 174, 166, 154, 168, 168, 158, 152, 168, 154, 152, 170, 148, 166, 162, 152, 152, 154, 166, 160, 154, 154, 178, 154, 154, 168, 154, 154, 182, 148, 160, 164, 154, 160, 156, 166, 174, 148, 158, 166, 154, 150, 178, 144, 152, 176, 152, 150, 176, 154, 162, 160, 166, 170, 158, 158, 174, 158, 152, 174, 144, 152, 166, 138, 158, 160, 156, 158, 160, 150, 174, 154, 162, 178, 146}, + {180, 150, 154, 170, 140, 166, 162, 142, 172, 168, 146, 168, 172, 142, 176, 160, 146, 172, 166, 154, 178, 154, 158, 166, 146, 170, 156, 138, 160, 174, 132, 168, 166, 144, 168, 158, 154, 180, 152, 172, 166, 150, 172, 168, 144, 170, 174, 134, 172, 152, 144, 166, 158, 148, 164, 148, 168, 166, 146, 164, 170, 146, 164, 164, 146, 170, 174, 134, 176, 162, 160, 172, 144, 158, 166, 144, 160, 170, 142, 162, 172, 134, 170, 166, 144, 174, 152, 156, 174, 152, 162, 166, 154, 162, 170, 148, 172, 172, 134, 176, 166, 130, 174, 160, 140, 170, 150, 162, 160, 146, 172, 172, 148, 166, 172, 164, 156, 164, 148, 168, 162, 144, 182, 144, 156, 170, 144, 164, 178, 134, 162, 174, 132, 168, 170, 144, 166, 158, 154, 170, 156, 158, 156, 144, 166, 164, 130, 168, 148, 134, 166, 160, 134, 162, 158, 140, 158, 150, 158, 162, 156, 162, 166, 136, 168, 160, 152, 152, 168, 130, 160, 152, 150, 170, 138, 154, 164, 134, 164, 160, 142, 164, 166, 144, 174, 168, 140, 168, 156, 156, 172, 164, 164, 166, 150, 168, 166, 144, 174, 164, 134, 160, 166, 138, 176, 164, 148, 180, 156, 158, 172, 146, 172, 162, 156, 164, 178, 138, 172, 174, 132, 172, 160, 146, 172, 148, 154, 166, 144, 162, 168, 144, 172, 166, 144, 162, 162, 162, 172, 166, 144, 162, 164, 156, 168, 152, 168, 168, 136, 160, 180, 136, 160, 168, 142, 164, 166, 148, 164, 158, 156, 168, 150, 172, 160, 158, 168, 164, 140, 170, 168, 138, 170, 168, 136, 170, 156, 148, 172, 148, 158, 172, 148, 162, 170, 142, 166, 172, 142, 170, 170, 146, 174, 160, 160, 170, 146, 158, 162, 146, 164, 174, 130, 168, 172, 132, 174, 170, 144, 176, 166, 154, 172, 154, 162, 164, 156, 164, 172, 136, 158, 166, 140, 174, 156, 138, 164, 162, 148, 168, 146, 162, 172, 138, 176, 168, 138, 176, 174, 136, 162, 172, 140, 178, 156, 150, 172, 148, 164, 162, 144, 164, 164, 136, 160, 172, 138, 166, 166, 144}, + {154, 142, 168, 156, 148, 168, 164, 154, 158, 158, 158, 160, 146, 178, 156, 152, 182, 158, 148, 176, 160, 148, 174, 172, 138, 158, 156, 160, 162, 146, 176, 154, 134, 166, 168, 148, 176, 160, 144, 166, 166, 150, 170, 162, 164, 156, 158, 172, 160, 146, 182, 154, 140, 174, 166, 136, 158, 182, 144, 160, 162, 166, 162, 156, 176, 146, 152, 182, 156, 146, 176, 164, 146, 176, 160, 146, 162, 156, 154, 164, 152, 168, 156, 146, 174, 158, 146, 178, 166, 148, 168, 176, 152, 170, 158, 162, 160, 148, 170, 160, 146, 170, 152, 140, 182, 156, 146, 166, 172, 142, 162, 168, 150, 164, 158, 166, 162, 152, 180, 156, 150, 172, 160, 142, 178, 160, 144, 166, 150, 156, 160, 148, 180, 152, 148, 174, 154, 138, 166, 158, 150, 158, 164, 144, 146, 166, 142, 156, 152, 164, 150, 140, 160, 150, 136, 176, 164, 142, 160, 168, 138, 166, 164, 154, 156, 158, 156, 158, 138, 178, 158, 136, 160, 148, 142, 156, 164, 136, 148, 164, 140, 158, 158, 162, 156, 148, 184, 160, 146, 180, 166, 142, 174, 160, 150, 160, 166, 140, 162, 152, 160, 158, 150, 168, 148, 150, 174, 160, 144, 170, 168, 138, 176, 160, 156, 162, 152, 172, 162, 148, 172, 160, 142, 176, 156, 140, 168, 166, 140, 170, 164, 146, 154, 154, 168, 158, 154, 172, 160, 148, 182, 158, 148, 172, 168, 144, 160, 172, 150, 158, 158, 162, 164, 142, 172, 160, 142, 180, 164, 142, 178, 168, 144, 164, 172, 150, 166, 160, 168, 156, 148, 164, 166, 142, 174, 162, 142, 170, 162, 148, 158, 168, 154, 160, 168, 160, 174, 144, 180, 154, 152, 182, 148, 146, 170, 160, 138, 176, 178, 132, 158, 162, 152, 164, 142, 180, 164, 134, 178, 158, 140, 180, 170, 146, 168, 166, 146, 168, 156, 160, 172, 150, 170, 148, 150, 170, 164, 132, 174, 166, 144, 162, 178, 144, 166, 158, 168, 162, 150, 172, 168, 146, 176, 164, 144, 170, 168, 148, 162, 180, 138, 162, 162, 164, 154, 148, 178, 158, 144, 176}, + {172, 160, 144, 174, 152, 152, 148, 164, 162, 158, 162, 168, 160, 160, 170, 158, 148, 178, 166, 144, 172, 164, 154, 150, 162, 174, 146, 168, 156, 158, 150, 168, 168, 150, 172, 152, 156, 170, 158, 156, 168, 170, 156, 158, 156, 176, 152, 152, 170, 154, 148, 172, 160, 140, 162, 162, 160, 144, 170, 150, 160, 160, 166, 158, 160, 178, 156, 158, 168, 164, 144, 170, 158, 152, 156, 176, 158, 148, 162, 162, 152, 148, 180, 154, 148, 174, 162, 150, 162, 158, 164, 154, 166, 156, 156, 164, 166, 164, 146, 168, 150, 158, 170, 164, 136, 172, 168, 140, 162, 172, 160, 156, 158, 172, 150, 162, 164, 170, 144, 174, 166, 150, 164, 156, 154, 150, 160, 158, 162, 162, 158, 152, 148, 178, 158, 146, 176, 166, 138, 168, 158, 156, 148, 168, 166, 138, 152, 154, 146, 144, 162, 150, 144, 166, 160, 136, 162, 162, 142, 164, 164, 154, 146, 166, 164, 152, 158, 154, 156, 140, 162, 162, 140, 166, 152, 144, 150, 156, 158, 146, 164, 154, 146, 156, 170, 154, 148, 174, 164, 150, 168, 174, 146, 162, 180, 150, 158, 164, 174, 152, 154, 172, 154, 152, 174, 146, 148, 172, 168, 146, 170, 174, 154, 158, 172, 156, 164, 164, 170, 164, 148, 176, 150, 154, 174, 156, 158, 154, 168, 158, 160, 162, 162, 160, 160, 174, 152, 162, 168, 166, 144, 168, 164, 154, 162, 168, 152, 158, 162, 156, 148, 152, 170, 154, 148, 172, 156, 152, 172, 156, 154, 160, 162, 168, 154, 178, 158, 148, 162, 166, 162, 158, 162, 160, 144, 162, 154, 150, 162, 164, 148, 154, 170, 162, 144, 166, 170, 154, 154, 168, 160, 156, 174, 162, 152, 174, 158, 156, 144, 182, 160, 146, 160, 166, 158, 144, 170, 168, 140, 176, 156, 150, 160, 168, 160, 154, 186, 160, 152, 164, 156, 150, 154, 166, 160, 148, 174, 158, 152, 162, 166, 150, 156, 166, 168, 148, 166, 168, 156, 162, 170, 156, 156, 172, 156, 146, 164, 158, 154, 144, 164, 162, 150, 158, 174, 152, 154, 168, 164, 152}, + {162, 148, 176, 146, 152, 176, 152, 154, 164, 154, 158, 178, 148, 158, 174, 144, 170, 158, 154, 178, 152, 162, 172, 160, 152, 172, 146, 152, 178, 142, 160, 174, 132, 170, 160, 138, 180, 156, 148, 184, 152, 158, 172, 156, 156, 170, 146, 170, 176, 140, 174, 146, 156, 174, 152, 156, 174, 154, 156, 172, 152, 164, 168, 152, 166, 170, 152, 166, 166, 146, 182, 154, 148, 186, 140, 154, 168, 154, 152, 176, 142, 154, 170, 144, 164, 170, 138, 184, 160, 154, 174, 156, 156, 182, 150, 164, 172, 150, 160, 176, 144, 172, 152, 144, 176, 152, 148, 176, 152, 148, 164, 166, 156, 168, 156, 162, 178, 144, 174, 168, 138, 174, 168, 148, 178, 144, 156, 180, 150, 152, 172, 148, 164, 168, 140, 168, 152, 146, 176, 152, 150, 166, 152, 152, 166, 144, 156, 168, 142, 148, 168, 136, 156, 152, 138, 162, 154, 150, 168, 148, 150, 174, 148, 156, 174, 140, 156, 172, 140, 172, 160, 134, 170, 150, 136, 178, 142, 150, 174, 140, 152, 172, 142, 164, 168, 148, 166, 168, 142, 186, 154, 154, 182, 154, 150, 178, 156, 154, 170, 152, 154, 172, 140, 168, 166, 148, 164, 160, 148, 176, 152, 148, 190, 146, 156, 176, 148, 160, 180, 136, 172, 166, 136, 180, 148, 144, 170, 152, 148, 170, 144, 156, 172, 146, 166, 170, 144, 168, 174, 152, 172, 160, 154, 174, 154, 150, 178, 146, 154, 178, 154, 152, 176, 144, 156, 174, 144, 170, 152, 152, 174, 152, 164, 170, 164, 144, 178, 152, 164, 170, 144, 166, 170, 150, 168, 156, 154, 174, 152, 140, 184, 150, 156, 174, 160, 154, 176, 144, 174, 166, 152, 162, 168, 156, 176, 146, 152, 172, 154, 146, 170, 162, 148, 172, 142, 170, 170, 146, 178, 164, 146, 178, 160, 152, 170, 148, 152, 170, 146, 166, 170, 148, 170, 164, 148, 162, 154, 148, 172, 152, 148, 178, 154, 152, 176, 152, 146, 186, 150, 162, 170, 150, 170, 168, 144, 174, 160, 152, 174, 150, 154, 172, 146, 152, 168, 148, 166, 168, 140, 168}, + {148, 156, 166, 160, 156, 164, 150, 170, 162, 150, 170, 144, 154, 188, 134, 172, 178, 144, 164, 158, 160, 164, 168, 148, 170, 162, 154, 174, 142, 160, 166, 146, 156, 170, 150, 166, 168, 150, 166, 174, 150, 168, 154, 158, 180, 150, 156, 176, 152, 162, 176, 144, 160, 164, 154, 164, 152, 148, 176, 156, 148, 172, 146, 160, 182, 142, 170, 174, 148, 160, 170, 150, 164, 164, 150, 166, 158, 150, 180, 140, 160, 178, 140, 168, 174, 134, 170, 162, 158, 162, 168, 154, 164, 160, 160, 176, 146, 162, 174, 138, 166, 174, 146, 162, 166, 144, 164, 152, 158, 172, 158, 146, 182, 154, 160, 174, 136, 164, 166, 148, 166, 180, 148, 160, 168, 148, 170, 156, 146, 182, 140, 154, 182, 136, 168, 166, 146, 158, 162, 152, 156, 166, 150, 162, 156, 142, 164, 152, 144, 168, 136, 162, 162, 148, 154, 166, 142, 158, 152, 156, 160, 146, 162, 178, 140, 158, 166, 138, 156, 170, 138, 162, 160, 136, 156, 158, 148, 158, 148, 146, 164, 146, 158, 174, 132, 166, 178, 146, 162, 174, 142, 156, 166, 146, 174, 154, 158, 174, 154, 148, 174, 146, 158, 172, 132, 158, 176, 146, 164, 170, 146, 168, 160, 158, 174, 154, 162, 182, 134, 168, 180, 154, 166, 176, 144, 166, 164, 150, 166, 154, 150, 176, 156, 152, 170, 150, 162, 184, 134, 164, 174, 148, 168, 168, 158, 172, 168, 152, 168, 144, 158, 178, 146, 160, 180, 138, 166, 176, 150, 164, 170, 160, 160, 170, 154, 180, 154, 146, 186, 136, 174, 172, 128, 164, 168, 152, 156, 160, 148, 178, 160, 146, 170, 156, 152, 180, 146, 168, 178, 142, 164, 184, 142, 160, 172, 158, 160, 166, 148, 178, 148, 146, 178, 138, 158, 170, 136, 160, 166, 150, 168, 170, 148, 174, 158, 166, 180, 152, 152, 176, 148, 164, 172, 134, 168, 176, 156, 164, 158, 162, 172, 158, 152, 174, 152, 156, 182, 144, 168, 168, 148, 168, 174, 148, 166, 168, 144, 170, 158, 152, 164, 160, 146, 178, 146, 162, 174, 132, 174, 174}, + {156, 170, 166, 146, 174, 162, 140, 160, 168, 158, 158, 176, 152, 160, 164, 166, 156, 158, 164, 170, 158, 158, 166, 158, 158, 164, 160, 156, 158, 160, 164, 158, 164, 158, 158, 170, 162, 150, 168, 162, 160, 160, 176, 146, 156, 174, 172, 156, 152, 168, 156, 150, 172, 170, 142, 162, 174, 144, 154, 174, 158, 150, 168, 162, 150, 162, 172, 156, 160, 170, 158, 154, 166, 170, 154, 152, 178, 152, 156, 166, 164, 148, 162, 168, 160, 158, 160, 174, 150, 164, 168, 150, 170, 166, 160, 156, 164, 154, 164, 170, 156, 158, 154, 166, 154, 146, 170, 160, 158, 150, 178, 160, 156, 166, 164, 158, 166, 164, 162, 170, 162, 160, 154, 172, 164, 150, 164, 168, 148, 156, 176, 148, 160, 160, 174, 152, 154, 174, 160, 150, 160, 162, 152, 154, 154, 152, 144, 162, 158, 150, 150, 152, 154, 150, 164, 158, 144, 174, 170, 136, 160, 164, 158, 144, 174, 156, 152, 156, 166, 154, 144, 166, 150, 150, 158, 164, 142, 156, 156, 150, 148, 166, 146, 154, 162, 148, 158, 160, 182, 158, 156, 166, 172, 156, 158, 170, 152, 158, 174, 158, 152, 166, 166, 164, 158, 170, 152, 158, 168, 162, 154, 164, 172, 150, 152, 174, 152, 148, 176, 164, 146, 158, 168, 148, 158, 156, 176, 144, 164, 168, 144, 164, 166, 158, 154, 170, 160, 156, 166, 168, 154, 162, 166, 164, 142, 164, 172, 154, 156, 172, 160, 144, 158, 162, 142, 166, 164, 156, 146, 168, 162, 144, 174, 168, 152, 162, 162, 162, 152, 164, 156, 158, 178, 166, 162, 152, 174, 162, 148, 156, 172, 162, 154, 172, 154, 154, 162, 160, 160, 160, 164, 164, 158, 172, 162, 148, 172, 158, 156, 162, 160, 164, 148, 168, 164, 158, 156, 174, 154, 154, 176, 156, 156, 160, 174, 146, 152, 178, 156, 164, 176, 154, 158, 164, 154, 150, 146, 162, 166, 140, 164, 168, 152, 160, 172, 164, 154, 168, 160, 152, 164, 172, 144, 154, 164, 176, 154, 158, 162, 152, 164, 170, 152, 150, 164, 156, 156, 160, 166, 154}, + {146, 174, 152, 154, 166, 156, 156, 184, 136, 154, 178, 136, 166, 184, 142, 168, 172, 144, 170, 154, 162, 172, 148, 160, 186, 140, 166, 174, 128, 170, 176, 144, 160, 170, 142, 166, 164, 160, 172, 148, 158, 176, 138, 176, 176, 140, 160, 186, 138, 168, 168, 140, 166, 156, 160, 170, 138, 164, 180, 140, 164, 180, 142, 164, 186, 140, 166, 176, 134, 176, 170, 156, 172, 152, 158, 184, 136, 164, 184, 130, 166, 190, 134, 170, 170, 138, 174, 154, 162, 166, 154, 164, 168, 146, 168, 176, 142, 166, 176, 136, 172, 172, 140, 168, 176, 136, 176, 152, 164, 178, 132, 168, 184, 126, 176, 184, 136, 164, 176, 140, 170, 170, 150, 166, 152, 164, 168, 142, 164, 180, 132, 160, 182, 134, 160, 174, 136, 166, 160, 144, 180, 156, 154, 164, 148, 154, 180, 134, 162, 166, 134, 164, 172, 132, 162, 160, 140, 166, 144, 166, 166, 140, 156, 182, 132, 164, 176, 146, 156, 176, 140, 156, 158, 142, 164, 142, 162, 158, 140, 156, 172, 136, 166, 176, 134, 172, 170, 140, 162, 166, 160, 166, 154, 158, 178, 142, 172, 182, 128, 170, 178, 140, 170, 168, 136, 162, 170, 146, 174, 156, 164, 174, 140, 170, 182, 142, 174, 178, 140, 160, 186, 142, 172, 164, 150, 168, 146, 162, 166, 146, 166, 172, 146, 168, 180, 138, 170, 182, 128, 174, 174, 148, 168, 162, 164, 174, 148, 162, 178, 140, 168, 188, 138, 166, 178, 138, 166, 168, 146, 166, 160, 158, 170, 152, 168, 170, 150, 164, 186, 144, 170, 184, 132, 168, 170, 140, 162, 160, 156, 174, 140, 158, 182, 138, 174, 182, 144, 170, 166, 148, 168, 166, 152, 170, 156, 146, 178, 148, 162, 178, 136, 166, 182, 132, 168, 182, 136, 154, 180, 144, 170, 160, 160, 180, 142, 170, 172, 144, 172, 178, 140, 172, 182, 140, 166, 174, 140, 172, 156, 158, 170, 144, 162, 172, 132, 170, 188, 140, 172, 186, 136, 160, 188, 146, 166, 156, 154, 174, 154, 158, 176, 140, 170, 178, 134, 174, 186, 136, 166, 170}, + {176, 162, 144, 184, 162, 148, 172, 154, 154, 178, 148, 156, 176, 150, 168, 166, 148, 184, 164, 146, 176, 168, 148, 172, 166, 152, 170, 160, 168, 168, 144, 170, 172, 140, 174, 172, 138, 176, 160, 156, 172, 174, 148, 166, 166, 154, 174, 150, 168, 156, 156, 174, 174, 144, 168, 164, 146, 168, 162, 158, 164, 160, 164, 162, 152, 166, 170, 144, 184, 158, 144, 180, 164, 146, 182, 166, 142, 158, 166, 156, 162, 146, 174, 162, 138, 180, 170, 136, 180, 170, 148, 174, 162, 156, 166, 162, 162, 164, 154, 168, 164, 146, 172, 152, 148, 180, 160, 142, 170, 166, 148, 176, 160, 164, 168, 154, 170, 160, 148, 182, 172, 140, 180, 164, 148, 170, 162, 156, 166, 162, 156, 166, 150, 172, 160, 144, 176, 156, 144, 178, 162, 140, 162, 164, 134, 170, 152, 152, 156, 158, 156, 158, 134, 170, 154, 136, 178, 162, 144, 158, 164, 146, 158, 162, 146, 164, 146, 154, 162, 142, 162, 164, 132, 172, 166, 138, 162, 158, 138, 164, 158, 156, 158, 148, 164, 148, 154, 168, 172, 144, 174, 162, 150, 160, 172, 150, 170, 172, 152, 172, 154, 160, 162, 148, 174, 162, 140, 182, 166, 136, 172, 168, 144, 168, 168, 160, 164, 156, 162, 170, 146, 172, 156, 156, 168, 164, 144, 174, 176, 148, 166, 168, 150, 160, 156, 164, 162, 152, 182, 156, 150, 174, 168, 142, 180, 166, 146, 166, 166, 138, 174, 150, 150, 164, 150, 176, 158, 152, 180, 164, 142, 172, 172, 144, 170, 162, 158, 166, 152, 164, 166, 148, 172, 164, 148, 184, 166, 136, 184, 150, 150, 184, 150, 154, 162, 154, 156, 164, 156, 178, 162, 140, 178, 160, 142, 190, 164, 148, 172, 164, 150, 164, 166, 164, 162, 132, 178, 170, 134, 182, 162, 146, 178, 168, 158, 164, 170, 150, 168, 162, 158, 158, 148, 172, 164, 146, 180, 160, 152, 178, 158, 160, 168, 164, 156, 164, 160, 156, 168, 146, 170, 164, 138, 188, 164, 146, 192, 158, 144, 174, 172, 146, 154, 156, 162, 158, 150, 172, 164, 142}, + {152, 178, 160, 150, 164, 150, 176, 152, 160, 164, 162, 164, 166, 154, 156, 176, 160, 148, 182, 152, 152, 168, 160, 162, 164, 156, 174, 156, 142, 184, 152, 150, 178, 152, 162, 162, 150, 158, 170, 148, 174, 158, 166, 170, 154, 164, 174, 156, 152, 188, 152, 148, 182, 150, 144, 176, 158, 160, 160, 138, 184, 152, 154, 186, 150, 166, 174, 156, 144, 172, 156, 150, 176, 156, 156, 156, 166, 170, 152, 154, 180, 158, 148, 174, 166, 142, 178, 158, 160, 168, 152, 174, 162, 144, 182, 148, 156, 180, 152, 156, 174, 166, 148, 182, 154, 146, 178, 156, 156, 162, 156, 168, 154, 148, 182, 150, 156, 188, 152, 146, 174, 158, 158, 164, 152, 164, 162, 154, 182, 146, 156, 172, 160, 152, 176, 162, 152, 172, 160, 148, 166, 158, 150, 164, 152, 158, 150, 140, 184, 140, 146, 178, 144, 150, 168, 156, 142, 170, 144, 164, 152, 158, 172, 142, 166, 166, 148, 160, 170, 150, 148, 178, 156, 136, 160, 152, 152, 160, 146, 176, 148, 138, 174, 152, 152, 182, 146, 152, 174, 160, 156, 174, 156, 166, 166, 156, 170, 144, 158, 174, 150, 160, 180, 156, 144, 184, 152, 148, 170, 162, 164, 164, 160, 178, 150, 156, 174, 160, 152, 168, 162, 154, 174, 154, 152, 188, 150, 156, 168, 148, 160, 158, 154, 172, 156, 152, 188, 152, 152, 182, 160, 148, 174, 158, 154, 160, 162, 174, 156, 166, 180, 150, 162, 174, 150, 154, 178, 148, 150, 172, 162, 158, 154, 170, 168, 154, 156, 178, 150, 148, 188, 160, 146, 182, 156, 138, 174, 158, 164, 170, 148, 174, 164, 168, 164, 154, 156, 180, 154, 152, 184, 158, 148, 180, 170, 142, 178, 156, 156, 158, 158, 180, 142, 152, 178, 158, 146, 182, 158, 156, 170, 148, 170, 166, 150, 170, 158, 162, 166, 154, 168, 170, 154, 154, 182, 158, 142, 166, 160, 144, 170, 138, 172, 160, 148, 184, 162, 164, 176, 154, 156, 178, 160, 154, 174, 150, 146, 174, 160, 164, 162, 166, 172, 150, 154, 176, 160, 140, 184, 150}, + {180, 162, 150, 182, 146, 164, 174, 142, 160, 180, 122, 178, 166, 140, 180, 160, 140, 184, 146, 158, 182, 144, 160, 172, 150, 170, 164, 138, 180, 160, 144, 180, 156, 144, 180, 170, 152, 180, 146, 168, 174, 140, 168, 152, 152, 180, 156, 140, 182, 156, 146, 186, 152, 156, 180, 150, 158, 166, 150, 172, 162, 140, 178, 166, 142, 180, 162, 148, 188, 164, 150, 180, 148, 172, 178, 152, 168, 170, 142, 186, 156, 144, 178, 156, 142, 192, 150, 150, 182, 148, 166, 172, 150, 168, 162, 148, 176, 168, 132, 184, 168, 126, 190, 144, 156, 184, 148, 160, 178, 140, 176, 166, 150, 184, 168, 136, 178, 156, 144, 182, 158, 154, 178, 164, 160, 172, 142, 172, 158, 136, 186, 156, 138, 188, 158, 136, 178, 154, 150, 182, 150, 160, 170, 140, 164, 168, 146, 168, 160, 136, 174, 158, 140, 174, 148, 148, 176, 146, 164, 166, 142, 172, 148, 148, 178, 166, 130, 186, 154, 142, 170, 148, 142, 176, 148, 158, 164, 142, 160, 156, 140, 174, 162, 138, 174, 156, 136, 184, 154, 148, 184, 148, 166, 172, 146, 178, 170, 154, 176, 172, 136, 180, 160, 138, 188, 152, 154, 182, 146, 158, 164, 156, 170, 170, 152, 180, 158, 142, 188, 160, 142, 192, 160, 140, 190, 146, 152, 186, 132, 182, 174, 140, 182, 162, 142, 178, 164, 140, 182, 164, 144, 184, 154, 158, 172, 156, 170, 168, 152, 170, 158, 150, 176, 168, 134, 186, 156, 146, 186, 148, 154, 182, 152, 170, 172, 152, 174, 156, 160, 180, 162, 136, 186, 156, 146, 190, 154, 158, 166, 146, 158, 166, 138, 178, 160, 150, 184, 168, 134, 194, 160, 146, 178, 150, 156, 176, 146, 172, 174, 144, 172, 160, 150, 182, 166, 136, 186, 156, 136, 176, 154, 160, 174, 146, 172, 168, 146, 174, 166, 140, 188, 160, 140, 192, 150, 150, 180, 152, 162, 174, 158, 164, 170, 150, 170, 166, 130, 184, 162, 136, 190, 156, 134, 174, 152, 166, 190, 144, 166, 162, 136, 176, 160, 146, 182, 162, 138, 194, 156, 152}, + {172, 150, 166, 178, 152, 168, 162, 160, 162, 166, 156, 166, 164, 166, 164, 158, 176, 168, 160, 168, 172, 150, 170, 174, 154, 168, 172, 160, 162, 162, 164, 162, 152, 170, 166, 146, 162, 174, 148, 166, 176, 154, 172, 168, 156, 168, 162, 162, 160, 160, 170, 162, 156, 162, 164, 146, 176, 170, 154, 156, 174, 158, 164, 168, 158, 168, 152, 164, 172, 150, 174, 162, 156, 162, 174, 148, 166, 168, 152, 162, 170, 156, 152, 164, 170, 148, 162, 166, 166, 156, 168, 178, 156, 156, 168, 156, 162, 162, 164, 172, 156, 170, 170, 154, 166, 164, 144, 176, 162, 150, 172, 174, 152, 158, 162, 160, 166, 170, 172, 160, 154, 164, 160, 154, 158, 168, 158, 170, 170, 160, 162, 168, 156, 162, 162, 162, 146, 160, 164, 154, 154, 158, 174, 142, 166, 160, 152, 152, 172, 162, 148, 154, 154, 170, 134, 160, 166, 150, 152, 166, 144, 160, 166, 146, 152, 154, 164, 164, 156, 154, 158, 150, 166, 158, 148, 154, 174, 140, 162, 168, 152, 156, 162, 142, 168, 154, 172, 162, 156, 172, 158, 156, 154, 176, 150, 164, 172, 154, 170, 154, 168, 160, 166, 158, 162, 154, 160, 164, 152, 166, 172, 144, 166, 166, 154, 160, 166, 168, 152, 160, 168, 156, 156, 174, 156, 166, 168, 174, 156, 152, 168, 148, 172, 156, 154, 166, 168, 162, 172, 152, 174, 164, 140, 170, 168, 150, 162, 176, 154, 166, 168, 154, 148, 168, 166, 154, 154, 174, 160, 164, 168, 172, 146, 166, 172, 144, 176, 168, 142, 162, 168, 168, 164, 160, 168, 170, 154, 164, 168, 158, 154, 176, 156, 162, 170, 152, 158, 154, 178, 154, 160, 164, 168, 150, 166, 172, 152, 170, 168, 154, 162, 166, 158, 158, 166, 160, 162, 154, 186, 166, 160, 166, 174, 154, 168, 166, 168, 158, 168, 160, 162, 156, 164, 158, 158, 164, 166, 150, 160, 176, 142, 174, 160, 158, 154, 172, 162, 164, 168, 168, 154, 164, 172, 164, 156, 164, 180, 152, 170, 168, 162, 160, 170, 156, 164, 158, 172, 148, 164, 156}, + {184, 150, 166, 150, 166, 170, 148, 162, 178, 142, 166, 192, 138, 174, 184, 136, 178, 168, 134, 172, 162, 150, 176, 146, 168, 178, 140, 168, 178, 136, 186, 178, 134, 164, 174, 150, 166, 168, 156, 186, 148, 154, 176, 156, 162, 186, 132, 168, 188, 136, 170, 178, 146, 170, 168, 160, 174, 150, 158, 186, 138, 170, 186, 130, 178, 184, 144, 168, 168, 146, 172, 166, 152, 178, 152, 154, 178, 140, 178, 182, 126, 178, 184, 132, 170, 184, 136, 170, 168, 154, 174, 154, 168, 176, 144, 168, 176, 142, 174, 186, 140, 170, 176, 146, 166, 174, 146, 178, 150, 160, 180, 128, 180, 172, 140, 182, 182, 132, 174, 178, 132, 176, 174, 148, 178, 168, 156, 176, 146, 156, 184, 140, 170, 184, 132, 178, 178, 154, 162, 174, 150, 180, 138, 166, 166, 152, 160, 174, 128, 160, 178, 130, 162, 178, 136, 160, 156, 150, 174, 152, 158, 168, 142, 162, 172, 134, 166, 178, 130, 168, 176, 140, 160, 164, 148, 174, 144, 152, 178, 144, 148, 174, 128, 170, 186, 132, 172, 172, 140, 164, 166, 162, 164, 168, 154, 174, 128, 168, 188, 130, 172, 192, 134, 172, 182, 134, 176, 178, 148, 178, 162, 158, 186, 154, 164, 178, 142, 160, 190, 126, 178, 186, 142, 168, 176, 152, 166, 154, 160, 178, 148, 168, 182, 144, 168, 176, 138, 168, 184, 144, 166, 166, 166, 162, 156, 164, 176, 146, 162, 188, 128, 170, 194, 126, 168, 188, 136, 174, 170, 134, 182, 160, 160, 176, 146, 174, 172, 142, 168, 192, 132, 166, 180, 136, 168, 164, 146, 166, 156, 160, 180, 146, 164, 180, 132, 172, 182, 136, 172, 184, 136, 172, 180, 142, 174, 164, 152, 184, 148, 156, 184, 146, 170, 184, 128, 172, 188, 144, 164, 166, 144, 170, 148, 160, 174, 154, 162, 176, 138, 170, 178, 134, 174, 188, 136, 170, 180, 138, 180, 158, 168, 162, 144, 168, 186, 132, 176, 192, 130, 172, 178, 144, 164, 178, 146, 176, 158, 148, 176, 150, 156, 178, 138, 166, 184, 136, 160, 200, 132, 160}, + {156, 150, 180, 156, 164, 170, 158, 172, 158, 156, 174, 148, 166, 166, 154, 162, 176, 164, 170, 174, 154, 156, 186, 156, 166, 150, 162, 172, 164, 148, 182, 150, 160, 178, 160, 164, 172, 158, 164, 158, 162, 174, 156, 160, 166, 164, 160, 166, 160, 160, 176, 162, 158, 174, 156, 156, 178, 144, 168, 164, 152, 182, 144, 164, 172, 150, 158, 176, 154, 166, 174, 162, 156, 178, 152, 170, 170, 164, 170, 160, 160, 164, 148, 168, 176, 162, 152, 178, 152, 168, 170, 154, 172, 158, 168, 162, 164, 154, 176, 154, 162, 172, 154, 162, 172, 162, 160, 168, 154, 162, 174, 160, 166, 162, 158, 176, 156, 154, 190, 154, 150, 182, 142, 174, 160, 156, 172, 166, 154, 172, 154, 162, 164, 152, 168, 172, 146, 152, 172, 152, 154, 160, 152, 164, 164, 146, 168, 152, 154, 172, 148, 150, 172, 152, 158, 170, 146, 152, 166, 148, 166, 168, 152, 160, 164, 148, 176, 134, 154, 176, 152, 142, 178, 152, 152, 168, 150, 158, 164, 148, 172, 156, 154, 174, 134, 160, 164, 156, 154, 176, 148, 158, 162, 160, 160, 168, 162, 174, 154, 164, 172, 152, 168, 168, 162, 160, 174, 156, 160, 174, 150, 160, 166, 156, 176, 156, 166, 174, 156, 162, 174, 154, 154, 176, 152, 156, 166, 162, 162, 160, 156, 178, 154, 162, 168, 164, 162, 174, 150, 168, 186, 150, 164, 174, 154, 162, 168, 156, 168, 158, 168, 172, 156, 168, 172, 150, 160, 160, 168, 160, 166, 164, 158, 164, 160, 162, 164, 162, 184, 144, 160, 176, 148, 162, 182, 166, 166, 180, 152, 164, 166, 158, 168, 158, 160, 176, 164, 160, 170, 158, 174, 160, 162, 148, 170, 154, 166, 178, 146, 170, 172, 148, 170, 154, 164, 166, 156, 162, 174, 170, 150, 180, 158, 166, 164, 160, 168, 158, 160, 172, 158, 162, 162, 166, 164, 174, 156, 156, 188, 148, 156, 182, 152, 162, 162, 162, 170, 154, 164, 170, 152, 168, 174, 156, 158, 172, 148, 174, 168, 160, 174, 164, 170, 162, 154, 164, 172, 146, 154, 186}, + {140, 178, 174, 144, 180, 170, 132, 182, 164, 154, 176, 158, 168, 184, 130, 176, 190, 132, 172, 176, 148, 174, 168, 152, 172, 166, 156, 176, 160, 168, 178, 142, 170, 182, 126, 176, 182, 136, 172, 174, 156, 178, 158, 178, 164, 156, 158, 178, 140, 168, 176, 136, 172, 178, 136, 182, 174, 156, 174, 168, 158, 168, 166, 166, 188, 142, 170, 188, 136, 170, 182, 142, 176, 160, 158, 172, 154, 160, 178, 158, 162, 174, 158, 152, 186, 130, 178, 186, 132, 170, 170, 146, 172, 158, 164, 174, 148, 172, 182, 148, 170, 178, 134, 188, 174, 132, 186, 168, 146, 176, 170, 150, 172, 168, 150, 176, 160, 162, 174, 138, 174, 176, 138, 168, 178, 140, 178, 156, 162, 184, 150, 164, 180, 152, 166, 184, 146, 172, 176, 142, 182, 166, 142, 164, 166, 154, 164, 152, 154, 174, 138, 166, 184, 128, 164, 178, 134, 172, 170, 144, 164, 148, 152, 168, 152, 152, 176, 146, 164, 170, 138, 170, 172, 124, 174, 168, 140, 172, 160, 154, 168, 146, 158, 168, 150, 162, 180, 138, 176, 180, 138, 178, 172, 148, 178, 156, 158, 166, 162, 156, 182, 146, 168, 180, 132, 170, 178, 132, 170, 170, 152, 176, 164, 154, 172, 162, 158, 168, 154, 156, 182, 140, 186, 176, 144, 184, 180, 140, 182, 166, 150, 172, 160, 150, 188, 138, 168, 180, 138, 170, 174, 148, 166, 172, 142, 170, 166, 160, 168, 160, 156, 176, 154, 160, 182, 140, 176, 190, 136, 168, 186, 140, 176, 166, 160, 174, 160, 164, 168, 160, 160, 178, 144, 166, 182, 134, 172, 182, 124, 182, 164, 150, 170, 162, 160, 168, 142, 166, 192, 130, 166, 188, 134, 182, 184, 144, 178, 156, 162, 170, 158, 170, 176, 158, 160, 180, 136, 170, 188, 134, 178, 174, 142, 178, 172, 162, 170, 152, 168, 172, 152, 168, 186, 128, 174, 184, 130, 170, 176, 148, 174, 168, 152, 178, 166, 158, 178, 152, 160, 186, 138, 170, 188, 134, 176, 174, 152, 170, 166, 158, 172, 156, 166, 164, 158, 160, 184, 140, 178, 180}, + {166, 168, 146, 166, 172, 170, 162, 174, 160, 162, 176, 154, 174, 156, 170, 176, 152, 156, 184, 142, 170, 174, 156, 162, 170, 158, 170, 158, 154, 174, 156, 166, 170, 154, 166, 172, 154, 166, 174, 154, 158, 174, 154, 158, 168, 158, 178, 156, 162, 184, 146, 176, 188, 148, 170, 176, 150, 158, 180, 150, 170, 170, 146, 168, 160, 160, 174, 156, 170, 170, 152, 158, 168, 168, 160, 176, 152, 162, 164, 158, 168, 156, 162, 182, 150, 174, 168, 146, 180, 180, 160, 164, 180, 162, 158, 172, 164, 170, 154, 164, 170, 158, 156, 174, 156, 162, 172, 148, 168, 170, 154, 162, 178, 150, 168, 168, 152, 178, 160, 172, 176, 160, 166, 180, 154, 166, 170, 162, 174, 168, 164, 166, 152, 166, 172, 148, 174, 166, 148, 168, 172, 156, 160, 176, 148, 162, 172, 152, 160, 154, 158, 164, 146, 162, 166, 150, 156, 170, 142, 164, 172, 154, 162, 174, 150, 170, 160, 160, 154, 160, 154, 168, 150, 166, 178, 136, 158, 176, 142, 160, 170, 154, 164, 162, 156, 176, 136, 164, 164, 158, 162, 176, 152, 162, 172, 156, 154, 182, 158, 162, 170, 158, 168, 156, 168, 184, 152, 166, 188, 152, 162, 168, 172, 158, 174, 164, 178, 164, 164, 166, 156, 170, 166, 154, 168, 160, 160, 158, 178, 152, 158, 182, 152, 172, 164, 160, 174, 150, 170, 178, 142, 176, 168, 164, 160, 178, 154, 166, 172, 156, 172, 168, 164, 182, 150, 172, 172, 160, 164, 182, 146, 166, 172, 154, 166, 170, 150, 178, 154, 166, 174, 152, 162, 182, 142, 164, 174, 158, 166, 170, 166, 158, 188, 148, 168, 184, 156, 180, 158, 168, 174, 156, 160, 172, 152, 162, 182, 154, 170, 158, 168, 170, 154, 166, 168, 164, 164, 164, 146, 176, 170, 154, 158, 180, 162, 148, 176, 146, 166, 168, 148, 180, 154, 160, 186, 146, 174, 180, 148, 168, 170, 158, 158, 188, 146, 170, 168, 158, 170, 162, 160, 182, 150, 162, 178, 156, 156, 178, 152, 158, 170, 164, 170, 166, 154, 176, 154, 176, 168, 146}, + {174, 176, 148, 184, 160, 160, 180, 148, 160, 190, 148, 158, 174, 152, 150, 184, 152, 176, 174, 152, 166, 170, 144, 182, 172, 144, 184, 158, 160, 182, 150, 172, 182, 138, 174, 178, 150, 178, 172, 156, 178, 178, 160, 184, 156, 148, 180, 150, 172, 178, 154, 168, 166, 140, 166, 174, 144, 186, 154, 160, 176, 156, 164, 184, 150, 168, 182, 142, 166, 184, 160, 168, 180, 144, 166, 172, 150, 184, 156, 162, 190, 150, 160, 180, 154, 170, 176, 154, 166, 164, 148, 172, 164, 162, 168, 166, 150, 188, 150, 162, 182, 144, 168, 182, 148, 174, 172, 146, 180, 162, 160, 178, 154, 166, 194, 150, 172, 182, 142, 170, 166, 150, 164, 178, 140, 188, 152, 158, 168, 152, 164, 190, 154, 168, 180, 142, 172, 176, 150, 154, 172, 154, 166, 150, 160, 170, 148, 164, 174, 156, 150, 180, 140, 160, 178, 136, 172, 172, 140, 176, 162, 142, 164, 150, 156, 168, 148, 160, 172, 136, 164, 182, 140, 172, 162, 148, 178, 150, 144, 178, 142, 162, 180, 146, 150, 186, 142, 160, 176, 144, 172, 166, 150, 164, 160, 158, 180, 160, 150, 178, 150, 160, 184, 150, 162, 184, 146, 170, 174, 142, 176, 174, 136, 188, 148, 150, 186, 154, 166, 194, 146, 164, 172, 150, 168, 180, 142, 178, 162, 158, 176, 152, 166, 184, 148, 174, 182, 146, 172, 192, 144, 168, 178, 146, 170, 170, 148, 180, 158, 170, 170, 148, 168, 168, 150, 170, 168, 148, 170, 176, 138, 192, 174, 138, 186, 160, 158, 184, 154, 158, 186, 154, 154, 180, 142, 172, 184, 156, 180, 168, 158, 172, 152, 162, 186, 138, 162, 178, 154, 164, 188, 132, 170, 186, 148, 168, 166, 150, 170, 168, 158, 174, 148, 166, 182, 146, 160, 192, 148, 168, 180, 152, 176, 178, 152, 188, 156, 160, 180, 152, 168, 180, 150, 172, 184, 144, 166, 180, 132, 180, 168, 160, 180, 158, 154, 180, 154, 170, 184, 152, 170, 172, 162, 152, 178, 154, 172, 176, 146, 184, 162, 142, 178, 164, 160, 190, 142, 166, 182, 146}, + {182, 156, 156, 184, 156, 148, 186, 150, 174, 174, 156, 178, 164, 172, 182, 150, 166, 174, 162, 170, 166, 164, 162, 174, 170, 156, 170, 168, 158, 170, 164, 166, 154, 172, 172, 150, 166, 180, 144, 176, 160, 158, 168, 160, 162, 164, 170, 180, 160, 158, 168, 168, 162, 164, 180, 152, 164, 182, 152, 168, 178, 154, 172, 166, 160, 174, 164, 164, 172, 152, 166, 160, 162, 170, 174, 150, 174, 168, 172, 152, 156, 176, 164, 162, 170, 168, 152, 160, 188, 150, 172, 178, 160, 166, 176, 154, 180, 158, 156, 176, 156, 178, 168, 158, 164, 176, 150, 170, 176, 154, 160, 178, 170, 150, 170, 170, 152, 162, 170, 170, 166, 160, 176, 160, 168, 176, 154, 164, 180, 150, 168, 162, 168, 166, 166, 174, 174, 146, 174, 170, 168, 158, 180, 152, 158, 168, 164, 146, 176, 150, 160, 158, 166, 168, 152, 162, 168, 156, 166, 166, 152, 168, 164, 162, 156, 166, 170, 154, 154, 164, 166, 152, 168, 168, 148, 158, 176, 150, 160, 174, 162, 162, 164, 152, 172, 154, 166, 176, 154, 156, 184, 146, 172, 180, 148, 166, 170, 150, 166, 166, 182, 164, 162, 176, 156, 154, 178, 168, 158, 176, 168, 160, 170, 180, 166, 164, 178, 152, 178, 146, 170, 178, 160, 160, 184, 152, 170, 186, 152, 170, 178, 160, 158, 166, 168, 156, 178, 162, 156, 154, 172, 176, 150, 164, 190, 154, 166, 180, 160, 160, 168, 170, 162, 166, 170, 172, 166, 168, 176, 162, 176, 156, 156, 168, 176, 172, 154, 172, 170, 156, 164, 166, 174, 166, 166, 182, 150, 148, 186, 146, 162, 184, 150, 170, 178, 166, 170, 166, 174, 158, 158, 174, 154, 168, 172, 176, 164, 168, 166, 156, 164, 178, 162, 168, 174, 160, 180, 150, 164, 180, 144, 156, 180, 148, 166, 178, 158, 172, 162, 166, 162, 172, 162, 162, 162, 166, 170, 148, 172, 186, 148, 158, 192, 142, 180, 166, 160, 174, 160, 168, 178, 144, 172, 176, 162, 168, 166, 154, 168, 158, 168, 168, 160, 170, 162, 172, 170, 164, 158, 160}, + {158, 174, 176, 168, 158, 180, 156, 166, 182, 150, 178, 186, 152, 160, 188, 146, 178, 176, 154, 172, 158, 168, 176, 154, 162, 178, 148, 170, 176, 152, 170, 168, 154, 172, 168, 166, 182, 164, 166, 176, 166, 166, 190, 150, 180, 184, 146, 172, 174, 154, 176, 164, 156, 178, 154, 174, 170, 170, 154, 182, 148, 172, 178, 150, 174, 184, 142, 172, 184, 148, 176, 166, 166, 172, 168, 162, 180, 142, 182, 182, 146, 174, 182, 154, 172, 178, 154, 178, 166, 158, 180, 164, 170, 180, 146, 170, 178, 142, 178, 170, 164, 160, 180, 148, 190, 164, 148, 178, 160, 172, 178, 158, 168, 176, 150, 182, 180, 158, 168, 174, 160, 164, 164, 170, 168, 162, 172, 174, 154, 174, 178, 148, 180, 172, 144, 174, 172, 150, 186, 152, 150, 178, 158, 162, 180, 154, 168, 186, 138, 168, 172, 142, 174, 154, 162, 172, 160, 158, 174, 146, 164, 176, 154, 160, 172, 142, 174, 172, 146, 166, 170, 148, 172, 162, 142, 168, 154, 162, 162, 152, 158, 174, 130, 184, 166, 154, 164, 164, 156, 176, 162, 152, 180, 146, 158, 176, 158, 162, 184, 136, 180, 166, 150, 176, 174, 154, 176, 172, 168, 174, 152, 168, 172, 162, 172, 164, 164, 170, 166, 160, 174, 164, 152, 176, 176, 152, 176, 150, 150, 176, 154, 160, 190, 148, 170, 184, 138, 186, 176, 168, 180, 168, 164, 184, 148, 170, 172, 164, 168, 170, 166, 160, 180, 146, 176, 164, 158, 164, 174, 142, 186, 158, 160, 180, 152, 170, 174, 146, 174, 164, 160, 176, 170, 158, 166, 160, 170, 174, 172, 160, 176, 158, 176, 178, 138, 170, 190, 136, 182, 184, 146, 176, 180, 156, 176, 154, 160, 174, 142, 182, 164, 152, 178, 170, 150, 174, 168, 164, 178, 174, 156, 188, 174, 158, 192, 140, 162, 186, 146, 168, 200, 130, 170, 194, 154, 170, 164, 172, 164, 160, 168, 172, 154, 176, 172, 148, 176, 172, 152, 176, 184, 158, 172, 166, 158, 166, 166, 162, 182, 142, 184, 182, 144, 168, 182, 158, 160, 172, 164, 172}, + {166, 164, 166, 158, 176, 168, 166, 164, 166, 160, 166, 160, 176, 166, 160, 166, 178, 158, 172, 176, 156, 186, 162, 160, 184, 170, 152, 174, 162, 164, 184, 168, 162, 174, 164, 170, 168, 154, 178, 174, 156, 158, 172, 164, 172, 166, 170, 184, 158, 168, 170, 164, 164, 172, 152, 186, 170, 148, 178, 176, 150, 172, 160, 174, 174, 154, 192, 174, 164, 172, 178, 156, 178, 160, 160, 182, 162, 170, 166, 168, 154, 184, 150, 176, 174, 162, 164, 178, 154, 172, 178, 156, 164, 172, 158, 160, 170, 180, 164, 170, 166, 174, 164, 172, 162, 154, 186, 168, 164, 176, 164, 166, 182, 160, 164, 168, 164, 174, 174, 156, 158, 180, 164, 172, 174, 156, 172, 174, 162, 166, 164, 168, 176, 156, 168, 194, 148, 170, 174, 154, 174, 174, 156, 164, 164, 164, 156, 166, 158, 156, 162, 174, 170, 156, 168, 160, 162, 162, 160, 164, 182, 158, 152, 178, 146, 168, 162, 158, 154, 180, 146, 162, 164, 156, 164, 168, 158, 162, 170, 158, 154, 172, 150, 174, 160, 170, 164, 154, 172, 164, 168, 170, 164, 144, 194, 150, 164, 170, 170, 162, 174, 162, 164, 174, 156, 168, 172, 156, 166, 178, 162, 166, 178, 164, 174, 170, 166, 180, 162, 170, 174, 156, 168, 178, 154, 166, 180, 160, 178, 184, 158, 174, 168, 166, 166, 166, 168, 166, 166, 154, 172, 156, 168, 162, 152, 180, 168, 158, 184, 166, 158, 174, 168, 162, 174, 158, 162, 180, 162, 176, 178, 152, 174, 188, 152, 178, 174, 164, 168, 174, 158, 176, 150, 174, 170, 160, 182, 170, 156, 176, 160, 166, 168, 172, 172, 170, 164, 172, 174, 160, 164, 180, 144, 178, 162, 152, 182, 178, 156, 168, 172, 154, 180, 160, 162, 178, 150, 176, 164, 158, 170, 170, 158, 160, 172, 172, 170, 176, 164, 166, 164, 168, 172, 168, 152, 180, 152, 170, 172, 154, 180, 164, 160, 170, 166, 176, 178, 166, 164, 172, 164, 166, 176, 150, 172, 174, 164, 174, 172, 164, 170, 176, 148, 190, 154, 160, 172, 166, 164, 184}, + {164, 192, 150, 174, 182, 148, 176, 174, 158, 188, 166, 154, 190, 150, 156, 200, 152, 172, 170, 156, 178, 178, 154, 188, 170, 162, 158, 174, 174, 176, 148, 174, 168, 158, 166, 182, 156, 178, 176, 158, 184, 174, 162, 178, 166, 162, 182, 156, 166, 176, 156, 172, 178, 158, 170, 174, 154, 176, 184, 146, 180, 174, 156, 182, 162, 166, 180, 148, 166, 180, 144, 184, 162, 162, 180, 158, 164, 182, 156, 174, 178, 164, 154, 190, 140, 176, 178, 154, 174, 178, 160, 182, 180, 160, 176, 168, 166, 178, 150, 172, 174, 170, 158, 188, 148, 170, 180, 142, 182, 174, 156, 170, 184, 148, 168, 168, 158, 192, 148, 166, 188, 148, 170, 172, 172, 176, 160, 158, 184, 164, 170, 174, 162, 170, 184, 146, 174, 186, 146, 180, 168, 158, 176, 174, 142, 180, 162, 162, 174, 168, 156, 176, 140, 168, 174, 150, 164, 166, 160, 166, 166, 150, 174, 166, 154, 174, 160, 162, 172, 170, 160, 186, 142, 162, 172, 150, 166, 160, 146, 186, 162, 154, 178, 142, 160, 182, 142, 178, 170, 154, 172, 168, 158, 170, 170, 158, 178, 162, 158, 174, 166, 174, 166, 158, 170, 184, 152, 174, 170, 160, 162, 172, 170, 178, 172, 152, 182, 166, 160, 188, 160, 168, 178, 158, 174, 184, 154, 182, 162, 156, 186, 158, 162, 176, 154, 172, 188, 144, 180, 198, 160, 176, 186, 158, 174, 170, 160, 160, 182, 164, 168, 178, 156, 184, 166, 174, 170, 164, 164, 182, 154, 182, 166, 154, 178, 168, 156, 174, 160, 162, 176, 168, 176, 190, 152, 180, 170, 154, 174, 168, 168, 168, 180, 150, 192, 164, 164, 184, 154, 170, 182, 156, 182, 180, 156, 186, 172, 170, 160, 166, 170, 182, 162, 160, 180, 166, 160, 172, 158, 178, 172, 168, 178, 186, 164, 180, 162, 154, 184, 160, 168, 186, 160, 162, 184, 160, 162, 178, 162, 168, 188, 150, 170, 172, 166, 170, 158, 174, 174, 154, 170, 178, 154, 178, 176, 156, 168, 170, 166, 176, 154, 168, 182, 166, 158, 186, 158, 158, 182, 158}, + {170, 152, 180, 190, 140, 164, 200, 140, 176, 174, 158, 162, 180, 166, 180, 168, 156, 186, 162, 172, 182, 146, 176, 192, 138, 180, 186, 158, 172, 168, 172, 168, 160, 180, 172, 162, 178, 190, 140, 164, 200, 142, 178, 188, 144, 182, 188, 148, 188, 166, 164, 172, 158, 172, 182, 158, 172, 172, 154, 160, 186, 166, 170, 178, 164, 178, 170, 182, 178, 166, 166, 192, 154, 178, 188, 156, 172, 176, 154, 172, 186, 160, 184, 166, 162, 184, 154, 170, 184, 148, 178, 178, 154, 160, 198, 146, 176, 174, 160, 168, 180, 168, 176, 170, 164, 186, 154, 178, 186, 156, 182, 178, 158, 182, 182, 174, 170, 172, 166, 178, 164, 174, 180, 154, 172, 192, 148, 172, 186, 142, 182, 170, 158, 178, 158, 162, 186, 156, 168, 182, 140, 184, 188, 148, 172, 190, 146, 162, 180, 168, 170, 166, 172, 182, 162, 160, 176, 156, 172, 184, 134, 176, 176, 150, 172, 168, 160, 172, 156, 150, 174, 148, 164, 180, 156, 158, 182, 146, 168, 170, 152, 162, 184, 156, 180, 168, 162, 178, 162, 170, 180, 162, 174, 172, 148, 178, 174, 152, 186, 172, 154, 170, 168, 168, 176, 162, 170, 184, 158, 168, 188, 150, 172, 184, 148, 178, 180, 158, 182, 148, 178, 176, 158, 164, 188, 164, 164, 188, 148, 166, 192, 154, 176, 192, 150, 174, 174, 160, 182, 158, 176, 172, 154, 174, 180, 162, 176, 180, 142, 180, 178, 158, 174, 154, 176, 178, 158, 168, 180, 148, 170, 186, 152, 170, 188, 152, 184, 184, 162, 168, 192, 158, 170, 168, 172, 180, 148, 164, 196, 148, 182, 176, 156, 166, 180, 154, 176, 176, 156, 180, 170, 164, 172, 158, 162, 186, 146, 170, 184, 150, 178, 174, 158, 176, 168, 174, 180, 168, 182, 174, 156, 158, 188, 154, 164, 192, 146, 164, 204, 144, 180, 176, 148, 178, 176, 162, 176, 172, 156, 188, 150, 166, 178, 152, 176, 174, 166, 170, 180, 176, 174, 162, 172, 188, 148, 184, 184, 150, 170, 186, 162, 166, 192, 148, 180, 182, 154, 180, 162, 170}, + {174, 170, 184, 170, 168, 190, 168, 174, 184, 156, 190, 188, 142, 188, 176, 160, 178, 182, 172, 168, 172, 168, 176, 160, 172, 182, 156, 170, 190, 156, 176, 190, 148, 188, 184, 156, 174, 166, 170, 192, 150, 172, 192, 154, 180, 180, 156, 178, 176, 162, 168, 188, 158, 186, 166, 160, 188, 158, 182, 184, 152, 164, 186, 158, 178, 174, 154, 184, 172, 166, 178, 170, 158, 188, 154, 180, 186, 160, 186, 176, 146, 188, 172, 166, 168, 186, 156, 190, 172, 160, 178, 166, 172, 188, 160, 170, 184, 158, 184, 180, 156, 168, 176, 162, 172, 178, 164, 182, 158, 166, 188, 148, 164, 192, 142, 176, 180, 162, 182, 176, 154, 186, 174, 168, 162, 176, 170, 184, 162, 174, 182, 150, 182, 186, 158, 172, 174, 162, 168, 182, 164, 188, 152, 166, 174, 154, 180, 174, 148, 174, 174, 154, 172, 172, 148, 178, 166, 158, 176, 150, 170, 184, 144, 176, 170, 150, 178, 172, 160, 178, 168, 158, 172, 174, 150, 176, 162, 174, 166, 154, 170, 170, 144, 172, 180, 148, 170, 178, 156, 164, 176, 150, 184, 154, 170, 178, 142, 182, 184, 146, 174, 186, 140, 184, 170, 158, 184, 172, 158, 188, 168, 172, 170, 164, 172, 188, 158, 174, 176, 164, 172, 178, 162, 180, 174, 156, 176, 166, 174, 182, 158, 164, 196, 144, 182, 174, 154, 180, 186, 164, 172, 186, 172, 176, 172, 160, 184, 152, 176, 184, 158, 168, 194, 164, 170, 186, 154, 194, 162, 158, 190, 164, 170, 188, 166, 170, 180, 162, 158, 182, 160, 174, 186, 158, 174, 178, 164, 194, 158, 172, 182, 146, 184, 180, 142, 192, 182, 144, 194, 170, 168, 188, 172, 164, 182, 176, 162, 176, 168, 168, 174, 160, 176, 190, 158, 176, 178, 148, 186, 174, 156, 198, 158, 162, 188, 160, 178, 188, 160, 168, 176, 166, 172, 184, 160, 180, 178, 166, 184, 166, 174, 194, 170, 180, 180, 154, 176, 178, 144, 180, 174, 166, 174, 184, 140, 192, 168, 174, 182, 168, 170, 172, 154, 180, 178, 156, 162, 192, 160, 180}, + {168, 188, 160, 170, 182, 168, 164, 182, 160, 164, 186, 164, 174, 178, 166, 176, 176, 158, 186, 178, 156, 200, 170, 168, 184, 162, 188, 178, 168, 178, 168, 170, 180, 180, 156, 194, 160, 170, 184, 164, 164, 190, 170, 166, 184, 164, 170, 176, 166, 172, 176, 172, 182, 166, 172, 188, 176, 172, 182, 162, 180, 180, 158, 180, 188, 164, 168, 190, 150, 186, 178, 152, 204, 164, 164, 190, 166, 160, 174, 160, 176, 180, 170, 178, 166, 166, 182, 160, 160, 198, 168, 166, 190, 168, 170, 190, 156, 172, 184, 158, 180, 186, 166, 186, 170, 154, 188, 164, 174, 186, 178, 176, 182, 166, 188, 168, 156, 184, 174, 160, 176, 178, 154, 196, 164, 162, 188, 166, 168, 188, 162, 186, 168, 176, 174, 178, 172, 178, 162, 164, 192, 156, 168, 180, 170, 168, 182, 168, 176, 178, 160, 172, 172, 168, 170, 170, 154, 184, 174, 156, 188, 156, 176, 160, 174, 166, 162, 162, 164, 170, 170, 170, 174, 144, 176, 160, 164, 176, 162, 166, 176, 166, 184, 180, 144, 182, 166, 166, 190, 168, 158, 190, 152, 170, 186, 168, 170, 172, 172, 176, 176, 164, 170, 184, 158, 192, 160, 166, 178, 162, 154, 200, 146, 180, 192, 160, 180, 188, 162, 186, 176, 164, 180, 180, 160, 182, 174, 174, 188, 166, 178, 176, 166, 176, 182, 176, 172, 174, 156, 184, 178, 156, 190, 148, 174, 182, 168, 172, 176, 176, 174, 180, 170, 184, 158, 166, 180, 176, 164, 186, 170, 162, 192, 160, 166, 196, 162, 174, 174, 168, 180, 180, 158, 190, 168, 160, 184, 174, 166, 186, 162, 176, 186, 170, 180, 170, 172, 172, 182, 164, 168, 180, 166, 186, 172, 156, 188, 164, 180, 194, 172, 172, 184, 172, 170, 178, 162, 196, 156, 170, 190, 164, 166, 182, 164, 170, 194, 156, 170, 194, 160, 176, 168, 174, 180, 160, 158, 188, 170, 160, 190, 158, 172, 170, 166, 172, 188, 162, 184, 174, 168, 188, 168, 154, 186, 174, 172, 198, 166, 160, 184, 164, 166, 194, 160, 182, 174, 168, 184, 160}, + {174, 176, 178, 182, 162, 174, 184, 174, 182, 170, 162, 196, 168, 160, 200, 164, 176, 186, 158, 180, 190, 146, 186, 174, 180, 186, 166, 176, 174, 174, 168, 180, 184, 166, 188, 158, 186, 184, 150, 202, 174, 160, 180, 174, 170, 182, 168, 182, 190, 168, 178, 182, 164, 180, 182, 168, 182, 170, 168, 186, 180, 182, 190, 164, 166, 186, 164, 172, 188, 162, 170, 184, 158, 180, 176, 162, 194, 174, 170, 182, 174, 172, 188, 166, 182, 188, 170, 184, 180, 164, 188, 184, 144, 198, 176, 160, 190, 166, 172, 192, 160, 178, 184, 166, 182, 182, 166, 184, 180, 158, 182, 176, 164, 180, 172, 184, 186, 172, 162, 188, 170, 174, 194, 164, 188, 182, 160, 184, 176, 172, 180, 170, 178, 180, 164, 182, 186, 162, 186, 190, 158, 176, 176, 156, 178, 168, 164, 182, 176, 166, 182, 168, 174, 174, 166, 182, 184, 160, 178, 172, 162, 194, 176, 160, 178, 174, 166, 180, 168, 158, 188, 158, 164, 198, 158, 184, 174, 166, 182, 168, 152, 176, 166, 174, 168, 166, 168, 174, 150, 184, 172, 166, 182, 180, 156, 192, 172, 152, 192, 164, 170, 178, 174, 174, 184, 166, 174, 176, 166, 178, 188, 166, 190, 170, 164, 192, 164, 170, 190, 158, 170, 180, 174, 176, 192, 166, 172, 192, 168, 186, 168, 168, 184, 170, 172, 176, 168, 184, 174, 172, 182, 184, 164, 180, 172, 180, 176, 184, 170, 186, 182, 164, 188, 170, 182, 172, 170, 170, 204, 158, 182, 190, 148, 188, 184, 162, 192, 164, 166, 180, 180, 172, 178, 168, 174, 182, 170, 172, 184, 158, 180, 178, 170, 194, 172, 162, 192, 168, 174, 186, 164, 174, 188, 150, 186, 186, 162, 182, 174, 166, 184, 170, 158, 176, 188, 168, 182, 174, 174, 180, 162, 176, 188, 170, 186, 184, 156, 194, 176, 176, 188, 176, 166, 186, 172, 186, 174, 168, 184, 178, 174, 192, 172, 172, 168, 176, 168, 188, 166, 174, 184, 168, 170, 198, 156, 194, 178, 144, 180, 176, 164, 194, 170, 178, 186, 170, 178, 178, 170, 178}, + {160, 184, 176, 164, 192, 178, 172, 192, 160, 186, 200, 168, 182, 186, 162, 188, 184, 154, 198, 184, 158, 192, 178, 172, 188, 182, 162, 198, 164, 178, 194, 168, 178, 194, 146, 202, 188, 162, 194, 172, 168, 202, 158, 182, 186, 164, 180, 192, 160, 176, 210, 152, 184, 192, 158, 204, 166, 164, 204, 164, 176, 186, 178, 184, 190, 170, 186, 178, 156, 200, 180, 162, 190, 184, 164, 194, 180, 162, 204, 180, 172, 186, 170, 174, 182, 168, 188, 188, 150, 202, 176, 174, 194, 162, 174, 190, 164, 184, 186, 164, 186, 190, 168, 186, 190, 166, 186, 192, 158, 196, 160, 184, 194, 174, 176, 192, 158, 186, 194, 156, 188, 180, 150, 190, 174, 164, 184, 182, 170, 192, 182, 166, 194, 164, 176, 192, 152, 196, 188, 160, 200, 172, 170, 204, 166, 170, 196, 164, 172, 196, 164, 184, 184, 168, 168, 176, 156, 188, 176, 162, 182, 162, 168, 184, 168, 162, 198, 156, 182, 182, 144, 198, 174, 158, 186, 186, 154, 188, 174, 172, 182, 170, 168, 182, 168, 178, 186, 156, 178, 188, 152, 184, 176, 156, 186, 170, 162, 202, 152, 172, 202, 150, 192, 174, 160, 188, 182, 162, 194, 188, 158, 184, 162, 172, 184, 186, 166, 190, 164, 180, 206, 162, 182, 190, 156, 208, 180, 156, 194, 172, 172, 194, 166, 180, 186, 164, 180, 180, 166, 186, 196, 166, 182, 182, 164, 202, 172, 160, 194, 162, 172, 192, 168, 184, 204, 152, 194, 186, 152, 204, 180, 158, 200, 172, 170, 194, 168, 174, 198, 180, 172, 188, 162, 176, 194, 152, 190, 186, 162, 212, 178, 168, 196, 166, 172, 196, 154, 186, 186, 146, 200, 182, 162, 194, 178, 164, 184, 198, 152, 200, 166, 180, 188, 174, 176, 194, 160, 184, 192, 170, 188, 186, 166, 200, 158, 174, 190, 156, 182, 176, 152, 174, 194, 152, 176, 184, 166, 194, 182, 160, 196, 178, 168, 190, 180, 178, 198, 172, 184, 172, 168, 194, 188, 150, 196, 178, 156, 202, 188, 162, 194, 180, 166, 192, 168, 176, 188, 168, 180, 184}, + {198, 182, 168, 204, 172, 180, 184, 192, 180, 188, 182, 174, 188, 182, 190, 190, 166, 190, 190, 182, 188, 174, 176, 192, 160, 182, 204, 164, 192, 180, 178, 192, 174, 186, 198, 162, 188, 190, 168, 180, 198, 170, 188, 202, 174, 174, 196, 170, 194, 180, 154, 196, 188, 162, 198, 164, 188, 198, 168, 180, 190, 180, 182, 176, 178, 180, 190, 190, 186, 178, 174, 192, 182, 178, 200, 172, 176, 206, 156, 182, 190, 180, 186, 172, 182, 186, 184, 170, 200, 172, 178, 202, 174, 180, 186, 178, 188, 194, 170, 186, 184, 170, 190, 172, 176, 198, 176, 168, 204, 172, 184, 188, 184, 168, 192, 178, 184, 176, 188, 186, 184, 180, 194, 166, 186, 194, 172, 172, 196, 176, 180, 198, 168, 184, 196, 174, 198, 172, 168, 196, 166, 168, 190, 176, 182, 190, 180, 170, 188, 180, 174, 176, 162, 190, 190, 162, 194, 182, 172, 194, 172, 176, 192, 168, 170, 192, 156, 180, 178, 176, 190, 156, 178, 180, 184, 152, 186, 176, 166, 184, 178, 166, 188, 166, 178, 184, 164, 182, 176, 160, 202, 164, 170, 194, 176, 168, 186, 172, 180, 180, 176, 184, 180, 186, 180, 176, 170, 192, 166, 178, 188, 182, 178, 192, 180, 166, 194, 166, 190, 176, 164, 194, 178, 180, 188, 170, 178, 192, 184, 172, 186, 184, 178, 186, 180, 182, 196, 178, 200, 182, 170, 194, 180, 154, 192, 166, 182, 194, 172, 174, 190, 180, 184, 174, 192, 184, 178, 186, 188, 186, 168, 194, 180, 182, 184, 180, 188, 196, 162, 176, 198, 160, 202, 186, 176, 190, 176, 172, 190, 178, 176, 194, 174, 182, 178, 184, 188, 186, 192, 192, 190, 174, 192, 174, 166, 198, 178, 164, 208, 174, 184, 168, 184, 180, 186, 190, 190, 170, 170, 194, 184, 168, 190, 178, 186, 200, 166, 182, 188, 186, 186, 194, 170, 186, 198, 168, 188, 188, 174, 188, 170, 178, 198, 160, 190, 190, 174, 180, 174, 202, 176, 174, 188, 194, 188, 172, 188, 178, 170, 202, 162, 180, 198, 178, 180, 194, 170, 192, 190, 172}, + {182, 198, 186, 184, 208, 170, 196, 182, 188, 190, 178, 188, 192, 188, 184, 192, 188, 170, 212, 170, 194, 204, 180, 176, 200, 180, 198, 184, 172, 202, 180, 178, 198, 192, 184, 192, 182, 194, 204, 178, 180, 208, 168, 180, 214, 180, 188, 184, 168, 196, 196, 178, 210, 174, 192, 202, 166, 188, 194, 184, 192, 200, 168, 204, 182, 176, 206, 176, 180, 206, 186, 158, 210, 186, 166, 208, 166, 192, 200, 166, 198, 182, 192, 202, 182, 188, 198, 188, 180, 198, 190, 182, 200, 176, 192, 170, 182, 188, 190, 184, 198, 180, 180, 206, 172, 176, 208, 180, 186, 200, 178, 192, 204, 170, 188, 190, 176, 196, 178, 190, 188, 182, 184, 188, 176, 198, 202, 176, 194, 204, 154, 202, 198, 172, 192, 188, 182, 208, 182, 178, 204, 174, 194, 194, 164, 190, 182, 190, 178, 186, 178, 198, 180, 170, 200, 180, 170, 206, 178, 172, 202, 184, 178, 196, 174, 192, 204, 184, 184, 166, 178, 198, 176, 174, 198, 178, 186, 182, 180, 184, 192, 158, 194, 190, 164, 192, 178, 178, 196, 184, 174, 202, 176, 162, 204, 172, 196, 190, 166, 190, 186, 178, 190, 184, 176, 204, 176, 180, 194, 180, 180, 198, 174, 194, 202, 166, 200, 184, 176, 198, 184, 178, 192, 190, 168, 194, 182, 188, 184, 178, 208, 188, 170, 198, 196, 184, 188, 190, 166, 208, 184, 166, 204, 206, 182, 210, 168, 190, 204, 172, 184, 196, 190, 186, 178, 194, 186, 180, 182, 198, 182, 188, 196, 168, 190, 192, 166, 194, 210, 162, 202, 194, 174, 204, 168, 186, 200, 186, 196, 196, 168, 194, 192, 194, 190, 182, 170, 200, 182, 172, 192, 198, 184, 200, 174, 182, 208, 172, 180, 202, 176, 196, 188, 188, 188, 188, 168, 210, 180, 190, 200, 164, 196, 188, 186, 170, 210, 196, 180, 188, 168, 192, 192, 168, 198, 184, 182, 208, 172, 188, 192, 182, 192, 212, 168, 192, 194, 182, 198, 178, 180, 202, 176, 188, 202, 170, 184, 210, 168, 174, 220, 158, 202, 180, 174, 194, 194, 176, 198, 182}, + {186, 212, 176, 200, 190, 182, 218, 186, 182, 212, 184, 198, 216, 178, 186, 226, 178, 192, 204, 180, 190, 206, 204, 174, 202, 198, 190, 198, 194, 190, 196, 188, 212, 180, 192, 208, 180, 202, 190, 194, 208, 180, 200, 204, 172, 204, 212, 186, 194, 202, 184, 190, 192, 200, 194, 214, 188, 192, 210, 184, 202, 188, 200, 200, 192, 192, 198, 188, 200, 204, 194, 204, 184, 184, 212, 180, 204, 194, 188, 202, 194, 192, 184, 192, 208, 182, 214, 190, 192, 198, 174, 212, 182, 196, 230, 200, 176, 208, 194, 188, 212, 186, 210, 198, 200, 194, 182, 204, 176, 200, 200, 180, 202, 200, 202, 192, 202, 190, 198, 198, 180, 182, 222, 206, 176, 208, 200, 190, 208, 186, 192, 196, 202, 196, 194, 204, 170, 212, 190, 186, 216, 186, 184, 212, 202, 190, 182, 198, 194, 186, 198, 200, 178, 210, 186, 172, 210, 190, 188, 194, 180, 200, 200, 186, 182, 200, 176, 186, 212, 180, 178, 216, 184, 182, 200, 192, 178, 202, 180, 202, 184, 196, 192, 192, 186, 190, 192, 180, 188, 190, 190, 202, 200, 194, 174, 190, 192, 188, 186, 196, 190, 182, 202, 174, 194, 204, 178, 210, 194, 168, 218, 182, 178, 198, 198, 200, 208, 200, 176, 196, 210, 186, 196, 198, 188, 198, 196, 184, 196, 190, 194, 200, 190, 198, 172, 200, 210, 166, 214, 208, 184, 202, 192, 172, 204, 202, 190, 192, 198, 188, 210, 196, 190, 216, 188, 196, 228, 168, 202, 206, 182, 202, 212, 192, 204, 204, 198, 178, 196, 202, 190, 190, 202, 186, 196, 184, 202, 180, 198, 202, 190, 198, 180, 200, 214, 182, 206, 208, 192, 190, 208, 170, 196, 228, 186, 186, 200, 188, 202, 188, 204, 196, 196, 194, 206, 198, 174, 214, 194, 184, 202, 212, 178, 196, 190, 202, 176, 196, 206, 188, 186, 218, 176, 210, 196, 186, 214, 200, 190, 198, 202, 180, 206, 206, 186, 198, 190, 184, 206, 200, 176, 212, 208, 178, 198, 190, 192, 206, 186, 208, 184, 204, 196, 192, 186, 182, 212, 196, 200, 190}, + {238, 194, 228, 226, 188, 226, 234, 200, 226, 212, 216, 222, 210, 214, 236, 206, 208, 238, 212, 204, 220, 214, 228, 234, 202, 230, 218, 210, 222, 206, 214, 240, 194, 220, 248, 160, 254, 204, 200, 236, 212, 214, 246, 216, 190, 244, 218, 194, 246, 220, 194, 244, 210, 200, 224, 206, 218, 230, 194, 224, 222, 206, 238, 204, 216, 236, 210, 212, 222, 198, 236, 214, 214, 230, 212, 188, 238, 218, 208, 234, 210, 198, 240, 218, 192, 256, 182, 218, 246, 182, 244, 226, 196, 220, 210, 226, 208, 220, 206, 234, 204, 210, 218, 214, 224, 202, 220, 212, 226, 204, 234, 216, 200, 226, 210, 194, 246, 184, 236, 258, 188, 212, 234, 174, 238, 228, 206, 230, 206, 198, 234, 218, 198, 232, 228, 194, 228, 218, 214, 220, 194, 212, 216, 218, 230, 194, 208, 234, 202, 220, 210, 206, 222, 222, 200, 222, 224, 198, 220, 226, 192, 244, 206, 188, 238, 212, 192, 240, 214, 188, 220, 200, 210, 230, 188, 226, 212, 200, 218, 206, 200, 222, 206, 212, 214, 214, 214, 222, 210, 198, 230, 194, 232, 212, 182, 232, 218, 200, 234, 184, 200, 244, 190, 206, 230, 198, 216, 218, 212, 196, 242, 198, 218, 228, 194, 224, 212, 206, 220, 202, 226, 214, 216, 210, 224, 214, 216, 236, 186, 240, 190, 220, 248, 186, 222, 228, 202, 226, 214, 198, 228, 238, 200, 216, 232, 184, 240, 226, 186, 244, 216, 188, 240, 200, 202, 232, 204, 218, 222, 200, 232, 212, 216, 210, 228, 204, 232, 212, 206, 236, 228, 202, 216, 210, 218, 230, 188, 224, 224, 204, 242, 238, 166, 248, 200, 216, 234, 202, 218, 244, 210, 214, 216, 220, 216, 220, 214, 218, 222, 202, 208, 230, 206, 220, 212, 218, 214, 190, 240, 216, 206, 230, 222, 206, 248, 222, 184, 252, 210, 196, 240, 206, 194, 252, 204, 210, 216, 210, 218, 234, 192, 224, 226, 186, 226, 228, 186, 254, 212, 210, 228, 198, 234, 206, 210, 226, 208, 208, 228, 208, 220, 226, 214, 210, 254, 198, 198, 240, 206, 210}, + {206, 210, 236, 222, 206, 216, 216, 226, 222, 210, 234, 206, 218, 210, 236, 202, 232, 236, 212, 200, 234, 208, 236, 202, 242, 208, 212, 254, 188, 204, 256, 200, 214, 238, 202, 234, 212, 230, 210, 232, 214, 226, 220, 198, 224, 226, 202, 232, 220, 204, 246, 212, 198, 240, 224, 208, 224, 220, 228, 206, 220, 216, 208, 220, 210, 226, 236, 208, 210, 226, 228, 216, 216, 234, 226, 212, 226, 188, 238, 230, 200, 242, 208, 184, 254, 202, 220, 220, 232, 224, 214, 228, 204, 224, 230, 236, 204, 210, 236, 208, 220, 204, 218, 212, 236, 212, 216, 230, 208, 228, 216, 204, 250, 208, 222, 254, 190, 208, 234, 220, 220, 216, 230, 220, 222, 210, 206, 242, 208, 228, 216, 198, 228, 222, 216, 230, 218, 220, 232, 194, 234, 200, 228, 230, 214, 220, 222, 216, 214, 222, 212, 222, 216, 220, 230, 224, 200, 216, 216, 202, 222, 238, 200, 232, 212, 196, 232, 224, 202, 238, 206, 214, 212, 214, 212, 216, 232, 204, 210, 224, 202, 220, 212, 226, 212, 204, 234, 198, 216, 232, 176, 236, 240, 192, 212, 220, 202, 234, 210, 196, 236, 208, 210, 238, 210, 200, 216, 214, 214, 212, 218, 206, 232, 206, 204, 234, 214, 224, 212, 206, 232, 222, 208, 222, 206, 238, 202, 210, 220, 214, 214, 226, 212, 214, 226, 218, 198, 226, 216, 210, 252, 216, 210, 224, 196, 234, 216, 216, 218, 224, 206, 232, 206, 214, 226, 218, 228, 216, 228, 218, 210, 216, 220, 204, 226, 224, 224, 210, 220, 208, 224, 232, 216, 220, 246, 202, 208, 238, 190, 226, 226, 204, 232, 210, 218, 210, 226, 222, 220, 242, 212, 192, 236, 216, 220, 222, 212, 222, 224, 214, 220, 210, 224, 210, 228, 246, 192, 232, 216, 218, 222, 228, 212, 226, 218, 216, 206, 224, 216, 234, 214, 232, 210, 220, 198, 246, 218, 190, 258, 224, 198, 218, 218, 218, 216, 228, 218, 210, 230, 222, 190, 216, 240, 216, 220, 234, 220, 210, 210, 222, 218, 222, 212, 230, 208, 202, 240, 200, 206, 244}, + {238, 214, 200, 206, 220, 212, 226, 196, 222, 214, 212, 220, 200, 212, 214, 202, 228, 218, 198, 220, 212, 220, 190, 228, 204, 212, 206, 210, 212, 226, 198, 228, 198, 202, 210, 234, 196, 210, 220, 204, 228, 210, 216, 206, 218, 222, 200, 210, 228, 212, 204, 218, 208, 204, 220, 218, 208, 204, 216, 218, 214, 208, 214, 206, 202, 246, 204, 192, 232, 206, 222, 196, 204, 216, 226, 206, 198, 228, 228, 200, 228, 204, 228, 222, 200, 212, 216, 200, 218, 218, 226, 194, 202, 228, 210, 192, 234, 208, 216, 210, 208, 212, 236, 194, 202, 224, 214, 208, 218, 200, 210, 220, 196, 228, 224, 192, 220, 230, 204, 222, 194, 222, 206, 222, 208, 202, 220, 214, 206, 228, 200, 224, 218, 200, 206, 200, 228, 208, 208, 214, 204, 206, 232, 196, 208, 216, 182, 224, 226, 186, 224, 220, 188, 226, 214, 206, 228, 204, 216, 184, 220, 206, 210, 216, 186, 214, 226, 216, 204, 196, 220, 208, 210, 196, 212, 220, 202, 194, 222, 194, 202, 210, 216, 206, 218, 214, 194, 220, 200, 184, 236, 208, 194, 218, 214, 188, 218, 194, 218, 222, 194, 212, 222, 194, 218, 212, 198, 216, 196, 228, 208, 204, 198, 204, 218, 220, 200, 214, 192, 216, 196, 220, 204, 210, 226, 182, 218, 216, 206, 210, 200, 194, 234, 216, 188, 216, 228, 198, 206, 230, 208, 202, 208, 210, 226, 210, 204, 208, 214, 216, 208, 198, 224, 196, 220, 206, 210, 202, 242, 186, 212, 216, 200, 234, 216, 196, 198, 226, 210, 194, 220, 214, 222, 212, 200, 230, 224, 200, 234, 206, 204, 220, 210, 222, 202, 210, 218, 210, 216, 216, 208, 218, 216, 216, 202, 218, 188, 222, 208, 224, 210, 214, 202, 214, 208, 200, 228, 222, 196, 206, 206, 218, 238, 212, 202, 212, 202, 242, 208, 202, 224, 206, 202, 218, 204, 220, 196, 234, 210, 212, 226, 204, 218, 224, 190, 218, 212, 234, 202, 198, 224, 220, 206, 198, 202, 224, 238, 192, 220, 214, 214, 208, 228, 200, 212, 222, 214, 202, 230, 188}, + {214, 218, 218, 196, 208, 224, 204, 222, 194, 204, 216, 208, 190, 200, 218, 224, 206, 192, 226, 218, 202, 210, 218, 206, 218, 188, 190, 226, 194, 214, 206, 222, 198, 224, 198, 216, 230, 192, 214, 224, 202, 214, 194, 204, 222, 210, 218, 204, 208, 214, 206, 206, 220, 198, 204, 208, 212, 180, 224, 198, 222, 204, 198, 220, 214, 200, 200, 224, 204, 216, 210, 208, 212, 200, 196, 230, 204, 192, 228, 200, 202, 210, 202, 206, 230, 212, 178, 230, 218, 214, 202, 208, 214, 202, 204, 208, 192, 218, 216, 214, 188, 210, 196, 230, 206, 198, 218, 222, 192, 224, 200, 200, 218, 216, 188, 228, 218, 214, 202, 202, 216, 220, 202, 214, 218, 198, 204, 208, 202, 210, 200, 210, 210, 216, 208, 212, 212, 218, 206, 194, 218, 210, 208, 220, 210, 204, 222, 196, 202, 222, 194, 206, 230, 190, 202, 204, 198, 210, 218, 192, 200, 222, 208, 194, 214, 194, 206, 220, 184, 220, 194, 204, 216, 200, 194, 200, 210, 226, 194, 184, 240, 204, 194, 188, 208, 208, 218, 182, 202, 212, 200, 212, 210, 186, 216, 214, 186, 210, 216, 196, 210, 208, 184, 218, 208, 200, 214, 190, 216, 190, 212, 210, 204, 204, 210, 218, 188, 214, 214, 194, 208, 194, 206, 200, 196, 210, 220, 190, 204, 218, 206, 210, 198, 212, 222, 204, 188, 236, 208, 210, 208, 194, 216, 218, 194, 216, 218, 202, 208, 210, 218, 186, 220, 206, 210, 206, 198, 206, 188, 230, 210, 194, 218, 206, 192, 224, 214, 204, 222, 214, 198, 208, 192, 214, 216, 196, 200, 222, 212, 208, 224, 198, 224, 222, 194, 200, 204, 214, 198, 206, 200, 208, 208, 214, 202, 218, 212, 200, 222, 210, 194, 210, 206, 216, 188, 226, 200, 210, 218, 192, 204, 226, 204, 206, 234, 200, 210, 206, 200, 202, 212, 220, 210, 208, 204, 206, 208, 200, 214, 194, 222, 216, 202, 204, 216, 200, 232, 188, 222, 204, 208, 200, 234, 196, 222, 202, 192, 250, 186, 180, 234, 214, 204, 206, 200, 196, 214, 220, 176, 224}, + {204, 194, 238, 188, 214, 210, 206, 212, 192, 218, 216, 214, 204, 208, 212, 198, 214, 198, 212, 204, 202, 200, 204, 220, 208, 204, 202, 212, 212, 200, 232, 190, 214, 204, 200, 212, 200, 214, 204, 210, 204, 226, 202, 212, 216, 196, 202, 196, 212, 200, 208, 208, 198, 218, 208, 214, 208, 188, 226, 196, 222, 194, 198, 216, 214, 196, 198, 226, 200, 214, 206, 206, 218, 216, 202, 194, 220, 202, 204, 218, 202, 222, 188, 228, 204, 194, 226, 200, 206, 198, 226, 188, 222, 208, 204, 228, 188, 216, 202, 216, 218, 210, 200, 202, 220, 192, 206, 216, 188, 230, 182, 232, 210, 202, 210, 206, 202, 198, 230, 186, 222, 214, 194, 214, 200, 220, 206, 212, 216, 206, 212, 194, 218, 194, 212, 208, 196, 220, 208, 214, 194, 220, 200, 214, 202, 196, 226, 176, 226, 200, 198, 218, 194, 216, 202, 210, 210, 212, 196, 206, 236, 192, 192, 226, 202, 212, 198, 212, 204, 220, 198, 204, 208, 190, 224, 186, 210, 208, 198, 196, 200, 208, 206, 196, 200, 204, 202, 198, 216, 192, 206, 212, 220, 194, 190, 230, 188, 224, 192, 216, 200, 204, 214, 212, 190, 212, 208, 182, 204, 214, 186, 202, 204, 218, 188, 204, 210, 208, 198, 198, 212, 190, 208, 208, 186, 216, 198, 196, 210, 186, 232, 198, 200, 208, 222, 186, 208, 210, 198, 216, 198, 208, 208, 206, 206, 198, 214, 210, 216, 198, 192, 224, 194, 206, 208, 212, 194, 226, 200, 198, 204, 206, 236, 180, 210, 224, 192, 214, 208, 212, 196, 232, 188, 198, 234, 182, 220, 202, 204, 214, 196, 222, 202, 220, 202, 214, 212, 204, 218, 196, 228, 200, 214, 206, 200, 202, 200, 222, 188, 224, 210, 194, 220, 206, 220, 190, 210, 212, 208, 200, 206, 224, 178, 222, 212, 194, 220, 188, 228, 204, 222, 192, 216, 210, 192, 214, 204, 222, 206, 180, 228, 196, 228, 182, 232, 202, 210, 198, 204, 236, 174, 214, 208, 188, 210, 200, 216, 190, 220, 208, 194, 212, 208, 218, 194, 228, 206, 208, 220, 212}, + {182, 232, 186, 192, 206, 152, 240, 176, 186, 228, 148, 226, 178, 174, 228, 184, 194, 224, 172, 210, 220, 168, 216, 192, 214, 188, 194, 214, 152, 240, 196, 158, 236, 178, 216, 202, 174, 218, 194, 204, 204, 178, 216, 204, 154, 224, 196, 198, 214, 168, 216, 190, 196, 188, 190, 228, 172, 208, 212, 172, 234, 166, 198, 220, 178, 206, 212, 156, 234, 212, 160, 210, 196, 194, 200, 192, 216, 178, 240, 182, 178, 232, 162, 210, 206, 176, 218, 176, 212, 208, 182, 226, 182, 174, 246, 166, 208, 212, 158, 218, 192, 184, 198, 196, 214, 174, 212, 186, 196, 226, 174, 204, 212, 170, 222, 198, 194, 226, 186, 192, 212, 182, 214, 194, 200, 206, 174, 218, 186, 184, 224, 172, 196, 186, 200, 194, 188, 202, 194, 186, 218, 166, 204, 234, 152, 244, 178, 182, 236, 164, 218, 204, 186, 214, 176, 202, 204, 168, 216, 176, 208, 196, 180, 216, 188, 182, 212, 166, 216, 182, 190, 200, 168, 220, 180, 168, 222, 180, 198, 224, 154, 198, 216, 182, 200, 194, 200, 186, 198, 198, 176, 234, 192, 174, 226, 166, 194, 202, 164, 224, 178, 198, 190, 166, 226, 178, 178, 214, 180, 186, 204, 170, 204, 200, 176, 216, 166, 216, 188, 196, 186, 176, 234, 174, 190, 216, 158, 226, 208, 166, 212, 202, 176, 208, 180, 204, 200, 186, 208, 184, 214, 208, 160, 234, 182, 196, 190, 196, 208, 166, 206, 194, 180, 220, 172, 182, 230, 170, 226, 198, 164, 232, 180, 196, 214, 176, 222, 192, 176, 192, 198, 212, 184, 216, 190, 184, 230, 188, 194, 230, 176, 194, 214, 172, 214, 204, 186, 206, 168, 230, 188, 162, 252, 170, 202, 200, 186, 194, 198, 202, 174, 214, 200, 160, 214, 204, 186, 232, 182, 180, 236, 176, 216, 208, 180, 228, 192, 192, 198, 186, 214, 168, 210, 218, 174, 202, 192, 196, 202, 188, 194, 196, 184, 208, 174, 204, 202, 178, 234, 162, 198, 232, 164, 222, 206, 172, 228, 198, 198, 208, 198, 212, 182, 216, 188, 180, 210, 180, 192, 202}, + {188, 180, 190, 184, 188, 174, 196, 178, 190, 184, 184, 184, 190, 188, 170, 190, 184, 166, 190, 196, 170, 214, 168, 166, 198, 188, 212, 160, 178, 206, 166, 192, 174, 192, 188, 170, 192, 168, 188, 208, 168, 192, 186, 182, 188, 172, 202, 184, 178, 200, 166, 182, 196, 156, 172, 202, 168, 190, 186, 162, 212, 170, 202, 184, 186, 182, 184, 188, 186, 172, 208, 168, 178, 182, 168, 216, 164, 182, 208, 160, 210, 166, 192, 198, 168, 188, 168, 182, 210, 158, 202, 172, 190, 192, 164, 196, 196, 178, 190, 170, 200, 178, 190, 182, 182, 178, 200, 174, 180, 194, 170, 192, 186, 176, 204, 176, 184, 186, 182, 192, 170, 196, 186, 158, 222, 156, 192, 182, 178, 204, 170, 180, 200, 164, 202, 178, 182, 208, 166, 204, 174, 180, 208, 160, 200, 170, 186, 176, 180, 194, 176, 182, 200, 180, 184, 180, 174, 186, 180, 178, 188, 168, 168, 192, 176, 196, 180, 182, 194, 170, 186, 202, 176, 190, 170, 194, 176, 164, 194, 166, 194, 180, 170, 194, 184, 180, 174, 168, 220, 156, 176, 200, 158, 192, 176, 196, 184, 176, 186, 166, 186, 188, 166, 194, 172, 178, 186, 172, 192, 184, 174, 180, 182, 174, 186, 182, 180, 168, 182, 190, 174, 180, 188, 160, 202, 170, 182, 192, 148, 210, 184, 166, 204, 156, 188, 172, 180, 198, 166, 190, 180, 178, 214, 164, 194, 172, 176, 190, 170, 196, 184, 168, 186, 168, 182, 192, 188, 178, 192, 180, 184, 182, 186, 194, 184, 186, 180, 176, 206, 170, 182, 196, 172, 208, 166, 184, 196, 154, 224, 174, 182, 202, 138, 200, 170, 180, 216, 170, 180, 194, 178, 190, 166, 208, 176, 174, 202, 164, 210, 170, 182, 188, 176, 190, 190, 170, 184, 190, 176, 192, 182, 160, 202, 188, 180, 200, 168, 190, 196, 176, 186, 176, 206, 170, 184, 176, 172, 210, 182, 182, 200, 156, 208, 182, 172, 214, 156, 210, 182, 172, 186, 180, 188, 172, 182, 188, 178, 202, 160, 182, 214, 172, 184, 176, 164, 196, 192, 184, 196, 164}, + {198, 154, 172, 186, 152, 160, 180, 170, 180, 162, 178, 182, 162, 176, 182, 148, 180, 190, 162, 166, 170, 174, 164, 180, 166, 158, 180, 172, 160, 180, 160, 180, 162, 184, 164, 154, 174, 176, 150, 194, 170, 170, 168, 170, 166, 194, 158, 162, 170, 182, 166, 168, 176, 180, 172, 160, 174, 188, 148, 192, 154, 160, 184, 160, 162, 172, 164, 182, 168, 156, 180, 158, 176, 182, 166, 168, 176, 164, 182, 148, 194, 148, 186, 148, 176, 186, 148, 170, 192, 160, 194, 160, 160, 190, 168, 168, 162, 164, 178, 172, 168, 156, 178, 172, 164, 172, 168, 174, 176, 144, 164, 206, 152, 168, 164, 170, 188, 178, 148, 192, 166, 186, 162, 176, 164, 176, 176, 174, 162, 180, 158, 178, 156, 174, 172, 158, 176, 170, 164, 188, 160, 150, 184, 164, 168, 170, 168, 168, 156, 164, 188, 150, 176, 166, 162, 180, 180, 158, 164, 174, 180, 156, 182, 162, 166, 170, 164, 172, 166, 164, 182, 156, 168, 168, 150, 176, 190, 142, 186, 172, 168, 168, 170, 160, 164, 162, 166, 154, 186, 154, 162, 192, 160, 174, 156, 188, 154, 152, 178, 174, 160, 180, 142, 178, 178, 152, 174, 172, 154, 182, 152, 174, 168, 174, 166, 170, 166, 168, 156, 178, 148, 180, 160, 170, 162, 164, 158, 180, 156, 166, 158, 166, 164, 160, 192, 158, 154, 182, 168, 152, 186, 158, 180, 174, 180, 160, 158, 168, 162, 180, 168, 162, 178, 154, 172, 174, 174, 168, 172, 146, 192, 168, 146, 176, 170, 152, 194, 156, 172, 160, 188, 154, 174, 182, 168, 164, 166, 166, 188, 154, 188, 154, 172, 194, 164, 172, 184, 162, 180, 184, 156, 178, 182, 156, 168, 168, 176, 168, 170, 176, 164, 184, 142, 184, 170, 168, 166, 144, 168, 196, 142, 184, 178, 156, 186, 180, 152, 188, 164, 164, 176, 166, 196, 158, 164, 172, 166, 168, 172, 166, 156, 196, 166, 142, 182, 180, 156, 196, 160, 154, 194, 144, 174, 182, 164, 168, 180, 150, 184, 166, 164, 182, 152, 180, 180, 158, 166, 172, 176, 156}, + {142, 148, 148, 150, 144, 140, 134, 158, 142, 148, 134, 142, 134, 150, 140, 146, 150, 128, 158, 146, 144, 134, 160, 146, 140, 162, 142, 144, 136, 164, 134, 148, 160, 144, 154, 142, 144, 138, 148, 162, 124, 168, 138, 146, 154, 146, 132, 146, 176, 120, 142, 150, 144, 146, 138, 154, 126, 144, 150, 140, 156, 150, 150, 132, 154, 160, 136, 158, 144, 152, 150, 150, 138, 158, 154, 140, 154, 134, 170, 128, 154, 152, 124, 174, 130, 146, 146, 142, 158, 118, 162, 138, 152, 148, 136, 146, 150, 144, 128, 154, 158, 140, 142, 146, 140, 126, 154, 156, 132, 170, 140, 138, 150, 162, 142, 126, 168, 150, 150, 148, 152, 132, 160, 140, 138, 154, 146, 152, 128, 162, 144, 122, 166, 140, 140, 156, 140, 146, 150, 158, 128, 150, 142, 148, 134, 168, 158, 124, 166, 150, 140, 142, 150, 148, 130, 158, 144, 158, 144, 138, 134, 166, 144, 134, 164, 138, 140, 146, 142, 158, 130, 162, 126, 136, 150, 146, 146, 144, 148, 112, 162, 138, 136, 146, 158, 144, 128, 164, 152, 128, 148, 146, 144, 138, 152, 136, 142, 154, 134, 140, 156, 140, 136, 150, 142, 130, 150, 144, 134, 132, 150, 148, 138, 136, 144, 152, 128, 146, 152, 136, 144, 136, 154, 142, 142, 138, 144, 170, 128, 154, 156, 140, 148, 142, 150, 130, 162, 154, 126, 154, 144, 150, 154, 140, 130, 160, 152, 130, 140, 152, 152, 126, 150, 138, 148, 148, 148, 148, 126, 158, 140, 140, 170, 152, 144, 148, 150, 134, 160, 144, 136, 166, 144, 138, 134, 148, 158, 134, 162, 150, 138, 148, 144, 138, 142, 160, 132, 128, 160, 148, 142, 148, 160, 124, 180, 132, 122, 158, 134, 160, 130, 158, 134, 140, 140, 140, 146, 168, 152, 120, 166, 154, 124, 170, 138, 154, 148, 148, 142, 134, 172, 134, 150, 158, 132, 158, 138, 162, 134, 142, 150, 152, 140, 152, 142, 120, 176, 148, 122, 156, 146, 144, 128, 160, 132, 144, 164, 152, 140, 156, 162, 138, 148, 152, 130, 156, 158, 138, 124, 174}, + {122, 132, 134, 132, 110, 130, 138, 114, 142, 106, 108, 148, 102, 138, 110, 124, 158, 98, 130, 140, 112, 142, 112, 138, 118, 112, 118, 114, 134, 132, 116, 108, 134, 104, 152, 104, 128, 134, 112, 152, 98, 130, 152, 112, 136, 98, 130, 142, 102, 116, 132, 122, 136, 104, 136, 132, 118, 136, 116, 96, 164, 102, 128, 114, 126, 136, 90, 138, 126, 116, 152, 92, 128, 140, 114, 132, 126, 132, 132, 104, 132, 128, 114, 140, 120, 104, 134, 108, 148, 120, 130, 144, 102, 144, 104, 136, 142, 106, 120, 134, 108, 136, 102, 140, 126, 112, 124, 132, 112, 158, 104, 132, 118, 116, 138, 116, 126, 138, 120, 130, 106, 156, 114, 110, 148, 108, 132, 122, 118, 150, 98, 138, 122, 112, 138, 128, 112, 126, 110, 144, 116, 118, 136, 124, 132, 114, 130, 122, 120, 114, 118, 122, 144, 110, 116, 136, 94, 144, 112, 118, 128, 124, 122, 130, 108, 158, 104, 118, 138, 116, 142, 112, 116, 132, 112, 128, 108, 128, 136, 114, 126, 128, 100, 152, 100, 136, 124, 104, 132, 114, 124, 144, 98, 132, 112, 126, 138, 114, 106, 144, 120, 138, 110, 132, 130, 100, 138, 110, 106, 150, 98, 132, 114, 126, 146, 92, 120, 148, 96, 140, 110, 112, 142, 100, 124, 112, 122, 128, 114, 118, 118, 120, 150, 94, 130, 128, 116, 130, 122, 130, 142, 94, 136, 124, 100, 146, 112, 112, 138, 112, 148, 110, 114, 132, 108, 134, 126, 116, 130, 122, 124, 106, 128, 126, 98, 140, 118, 112, 150, 108, 112, 150, 100, 136, 132, 128, 128, 116, 124, 132, 112, 138, 112, 134, 120, 122, 134, 108, 150, 120, 116, 136, 120, 122, 142, 110, 118, 130, 114, 136, 114, 124, 132, 110, 136, 118, 124, 138, 114, 132, 116, 122, 140, 108, 138, 116, 122, 120, 128, 132, 128, 108, 138, 118, 126, 130, 112, 154, 114, 114, 130, 110, 138, 116, 118, 130, 118, 138, 112, 116, 134, 116, 140, 98, 138, 130, 112, 122, 122, 120, 132, 126, 120, 136, 102, 130, 128, 116, 124, 122}, + {94, 130, 102, 94, 88, 104, 120, 88, 110, 86, 122, 114, 88, 70, 138, 112, 80, 104, 96, 106, 118, 82, 96, 110, 116, 92, 86, 114, 104, 112, 84, 102, 114, 96, 106, 82, 102, 136, 98, 70, 114, 116, 102, 98, 94, 110, 108, 112, 82, 102, 112, 108, 84, 100, 122, 94, 88, 112, 94, 110, 106, 76, 98, 128, 98, 78, 106, 92, 122, 100, 94, 102, 112, 92, 90, 98, 120, 108, 106, 90, 118, 102, 106, 92, 100, 126, 106, 76, 110, 112, 108, 90, 90, 114, 110, 90, 110, 86, 112, 102, 90, 92, 118, 116, 78, 110, 100, 108, 104, 82, 92, 132, 110, 72, 102, 94, 122, 108, 102, 108, 100, 110, 104, 88, 126, 98, 92, 90, 108, 112, 94, 92, 90, 112, 108, 92, 92, 122, 98, 96, 86, 106, 126, 86, 88, 110, 94, 116, 92, 74, 114, 124, 88, 94, 110, 104, 100, 94, 94, 118, 100, 98, 78, 124, 102, 100, 88, 100, 98, 108, 100, 98, 100, 116, 92, 82, 118, 110, 98, 94, 96, 100, 112, 84, 94, 108, 110, 108, 82, 92, 114, 116, 82, 104, 102, 110, 106, 82, 98, 124, 92, 88, 100, 98, 106, 108, 94, 92, 110, 116, 74, 80, 130, 112, 80, 94, 104, 100, 90, 108, 74, 116, 108, 76, 86, 130, 98, 86, 98, 94, 114, 88, 90, 96, 114, 102, 94, 88, 112, 118, 86, 90, 110, 110, 106, 114, 68, 116, 116, 90, 86, 90, 122, 92, 96, 102, 102, 102, 102, 90, 110, 116, 90, 94, 102, 100, 104, 102, 94, 104, 118, 94, 84, 118, 106, 94, 106, 102, 116, 108, 90, 106, 98, 110, 112, 80, 114, 116, 92, 98, 86, 108, 116, 86, 104, 94, 108, 94, 88, 108, 112, 104, 86, 110, 100, 100, 100, 98, 84, 132, 102, 64, 116, 112, 108, 96, 108, 106, 106, 94, 110, 88, 120, 98, 86, 102, 112, 104, 94, 96, 90, 116, 110, 88, 96, 142, 82, 92, 94, 110, 118, 90, 98, 90, 114, 96, 86, 98, 120, 124, 66, 100, 120, 108, 90, 86, 110, 102, 114, 84}, + {88, 86, 78, 82, 66, 90, 76, 80, 76, 86, 56, 88, 70, 84, 94, 70, 82, 74, 90, 92, 66, 82, 90, 60, 100, 62, 78, 82, 76, 76, 80, 82, 80, 70, 82, 80, 78, 70, 68, 88, 84, 84, 74, 68, 78, 88, 70, 84, 92, 72, 78, 72, 82, 80, 76, 84, 72, 88, 74, 80, 80, 86, 88, 74, 70, 70, 70, 98, 80, 66, 90, 68, 80, 84, 64, 86, 74, 76, 76, 76, 86, 70, 78, 88, 80, 66, 76, 70, 94, 90, 68, 76, 66, 100, 80, 80, 82, 76, 90, 74, 64, 90, 72, 86, 60, 86, 88, 78, 76, 74, 82, 78, 68, 84, 84, 82, 86, 70, 66, 94, 66, 98, 74, 86, 78, 72, 88, 74, 78, 90, 70, 76, 90, 72, 72, 76, 90, 96, 68, 64, 78, 80, 88, 78, 76, 84, 64, 98, 66, 78, 92, 60, 88, 80, 76, 78, 68, 76, 86, 74, 66, 84, 70, 82, 98, 76, 68, 74, 84, 86, 78, 86, 60, 80, 80, 68, 80, 86, 70, 70, 86, 86, 66, 78, 84, 74, 88, 62, 64, 84, 92, 78, 78, 64, 76, 76, 80, 62, 86, 70, 68, 88, 76, 88, 68, 68, 82, 82, 56, 80, 76, 86, 84, 72, 72, 80, 76, 88, 74, 74, 84, 74, 92, 60, 78, 74, 76, 80, 80, 78, 82, 64, 86, 74, 62, 80, 60, 94, 88, 68, 86, 62, 86, 76, 72, 86, 88, 60, 80, 80, 86, 66, 80, 78, 80, 90, 72, 82, 74, 90, 70, 82, 64, 68, 84, 78, 86, 70, 82, 72, 70, 90, 68, 80, 64, 86, 74, 84, 90, 64, 80, 76, 84, 72, 66, 84, 100, 76, 74, 76, 72, 96, 78, 68, 88, 74, 86, 72, 76, 82, 82, 70, 70, 80, 90, 76, 70, 92, 72, 86, 64, 76, 90, 82, 96, 64, 70, 86, 66, 84, 84, 90, 62, 84, 66, 92, 92, 70, 74, 72, 84, 78, 80, 80, 68, 92, 76, 70, 78, 86, 80, 66, 90, 80, 74, 92, 80, 68, 96, 62, 72, 94, 70, 92, 70, 74, 82, 72, 78, 62}, + {62, 62, 58, 46, 68, 50, 78, 58, 50, 52, 66, 42, 66, 38, 84, 54, 48, 50, 58, 60, 60, 52, 70, 64, 58, 48, 54, 68, 60, 54, 58, 54, 64, 74, 50, 60, 54, 68, 50, 52, 62, 66, 64, 60, 50, 70, 48, 60, 52, 66, 62, 46, 44, 62, 68, 64, 44, 46, 66, 54, 64, 60, 52, 74, 46, 50, 58, 56, 70, 54, 62, 74, 52, 48, 66, 62, 60, 56, 52, 66, 56, 76, 58, 54, 48, 62, 50, 56, 56, 80, 34, 76, 48, 50, 64, 60, 48, 62, 64, 56, 44, 64, 58, 68, 44, 46, 58, 70, 62, 66, 56, 72, 52, 42, 68, 68, 60, 54, 62, 62, 60, 40, 68, 56, 62, 60, 44, 64, 62, 58, 66, 54, 48, 66, 52, 64, 50, 72, 56, 52, 58, 50, 60, 68, 36, 74, 62, 48, 50, 56, 70, 62, 46, 58, 62, 72, 58, 60, 52, 60, 44, 62, 52, 64, 60, 54, 64, 56, 54, 54, 52, 66, 60, 52, 50, 44, 70, 66, 50, 52, 44, 60, 72, 56, 62, 54, 66, 48, 50, 66, 64, 62, 46, 68, 58, 60, 50, 70, 52, 72, 46, 54, 56, 62, 70, 62, 38, 56, 62, 34, 72, 50, 70, 50, 56, 50, 52, 60, 58, 46, 62, 68, 56, 40, 64, 56, 54, 46, 62, 50, 78, 62, 50, 70, 56, 48, 52, 56, 64, 66, 48, 62, 48, 72, 52, 54, 56, 74, 50, 40, 48, 76, 46, 68, 32, 58, 68, 50, 58, 64, 58, 54, 56, 56, 58, 58, 64, 42, 60, 68, 66, 42, 66, 56, 64, 50, 70, 60, 62, 66, 64, 46, 64, 46, 58, 62, 56, 66, 52, 56, 64, 56, 62, 54, 52, 60, 58, 52, 36, 82, 56, 58, 50, 48, 60, 68, 50, 70, 54, 66, 50, 54, 66, 64, 58, 54, 62, 66, 68, 44, 68, 58, 60, 48, 50, 54, 80, 42, 74, 44, 52, 60, 58, 62, 56, 70, 56, 42, 68, 52, 56, 64, 46, 66, 54, 58, 60, 54, 68, 56, 46, 66, 62, 66, 56, 58, 58, 54, 50, 64}, + {54, 44, 30, 26, 40, 50, 34, 38, 36, 32, 38, 42, 38, 42, 54, 18, 40, 38, 28, 48, 46, 22, 52, 32, 38, 38, 32, 44, 38, 28, 34, 42, 44, 36, 48, 28, 34, 36, 30, 50, 50, 34, 30, 38, 32, 38, 32, 44, 40, 40, 36, 36, 28, 48, 42, 34, 42, 18, 44, 46, 44, 38, 36, 34, 34, 30, 32, 54, 42, 24, 42, 34, 36, 42, 32, 44, 32, 40, 28, 42, 46, 36, 40, 30, 40, 38, 36, 44, 40, 48, 24, 38, 36, 42, 36, 48, 26, 40, 38, 34, 40, 36, 38, 42, 28, 36, 38, 42, 38, 42, 32, 36, 30, 36, 44, 44, 36, 42, 32, 38, 40, 40, 42, 38, 44, 34, 26, 38, 50, 36, 36, 34, 30, 40, 46, 34, 46, 40, 22, 36, 34, 38, 44, 36, 24, 46, 38, 42, 42, 28, 40, 32, 36, 38, 38, 50, 34, 38, 28, 30, 40, 42, 34, 56, 34, 30, 32, 38, 46, 34, 38, 32, 46, 34, 28, 44, 44, 36, 34, 32, 28, 54, 36, 38, 42, 28, 38, 32, 34, 48, 40, 36, 30, 34, 42, 32, 44, 36, 36, 40, 30, 28, 44, 46, 34, 34, 32, 34, 42, 38, 38, 50, 34, 26, 32, 42, 36, 40, 32, 34, 46, 28, 48, 42, 30, 36, 34, 32, 38, 40, 42, 34, 38, 30, 38, 32, 42, 42, 50, 34, 32, 32, 50, 32, 44, 36, 32, 36, 32, 42, 38, 54, 34, 32, 40, 28, 48, 52, 28, 44, 38, 24, 38, 38, 38, 42, 36, 30, 38, 44, 30, 50, 36, 34, 42, 26, 48, 42, 36, 36, 36, 36, 36, 40, 32, 50, 46, 36, 32, 24, 52, 38, 44, 28, 36, 48, 36, 38, 36, 50, 24, 34, 40, 26, 52, 36, 32, 46, 26, 40, 40, 34, 46, 44, 38, 28, 40, 42, 38, 42, 28, 34, 42, 36, 36, 52, 44, 32, 36, 36, 40, 38, 48, 28, 38, 28, 30, 38, 46, 38, 34, 26, 34, 44, 38, 40, 52, 30, 30, 34, 28, 50, 42, 44, 32, 30, 42, 38, 40, 30}, + {38, 24, 30, 18, 40, 28, 30, 26, 24, 24, 34, 22, 36, 20, 32, 24, 22, 28, 44, 32, 18, 22, 26, 34, 28, 32, 30, 24, 24, 20, 26, 38, 44, 20, 24, 26, 28, 30, 34, 24, 38, 34, 28, 20, 30, 30, 46, 24, 38, 16, 32, 24, 34, 20, 34, 18, 20, 36, 14, 34, 32, 32, 24, 26, 36, 28, 34, 22, 22, 34, 26, 32, 24, 28, 28, 34, 34, 30, 24, 34, 34, 30, 22, 30, 30, 28, 32, 34, 22, 24, 34, 24, 24, 54, 22, 24, 26, 24, 22, 34, 26, 26, 30, 16, 32, 22, 26, 40, 36, 14, 38, 30, 30, 18, 40, 30, 32, 28, 32, 24, 34, 32, 40, 26, 28, 28, 26, 30, 36, 28, 16, 22, 32, 34, 24, 30, 26, 32, 22, 34, 32, 32, 22, 22, 26, 22, 36, 24, 28, 26, 30, 26, 30, 32, 36, 32, 20, 36, 20, 30, 18, 46, 32, 22, 20, 34, 28, 26, 38, 40, 12, 36, 18, 30, 26, 30, 20, 24, 24, 20, 34, 38, 22, 30, 24, 26, 36, 24, 22, 30, 40, 22, 24, 26, 26, 38, 24, 34, 24, 34, 34, 18, 28, 40, 28, 20, 28, 24, 34, 40, 26, 14, 36, 24, 30, 36, 32, 14, 28, 22, 22, 20, 38, 30, 24, 24, 22, 24, 32, 36, 34, 20, 28, 34, 16, 22, 32, 40, 22, 32, 20, 36, 30, 34, 30, 26, 30, 40, 20, 24, 28, 30, 20, 20, 24, 38, 30, 32, 20, 18, 28, 40, 30, 20, 26, 20, 32, 18, 24, 34, 34, 28, 24, 28, 32, 42, 24, 20, 28, 42, 26, 16, 34, 28, 36, 38, 22, 22, 28, 40, 28, 40, 16, 24, 36, 16, 22, 32, 24, 26, 24, 18, 32, 38, 30, 14, 30, 26, 38, 22, 22, 28, 38, 30, 26, 34, 40, 32, 26, 32, 22, 32, 32, 28, 26, 34, 24, 28, 16, 22, 30, 40, 36, 28, 16, 42, 22, 34, 26, 30, 16, 26, 28, 18, 32, 36, 22, 32, 26, 34, 28, 30, 24, 30, 34, 26, 20, 22, 32, 32}, + {8, 16, 8, 20, 14, 8, 18, 12, 10, 18, 16, 20, 14, 10, 4, 20, 12, 10, 20, 8, 16, 12, 16, 8, 28, 12, 8, 14, 18, 10, 14, 10, 22, 12, 10, 14, 8, 18, 10, 18, 22, 18, 12, 10, 14, 10, 10, 10, 20, 10, 20, 16, 4, 16, 10, 22, 14, 14, 16, 8, 14, 12, 16, 22, 6, 12, 8, 14, 18, 18, 18, 14, 8, 20, 10, 6, 22, 12, 8, 16, 18, 12, 12, 8, 14, 18, 20, 16, 10, 16, 16, 8, 4, 14, 28, 8, 12, 12, 14, 16, 16, 18, 16, 10, 14, 10, 12, 10, 20, 10, 16, 8, 10, 16, 12, 20, 18, 10, 18, 8, 12, 14, 16, 12, 16, 16, 22, 10, 10, 22, 12, 6, 24, 16, 12, 8, 6, 16, 20, 14, 12, 14, 10, 18, 18, 8, 16, 18, 16, 10, 12, 12, 10, 12, 14, 14, 12, 16, 10, 16, 12, 22, 10, 10, 26, 8, 14, 10, 6, 16, 24, 12, 12, 14, 14, 12, 12, 22, 10, 18, 4, 16, 6, 18, 18, 10, 12, 14, 10, 16, 20, 22, 10, 10, 14, 14, 22, 8, 6, 20, 10, 16, 24, 10, 16, 14, 6, 8, 28, 8, 14, 8, 12, 14, 12, 12, 18, 14, 12, 18, 16, 2, 26, 14, 8, 18, 8, 14, 6, 16, 14, 24, 8, 20, 10, 14, 20, 6, 18, 16, 10, 16, 8, 14, 10, 8, 22, 10, 20, 14, 20, 12, 12, 8, 16, 18, 14, 6, 14, 14, 10, 10, 22, 6, 20, 18, 18, 14, 12, 14, 16, 12, 12, 8, 14, 14, 2, 18, 24, 22, 6, 10, 16, 18, 18, 4, 14, 20, 14, 10, 2, 26, 12, 12, 22, 14, 18, 8, 12, 14, 18, 16, 10, 10, 8, 16, 8, 16, 18, 12, 12, 16, 10, 20, 12, 18, 12, 10, 14, 18, 4, 10, 16, 26, 16, 18, 14, 18, 10, 6, 12, 26, 6, 14, 14, 10, 16, 8, 10, 24, 18, 16, 8, 16, 6, 16, 18, 8, 12, 14, 8, 14, 16, 24, 18, 10, 10, 14, 14, 18}, + {6, 4, 8, 4, 4, 8, 6, 6, 8, 6, 8, 6, 0, 6, 4, 10, 6, 6, 2, 4, 4, 18, 4, 8, 14, 8, 0, 0, 4, 8, 6, 10, 0, 4, 6, 4, 6, 0, 4, 4, 8, 0, 4, 8, 10, 2, 4, 4, 8, 6, 8, 0, 0, 16, 6, 4, 4, 6, 4, 4, 12, 4, 12, 6, 2, 8, 2, 6, 8, 10, 2, 6, 0, 2, 6, 6, 4, 2, 12, 0, 0, 6, 6, 6, 4, 2, 12, 6, 2, 6, 12, 4, 8, 6, 6, 6, 0, 8, 2, 10, 6, 10, 6, 6, 8, 4, 10, 6, 2, 2, 6, 6, 4, 2, 4, 8, 4, 6, 8, 4, 4, 6, 2, 4, 6, 4, 4, 8, 4, 4, 12, 6, 6, 2, 6, 4, 10, 6, 2, 6, 10, 0, 10, 0, 8, 12, 6, 6, 4, 2, 8, 6, 2, 8, 8, 2, 2, 4, 2, 0, 6, 4, 8, 2, 6, 6, 0, 6, 6, 10, 8, 0, 4, 4, 4, 8, 6, 14, 6, 6, 6, 0, 8, 14, 6, 0, 2, 8, 2, 4, 2, 4, 8, 8, 4, 2, 10, 6, 0, 10, 2, 4, 0, 4, 0, 8, 2, 8, 10, 4, 8, 12, 0, 2, 12, 4, 4, 6, 2, 2, 8, 6, 4, 10, 10, 8, 6, 6, 0, 6, 10, 4, 0, 4, 4, 2, 2, 2, 10, 8, 4, 6, 2, 0, 2, 8, 6, 2, 10, 2, 6, 6, 6, 12, 2, 4, 2, 4, 6, 10, 6, 8, 6, 6, 6, 2, 14, 2, 8, 4, 6, 4, 6, 2, 2, 6, 4, 4, 2, 2, 6, 0, 6, 6, 8, 12, 8, 4, 4, 6, 6, 4, 8, 2, 2, 10, 6, 8, 8, 10, 2, 6, 6, 4, 4, 10, 8, 2, 8, 4, 4, 2, 4, 4, 10, 4, 4, 4, 2, 4, 2, 4, 2, 4, 6, 2, 8, 8, 8, 10, 10, 2, 0, 6, 8, 0, 10, 6, 6, 6, 6, 0, 6, 4, 10, 12, 6, 4, 2, 2, 6, 4, 6, 6, 6, 8, 0, 4, 0, 4} + } +} diff --git a/dap4/src/test/data/resources/baselinehyrax/amsre_20060131v5.dat.ncdump b/dap4/src/test/data/resources/baselinehyrax/amsre_20060131v5.dat.ncdump new file mode 100644 index 0000000000..8f3cecf7d4 --- /dev/null +++ b/dap4/src/test/data/resources/baselinehyrax/amsre_20060131v5.dat.ncdump @@ -0,0 +1,32 @@ +netcdf amsre_20060131v5.dat { + variables: + ubyte time_a(3, 6); + string time_a:Equator_Crossing_Time = "1:30 PM"; + + // global attributes: + string :wspd_d.description = "wind speed 10 meters above the water surface, derived from surface roughness(wind stress); missing due to: sun glint; rain; near sea ice"; + string :FF_GLOBAL.latitude = "latitude = 0.25*ydim-90.125"; + string :wspd_a.pass = "ascending"; + :wspd_d.offset = 0.0f; + string :FF_GLOBAL.Server = "DODS FreeFrom based on FFND release 4.2.3", "DODS FreeFrom based on FFND release 4.2.3"; + string :wspd_a.long_name = "Surface Wind Speed"; + string :wspd_d.pass = "descending"; + string :wspd_a.units = "meters/second"; + :wspd_a.offset = 0.0f; + string :FF_GLOBAL.longitude = "longitude = 0.25*xdim-0.125 degreesEast"; + :wspd_a.scale = 0.2f; + string :FF_GLOBAL.Description = "Version-5 AMSR-E Ocean Product"; + string :wspd_a.description = "wind speed 10 meters above the water surface, derived from surface roughness(wind stress); missing due to: sun glint; rain; near sea ice"; + string :wspd_d.units = "meters/second"; + :wspd_d.scale = 0.2f; + string :wspd_d.long_name = "Surface Wind Speed"; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + time_a = + { + {255, 255, 255, 255, 255, 255}, + {255, 255, 255, 255, 255, 255}, + {255, 255, 255, 255, 255, 255} + } +} diff --git a/dap4/src/test/data/resources/baselinehyrax/nc4_nc_classic_comp.nc.ncdump b/dap4/src/test/data/resources/baselinehyrax/nc4_nc_classic_comp.nc.ncdump new file mode 100644 index 0000000000..984a9461d3 --- /dev/null +++ b/dap4/src/test/data/resources/baselinehyrax/nc4_nc_classic_comp.nc.ncdump @@ -0,0 +1,137 @@ +netcdf nc4_nc_classic_comp { + dimensions: + lat = 6; + lon = 5; + time = 2; + variables: + float t(time, lat, lon); + + double p(time, lat, lon); + p:_FillValue = -9999.0; + + short rh(time, lat, lon); + rh:_FillValue = -1S; + + short pixel(lat, lon); + + string source(lat); + source:string_length = 5; + + int lat(lat); + string lat:units = "degrees_north"; + string lat:_CoordinateAxisType = "Lat"; + + int lon(lon); + string lon:units = "degrees_east"; + string lon:_CoordinateAxisType = "Lon"; + + int time(time); + string time:units = "seconds"; + + float z(time, lat, lon); + z:valid_range = 0.0, 5000.0; + z:_FillValue = 1.0f; + string z:units = "meters"; + string z:_CoordinateAxisType = "Height"; + + // global attributes: + string :NC_GLOBAL.title = "Hyrax/netcdf handler test file 1"; + :NC_GLOBAL.version = 1.0; + string :NC_GLOBAL.description = "This file has all of the NC_CLASSIC_MODEL data types."; + string :DODS_EXTRA.Unlimited_Dimension = "time"; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + t = + { + { + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0} + }, + { + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0} + } + } + p = + { + { + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1} + }, + { + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1} + } + } + rh = + { + { + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2} + }, + { + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2} + } + } + pixel = + { + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7} + } + source = "aaaaa", "aaaaa", "aaaaa", "aaaaa", "aaaaa", "aaaaa" + lat = + {0, 10, 20, 30, 40, 50} + lon = + {-140, -118, -96, -84, -52} + time = + {1, 2} + z = + { + { + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0} + }, + { + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0} + } + } +} diff --git a/dap4/src/test/data/resources/baselinehyrax/nc4_nc_classic_no_comp.nc.ncdump b/dap4/src/test/data/resources/baselinehyrax/nc4_nc_classic_no_comp.nc.ncdump new file mode 100644 index 0000000000..83d2544aa0 --- /dev/null +++ b/dap4/src/test/data/resources/baselinehyrax/nc4_nc_classic_no_comp.nc.ncdump @@ -0,0 +1,137 @@ +netcdf nc4_nc_classic_no_comp { + dimensions: + lat = 6; + lon = 5; + time = 2; + variables: + float t(time, lat, lon); + + double p(time, lat, lon); + p:_FillValue = -9999.0; + + short rh(time, lat, lon); + rh:_FillValue = -1S; + + short pixel(lat, lon); + + string source(lat); + source:string_length = 5; + + int lat(lat); + string lat:units = "degrees_north"; + string lat:_CoordinateAxisType = "Lat"; + + int lon(lon); + string lon:units = "degrees_east"; + string lon:_CoordinateAxisType = "Lon"; + + int time(time); + string time:units = "seconds"; + + float z(time, lat, lon); + z:valid_range = 0.0, 5000.0; + z:_FillValue = 1.0f; + string z:units = "meters"; + string z:_CoordinateAxisType = "Height"; + + // global attributes: + string :NC_GLOBAL.title = "Hyrax/netcdf handler test file 1"; + :NC_GLOBAL.version = 1.0; + string :NC_GLOBAL.description = "This file has all of the NC_CLASSIC_MODEL data types."; + string :DODS_EXTRA.Unlimited_Dimension = "time"; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + t = + { + { + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0} + }, + { + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0}, + {1.0, 1.0, 1.0, 1.0, 1.0} + } + } + p = + { + { + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1} + }, + { + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1}, + {0.1, 0.1, 0.1, 0.1, 0.1} + } + } + rh = + { + { + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2} + }, + { + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2} + } + } + pixel = + { + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7} + } + source = "aaaaa", "aaaaa", "aaaaa", "aaaaa", "aaaaa", "aaaaa" + lat = + {0, 10, 20, 30, 40, 50} + lon = + {-140, -118, -96, -84, -52} + time = + {1, 2} + z = + { + { + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0} + }, + { + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0}, + {10.0, 10.0, 10.0, 10.0, 10.0} + } + } +} diff --git a/dap4/src/test/data/resources/baselinehyrax/nc4_strings.nc.ncdump b/dap4/src/test/data/resources/baselinehyrax/nc4_strings.nc.ncdump new file mode 100644 index 0000000000..2cf8b72421 --- /dev/null +++ b/dap4/src/test/data/resources/baselinehyrax/nc4_strings.nc.ncdump @@ -0,0 +1,36 @@ +netcdf nc4_strings { + dimensions: + lat = 6; + lon = 5; + variables: + string station(lat, lon); + string station:names = "site_1", "site_2", "site_3"; + string station:who = "james"; + + string scan_line(lon); + + string codec_name; + + int lat(lat); + string lat:_CoordinateAxisType = "Lat"; + + int lon(lon); + string lon:_CoordinateAxisType = "Lon"; + + // global attributes: + string :NC_GLOBAL.title = "Hyrax/netcdf handler test file 2"; + :NC_GLOBAL.version = 1.0; + string :NC_GLOBAL.description = "This file has all of the new netcdf 4 unsigned data types."; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + station = + { "one", "two", "three", "four", "five", "one_b", "two_b", "three_b", "four_b", "five_b", "one_c", "two_c", "three_c", "four_c", "five_c", "one", "two", "three", "four", "five", "one", "two", "three", "four", "five", "one_f", "two_f", "three_f", "four_f", "five_f" + } + scan_line = "r", "r1", "r2", "r3", "r4" + codec_name = "mp3" + lat = + {0, 10, 20, 30, 40, 50} + lon = + {-140, -118, -96, -84, -52} +} diff --git a/dap4/src/test/data/resources/baselinehyrax/nc4_strings_comp.nc.ncdump b/dap4/src/test/data/resources/baselinehyrax/nc4_strings_comp.nc.ncdump new file mode 100644 index 0000000000..13eaa126f9 --- /dev/null +++ b/dap4/src/test/data/resources/baselinehyrax/nc4_strings_comp.nc.ncdump @@ -0,0 +1,36 @@ +netcdf nc4_strings_comp { + dimensions: + lat = 6; + lon = 5; + variables: + string station(lat, lon); + string station:names = "site_1", "site_2", "site_3"; + string station:who = "james"; + + string scan_line(lon); + + string codec_name; + + int lat(lat); + string lat:_CoordinateAxisType = "Lat"; + + int lon(lon); + string lon:_CoordinateAxisType = "Lon"; + + // global attributes: + string :NC_GLOBAL.title = "Hyrax/netcdf handler test file 2"; + :NC_GLOBAL.version = 1.0; + string :NC_GLOBAL.description = "This file has all of the new netcdf 4 unsigned data types."; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + station = + { "one", "two", "three", "four", "five", "one_b", "two_b", "three_b", "four_b", "five_b", "one_c", "two_c", "three_c", "four_c", "five_c", "one", "two", "three", "four", "five", "one", "two", "three", "four", "five", "one_f", "two_f", "three_f", "four_f", "five_f" + } + scan_line = "r", "r1", "r2", "r3", "r4" + codec_name = "mp3" + lat = + {0, 10, 20, 30, 40, 50} + lon = + {-140, -118, -96, -84, -52} +} diff --git a/dap4/src/test/data/resources/baselinehyrax/nc4_unsigned_types.nc.ncdump b/dap4/src/test/data/resources/baselinehyrax/nc4_unsigned_types.nc.ncdump new file mode 100644 index 0000000000..c195c7df5f --- /dev/null +++ b/dap4/src/test/data/resources/baselinehyrax/nc4_unsigned_types.nc.ncdump @@ -0,0 +1,75 @@ +netcdf nc4_unsigned_types { + dimensions: + lat = 6; + lon = 5; + time = 2; + variables: + uint temp(time, lat, lon); + + ushort rh(time, lat, lon); + rh:_FillValue = 9999S; + + int lat(lat); + string lat:units = "degrees_north"; + string lat:_CoordinateAxisType = "Lat"; + + int lon(lon); + string lon:units = "degrees_east"; + string lon:_CoordinateAxisType = "Lon"; + + int time(time); + string time:units = "seconds"; + + // global attributes: + string :NC_GLOBAL.title = "Hyrax/netcdf handler test file 2"; + :NC_GLOBAL.version = 1.0; + string :NC_GLOBAL.description = "This file has all of the new netcdf 4 cardinal data types."; + string :DODS_EXTRA.Unlimited_Dimension = "time"; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + temp = + { + { + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7} + }, + { + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7} + } + } + rh = + { + { + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2} + }, + { + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2} + } + } + lat = + {0, 10, 20, 30, 40, 50} + lon = + {-140, -118, -96, -84, -52} + time = + {1, 2} +} diff --git a/dap4/src/test/data/resources/baselinehyrax/nc4_unsigned_types_comp.nc.ncdump b/dap4/src/test/data/resources/baselinehyrax/nc4_unsigned_types_comp.nc.ncdump new file mode 100644 index 0000000000..9be7467142 --- /dev/null +++ b/dap4/src/test/data/resources/baselinehyrax/nc4_unsigned_types_comp.nc.ncdump @@ -0,0 +1,75 @@ +netcdf nc4_unsigned_types_comp { + dimensions: + lat = 6; + lon = 5; + time = 2; + variables: + uint temp(time, lat, lon); + + ushort rh(time, lat, lon); + rh:_FillValue = 9999S; + + int lat(lat); + string lat:units = "degrees_north"; + string lat:_CoordinateAxisType = "Lat"; + + int lon(lon); + string lon:units = "degrees_east"; + string lon:_CoordinateAxisType = "Lon"; + + int time(time); + string time:units = "seconds"; + + // global attributes: + string :NC_GLOBAL.title = "Hyrax/netcdf handler test file 2"; + :NC_GLOBAL.version = 1.0; + string :NC_GLOBAL.description = "This file has all of the new netcdf 4 cardinal data types."; + string :DODS_EXTRA.Unlimited_Dimension = "time"; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + temp = + { + { + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7} + }, + { + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7}, + {7, 7, 7, 7, 7} + } + } + rh = + { + { + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2} + }, + { + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2}, + {2, 2, 2, 2, 2} + } + } + lat = + {0, 10, 20, 30, 40, 50} + lon = + {-140, -118, -96, -84, -52} + time = + {1, 2} +} diff --git a/dap4/src/test/data/resources/baselinehyrax/ref_tst_compounds.nc.ncdump b/dap4/src/test/data/resources/baselinehyrax/ref_tst_compounds.nc.ncdump new file mode 100644 index 0000000000..c687cc5544 --- /dev/null +++ b/dap4/src/test/data/resources/baselinehyrax/ref_tst_compounds.nc.ncdump @@ -0,0 +1,43 @@ +netcdf ref_tst_compounds { + dimensions: + n = 3; + variables: + + Structure { + short day; + short elev; + int count; + float relhum; + double time; + } obs(n); + obs:elev = -99S; + obs:count = -99; + obs:time = -99.0; + obs:day = -99S; + obs:relhum = -99.0f; + + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + obs = + { day = 15 + elev = 2 + count = 1 + relhum = 0.5 + time = 3600.01 + } obs(0) + { day = 157 + elev = -99 + count = -99 + relhum = -99.0 + time = -99.0 + } obs(1) + { day = 20 + elev = 6 + count = 3 + relhum = 0.75 + time = 5000.01 + } obs(2) +} diff --git a/dap4/src/test/data/resources/baselineraw/test_atomic_array.2.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_atomic_array.2.nc.ncdump new file mode 100644 index 0000000000..ad2d6e91b7 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_atomic_array.2.nc.ncdump @@ -0,0 +1,13 @@ +netcdf test_atomic_array.2.nc.dap { + variables: + short v16(3); + + // global attributes: + string :_dap4.ce = "/v16[0:1,3]"; + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + v16 = + {1, 2, 4} +} diff --git a/dap4/src/test/data/resources/baselineraw/test_atomic_array.3.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_atomic_array.3.nc.ncdump new file mode 100644 index 0000000000..15b3796744 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_atomic_array.3.nc.ncdump @@ -0,0 +1,13 @@ +netcdf test_atomic_array.3.nc.dap { + variables: + short v16(3); + + // global attributes: + string :_dap4.ce = "/v16[3,0:1]"; + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + v16 = + {4, 1, 2} +} diff --git a/dap4/src/test/data/resources/baselineraw/test_atomic_array.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_atomic_array.nc.ncdump new file mode 100644 index 0000000000..cd0d5ea889 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_atomic_array.nc.ncdump @@ -0,0 +1,57 @@ +netcdf test_atomic_array { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + dimensions: + d1 = 1; + d2 = 2; + d3 = 3; + d4 = 4; + d5 = 5; + variables: + ubyte vu8(d2, d3); + + short v16(d4); + + uint vu32(d2, d3); + + double vd(d2); + + char vc(d2); + + string vs(d2, d2); + + opaque vo(d1, d2); + + enum cloud_class_t primary_cloud(d5); + string primary_cloud:_FillValue = "Missing"; + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vu8 = + { + {255, 1, 2}, + {3, 4, 5} + } + v16 = + {1, 2, 3, 4} + vu32 = + { + {5, 4, 3}, + {2, 1, 0} + } + vd = + {17.9, 1024.8} + vc = "@&" + vs = + { "hello world", " +", "Καλημέα", "abc" + } + vo = 0x0123456789abcdef, + 0xabcdef0000000000; + + primary_cloud = + {0, 2, 0, 1, 127} +} diff --git a/dap4/src/test/data/resources/baselineraw/test_atomic_types.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_atomic_types.nc.ncdump new file mode 100644 index 0000000000..c330cbcde2 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_atomic_types.nc.ncdump @@ -0,0 +1,58 @@ +netcdf test_atomic_types { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + variables: + byte v8; + + ubyte vu8; + + short v16; + + ushort vu16; + + int v32; + + uint vu32; + + long v64; + + ulong vu64; + + float vf; + + double vd; + + char vc; + + string vs; + + opaque vo; + + enum cloud_class_t primary_cloud; + string primary_cloud:_FillValue = "Missing"; + + enum cloud_class_t secondary_cloud; + string secondary_cloud:_FillValue = "Missing"; + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + v8 = -128 + vu8 = 255 + v16 = -32768 + vu16 = 65535 + v32 = 2147483647 + vu32 = 4294967295 + v64 = 9223372036854775807 + vu64 = 18446744073709551615 + vf = 3.1415927 + vd = 3.141592653589793 + vc = @ + vs = "hello world" + vo = 0x0123456789abcdef; + + primary_cloud = 2 + secondary_cloud = 127 +} diff --git a/dap4/src/test/data/resources/baselineraw/test_enum_1.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_enum_1.nc.ncdump new file mode 100644 index 0000000000..1c69c45002 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_enum_1.nc.ncdump @@ -0,0 +1,14 @@ +netcdf test_enum_1 { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + variables: + enum cloud_class_t primary_cloud; + string primary_cloud:_FillValue = "Missing"; + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + primary_cloud = 2 +} diff --git a/dap4/src/test/data/resources/baselineraw/test_enum_2.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_enum_2.nc.ncdump new file mode 100644 index 0000000000..e74e8a0f91 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_enum_2.nc.ncdump @@ -0,0 +1,17 @@ +netcdf test_enum_2 { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + group: h { + variables: + enum cloud_class_t primary_cloud; + string primary_cloud:_FillValue = "Missing"; + + } + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + h/primary_cloud = 2 +} diff --git a/dap4/src/test/data/resources/baselineraw/test_enum_3.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_enum_3.nc.ncdump new file mode 100644 index 0000000000..b46188656b --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_enum_3.nc.ncdump @@ -0,0 +1,16 @@ +netcdf test_enum_3 { + types: + byte enum cloud_class_t { Clear = 0, Stratus = 1, Missing = 127}; + + group: h { + variables: + enum cloud_class_t primary_cloud; + + } + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + h/primary_cloud = 1 +} diff --git a/dap4/src/test/data/resources/baselineraw/test_enum_array.6.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_enum_array.6.nc.ncdump new file mode 100644 index 0000000000..a026f37c27 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_enum_array.6.nc.ncdump @@ -0,0 +1,17 @@ +netcdf test_enum_array.6.nc.dap { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + variables: + enum cloud_class_t primary_cloud(2); + string primary_cloud:_FillValue = "Missing"; + + // global attributes: + string :_dap4.ce = "/primary_cloud[1:2:4]"; + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + primary_cloud = + {2, 1} +} diff --git a/dap4/src/test/data/resources/baselineraw/test_enum_array.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_enum_array.nc.ncdump new file mode 100644 index 0000000000..1ede109916 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_enum_array.nc.ncdump @@ -0,0 +1,17 @@ +netcdf test_enum_array { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + dimensions: + d5 = 5; + variables: + enum cloud_class_t primary_cloud(d5); + string primary_cloud:_FillValue = "Missing"; + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + primary_cloud = + {0, 2, 0, 1, 127} +} diff --git a/dap4/src/test/data/resources/baselineraw/test_fill.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_fill.nc.ncdump new file mode 100644 index 0000000000..26ece6583d --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_fill.nc.ncdump @@ -0,0 +1,17 @@ +netcdf test_fill { + variables: + ubyte uv8; + + short v16; + + int uv32; + uv32:_FillValue = 17; + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + uv8 = 240 + v16 = 32700 + uv32 = 111000 +} diff --git a/dap4/src/test/data/resources/baselineraw/test_fill_2.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_fill_2.nc.ncdump new file mode 100644 index 0000000000..ffdf800d09 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_fill_2.nc.ncdump @@ -0,0 +1,32 @@ +netcdf test_fill_2 { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + dimensions: + d2 = 2; + variables: + enum cloud_class_t enumvar(d2); + string enumvar:_FillValue = "Missing"; + + int uv32(d2); + uv32:_FillValue = 17; + + ubyte uv8(d2); + uv8:_FillValue = 120B; + + short v16(d2); + v16:_FillValue = -37S; + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + enumvar = + {2, 127} + uv32 = + {111000, 17} + uv8 = + {240, 120} + v16 = + {32700, -37} +} diff --git a/dap4/src/test/data/resources/baselineraw/test_groups1.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_groups1.nc.ncdump new file mode 100644 index 0000000000..2cb5bfc39b --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_groups1.nc.ncdump @@ -0,0 +1,41 @@ +netcdf test_groups1 { + dimensions: + dim1 = 5; + group: g { + dimensions: + dim2 = 3; + group: h { + dimensions: + dim3 = 7; + variables: + int v1(dim1); + + float v2(dim2); + + } + + group: i { + dimensions: + dim3 = 7; + variables: + int v1(dim1); + + float v3(dim3); + + } + + } + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + g/h/v1 = + {-876354855, -1761252264, 1723477387, -46827465, 1475147969} + g/h/v2 = + {12.0, -100.0, 9.96921E36} + g/i/v1 = + {2, 3, 5, 7, 11} + g/i/v3 = + {23.0, 29.0, 19.0, 31.0, 17.0, 37.0, 13.0} +} diff --git a/dap4/src/test/data/resources/baselineraw/test_misc1.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_misc1.nc.ncdump new file mode 100644 index 0000000000..1302c57ce3 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_misc1.nc.ncdump @@ -0,0 +1,30 @@ +netcdf test_misc1 { + dimensions: + lon = 4; + time = 0; + lat = 6; + unlim = 3; + variables: + float var(unlim); + var:_ChunkSizes = 1024; + + float lon(lon); + string lon:units = "degrees_east"; + string lon:_CoordinateAxisType = "Lon"; + + float lat(lat); + string lat:units = "degrees_north"; + string lat:_CoordinateAxisType = "Lat"; + + // global attributes: + string :title = "example for workshop"; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + var = + {0.0, 1.0, 3.0} + lon = + {9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36} + lat = + {9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36} +} diff --git a/dap4/src/test/data/resources/baselineraw/test_one_var.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_one_var.nc.ncdump new file mode 100644 index 0000000000..f43721d3ea --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_one_var.nc.ncdump @@ -0,0 +1,10 @@ +netcdf test_one_var { + variables: + int t; + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + t = 17 +} diff --git a/dap4/src/test/data/resources/baselineraw/test_one_vararray.4.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_one_vararray.4.nc.ncdump new file mode 100644 index 0000000000..7b193661a4 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_one_vararray.4.nc.ncdump @@ -0,0 +1,13 @@ +netcdf test_one_vararray.4.nc.dap { + variables: + int t(1); + + // global attributes: + string :_dap4.ce = "/t[1]"; + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + t = + {37} +} diff --git a/dap4/src/test/data/resources/baselineraw/test_one_vararray.5.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_one_vararray.5.nc.ncdump new file mode 100644 index 0000000000..c0144f5c1c --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_one_vararray.5.nc.ncdump @@ -0,0 +1,13 @@ +netcdf test_one_vararray.5.nc.dap { + variables: + int t(2); + + // global attributes: + string :_dap4.ce = "/t[0:1]"; + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + t = + {17, 37} +} diff --git a/dap4/src/test/data/resources/baselineraw/test_one_vararray.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_one_vararray.nc.ncdump new file mode 100644 index 0000000000..4f97c08829 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_one_vararray.nc.ncdump @@ -0,0 +1,13 @@ +netcdf test_one_vararray { + dimensions: + d2 = 2; + variables: + int t(d2); + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + t = + {17, 37} +} diff --git a/dap4/src/test/data/resources/baselineraw/test_opaque.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_opaque.nc.ncdump new file mode 100644 index 0000000000..940999bb11 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_opaque.nc.ncdump @@ -0,0 +1,11 @@ +netcdf test_opaque { + variables: + opaque vo1; + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vo1 = 0x0123456789abcdef; + +} diff --git a/dap4/src/test/data/resources/baselineraw/test_opaque_array.7.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_opaque_array.7.nc.ncdump new file mode 100644 index 0000000000..693c3ea122 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_opaque_array.7.nc.ncdump @@ -0,0 +1,14 @@ +netcdf test_opaque_array.7.nc.dap { + variables: + opaque vo2(1, 2); + + // global attributes: + string :_dap4.ce = "/vo2[1][0:1]"; + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vo2 = 0xfedcba9876543210, + 0xfedcba9876543210; + +} diff --git a/dap4/src/test/data/resources/baselineraw/test_opaque_array.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_opaque_array.nc.ncdump new file mode 100644 index 0000000000..3d7b9c3f77 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_opaque_array.nc.ncdump @@ -0,0 +1,16 @@ +netcdf test_opaque_array { + dimensions: + d2 = 2; + variables: + opaque vo2(d2, d2); + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vo2 = 0x0123456789abcdef, + 0xabcdef0000000000, + 0xfedcba9876543210, + 0xfedcba9999999999; + +} diff --git a/dap4/src/test/data/resources/baselineraw/test_struct1.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_struct1.nc.ncdump new file mode 100644 index 0000000000..1f85a06a38 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_struct1.nc.ncdump @@ -0,0 +1,20 @@ +netcdf test_struct1 { + variables: + + Structure { + int x; + string x:_CoordinateAxisType = "GeoX"; + int y; + string y:_CoordinateAxisType = "GeoY"; + } s; + + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + s = + { x = 1 + y = -2 + } s(0) +} diff --git a/dap4/src/test/data/resources/baselineraw/test_struct_array.8.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_struct_array.8.nc.ncdump new file mode 100644 index 0000000000..e3b8fe225b --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_struct_array.8.nc.ncdump @@ -0,0 +1,35 @@ +netcdf test_struct_array.8.nc.dap { + variables: + + Structure { + int x; + string x:_CoordinateAxisType = "GeoX"; + int y; + string y:_CoordinateAxisType = "GeoY"; + } s(2, 2); + + + // global attributes: + string :_dap4.ce = "/s[0:2:3][0:1]"; + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + s = + { + x = 1 + y = -1 + } s(0) + { + x = 17 + y = 37 + } s(1) + { + x = -4 + y = 12 + } s(2) + { + x = -8 + y = 8 + } s(3) +} diff --git a/dap4/src/test/data/resources/baselineraw/test_struct_array.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_struct_array.nc.ncdump new file mode 100644 index 0000000000..17e281c7d7 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_struct_array.nc.ncdump @@ -0,0 +1,56 @@ +netcdf test_struct_array { + dimensions: + dx = 4; + dy = 3; + variables: + + Structure { + int x; + string x:_CoordinateAxisType = "GeoX"; + int y; + string y:_CoordinateAxisType = "GeoY"; + } s(dx, dy); + + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + s = + { x = 1 + y = -1 + } s(0) + { x = 17 + y = 37 + } s(1) + { x = -32767 + y = 32767 + } s(2) + { x = -1 + y = 3 + } s(3) + { x = -2 + y = 2 + } s(4) + { x = -3 + y = 1 + } s(5) + { x = -4 + y = 12 + } s(6) + { x = -8 + y = 8 + } s(7) + { x = -12 + y = 4 + } s(8) + { x = -5 + y = 15 + } s(9) + { x = -10 + y = 10 + } s(10) + { x = -15 + y = 5 + } s(11) +} diff --git a/dap4/src/test/data/resources/baselineraw/test_struct_nested.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_struct_nested.nc.ncdump new file mode 100644 index 0000000000..7b333adcdb --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_struct_nested.nc.ncdump @@ -0,0 +1,36 @@ +netcdf test_struct_nested { + variables: + + Structure { + + Structure { + int x; + string x:_CoordinateAxisType = "GeoX"; + int y; + string y:_CoordinateAxisType = "GeoY"; + } field1; + + + Structure { + int x; + int y; + } field2; + + } x; + + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + x = + { field1 = + { x = 1 + y = -2 + } field1(0) + field2 = + { x = 255 + y = 90 + } field2(0) + } x(0) +} diff --git a/dap4/src/test/data/resources/baselineraw/test_struct_nested3.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_struct_nested3.nc.ncdump new file mode 100644 index 0000000000..afb80725ed --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_struct_nested3.nc.ncdump @@ -0,0 +1,28 @@ +netcdf test_struct_nested3 { + variables: + + Structure { + + Structure { + + Structure { + int field1; + } field2; + + } field3; + + } x; + + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + x = + { field3 = + { field2 = + { field1 = 17 + } field2(0) + } field3(0) + } x(0) +} diff --git a/dap4/src/test/data/resources/baselineraw/test_struct_type.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_struct_type.nc.ncdump new file mode 100644 index 0000000000..e66c700642 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_struct_type.nc.ncdump @@ -0,0 +1,20 @@ +netcdf test_struct_type { + variables: + + Structure { + int x; + string x:_CoordinateAxisType = "GeoX"; + int y; + string y:_CoordinateAxisType = "GeoY"; + } s; + + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + s = + { x = 1 + y = -2 + } s(0) +} diff --git a/dap4/src/test/data/resources/baselineraw/test_test.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_test.nc.ncdump new file mode 100644 index 0000000000..62d089889d --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_test.nc.ncdump @@ -0,0 +1,13 @@ +netcdf test_test { + types: + byte enum enum_t { c1 = 1, c2 = 2, c3 = 3}; + + variables: + enum enum_t v1; + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + v1 = 1 +} diff --git a/dap4/src/test/data/resources/baselineraw/test_unlim.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_unlim.nc.ncdump new file mode 100644 index 0000000000..38981848bf --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_unlim.nc.ncdump @@ -0,0 +1,50 @@ +netcdf test_unlim { + dimensions: + lon = 2; + time = 2; + lat = 3; + variables: + float lon(lon); + string lon:units = "degrees_east"; + string lon:_CoordinateAxisType = "Lon"; + + float pr(time, lat, lon); + pr:_ChunkSizes = 1, 3, 2; + string pr:standard_name = "air_pressure_at_sea_level"; + string pr:units = "hPa"; + string pr:_CoordinateAxisType = "Pressure"; + + double time(time); + time:_ChunkSizes = 512; + string time:units = "seconds since 2009-01-01"; + string time:_CoordinateAxisType = "Time"; + + float lat(lat); + string lat:units = "degrees_north"; + string lat:_CoordinateAxisType = "Lat"; + + // global attributes: + string :title = "example for workshop"; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + lon = + {9.96921E36, 9.96921E36} + pr = + { + { + {0.0, 1.0}, + {2.0, 3.0}, + {4.0, 5.0} + }, + { + {10.0, 11.0}, + {12.0, 13.0}, + {14.0, 15.0} + } + } + time = + {9.969209968386869E36, 9.969209968386869E36} + lat = + {9.96921E36, 9.96921E36, 9.96921E36} +} diff --git a/dap4/src/test/data/resources/baselineraw/test_unlim1.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_unlim1.nc.ncdump new file mode 100644 index 0000000000..39d22f9672 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_unlim1.nc.ncdump @@ -0,0 +1,50 @@ +netcdf test_unlim1 { + dimensions: + lon = 2; + lat = 3; + time = 2; + variables: + float lon(lon); + string lon:units = "degrees_east"; + string lon:_CoordinateAxisType = "Lon"; + + float pr(time, lat, lon); + pr:_ChunkSizes = 1, 3, 2; + string pr:standard_name = "air_pressure_at_sea_level"; + string pr:units = "hPa"; + string pr:_CoordinateAxisType = "Pressure"; + + double time(time); + time:_ChunkSizes = 512; + string time:units = "seconds since 2009-01-01"; + string time:_CoordinateAxisType = "Time"; + + float lat(lat); + string lat:units = "degrees_north"; + string lat:_CoordinateAxisType = "Lat"; + + // global attributes: + string :title = "example for workshop"; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + lon = + {9.96921E36, 9.96921E36} + pr = + { + { + {0.0, 1.0}, + {2.0, 3.0}, + {4.0, 5.0} + }, + { + {10.0, 11.0}, + {12.0, 13.0}, + {14.0, 15.0} + } + } + time = + {9.969209968386869E36, 9.969209968386869E36} + lat = + {9.96921E36, 9.96921E36, 9.96921E36} +} diff --git a/dap4/src/test/data/resources/baselineraw/test_utf8.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_utf8.nc.ncdump new file mode 100644 index 0000000000..772972588d --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_utf8.nc.ncdump @@ -0,0 +1,12 @@ +netcdf test_utf8 { + dimensions: + d2 = 2; + variables: + string vs(d2); + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vs = "Καλημέα", "abc" +} diff --git a/dap4/src/test/data/resources/baselineraw/test_vlen1.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_vlen1.nc.ncdump new file mode 100644 index 0000000000..f0c03074d5 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_vlen1.nc.ncdump @@ -0,0 +1,24 @@ +netcdf test_vlen1 { + variables: + + Sequence { + int x; + string x:_CoordinateAxisType = "GeoX"; + } x(*); + x:_FillValue = 0; + + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + x = + { x = 1 + } x + { x = 3 + } x + { x = 5 + } x + { x = 7 + } x +} diff --git a/dap4/src/test/data/resources/baselineraw/test_vlen11.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_vlen11.nc.ncdump new file mode 100644 index 0000000000..31920fc31f --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_vlen11.nc.ncdump @@ -0,0 +1,19 @@ +netcdf test_vlen11 { + variables: + + Sequence { + int v; + } v(*); + v:_FillValue = 0; + + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + v = + { v = 4 + } v + { v = 754 + } v +} diff --git a/dap4/src/test/data/resources/baselineraw/test_vlen3.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_vlen3.nc.ncdump new file mode 100644 index 0000000000..538f1eee16 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_vlen3.nc.ncdump @@ -0,0 +1,18 @@ +netcdf test_vlen3 { + variables: + + Structure { + + Sequence { + int f1; + } f1(*); + + } v1; + + + // global attributes: + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + +null diff --git a/dap4/src/test/data/resources/baselineraw/test_zerodim.nc.ncdump b/dap4/src/test/data/resources/baselineraw/test_zerodim.nc.ncdump new file mode 100644 index 0000000000..5c5b831150 --- /dev/null +++ b/dap4/src/test/data/resources/baselineraw/test_zerodim.nc.ncdump @@ -0,0 +1,30 @@ +netcdf test_zerodim { + dimensions: + lon = 4; + time = 0; + lat = 6; + unlim = 3; + variables: + float var(unlim); + var:_ChunkSizes = 1024; + + float lon(lon); + string lon:units = "degrees_east"; + string lon:_CoordinateAxisType = "Lon"; + + float lat(lat); + string lat:units = "degrees_north"; + string lat:_CoordinateAxisType = "Lat"; + + // global attributes: + string :title = "example for workshop"; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + var = + {0.0, 1.0, 3.0} + lon = + {9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36} + lat = + {9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36} +} diff --git a/dap4/src/test/data/resources/baselineremote/test_atomic_array.2.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_atomic_array.2.nc.ncdump new file mode 100644 index 0000000000..a662df4360 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_atomic_array.2.nc.ncdump @@ -0,0 +1,57 @@ +netcdf test_atomic_array.2 { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + dimensions: + d1 = 1; + d2 = 2; + d3 = 3; + d4 = 4; + d5 = 5; + variables: + ubyte vu8(d2, d3); + + short v16(d4); + + uint vu32(d2, d3); + + double vd(d2); + + char vc(d2); + + String vs(d2, d2); + + opaque vo(d1, d2); + + enum cloud_class_t primary_cloud(d5); + string primary_cloud:_FillValue = "Missing"; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vu8 = + { + {255, 1, 2}, + {3, 4, 5} + } + v16 = + {1, 2, 3, 4} + vu32 = + { + {5, 4, 3}, + {2, 1, 0} + } + vd = + {17.9, 1024.8} + vc = "@&" + vs = + { "hello world", "hello world", "hello world", "hello world" + } + vo = 0x0123456789abcdef, + 0x0123456789abcdef; + + primary_cloud = + {0, 2, 0, 1, 127} +} diff --git a/dap4/src/test/data/resources/baselineremote/test_atomic_array.3.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_atomic_array.3.nc.ncdump new file mode 100644 index 0000000000..a488e214d2 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_atomic_array.3.nc.ncdump @@ -0,0 +1,57 @@ +netcdf test_atomic_array.3 { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + dimensions: + d1 = 1; + d2 = 2; + d3 = 3; + d4 = 4; + d5 = 5; + variables: + ubyte vu8(d2, d3); + + short v16(d4); + + uint vu32(d2, d3); + + double vd(d2); + + char vc(d2); + + String vs(d2, d2); + + opaque vo(d1, d2); + + enum cloud_class_t primary_cloud(d5); + string primary_cloud:_FillValue = "Missing"; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vu8 = + { + {255, 1, 2}, + {3, 4, 5} + } + v16 = + {1, 2, 3, 4} + vu32 = + { + {5, 4, 3}, + {2, 1, 0} + } + vd = + {17.9, 1024.8} + vc = "@&" + vs = + { "hello world", "hello world", "hello world", "hello world" + } + vo = 0x0123456789abcdef, + 0x0123456789abcdef; + + primary_cloud = + {0, 2, 0, 1, 127} +} diff --git a/dap4/src/test/data/resources/baselineremote/test_atomic_array.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_atomic_array.nc.ncdump new file mode 100644 index 0000000000..c50f3f6367 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_atomic_array.nc.ncdump @@ -0,0 +1,66 @@ +netcdf test_atomic_array { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + dimensions: + d1 = 1; + d2 = 2; + d3 = 3; + d4 = 4; + d5 = 5; + variables: + ubyte vu8(d2, d3); + vu8:_DAP4_Checksum_CRC32 = -735091578; + + short v16(d4); + v16:_DAP4_Checksum_CRC32 = -1835461610; + + uint vu32(d2, d3); + vu32:_DAP4_Checksum_CRC32 = 207024370; + + double vd(d2); + vd:_DAP4_Checksum_CRC32 = 2081016750; + + char vc(d2); + vc:_DAP4_Checksum_CRC32 = 1672337415; + + string vs(d2, d2); + vs:_DAP4_Checksum_CRC32 = 1731162308; + + opaque vo(d1, d2); + vo:_DAP4_Checksum_CRC32 = 660035085; + + enum cloud_class_t primary_cloud(d5); + string primary_cloud:_FillValue = "Missing"; + primary_cloud:_DAP4_Checksum_CRC32 = -1249222022; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vu8 = + { + {255, 1, 2}, + {3, 4, 5} + } + v16 = + {1, 2, 3, 4} + vu32 = + { + {5, 4, 3}, + {2, 1, 0} + } + vd = + {17.9, 1024.8} + vc = "@&" + vs = + { "hello world", " +", "Καλημέα", "abc" + } + vo = 0x0123456789abcdef, + 0xabcdef0000000000; + + primary_cloud = + {0, 2, 0, 1, 127} +} diff --git a/dap4/src/test/data/resources/baselineremote/test_atomic_types.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_atomic_types.nc.ncdump new file mode 100644 index 0000000000..7e39588cff --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_atomic_types.nc.ncdump @@ -0,0 +1,74 @@ +netcdf test_atomic_types { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + variables: + byte v8; + v8:_DAP4_Checksum_CRC32 = 1069182125; + + ubyte vu8; + vu8:_DAP4_Checksum_CRC32 = -16777216; + + short v16; + v16:_DAP4_Checksum_CRC32 = -1402891809; + + ushort vu16; + vu16:_DAP4_Checksum_CRC32 = -65536; + + int v32; + v32:_DAP4_Checksum_CRC32 = 306674911; + + uint vu32; + vu32:_DAP4_Checksum_CRC32 = -1; + + long v64; + v64:_DAP4_Checksum_CRC32 = -855876548; + + ulong vu64; + vu64:_DAP4_Checksum_CRC32 = 558161692; + + float vf; + vf:_DAP4_Checksum_CRC32 = -1943399579; + + double vd; + vd:_DAP4_Checksum_CRC32 = -222639246; + + char vc; + vc:_DAP4_Checksum_CRC32 = -1528910307; + + string vs; + vs:_DAP4_Checksum_CRC32 = 915515092; + + opaque vo; + vo:_DAP4_Checksum_CRC32 = -766649635; + + enum cloud_class_t primary_cloud; + string primary_cloud:_FillValue = "Missing"; + primary_cloud:_DAP4_Checksum_CRC32 = 1007455905; + + enum cloud_class_t secondary_cloud; + string secondary_cloud:_FillValue = "Missing"; + secondary_cloud:_DAP4_Checksum_CRC32 = 314082080; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + v8 = -128 + vu8 = 255 + v16 = -32768 + vu16 = 65535 + v32 = 2147483647 + vu32 = 4294967295 + v64 = 9223372036854775807 + vu64 = 18446744073709551615 + vf = 3.1415927 + vd = 3.141592653589793 + vc = @ + vs = "hello world" + vo = 0x0123456789abcdef; + + primary_cloud = 2 + secondary_cloud = 127 +} diff --git a/dap4/src/test/data/resources/baselineremote/test_enum_1.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_enum_1.nc.ncdump new file mode 100644 index 0000000000..4b7e2e01aa --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_enum_1.nc.ncdump @@ -0,0 +1,16 @@ +netcdf test_enum_1 { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + variables: + enum cloud_class_t primary_cloud; + string primary_cloud:_FillValue = "Missing"; + primary_cloud:_DAP4_Checksum_CRC32 = 1007455905; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + primary_cloud = 2 +} diff --git a/dap4/src/test/data/resources/baselineremote/test_enum_2.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_enum_2.nc.ncdump new file mode 100644 index 0000000000..da63517043 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_enum_2.nc.ncdump @@ -0,0 +1,19 @@ +netcdf test_enum_2 { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + group: h { + variables: + enum cloud_class_t primary_cloud; + string primary_cloud:_FillValue = "Missing"; + primary_cloud:_DAP4_Checksum_CRC32 = 1007455905; + + } + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + h/primary_cloud = 2 +} diff --git a/dap4/src/test/data/resources/baselineremote/test_enum_3.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_enum_3.nc.ncdump new file mode 100644 index 0000000000..2c7082e493 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_enum_3.nc.ncdump @@ -0,0 +1,18 @@ +netcdf test_enum_3 { + types: + byte enum cloud_class_t { Clear = 0, Stratus = 1, Missing = 127}; + + group: h { + variables: + enum cloud_class_t primary_cloud; + primary_cloud:_DAP4_Checksum_CRC32 = -1526341861; + + } + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + h/primary_cloud = 1 +} diff --git a/dap4/src/test/data/resources/baselineremote/test_enum_array.6.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_enum_array.6.nc.ncdump new file mode 100644 index 0000000000..57f2a0ce47 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_enum_array.6.nc.ncdump @@ -0,0 +1,18 @@ +netcdf test_enum_array.6 { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + dimensions: + d5 = 5; + variables: + enum cloud_class_t primary_cloud(d5); + string primary_cloud:_FillValue = "Missing"; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + primary_cloud = + {0, 2, 0, 1, 127} +} diff --git a/dap4/src/test/data/resources/baselineremote/test_enum_array.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_enum_array.nc.ncdump new file mode 100644 index 0000000000..9a5c876bd2 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_enum_array.nc.ncdump @@ -0,0 +1,19 @@ +netcdf test_enum_array { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + dimensions: + d5 = 5; + variables: + enum cloud_class_t primary_cloud(d5); + string primary_cloud:_FillValue = "Missing"; + primary_cloud:_DAP4_Checksum_CRC32 = -1249222022; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + primary_cloud = + {0, 2, 0, 1, 127} +} diff --git a/dap4/src/test/data/resources/baselineremote/test_fill.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_fill.nc.ncdump new file mode 100644 index 0000000000..d782d2d2ef --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_fill.nc.ncdump @@ -0,0 +1,21 @@ +netcdf test_fill { + variables: + ubyte uv8; + uv8:_DAP4_Checksum_CRC32 = 1874795921; + + short v16; + v16:_DAP4_Checksum_CRC32 = -921460762; + + int uv32; + uv32:_FillValue = 17; + uv32:_DAP4_Checksum_CRC32 = -2076724431; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + uv8 = 240 + v16 = 32700 + uv32 = 111000 +} diff --git a/dap4/src/test/data/resources/baselineremote/test_fill_2.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_fill_2.nc.ncdump new file mode 100644 index 0000000000..340a090c61 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_fill_2.nc.ncdump @@ -0,0 +1,37 @@ +netcdf test_fill_2 { + types: + byte enum cloud_class_t { Clear = 0, Cumulonimbus = 1, Stratus = 2, Stratocumulus = 3, Cumulus = 4, Altostratus = 5, Nimbostratus = 6, Altocumulus = 7, Cirrostratus = 8, Cirrocumulus = 9, Cirrus = 10, Missing = 127}; + + dimensions: + d2 = 2; + variables: + enum cloud_class_t enumvar(d2); + string enumvar:_FillValue = "Missing"; + enumvar:_DAP4_Checksum_CRC32 = -1286267696; + + int uv32(d2); + uv32:_FillValue = 17; + uv32:_DAP4_Checksum_CRC32 = 1019008870; + + ubyte uv8(d2); + uv8:_FillValue = 120B; + uv8:_DAP4_Checksum_CRC32 = 196807244; + + short v16(d2); + v16:_FillValue = -37S; + v16:_DAP4_Checksum_CRC32 = 1719923210; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + enumvar = + {2, 127} + uv32 = + {111000, 17} + uv8 = + {240, 120} + v16 = + {32700, -37} +} diff --git a/dap4/src/test/data/resources/baselineremote/test_groups1.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_groups1.nc.ncdump new file mode 100644 index 0000000000..b068dcf906 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_groups1.nc.ncdump @@ -0,0 +1,46 @@ +netcdf test_groups1 { + dimensions: + dim1 = 5; + group: g { + dimensions: + dim2 = 3; + group: h { + dimensions: + dim3 = 7; + variables: + int v1(dim1); + v1:_DAP4_Checksum_CRC32 = 488449836; + + float v2(dim2); + v2:_DAP4_Checksum_CRC32 = 266808643; + + } + + group: i { + dimensions: + dim3 = 7; + variables: + int v1(dim1); + v1:_DAP4_Checksum_CRC32 = -1447780101; + + float v3(dim3); + v3:_DAP4_Checksum_CRC32 = 703718162; + + } + + } + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + g/h/v1 = + {-876354855, -1761252264, 1723477387, -46827465, 1475147969} + g/h/v2 = + {12.0, -100.0, 9.96921E36} + g/i/v1 = + {2, 3, 5, 7, 11} + g/i/v3 = + {23.0, 29.0, 19.0, 31.0, 17.0, 37.0, 13.0} +} diff --git a/dap4/src/test/data/resources/baselineremote/test_misc1.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_misc1.nc.ncdump new file mode 100644 index 0000000000..9d1499fc49 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_misc1.nc.ncdump @@ -0,0 +1,34 @@ +netcdf test_misc1 { + dimensions: + lon = 4; + time = 0; + lat = 6; + unlim = 3; + variables: + float var(unlim); + var:_ChunkSizes = 1024; + var:_DAP4_Checksum_CRC32 = -1062079627; + + float lon(lon); + lon:_DAP4_Checksum_CRC32 = -947018072; + string lon:units = "degrees_east"; + string lon:_CoordinateAxisType = "Lon"; + + float lat(lat); + lat:_DAP4_Checksum_CRC32 = -1521140044; + string lat:units = "degrees_north"; + string lat:_CoordinateAxisType = "Lat"; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :title = "example for workshop"; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + var = + {0.0, 1.0, 3.0} + lon = + {9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36} + lat = + {9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36} +} diff --git a/dap4/src/test/data/resources/baselineremote/test_one_var.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_one_var.nc.ncdump new file mode 100644 index 0000000000..db831e0144 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_one_var.nc.ncdump @@ -0,0 +1,12 @@ +netcdf test_one_var { + variables: + int t; + t:_DAP4_Checksum_CRC32 = -907939866; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + t = 17 +} diff --git a/dap4/src/test/data/resources/baselineremote/test_one_vararray.4.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_one_vararray.4.nc.ncdump new file mode 100644 index 0000000000..f4bfee691f --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_one_vararray.4.nc.ncdump @@ -0,0 +1,14 @@ +netcdf test_one_vararray.4 { + dimensions: + d2 = 2; + variables: + int t(d2); + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + t = + {17, 37} +} diff --git a/dap4/src/test/data/resources/baselineremote/test_one_vararray.5.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_one_vararray.5.nc.ncdump new file mode 100644 index 0000000000..31eab0d90e --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_one_vararray.5.nc.ncdump @@ -0,0 +1,14 @@ +netcdf test_one_vararray.5 { + dimensions: + d2 = 2; + variables: + int t(d2); + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + t = + {17, 37} +} diff --git a/dap4/src/test/data/resources/baselineremote/test_one_vararray.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_one_vararray.nc.ncdump new file mode 100644 index 0000000000..b9cb4381e0 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_one_vararray.nc.ncdump @@ -0,0 +1,15 @@ +netcdf test_one_vararray { + dimensions: + d2 = 2; + variables: + int t(d2); + t:_DAP4_Checksum_CRC32 = 1121956304; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + t = + {17, 37} +} diff --git a/dap4/src/test/data/resources/baselineremote/test_opaque.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_opaque.nc.ncdump new file mode 100644 index 0000000000..305505cfbd --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_opaque.nc.ncdump @@ -0,0 +1,13 @@ +netcdf test_opaque { + variables: + opaque vo1; + vo1:_DAP4_Checksum_CRC32 = -766649635; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vo1 = 0x0123456789abcdef; + +} diff --git a/dap4/src/test/data/resources/baselineremote/test_opaque_array.7.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_opaque_array.7.nc.ncdump new file mode 100644 index 0000000000..fc56e6238b --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_opaque_array.7.nc.ncdump @@ -0,0 +1,17 @@ +netcdf test_opaque_array.7 { + dimensions: + d2 = 2; + variables: + opaque vo2(d2, d2); + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vo2 = 0x0123456789abcdef, + 0x0123456789abcdef, + 0x0123456789abcdef, + 0x0123456789abcdef; + +} diff --git a/dap4/src/test/data/resources/baselineremote/test_opaque_array.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_opaque_array.nc.ncdump new file mode 100644 index 0000000000..59b3c48c23 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_opaque_array.nc.ncdump @@ -0,0 +1,18 @@ +netcdf test_opaque_array { + dimensions: + d2 = 2; + variables: + opaque vo2(d2, d2); + vo2:_DAP4_Checksum_CRC32 = -1856496422; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vo2 = 0x0123456789abcdef, + 0xabcdef0000000000, + 0xfedcba9876543210, + 0xfedcba9999999999; + +} diff --git a/dap4/src/test/data/resources/baselineremote/test_struct1.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_struct1.nc.ncdump new file mode 100644 index 0000000000..67f9dc4c52 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_struct1.nc.ncdump @@ -0,0 +1,24 @@ +netcdf test_struct1 { + variables: + + Structure { + int x; + x:_DAP4_Checksum_CRC32 = 0; + string x:_CoordinateAxisType = "GeoX"; + int y; + y:_DAP4_Checksum_CRC32 = 0; + string y:_CoordinateAxisType = "GeoY"; + } s; + s:_DAP4_Checksum_CRC32 = -812672911; + + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + s = + { x = 1 + y = -2 + } s(0) +} diff --git a/dap4/src/test/data/resources/baselineremote/test_struct_array.8.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_struct_array.8.nc.ncdump new file mode 100644 index 0000000000..596b7d0cac --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_struct_array.8.nc.ncdump @@ -0,0 +1,69 @@ +netcdf test_struct_array.8 { + dimensions: + dx = 4; + dy = 3; + variables: + + Structure { + int x; + string x:_CoordinateAxisType = "GeoX"; + int y; + string y:_CoordinateAxisType = "GeoY"; + } s(dx, dy); + + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + s = + { + x = 1 + y = -1 + } s(0) + { + x = 17 + y = 37 + } s(1) + { + x = -32767 + y = 32767 + } s(2) + { + x = -1 + y = 3 + } s(3) + { + x = -2 + y = 2 + } s(4) + { + x = -3 + y = 1 + } s(5) + { + x = -4 + y = 12 + } s(6) + { + x = -8 + y = 8 + } s(7) + { + x = -12 + y = 4 + } s(8) + { + x = -5 + y = 15 + } s(9) + { + x = -10 + y = 10 + } s(10) + { + x = -15 + y = 5 + } s(11) +} diff --git a/dap4/src/test/data/resources/baselineremote/test_struct_array.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_struct_array.nc.ncdump new file mode 100644 index 0000000000..50c13b5e49 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_struct_array.nc.ncdump @@ -0,0 +1,60 @@ +netcdf test_struct_array { + dimensions: + dx = 4; + dy = 3; + variables: + + Structure { + int x; + x:_DAP4_Checksum_CRC32 = 0; + string x:_CoordinateAxisType = "GeoX"; + int y; + y:_DAP4_Checksum_CRC32 = 0; + string y:_CoordinateAxisType = "GeoY"; + } s(dx, dy); + s:_DAP4_Checksum_CRC32 = 788761034; + + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + s = + { x = 1 + y = -1 + } s(0) + { x = 17 + y = 37 + } s(1) + { x = -32767 + y = 32767 + } s(2) + { x = -1 + y = 3 + } s(3) + { x = -2 + y = 2 + } s(4) + { x = -3 + y = 1 + } s(5) + { x = -4 + y = 12 + } s(6) + { x = -8 + y = 8 + } s(7) + { x = -12 + y = 4 + } s(8) + { x = -5 + y = 15 + } s(9) + { x = -10 + y = 10 + } s(10) + { x = -15 + y = 5 + } s(11) +} diff --git a/dap4/src/test/data/resources/baselineremote/test_struct_nested.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_struct_nested.nc.ncdump new file mode 100644 index 0000000000..f903015485 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_struct_nested.nc.ncdump @@ -0,0 +1,44 @@ +netcdf test_struct_nested { + variables: + + Structure { + + Structure { + int x; + x:_DAP4_Checksum_CRC32 = 0; + string x:_CoordinateAxisType = "GeoX"; + int y; + y:_DAP4_Checksum_CRC32 = 0; + string y:_CoordinateAxisType = "GeoY"; + } field1; + field1:_DAP4_Checksum_CRC32 = 0; + + + Structure { + int x; + x:_DAP4_Checksum_CRC32 = 0; + int y; + y:_DAP4_Checksum_CRC32 = 0; + } field2; + field2:_DAP4_Checksum_CRC32 = 0; + + } x; + x:_DAP4_Checksum_CRC32 = -542685669; + + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + x = + { field1 = + { x = 1 + y = -2 + } field1(0) + field2 = + { x = 255 + y = 90 + } field2(0) + } x(0) +} diff --git a/dap4/src/test/data/resources/baselineremote/test_struct_nested3.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_struct_nested3.nc.ncdump new file mode 100644 index 0000000000..8e5a9d5c9f --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_struct_nested3.nc.ncdump @@ -0,0 +1,33 @@ +netcdf test_struct_nested3 { + variables: + + Structure { + + Structure { + + Structure { + int field1; + field1:_DAP4_Checksum_CRC32 = 0; + } field2; + field2:_DAP4_Checksum_CRC32 = 0; + + } field3; + field3:_DAP4_Checksum_CRC32 = 0; + + } x; + x:_DAP4_Checksum_CRC32 = -907939866; + + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + x = + { field3 = + { field2 = + { field1 = 17 + } field2(0) + } field3(0) + } x(0) +} diff --git a/dap4/src/test/data/resources/baselineremote/test_struct_type.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_struct_type.nc.ncdump new file mode 100644 index 0000000000..d5a67f4268 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_struct_type.nc.ncdump @@ -0,0 +1,24 @@ +netcdf test_struct_type { + variables: + + Structure { + int x; + x:_DAP4_Checksum_CRC32 = 0; + string x:_CoordinateAxisType = "GeoX"; + int y; + y:_DAP4_Checksum_CRC32 = 0; + string y:_CoordinateAxisType = "GeoY"; + } s; + s:_DAP4_Checksum_CRC32 = -812672911; + + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + s = + { x = 1 + y = -2 + } s(0) +} diff --git a/dap4/src/test/data/resources/baselineremote/test_test.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_test.nc.ncdump new file mode 100644 index 0000000000..fdd4fac109 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_test.nc.ncdump @@ -0,0 +1,15 @@ +netcdf test_test { + types: + byte enum enum_t { c1 = 1, c2 = 2, c3 = 3}; + + variables: + enum enum_t v1; + v1:_DAP4_Checksum_CRC32 = -1526341861; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + v1 = 1 +} diff --git a/dap4/src/test/data/resources/baselineremote/test_unlim.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_unlim.nc.ncdump new file mode 100644 index 0000000000..1d8b772f04 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_unlim.nc.ncdump @@ -0,0 +1,55 @@ +netcdf test_unlim { + dimensions: + lon = 2; + time = 2; + lat = 3; + variables: + float lon(lon); + lon:_DAP4_Checksum_CRC32 = 27072276; + string lon:units = "degrees_east"; + string lon:_CoordinateAxisType = "Lon"; + + float pr(time, lat, lon); + pr:_ChunkSizes = 1, 3, 2; + pr:_DAP4_Checksum_CRC32 = 826391215; + string pr:standard_name = "air_pressure_at_sea_level"; + string pr:units = "hPa"; + string pr:_CoordinateAxisType = "Pressure"; + + double time(time); + time:_ChunkSizes = 512; + time:_DAP4_Checksum_CRC32 = -1907298714; + string time:units = "seconds since 2009-01-01"; + string time:_CoordinateAxisType = "Time"; + + float lat(lat); + lat:_DAP4_Checksum_CRC32 = 431075914; + string lat:units = "degrees_north"; + string lat:_CoordinateAxisType = "Lat"; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :title = "example for workshop"; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + lon = + {9.96921E36, 9.96921E36} + pr = + { + { + {0.0, 1.0}, + {2.0, 3.0}, + {4.0, 5.0} + }, + { + {10.0, 11.0}, + {12.0, 13.0}, + {14.0, 15.0} + } + } + time = + {9.969209968386869E36, 9.969209968386869E36} + lat = + {9.96921E36, 9.96921E36, 9.96921E36} +} diff --git a/dap4/src/test/data/resources/baselineremote/test_unlim1.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_unlim1.nc.ncdump new file mode 100644 index 0000000000..fded68ca09 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_unlim1.nc.ncdump @@ -0,0 +1,55 @@ +netcdf test_unlim1 { + dimensions: + lon = 2; + lat = 3; + time = 2; + variables: + float lon(lon); + lon:_DAP4_Checksum_CRC32 = 27072276; + string lon:units = "degrees_east"; + string lon:_CoordinateAxisType = "Lon"; + + float pr(time, lat, lon); + pr:_ChunkSizes = 1, 3, 2; + pr:_DAP4_Checksum_CRC32 = 826391215; + string pr:standard_name = "air_pressure_at_sea_level"; + string pr:units = "hPa"; + string pr:_CoordinateAxisType = "Pressure"; + + double time(time); + time:_ChunkSizes = 512; + time:_DAP4_Checksum_CRC32 = -1907298714; + string time:units = "seconds since 2009-01-01"; + string time:_CoordinateAxisType = "Time"; + + float lat(lat); + lat:_DAP4_Checksum_CRC32 = 431075914; + string lat:units = "degrees_north"; + string lat:_CoordinateAxisType = "Lat"; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :title = "example for workshop"; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + lon = + {9.96921E36, 9.96921E36} + pr = + { + { + {0.0, 1.0}, + {2.0, 3.0}, + {4.0, 5.0} + }, + { + {10.0, 11.0}, + {12.0, 13.0}, + {14.0, 15.0} + } + } + time = + {9.969209968386869E36, 9.969209968386869E36} + lat = + {9.96921E36, 9.96921E36, 9.96921E36} +} diff --git a/dap4/src/test/data/resources/baselineremote/test_utf8.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_utf8.nc.ncdump new file mode 100644 index 0000000000..7d88163dbf --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_utf8.nc.ncdump @@ -0,0 +1,14 @@ +netcdf test_utf8 { + dimensions: + d2 = 2; + variables: + string vs(d2); + vs:_DAP4_Checksum_CRC32 = -52179672; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + vs = "Καλημέα", "abc" +} diff --git a/dap4/src/test/data/resources/baselineremote/test_vlen1.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_vlen1.nc.ncdump new file mode 100644 index 0000000000..7cf82539f9 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_vlen1.nc.ncdump @@ -0,0 +1,27 @@ +netcdf test_vlen1 { + variables: + + Sequence { + int x; + x:_DAP4_Checksum_CRC32 = 0; + string x:_CoordinateAxisType = "GeoX"; + } x(*); + x:_FillValue = 0; + x:_DAP4_Checksum_CRC32 = -972676669; + + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + x = + { x = 1 + } x + { x = 3 + } x + { x = 5 + } x + { x = 7 + } x +} diff --git a/dap4/src/test/data/resources/baselineremote/test_vlen11.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_vlen11.nc.ncdump new file mode 100644 index 0000000000..3716a262a8 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_vlen11.nc.ncdump @@ -0,0 +1,22 @@ +netcdf test_vlen11 { + variables: + + Sequence { + int v; + v:_DAP4_Checksum_CRC32 = 0; + } v(*); + v:_FillValue = 0; + v:_DAP4_Checksum_CRC32 = -1061524850; + + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + v = + { v = 4 + } v + { v = 754 + } v +} diff --git a/dap4/src/test/data/resources/baselineremote/test_zerodim.nc.ncdump b/dap4/src/test/data/resources/baselineremote/test_zerodim.nc.ncdump new file mode 100644 index 0000000000..e25d61f5f3 --- /dev/null +++ b/dap4/src/test/data/resources/baselineremote/test_zerodim.nc.ncdump @@ -0,0 +1,34 @@ +netcdf test_zerodim { + dimensions: + lon = 4; + time = 0; + lat = 6; + unlim = 3; + variables: + float var(unlim); + var:_ChunkSizes = 1024; + var:_DAP4_Checksum_CRC32 = -1062079627; + + float lon(lon); + lon:_DAP4_Checksum_CRC32 = -947018072; + string lon:units = "degrees_east"; + string lon:_CoordinateAxisType = "Lon"; + + float lat(lat); + lat:_DAP4_Checksum_CRC32 = -1521140044; + string lat:units = "degrees_north"; + string lat:_CoordinateAxisType = "Lat"; + + // global attributes: + :_DAP4_Little_Endian = 1B; + string :title = "example for workshop"; + string :_CoordSysBuilder = "ucar.nc2.dataset.conv.DefaultConvention"; + + data: + var = + {0.0, 1.0, 3.0} + lon = + {9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36} + lat = + {9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36, 9.96921E36} +} diff --git a/dap4/src/test/data/resources/nctestfiles/test_atomic_array.nc b/dap4/src/test/data/resources/nctestfiles/test_atomic_array.nc new file mode 100644 index 0000000000..e0aaacdb69 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_atomic_array.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_atomic_types.nc b/dap4/src/test/data/resources/nctestfiles/test_atomic_types.nc new file mode 100644 index 0000000000..887935324f Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_atomic_types.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_enum_1.nc b/dap4/src/test/data/resources/nctestfiles/test_enum_1.nc new file mode 100644 index 0000000000..c4874350bf Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_enum_1.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_enum_2.nc b/dap4/src/test/data/resources/nctestfiles/test_enum_2.nc new file mode 100644 index 0000000000..6818b84c10 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_enum_2.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_enum_3.nc b/dap4/src/test/data/resources/nctestfiles/test_enum_3.nc new file mode 100644 index 0000000000..efbb3e2395 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_enum_3.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_enum_array.nc b/dap4/src/test/data/resources/nctestfiles/test_enum_array.nc new file mode 100644 index 0000000000..f7303bbe7f Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_enum_array.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_fill.nc b/dap4/src/test/data/resources/nctestfiles/test_fill.nc new file mode 100644 index 0000000000..7247f290d8 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_fill.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_groups1.nc b/dap4/src/test/data/resources/nctestfiles/test_groups1.nc new file mode 100644 index 0000000000..9d004b4bf9 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_groups1.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_misc1.nc b/dap4/src/test/data/resources/nctestfiles/test_misc1.nc new file mode 100644 index 0000000000..d17d1ccce5 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_misc1.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_one_var.nc b/dap4/src/test/data/resources/nctestfiles/test_one_var.nc new file mode 100644 index 0000000000..7e0b4b135c Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_one_var.nc differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_one_vararray.nc b/dap4/src/test/data/resources/nctestfiles/test_one_vararray.nc similarity index 78% rename from dap4/d4tests/src/test/data/resources/testfiles/test_one_vararray.nc rename to dap4/src/test/data/resources/nctestfiles/test_one_vararray.nc index e0cc0ce34a..48db970d49 100644 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_one_vararray.nc and b/dap4/src/test/data/resources/nctestfiles/test_one_vararray.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_opaque.nc b/dap4/src/test/data/resources/nctestfiles/test_opaque.nc new file mode 100644 index 0000000000..209d748e74 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_opaque.nc differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_opaque_array.nc b/dap4/src/test/data/resources/nctestfiles/test_opaque_array.nc similarity index 76% rename from dap4/d4tests/src/test/data/resources/testfiles/test_opaque_array.nc rename to dap4/src/test/data/resources/nctestfiles/test_opaque_array.nc index 895a8bf065..d29a08accf 100644 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_opaque_array.nc and b/dap4/src/test/data/resources/nctestfiles/test_opaque_array.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_struct1.nc b/dap4/src/test/data/resources/nctestfiles/test_struct1.nc new file mode 100644 index 0000000000..d119053a31 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_struct1.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_struct_array.nc b/dap4/src/test/data/resources/nctestfiles/test_struct_array.nc new file mode 100644 index 0000000000..781e0b2411 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_struct_array.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_struct_nested.nc b/dap4/src/test/data/resources/nctestfiles/test_struct_nested.nc new file mode 100644 index 0000000000..fea0edba27 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_struct_nested.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_struct_nested3.nc b/dap4/src/test/data/resources/nctestfiles/test_struct_nested3.nc new file mode 100644 index 0000000000..f109e444e1 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_struct_nested3.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_struct_type.nc b/dap4/src/test/data/resources/nctestfiles/test_struct_type.nc new file mode 100644 index 0000000000..d119053a31 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_struct_type.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_test.nc b/dap4/src/test/data/resources/nctestfiles/test_test.nc new file mode 100644 index 0000000000..69e7c978d2 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_test.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_unlim.nc b/dap4/src/test/data/resources/nctestfiles/test_unlim.nc new file mode 100644 index 0000000000..e0164af8d0 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_unlim.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_unlim1.nc b/dap4/src/test/data/resources/nctestfiles/test_unlim1.nc new file mode 100644 index 0000000000..2ad96e39e0 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_unlim1.nc differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_utf8.nc b/dap4/src/test/data/resources/nctestfiles/test_utf8.nc similarity index 76% rename from dap4/d4tests/src/test/data/resources/testfiles/test_utf8.nc rename to dap4/src/test/data/resources/nctestfiles/test_utf8.nc index fd90a6f12e..1dd1bac902 100644 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_utf8.nc and b/dap4/src/test/data/resources/nctestfiles/test_utf8.nc differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen1.nc b/dap4/src/test/data/resources/nctestfiles/test_vlen1.nc similarity index 85% rename from dap4/d4tests/src/test/data/resources/testfiles/test_vlen1.nc rename to dap4/src/test/data/resources/nctestfiles/test_vlen1.nc index 4c7f097564..a4bd83f8b7 100644 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen1.nc and b/dap4/src/test/data/resources/nctestfiles/test_vlen1.nc differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen11.nc b/dap4/src/test/data/resources/nctestfiles/test_vlen11.nc similarity index 80% rename from dap4/d4tests/src/test/data/resources/testfiles/test_vlen11.nc rename to dap4/src/test/data/resources/nctestfiles/test_vlen11.nc index 729e4b607b..24be975829 100644 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen11.nc and b/dap4/src/test/data/resources/nctestfiles/test_vlen11.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_vlen2.nc b/dap4/src/test/data/resources/nctestfiles/test_vlen2.nc new file mode 100644 index 0000000000..f9f5f73c66 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_vlen2.nc differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen3.nc b/dap4/src/test/data/resources/nctestfiles/test_vlen3.nc similarity index 81% rename from dap4/d4tests/src/test/data/resources/testfiles/test_vlen3.nc rename to dap4/src/test/data/resources/nctestfiles/test_vlen3.nc index e5564961e2..9fe533ed72 100644 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen3.nc and b/dap4/src/test/data/resources/nctestfiles/test_vlen3.nc differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen4.nc b/dap4/src/test/data/resources/nctestfiles/test_vlen4.nc similarity index 80% rename from dap4/d4tests/src/test/data/resources/testfiles/test_vlen4.nc rename to dap4/src/test/data/resources/nctestfiles/test_vlen4.nc index f119d3d119..40232b5b3c 100644 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen4.nc and b/dap4/src/test/data/resources/nctestfiles/test_vlen4.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_vlen5.nc b/dap4/src/test/data/resources/nctestfiles/test_vlen5.nc new file mode 100644 index 0000000000..94d697fe7d Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_vlen5.nc differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen6.nc b/dap4/src/test/data/resources/nctestfiles/test_vlen6.nc similarity index 75% rename from dap4/d4tests/src/test/data/resources/testfiles/test_vlen6.nc rename to dap4/src/test/data/resources/nctestfiles/test_vlen6.nc index f294775e10..f448f1b862 100644 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen6.nc and b/dap4/src/test/data/resources/nctestfiles/test_vlen6.nc differ diff --git a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen7.nc b/dap4/src/test/data/resources/nctestfiles/test_vlen7.nc similarity index 75% rename from dap4/d4tests/src/test/data/resources/testfiles/test_vlen7.nc rename to dap4/src/test/data/resources/nctestfiles/test_vlen7.nc index f1989bf335..a63571b14b 100644 Binary files a/dap4/d4tests/src/test/data/resources/testfiles/test_vlen7.nc and b/dap4/src/test/data/resources/nctestfiles/test_vlen7.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_vlen8.nc b/dap4/src/test/data/resources/nctestfiles/test_vlen8.nc new file mode 100644 index 0000000000..5d1dab400e Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_vlen8.nc differ diff --git a/dap4/src/test/data/resources/nctestfiles/test_zerodim.nc b/dap4/src/test/data/resources/nctestfiles/test_zerodim.nc new file mode 100644 index 0000000000..e3847eb330 Binary files /dev/null and b/dap4/src/test/data/resources/nctestfiles/test_zerodim.nc differ diff --git a/dap4/src/test/data/resources/rawtestfiles/CMakeLists.txt b/dap4/src/test/data/resources/rawtestfiles/CMakeLists.txt new file mode 100644 index 0000000000..85d40c3a9b --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/CMakeLists.txt @@ -0,0 +1,13 @@ +# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, +# 2015, 2016, 2017, 2018 +# University Corporation for Atmospheric Research/Unidata. + +# See netcdf-c/COPYRIGHT file for more info. + +FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*) +FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) + +FILE(GLOB CUR_EXTRA_DIST RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*) +SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt) +ADD_EXTRA_DIST("${CUR_EXTRA_DIST}") diff --git a/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.1.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.1.nc.dap new file mode 100644 index 0000000000..5268ba2f0a Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.1.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.1.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.1.nc.dmr new file mode 100644 index 0000000000..f5aeb23a42 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.1.nc.dmr @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.2.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.2.nc.dap new file mode 100644 index 0000000000..767948d780 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.2.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.2.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.2.nc.dmr new file mode 100644 index 0000000000..c1dfa079e9 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.2.nc.dmr @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.3.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.3.nc.dap new file mode 100644 index 0000000000..3667b076c2 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.3.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.3.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.3.nc.dmr new file mode 100644 index 0000000000..c86b06bbce --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.3.nc.dmr @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.nc.dap new file mode 100644 index 0000000000..c25865196c Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.nc.dmr new file mode 100644 index 0000000000..055b24184b --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_atomic_array.nc.dmr @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_atomic_types.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_atomic_types.nc.dap new file mode 100644 index 0000000000..e69d916e32 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_atomic_types.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_atomic_types.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_atomic_types.nc.dmr new file mode 100644 index 0000000000..fc73697673 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_atomic_types.nc.dmr @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_enum_1.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_enum_1.nc.dap new file mode 100644 index 0000000000..f4879bac12 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_enum_1.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_enum_1.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_enum_1.nc.dmr new file mode 100644 index 0000000000..1fe6b2733b --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_enum_1.nc.dmr @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_enum_2.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_enum_2.nc.dap new file mode 100644 index 0000000000..691a7db739 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_enum_2.nc.dap differ diff --git a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum_2.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_enum_2.nc.dmr similarity index 78% rename from dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum_2.nc.dmr rename to dap4/src/test/data/resources/rawtestfiles/test_enum_2.nc.dmr index 906e9bd87f..976912cbe0 100644 --- a/dap4/d4tests/src/test/data/resources/TestServlet/baseline/test_enum_2.nc.dmr +++ b/dap4/src/test/data/resources/rawtestfiles/test_enum_2.nc.dmr @@ -19,9 +19,15 @@ + + + + + + - + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_enum_3.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_enum_3.nc.dap new file mode 100644 index 0000000000..1388e7518b Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_enum_3.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_enum_3.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_enum_3.nc.dmr new file mode 100644 index 0000000000..115bfa8ca7 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_enum_3.nc.dmr @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_enum_array.6.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_enum_array.6.nc.dap new file mode 100644 index 0000000000..a92e1d80b4 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_enum_array.6.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_enum_array.6.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_enum_array.6.nc.dmr new file mode 100644 index 0000000000..d50f20879d --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_enum_array.6.nc.dmr @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_enum_array.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_enum_array.nc.dap new file mode 100644 index 0000000000..6fd6eb23b3 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_enum_array.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_enum_array.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_enum_array.nc.dmr new file mode 100644 index 0000000000..937874f605 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_enum_array.nc.dmr @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_fill.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_fill.nc.dap new file mode 100644 index 0000000000..eb66e2ca84 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_fill.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_fill.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_fill.nc.dmr new file mode 100644 index 0000000000..713f258020 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_fill.nc.dmr @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_fill_2.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_fill_2.nc.dap new file mode 100644 index 0000000000..84f8827241 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_fill_2.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_fill_2.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_fill_2.nc.dmr new file mode 100644 index 0000000000..9682baa5cf --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_fill_2.nc.dmr @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_groups1.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_groups1.nc.dap new file mode 100644 index 0000000000..ad13a7ad93 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_groups1.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_groups1.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_groups1.nc.dmr new file mode 100644 index 0000000000..6122d65bdd --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_groups1.nc.dmr @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_misc1.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_misc1.nc.dap new file mode 100644 index 0000000000..074e0016fe Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_misc1.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_misc1.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_misc1.nc.dmr new file mode 100644 index 0000000000..c844eb9bb2 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_misc1.nc.dmr @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_one_var.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_one_var.nc.dap new file mode 100644 index 0000000000..8992d46dc1 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_one_var.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_one_var.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_one_var.nc.dmr new file mode 100644 index 0000000000..9ace4d7c19 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_one_var.nc.dmr @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.4.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.4.nc.dap new file mode 100644 index 0000000000..2193bd6380 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.4.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.4.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.4.nc.dmr new file mode 100644 index 0000000000..f7313e0f27 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.4.nc.dmr @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.5.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.5.nc.dap new file mode 100644 index 0000000000..a1100c1689 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.5.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.5.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.5.nc.dmr new file mode 100644 index 0000000000..3b8f656675 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.5.nc.dmr @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.nc.dap new file mode 100644 index 0000000000..67ea5584cd Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.nc.dmr new file mode 100644 index 0000000000..178baa0a73 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_one_vararray.nc.dmr @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_opaque.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_opaque.nc.dap new file mode 100644 index 0000000000..d4a997e339 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_opaque.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_opaque.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_opaque.nc.dmr new file mode 100644 index 0000000000..3de1a76235 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_opaque.nc.dmr @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_opaque_array.7.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_opaque_array.7.nc.dap new file mode 100644 index 0000000000..4771a3112d Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_opaque_array.7.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_opaque_array.7.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_opaque_array.7.nc.dmr new file mode 100644 index 0000000000..1fd34851e1 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_opaque_array.7.nc.dmr @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_opaque_array.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_opaque_array.nc.dap new file mode 100644 index 0000000000..22feea39dd Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_opaque_array.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_opaque_array.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_opaque_array.nc.dmr new file mode 100644 index 0000000000..1ef5164539 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_opaque_array.nc.dmr @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_struct1.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_struct1.nc.dap new file mode 100644 index 0000000000..204b43fecb Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_struct1.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_struct1.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_struct1.nc.dmr new file mode 100644 index 0000000000..5567443c90 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_struct1.nc.dmr @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_struct_array.8.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_struct_array.8.nc.dap new file mode 100644 index 0000000000..8ba7b371ec Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_struct_array.8.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_struct_array.8.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_struct_array.8.nc.dmr new file mode 100644 index 0000000000..ae1ab26ab6 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_struct_array.8.nc.dmr @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_struct_array.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_struct_array.nc.dap new file mode 100644 index 0000000000..466f514759 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_struct_array.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_struct_array.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_struct_array.nc.dmr new file mode 100644 index 0000000000..a75730d80e --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_struct_array.nc.dmr @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_struct_nested.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_struct_nested.nc.dap new file mode 100644 index 0000000000..b24920ae7a Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_struct_nested.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_struct_nested.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_struct_nested.nc.dmr new file mode 100644 index 0000000000..8cb1a3b02a --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_struct_nested.nc.dmr @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_struct_nested3.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_struct_nested3.nc.dap new file mode 100644 index 0000000000..b1d33d717f Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_struct_nested3.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_struct_nested3.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_struct_nested3.nc.dmr new file mode 100644 index 0000000000..cb3acbfedd --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_struct_nested3.nc.dmr @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_struct_type.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_struct_type.nc.dap new file mode 100644 index 0000000000..549f472e23 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_struct_type.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_struct_type.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_struct_type.nc.dmr new file mode 100644 index 0000000000..c21ec1e34a --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_struct_type.nc.dmr @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_test.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_test.nc.dap new file mode 100644 index 0000000000..aa010e4fa3 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_test.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_test.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_test.nc.dmr new file mode 100644 index 0000000000..9f0b095029 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_test.nc.dmr @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_unlim.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_unlim.nc.dap new file mode 100644 index 0000000000..302e751410 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_unlim.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_unlim.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_unlim.nc.dmr new file mode 100644 index 0000000000..4eab6348f8 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_unlim.nc.dmr @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_unlim1.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_unlim1.nc.dap new file mode 100644 index 0000000000..80e898ad60 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_unlim1.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_unlim1.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_unlim1.nc.dmr new file mode 100644 index 0000000000..6e6500053b --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_unlim1.nc.dmr @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_utf8.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_utf8.nc.dap new file mode 100644 index 0000000000..5400f12b29 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_utf8.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_utf8.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_utf8.nc.dmr new file mode 100644 index 0000000000..a2bc1456e5 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_utf8.nc.dmr @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen1.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_vlen1.nc.dap new file mode 100644 index 0000000000..320ba8bc8c Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_vlen1.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen1.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_vlen1.nc.dmr new file mode 100644 index 0000000000..7d412d7d67 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_vlen1.nc.dmr @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen11.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_vlen11.nc.dap new file mode 100644 index 0000000000..9c22858816 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_vlen11.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen11.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_vlen11.nc.dmr new file mode 100644 index 0000000000..2968757b79 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_vlen11.nc.dmr @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen2.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_vlen2.nc.dap new file mode 100644 index 0000000000..a32cf1f1b4 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_vlen2.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen2.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_vlen2.nc.dmr new file mode 100644 index 0000000000..a48223f412 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_vlen2.nc.dmr @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen3.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_vlen3.nc.dap new file mode 100644 index 0000000000..b42d3d1fd3 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_vlen3.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen3.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_vlen3.nc.dmr new file mode 100644 index 0000000000..56966bb8ea --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_vlen3.nc.dmr @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen4.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_vlen4.nc.dap new file mode 100644 index 0000000000..e92a15ff10 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_vlen4.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen4.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_vlen4.nc.dmr new file mode 100644 index 0000000000..8660e39a47 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_vlen4.nc.dmr @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen5.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_vlen5.nc.dap new file mode 100644 index 0000000000..4d89d03074 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_vlen5.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen5.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_vlen5.nc.dmr new file mode 100644 index 0000000000..c28c3fbd10 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_vlen5.nc.dmr @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen6.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_vlen6.nc.dap new file mode 100644 index 0000000000..35f0d2c5c5 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_vlen6.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen6.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_vlen6.nc.dmr new file mode 100644 index 0000000000..5ef880efc1 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_vlen6.nc.dmr @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen7.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_vlen7.nc.dap new file mode 100644 index 0000000000..fd99b6ce49 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_vlen7.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen7.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_vlen7.nc.dmr new file mode 100644 index 0000000000..7fb3d8b0f5 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_vlen7.nc.dmr @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen8.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_vlen8.nc.dap new file mode 100644 index 0000000000..d01d3c4c18 Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_vlen8.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_vlen8.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_vlen8.nc.dmr new file mode 100644 index 0000000000..c8a12671a8 --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_vlen8.nc.dmr @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/data/resources/rawtestfiles/test_zerodim.nc.dap b/dap4/src/test/data/resources/rawtestfiles/test_zerodim.nc.dap new file mode 100644 index 0000000000..beb062d2bc Binary files /dev/null and b/dap4/src/test/data/resources/rawtestfiles/test_zerodim.nc.dap differ diff --git a/dap4/src/test/data/resources/rawtestfiles/test_zerodim.nc.dmr b/dap4/src/test/data/resources/rawtestfiles/test_zerodim.nc.dmr new file mode 100644 index 0000000000..7c9bab9c5b --- /dev/null +++ b/dap4/src/test/data/resources/rawtestfiles/test_zerodim.nc.dmr @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dap4/src/test/java/dap4/test/Dap4ManifestIF.java b/dap4/src/test/java/dap4/test/Dap4ManifestIF.java new file mode 100644 index 0000000000..3f1a6f60cc --- /dev/null +++ b/dap4/src/test/java/dap4/test/Dap4ManifestIF.java @@ -0,0 +1,33 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.test; + +/** + * This class defines the set of all possible test base names. + * It is the union of all names used any any test. + * Each test excludes names that it cannot process. + */ + +public interface Dap4ManifestIF { + + // List of all file names + public static final String[][] dap4_manifest = {{"test_one_var"}, {"test_atomic_array"}, {"test_atomic_types"}, + {"test_enum_1"}, {"test_enum_2"}, {"test_enum_3"}, {"test_enum_array"}, {"test_fill"}, {"test_fill_2"}, + {"test_groups1"}, {"test_misc1"}, {"test_one_vararray"}, {"test_opaque"}, {"test_opaque_array"}, {"test_struct1"}, + {"test_struct_array"}, {"test_struct_nested"}, {"test_struct_nested3"}, {"test_struct_type"}, {"test_test"}, + {"test_unlim"}, {"test_unlim1"}, {"test_utf8"}, {"test_vlen1"}, {"test_vlen11"}, {"test_vlen2"}, {"test_vlen3"}, + {"test_vlen4"}, {"test_vlen5"}, {"test_vlen6"}, {"test_vlen7"}, {"test_vlen8"}, {"test_zerodim"}}; // dap4manifest + + // Define the Manifest of constrained tests + public static final String[][] constraint_manifest = + {{"test_atomic_array", "1", "/vu8[1][0:2:2];/vd[1];/vs[1][0];/vo[0][1]"}, + {"test_atomic_array", "2", "/v16[0:1,3]"}, {"test_atomic_array", "3", "/v16[3,0:1]"}, + {"test_one_vararray", "4", "/t[1]"}, {"test_one_vararray", "5", "/t[0:1]"}, + {"test_enum_array", "6", "/primary_cloud[1:2:4]"}, {"test_opaque_array", "7", "/vo2[1][0:1]"}, + {"test_struct_array", "8", "/s[0:2:3][0:1]"}}; + +} // Dap4Manifest + diff --git a/dap4/src/test/java/dap4/test/Dap4Server.java b/dap4/src/test/java/dap4/test/Dap4Server.java new file mode 100644 index 0000000000..58e82e0170 --- /dev/null +++ b/dap4/src/test/java/dap4/test/Dap4Server.java @@ -0,0 +1,110 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.test; + +import dap4.core.util.DapConstants; +import dap4.core.util.DapException; +import ucar.httpservices.HTTPFactory; +import ucar.httpservices.HTTPMethod; + +import java.util.ArrayList; +import java.util.List; + +public class Dap4Server { + + ////////////////////////////////////////////////// + // Server Registry + + // Order is important; testing reachability is in the order listed + static List registry; + + static { + registry = new ArrayList<>(); + } + + static void register(boolean front, Dap4Server svc) { + // If already in registry, then replace it + for (int i = 0; i < registry.size(); i++) { + Dap4Server ds = registry.get(i); + if (ds.id.equals(svc.id)) { + registry.set(i, svc); + return; + } + } + if (front) + registry.add(0, svc); + else + registry.add(svc); + } + + static Dap4Server getServer(String id) { + for (Dap4Server ds : registry) { + if (ds.id.equals(id)) + return ds; + } + return null; + } + + ////////////////////////////////////////////////// + // Instance variables + public String id; + public String ip; + public int port; + public String servletpath; + + ////////////////////////////////////////////////// + // Constructor(s) + + public Dap4Server(String id, String ip, int port, String servletpath) { + this.id = id; + this.ip = ip; + this.port = port; + this.servletpath = servletpath; + } + + public String getURL() { + return getURL(DapConstants.HTTPSCHEME); + } + + public String getURL(String scheme) { + StringBuilder buf = new StringBuilder(); + buf.append(scheme + "//"); + buf.append(this.ip); + if (this.port > 0) { + buf.append(":"); + buf.append(this.port); + } + buf.append("/"); + buf.append(this.servletpath); + return buf.toString(); + } + + public boolean ping() { + boolean ok = false; + String url = getURL(); + try { + try (HTTPMethod method = HTTPFactory.Get(url)) { + int code = method.execute(); + if (code == 200) + ok = true; + } + } catch (Exception e) { + ok = false; + } + return ok; + } + + public static Dap4Server findServer() throws DapException { + // Find the server to use + for (Dap4Server svc : registry) { + if (svc.ping()) + return svc; + } + return null; + } +} + + diff --git a/dap4/src/test/java/dap4/test/DapTestCommon.java b/dap4/src/test/java/dap4/test/DapTestCommon.java new file mode 100644 index 0000000000..40a571602c --- /dev/null +++ b/dap4/src/test/java/dap4/test/DapTestCommon.java @@ -0,0 +1,404 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.test; + +import dap4.core.util.DapConstants; +import dap4.core.util.DapException; +import dap4.core.util.DapUtil; +import dap4.dap4lib.HttpDSP; +import ucar.nc2.dataset.NetcdfDataset; +import ucar.nc2.write.Ncdump; +import ucar.unidata.util.test.TestDir; +import ucar.unidata.util.test.UnitTestCommon; + +import java.io.File; +import java.io.FileFilter; +import java.io.IOException; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +abstract public class DapTestCommon extends UnitTestCommon { + + ////////////////////////////////////////////////// + // Constants + + static final String DEFAULTTREEROOT = "dap4"; + + public static final String FILESERVER = "file://localhost:8080"; + + public static final String ORDERTAG = "ucar.littleendian"; + public static final String TRANSLATETAG = "ucar.translate"; + public static final String TESTTAG = "ucar.testing"; + + static final String D4TESTDIRNAME = ""; + + // Equivalent to the path to the webapp/d4ts for testing purposes + protected static final String DFALTRESOURCEPATH = "/src/test/data/resources"; + + protected static final String[] LEGALEXTENSIONS = {".dap", ".dmr", ".nc", "dmp", ".ncdump", ".dds", ".das", ".dods"}; + + ////////////////////////////////////////////////// + + static class TestFilter implements FileFilter { + boolean debug; + boolean strip; + String[] extensions; + + public TestFilter(boolean debug, String[] extensions) { + this.debug = debug; + this.strip = strip; + this.extensions = extensions; + } + + public boolean accept(File file) { + boolean ok = false; + if (file.isFile() && file.canRead()) { + // Check for proper extension + String name = file.getName(); + if (name != null) { + for (String ext : extensions) { + if (name.endsWith(ext)) + ok = true; + } + } + if (!ok && debug) + System.err.println("Ignoring: " + file.toString()); + } + return ok; + } + + static void filterfiles(String path, List matches, String... extensions) { + File testdirf = new File(path); + assert (testdirf.canRead()); + TestFilter tf = new TestFilter(DEBUG, extensions); + File[] filelist = testdirf.listFiles(tf); + for (int i = 0; i < filelist.length; i++) { + File file = filelist[i]; + if (file.isDirectory()) + continue; + String fname = DapUtil.canonicalpath(file.getAbsolutePath()); + matches.add(fname); + } + } + } + + // Test properties + static class TestProperties { + boolean prop_diff; // Do comparison with baseline files + boolean prop_baseline; // Generate the baseline files + boolean prop_visual; // Debug output: display the test output and the baseline output + boolean prop_debug; // General debug flag + boolean prop_http_debug; // Print request and response headers + + public TestProperties() { + prop_diff = true; + prop_baseline = false; + prop_visual = false; + prop_debug = DEBUG; + prop_http_debug = false; + } + } + + public static class TestCaseCommon { + public String name; + + public TestCaseCommon() { + this(null); + } + + public TestCaseCommon(String name) { + this.name = name; + } + } + + ////////////////////////////////////////////////// + // Static variables + + protected static String dap4root = null; + protected static String dap4testroot = null; + protected static String dap4resourcedir = null; + + protected static TestProperties props = null; + + static { + dap4root = locateDAP4Root(threddsroot); + if (dap4root == null) + System.err.println("Cannot locate /dap4 parent dir"); + dap4testroot = canonjoin(dap4root, D4TESTDIRNAME); + dap4resourcedir = canonjoin(dap4testroot, DFALTRESOURCEPATH); + props = new TestProperties(); + } + + ////////////////////////////////////////////////// + // Static methods + + protected static String getD4TestsRoot() { + return dap4testroot; + } + + protected static String getResourceRoot() { + return dap4resourcedir; + } + + static String locateDAP4Root(String threddsroot) { + String root = threddsroot; + if (root != null) + root = root + "/" + DEFAULTTREEROOT; + // See if it exists + File f = new File(root); + if (!f.exists() || !f.isDirectory()) + root = null; + return root; + } + + ////////////////////////////////////////////////// + // Instance variables + + protected String d4tsserver = null; + + protected String title = "Dap4 Testing"; + + public DapTestCommon() { + this("DapTest"); + } + + public DapTestCommon(String name) { + super(name); + setSystemProperties(); + this.d4tsserver = TestDir.dap4TestServer; + if (DEBUG) + System.err.println("DapTestCommon: d4tsServer=" + d4tsserver); + } + + /** + * Try to get the system properties + */ + protected void setSystemProperties() { + if (System.getProperty("nodiff") != null) + props.prop_diff = false; + if (System.getProperty("baseline") != null) + props.prop_baseline = true; + if (System.getProperty("debug") != null) + props.prop_debug = true; + if (System.getProperty("visual") != null) + props.prop_visual = true; + if (props.prop_baseline && props.prop_diff) + props.prop_diff = false; + } + + public void setup() { + if (props.prop_http_debug) + HttpDSP.setHttpDebug(); + } + + ////////////////////////////////////////////////// + // Accessor + public void setTitle(String title) { + this.title = title; + } + + public String getTitle() { + return this.title; + } + + ////////////////////////////////////////////////// + // Instance Utilities + + public void visual(String header, String captured) { + if (!captured.endsWith("\n")) + captured = captured + "\n"; + // Dump the output for visual comparison + System.err.println("\n" + header + ":"); + System.err.println("---------------"); + System.err.print(captured); + System.err.println("---------------"); + System.err.flush(); + } + + protected void findServer(String path) throws DapException { + String svc = DapConstants.HTTPSCHEME + "//" + this.d4tsserver + "/d4ts"; + if (!checkServer(svc)) + System.err.println("D4TS Server not reachable: " + svc); + // Since we will be accessing it thru NetcdfDataset, we need to change the schema. + d4tsserver = "dap4://" + d4tsserver + "/d4ts"; + } + + ////////////////////////////////////////////////// + + public String getDAP4Root() { + return this.dap4root; + } + + @Override + public String getResourceDir() { + return this.dap4resourcedir; + } + + static void printDir(String path) { + File testdirf = new File(path); + assert (testdirf.canRead()); + File[] filelist = testdirf.listFiles(); + System.err.println("\n*******************"); + System.err.printf("Contents of %s:%n", path); + for (int i = 0; i < filelist.length; i++) { + File file = filelist[i]; + String fname = file.getName(); + System.err.printf("\t%s%s%n", fname, (file.isDirectory() ? "/" : "")); + } + System.err.println("*******************"); + System.err.flush(); + } + + ////////////////////////////////////////////////// + // Filename processing utilities + + /** + * Given a List of file names, return a list of those names except + * for any in the array of filenames to be excluded. + * + * @param manifest The list of file names + * @param exclusions The array of excluded names + * @return manifest with excluded names removed + */ + public static String[][] excludeNames(String[][] manifest, String[] exclusions) { + List xlist = new ArrayList<>(manifest.length); + for (int i = 0; i < manifest.length; i++) { + String name = manifest[i][0]; // Assume tuple element 0 is always the name + boolean matched = false; + for (String excluded : exclusions) { + if (excluded.equals(name)) + matched = true; + } + if (!matched) + xlist.add(manifest[i]); + } + return xlist.toArray(new String[0][]); + } + + // Filter a document with respect to a set of regular expressions + // Used to remove e.g. unwanted attributes + public static boolean regexpFilter(StringBuilder document, String regexp, boolean repeat) { + boolean changed = false; + String doc = document.toString(); + Pattern p = Pattern.compile(regexp, Pattern.DOTALL); + Matcher m = p.matcher(doc); + if (m.find()) { + changed = true; + String newdoc = (repeat ? m.replaceAll("") : m.replaceFirst("")); + doc = newdoc; + document.setLength(0); + document.append(doc); + } + return changed; + } + + public static boolean regexpFilters(StringBuilder sbdoc, String[] regexps, boolean repeat) { + boolean changed = false; + for (String re : regexps) { + if (regexpFilter(sbdoc, re, repeat)) + changed = true; + else + break; + } + return changed; + } + + // Filter a document with respect to a set of regular expressions + // on a per-line basis + public static boolean regexpFilterLine(StringBuilder document, String regexp, boolean repeat) { + boolean changed = false; + Pattern p = Pattern.compile(regexp, Pattern.DOTALL); + String[] lines = document.toString().split("\r?\n"); + document.setLength(0); + for (int i = 0; i < lines.length; i++) { + String line = lines[i]; + Matcher m = p.matcher(line); + if (!m.find()) { + document.append(line); + document.append("\n"); + changed = true; + if (!repeat) + break; + } + } + return changed; + } + + + /** + * Choose a test case based on its name and return its index + * + * @param name to search for + * @param testcases set of testcases to search + */ + static void singleTest(String name, List testcases) { + for (int i = 0; i < testcases.size(); i++) { + TestCaseCommon tc = testcases.get(i); + if (tc.name.equalsIgnoreCase(name)) { + testcases.clear(); + testcases.add(tc); + } + } + return; + } + + /** + * Choose a test case based on its name and return its index + * + * @param index to search for + * @param testcases set of testcases to search + */ + static void singleTest(int index, List testcases) { + TestCaseCommon tc = testcases.get(index); + testcases.clear(); + testcases.add(tc); + return; + } + + protected String dumpmetadata(NetcdfDataset ncfile, String datasetname) throws Exception { + StringWriter sw = new StringWriter(); + StringBuilder args = new StringBuilder("-strict"); + if (datasetname != null) { + args.append(" -datasetname "); + args.append(datasetname); + } + // Print the meta-databuffer using these args to NcdumpW + try { + Ncdump.ncdump(ncfile, args.toString(), sw, null); + // if (!ucar.nc2.NCdumpW.print(ncfile, args.toString(), sw, null)) + // throw new Exception("NcdumpW failed"); + } catch (IOException ioe) { + throw new Exception("Ncdump failed", ioe); + } + sw.close(); + return sw.toString(); + } + + protected String dumpdata(NetcdfDataset ncfile, String datasetname) throws Exception { + StringBuilder args = new StringBuilder("-strict -vall"); + if (datasetname != null) { + args.append(" -datasetname "); + args.append(datasetname); + } + StringWriter sw = new StringWriter(); + // Dump the databuffer + try { + Ncdump.ncdump(ncfile, args.toString(), sw, null); + // if (!ucar.nc2.NCdumpW.print(ncfile, args.toString(), sw, null)) + // throw new Exception("NCdumpW failed"); + } catch (IOException ioe) { + ioe.printStackTrace(); + throw new Exception("NCdump failed", ioe); + } + sw.close(); + return sw.toString(); + } + + +} diff --git a/dap4/d4tests/src/test/java/dap4/test/Dump.java b/dap4/src/test/java/dap4/test/Dump.java similarity index 97% rename from dap4/d4tests/src/test/java/dap4/test/Dump.java rename to dap4/src/test/java/dap4/test/Dump.java index 7ebe022f0a..548e906a74 100644 --- a/dap4/d4tests/src/test/java/dap4/test/Dump.java +++ b/dap4/src/test/java/dap4/test/Dump.java @@ -6,6 +6,7 @@ package dap4.test; +import dap4.core.util.DapConstants; import dap4.core.util.DapUtil; import dap4.core.util.Escape; import java.io.IOException; @@ -20,7 +21,7 @@ public class Dump { ////////////////////////////////////////////////// // Constants - static public boolean DUMPCSUM = false; + public static boolean DUMPCSUM = false; static final String LBRACE = "{"; static final String RBRACE = "}"; @@ -31,7 +32,7 @@ public class Dump { // Type decls // Place to insert the command list - static public interface Commands { + public static interface Commands { public void run(Dump printer) throws IOException; } @@ -168,7 +169,7 @@ public void verifychecksum() throws IOException { return; int localcrc32 = endchecksum(); // Get the checksum from the input stream - ByteBuffer bbuf = readn(DapUtil.CHECKSUMSIZE); + ByteBuffer bbuf = readn(DapConstants.CHECKSUMSIZE); int remotecrc32 = bbuf.getInt(); assert localcrc32 == remotecrc32; newline(); diff --git a/dap4/src/test/java/dap4/test/TestConstraints.java b/dap4/src/test/java/dap4/test/TestConstraints.java new file mode 100644 index 0000000000..13ea6842f9 --- /dev/null +++ b/dap4/src/test/java/dap4/test/TestConstraints.java @@ -0,0 +1,187 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.test; + +import dap4.core.util.DapConstants; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.nc2.dataset.NetcdfDataset; + +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.lang.invoke.MethodHandles; +import java.nio.file.NoSuchFileException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * This Test uses the JUNIT Version 4 parameterized test mechanism. + * The set of arguments for each test is encapsulated in a class + * called TestCase. This allows for code re-use and for extending + * tests by adding fields to the TestCase object. + */ + +@RunWith(Parameterized.class) +public class TestConstraints extends DapTestCommon implements Dap4ManifestIF { + + ////////////////////////////////////////////////// + // Constants + + // Define the server to use + protected static final String SERVERNAME = "d4ts"; + protected static final String SERVER = "remotetest.unidata.ucar.edu"; + protected static final int SERVERPORT = -1; + protected static final String SERVERPATH = "d4ts/testfiles"; + + // Define the input set location(s) + protected static final String INPUTEXT = ".nc"; // note that the .dap is deliberately left off + protected static final String INPUTQUERY = "?" + DapConstants.CHECKSUMTAG + "=false&"; + protected static final String INPUTFRAG = "#dap4"; + + protected static final String BASELINEDIR = "/baselineconstraints"; + protected static final String BASELINEEXT = ".nc.ncdump"; + + // Following files cannot be tested because of flaws in sequence handling + // by the CDM code in ucar.nc2.dataset. + protected static String[] EXCLUSIONS = + {"test_vlen2", "test_vlen3", "test_vlen4", "test_vlen5", "test_vlen6", "test_vlen7", "test_vlen8"}; + + ////////////////////////////////////////////////// + // Static Fields + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + public static String resourceroot; + public static Dap4Server server; + + static { + // This test uses remotetest + server = new Dap4Server("remotetest", SERVER, SERVERPORT, SERVERPATH); + Dap4Server.register(true, server); + resourceroot = getResourceRoot(); + } + + ////////////////////////////////////////////////// + // Test Case Class + + // Encapulate the arguments for each test + static class TestCase extends TestCaseCommon { + public String url; + public String baseline; + public String ce; // for debugging + + public TestCase(String name, String url, String baseline, String ce) { + super(name); + this.url = url; + this.baseline = baseline; + this.ce = ce; + } + + // This defines how the test is reported by JUNIT. + public String toString() { + return this.name; + } + } + + ////////////////////////////////////////////////// + // Test Generator + + @Parameterized.Parameters(name = "{index}: {0}") + public static List defineTestCases() { + assert (server != null); + List testcases = new ArrayList<>(); + String[][] manifest = excludeNames(constraint_manifest, EXCLUSIONS); + // Separate the manifest string into the file name and the index and the query parts + for (String[] tuple : manifest) { + String file = tuple[0]; + String index = tuple[1]; + String query = tuple[2]; // excluding leading '?' + String url = + server.getURL() + "/" + file + INPUTEXT + INPUTQUERY + DapConstants.CONSTRAINTTAG + query + INPUTFRAG; + String baseline = resourceroot + BASELINEDIR + "/" + file + "." + index + BASELINEEXT; + TestCase tc = new TestCase(file + "." + index, url, baseline, query); + testcases.add(tc); + } + // singleTest(0,testcases); // choose single test for debugging + return testcases; + } + + ////////////////////////////////////////////////// + // Test Fields + + TestCase tc; + + ////////////////////////////////////////////////// + // Constructor(s) + + public TestConstraints(TestCaseCommon tc) { + super(); + this.tc = (TestCase) tc; + } + + ////////////////////////////////////////////////// + // Junit test method(s) + + @Before + public void setup() { + // Set any properties + // props.prop_visual = true; + // props.prop_baseline = true; + super.setup(); + } + + @Test + public void test() throws Exception { + int i, c; + StringBuilder sb = new StringBuilder(); + + NetcdfDataset ncfile; + try { + ncfile = openDataset(tc.url); + } catch (Exception e) { + e.printStackTrace(); + throw new Exception("File open failed: " + tc.url, e); + } + assert ncfile != null; + + String datasetname = tc.name; + String testresult = dumpdata(ncfile, datasetname); + ncfile.close(); + + // Read the baseline file(s) if they exist + String baselinecontent = null; + if (props.prop_baseline) { + writefile(tc.baseline, testresult); + } else { + try { + baselinecontent = readfile(tc.baseline); + } catch (NoSuchFileException nsf) { + Assert.fail(tc.name + ": ***Fail: test comparison file not found: " + tc.baseline); + } + } + if (props.prop_visual) { + if (baselinecontent != null) + visual("Input", baselinecontent); + visual("Output", testresult); + } + if (!props.prop_baseline && props.prop_diff) { // compare with baseline + System.err.println("Comparison: vs " + tc.baseline); + Assert.assertTrue("*** FAIL", same(getTitle(), baselinecontent, testresult)); + System.out.println(tc.name + ": Passed"); + } + } +} + + diff --git a/dap4/src/test/java/dap4/test/TestDap4Url.java b/dap4/src/test/java/dap4/test/TestDap4Url.java new file mode 100644 index 0000000000..336a5cfe78 --- /dev/null +++ b/dap4/src/test/java/dap4/test/TestDap4Url.java @@ -0,0 +1,133 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.test; + +import dap4.core.util.DapConstants; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.nc2.dataset.DatasetUrl; +import ucar.nc2.dataset.NetcdfDataset; + +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.lang.invoke.MethodHandles; +import java.nio.file.NoSuchFileException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * This Test uses the JUNIT Version 4 parameterized test mechanism. + * The set of arguments for each test is encapsulated in a class + * called TestCase. This allows for code re-use and for extending + * tests by adding fields to the TestCase object. + */ + +/** + * This specific set of tests verifies the legal URLs for accessing + * a DAP4 server. + */ + +@RunWith(Parameterized.class) +public class TestDap4Url extends DapTestCommon implements Dap4ManifestIF { + + ////////////////////////////////////////////////// + // Constants + + // Legal url formats + protected static String[] urls = {"https://remotetest.unidata.ucar.edu/d4ts/testfiles/test_one_var.nc#dap4", + "dap4://remotetest.unidata.ucar.edu/d4ts/testfiles/test_one_var.nc", + "https://remotetest.unidata.ucar.edu/d4ts/testfiles/test_one_var.nc", + // "https://remotetest.unidata.ucar.edu/thredds/dap4/testAll/H.1.1.nc", + }; + + ////////////////////////////////////////////////// + // Static Fields + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + public static String resourceroot; + + static { + resourceroot = getResourceRoot(); + } + + ////////////////////////////////////////////////// + // Test Case Class + + // Encapulate the arguments for each test + static class TestCase extends TestCaseCommon { + public String url; + + public TestCase(String url) { + this.url = url; + } + + // This defines how the test is reported by JUNIT. + public String toString() { + return this.url; + } + } + + ////////////////////////////////////////////////// + // Test Generator + + @Parameterized.Parameters(name = "{index}: {0}") + public static List defineTestCases() { + List testcases = new ArrayList<>(); + for (String u : urls) { + TestCase tc = new TestCase(u); + testcases.add(tc); + } + return testcases; + } + + ////////////////////////////////////////////////// + // Test Fields + + TestCase tc; + + ////////////////////////////////////////////////// + // Constructor(s) + + public TestDap4Url(TestCaseCommon tc) { + super(); + this.tc = (TestCase) tc; + } + + ////////////////////////////////////////////////// + // Junit test method(s) + + @Before + public void setup() { + // Set any properties + // props.prop_visual = true; + // props.prop_baseline = true; + super.setup(); + } + + @Test + public void test() throws Exception { + int i, c; + System.err.println(">>> Test: " + tc.url); + DatasetUrl durl; + try { + durl = DatasetUrl.findDatasetUrl(tc.url); + } catch (Exception e) { + e.printStackTrace(); + durl = null; + } + Assert.assertNotNull("*** FAIL: " + tc.name, durl); + System.out.println("*** PASS: " + tc.name); + } +} + diff --git a/dap4/src/test/java/dap4/test/TestHyrax.java b/dap4/src/test/java/dap4/test/TestHyrax.java new file mode 100644 index 0000000000..39092f51a6 --- /dev/null +++ b/dap4/src/test/java/dap4/test/TestHyrax.java @@ -0,0 +1,191 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.test; + +import dap4.core.util.DapConstants; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.nc2.dataset.NetcdfDataset; + +import java.lang.invoke.MethodHandles; +import java.nio.file.NoSuchFileException; +import java.util.ArrayList; +import java.util.List; + +/** + * This Test uses the JUNIT Version 4 parameterized test mechanism. + * The set of arguments for each test is encapsulated in a class + * called TestCase. This allows for code re-use and for extending + * tests by adding fields to the TestCase object. + */ + +/** + * This test set reads DAP4 datasets (both constrained and not) + * from the test.opendap.org test server + */ + +@RunWith(Parameterized.class) +public class TestHyrax extends DapTestCommon implements Dap4ManifestIF { + + ////////////////////////////////////////////////// + // Constants + + // Define the server to use + protected static final String SERVERNAME = "hyrax"; + protected static final String SERVER = "test.opendap.org"; + protected static final int SERVERPORT = -1; + protected static final String SERVERPATH = "opendap"; + + // Define the input set location(s) + protected static final String INPUTEXT = ""; + protected static final String INPUTQUERY = "?dap4.checksum=true"; + protected static final String INPUTFRAG = "#dap4&hyrax"; + + protected static final String BASELINEDIR = "/baselinehyrax"; + protected static final String BASELINEEXT = ".ncdump"; + + static final String[][] hyrax_manifest = new String[][] {{"nc4_nc_classic_no_comp.nc", "nc4_test_files", null}, + {"nc4_nc_classic_comp.nc", "nc4_test_files", null}, {"nc4_unsigned_types.nc", "nc4_test_files", null}, + {"nc4_unsigned_types_comp.nc", "nc4_test_files", null}, {"nc4_strings.nc", "nc4_test_files", null}, + {"nc4_strings_comp.nc", "nc4_test_files", null}, {"ref_tst_compounds.nc", "nc4_test_files", null}, + {"amsre_20060131v5.dat", "RSS/amsre/bmaps_v05/y2006/m01", "/time_a[0:2][0:5]"}, + {"AIRS.2002.12.01.L3.RetStd_H031.v4.0.21.0.G06101132853.hdf", "AIRS/AIRH3STM.003/2002.12.01", "/TotalCounts_A"}}; + + static final String[] HYRAX_EXCLUSIONS = {}; + + ////////////////////////////////////////////////// + // Static Fields + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + public static String resourceroot; + public static Dap4Server server; + + static { + server = new Dap4Server("hyrax", SERVER, SERVERPORT, SERVERPATH); + Dap4Server.register(true, server); + resourceroot = getResourceRoot(); + } + + ////////////////////////////////////////////////// + // Test Case Class + + // Encapulate the arguments for each test + static class TestCase extends TestCaseCommon { + public String url; + public String baseline; + public String ce; // optional + + public TestCase(String name, String url, String baseline, String ce) { + super(name); + this.url = url; + this.baseline = baseline; + this.ce = ce; + } + + // This defines how the test is reported by JUNIT. + public String toString() { + return this.name; + } + } + + ////////////////////////////////////////////////// + // Test Generator + + @Parameterized.Parameters(name = "{index}: {0}") + public static List defineTestCases() { + assert (server != null); + List testcases = new ArrayList<>(); + String[][] manifest = excludeNames(hyrax_manifest, HYRAX_EXCLUSIONS); + // Separate the manifest string into pieces + for (String[] tuple : manifest) { + String file = tuple[0]; + String prefix = tuple[1]; + String query = tuple[2]; // excluding leading '?' + // Unfortunately, The OPeNDAP test server does not appear to support https: + String url = server.getURL("http:") + "/" + prefix + "/" + file + INPUTEXT + INPUTQUERY; + if (query != null) + url += ("&" + DapConstants.CONSTRAINTTAG + "=" + query); + url += INPUTFRAG; + String baseline = resourceroot + BASELINEDIR + "/" + file + BASELINEEXT; + TestCase tc = new TestCase(file, url, baseline, query); + testcases.add(tc); + } + // singleTest("AIRS.2002.12.01.L3.RetStd_H031.v4.0.21.0.G06101132853.hdf", testcases); // choose single test for + // debugging + return testcases; + } + ////////////////////////////////////////////////// + // Test Fields + + TestCase tc; + + ////////////////////////////////////////////////// + // Constructor(s) + + public TestHyrax(TestCaseCommon tc) { + super(); + this.tc = (TestCase) tc; + } + + ////////////////////////////////////////////////// + // Junit test method(s) + + @Before + public void setup() { + // Set any properties + // props.prop_baseline = true; + // props.prop_visual = true; + super.setup(); + } + + @Test + public void test() throws Exception { + int i, c; + StringBuilder sb = new StringBuilder(); + + NetcdfDataset ncfile; + try { + ncfile = openDataset(tc.url); + } catch (Exception e) { + e.printStackTrace(); + throw new Exception("File open failed: " + tc.url, e); + } + assert ncfile != null; + + String datasetname = tc.name; + String testresult = dumpdata(ncfile, datasetname); + ncfile.close(); + + // Read the baseline file(s) if they exist + String baselinecontent = null; + if (props.prop_baseline) { + writefile(tc.baseline, testresult); + } else { + try { + baselinecontent = readfile(tc.baseline); + } catch (NoSuchFileException nsf) { + Assert.fail(tc.name + ": ***Fail: test comparison file not found: " + tc.baseline); + } + } + if (props.prop_visual) { + if (baselinecontent != null) + visual("Input", baselinecontent); + visual("Output", testresult); + } + if (!props.prop_baseline && props.prop_diff) { // compare with baseline + System.err.println("Comparison: vs " + tc.baseline); + Assert.assertTrue("*** FAIL", same(getTitle(), baselinecontent, testresult)); + System.out.println(tc.name + ": Passed"); + } + } + +} diff --git a/dap4/src/test/java/dap4/test/TestParserCE.java b/dap4/src/test/java/dap4/test/TestParserCE.java new file mode 100644 index 0000000000..134f6efb4a --- /dev/null +++ b/dap4/src/test/java/dap4/test/TestParserCE.java @@ -0,0 +1,174 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.test; + +import dap4.core.ce.CECompiler; +import dap4.core.ce.CEConstraint; +import dap4.core.ce.parser.CEParserImpl; +import dap4.core.dmr.DMRFactory; +import dap4.core.dmr.DapDataset; +import dap4.core.dmr.ErrorResponse; +import dap4.core.dmr.parser.DOM4Parser; +import dap4.core.dmr.parser.Dap4Parser; +import dap4.core.dmr.parser.ParseUtil; +import dap4.core.dmr.DMRPrinter; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.io.File; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.lang.invoke.MethodHandles; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.regex.Pattern; + +/** + * This Test uses the JUNIT Version 4 parameterized test mechanism. + * The set of arguments for each test is encapsulated in a class + * called TestCase. This allows for code re-use and for extending + * tests by adding fields to the TestCase object. + */ + +/** + * This tests the Constraint Expression (CE) Parser; + * it is completely self-contained. + */ + +@RunWith(Parameterized.class) +public class TestParserCE extends DapTestCommon implements Dap4ManifestIF { + + ////////////////////////////////////////////////// + // Constants + + static final boolean DMRPARSEDEBUG = false; + static final boolean CEPARSEDEBUG = false; + + // DMR Constants + static final String CE1_DMR = "\n" + + " \n" + " \n" + + " \n" + " \n" + " \n" + " \n" + + " \n" + " \n" + " \n" + " \n" + + " \n" + " \n" + " \n" + " \n" + + " \n" + " \n" + " \n" + " \n" + + " \n" + " \n" + " \n" + " \n" + + " \n" + " \n" + " \n" + " \n" + + " \n" + " \n" + " \n" + " \n" + + " \n" + " \n" + " \n" + ""; + + static final String CE2_DMR = "" + " " + + " " + " " + " " + " " + ""; + + static final String[][] testinputs = + {{"/a[1]", null, CE1_DMR}, {"/b[10:16]", null, CE1_DMR}, {"/c[8:2:15]", null, CE1_DMR}, + {"/a[1];/b[10:16];/c[8:2:15]", null, CE1_DMR}, {"/d[1][0:2:2];/a[1];/e[1][0];/f[0][1]", null, CE1_DMR}, + {"/s[0:3][0:2].x;/s[0:3][0:2].y", "/s[0:3][0:2]", CE1_DMR}, {"/seq|i1<0", null, CE1_DMR}, + {"/seq|00,i1<10", CE1_DMR}, {"vo[1:1][0,0]", "/vo[1][0,0]", CE2_DMR}}; + + ////////////////////////////////////////////////// + // Static Fields + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + ////////////////////////////////////////////////// + // Test Case Class + + // Encapulate the arguments for each test + static class TestCase extends TestCaseCommon { + public String ce; + public String expected; // null => same as ce + public String dmr; // DMR against which the CE is defined + + public TestCase(String ce, String expected, String dmr) { + super(); + this.ce = ce; + this.expected = expected; + this.dmr = dmr; + if (this.expected == null) + this.expected = ce; + } + + // This defines how the test is reported by JUNIT. + public String toString() { + return this.ce; + } + } + + ////////////////////////////////////////////////// + // Test Generator + + @Parameterized.Parameters(name = "{index}: {0}") + public static List defineTestCases() { + List testcases = new ArrayList<>(); + for (String[] triple : testinputs) { + TestCase tc = new TestCase(triple[0], triple[1], triple[2]); + testcases.add(tc); + } + // singleTest(0, testcases); // choose single test for debugging + return testcases; + } + + ////////////////////////////////////////////////// + // Test Fields + + TestCase tc; + + ////////////////////////////////////////////////// + // Constructor(s) + + public TestParserCE(TestCaseCommon tc) { + super(); + this.tc = (TestCase) tc; + } + + ////////////////////////////////////////////////// + // Junit test method(s) + + @Before + public void setup() { + // Set any properties + super.setup(); + } + + @Test + public void test() throws Exception { + int i, c; + + // Create the DMR tree + Dap4Parser parser = new DOM4Parser(new DMRFactory()); + if (DMRPARSEDEBUG) + parser.setDebugLevel(1); + // Parse document + Assert.assertTrue("DMR Parse failed", parser.parse(tc.dmr)); + Assert.assertNull("DMR Parser returned Error response", parser.getErrorResponse()); // Check result + DapDataset dmr = parser.getDMR(); + Assert.assertNotNull("No DMR created", dmr); + + // Parse the constraint expression against the DMR + CEParserImpl ceparser = new CEParserImpl(dmr); + if (CEPARSEDEBUG) + ceparser.setDebugLevel(1); + Assert.assertTrue("CE Parse failed", ceparser.parse(tc.ce)); + CECompiler compiler = new CECompiler(); + CEConstraint ceroot = compiler.compile(dmr, ceparser.getCEAST()); + Assert.assertNotNull("No CEConstraint created", ceroot); + + // Dump the parsed CE for comparison purposes + String cedump = ceroot.toConstraintString(); + if (props.prop_visual) + visual("|" + tc.ce + "|", cedump); + Assert.assertTrue("expected :: CE mismatch", same(getTitle(), tc.expected, cedump)); + System.out.println(tc.ce + ": Passed"); + } + +} diff --git a/dap4/src/test/java/dap4/test/TestParserDMR.java b/dap4/src/test/java/dap4/test/TestParserDMR.java new file mode 100644 index 0000000000..2c984ab884 --- /dev/null +++ b/dap4/src/test/java/dap4/test/TestParserDMR.java @@ -0,0 +1,186 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.test; + +import dap4.core.dmr.DMRFactory; +import dap4.core.dmr.DapDataset; +import dap4.core.dmr.ErrorResponse; +import dap4.core.dmr.parser.DOM4Parser; +import dap4.core.dmr.parser.Dap4Parser; +import dap4.core.dmr.parser.ParseUtil; +import dap4.core.dmr.DMRPrinter; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.io.File; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.lang.invoke.MethodHandles; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * This Test uses the JUNIT Version 4 parameterized test mechanism. + * The set of arguments for each test is encapsulated in a class + * called TestCase. This allows for code re-use and for extending + * tests by adding fields to the TestCase object. + */ + +@RunWith(Parameterized.class) +public class TestParserDMR extends DapTestCommon implements Dap4ManifestIF { + + ////////////////////////////////////////////////// + // Constants + + static final boolean PARSEDEBUG = false; + + // Define the input set location(s) + protected static final String INPUTDIR = "/rawtestfiles"; + protected static final String INPUTEXT = ".nc.dmr"; + + // Define some common DMR filter regular expression + static String RE_ENDIAN = "\n[ \t]*[ \t]*"; + static String RE_NCPROPS = "\n[ \t]*[ \t]*"; + protected static final String RE_UNLIMITED = "[ \t]+_edu.ucar.isunlimited=\"1\""; + + ////////////////////////////////////////////////// + // Static Fields + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + public static String resourceroot; + + static { + resourceroot = getResourceRoot(); + } + + ////////////////////////////////////////////////// + // Test Case Class + + // Encapulate the arguments for each test + static class TestCase extends TestCaseCommon { + public String name; // Name from manifest + public String input; // Full path or URL for the input file + + public TestCase(String filename, String input) { + super(filename); + this.input = input; + } + + // This defines how the test is reported by JUNIT. + public String toString() { + return this.name; + } + } + + ////////////////////////////////////////////////// + // Test Generator + + @Parameterized.Parameters(name = "{index}: {0}") + public static List defineTestCases() { + List testcases = new ArrayList<>(); + for (String[] tuple : dap4_manifest) { + String name = tuple[0]; + String path = resourceroot + INPUTDIR + "/" + name + INPUTEXT; + TestCase tc = new TestCase(name, path); + testcases.add(tc); + } + // Include the constraint tests also + for (String[] triple : constraint_manifest) { + String file = triple[0]; // unpack + String index = triple[1]; + String ce = triple[2]; // unused + String path = resourceroot + INPUTDIR + "/" + file + "." + index + INPUTEXT; + TestCase tc = new TestCase(file + "." + index, path); + testcases.add(tc); + } + // singleTest(0, testcases); // choose single test for debugging + return testcases; + } + + ////////////////////////////////////////////////// + // Test Fields + + TestCase tc; + + ////////////////////////////////////////////////// + // Constructor(s) + + public TestParserDMR(TestCaseCommon tc) { + super(); + this.tc = (TestCase) tc; + } + + ////////////////////////////////////////////////// + // Junit test method(s) + + @Before + public void setup() { + // Set any properties + // props.prop_visual = true; + super.setup(); + } + + @Test + public void test() throws Exception { + String document; + int i, c; + + document = readfile(tc.input); + + // Remove unneeded attributes + StringBuilder sb = new StringBuilder(); + sb.append(document); + regexpFilters(sb, new String[] {RE_ENDIAN, RE_NCPROPS}, false); + regexpFilters(sb, new String[] {RE_UNLIMITED}, true); + document = sb.toString(); + + Dap4Parser parser = new DOM4Parser(new DMRFactory()); + if (PARSEDEBUG) + parser.setDebugLevel(1); + // Parse document + Assert.assertTrue("Parse failed", parser.parse(document)); + + // Check result + ErrorResponse err = parser.getErrorResponse(); + if (err != null) + Assert.fail("Error response:\n" + err.buildXML()); + + DapDataset dmr = parser.getDMR(); + Assert.assertNotNull("No dataset created", dmr); + + // Dump the parsed DMR for comparison purposes + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + DMRPrinter dapprinter = new DMRPrinter(dmr, pw); + dapprinter.print(); + pw.close(); + sw.close(); + + sb = new StringBuilder(sw.toString()); + // Remove irrelevant dependencies + regexpFilters(sb, new String[] {RE_ENDIAN}, false); + String testresult = sb.toString(); + + // Use the original DMR as the baseline + String baselinecontent = document; + + if (props.prop_visual) { + visual("Baseline", baselinecontent); + visual("Output", testresult); + } + Assert.assertTrue("Files are different", same(getTitle(), baselinecontent, testresult)); + System.out.println(tc.name + ": Passed"); + } + +} diff --git a/dap4/src/test/java/dap4/test/TestRaw.java b/dap4/src/test/java/dap4/test/TestRaw.java new file mode 100644 index 0000000000..6fb2e18f6e --- /dev/null +++ b/dap4/src/test/java/dap4/test/TestRaw.java @@ -0,0 +1,206 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.test; + +import dap4.core.util.DapConstants; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.nc2.dataset.NetcdfDataset; + +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.lang.invoke.MethodHandles; +import java.nio.file.NoSuchFileException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static dap4.core.util.DapConstants.CHECKSUMATTRNAME; + +/** + * This Test uses the JUNIT Version 4 parameterized test mechanism. + * The set of arguments for each test is encapsulated in a class + * called TestCase. This allows for code re-use and for extending + * tests by adding fields to the TestCase object. + */ + +@RunWith(Parameterized.class) +public class TestRaw extends DapTestCommon implements Dap4ManifestIF { + + ////////////////////////////////////////////////// + // Constants + + // Define the input set location(s) + protected static final String INPUTDIR = "/rawtestfiles"; + protected static final String INPUTEXT = ".nc.dap"; + protected static final String INPUTQUERY = "?" + DapConstants.CHECKSUMTAG + "=false"; + protected static final String INPUTFRAG = ""; + protected static final String BASELINEDIR = "/baselineraw"; + protected static final String BASELINEEXT = ".nc.ncdump"; + + + // Following files cannot be tested because of flaws in sequence handling + // by the CDM code in ucar.nc2.dataset. + protected static String[] EXCLUSIONS = + {"test_vlen2", "test_vlen3", "test_vlen4", "test_vlen5", "test_vlen6", "test_vlen7", "test_vlen8"}; + + // Attribute suppression + static String RE_ENDIAN = "\n[ \t]*[ \t]*"; + static String RE_CHECKSUM = ":" + DapConstants.CHECKSUMATTRNAME; + static String RE_DAP4_ENDIAN = ":" + DapConstants.LITTLEENDIANATTRNAME; + static String RE_DAP4_CE = ":" + DapConstants.CEATTRNAME; + + ////////////////////////////////////////////////// + // Static Fields + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + public static String resourceroot; + + static { + resourceroot = getResourceRoot(); + } + + ////////////////////////////////////////////////// + // Test Case Class + + // Encapulate the arguments for each test + static class TestCase extends TestCaseCommon { + public String url; + public String baseline; + + public TestCase(String name, String url, String baseline) { + super(name); + this.url = url; + this.baseline = baseline; + } + + // This defines how the test is reported by JUNIT. + public String toString() { + return this.name; + } + } + + ////////////////////////////////////////////////// + // Test Generator + + @Parameterized.Parameters(name = "{index}: {0}") + public static List defineTestCases() { + List testcases = new ArrayList<>(); + String[][] manifest = excludeNames(dap4_manifest, EXCLUSIONS); + for (String[] tuple : manifest) { + String name = tuple[0]; + String url = buildURL(name); + String baseline = resourceroot + BASELINEDIR + "/" + name + BASELINEEXT; + TestCase tc = new TestCase(name, url, baseline); + testcases.add(tc); + } + // singleTest("test_vlen3", testcases); // choose single test for debugging + return testcases; + } + + ////////////////////////////////////////////////// + // Test Fields + + TestCase tc; + + ////////////////////////////////////////////////// + // Constructor(s) + + public TestRaw(TestCaseCommon tc) { + super(); + this.tc = (TestCase) tc; + } + + ////////////////////////////////////////////////// + // Junit test method(s) + + @Before + public void setup() { + // Set any properties + // props.prop_visual = true; + // props.prop_baseline = true; + super.setup(); + } + + @Test + public void test() throws Exception { + int i, c; + StringBuilder sb = new StringBuilder(); + // String url = buildURL(resourceroot + INPUTDIR, tc.name + INPUTEXT); + String url = tc.url; + NetcdfDataset ncfile; + try { + ncfile = openDataset(url); + } catch (Exception e) { + e.printStackTrace(); + throw new Exception("File open failed: " + url, e); + } + assert ncfile != null; + + String testresult = dumpdata(ncfile, tc.name); // print data section + ncfile.close(); + + // Remove unused text + sb.setLength(0); + sb.append(testresult); + regexpFilterLine(sb, RE_DAP4_ENDIAN, true); + regexpFilterLine(sb, RE_DAP4_CE, true); + testresult = sb.toString(); + + // Read the baseline file(s) if they exist + String baselinecontent = null; + if (props.prop_baseline) { + writefile(tc.baseline, testresult); + } else { + try { + baselinecontent = readfile(tc.baseline); + // Remove unused text + sb.setLength(0); + sb.append(baselinecontent); + regexpFilterLine(sb, RE_CHECKSUM, true); + baselinecontent = sb.toString(); + } catch (NoSuchFileException nsf) { + Assert.fail(tc.name + ": ***Fail: test comparison file not found: " + tc.baseline); + } + } + if (props.prop_visual) { + if (baselinecontent != null) + visual("Input", baselinecontent); + visual("Output", testresult); + } + if (!props.prop_baseline && props.prop_diff) { // compare with baseline + System.err.println("Comparison: vs " + tc.baseline); + Assert.assertTrue("*** FAIL", same(getTitle(), baselinecontent, testresult)); + System.out.println(tc.name + ": Passed"); + } + } + + ////////////////////////////////////////////////// + // Support Methods + + protected static String buildURL(String name) { + StringBuilder url = new StringBuilder(); + url.append("file://"); + url.append(resourceroot); + url.append(INPUTDIR); + url.append("/"); + url.append(name); + url.append(INPUTEXT); + url.append(INPUTQUERY); + url.append(INPUTFRAG); + return url.toString(); + } + +} + + diff --git a/dap4/src/test/java/dap4/test/TestRemote.java b/dap4/src/test/java/dap4/test/TestRemote.java new file mode 100644 index 0000000000..10ecf417f8 --- /dev/null +++ b/dap4/src/test/java/dap4/test/TestRemote.java @@ -0,0 +1,183 @@ +/* + * Copyright 2012, UCAR/Unidata. + * See the LICENSE file for more information. + */ + +package dap4.test; + +import dap4.core.util.DapConstants; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ucar.nc2.dataset.NetcdfDataset; + +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.lang.invoke.MethodHandles; +import java.nio.file.NoSuchFileException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * This Test uses the JUNIT Version 4 parameterized test mechanism. + * The set of arguments for each test is encapsulated in a class + * called TestCase. This allows for code re-use and for extending + * tests by adding fields to the TestCase object. + */ + +@Ignore("Disable while RemoteTest server is not working") +@RunWith(Parameterized.class) +public class TestRemote extends DapTestCommon implements Dap4ManifestIF { + + ////////////////////////////////////////////////// + // Constants + + // Define the server to use + protected static final String SERVERNAME = "d4ts"; + protected static final String SERVER = "remotetest.unidata.ucar.edu"; + protected static final int SERVERPORT = -1; + protected static final String SERVERPATH = "d4ts/testfiles"; + + // Define the input set location(s) + protected static final String INPUTEXT = ".nc"; // note that the .dap is deliberately left off + protected static final String INPUTQUERY = "?" + DapConstants.CHECKSUMTAG + "=true"; + protected static final String INPUTFRAG = "#dap4"; + + protected static final String BASELINEDIR = "/baselineremote"; + protected static final String BASELINEEXT = ".nc.ncdump"; + + // Following files cannot be tested because of flaws in sequence handling + // by the CDM code in ucar.nc2.dataset. + protected static String[] EXCLUSIONS = + {"test_vlen2", "test_vlen3", "test_vlen4", "test_vlen5", "test_vlen6", "test_vlen7", "test_vlen8"}; + + ////////////////////////////////////////////////// + // Static Fields + + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + public static String resourceroot; + public static Dap4Server server; + + static { + server = new Dap4Server("remotetest", SERVER, SERVERPORT, SERVERPATH); + Dap4Server.register(true, server); + resourceroot = getResourceRoot(); + } + + ////////////////////////////////////////////////// + // Test Case Class + + // Encapulate the arguments for each test + static class TestCase extends TestCaseCommon { + public String url; + public String baseline; + + public TestCase(String name, String url, String baseline) { + super(name); + this.url = url; + this.baseline = baseline; + } + + // This defines how the test is reported by JUNIT. + public String toString() { + return this.name; + } + } + + ////////////////////////////////////////////////// + // Test Generator + + @Parameterized.Parameters(name = "{index}: {0}") + public static List defineTestCases() { + assert (server != null); + List testcases = new ArrayList<>(); + String[][] manifest = excludeNames(dap4_manifest, EXCLUSIONS); + for (String[] tuple : manifest) { + String name = tuple[0]; + String url = server.getURL() + "/" + name + INPUTEXT + INPUTQUERY + INPUTFRAG; + String baseline = resourceroot + BASELINEDIR + "/" + name + BASELINEEXT; + TestCase tc = new TestCase(name, url, baseline); + testcases.add(tc); + } + // singleTest("test_utf8", testcases); // choose single test for debugging + return testcases; + } + + ////////////////////////////////////////////////// + // Test Fields + + TestCase tc; + + ////////////////////////////////////////////////// + // Constructor(s) + + public TestRemote(TestCaseCommon tc) { + super(); + this.tc = (TestCase) tc; + } + + ////////////////////////////////////////////////// + // Junit test method(s) + + @Before + public void setup() { + // Set any properties + // props.prop_visual = true; + // props.prop_baseline = true; + super.setup(); + } + + @Test + public void test() throws Exception { + int i, c; + StringBuilder sb = new StringBuilder(); + + System.err.println(">>> Test: " + tc.url); + + NetcdfDataset ncfile; + try { + ncfile = openDataset(tc.url); + } catch (Exception e) { + e.printStackTrace(); + throw new Exception("File open failed: " + tc.url, e); + } + assert ncfile != null; + + String testresult = dumpdata(ncfile, tc.name); // print data section + + ncfile.close(); + + // Read the baseline file(s) if they exist + String baselinecontent = null; + if (props.prop_baseline) { + writefile(tc.baseline, testresult); + } else { + try { + baselinecontent = readfile(tc.baseline); + } catch (NoSuchFileException nsf) { + Assert.fail(tc.name + ": ***Fail: test comparison file not found: " + tc.baseline); + } + } + if (props.prop_visual) { + if (baselinecontent != null) + visual("Input", baselinecontent); + visual("Output", testresult); + } + if (!props.prop_baseline && props.prop_diff) { // compare with baseline + System.err.println("Comparison: vs " + tc.baseline); + Assert.assertTrue("*** FAIL", same(getTitle(), baselinecontent, testresult)); + System.out.println(tc.name + ": Passed"); + } + } + +} + + diff --git a/dap4/src/test/resources/logback-test.xml b/dap4/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..f48ace23f7 --- /dev/null +++ b/dap4/src/test/resources/logback-test.xml @@ -0,0 +1,51 @@ + + + + + + %highlight([%d{HH:mm:ss.SSS} %-5level %logger{36}]) %message%n + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/src/site/pages/netcdfJava/developer/DatasetUrls.md b/docs/src/site/pages/netcdfJava/developer/DatasetUrls.md index ef4ed589e1..3b6fcb606f 100644 --- a/docs/src/site/pages/netcdfJava/developer/DatasetUrls.md +++ b/docs/src/site/pages/netcdfJava/developer/DatasetUrls.md @@ -275,15 +275,14 @@ The `cdmRemoteURL` must be an endpoint for a `cdmremote` web service, which prov ### DAP4 datasets `NetcdfDataset` can open datasets through the DAP4 protocol. -The url should either begin with `dap4:` or `dap4:http:`. +The following url templates will be recognized as indicating the DAP4 protocol. +* *dap4:////* +* *https:////#dap4* Examples: - * `dap4:http://thredds.ucar.edu:8080/thredds/fmrc/NCEP/GFS/CONUS_95km/files/GFS_CONUS_95km_20070319_0600.grib1` -* `dap4://thredds.ucar.edu:8080/thredds/models/NCEP/GFS/Global_5x2p5deg/GFS_Global_5x2p5deg_20070313_1200.nc` - -To avoid confusion with other protocols using HTTP URLs, DAP4 URLs are often converted to use the `dap4:` prefix. -Also note that when passing a DAP4 dataset URL to the netCDF-Java library, do not include any of the access suffixes, e.g. `.dmr`, `.dap`, `.dst`, etc. +* `https://thredds.ucar.edu:8080/thredds/models/NCEP/GFS/Global_5x2p5deg/GFS_Global_5x2p5deg_20070313_1200.nc#dap4` +Note that when passing a DAP4 dataset URL to the netCDF-Java library, do not include any of the access suffixes, e.g. `.dmr`, `.dap`, `.dsr`, `.xml` etc. ## `ucar.nc2.ft.FeatureDatasetFactoryManager.open()` @@ -388,4 +387,4 @@ Use or better -`` \ No newline at end of file +`` diff --git a/docs/src/test/java/tests/cdmdatasets/TestNetcdfDatasetTutorial.java b/docs/src/test/java/tests/cdmdatasets/TestNetcdfDatasetTutorial.java index acfdb1d848..ac25b310a7 100644 --- a/docs/src/test/java/tests/cdmdatasets/TestNetcdfDatasetTutorial.java +++ b/docs/src/test/java/tests/cdmdatasets/TestNetcdfDatasetTutorial.java @@ -61,13 +61,8 @@ public void testUnpackDataTutorial() throws IOException { assertThat((Object) scaledvar).isNotNull(); assertThat(scaledvar.getDataType()).isEqualTo(DataType.FLOAT); - assertThat(scaledvar.attributes().hasAttribute("scale_factor")).isTrue(); - double scale_factor = scaledvar.attributes().findAttributeDouble("scale_factor", 1.0); - assertThat(scaledvar.attributes().hasAttribute("add_offset")).isTrue(); - double add_offset = scaledvar.attributes().findAttributeDouble("add_offset", 1.0); - double unpacked_data = - NetcdfDatasetTutorial.unpackData(scaledvar.readScalarShort(), scale_factor, add_offset); + NetcdfDatasetTutorial.unpackData(scaledvar.readScalarShort(), 1.0, 0.0); assertThat(unpacked_data).isNotNaN(); } } diff --git a/gradle/any/archiving.gradle b/gradle/any/archiving.gradle index a7f85bc820..4dab9f1269 100644 --- a/gradle/any/archiving.gradle +++ b/gradle/any/archiving.gradle @@ -1,7 +1,4 @@ // Safe for root project: no plugins applied. -import java.nio.file.Paths - -def license = Paths.get(rootDir.absolutePath, 'LICENSE') tasks.withType(Jar).all { // Applies to Jar, War, Ear and ShadowJar tasks. // Fails the build when an attempt is made to add a duplicate entry to an archive. @@ -29,7 +26,9 @@ tasks.withType(Jar).all { // Applies to Jar, War, Ear and ShadowJar tasks. manifest.attributes 'Built-On': project.buildTimestamp // Defined in root project. } - from(license) { + from(rootDir.absolutePath) { + include 'LICENSE' + include 'third-party-licenses/' into 'META-INF/' } } diff --git a/gradle/any/coverage.gradle b/gradle/any/coverage.gradle index f6ba25970f..141cb5e034 100644 --- a/gradle/any/coverage.gradle +++ b/gradle/any/coverage.gradle @@ -21,7 +21,7 @@ tasksExtendedByJacoco.all { * in cdm/src/main only. * * That's fine for :cdm, but we have subprojects that contain no code in their 'main' source set, namely :it, - * :cdm-test, and :dap4:d4tests. They only have code in their 'test' SourceSets. As a result, the default + * and :cdm-test. They only have code in their 'test' SourceSets. As a result, the default * 'jacocoTestReport' task added to those tasks will generate an empty report, because there's nothing to report on. * * We could remedy this by adding main SourceSets from other projects to report on. This would be particularly diff --git a/gradle/any/shared-mvn-coords.gradle b/gradle/any/shared-mvn-coords.gradle index 653185fed0..71c2c4f1a4 100644 --- a/gradle/any/shared-mvn-coords.gradle +++ b/gradle/any/shared-mvn-coords.gradle @@ -12,7 +12,7 @@ ext { buildPlugins.sonarqube = 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.0' buildPlugins.spotless = 'com.diffplug.spotless:spotless-plugin-gradle:4.5.1' buildPlugins.protobuf = 'com.google.protobuf:protobuf-gradle-plugin:0.8.18' - buildPlugins.depcheck = 'org.owasp:dependency-check-gradle:6.0.2' + buildPlugins.depcheck = 'org.owasp:dependency-check-gradle:8.2.1' buildPlugins.nexus = 'edu.ucar.unidata:unidata-nexus-gradle:0.0.1' buildPlugins.jekyll = 'edu.ucar.unidata.site:jekyll-plugin:0.0.5' @@ -22,5 +22,6 @@ ext { // coords. depVersion = [:] depVersion.slf4j = '1.7.28' - depVersion.protobuf = '3.21.7' + depVersion.protobuf = '3.23.0' + depVersion.grpc = '1.60.0' } diff --git a/gradle/root/fatJars.gradle b/gradle/root/fatJars.gradle index e98c41705b..92f2a179ff 100644 --- a/gradle/root/fatJars.gradle +++ b/gradle/root/fatJars.gradle @@ -41,6 +41,7 @@ dependencies { ncIdv project(':bufr') ncIdv project(':grib') ncIdv project(':opendap') + ncIdv project(':dap4') ncIdv project(':visad:cdm-mcidas') ncIdv project(':visad:cdm-vis5d') ncIdv project(':httpservices') @@ -55,6 +56,7 @@ dependencies { netcdfAll project(':grib') netcdfAll project(':netcdf4') netcdfAll project(':opendap') + netcdfAll project(':dap4') netcdfAll project(':httpservices') netcdfAll project(':visad:cdm-mcidas') @@ -112,13 +114,13 @@ configure(fatJarTasks) { // Filter out crap from various other packages. exclude 'AUTHORS' exclude 'DATE' - exclude 'LICENCE' - exclude 'LICENSE' exclude 'NOTICE' exclude '*.txt' exclude 'META-INF/INDEX.LIST' exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/LICENSE' + exclude 'META-INF/third-party-licenses/' + exclude 'META-INF/third-party-licenses/**' exclude 'META-INF/NOTICE' exclude 'META-INF/*.SF' exclude 'META-INF/*.DSA' diff --git a/gradle/root/publishing.gradle b/gradle/root/publishing.gradle index 7cfee766a9..58cdb0c516 100644 --- a/gradle/root/publishing.gradle +++ b/gradle/root/publishing.gradle @@ -109,6 +109,25 @@ def publishFatJarsTask = tasks.register('publishFatJars', PublishToRawRepoTask) publish.dependsOn publishFatJarsTask +def publishReleaseInfoTask = tasks.register('publishReleaseInfo', PublishToRawRepoTask) { + group = 'publishing' + description = 'Publish release_info.json to Nexus downloads.' + host = 'https://artifacts.unidata.ucar.edu/' + repoName = 'downloads-netcdf-java' + + publishSrc = new File(rootProject.getProjectDir(), "project-files/downloads/") + + onlyIf { + // Will be evaluated at task execution time, not during configuration. + // Fails the build if the specified properties haven't been provided. + username = getPropertyOrFailBuild NEXUS_USERNAME_KEY + password = getPropertyOrFailBuild NEXUS_PASSWORD_KEY + return true + } +} + +publish.dependsOn publishReleaseInfoTask + // The "publish" tasks for all subprojects require credentials for our Nexus server, which they look for in Gradle // properties. If those properties (i.e. NEXUS_USERNAME_KEY and NEXUS_PASSWORD_KEY) haven't been provided, the build // will fail. Therefore, we only want to configure credentials when a "publish" task is part of the execution plan. diff --git a/grib/src/main/java/ucar/nc2/grib/collection/GcMFile.java b/grib/src/main/java/ucar/nc2/grib/collection/GcMFile.java index 2c00962f54..0f7ffee20a 100644 --- a/grib/src/main/java/ucar/nc2/grib/collection/GcMFile.java +++ b/grib/src/main/java/ucar/nc2/grib/collection/GcMFile.java @@ -136,4 +136,9 @@ public void writeToStream(OutputStream outputStream, long offset, long maxBytes) IO.copyRafB(randomAccessFile, offset, maxBytes, outputStream); } } + + @Override + public GcMFile getChild(String newFilename) { + throw new UnsupportedOperationException("GcMFile::getChild not implemented. Filename: " + getName()); + } } diff --git a/grib/src/main/java/ucar/nc2/grib/collection/Grib1Collection.java b/grib/src/main/java/ucar/nc2/grib/collection/Grib1Collection.java index 3ddf97c0b9..4b53f9984f 100644 --- a/grib/src/main/java/ucar/nc2/grib/collection/Grib1Collection.java +++ b/grib/src/main/java/ucar/nc2/grib/collection/Grib1Collection.java @@ -41,8 +41,7 @@ public ucar.nc2.dataset.NetcdfDataset getNetcdfDataset(Dataset ds, GroupGC group FeatureCollectionConfig gribConfig, Formatter errlog, org.slf4j.Logger logger) throws IOException { if (filename == null) { Grib1Iosp iosp = new Grib1Iosp(group, ds.getType()); - NetcdfFile ncfile = new NetcdfFileSubclass(iosp, null, getLocation(), null); - return new NetcdfDataset(ncfile); + return buildNetcdfDataset(iosp, getLocation()); } else { MFile wantFile = findMFileByName(filename); @@ -53,8 +52,7 @@ public ucar.nc2.dataset.NetcdfDataset getNetcdfDataset(Dataset ds, GroupGC group return null; Grib1Iosp iosp = new Grib1Iosp(gc); - NetcdfFile ncfile = new NetcdfFileSubclass(iosp, null, getLocation(), null); - return new NetcdfDataset(ncfile); + return buildNetcdfDataset(iosp, getLocation()); } return null; } @@ -66,8 +64,7 @@ public ucar.nc2.dt.grid.GridDataset getGridDataset(Dataset ds, GroupGC group, St FeatureCollectionConfig gribConfig, Formatter errlog, org.slf4j.Logger logger) throws IOException { if (filename == null) { Grib1Iosp iosp = new Grib1Iosp(group, ds.getType()); - NetcdfFile ncfile = new NetcdfFileSubclass(iosp, null, getLocation() + "#" + group.getId(), null); - NetcdfDataset ncd = new NetcdfDataset(ncfile); + NetcdfDataset ncd = buildNetcdfDataset(iosp, getLocation() + "#" + group.getId()); return new ucar.nc2.dt.grid.GridDataset(ncd); // LOOK - replace with custom GridDataset?? } else { @@ -79,8 +76,7 @@ public ucar.nc2.dt.grid.GridDataset getGridDataset(Dataset ds, GroupGC group, St return null; Grib1Iosp iosp = new Grib1Iosp(gc); - NetcdfFile ncfile = new NetcdfFileSubclass(iosp, null, getLocation(), null); - NetcdfDataset ncd = new NetcdfDataset(ncfile); + NetcdfDataset ncd = buildNetcdfDataset(iosp, getLocation()); return new ucar.nc2.dt.grid.GridDataset(ncd); // LOOK - replace with custom GridDataset?? } return null; diff --git a/grib/src/main/java/ucar/nc2/grib/collection/Grib1Partition.java b/grib/src/main/java/ucar/nc2/grib/collection/Grib1Partition.java index c294764189..61481d8cb0 100644 --- a/grib/src/main/java/ucar/nc2/grib/collection/Grib1Partition.java +++ b/grib/src/main/java/ucar/nc2/grib/collection/Grib1Partition.java @@ -33,8 +33,7 @@ public ucar.nc2.dataset.NetcdfDataset getNetcdfDataset(Dataset ds, GroupGC group FeatureCollectionConfig config, Formatter errlog, org.slf4j.Logger logger) throws IOException { ucar.nc2.grib.collection.Grib1Iosp iosp = new ucar.nc2.grib.collection.Grib1Iosp(group, ds.getType()); - NetcdfFile ncfile = new NetcdfFileSubclass(iosp, null, getLocation(), null); - return new NetcdfDataset(ncfile); + return buildNetcdfDataset(iosp, getLocation()); } @Override @@ -42,8 +41,7 @@ public ucar.nc2.dt.grid.GridDataset getGridDataset(Dataset ds, GroupGC group, St FeatureCollectionConfig config, Formatter errlog, org.slf4j.Logger logger) throws IOException { ucar.nc2.grib.collection.Grib1Iosp iosp = new ucar.nc2.grib.collection.Grib1Iosp(group, ds.getType()); - NetcdfFile ncfile = new NetcdfFileSubclass(iosp, null, getLocation(), null); - NetcdfDataset ncd = new NetcdfDataset(ncfile); + NetcdfDataset ncd = buildNetcdfDataset(iosp, getLocation()); return new ucar.nc2.dt.grid.GridDataset(ncd); } diff --git a/grib/src/main/java/ucar/nc2/grib/collection/Grib2Collection.java b/grib/src/main/java/ucar/nc2/grib/collection/Grib2Collection.java index 50b0bd21c0..0430891b54 100644 --- a/grib/src/main/java/ucar/nc2/grib/collection/Grib2Collection.java +++ b/grib/src/main/java/ucar/nc2/grib/collection/Grib2Collection.java @@ -43,8 +43,7 @@ public ucar.nc2.dataset.NetcdfDataset getNetcdfDataset(Dataset ds, GroupGC group if (filename == null) { Grib2Iosp iosp = new Grib2Iosp(group, ds.getType()); - NetcdfFile ncfile = new NetcdfFileSubclass(iosp, null, getLocation(), null); - return new NetcdfDataset(ncfile); + return buildNetcdfDataset(iosp, getLocation()); } else { MFile wantFile = findMFileByName(filename); @@ -55,8 +54,7 @@ public ucar.nc2.dataset.NetcdfDataset getNetcdfDataset(Dataset ds, GroupGC group return null; Grib2Iosp iosp = new Grib2Iosp(gc); - NetcdfFile ncfile = new NetcdfFileSubclass(iosp, null, getLocation(), null); - return new NetcdfDataset(ncfile); + return buildNetcdfDataset(iosp, getLocation()); } return null; } @@ -69,8 +67,7 @@ public ucar.nc2.dt.grid.GridDataset getGridDataset(Dataset ds, GroupGC group, St if (filename == null) { Grib2Iosp iosp = new Grib2Iosp(group, ds.getType()); - NetcdfFile ncfile = new NetcdfFileSubclass(iosp, null, getLocation() + "#" + group.getId(), null); - NetcdfDataset ncd = new NetcdfDataset(ncfile); + NetcdfDataset ncd = buildNetcdfDataset(iosp, getLocation() + "#" + group.getId()); return new ucar.nc2.dt.grid.GridDataset(ncd); // LOOK - replace with custom GridDataset?? } else { @@ -82,8 +79,7 @@ public ucar.nc2.dt.grid.GridDataset getGridDataset(Dataset ds, GroupGC group, St return null; Grib2Iosp iosp = new Grib2Iosp(gc); - NetcdfFile ncfile = new NetcdfFileSubclass(iosp, null, getLocation(), null); - NetcdfDataset ncd = new NetcdfDataset(ncfile); + NetcdfDataset ncd = buildNetcdfDataset(iosp, getLocation()); return new ucar.nc2.dt.grid.GridDataset(ncd); // LOOK - replace with custom GridDataset?? } return null; diff --git a/grib/src/main/java/ucar/nc2/grib/collection/Grib2Partition.java b/grib/src/main/java/ucar/nc2/grib/collection/Grib2Partition.java index 16e68aa704..6ab3716d76 100644 --- a/grib/src/main/java/ucar/nc2/grib/collection/Grib2Partition.java +++ b/grib/src/main/java/ucar/nc2/grib/collection/Grib2Partition.java @@ -11,8 +11,6 @@ import thredds.featurecollection.FeatureCollectionConfig; import ucar.nc2.Attribute; import ucar.nc2.AttributeContainer; -import ucar.nc2.NetcdfFile; -import ucar.nc2.NetcdfFileSubclass; import ucar.nc2.constants.CDM; import ucar.nc2.constants.DataFormatType; import ucar.nc2.dataset.NetcdfDataset; @@ -36,8 +34,7 @@ public ucar.nc2.dataset.NetcdfDataset getNetcdfDataset(Dataset ds, GroupGC group FeatureCollectionConfig config, Formatter errlog, org.slf4j.Logger logger) throws IOException { ucar.nc2.grib.collection.Grib2Iosp iosp = new ucar.nc2.grib.collection.Grib2Iosp(group, ds.getType()); - NetcdfFile ncfile = new NetcdfFileSubclass(iosp, null, getLocation(), null); - return new NetcdfDataset(ncfile); + return buildNetcdfDataset(iosp, getLocation()); } @Override @@ -45,8 +42,7 @@ public ucar.nc2.dt.grid.GridDataset getGridDataset(Dataset ds, GroupGC group, St FeatureCollectionConfig config, Formatter errlog, org.slf4j.Logger logger) throws IOException { ucar.nc2.grib.collection.Grib2Iosp iosp = new ucar.nc2.grib.collection.Grib2Iosp(group, ds.getType()); - NetcdfFile ncfile = new NetcdfFileSubclass(iosp, null, getLocation(), null); - NetcdfDataset ncd = new NetcdfDataset(ncfile); + NetcdfDataset ncd = buildNetcdfDataset(iosp, getLocation()); return new ucar.nc2.dt.grid.GridDataset(ncd); } diff --git a/grib/src/main/java/ucar/nc2/grib/collection/GribCollectionImmutable.java b/grib/src/main/java/ucar/nc2/grib/collection/GribCollectionImmutable.java index f1790e43cd..53dc60f9b5 100644 --- a/grib/src/main/java/ucar/nc2/grib/collection/GribCollectionImmutable.java +++ b/grib/src/main/java/ucar/nc2/grib/collection/GribCollectionImmutable.java @@ -14,9 +14,13 @@ import ucar.nc2.Attribute; import ucar.nc2.AttributeContainer; import ucar.nc2.AttributeContainerMutable; +import ucar.nc2.NetcdfFile; +import ucar.nc2.NetcdfFiles; import ucar.nc2.constants.CDM; import ucar.nc2.constants.CF; import ucar.nc2.constants.FeatureType; +import ucar.nc2.dataset.NetcdfDataset; +import ucar.nc2.dataset.NetcdfDatasets; import ucar.nc2.ft2.coverage.CoverageCollection; import ucar.nc2.ft2.coverage.SubsetParams; import ucar.nc2.grib.*; @@ -31,6 +35,7 @@ import ucar.nc2.grib.grib1.Grib1Variable; import ucar.nc2.grib.grib1.tables.Grib1Customizer; import ucar.nc2.grib.grib2.table.Grib2Tables; +import ucar.nc2.iosp.AbstractIOServiceProvider; import ucar.nc2.time.CalendarDate; import ucar.nc2.time.CalendarDateRange; import ucar.nc2.util.cache.FileCacheIF; @@ -1113,6 +1118,13 @@ String getDataRafFilename(int fileno) { return mfile.getPath(); } + protected static NetcdfDataset buildNetcdfDataset(AbstractIOServiceProvider iosp, String location) + throws IOException { + RandomAccessFile raf = (RandomAccessFile) iosp.sendIospMessage(NetcdfFile.IOSP_MESSAGE_RANDOM_ACCESS_FILE); + NetcdfFile ncfile = NetcdfFiles.build(iosp, raf, location, null); + return NetcdfDatasets.enhance(ncfile, NetcdfDataset.getDefaultEnhanceMode(), null); + } + /////////////////////// // stuff needed by InvDatasetFcGrib diff --git a/grib/src/main/java/ucar/nc2/grib/collection/GribIosp.java b/grib/src/main/java/ucar/nc2/grib/collection/GribIosp.java index 38ed08b548..f770e6ea3b 100644 --- a/grib/src/main/java/ucar/nc2/grib/collection/GribIosp.java +++ b/grib/src/main/java/ucar/nc2/grib/collection/GribIosp.java @@ -535,7 +535,9 @@ private void makeRuntimeCoordinate(NetcdfFile ncfile, Group g, CoordinateRuntime boolean isScalar = (n == 1); // this is the case of runtime[1] String tcName = rtc.getName(); String dims = isScalar ? null : rtc.getName(); // null means scalar - ncfile.addDimension(g, new Dimension(tcName, n)); + if (!isScalar) { + ncfile.addDimension(g, new Dimension(tcName, n)); + } Variable v = ncfile.addVariable(g, new Variable(ncfile, g, null, tcName, DataType.DOUBLE, dims)); v.addAttribute(new Attribute(CDM.UNITS, rtc.getUnit())); @@ -774,51 +776,18 @@ private Array makeLazyTime2Darray(Variable coord, Time2Dinfo info) { break; case intv: - for (int runIdx = 0; runIdx < nruns; runIdx++) { - CoordinateTimeIntv timeIntv = (CoordinateTimeIntv) time2D.getTimeCoordinate(runIdx); - int timeIdx = 0; - for (TimeCoordIntvValue tinv : timeIntv.getTimeIntervals()) { - data[runIdx * ntimes + timeIdx] = timeUnit.getValue() * tinv.getCoordValue() + time2D.getOffset(runIdx); - timeIdx++; - } - } - break; - case intvU: // data[nruns*ntimes] + count = 0; // dataIndex for (int runIdx = 0; runIdx < nruns; runIdx++) { CoordinateTimeIntv timeIntv = (CoordinateTimeIntv) time2D.getTimeCoordinate(runIdx); - double valueBound1 = Double.NaN; - double valueBound2 = Double.NaN; - double twicePrevValueBound2 = Double.NaN; - int timeIndex = 0; - for (TimeCoordIntvValue tinv : timeIntv.getTimeIntervals()) { - valueBound1 = timeUnit.getValue() * tinv.getBounds1() + time2D.getOffset(runIdx); - valueBound2 = timeUnit.getValue() * tinv.getBounds2() + time2D.getOffset(runIdx); - // Use end-point of current interval as initial guess for current time coordinate value - data[timeIndex] = valueBound2; - if (timeIndex >= 1) { - // Check that time coordinate values are increasing in a strictly-monotonic manner - // (as required by CF conventions). If not strictly-monotonic ... - if (data[timeIndex] <= data[timeIndex - 1]) { - if (timeIndex >= 2 && data[timeIndex - 2] <= valueBound1) { - // Change previous time coordinate value to mid-point between - // current time interval start and end values. - data[timeIndex - 1] = (valueBound2 - valueBound1) / 2.0 + valueBound1; - } else { - // Or change previous time coordinate value to mid-point between - // current time interval end value and the time coord value from two steps back. - twicePrevValueBound2 = timeUnit.getValue() * data[timeIndex - 2] + time2D.getOffset(runIdx); - data[timeIndex - 1] = (valueBound2 - twicePrevValueBound2) / 2.0 + twicePrevValueBound2; - } - } - } - timeIndex++; - } + int runOffsetIndex = runIdx * ntimes; + int timeUnitValue = timeUnit.getValue(); + int time2D_Offset = time2D.getOffset(runIdx); + assert (count == runOffsetIndex); + count = GribTimeCoordIntervalUtils.generateTimeCoordValuesFromTimeCoordIntervals(timeIntv.getTimeIntervals(), + data, null, runOffsetIndex, timeUnitValue, time2D_Offset); } - // The above assumes that sets of intervals are always sorted by - // end point then starting point. That sorting scheme is implemented in - // ucar.nc2.grib.coord.TimeCoordIntvValue.compareTo(o) -- 21 Dec 2022. break; case is1Dtime: @@ -872,6 +841,7 @@ private Array makeLazyTime2Darray(Variable coord, Time2Dinfo info) { return Array.factory(DataType.DOUBLE, coord.getShape(), data); } + private void makeTimeCoordinate1D(NetcdfFile ncfile, Group g, CoordinateTime coordTime) { // }, CoordinateRuntime // runtime) { int ntimes = coordTime.getSize(); diff --git a/grib/src/main/java/ucar/nc2/grib/collection/GribIospBuilder.java b/grib/src/main/java/ucar/nc2/grib/collection/GribIospBuilder.java index 451e638476..b61a3173c6 100644 --- a/grib/src/main/java/ucar/nc2/grib/collection/GribIospBuilder.java +++ b/grib/src/main/java/ucar/nc2/grib/collection/GribIospBuilder.java @@ -357,8 +357,9 @@ private void makeRuntimeCoordinate(Group.Builder g, CoordinateRuntime rtc) { boolean isScalar = (n == 1); // this is the case of runtime[1] String tcName = rtc.getName(); String dims = isScalar ? null : rtc.getName(); // null means scalar - g.addDimension(new Dimension(tcName, n)); - + if (!isScalar) { + g.addDimension(new Dimension(tcName, n)); + } Variable.Builder v = Variable.builder().setName(tcName).setDataType(DataType.DOUBLE).setParentGroupBuilder(g) .setDimensionsByName(dims); @@ -551,13 +552,12 @@ private void makeTimeCoordinate1D(Group.Builder g, CoordinateTimeIntv coordTime) v.addAttribute(new Attribute(CDM.LONG_NAME, Grib.GRIB_VALID_TIME)); v.addAttribute(new Attribute(CF.CALENDAR, Calendar.proleptic_gregorian.toString())); - double[] data = new double[ntimes]; - int count = 0; - - for (TimeCoordIntvValue tinv : coordTime.getTimeIntervals()) { - data[count++] = tinv.getCoordValue(); - } - v.setCachedData(Array.factory(DataType.DOUBLE, new int[] {ntimes}, data), false); + double[] timeCoordValues = new double[ntimes]; + double[] timeCoordBoundsValues = new double[ntimes * 2]; + int count = GribTimeCoordIntervalUtils.generateTimeCoordValuesFromTimeCoordIntervals(coordTime.getTimeIntervals(), + timeCoordValues, timeCoordBoundsValues, 0, coordTime.getTimeUnit().getValue(), 0); + assert (count == ntimes); + v.setCachedData(Array.factory(DataType.DOUBLE, new int[] {ntimes}, timeCoordValues), false); // bounds String bounds_name = tcName + "_bounds"; @@ -568,13 +568,7 @@ private void makeTimeCoordinate1D(Group.Builder g, CoordinateTimeIntv coordTime) bounds.addAttribute(new Attribute(CDM.UNITS, units)); bounds.addAttribute(new Attribute(CDM.LONG_NAME, "bounds for " + tcName)); - data = new double[ntimes * 2]; - count = 0; - for (TimeCoordIntvValue tinv : coordTime.getTimeIntervals()) { - data[count++] = tinv.getBounds1(); - data[count++] = tinv.getBounds2(); - } - bounds.setCachedData(Array.factory(DataType.DOUBLE, new int[] {ntimes, 2}, data), false); + bounds.setCachedData(Array.factory(DataType.DOUBLE, new int[] {ntimes, 2}, timeCoordBoundsValues), false); makeTimeAuxReference(g, tcName, units, coordTime); } @@ -675,26 +669,25 @@ private String makeTimeOffsetOrthogonal(Group.Builder g, CoordinateTime2D time2D v.addAttribute(new Attribute(CDM.UDUNITS, time2D.getTimeUdUnit())); v.addAttribute(new Attribute(_Coordinate.AxisType, AxisType.TimeOffset.toString())); - double[] midpoints = new double[n]; + double[] data = new double[n]; double[] bounds = null; + int timeUnitValue = time2D.getTimeUnit().getValue(); + if (time2D.isTimeInterval()) { bounds = new double[2 * n]; - int count = 0; - int countb = 0; - for (Object offset : offsets) { - TimeCoordIntvValue tinv = (TimeCoordIntvValue) offset; - midpoints[count++] = (tinv.getBounds1() + tinv.getBounds2()) / 2.0; - bounds[countb++] = tinv.getBounds1(); - bounds[countb++] = tinv.getBounds2(); - } + List intervals = (List) offsets; + // TODO Should this be using 'timeUnitValue'? Wasn't in previous incarnation. + int count = GribTimeCoordIntervalUtils.generateTimeCoordValuesFromTimeCoordIntervals(intervals, data, bounds, 0, + timeUnitValue, 0); + assert (count == n); } else { int count = 0; for (Object val : offsets) { Integer off = (Integer) val; - midpoints[count++] = off; // int ?? + data[count++] = timeUnitValue * off; // int ?? } } - v.setCachedData(Array.factory(DataType.DOUBLE, new int[] {n}, midpoints), false); + v.setCachedData(Array.factory(DataType.DOUBLE, new int[] {n}, data), false); if (time2D.isTimeInterval()) { String boundsName = toName + "_bounds"; diff --git a/grib/src/main/java/ucar/nc2/grib/collection/GribTimeCoordIntervalUtils.java b/grib/src/main/java/ucar/nc2/grib/collection/GribTimeCoordIntervalUtils.java new file mode 100644 index 0000000000..1b4ed1f11a --- /dev/null +++ b/grib/src/main/java/ucar/nc2/grib/collection/GribTimeCoordIntervalUtils.java @@ -0,0 +1,67 @@ +package ucar.nc2.grib.collection; + +import ucar.nc2.grib.coord.TimeCoordIntvValue; + +import java.util.List; + +class GribTimeCoordIntervalUtils { + /** + * Generate values for 1-D time coordinate variable given an ordered set of time coordinate intervals + * (supports datasets with 2D run/forecast time), + * ensures that resulting values are increasing in a strictly-monotonic manner. + * + * Assumes that sets of intervals are always sorted by + * end point then starting point. That sorting scheme is implemented in + * ucar.nc2.grib.coord.TimeCoordIntvValue.compareTo(o) -- 21 Dec 2022. + * + * @param timeIntervals given list of time coord intervals from which to calculate time coordinate values + * @param timeCoordValues array for storing generated time coord values, 1D array that may represent a 2D data array + * (run/forecast) + * @param bounds array for storing interval bounds, may be null if bounds are loaded elsewhere. + * @param runOffsetIndex + * @param timeUnitValue time unit + * @param time2D_Offset + * @return the index into the timeCoordValues array following the last value written + */ + public static int generateTimeCoordValuesFromTimeCoordIntervals(List timeIntervals, + double[] timeCoordValues, double[] bounds, int runOffsetIndex, int timeUnitValue, int time2D_Offset) { + int dataIndex = runOffsetIndex; + int boundsIndex = runOffsetIndex * 2; + double[] currentBounds = new double[2]; + double[] prevBounds = new double[2]; + for (TimeCoordIntvValue tinv : timeIntervals) { + currentBounds[0] = timeUnitValue * tinv.getBounds1() + time2D_Offset; + currentBounds[1] = timeUnitValue * tinv.getBounds2() + time2D_Offset; + // Use end-point of current interval as initial guess for current time coordinate value + timeCoordValues[dataIndex] = currentBounds[1]; + if (dataIndex >= runOffsetIndex + 1) { + // Check that time coordinate values are increasing in a strictly-monotonic manner + // (as required by CF conventions). If not strictly-monotonic ... + if (timeCoordValues[dataIndex] <= timeCoordValues[dataIndex - 1]) { + if (dataIndex >= runOffsetIndex + 2) { + if (timeCoordValues[dataIndex - 2] <= currentBounds[0]) { + // Change previous time coordinate value to mid-point between + // current time interval start and end values. + timeCoordValues[dataIndex - 1] = (currentBounds[1] - currentBounds[0]) / 2.0 + currentBounds[0]; + } else { + // Or change previous time coordinate value to mid-point between + // current time interval end value and the time coord value from two steps back. + timeCoordValues[dataIndex - 1] = + (currentBounds[1] - timeCoordValues[dataIndex - 2]) / 2.0 + timeCoordValues[dataIndex - 2]; + } + } else { + timeCoordValues[dataIndex - 1] = (prevBounds[1] - prevBounds[0]) / 2.0 + prevBounds[0]; + } + } + } + if (bounds != null) { + bounds[boundsIndex++] = currentBounds[0]; + bounds[boundsIndex++] = currentBounds[1]; + } + prevBounds[0] = currentBounds[0]; + prevBounds[1] = currentBounds[1]; + dataIndex++; + } + return dataIndex; + } +} diff --git a/grib/src/main/java/ucar/nc2/grib/coord/CoordinateEns.java b/grib/src/main/java/ucar/nc2/grib/coord/CoordinateEns.java index 3915daf49d..0b1371f360 100644 --- a/grib/src/main/java/ucar/nc2/grib/coord/CoordinateEns.java +++ b/grib/src/main/java/ucar/nc2/grib/coord/CoordinateEns.java @@ -168,7 +168,8 @@ public Builder2(int code) { public Object extract(Grib2Record gr) { Grib2Pds pds = gr.getPDS(); Grib2Pds.PdsEnsemble pdse = (Grib2Pds.PdsEnsemble) pds; - return new EnsCoordValue(pdse.getPerturbationType(), pdse.getPerturbationNumber()); + return new EnsCoordValue(pdse.getPerturbationType(), pdse.getPerturbationNumber(), + pdse.getNumberEnsembleForecasts()); } @Override @@ -193,7 +194,7 @@ public Builder1(Grib1Customizer cust, int code) { @Override public Object extract(Grib1Record gr) { Grib1SectionProductDefinition pds = gr.getPDSsection(); - return new EnsCoordValue(pds.getPerturbationType(), pds.getPerturbationNumber()); + return new EnsCoordValue(pds.getPerturbationType(), pds.getPerturbationNumber(), pds.getCenter()); } @Override diff --git a/grib/src/main/java/ucar/nc2/grib/coord/EnsCoordValue.java b/grib/src/main/java/ucar/nc2/grib/coord/EnsCoordValue.java index 9c04ff7790..6ff3c144c5 100644 --- a/grib/src/main/java/ucar/nc2/grib/coord/EnsCoordValue.java +++ b/grib/src/main/java/ucar/nc2/grib/coord/EnsCoordValue.java @@ -9,10 +9,16 @@ public class EnsCoordValue implements Comparable { private final int code; private final int ensMember; + private final int ensNumber; public EnsCoordValue(int code, int ensMember) { + this(code, ensMember, 0); + } + + public EnsCoordValue(int code, int ensMember, int ensNumber) { this.code = code; this.ensMember = ensMember; + this.ensNumber = ensNumber; } public int getCode() { @@ -23,9 +29,16 @@ public int getEnsMember() { return ensMember; } + public int getEnsNumber() { + return ensNumber; + } + @Override public int compareTo(@Nonnull EnsCoordValue o) { int r = Integer.compare(code, o.code); + if (r != 0) + return r; + r = Integer.compare(ensNumber, o.ensNumber); if (r != 0) return r; return Integer.compare(ensMember, o.ensMember); @@ -40,7 +53,7 @@ public boolean equals(Object o) { return false; } EnsCoordValue that = (EnsCoordValue) o; - return code == that.code && ensMember == that.ensMember; + return code == that.code && ensMember == that.ensMember && ensNumber == that.ensNumber; } @Override @@ -48,12 +61,13 @@ public int hashCode() { int result = 17; result += 31 * ensMember; result += 31 * code; + result += 31 * ensNumber; return result; } public String toString() { try (Formatter out = new Formatter()) { - out.format("(%d %d)", code, ensMember); + out.format("(%d %d %d)", code, ensMember, ensNumber); return out.toString(); } } diff --git a/grib/src/main/java/ucar/nc2/grib/coord/TimeCoordIntvDateValue.java b/grib/src/main/java/ucar/nc2/grib/coord/TimeCoordIntvDateValue.java index cad72886e3..f518edea19 100644 --- a/grib/src/main/java/ucar/nc2/grib/coord/TimeCoordIntvDateValue.java +++ b/grib/src/main/java/ucar/nc2/grib/coord/TimeCoordIntvDateValue.java @@ -60,7 +60,7 @@ public TimeCoordIntvValue convertReferenceDate(CalendarDate refDate, CalendarPer throw new IllegalArgumentException("null time unit"); } int startOffset = timeUnit.getOffset(refDate, start); // LOOK wrong - not dealing with value ?? - int endOffset = timeUnit.getOffset(refDate, end); + int endOffset = timeUnit.getOffset(start, end) + startOffset; return new TimeCoordIntvValue(startOffset, endOffset); } diff --git a/grib/src/main/java/ucar/nc2/grib/coverage/GribCoverageDataset.java b/grib/src/main/java/ucar/nc2/grib/coverage/GribCoverageDataset.java index 8ac0b75b46..40885ceed7 100644 --- a/grib/src/main/java/ucar/nc2/grib/coverage/GribCoverageDataset.java +++ b/grib/src/main/java/ucar/nc2/grib/coverage/GribCoverageDataset.java @@ -1215,6 +1215,7 @@ public GeoReferencedArray readData(Coverage coverage, SubsetParams params, boole } } + Collections.sort(coordsSetAxes); List geoArrayAxes = new ArrayList<>(coordsSetAxes); // for GeoReferencedArray geoArrayAxes.add(subsetCoordSys.getYAxis()); geoArrayAxes.add(subsetCoordSys.getXAxis()); diff --git a/grib/src/main/java/ucar/nc2/grib/grib1/Grib1Gds.java b/grib/src/main/java/ucar/nc2/grib/grib1/Grib1Gds.java index f4f05fe751..66cb6319c3 100644 --- a/grib/src/main/java/ucar/nc2/grib/grib1/Grib1Gds.java +++ b/grib/src/main/java/ucar/nc2/grib/grib1/Grib1Gds.java @@ -472,7 +472,6 @@ public void setNptsInLine(int[] nptsInLine) { } } - @Override public boolean isLatLon() { return true; @@ -564,6 +563,14 @@ public GdsHorizCoordSys makeHorizCoordSys() { getNx(), getNy(), null); } + public float getLa1() { + return la1; + } + + public float getLo1() { + return lo1; + } + public void testHorizCoordSys(Formatter f) { GdsHorizCoordSys cs = makeHorizCoordSys(); double Lo2 = lo2; @@ -854,6 +861,22 @@ public float getDyRaw() { return dY; } + public float getLa1() { + return la1; + } + + public float getLo1() { + return lo1; + } + + public float getLov() { + return lov; + } + + public int getProjCenterFlag() { + return projCenterFlag; + } + public GdsHorizCoordSys makeHorizCoordSys() { boolean northPole = (projCenterFlag & 128) == 0; double latOrigin = northPole ? 90.0 : -90.0; @@ -974,6 +997,26 @@ public float getDyRaw() { return dY; } + public float getLa1() { + return la1; + } + + public float getLo1() { + return lo1; + } + + public float getLov() { + return lov; + } + + public float getLatin1() { + return latin1; + } + + public float getLatin2() { + return latin2; + } + @Override public String toString() { return "LambertConformal{" + "la1=" + la1 + ", lo1=" + lo1 + ", lov=" + lov + ", lad=" + lad + ", dX=" + dX @@ -1141,6 +1184,26 @@ public float getDyRaw() { return dY; } + public float getLa1() { + return la1; + } + + public float getLo1() { + return lo1; + } + + public float getLa2() { + return la2; + } + + public float getLo2() { + return lo2; + } + + public float getLatin() { + return latin; + } + @Override public String toString() { return "Mercator{" + "la1=" + la1 + ", lo1=" + lo1 + ", la2=" + la2 + ", lo2=" + lo2 + ", latin=" + latin @@ -1284,7 +1347,7 @@ public boolean equals(Object o) { public int hashCode() { if (hashCode == 0) { int result = super.hashCode(); - result = 31 * result + (angleRotation != +0.0f ? Float.floatToIntBits(angleRotation) : 0); + result = 31 * result + (angleRotation != 0.0f ? Float.floatToIntBits(angleRotation) : 0); hashCode = result; } return hashCode; diff --git a/grib/src/main/java/ucar/nc2/grib/grib1/Grib1Index.java b/grib/src/main/java/ucar/nc2/grib/grib1/Grib1Index.java index a7d7747aa8..37adc7bcbf 100644 --- a/grib/src/main/java/ucar/nc2/grib/grib1/Grib1Index.java +++ b/grib/src/main/java/ucar/nc2/grib/grib1/Grib1Index.java @@ -8,6 +8,7 @@ import com.google.protobuf.ByteString; import java.nio.charset.StandardCharsets; import thredds.inventory.CollectionUpdateType; +import ucar.nc2.NetcdfFiles; import ucar.nc2.grib.GribIndex; import ucar.nc2.grib.GribIndexCache; import ucar.nc2.stream.NcStream; @@ -185,7 +186,7 @@ public boolean makeIndex(String filename, RandomAccessFile dataRaf) throws IOExc rootBuilder.setFilename(filename); if (dataRaf == null) { // open if dataRaf not already open - raf = RandomAccessFile.acquire(filename); + raf = NetcdfFiles.getRaf(filename, -1); dataRaf = raf; } diff --git a/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Drs.java b/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Drs.java index 88bcbae2b5..8dda0d266f 100644 --- a/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Drs.java +++ b/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Drs.java @@ -131,7 +131,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - int result = (referenceValue != +0.0f ? Float.floatToIntBits(referenceValue) : 0); + int result = (referenceValue != 0.0f ? Float.floatToIntBits(referenceValue) : 0); result = 31 * result + binaryScaleFactor; result = 31 * result + decimalScaleFactor; result = 31 * result + numberOfBits; @@ -299,8 +299,8 @@ public boolean equals(Object o) { @Override public int hashCode() { int result = super.hashCode(); - result = 31 * result + (secondaryMissingValue != +0.0f ? Float.floatToIntBits(secondaryMissingValue) : 0); - result = 31 * result + (primaryMissingValue != +0.0f ? Float.floatToIntBits(primaryMissingValue) : 0); + result = 31 * result + (secondaryMissingValue != 0.0f ? Float.floatToIntBits(secondaryMissingValue) : 0); + result = 31 * result + (primaryMissingValue != 0.0f ? Float.floatToIntBits(primaryMissingValue) : 0); result = 31 * result + missingValueManagement; result = 31 * result + splittingMethod; result = 31 * result + numberOfGroups; @@ -576,7 +576,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - int result = (referenceValue != +0.0f ? Float.floatToIntBits(referenceValue) : 0); + int result = (referenceValue != 0.0f ? Float.floatToIntBits(referenceValue) : 0); result = 31 * result + binaryScaleFactor; result = 31 * result + decimalScaleFactor; result = 31 * result + numberOfBits; diff --git a/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Gds.java b/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Gds.java index 58a979f927..4cbd1226e5 100644 --- a/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Gds.java +++ b/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Gds.java @@ -1568,15 +1568,15 @@ public boolean equals(Object o) { public int hashCode() { if (hashCode == 0) { int result = super.hashCode(); - result = 31 * result + (LaP != +0.0f ? Float.floatToIntBits(LaP) : 0); - result = 31 * result + (LoP != +0.0f ? Float.floatToIntBits(LoP) : 0); - result = 31 * result + (dX != +0.0f ? Float.floatToIntBits(dX) : 0); - result = 31 * result + (dY != +0.0f ? Float.floatToIntBits(dY) : 0); - result = 31 * result + (Xp != +0.0f ? Float.floatToIntBits(Xp) : 0); - result = 31 * result + (Yp != +0.0f ? Float.floatToIntBits(Yp) : 0); - result = 31 * result + (Nr != +0.0f ? Float.floatToIntBits(Nr) : 0); - result = 31 * result + (Xo != +0.0f ? Float.floatToIntBits(Xo) : 0); - result = 31 * result + (Yo != +0.0f ? Float.floatToIntBits(Yo) : 0); + result = 31 * result + (LaP != 0.0f ? Float.floatToIntBits(LaP) : 0); + result = 31 * result + (LoP != 0.0f ? Float.floatToIntBits(LoP) : 0); + result = 31 * result + (dX != 0.0f ? Float.floatToIntBits(dX) : 0); + result = 31 * result + (dY != 0.0f ? Float.floatToIntBits(dY) : 0); + result = 31 * result + (Xp != 0.0f ? Float.floatToIntBits(Xp) : 0); + result = 31 * result + (Yp != 0.0f ? Float.floatToIntBits(Yp) : 0); + result = 31 * result + (Nr != 0.0f ? Float.floatToIntBits(Nr) : 0); + result = 31 * result + (Xo != 0.0f ? Float.floatToIntBits(Xo) : 0); + result = 31 * result + (Yo != 0.0f ? Float.floatToIntBits(Yo) : 0); result = 31 * result + flags; hashCode = result; } diff --git a/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Index.java b/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Index.java index 7d39ee8ce2..a7e006be3c 100644 --- a/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Index.java +++ b/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Index.java @@ -8,6 +8,7 @@ import com.google.protobuf.ByteString; import java.nio.charset.StandardCharsets; import thredds.inventory.CollectionUpdateType; +import ucar.nc2.NetcdfFiles; import ucar.nc2.grib.GribIndex; import ucar.nc2.grib.GribIndexCache; import ucar.nc2.stream.NcStream; @@ -221,7 +222,7 @@ public boolean makeIndex(String filename, RandomAccessFile dataRaf) throws IOExc rootBuilder.setFilename(filename); if (dataRaf == null) { - raf = RandomAccessFile.acquire(filename); + raf = NetcdfFiles.getRaf(filename, -1); dataRaf = raf; } diff --git a/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Pds.java b/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Pds.java index 7ff80b881f..f0e8263be3 100644 --- a/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Pds.java +++ b/grib/src/main/java/ucar/nc2/grib/grib2/Grib2Pds.java @@ -66,6 +66,8 @@ public static Grib2Pds factory(int template, byte[] input) { return new Grib2Pds32(input); case 48: return new Grib2Pds48(input); + case 60: + return new Grib2Pds60(input); case 61: return new Grib2Pds61(input); default: @@ -665,6 +667,35 @@ public void show(Formatter f) { ////////////////////////////////////////////////////////////////////////////////////////////// + /** + * Product definition template 4.60 - + * individual ensemble reforecast, control and perturbed, at a horizontal level or in a horizontal layer at a point + * in time + */ + private static class Grib2Pds60 extends Grib2Pds1 implements PdsEnsemble { + + Grib2Pds60(byte[] input) { + super(input); + } + + /** + * Model version date + * + * @return Model version date + */ + public CalendarDate getModelVersionDate() { + return calcTime(38); + } + + @Override + public int templateLength() { + return 44; + } + + } + + ////////////////////////////////////////////////////////////////////////////////////////////// + /** * Product definition template 4.61 - * individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous @@ -939,23 +970,23 @@ public int getProbabilityHashcode() { case 0: case 3: prob1 = getProbabilityLowerLimit(); - temp = prob1 != +0.0d ? Double.doubleToLongBits(prob1) : 0L; + temp = prob1 != 0.0d ? Double.doubleToLongBits(prob1) : 0L; result = (int) (temp ^ (temp >>> 32)); break; case 1: case 4: prob2 = getProbabilityUpperLimit(); - temp = prob2 != +0.0d ? Double.doubleToLongBits(prob2) : 0L; + temp = prob2 != 0.0d ? Double.doubleToLongBits(prob2) : 0L; result = (int) (temp ^ (temp >>> 32)); break; case 2: prob1 = getProbabilityLowerLimit(); prob2 = getProbabilityUpperLimit(); - temp = prob1 != +0.0d ? Double.doubleToLongBits(prob1) : 0L; + temp = prob1 != 0.0d ? Double.doubleToLongBits(prob1) : 0L; result = (int) (temp ^ (temp >>> 32)); - temp = prob2 != +0.0d ? Double.doubleToLongBits(prob2) : 0L; + temp = prob2 != 0.0d ? Double.doubleToLongBits(prob2) : 0L; result = 31 * result + (int) (temp ^ (temp >>> 32)); break; diff --git a/grib/src/main/sources/ecmwfEcCodes/eccodes-2.12.0-Source.tar.gz b/grib/src/main/sources/ecmwfEcCodes/eccodes-2.12.0-Source.tar.gz deleted file mode 100644 index 33fd6e7f0c..0000000000 Binary files a/grib/src/main/sources/ecmwfEcCodes/eccodes-2.12.0-Source.tar.gz and /dev/null differ diff --git a/grib/src/test/data/GFS_Global_onedeg_20220627.TotalPrecip.Out24hrs.grib2 b/grib/src/test/data/GFS_Global_onedeg_20220627.TotalPrecip.Out24hrs.grib2 new file mode 100644 index 0000000000..e5b3688071 Binary files /dev/null and b/grib/src/test/data/GFS_Global_onedeg_20220627.TotalPrecip.Out24hrs.grib2 differ diff --git a/grib/src/test/data/index/cosmo-eu.grib2.gbx9 b/grib/src/test/data/index/cosmo-eu.grib2.gbx9 new file mode 100644 index 0000000000..f659a9d749 Binary files /dev/null and b/grib/src/test/data/index/cosmo-eu.grib2.gbx9 differ diff --git a/grib/src/test/data/index/radar_national.grib1.gbx9 b/grib/src/test/data/index/radar_national.grib1.gbx9 new file mode 100644 index 0000000000..211994c520 Binary files /dev/null and b/grib/src/test/data/index/radar_national.grib1.gbx9 differ diff --git a/grib/src/test/java/ucar/nc2/grib/TestGribCompareBuilders.java b/grib/src/test/java/ucar/nc2/grib/TestGribCompareBuilders.java index 7e68f710cc..0ab52c293c 100644 --- a/grib/src/test/java/ucar/nc2/grib/TestGribCompareBuilders.java +++ b/grib/src/test/java/ucar/nc2/grib/TestGribCompareBuilders.java @@ -33,11 +33,14 @@ public class TestGribCompareBuilders { @Parameterized.Parameters(name = "{0}") public static Collection getTestParameters() { Collection filenames = new ArrayList<>(); + // TODO look into this test + final String ignoredTest = "GFS_Global_onedeg_20220627.TotalPrecip.Out24hrs.grib2"; try { for (String dir : testDirs) { TestDir.actOnAllParameterized(dir, - (file) -> file.getPath().endsWith(".grb") || file.getPath().endsWith(".grib1") - || file.getPath().endsWith(".grib2") || file.getPath().endsWith(".grb2"), + (file) -> (file.getPath().endsWith(".grb") || file.getPath().endsWith(".grib1") + || file.getPath().endsWith(".grib2") || file.getPath().endsWith(".grb2")) + && !file.getName().equals(ignoredTest), filenames, true); } } catch (IOException e) { diff --git a/grib/src/test/java/ucar/nc2/grib/collection/TestGcMFile.java b/grib/src/test/java/ucar/nc2/grib/collection/TestGcMFile.java index bccf9b7a9a..7e07a13f08 100644 --- a/grib/src/test/java/ucar/nc2/grib/collection/TestGcMFile.java +++ b/grib/src/test/java/ucar/nc2/grib/collection/TestGcMFile.java @@ -27,7 +27,7 @@ public class TestGcMFile { public static class TestGcMFileParameterized { @Parameterized.Parameters(name = "{0}") - static public List getTestParameters() { + public static List getTestParameters() { return Arrays.asList(0, 1, 60000, 100000); } diff --git a/grib/src/test/java/ucar/nc2/grib/coord/TestDiscontiguousInterval.java b/grib/src/test/java/ucar/nc2/grib/coord/TestDiscontiguousInterval.java index cae758c063..b7ba843598 100644 --- a/grib/src/test/java/ucar/nc2/grib/coord/TestDiscontiguousInterval.java +++ b/grib/src/test/java/ucar/nc2/grib/coord/TestDiscontiguousInterval.java @@ -1,9 +1,18 @@ package ucar.nc2.grib.coord; +import static com.google.common.truth.Truth.assertThat; + import org.junit.Assert; import org.junit.Test; +import org.junit.experimental.categories.Category; +import thredds.featurecollection.FeatureCollectionConfig; +import thredds.featurecollection.FeatureCollectionType; +import thredds.inventory.CollectionUpdateType; import ucar.ma2.Array; import ucar.nc2.*; +import ucar.nc2.grib.collection.GribCdmIndex; +import ucar.unidata.util.test.TestDir; +import ucar.unidata.util.test.category.NeedsCdmUnitTest; import java.io.IOException; @@ -18,10 +27,44 @@ public class TestDiscontiguousInterval { * @throws IOException */ @Test - public void testTimeCoordinate1D_isStrictlyMonotonicallyIncreasing() throws IOException { + public void testTimeCoord1D_fromIntervals_isStrictlyMonotonicallyIncreasing_Dataset1() throws IOException { String testfile = "../grib/src/test/data/GFS_Global_onedeg_20220627_0000.TotalPrecip.Out48hrs.grib2"; + String varName = "Total_precipitation_surface_Mixed_intervals_Accumulation"; + + checkTimeCoord1D_fromIntervals_isStrictlyMonotonicallyIncreasing(testfile, varName); + } + + @Test + @Category(NeedsCdmUnitTest.class) + public void testTimeCoord1D_fromIntervals_isStrictlyMonotonicallyIncreasing_Dataset2() throws IOException { + String testfile = TestDir.cdmUnitTestDir + "formats/grib1/wrf-em.wmo"; + String varName = "Total_precipitation_surface_Mixed_intervals_Accumulation"; + + checkTimeCoord1D_fromIntervals_isStrictlyMonotonicallyIncreasing(testfile, varName); + } + + @Test + @Category(NeedsCdmUnitTest.class) + public void testTimeCoord1D_fromIntervals_isStrictlyMonotonicallyIncreasing_Dataset3() throws IOException { + String testfile = TestDir.cdmUnitTestDir + "formats/grib1/nomads/ruc2_252_20110830_2300_008.grb"; + String varName = "Convective_precipitation_surface_Mixed_intervals_Accumulation"; + + checkTimeCoord1D_fromIntervals_isStrictlyMonotonicallyIncreasing(testfile, varName); + } + + @Test + @Category(NeedsCdmUnitTest.class) + public void testTimeCoord1D_fromIntervals_isStrictlyMonotonicallyIncreasing_Dataset4() throws IOException { + String testfile = TestDir.cdmUnitTestDir + "formats/grib2/cosmo_de_eps_m001_2009051100.grib2"; + String varName = "Total_precipitation_rate_surface_Mixed_intervals_Accumulation_ens"; + + checkTimeCoord1D_fromIntervals_isStrictlyMonotonicallyIncreasing(testfile, varName); + } + + private void checkTimeCoord1D_fromIntervals_isStrictlyMonotonicallyIncreasing(String testfile, String varName) + throws IOException { try (NetcdfFile nc = NetcdfFiles.open(testfile)) { - Variable dataVar = nc.findVariable("Total_precipitation_surface_Mixed_intervals_Accumulation"); + Variable dataVar = nc.findVariable(varName); Assert.assertNotNull(dataVar); Dimension timeDim = null; @@ -57,4 +100,71 @@ private void checkTimeCoordinateVariable1D_IsStrictlyMonotonicallyIncreasing(int prevValue = currentValue; } } + + @Test + public void testTimeCoord2D_fromIntervals_isStrictlyMonotonicallyIncreasing_Dataset1() throws IOException { + String testfile = "../grib/src/test/data/GFS_Global_onedeg_20220627.TotalPrecip.Out24hrs.grib2"; + String varName = "Total_precipitation_surface_Mixed_intervals_Accumulation"; + + checkTimeCoord2D_fromIntervals_isStrictlyMonotonicallyIncreasing(testfile, varName); + } + + @Test + @Category(NeedsCdmUnitTest.class) + public void testFeatureCollectionBest_isStrictlyMonotonicallyIncreasing() throws IOException { + final String spec = + TestDir.cdmUnitTestDir + "/gribCollections/nonMonotonicTime/GFS_CONUS_80km_#yyyyMMdd_HHmm#\\.grib1$"; + final FeatureCollectionConfig config = new FeatureCollectionConfig("testFeatureCollectionBest", "path", + FeatureCollectionType.GRIB1, spec, null, null, null, "file", null); + final boolean changed = GribCdmIndex.updateGribCollection(config, CollectionUpdateType.always, null); + assertThat(changed).isTrue(); + final String topLevelIndex = GribCdmIndex.getTopIndexFileFromConfig(config).getAbsolutePath(); + + final String varName = "Total_precipitation_surface_Mixed_intervals_Accumulation"; + checkTimeCoord2D_fromIntervals_isStrictlyMonotonicallyIncreasing(topLevelIndex, varName, "Best/"); + } + + private void checkTimeCoord2D_fromIntervals_isStrictlyMonotonicallyIncreasing(String testfile, String varName) + throws IOException { + checkTimeCoord2D_fromIntervals_isStrictlyMonotonicallyIncreasing(testfile, varName, ""); + } + + private void checkTimeCoord2D_fromIntervals_isStrictlyMonotonicallyIncreasing(String testfile, String varName, + String groupName) throws IOException { + try (NetcdfFile nc = NetcdfFiles.open(testfile)) { + Variable dataVar = nc.findVariable(groupName + varName); + Assert.assertNotNull(dataVar); + + Dimension timeDim = null; + for (Dimension dim : dataVar.getDimensions()) { + if (dim.getShortName().startsWith("time")) { + timeDim = dim; + break; + } + } + Variable timeCoordVar = nc.findVariable(groupName + timeDim.getShortName()); + Assert.assertNotNull(timeCoordVar); + + Attribute att = timeCoordVar.findAttribute("bounds"); + Assert.assertNotNull(att); + Assert.assertEquals(timeDim.getShortName() + "_bounds", att.getStringValue()); + + Array timeCoordValues = timeCoordVar.read(); + checkTimeCoordVariable2D_IsStrictlyMonotonicallyIncreasing(timeDim.getLength(), timeCoordValues); + } + } + + private void checkTimeCoordVariable2D_IsStrictlyMonotonicallyIncreasing(int timeDimLength, Array timeCoordValues) { + double currentValue = timeCoordValues.getDouble(0); + double prevValue = currentValue; + StringBuilder valuesSoFar = new StringBuilder(); + valuesSoFar.append(currentValue); + for (int i = 1; i < timeDimLength; i++) { + currentValue = timeCoordValues.getDouble(i); + valuesSoFar.append(", ").append(currentValue); + Assert.assertTrue("Not increasing in a strictly-monotonic manner: [" + valuesSoFar + "]", + currentValue > prevValue); + prevValue = currentValue; + } + } } diff --git a/grib/src/test/java/ucar/nc2/grib/coord/TestTimeCoord.java b/grib/src/test/java/ucar/nc2/grib/coord/TestTimeCoord.java index 53860dcdd7..37cabc2fdf 100644 --- a/grib/src/test/java/ucar/nc2/grib/coord/TestTimeCoord.java +++ b/grib/src/test/java/ucar/nc2/grib/coord/TestTimeCoord.java @@ -3,12 +3,9 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; import ucar.nc2.time.CalendarDate; import ucar.nc2.time.CalendarPeriod; -@RunWith(JUnit4.class) public class TestTimeCoord { @Test @@ -32,14 +29,25 @@ public void shouldPreserveTimeIntervalLengthWithStartAfterRefDate() { final CalendarDate start = CalendarDate.parseISOformat(null, "2022-08-16T01:00:00Z"); final CalendarDate end = CalendarDate.parseISOformat(null, "2022-08-16T12:00:00Z"); final TimeCoordIntvDateValue timeCoordIntvDateValue = new TimeCoordIntvDateValue(start, end); - - final CalendarDate refDate = CalendarDate.parseISOformat(null, "2022-08-16T00:30:00Z"); final CalendarPeriod timeUnit = CalendarPeriod.of("Hour"); + final CalendarDate refDate = CalendarDate.parseISOformat(null, "2022-08-16T00:30:00Z"); final TimeCoordIntvValue timeCoordIntvValue = timeCoordIntvDateValue.convertReferenceDate(refDate, timeUnit); - assertThat(timeCoordIntvValue.getBounds1()).isEqualTo(0); - assertThat(timeCoordIntvValue.getBounds2()).isEqualTo(11); + assertThat(timeCoordIntvValue.getBounds1()).isEqualTo(1); + assertThat(timeCoordIntvValue.getBounds2()).isEqualTo(12); assertThat(timeCoordIntvValue.getIntervalSize()).isEqualTo(11); + + final CalendarDate refDate2 = CalendarDate.parseISOformat(null, "2022-08-16T00:40:00Z"); + final TimeCoordIntvValue timeCoordIntvValue2 = timeCoordIntvDateValue.convertReferenceDate(refDate2, timeUnit); + assertThat(timeCoordIntvValue2.getBounds1()).isEqualTo(0); + assertThat(timeCoordIntvValue2.getBounds2()).isEqualTo(11); + assertThat(timeCoordIntvValue2.getIntervalSize()).isEqualTo(11); + + final CalendarDate refDate3 = CalendarDate.parseISOformat(null, "2022-08-16T00:20:00Z"); + final TimeCoordIntvValue timeCoordIntvValue3 = timeCoordIntvDateValue.convertReferenceDate(refDate3, timeUnit); + assertThat(timeCoordIntvValue3.getBounds1()).isEqualTo(1); + assertThat(timeCoordIntvValue3.getBounds2()).isEqualTo(12); + assertThat(timeCoordIntvValue3.getIntervalSize()).isEqualTo(11); } @Test @@ -47,14 +55,25 @@ public void shouldPreserveTimeIntervalLengthWithStartBeforeRefDate() { final CalendarDate start = CalendarDate.parseISOformat(null, "2022-08-16T01:00:00Z"); final CalendarDate end = CalendarDate.parseISOformat(null, "2022-08-16T12:00:00Z"); final TimeCoordIntvDateValue timeCoordIntvDateValue = new TimeCoordIntvDateValue(start, end); - - final CalendarDate refDate = CalendarDate.parseISOformat(null, "2022-08-16T01:30:00Z"); final CalendarPeriod timeUnit = CalendarPeriod.of("Hour"); + final CalendarDate refDate = CalendarDate.parseISOformat(null, "2022-08-16T01:30:00Z"); final TimeCoordIntvValue timeCoordIntvValue = timeCoordIntvDateValue.convertReferenceDate(refDate, timeUnit); assertThat(timeCoordIntvValue.getBounds1()).isEqualTo(-1); assertThat(timeCoordIntvValue.getBounds2()).isEqualTo(10); assertThat(timeCoordIntvValue.getIntervalSize()).isEqualTo(11); + + final CalendarDate refDate2 = CalendarDate.parseISOformat(null, "2022-08-16T01:40:00Z"); + final TimeCoordIntvValue timeCoordIntvValue2 = timeCoordIntvDateValue.convertReferenceDate(refDate2, timeUnit); + assertThat(timeCoordIntvValue2.getBounds1()).isEqualTo(-1); + assertThat(timeCoordIntvValue2.getBounds2()).isEqualTo(10); + assertThat(timeCoordIntvValue2.getIntervalSize()).isEqualTo(11); + + final CalendarDate refDate3 = CalendarDate.parseISOformat(null, "2022-08-16T01:20:00Z"); + final TimeCoordIntvValue timeCoordIntvValue3 = timeCoordIntvDateValue.convertReferenceDate(refDate3, timeUnit); + assertThat(timeCoordIntvValue3.getBounds1()).isEqualTo(0); + assertThat(timeCoordIntvValue3.getBounds2()).isEqualTo(11); + assertThat(timeCoordIntvValue3.getIntervalSize()).isEqualTo(11); } } diff --git a/httpservices/src/main/java/ucar/httpservices/HTTPAuthUtil.java b/httpservices/src/main/java/ucar/httpservices/HTTPAuthUtil.java index b6f46318cf..2edcb40868 100755 --- a/httpservices/src/main/java/ucar/httpservices/HTTPAuthUtil.java +++ b/httpservices/src/main/java/ucar/httpservices/HTTPAuthUtil.java @@ -87,7 +87,7 @@ static URI authscopeToURI(AuthScope authScope) throws HTTPException { // as the scheme field of AuthScope. The HttpHost schem is // a protocol like http or https. The schem field of AuthScope // is the authorization scheme like Basic or NTLM or Digest. - static public HttpHost authscopeToHost(AuthScope scope) { + public static HttpHost authscopeToHost(AuthScope scope) { return new HttpHost(scope.getHost(), scope.getPort(), HttpHost.DEFAULT_SCHEME_NAME); } @@ -95,7 +95,7 @@ static public HttpHost authscopeToHost(AuthScope scope) { // as the scheme field of AuthScope. The HttpHost schem is // a protocol like http or https. The schem field of AuthScope // is the authorization scheme like Basic or NTLM or Digest. - static public AuthScope hostToAuthScope(HttpHost host) { + public static AuthScope hostToAuthScope(HttpHost host) { return new AuthScope(host.getHostName(), host.getPort(), AuthScope.ANY_REALM, AuthScope.ANY_SCHEME); } diff --git a/httpservices/src/main/java/ucar/httpservices/HTTPIntercepts.java b/httpservices/src/main/java/ucar/httpservices/HTTPIntercepts.java new file mode 100644 index 0000000000..ae735a57fd --- /dev/null +++ b/httpservices/src/main/java/ucar/httpservices/HTTPIntercepts.java @@ -0,0 +1,416 @@ +/* + * Copyright (c) 1998-2018 University Corporation for Atmospheric Research/Unidata + * See LICENSE for license information. + */ + +package ucar.httpservices; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + +import org.apache.http.*; +import org.apache.http.client.entity.DeflateDecompressingEntity; +import org.apache.http.client.entity.GzipDecompressingEntity; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.message.BasicHeader; +import org.apache.http.protocol.HttpContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Package together all the HTTP Intercept code + */ + +public class HTTPIntercepts { + + ////////////////////////////////////////////////// + // Constants + static private final Logger logger = LoggerFactory.getLogger(HTTPIntercepts.class); + + // Allow printing to a variety of targets + static abstract public interface Printer { + public void print(String s); + + public void println(String s); + } + + // Default printer + public static Printer logprinter = new Printer() { + public void print(String s) { + logger.debug(s); + } + + public void println(String s) { + logger.debug(s); + } + }; + + ////////////////////////////////////////////////// + // Inner classes + + abstract static class InterceptCommon { + private static final Logger logger = LoggerFactory.getLogger(InterceptCommon.class); + + protected HttpContext context = null; + protected List

        headers = new ArrayList
        (); + protected HttpRequest request = null; + protected HttpResponse response = null; + protected Printer printer = null; + + public InterceptCommon setPrint(Printer printer) { + this.printer = printer; + return this; + } + + public void clear() { + context = null; + headers.clear(); + request = null; + response = null; + } + + public synchronized HttpRequest getRequest() { + return this.request; + } + + public synchronized HttpResponse getResponse() { + return this.response; + } + + public synchronized HttpContext getContext() { + return this.context; + } + + public synchronized HttpEntity getRequestEntity() { + if (this.request != null && this.request instanceof HttpEntityEnclosingRequest) { + return ((HttpEntityEnclosingRequest) this.request).getEntity(); + } else + return null; + } + + synchronized HttpEntity getResponseEntity() { + if (this.response != null) { + return this.response.getEntity(); + } else + return null; + } + + public synchronized List
        getHeaders(String key) { + List
        keyh = new ArrayList
        (); + for (Header h : this.headers) { + if (h.getName().equalsIgnoreCase(key.trim())) + keyh.add(h); + } + return keyh; + } + + public synchronized List
        getHeaders() { + return this.headers; + } + + public void printHeaders() { + if (this.request != null) { + DebugInterceptRequest thisreq = (DebugInterceptRequest) this; + printer.println("Request: method=" + thisreq.getMethod() + "; uri=" + thisreq.getUri()); + Header[] hdrs = this.request.getAllHeaders(); + if (hdrs == null) + hdrs = new Header[0]; + printer.println("Request Headers:"); + for (Header h : hdrs) { + printer.println(h.toString()); + } + } + if (this.response != null) { + DebugInterceptResponse thisresp = (DebugInterceptResponse) this; + printer.println("Response: code=" + thisresp.getStatusCode()); + Header[] hdrs = this.response.getAllHeaders(); + if (hdrs == null) + hdrs = new Header[0]; + printer.println("Response Headers:"); + for (Header h : hdrs) { + printer.println(h.toString()); + } + } + } + } + + ////////////////////////////////////////////////// + // Static Variables + + // Use this flag to indicate that all instances should set debug. + protected static boolean defaultinterception = false; + + // Global set debug interceptors + public static void setGlobalDebugInterceptors(boolean tf) { + defaultinterception = true; + } + + // Use this flag to have debug interceptors print their info + // in addition to whatever else it does + protected static Printer defaultprinter = null; + + public static void setGlobalPrinter(Printer printer) { + defaultprinter = printer; + } + + ////////////////////////////////////////////////// + // Specific Interceptors + + public static class DebugInterceptResponse extends HTTPIntercepts.InterceptCommon implements HttpResponseInterceptor { + protected StatusLine statusline = null; // Status Line + + public int getStatusCode() { + return (statusline == null ? -1 : statusline.getStatusCode()); + } + + public synchronized void process(HttpResponse response, HttpContext context) throws HttpException, IOException { + this.response = response; + this.context = context; + this.statusline = response.getStatusLine(); + if (this.printer != null) + printHeaders(); + if (this.response != null) { + Header[] hdrs = this.response.getAllHeaders(); + for (int i = 0; i < hdrs.length; i++) { + headers.add(hdrs[i]); + } + } + } + } + + public static class DebugInterceptRequest extends InterceptCommon implements HttpRequestInterceptor { + protected RequestLine requestline = null; // request Line + + public String getMethod() { + return (requestline == null ? null : requestline.getMethod()); + } + + public String getUri() { + return (requestline == null ? null : requestline.getUri()); + } + + public synchronized void process(HttpRequest request, HttpContext context) throws HttpException, IOException { + this.request = request; + this.context = context; + this.requestline = request.getRequestLine(); + if (this.printer != null) + printHeaders(); + if (this.request != null) { + Header[] hdrs = this.request.getAllHeaders(); + for (int i = 0; i < hdrs.length; i++) { + headers.add(hdrs[i]); + } + } + } + } + + /** + * Temporary hack to remove Content-Encoding: XXX-Endian headers + */ + static class ContentEncodingInterceptor extends InterceptCommon implements HttpResponseInterceptor { + public synchronized void process(HttpResponse response, HttpContext context) throws HttpException, IOException { + if (response == null) + return; + Header[] hdrs = response.getAllHeaders(); + if (hdrs == null) + return; + boolean modified = false; + for (int i = 0; i < hdrs.length; i++) { + Header h = hdrs[i]; + if (!h.getName().equalsIgnoreCase("content-encoding")) + continue; + String value = h.getValue(); + if (value.trim().toLowerCase().endsWith("-endian")) { + hdrs[i] = new BasicHeader("X-Content-Encoding", value); + modified = true; + } + } + if (modified) + response.setHeaders(hdrs); + // Similarly, suppress encoding for Entity + HttpEntity entity = response.getEntity(); + if (entity != null) { + Header ceheader = entity.getContentEncoding(); + if (ceheader != null) { + String value = ceheader.getValue(); + } + } + } + } + + static class GZIPResponseInterceptor implements HttpResponseInterceptor { + public void process(final HttpResponse response, final HttpContext context) throws HttpException, IOException { + HttpEntity entity = response.getEntity(); + if (entity != null) { + Header ceheader = entity.getContentEncoding(); + if (ceheader != null) { + HeaderElement[] codecs = ceheader.getElements(); + for (HeaderElement h : codecs) { + if (h.getName().equalsIgnoreCase("gzip")) { + response.setEntity(new GzipDecompressingEntity(response.getEntity())); + return; + } + } + } + } + } + } + + static class DeflateResponseInterceptor implements HttpResponseInterceptor { + public void process(final HttpResponse response, final HttpContext context) throws HttpException, IOException { + HttpEntity entity = response.getEntity(); + if (entity != null) { + Header ceheader = entity.getContentEncoding(); + if (ceheader != null) { + HeaderElement[] codecs = ceheader.getElements(); + for (HeaderElement h : codecs) { + if (h.getName().equalsIgnoreCase("deflate")) { + response.setEntity(new DeflateDecompressingEntity(response.getEntity())); + return; + } + } + } + } + } + } + + public DebugInterceptRequest debugRequestInterceptor() { + for (HttpRequestInterceptor hri : reqintercepts) { + if (hri instanceof DebugInterceptRequest) { + return ((DebugInterceptRequest) hri); + } + } + return null; + } + + public DebugInterceptResponse debugResponseInterceptor() { + for (HttpResponseInterceptor hri : rspintercepts) { + if (hri instanceof DebugInterceptResponse) { + return ((DebugInterceptResponse) hri); + } + } + return null; + } + + ////////////////////////////////////////////////// + // Instance variables + + protected Printer printer = logprinter; + + // This is a hack to suppress content-encoding headers from request + // Effectively final because its set in the static initializer and otherwise + // read only. + protected HttpResponseInterceptor CEKILL = null; + + // Define interceptor instances; use copy on write for thread safety + protected List reqintercepts = new CopyOnWriteArrayList<>(); + protected List rspintercepts = new CopyOnWriteArrayList<>(); + + // Debug Header interceptors + protected List dbgreq = new CopyOnWriteArrayList<>(); + protected List dbgrsp = new CopyOnWriteArrayList<>(); + + ////////////////////////////////////////////////// + // Constructor(s) + + public HTTPIntercepts() { + if (defaultinterception) + this.addDebugInterceptors(); + else + this.removeDebugIntercepts(); + this.printer = defaultprinter; + } + + ////////////////////////////////////////////////// + // Methods + + public void setCEKILL(boolean tf) { + if (tf) + CEKILL = new ContentEncodingInterceptor(); + else + CEKILL = null; + } + + public void activateInterceptors(HttpClientBuilder cb) { + for (HttpRequestInterceptor hrq : reqintercepts) { + cb.addInterceptorLast(hrq); + } + for (HttpResponseInterceptor hrs : rspintercepts) { + cb.addInterceptorLast(hrs); + } + // Add debug interceptors + for (HttpRequestInterceptor hrq : dbgreq) { + cb.addInterceptorFirst(hrq); + } + for (HttpResponseInterceptor hrs : dbgrsp) { + cb.addInterceptorFirst(hrs); + } + // Hack: add Content-Encoding suppressor + cb.addInterceptorFirst(CEKILL); + } + + protected synchronized void addDebugInterceptors() { + DebugInterceptRequest rq = new DebugInterceptRequest(); + DebugInterceptResponse rs = new DebugInterceptResponse(); + rq.setPrint(this.printer); + rs.setPrint(this.printer); + /* remove any previous */ + for (int i = reqintercepts.size() - 1; i >= 0; i--) { + HttpRequestInterceptor hr = reqintercepts.get(i); + if (hr instanceof InterceptCommon) { + reqintercepts.remove(i); + } + } + for (int i = rspintercepts.size() - 1; i >= 0; i--) { + HttpResponseInterceptor hr = rspintercepts.get(i); + if (hr instanceof InterceptCommon) { + rspintercepts.remove(i); + } + } + reqintercepts.add(rq); + rspintercepts.add(rs); + } + + public synchronized void resetInterceptors() { + for (HttpRequestInterceptor hri : reqintercepts) { + if (hri instanceof InterceptCommon) { + ((InterceptCommon) hri).clear(); + } + } + } + + public void setGzipCompression() { + HttpResponseInterceptor hrsi = new HTTPIntercepts.GZIPResponseInterceptor(); + rspintercepts.add(hrsi); + } + + public void setDeflateCompression() { + HttpResponseInterceptor hrsi = new HTTPIntercepts.DeflateResponseInterceptor(); + rspintercepts.add(hrsi); + } + + public synchronized void removeCompression() { + for (int i = rspintercepts.size() - 1; i >= 0; i--) { // walk backwards + HttpResponseInterceptor hrsi = rspintercepts.get(i); + if (hrsi instanceof HTTPIntercepts.GZIPResponseInterceptor + || hrsi instanceof HTTPIntercepts.DeflateResponseInterceptor) { + rspintercepts.remove(i); + } + } + } + + public synchronized void removeDebugIntercepts() { + for (int i = rspintercepts.size() - 1; i >= 0; i--) { // walk backwards + HttpResponseInterceptor hrsi = rspintercepts.get(i); + if (hrsi instanceof DebugInterceptResponse) + rspintercepts.remove(i); + } + for (int i = reqintercepts.size() - 1; i >= 0; i--) { // walk backwards + HttpRequestInterceptor hrsi = reqintercepts.get(i); + if (hrsi instanceof DebugInterceptRequest) + reqintercepts.remove(i); + } + } +} diff --git a/httpservices/src/main/java/ucar/httpservices/HTTPMethod.java b/httpservices/src/main/java/ucar/httpservices/HTTPMethod.java index 5ec5b1248d..aff490f31d 100755 --- a/httpservices/src/main/java/ucar/httpservices/HTTPMethod.java +++ b/httpservices/src/main/java/ucar/httpservices/HTTPMethod.java @@ -137,8 +137,7 @@ * is accessible. * *

        - * For testing purposes, and to allow use of Spring Servlet Mocking, - * it is possible to set a special execution action (see executeRaw). + * For testing purposes, it is possible to set a special execution action (see executeRaw). */ @NotThreadSafe @@ -158,14 +157,11 @@ public static interface Executor { public static boolean TESTING = false; - /* External tests can Set this to true if they are using Spring Servlet Mocking */ - public static Executor MOCKEXECUTOR = null; - ////////////////////////////////////////////////// // Instance fields protected HTTPSession session = null; - protected boolean localsession = false; + protected boolean islocalsession = false; protected URI methodurl = null; protected String userinfo = null; protected HttpEntity content = null; @@ -224,7 +220,7 @@ protected HTTPMethod() throws HTTPException {} if (session == null) { session = HTTPFactory.newSession(url); - localsession = true; + islocalsession = true; } this.session = session; // user info may contain encoded characters (such as a username containing @@ -305,7 +301,7 @@ public synchronized void close() { } if (session != null) { session.removeMethod(this); - if (localsession) { + if (islocalsession) { session.close(); session = null; } @@ -346,7 +342,7 @@ public HttpResponse executeRaw() throws HTTPException { this.executed = true; if (this.methodurl == null) throw new HTTPException("HTTPMethod: no url specified"); - if (!localsession && !sessionCompatible(this.methodurl)) + if (!islocalsession && !sessionCompatible(this.methodurl)) throw new HTTPException("HTTPMethod: session incompatible url: " + this.methodurl); // Capture the current state of the parent HTTPSession; never to be modified in this class @@ -371,12 +367,7 @@ public HttpResponse executeRaw() throws HTTPException { configClient(cb, this.settings); session.setAuthenticationAndProxy(cb); HttpClient httpclient = cb.build(); - if (MOCKEXECUTOR != null) { - URI uri = this.lastrequest.getURI(); - this.lastresponse = MOCKEXECUTOR.execute(this.lastrequest); - } else { - this.lastresponse = httpclient.execute(targethost, this.lastrequest, session.getContext()); - } + this.lastresponse = httpclient.execute(targethost, this.lastrequest, session.getContext()); if (this.lastresponse == null) throw new HTTPException("HTTPMethod.execute: Response was null"); return this.lastresponse; @@ -422,7 +413,7 @@ protected void configClient(HttpClientBuilder cb, Map settings) th String agent = (String) settings.get(Prop.USER_AGENT); if (agent != null) cb.setUserAgent(agent); - session.setInterceptors(cb); + session.activateInterceptors(cb); session.setContentDecoderRegistry(cb); session.setClientManager(cb, this); session.setRetryHandler(cb); @@ -722,7 +713,7 @@ public HTTPSession getSession() { } public boolean isSessionLocal() { - return this.localsession; + return this.islocalsession; } public boolean hasStreamOpen() { @@ -742,7 +733,7 @@ public HTTPMethod setRange(long lo, long hi) { // Pass thru's to HTTPSession public HTTPMethod setCompression(String compressors) { - this.session.setGlobalCompression(compressors); + this.session.setCompression(compressors); return this; } diff --git a/httpservices/src/main/java/ucar/httpservices/HTTPSession.java b/httpservices/src/main/java/ucar/httpservices/HTTPSession.java index 008a1b927d..bfb0b072cb 100755 --- a/httpservices/src/main/java/ucar/httpservices/HTTPSession.java +++ b/httpservices/src/main/java/ucar/httpservices/HTTPSession.java @@ -9,7 +9,6 @@ import java.io.Closeable; import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; import java.net.URI; import java.net.URISyntaxException; import java.security.KeyManagementException; @@ -26,27 +25,16 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentSkipListSet; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.zip.GZIPInputStream; -import java.util.zip.ZipInputStream; import javax.annotation.concurrent.ThreadSafe; import javax.print.attribute.UnmodifiableSetException; -import org.apache.http.Header; -import org.apache.http.HeaderElement; -import org.apache.http.HttpEntity; -import org.apache.http.HttpException; -import org.apache.http.HttpHost; -import org.apache.http.HttpRequestInterceptor; -import org.apache.http.HttpResponse; -import org.apache.http.HttpResponseInterceptor; + +import org.apache.http.*; import org.apache.http.auth.AuthScope; import org.apache.http.auth.Credentials; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.HttpRequestRetryHandler; import org.apache.http.client.config.RequestConfig; -import org.apache.http.client.entity.DeflateDecompressingEntity; -import org.apache.http.client.entity.GzipDecompressingEntity; import org.apache.http.client.entity.InputStreamFactory; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.conn.socket.ConnectionSocketFactory; @@ -58,7 +46,6 @@ import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.protocol.HttpContext; import org.apache.http.ssl.SSLContextBuilder; import org.apache.http.ssl.SSLContexts; import org.apache.http.ssl.TrustStrategy; @@ -258,57 +245,6 @@ public String getName() { } } - static class GZIPResponseInterceptor implements HttpResponseInterceptor { - public void process(final HttpResponse response, final HttpContext context) throws HttpException, IOException { - HttpEntity entity = response.getEntity(); - if (entity != null) { - Header ceheader = entity.getContentEncoding(); - if (ceheader != null) { - HeaderElement[] codecs = ceheader.getElements(); - for (HeaderElement h : codecs) { - if (h.getName().equalsIgnoreCase("gzip")) { - response.setEntity(new GzipDecompressingEntity(response.getEntity())); - return; - } - } - } - } - } - } - - static class DeflateResponseInterceptor implements HttpResponseInterceptor { - public void process(final HttpResponse response, final HttpContext context) throws HttpException, IOException { - HttpEntity entity = response.getEntity(); - if (entity != null) { - Header ceheader = entity.getContentEncoding(); - if (ceheader != null) { - HeaderElement[] codecs = ceheader.getElements(); - for (HeaderElement h : codecs) { - if (h.getName().equalsIgnoreCase("deflate")) { - response.setEntity(new DeflateDecompressingEntity(response.getEntity())); - return; - } - } - } - } - } - } - - static class ZipStreamFactory implements InputStreamFactory { - // InputStreamFactory methods - @Override - public InputStream create(InputStream instream) throws IOException { - return new ZipInputStream(instream, HTTPUtil.UTF8); - } - } - - static class GZIPStreamFactory implements InputStreamFactory { - // InputStreamFactory methods - @Override - public InputStream create(InputStream instream) throws IOException { - return new GZIPInputStream(instream); - } - } //////////////////////////////////////////////////////////////////////// // Static variables @@ -327,19 +263,6 @@ public InputStream create(InputStream instream) throws IOException { // User is responsible for its contents via setCredentials static CredentialsProvider globalprovider = null; - // Define interceptor instances; use copy on write for thread safety - static List reqintercepts = new CopyOnWriteArrayList<>(); - static List rspintercepts = new CopyOnWriteArrayList<>(); - - // This is a hack to suppress content-encoding headers from request - // Effectively final because its set in the static initializer and otherwise - // read only. - protected static HttpResponseInterceptor CEKILL; - - // Debug Header interceptors - protected static List dbgreq = new CopyOnWriteArrayList<>(); - protected static List dbgrsp = new CopyOnWriteArrayList<>(); - protected static HTTPConnections connmgr; protected static Map contentDecoderMap; @@ -355,10 +278,9 @@ public InputStream create(InputStream instream) throws IOException { } else { connmgr = new HTTPConnectionSimple(); } - CEKILL = new HTTPUtil.ContentEncodingInterceptor(); contentDecoderMap = new HashMap<>(); - contentDecoderMap.put("zip", new ZipStreamFactory()); - contentDecoderMap.put("gzip", new GZIPStreamFactory()); + contentDecoderMap.put("zip", new HTTPUtil.ZipStreamFactory()); + contentDecoderMap.put("gzip", new HTTPUtil.GZIPStreamFactory()); globalsettings = new ConcurrentHashMap<>(); setDefaults(globalsettings); authcontrols = new AuthControls(); @@ -603,34 +525,20 @@ public static synchronized Object getGlobalSetting(String key) { ////////////////////////////////////////////////// // Compression - public static synchronized void setGlobalCompression(String compressors) { + public synchronized void setCompression(String compressors) { if (globalsettings.get(Prop.COMPRESSION) != null) { - removeGlobalCompression(); - } - String compresslist = checkCompressors(compressors); - if (HTTPUtil.nullify(compresslist) == null) { - throw new IllegalArgumentException("Bad compressors: " + compressors); - } - globalsettings.put(Prop.COMPRESSION, compresslist); - HttpResponseInterceptor hrsi; - if (compresslist.contains("gzip")) { - hrsi = new GZIPResponseInterceptor(); - rspintercepts.add(hrsi); - } - if (compresslist.contains("deflate")) { - hrsi = new DeflateResponseInterceptor(); - rspintercepts.add(hrsi); - } - } - - public static synchronized void removeGlobalCompression() { - if (globalsettings.remove(Prop.COMPRESSION) != null) { - for (int i = rspintercepts.size() - 1; i >= 0; i--) { // walk backwards - HttpResponseInterceptor hrsi = rspintercepts.get(i); - if (hrsi instanceof GZIPResponseInterceptor || hrsi instanceof DeflateResponseInterceptor) { - rspintercepts.remove(i); - } + if (globalsettings.remove(HTTPSession.Prop.COMPRESSION) != null) { + this.interceptors.removeCompression(); + } + String compresslist = checkCompressors(compressors); + if (HTTPUtil.nullify(compresslist) == null) { + throw new IllegalArgumentException("Bad compressors: " + compressors); } + globalsettings.put(Prop.COMPRESSION, compresslist); + if (compresslist.contains("deflate")) + interceptors.setDeflateCompression(); + if (compresslist.contains("gzip")) + interceptors.setGzipCompression(); } } @@ -701,9 +609,6 @@ public static synchronized void setGlobalRetryCount(int n) { protected String identifier = "Session"; protected Map localsettings = new ConcurrentHashMap(); - // We currently only allow the use of global interceptors - // protected List intercepts = new ArrayList(); // current set of interceptors; - // This context is re-used over all method executions so that we maintain // cookies, credentials, etc. // In theory this also supports credentials cache clearing. @@ -712,6 +617,8 @@ public static synchronized void setGlobalRetryCount(int n) { protected URI requestURI = null; // full uri from the HTTPMethod call + protected HTTPIntercepts interceptors = new HTTPIntercepts(); /* never null */ + // cached and recreated as needed protected boolean cachevalid = false; // Are cached items up-to-date? protected RequestConfig cachedconfig = null; @@ -750,28 +657,22 @@ protected void init(AuthScope scope, String actualurl) throws HTTPException { } ////////////////////////////////////////////////// - // Interceptors: Only supported at global level + // Accessor(s) - protected static void setInterceptors(HttpClientBuilder cb) { - for (HttpRequestInterceptor hrq : reqintercepts) { - cb.addInterceptorLast(hrq); - } - for (HttpResponseInterceptor hrs : rspintercepts) { - cb.addInterceptorLast(hrs); - } - // Add debug interceptors - for (HttpRequestInterceptor hrq : dbgreq) { - cb.addInterceptorFirst(hrq); - } - for (HttpResponseInterceptor hrs : dbgrsp) { - cb.addInterceptorFirst(hrs); - } - // Hack: add Content-Encoding suppressor - cb.addInterceptorFirst(CEKILL); + public HTTPIntercepts getIntercepts() { + assert this.interceptors != null; + return this.interceptors; } - ////////////////////////////////////////////////// - // Accessor(s) + public HTTPIntercepts.DebugInterceptRequest getDebugRequestInterceptor() { + assert this.interceptors != null; + return this.interceptors.debugRequestInterceptor(); + } + + public synchronized void resetInterceptors() { + assert this.interceptors != null; + this.interceptors.resetInterceptors(); + } public AuthScope getAuthScope() { return this.scope; @@ -779,7 +680,6 @@ public AuthScope getAuthScope() { public String getSessionURI() { return this.sessionURI; - } /** @@ -1072,6 +972,14 @@ public ImmutableMap getMergedSettings() { return builder.build(); } + public synchronized void setDebugInterceptors() { + this.interceptors.addDebugInterceptors(); + } + + public void activateInterceptors(HttpClientBuilder cb) { + this.interceptors.activateInterceptors(cb); + } + ////////////////////////////////////////////////// // Utilities @@ -1117,66 +1025,6 @@ protected static synchronized void track(HTTPSession session) { sessionList.add(session); } - public static synchronized void setInterceptors(boolean print) { - if (!TESTING) { - throw new UnsupportedOperationException(); - } - HTTPUtil.InterceptRequest rq = new HTTPUtil.InterceptRequest(); - HTTPUtil.InterceptResponse rs = new HTTPUtil.InterceptResponse(); - rq.setPrint(print); - rs.setPrint(print); - /* remove any previous */ - for (int i = reqintercepts.size() - 1; i >= 0; i--) { - HttpRequestInterceptor hr = reqintercepts.get(i); - if (hr instanceof HTTPUtil.InterceptCommon) { - reqintercepts.remove(i); - } - } - for (int i = rspintercepts.size() - 1; i >= 0; i--) { - HttpResponseInterceptor hr = rspintercepts.get(i); - if (hr instanceof HTTPUtil.InterceptCommon) { - rspintercepts.remove(i); - } - } - reqintercepts.add(rq); - rspintercepts.add(rs); - } - - public static void resetInterceptors() { - if (!TESTING) { - throw new UnsupportedOperationException(); - } - for (HttpRequestInterceptor hri : reqintercepts) { - if (hri instanceof HTTPUtil.InterceptCommon) { - ((HTTPUtil.InterceptCommon) hri).clear(); - } - } - } - - public static HTTPUtil.InterceptRequest debugRequestInterceptor() { - if (!TESTING) { - throw new UnsupportedOperationException(); - } - for (HttpRequestInterceptor hri : reqintercepts) { - if (hri instanceof HTTPUtil.InterceptRequest) { - return ((HTTPUtil.InterceptRequest) hri); - } - } - return null; - } - - public static HTTPUtil.InterceptResponse debugResponseInterceptor() { - if (!TESTING) { - throw new UnsupportedOperationException(); - } - for (HttpResponseInterceptor hri : rspintercepts) { - if (hri instanceof HTTPUtil.InterceptResponse) { - return ((HTTPUtil.InterceptResponse) hri); - } - } - return null; - } - /* Only allow if debugging */ public static void clearkeystore() { if (!TESTING) { @@ -1242,11 +1090,6 @@ public static int getRetryCount() { throw new UnsupportedOperationException(); } - @Deprecated - public static void setGlobalCompression() { - setGlobalCompression("gzip,deflate"); - } - @Deprecated public static void setGlobalProxy(String host, int port) { throw new UnsupportedOperationException("setGlobalProxy: use -D flags"); diff --git a/httpservices/src/main/java/ucar/httpservices/HTTPUtil.java b/httpservices/src/main/java/ucar/httpservices/HTTPUtil.java index 213025a163..afa933265a 100755 --- a/httpservices/src/main/java/ucar/httpservices/HTTPUtil.java +++ b/httpservices/src/main/java/ucar/httpservices/HTTPUtil.java @@ -5,35 +5,20 @@ package ucar.httpservices; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; +import java.io.*; import java.net.URI; import java.net.URISyntaxException; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; import java.util.EnumSet; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; -import org.apache.http.Header; -import org.apache.http.HttpEntity; -import org.apache.http.HttpEntityEnclosingRequest; -import org.apache.http.HttpException; -import org.apache.http.HttpRequest; -import org.apache.http.HttpRequestInterceptor; -import org.apache.http.HttpResponse; -import org.apache.http.HttpResponseInterceptor; +import java.util.zip.GZIPInputStream; +import java.util.zip.ZipInputStream; +import org.apache.http.client.entity.InputStreamFactory; import org.apache.http.client.utils.URIBuilder; -import org.apache.http.message.BasicHeader; -import org.apache.http.protocol.HttpContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,117 +41,21 @@ enum URIPart { } ////////////////////////////////////////////////// - // Interceptors + // Inner classes - abstract static class InterceptCommon { - private static final Logger logger = LoggerFactory.getLogger(InterceptCommon.class); - - protected HttpContext context = null; - protected List
        headers = new ArrayList
        (); - protected HttpRequest request = null; - protected HttpResponse response = null; - protected boolean printheaders = false; - - public InterceptCommon setPrint(boolean tf) { - this.printheaders = tf; - return this; - } - - public void clear() { - context = null; - headers.clear(); - request = null; - response = null; - } - - public synchronized HttpRequest getRequest() { - return this.request; - } - - public synchronized HttpResponse getResponse() { - return this.response; - } - - public synchronized HttpContext getContext() { - return this.context; - } - - public synchronized HttpEntity getRequestEntity() { - if (this.request != null && this.request instanceof HttpEntityEnclosingRequest) { - return ((HttpEntityEnclosingRequest) this.request).getEntity(); - } else - return null; - } - - synchronized HttpEntity getResponseEntity() { - if (this.response != null) { - return this.response.getEntity(); - } else - return null; - } - - public synchronized List
        getHeaders(String key) { - List
        keyh = new ArrayList
        (); - for (Header h : this.headers) { - if (h.getName().equalsIgnoreCase(key.trim())) - keyh.add(h); - } - return keyh; - } - - synchronized List
        getHeaders() { - return this.headers; - } - - void printHeaders() { - if (this.request != null) { - Header[] hdrs = this.request.getAllHeaders(); - if (hdrs == null) - hdrs = new Header[0]; - logger.debug("Request Headers:"); - for (Header h : hdrs) { - logger.debug(h.toString()); - } - } - if (this.response != null) { - Header[] hdrs = this.response.getAllHeaders(); - if (hdrs == null) - hdrs = new Header[0]; - logger.debug("Response Headers:"); - for (Header h : hdrs) { - logger.debug(h.toString()); - } - } - } - } - - public static class InterceptResponse extends InterceptCommon implements HttpResponseInterceptor { - public synchronized void process(HttpResponse response, HttpContext context) throws HttpException, IOException { - this.response = response; - this.context = context; - if (this.printheaders) - printHeaders(); - else if (this.response != null) { - Header[] hdrs = this.response.getAllHeaders(); - for (int i = 0; i < hdrs.length; i++) { - headers.add(hdrs[i]); - } - } + static class ZipStreamFactory implements InputStreamFactory { + // InputStreamFactory methods + @Override + public InputStream create(InputStream instream) throws IOException { + return new ZipInputStream(instream, HTTPUtil.UTF8); } } - public static class InterceptRequest extends InterceptCommon implements HttpRequestInterceptor { - public synchronized void process(HttpRequest request, HttpContext context) throws HttpException, IOException { - this.request = request; - this.context = context; - if (this.printheaders) - printHeaders(); - else if (this.request != null) { - Header[] hdrs = this.request.getAllHeaders(); - for (int i = 0; i < hdrs.length; i++) { - headers.add(hdrs[i]); - } - } + static class GZIPStreamFactory implements InputStreamFactory { + // InputStreamFactory methods + @Override + public InputStream create(InputStream instream) throws IOException { + return new GZIPInputStream(instream); } } @@ -315,40 +204,6 @@ static URI uriExclude(final URI uri, URIPart... excludes) { } } - /** - * Temporary hack to remove Content-Encoding: XXX-Endian headers - */ - static class ContentEncodingInterceptor extends InterceptCommon implements HttpResponseInterceptor { - public synchronized void process(HttpResponse response, HttpContext context) throws HttpException, IOException { - if (response == null) - return; - Header[] hdrs = response.getAllHeaders(); - if (hdrs == null) - return; - boolean modified = false; - for (int i = 0; i < hdrs.length; i++) { - Header h = hdrs[i]; - if (!h.getName().equalsIgnoreCase("content-encoding")) - continue; - String value = h.getValue(); - if (value.trim().toLowerCase().endsWith("-endian")) { - hdrs[i] = new BasicHeader("X-Content-Encoding", value); - modified = true; - } - } - if (modified) - response.setHeaders(hdrs); - // Similarly, suppress encoding for Entity - HttpEntity entity = response.getEntity(); - if (entity != null) { - Header ceheader = entity.getContentEncoding(); - if (ceheader != null) { - String value = ceheader.getValue(); - } - } - } - } - protected static Map merge(Map globalsettings, Map localsettings) { // merge global and local settings; local overrides global. diff --git a/httpservices/src/main/java/ucar/httpservices/fix b/httpservices/src/main/java/ucar/httpservices/fix deleted file mode 100644 index 62d4a87e51..0000000000 --- a/httpservices/src/main/java/ucar/httpservices/fix +++ /dev/null @@ -1,5 +0,0 @@ -F=`cd ckp2;ls -1|tr '\\r\\n' ' '` -for f in $F ; do - rm -f $f - sed -e 's|ucar[.]httpclient|ucar.httpservices|g' ./$f -done diff --git a/httpservices/src/test/java/ucar/httpservices/TestThreading.java b/httpservices/src/test/java/ucar/httpservices/TestThreading.java index 4cf2d5adab..e1da105fea 100644 --- a/httpservices/src/test/java/ucar/httpservices/TestThreading.java +++ b/httpservices/src/test/java/ucar/httpservices/TestThreading.java @@ -53,17 +53,17 @@ public class TestThreading extends UnitTestCommon { ////////////////////////////////////////////////// . // Constants - static public final boolean DEBUG = false; + public static final boolean DEBUG = false; - static public final boolean AWAIT = true; + public static final boolean AWAIT = true; - static protected final int DFALTTHREADS = 100; - static protected final int DFALTMAXCONNS = (DFALTTHREADS / 2); + protected static final int DFALTTHREADS = 100; + protected static final int DFALTMAXCONNS = (DFALTTHREADS / 2); - static protected final String DFALTSERVER = "http://" + TestDir.dap2TestServer; + protected static final String DFALTSERVER = "http://" + TestDir.dap2TestServer; - static protected final String DFALTURLFMT = DFALTSERVER + "/dts/test.%02d"; + protected static final String DFALTURLFMT = DFALTSERVER + "/dts/test.%02d"; static { HTTPSession.TESTING = true; @@ -200,7 +200,7 @@ public void run() { } } - static public class Failure extends Exception { + public static class Failure extends Exception { Failure(String m, Exception e) { super(m, e); } diff --git a/httpservices/src/test/java/ucar/nc2/util/net/TestHTTPSession.java b/httpservices/src/test/java/ucar/nc2/util/net/TestHTTPSession.java index 3e5ed1e79b..18f7d3aa6c 100755 --- a/httpservices/src/test/java/ucar/nc2/util/net/TestHTTPSession.java +++ b/httpservices/src/test/java/ucar/nc2/util/net/TestHTTPSession.java @@ -32,15 +32,16 @@ package ucar.nc2.util.net; +import static com.google.common.truth.Truth.assertWithMessage; + import org.apache.http.Header; import org.apache.http.auth.AuthScope; import org.apache.http.auth.Credentials; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.config.RequestConfig; import org.apache.http.impl.client.BasicCredentialsProvider; -import org.apache.http.message.BasicHeader; -import org.junit.Assert; import org.junit.Test; +import org.junit.experimental.categories.Category; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ucar.httpservices.HTTPFactory; @@ -49,31 +50,18 @@ import ucar.unidata.util.test.UnitTestCommon; import java.lang.invoke.MethodHandles; import java.util.List; +import ucar.unidata.util.test.category.NeedsExternalResource; +@Category(NeedsExternalResource.class) public class TestHTTPSession extends UnitTestCommon { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - ////////////////////////////////////////////////// - // Constants - - // static final String TESTURL1 = "http://" + TestDir.dap2TestServer + "/dts/test.01.dds"; - static final String TESTURL1 = "https://thredds-dev.unidata.ucar.edu"; + static final String TESTURL1 = "https://thredds-test.unidata.ucar.edu"; static final String GLOBALAGENT = "TestUserAgent123global"; static final String SESSIONAGENT = "TestUserAgent123session"; static final String USER = "dmh"; static final String PWD = "FakDennisPassword"; - ////////////////////////////////////////////////// - // Define the test sets - - int passcount = 0; - int xfailcount = 0; - int failcount = 0; - boolean verbose = true; - boolean pass = false; - - String datadir = null; - String threddsroot = null; public TestHTTPSession() { super(); @@ -88,48 +76,48 @@ public void testAgent() throws Exception { logger.debug("*** URL: {}", TESTURL1); logger.debug("Test: HTTPSession.setGlobalUserAgent({})", GLOBALAGENT); - HTTPSession.setInterceptors(false); HTTPSession.setGlobalUserAgent(GLOBALAGENT); try (HTTPSession session = HTTPFactory.newSession(TESTURL1)) { + session.setDebugInterceptors(); // indicate we want debug intercepts List
        agents = null; HTTPMethod method = HTTPFactory.Get(session, TESTURL1); method.execute(); // Use special interface to access the request // Look for the user agent header - agents = HTTPSession.debugRequestInterceptor().getHeaders(HTTPSession.HEADER_USERAGENT); - Assert.assertFalse("User-Agent Header not found", agents.size() == 0); + agents = session.getDebugRequestInterceptor().getHeaders(HTTPSession.HEADER_USERAGENT); + assertWithMessage("User-Agent Header not found").that(agents.size()).isNotEqualTo(0); // It is possible to see multiple same headers, so verify that they have same value String agentvalue = null; for (Header h : agents) { - Assert.assertTrue("Bad Agent Header", h.getName().equals("User-Agent")); + assertWithMessage("Bad Agent Header").that(h.getName()).isEqualTo("User-Agent"); if (agentvalue == null) agentvalue = h.getValue(); else - Assert.assertTrue("Bad Agent Value", h.getValue().equals(agentvalue)); + assertWithMessage("Bad Agent Value").that(h.getValue()).isEqualTo(agentvalue); } - Assert.assertTrue(String.format("User-Agent mismatch: expected %s found:%s", GLOBALAGENT, agentvalue), - GLOBALAGENT.equals(agentvalue)); + assertWithMessage(String.format("User-Agent mismatch: expected %s found:%s", GLOBALAGENT, agentvalue)) + .that(GLOBALAGENT).isEqualTo(agentvalue); logger.debug("*** Pass: set global agent"); // method.close(); logger.debug("Test: HTTPSession.setUserAgent({})", SESSIONAGENT); - HTTPSession.resetInterceptors(); + session.resetInterceptors(); session.setUserAgent(SESSIONAGENT); method = HTTPFactory.Get(session, TESTURL1); method.execute(); // Use special interface to access the request - agents = HTTPSession.debugRequestInterceptor().getHeaders(HTTPSession.HEADER_USERAGENT); - Assert.assertFalse("User-Agent Header not found", agents.size() == 0); + agents = session.getDebugRequestInterceptor().getHeaders(HTTPSession.HEADER_USERAGENT); + assertWithMessage("User-Agent Header not found").that(agents.size()).isNotEqualTo(0); agentvalue = null; for (Header h : agents) { - Assert.assertTrue("Bad Agent Header", h.getName().equals("User-Agent")); + assertWithMessage("Bad Agent Header").that(h.getName()).isEqualTo("User-Agent"); if (agentvalue == null) agentvalue = h.getValue(); else - Assert.assertTrue("Bad Agent Value", h.getValue().equals(agentvalue)); + assertWithMessage("Bad Agent Value").that(h.getValue()).isEqualTo(agentvalue); } - Assert.assertTrue(String.format("User-Agent mismatch: expected %s found:%s", SESSIONAGENT, agentvalue), - SESSIONAGENT.equals(agentvalue)); + assertWithMessage(String.format("User-Agent mismatch: expected %s found:%s", SESSIONAGENT, agentvalue)) + .that(SESSIONAGENT).isEqualTo(agentvalue); logger.debug("*** Pass: set session agent"); method.close(); } @@ -157,22 +145,22 @@ public void testConfigure() throws Exception { boolean b = dbgcfg.isCircularRedirectsAllowed(); logger.debug("Test: Circular Redirects"); - Assert.assertTrue("*** Fail: Circular Redirects", b); + assertWithMessage("*** Fail: Circular Redirects").that(b).isTrue(); logger.debug("*** Pass: Circular Redirects"); logger.debug("Test: Max Redirects"); int n = dbgcfg.getMaxRedirects(); - Assert.assertTrue("*** Fail: Max Redirects", n == 111); + assertWithMessage("*** Fail: Max Redirects").that(n).isEqualTo(111); logger.debug("*** Pass: Max Redirects"); logger.debug("Test: SO Timeout"); n = dbgcfg.getSocketTimeout(); - Assert.assertTrue("*** Fail: SO Timeout", n == 17777); + assertWithMessage("*** Fail: SO Timeout").that(n).isEqualTo(17777); logger.debug("*** Pass: SO Timeout"); logger.debug("Test: Connection Timeout"); n = dbgcfg.getConnectTimeout(); - Assert.assertTrue("*** Fail: Connection Timeout", n == 37777); + assertWithMessage("*** Fail: Connection Timeout").that(n).isEqualTo(37777); logger.debug("*** Pass: SO Timeout"); method.close(); } diff --git a/httpservices/src/test/java/ucar/nc2/util/net/TestHang.java b/httpservices/src/test/java/ucar/nc2/util/net/TestHang.java index f544d4ae0f..95aeb53965 100644 --- a/httpservices/src/test/java/ucar/nc2/util/net/TestHang.java +++ b/httpservices/src/test/java/ucar/nc2/util/net/TestHang.java @@ -42,9 +42,9 @@ public class TestHang { static private HTTPSession session; - static protected final String server = "http://" + TestDir.dap2TestServer; + protected static final String server = "http://" + TestDir.dap2TestServer; - static protected final String url = server + "/dts/test.%02d.dds"; + protected static final String url = server + "/dts/test.%02d.dds"; static boolean isxfail(int x) { for (Integer i : XFAIL) { diff --git a/httpservices/src/test/java/ucar/nc2/util/net/TestURIParse.java b/httpservices/src/test/java/ucar/nc2/util/net/TestURIParse.java index 6a0f85fa0c..4f241ba020 100644 --- a/httpservices/src/test/java/ucar/nc2/util/net/TestURIParse.java +++ b/httpservices/src/test/java/ucar/nc2/util/net/TestURIParse.java @@ -53,7 +53,7 @@ public class TestURIParse extends UnitTestCommon { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - static public boolean DEBUG = false; + public static boolean DEBUG = false; static final String CARON = "http://" + TestDir.remoteTestServer + "/thredds/cdmremote/scanCdmUnitTests/formats/hdf5/grid_1_3d_xyz_aug.h5?req=data&var=HDFEOS_INFORMATION/StructMetadata\\.0"; @@ -120,7 +120,7 @@ public void testParse() throws Exception { Assert.assertTrue("TestMisc.testURX", pass); } - static protected boolean uriCompare(URI uri1, URI uri2) { + protected static boolean uriCompare(URI uri1, URI uri2) { boolean ok = true; ok = ok && uriPartCompare(uri1.getScheme(), uri2.getScheme()); ok = ok && uriPartCompare(uri1.getHost(), uri2.getHost()); @@ -131,7 +131,7 @@ static protected boolean uriCompare(URI uri1, URI uri2) { return ok; } - static protected boolean uriCompareRaw(URI uri1, URI uri2) { + protected static boolean uriCompareRaw(URI uri1, URI uri2) { boolean ok = true; ok = ok && uriPartCompare(uri1.getScheme(), uri2.getScheme()); ok = ok && uriPartCompare(uri1.getHost(), uri2.getHost()); @@ -142,7 +142,7 @@ static protected boolean uriCompareRaw(URI uri1, URI uri2) { return ok; } - static protected boolean uriPartCompare(String s1, String s2) { + protected static boolean uriPartCompare(String s1, String s2) { if (s1 == s2) return true; if (s1 == null || s2 == null) @@ -150,7 +150,7 @@ static protected boolean uriPartCompare(String s1, String s2) { return (s1.equals(s2)); } - static protected String dump(URI uri) { + protected static String dump(URI uri) { StringBuilder buf = new StringBuilder(); buf.append(uri.getScheme()).append("://"); buf.append(uri.getHost()); @@ -165,7 +165,7 @@ static protected String dump(URI uri) { return buf.toString(); } - static protected String dumpraw(URI uri) { + protected static String dumpraw(URI uri) { StringBuilder buf = new StringBuilder(); buf.append(uri.getScheme()).append("://"); buf.append(uri.getHost()); diff --git a/legacy/src/main/java/thredds/catalog/ThreddsMetadata.java b/legacy/src/main/java/thredds/catalog/ThreddsMetadata.java index f9f7d7f155..a6a3731b39 100644 --- a/legacy/src/main/java/thredds/catalog/ThreddsMetadata.java +++ b/legacy/src/main/java/thredds/catalog/ThreddsMetadata.java @@ -709,7 +709,7 @@ public int hashCode() { result = 29 * result + (serviceName != null ? serviceName.hashCode() : 0); result = 29 * result + (dataType != null ? dataType.hashCode() : 0); result = 29 * result + (dataFormat != null ? dataFormat.hashCode() : 0); - temp = dataSize != +0.0d ? Double.doubleToLongBits(dataSize) : 0l; + temp = dataSize != 0.0d ? Double.doubleToLongBits(dataSize) : 0l; result = 29 * result + (int) (temp ^ (temp >>> 32)); hashCode = result; } diff --git a/netcdf-java-bom/build.gradle b/netcdf-java-bom/build.gradle index 0f33c578d7..400529c0ee 100644 --- a/netcdf-java-bom/build.gradle +++ b/netcdf-java-bom/build.gradle @@ -19,14 +19,12 @@ dependencies { api project(':cdm:cdm-radial') api project(':cdm:cdm-s3') api project(':cdm-test-utils') - api project(':dap4:d4core') - api project(':dap4:d4lib') - api project(':dap4:d4cdm') api project(':grib') api project(':httpservices') api project(':legacy') api project(':netcdf4') api project(':opendap') + api project(':dap4') api project(':udunits') api project(':uibase') api project(':uicdm') diff --git a/netcdf-java-platform/build.gradle b/netcdf-java-platform/build.gradle index 9cbc1a39f6..f04863c81a 100644 --- a/netcdf-java-platform/build.gradle +++ b/netcdf-java-platform/build.gradle @@ -10,7 +10,7 @@ javaPlatform { dependencies { def awsVersion = '2.17.290' - def jacksonVersion = '2.14.0-rc1' + def jacksonVersion = '2.15.2' api enforcedPlatform("software.amazon.awssdk:bom:${awsVersion}") api enforcedPlatform("com.fasterxml.jackson:jackson-bom:${jacksonVersion}") constraints { @@ -20,12 +20,12 @@ dependencies { // general dependencies api "com.google.protobuf:protobuf-java:${depVersion.protobuf}" api "com.google.protobuf:protoc:${depVersion.protobuf}" - api 'com.google.guava:guava:30.1-jre' + api 'com.google.guava:guava:32.0.1-jre' api 'com.google.re2j:re2j:1.3' api 'org.jdom:jdom2:2.0.6' api 'joda-time:joda-time:2.10.3' // replace by javax.time - // netcdf4, dap4:d4lib + // netcdf4, dap4 // Tricky dependency here. We need to make sure that we keep in-line with the version // that chronicle-map uses in the TDS, or else we see bad things happen on the TDS side. api 'net.java.dev.jna:jna:5.12.1' @@ -36,12 +36,15 @@ dependencies { // command line parser api 'com.beust:jcommander:1.78' + // cdm-core + api 'commons-math:commons-math:1.2' + // cdm-grib api 'edu.ucar:jj2000:5.4' api 'org.jsoup:jsoup:1.11.2' // HTML scraper used in GRIB // cdm-mcidas (GEMPAK and McIDAS IOSPs) - api 'edu.wisc.ssec:visad-mcidas-slim-ucar-ns:20200507-2' + api 'edu.wisc.ssec:visad-mcidas-slim-ucar-ns:20231121' // cdm-vis5d (vis5d IOSP) api 'edu.wisc.ssec:visad:2.0-20130124' @@ -73,7 +76,7 @@ dependencies { // netcdf-java logging api "org.slf4j:slf4j-api:${depVersion.slf4j}" - runtime 'ch.qos.logback:logback-classic:1.2.9' + runtime 'ch.qos.logback:logback-classic:1.4.14' // legacy gradle module // todo: remove with legacy in 6 diff --git a/netcdf4/src/main/java/ucar/nc2/jni/netcdf/Nc4Iosp.java b/netcdf4/src/main/java/ucar/nc2/jni/netcdf/Nc4Iosp.java index af411373e0..2bcb679edd 100755 --- a/netcdf4/src/main/java/ucar/nc2/jni/netcdf/Nc4Iosp.java +++ b/netcdf4/src/main/java/ucar/nc2/jni/netcdf/Nc4Iosp.java @@ -23,6 +23,7 @@ import ucar.nc2.iosp.hdf4.HdfEos; import ucar.nc2.iosp.hdf5.H5header; import ucar.nc2.ffi.netcdf.NetcdfClibrary; +import ucar.nc2.iosp.netcdf4.Nc4; import ucar.nc2.util.CancelTask; import ucar.nc2.util.DebugFlags; import ucar.nc2.util.EscapeStrings; @@ -60,12 +61,6 @@ public class Nc4Iosp extends AbstractIOServiceProvider implements IOServiceProvi private static Nc4prototypes nc4 = NetcdfClibrary.getForeignFunctionInterface(); - // Define reserved attributes (see Nc4DSP) - public static final String UCARTAGOPAQUE = "_edu.ucar.opaque.size"; - // Not yet implemented - public static final String UCARTAGVLEN = "_edu.ucar.isvlen"; - public static final String UCARTAGORIGTYPE = "_edu.ucar.orig.type"; - // TODO: These flags currently control debug messages that are printed to STDOUT. They ought to be logged to SLF4J. // We could use SLF4J markers to filter which debug-level messages are printed. // See http://stackoverflow.com/questions/12201112/can-i-add-custom-levels-to-slf4j @@ -1072,7 +1067,7 @@ private Variable makeVariable(Group g, Structure parent, String vname, int typei } if (dtype.isEnum()) { - EnumTypedef enumTypedef = g.findEnumeration(utype.name); + EnumTypedef enumTypedef = g.findEnumeration(utype.name, true); v.setEnumTypedef(enumTypedef); } else if (dtype == DataType.OPAQUE) { // TODO whats the problem with knowing the size?? Needed to read properly?? diff --git a/netcdf4/src/test/groovy/ucar/nc2/jni/netcdf/Nc4IospSpec.groovy b/netcdf4/src/test/groovy/ucar/nc2/jni/netcdf/Nc4IospSpec.groovy deleted file mode 100644 index 66a4398783..0000000000 --- a/netcdf4/src/test/groovy/ucar/nc2/jni/netcdf/Nc4IospSpec.groovy +++ /dev/null @@ -1,46 +0,0 @@ -package ucar.nc2.jni.netcdf - -import org.junit.Assume -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import spock.lang.Specification -import ucar.nc2.Attribute - -/** - * Test various aspects of Nc4Iosp. - * - * @author cwardgar - * @since 2016-12-27 - */ -class Nc4IospSpec extends Specification { - private static final Logger logger = LoggerFactory.getLogger(Nc4IospSpec) - - def setup() { - // Ignore this class's tests if NetCDF-4 isn't present. - // We're using setup() because it shows these tests as being ignored. - // setupSpec() shows them as *non-existent*, which is not what we want. - Assume.assumeTrue("NetCDF-4 C library not present.", Nc4Iosp.isClibraryPresent()); - } - - def "flush in define mode, with C lib loaded"() { - setup: - Nc4Iosp nc4Iosp = new Nc4Iosp() - - when: "flush while still in define mode" - nc4Iosp.flush() - - then: "no IOException is thrown" - notThrown IOException // Would fail before the bug fix in this commit. - } - - def "updateAttribute in define mode, with C lib loaded"() { - setup: - Nc4Iosp nc4Iosp = new Nc4Iosp() - - when: "updateAttribute while still in define mode" - nc4Iosp.updateAttribute(null, new Attribute("foo", "bar")) - - then: "no IOException is thrown" - notThrown IOException // Would fail before the bug fix in this commit. - } -} diff --git a/netcdf4/src/test/java/ucar/nc2/jni/netcdf/TestCDF5Reading.java b/netcdf4/src/test/java/ucar/nc2/jni/netcdf/TestCDF5Reading.java index 34a105aabb..8f3b5afa97 100644 --- a/netcdf4/src/test/java/ucar/nc2/jni/netcdf/TestCDF5Reading.java +++ b/netcdf4/src/test/java/ucar/nc2/jni/netcdf/TestCDF5Reading.java @@ -64,12 +64,6 @@ public void testReadSubsection() throws IOException, InvalidRangeException { try (NetcdfFile jni = openJni(location)) { jni.setLocation(location + " (jni)"); Array data = read(jni, "f4", "0:2"); - if (prop_visual) { - String dump = Ncdump.printArray(data); - logger.debug(dump); - String testresult = dump.replace('r', ' ').replace('\n', ' ').trim(); - visual("CDF Read", testresult); - } Assert.assertTrue("***Fail: data mismatch", MAMath.nearlyEquals(data, BASELINE)); System.err.println("***Pass"); } diff --git a/netcdf4/src/test/java/ucar/nc2/jni/netcdf/TestNc4Iosp.java b/netcdf4/src/test/java/ucar/nc2/jni/netcdf/TestNc4Iosp.java new file mode 100644 index 0000000000..92ee0ecc70 --- /dev/null +++ b/netcdf4/src/test/java/ucar/nc2/jni/netcdf/TestNc4Iosp.java @@ -0,0 +1,28 @@ +package ucar.nc2.jni.netcdf; + +import org.junit.Assume; +import org.junit.Before; +import org.junit.Test; +import ucar.nc2.Attribute; +import java.io.IOException; +import ucar.nc2.ffi.netcdf.NetcdfClibrary; + +public class TestNc4Iosp { + + @Before + public void checkLibrary() { + Assume.assumeTrue("Netcdf-4 C library not present", NetcdfClibrary.isLibraryPresent()); + } + + @Test + public void flushInDefineMode() throws IOException { + Nc4Iosp nc4Iosp = new Nc4Iosp(); + nc4Iosp.flush(); + } + + @Test + public void updateAttribute() throws IOException { + Nc4Iosp nc4Iosp = new Nc4Iosp(); + nc4Iosp.updateAttribute(null, new Attribute("foo", "bar")); + } +} diff --git a/opendap/src/main/java/ucar/nc2/dods/DODSGrid.java b/opendap/src/main/java/ucar/nc2/dods/DODSGrid.java index 3c8ae96197..65f90d43ae 100644 --- a/opendap/src/main/java/ucar/nc2/dods/DODSGrid.java +++ b/opendap/src/main/java/ucar/nc2/dods/DODSGrid.java @@ -61,6 +61,8 @@ public class DODSGrid extends DODSVariable { } // for section, slice + /** @deprecated Use {@link #toBuilder()} */ + @Deprecated @Override protected Variable copy() { return new DODSGrid(this); diff --git a/opendap/src/main/java/ucar/nc2/dods/DODSStructure.java b/opendap/src/main/java/ucar/nc2/dods/DODSStructure.java index 292e0dfb8a..d6b3021762 100644 --- a/opendap/src/main/java/ucar/nc2/dods/DODSStructure.java +++ b/opendap/src/main/java/ucar/nc2/dods/DODSStructure.java @@ -71,6 +71,8 @@ private DODSStructure(DODSStructure from) { // boolean reparent) { } // for section and slice + /** @deprecated Use {@link #toBuilder()} */ + @Deprecated @Override protected DODSStructure copy() { return new DODSStructure(this); // dont need to reparent diff --git a/opendap/src/main/java/ucar/nc2/dods/DODSVariable.java b/opendap/src/main/java/ucar/nc2/dods/DODSVariable.java index df98c4f5c1..1263f22370 100644 --- a/opendap/src/main/java/ucar/nc2/dods/DODSVariable.java +++ b/opendap/src/main/java/ucar/nc2/dods/DODSVariable.java @@ -95,6 +95,8 @@ public class DODSVariable extends ucar.nc2.Variable implements DODSNode { } // for section, slice + /** @deprecated Use {@link #toBuilder()} */ + @Deprecated @Override protected Variable copy() { return new DODSVariable(this); diff --git a/opendap/src/test/data/baseline1/fix b/opendap/src/test/data/baseline1/fix deleted file mode 100644 index 8789443319..0000000000 --- a/opendap/src/test/data/baseline1/fix +++ /dev/null @@ -1,84 +0,0 @@ -F="123.nc.das \ -123bears.nc.das \ -1990-S1700101.HDF.WVC_Lat.das \ -1998-6-avhrr.dat.das \ -D1.das \ -Drifters.das \ -EOSDB.das \ -NestedSeq.das \ -NestedSeq2.das \ -OverideExample.das \ -SimpleDrdsExample.das \ -b31.das \ -b31a.das \ -bears.nc.das \ -ber-2002-10-01.nc.das \ -ce.NAM_CONUS_12km_20100628_1200.grib2.01.das \ -ceopL2AIRS2-2.nc.das \ -ceopL2AIRS2.nc.das \ -ingrid.das \ -nestedDAS.das \ -pbug0001b.das \ -synth1.das \ -synth3.das \ -synth4.das \ -synth5.das \ -test.01.das \ -test.02.das \ -test.03.das \ -test.04.das \ -test.05.das \ -test.06.das \ -test.06a.das \ -test.07.das \ -test.07a.das \ -test.21.das \ -test.22.das \ -test.23.das \ -test.31.das \ -test.32.das \ -test.50.das \ -test.53.das \ -test.55.das \ -test.56.das \ -test.57.das \ -test.66.das \ -test.67.das \ -test.68.das \ -test.69.das \ -test.PointFile.das \ -test.SwathFile.das \ -test.an1.das \ -test.dfp1.das \ -test.dfr1.das \ -test.dfr2.das \ -test.dfr3.das \ -test.gr1.das \ -test.gr2.das \ -test.gr3.das \ -test.gr4.das \ -test.gr5.das \ -test.sds1.das \ -test.sds2.das \ -test.sds3.das \ -test.sds4.das \ -test.sds5.das \ -test.sds6.das \ -test.sds7.das \ -test.vs1.das \ -test.vs2.das \ -test.vs3.das \ -test.vs4.das \ -test.vs5.das \ -test1.das \ -test2.das \ -test3.das \ -whoi.das" - -for f in $F ; do - rm -f ./$f - sed -e 's/\\\\/\\/g' ./$f -done -exit - - diff --git a/opendap/src/test/data/testdata1/fix b/opendap/src/test/data/testdata1/fix deleted file mode 100755 index 8789443319..0000000000 --- a/opendap/src/test/data/testdata1/fix +++ /dev/null @@ -1,84 +0,0 @@ -F="123.nc.das \ -123bears.nc.das \ -1990-S1700101.HDF.WVC_Lat.das \ -1998-6-avhrr.dat.das \ -D1.das \ -Drifters.das \ -EOSDB.das \ -NestedSeq.das \ -NestedSeq2.das \ -OverideExample.das \ -SimpleDrdsExample.das \ -b31.das \ -b31a.das \ -bears.nc.das \ -ber-2002-10-01.nc.das \ -ce.NAM_CONUS_12km_20100628_1200.grib2.01.das \ -ceopL2AIRS2-2.nc.das \ -ceopL2AIRS2.nc.das \ -ingrid.das \ -nestedDAS.das \ -pbug0001b.das \ -synth1.das \ -synth3.das \ -synth4.das \ -synth5.das \ -test.01.das \ -test.02.das \ -test.03.das \ -test.04.das \ -test.05.das \ -test.06.das \ -test.06a.das \ -test.07.das \ -test.07a.das \ -test.21.das \ -test.22.das \ -test.23.das \ -test.31.das \ -test.32.das \ -test.50.das \ -test.53.das \ -test.55.das \ -test.56.das \ -test.57.das \ -test.66.das \ -test.67.das \ -test.68.das \ -test.69.das \ -test.PointFile.das \ -test.SwathFile.das \ -test.an1.das \ -test.dfp1.das \ -test.dfr1.das \ -test.dfr2.das \ -test.dfr3.das \ -test.gr1.das \ -test.gr2.das \ -test.gr3.das \ -test.gr4.das \ -test.gr5.das \ -test.sds1.das \ -test.sds2.das \ -test.sds3.das \ -test.sds4.das \ -test.sds5.das \ -test.sds6.das \ -test.sds7.das \ -test.vs1.das \ -test.vs2.das \ -test.vs3.das \ -test.vs4.das \ -test.vs5.das \ -test1.das \ -test2.das \ -test3.das \ -whoi.das" - -for f in $F ; do - rm -f ./$f - sed -e 's/\\\\/\\/g' ./$f -done -exit - - diff --git a/opendap/src/test/java/opendap/test/TestDapParser.java b/opendap/src/test/java/opendap/test/TestDapParser.java index 82813b4d89..9ff5305466 100644 --- a/opendap/src/test/java/opendap/test/TestDapParser.java +++ b/opendap/src/test/java/opendap/test/TestDapParser.java @@ -30,13 +30,13 @@ public class TestDapParser extends TestFiles { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - static protected boolean VISUAL = false; + protected static boolean VISUAL = false; - static protected final int ISUNKNOWN = 0; - static protected final int ISDAS = 1; - static protected final int ISDDS = 2; - static protected final int ISDDX = 3; - static protected final int ISERR = 4; + protected static final int ISUNKNOWN = 0; + protected static final int ISDAS = 1; + protected static final int ISDDS = 2; + protected static final int ISDDX = 3; + protected static final int ISERR = 4; protected boolean isddx = false; diff --git a/opendap/src/test/java/opendap/test/TestDuplicates.java b/opendap/src/test/java/opendap/test/TestDuplicates.java index 2913a38db7..506f8d61ac 100644 --- a/opendap/src/test/java/opendap/test/TestDuplicates.java +++ b/opendap/src/test/java/opendap/test/TestDuplicates.java @@ -57,7 +57,7 @@ public TestDuplicates() { } // Collect results locally - static public class Result { + public static class Result { String title; String url; String cdl; diff --git a/opendap/src/test/java/opendap/test/TestMisc.java b/opendap/src/test/java/opendap/test/TestMisc.java index 178e2d5635..8f307e8305 100644 --- a/opendap/src/test/java/opendap/test/TestMisc.java +++ b/opendap/src/test/java/opendap/test/TestMisc.java @@ -50,7 +50,7 @@ public class TestMisc extends UnitTestCommon { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); // Collect testcases locally - static public class Testcase { + public static class Testcase { String title; String url; String cdl; diff --git a/opendap/src/test/java/opendap/test/TestSources.java b/opendap/src/test/java/opendap/test/TestSources.java index b973f78a70..ca7f408639 100644 --- a/opendap/src/test/java/opendap/test/TestSources.java +++ b/opendap/src/test/java/opendap/test/TestSources.java @@ -16,7 +16,7 @@ public class TestSources extends TestFiles { // Remote test info /* Use this for experimenting with new URLS */ - static public final String XURL1 = "http://" + TestDir.dap2TestServer + "/dts"; + public static final String XURL1 = "http://" + TestDir.dap2TestServer + "/dts"; // "http://testremote.unidata.ucar.edu/thredds/dodsC/fmrc/NCEP/NAM/CONUS_12km/files"; static final String[] X1 = {"test.01;1;f64"}; diff --git a/opendap/src/test/java/ucar/nc2/dods/TestSequence.java b/opendap/src/test/java/ucar/nc2/dods/TestSequence.java index d29b9560a9..d1c597d882 100644 --- a/opendap/src/test/java/ucar/nc2/dods/TestSequence.java +++ b/opendap/src/test/java/ucar/nc2/dods/TestSequence.java @@ -26,12 +26,15 @@ public TestSequence(String name) { static String baseline = ""; public void testSequence() { - String url = "http://tsds.net/tsds/test/Scalar"; + // The old url: "http://tsds.net/tsds/test/Scalar" is no longer valid. + // So replaced with an equivalent. + // Also had to replace the struct "TimeSeries" and the field "time" + String url = "https://remotetest.unidata.ucar.edu/dts/whoi"; try { NetcdfDataset ds = NetcdfDatasets.openDataset(url); System.out.println(ds); - Structure struct = (Structure) ds.findVariable("TimeSeries"); - Variable var = struct.findVariable("time"); + Structure struct = (Structure) ds.findVariable("emolt_sensor"); + Variable var = struct.findVariable("TEMP"); Array arr = var.read(); int n = (int) arr.getSize(); int i; diff --git a/opendap/src/test/java/ucar/nc2/dods/TestUserProblems.java b/opendap/src/test/java/ucar/nc2/dods/TestUserProblems.java index 69722e1f9d..1ed2204e0c 100644 --- a/opendap/src/test/java/ucar/nc2/dods/TestUserProblems.java +++ b/opendap/src/test/java/ucar/nc2/dods/TestUserProblems.java @@ -6,8 +6,10 @@ import static com.google.common.truth.Truth.assertThat; +import org.junit.After; import org.junit.Ignore; import org.junit.Test; +import org.junit.experimental.categories.Category; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ucar.ma2.Array; @@ -21,6 +23,7 @@ import java.io.IOException; import java.lang.invoke.MethodHandles; import java.util.List; +import ucar.unidata.util.test.category.NeedsExternalResource; /** * Test nc2 dods in the JUnit framework. @@ -36,6 +39,12 @@ public class TestUserProblems { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + @After + public void resetSystemProperty() { + System.setProperty("httpservices.urlencode", "true"); + } + + @Category(NeedsExternalResource.class) @Test public void testGrid() throws IOException, InvalidRangeException { System.setProperty("httpservices.urlencode", "false"); @@ -57,12 +66,12 @@ public void testGrid() throws IOException, InvalidRangeException { Array data = dataV.read("0, 0:72:1, 0:143:1"); assertThat(data).isNotNull(); } - System.setProperty("httpservices.urlencode", "true"); } // ucar.nc2.dods.TestUserProblems > testNomads STANDARD_ERROR // opendap.dap.DAP2Exception: Method failed:HTTP/1.1 403 Forbidden on URL= // http://nomads.ncdc.noaa.gov/thredds/dodsC/cfsr1hr/200912/tmp2m.gdas.200912.grb2.dods?Temperature[0:1:744][0:1:0][0:1:575][0:1:1151] + @Category(NeedsExternalResource.class) @Ignore @Test public void testNomads() throws InvalidRangeException { @@ -97,12 +106,10 @@ public void testNomads() throws InvalidRangeException { ArrayFloat.D4 Temperature = (ArrayFloat.D4) V2.read(origin, shape).reduce(); } catch (IOException ioe) { - System.setProperty("httpservices.urlencode", "true"); System.out.println("trying to open " + testfile + " " + ioe); // getting 403 on 2 GB request assert true; } - System.setProperty("httpservices.urlencode", "true"); System.out.println("---- End of File ----"); } } diff --git a/project-files/downloads/release_info.json b/project-files/downloads/release_info.json new file mode 100644 index 0000000000..7e04b9049d --- /dev/null +++ b/project-files/downloads/release_info.json @@ -0,0 +1,68 @@ +{ + "package": "netcdf-java", + "packageName": "netCDF-Java", + "releases": [ + { + "version": "5.5.3", + "releaseDate": "2022-06-30", + "status": "current", + "description": "", + "baseURL": "https://artifacts.unidata.ucar.edu/repository/downloads-netcdf-java/5.5.3/", + "resources": { + "netcdfAll": { + "type" : "library", + "package": "netcdfAll-5.5.3.jar", + "name": "Jar file", + "hash": { + "MD5": "netcdfAll-5.5.3.jar.md5", + "SHA1": "netcdfAll-5.5.3.jar.sha1", + "SHA256": "netcdfAll-5.5.3.jar.sha256" + }, + "info": "The netCDF library implements the full CDM model, including all other jar dependencies." + }, + "toolsUI": { + "type": "library", + "package": "toolsUI-5.5.3.jar", + "name": "Jar file", + "hash": { + "MD5": "toolsUI-5.5.3.jar.md5", + "SHA1": "toolsUI-5.5.3.jar.sha1", + "SHA256": "toolsUI-5.5.3.jar.sha256" + }, + "info": "The toolsUI.jar contains everything to run the ToolsUI application directly from it. " + } + } + }, + { + "version": "5.5.4", + "releaseDate": "2022-05-15", + "status": "beta", + "description": "This version contains several bug fixes compared to version 5.5.3.", + "baseURL": "https://artifacts.unidata.ucar.edu/repository/downloads-netcdf-java/5.5.4/", + "resources": { + "netcdfAll": { + "type" : "library", + "package": "netcdfAll-5.5.4-SNAPSHOT.jar", + "name": "Jar file", + "hash": { + "MD5": "netcdfAll-5.5.4-SNAPSHOT.jar.md5", + "SHA1": "netcdfAll-5.5.4-SNAPSHOT.jar.sha1", + "SHA256": "netcdfAll-5.5.4-SNAPSHOT.jar.sha256" + }, + "info": "The netCDF library implements the full CDM model, including all other jar dependencies." + }, + "toolsUI": { + "type": "library", + "package": "toolsUI-5.5.4-SNAPSHOT.jar", + "name": "Jar file", + "hash": { + "MD5": "toolsUI-5.5.4-SNAPSHOT.jar.md5", + "SHA1": "toolsUI-5.5.4-SNAPSHOT.jar.sha1", + "SHA256": "toolsUI-5.5.4-SNAPSHOT.jar.sha256" + }, + "info": "The toolsUI.jar contains everything to run the ToolsUI application directly from it. " + } + } + } + ] +} diff --git a/project-files/owasp-dependency-check/dependency-check-suppression.xml b/project-files/owasp-dependency-check/dependency-check-suppression.xml index e5fe1b31f9..8c7e9e4860 100644 --- a/project-files/owasp-dependency-check/dependency-check-suppression.xml +++ b/project-files/owasp-dependency-check/dependency-check-suppression.xml @@ -20,42 +20,16 @@ - d539c36ab347d5df35659b174d28b94e6d2536ed - CVE-2019-11358 + CVE-2021-4277 - d539c36ab347d5df35659b174d28b94e6d2536ed - CVE-2012-6708 - - - - d539c36ab347d5df35659b174d28b94e6d2536ed - CVE-2015-9251 - - - - d539c36ab347d5df35659b174d28b94e6d2536ed - CVE-2020-11022 - - - - d539c36ab347d5df35659b174d28b94e6d2536ed - CVE-2020-11023 + CVE-2023-35116 diff --git a/settings.gradle b/settings.gradle index ab30ed709e..cb743f2a77 100644 --- a/settings.gradle +++ b/settings.gradle @@ -4,6 +4,7 @@ rootProject.name = 'netcdf-java' // These all refer to subdirectory names. include 'bufr' include 'cdm:core' +include 'cdm:gcdm' include 'cdm:image' include 'cdm:misc' include 'cdm:radial' @@ -11,10 +12,6 @@ include 'cdm:s3' include 'cdm:zarr' include 'cdm-test' include 'cdm-test-utils' -include 'dap4:d4core' -include 'dap4:d4lib' -include 'dap4:d4cdm' -include 'dap4:d4tests' include 'docs' include 'grib' include 'httpservices' @@ -24,6 +21,7 @@ include 'netcdf-java-bom' include 'netcdf-java-platform' include 'netcdf-java-testing-platform' include 'opendap' +include 'dap4' include 'udunits' include 'uibase' include 'uicdm' @@ -33,6 +31,7 @@ include 'waterml' // Set name of cdm submodules project(':cdm:core').name = 'cdm-core' +project(':cdm:gcdm').name = 'cdm-gcdm' project(':cdm:image').name = 'cdm-image' project(':cdm:radial').name = 'cdm-radial' project(':cdm:misc').name = 'cdm-misc' diff --git a/third-party-licenses/NOAA_LICENSE b/third-party-licenses/NOAA_LICENSE new file mode 100644 index 0000000000..5bdf41b634 --- /dev/null +++ b/third-party-licenses/NOAA_LICENSE @@ -0,0 +1,8 @@ +ERDDAP, Copyright 2016, NOAA. + +PERMISSION TO USE, COPY, MODIFY, AND DISTRIBUTE THIS SOFTWARE AND ITS DOCUMENTATION FOR ANY +PURPOSE AND WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE COPYRIGHT NOTICE +APPEAR IN ALL COPIES, THAT BOTH THE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN +SUPPORTING DOCUMENTATION, AND THAT REDISTRIBUTIONS OF MODIFIED FORMS OF THE SOURCE OR +BINARY CODE CARRY PROMINENT NOTICES STATING THAT THE ORIGINAL CODE WAS CHANGED AND THE +DATE OF THE CHANGE. THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. diff --git a/third-party-licenses/edal/LICENSE b/third-party-licenses/edal/LICENSE new file mode 100644 index 0000000000..594d2b0db3 --- /dev/null +++ b/third-party-licenses/edal/LICENSE @@ -0,0 +1,26 @@ + +Copyright (c) 2010 The University of Reading +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +3. Neither the name of the University of Reading, nor the names of the +authors or contributors may be used to endorse or promote products +derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/third-party-licenses/erddap/COHORT_LICENSE b/third-party-licenses/erddap/COHORT_LICENSE new file mode 100644 index 0000000000..cef41084be --- /dev/null +++ b/third-party-licenses/erddap/COHORT_LICENSE @@ -0,0 +1,23 @@ +All of the computer files distributed as part of the EMA project (notably, +the files in the com.cohort.array, com.cohort.util and com.cohort.ema +packages) are Copyright (c) 2005 Robert Alten Simons (info@cohort.com). + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +(This is license is like the MIT/X License.) diff --git a/third-party-licenses/gretty/LICENSE b/third-party-licenses/gretty/LICENSE new file mode 100644 index 0000000000..e712fcdcb2 --- /dev/null +++ b/third-party-licenses/gretty/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2013-2016 Timur Shakurov, Andrey Hihlovskiy and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/third-party-licenses/junit/LICENSE b/third-party-licenses/junit/LICENSE new file mode 100644 index 0000000000..fb686291a0 --- /dev/null +++ b/third-party-licenses/junit/LICENSE @@ -0,0 +1,214 @@ +JUnit + +Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC +LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM +CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + + a) in the case of the initial Contributor, the initial code and + documentation distributed under this Agreement, and + b) in the case of each subsequent Contributor: + + i) changes to the Program, and + + ii) additions to the Program; + + where such changes and/or additions to the Program originate from and are +distributed by that particular Contributor. A Contribution 'originates' from a +Contributor if it was added to the Program by such Contributor itself or anyone +acting on such Contributor's behalf. Contributions do not include additions to +the Program which: (i) are separate modules of software distributed in +conjunction with the Program under their own license agreement, and (ii) are +not derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are +necessarily infringed by the use or sale of its Contribution alone or when +combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby grants +Recipient a non-exclusive, worldwide, royalty-free copyright license to +reproduce, prepare derivative works of, publicly display, publicly perform, +distribute and sublicense the Contribution of such Contributor, if any, and +such derivative works, in source code and object code form. + + b) Subject to the terms of this Agreement, each Contributor hereby grants +Recipient a non-exclusive, worldwide, royalty-free patent license under +Licensed Patents to make, use, sell, offer to sell, import and otherwise +transfer the Contribution of such Contributor, if any, in source code and +object code form. This patent license shall apply to the combination of the +Contribution and the Program if, at the time the Contribution is added by the +Contributor, such addition of the Contribution causes such combination to be +covered by the Licensed Patents. The patent license shall not apply to any +other combinations which include the Contribution. No hardware per se is +licensed hereunder. + + c) Recipient understands that although each Contributor grants the +licenses to its Contributions set forth herein, no assurances are provided by +any Contributor that the Program does not infringe the patent or other +intellectual property rights of any other entity. Each Contributor disclaims +any liability to Recipient for claims brought by any other entity based on +infringement of intellectual property rights or otherwise. As a condition to +exercising the rights and licenses granted hereunder, each Recipient hereby +assumes sole responsibility to secure any other intellectual property rights +needed, if any. For example, if a third party patent license is required to +allow Recipient to distribute the Program, it is Recipient's responsibility to +acquire that license before distributing the Program. + + d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright license +set forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under +its own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + + b) its license agreement: + + i) effectively disclaims on behalf of all Contributors all warranties and +conditions, express and implied, including warranties or conditions of title +and non-infringement, and implied warranties or conditions of merchantability +and fitness for a particular purpose; + + ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and consequential +damages, such as lost profits; + + iii) states that any provisions which differ from this Agreement are +offered by that Contributor alone and not by any other party; and + + iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable manner on +or through a medium customarily used for software exchange. + +When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + + b) a copy of this Agreement must be included with each copy of the +Program. + +Contributors may not remove or alter any copyright notices contained within the +Program. + +Each Contributor must identify itself as the originator of its Contribution, if +any, in a manner that reasonably allows subsequent Recipients to identify the +originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with +respect to end users, business partners and the like. While this license is +intended to facilitate the commercial use of the Program, the Contributor who +includes the Program in a commercial product offering should do so in a manner +which does not create potential liability for other Contributors. Therefore, if +a Contributor includes the Program in a commercial product offering, such +Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, damages +and costs (collectively "Losses") arising from claims, lawsuits and other legal +actions brought by a third party against the Indemnified Contributor to the +extent caused by the acts or omissions of such Commercial Contributor in +connection with its distribution of the Program in a commercial product +offering. The obligations in this section do not apply to any claims or Losses +relating to any actual or alleged intellectual property infringement. In order +to qualify, an Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial Contributor +to control, and cooperate with the Commercial Contributor in, the defense and +any related settlement negotiations. The Indemnified Contributor may +participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product +offering, Product X. That Contributor is then a Commercial Contributor. If that +Commercial Contributor then makes performance claims, or offers warranties +related to Product X, those performance claims and warranties are such +Commercial Contributor's responsibility alone. Under this section, the +Commercial Contributor would have to defend claims against the other +Contributors related to those performance claims and warranties, and if a court +requires any other Contributor to pay any damages as a result, the Commercial +Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each +Recipient is solely responsible for determining the appropriateness of using +and distributing the Program and assumes all risks associated with its exercise +of rights under this Agreement, including but not limited to the risks and +costs of program errors, compliance with applicable laws, damage to or loss of +data, programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY +CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY +WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS +GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable +law, it shall not affect the validity or enforceability of the remainder of the +terms of this Agreement, and without further action by the parties hereto, such +provision shall be reformed to the minimum extent necessary to make such +provision valid and enforceable. + +If Recipient institutes patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other software or +hardware) infringes such Recipient's patent(s), then such Recipient's rights +granted under Section 2(b) shall terminate as of the date such litigation is +filed. + +All Recipient's rights under this Agreement shall terminate if it fails to +comply with any of the material terms or conditions of this Agreement and does +not cure such failure in a reasonable period of time after becoming aware of +such noncompliance. If all Recipient's rights under this Agreement terminate, +Recipient agrees to cease use and distribution of the Program as soon as +reasonably practicable. However, Recipient's obligations under this Agreement +and any licenses granted by Recipient relating to the Program shall continue +and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in +order to avoid inconsistency the Agreement is copyrighted and may only be +modified in the following manner. The Agreement Steward reserves the right to +publish new versions (including revisions) of this Agreement from time to time. +No one other than the Agreement Steward has the right to modify this Agreement. +The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to +serve as the Agreement Steward to a suitable separate entity. Each new version +of the Agreement will be given a distinguishing version number. The Program +(including Contributions) may always be distributed subject to the version of +the Agreement under which it was received. In addition, after a new version of +the Agreement is published, Contributor may elect to distribute the Program +(including its Contributions) under the new version. Except as expressly stated +in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to +the intellectual property of any Contributor under this Agreement, whether +expressly, by implication, estoppel or otherwise. All rights in the Program not +expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to this +Agreement will bring a legal action under this Agreement more than one year +after the cause of action arose. Each party waives its rights to a jury trial +in any resulting litigation. + diff --git a/uicdm/build.gradle b/uicdm/build.gradle index cfe13a028a..d8480ec89f 100644 --- a/uicdm/build.gradle +++ b/uicdm/build.gradle @@ -18,11 +18,11 @@ dependencies { compile project(':cdm:cdm-misc') // misc iosps compile project(':cdm:cdm-radial') // radial data compile project(':bufr') - compile project(':dap4:d4cdm') compile project(':grib') compile project(':httpservices') compile project(':netcdf4') compile project(':opendap') + compile project(':dap4') compile project(':uibase') compile project(':visad:cdm-mcidas') // For Gempak IOSPs. compile project(':waterml') diff --git a/uicdm/src/main/java/ucar/nc2/ui/ToolsUI.java b/uicdm/src/main/java/ucar/nc2/ui/ToolsUI.java index d93ad97829..aacde4acc0 100644 --- a/uicdm/src/main/java/ucar/nc2/ui/ToolsUI.java +++ b/uicdm/src/main/java/ucar/nc2/ui/ToolsUI.java @@ -1458,7 +1458,6 @@ public static void main(String[] args) { for (String arg : args) { System.out.println(" " + arg); } - HTTPSession.setInterceptors(true); } // handle multiple versions of ToolsUI, along with passing a dataset name @@ -1505,7 +1504,6 @@ public void setMessage(SocketMessage.Event event) { for (String arg : args) { System.out.println(" " + arg); } - HTTPSession.setInterceptors(true); } // look for command-line arguments diff --git a/uicdm/src/main/java/ucar/nc2/ui/op/DatasetWriter.java b/uicdm/src/main/java/ucar/nc2/ui/op/DatasetWriter.java index 7e0d1fb35f..e9ff2c4eac 100644 --- a/uicdm/src/main/java/ucar/nc2/ui/op/DatasetWriter.java +++ b/uicdm/src/main/java/ucar/nc2/ui/op/DatasetWriter.java @@ -217,7 +217,7 @@ void writeFile(NetcdfOutputChooser.Data data) { return; } - if (data.format.isNetdf4format()) { + if (data.format.isNetcdf4Format()) { if (!NetcdfClibrary.isLibraryPresent()) { JOptionPane.showMessageDialog(this, "NetCDF-4 C library is not loaded"); return; diff --git a/visad/mcidas/src/main/java/ucar/nc2/iosp/gempak/GempakFileReader.java b/visad/mcidas/src/main/java/ucar/nc2/iosp/gempak/GempakFileReader.java index c66f711436..7a28a2db63 100644 --- a/visad/mcidas/src/main/java/ucar/nc2/iosp/gempak/GempakFileReader.java +++ b/visad/mcidas/src/main/java/ucar/nc2/iosp/gempak/GempakFileReader.java @@ -25,6 +25,18 @@ public class GempakFileReader implements GempakConstants { */ protected RandomAccessFile rf; + /** + * Close any resources like file handles + * + * @throws IOException problem reading file + */ + void close() throws IOException { + if (rf != null) { + rf.close(); + rf = null; + } + } + /** * An error message */ diff --git a/visad/mcidas/src/main/java/ucar/nc2/iosp/gempak/GempakStationFileIOSP.java b/visad/mcidas/src/main/java/ucar/nc2/iosp/gempak/GempakStationFileIOSP.java index 0f23284715..1deacee754 100644 --- a/visad/mcidas/src/main/java/ucar/nc2/iosp/gempak/GempakStationFileIOSP.java +++ b/visad/mcidas/src/main/java/ucar/nc2/iosp/gempak/GempakStationFileIOSP.java @@ -132,6 +132,39 @@ public void open(RandomAccessFile raf, NetcdfFile ncfile, CancelTask cancelTask) buildNCFile(); } + /** + * Close any resources like file handles + * + * @throws IOException problem reading file + */ + @Override + public void close() throws IOException { + super.close(); + gemreader.close(); + } + + /** + * Release any resources like file handles + * + * @throws IOException problem reading file + */ + @Override + public void release() throws IOException { + super.release(); + gemreader.close(); + } + + /** + * Reacquire any resources like file handles + * + * @throws IOException problem reading file + */ + @Override + public void reacquire() throws IOException { + super.reacquire(); + gemreader.init(raf, false); + } + /** * Initialize the parameter tables. */ diff --git a/visad/mcidas/src/test/java/ucar/nc2/iosp/gempak/TestGempakFileReader.java b/visad/mcidas/src/test/java/ucar/nc2/iosp/gempak/TestGempakFileReader.java new file mode 100644 index 0000000000..05e9479e81 --- /dev/null +++ b/visad/mcidas/src/test/java/ucar/nc2/iosp/gempak/TestGempakFileReader.java @@ -0,0 +1,48 @@ +package ucar.nc2.iosp.gempak; + +import static com.google.common.truth.Truth.assertThat; + +import java.io.File; +import java.io.IOException; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; +import ucar.nc2.NetcdfFile; +import ucar.unidata.io.RandomAccessFile; + +public class TestGempakFileReader { + + @ClassRule + public static final TemporaryFolder tempFolder = new TemporaryFolder(); + GempakStationFileIOSP gempakStationFileIOSP; + + @Before + public void createGempakIosp() throws IOException { + final File tempFile = tempFolder.newFile(); + final RandomAccessFile randomAccessFile = new RandomAccessFile(tempFile.getAbsolutePath(), "r"); + + gempakStationFileIOSP = new GempakSurfaceIOSP(); + // This also initializes a GempakFileReader which stores this RandomAccessFile + gempakStationFileIOSP.open(randomAccessFile, NetcdfFile.builder().build(), null); + assertThat(gempakStationFileIOSP.gemreader.rf).isNotNull(); + } + + @Test + public void shouldCloseResources() throws IOException { + gempakStationFileIOSP.close(); + assertThat(gempakStationFileIOSP.gemreader.rf).isNull(); + } + + @Test + public void shouldReleaseResources() throws IOException { + gempakStationFileIOSP.release(); + assertThat(gempakStationFileIOSP.gemreader.rf).isNull(); + } + + @Test + public void shouldReacquireResources() throws IOException { + gempakStationFileIOSP.reacquire(); + assertThat(gempakStationFileIOSP.gemreader.rf).isNotNull(); + } +} diff --git a/waterml/README.md b/waterml/README.md index 9ad3a69029..2967f4c69a 100644 --- a/waterml/README.md +++ b/waterml/README.md @@ -6,7 +6,7 @@ Converts [CDM DSGs](https://www.unidata.ucar.edu/software/thredds/current/netcdf ## Inclusion of third-party software This project contains source code from [ERDDAP](https://coastwatch.pfeg.noaa.gov/erddap/index.html). -The license for ERDDAP is available in `docs/src/private/licenses/third-party/errdap/`. +The license for ERDDAP is available in `third-party-licenses/erddap/`. ### Details of use: