File: section.3.def

package info (click to toggle)
eccodes 2.46.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 154,956 kB
  • sloc: cpp: 163,970; ansic: 26,310; sh: 22,006; f90: 6,854; perl: 6,361; python: 5,352; java: 2,226; javascript: 1,427; yacc: 854; fortran: 543; lex: 359; makefile: 279; xml: 183; awk: 66
file content (137 lines) | stat: -rw-r--r-- 6,513 bytes parent folder | download
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
136
137
# (C) Copyright 2005- ECMWF.

# SECTION 3, GRID DEFINITION SECTION

# For grib2 -> 1
constant gridDescriptionSectionPresent = 1;
position offsetSection3;

section_length[4] section3Length ;
meta section3Pointer section_pointer(offsetSection3,section3Length,3);

unsigned[1] numberOfSection = 3 :read_only;

# Source of grid definition
codetable[1] sourceOfGridDefinition ('3.0.table',masterDir,localDir) ;

# Number of data points
unsigned[4] numberOfDataPoints : dump;
alias numberOfPoints=numberOfDataPoints;
alias numberOfGridPoints = numberOfDataPoints;

# Number of octets for optional list of numbers defining number of points
unsigned[1] numberOfOctectsForNumberOfPoints;

# Interpretation of list of numbers defining number of points
codetable[1] interpretationOfNumberOfPoints ('3.11.table',masterDir,localDir) : dump;

if(numberOfOctectsForNumberOfPoints  == 0){
  transient PLPresent = 0 ;
}else{
  transient PLPresent = 1 ;
}

codetable[2] gridDefinitionTemplateNumber ('3.1.table',masterDir,localDir) =0 : dump,edition_specific;
meta gridDefinitionDescription codetable_title(gridDefinitionTemplateNumber);

alias isRotatedGrid = false;

if (gridDefinitionTemplateNumber >= 32768) {
  template gridDefinitionSection "grib2/local/[centreForLocal]/template.3.[gridDefinitionTemplateNumber:l].def";
} else {
  template gridDefinitionSection "grib2/templates/template.3.[gridDefinitionTemplateNumber:l].def";
}

if(PLPresent){
  if(numberOfOctectsForNumberOfPoints == 1){
   unsigned[1] pl[Nj] : dump;
  }
  if(numberOfOctectsForNumberOfPoints == 2){
   unsigned[2] pl[Nj] : dump;
  }
  if(numberOfOctectsForNumberOfPoints == 3){
   unsigned[3] pl[Nj] : dump;
  }
  alias geography.pl=pl;
}

when (PLPresent == 0) {
  set numberOfOctectsForNumberOfPoints = 0;
  set interpretationOfNumberOfPoints = 0;
}

section_padding section3Padding : read_only;

