grib-js
Version:
Full JavaScript GRIB2 parser
760 lines (744 loc) • 51.9 kB
JavaScript
// Work around older JS's w/out freeze()
if(Object.freeze === undefined) { Object.freeze = function(x) { return x; } }
// Attempt to lookup a value in the specified table. If the optional
// throwIfNotFound is truthy throw an error if no match is found otherwise
// return the original value.
exports.lookup = function(table, value, throwIfNotFound) {
const v = table[value];
if (!v) {
if (throwIfNotFound) throw new Error("Value not found");
else return { name: "Not found", value };
}
return v;
}
exports.tables = {
// Code Table 0.0
Discipline: Object.freeze({
0 : { name: 'Meteorological Products', value: 0 },
1 : { name: 'Hydrological Products', value: 1 },
2 : { name: 'Land Surface Products', value: 2 },
3 : { name: 'Satellite Remote Sensing Products', value: 3 },
4 : { name: 'Space Weather Products', value: 4 },
10 : { name: 'Oceanographic Products ', value: 10 },
255: { name: 'Missing', value: 255 },
}),
// Code Table 1.0
Center: Object.freeze({
1 : { name: 'Melbourne (WMC)', value: 1 },
2 : { name: 'Melbourne (WMC)', value: 2 },
3 : { name: 'Melbourne (WMC)', value: 3 },
67 : { name: 'Melbourne (RSMC)', value: 67 },
4 : { name: 'Moscow (WMC)', value: 4 },
5 : { name: 'Moscow (WMC)', value: 5 },
6 : { name: 'Moscow (WMC)', value: 6 },
76 : { name: 'Moscow (RSMC/RAFC)', value: 76 },
7 : { name: 'US National Weather Service - NCEP (WMC)', value: 7 },
8 : { name: 'US National Weather Service - NWSTG (WMC)', value: 8 },
9 : { name: 'US National Weather Service - Other (WMC)', value: 9 },
10 : { name: 'Cairo (RSMC/RAFC)', value: 10 },
11 : { name: 'Cairo (RSMC/RAFC)', value: 11 },
12 : { name: 'Dakar (RSMC/RAFC)', value: 12 },
13 : { name: 'Dakar (RSMC/RAFC)', value: 13 },
14 : { name: 'Nairobi (RSMC/RAFC)', value: 14 },
15 : { name: 'Nairobi (RSMC/RAFC)', value: 15 },
16 : { name: 'Casablanca (RSMC)', value: 16 },
17 : { name: 'Tunis (RSMC)', value: 17 },
18 : { name: 'Tunis-Casablanca (RSMC)', value: 18 },
19 : { name: 'Tunis-Casablanca (RSMC)', value: 19 },
20 : { name: 'Las Palmas (RAFC)', value: 20 },
21 : { name: 'Algiers (RSMC)', value: 21 },
22 : { name: 'ACMAD', value: 22 },
23 : { name: 'Mozambique (NMC)', value: 23 },
24 : { name: 'Pretoria (RSMC)', value: 24 },
25 : { name: 'La Reunion (RSMC)', value: 25 },
26 : { name: 'Khabarovsk (RSMC)', value: 26 },
27 : { name: 'Khabarovsk (RSMC)', value: 27 },
28 : { name: 'New Delhi (RSMC/RAFC)', value: 28 },
29 : { name: 'New Delhi (RSMC/RAFC)', value: 29 },
30 : { name: 'Novosibirsk (RSMC)', value: 30 },
31 : { name: 'Novosibirsk (RSMC)', value: 31 },
32 : { name: 'Tashkent (RSMC)', value: 32 },
33 : { name: 'Jeddah (RSMC)', value: 33 },
34 : { name: 'Tokyo (RSMC), Japanese Meteorological Agency', value: 34 },
35 : { name: 'Tokyo (RSMC), Japanese Meteorological Agency', value: 35 },
36 : { name: 'Bankok', value: 36 },
37 : { name: 'Ulan Bator', value: 37 },
38 : { name: 'Beijing (RSMC)', value: 38 },
39 : { name: 'Beijing (RSMC)', value: 39 },
40 : { name: 'Seoul', value: 40 },
41 : { name: 'Buenos Aires (RSMC/RAFC)', value: 41 },
42 : { name: 'Buenos Aires (RSMC/RAFC)', value: 42 },
43 : { name: 'Brasilia (RSMC/RAFC)', value: 43 },
44 : { name: 'Brasilia (RSMC/RAFC)', value: 44 },
45 : { name: 'Santiago', value: 45 },
46 : { name: 'Brazilian Space Agency - INPE', value: 46 },
47 : { name: 'Columbia (NMC)', value: 47 },
48 : { name: 'Ecuador (NMC)', value: 48 },
49 : { name: 'Peru (NMC)', value: 49 },
50 : { name: 'Venezuela (NMC)', value: 50 },
51 : { name: 'Miami (RSMC/RAFC)', value: 51 },
52 : { name: 'Miami (RSMC), National Hurricane Center', value: 52 },
53 : { name: 'Canadian Meteorological Service - Montreal (RSMC)', value: 53 },
54 : { name: 'Canadian Meteorological Service - Montreal (RSMC)', value: 54 },
55 : { name: 'San Francisco', value: 55 },
56 : { name: 'ARINC Center', value: 56 },
57 : { name: 'US Air Force - Air Force Global Weather Center', value: 57 },
58 : { name: 'Fleet Numerical Meteorology and Oceanography Center,Monterey,CA,USA', value: 58 },
59 : { name: 'The NOAA Forecast Systems Lab, Boulder, CO, USA', value: 59 },
60 : { name: 'National Center for Atmospheric Research (NCAR), Boulder, CO', value: 60 },
61 : { name: 'Service ARGOS - Landover, MD, USA', value: 61 },
62 : { name: 'US Naval Oceanographic Office', value: 62 },
63 : { name: 'International Research Institude for Climate and Society', value: 63 },
64 : { name: 'Honolulu', value: 64 },
65 : { name: 'Darwin (RSMC)', value: 65 },
66 : { name: 'Darwin (RSMC)', value: 66 },
69 : { name: 'Wellington (RSMC/RAFC)', value: 69 },
70 : { name: 'Wellington (RSMC/RAFC)', value: 70 },
71 : { name: 'Nadi (RSMC)', value: 71 },
72 : { name: 'Singapore', value: 72 },
73 : { name: 'Malaysia (NMC)', value: 73 },
74 : { name: 'U.K. Met Office - Exeter (RSMC)', value: 74 },
75 : { name: 'U.K. Met Office - Exeter (RSMC)', value: 75 },
78 : { name: 'Offenbach (RSMC)', value: 78 },
79 : { name: 'Offenbach (RSMC)', value: 79 },
80 : { name: 'Rome (RSMC)', value: 80 },
81 : { name: 'Rome (RSMC)', value: 81 },
82 : { name: 'Norrkoping', value: 82 },
83 : { name: 'Norrkoping', value: 83 },
84 : { name: 'French Weather Service - Toulouse', value: 84 },
85 : { name: 'French Weather Service - Toulouse', value: 85 },
86 : { name: 'Helsinki', value: 86 },
87 : { name: 'Belgrade', value: 87 },
88 : { name: 'Oslo', value: 88 },
89 : { name: 'Prague', value: 89 },
90 : { name: 'Episkopi', value: 90 },
91 : { name: 'Ankara', value: 91 },
92 : { name: 'Frankfurt/Main (RAFC)', value: 92 },
93 : { name: 'London (WAFC)', value: 93 },
94 : { name: 'Copenhagen', value: 94 },
95 : { name: 'Rota', value: 95 },
96 : { name: 'Athens', value: 96 },
97 : { name: 'European Space Agency (ESA)', value: 97 },
98 : { name: 'European Center for Medium-Range Weather Forecasts (RSMC)', value: 98 },
99 : { name: 'De Bilt, Netherlands', value: 99 },
100: { name: 'Brazzaville', value: 100 },
101: { name: 'Abidjan', value: 101 },
102: { name: 'Libyan Arab Jamahiriya (NMC)', value: 102 },
103: { name: 'Madagascar (NMC)', value: 103 },
104: { name: 'Mauritius (NMC)', value: 104 },
105: { name: 'Niger (NMC)', value: 105 },
106: { name: 'Seychelles (NMC)', value: 106 },
107: { name: 'Uganda (NMC)', value: 107 },
108: { name: 'United Republic of Tanzania (NMC)', value: 108 },
109: { name: 'Zimbabwe (NMC)', value: 109 },
110: { name: 'Hong-Kong', value: 110 },
111: { name: 'Afghanistan (NMC)', value: 111 },
112: { name: 'Bahrain (NMC)', value: 112 },
113: { name: 'Bangladesh (NMC)', value: 113 },
114: { name: 'Bhutan (NMC)', value: 114 },
115: { name: 'Cambodia (NMC)', value: 115 },
116: { name: 'Democratic People\'s Republic of Korea (NMC)', value: 116 },
117: { name: 'Islamic Republic of Iran (NMC)', value: 117 },
118: { name: 'Iraq (NMC)', value: 118 },
119: { name: 'Kazakhstan (NMC)', value: 119 },
120: { name: 'Kuwait (NMC)', value: 120 },
121: { name: 'Kyrgyz Republic (NMC)', value: 121 },
122: { name: 'Lao People\'s Democratic Republic (NMC)', value: 122 },
123: { name: 'Macao, China', value: 123 },
124: { name: 'Maldives (NMC)', value: 124 },
125: { name: 'Myanmar (NMC)', value: 125 },
126: { name: 'Nepal (NMC)', value: 126 },
127: { name: 'Oman (NMC)', value: 127 },
128: { name: 'Pakistan (NMC)', value: 128 },
129: { name: 'Qatar (NMC)', value: 129 },
130: { name: 'Yemen (NMC)', value: 130 },
131: { name: 'Sri Lanka (NMC)', value: 131 },
132: { name: 'Tajikistan (NMC)', value: 132 },
133: { name: 'Turkmenistan (NMC)', value: 133 },
134: { name: 'United Arab Emirates (NMC)', value: 134 },
135: { name: 'Uzbekistan (NMC)', value: 135 },
136: { name: 'Viet Nam (NMC)', value: 136 },
140: { name: 'Bolivia (NMC)', value: 140 },
141: { name: 'Guyana (NMC)', value: 141 },
142: { name: 'Paraguay (NMC)', value: 142 },
143: { name: 'Suriname (NMC)', value: 143 },
144: { name: 'Uruguay (NMC)', value: 144 },
145: { name: 'French Guyana', value: 145 },
146: { name: 'Brazilian Navy Hydrographic Center', value: 146 },
147: { name: 'National Commission on Space Activities - Argentina', value: 147 },
148: { name: 'Brazilian Department of Airspace Control - DECEA', value: 148 },
150: { name: 'Antigua and Barbuda (NMC)', value: 150 },
151: { name: 'Bahamas (NMC)', value: 151 },
152: { name: 'Barbados (NMC)', value: 152 },
153: { name: 'Belize (NMC)', value: 153 },
154: { name: 'British Caribbean Territories Center', value: 154 },
155: { name: 'San Jose', value: 155 },
156: { name: 'Cuba (NMC)', value: 156 },
157: { name: 'Dominica (NMC)', value: 157 },
158: { name: 'Dominican Republic (NMC)', value: 158 },
159: { name: 'El Salvador (NMC)', value: 159 },
160: { name: 'US NOAA/NESDIS', value: 160 },
161: { name: 'US NOAA Office of Oceanic and Atmospheric Research', value: 161 },
162: { name: 'Guatemala (NMC)', value: 162 },
163: { name: 'Haiti (NMC)', value: 163 },
164: { name: 'Honduras (NMC)', value: 164 },
165: { name: 'Jamaica (NMC)', value: 165 },
166: { name: 'Mexico City', value: 166 },
167: { name: 'Netherlands Antilles and Aruba (NMC)', value: 167 },
168: { name: 'Nicaragua (NMC)', value: 168 },
169: { name: 'Panama (NMC)', value: 169 },
170: { name: 'Saint Lucia (NMC)', value: 170 },
171: { name: 'Trinidad and Tobago (NMC)', value: 171 },
172: { name: 'French Departments in RA IV', value: 172 },
173: { name: 'US National Aeronautics and Space Administration (NASA)', value: 173 },
174: { name: 'Integrated System Data Management/Marine Environmental Data Service (ISDM/MEDS) - Canada', value: 174 },
176: { name: 'US Cooperative Institude for Meteorological Satellite Studies', value: 176 },
190: { name: 'Cook Islands (NMC)', value: 190 },
191: { name: 'French Polynesia (NMC)', value: 191 },
192: { name: 'Tonga (NMC)', value: 192 },
193: { name: 'Vanuatu (NMC)', value: 193 },
194: { name: 'Brunei (NMC)', value: 194 },
195: { name: 'Indonesia (NMC)', value: 195 },
196: { name: 'Kiribati (NMC)', value: 196 },
197: { name: 'Federated States of Micronesia (NMC)', value: 197 },
198: { name: 'New Caledonia (NMC)', value: 198 },
199: { name: 'Niue', value: 199 },
200: { name: 'Papua New Guinea (NMC)', value: 200 },
201: { name: 'Philippines (NMC)', value: 201 },
202: { name: 'Samoa (NMC)', value: 202 },
203: { name: 'Solomon Islands (NMC)', value: 203 },
204: { name: 'Narional Institude of Water and Atmospheric Research - New Zealand', value: 204 },
210: { name: 'Frascati (ESA/ESRIN)', value: 210 },
211: { name: 'Lanion', value: 211 },
212: { name: 'Lisbon', value: 212 },
213: { name: 'Reykjavik', value: 213 },
214: { name: 'Madrid', value: 214 },
215: { name: 'Zurich', value: 215 },
216: { name: 'Service ARGOS - Toulouse', value: 216 },
217: { name: 'Bratislava', value: 217 },
218: { name: 'Budapest', value: 218 },
219: { name: 'Ljubljana', value: 219 },
220: { name: 'Warsaw', value: 220 },
221: { name: 'Zagreb', value: 221 },
222: { name: 'Albania (NMC)', value: 222 },
223: { name: 'Armenia (NMC)', value: 223 },
224: { name: 'Austria (NMC)', value: 224 },
225: { name: 'Azerbaijan (NMC)', value: 225 },
226: { name: 'Belarus (NMC)', value: 226 },
227: { name: 'Belgium (NMC)', value: 227 },
228: { name: 'Bosnia and Herzegovina (NMC)', value: 228 },
229: { name: 'Bulgaria (NMC)', value: 229 },
230: { name: 'Cyprus (NMC)', value: 230 },
231: { name: 'Estonia (NMC)', value: 231 },
232: { name: 'Georgia (NMC)', value: 232 },
233: { name: 'Dublin', value: 233 },
234: { name: 'Israel (NMC)', value: 234 },
235: { name: 'Jordan (NMC)', value: 235 },
236: { name: 'Latvia (NMC)', value: 236 },
237: { name: 'Lebanon (NMC)', value: 237 },
238: { name: 'Lithuania (NMC)', value: 238 },
239: { name: 'Luxembourg', value: 239 },
240: { name: 'Malta (NMC)', value: 240 },
241: { name: 'Monaco', value: 241 },
242: { name: 'Romania (NMC)', value: 242 },
243: { name: 'Syrian Arab Republic (NMC)', value: 243 },
244: { name: 'The former Yugoslav Republic of Macedonia (NMC)', value: 244 },
245: { name: 'Ukraine (NMC)', value: 245 },
246: { name: 'Republic of Moldova (NMC)', value: 246 },
247: { name: 'Operational Programme for the Exchange of Weather RAdar Information (OPERA) - EUMETNET', value: 247 },
250: { name: 'COnsortium for Small scale MOdelling (COSMO)', value: 250 },
254: { name: 'EUMETSAT Operations Center', value: 254 },
255: { name: 'Missing Value', value: 255 },
}),
// Code Table 1.2
ReferenceTimeSignificance: Object.freeze({
0 : { name: 'Analysis', value: 0 },
1 : { name: 'Start of Forecast', value: 1 },
2 : { name: 'Verification time of forecast', value: 2 },
3 : { name: 'Observations time', value: 3 },
255: { name: 'Missing', value: 255 },
}),
// Code Table 1.3
ProductionStatus: Object.freeze({
0 : { name: 'Operational products', value: 0 },
1 : { name: 'Operational test products', value: 1 },
2 : { name: 'Research products', value: 2 },
3 : { name: 'Re-analysis', value: 3 },
255: { name: 'Missing', value: 255 },
}),
// Code Table 1.4
Type: Object.freeze({
0 : { name: 'Analysis products', value: 0 },
1 : { name: 'Forecast products', value: 1 },
2 : { name: 'Analysis and forecast products', value: 2 },
3 : { name: 'Control forecast products', value: 3 },
4 : { name: 'Perturbed forecast products', value: 4 },
5 : { name: 'Control and perturbed forecast products', value: 5 },
6 : { name: 'Processed satellite observations', value: 6 },
7 : { name: 'Processed radar observations', value: 7 },
255: { name: 'Missing', value: 255 },
}),
// Code Table 3.2
EarthShape: Object.freeze({
0 : { name: 'Earth assumed spherical with radius = 6,367,470.0 m', value: 0 },
1 : { name: 'Earth assumed spherical with radius specified by data producer', value: 1 },
2 : { name: 'Earth assumed oblate spheroid with size as determined by IAU in 1965 (major axis = 6,378,160.0 m, minor axis = 6,356,775.0 m, f = 1/297.0)', value: 2 },
3 : { name: 'Earth assumed oblate spheroid with major and minor axes specified by data producer', value: 3 },
4 : { name: 'Earth assumed oblate spheroid as defined in IAG-GRS80 model (major axis = 6,378,137.0 m, minor axis = 6,356,752.314 m, f = 1/298.257222101)', value: 4 },
5 : { name: 'Earth assumed represented by WGS84 (as used by ICAO since 1998)', value: 5 },
6 : { name: 'Earth assumed spherical with radius of 6,371,229.0 m', value: 6 },
255: { name: 'Missing', value: 255 },
}),
// Code Table 4.0
ProductDefinition: Object.freeze({
0 : { name: 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time.', value: 0 },
}),
// Code Table 4.2 Meteorological products
MeteorologicalProducts: Object.freeze({
0 : { name: 'Temperature', value: 0 },
1 : { name: 'Moisture', value: 1 },
2 : { name: 'Momentum', value: 2 },
3 : { name: 'Mass', value: 3 },
4 : { name: 'Short wave radiation', value: 4 },
5 : { name: 'Long wave radiation', value: 5 },
6 : { name: 'Cloud', value: 6 },
7 : { name: 'Thermodynamic stability indices', value: 7 },
13 : { name: 'Aerosols', value: 13 },
14 : { name: 'Trace gases (e.g. Ozone, CO2)', value: 14 },
15 : { name: 'Radar', value: 15 },
16 : { name: 'Forecast Radar Imagery', value: 16 },
17 : { name: 'Electrodynamics', value: 17 },
18 : { name: 'Nuclear/radiology', value: 18 },
19 : { name: ' Physical atmospheric Properties', value: 19 },
20 : { name: 'Atmospheric Chemical Constituents', value: 20 },
190: { name: 'CCITT IA5 string', value: 190 },
191: { name: 'Miscellaneous', value: 191 },
192: { name: 'Covariance', value: 192 },
255: { name: 'Missing', value: 255 },
}),
// Code Table 4.2-0.2 Discipline 0 (Meteorological) Category 2 (Momentum)
MeteorologicalProductsMomentumParameter: Object.freeze({
0 : { name: 'Wind Direction (from which blowing)', value: 0, unit: '°', abbrev: 'WDIR' },
1 : { name: 'Wind Speed', value: 1, unit: 'm s-1', abbrev: 'WIND' },
2 : { name: 'U-Component of Wind', value: 2, unit: 'm s-1', abbrev: 'UGRD' },
3 : { name: 'V-Component of Wind', value: 3, unit:'m s-1', abbrev: 'VGRD ' },
4 : { name: 'Stream Function', value: 4, unit: 'm2 s-1', abbrev: 'STRM' },
5 : { name: 'Velocity Potential', value: 5, unit: 'm2 s-1', abbrev: 'VPOT' },
6 : { name: 'Montgomery Stream Function', value: 6, unit:'m2 s-2', abbrev: 'MNTSF ' },
7 : { name: 'Sigma Coordinate Vertical Velocity', value: 7, unit: 's-1', abbrev: 'SGCVV' },
8 : { name: 'Vertical Velocity (Pressure)', value: 8, unit: 'Pa s-1', abbrev: 'VVEL' },
9 : { name: 'Vertical Velocity (Geometric)', value: 9, unit:'m s-1', abbrev: 'DZDT' },
10 : { name: 'Absolute Vorticity', value: 10, unit: 's-1', abbrev: 'ABSV' },
11 : { name: 'Absolute Divergence', value: 11, unit: 's-1', abbrev: 'ABSD' },
12 : { name: 'Relative Vorticity', value: 12, unit: 's-1', abbrev: 'RELV' },
13 : { name: 'Relative Divergence', value: 13, unit: 's-1', abbrev: 'RELD' },
14 : { name: 'Potential Vorticity', value: 14, unit: 'K m2 kg-1 s-1', abbrev: 'PVORT' },
15 : { name: 'Vertical U-Component Shear', value: 15, unit: 's-1', abbrev: 'VUCSH' },
16 : { name: 'Vertical V-Component Shear', value: 16, unit: 's-1', abbrev: 'VVCSH' },
17 : { name: 'Momentum Flux, U-Component', value: 17, unit:'N m-2', abbrev: 'UFLX' },
18 : { name: 'Momentum Flux, V-Component', value: 18, unit:'N m-2', abbrev: 'VFLX' },
19 : { name: 'Wind Mixing Energy', value: 19, unit: 'J', abbrev: 'WMIXE' },
20 : { name: 'Boundary Layer Dissipation', value: 20, unit: 'W m-2', abbrev: 'BLYDP' },
22 : { name: 'Wind Speed (Gust)', value: 22, unit: 'm s-1', abbrev: 'GUST' },
23 : { name: 'U-Component of Wind (Gust)', value: 23, unit:'m s-1', abbrev: 'UGUST' },
24 : { name: 'V-Component of Wind (Gust)', value: 24, unit:'m s-1', abbrev: 'VGUST' },
25 : { name: 'Vertical Speed Shear', value: 25, unit:'s-1', abbrev: 'VWSH' },
26 : { name: 'Horizontal Momentum Flux', value: 26, unit:'N m-2', abbrev: 'MFLX' },
27 : { name: 'U-Component Storm Motion', value: 27, unit:'m s-1', abbrev: 'USTM' },
28 : { name: 'V-Component Storm Motion', value: 28, unit:'m s-1', abbrev: 'VSTM' },
29 : { name: 'Drag Coefficient', value: 29, unit:'Numeric', abbrev: 'CD' },
30 : { name: 'Frictional Velocity', value: 30, unit:'m s-1', abbrev: 'FRICV' },
31 : { name: 'Turbulent Diffusion Coefficient for Momentum', value: 31, unit:'m2 s-1', abbrev: 'TDCMOM' },
32 : { name: 'Eta Coordinate Vertical Velocity', value: 32, unit:'s-1', abbrev: 'ETACVV' },
33 : { name: 'Wind Fetch', value: 33, unit:'m', abbrev: 'WINDF' },
34 : { name: 'Normal Wind Component', value: 34, unit: 'm s-1', abbrev: 'NWIND' },
35 : { name: 'Tangential Wind Component', value: 35, unit:'m s-1', abbrev: 'TWIND' },
36 : { name: 'Amplitude Function for Rossby Wave Envelope for Meridional Wind', value: 36, unit:'m s-1', abbrev: 'AFRWE' },
37 : { name: 'Northward Turbulent Surface Stress', value: 37, unit:'N m-2 s', abbrev: 'NTSS' },
38 : { name: 'Eastward Turbulent Surface Stress', value: 38, unit:'N m-2 s', abbrev: 'ETSS' },
39 : { name: 'Eastward Wind Tendency Due to Parameterizations', value: 39, unit:'m s-2', abbrev: 'EWTPARM' },
40 : { name: 'Northward Wind Tendency Due to Parameterizations', value: 40, unit:'m s-2', abbrev: 'NWTPARM' },
41 : { name: 'U-Component of Geostrophic Wind', value: 41, unit:'m s-1', abbrev: 'UGWIND' },
42 : { name: 'V-Component of Geostrophic Wind', value: 42, unit:'m s-1', abbrev: 'VGWIND' },
43 : { name: 'Geostrophic Wind Direction', value: 43, unit:'°', abbrev: 'GEOWD' },
44 : { name: 'Geostrophic Wind Speed', value: 44, unit:'m s-1', abbrev: 'GEOWS' },
45 : { name: 'Unbalanced Component of Divergence', value: 45, unit:'s-1', abbrev: 'UNDIV' },
46 : { name: 'Vorticity Advection', value: 46, unit:'s-2', abbrev: 'VORTADV' },
192: { name: 'Vertical Speed Shear', value: 192, unit:'s-1', abbrev: 'VWSH' },
193: { name: 'Horizontal Momentum Flux', value: 193, unit:'N m-2', abbrev: 'MFLX' },
194: { name: 'U-Component Storm Motion', value: 194, unit:'m s-1', abbrev: 'USTM' },
195: { name: 'V-Component Storm Motion', value: 195, unit:'m s-1', abbrev: 'VSTM' },
196: { name: 'Drag Coefficient', value: 196, unit: 'non-dim', abbrev: 'CD' },
197: { name: 'Frictional Velocity', value: 197, abbrev: 'm s-1', abbrev: 'FRICV' },
198: { name: 'Latitude of U Wind Component of Velocity', value: 198, unit:'deg', abbrev: 'LAUV' },
199: { name: 'Longitude of U Wind Component of Velocity', value: 199, unit:'deg', abbrev: 'LOUV' },
200: { name: 'Latitude of V Wind Component of Velocity', value: 200, unit:'deg', abbrev: 'LAVV' },
201: { name: 'Longitude of V Wind Component of Velocity', value: 201, unit:'deg', abbrev: 'LOVV' },
202: { name: 'Latitude of Presure Point', value: 202, unit:'deg', abbrev: 'LAPP' },
203: { name: 'Longitude of Presure Point', value: 203, unit:'deg', abbrev: 'LOPP' },
204: { name: 'Vertical Eddy Diffusivity Heat exchange', value: 204, unit:'m2 s-1', abbrev: 'VEDH' },
205: { name: 'Covariance between Meridional and Zonal Components of the wind.', value: 205, unit:'m2 s-2', abbrev: 'COVMZ' },
206: { name: 'Covariance between Temperature and Zonal Components of the wind.', value: 206, unit:'K*m s-1', abbrev: 'COVTZ' },
207: { name: 'Covariance between Temperature and Meridional Components of the wind.', value: 207, unit:'K*m s-1', abbrev: 'COVTM' },
208: { name: 'Vertical Diffusion Zonal Acceleration', value: 208, unit: 'm s-2', abbrev: 'VDFUA' },
209: { name: 'Vertical Diffusion Meridional Acceleration', value: 209, unit: 'm s-2', abbrev: 'VDFVA' },
210: { name: 'Gravity wave drag zonal acceleration', value: 210, unit: 'm s-2', abbrev: 'GWDU' },
211: { name: 'Gravity wave drag meridional acceleration', value: 211, unit: 'm s-2', abbrev: 'GWDV' },
212: { name: 'Convective zonal momentum mixing acceleration', value: 212, unit: 'm s-2', abbrev: 'CNVU' },
213: { name: 'Convective meridional momentum mixing acceleration', value: 213, unit: 'm s-2', abbrev: 'CNVV' },
214: { name: 'Tendency of vertical velocity', value: 214, unit:'m s-2', abbrev: 'WTEND' },
215: { name: 'Omega (Dp/Dt) divide by density', value: 215, unit:'K', abbrev: 'OMGALF' },
216: { name: 'Convective Gravity wave drag zonal acceleration', value: 216, unit: 'm s-2', abbrev: 'CNGWDU' },
217: { name: 'Convective Gravity wave drag meridional acceleration', value: 217, unit: 'm s-2', abbrev: 'CNGWDV' },
218: { name: 'Velocity Point Model Surface', value: 218, abbrev:'LMV' },
219: { name: 'Potential Vorticity (Mass-Weighted)', value: 219, unit:'1/s/m', abbrev: 'PVMWW' },
220: { name: 'Hourly Maximum of Upward Vertical Velocity in the lowest 400hPa', value: 220, unit:'m s-1', abbrev: 'MAXUVV' },
221: { name: 'Hourly Maximum of Downward Vertical Velocity in the lowest 400hPa', value: 221, unit:'m s-1', abbrev: 'MAXDVV' },
222: { name: 'U Component of Hourly Maximum 10m Wind Speed', value: 222, unit:'m s-1', abbrev: 'MAXUW' },
223: { name: 'V Component of Hourly Maximum 10m Wind Speed', value: 223, unit:'m s-1', abbrev: 'MAXVW' },
224: { name: 'Ventilation Rate', value: 224, unit:'m2 s-1', abbrev: 'VRATE' },
225: { name: 'Transport Wind Speed', value: 225, unit:'m s-1', abbrev: 'TRWSPD' },
226: { name: 'Transport Wind Direction', value: 226, unit:'Deg', abbrev: 'TRWDIR' },
227: { name: 'Earliest Reasonable Arrival Time (10% exceedance)', value: 227, unit:'s', abbrev: 'TOA10' },
228: { name: 'Most Likely Arrival Time (50% exceedance)', value: 228, unit:'s', abbrev: 'TOA50' },
229: { name: 'Most Likely Departure Time (50% exceedance)', value: 229, unit:'s', abbrev: 'TOD50' },
230: { name: 'Latest Reasonable Departure Time (90% exceedance)', value: 230, unit:'s', abbrev: 'TOD90' },
231: { name: 'Tropical Wind Direction', value: 231, unit:'°', abbrev: 'TPWDIR' },
232: { name: 'Tropical Wind Speed', value: 232, unit:'m s-1', abbrev: 'TPWSPD' },
255: { name: 'Missing', value: 255 },
}),
MeteorologicalProductsCloudsCategory: Object.freeze({
0 : { value: 0, name: 'Cloud Ice', unit: 'kg m-2', abbrev: 'CICE' },
1 : { value: 1, name: 'Total Cloud Cover', unit: '%', abbrev: 'TCDC' },
2 : { value: 2, name: 'Convective Cloud Cover', unit: '%', abbrev: 'CDCON' },
3 : { value: 3, name: 'Low Cloud Cover', unit: '%', abbrev: 'LCDC' },
4 : { value: 4, name: 'Medium Cloud Cover', unit: '%', abbrev: 'MCDC' },
5 : { value: 5, name: 'High Cloud Cover', unit: '%', abbrev: 'HCDC' },
6 : { value: 6, name: 'Cloud Water', unit: 'kg m-2', abbrev: 'CWAT' },
7 : { value: 7, name: 'Cloud Amount', unit: '%' , abbrev: 'CDCA' },
8 : { value: 8, name: 'Cloud Type', unit: 'See Table 4.203', abbrev: 'CDCT' },
9 : { value: 9, name: 'Thunderstorm Maximum Tops', unit: 'm', abbrev: 'TMAXT' },
10 : { value: 10, name: 'Thunderstorm Coverage', unit: 'See Table 4.204', abbrev: 'THUNC' },
11 : { value: 11, name: 'Cloud Base', unit: 'm', abbrev: 'CDCB' },
12 : { value: 12, name: 'Cloud Top', unit: 'm', abbrev: 'CDCTOP' },
13 : { value: 13, name: 'Ceiling', unit: 'm', abbrev: 'CEIL' },
14 : { value: 14, name: 'Non-Convective Cloud Cover', unit: '%', abbrev: 'CDLYR' },
15 : { value: 15, name: 'Cloud Work Function', unit: 'J kg-1', abbrev: 'CWORK' },
16 : { value: 16, name: 'Convective Cloud Efficiency', unit: 'Proportion', abbrev: 'CUEFI' },
17 : { value: 17, name: 'Total Condensate * - Parameter deprecated', unit: 'kg kg-1 ', abbrev: 'TCONDO' },
18 : { value: 18, name: 'Total Column-Integrated Cloud Water * - Parameter deprecated', unit: 'kg m-2 ', abbrev: 'TCOLWO' },
19 : { value: 19, name: 'Total Column-Integrated Cloud Ice * - Parameter deprecated', unit: 'kg m-2 ', abbrev: 'TCOLIO' },
20 : { value: 20, name: 'Total Column-Integrated Condensate * - Parameter deprecated', unit: 'kg m-2 ', abbrev: 'TCOLC' },
21 : { value: 21, name: 'Ice fraction of total condensate', unit: 'Proportion ', abbrev: 'FICE' },
22 : { value: 22, name: 'Cloud Cover', unit: '%', abbrev: 'CDCC' },
23 : { value: 23, name: 'Cloud Ice Mixing Ratio * - Parameter deprecated', unit: 'kg kg-1', abbrev: 'CDCIMR' },
24 : { value: 24, name: 'Sunshine Numeric', abbrev: 'SUNS' },
25 : { value: 25, name: 'Horizontal Extent of Cumulonimbus (CB)', unit: '%', abbrev: 'CBHE' },
26 : { value: 26, name: 'Height of Convective Cloud Base', unit: 'm', abbrev: 'HCONCB' },
27 : { value: 27, name: 'Height of Convective Cloud Top', unit: 'm', abbrev: 'HCONCT' },
28 : { value: 28, name: 'Number Concentration of Cloud Droplets', unit: 'kg-1', abbrev: 'NCONCD' },
29 : { value: 29, name: 'Number Concentration of Cloud Ice', unit: 'kg-1', abbrev: 'NCCICE' },
30 : { value: 30, name: 'Number Density of Cloud Droplets', unit: 'm-3', abbrev: 'NDENCD' },
31 : { value: 31, name: 'Number Density of Cloud Ice', unit: 'm-3', abbrev: 'NDCICE' },
32 : { value: 32, name: 'Fraction of Cloud Cover', unit: 'Numeric', abbrev: 'FRACCC' },
33 : { value: 33, name: 'Sunshine Duration', unit: 's', abbrev: 'SUNSD' },
34 : { value: 34, name: 'Surface Long Wave Effective Total Cloudiness', unit: 'Numeric', abbrev: 'SLWTC' },
35 : { value: 35, name: 'Surface Short Wave Effective Total Cloudiness', unit: 'Numeric', abbrev: 'SSWTC' },
36 : { value: 36, name: 'Fraction of Stratiform Precipitation Cover', unit: 'Proportion', abbrev: 'FSTRPC' },
37 : { value: 37, name: 'Fraction of Convective Precipitation Cover', unit: 'Proportion', abbrev: 'FCONPC' },
38 : { value: 38, name: 'Mass Density of Cloud Droplets', unit: 'kg m-3', abbrev: 'MASSDCD' },
39 : { value: 39, name: 'Mass Density of Cloud Ice', unit: 'kg m-3', abbrev: 'MASSDCI' },
40 : { value: 40, name: 'Mass Density of Convective Cloud Water Droplets', unit: 'kg m-3', abbrev: 'MDCCWD' },
47 : { value: 47, name: 'Volume Fraction of Cloud Water Droplets', unit: 'Numeric', abbrev: 'VFRCWD' },
48 : { value: 48, name: 'Volume Fraction of Cloud Ice Particles', unit: 'Numeric', abbrev: 'VFRCICE' },
49 : { value: 49, name: 'Volume Fraction of Cloud (Ice and/or Water)', unit: 'Numeric', abbrev: 'VFRCIW' },
192: { value: 192, name: 'Non-Convective Cloud Cover', unit: '%', abbrev: 'CDLYR' },
193: { value: 193, name: 'Cloud Work Function', unit: 'J kg-1', abbrev: 'CWORK' },
194: { value: 194, name: 'Convective Cloud Efficiency', unit: 'non-dim', abbrev: 'CUEFI' },
195: { value: 195, name: 'Total Condensate', unit: 'kg kg-1', abbrev: 'TCOND' },
196: { value: 196, name: 'Total Column-Integrated Cloud Water', unit: 'kg m-2', abbrev: 'TCOLW' },
197: { value: 197, name: 'Total Column-Integrated Cloud Ice', unit: 'kg m-2', abbrev: 'TCOLI' },
198: { value: 198, name: 'Total Column-Integrated Condensate', unit: 'kg m-2', abbrev: 'TCOLC' },
199: { value: 199, name: 'Ice fraction of total condensate', unit: 'non-dim', abbrev: 'FICE' },
200: { value: 200, name: 'Convective Cloud Mass Flux', unit:'Pa s-1', abbrev: 'MFLUX' },
201: { value: 201, name: 'Sunshine Duration', unit: 's', abbrev: 'SUNSD' },
255: { value: 255, name: 'Missing' }
}),
// Code Table 4.3 Type of generating process
GeneratingProcessType: Object.freeze({
0 : { name: 'Analysis', value: 0 },
1 : { name: 'Initialization', value: 1 },
2 : { name: 'Forecast', value: 2 },
3 : { name: 'Bias Corrected Forecast', value: 3 },
4 : { name: 'Ensemble Forecast', value: 4 },
5 : { name: 'Probability Forecast', value: 5 },
6 : { name: 'Forecast Error', value: 6 },
7 : { name: 'Analysis Error', value: 7 },
8 : { name: 'Observation', value: 8 },
9 : { name: 'Climatological', value: 9 },
10 : { name: 'Probability-Weighted Forecast', value: 10 },
11 : { name: 'Bias-Corrected Ensemble Forecast', value: 11 },
12 : { name: 'Post-processed Analysis ', value: 12 },
13 : { name: 'Post-processed Forecast', value: 13 },
14 : { name: 'Nowcast', value: 14 },
15 : { name: 'Hindcast', value: 15 },
16 : { name: 'Physical Retrieval', value: 16 },
17 : { name: 'Regression Analysis', value: 17 },
18 : { name: 'Difference Between Two Forecasts', value: 18 },
192: { name: 'Forecast Confidence Indicator', value: 192 },
193: { name: 'Probability-matched Mean', value: 193 },
194: { name: 'Neighborhood Probability', value: 194 },
195: { name: 'Bias-Corrected and Downscaled Ensemble Forecast', value: 195 },
196: { name: 'Perturbed Analysis for Ensemble Initialization', value: 196 },
197: { name: 'Ensemble Agreement Scale Probability', value: 197 },
198: { name: 'Post-Processed Deterministic-Expert-Weighted Forecast', value: 198 },
199: { name: 'Ensemble Forecast Based on Counting', value: 199 },
200: { name: 'Local Probability-matched Mean', value: 200 },
255: { name: 'Missing', value: 255 },
}),
// ON388 Table A (Generating Process or Model from Originating Center 7 (US-NWS, NCEP)
GeneratingProcessOrModelFromCenter7: Object.freeze({
2 : { name: 'Ultra Violet Index Model', value: 2 },
3 : { name: 'NCEP/ARL Transport and Dispersion Model', value: 3 },
4 : { name: 'NCEP/ARL Smoke Model', value: 4 },
5 : { name: 'Satellite Derived Precipitation and temperatures, from IR ', value: 5 },
6 : { name: 'NCEP/ARL Dust Model', value: 6 },
10 : { name: 'Global Wind-Wave Forecast Model', value: 10 },
11 : { name: 'Global Multi-Grid Wave Model (Static Grids)', value: 11 },
12 : { name: 'Probabilistic Storm Surge (P-Surge)', value: 12 },
13 : { name: 'Hurricane Multi-Grid Wave Model', value: 13 },
14 : { name: 'Extra-tropical Storm Surge Atlantic Domain', value: 14 },
15 : { name: 'Nearshore Wave Prediction System (NWPS)', value: 15 },
16 : { name: 'Extra-Tropical Storm Surge (ETSS)', value: 16 },
17 : { name: 'Extra-tropical Storm Surge Pacific Domain', value: 17 },
18 : { name: 'Probabilistic Extra-Tropical Storm Surge (P-ETSS)', value: 18 },
19 : { name: 'Limited-area Fine Mesh (LFM) analysis', value: 19 },
20 : { name: 'Extra-tropical Storm Surge Micronesia Domain', value: 20 },
25 : { name: 'Snow Cover Analysis', value: 25 },
30 : { name: 'Forecaster generated field', value: 30 },
31 : { name: 'Value added post processed field', value: 31 },
42 : { name: 'Global Optimum Interpolation Analysis (GOI) from GFS model', value: 42 },
43 : { name: 'Global Optimum Interpolation Analysis (GOI) from "Final" run ', value: 43 },
44 : { name: 'Sea Surface Temperature Analysis', value: 44 },
45 : { name: 'Coastal Ocean Circulation Model', value: 45 },
46 : { name: 'HYCOM - Global', value: 46 },
47 : { name: 'HYCOM - North Pacific basin', value: 47 },
48 : { name: 'HYCOM - North Atlantic basin', value: 48 },
49 : { name: 'Ozone Analysis from TIROS Observations ', value: 49 },
52 : { name: 'Ozone Analysis from Nimbus 7 Observations ', value: 52 },
53 : { name: 'LFM-Fourth Order Forecast Model', value: 53 },
64 : { name: 'Regional Optimum Interpolation Analysis (ROI)', value: 64 },
68 : { name: '80 wave triangular, 18-layer Spectral model from GFS model', value: 68 },
69 : { name: '80 wave triangular, 18 layer Spectral model from "Medium Range Forecast" run', value: 69 },
70 : { name: 'Quasi-Lagrangian Hurricane Model (QLM)', value: 70 },
71 : { name: 'Hurricane Weather Research and Forecasting (HWRF) Model', value: 71 },
72 : { name: 'Hurricane Non-Hydrostatic Multiscale Model on the B Grid (HNMMB)', value: 72 },
73 : { name: 'Fog Forecast model - Ocean Prod. Center', value: 73 },
74 : { name: 'Gulf of Mexico Wind/Wave', value: 74 },
75 : { name: 'Gulf of Alaska Wind/Wave', value: 75 },
76 : { name: 'Bias corrected Medium Range Forecast', value: 76 },
77 : { name: '126 wave triangular, 28 layer Spectral model from GFS model', value: 77 },
78 : { name: '126 wave triangular, 28 layer Spectral model from "Medium Range Forecast" run', value: 78 },
79 : { name: 'Backup from the previous run', value: 79 },
80 : { name: '62 wave triangular, 28 layer Spectral model from "Medium Range Forecast" run', value: 80 },
81 : { name: 'Analysis from GFS (Global Forecast System)', value: 81 },
82 : { name: 'Analysis from GDAS (Global Data Assimilation System)', value: 82 },
83 : { name: 'High Resolution Rapid Refresh (HRRR)', value: 83 },
84 : { name: 'MESO NAM Model (currently 12 km)', value: 84 },
85 : { name: 'Real Time Ocean Forecast System (RTOFS)', value: 85 },
86 : { name: 'Early Hurricane Wind Speed Probability Model', value: 86 },
87 : { name: 'CAC Ensemble Forecasts from Spectral (ENSMB)', value: 87 },
88 : { name: 'NOAA Wave Watch III (NWW3) Ocean Wave Model', value: 88 },
89 : { name: 'Non-hydrostatic Meso Model (NMM) (Currently 8 km)', value: 89 },
90 : { name: '62 wave triangular, 28 layer spectral model extension of the "Medium Range Forecast" run', value: 90 },
91 : { name: '62 wave triangular, 28 layer spectral model extension of the GFS model', value: 91 },
92 : { name: '62 wave triangular, 28 layer spectral model run from the "Medium Range Forecast" final analysis', value: 92 },
93 : { name: '62 wave triangular, 28 layer spectral model run from the T62 GDAS analysis of the "Medium Range Forecast" run', value: 93 },
94 : { name: 'T170/L42 Global Spectral Model from MRF run', value: 94 },
95 : { name: 'T126/L42 Global Spectral Model from MRF run', value: 95 },
96 : { name: 'Global Forecast System Model T1534 - Forecast hours 00-384 T574 - Forecast hours 00-192 T190 - Forecast hours 204-384', value: 96 },
98 : { name: 'Climate Forecast System Model -- Atmospheric model (GFS) coupled to a multi level ocean model . Currently GFS spectral model at T62, 64 levels coupled to 40 level MOM3 ocean model.', value: 98 },
99 : { name: 'Miscellaneous Test ID', value: 99 },
100: { name: 'Miscellaneous Test ID', value: 100 },
101: { name: 'Conventional Observation Re-Analysis (CORE)', value: 101 },
104: { name: 'National Blend GRIB', value: 104 },
105: { name: 'Rapid Refresh (RAP)', value: 105 },
107: { name: 'Global Ensemble Forecast System (GEFS)', value: 107 },
108: { name: 'LAMP', value: 108 },
109: { name: 'RTMA (Real Time Mesoscale Analysis)', value: 109 },
110: { name: 'NAM Model - 15km version', value: 110 },
111: { name: 'NAM model, generic resolution (Used in SREF processing)', value: 111 },
112: { name: 'WRF-NMM model, generic resolution (Used in various runs) NMM=Nondydrostatic Mesoscale Model (NCEP)', value: 112 },
113: { name: 'Products from NCEP SREF processing', value: 113 },
114: { name: 'NAEFS Products from joined NCEP, CMC global ensembles', value: 114 },
115: { name: 'Downscaled GFS from NAM eXtension', value: 115 },
116: { name: 'WRF-EM model, generic resolution (Used in various runs) EM - Eulerian Mass-core (NCAR - aka Advanced Research WRF)', value: 116 },
117: { name: 'NEMS GFS Aerosol Component', value: 117 },
118: { name: 'URMA (UnRestricted Mesoscale Analysis)', value: 118 },
119: { name: 'WAM (Whole Atmosphere Model)', value: 119 },
120: { name: 'Ice Concentration Analysis', value: 120 },
121: { name: 'Western North Atlantic Regional Wave Model', value: 121 },
122: { name: 'Alaska Waters Regional Wave Model', value: 122 },
123: { name: 'North Atlantic Hurricane Wave Model', value: 123 },
124: { name: 'Eastern North Pacific Regional Wave Model', value: 124 },
125: { name: 'North Pacific Hurricane Wave Model', value: 125 },
126: { name: 'Sea Ice Forecast Model', value: 126 },
127: { name: 'Lake Ice Forecast Model', value: 127 },
128: { name: 'Global Ocean Forecast Model', value: 128 },
129: { name: 'Global Ocean Data Analysis System (GODAS)', value: 129 },
130: { name: 'Merge of fields from the RUC, NAM, and Spectral Model ', value: 130 },
131: { name: 'Great Lakes Wave Model', value: 131 },
132: { name: 'High Resolution Ensemble Forecast (HREF)', value: 132 },
133: { name: 'Great Lakes Short Range Wave Model', value: 133 },
140: { name: 'North American Regional Reanalysis (NARR)', value: 140 },
141: { name: 'Land Data Assimilation and Forecast System', value: 141 },
150: { name: 'NWS River Forecast System (NWSRFS)', value: 150 },
151: { name: 'NWS Flash Flood Guidance System (NWSFFGS)', value: 151 },
152: { name: 'WSR-88D Stage II Precipitation Analysis', value: 152 },
153: { name: 'WSR-88D Stage III Precipitation Analysis', value: 153 },
180: { name: 'Quantitative Precipitation Forecast generated by NCEP', value: 180 },
181: { name: 'River Forecast Center Quantitative Precipitation Forecast mosaic generated by NCEP', value: 181 },
182: { name: 'River Forecast Center Quantitative Precipitation estimate mosaic generated by NCEP', value: 182 },
183: { name: 'NDFD product generated by NCEP/HPC', value: 183 },
184: { name: 'Climatological Calibrated Precipitation Analysis - CCPA', value: 184 },
190: { name: 'National Convective Weather Diagnostic generated by NCEP/AWC', value: 190 },
191: { name: 'Current Icing Potential automated product genterated by NCEP/AWC', value: 191 },
192: { name: 'Analysis product from NCEP/AWC', value: 192 },
193: { name: 'Forecast product from NCEP/AWC', value: 193 },
195: { name: 'Climate Data Assimilation System 2 (CDAS2)', value: 195 },
196: { name: 'Climate Data Assimilation System 2 (CDAS2) - used for regeneration runs', value: 196 },
197: { name: 'Climate Data Assimilation System (CDAS)', value: 197 },
198: { name: 'Climate Data Assimilation System (CDAS) - used for regeneration runs', value: 198 },
199: { name: 'Climate Forecast System Reanalysis (CFSR) -- Atmospheric model (GFS) coupled to a multi level ocean, land and seaice model. Currently GFS spectral model at T382, 64 levels coupled to 40 level MOM4 ocean model.', value: 199 },
200: { name: 'CPC Manual Forecast Product', value: 200 },
201: { name: 'CPC Automated Product', value: 201 },
210: { name: 'EPA Air Quality Forecast - Currently North East US domain', value: 210 },
211: { name: 'EPA Air Quality Forecast - Currently Eastern US domain', value: 211 },
215: { name: 'SPC Manual Forecast Product', value: 215 },
220: { name: 'NCEP/OPC automated product', value: 220 },
255: { name: 'Missing', value: 255 },
}),
// Code Table 4.4 Indicator of unit of time range
TimeRange: Object.freeze({
0 : { name: 'Minute', value: 0 },
1 : { name: 'Hour', value: 1 },
2 : { name: 'Day', value: 2 },
3 : { name: 'Month', value: 3 },
4 : { name: 'Year', value: 4 },
5 : { name: 'Decade (10 Years)', value: 5 },
6 : { name: 'Normal (30 Years)', value: 6 },
7 : { name: 'Century (100 Years)', value: 7 },
10 : { name: '3 Hours', value: 10 },
11 : { name: '6 Hours', value: 11 },
12 : { name: '12 Hours', value: 12 },
13 : { name: 'Second', value: 13 },
255: { name: 'Missing', value: 255 },
}),
// Code Table 4.5 Fixed surface types and units
SurfaceType: Object.freeze({
1 : { value: 1, name: 'Ground or Water Surface' },
2 : { value: 2, name: 'Cloud Base Level' },
3 : { value: 3, name: 'Level of Cloud Tops' },
4 : { value: 4, name: 'Level of 0o C Isotherm' },
5 : { value: 5, name: 'Level of Adiabatic Condensation Lifted from the Surface' },
6 : { value: 6, name: 'Maximum Wind Level' },
7 : { value: 7, name: 'Tropopause' },
8 : { value: 8, name: 'Nominal Top of the Atmosphere' },
9 : { value: 9, name: 'Sea Bottom' },
10 : { value: 10, name: 'Entire Atmosphere' },
11 : { value: 11, name: 'Cumulonimbus Base (CB)', unit: 'm' },
12 : { value: 12, name: 'Cumulonimbus Top (CT)', unit: 'm' },
13 : { value: 13, name: 'Lowest level where vertically integrated cloud cover exceeds the specified percentage (cloud: base for a given percentage cloud cover)' },
14 : { value: 14, name: 'Level of free convection (LFC)' },
15 : { value: 15, name: 'Convection condensation level (CCL)' },
16 : { value: 16, name: 'Level of neutral buoyancy or equilibrium (LNB)' },
20 : { value: 20, name: 'Isothermal Level', unit: 'K' },
21 : { value: 21, name: 'Lowest level where mass density exceeds the specified value (base for a given threshold of mass density)', unit: 'kg m-3' },
22 : { value: 22, name: 'Highest level where mass density exceeds the specified value (top for a given threshold of mass density)', unit: 'kg m-3' },
23 : { value: 23, name: 'Lowest level where air concentration exceeds the specified value (base for a given threshold of air concentration)', unit: 'Bq m-3' },
24 : { value: 24, name: 'Highest level where air concentration exceeds the specified value (top for a given threshold of air concentration)', unit: 'Bq m-3' },
25 : { value: 25, name: 'Highest level where radar reflectivity exceeds the specified value (echo top for a given threshold of reflectivity)', unit: 'dBZ' },
100: { value: 100, name: 'Isobaric Surface', unit: 'Pa' },
101: { value: 101, name: 'Mean Sea Level' },
102: { value: 102, name: 'Specific Altitude Above Mean Sea Level', unit: 'm' },
103: { value: 103, name: 'Specified Height Level Above Ground', unit: 'm' },
104: { value: 104, name: 'Sigma Level' },
105: { value: 105, name: 'Hybrid Level' },
106: { value: 106, name: 'Depth Below Land Surface', unit: 'm' },
107: { value: 107, name: 'Isentropic (theta) Level', unit: 'K' },
108: { value: 108, name: 'Level at Specified Pressure Difference from Ground to Level', unit: 'Pa' },
109: { value: 109, name: 'Potential Vorticity Surface', unit: 'K m2 kg-1 s-1' },
111: { value: 111, name: 'Eta Level' },
113: { value: 113, name: 'Logarithmic Hybrid Level' },
114: { value: 114, name: 'Snow Level', unit: 'Numeric' },
115: { value: 115, name: 'Sigma height level' },
117: { value: 117, name: 'Mixed Layer Depth', unit: 'm' },
118: { value: 118, name: 'Hybrid Height Level' },
119: { value: 119, name: 'Hybrid Pressure Level' },
150: { value: 150, name: 'Generalized Vertical Height Coordinate' },
151: { value: 151, name: 'Soil level (See Note 5)', unit: 'Numeric' },
160: { value: 160, name: 'Depth Below Sea Level', unit: 'm' },
161: { value: 161, name: 'Depth Below Water Surface', unit: 'm' },
162: { value: 162, name: 'Lake or River Bottom' },
163: { value: 163, name: 'Bottom Of Sediment Layer' },
164: { value: 164, name: 'Bottom Of Thermally Active Sediment Layer' },
165: { value: 165, name: 'Bottom Of Sediment Layer Penetrated By Thermal Wave' },
166: { value: 166, name: 'Mixing Layer' },
167: { value: 167, name: 'Bottom of Root Zone' },
168: { value: 168, name: 'Ocean Model Level', unit: 'Numeric' },
169: { value: 169, name: 'Ocean level defined by water density (sigma-theta) difference from near-surface to level (see Note 7)', unit: 'kg m-3' },
170: { value: 170, name: 'Ocean level defined by water potential temperature difference from near-surface to level (see Note 7)', unit: 'K' },
174: { value: 174, name: 'Top Surface of Ice on Sea, Lake or River' },
175: { value: 175, name: 'Top Surface of Ice, under Snow, on Sea, Lake or River' },
176: { value: 176, name: 'Bottom Surface (underside) Ice on Sea, Lake or River' },
177: { value: 177, name: 'Deep Soil (of indefinite depth)' },
179: { value: 179, name: 'Top Surface of Glacier Ice and Inland Ice' },
180: { value: 180, name: 'Deep Inland or Glacier Ice (of indefinite depth)' },
181: { value: 181, name: 'Grid Tile Land Fraction as a Model Surface' },
182: { value: 182, name: 'Grid Tile Water Fraction as a Model Surface' },
183: { value: 183, name: 'Grid Tile Ice Fraction on Sea, Lake or River as a Model Surface' },
184: { value: 184, name: 'Grid Tile Glacier Ice and Inland Ice Fraction as a Model Surface' },
200: { value: 200, name: 'Entire atmosphere (considered as a single layer)' },
201: { value: 201, name: 'Entire ocean (considered as a single layer)' },
204: { value: 204, name: 'Highest tropospheric freezing level' },
206: { value: 206, name: 'Grid scale cloud bottom level' },
207: { value: 207, name: 'Grid scale cloud top level' },
209: { value: 209, name: 'Boundary layer cloud bottom level' },
210: { value: 210, name: 'Boundary layer cloud top level' },
211: { value: 211, name: 'Boundary layer cloud layer' },
212: { value: 212, name: 'Low cloud bottom level' },
213: { value: 213, name: 'Low cloud top level' },
214: { value: 214, name: 'Low cloud layer' },
215: { value: 215, name: 'Cloud ceiling' },
220: { value: 220, name: 'Planetary Boundary Layer' },
221: { value: 221, name: 'Layer Between Two Hybrid Levels' },
222: { value: 222, name: 'Middle cloud bottom level' },
223: { value: 223, name: 'Middle cloud top level' },
224: { value: 224, name: 'Middle cloud layer' },
232: { value: 232, name: 'High cloud bottom level' },
233: { value: 233, name: 'High cloud top level' },
234: { value: 234, name: 'High cloud layer' },
235: { value: 235, name: 'Ocean Isotherm Level (1/10 ° C)' },
236: { value: 236, name: 'Layer between two depths below ocean surface' },
237: { value: 237, name: 'Bottom of Ocean Mixed Layer (m)' },
238: { value: 238, name: 'Bottom of Ocean Isothermal Layer (m)' },
239: { value: 239, name: 'Layer Ocean Surface and 26C Ocean Isothermal Level' },
240: { value: 240, name: 'Ocean Mixed Layer' },
241: { value: 241, name: 'Ordered Sequence of Data' },
242: { value: 242, name: 'Convective cloud bottom level' },
243: { value: 243, name: 'Convective cloud top level' },
244: { value: 244, name: 'Convective cloud layer' },
245: { value: 245, name: 'Lowest level of the wet bulb zero' },
246: { value: 246, name: 'Maximum equivalent potential temperature level' },
247: { value: 247, name: 'Equilibrium level' },
248: { value: 248, name: 'Shallow convective cloud bottom level' },
249: { value: 249, name: 'Shallow convective cloud top level' },
251: { value: 251, name: 'Deep convective cloud bottom level' },
252: { value: 252, name: 'Deep convective cloud top level' },
253: { value: 253, name: 'Lowest bottom level of supercooled liquid water layer' },
254: { value: 254, name: 'Highest top level of supercooled liquid water layer' },
255: { value: 255, name: 'Missing' },
}),
// Code Table 5.0
DataRepresentationTemplateNumber: Object.freeze({
0 : { name: '