-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathgrib2.js
4026 lines (3939 loc) · 203 KB
/
grib2.js
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// Author: Gerard Llorach
// License: MIT
// https://github.com/BlueNetCat/grib22json
// Official standard
// https://library.wmo.int/doc_num.php?explnum_id=10722
// All info taken from:
// https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/
// European info
// https://apps.ecmwf.int/codes/grib/format/grib2/templates/5/2
// Regulations
// https://apps.ecmwf.int/codes/grib/format/grib2/regulations/
// WMO Information Systems
// https://community.wmo.int/activity-areas/wis
// C implementation
// https://github.com/weathersource/wgrib2
class GRIB2 {
// Static tables
static tables = {
// Discipline of Processed Data
"0.0" : { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table0-0.shtml
0 : 'Meteorological Products (see Table 4.1)',
1: 'Hydrological Products (see Table 4.1)',
2: 'Land Surface Products (see Table 4.1)',
3: 'Satellite Remote Sensing Products (formerly Space Products) (see Table 4.1)',
4: 'Space Weather Products (see Table 4.1)',
10: 'Oceanographic Products (see Table 4.1)',
255: 'Missing'
},
// GRIB Master Tables Version Number
"1.0": { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table1-0.shtml
0: 'Experimental',
1: 'Version Implemented on 7 November 2001',
2: 'Version Implemented on 4 November 2003',
// ...
24: 'Version Implemented on 06 November 2019',
255: 'Missing'
},
// GRIB Local Tables Version Number
'1.1': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table1-1.shtml
0: 'Local tables not used. Only table entries and templates from the current master table are valid.',
//'1-254': 'Number of local table version used.',
255: 'Missing'
},
// Significance of Reference Time
'1.2': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table1-2.shtml
0: 'Analysis',
1: 'Start of Forecast',
2: 'Verifying Time of Forecast',
3: 'Observation Time',
//4-191: Reserved,
//192-254: Reserved for Local Use,
255: 'Missing'
},
// Production Status of Data
'1.3': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table1-3.shtml
0: 'Operational Products',
1: 'Operational Test Products',
2: 'Research Products',
3: 'Re-Analysis Products',
4: 'THORPEX Interactive Grand Global Ensemble (TIGGE)',
5: 'THORPEX Interactive Grand Global Ensemble (TIGGE) test',
6: 'S2S Operational Products',
7: 'S2S Test Products',
8: 'Uncertainties in ensembles of regional reanalysis project (UERRA)',
9: 'Uncertainties in ensembles of regional reanalysis project (UERRA) Test',
//10-191: Reserved
//192-254: Reserved for Local Use
255: 'Missing'
},
// Type of Data
'1.4': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table1-4.shtml
0: 'Analysis Products',
1: 'Forecast Products',
2: 'Analysis and Forecast Products',
3: 'Control Forecast Products',
4: 'Perturbed Forecast Products',
5: 'Control and Perturbed Forecast Products',
6: 'Processed Satellite Observations',
7: 'Processed Radar Observations',
8: 'Event Probability',
//9-191: Reserved
//192-254: Reserved for Local Use
192: 'Experimental Products',
255: 'Missing'
},
// Identification Template Number
'1.5': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table1-5.shtml
0: 'Calendar Definition',
1: 'Paleontological Offset',
2: 'Calendar Definition and Paleontological Offset',
//3-32767: Reserved
//32768-65534: Reserved for Local Use
65535: 'Missing'
},
// Type of Calendar
'1.6': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table1-6.shtml
0: 'Gregorian',
1: '360-day',
2: '365-day (see Note 1)',
3: 'Proleptic Gregorian (see Note 2)',
//4-191: Reserved
//192-254: Reserved for Local Use
255: 'Missing'
},
// Source of Grid Definition
'3.0': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-0.shtml
0: 'Specified in Code Table 3.1',
1: 'Predetermined Grid Definition - Defined by Originating Center',
//2-191: Reserved
//192-254 Reserved for Local Use
255: 'A grid definition does not apply to this product.'
},
// Grid Definition Template Number
'3.1': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-1.shtml
0: 'Latitude/Longitude (See Template 3.0) Also called Equidistant Cylindrical or Plate Caree',
1: 'Rotated Latitude/Longitude (See Template 3.1)',
2: 'Stretched Latitude/Longitude (See Template 3.2)',
3: 'Rotated and Stretched Latitude/Longitude (See Template 3.3)',
4: 'Variable Resolution Latitude/longitude (See Template 3.4)',
5: 'Variable Resolution Rotated Latitude/longitude (See Template 3.5)',
//6-9: 'Reserved',
10: 'Mercator (See Template 3.10)',
11: 'Reserved',
12: 'Transverse Mercator (See Template 3.12)',
13: 'Mercator with modelling subdomains definition (See Template 3.13)',
//14-19: 'Reserved'
20: 'Polar Stereographic Projection (Can be North or South) (See Template 3.20)',
//21-22: 'Reserved'
23: 'Polar Stereographic with modelling subdomains definition (See Template 3.23)',
//24-29: 'Reserved'
30: 'Lambert Conformal (Can be Secant, Tangent, Conical, or Bipolar) (See Template 3.30)',
31: 'Albers Equal Area (See Template 3.31)',
32: 'Reserved',
33: 'Lambert conformal with modelling subdomains definition (See Template 3.33)',
//34-39: 'Reserved'
40: 'Gaussian Latitude/Longitude (See Template 3.40)',
41: 'Rotated Gaussian Latitude/Longitude (See Template 3.41)',
42: 'Stretched Gaussian Latitude/Longitude (See Template 3.42)',
43: 'Rotated and Stretched Gaussian Latitude/Longitude (See Template 3.43)',
//44-49: 'Reserved'
50: 'Spherical Harmonic Coefficients (See Template 3.50)',
51: 'Rotated Spherical Harmonic Coefficients (See Template 3.51)',
52: 'Stretched Spherical Harmonic Coefficients (See Template 3.52)',
53: 'Rotated and Stretched Spherical Harmonic Coefficients (See Template 3.53)',
//54-59: 'Reserved'
60: 'Cubed-Sphere Gnomonic (See Template 3.60) Validation',
61: 'Spectral Mercator with modelling subdomains definition (See Template 3.61)',
62: 'Spectral Polar Stereographic with modelling subdomains definition (See Template 3.62)',
63: 'Spectral Lambert conformal with modelling subdomains definition (See Template 3.63)',
//64-89: 'Reserved'
90: 'Space View Perspective or Orthographic (See Template 3.90)',
//91-99: 'Reserved'
100: 'Triangular Grid Based on an Icosahedron (See Template 3.100)',
101: 'General Unstructured Grid (see Template 3.101)',
//102-109: 'Reserved'
110: 'Equatorial Azimuthal Equidistant Projection (See Template 3.110)',
//111-119: 'Reserved'
120: 'Azimuth-Range Projection (See Template 3.120)',
//121-139: 'Reserved'
140: 'Lambert Azimuthal Equal Area Projection (See Template 3.140)',
//141-203: 'Reserved'
204: 'Curvilinear Orthogonal Grids (See Template 3.204)',
//205-999: 'Reserved'
1000: 'Cross Section Grid with Points Equally Spaced on the Horizontal (See Template 3.1000)',
//1001-1099: 'Reserved'
1100: 'Hovmoller Diagram with Points Equally Spaced on the Horizontal (See Template 3.1100)',
//1101-1199: 'Reserved'
1200: 'Time Section Grid (See Template 3.1200)',
//1201-32767: 'Reserved'
32768: 'Rotated Latitude/Longitude (Arakawa Staggered E-Grid) (See Template 3.32768)',
//32768-65534: 'Reserved for Local Use\n'
32769: 'Rotated Latitude/Longitude (Arakawa Non-E Staggered Grid) (See Template 3.32769)',
65535: 'Missing'
},
// Shape of the Reference System
'3.2': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-2.shtml
0: 'Earth assumed spherical with radius = 6,367,470.0 m',
1: 'Earth assumed spherical with radius specified (in m) by data producer',
2: 'Earth assumed oblate spheriod 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)',
3: 'Earth assumed oblate spheriod with major and minor axes specified (in km) by data producer',
4: 'Earth assumed oblate spheriod as defined in IAG-GRS80 model (major axis = 6,378,137.0 m, minor axis = 6,356,752.314 m, f = 1/298.257222101)',
5: 'Earth assumed represented by WGS84 (as used by ICAO since 1998) (Uses IAG-GRS80 as a basis)',
6: 'Earth assumed spherical with radius = 6,371,229.0 m',
7: 'Earth assumed oblate spheroid with major and minor axes specified (in m) by data producer',
8: 'Earth model assumed spherical with radius 6,371,200 m, but the horizontal datum of the resulting Latitude/Longitude field is the WGS84 reference frame',
9: 'Earth represented by the OSGB 1936 Datum, using the Airy_1830 Spheroid, the Greenwich meridian as 0 Longitude, the Newlyn datum as mean sea level, 0 height.',
//10-191: 'Reserved'
//192-254: 'Reserved for Local Use\n'
255: 'Missing'
},
// Resolution and Component Flags
'3.3': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-3.shtml
1: ['Reserved', 'Reserved'],
2: ['Reserved', 'Reserved'],
3: ['0: i direction increments not given', '1: i direction increments given'],
4: ['0: j direction increments not given', '1: j direction increments given'],
5: ['0: Resolved u and v components of vector quantities relative to easterly and northerly directions', '1: Resolved u and v components of vector quantities relative to the defined grid in the direction of increasing x and y(or i and j) coordinates, respectively.'],
6: ['Reserved - set to zero'],
7: ['Reserved - set to zero'],
8: ['Reserved - set to zero']
// It is an int8, with bit information
// 0000 0000
//0: 'i and j direction increments not given. Resolved u and v components of vector quantities relative to easterly and northerly directions.',
// 0000 0100
//4: 'i direction increments given. j direction increments not given. Resolved u and v components of vector quantities relative to easterly and northerly directions.',
// 0000 1000
//8: 'i direction increments not given. j direction increments given. Resolved u and v components of vector quantities relative to easterly and northerly directions.',
// 0000 1100
//12: 'i and j direction increments given. Resolved u and v components of vector quantities relative to easterly and northerly directions.',
// 0001 0000
//16: 'i and j direction increments not given. Resolved u and v components of vector quantities relative to the defined grid in the direction of increasing x and y (or i and j) coordinates, respectively.',
// 0001 0100
//20: 'i direction increments given. j direction increments not given. Resolved u and v components of vector quantities relative to the defined grid in the direction of increasing x and y (or i and j) coordinates, respectively.',
// 0001 1000
//24: 'i direction increments not given. j direction increments given. Resolved u and v components of vector quantities relative to the defined grid in the direction of increasing x and y (or i and j) coordinates, respectively.',
// 0001 1100
//24: 'i and j direction increments given. Resolved u and v components of vector quantities relative to the defined grid in the direction of increasing x and y (or i and j) coordinates, respectively.'
//1-2: Reserved
//3: ['0: i direction increments not given','1: i direction increments given'],
//4: ['0: j direction increments not given','1: j direction increments given'],
//5: ['0: Resolved u and v components of vector quantities relative to easterly and northerly directions','1: Resolved u and v components of vector quantities relative to the defined grid in the direction of increasing x and y (or i and j) coordinates, respectively.'],
//6-8: Reserved - set of zero
},
// Scanning Mode
'3.4': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-4.shtml
1: ['0: Points in the first row or column scan in the +i (+x) direction','1: Points in the first row or column scan in the -i (-x) direction'],
2: ['0: Points in the first row or column scan in the -j (-y) direction','1: Points in the first row or column scan in the +j (+y) direction'],
3: ['0: Adjacent points in the i (x) direction are consecutive','1: Adjacent points in the j (y) direction are consecutive'],
4: ['0: All rows scan in the same direction','1: Adjacent rows scan in the opposite direction'],
5: ['0: Points within odd rows are not offset in i(x) direction','1: Points within odd rows are offset by Di/2 in i(x) direction'],
6: ['0: Points within even rows are not offset in i(x) direction', '1: Points within even rows are offset by Di/2 in i(x) direction'],
7: ['0: Points are not offset in j(y) direction', '1: Points are offset by Dj/2 in j(y) direction'],
8: ['0: Rows have Ni grid points and columns have Nj grid points', '1: Rows have Ni grid points if points are not offset in i direction. Rows have Ni-1 grid points if points are offset by Di/2 in i direction. Columns have Nj grid points if points are not offset in j direction. Columns have Nj-1 grid points if points are offset by Dj/2 in j direction']
// Notes:
//1. i direction - West to east along a parallel or left to right along an x-axis.
//2. j direction - South to north along a meridian, or bottom to top along a y-axis.
//3. If bit number 4 is set, the first row scan is defined by previous flags.
//4. La1 and Lo1 define the first row, which is an odd row.
//5. Di and Dj are assumed to be positive, with the direction of i and j being given by bits 1 and 2.
//6. Bits 5 through 8 may be used to generate staggered grids, such as Arakawa grids (see Attachment, Volume 1.2, Part A, Att. GRIB).
//7. If any of bits 5, 6, 7 or 8 are set, Di and Dj are not optional.
},
// Projection Center
'3.5': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-5.shtml
1: ['0: North Pole is on the projection plane', '1: South Pole is on the projection plane'],
2: ['0: Only one projection center is used', '1: Projection is bi-polar and symmetric']
//3-8: Reserved
},
// Spectral Data Representation Type
'3.6': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-6.shtml
1: 'Legendre Functions',
2: 'Bi-Fourier representation'
},
// Spectral Data Representation Mode
'3.7': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-7.shtml
1: 'Mathematical formula. Check online: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-7.shtml'
},
// Grid Point Position
'3.8': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-8.shtml
0: 'Grid points at triangle vertices',
1: 'Grid points at centers of triangles',
2: 'Grid points at midpoints of triangle sides',
//3-191: 'Reserved',
//192-254: 'Reserved for Local Use',
255: 'Missing',
},
// Numbering Order of Diamonds
'3.9': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-9.shtml
1: ['0: Clockwise orientation', '1: Counter-clockwise orientation']
},
// Scanning Mode for One Diamond
'3.10': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-10.shtml
1: ['0: Points scan in the +i direction, i.e. from pole to Equator','1: Points scan in the -i direction, i.e. from Equator to pole'],
2: ['0: Points scan in the +j direction, i.e. from west to east','1: Points scan in the -j direction, i.e. from east to west'],
3: ['0: Adjacent points in the i (x) direction are consecutive','1: Adjacent points in the j (y) direction are consecutive']
},
// Interpretation of List of Numbers at end of section 3
'3.11': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-11.shtml
0: 'There is no appended list',
1: 'Numbers define number of points corresponding to full coordinate circles (i.e. parallels). Coordinate values on each circle are multiple of the circle mesh, and extreme coordinate values given in grid definition may not be reached in all rows.',
2: 'Numbers define number of points corresponding to coordinate lines delimited by extreme coordinate values given in grid definition which are present in each row.',
3: 'Numbers define the actual latitudes for each row in the grid. The list of numbers are integer values of the valid latitudes in microdegrees (scale by 106) or in unit equal to the ratio of the basic angle and the subdivisions number for each row, in the same order as specified in the \'scanning mode flag\' (bit no. 2) (see note 2)',
//4-254: 'Reserved',
255: 'Missing',
//Notes:
//(1) For entry 1, it should be noted that depending on values of extreme (first/last) coordinates, and regardless of bit-map, effective number of points per row may be less than the number of points on the current circle.
//(2) For value for the constant direction increment Di (or Dx) in the accompanying Grid Definition Template should be set to all ones (missing).
},
// Physical Meaning of Vertical Coordinate
'3.15': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-15.shtml
//0-19: 'Reserved',
20: 'Temperature',
//21-99: 'Reserved',
100: 'Pressure',
101: 'Pressure deviation from mean sea level',
102: 'Altitude above mean sea level',
103: 'Height above ground (see note 1)',
104: 'Sigma coordinate',
105: 'Hybrid coordinate',
106: 'Depth below land surface',
107: 'Potential temperature (theta)',
108: 'Pressure deviation from ground to level',
109: 'Potential vorticity',
110: 'Geometric height',
111: 'Eta coordinate (see note 2)',
112: 'Geopotential height',
113: 'Logarithmic hybrid coordinate',
//114-159: 'Reserved',
160: 'Depth below sea level',
//161-191: 'Reserved',
//192-254: 'Reserved for Local Use',
255: 'Missing',
},
// Type of Horizontal Line
'3.20': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-20.shtml
0: 'Rhumb',
1: 'Great Circle',
//2-191: Reserved
//192-254: Reserved For Local Use
255: 'Missing'
},
// Vertical Dimension Coordinate Values Definition
'3.21': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-21.shtml
0: 'Explicit coordinate value set',
1: 'Linear Cooordinates\nf(1) = C1\nf(n) = f(n-1) + C2\n',
//2-10: Reserved
11: 'Geometric Coordinates\nf(1) = C1\nf(n) = C2 x f(n-1)\n',
//12-191: Reserved
// 192-254: Reserved for Local Use
255: 'Missing'
},
// TODO
// Product Definition Template Number
'4.0': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-0.shtml
0: 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time. (see Template 4.0)',
1: 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time. (see Template 4.1)',
2: 'Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer at a point in time. (see Template 4.2)',
3: 'Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer at a point in time. (see Template 4.3)',
4: 'Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer at a point in time. (see Template 4.4)',
5: 'Probability forecasts at a horizontal level or in a horizontal layer at a point in time. (see Template 4.5)',
6: 'Percentile forecasts at a horizontal level or in a horizontal layer at a point in time. (see Template 4.6)',
7: 'Analysis or forecast error at a horizontal level or in a horizontal layer at a point in time. (see Template 4.7)',
8: 'Average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval. (see Template 4.8)',
9: 'Probability forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval. (see Template 4.9)',
10: 'Percentile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval. (see Template 4.10)',
11: 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval. (see Template 4.11)',
12: 'Derived forecasts based on all ensemble members at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval. (see Template 4.12)',
13: 'Derived forecasts based on a cluster of ensemble members over a rectangular area at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval. (see Template 4.13)',
14: 'Derived forecasts based on a cluster of ensemble members over a circular area at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval. (see Template 4.14)',
15: 'Average, accumulation, extreme values or other statistically-processed values over a spatial area at a horizontal level or in a horizontal layer at a point in time. (see Template 4.15)',
//16-19: 'Reserved',
20: 'Radar product (see Template 4.20)',
//21-29: 'Reserved',
30: 'Satellite product (see Template 4.30)NOTE: This template is deprecated. Template 4.31 should be used instead.',
31: 'Satellite product (see Template 4.31)',
32: 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for simulate (synthetic) satellite data (see Template 4.32)',
33: 'Individual Ensemble Forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for simulated (synthetic) satellite data (see Template 4.33)',
34: 'Individual Ensemble Forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for simulated (synthetic) satellite data(see Template 4.34)',
35: 'Satellite product with or without associated quality values (see Template 4.35)',
//36-39: 'Reserved',
40: 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents. (see Template 4.40)',
41: 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents. (see Template 4.41)',
42: 'Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents. (see Template 4.42)',
43: 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval for atmospheric chemical constituents. (see Template 4.43)',
44: 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for aerosol. (see Template 4.44)',
45: 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval for aerosol. (see Template 4.45)',
46: 'Average, accumulation, and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for aerosol. (see Template 4.46)',
47: 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval for aerosol. (see Template 4.47)',
48: 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for aerosol. (see Template 4.48)',
49: 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol. (see Template 4.49)',
50: 'Reserved',
51: 'Categorical forecast at a horizontal level or in a horizontal layer at a point in time. (see Template 4.51)',
52: 'Reserved',
53: 'Partitioned parameters at a horizontal level or horizontal layer at a point in time. (see Template 4.53)',
54: 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for partitioned parameters. (see Template 4.54)',
55: 'Spatio-temporal changing tiles at a horizontal level or horizontal layer at a point in time (see Template 4.55)',
56: 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters. (see Template 4.56)',
57: 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents based on a distribution function (see Template 4.57)',
58: 'Individual Ensemble Forecast, Control and Perturbed, at a horizontal level or in a horizontal layer at a point in time interval for Atmospheric Chemical Constituents based on a distribution function (see Template 4.58)',
59: 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for spatio-temporal changing tile parameters (corrected version of template 4.56 - See Template 4.59)',
60: 'Individual Ensemble Reforecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time. (see Template 4.60)',
61: 'Individual Ensemble Reforecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval (see Template 4.61)',
62: 'Average, Accumulation and/or Extreme values or other Statistically-processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for spatio-temporal changing tiles at a horizontal level or horizontal layer at a point in time (see Template 4.62)',
63: 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for spatio-temporal changing tiles (see Template 4.63)',
//64-66: 'Reserved',
67: 'Average, accumulation and/or extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents based on a distribution function (see Template 4.67)',
68: 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval for atmospheric chemical constituents based on a distribution function. (see Template 4.68)',
69: 'Reserved',
70: 'Post-processing analysis or forecast at a horizontal level or in a horizontal layer at a point in time. (see Template 4.70)',
71: 'Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time. (see Template 4.71)',
72: 'Post-processing average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval. (see Template 4.72)',
73: 'Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval. (see Template 4.73)',
//74-90: 'Reserved',
91: 'Categorical forecast at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval. (see Template 4.91)',
//92-253: 'Reserved',
254: 'CCITT IA5 character string (see Template 4.254)',
//255-999: 'Reserved',
1000: 'Cross-section of analysis and forecast at a point in time. (see Template 4.1000)',
1001: 'Cross-section of averaged or otherwise statistically processed analysis or forecast over a range of time. (see Template 4.1001)',
1002: 'Cross-section of analysis and forecast, averaged or otherwise statistically-processed over latitude or longitude. (see Template 4.1002)',
//1003-1099: 'Reserved',
1100: 'Hovmoller-type grid with no averaging or other statistical processing (see Template 4.1100)',
1101: 'Hovmoller-type grid with averaging or other statistical processing (see Template 4.1101)',
//1102-32767: 'Reserved',
//32768-65534: 'Reserved for Local Use',
65535: 'Missing',
},
// TODO
// Parameter Category by Product Discipline
'4.1': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml
0: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
1: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
2: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
3: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
4: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
5: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
6: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
7: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
8: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
9: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
10: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
11: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
12: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
13: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
14: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
15: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
16: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
17: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
18: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
19: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
20: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-1.shtml',
255: 'Missing'
// Note: The disciplines are given in Section 0, Octet 7 of the GRIB2 message and are defined in Table 0.0.
},
// TODO
// Parameter Number by Product Discipline and Parameter Category
'4.2': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml
0: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
1: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
2: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
3: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
4: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
5: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
6: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
7: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
8: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
9: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
10: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
11: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
12: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
13: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
14: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
15: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
16: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
17: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
18: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
19: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
20: 'Depends of category (Octet 7 of Section 0). Check in: https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2.shtml',
255: 'Missing'
},
// Type of Generating Process
'4.3': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-3.shtml
0: 'Analysis',
1: 'Initialization',
2: 'Forecast',
3: 'Bias Corrected Forecast',
4: 'Ensemble Forecast',
5: 'Probability Forecast',
6: 'Forecast Error',
7: 'Analysis Error',
8: 'Observation',
9: 'Climatological',
10: 'Probability-Weighted Forecast',
11: 'Bias-Corrected Ensemble Forecast',
12: 'Post-processed Analysis (See Note)',
13: 'Post-processed Forecast (See Note)',
14: 'Nowcast',
15: 'Hindcast',
16: 'Physical Retrieval',
17: 'Regression Analysis',
18: 'Difference Between Two Forecasts',
//19-191: 'Reserved',
192: 'Forecast Confidence Indicator',
//192-254: 'Reserved for Local Use',
193: 'Probability-matched Mean',
194: 'Neighborhood Probability',
195: 'Bias-Corrected and Downscaled Ensemble Forecast',
196: 'Perturbed Analysis for Ensemble Initialization',
197: 'Ensemble Agreement Scale Probability',
198: 'Post-Processed Deterministic-Expert-Weighted Forecast',
199: 'Ensemble Forecast Based on Counting',
200: 'Local Probability-matched Mean',
255: 'Missing',
// Notes:
// 1. Code figures 12 and 13 are intended in cases where code figures 0 and 2 may not be sufficient to indicate that significant post-processing has taken place on an intial analysis or forecast output.
},
// Indicator of Unit of Time Range
'4.4': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-4.shtml
0: 'Minute',
1: 'Hour',
2: 'Day',
3: 'Month',
4: 'Year',
5: 'Decade (10 Years)',
6: 'Normal (30 Years)',
7: 'Century (100 Years)',
8: 'Reserved',
9: 'Reserved',
10: '3 Hours',
11: '6 Hours',
12: '12 Hours',
13: 'Second',
//14-191: 'Reserved',
//192-254: 'Reserved for Local Use',
255: 'Missing',
},
// Fixed Surface Types and Units
'4.5': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-5.shtml
0: 'Reserved',
1: 'Ground or Water Surface',
2: 'Cloud Base Level',
3: 'Level of Cloud Tops',
4: 'Level of 0o C Isotherm',
5: 'Level of Adiabatic Condensation Lifted from the Surface',
6: 'Maximum Wind Level',
7: 'Tropopause',
8: 'Nominal Top of the Atmosphere',
9: 'Sea Bottom',
10: 'Entire Atmosphere',
11: 'Cumulonimbus Base (CB)',
12: 'Cumulonimbus Top (CT)',
13: 'Lowest level where vertically integrated cloud cover exceeds the specified percentage(cloud base for a given percentage cloud cover)',
14: 'Level of free convection (LFC)',
15: 'Convection condensation level (CCL)',
16: 'Level of neutral buoyancy or equilibrium (LNB)',
//17-19: 'Reserved',
20: 'Isothermal Level',
21: 'Lowest level where mass density exceeds the specified value(base for a given threshold of mass density)',
22: 'Highest level where mass density exceeds the specifiedvalue (top for a given threshold of mass density)',
23: 'Lowest level where air concentration exceeds the specifiedvalue (base for a given threshold of air concentration',
24: 'Highest level where air concentration exceeds the specifiedvalue (top for a given threshold of air concentration)',
25: 'Highest level where radar reflectivity exceeds the specifiedvalue (echo top for a given threshold of reflectivity)',
//26-99: 'Reserved',
100: 'Isobaric Surface',
101: 'Mean Sea Level',
102: 'Specific Altitude Above Mean Sea Level',
103: 'Specified Height Level Above Ground',
104: 'Sigma Level',
105: 'Hybrid Level',
106: 'Depth Below Land Surface',
107: 'Isentropic (theta) Level',
108: 'Level at Specified Pressure Difference from Ground to Level',
109: 'Potential Vorticity Surface',
110: 'Reserved',
111: 'Eta Level',
112: 'Reserved',
113: 'Logarithmic Hybrid Level',
114: 'Snow Level',
115: 'Sigma height level (see Note 4)',
116: 'Reserved',
117: 'Mixed Layer Depth',
118: 'Hybrid Height Level',
119: 'Hybrid Pressure Level',
//120-149: 'Reserved',
150: 'Generalized Vertical Height Coordinate (see Note 4)',
151: 'Soil level (See Note 5)',
//152-159: 'Reserved',
160: 'Depth Below Sea Level',
161: 'Depth Below Water Surface',
162: 'Lake or River Bottom',
163: 'Bottom Of Sediment Layer',
164: 'Bottom Of Thermally Active Sediment Layer',
165: 'Bottom Of Sediment Layer Penetrated By Thermal Wave',
166: 'Mixing Layer',
167: 'Bottom of Root Zone',
168: 'Ocean Model Level',
169: 'Ocean level defined by water density (sigma-theta)difference from near-surface to level (see Note 7)',
170: 'Ocean level defined by water potential temperaturedifference from near-surface to level (see Note 7)',
//171-173: 'Reserved',
174: 'Top Surface of Ice on Sea, Lake or River',
175: 'Top Surface of Ice, under Snow, on Sea, Lake or River',
176: 'Bottom Surface (underside) Ice on Sea, Lake or River',
177: 'Deep Soil (of indefinite depth)',
178: 'Reserved',
179: 'Top Surface of Glacier Ice and Inland Ice',
180: 'Deep Inland or Glacier Ice (of indefinite depth)',
181: 'Grid Tile Land Fraction as a Model Surface',
182: 'Grid Tile Water Fraction as a Model Surface',
183: 'Grid Tile Ice Fraction on Sea, Lake or River as a Model Surface',
184: 'Grid Tile Glacier Ice and Inland Ice Fraction as a Model Surface',
//185-191: 'Reserved',
//192-254: 'Reserved for Local Use',
200: 'Entire atmosphere (considered as a single layer)',
201: 'Entire ocean (considered as a single layer)',
204: 'Highest tropospheric freezing level',
206: 'Grid scale cloud bottom level',
207: 'Grid scale cloud top level',
209: 'Boundary layer cloud bottom level',
210: 'Boundary layer cloud top level',
211: 'Boundary layer cloud layer',
212: 'Low cloud bottom level',
213: 'Low cloud top level',
214: 'Low cloud layer',
215: 'Cloud ceiling',
216: 'Effective Layer Top Level',
217: 'Effective Layer Bottom Level',
218: 'Effective Layer',
220: 'Planetary Boundary Layer',
221: 'Layer Between Two Hybrid Levels',
222: 'Middle cloud bottom level',
223: 'Middle cloud top level',
224: 'Middle cloud layer',
232: 'High cloud bottom level',
233: 'High cloud top level',
234: 'High cloud layer',
235: 'Ocean Isotherm Level (1/10 ° C)',
236: 'Layer between two depths below ocean surface',
237: 'Bottom of Ocean Mixed Layer (m)',
238: 'Bottom of Ocean Isothermal Layer (m)',
239: 'Layer Ocean Surface and 26C Ocean Isothermal Level',
240: 'Ocean Mixed Layer',
241: 'Ordered Sequence of Data',
242: 'Convective cloud bottom level',
243: 'Convective cloud top level',
244: 'Convective cloud layer',
245: 'Lowest level of the wet bulb zero',
246: 'Maximum equivalent potential temperature level',
247: 'Equilibrium level',
248: 'Shallow convective cloud bottom level',
249: 'Shallow convective cloud top level',
251: 'Deep convective cloud bottom level',
252: 'Deep convective cloud top level',
253: 'Lowest bottom level of supercooled liquid water layer',
254: 'Highest top level of supercooled liquid water layer',
255: 'Missing',
// Notes:
// (1). The Eta vertical coordinate system involves normalizing the pressure at some point on a specific level by the mean sea level pressure at that point.
// (2). Hybrid height level (Code figure 118) can be defined as: z(k)=A(k)+B(k)* orog (k=1,..., NLevels; orog=orography; z(k)=height in meters at level(k)
// (3). Hybrid pressure level, for which code figure 119 shall be used insteaf of 105, can be defined as: p(k)=A(k) + B(k) * sp (k=1,...,NLevels, sp=surface pressure; p(k)=pressure at level (k)
// (4). Sigma height level is the vertical model level of the height-based terrain-following coordinate (Gal-Chen and Somerville, 1975). The value of the level = (height of the level – height of the terrain) / (height of the top level – height of the terrain), which is ≥ 0 and ≤ 1.
// (5). The definition of a generalized vertical height coordinate implies the absence of coordinate values in section 4 but the presence of an external 3D-GRIB message that specifies the height of every model grid point in meters (see Notes for section 4), i.e., this GRIB message will contain the field with discipline = 0, category = 3, parameterm = 6 (Geometric height).
// (6). The soil level represents a model level for which the depth is not constant across the model domain. The depth in metres of the level is provided by another GRIB message with the parameter 'Soil Depth' with discipline 2, category 3 and parameter number 27.
// (7). The level is defined by a water property difference from the near-surface to the level. The near-surface is typically chosen at 10 m depth. The physical quantity used to compute the difference can be water density (δΘ) when using level type 169 or water potential temperature (Θ) when using level type 170.
},
// Type of Ensemble Forecast
'4.6': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-6.shtml
0: 'Unperturbed High-Resolution Control Forecast',
1: 'Unperturbed Low-Resolution Control Forecast',
2: 'Negatively Perturbed Forecast',
3: 'Positively Perturbed Forecast',
4: 'Multi-Model Forecast',
//5-191: 'Reserved',
192: 'Perturbed Ensemble Member',
//192-254: 'Reserved for Local Use',
255: 'Missing',
},
// Derived Forecast
'4.7': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-7.shtml
0: 'Unweighted Mean of All Members',
1: 'Weighted Mean of All Members',
2: 'Standard Deviation with respect to Cluster Mean',
3: 'Standard Deviation with respect to Cluster Mean, Normalized',
4: 'Spread of All Members',
5: 'Large Anomaly Index of All Members (see Note 1)',
6: 'Unweighted Mean of the Cluster Members',
7: 'Interquartile Range (Range between the 25th and 75th quantile)',
//7-191: 'Reserved',
8: 'Minimum Of All Ensemble Members (see Note 2)',
9: 'Maximum Of All Ensemble Members (see Note 2)',
192: 'Unweighted Mode of All Members',
//192-254: 'Reserved for Local Use',
193: 'Percentile value (10%) of All Members',
194: 'Percentile value (50%) of All Members',
195: 'Percentile value (90%) of All Members',
196: 'Statistically decided weights for each ensemble member',
197: 'Climate Percentile (percentile values from climate distribution)',
198: 'Deviation of Ensemble Mean from Daily Climatology',
199: 'Extreme Forecast Index',
200: 'Equally Weighted Mean',
201: 'Percentile value (5%) of All Members',
202: 'Percentile value (25%) of All Members',
203: 'Percentile value (75%) of All Members',
204: 'Percentile value (95%) of All Members',
255: 'Missing',
// Notes:
// 1. Large anomaly index is defined as {(number of members whose anomaly is higher than 0.5*SD) - (number of members whose anomaly is lower than -0.5*SD)}/(number of members) at each grid point. SD is the observed climatological standard deviation.
// 2. It should be noted that the reference for 'minimum of all ensemble members' and 'maximum of all ensemble members' is the set of ensemble members and not a time interval and should not be confused with the maximum and minimum described by Product Definition Template 4.8.
},
// Clustering Method
'4.8': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-8.shtml
0: 'Anomoly Correlation',
1: 'Root Mean Square',
//2-191: 'Reserved',
//192-254: 'Reserved for Local Use',
255: 'Missing'
},
// Probability Type
'4.9': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-9.shtml
0: 'Probability of event below lower limit',
1: 'Probability of event above upper limit',
2: 'Probability of event between upper and lower limits (the range includes lower limit but no the upper limit)',
3: 'Probability of event above lower limit',
4: 'Probability of event below upper limit',
5: 'Probability of event equal to lower limit',
6: 'Probability of event in above normal category (see Notes 1 and 2)',
7: 'Probability of event in near normal category (see Notes 1 and 2)',
8: 'Probability of event in below normal category (see Notes 1 and 2)',
//9-191: 'Reserved',
//192-254: 'Reserved for Local Use',
255: 'Missing'
},
// Type of Statistical Processing
'4.10': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-10.shtml
0: 'Average',
1: 'Accumulation (see Note 1)',
2: 'Maximum',
3: 'Minimum',
4: 'Difference (value at the end of the time range minus value at the beginning)',
5: 'Root Mean Square',
6: 'Standard Deviation',
7: 'Covariance (temporal variance) (see Note 2)',
8: 'Difference ( value at the beginning of the time range minus value at the end)',
9: 'Ratio (see Note 3)',
10: 'Standardized Anomaly',
11: 'Summation',
12: 'Confidence Index (see Note 4) Validation',
13: 'Quality Indicator (see Note 5) Validation',
//14-191: 'Reserved',
192: 'Climatological Mean Value: multiple year averages of quantities which are themselves means over some period of time (P2) less than a year. The reference time (R) indicates the date and time of the start of a period of time, given by R to R + P2, over which a mean is formed; N indicates the number of such period-means that are averaged together to form the climatological value, assuming that the N period-mean fields are separated by one year. The reference time indicates the start of the N-year climatology. N is given in octets 22-23 of the PDS.\nIf P1 = 0 then the data averaged in the basic interval P2 are assumed to be continuous, i.e., all available data are simply averaged together.\n\nIf P1 = 1 (the units of time - octet 18, code table 4 - are not relevant here) then the data averaged together in the basic interval P2 are valid only at the time (hour, minute) given in the reference time, for all the days included in the P2 period. The units of P2 are given by the contents of octet 18 and Table 4.',
//192-254: 'Reserved for Local Use',
193: 'Average of N forecasts (or initialized analyses); each product has forecast period of P1 (P1=0 for initialized analyses); products have reference times at intervals of P2, beginning at the given reference time.',
194: 'Average of N uninitialized analyses, starting at reference time, at intervals of P2.',
195: 'Average of forecast accumulations. P1 = start of accumulation period. P2 = end of accumulation period. Reference time is the start time of the first forecast, other forecasts at 24-hour intervals. Number in Ave = number of forecasts used.',
196: 'Average of successive forecast accumulations. P1 = start of accumulation period. P2 = end of accumulation period. Reference time is the start time of the first forecast, other forecasts at (P2 - P1) intervals. Number in Ave = number of forecasts used',
197: 'Average of forecast averages. P1 = start of averaging period. P2 = end of averaging period. Reference time is the start time of the first forecast, other forecasts at 24-hour intervals. Number in Ave = number of forecast used',
198: 'Average of successive forecast averages. P1 = start of averaging period. P2 = end of averaging period. Reference time is the start time of the first forecast, other forecasts at (P2 - P1) intervals. Number in Ave = number of forecasts used',
199: 'Climatological Average of N analyses, each a year apart, starting from initial time R and for the period from R+P1 to R+P2.',
200: 'Climatological Average of N forecasts, each a year apart, starting from initial time R and for the period from R+P1 to R+P2.',
201: 'Climatological Root Mean Square difference between N forecasts and their verifying analyses, each a year apart, starting with initial time R and for the period from R+P1 to R+P2.',
202: 'Climatological Standard Deviation of N forecasts from the mean of the same N forecasts, for forecasts one year apart. The first forecast starts wtih initial time R and is for the period from R+P1 to R+P2.',
203: 'Climatological Standard Deviation of N analyses from the mean of the same N analyses, for analyses one year apart. The first analyses is valid for period R+P1 to R+P2.',
204: 'Average of forecast accumulations. P1 = start of accumulation period. P2 = end of accumulation period. Reference time is the start time of the first forecast, other forecasts at 6-hour intervals. Number in Ave = number of forecast used',
205: 'Average of forecast averages. P1 = start of averaging period. P2 = end of averaging period. Reference time is the start time of the first forecast, other forecasts at 6-hour intervals. Number in Ave = number of forecast used',
206: 'Average of forecast accumulations. P1 = start of accumulation period. P2 = end of accumulation period. Reference time is the start time of the first forecast, other forecasts at 12-hour intervals. Number in Ave = number of forecast used',
207: 'Average of forecast averages. P1 = start of averaging period. P2 = end of averaging period. Reference time is the start time of the first forecast, other forecasts at 12-hour intervals. Number in Ave = number of forecast used',
208: 'Variance',
209: 'Confficient',
255: 'Missing'
},
'4.11' : {
0: 'Reserved',
1: 'Successive times processed have same forecast time, start time of forecast is incremented.',
2: 'Successive times processed have same start time of forecast, forecast time is incremented.',
3: 'Successive times processed have start time of forecast incremented and forecast time decremented so that valid time remains constant.',
4: 'Successive times processed have start time of forecast decremented and forecast time incremented so that valid time remains constant.',
5: 'Floating subinterval of time between forecast time and end of overall time interval.(see Note 1)',
//6-191: 'Reserved',
//192-254: 'Reserved for Local Use',
255: 'Missing'
},
// TODO 4.11 to 4.244
// TODO 4.2-X-Y, where X is the Discipline (Table 0.0) and Y is the parameter category
'4.2-0-0': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2-0-0.shtml
0: { parameter: 'Temperature', units: 'K', abbreviation: 'TMP' },
1: { parameter: 'Virtual Temperature', units: 'K', abbreviation: 'VTMP' },
2: { parameter: 'Potential Temperature', units: 'K', abbreviation: 'POT' },
3: { parameter: 'Pseudo-Adiabatic Potential Temperature(or Equivalent Potential Temperature)', units: 'K', abbreviation: 'EPOT' },
4: { parameter: 'Maximum Temperature*', units: 'K', abbreviation: 'TMAX' },
5: { parameter: 'Minimum Temperature*', units: 'K', abbreviation: 'TMIN' },
6: { parameter: 'Dew Point Temperature', units: 'K', abbreviation: 'DPT' },
7: { parameter: 'Dew Point Depression (or Deficit)', units: 'K', abbreviation: 'DEPR' },
8: { parameter: 'Lapse Rate', units: 'K m-1', abbreviation: 'LAPR' },
9: { parameter: 'Temperature Anomaly', units: 'K', abbreviation: 'TMPA' },
10: { parameter: 'Latent Heat Net Flux', units: 'W/m²', abbreviation: 'LHTFL' },
11: { parameter: 'Sensible Heat Net Flux', units: 'W/m²', abbreviation: 'SHTFL' },
12: { parameter: 'Heat Index', units: 'K', abbreviation: 'HEATX' },
13: { parameter: 'Wind Chill Factor', units: 'K', abbreviation: 'WCF' },
14: { parameter: 'Minimum Dew Point Depression*', units: 'K', abbreviation: 'MINDPD' },
15: { parameter: 'Virtual Potential Temperature', units: 'K', abbreviation: 'VPTMP' },
16: { parameter: 'Snow Phase Change Heat Flux', units: 'W/m²', abbreviation: 'SNOHF' },
17: { parameter: 'Skin Temperature', units: 'K', abbreviation: 'SKINT' },
18: { parameter: 'Snow Temperature (top of snow)', units: 'K', abbreviation: 'SNOT' },
19: { parameter: 'Turbulent Transfer Coefficient for Heat', units: 'Numeric', abbreviation: 'TTCHT' },
20: { parameter: 'Turbulent Diffusion Coefficient for Heat', units: 'm²1/s', abbreviation: 'TDCHT' },
21: { parameter: 'Apparent Temperature **', units: 'K', abbreviation: 'APTMP' },
22: { parameter: 'Temperature Tendency due to Short-Wave Radiation', units: 'K/s', abbreviation: 'TTSWR' },
23: { parameter: 'Temperature Tendency due to Long-Wave Radiation', units: 'K/s', abbreviation: 'TTLWR' },
24: { parameter: 'Temperature Tendency due to Short-Wave Radiation, Clear Sky', units: 'K/s', abbreviation: 'TTSWRCS' },
25: { parameter: 'Temperature Tendency due to Long-Wave Radiation, Clear Sky', units: 'K/s', abbreviation: 'TTLWRCS' },
26: { parameter: 'Temperature Tendency due to parameterizations', units: 'K/s', abbreviation: 'TTPARM' },
27: { parameter: 'Wet Bulb Temperature', units: 'K', abbreviation: 'WETBT' },
28: { parameter: 'Unbalanced Component of Temperature', units: 'K', abbreviation: 'UCTMP' },
29: { parameter: 'Temperature Advection', units: 'K/s', abbreviation: 'TMPADV' },
30: { parameter: 'Latent Heat Net Flux Due to Evaporation', units: 'W/m²', abbreviation: 'LHFLXE' },
31: { parameter: 'Latent Heat Net Flux Due to Sublimation', units: 'W/m²', abbreviation: 'LHFLXS' },
32: { parameter: 'Wet-Bulb Potential Temperature', units: 'K', abbreviation: 'WETBPT' },
//33-191: { parameter: 'Reserved', units: '', abbreviation: '' },
192: { parameter: 'Snow Phase Change Heat Flux', units: 'W/m²', abbreviation: 'SNOHF' },
//192 - 254: { parameter: 'Reserved for Local Use', units: '', abbreviation: '' },
193: { parameter: 'Temperature Tendency by All Radiation', units: 'K/s', abbreviation: 'TTRAD' },
194: { parameter: 'Relative Error Variance', units: '', abbreviation: 'REV' },
195: { parameter: 'Large Scale Condensate Heating Rate', units: 'K/s', abbreviation: 'LRGHR' },
196: { parameter: 'Deep Convective Heating Rate', units: 'K/s', abbreviation: 'CNVHR' },
197: { parameter: 'Total Downward Heat Flux at Surface', units: 'W/m²', abbreviation: 'THFLX' },
198: { parameter: 'Temperature Tendency by All Physics', units: 'K/s', abbreviation: 'TTDIA' },
199: { parameter: 'Temperature Tendency by Non-radiation Physics', units: 'K/s', abbreviation: 'TTPHY' },
200: { parameter: 'Standard Dev. of IR Temp. over 1x1 deg. area', units: 'K', abbreviation: 'TSD1D' },
201: { parameter: 'Shallow Convective Heating Rate', units: 'K/s', abbreviation: 'SHAHR' },
202: { parameter: 'Vertical Diffusion Heating rate', units: 'K/s', abbreviation: 'VDFHR' },
203: { parameter: 'Potential Temperature at Top of Viscous Sublayer', units: 'K', abbreviation: 'THZ0' },
204: { parameter: 'Tropical Cyclone Heat Potential', units: 'Jm-2K', abbreviation: 'TCHP' },
205: { parameter: 'Effective Layer (EL) Temperature', units: 'C', abbreviation: 'ELMELT' },
206: { parameter: 'Wet Bulb Globe Temperature', units: 'K', abbreviation: 'WETGLBT' },
255: { parameter: 'Missing', units: '', abbreviation: '' }
},
'4.2-0-2': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2-0-2.shtml
0: { parameter: 'Wind Direction (from which blowing)', units: '°', abbreviation: 'WDIR' },
1: { parameter: 'Wind Speed', units: 'm/s', abbreviation: 'WIND' },
2: { parameter: 'U-Component of Wind', units: 'm/s', abbreviation: 'UGRD' },
3: { parameter: 'V-Component of Wind', units: 'm/s', abbreviation: 'VGRD' },
4: { parameter: 'Stream Function', units: 'm²/s', abbreviation: 'STRM' },
5: { parameter: 'Velocity Potential', units: 'm²/s', abbreviation: 'VPOT' },
6: { parameter: 'Montgomery Stream Function', units: 'm²/s²', abbreviation: 'MNTSF' },
7: { parameter: 'Sigma Coordinate Vertical Velocity', units: '1/s', abbreviation: 'SGCVV' },
8: { parameter: 'Vertical Velocity (Pressure)', units: 'Pa/s', abbreviation: 'VVEL' },
9: { parameter: 'Vertical Velocity (Geometric)', units: 'm/s', abbreviation: 'DZDT' },
10: { parameter: 'Absolute Vorticity', units: '1/s', abbreviation: 'ABSV' },
11: { parameter: 'Absolute Divergence', units: '1/s', abbreviation: 'ABSD' },
12: { parameter: 'Relative Vorticity', units: '1/s', abbreviation: 'RELV' },
13: { parameter: 'Relative Divergence', units: '1/s', abbreviation: 'RELD' },
14: { parameter: 'Potential Vorticity', units: 'K m² kg-1/s', abbreviation: 'PVORT' },
15: { parameter: 'Vertical U-Component Shear', units: '1/s', abbreviation: 'VUCSH' },
16: { parameter: 'Vertical V-Component Shear', units: '1/s', abbreviation: 'VVCSH' },
17: { parameter: 'Momentum Flux, U-Component', units: 'N/m²', abbreviation: 'UFLX' },
18: { parameter: 'Momentum Flux, V-Component', units: 'N/m²', abbreviation: 'VFLX' },
19: { parameter: 'Wind Mixing Energy', units: 'J', abbreviation: 'WMIXE' },
20: { parameter: 'Boundary Layer Dissipation', units: 'W/m²', abbreviation: 'BLYDP' },
21: { parameter: 'Maximum Wind Speed *', units: 'm/s', abbreviation: 'MAXGUST' },
22: { parameter: 'Wind Speed (Gust)', units: 'm/s', abbreviation: 'GUST' },
23: { parameter: 'U-Component of Wind (Gust)', units: 'm/s', abbreviation: 'UGUST' },
24: { parameter: 'V-Component of Wind (Gust)', units: 'm/s', abbreviation: 'VGUST' },
25: { parameter: 'Vertical Speed Shear', units: '1/s', abbreviation: 'VWSH' },
26: { parameter: 'Horizontal Momentum Flux', units: 'N/m²', abbreviation: 'MFLX' },
27: { parameter: 'U-Component Storm Motion', units: 'm/s', abbreviation: 'USTM' },
28: { parameter: 'V-Component Storm Motion', units: 'm/s', abbreviation: 'VSTM' },
29: { parameter: 'Drag Coefficient', units: 'Numeric', abbreviation: 'CD' },
30: { parameter: 'Frictional Velocity', units: 'm/s', abbreviation: 'FRICV' },
31: { parameter: 'Turbulent Diffusion Coefficient for Momentum', units: 'm²/s', abbreviation: 'TDCMOM' },
32: { parameter: 'Eta Coordinate Vertical Velocity', units: '1/s', abbreviation: 'ETACVV' },
33: { parameter: 'Wind Fetch', units: 'm', abbreviation: 'WINDF' },
34: { parameter: 'Normal Wind Component **', units: 'm/s', abbreviation: 'NWIND' },
35: { parameter: 'Tangential Wind Component **', units: 'm/s', abbreviation: 'TWIND' },
36: { parameter: 'Amplitude Function for Rossby Wave Envelope for Meridional Wind ***', units: 'm/s', abbreviation: 'AFRWE' },
37: { parameter: 'Northward Turbulent Surface Stress ****', units: 'N/m² s', abbreviation: 'NTSS' },
38: { parameter: 'Eastward Turbulent Surface Stress ****', units: 'N/m² s', abbreviation: 'ETSS' },
39: { parameter: 'Eastward Wind Tendency Due to Parameterizations', units: 'm/s²', abbreviation: 'EWTPARM' },
40: { parameter: 'Northward Wind Tendency Due to Parameterizations', units: 'm/s²', abbreviation: 'NWTPARM' },
41: { parameter: 'U-Component of Geostrophic Wind', units: 'm/s', abbreviation: 'UGWIND' },
42: { parameter: 'V-Component of Geostrophic Wind', units: 'm/s', abbreviation: 'VGWIND' },
43: { parameter: 'Geostrophic Wind Direction', units: '°', abbreviation: 'GEOWD' },
44: { parameter: 'Geostrophic Wind Speed', units: 'm/s', abbreviation: 'GEOWS' },
45: { parameter: 'Unbalanced Component of Divergence', units: '1/s', abbreviation: 'UNDIV' },
46: { parameter: 'Vorticity Advection', units: 's-2', abbreviation: 'VORTADV' },
47: { parameter: 'Surface roughness for heat,(see Note 5)', units: 'm', abbreviation: 'SFRHEAT' },
48: { parameter: 'Surface roughness for moisture,(see Note 6)', units: 'm', abbreviation: 'SFRMOIST' },
//49-191: {parameter: 'Reserved', units: '', abbreviation: ''},
192: { parameter: 'Vertical Speed Shear', units: '1/s', abbreviation: 'VWSH' },
//192-254: {parameter: 'Reserved for Local Use', units: '', abbreviation: ''},
193: { parameter: 'Horizontal Momentum Flux', units: 'N/m²', abbreviation: 'MFLX' },
194: { parameter: 'U-Component Storm Motion', units: 'm/s', abbreviation: 'USTM' },
195: { parameter: 'V-Component Storm Motion', units: 'm/s', abbreviation: 'VSTM' },
196: { parameter: 'Drag Coefficient', units: 'non-dim', abbreviation: 'CD' },
197: { parameter: 'Frictional Velocity', units: 'm/s', abbreviation: 'FRICV' },
198: { parameter: 'Latitude of U Wind Component of Velocity', units: 'deg', abbreviation: 'LAUV' },
199: { parameter: 'Longitude of U Wind Component of Velocity', units: 'deg', abbreviation: 'LOUV' },
200: { parameter: 'Latitude of V Wind Component of Velocity', units: 'deg', abbreviation: 'LAVV' },
201: { parameter: 'Longitude of V Wind Component of Velocity', units: 'deg', abbreviation: 'LOVV' },
202: { parameter: 'Latitude of Presure Point', units: 'deg', abbreviation: 'LAPP' },
203: { parameter: 'Longitude of Presure Point', units: 'deg', abbreviation: 'LOPP' },
204: { parameter: 'Vertical Eddy Diffusivity Heat exchange', units: 'm²/s', abbreviation: 'VEDH' },
205: { parameter: 'Covariance between Meridional and ZonalComponents of the wind.', units: 'm²/s²', abbreviation: 'COVMZ' },
206: { parameter: 'Covariance between Temperature and ZonalComponents of the wind.', units: 'K*m/s', abbreviation: 'COVTZ' },
207: { parameter: 'Covariance between Temperature and MeridionalComponents of the wind.', units: 'K*m/s', abbreviation: 'COVTM' },
208: { parameter: 'Vertical Diffusion Zonal Acceleration', units: 'm/s²', abbreviation: 'VDFUA' },
209: { parameter: 'Vertical Diffusion Meridional Acceleration', units: 'm/s²', abbreviation: 'VDFVA' },
210: { parameter: 'Gravity wave drag zonal acceleration', units: 'm/s²', abbreviation: 'GWDU' },
211: { parameter: 'Gravity wave drag meridional acceleration', units: 'm/s²', abbreviation: 'GWDV' },
212: { parameter: 'Convective zonal momentum mixing acceleration', units: 'm/s²', abbreviation: 'CNVU' },
213: { parameter: 'Convective meridional momentum mixing acceleration', units: 'm/s²', abbreviation: 'CNVV' },
214: { parameter: 'Tendency of vertical velocity', units: 'm/s²', abbreviation: 'WTEND' },
215: { parameter: 'Omega (Dp/Dt) divide by density', units: 'K', abbreviation: 'OMGALF' },
216: { parameter: 'Convective Gravity wave drag zonal acceleration', units: 'm/s²', abbreviation: 'CNGWDU' },
217: { parameter: 'Convective Gravity wave drag meridional acceleration', units: 'm/s²', abbreviation: 'CNGWDV' },
218: { parameter: 'Velocity Point Model Surface', units: '', abbreviation: 'LMV' },
219: { parameter: 'Potential Vorticity (Mass-Weighted)', units: '1/s/m', abbreviation: 'PVMWW' },
220: { parameter: 'Hourly Maximum of Upward Vertical Velocity', units: 'm/s', abbreviation: 'MAXUVV' },
221: { parameter: 'Hourly Maximum of Downward Vertical Velocity', units: 'm/s', abbreviation: 'MAXDVV' },
222: { parameter: 'U Component of Hourly Maximum 10m Wind Speed', units: 'm/s', abbreviation: 'MAXUW' },
223: { parameter: 'V Component of Hourly Maximum 10m Wind Speed', units: 'm/s', abbreviation: 'MAXVW' },
224: { parameter: 'Ventilation Rate', units: 'm²/s', abbreviation: 'VRATE' },
225: { parameter: 'Transport Wind Speed', units: 'm/s', abbreviation: 'TRWSPD' },
226: { parameter: 'Transport Wind Direction', units: 'Deg', abbreviation: 'TRWDIR' },
227: { parameter: 'Earliest Reasonable Arrival Time (10% exceedance)', units: 's', abbreviation: 'TOA10' },
228: { parameter: 'Most Likely Arrival Time (50% exceedance)', units: 's', abbreviation: 'TOA50' },
229: { parameter: 'Most Likely Departure Time (50% exceedance)', units: 's', abbreviation: 'TOD50' },
230: { parameter: 'Latest Reasonable Departure Time (90% exceedance)', units: 's', abbreviation: 'TOD90' },
231: { parameter: 'Tropical Wind Direction', units: '°', abbreviation: 'TPWDIR' },
232: { parameter: 'Tropical Wind Speed', units: 'm/s', abbreviation: 'TPWSPD' },
233: { parameter: 'Inflow Based (ESFC) to 50% EL Shear Magnitude', units: 'kt', abbreviation: 'ESHR' },
234: { parameter: 'U Component Inflow Based to 50% EL Shear Vector', units: 'kt', abbreviation: 'UESH' },
235: { parameter: 'V Component Inflow Based to 50% EL Shear Vector', units: 'kt', abbreviation: 'VESH' },
236: { parameter: 'U Component Bunkers Effective Right Motion', units: 'kt', abbreviation: 'UEID' },
237: { parameter: 'V Component Bunkers Effective Right Motion', units: 'kt', abbreviation: 'VEID' },
255: { parameter: 'Missing', units: '', abbreviation: '' }
},
'4.2-10-1': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2-10-1.shtml
0: { parameter: 'Current Direction', units: 'degree True', abbreviation: 'DIRC' },
1: { parameter: 'Current Speed', units: 'm/s', abbreviation: 'SPC' },
2: { parameter: 'U-Component of Current', units: 'm/s', abbreviation: 'UOGRD' },
3: { parameter: 'V-Component of Current', units: 'm/s', abbreviation: 'VOGRD' },
4: { parameter: 'Rip Current Occurrence Probability', units: '%', abbreviation: 'RIPCOP' },
//5-191: {parameter: 'Reserved', units: '', abbreviation: ''},
192: { parameter: 'Ocean Mixed Layer U Velocity', units: 'm/s', abbreviation: 'OMLU' },
//192-254: {parameter: 'Reserved for Local Use', units: '', abbreviation: ''},
193: { parameter: 'Ocean Mixed Layer V Velocity', units: 'm/s', abbreviation: 'OMLV' },
194: { parameter: 'Barotropic U velocity', units: 'm/s', abbreviation: 'UBARO' },
195: { parameter: 'Barotropic V velocity', units: 'm/s', abbreviation: 'VBARO' },
255: { parameter: 'Missing', units: '', abbreviation: '' }
},
'4.2-10-2': { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-2-10-2.shtml
0: { parameter: 'Ice Cover', units: 'Proportion', abbreviation: 'ICEC' },
1: { parameter: 'Ice Thickness', units: 'm', abbreviation: 'ICETK' },
2: { parameter: 'Direction of Ice Drift', units: 'degree True', abbreviation: 'DICED' },
3: { parameter: 'Speed of Ice Drift', units: 'm/s', abbreviation: 'SICED' },
4: { parameter: 'U-Component of Ice Drift', units: 'm/s', abbreviation: 'UICE' },
5: { parameter: 'V-Component of Ice Drift', units: 'm/s', abbreviation: 'VICE' },
6: { parameter: 'Ice Growth Rate', units: 'm/s', abbreviation: 'ICEG' },
7: { parameter: 'Ice Divergence', units: '1/s', abbreviation: 'ICED' },
8: { parameter: 'Ice Temperature', units: 'K', abbreviation: 'ICETMP' },
9: { parameter: 'Module of Ice Internal Pressure', units: 'Pa m', abbreviation: 'ICEPRS' },
10: { parameter: 'Zonal Vector Component of Vertically Integrated Ice Internal Pressure', units: 'Pa m', abbreviation: 'ZVCICEP' },
11: { parameter: 'Meridional Vector Component of Vertically Integrated Ice Internal Pressure', units: 'Pa m', abbreviation: 'MVCICEP' },
12: { parameter: 'Compressive Ice Strength', units: 'N m-1', abbreviation: 'CICES' },
13: { parameter: 'Snow Temperature (over sea ice)', units: 'K', abbreviation: 'SNOWTSI' },
14: { parameter: 'Albedo', units: 'Numeric', abbreviation: 'ALBICE' },
//15-191: {parameter: 'Reserved', units: '', abbreviation: ''},
//192-254: {parameter: 'Reserved for Local Use', units: '', abbreviation: ''},
255: { parameter: 'Missing', units: '', abbreviation: '' }
},
// Data Representation Template Number
'5.0' : { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table5-0.shtml
0: 'Grid Point Data - Simple Packing (see Template 5.0)',
1: 'Matrix Value at Grid Point - Simple Packing (see Template 5.1)',
2: 'Grid Point Data - Complex Packing (see Template 5.2)',
3: 'Grid Point Data - Complex Packing and Spatial Differencing (see Template 5.3)',
4: 'Grid Point Data - IEEE Floating Point Data (see Template 5.4)',
//5-39: 'Reserved',
40: 'Grid Point Data - JPEG2000 Compression (see Template 5.40)',
41: 'Grid Point Data - PNG Compression (see Template 5.41)',
//42-49: 'Reserved',
50: 'Spectral Data - Simple Packing (see Template 5.50)',
51: 'Spectral Data - Complex Packing (see Template 5.51)',
//52-60: 'Reserved',
61: 'Grid Point Data - Simple Packing With Logarithm Pre-processing (see Template 5.61)',
//62-199: 'Reserved',
200: 'Run Length Packing With Level Values (see Template 5.200)',
//201-49151: '201-49151',
//49152-65534: 'Reserved for Local Use',
65535: 'Missing',
},
// Type of Original Field Values
'5.1' : { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table5-1.shtml
0: 'Floating Point',
1: 'Integer',
//2-191: 'Reserved',
//192-254: 'Reserved for Local Use',
255: 'Missing',
},
// Matrix Coordinate Value Function Definition
'5.2' : { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table5-2.shtml
0: 'Explicit Coordinate Values Set',
1: 'Linear Coordinates\nf(1) = C1\nf(n) = f(n-1) + C2\n',
//2-10: 'Reserved',
11: 'Geometric Coordinates\nf(1) = C1\nf(n) = C2 x f(n-1)\n',
//12-191: 'Reserved',
//192-254: 'Reserved for Local Use',
255: 'Missing',
},
// Matrix Coordinate Parameter
'5.3' : { // https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table5-3.shtml
0: 'Reserved',