concept gridType {
 "regular_ll"            = { gridDefinitionTemplateNumber=0;  PLPresent=0; }
 "reduced_ll"            = { gridDefinitionTemplateNumber=0;  PLPresent=1; numberOfOctectsForNumberOfPoints=2;iDirectionIncrementGiven=0;numberOfPointsAlongAParallel = missing();  }
 "rotated_ll"            = { gridDefinitionTemplateNumber=1;  PLPresent=0; }
 "stretched_ll"          = { gridDefinitionTemplateNumber=2;  PLPresent=0; }
 "stretched_rotated_ll"  = { gridDefinitionTemplateNumber=3;  PLPresent=0; }

 "varres_ll"             = { gridDefinitionTemplateNumber=4;  PLPresent=0; }
 "varres_rotated_ll"     = { gridDefinitionTemplateNumber=5;  PLPresent=0; }

 "mercator"              = { gridDefinitionTemplateNumber=10; PLPresent=0; }
 "transverse_mercator"   = { gridDefinitionTemplateNumber=12; PLPresent=0; }
 "polar_stereographic"   = { gridDefinitionTemplateNumber=20; PLPresent=0; }
 "lambert"               = { gridDefinitionTemplateNumber=30; PLPresent=0; }
 "albers"                = { gridDefinitionTemplateNumber=31; PLPresent=0; }

 "regular_gg"            = { gridDefinitionTemplateNumber=40; PLPresent=0; }
 "reduced_gg"            = { gridDefinitionTemplateNumber=40; PLPresent=1; numberOfOctectsForNumberOfPoints=2;iDirectionIncrementGiven=0;numberOfPointsAlongAParallel = missing(); }

 "rotated_gg"            = { gridDefinitionTemplateNumber=41; PLPresent=0; }
 "reduced_rotated_gg"    = { gridDefinitionTemplateNumber=41; PLPresent=1; numberOfOctectsForNumberOfPoints=2;iDirectionIncrementGiven=0;numberOfPointsAlongAParallel = missing(); }

 "stretched_gg"          = { gridDefinitionTemplateNumber=42; PLPresent=0; }
 "reduced_stretched_gg"  = { gridDefinitionTemplateNumber=42; PLPresent=1; numberOfOctectsForNumberOfPoints=2;iDirectionIncrementGiven=0;numberOfPointsAlongAParallel = missing(); }

 "stretched_rotated_gg"  = { gridDefinitionTemplateNumber=43; PLPresent=0; }
 "reduced_stretched_rotated_gg" = { gridDefinitionTemplateNumber=43; PLPresent=1; numberOfOctectsForNumberOfPoints=2;iDirectionIncrementGiven=0;numberOfPointsAlongAParallel = missing(); }

# For consistency add the prefix regular_
"regular_rotated_gg"           = { gridDefinitionTemplateNumber=41; PLPresent=0; } # = rotated_gg
"regular_stretched_gg"         = { gridDefinitionTemplateNumber=42; PLPresent=0; } # = stretched_gg
"regular_stretched_rotated_gg" = { gridDefinitionTemplateNumber=43; PLPresent=0; } # = stretched_rotated_gg

 "sh"                    = { gridDefinitionTemplateNumber=50; PLPresent=0;}
 "rotated_sh"            = { gridDefinitionTemplateNumber=51; PLPresent=0;}
 "stretched_sh"          = { gridDefinitionTemplateNumber=52; PLPresent=0;}
 "stretched_rotated_sh"  = { gridDefinitionTemplateNumber=53; PLPresent=0;}
 "space_view"            = { gridDefinitionTemplateNumber=90; PLPresent=0;}
 "triangular_grid"       = { gridDefinitionTemplateNumber=100;PLPresent=0;}
 "unstructured_grid"     = { gridDefinitionTemplateNumber=101;PLPresent=0;}
 "equatorial_azimuthal_equidistant" = { gridDefinitionTemplateNumber=110; PLPresent=0;}
 "azimuth_range"         = { gridDefinitionTemplateNumber=120;PLPresent=0; }
 "irregular_latlon"      = { gridDefinitionTemplateNumber=130;PLPresent=0; }
 "lambert_azimuthal_equal_area"= { gridDefinitionTemplateNumber=140;PLPresent=0; }
 "cross_section"         = { gridDefinitionTemplateNumber=1000;PLPresent=0; }
 "Hovmoller"             = { gridDefinitionTemplateNumber=1100;PLPresent=0; }
 "time_section"          = { gridDefinitionTemplateNumber=1200;PLPresent=0; }
 "lambert_lam"             = { gridDefinitionTemplateNumber=33; PLPresent=0; }
 "mercator_lam"            = { gridDefinitionTemplateNumber=13; PLPresent=0; }
 "polar_stereographic_lam" = { gridDefinitionTemplateNumber=23; PLPresent=0; }
 "lambert_bf"              = { gridDefinitionTemplateNumber=63; PLPresent=0; }
 "mercator_bf"             = { gridDefinitionTemplateNumber=61; PLPresent=0; }
 "polar_stereographic_bf"  = { gridDefinitionTemplateNumber=62; PLPresent=0; }
 "healpix"                 = { gridDefinitionTemplateNumber=150; PLPresent=0; }

 "ncep_32769" = { centre=7; gridDefinitionTemplateNumber=32769; PLPresent=0; }

 "unknown"               = {PLPresent=0;}
 "unknown_PLPresent"     = {PLPresent=1;}
} : dump;

alias ls.gridType=gridType;
alias geography.gridType=gridType;
alias typeOfGrid=gridType;

meta md5Section3 md5(offsetSection3,section3Length);
alias md5GridSection = md5Section3;

meta  projSourceString proj_string(gridType, 0): hidden;
meta  projTargetString proj_string(gridType, 1): hidden;
alias projString = projTargetString : hidden;

constant isSpectral = !isGridded : constraint;