eccodes-data-grib2
Version:
GRIB2 format data for eccodes-lib
128 lines (94 loc) • 4.13 kB
Plain Text
position offsetSection1;
section_length[4] section1Length ;
meta section1Pointer section_pointer(offsetSection1,section1Length,1);
unsigned[1] numberOfSection = 1 :read_only;
codetable[2] centre 'common/c-11.table' : dump,string_type;
alias identificationOfOriginatingGeneratingCentre=centre;
meta centreDescription codetable_title(centre);
alias parameter.centre=centre;
alias ls.centre=centre;
alias originatingCentre=centre;
unsigned[2] subCentre : dump;
_if (subCentre==98 ) {
alias centreForLocal=subCentre;
} else {
alias centreForLocal=centre;
}
codetable[1] tablesVersion 'grib2/tables/1.0.table' = 5 : edition_specific;
alias gribMasterTablesVersionNumber=tablesVersion;
transient masterDir="grib2/tables/[tablesVersion]";
when (tablesVersion!=255) {
set masterDir="grib2/tables/[tablesVersion]";
} else {
set masterDir="grib2/tables/4";
}
codetable[1] localTablesVersion 'grib2/tables/[tablesVersion]/1.1.table' ;
alias versionNumberOfGribLocalTables=localTablesVersion;
transient localDir="";
if (localTablesVersion != 0) {
transient localDir="grib2/tables/local/[centre]/[localTablesVersion]";
}
codetable[1] significanceOfReferenceTime ('1.2.table',masterDir,localDir) = 1 : dump;
unsigned[2] year ;
unsigned[1] month ;
unsigned[1] day ;
unsigned[1] hour ;
unsigned[1] minute ;
unsigned[1] second ;
meta dataDate g2date(year,month,day) : dump;
alias mars.date = dataDate;
alias ls.date = dataDate;
meta julianDay julian_day(dataDate,hour,minute,second) : edition_specific;
meta dataTime time(hour,minute,second) : dump;
alias mars.time = dataTime;
codetable[1] productionStatusOfProcessedData ('1.3.table',masterDir,localDir) : dump;
codetable[1] typeOfProcessedData ('1.4.table',masterDir,localDir) = 255 : dump,string_type,no_fail;
alias ls.dataType=typeOfProcessedData;
meta md5Section1 md5(offsetSection1,section1Length);
meta selectStepTemplateInterval select_step_template(productDefinitionTemplateNumber,0);
meta selectStepTemplateInstant select_step_template(productDefinitionTemplateNumber,1);
transient stepTypeInternal="instant" : hidden,no_copy;
concept stepType {
"instant" = {selectStepTemplateInstant=1; stepTypeInternal="instant";}
"avg" = {selectStepTemplateInterval=1; stepTypeInternal="avg";}
"avgd" = {selectStepTemplateInterval=1; stepTypeInternal="avgd";}
"accum" = {selectStepTemplateInterval=1; stepTypeInternal="accum";}
"max" = {selectStepTemplateInterval=1; stepTypeInternal="max";}
"min" = {selectStepTemplateInterval=1; stepTypeInternal="min";}
"diff" = {selectStepTemplateInterval=1; stepTypeInternal="diff";}
"rms" = {selectStepTemplateInterval=1; stepTypeInternal="rms";}
"sd" = {selectStepTemplateInterval=1; stepTypeInternal="sd";}
"cov" = {selectStepTemplateInterval=1; stepTypeInternal="cov";}
"ratio" = {selectStepTemplateInterval=1; stepTypeInternal="ratio";}
}
transient setCalendarId = 0 ;
transient deleteCalendarId = 0 ;
alias calendarIdPresent = zero;
if ( ((section1Length > 21) or setCalendarId > 0) and deleteCalendarId == 0) {
alias calendarIdPresent = present;
codetable[2] calendarIdentificationTemplateNumber ('1.5.table',masterDir,localDir) : dump,string_type,no_fail;
template calendarIdentification "grib2/template.1.[calendarIdentificationTemplateNumber:l].def";
}
concept is_uerra(zero) {
'1' = {productionStatusOfProcessedData=9;}
'1' = {productionStatusOfProcessedData=8;}
'0' = {dummy=1;}
}