ECC-1053: Add key to get forecast step in human-readable format

This commit is contained in:
Shahram Najm 2020-04-22 12:36:02 +01:00
commit 2d7d8d1240
12 changed files with 1305 additions and 1062 deletions

View File

@ -210,6 +210,7 @@ _if (stepType is "instant" ) {
meta stepRange g1step_range(P1,P2,timeRangeIndicator,unitOfTimeRange,stepUnits,stepType) : dump; meta stepRange g1step_range(P1,P2,timeRangeIndicator,unitOfTimeRange,stepUnits,stepType) : dump;
meta startStep long_vector(stepRange,0) : dump,no_copy; meta startStep long_vector(stepRange,0) : dump,no_copy;
meta endStep long_vector(stepRange,1) : dump,no_copy; meta endStep long_vector(stepRange,1) : dump,no_copy;
meta stepHuman step_human_readable(stepUnits, stepRange): hidden,no_copy;
alias stepInHours = endStep; alias stepInHours = endStep;
alias ls.stepRange = stepRange; alias ls.stepRange = stepRange;

View File

@ -16,6 +16,7 @@ alias ls.stepRange=stepRange;
concept stepTypeInternal { concept stepTypeInternal {
"instant" = {dummy=1;} "instant" = {dummy=1;}
} }
meta stepHuman step_human_readable(stepUnits, stepRange): hidden,no_copy;
alias time.stepType=stepType; alias time.stepType=stepType;
alias time.stepRange=stepRange; alias time.stepRange=stepRange;

View File

@ -96,6 +96,7 @@ list( APPEND grib_api_srcs
grib_accessor_class_codetable.c grib_accessor_class_codetable.c
grib_accessor_class_codetable_units.c grib_accessor_class_codetable_units.c
grib_accessor_class_codetable_title.c grib_accessor_class_codetable_title.c
grib_accessor_class_step_human_readable.c
grib_accessor_class_count_file.c grib_accessor_class_count_file.c
grib_accessor_class_count_total.c grib_accessor_class_count_total.c
grib_accessor_class_double.c grib_accessor_class_double.c

View File

@ -196,6 +196,7 @@ extern grib_accessor_class* grib_accessor_class_spectral_truncation;
extern grib_accessor_class* grib_accessor_class_sprintf; extern grib_accessor_class* grib_accessor_class_sprintf;
extern grib_accessor_class* grib_accessor_class_statistics; extern grib_accessor_class* grib_accessor_class_statistics;
extern grib_accessor_class* grib_accessor_class_statistics_spectral; extern grib_accessor_class* grib_accessor_class_statistics_spectral;
extern grib_accessor_class* grib_accessor_class_step_human_readable;
extern grib_accessor_class* grib_accessor_class_step_in_units; extern grib_accessor_class* grib_accessor_class_step_in_units;
extern grib_accessor_class* grib_accessor_class_sum; extern grib_accessor_class* grib_accessor_class_sum;
extern grib_accessor_class* grib_accessor_class_suppressed; extern grib_accessor_class* grib_accessor_class_suppressed;

View File

@ -0,0 +1,199 @@
/*
* (C) Copyright 2005- ECMWF.
*
* This software is licensed under the terms of the Apache Licence Version 2.0
* which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
*
* In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
*/
#include "grib_api_internal.h"
/*
This is used by make_class.pl
START_CLASS_DEF
CLASS = accessor
SUPER = grib_accessor_class_gen
IMPLEMENTS = init;unpack_string; get_native_type
MEMBERS = const char* stepUnits
MEMBERS = const char* step
END_CLASS_DEF
*/
/* START_CLASS_IMP */
/*
Don't edit anything between START_CLASS_IMP and END_CLASS_IMP
Instead edit values between START_CLASS_DEF and END_CLASS_DEF
or edit "accessor.class" and rerun ./make_class.pl
*/
static int get_native_type(grib_accessor*);
static int unpack_string(grib_accessor*, char*, size_t* len);
static void init(grib_accessor*, const long, grib_arguments*);
static void init_class(grib_accessor_class*);
typedef struct grib_accessor_step_human_readable
{
grib_accessor att;
/* Members defined in gen */
/* Members defined in step_human_readable */
const char* stepUnits;
const char* step;
} grib_accessor_step_human_readable;
extern grib_accessor_class* grib_accessor_class_gen;
static grib_accessor_class _grib_accessor_class_step_human_readable = {
&grib_accessor_class_gen, /* super */
"step_human_readable", /* name */
sizeof(grib_accessor_step_human_readable), /* size */
0, /* inited */
&init_class, /* init_class */
&init, /* init */
0, /* post_init */
0, /* free mem */
0, /* describes himself */
0, /* get length of section */
0, /* get length of string */
0, /* get number of values */
0, /* get number of bytes */
0, /* get offset to bytes */
&get_native_type, /* get native type */
0, /* get sub_section */
0, /* grib_pack procedures long */
0, /* grib_pack procedures long */
0, /* grib_pack procedures long */
0, /* grib_unpack procedures long */
0, /* grib_pack procedures double */
0, /* grib_unpack procedures double */
0, /* grib_pack procedures string */
&unpack_string, /* grib_unpack procedures string */
0, /* grib_pack array procedures string */
0, /* grib_unpack array procedures string */
0, /* grib_pack procedures bytes */
0, /* grib_unpack procedures bytes */
0, /* pack_expression */
0, /* notify_change */
0, /* update_size */
0, /* preferred_size */
0, /* resize */
0, /* nearest_smaller_value */
0, /* next accessor */
0, /* compare vs. another accessor */
0, /* unpack only ith value */
0, /* unpack a subarray */
0, /* clear */
0, /* clone accessor */
};
grib_accessor_class* grib_accessor_class_step_human_readable = &_grib_accessor_class_step_human_readable;
static void init_class(grib_accessor_class* c)
{
c->dump = (*(c->super))->dump;
c->next_offset = (*(c->super))->next_offset;
c->string_length = (*(c->super))->string_length;
c->value_count = (*(c->super))->value_count;
c->byte_count = (*(c->super))->byte_count;
c->byte_offset = (*(c->super))->byte_offset;
c->sub_section = (*(c->super))->sub_section;
c->pack_missing = (*(c->super))->pack_missing;
c->is_missing = (*(c->super))->is_missing;
c->pack_long = (*(c->super))->pack_long;
c->unpack_long = (*(c->super))->unpack_long;
c->pack_double = (*(c->super))->pack_double;
c->unpack_double = (*(c->super))->unpack_double;
c->pack_string = (*(c->super))->pack_string;
c->pack_string_array = (*(c->super))->pack_string_array;
c->unpack_string_array = (*(c->super))->unpack_string_array;
c->pack_bytes = (*(c->super))->pack_bytes;
c->unpack_bytes = (*(c->super))->unpack_bytes;
c->pack_expression = (*(c->super))->pack_expression;
c->notify_change = (*(c->super))->notify_change;
c->update_size = (*(c->super))->update_size;
c->preferred_size = (*(c->super))->preferred_size;
c->resize = (*(c->super))->resize;
c->nearest_smaller_value = (*(c->super))->nearest_smaller_value;
c->next = (*(c->super))->next;
c->compare = (*(c->super))->compare;
c->unpack_double_element = (*(c->super))->unpack_double_element;
c->unpack_double_subarray = (*(c->super))->unpack_double_subarray;
c->clear = (*(c->super))->clear;
c->make_clone = (*(c->super))->make_clone;
}
/* END_CLASS_IMP */
static void init(grib_accessor* a, const long len, grib_arguments* params)
{
grib_accessor_step_human_readable* self = (grib_accessor_step_human_readable*)a;
int n = 0;
grib_handle* h = grib_handle_of_accessor(a);
self->stepUnits = grib_arguments_get_name(h, params, n++);
self->step = grib_arguments_get_name(h, params, n++);
a->length = 0;
a->flags |= GRIB_ACCESSOR_FLAG_READ_ONLY;
}
static int get_native_type(grib_accessor* a)
{
return GRIB_TYPE_STRING;
}
static int get_step_human_readable(grib_handle* h, char* result, size_t* length)
{
int err = 0;
size_t slen = 2;
long step, hour, minute, second;
/* Change units to seconds (highest resolution)
* before computing the step value
*/
err = grib_set_string(h, "stepUnits", "s", &slen);
if (err) return err;
err = grib_get_long(h, "step", &step);
if (err) return err;
hour = step/3600;
minute = step/60 % 60;
second = step % 60;
/* sprintf(result, "%ld:%ld:%ld", hour, minute, second); */
if (second) {
sprintf(result, "%ldh %ldm %lds", hour, minute, second);
} else {
if (minute) sprintf(result, "%ldh %ldm", hour, minute);
else sprintf(result, "%ldh", hour);
}
*length = strlen(result);
return GRIB_SUCCESS;
}
static int unpack_string(grib_accessor* a, char* buffer, size_t* len)
{
grib_accessor_step_human_readable* self = (grib_accessor_step_human_readable*)a;
grib_handle* h = grib_handle_of_accessor(a);
long stepUnits;
int err = 0;
/* Save the current value of stepUnits */
err = grib_get_long_internal(h, self->stepUnits, &stepUnits);
if (err) return err;
/* This will change stepUnits to seconds for its calculation */
err = get_step_human_readable(h, buffer, len);
/* Restore stepUnits */
grib_set_long(h, self->stepUnits, stepUnits);
return err;
}

File diff suppressed because it is too large Load Diff

View File

@ -195,6 +195,7 @@
{ "sprintf", &grib_accessor_class_sprintf, }, { "sprintf", &grib_accessor_class_sprintf, },
{ "statistics", &grib_accessor_class_statistics, }, { "statistics", &grib_accessor_class_statistics, },
{ "statistics_spectral", &grib_accessor_class_statistics_spectral, }, { "statistics_spectral", &grib_accessor_class_statistics_spectral, },
{ "step_human_readable", &grib_accessor_class_step_human_readable, },
{ "step_in_units", &grib_accessor_class_step_in_units, }, { "step_in_units", &grib_accessor_class_step_in_units, },
{ "sum", &grib_accessor_class_sum, }, { "sum", &grib_accessor_class_sum, },
{ "suppressed", &grib_accessor_class_suppressed, }, { "suppressed", &grib_accessor_class_suppressed, },

View File

@ -196,6 +196,7 @@ spectral_truncation, &grib_accessor_class_spectral_truncation
sprintf, &grib_accessor_class_sprintf sprintf, &grib_accessor_class_sprintf
statistics, &grib_accessor_class_statistics statistics, &grib_accessor_class_statistics
statistics_spectral, &grib_accessor_class_statistics_spectral statistics_spectral, &grib_accessor_class_statistics_spectral
step_human_readable, &grib_accessor_class_step_human_readable
step_in_units, &grib_accessor_class_step_in_units step_in_units, &grib_accessor_class_step_in_units
sum, &grib_accessor_class_sum sum, &grib_accessor_class_sum
suppressed, &grib_accessor_class_suppressed suppressed, &grib_accessor_class_suppressed

File diff suppressed because it is too large Load Diff

View File

@ -57,6 +57,7 @@ list(APPEND tests_no_data_reqd
grib_ecc-136 grib_ecc-136
grib_ecc-967 grib_ecc-967
grib_ecc-1065 grib_ecc-1065
grib_ecc-1053
julian julian
bufr_dump_samples bufr_dump_samples
bufr_json_samples bufr_json_samples

27
tests/grib_ecc-1053.sh Executable file
View File

@ -0,0 +1,27 @@
#!/bin/sh
# (C) Copyright 2005- ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
#
# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
#
. ./include.sh
set -u
# ---------------------------------------------------------
# This is the test for the JIRA issue ECC-1053
# It tests the human readable step key
# ---------------------------------------------------------
label="grib_ecc-1053-test"
temp=temp.${label}.grib
sample_g1=$ECCODES_SAMPLES_PATH/GRIB1.tmpl
${tools_dir}/grib_set -s unitOfTimeRange=254,P1=250 $sample_g1 $temp
grib_check_key_equals $temp stepHuman '0h 4m 10s'
${tools_dir}/grib_set -s unitOfTimeRange=0,P1=200 $sample_g1 $temp
grib_check_key_equals $temp stepHuman '3h 20m'
rm -f $temp

View File

@ -2068,299 +2068,300 @@ statistics,2062
status,2063 status,2063
step,2064 step,2064
stepForClustering,2065 stepForClustering,2065
stepInHours,2066 stepHuman,2066
stepRange,2067 stepInHours,2067
stepRangeInHours,2068 stepRange,2068
stepType,2069 stepRangeInHours,2069
stepTypeForConversion,2070 stepType,2070
stepTypeInternal,2071 stepTypeForConversion,2071
stepUnits,2072 stepTypeInternal,2072
stepZero,2073 stepUnits,2073
stream,2074 stepZero,2074
streamOfAnalysis,2075 stream,2075
stretchingFactor,2076 streamOfAnalysis,2076
stretchingFactorScaled,2077 stretchingFactor,2077
stringValues,2078 stretchingFactorScaled,2078
subCentre,2079 stringValues,2079
subDefinitions1,2080 subCentre,2080
subDefinitions2,2081 subDefinitions1,2081
subLocalDefinition1,2082 subDefinitions2,2082
subLocalDefinition2,2083 subLocalDefinition1,2083
subLocalDefinitionLength1,2084 subLocalDefinition2,2084
subLocalDefinitionLength2,2085 subLocalDefinitionLength1,2085
subLocalDefinitionNumber1,2086 subLocalDefinitionLength2,2086
subLocalDefinitionNumber2,2087 subLocalDefinitionNumber1,2087
subSetJ,2088 subLocalDefinitionNumber2,2088
subSetK,2089 subSetJ,2089
subSetM,2090 subSetK,2090
subcentreOfAnalysis,2091 subSetM,2091
subdivisionsOfBasicAngle,2092 subcentreOfAnalysis,2092
suiteName,2093 subdivisionsOfBasicAngle,2093
superblockExtensionAddress,2094 suiteName,2094
swapScanningLat,2095 superblockExtensionAddress,2095
swapScanningLon,2096 swapScanningLat,2096
swapScanningX,2097 swapScanningLon,2097
swapScanningY,2098 swapScanningX,2098
system,2099 swapScanningY,2099
systemNumber,2100 system,2100
t,2101 systemNumber,2101
table2Version,2102 t,2102
tableCode,2103 table2Version,2103
tableNumber,2104 tableCode,2104
tableReference,2105 tableNumber,2105
tablesLocalDir,2106 tableReference,2106
tablesMasterDir,2107 tablesLocalDir,2107
tablesVersion,2108 tablesMasterDir,2108
tablesVersionLatest,2109 tablesVersion,2109
targetCompressionRatio,2110 tablesVersionLatest,2110
td,2111 targetCompressionRatio,2111
tempPressureUnits,2112 td,2112
temperature,2113 tempPressureUnits,2113
temperatureAndDewpointPresent,2114 temperature,2114
templatesLocalDir,2115 temperatureAndDewpointPresent,2115
templatesMasterDir,2116 templatesLocalDir,2116
theHindcastMarsStream,2117 templatesMasterDir,2117
theMessage,2118 theHindcastMarsStream,2118
thisExperimentVersionNumber,2119 theMessage,2119
thisMarsClass,2120 thisExperimentVersionNumber,2120
thisMarsStream,2121 thisMarsClass,2121
thisMarsType,2122 thisMarsStream,2122
thousand,2123 thisMarsType,2123
three,2124 thousand,2124
threshold,2125 three,2125
thresholdIndicator,2126 threshold,2126
tiggeCentre,2127 thresholdIndicator,2127
tiggeLAMName,2128 tiggeCentre,2128
tiggeLocalVersion,2129 tiggeLAMName,2129
tiggeModel,2130 tiggeLocalVersion,2130
tiggeSection,2131 tiggeModel,2131
tiggeSuiteID,2132 tiggeSection,2132
tigge_name,2133 tiggeSuiteID,2133
tigge_short_name,2134 tigge_name,2134
tileClassification,2135 tigge_short_name,2135
tileIndex,2136 tileClassification,2136
time,2137 tileIndex,2137
timeCoordinateDefinition,2138 time,2138
timeDomainTemplate,2139 timeCoordinateDefinition,2139
timeDomainTemplateNumber,2140 timeDomainTemplate,2140
timeIncrement,2141 timeDomainTemplateNumber,2141
timeIncrementBetweenSuccessiveFields,2142 timeIncrement,2142
timeOfAnalysis,2143 timeIncrementBetweenSuccessiveFields,2143
timeOfForecast,2144 timeOfAnalysis,2144
timeOfModelVersion,2145 timeOfForecast,2145
timeOfReference,2146 timeOfModelVersion,2146
timeRangeIndicator,2147 timeOfReference,2147
timeRangeIndicatorFromStepRange,2148 timeRangeIndicator,2148
timeUnitFlag,2149 timeRangeIndicatorFromStepRange,2149
timerepres,2150 timeUnitFlag,2150
topLevel,2151 timerepres,2151
total,2152 topLevel,2152
totalAerosolBinsNumbers,2153 total,2153
totalInitialConditions,2154 totalAerosolBinsNumbers,2154
totalLength,2155 totalInitialConditions,2155
totalNumber,2156 totalLength,2156
totalNumberOfClusters,2157 totalNumber,2157
totalNumberOfDataValuesMissingInStatisticalProcess,2158 totalNumberOfClusters,2158
totalNumberOfDirections,2159 totalNumberOfDataValuesMissingInStatisticalProcess,2159
totalNumberOfForecastProbabilities,2160 totalNumberOfDirections,2160
totalNumberOfFrequencies,2161 totalNumberOfForecastProbabilities,2161
totalNumberOfGridPoints,2162 totalNumberOfFrequencies,2162
totalNumberOfIterations,2163 totalNumberOfGridPoints,2163
totalNumberOfRepetitions,2164 totalNumberOfIterations,2164
totalNumberOfTileAttributePairs,2165 totalNumberOfRepetitions,2165
totalNumberOfTubes,2166 totalNumberOfTileAttributePairs,2166
totalNumberOfValuesInUnpackedSubset,2167 totalNumberOfTubes,2167
totalNumberOfdimensions,2168 totalNumberOfValuesInUnpackedSubset,2168
treatmentOfMissingData,2169 totalNumberOfdimensions,2169
true,2170 treatmentOfMissingData,2170
trueLengthOfLastGroup,2171 true,2171
truncateDegrees,2172 trueLengthOfLastGroup,2172
truncateLaplacian,2173 truncateDegrees,2173
tsectionNumber3,2174 truncateLaplacian,2174
tsectionNumber4,2175 tsectionNumber3,2175
tsectionNumber5,2176 tsectionNumber4,2176
tubeDomain,2177 tsectionNumber5,2177
tubeNumber,2178 tubeDomain,2178
two,2179 tubeNumber,2179
twoOrdersOfSPD,2180 two,2180
type,2181 twoOrdersOfSPD,2181
typeOfAnalysis,2182 type,2182
typeOfAuxiliaryInformation,2183 typeOfAnalysis,2183
typeOfCalendar,2184 typeOfAuxiliaryInformation,2184
typeOfCompressionUsed,2185 typeOfCalendar,2185
typeOfDistributionFunction,2186 typeOfCompressionUsed,2186
typeOfEnsembleForecast,2187 typeOfDistributionFunction,2187
typeOfEnsembleMember,2188 typeOfEnsembleForecast,2188
typeOfFirstFixedSurface,2189 typeOfEnsembleMember,2189
typeOfGeneratingProcess,2190 typeOfFirstFixedSurface,2190
typeOfGrid,2191 typeOfGeneratingProcess,2191
typeOfHorizontalLine,2192 typeOfGrid,2192
typeOfIntervalForFirstAndSecondSize,2193 typeOfHorizontalLine,2193
typeOfIntervalForFirstAndSecondWavelength,2194 typeOfIntervalForFirstAndSecondSize,2194
typeOfLevel,2195 typeOfIntervalForFirstAndSecondWavelength,2195
typeOfLevelECMF,2196 typeOfLevel,2196
typeOfOriginalFieldValues,2197 typeOfLevelECMF,2197
typeOfPacking,2198 typeOfOriginalFieldValues,2198
typeOfPostProcessing,2199 typeOfPacking,2199
typeOfPreProcessing,2200 typeOfPostProcessing,2200
typeOfProcessedData,2201 typeOfPreProcessing,2201
typeOfSSTFieldUsed,2202 typeOfProcessedData,2202
typeOfSecondFixedSurface,2203 typeOfSSTFieldUsed,2203
typeOfSizeInterval,2204 typeOfSecondFixedSurface,2204
typeOfStatisticalPostProcessingOfEnsembleMembers,2205 typeOfSizeInterval,2205
typeOfStatisticalProcessing,2206 typeOfStatisticalPostProcessingOfEnsembleMembers,2206
typeOfTimeIncrement,2207 typeOfStatisticalProcessing,2207
typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2208 typeOfTimeIncrement,2208
typeOfWavelengthInterval,2209 typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing,2209
typicalCentury,2210 typeOfWavelengthInterval,2210
typicalDate,2211 typicalCentury,2211
typicalDateTime,2212 typicalDate,2212
typicalDay,2213 typicalDateTime,2213
typicalHour,2214 typicalDay,2214
typicalMinute,2215 typicalHour,2215
typicalMonth,2216 typicalMinute,2216
typicalSecond,2217 typicalMonth,2217
typicalTime,2218 typicalSecond,2218
typicalYear,2219 typicalTime,2219
typicalYear2,2220 typicalYear,2220
typicalYearOfCentury,2221 typicalYear2,2221
uco,2222 typicalYearOfCentury,2222
ucs,2223 uco,2223
unexpandedDescriptors,2224 ucs,2224
unexpandedDescriptorsEncoded,2225 unexpandedDescriptors,2225
unitOfOffsetFromReferenceTime,2226 unexpandedDescriptorsEncoded,2226
unitOfTime,2227 unitOfOffsetFromReferenceTime,2227
unitOfTimeIncrement,2228 unitOfTime,2228
unitOfTimeRange,2229 unitOfTimeIncrement,2229
units,2230 unitOfTimeRange,2230
unitsBias,2231 units,2231
unitsConversionOffset,2232 unitsBias,2232
unitsConversionScaleFactor,2233 unitsConversionOffset,2233
unitsDecimalScaleFactor,2234 unitsConversionScaleFactor,2234
unitsECMF,2235 unitsDecimalScaleFactor,2235
unitsFactor,2236 unitsECMF,2236
unitsOfFirstFixedSurface,2237 unitsFactor,2237
unitsOfSecondFixedSurface,2238 unitsOfFirstFixedSurface,2238
unknown,2239 unitsOfSecondFixedSurface,2239
unpack,2240 unknown,2240
unpackedError,2241 unpack,2241
unpackedSubsetPrecision,2242 unpackedError,2242
unpackedValues,2243 unpackedSubsetPrecision,2243
unsignedIntegers,2244 unpackedValues,2244
unusedBitsInBitmap,2245 unsignedIntegers,2245
updateSequenceNumber,2246 unusedBitsInBitmap,2246
upperLimit,2247 updateSequenceNumber,2247
upperRange,2248 upperLimit,2248
upperThreshold,2249 upperRange,2249
upperThresholdValue,2250 upperThreshold,2250
userDateEnd,2251 upperThresholdValue,2251
userDateStart,2252 userDateEnd,2252
userDateTimeEnd,2253 userDateStart,2253
userDateTimeStart,2254 userDateTimeEnd,2254
userTimeEnd,2255 userDateTimeStart,2255
userTimeStart,2256 userTimeEnd,2256
uuidOfHGrid,2257 userTimeStart,2257
uuidOfVGrid,2258 uuidOfHGrid,2258
uvRelativeToGrid,2259 uuidOfVGrid,2259
validityDate,2260 uvRelativeToGrid,2260
validityTime,2261 validityDate,2261
values,2262 validityTime,2262
variationOfVisibility,2263 values,2263
variationOfVisibilityDirection,2264 variationOfVisibility,2264
variationOfVisibilityDirectionAngle,2265 variationOfVisibilityDirection,2265
variationOfVisibilityDirectionTrend1,2266 variationOfVisibilityDirectionAngle,2266
variationOfVisibilityDirectionTrend2,2267 variationOfVisibilityDirectionTrend1,2267
variationOfVisibilityDirectionTrend3,2268 variationOfVisibilityDirectionTrend2,2268
variationOfVisibilityDirectionTrend4,2269 variationOfVisibilityDirectionTrend3,2269
variationOfVisibilityTrend1,2270 variationOfVisibilityDirectionTrend4,2270
variationOfVisibilityTrend2,2271 variationOfVisibilityTrend1,2271
variationOfVisibilityTrend3,2272 variationOfVisibilityTrend2,2272
variationOfVisibilityTrend4,2273 variationOfVisibilityTrend3,2273
varno,2274 variationOfVisibilityTrend4,2274
verificationDate,2275 varno,2275
verificationMonth,2276 verificationDate,2276
verificationYear,2277 verificationMonth,2277
verifyingMonth,2278 verificationYear,2278
version,2279 verifyingMonth,2279
versionNumOfFilesFreeSpaceStorage,2280 version,2280
versionNumOfRootGroupSymbolTableEntry,2281 versionNumOfFilesFreeSpaceStorage,2281
versionNumOfSharedHeaderMessageFormat,2282 versionNumOfRootGroupSymbolTableEntry,2282
versionNumberOfExperimentalSuite,2283 versionNumOfSharedHeaderMessageFormat,2283
versionNumberOfGribLocalTables,2284 versionNumberOfExperimentalSuite,2284
versionNumberOfSuperblock,2285 versionNumberOfGribLocalTables,2285
versionOfModelClimate,2286 versionNumberOfSuperblock,2286
verticalCoordinate,2287 versionOfModelClimate,2287
verticalCoordinateDefinition,2288 verticalCoordinate,2288
verticalDomainTemplate,2289 verticalCoordinateDefinition,2289
verticalDomainTemplateNumber,2290 verticalDomainTemplate,2290
verticalVisibility,2291 verticalDomainTemplateNumber,2291
verticalVisibilityCoded,2292 verticalVisibility,2292
visibility,2293 verticalVisibilityCoded,2293
visibilityInKilometresTrend1,2294 visibility,2294
visibilityInKilometresTrend2,2295 visibilityInKilometresTrend1,2295
visibilityInKilometresTrend3,2296 visibilityInKilometresTrend2,2296
visibilityInKilometresTrend4,2297 visibilityInKilometresTrend3,2297
visibilityTrend1,2298 visibilityInKilometresTrend4,2298
visibilityTrend2,2299 visibilityTrend1,2299
visibilityTrend3,2300 visibilityTrend2,2300
visibilityTrend4,2301 visibilityTrend3,2301
waveDomain,2302 visibilityTrend4,2302
weightAppliedToClimateMonth1,2303 waveDomain,2303
westLongitudeOfCluster,2304 weightAppliedToClimateMonth1,2304
westLongitudeOfDomainOfTubing,2305 westLongitudeOfCluster,2305
westernLongitudeOfClusterDomain,2306 westLongitudeOfDomainOfTubing,2306
westernLongitudeOfDomain,2307 westernLongitudeOfClusterDomain,2307
widthOfFirstOrderValues,2308 westernLongitudeOfDomain,2308
widthOfLengths,2309 widthOfFirstOrderValues,2309
widthOfSPD,2310 widthOfLengths,2310
widthOfWidths,2311 widthOfSPD,2311
windDirection,2312 widthOfWidths,2312
windDirectionTrend1,2313 windDirection,2313
windDirectionTrend2,2314 windDirectionTrend1,2314
windDirectionTrend3,2315 windDirectionTrend2,2315
windDirectionTrend4,2316 windDirectionTrend3,2316
windGust,2317 windDirectionTrend4,2317
windGustTrend1,2318 windGust,2318
windGustTrend2,2319 windGustTrend1,2319
windGustTrend3,2320 windGustTrend2,2320
windGustTrend4,2321 windGustTrend3,2321
windPresent,2322 windGustTrend4,2322
windSpeed,2323 windPresent,2323
windSpeedTrend1,2324 windSpeed,2324
windSpeedTrend2,2325 windSpeedTrend1,2325
windSpeedTrend3,2326 windSpeedTrend2,2326
windSpeedTrend4,2327 windSpeedTrend3,2327
windUnits,2328 windSpeedTrend4,2328
windUnitsTrend1,2329 windUnits,2329
windUnitsTrend2,2330 windUnitsTrend1,2330
windUnitsTrend3,2331 windUnitsTrend2,2331
windUnitsTrend4,2332 windUnitsTrend3,2332
windVariableDirection,2333 windUnitsTrend4,2333
windVariableDirectionTrend1,2334 windVariableDirection,2334
windVariableDirectionTrend2,2335 windVariableDirectionTrend1,2335
windVariableDirectionTrend3,2336 windVariableDirectionTrend2,2336
windVariableDirectionTrend4,2337 windVariableDirectionTrend3,2337
wrongPadding,2338 windVariableDirectionTrend4,2338
xCoordinateOfOriginOfSectorImage,2339 wrongPadding,2339
xCoordinateOfSubSatellitePoint,2340 xCoordinateOfOriginOfSectorImage,2340
xDirectionGridLength,2341 xCoordinateOfSubSatellitePoint,2341
xDirectionGridLengthInMetres,2342 xDirectionGridLength,2342
xDirectionGridLengthInMillimetres,2343 xDirectionGridLengthInMetres,2343
xFirst,2344 xDirectionGridLengthInMillimetres,2344
xLast,2345 xFirst,2345
yCoordinateOfOriginOfSectorImage,2346 xLast,2346
yCoordinateOfSubSatellitePoint,2347 yCoordinateOfOriginOfSectorImage,2347
yDirectionGridLength,2348 yCoordinateOfSubSatellitePoint,2348
yDirectionGridLengthInMetres,2349 yDirectionGridLength,2349
yDirectionGridLengthInMillimetres,2350 yDirectionGridLengthInMetres,2350
yFirst,2351 yDirectionGridLengthInMillimetres,2351
yLast,2352 yFirst,2352
year,2353 yLast,2353
yearOfAnalysis,2354 year,2354
yearOfCentury,2355 yearOfAnalysis,2355
yearOfEndOfOverallTimeInterval,2356 yearOfCentury,2356
yearOfForecast,2357 yearOfEndOfOverallTimeInterval,2357
yearOfModelVersion,2358 yearOfForecast,2358
yearOfReference,2359 yearOfModelVersion,2359
zero,2360 yearOfReference,2360
zeros,2361 zero,2361
zeros,2362