This file is indexed.

/usr/share/eccodes/definitions/grib3/template.component.4.1.def is in libeccodes-data 2.6.0-2.

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
130
131
132
133
134
135
# Horizontal Domain Template Component 4.1 - Latitude/longitude regular grid

# Ni - number of points along a parallel
unsigned[4] Ni : dump; # Note: This is for a REGULAR GRID so Ni cannot be missing
alias numberOfPointsAlongAParallel=Ni;
alias Nx = Ni;
alias geography.Ni=Ni;

# Nj - number of points along a meridian
unsigned[4] Nj : dump;
alias numberOfPointsAlongAMeridian=Nj;
alias Ny = Nj ;
alias geography.Nj=Nj;

# Basic angle of the initial production domain
unsigned[4] basicAngleOfTheInitialProductionDomain = 0;
transient mBasicAngle=basicAngleOfTheInitialProductionDomain*oneMillionConstant;

transient angleMultiplier  = 1;
transient mAngleMultiplier = 1000000;
when (basicAngleOfTheInitialProductionDomain == 0) {
  set angleMultiplier  = 1;
  set mAngleMultiplier = 1000000;
} else {
  set angleMultiplier  = basicAngleOfTheInitialProductionDomain;
  set mAngleMultiplier = mBasicAngle;
}

# Subdivisions of basic angle used to define extreme longitudes and latitudes, and direction increments
unsigned[4] subdivisionsOfBasicAngle = missing() : can_be_missing;

transient angleDivisor = 1000000;
when (missing(subdivisionsOfBasicAngle) || subdivisionsOfBasicAngle == 0) {
  set angleDivisor  = 1000000;
  set angularPrecision = 1000000;
} else {
  set angleDivisor  = subdivisionsOfBasicAngle;
  set angularPrecision = subdivisionsOfBasicAngle;
}

# Note: Basic angle of the initial production domain and subdivisions of this basic angle are
# provided to manage cases where the recommended unit of 10^-6 degrees is not applicable
# to describe the extreme longitudes and latitudes, and direction increments.
# For these descriptors, the unit is equal to the ratio of the basic angle and the subdivisions number.
# For ordinary cases, zero and missing values should be coded, equivalent to respective values
# of 1 and 10^6 (10^-6 degrees unit)

# La1 - latitude of first grid point
signed[4] latitudeOfFirstGridPoint : edition_specific;
alias La1  = latitudeOfFirstGridPoint;

# Lo1 - longitude of first grid point
signed[4] longitudeOfFirstGridPoint ;
alias Lo1  = longitudeOfFirstGridPoint;

include "grib3/template.4.resolution_flags.def"

# La2 - latitude of last grid point
signed[4] latitudeOfLastGridPoint :  edition_specific;
alias La2 =  latitudeOfLastGridPoint;

# Lo2 - longitude of last grid point
signed[4] longitudeOfLastGridPoint :  edition_specific;
alias Lo2 =  longitudeOfLastGridPoint;

# Di - i direction increment
# Direction increments are unsigned and direction of increment is represented in the scanning mode
unsigned[4] iDirectionIncrement : can_be_missing,edition_specific;
alias Di =  iDirectionIncrement;
alias Dx =  iDirectionIncrement;

# Dj - j direction increment
# Direction increments are unsigned and direction of increment is represented in the scanning mode
unsigned[4] jDirectionIncrement : can_be_missing,edition_specific;
alias Dj =  jDirectionIncrement;
alias Dy =  jDirectionIncrement;

include "grib3/template.4.scanning_mode.def";


meta g2grid g2grid(
  latitudeOfFirstGridPoint,
  longitudeOfFirstGridPoint,
  latitudeOfLastGridPoint,
  longitudeOfLastGridPoint,
  iDirectionIncrement,
  jDirectionIncrement,
  basicAngleOfTheInitialProductionDomain,
  subdivisionsOfBasicAngle
  );

meta      geography.latitudeOfFirstGridPointInDegrees    g2latlon(g2grid,0) : dump;
meta      geography.longitudeOfFirstGridPointInDegrees   g2latlon(g2grid,1) : dump;
meta      geography.latitudeOfLastGridPointInDegrees     g2latlon(g2grid,2) : dump;
meta      geography.longitudeOfLastGridPointInDegrees    g2latlon(g2grid,3) : dump;

alias xFirst=longitudeOfFirstGridPointInDegrees;
alias yFirst=latitudeOfFirstGridPointInDegrees;
alias xLast=longitudeOfLastGridPointInDegrees;
alias yLast=latitudeOfLastGridPointInDegrees;

meta geography.iDirectionIncrementInDegrees    g2latlon(g2grid,4,
  iDirectionIncrementGiven) : can_be_missing,dump;

meta geography.jDirectionIncrementInDegrees    g2latlon(g2grid,5,
  jDirectionIncrementGiven) : can_be_missing,dump;

alias latitudeFirstInDegrees  = latitudeOfFirstGridPointInDegrees;
alias longitudeFirstInDegrees = longitudeOfFirstGridPointInDegrees;
alias latitudeLastInDegrees   = latitudeOfLastGridPointInDegrees;
alias longitudeLastInDegrees  = longitudeOfLastGridPointInDegrees;
alias DiInDegrees = iDirectionIncrementInDegrees;
alias DxInDegrees = iDirectionIncrementInDegrees;
alias DjInDegrees = jDirectionIncrementInDegrees;
alias DyInDegrees = jDirectionIncrementInDegrees;

#_if ( missing(Ni) && PLPresent == 1 ) {
#  iterator latlon_reduced(numberOfPoints,missingValue,values,
#      latitudeFirstInDegrees,longitudeFirstInDegrees,
#      latitudeLastInDegrees,longitudeLastInDegrees,
#      Nj,DjInDegrees,pl);
#  nearest latlon_reduced(values,radius,Nj,pl,longitudeFirstInDegrees,longitudeLastInDegrees);
#} else {
#  iterator latlon(numberOfPoints,missingValue,values,
#                  longitudeFirstInDegrees,DiInDegrees  ,
#                  Ni,Nj,iScansNegatively,
#                  latitudeFirstInDegrees, DjInDegrees,jScansPositively,jPointsAreConsecutive);
#  nearest regular(values,radius,Ni,Nj);
#}
meta latLonValues latlonvalues(values);
alias latitudeLongitudeValues=latLonValues;
meta latitudes latitudes(values,0);
meta longitudes longitudes(values,0);
meta distinctLatitudes latitudes(values,1);
meta distinctLongitudes longitudes(values,1);