This file is indexed.

/usr/share/eccodes/definitions/grib2/template.4.statistical.def is in libeccodes-data 2.0.2-5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# Copyright 2005-2016 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.
#

label "statistical processing";
#  Year of end of overall time interval
unsigned[2] yearOfEndOfOverallTimeInterval =0 : edition_specific;

#  Month of end of overall time interval
unsigned[1] monthOfEndOfOverallTimeInterval =0 : edition_specific;

#  Day of end of overall time interval
unsigned[1] dayOfEndOfOverallTimeInterval =0 : edition_specific;

#  Hour of end of overall time interval
unsigned[1] hourOfEndOfOverallTimeInterval =0 : edition_specific;

#  Minute of end of overall time interval
unsigned[1] minuteOfEndOfOverallTimeInterval =0 : edition_specific;

#  Second of end of overall time interval
unsigned[1] secondOfEndOfOverallTimeInterval =0 : edition_specific;

#  n - number of time range specifications describing the time intervals used to calculate the statistically-processed field
unsigned[1]  numberOfTimeRange = 1 : edition_specific;
alias n =  numberOfTimeRange;

#  Total number of data values missing in statistical process
unsigned[4] numberOfMissingInStatisticalProcess = 0  : edition_specific;
alias totalNumberOfDataValuesMissingInStatisticalProcess=numberOfMissingInStatisticalProcess;

statisticalProcessesList list(numberOfTimeRange)
{
 #  Statistical process used to calculate the processed field from the field at each time increment during the time range
 codetable[1] typeOfStatisticalProcessing ('4.10.table',masterDir,localDir) : edition_specific;

 #  Type of time increment between successive fields used in the statistical processing
 codetable[1]  typeOfTimeIncrement ('4.11.table',masterDir,localDir) = 2 : edition_specific;
 alias typeOfTimeIncrementBetweenSuccessiveFieldsUsedInTheStatisticalProcessing=typeOfTimeIncrement;

 #  Indicator of unit of time for time range over which statistical processing is done
 codetable[1]  indicatorOfUnitForTimeRange ('4.4.table',masterDir,localDir) =1 ;

 #  Length of the time range over which statistical processing is done, in units defined by the previous octet
 unsigned[4] lengthOfTimeRange=0 ;

 #  Indicator of unit of time for the increment between the successive fields used
 codetable[1]  indicatorOfUnitForTimeIncrement ('4.4.table',masterDir,localDir)=255 ;

 #  Time increment between successive fields, in units defined by the previous octet
 # NOTE 3 NOT FOUND
 unsigned[4] timeIncrement=0 ;
 alias timeIncrementBetweenSuccessiveFields=timeIncrement;

}

# See GRIB-488. We only support maximum of 2 time ranges
if (numberOfTimeRange == 1 || numberOfTimeRange == 2) {
  concept stepTypeInternal {
    "instant" = {typeOfStatisticalProcessing=255;}
    "avg"     = {typeOfStatisticalProcessing=0;typeOfTimeIncrement=2;}
    "avg"     = {typeOfStatisticalProcessing=0;typeOfTimeIncrement=3;}
    "avgd"    = {typeOfStatisticalProcessing=0;typeOfTimeIncrement=1;}
    "accum"   = {typeOfStatisticalProcessing=1;typeOfTimeIncrement=2;}
    "max"     = {typeOfStatisticalProcessing=2;}
    "min"     = {typeOfStatisticalProcessing=3;}
    "diff"    = {typeOfStatisticalProcessing=4;}
    "rms"     = {typeOfStatisticalProcessing=5;}
    "sd"      = {typeOfStatisticalProcessing=6;}
    "cov"     = {typeOfStatisticalProcessing=7;}
    "ratio"   = {typeOfStatisticalProcessing=9;}
  }
  meta startStep step_in_units(forecastTime,indicatorOfUnitOfTimeRange,stepUnits,
    indicatorOfUnitForTimeRange,lengthOfTimeRange) : no_copy;
  meta endStep g2end_step(
    startStep,
    stepUnits,
    
    year,
    month,
    day,
    hour,
    minute,
    second,

    yearOfEndOfOverallTimeInterval,
    monthOfEndOfOverallTimeInterval,
    dayOfEndOfOverallTimeInterval,
    hourOfEndOfOverallTimeInterval,
    minuteOfEndOfOverallTimeInterval,
    secondOfEndOfOverallTimeInterval,

    indicatorOfUnitForTimeRange,
    lengthOfTimeRange,
    typeOfTimeIncrement,
    numberOfTimeRange
  ) : dump,no_copy;
  
  meta stepRange g2step_range(startStep,endStep): dump;
} else {
  constant stepType  = "multiple steps";
  constant stepTypeInternal  = "multiple steps";
  constant endStep   = "unavailable";
  constant startStep   = "unavailable";
  constant stepRange = "unavailable";
}

#meta  marsStep mars_step(stepRange,stepType) : edition_specific;

alias ls.stepRange=stepRange;
alias mars.step=endStep;

alias time.stepType=stepType;
alias time.stepRange=stepRange;
alias time.stepUnits=stepUnits;
alias time.dataDate=dataDate;
alias time.dataTime=dataTime;
alias time.startStep=startStep;
alias time.endStep=endStep;

meta time.validityDate validity_date(date,dataTime,step,stepUnits,yearOfEndOfOverallTimeInterval,
    monthOfEndOfOverallTimeInterval,dayOfEndOfOverallTimeInterval) : no_copy;
meta time.validityTime validity_time(date,dataTime,step,stepUnits,hourOfEndOfOverallTimeInterval,
    minuteOfEndOfOverallTimeInterval) : no_copy;