From ee07677239f0e4b59c9e355acd87b876db3396c8 Mon Sep 17 00:00:00 2001 From: Eric Engle Date: Sun, 12 Nov 2023 10:01:49 -0500 Subject: [PATCH] Update docs. --- docs/grib2io.html | 3769 +++++----- docs/grib2io/tables.html | 733 +- docs/grib2io/tables/section3.html | 18 +- docs/grib2io/tables/section4.html | 2522 ++++--- docs/grib2io/tables/section4_discipline0.html | 1553 ++-- docs/grib2io/tables/section4_discipline1.html | 48 +- .../grib2io/tables/section4_discipline10.html | 351 +- docs/grib2io/tables/section4_discipline2.html | 318 +- .../grib2io/tables/section4_discipline20.html | 324 + docs/grib2io/tables/section4_discipline3.html | 331 +- docs/grib2io/tables/section4_discipline4.html | 41 +- docs/grib2io/templates.html | 6472 +++++++++-------- docs/grib2io/utils.html | 1 + docs/grib2io/utils/arakawa_rotated_grid.html | 719 ++ docs/search.js | 2 +- 15 files changed, 9806 insertions(+), 7396 deletions(-) create mode 100644 docs/grib2io/tables/section4_discipline20.html create mode 100644 docs/grib2io/utils/arakawa_rotated_grid.html diff --git a/docs/grib2io.html b/docs/grib2io.html index 2df2d57..4d0322b 100644 --- a/docs/grib2io.html +++ b/docs/grib2io.html @@ -201,6 +201,9 @@

API Documentation

  • shapeOfEarth
  • +
  • + earthShape +
  • earthRadius
  • @@ -489,437 +492,438 @@

    95 if mode in {'a','r','w'}: 96 mode = mode+'b' 97 if 'w' in mode: mode += '+' - 98 self._filehandle = builtins.open(filename,mode=mode,buffering=ONE_MB) - 99 self._hasindex = False -100 self._index = {} -101 self.mode = mode -102 self.name = os.path.abspath(filename) -103 self.messages = 0 -104 self.current_message = 0 -105 self.size = os.path.getsize(self.name) -106 self.closed = self._filehandle.closed -107 self.levels = None -108 self.variables = None -109 if 'r' in self.mode: -110 try: -111 self._build_index(no_data=kwargs['_xarray_backend']) -112 except(KeyError): -113 self._build_index() -114 # FIX: Cannot perform reads on mode='a' -115 #if 'a' in self.mode and self.size > 0: self._build_index() -116 + 98 if 'a' in mode: mode += '+' + 99 self._filehandle = builtins.open(filename,mode=mode,buffering=ONE_MB) +100 self._hasindex = False +101 self._index = {} +102 self.mode = mode +103 self.name = os.path.abspath(filename) +104 self.messages = 0 +105 self.current_message = 0 +106 self.size = os.path.getsize(self.name) +107 self.closed = self._filehandle.closed +108 self.levels = None +109 self.variables = None +110 if 'r' in self.mode: +111 try: +112 self._build_index(no_data=kwargs['_xarray_backend']) +113 except(KeyError): +114 self._build_index() +115 # FIX: Cannot perform reads on mode='a' +116 #if 'a' in self.mode and self.size > 0: self._build_index() 117 -118 def __delete__(self, instance): -119 """ -120 """ -121 self.close() -122 del self._index -123 +118 +119 def __delete__(self, instance): +120 """ +121 """ +122 self.close() +123 del self._index 124 -125 def __enter__(self): -126 """ -127 """ -128 return self -129 +125 +126 def __enter__(self): +127 """ +128 """ +129 return self 130 -131 def __exit__(self, atype, value, traceback): -132 """ -133 """ -134 self.close() -135 +131 +132 def __exit__(self, atype, value, traceback): +133 """ +134 """ +135 self.close() 136 -137 def __iter__(self): -138 """ -139 """ -140 yield from self._index['msg'] -141 +137 +138 def __iter__(self): +139 """ +140 """ +141 yield from self._index['msg'] 142 -143 def __len__(self): -144 """ -145 """ -146 return self.messages -147 +143 +144 def __len__(self): +145 """ +146 """ +147 return self.messages 148 -149 def __repr__(self): -150 """ -151 """ -152 strings = [] -153 for k in self.__slots__: -154 if k.startswith('_'): continue -155 strings.append('%s = %s\n'%(k,eval('self.'+k))) -156 return ''.join(strings) -157 +149 +150 def __repr__(self): +151 """ +152 """ +153 strings = [] +154 for k in self.__slots__: +155 if k.startswith('_'): continue +156 strings.append('%s = %s\n'%(k,eval('self.'+k))) +157 return ''.join(strings) 158 -159 def __getitem__(self, key): -160 """ -161 """ -162 if isinstance(key,int): -163 if abs(key) >= len(self._index['msg']): -164 raise IndexError("index out of range") -165 else: -166 return self._index['msg'][key] -167 elif isinstance(key,str): -168 return self.select(shortName=key) -169 elif isinstance(key,slice): -170 return self._index['msg'][key] -171 else: -172 raise KeyError('Key must be an integer, slice, or GRIB2 variable shortName.') -173 +159 +160 def __getitem__(self, key): +161 """ +162 """ +163 if isinstance(key,int): +164 if abs(key) >= len(self._index['msg']): +165 raise IndexError("index out of range") +166 else: +167 return self._index['msg'][key] +168 elif isinstance(key,str): +169 return self.select(shortName=key) +170 elif isinstance(key,slice): +171 return self._index['msg'][key] +172 else: +173 raise KeyError('Key must be an integer, slice, or GRIB2 variable shortName.') 174 -175 def _build_index(self, no_data=False): -176 """ -177 Perform indexing of GRIB2 Messages. -178 """ -179 # Initialize index dictionary -180 if not self._hasindex: -181 self._index['offset'] = [] -182 self._index['bitmap_offset'] = [] -183 self._index['data_offset'] = [] -184 self._index['size'] = [] -185 self._index['data_size'] = [] -186 self._index['submessageOffset'] = [] -187 self._index['submessageBeginSection'] = [] -188 self._index['isSubmessage'] = [] -189 self._index['messageNumber'] = [] -190 self._index['msg'] = [] -191 self._hasindex = True -192 -193 # Iterate -194 while True: -195 try: -196 # Read first 4 bytes and decode...looking for "GRIB" -197 pos = self._filehandle.tell() -198 header = struct.unpack('>i',self._filehandle.read(4))[0] -199 -200 # Test header. Then get information from GRIB2 Section 0: the discipline -201 # number, edition number (should always be 2), and GRIB2 message size. -202 # Then iterate to check for submessages. -203 if header.to_bytes(4,'big') == b'GRIB': -204 -205 _issubmessage = False -206 _submsgoffset = 0 -207 _submsgbegin = 0 -208 _bmapflag = None -209 -210 # Read the rest of Section 0 using struct. -211 section0 = np.concatenate(([header],list(struct.unpack('>HBBQ',self._filehandle.read(12)))),dtype=np.int64) -212 assert section0[3] == 2 -213 -214 # Read and unpack Section 1 -215 secsize = struct.unpack('>i',self._filehandle.read(4))[0] -216 secnum = struct.unpack('>B',self._filehandle.read(1))[0] -217 assert secnum == 1 -218 self._filehandle.seek(self._filehandle.tell()-5) -219 _grbmsg = self._filehandle.read(secsize) -220 _grbpos = 0 -221 section1,_grbpos = g2clib.unpack1(_grbmsg,_grbpos,np.empty) -222 secrange = range(2,8) -223 while 1: -224 section2 = b'' -225 for num in secrange: -226 secsize = struct.unpack('>i',self._filehandle.read(4))[0] -227 secnum = struct.unpack('>B',self._filehandle.read(1))[0] -228 if secnum == num: -229 if secnum == 2: -230 if secsize > 0: -231 section2 = self._filehandle.read(secsize-5) -232 elif secnum == 3: -233 self._filehandle.seek(self._filehandle.tell()-5) -234 _grbmsg = self._filehandle.read(secsize) -235 _grbpos = 0 -236 # Unpack Section 3 -237 _gds,_gdt,_deflist,_grbpos = g2clib.unpack3(_grbmsg,_grbpos,np.empty) -238 _gds = _gds.tolist() -239 _gdt = _gdt.tolist() -240 section3 = np.concatenate((_gds,_gdt)) -241 section3 = np.where(section3==4294967295,-1,section3) -242 elif secnum == 4: -243 self._filehandle.seek(self._filehandle.tell()-5) -244 _grbmsg = self._filehandle.read(secsize) -245 _grbpos = 0 -246 # Unpack Section 4 -247 _numcoord,_pdt,_pdtnum,_coordlist,_grbpos = g2clib.unpack4(_grbmsg,_grbpos,np.empty) -248 _pdt = _pdt.tolist() -249 section4 = np.concatenate((np.array((_numcoord,_pdtnum)),_pdt)) -250 elif secnum == 5: -251 self._filehandle.seek(self._filehandle.tell()-5) -252 _grbmsg = self._filehandle.read(secsize) -253 _grbpos = 0 -254 # Unpack Section 5 -255 _drt,_drtn,_npts,self._pos = g2clib.unpack5(_grbmsg,_grbpos,np.empty) -256 section5 = np.concatenate((np.array((_npts,_drtn)),_drt)) -257 section5 = np.where(section5==4294967295,-1,section5) -258 elif secnum == 6: -259 # Unpack Section 6. Not really...just get the flag value. -260 _bmapflag = struct.unpack('>B',self._filehandle.read(1))[0] -261 if _bmapflag == 0: -262 _bmappos = self._filehandle.tell()-6 -263 elif _bmapflag == 254: -264 pass # Do this to keep the previous position value -265 else: -266 _bmappos = None -267 self._filehandle.seek(self._filehandle.tell()+secsize-6) -268 elif secnum == 7: -269 # Unpack Section 7. No need to read it, just index the position in file. -270 _datapos = self._filehandle.tell()-5 -271 _datasize = secsize -272 self._filehandle.seek(self._filehandle.tell()+secsize-5) -273 else: -274 self._filehandle.seek(self._filehandle.tell()+secsize-5) -275 else: -276 if num == 2 and secnum == 3: -277 pass # Allow this. Just means no Local Use Section. -278 else: -279 _issubmessage = True -280 _submsgoffset = (self._filehandle.tell()-5)-(self._index['offset'][-1]) -281 _submsgbegin = secnum -282 self._filehandle.seek(self._filehandle.tell()-5) -283 continue -284 trailer = struct.unpack('>4s',self._filehandle.read(4))[0] -285 if trailer == b'7777': -286 self.messages += 1 -287 self._index['offset'].append(pos) -288 self._index['bitmap_offset'].append(_bmappos) -289 self._index['data_offset'].append(_datapos) -290 self._index['size'].append(section0[-1]) -291 self._index['data_size'].append(_datasize) -292 self._index['messageNumber'].append(self.messages) -293 self._index['isSubmessage'].append(_issubmessage) -294 if _issubmessage: -295 self._index['submessageOffset'].append(_submsgoffset) -296 self._index['submessageBeginSection'].append(_submsgbegin) -297 else: -298 self._index['submessageOffset'].append(0) -299 self._index['submessageBeginSection'].append(_submsgbegin) -300 -301 # Create Grib2Message with data. -302 msg = Grib2Message(section0,section1,section2,section3,section4,section5,_bmapflag) -303 msg._msgnum = self.messages-1 -304 msg._deflist = _deflist -305 msg._coordlist = _coordlist -306 if not no_data: -307 shape = (msg.ny,msg.nx) -308 ndim = 2 -309 if msg.typeOfValues == 0: -310 dtype = 'float32' -311 elif msg.typeOfValues == 1: -312 dtype = 'int32' -313 msg._data = Grib2MessageOnDiskArray(shape, ndim, dtype, self._filehandle, -314 msg, pos, _bmappos, _datapos) -315 self._index['msg'].append(msg) -316 -317 break -318 else: -319 self._filehandle.seek(self._filehandle.tell()-4) -320 self.messages += 1 -321 self._index['offset'].append(pos) -322 self._index['bitmap_offset'].append(_bmappos) -323 self._index['data_offset'].append(_datapos) -324 self._index['size'].append(section0[-1]) -325 self._index['data_size'].append(_datasize) -326 self._index['messageNumber'].append(self.messages) -327 self._index['isSubmessage'].append(_issubmessage) -328 self._index['submessageOffset'].append(_submsgoffset) -329 self._index['submessageBeginSection'].append(_submsgbegin) -330 -331 # Create Grib2Message with data. -332 msg = Grib2Message(section0,section1,section2,section3,section4,section5,_bmapflag) -333 msg._msgnum = self.messages-1 -334 msg._deflist = _deflist -335 msg._coordlist = _coordlist -336 if not no_data: -337 shape = (msg.ny,msg.nx) -338 ndim = 2 -339 if msg.typeOfValues == 0: -340 dtype = 'float32' -341 elif msg.typeOfValues == 1: -342 dtype = 'int32' -343 msg._data = Grib2MessageOnDiskArray(shape, ndim, dtype, self._filehandle, -344 msg, pos, _bmappos, _datapos) -345 self._index['msg'].append(msg) -346 -347 continue -348 -349 except(struct.error): -350 if 'r' in self.mode: -351 self._filehandle.seek(0) -352 break -353 -354 # Index at end of _build_index() -355 if self._hasindex and not no_data: -356 self.variables = tuple(sorted(set([msg.shortName for msg in self._index['msg']]))) -357 self.levels = tuple(sorted(set([msg.level for msg in self._index['msg']]))) -358 +175 +176 def _build_index(self, no_data=False): +177 """ +178 Perform indexing of GRIB2 Messages. +179 """ +180 # Initialize index dictionary +181 if not self._hasindex: +182 self._index['offset'] = [] +183 self._index['bitmap_offset'] = [] +184 self._index['data_offset'] = [] +185 self._index['size'] = [] +186 self._index['data_size'] = [] +187 self._index['submessageOffset'] = [] +188 self._index['submessageBeginSection'] = [] +189 self._index['isSubmessage'] = [] +190 self._index['messageNumber'] = [] +191 self._index['msg'] = [] +192 self._hasindex = True +193 +194 # Iterate +195 while True: +196 try: +197 # Read first 4 bytes and decode...looking for "GRIB" +198 pos = self._filehandle.tell() +199 header = struct.unpack('>i',self._filehandle.read(4))[0] +200 +201 # Test header. Then get information from GRIB2 Section 0: the discipline +202 # number, edition number (should always be 2), and GRIB2 message size. +203 # Then iterate to check for submessages. +204 if header.to_bytes(4,'big') == b'GRIB': +205 +206 _issubmessage = False +207 _submsgoffset = 0 +208 _submsgbegin = 0 +209 _bmapflag = None +210 +211 # Read the rest of Section 0 using struct. +212 section0 = np.concatenate(([header],list(struct.unpack('>HBBQ',self._filehandle.read(12)))),dtype=np.int64) +213 assert section0[3] == 2 +214 +215 # Read and unpack Section 1 +216 secsize = struct.unpack('>i',self._filehandle.read(4))[0] +217 secnum = struct.unpack('>B',self._filehandle.read(1))[0] +218 assert secnum == 1 +219 self._filehandle.seek(self._filehandle.tell()-5) +220 _grbmsg = self._filehandle.read(secsize) +221 _grbpos = 0 +222 section1,_grbpos = g2clib.unpack1(_grbmsg,_grbpos,np.empty) +223 secrange = range(2,8) +224 while 1: +225 section2 = b'' +226 for num in secrange: +227 secsize = struct.unpack('>i',self._filehandle.read(4))[0] +228 secnum = struct.unpack('>B',self._filehandle.read(1))[0] +229 if secnum == num: +230 if secnum == 2: +231 if secsize > 0: +232 section2 = self._filehandle.read(secsize-5) +233 elif secnum == 3: +234 self._filehandle.seek(self._filehandle.tell()-5) +235 _grbmsg = self._filehandle.read(secsize) +236 _grbpos = 0 +237 # Unpack Section 3 +238 _gds,_gdt,_deflist,_grbpos = g2clib.unpack3(_grbmsg,_grbpos,np.empty) +239 _gds = _gds.tolist() +240 _gdt = _gdt.tolist() +241 section3 = np.concatenate((_gds,_gdt)) +242 section3 = np.where(section3==4294967295,-1,section3) +243 elif secnum == 4: +244 self._filehandle.seek(self._filehandle.tell()-5) +245 _grbmsg = self._filehandle.read(secsize) +246 _grbpos = 0 +247 # Unpack Section 4 +248 _numcoord,_pdt,_pdtnum,_coordlist,_grbpos = g2clib.unpack4(_grbmsg,_grbpos,np.empty) +249 _pdt = _pdt.tolist() +250 section4 = np.concatenate((np.array((_numcoord,_pdtnum)),_pdt)) +251 elif secnum == 5: +252 self._filehandle.seek(self._filehandle.tell()-5) +253 _grbmsg = self._filehandle.read(secsize) +254 _grbpos = 0 +255 # Unpack Section 5 +256 _drt,_drtn,_npts,self._pos = g2clib.unpack5(_grbmsg,_grbpos,np.empty) +257 section5 = np.concatenate((np.array((_npts,_drtn)),_drt)) +258 section5 = np.where(section5==4294967295,-1,section5) +259 elif secnum == 6: +260 # Unpack Section 6. Not really...just get the flag value. +261 _bmapflag = struct.unpack('>B',self._filehandle.read(1))[0] +262 if _bmapflag == 0: +263 _bmappos = self._filehandle.tell()-6 +264 elif _bmapflag == 254: +265 pass # Do this to keep the previous position value +266 else: +267 _bmappos = None +268 self._filehandle.seek(self._filehandle.tell()+secsize-6) +269 elif secnum == 7: +270 # Unpack Section 7. No need to read it, just index the position in file. +271 _datapos = self._filehandle.tell()-5 +272 _datasize = secsize +273 self._filehandle.seek(self._filehandle.tell()+secsize-5) +274 else: +275 self._filehandle.seek(self._filehandle.tell()+secsize-5) +276 else: +277 if num == 2 and secnum == 3: +278 pass # Allow this. Just means no Local Use Section. +279 else: +280 _issubmessage = True +281 _submsgoffset = (self._filehandle.tell()-5)-(self._index['offset'][-1]) +282 _submsgbegin = secnum +283 self._filehandle.seek(self._filehandle.tell()-5) +284 continue +285 trailer = struct.unpack('>4s',self._filehandle.read(4))[0] +286 if trailer == b'7777': +287 self.messages += 1 +288 self._index['offset'].append(pos) +289 self._index['bitmap_offset'].append(_bmappos) +290 self._index['data_offset'].append(_datapos) +291 self._index['size'].append(section0[-1]) +292 self._index['data_size'].append(_datasize) +293 self._index['messageNumber'].append(self.messages) +294 self._index['isSubmessage'].append(_issubmessage) +295 if _issubmessage: +296 self._index['submessageOffset'].append(_submsgoffset) +297 self._index['submessageBeginSection'].append(_submsgbegin) +298 else: +299 self._index['submessageOffset'].append(0) +300 self._index['submessageBeginSection'].append(_submsgbegin) +301 +302 # Create Grib2Message with data. +303 msg = Grib2Message(section0,section1,section2,section3,section4,section5,_bmapflag) +304 msg._msgnum = self.messages-1 +305 msg._deflist = _deflist +306 msg._coordlist = _coordlist +307 if not no_data: +308 shape = (msg.ny,msg.nx) +309 ndim = 2 +310 if msg.typeOfValues == 0: +311 dtype = 'float32' +312 elif msg.typeOfValues == 1: +313 dtype = 'int32' +314 msg._data = Grib2MessageOnDiskArray(shape, ndim, dtype, self._filehandle, +315 msg, pos, _bmappos, _datapos) +316 self._index['msg'].append(msg) +317 +318 break +319 else: +320 self._filehandle.seek(self._filehandle.tell()-4) +321 self.messages += 1 +322 self._index['offset'].append(pos) +323 self._index['bitmap_offset'].append(_bmappos) +324 self._index['data_offset'].append(_datapos) +325 self._index['size'].append(section0[-1]) +326 self._index['data_size'].append(_datasize) +327 self._index['messageNumber'].append(self.messages) +328 self._index['isSubmessage'].append(_issubmessage) +329 self._index['submessageOffset'].append(_submsgoffset) +330 self._index['submessageBeginSection'].append(_submsgbegin) +331 +332 # Create Grib2Message with data. +333 msg = Grib2Message(section0,section1,section2,section3,section4,section5,_bmapflag) +334 msg._msgnum = self.messages-1 +335 msg._deflist = _deflist +336 msg._coordlist = _coordlist +337 if not no_data: +338 shape = (msg.ny,msg.nx) +339 ndim = 2 +340 if msg.typeOfValues == 0: +341 dtype = 'float32' +342 elif msg.typeOfValues == 1: +343 dtype = 'int32' +344 msg._data = Grib2MessageOnDiskArray(shape, ndim, dtype, self._filehandle, +345 msg, pos, _bmappos, _datapos) +346 self._index['msg'].append(msg) +347 +348 continue +349 +350 except(struct.error): +351 if 'r' in self.mode: +352 self._filehandle.seek(0) +353 break +354 +355 # Index at end of _build_index() +356 if self._hasindex and not no_data: +357 self.variables = tuple(sorted(set([msg.shortName for msg in self._index['msg']]))) +358 self.levels = tuple(sorted(set([msg.level for msg in self._index['msg']]))) 359 -360 def close(self): -361 """ -362 Close the file handle -363 """ -364 if not self._filehandle.closed: -365 self.messages = 0 -366 self.current_message = 0 -367 self._filehandle.close() -368 self.closed = self._filehandle.closed -369 +360 +361 def close(self): +362 """ +363 Close the file handle +364 """ +365 if not self._filehandle.closed: +366 self.messages = 0 +367 self.current_message = 0 +368 self._filehandle.close() +369 self.closed = self._filehandle.closed 370 -371 def read(self, size=None): -372 """ -373 Read size amount of GRIB2 messages from the current position. If no argument is -374 given, then size is None and all messages are returned from the current position -375 in the file. This read method follows the behavior of Python's builtin open() -376 function, but whereas that operates on units of bytes, we operate on units of -377 GRIB2 messages. -378 -379 Parameters -380 ---------- -381 -382 **`size : int, optional`** -383 -384 The number of GRIB2 messages to read from the current position. If no argument is -385 give, the default value is `None` and remainder of the file is read. -386 -387 Returns -388 ------- -389 -390 `Grib2Message` object when size = 1 or a `list` of Grib2Messages when -391 size > 1. -392 """ -393 if size is not None and size < 0: -394 size = None -395 if size is None or size > 1: -396 start = self.tell() -397 stop = self.messages if size is None else start+size -398 if size is None: -399 self.current_message = self.messages-1 -400 else: -401 self.current_message += size -402 return self._index['msg'][slice(start,stop,1)] -403 elif size == 1: -404 self.current_message += 1 -405 return self._index['msg'][self.current_message] -406 else: -407 None -408 +371 +372 def read(self, size=None): +373 """ +374 Read size amount of GRIB2 messages from the current position. If no argument is +375 given, then size is None and all messages are returned from the current position +376 in the file. This read method follows the behavior of Python's builtin open() +377 function, but whereas that operates on units of bytes, we operate on units of +378 GRIB2 messages. +379 +380 Parameters +381 ---------- +382 +383 **`size : int, optional`** +384 +385 The number of GRIB2 messages to read from the current position. If no argument is +386 give, the default value is `None` and remainder of the file is read. +387 +388 Returns +389 ------- +390 +391 `Grib2Message` object when size = 1 or a `list` of Grib2Messages when +392 size > 1. +393 """ +394 if size is not None and size < 0: +395 size = None +396 if size is None or size > 1: +397 start = self.tell() +398 stop = self.messages if size is None else start+size +399 if size is None: +400 self.current_message = self.messages-1 +401 else: +402 self.current_message += size +403 return self._index['msg'][slice(start,stop,1)] +404 elif size == 1: +405 self.current_message += 1 +406 return self._index['msg'][self.current_message] +407 else: +408 None 409 -410 def seek(self, pos): -411 """ -412 Set the position within the file in units of GRIB2 messages. -413 -414 Parameters -415 ---------- -416 -417 **`pos : int`** -418 -419 The GRIB2 Message number to set the file pointer to. -420 """ -421 if self._hasindex: -422 self._filehandle.seek(self._index['offset'][pos]) -423 self.current_message = pos -424 +410 +411 def seek(self, pos): +412 """ +413 Set the position within the file in units of GRIB2 messages. +414 +415 Parameters +416 ---------- +417 +418 **`pos : int`** +419 +420 The GRIB2 Message number to set the file pointer to. +421 """ +422 if self._hasindex: +423 self._filehandle.seek(self._index['offset'][pos]) +424 self.current_message = pos 425 -426 def tell(self): -427 """ -428 Returns the position of the file in units of GRIB2 Messages. -429 """ -430 return self.current_message -431 +426 +427 def tell(self): +428 """ +429 Returns the position of the file in units of GRIB2 Messages. +430 """ +431 return self.current_message 432 -433 def select(self,**kwargs): -434 """ -435 Select GRIB2 messages by `Grib2Message` attributes. -436 """ -437 # TODO: Added ability to process multiple values for each keyword (attribute) -438 idxs = [] -439 nkeys = len(kwargs.keys()) -440 for k,v in kwargs.items(): -441 for m in self._index['msg']: -442 if hasattr(m,k) and getattr(m,k) == v: idxs.append(m._msgnum) -443 idxs = np.array(idxs,dtype=np.int32) -444 return [self._index['msg'][i] for i in [ii[0] for ii in collections.Counter(idxs).most_common() if ii[1] == nkeys]] -445 +433 +434 def select(self,**kwargs): +435 """ +436 Select GRIB2 messages by `Grib2Message` attributes. +437 """ +438 # TODO: Added ability to process multiple values for each keyword (attribute) +439 idxs = [] +440 nkeys = len(kwargs.keys()) +441 for k,v in kwargs.items(): +442 for m in self._index['msg']: +443 if hasattr(m,k) and getattr(m,k) == v: idxs.append(m._msgnum) +444 idxs = np.array(idxs,dtype=np.int32) +445 return [self._index['msg'][i] for i in [ii[0] for ii in collections.Counter(idxs).most_common() if ii[1] == nkeys]] 446 -447 def write(self, msg): -448 """ -449 Writes GRIB2 message object to file. -450 -451 Parameters -452 ---------- -453 -454 **`msg : Grib2Message or sequence of Grib2Messages`** -455 -456 GRIB2 message objects to write to file. -457 """ -458 if isinstance(msg,list): -459 for m in msg: -460 self.write(m) -461 return -462 -463 if issubclass(msg.__class__,_Grib2Message): -464 if hasattr(msg,'_msg'): -465 self._filehandle.write(msg._msg) -466 else: -467 if msg._signature != msg._generate_signature(): -468 msg.pack() -469 self._filehandle.write(msg._msg) -470 else: -471 if hasattr(msg._data,'filehandle'): -472 msg._data.filehandle.seek(msg._data.offset) -473 self._filehandle.write(msg._data.filehandle.read(msg.section0[-1])) -474 else: -475 msg.pack() -476 self._filehandle.write(msg._msg) -477 self.flush() -478 self.size = os.path.getsize(self.name) -479 self._filehandle.seek(self.size-msg.section0[-1]) -480 self._build_index() -481 else: -482 raise TypeError("msg must be a Grib2Message object.") -483 return -484 +447 +448 def write(self, msg): +449 """ +450 Writes GRIB2 message object to file. +451 +452 Parameters +453 ---------- +454 +455 **`msg : Grib2Message or sequence of Grib2Messages`** +456 +457 GRIB2 message objects to write to file. +458 """ +459 if isinstance(msg,list): +460 for m in msg: +461 self.write(m) +462 return +463 +464 if issubclass(msg.__class__,_Grib2Message): +465 if hasattr(msg,'_msg'): +466 self._filehandle.write(msg._msg) +467 else: +468 if msg._signature != msg._generate_signature(): +469 msg.pack() +470 self._filehandle.write(msg._msg) +471 else: +472 if hasattr(msg._data,'filehandle'): +473 msg._data.filehandle.seek(msg._data.offset) +474 self._filehandle.write(msg._data.filehandle.read(msg.section0[-1])) +475 else: +476 msg.pack() +477 self._filehandle.write(msg._msg) +478 self.flush() +479 self.size = os.path.getsize(self.name) +480 self._filehandle.seek(self.size-msg.section0[-1]) +481 self._build_index() +482 else: +483 raise TypeError("msg must be a Grib2Message object.") +484 return 485 -486 def flush(self): -487 """ -488 Flush the file object buffer. -489 """ -490 self._filehandle.flush() -491 +486 +487 def flush(self): +488 """ +489 Flush the file object buffer. +490 """ +491 self._filehandle.flush() 492 -493 def levels_by_var(self,name): -494 """ -495 Return a list of level strings given a variable shortName. -496 -497 Parameters -498 ---------- -499 -500 **`name : str`** -501 -502 Grib2Message variable shortName -503 -504 Returns -505 ------- -506 -507 A list of strings of unique level strings. -508 """ -509 return list(sorted(set([msg.level for msg in self.select(shortName=name)]))) -510 +493 +494 def levels_by_var(self,name): +495 """ +496 Return a list of level strings given a variable shortName. +497 +498 Parameters +499 ---------- +500 +501 **`name : str`** +502 +503 Grib2Message variable shortName +504 +505 Returns +506 ------- +507 +508 A list of strings of unique level strings. +509 """ +510 return list(sorted(set([msg.level for msg in self.select(shortName=name)]))) 511 -512 def vars_by_level(self,level): -513 """ -514 Return a list of variable shortName strings given a level. -515 -516 Parameters -517 ---------- -518 -519 **`level : str`** -520 -521 Grib2Message variable level -522 -523 Returns -524 ------- -525 -526 A list of strings of variable shortName strings. -527 """ -528 return list(sorted(set([msg.shortName for msg in self.select(level=level)]))) +512 +513 def vars_by_level(self,level): +514 """ +515 Return a list of variable shortName strings given a level. +516 +517 Parameters +518 ---------- +519 +520 **`level : str`** +521 +522 Grib2Message variable level +523 +524 Returns +525 ------- +526 +527 A list of strings of variable shortName strings. +528 """ +529 return list(sorted(set([msg.shortName for msg in self.select(level=level)]))) @@ -978,24 +982,25 @@

    Attributes

    95 if mode in {'a','r','w'}: 96 mode = mode+'b' 97 if 'w' in mode: mode += '+' - 98 self._filehandle = builtins.open(filename,mode=mode,buffering=ONE_MB) - 99 self._hasindex = False -100 self._index = {} -101 self.mode = mode -102 self.name = os.path.abspath(filename) -103 self.messages = 0 -104 self.current_message = 0 -105 self.size = os.path.getsize(self.name) -106 self.closed = self._filehandle.closed -107 self.levels = None -108 self.variables = None -109 if 'r' in self.mode: -110 try: -111 self._build_index(no_data=kwargs['_xarray_backend']) -112 except(KeyError): -113 self._build_index() -114 # FIX: Cannot perform reads on mode='a' -115 #if 'a' in self.mode and self.size > 0: self._build_index() + 98 if 'a' in mode: mode += '+' + 99 self._filehandle = builtins.open(filename,mode=mode,buffering=ONE_MB) +100 self._hasindex = False +101 self._index = {} +102 self.mode = mode +103 self.name = os.path.abspath(filename) +104 self.messages = 0 +105 self.current_message = 0 +106 self.size = os.path.getsize(self.name) +107 self.closed = self._filehandle.closed +108 self.levels = None +109 self.variables = None +110 if 'r' in self.mode: +111 try: +112 self._build_index(no_data=kwargs['_xarray_backend']) +113 except(KeyError): +114 self._build_index() +115 # FIX: Cannot perform reads on mode='a' +116 #if 'a' in self.mode and self.size > 0: self._build_index() @@ -1113,15 +1118,15 @@

    Parameters

    -
    360    def close(self):
    -361        """
    -362        Close the file handle
    -363        """
    -364        if not self._filehandle.closed:
    -365            self.messages = 0
    -366            self.current_message = 0
    -367            self._filehandle.close()
    -368            self.closed = self._filehandle.closed
    +            
    361    def close(self):
    +362        """
    +363        Close the file handle
    +364        """
    +365        if not self._filehandle.closed:
    +366            self.messages = 0
    +367            self.current_message = 0
    +368            self._filehandle.close()
    +369            self.closed = self._filehandle.closed
     
    @@ -1141,43 +1146,43 @@

    Parameters

    -
    371    def read(self, size=None):
    -372        """
    -373        Read size amount of GRIB2 messages from the current position. If no argument is
    -374        given, then size is None and all messages are returned from the current position
    -375        in the file. This read method follows the behavior of Python's builtin open()
    -376        function, but whereas that operates on units of bytes, we operate on units of
    -377        GRIB2 messages.
    -378
    -379        Parameters
    -380        ----------
    -381
    -382        **`size : int, optional`**
    -383
    -384        The number of GRIB2 messages to read from the current position. If no argument is
    -385        give, the default value is `None` and remainder of the file is read.
    -386
    -387        Returns
    -388        -------
    -389
    -390        `Grib2Message` object when size = 1 or a `list` of Grib2Messages when
    -391        size > 1.
    -392        """
    -393        if size is not None and size < 0:
    -394            size = None
    -395        if size is None or size > 1:
    -396            start = self.tell()
    -397            stop = self.messages if size is None else start+size
    -398            if size is None:
    -399                self.current_message = self.messages-1
    -400            else:
    -401                self.current_message += size
    -402            return self._index['msg'][slice(start,stop,1)]
    -403        elif size == 1:
    -404            self.current_message += 1
    -405            return self._index['msg'][self.current_message]
    -406        else:
    -407            None
    +            
    372    def read(self, size=None):
    +373        """
    +374        Read size amount of GRIB2 messages from the current position. If no argument is
    +375        given, then size is None and all messages are returned from the current position
    +376        in the file. This read method follows the behavior of Python's builtin open()
    +377        function, but whereas that operates on units of bytes, we operate on units of
    +378        GRIB2 messages.
    +379
    +380        Parameters
    +381        ----------
    +382
    +383        **`size : int, optional`**
    +384
    +385        The number of GRIB2 messages to read from the current position. If no argument is
    +386        give, the default value is `None` and remainder of the file is read.
    +387
    +388        Returns
    +389        -------
    +390
    +391        `Grib2Message` object when size = 1 or a `list` of Grib2Messages when
    +392        size > 1.
    +393        """
    +394        if size is not None and size < 0:
    +395            size = None
    +396        if size is None or size > 1:
    +397            start = self.tell()
    +398            stop = self.messages if size is None else start+size
    +399            if size is None:
    +400                self.current_message = self.messages-1
    +401            else:
    +402                self.current_message += size
    +403            return self._index['msg'][slice(start,stop,1)]
    +404        elif size == 1:
    +405            self.current_message += 1
    +406            return self._index['msg'][self.current_message]
    +407        else:
    +408            None
     
    @@ -1213,20 +1218,20 @@

    Returns

    -
    410    def seek(self, pos):
    -411        """
    -412        Set the position within the file in units of GRIB2 messages.
    -413
    -414        Parameters
    -415        ----------
    -416
    -417        **`pos : int`**
    -418
    -419        The GRIB2 Message number to set the file pointer to.
    -420        """
    -421        if self._hasindex:
    -422            self._filehandle.seek(self._index['offset'][pos])
    -423            self.current_message = pos
    +            
    411    def seek(self, pos):
    +412        """
    +413        Set the position within the file in units of GRIB2 messages.
    +414
    +415        Parameters
    +416        ----------
    +417
    +418        **`pos : int`**
    +419
    +420        The GRIB2 Message number to set the file pointer to.
    +421        """
    +422        if self._hasindex:
    +423            self._filehandle.seek(self._index['offset'][pos])
    +424            self.current_message = pos
     
    @@ -1252,11 +1257,11 @@

    Parameters

    -
    426    def tell(self):
    -427        """
    -428        Returns the position of the file in units of GRIB2 Messages.
    -429        """
    -430        return self.current_message
    +            
    427    def tell(self):
    +428        """
    +429        Returns the position of the file in units of GRIB2 Messages.
    +430        """
    +431        return self.current_message
     
    @@ -1276,18 +1281,18 @@

    Parameters

    -
    433    def select(self,**kwargs):
    -434        """
    -435        Select GRIB2 messages by `Grib2Message` attributes.
    -436        """
    -437        # TODO: Added ability to process multiple values for each keyword (attribute)
    -438        idxs = []
    -439        nkeys = len(kwargs.keys())
    -440        for k,v in kwargs.items():
    -441            for m in self._index['msg']:
    -442                if hasattr(m,k) and getattr(m,k) == v: idxs.append(m._msgnum)
    -443        idxs = np.array(idxs,dtype=np.int32)
    -444        return [self._index['msg'][i] for i in [ii[0] for ii in collections.Counter(idxs).most_common() if ii[1] == nkeys]]
    +            
    434    def select(self,**kwargs):
    +435        """
    +436        Select GRIB2 messages by `Grib2Message` attributes.
    +437        """
    +438        # TODO: Added ability to process multiple values for each keyword (attribute)
    +439        idxs = []
    +440        nkeys = len(kwargs.keys())
    +441        for k,v in kwargs.items():
    +442            for m in self._index['msg']:
    +443                if hasattr(m,k) and getattr(m,k) == v: idxs.append(m._msgnum)
    +444        idxs = np.array(idxs,dtype=np.int32)
    +445        return [self._index['msg'][i] for i in [ii[0] for ii in collections.Counter(idxs).most_common() if ii[1] == nkeys]]
     
    @@ -1307,43 +1312,43 @@

    Parameters

    -
    447    def write(self, msg):
    -448        """
    -449        Writes GRIB2 message object to file.
    -450
    -451        Parameters
    -452        ----------
    -453
    -454        **`msg : Grib2Message or sequence of Grib2Messages`**
    -455
    -456        GRIB2 message objects to write to file.
    -457        """
    -458        if isinstance(msg,list):
    -459            for m in msg:
    -460                self.write(m)
    -461            return
    -462
    -463        if issubclass(msg.__class__,_Grib2Message):
    -464            if hasattr(msg,'_msg'):
    -465                self._filehandle.write(msg._msg)
    -466            else:
    -467                if msg._signature != msg._generate_signature():
    -468                    msg.pack()
    -469                    self._filehandle.write(msg._msg)
    -470                else:
    -471                    if hasattr(msg._data,'filehandle'):
    -472                        msg._data.filehandle.seek(msg._data.offset)
    -473                        self._filehandle.write(msg._data.filehandle.read(msg.section0[-1]))
    -474                    else:
    -475                        msg.pack()
    -476                        self._filehandle.write(msg._msg)
    -477            self.flush()
    -478            self.size = os.path.getsize(self.name)
    -479            self._filehandle.seek(self.size-msg.section0[-1])
    -480            self._build_index()
    -481        else:
    -482            raise TypeError("msg must be a Grib2Message object.")
    -483        return
    +            
    448    def write(self, msg):
    +449        """
    +450        Writes GRIB2 message object to file.
    +451
    +452        Parameters
    +453        ----------
    +454
    +455        **`msg : Grib2Message or sequence of Grib2Messages`**
    +456
    +457        GRIB2 message objects to write to file.
    +458        """
    +459        if isinstance(msg,list):
    +460            for m in msg:
    +461                self.write(m)
    +462            return
    +463
    +464        if issubclass(msg.__class__,_Grib2Message):
    +465            if hasattr(msg,'_msg'):
    +466                self._filehandle.write(msg._msg)
    +467            else:
    +468                if msg._signature != msg._generate_signature():
    +469                    msg.pack()
    +470                    self._filehandle.write(msg._msg)
    +471                else:
    +472                    if hasattr(msg._data,'filehandle'):
    +473                        msg._data.filehandle.seek(msg._data.offset)
    +474                        self._filehandle.write(msg._data.filehandle.read(msg.section0[-1]))
    +475                    else:
    +476                        msg.pack()
    +477                        self._filehandle.write(msg._msg)
    +478            self.flush()
    +479            self.size = os.path.getsize(self.name)
    +480            self._filehandle.seek(self.size-msg.section0[-1])
    +481            self._build_index()
    +482        else:
    +483            raise TypeError("msg must be a Grib2Message object.")
    +484        return
     
    @@ -1369,11 +1374,11 @@

    Parameters

    -
    486    def flush(self):
    -487        """
    -488        Flush the file object buffer.
    -489        """
    -490        self._filehandle.flush()
    +            
    487    def flush(self):
    +488        """
    +489        Flush the file object buffer.
    +490        """
    +491        self._filehandle.flush()
     
    @@ -1393,23 +1398,23 @@

    Parameters

    -
    493    def levels_by_var(self,name):
    -494        """
    -495        Return a list of level strings given a variable shortName.
    -496
    -497        Parameters
    -498        ----------
    -499
    -500        **`name : str`**
    -501
    -502        Grib2Message variable shortName
    -503
    -504        Returns
    -505        -------
    -506
    -507        A list of strings of unique level strings.
    -508        """
    -509        return list(sorted(set([msg.level for msg in self.select(shortName=name)])))
    +            
    494    def levels_by_var(self,name):
    +495        """
    +496        Return a list of level strings given a variable shortName.
    +497
    +498        Parameters
    +499        ----------
    +500
    +501        **`name : str`**
    +502
    +503        Grib2Message variable shortName
    +504
    +505        Returns
    +506        -------
    +507
    +508        A list of strings of unique level strings.
    +509        """
    +510        return list(sorted(set([msg.level for msg in self.select(shortName=name)])))
     
    @@ -1439,23 +1444,23 @@

    Returns

    -
    512    def vars_by_level(self,level):
    -513        """
    -514        Return a list of variable shortName strings given a level.
    -515
    -516        Parameters
    -517        ----------
    -518
    -519        **`level : str`**
    -520
    -521        Grib2Message variable level
    -522
    -523        Returns
    -524        -------
    -525
    -526        A list of strings of variable shortName strings.
    -527        """
    -528        return list(sorted(set([msg.shortName for msg in self.select(level=level)])))
    +            
    513    def vars_by_level(self,level):
    +514        """
    +515        Return a list of variable shortName strings given a level.
    +516
    +517        Parameters
    +518        ----------
    +519
    +520        **`level : str`**
    +521
    +522        Grib2Message variable level
    +523
    +524        Returns
    +525        -------
    +526
    +527        A list of strings of variable shortName strings.
    +528        """
    +529        return list(sorted(set([msg.shortName for msg in self.select(level=level)])))
     
    @@ -1486,73 +1491,73 @@

    Returns

    -
    531class Grib2Message:
    -532    """
    -533    Creation class for a GRIB2 message.
    -534    """
    -535    def __new__(self, section0: np.array = np.array([struct.unpack('>I',b'GRIB')[0],0,0,2,0]),
    -536                      section1: np.array = np.zeros((13),dtype=np.int64),
    -537                      section2: bytes = None,
    -538                      section3: np.array = None,
    -539                      section4: np.array = None,
    -540                      section5: np.array = None, *args, **kwargs):
    -541
    -542        if np.all(section1==0):
    -543            section1[5:11] = datetime.datetime.utcfromtimestamp(0).timetuple()[:6]
    -544
    -545        bases = list()
    -546        if section3 is None:
    -547            if 'gdtn' in kwargs.keys():
    -548                gdtn = kwargs['gdtn']
    -549                Gdt = templates.gdt_class_by_gdtn(gdtn)
    -550                bases.append(Gdt)
    -551                section3 = np.zeros((Gdt._len+5),dtype=np.int64)
    -552                section3[4] = gdtn
    -553            else:
    -554                raise ValueError("Must provide GRIB2 Grid Definition Template Number or section 3 array")
    -555        else:
    -556            gdtn = section3[4]
    -557            Gdt = templates.gdt_class_by_gdtn(gdtn)
    -558            bases.append(Gdt)
    -559
    -560        if section4 is None:
    -561            if 'pdtn' in kwargs.keys():
    -562                pdtn = kwargs['pdtn']
    -563                Pdt = templates.pdt_class_by_pdtn(pdtn)
    -564                bases.append(Pdt)
    -565                section4 = np.zeros((Pdt._len+2),dtype=np.int64)
    -566                section4[1] = pdtn
    -567            else:
    -568                raise ValueError("Must provide GRIB2 Production Definition Template Number or section 4 array")
    -569        else:
    -570            pdtn = section4[1]
    -571            Pdt = templates.pdt_class_by_pdtn(pdtn)
    -572            bases.append(Pdt)
    -573
    -574        if section5 is None:
    -575            if 'drtn' in kwargs.keys():
    -576                drtn = kwargs['drtn']
    -577                Drt = templates.drt_class_by_drtn(drtn)
    -578                bases.append(Drt)
    -579                section5 = np.zeros((Drt._len+2),dtype=np.int64)
    -580                section5[1] = drtn
    -581            else:
    -582                raise ValueError("Must provide GRIB2 Data Representation Template Number or section 5 array")
    -583        else:
    -584            drtn = section5[1]
    -585            Drt = templates.drt_class_by_drtn(drtn)
    -586            bases.append(Drt)
    -587
    -588        # attempt to use existing Msg class if it has already been made with gdtn,pdtn,drtn combo
    -589        try:
    -590            Msg = _msg_class_store[f"{gdtn}:{pdtn}:{drtn}"]
    -591        except KeyError:
    -592            @dataclass(init=False, repr=False)
    -593            class Msg(_Grib2Message, *bases):
    -594                pass
    -595            _msg_class_store[f"{gdtn}:{pdtn}:{drtn}"] = Msg
    -596
    -597        return Msg(section0, section1, section2, section3, section4, section5, *args)
    +            
    532class Grib2Message:
    +533    """
    +534    Creation class for a GRIB2 message.
    +535    """
    +536    def __new__(self, section0: np.array = np.array([struct.unpack('>I',b'GRIB')[0],0,0,2,0]),
    +537                      section1: np.array = np.zeros((13),dtype=np.int64),
    +538                      section2: bytes = None,
    +539                      section3: np.array = None,
    +540                      section4: np.array = None,
    +541                      section5: np.array = None, *args, **kwargs):
    +542
    +543        if np.all(section1==0):
    +544            section1[5:11] = datetime.datetime.utcfromtimestamp(0).timetuple()[:6]
    +545
    +546        bases = list()
    +547        if section3 is None:
    +548            if 'gdtn' in kwargs.keys():
    +549                gdtn = kwargs['gdtn']
    +550                Gdt = templates.gdt_class_by_gdtn(gdtn)
    +551                bases.append(Gdt)
    +552                section3 = np.zeros((Gdt._len+5),dtype=np.int64)
    +553                section3[4] = gdtn
    +554            else:
    +555                raise ValueError("Must provide GRIB2 Grid Definition Template Number or section 3 array")
    +556        else:
    +557            gdtn = section3[4]
    +558            Gdt = templates.gdt_class_by_gdtn(gdtn)
    +559            bases.append(Gdt)
    +560
    +561        if section4 is None:
    +562            if 'pdtn' in kwargs.keys():
    +563                pdtn = kwargs['pdtn']
    +564                Pdt = templates.pdt_class_by_pdtn(pdtn)
    +565                bases.append(Pdt)
    +566                section4 = np.zeros((Pdt._len+2),dtype=np.int64)
    +567                section4[1] = pdtn
    +568            else:
    +569                raise ValueError("Must provide GRIB2 Production Definition Template Number or section 4 array")
    +570        else:
    +571            pdtn = section4[1]
    +572            Pdt = templates.pdt_class_by_pdtn(pdtn)
    +573            bases.append(Pdt)
    +574
    +575        if section5 is None:
    +576            if 'drtn' in kwargs.keys():
    +577                drtn = kwargs['drtn']
    +578                Drt = templates.drt_class_by_drtn(drtn)
    +579                bases.append(Drt)
    +580                section5 = np.zeros((Drt._len+2),dtype=np.int64)
    +581                section5[1] = drtn
    +582            else:
    +583                raise ValueError("Must provide GRIB2 Data Representation Template Number or section 5 array")
    +584        else:
    +585            drtn = section5[1]
    +586            Drt = templates.drt_class_by_drtn(drtn)
    +587            bases.append(Drt)
    +588
    +589        # attempt to use existing Msg class if it has already been made with gdtn,pdtn,drtn combo
    +590        try:
    +591            Msg = _msg_class_store[f"{gdtn}:{pdtn}:{drtn}"]
    +592        except KeyError:
    +593            @dataclass(init=False, repr=False)
    +594            class Msg(_Grib2Message, *bases):
    +595                pass
    +596            _msg_class_store[f"{gdtn}:{pdtn}:{drtn}"] = Msg
    +597
    +598        return Msg(section0, section1, section2, section3, section4, section5, *args)
     
    @@ -1573,557 +1578,621 @@

    Returns

    -
     600@dataclass
    - 601class _Grib2Message:
    - 602    """GRIB2 Message base class"""
    - 603    # GRIB2 Sections
    - 604    section0: np.array = field(init=True,repr=False)
    - 605    section1: np.array = field(init=True,repr=False)
    - 606    section2: bytes = field(init=True,repr=False)
    - 607    section3: np.array = field(init=True,repr=False)
    - 608    section4: np.array = field(init=True,repr=False)
    - 609    section5: np.array = field(init=True,repr=False)
    - 610    bitMapFlag: templates.Grib2Metadata = field(init=True,repr=False,default=255)
    - 611
    - 612    # Section 0 looked up attributes
    - 613    indicatorSection: np.array = field(init=False,repr=False,default=templates.IndicatorSection())
    - 614    discipline: templates.Grib2Metadata = field(init=False,repr=False,default=templates.Discipline())
    - 615
    - 616    # Section 1 looked up attributes
    - 617    identificationSection: np.array = field(init=False,repr=False,default=templates.IdentificationSection())
    - 618    originatingCenter: templates.Grib2Metadata = field(init=False,repr=False,default=templates.OriginatingCenter())
    - 619    originatingSubCenter: templates.Grib2Metadata = field(init=False,repr=False,default=templates.OriginatingSubCenter())
    - 620    masterTableInfo: templates.Grib2Metadata = field(init=False,repr=False,default=templates.MasterTableInfo())
    - 621    localTableInfo: templates.Grib2Metadata = field(init=False,repr=False,default=templates.LocalTableInfo())
    - 622    significanceOfReferenceTime: templates.Grib2Metadata = field(init=False,repr=False,default=templates.SignificanceOfReferenceTime())
    - 623    year: int = field(init=False,repr=False,default=templates.Year())
    - 624    month: int = field(init=False,repr=False,default=templates.Month())
    - 625    day: int = field(init=False,repr=False,default=templates.Day())
    - 626    hour: int = field(init=False,repr=False,default=templates.Hour())
    - 627    minute: int = field(init=False,repr=False,default=templates.Minute())
    - 628    second: int = field(init=False,repr=False,default=templates.Second())
    - 629    refDate: datetime.datetime = field(init=False,repr=False,default=templates.RefDate())
    - 630    productionStatus: templates.Grib2Metadata = field(init=False,repr=False,default=templates.ProductionStatus())
    - 631    typeOfData: templates.Grib2Metadata = field(init=False,repr=False,default=templates.TypeOfData())
    - 632
    - 633    @property
    - 634    def _isNDFD(self):
    - 635        """Check if GRIB2 message is from NWS NDFD"""
    - 636        return np.all(self.section1[0:2]==[8,65535])
    - 637
    - 638    # Section 3 looked up common attributes.  Other looked up attributes are available according
    - 639    # to the Grid Definition Template.
    - 640    gridDefinitionSection: np.array = field(init=False,repr=False,default=templates.GridDefinitionSection())
    - 641    sourceOfGridDefinition: int = field(init=False,repr=False,default=templates.SourceOfGridDefinition())
    - 642    numberOfDataPoints: int = field(init=False,repr=False,default=templates.NumberOfDataPoints())
    - 643    interpretationOfListOfNumbers: templates.Grib2Metadata = field(init=False,repr=False,default=templates.InterpretationOfListOfNumbers())
    - 644    gridDefinitionTemplateNumber: templates.Grib2Metadata = field(init=False,repr=False,default=templates.GridDefinitionTemplateNumber())
    - 645    gridDefinitionTemplate: list = field(init=False,repr=False,default=templates.GridDefinitionTemplate())
    - 646    _earthparams: dict = field(init=False,repr=False,default=templates.EarthParams())
    - 647    _dxsign: float = field(init=False,repr=False,default=templates.DxSign())
    - 648    _dysign: float = field(init=False,repr=False,default=templates.DySign())
    - 649    _llscalefactor: float = field(init=False,repr=False,default=templates.LLScaleFactor())
    - 650    _lldivisor: float = field(init=False,repr=False,default=templates.LLDivisor())
    - 651    _xydivisor: float = field(init=False,repr=False,default=templates.XYDivisor())
    - 652    shapeOfEarth: templates.Grib2Metadata = field(init=False,repr=False,default=templates.ShapeOfEarth())
    - 653    earthRadius: float = field(init=False,repr=False,default=templates.EarthRadius())
    - 654    earthMajorAxis: float = field(init=False,repr=False,default=templates.EarthMajorAxis())
    - 655    earthMinorAxis: float = field(init=False,repr=False,default=templates.EarthMinorAxis())
    - 656    resolutionAndComponentFlags: list = field(init=False,repr=False,default=templates.ResolutionAndComponentFlags())
    - 657    ny: int = field(init=False,repr=False,default=templates.Ny())
    - 658    nx: int = field(init=False,repr=False,default=templates.Nx())
    - 659    scanModeFlags: list = field(init=False,repr=False,default=templates.ScanModeFlags())
    - 660    projParameters: dict = field(init=False,repr=False,default=templates.ProjParameters())
    - 661
    - 662    # Section 4 attributes. Listed here are "extra" or "helper" attrs that use metadata from
    - 663    # the given PDT, but not a formal part of the PDT.
    - 664    productDefinitionTemplateNumber: templates.Grib2Metadata = field(init=False,repr=False,default=templates.ProductDefinitionTemplateNumber())
    - 665    productDefinitionTemplate: np.array = field(init=False,repr=False,default=templates.ProductDefinitionTemplate())
    - 666    _varinfo: list = field(init=False, repr=False, default=templates.VarInfo())
    - 667    _fixedsfc1info: list = field(init=False, repr=False, default=templates.FixedSfc1Info())
    - 668    _fixedsfc2info: list = field(init=False, repr=False, default=templates.FixedSfc2Info())
    - 669    fullName: str = field(init=False, repr=False, default=templates.FullName())
    - 670    units: str = field(init=False, repr=False, default=templates.Units())
    - 671    shortName: str = field(init=False, repr=False, default=templates.ShortName())
    - 672    leadTime: datetime.timedelta = field(init=False,repr=False,default=templates.LeadTime())
    - 673    unitOfFirstFixedSurface: str = field(init=False,repr=False,default=templates.UnitOfFirstFixedSurface())
    - 674    valueOfFirstFixedSurface: int = field(init=False,repr=False,default=templates.ValueOfFirstFixedSurface())
    - 675    unitOfSecondFixedSurface: str = field(init=False,repr=False,default=templates.UnitOfSecondFixedSurface())
    - 676    valueOfSecondFixedSurface: int = field(init=False,repr=False,default=templates.ValueOfSecondFixedSurface())
    - 677    level: str = field(init=False, repr=False, default=templates.Level())
    - 678    duration: datetime.timedelta = field(init=False,repr=False,default=templates.Duration())
    - 679    validDate: datetime.datetime = field(init=False,repr=False,default=templates.ValidDate())
    - 680
    - 681    # Section 5 looked up common attributes.  Other looked up attributes are available according
    - 682    # to the Data Representation Template.
    - 683    numberOfPackedValues: int = field(init=False,repr=False,default=templates.NumberOfPackedValues())
    - 684    dataRepresentationTemplateNumber: templates.Grib2Metadata = field(init=False,repr=False,default=templates.DataRepresentationTemplateNumber())
    - 685    dataRepresentationTemplate: list = field(init=False,repr=False,default=templates.DataRepresentationTemplate())
    - 686    typeOfValues: templates.Grib2Metadata = field(init=False,repr=False,default=templates.TypeOfValues())
    - 687
    - 688
    - 689    def __post_init__(self):
    - 690        """Set some attributes after init"""
    - 691        self._msgnum = -1
    - 692        self._deflist = None
    - 693        self._coordlist = None
    - 694        self._signature = self._generate_signature()
    - 695        try:
    - 696            self._sha1_section3 = hashlib.sha1(self.section3).hexdigest()
    - 697        except(TypeError):
    - 698            pass
    - 699        self.bitMapFlag = templates.Grib2Metadata(self.bitMapFlag,table='6.0')
    - 700
    - 701
    - 702    @property
    - 703    def gdtn(self):
    - 704        """Return Grid Definition Template Number"""
    - 705        return self.section3[4]
    - 706
    - 707
    - 708    @property
    - 709    def gdt(self):
    - 710        """Return Grid Definition Template"""
    - 711        return self.gridDefinitionTemplate
    - 712
    - 713
    - 714    @property
    - 715    def pdtn(self):
    - 716        """Return Product Definition Template Number"""
    - 717        return self.section4[1]
    - 718
    - 719
    - 720    @property
    - 721    def pdt(self):
    - 722        """Return Product Definition Template"""
    - 723        return self.productDefinitionTemplate
    - 724
    - 725
    - 726    @property
    - 727    def drtn(self):
    - 728        """Return Data Representation Template Number"""
    - 729        return self.section5[1]
    - 730
    - 731
    - 732    @property
    - 733    def drt(self):
    - 734        """Return Data Representation Template"""
    - 735        return self.dataRepresentationTemplate
    - 736
    - 737
    - 738    @property
    - 739    def pdy(self):
    - 740        """Return the PDY ('YYYYMMDD')"""
    - 741        return ''.join([str(i) for i in self.section1[5:8]])
    - 742
    - 743
    - 744    @property
    - 745    def griddef(self):
    - 746        """Return a Grib2GridDef instance for a GRIB2 message"""
    - 747        return Grib2GridDef.from_section3(self.section3)
    - 748
    - 749
    - 750    def __repr__(self):
    - 751        info = ''
    - 752        for sect in [0,1,3,4,5,6]:
    - 753            for k,v in self.attrs_by_section(sect,values=True).items():
    - 754                info += f'Section {sect}: {k} = {v}\n'
    - 755        return info
    - 756
    - 757
    - 758    def __str__(self):
    - 759        return (f'{self._msgnum}:d={self.refDate}:{self.shortName}:'
    - 760                f'{self.fullName} ({self.units}):{self.level}:'
    - 761                f'{self.leadTime}')
    - 762
    - 763
    - 764    def _generate_signature(self):
    - 765        """Generature SHA-1 hash string from GRIB2 integer sections"""
    - 766        return hashlib.sha1(np.concatenate((self.section0,self.section1,
    - 767                                            self.section3,self.section4,
    - 768                                            self.section5))).hexdigest()
    - 769
    - 770
    - 771    def attrs_by_section(self, sect, values=False):
    - 772        """
    - 773        Provide a tuple of attribute names for the given GRIB2 section.
    - 774
    - 775        Parameters
    - 776        ----------
    - 777
    - 778        **`sect : int`**
    +            
     601@dataclass
    + 602class _Grib2Message:
    + 603    """GRIB2 Message base class"""
    + 604    # GRIB2 Sections
    + 605    section0: np.array = field(init=True,repr=False)
    + 606    section1: np.array = field(init=True,repr=False)
    + 607    section2: bytes = field(init=True,repr=False)
    + 608    section3: np.array = field(init=True,repr=False)
    + 609    section4: np.array = field(init=True,repr=False)
    + 610    section5: np.array = field(init=True,repr=False)
    + 611    bitMapFlag: templates.Grib2Metadata = field(init=True,repr=False,default=255)
    + 612
    + 613    # Section 0 looked up attributes
    + 614    indicatorSection: np.array = field(init=False,repr=False,default=templates.IndicatorSection())
    + 615    discipline: templates.Grib2Metadata = field(init=False,repr=False,default=templates.Discipline())
    + 616
    + 617    # Section 1 looked up attributes
    + 618    identificationSection: np.array = field(init=False,repr=False,default=templates.IdentificationSection())
    + 619    originatingCenter: templates.Grib2Metadata = field(init=False,repr=False,default=templates.OriginatingCenter())
    + 620    originatingSubCenter: templates.Grib2Metadata = field(init=False,repr=False,default=templates.OriginatingSubCenter())
    + 621    masterTableInfo: templates.Grib2Metadata = field(init=False,repr=False,default=templates.MasterTableInfo())
    + 622    localTableInfo: templates.Grib2Metadata = field(init=False,repr=False,default=templates.LocalTableInfo())
    + 623    significanceOfReferenceTime: templates.Grib2Metadata = field(init=False,repr=False,default=templates.SignificanceOfReferenceTime())
    + 624    year: int = field(init=False,repr=False,default=templates.Year())
    + 625    month: int = field(init=False,repr=False,default=templates.Month())
    + 626    day: int = field(init=False,repr=False,default=templates.Day())
    + 627    hour: int = field(init=False,repr=False,default=templates.Hour())
    + 628    minute: int = field(init=False,repr=False,default=templates.Minute())
    + 629    second: int = field(init=False,repr=False,default=templates.Second())
    + 630    refDate: datetime.datetime = field(init=False,repr=False,default=templates.RefDate())
    + 631    productionStatus: templates.Grib2Metadata = field(init=False,repr=False,default=templates.ProductionStatus())
    + 632    typeOfData: templates.Grib2Metadata = field(init=False,repr=False,default=templates.TypeOfData())
    + 633
    + 634    @property
    + 635    def _isNDFD(self):
    + 636        """Check if GRIB2 message is from NWS NDFD"""
    + 637        return np.all(self.section1[0:2]==[8,65535])
    + 638
    + 639    # Section 3 looked up common attributes.  Other looked up attributes are available according
    + 640    # to the Grid Definition Template.
    + 641    gridDefinitionSection: np.array = field(init=False,repr=False,default=templates.GridDefinitionSection())
    + 642    sourceOfGridDefinition: int = field(init=False,repr=False,default=templates.SourceOfGridDefinition())
    + 643    numberOfDataPoints: int = field(init=False,repr=False,default=templates.NumberOfDataPoints())
    + 644    interpretationOfListOfNumbers: templates.Grib2Metadata = field(init=False,repr=False,default=templates.InterpretationOfListOfNumbers())
    + 645    gridDefinitionTemplateNumber: templates.Grib2Metadata = field(init=False,repr=False,default=templates.GridDefinitionTemplateNumber())
    + 646    gridDefinitionTemplate: list = field(init=False,repr=False,default=templates.GridDefinitionTemplate())
    + 647    _earthparams: dict = field(init=False,repr=False,default=templates.EarthParams())
    + 648    _dxsign: float = field(init=False,repr=False,default=templates.DxSign())
    + 649    _dysign: float = field(init=False,repr=False,default=templates.DySign())
    + 650    _llscalefactor: float = field(init=False,repr=False,default=templates.LLScaleFactor())
    + 651    _lldivisor: float = field(init=False,repr=False,default=templates.LLDivisor())
    + 652    _xydivisor: float = field(init=False,repr=False,default=templates.XYDivisor())
    + 653    shapeOfEarth: templates.Grib2Metadata = field(init=False,repr=False,default=templates.ShapeOfEarth())
    + 654    earthShape: str = field(init=False,repr=False,default=templates.EarthShape())
    + 655    earthRadius: float = field(init=False,repr=False,default=templates.EarthRadius())
    + 656    earthMajorAxis: float = field(init=False,repr=False,default=templates.EarthMajorAxis())
    + 657    earthMinorAxis: float = field(init=False,repr=False,default=templates.EarthMinorAxis())
    + 658    resolutionAndComponentFlags: list = field(init=False,repr=False,default=templates.ResolutionAndComponentFlags())
    + 659    ny: int = field(init=False,repr=False,default=templates.Ny())
    + 660    nx: int = field(init=False,repr=False,default=templates.Nx())
    + 661    scanModeFlags: list = field(init=False,repr=False,default=templates.ScanModeFlags())
    + 662    projParameters: dict = field(init=False,repr=False,default=templates.ProjParameters())
    + 663
    + 664    # Section 4 attributes. Listed here are "extra" or "helper" attrs that use metadata from
    + 665    # the given PDT, but not a formal part of the PDT.
    + 666    productDefinitionTemplateNumber: templates.Grib2Metadata = field(init=False,repr=False,default=templates.ProductDefinitionTemplateNumber())
    + 667    productDefinitionTemplate: np.array = field(init=False,repr=False,default=templates.ProductDefinitionTemplate())
    + 668    _varinfo: list = field(init=False, repr=False, default=templates.VarInfo())
    + 669    _fixedsfc1info: list = field(init=False, repr=False, default=templates.FixedSfc1Info())
    + 670    _fixedsfc2info: list = field(init=False, repr=False, default=templates.FixedSfc2Info())
    + 671    fullName: str = field(init=False, repr=False, default=templates.FullName())
    + 672    units: str = field(init=False, repr=False, default=templates.Units())
    + 673    shortName: str = field(init=False, repr=False, default=templates.ShortName())
    + 674    leadTime: datetime.timedelta = field(init=False,repr=False,default=templates.LeadTime())
    + 675    unitOfFirstFixedSurface: str = field(init=False,repr=False,default=templates.UnitOfFirstFixedSurface())
    + 676    valueOfFirstFixedSurface: int = field(init=False,repr=False,default=templates.ValueOfFirstFixedSurface())
    + 677    unitOfSecondFixedSurface: str = field(init=False,repr=False,default=templates.UnitOfSecondFixedSurface())
    + 678    valueOfSecondFixedSurface: int = field(init=False,repr=False,default=templates.ValueOfSecondFixedSurface())
    + 679    level: str = field(init=False, repr=False, default=templates.Level())
    + 680    duration: datetime.timedelta = field(init=False,repr=False,default=templates.Duration())
    + 681    validDate: datetime.datetime = field(init=False,repr=False,default=templates.ValidDate())
    + 682
    + 683    # Section 5 looked up common attributes.  Other looked up attributes are available according
    + 684    # to the Data Representation Template.
    + 685    numberOfPackedValues: int = field(init=False,repr=False,default=templates.NumberOfPackedValues())
    + 686    dataRepresentationTemplateNumber: templates.Grib2Metadata = field(init=False,repr=False,default=templates.DataRepresentationTemplateNumber())
    + 687    dataRepresentationTemplate: list = field(init=False,repr=False,default=templates.DataRepresentationTemplate())
    + 688    typeOfValues: templates.Grib2Metadata = field(init=False,repr=False,default=templates.TypeOfValues())
    + 689
    + 690
    + 691    def __post_init__(self):
    + 692        """Set some attributes after init"""
    + 693        self._msgnum = -1
    + 694        self._deflist = None
    + 695        self._coordlist = None
    + 696        self._signature = self._generate_signature()
    + 697        try:
    + 698            self._sha1_section3 = hashlib.sha1(self.section3).hexdigest()
    + 699        except(TypeError):
    + 700            pass
    + 701        self.bitMapFlag = templates.Grib2Metadata(self.bitMapFlag,table='6.0')
    + 702
    + 703
    + 704    @property
    + 705    def gdtn(self):
    + 706        """Return Grid Definition Template Number"""
    + 707        return self.section3[4]
    + 708
    + 709
    + 710    @property
    + 711    def gdt(self):
    + 712        """Return Grid Definition Template"""
    + 713        return self.gridDefinitionTemplate
    + 714
    + 715
    + 716    @property
    + 717    def pdtn(self):
    + 718        """Return Product Definition Template Number"""
    + 719        return self.section4[1]
    + 720
    + 721
    + 722    @property
    + 723    def pdt(self):
    + 724        """Return Product Definition Template"""
    + 725        return self.productDefinitionTemplate
    + 726
    + 727
    + 728    @property
    + 729    def drtn(self):
    + 730        """Return Data Representation Template Number"""
    + 731        return self.section5[1]
    + 732
    + 733
    + 734    @property
    + 735    def drt(self):
    + 736        """Return Data Representation Template"""
    + 737        return self.dataRepresentationTemplate
    + 738
    + 739
    + 740    @property
    + 741    def pdy(self):
    + 742        """Return the PDY ('YYYYMMDD')"""
    + 743        return ''.join([str(i) for i in self.section1[5:8]])
    + 744
    + 745
    + 746    @property
    + 747    def griddef(self):
    + 748        """Return a Grib2GridDef instance for a GRIB2 message"""
    + 749        return Grib2GridDef.from_section3(self.section3)
    + 750
    + 751
    + 752    def __repr__(self):
    + 753        info = ''
    + 754        for sect in [0,1,3,4,5,6]:
    + 755            for k,v in self.attrs_by_section(sect,values=True).items():
    + 756                info += f'Section {sect}: {k} = {v}\n'
    + 757        return info
    + 758
    + 759
    + 760    def __str__(self):
    + 761        return (f'{self._msgnum}:d={self.refDate}:{self.shortName}:'
    + 762                f'{self.fullName} ({self.units}):{self.level}:'
    + 763                f'{self.leadTime}')
    + 764
    + 765
    + 766    def _generate_signature(self):
    + 767        """Generature SHA-1 hash string from GRIB2 integer sections"""
    + 768        return hashlib.sha1(np.concatenate((self.section0,self.section1,
    + 769                                            self.section3,self.section4,
    + 770                                            self.section5))).hexdigest()
    + 771
    + 772
    + 773    def attrs_by_section(self, sect, values=False):
    + 774        """
    + 775        Provide a tuple of attribute names for the given GRIB2 section.
    + 776
    + 777        Parameters
    + 778        ----------
      779
    - 780        The GRIB2 section number.
    + 780        **`sect : int`**
      781
    - 782        **`values : bool, optional`**
    + 782        The GRIB2 section number.
      783
    - 784        Optional (default is `False`) arugment to return attributes values.
    + 784        **`values : bool, optional`**
      785
    - 786        Returns
    - 787        -------
    - 788
    - 789        A List attribute names or Dict if `values = True`.
    - 790        """
    - 791        if sect in {0,1,6}:
    - 792            attrs = templates._section_attrs[sect]
    - 793        elif sect in {3,4,5}:
    - 794            def _find_class_index(n):
    - 795                _key = {3:'Grid', 4:'Product', 5:'Data'}
    - 796                for i,c in enumerate(self.__class__.__mro__):
    - 797                    if _key[n] in c.__name__:
    - 798                        return i
    - 799                else:
    - 800                    return []
    - 801            if sys.version_info.minor <= 8:
    - 802                attrs = templates._section_attrs[sect]+\
    - 803                        [a for a in dir(self.__class__.__mro__[_find_class_index(sect)]) if not a.startswith('_')]
    - 804            else:
    - 805                attrs = templates._section_attrs[sect]+\
    - 806                        self.__class__.__mro__[_find_class_index(sect)]._attrs
    - 807        else:
    - 808            attrs = []
    - 809        if values:
    - 810            return {k:getattr(self,k) for k in attrs}
    - 811        else:
    - 812            return attrs
    - 813
    - 814
    - 815    def pack(self):
    - 816        """
    - 817        Packs GRIB2 section data into a binary message.  It is the user's responsibility
    - 818        to populate the GRIB2 section information with appropriate metadata.
    - 819        """
    - 820        # Create beginning of packed binary message with section 0 and 1 data.
    - 821        self._sections = []
    - 822        self._msg,self._pos = g2clib.grib2_create(self.indicatorSection[2:4],self.identificationSection)
    - 823        self._sections += [0,1]
    - 824
    - 825        # Add section 2 if present.
    - 826        if isinstance(self.section2,bytes) and len(self.section2) > 0:
    - 827            self._msg,self._pos = g2clib.grib2_addlocal(self._msg,self.section2)
    - 828            self._sections.append(2)
    - 829
    - 830        # Add section 3.
    - 831        self.section3[1] = self.nx * self.ny
    - 832        self._msg,self._pos = g2clib.grib2_addgrid(self._msg,self.gridDefinitionSection,
    - 833                                                   self.gridDefinitionTemplate,
    - 834                                                   self._deflist)
    - 835        self._sections.append(3)
    - 836
    - 837        # Prepare data.
    - 838        field = np.copy(self.data)
    - 839        if self.scanModeFlags is not None:
    - 840            if self.scanModeFlags[3]:
    - 841                fieldsave = field.astype('f') # Casting makes a copy
    - 842                field[1::2,:] = fieldsave[1::2,::-1]
    - 843        fld = field.astype('f')
    - 844
    - 845        # Prepare bitmap, if necessary
    - 846        bitmapflag = self.bitMapFlag.value
    - 847        if bitmapflag == 0:
    - 848            bmap = np.ravel(np.where(np.isnan(fld),0,1)).astype(DEFAULT_NUMPY_INT)
    - 849        else:
    - 850            bmap = None
    - 851
    - 852        # Prepare optional coordinate list
    - 853        if self._coordlist is not None:
    - 854            crdlist = np.array(self._coordlist,'f')
    - 855        else:
    - 856            crdlist = None
    - 857
    - 858        # Prepare data for packing if nans are present
    - 859        fld = np.ravel(fld)
    - 860        if np.isnan(fld).any() and hasattr(self,'_missvalmap'):
    - 861            fld = np.where(self._missvalmap==1,self.priMissingValue,fld)
    - 862            fld = np.where(self._missvalmap==2,self.secMissingValue,fld)
    - 863
    - 864        # Add sections 4, 5, 6 (if present), and 7.
    - 865        self._msg,self._pos = g2clib.grib2_addfield(self._msg,self.pdtn,
    - 866                                                    self.productDefinitionTemplate,
    - 867                                                    crdlist,
    - 868                                                    self.drtn,
    - 869                                                    self.dataRepresentationTemplate,
    - 870                                                    fld,
    - 871                                                    bitmapflag,
    - 872                                                    bmap)
    - 873        self._sections.append(4)
    - 874        self._sections.append(5)
    - 875        if bmap is not None: self._sections.append(6)
    - 876        self._sections.append(7)
    - 877
    - 878        # Finalize GRIB2 message with section 8.
    - 879        self._msg, self._pos = g2clib.grib2_end(self._msg)
    - 880        self._sections.append(8)
    - 881        self.section0[-1] = len(self._msg)
    - 882
    - 883
    - 884    @property
    - 885    def data(self) -> np.array:
    - 886        """
    - 887        Accessing the data attribute loads data into memmory
    - 888        """
    - 889        if not hasattr(self,'_auto_nans'): self._auto_nans = _AUTO_NANS
    - 890        if hasattr(self,'_data'):
    - 891            if self._auto_nans != _AUTO_NANS:
    - 892                self._data = self._ondiskarray
    - 893            if isinstance(self._data, Grib2MessageOnDiskArray):
    - 894                self._ondiskarray = self._data
    - 895                self._data = np.asarray(self._data)
    - 896            return self._data
    - 897        raise ValueError
    - 898
    - 899    @data.setter
    - 900    def data(self, data):
    - 901        if not isinstance(data, np.ndarray):
    - 902            raise ValueError('Grib2Message data only supports numpy arrays')
    - 903        self._data = data
    - 904
    - 905
    - 906    def __getitem__(self, item):
    - 907        return self.data[item]
    - 908
    - 909
    - 910    def __setitem__(self, item):
    - 911        raise NotImplementedError('assignment of data not supported via setitem')
    - 912
    - 913
    - 914    def latlons(self, *args, **kwrgs):
    - 915        """Alias for `grib2io.Grib2Message.grid` method"""
    - 916        return self.grid(*args, **kwrgs)
    - 917
    - 918
    - 919    def grid(self, unrotate=True):
    - 920        """
    - 921        Return lats,lons (in degrees) of grid. Currently can handle reg. lat/lon,
    - 922        global Gaussian, mercator, stereographic, lambert conformal, albers equal-area,
    - 923        space-view and azimuthal equidistant grids.
    - 924
    - 925        Parameters
    - 926        ----------
    - 927
    - 928        **`unrotate : bool`**
    + 786        Optional (default is `False`) arugment to return attributes values.
    + 787
    + 788        Returns
    + 789        -------
    + 790
    + 791        A List attribute names or Dict if `values = True`.
    + 792        """
    + 793        if sect in {0,1,6}:
    + 794            attrs = templates._section_attrs[sect]
    + 795        elif sect in {3,4,5}:
    + 796            def _find_class_index(n):
    + 797                _key = {3:'Grid', 4:'Product', 5:'Data'}
    + 798                for i,c in enumerate(self.__class__.__mro__):
    + 799                    if _key[n] in c.__name__:
    + 800                        return i
    + 801                else:
    + 802                    return []
    + 803            if sys.version_info.minor <= 8:
    + 804                attrs = templates._section_attrs[sect]+\
    + 805                        [a for a in dir(self.__class__.__mro__[_find_class_index(sect)]) if not a.startswith('_')]
    + 806            else:
    + 807                attrs = templates._section_attrs[sect]+\
    + 808                        self.__class__.__mro__[_find_class_index(sect)]._attrs
    + 809        else:
    + 810            attrs = []
    + 811        if values:
    + 812            return {k:getattr(self,k) for k in attrs}
    + 813        else:
    + 814            return attrs
    + 815
    + 816
    + 817    def pack(self):
    + 818        """
    + 819        Packs GRIB2 section data into a binary message.  It is the user's responsibility
    + 820        to populate the GRIB2 section information with appropriate metadata.
    + 821        """
    + 822        # Create beginning of packed binary message with section 0 and 1 data.
    + 823        self._sections = []
    + 824        self._msg,self._pos = g2clib.grib2_create(self.indicatorSection[2:4],self.identificationSection)
    + 825        self._sections += [0,1]
    + 826
    + 827        # Add section 2 if present.
    + 828        if isinstance(self.section2,bytes) and len(self.section2) > 0:
    + 829            self._msg,self._pos = g2clib.grib2_addlocal(self._msg,self.section2)
    + 830            self._sections.append(2)
    + 831
    + 832        # Add section 3.
    + 833        self.section3[1] = self.nx * self.ny
    + 834        self._msg,self._pos = g2clib.grib2_addgrid(self._msg,self.gridDefinitionSection,
    + 835                                                   self.gridDefinitionTemplate,
    + 836                                                   self._deflist)
    + 837        self._sections.append(3)
    + 838
    + 839        # Prepare data.
    + 840        field = np.copy(self.data)
    + 841        if self.scanModeFlags is not None:
    + 842            if self.scanModeFlags[3]:
    + 843                fieldsave = field.astype('f') # Casting makes a copy
    + 844                field[1::2,:] = fieldsave[1::2,::-1]
    + 845        fld = field.astype('f')
    + 846
    + 847        # Prepare bitmap, if necessary
    + 848        bitmapflag = self.bitMapFlag.value
    + 849        if bitmapflag == 0:
    + 850            bmap = np.ravel(np.where(np.isnan(fld),0,1)).astype(DEFAULT_NUMPY_INT)
    + 851        else:
    + 852            bmap = None
    + 853
    + 854        # Prepare optional coordinate list
    + 855        if self._coordlist is not None:
    + 856            crdlist = np.array(self._coordlist,'f')
    + 857        else:
    + 858            crdlist = None
    + 859
    + 860        # Prepare data for packing if nans are present
    + 861        fld = np.ravel(fld)
    + 862        if np.isnan(fld).any() and hasattr(self,'_missvalmap'):
    + 863            fld = np.where(self._missvalmap==1,self.priMissingValue,fld)
    + 864            fld = np.where(self._missvalmap==2,self.secMissingValue,fld)
    + 865
    + 866        # Add sections 4, 5, 6 (if present), and 7.
    + 867        self._msg,self._pos = g2clib.grib2_addfield(self._msg,self.pdtn,
    + 868                                                    self.productDefinitionTemplate,
    + 869                                                    crdlist,
    + 870                                                    self.drtn,
    + 871                                                    self.dataRepresentationTemplate,
    + 872                                                    fld,
    + 873                                                    bitmapflag,
    + 874                                                    bmap)
    + 875        self._sections.append(4)
    + 876        self._sections.append(5)
    + 877        if bmap is not None: self._sections.append(6)
    + 878        self._sections.append(7)
    + 879
    + 880        # Finalize GRIB2 message with section 8.
    + 881        self._msg, self._pos = g2clib.grib2_end(self._msg)
    + 882        self._sections.append(8)
    + 883        self.section0[-1] = len(self._msg)
    + 884
    + 885
    + 886    @property
    + 887    def data(self) -> np.array:
    + 888        """
    + 889        Accessing the data attribute loads data into memmory
    + 890        """
    + 891        if not hasattr(self,'_auto_nans'): self._auto_nans = _AUTO_NANS
    + 892        if hasattr(self,'_data'):
    + 893            if self._auto_nans != _AUTO_NANS:
    + 894                self._data = self._ondiskarray
    + 895            if isinstance(self._data, Grib2MessageOnDiskArray):
    + 896                self._ondiskarray = self._data
    + 897                self._data = np.asarray(self._data)
    + 898            return self._data
    + 899        raise ValueError
    + 900
    + 901    @data.setter
    + 902    def data(self, data):
    + 903        if not isinstance(data, np.ndarray):
    + 904            raise ValueError('Grib2Message data only supports numpy arrays')
    + 905        self._data = data
    + 906
    + 907
    + 908    def __getitem__(self, item):
    + 909        return self.data[item]
    + 910
    + 911
    + 912    def __setitem__(self, item):
    + 913        raise NotImplementedError('assignment of data not supported via setitem')
    + 914
    + 915
    + 916    def latlons(self, *args, **kwrgs):
    + 917        """Alias for `grib2io.Grib2Message.grid` method"""
    + 918        return self.grid(*args, **kwrgs)
    + 919
    + 920
    + 921    def grid(self, unrotate=True):
    + 922        """
    + 923        Return lats,lons (in degrees) of grid. Currently can handle reg. lat/lon,
    + 924        global Gaussian, mercator, stereographic, lambert conformal, albers equal-area,
    + 925        space-view and azimuthal equidistant grids.
    + 926
    + 927        Parameters
    + 928        ----------
      929
    - 930        If `True` [DEFAULT], and grid is rotated lat/lon, then unrotate the grid,
    - 931        otherwise `False`, do not.
    - 932
    - 933        Returns
    - 934        -------
    - 935
    - 936        **`lats, lons : numpy.ndarray`**
    + 930        **`unrotate : bool`**
    + 931
    + 932        If `True` [DEFAULT], and grid is rotated lat/lon, then unrotate the grid,
    + 933        otherwise `False`, do not.
    + 934
    + 935        Returns
    + 936        -------
      937
    - 938        Returns two numpy.ndarrays with dtype=numpy.float32 of grid latitudes and
    - 939        longitudes in units of degrees.
    - 940        """
    - 941        if self._sha1_section3 in _latlon_datastore.keys():
    - 942            return _latlon_datastore[self._sha1_section3]
    - 943        gdtn = self.gridDefinitionTemplateNumber.value
    - 944        gdtmpl = self.gridDefinitionTemplate
    - 945        reggrid = self.gridDefinitionSection[2] == 0 # This means regular 2-d grid
    - 946        if gdtn == 0:
    - 947            # Regular lat/lon grid
    - 948            lon1, lat1 = self.longitudeFirstGridpoint, self.latitudeFirstGridpoint
    - 949            lon2, lat2 = self.longitudeLastGridpoint, self.latitudeLastGridpoint
    - 950            dlon = self.gridlengthXDirection
    - 951            dlat = self.gridlengthYDirection
    - 952            if lon2 < lon1 and dlon < 0: lon1 = -lon1
    - 953            lats = np.linspace(lat1,lat2,self.ny)
    - 954            if reggrid:
    - 955                lons = np.linspace(lon1,lon2,self.nx)
    - 956            else:
    - 957                lons = np.linspace(lon1,lon2,self.ny*2)
    - 958            lons,lats = np.meshgrid(lons,lats) # Make 2-d arrays.
    - 959        elif gdtn == 1: # Rotated Lat/Lon grid
    - 960            pj = pyproj.Proj(self.projParameters)
    - 961            lat1,lon1 = self.latitudeFirstGridpoint,self.longitudeFirstGridpoint
    - 962            lat2,lon2 = self.latitudeLastGridpoint,self.longitudeLastGridpoint
    - 963            if lon1 > 180.0: lon1 -= 360.0
    - 964            if lon2 > 180.0: lon2 -= 360.0
    - 965            lats = np.linspace(lat1,lat2,self.ny)
    - 966            lons = np.linspace(lon1,lon2,self.nx)
    - 967            lons,lats = np.meshgrid(lons,lats) # Make 2-d arrays.
    - 968            if unrotate:
    - 969                from grib2io.utils import rotated_grid
    - 970                lats,lons = rotated_grid.unrotate(lats,lons,self.anglePoleRotation,
    - 971                                                  self.latitudeSouthernPole,
    - 972                                                  self.longitudeSouthernPole)
    - 973        elif gdtn == 40: # Gaussian grid (only works for global!)
    - 974            from utils.gauss_grids import gaussian_latitudes
    - 975            lon1, lat1 = self.longitudeFirstGridpoint, self.latitudeFirstGridpoint
    - 976            lon2, lat2 = self.longitudeLastGridpoint, self.latitudeLastGridpoint
    - 977            nlats = self.ny
    - 978            if not reggrid: # Reduced Gaussian grid.
    - 979                nlons = 2*nlats
    - 980                dlon = 360./nlons
    - 981            else:
    - 982                nlons = self.nx
    - 983                dlon = self.gridlengthXDirection
    - 984            lons = np.arange(lon1,lon2+dlon,dlon)
    - 985            # Compute Gaussian lats (north to south)
    - 986            lats = gaussian_latitudes(nlats)
    - 987            if lat1 < lat2:  # reverse them if necessary
    - 988                lats = lats[::-1]
    - 989            lons,lats = np.meshgrid(lons,lats)
    - 990        elif gdtn in {10,20,30,31,110}:
    - 991            # Mercator, Lambert Conformal, Stereographic, Albers Equal Area, Azimuthal Equidistant
    - 992            dx,dy = self.gridlengthXDirection, self.gridlengthYDirection
    - 993            lon1,lat1 = self.longitudeFirstGridpoint, self.latitudeFirstGridpoint
    - 994            pj = pyproj.Proj(self.projParameters)
    - 995            llcrnrx, llcrnry = pj(lon1,lat1)
    - 996            x = llcrnrx+dx*np.arange(self.nx)
    - 997            y = llcrnry+dy*np.arange(self.ny)
    - 998            x,y = np.meshgrid(x, y)
    - 999            lons,lats = pj(x, y, inverse=True)
    -1000        elif gdtn == 90:
    -1001            # Satellite Projection
    -1002            dx = self.gridlengthXDirection
    -1003            dy = self.gridlengthYDirection
    -1004            pj = pyproj.Proj(self.projParameters)
    -1005            x = dx*np.indices((self.ny,self.nx),'f')[1,:,:]
    -1006            x -= 0.5*x.max()
    -1007            y = dy*np.indices((self.ny,self.nx),'f')[0,:,:]
    -1008            y -= 0.5*y.max()
    -1009            lons,lats = pj(x,y,inverse=True)
    -1010            # Set lons,lats to 1.e30 where undefined
    -1011            abslons = np.fabs(lons)
    -1012            abslats = np.fabs(lats)
    -1013            lons = np.where(abslons < 1.e20, lons, 1.e30)
    -1014            lats = np.where(abslats < 1.e20, lats, 1.e30)
    -1015        else:
    -1016            raise ValueError('Unsupported grid')
    -1017
    -1018        _latlon_datastore[self._sha1_section3] = (lats,lons)
    -1019
    -1020        return lats, lons
    -1021
    -1022
    -1023    def map_keys(self):
    -1024        """
    -1025        Returns an unpacked data grid where integer grid values are replaced with
    -1026        a string in which the numeric value is a representation of. These types
    -1027        of fields are cateogrical or classifications where data values do not
    -1028        represent an observable or predictable physical quantity.
    -1029
    -1030        An example of such a field field would be [Dominant Precipitation Type -
    -1031        DPTYPE](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-201.shtml)
    -1032
    -1033        Returns
    -1034        -------
    -1035
    -1036        **`numpy.ndarray`** of string values per element.
    -1037        """
    -1038        hold_auto_nans = _AUTO_NANS
    -1039        set_auto_nans(False)
    -1040        if (np.all(self.section1[0:2]==[7,14]) and self.shortName == 'PWTHER') or \
    -1041        (np.all(self.section1[0:2]==[8,65535]) and self.shortName == 'WX'):
    -1042            keys = utils.decode_wx_strings(self.section2)
    -1043            if hasattr(self,'priMissingValue') and self.priMissingValue not in [None,0]:
    -1044                keys[int(self.priMissingValue)] = 'Missing'
    -1045            if hasattr(self,'secMissingValue') and self.secMissingValue not in [None,0]:
    -1046                keys[int(self.secMissingValue)] = 'Missing'
    -1047            u,inv = np.unique(self.data,return_inverse=True)
    -1048            fld = np.array([keys[x] for x in u])[inv].reshape(self.data.shape)
    -1049        else:
    -1050            # For data whose units are defined in a code table (i.e. classification or mask)
    -1051            tblname = re.findall(r'\d\.\d+',self.units,re.IGNORECASE)[0]
    -1052            fld = self.data.astype(np.int32).astype(str)
    -1053            tbl = tables.get_table(tblname,expand=True)
    -1054            for val in np.unique(fld):
    -1055                fld = np.where(fld==val,tbl[val],fld)
    -1056        set_auto_nans(hold_auto_nans)
    -1057        return fld
    -1058
    -1059
    -1060    def to_bytes(self, validate=True):
    -1061        """
    -1062        Return packed GRIB2 message in bytes format. This will be Useful for
    -1063        exporting data in non-file formats.  For example, can be used to
    -1064        output grib data directly to S3 using the boto3 client without the
    -1065        need to write a temporary file to upload first.
    -1066
    -1067        Parameters
    -1068        ----------
    -1069
    -1070        **`validate : bool, optional`**
    -1071
    -1072        If `True` (DEFAULT), validates first/last four bytes for proper
    -1073        formatting, else returns None. If `False`, message is output as is.
    -1074
    -1075        Returns
    -1076        -------
    -1077
    -1078        Returns GRIB2 formatted message as bytes.
    -1079        """
    -1080        if validate:
    -1081            if self._msg[0:4]+self._msg[-4:] == b'GRIB7777':
    -1082                return self._msg
    -1083            else:
    -1084                return None
    -1085        else:
    -1086            return self._msg
    + 938        **`lats, lons : numpy.ndarray`**
    + 939
    + 940        Returns two numpy.ndarrays with dtype=numpy.float32 of grid latitudes and
    + 941        longitudes in units of degrees.
    + 942        """
    + 943        if self._sha1_section3 in _latlon_datastore.keys():
    + 944            return (_latlon_datastore[self._sha1_section3]['latitude'],
    + 945                    _latlon_datastore[self._sha1_section3]['longitude'])
    + 946        else:
    + 947            _latlon_datastore[self._sha1_section3] = {}
    + 948        gdtn = self.gridDefinitionTemplateNumber.value
    + 949        gdtmpl = self.gridDefinitionTemplate
    + 950        reggrid = self.gridDefinitionSection[2] == 0 # This means regular 2-d grid
    + 951        if gdtn == 0:
    + 952            # Regular lat/lon grid
    + 953            lon1, lat1 = self.longitudeFirstGridpoint, self.latitudeFirstGridpoint
    + 954            lon2, lat2 = self.longitudeLastGridpoint, self.latitudeLastGridpoint
    + 955            dlon = self.gridlengthXDirection
    + 956            dlat = self.gridlengthYDirection
    + 957            if lon2 < lon1 and dlon < 0: lon1 = -lon1
    + 958            lats = np.linspace(lat1,lat2,self.ny)
    + 959            if reggrid:
    + 960                lons = np.linspace(lon1,lon2,self.nx)
    + 961            else:
    + 962                lons = np.linspace(lon1,lon2,self.ny*2)
    + 963            lons,lats = np.meshgrid(lons,lats) # Make 2-d arrays.
    + 964        elif gdtn == 1: # Rotated Lat/Lon grid
    + 965            pj = pyproj.Proj(self.projParameters)
    + 966            lat1,lon1 = self.latitudeFirstGridpoint,self.longitudeFirstGridpoint
    + 967            lat2,lon2 = self.latitudeLastGridpoint,self.longitudeLastGridpoint
    + 968            if lon1 > 180.0: lon1 -= 360.0
    + 969            if lon2 > 180.0: lon2 -= 360.0
    + 970            lats = np.linspace(lat1,lat2,self.ny)
    + 971            lons = np.linspace(lon1,lon2,self.nx)
    + 972            lons,lats = np.meshgrid(lons,lats) # Make 2-d arrays.
    + 973            if unrotate:
    + 974                from grib2io.utils import rotated_grid
    + 975                lats,lons = rotated_grid.unrotate(lats,lons,self.anglePoleRotation,
    + 976                                                  self.latitudeSouthernPole,
    + 977                                                  self.longitudeSouthernPole)
    + 978        elif gdtn == 40: # Gaussian grid (only works for global!)
    + 979            from utils.gauss_grids import gaussian_latitudes
    + 980            lon1, lat1 = self.longitudeFirstGridpoint, self.latitudeFirstGridpoint
    + 981            lon2, lat2 = self.longitudeLastGridpoint, self.latitudeLastGridpoint
    + 982            nlats = self.ny
    + 983            if not reggrid: # Reduced Gaussian grid.
    + 984                nlons = 2*nlats
    + 985                dlon = 360./nlons
    + 986            else:
    + 987                nlons = self.nx
    + 988                dlon = self.gridlengthXDirection
    + 989            lons = np.arange(lon1,lon2+dlon,dlon)
    + 990            # Compute Gaussian lats (north to south)
    + 991            lats = gaussian_latitudes(nlats)
    + 992            if lat1 < lat2:  # reverse them if necessary
    + 993                lats = lats[::-1]
    + 994            lons,lats = np.meshgrid(lons,lats)
    + 995        elif gdtn in {10,20,30,31,110}:
    + 996            # Mercator, Lambert Conformal, Stereographic, Albers Equal Area, Azimuthal Equidistant
    + 997            dx,dy = self.gridlengthXDirection, self.gridlengthYDirection
    + 998            lon1,lat1 = self.longitudeFirstGridpoint, self.latitudeFirstGridpoint
    + 999            pj = pyproj.Proj(self.projParameters)
    +1000            llcrnrx, llcrnry = pj(lon1,lat1)
    +1001            x = llcrnrx+dx*np.arange(self.nx)
    +1002            y = llcrnry+dy*np.arange(self.ny)
    +1003            x,y = np.meshgrid(x, y)
    +1004            lons,lats = pj(x, y, inverse=True)
    +1005        elif gdtn == 90:
    +1006            # Satellite Projection
    +1007            dx = self.gridlengthXDirection
    +1008            dy = self.gridlengthYDirection
    +1009            pj = pyproj.Proj(self.projParameters)
    +1010            x = dx*np.indices((self.ny,self.nx),'f')[1,:,:]
    +1011            x -= 0.5*x.max()
    +1012            y = dy*np.indices((self.ny,self.nx),'f')[0,:,:]
    +1013            y -= 0.5*y.max()
    +1014            lons,lats = pj(x,y,inverse=True)
    +1015            # Set lons,lats to 1.e30 where undefined
    +1016            abslons = np.fabs(lons)
    +1017            abslats = np.fabs(lats)
    +1018            lons = np.where(abslons < 1.e20, lons, 1.e30)
    +1019            lats = np.where(abslats < 1.e20, lats, 1.e30)
    +1020        elif gdtn == 32769:
    +1021            # Special NCEP Grid, Rotated Lat/Lon, Arakawa E-Grid (Non-Staggered)
    +1022            from grib2io.utils import arakawa_rotated_grid
    +1023            from grib2io.utils.rotated_grid import DEG2RAD
    +1024            di, dj = 0.0, 0.0
    +1025            do_180 = False
    +1026            idir = 1 if self.scanModeFlags[0] == 0 else -1
    +1027            jdir = -1 if self.scanModeFlags[1] == 0 else 1
    +1028            grid_oriented = 0 if self.resolutionAndComponentFlags[4] == 0 else 1
    +1029            do_rot = 1 if grid_oriented == 1 else 0
    +1030            la1 = self.latitudeFirstGridpoint
    +1031            lo1 = self.longitudeFirstGridpoint
    +1032            clon = self.longitudeCenterGridpoint
    +1033            clat = self.latitudeCenterGridpoint
    +1034            lasp = clat - 90.0
    +1035            losp = clon
    +1036            llat, llon = arakawa_rotated_grid.ll2rot(la1,lo1,lasp,losp)
    +1037            la2, lo2 = arakawa_rotated_grid.rot2ll(-llat,-llon,lasp,losp)
    +1038            rlat = -llat
    +1039            rlon = -llon
    +1040            if self.nx == 1:
    +1041                di = 0.0
    +1042            elif idir == 1:
    +1043                ti = rlon
    +1044                while ti < llon:
    +1045                    ti += 360.0
    +1046                di = (ti - llon)/float(self.nx-1)
    +1047            else:
    +1048                ti = llon
    +1049                while ti < rlon:
    +1050                    ti += 360.0
    +1051                di = (ti - rlon)/float(self.nx-1)
    +1052            if self.ny == 1:
    +1053               dj = 0.0
    +1054            else:
    +1055                dj = (rlat - llat)/float(self.ny-1)
    +1056                if dj < 0.0:
    +1057                    dj = -dj
    +1058            if idir == 1:
    +1059                if llon > rlon:
    +1060                    llon -= 360.0
    +1061                if llon < 0 and rlon > 0:
    +1062                    do_180 = True
    +1063            else:
    +1064                if rlon > llon:
    +1065                    rlon -= 360.0
    +1066                if rlon < 0 and llon > 0:
    +1067                    do_180 = True
    +1068            xlat1d = llat + (np.arange(self.ny)*jdir*dj)
    +1069            xlon1d = llon + (np.arange(self.nx)*idir*di)
    +1070            xlons, xlats = np.meshgrid(xlon1d,xlat1d)
    +1071            rot2ll_vectorized = np.vectorize(arakawa_rotated_grid.rot2ll)
    +1072            lats, lons = rot2ll_vectorized(xlats,xlons,lasp,losp)
    +1073            if do_180:
    +1074                lons = np.where(lons>180.0,lons-360.0,lons)
    +1075            vector_rotation_angles_vectorized = np.vectorize(arakawa_rotated_grid.vector_rotation_angles)
    +1076            rots = vector_rotation_angles_vectorized(lats, lons, clat, losp, xlats)
    +1077            _latlon_datastore[self._sha1_section3]['vector_rotation_angles'] = rots
    +1078            del xlat1d, xlon1d, xlats, xlons
    +1079        else:
    +1080            raise ValueError('Unsupported grid')
    +1081
    +1082        _latlon_datastore[self._sha1_section3]['latitude'] = lats
    +1083        _latlon_datastore[self._sha1_section3]['longitude'] = lons
    +1084
    +1085        return lats, lons
    +1086
     1087
    -1088
    -1089    def interpolate(self, method, grid_def_out, method_options=None):
    -1090        """
    -1091        Perform grid spatial interpolation via the [NCEPLIBS-ip library](https://github.com/NOAA-EMC/NCEPLIBS-ip).
    -1092
    -1093        **IMPORTANT:**  This interpolate method only supports scalar interpolation. If you
    -1094        need to perform vector interpolation, use the module-level `grib2io.interpolate` function.
    -1095
    -1096        Parameters
    -1097        ----------
    -1098
    -1099        **`method : int or str`**
    +1088    def map_keys(self):
    +1089        """
    +1090        Returns an unpacked data grid where integer grid values are replaced with
    +1091        a string in which the numeric value is a representation of. These types
    +1092        of fields are cateogrical or classifications where data values do not
    +1093        represent an observable or predictable physical quantity.
    +1094
    +1095        An example of such a field field would be [Dominant Precipitation Type -
    +1096        DPTYPE](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-201.shtml)
    +1097
    +1098        Returns
    +1099        -------
     1100
    -1101        Interpolate method to use. This can either be an integer or string using
    -1102        the following mapping:
    -1103
    -1104        | Interpolate Scheme | Integer Value |
    -1105        | :---:              | :---:         |
    -1106        | 'bilinear'         | 0             |
    -1107        | 'bicubic'          | 1             |
    -1108        | 'neighbor'         | 2             |
    -1109        | 'budget'           | 3             |
    -1110        | 'spectral'         | 4             |
    -1111        | 'neighbor-budget'  | 6             |
    -1112
    -1113        **`grid_def_out : grib2io.Grib2GridDef`**
    -1114
    -1115        Grib2GridDef object of the output grid.
    -1116
    -1117        **`method_options : list of ints, optional`**
    -1118
    -1119        Interpolation options. See the NCEPLIBS-ip doucmentation for
    -1120        more information on how these are used.
    -1121
    -1122        Returns
    -1123        -------
    +1101        **`numpy.ndarray`** of string values per element.
    +1102        """
    +1103        hold_auto_nans = _AUTO_NANS
    +1104        set_auto_nans(False)
    +1105        if (np.all(self.section1[0:2]==[7,14]) and self.shortName == 'PWTHER') or \
    +1106        (np.all(self.section1[0:2]==[8,65535]) and self.shortName == 'WX'):
    +1107            keys = utils.decode_wx_strings(self.section2)
    +1108            if hasattr(self,'priMissingValue') and self.priMissingValue not in [None,0]:
    +1109                keys[int(self.priMissingValue)] = 'Missing'
    +1110            if hasattr(self,'secMissingValue') and self.secMissingValue not in [None,0]:
    +1111                keys[int(self.secMissingValue)] = 'Missing'
    +1112            u,inv = np.unique(self.data,return_inverse=True)
    +1113            fld = np.array([keys[x] for x in u])[inv].reshape(self.data.shape)
    +1114        else:
    +1115            # For data whose units are defined in a code table (i.e. classification or mask)
    +1116            tblname = re.findall(r'\d\.\d+',self.units,re.IGNORECASE)[0]
    +1117            fld = self.data.astype(np.int32).astype(str)
    +1118            tbl = tables.get_table(tblname,expand=True)
    +1119            for val in np.unique(fld):
    +1120                fld = np.where(fld==val,tbl[val],fld)
    +1121        set_auto_nans(hold_auto_nans)
    +1122        return fld
    +1123
     1124
    -1125        If interpolating to a grid, a new Grib2Message object is returned.  The GRIB2 metadata of
    -1126        the new Grib2Message object is indentical to the input except where required to be different
    -1127        because of the new grid specs.
    -1128
    -1129        If interpolating to station points, the interpolated data values are returned as a numpy.ndarray.
    -1130        """
    -1131        section0 = self.section0
    -1132        section0[-1] = 0
    -1133        gds = [0, grid_def_out.npoints, 0, 255, grid_def_out.gdtn]
    -1134        section3 = np.concatenate((gds,grid_def_out.gdt))
    -1135
    -1136        msg = Grib2Message(section0,self.section1,self.section2,section3,
    -1137                           self.section4,self.section5,self.bitMapFlag.value)
    -1138
    -1139        msg._msgnum = -1
    -1140        msg._deflist = self._deflist
    -1141        msg._coordlist = self._coordlist
    -1142        shape = (msg.ny,msg.nx)
    -1143        ndim = 2
    -1144        if msg.typeOfValues == 0:
    -1145            dtype = 'float32'
    -1146        elif msg.typeOfValues == 1:
    -1147            dtype = 'int32'
    -1148        msg._data = interpolate(self.data,method,Grib2GridDef.from_section3(self.section3),grid_def_out,
    -1149                                method_options=method_options).reshape(msg.ny,msg.nx)
    -1150        return msg
    +1125    def to_bytes(self, validate=True):
    +1126        """
    +1127        Return packed GRIB2 message in bytes format. This will be Useful for
    +1128        exporting data in non-file formats.  For example, can be used to
    +1129        output grib data directly to S3 using the boto3 client without the
    +1130        need to write a temporary file to upload first.
    +1131
    +1132        Parameters
    +1133        ----------
    +1134
    +1135        **`validate : bool, optional`**
    +1136
    +1137        If `True` (DEFAULT), validates first/last four bytes for proper
    +1138        formatting, else returns None. If `False`, message is output as is.
    +1139
    +1140        Returns
    +1141        -------
    +1142
    +1143        Returns GRIB2 formatted message as bytes.
    +1144        """
    +1145        if validate:
    +1146            if self._msg[0:4]+self._msg[-4:] == b'GRIB7777':
    +1147                return self._msg
    +1148            else:
    +1149                return None
    +1150        else:
    +1151            return self._msg
    +1152
    +1153
    +1154    def interpolate(self, method, grid_def_out, method_options=None):
    +1155        """
    +1156        Perform grid spatial interpolation via the [NCEPLIBS-ip library](https://github.com/NOAA-EMC/NCEPLIBS-ip).
    +1157
    +1158        **IMPORTANT:**  This interpolate method only supports scalar interpolation. If you
    +1159        need to perform vector interpolation, use the module-level `grib2io.interpolate` function.
    +1160
    +1161        Parameters
    +1162        ----------
    +1163
    +1164        **`method : int or str`**
    +1165
    +1166        Interpolate method to use. This can either be an integer or string using
    +1167        the following mapping:
    +1168
    +1169        | Interpolate Scheme | Integer Value |
    +1170        | :---:              | :---:         |
    +1171        | 'bilinear'         | 0             |
    +1172        | 'bicubic'          | 1             |
    +1173        | 'neighbor'         | 2             |
    +1174        | 'budget'           | 3             |
    +1175        | 'spectral'         | 4             |
    +1176        | 'neighbor-budget'  | 6             |
    +1177
    +1178        **`grid_def_out : grib2io.Grib2GridDef`**
    +1179
    +1180        Grib2GridDef object of the output grid.
    +1181
    +1182        **`method_options : list of ints, optional`**
    +1183
    +1184        Interpolation options. See the NCEPLIBS-ip doucmentation for
    +1185        more information on how these are used.
    +1186
    +1187        Returns
    +1188        -------
    +1189
    +1190        If interpolating to a grid, a new Grib2Message object is returned.  The GRIB2 metadata of
    +1191        the new Grib2Message object is indentical to the input except where required to be different
    +1192        because of the new grid specs.
    +1193
    +1194        If interpolating to station points, the interpolated data values are returned as a numpy.ndarray.
    +1195        """
    +1196        section0 = self.section0
    +1197        section0[-1] = 0
    +1198        gds = [0, grid_def_out.npoints, 0, 255, grid_def_out.gdtn]
    +1199        section3 = np.concatenate((gds,grid_def_out.gdt))
    +1200
    +1201        msg = Grib2Message(section0,self.section1,self.section2,section3,
    +1202                           self.section4,self.section5,self.bitMapFlag.value)
    +1203
    +1204        msg._msgnum = -1
    +1205        msg._deflist = self._deflist
    +1206        msg._coordlist = self._coordlist
    +1207        shape = (msg.ny,msg.nx)
    +1208        ndim = 2
    +1209        if msg.typeOfValues == 0:
    +1210            dtype = 'float32'
    +1211        elif msg.typeOfValues == 1:
    +1212            dtype = 'int32'
    +1213        msg._data = interpolate(self.data,method,Grib2GridDef.from_section3(self.section3),grid_def_out,
    +1214                                method_options=method_options).reshape(msg.ny,msg.nx)
    +1215        return msg
     
    @@ -2538,6 +2607,17 @@

    Returns

    +
    +
    +
    + earthShape: str + + +
    + + + +
    @@ -2929,48 +3009,48 @@

    Returns

    -
    771    def attrs_by_section(self, sect, values=False):
    -772        """
    -773        Provide a tuple of attribute names for the given GRIB2 section.
    -774
    -775        Parameters
    -776        ----------
    -777
    -778        **`sect : int`**
    +            
    773    def attrs_by_section(self, sect, values=False):
    +774        """
    +775        Provide a tuple of attribute names for the given GRIB2 section.
    +776
    +777        Parameters
    +778        ----------
     779
    -780        The GRIB2 section number.
    +780        **`sect : int`**
     781
    -782        **`values : bool, optional`**
    +782        The GRIB2 section number.
     783
    -784        Optional (default is `False`) arugment to return attributes values.
    +784        **`values : bool, optional`**
     785
    -786        Returns
    -787        -------
    -788
    -789        A List attribute names or Dict if `values = True`.
    -790        """
    -791        if sect in {0,1,6}:
    -792            attrs = templates._section_attrs[sect]
    -793        elif sect in {3,4,5}:
    -794            def _find_class_index(n):
    -795                _key = {3:'Grid', 4:'Product', 5:'Data'}
    -796                for i,c in enumerate(self.__class__.__mro__):
    -797                    if _key[n] in c.__name__:
    -798                        return i
    -799                else:
    -800                    return []
    -801            if sys.version_info.minor <= 8:
    -802                attrs = templates._section_attrs[sect]+\
    -803                        [a for a in dir(self.__class__.__mro__[_find_class_index(sect)]) if not a.startswith('_')]
    -804            else:
    -805                attrs = templates._section_attrs[sect]+\
    -806                        self.__class__.__mro__[_find_class_index(sect)]._attrs
    -807        else:
    -808            attrs = []
    -809        if values:
    -810            return {k:getattr(self,k) for k in attrs}
    -811        else:
    -812            return attrs
    +786        Optional (default is `False`) arugment to return attributes values.
    +787
    +788        Returns
    +789        -------
    +790
    +791        A List attribute names or Dict if `values = True`.
    +792        """
    +793        if sect in {0,1,6}:
    +794            attrs = templates._section_attrs[sect]
    +795        elif sect in {3,4,5}:
    +796            def _find_class_index(n):
    +797                _key = {3:'Grid', 4:'Product', 5:'Data'}
    +798                for i,c in enumerate(self.__class__.__mro__):
    +799                    if _key[n] in c.__name__:
    +800                        return i
    +801                else:
    +802                    return []
    +803            if sys.version_info.minor <= 8:
    +804                attrs = templates._section_attrs[sect]+\
    +805                        [a for a in dir(self.__class__.__mro__[_find_class_index(sect)]) if not a.startswith('_')]
    +806            else:
    +807                attrs = templates._section_attrs[sect]+\
    +808                        self.__class__.__mro__[_find_class_index(sect)]._attrs
    +809        else:
    +810            attrs = []
    +811        if values:
    +812            return {k:getattr(self,k) for k in attrs}
    +813        else:
    +814            return attrs
     
    @@ -3004,73 +3084,73 @@

    Returns

    -
    815    def pack(self):
    -816        """
    -817        Packs GRIB2 section data into a binary message.  It is the user's responsibility
    -818        to populate the GRIB2 section information with appropriate metadata.
    -819        """
    -820        # Create beginning of packed binary message with section 0 and 1 data.
    -821        self._sections = []
    -822        self._msg,self._pos = g2clib.grib2_create(self.indicatorSection[2:4],self.identificationSection)
    -823        self._sections += [0,1]
    -824
    -825        # Add section 2 if present.
    -826        if isinstance(self.section2,bytes) and len(self.section2) > 0:
    -827            self._msg,self._pos = g2clib.grib2_addlocal(self._msg,self.section2)
    -828            self._sections.append(2)
    -829
    -830        # Add section 3.
    -831        self.section3[1] = self.nx * self.ny
    -832        self._msg,self._pos = g2clib.grib2_addgrid(self._msg,self.gridDefinitionSection,
    -833                                                   self.gridDefinitionTemplate,
    -834                                                   self._deflist)
    -835        self._sections.append(3)
    -836
    -837        # Prepare data.
    -838        field = np.copy(self.data)
    -839        if self.scanModeFlags is not None:
    -840            if self.scanModeFlags[3]:
    -841                fieldsave = field.astype('f') # Casting makes a copy
    -842                field[1::2,:] = fieldsave[1::2,::-1]
    -843        fld = field.astype('f')
    -844
    -845        # Prepare bitmap, if necessary
    -846        bitmapflag = self.bitMapFlag.value
    -847        if bitmapflag == 0:
    -848            bmap = np.ravel(np.where(np.isnan(fld),0,1)).astype(DEFAULT_NUMPY_INT)
    -849        else:
    -850            bmap = None
    -851
    -852        # Prepare optional coordinate list
    -853        if self._coordlist is not None:
    -854            crdlist = np.array(self._coordlist,'f')
    -855        else:
    -856            crdlist = None
    -857
    -858        # Prepare data for packing if nans are present
    -859        fld = np.ravel(fld)
    -860        if np.isnan(fld).any() and hasattr(self,'_missvalmap'):
    -861            fld = np.where(self._missvalmap==1,self.priMissingValue,fld)
    -862            fld = np.where(self._missvalmap==2,self.secMissingValue,fld)
    -863
    -864        # Add sections 4, 5, 6 (if present), and 7.
    -865        self._msg,self._pos = g2clib.grib2_addfield(self._msg,self.pdtn,
    -866                                                    self.productDefinitionTemplate,
    -867                                                    crdlist,
    -868                                                    self.drtn,
    -869                                                    self.dataRepresentationTemplate,
    -870                                                    fld,
    -871                                                    bitmapflag,
    -872                                                    bmap)
    -873        self._sections.append(4)
    -874        self._sections.append(5)
    -875        if bmap is not None: self._sections.append(6)
    -876        self._sections.append(7)
    -877
    -878        # Finalize GRIB2 message with section 8.
    -879        self._msg, self._pos = g2clib.grib2_end(self._msg)
    -880        self._sections.append(8)
    -881        self.section0[-1] = len(self._msg)
    +            
    817    def pack(self):
    +818        """
    +819        Packs GRIB2 section data into a binary message.  It is the user's responsibility
    +820        to populate the GRIB2 section information with appropriate metadata.
    +821        """
    +822        # Create beginning of packed binary message with section 0 and 1 data.
    +823        self._sections = []
    +824        self._msg,self._pos = g2clib.grib2_create(self.indicatorSection[2:4],self.identificationSection)
    +825        self._sections += [0,1]
    +826
    +827        # Add section 2 if present.
    +828        if isinstance(self.section2,bytes) and len(self.section2) > 0:
    +829            self._msg,self._pos = g2clib.grib2_addlocal(self._msg,self.section2)
    +830            self._sections.append(2)
    +831
    +832        # Add section 3.
    +833        self.section3[1] = self.nx * self.ny
    +834        self._msg,self._pos = g2clib.grib2_addgrid(self._msg,self.gridDefinitionSection,
    +835                                                   self.gridDefinitionTemplate,
    +836                                                   self._deflist)
    +837        self._sections.append(3)
    +838
    +839        # Prepare data.
    +840        field = np.copy(self.data)
    +841        if self.scanModeFlags is not None:
    +842            if self.scanModeFlags[3]:
    +843                fieldsave = field.astype('f') # Casting makes a copy
    +844                field[1::2,:] = fieldsave[1::2,::-1]
    +845        fld = field.astype('f')
    +846
    +847        # Prepare bitmap, if necessary
    +848        bitmapflag = self.bitMapFlag.value
    +849        if bitmapflag == 0:
    +850            bmap = np.ravel(np.where(np.isnan(fld),0,1)).astype(DEFAULT_NUMPY_INT)
    +851        else:
    +852            bmap = None
    +853
    +854        # Prepare optional coordinate list
    +855        if self._coordlist is not None:
    +856            crdlist = np.array(self._coordlist,'f')
    +857        else:
    +858            crdlist = None
    +859
    +860        # Prepare data for packing if nans are present
    +861        fld = np.ravel(fld)
    +862        if np.isnan(fld).any() and hasattr(self,'_missvalmap'):
    +863            fld = np.where(self._missvalmap==1,self.priMissingValue,fld)
    +864            fld = np.where(self._missvalmap==2,self.secMissingValue,fld)
    +865
    +866        # Add sections 4, 5, 6 (if present), and 7.
    +867        self._msg,self._pos = g2clib.grib2_addfield(self._msg,self.pdtn,
    +868                                                    self.productDefinitionTemplate,
    +869                                                    crdlist,
    +870                                                    self.drtn,
    +871                                                    self.dataRepresentationTemplate,
    +872                                                    fld,
    +873                                                    bitmapflag,
    +874                                                    bmap)
    +875        self._sections.append(4)
    +876        self._sections.append(5)
    +877        if bmap is not None: self._sections.append(6)
    +878        self._sections.append(7)
    +879
    +880        # Finalize GRIB2 message with section 8.
    +881        self._msg, self._pos = g2clib.grib2_end(self._msg)
    +882        self._sections.append(8)
    +883        self.section0[-1] = len(self._msg)
     
    @@ -3104,9 +3184,9 @@

    Returns

    -
    914    def latlons(self, *args, **kwrgs):
    -915        """Alias for `grib2io.Grib2Message.grid` method"""
    -916        return self.grid(*args, **kwrgs)
    +            
    916    def latlons(self, *args, **kwrgs):
    +917        """Alias for `grib2io.Grib2Message.grid` method"""
    +918        return self.grid(*args, **kwrgs)
     
    @@ -3126,108 +3206,171 @@

    Returns

    -
     919    def grid(self, unrotate=True):
    - 920        """
    - 921        Return lats,lons (in degrees) of grid. Currently can handle reg. lat/lon,
    - 922        global Gaussian, mercator, stereographic, lambert conformal, albers equal-area,
    - 923        space-view and azimuthal equidistant grids.
    - 924
    - 925        Parameters
    - 926        ----------
    - 927
    - 928        **`unrotate : bool`**
    +            
     921    def grid(self, unrotate=True):
    + 922        """
    + 923        Return lats,lons (in degrees) of grid. Currently can handle reg. lat/lon,
    + 924        global Gaussian, mercator, stereographic, lambert conformal, albers equal-area,
    + 925        space-view and azimuthal equidistant grids.
    + 926
    + 927        Parameters
    + 928        ----------
      929
    - 930        If `True` [DEFAULT], and grid is rotated lat/lon, then unrotate the grid,
    - 931        otherwise `False`, do not.
    - 932
    - 933        Returns
    - 934        -------
    - 935
    - 936        **`lats, lons : numpy.ndarray`**
    + 930        **`unrotate : bool`**
    + 931
    + 932        If `True` [DEFAULT], and grid is rotated lat/lon, then unrotate the grid,
    + 933        otherwise `False`, do not.
    + 934
    + 935        Returns
    + 936        -------
      937
    - 938        Returns two numpy.ndarrays with dtype=numpy.float32 of grid latitudes and
    - 939        longitudes in units of degrees.
    - 940        """
    - 941        if self._sha1_section3 in _latlon_datastore.keys():
    - 942            return _latlon_datastore[self._sha1_section3]
    - 943        gdtn = self.gridDefinitionTemplateNumber.value
    - 944        gdtmpl = self.gridDefinitionTemplate
    - 945        reggrid = self.gridDefinitionSection[2] == 0 # This means regular 2-d grid
    - 946        if gdtn == 0:
    - 947            # Regular lat/lon grid
    - 948            lon1, lat1 = self.longitudeFirstGridpoint, self.latitudeFirstGridpoint
    - 949            lon2, lat2 = self.longitudeLastGridpoint, self.latitudeLastGridpoint
    - 950            dlon = self.gridlengthXDirection
    - 951            dlat = self.gridlengthYDirection
    - 952            if lon2 < lon1 and dlon < 0: lon1 = -lon1
    - 953            lats = np.linspace(lat1,lat2,self.ny)
    - 954            if reggrid:
    - 955                lons = np.linspace(lon1,lon2,self.nx)
    - 956            else:
    - 957                lons = np.linspace(lon1,lon2,self.ny*2)
    - 958            lons,lats = np.meshgrid(lons,lats) # Make 2-d arrays.
    - 959        elif gdtn == 1: # Rotated Lat/Lon grid
    - 960            pj = pyproj.Proj(self.projParameters)
    - 961            lat1,lon1 = self.latitudeFirstGridpoint,self.longitudeFirstGridpoint
    - 962            lat2,lon2 = self.latitudeLastGridpoint,self.longitudeLastGridpoint
    - 963            if lon1 > 180.0: lon1 -= 360.0
    - 964            if lon2 > 180.0: lon2 -= 360.0
    - 965            lats = np.linspace(lat1,lat2,self.ny)
    - 966            lons = np.linspace(lon1,lon2,self.nx)
    - 967            lons,lats = np.meshgrid(lons,lats) # Make 2-d arrays.
    - 968            if unrotate:
    - 969                from grib2io.utils import rotated_grid
    - 970                lats,lons = rotated_grid.unrotate(lats,lons,self.anglePoleRotation,
    - 971                                                  self.latitudeSouthernPole,
    - 972                                                  self.longitudeSouthernPole)
    - 973        elif gdtn == 40: # Gaussian grid (only works for global!)
    - 974            from utils.gauss_grids import gaussian_latitudes
    - 975            lon1, lat1 = self.longitudeFirstGridpoint, self.latitudeFirstGridpoint
    - 976            lon2, lat2 = self.longitudeLastGridpoint, self.latitudeLastGridpoint
    - 977            nlats = self.ny
    - 978            if not reggrid: # Reduced Gaussian grid.
    - 979                nlons = 2*nlats
    - 980                dlon = 360./nlons
    - 981            else:
    - 982                nlons = self.nx
    - 983                dlon = self.gridlengthXDirection
    - 984            lons = np.arange(lon1,lon2+dlon,dlon)
    - 985            # Compute Gaussian lats (north to south)
    - 986            lats = gaussian_latitudes(nlats)
    - 987            if lat1 < lat2:  # reverse them if necessary
    - 988                lats = lats[::-1]
    - 989            lons,lats = np.meshgrid(lons,lats)
    - 990        elif gdtn in {10,20,30,31,110}:
    - 991            # Mercator, Lambert Conformal, Stereographic, Albers Equal Area, Azimuthal Equidistant
    - 992            dx,dy = self.gridlengthXDirection, self.gridlengthYDirection
    - 993            lon1,lat1 = self.longitudeFirstGridpoint, self.latitudeFirstGridpoint
    - 994            pj = pyproj.Proj(self.projParameters)
    - 995            llcrnrx, llcrnry = pj(lon1,lat1)
    - 996            x = llcrnrx+dx*np.arange(self.nx)
    - 997            y = llcrnry+dy*np.arange(self.ny)
    - 998            x,y = np.meshgrid(x, y)
    - 999            lons,lats = pj(x, y, inverse=True)
    -1000        elif gdtn == 90:
    -1001            # Satellite Projection
    -1002            dx = self.gridlengthXDirection
    -1003            dy = self.gridlengthYDirection
    -1004            pj = pyproj.Proj(self.projParameters)
    -1005            x = dx*np.indices((self.ny,self.nx),'f')[1,:,:]
    -1006            x -= 0.5*x.max()
    -1007            y = dy*np.indices((self.ny,self.nx),'f')[0,:,:]
    -1008            y -= 0.5*y.max()
    -1009            lons,lats = pj(x,y,inverse=True)
    -1010            # Set lons,lats to 1.e30 where undefined
    -1011            abslons = np.fabs(lons)
    -1012            abslats = np.fabs(lats)
    -1013            lons = np.where(abslons < 1.e20, lons, 1.e30)
    -1014            lats = np.where(abslats < 1.e20, lats, 1.e30)
    -1015        else:
    -1016            raise ValueError('Unsupported grid')
    -1017
    -1018        _latlon_datastore[self._sha1_section3] = (lats,lons)
    -1019
    -1020        return lats, lons
    + 938        **`lats, lons : numpy.ndarray`**
    + 939
    + 940        Returns two numpy.ndarrays with dtype=numpy.float32 of grid latitudes and
    + 941        longitudes in units of degrees.
    + 942        """
    + 943        if self._sha1_section3 in _latlon_datastore.keys():
    + 944            return (_latlon_datastore[self._sha1_section3]['latitude'],
    + 945                    _latlon_datastore[self._sha1_section3]['longitude'])
    + 946        else:
    + 947            _latlon_datastore[self._sha1_section3] = {}
    + 948        gdtn = self.gridDefinitionTemplateNumber.value
    + 949        gdtmpl = self.gridDefinitionTemplate
    + 950        reggrid = self.gridDefinitionSection[2] == 0 # This means regular 2-d grid
    + 951        if gdtn == 0:
    + 952            # Regular lat/lon grid
    + 953            lon1, lat1 = self.longitudeFirstGridpoint, self.latitudeFirstGridpoint
    + 954            lon2, lat2 = self.longitudeLastGridpoint, self.latitudeLastGridpoint
    + 955            dlon = self.gridlengthXDirection
    + 956            dlat = self.gridlengthYDirection
    + 957            if lon2 < lon1 and dlon < 0: lon1 = -lon1
    + 958            lats = np.linspace(lat1,lat2,self.ny)
    + 959            if reggrid:
    + 960                lons = np.linspace(lon1,lon2,self.nx)
    + 961            else:
    + 962                lons = np.linspace(lon1,lon2,self.ny*2)
    + 963            lons,lats = np.meshgrid(lons,lats) # Make 2-d arrays.
    + 964        elif gdtn == 1: # Rotated Lat/Lon grid
    + 965            pj = pyproj.Proj(self.projParameters)
    + 966            lat1,lon1 = self.latitudeFirstGridpoint,self.longitudeFirstGridpoint
    + 967            lat2,lon2 = self.latitudeLastGridpoint,self.longitudeLastGridpoint
    + 968            if lon1 > 180.0: lon1 -= 360.0
    + 969            if lon2 > 180.0: lon2 -= 360.0
    + 970            lats = np.linspace(lat1,lat2,self.ny)
    + 971            lons = np.linspace(lon1,lon2,self.nx)
    + 972            lons,lats = np.meshgrid(lons,lats) # Make 2-d arrays.
    + 973            if unrotate:
    + 974                from grib2io.utils import rotated_grid
    + 975                lats,lons = rotated_grid.unrotate(lats,lons,self.anglePoleRotation,
    + 976                                                  self.latitudeSouthernPole,
    + 977                                                  self.longitudeSouthernPole)
    + 978        elif gdtn == 40: # Gaussian grid (only works for global!)
    + 979            from utils.gauss_grids import gaussian_latitudes
    + 980            lon1, lat1 = self.longitudeFirstGridpoint, self.latitudeFirstGridpoint
    + 981            lon2, lat2 = self.longitudeLastGridpoint, self.latitudeLastGridpoint
    + 982            nlats = self.ny
    + 983            if not reggrid: # Reduced Gaussian grid.
    + 984                nlons = 2*nlats
    + 985                dlon = 360./nlons
    + 986            else:
    + 987                nlons = self.nx
    + 988                dlon = self.gridlengthXDirection
    + 989            lons = np.arange(lon1,lon2+dlon,dlon)
    + 990            # Compute Gaussian lats (north to south)
    + 991            lats = gaussian_latitudes(nlats)
    + 992            if lat1 < lat2:  # reverse them if necessary
    + 993                lats = lats[::-1]
    + 994            lons,lats = np.meshgrid(lons,lats)
    + 995        elif gdtn in {10,20,30,31,110}:
    + 996            # Mercator, Lambert Conformal, Stereographic, Albers Equal Area, Azimuthal Equidistant
    + 997            dx,dy = self.gridlengthXDirection, self.gridlengthYDirection
    + 998            lon1,lat1 = self.longitudeFirstGridpoint, self.latitudeFirstGridpoint
    + 999            pj = pyproj.Proj(self.projParameters)
    +1000            llcrnrx, llcrnry = pj(lon1,lat1)
    +1001            x = llcrnrx+dx*np.arange(self.nx)
    +1002            y = llcrnry+dy*np.arange(self.ny)
    +1003            x,y = np.meshgrid(x, y)
    +1004            lons,lats = pj(x, y, inverse=True)
    +1005        elif gdtn == 90:
    +1006            # Satellite Projection
    +1007            dx = self.gridlengthXDirection
    +1008            dy = self.gridlengthYDirection
    +1009            pj = pyproj.Proj(self.projParameters)
    +1010            x = dx*np.indices((self.ny,self.nx),'f')[1,:,:]
    +1011            x -= 0.5*x.max()
    +1012            y = dy*np.indices((self.ny,self.nx),'f')[0,:,:]
    +1013            y -= 0.5*y.max()
    +1014            lons,lats = pj(x,y,inverse=True)
    +1015            # Set lons,lats to 1.e30 where undefined
    +1016            abslons = np.fabs(lons)
    +1017            abslats = np.fabs(lats)
    +1018            lons = np.where(abslons < 1.e20, lons, 1.e30)
    +1019            lats = np.where(abslats < 1.e20, lats, 1.e30)
    +1020        elif gdtn == 32769:
    +1021            # Special NCEP Grid, Rotated Lat/Lon, Arakawa E-Grid (Non-Staggered)
    +1022            from grib2io.utils import arakawa_rotated_grid
    +1023            from grib2io.utils.rotated_grid import DEG2RAD
    +1024            di, dj = 0.0, 0.0
    +1025            do_180 = False
    +1026            idir = 1 if self.scanModeFlags[0] == 0 else -1
    +1027            jdir = -1 if self.scanModeFlags[1] == 0 else 1
    +1028            grid_oriented = 0 if self.resolutionAndComponentFlags[4] == 0 else 1
    +1029            do_rot = 1 if grid_oriented == 1 else 0
    +1030            la1 = self.latitudeFirstGridpoint
    +1031            lo1 = self.longitudeFirstGridpoint
    +1032            clon = self.longitudeCenterGridpoint
    +1033            clat = self.latitudeCenterGridpoint
    +1034            lasp = clat - 90.0
    +1035            losp = clon
    +1036            llat, llon = arakawa_rotated_grid.ll2rot(la1,lo1,lasp,losp)
    +1037            la2, lo2 = arakawa_rotated_grid.rot2ll(-llat,-llon,lasp,losp)
    +1038            rlat = -llat
    +1039            rlon = -llon
    +1040            if self.nx == 1:
    +1041                di = 0.0
    +1042            elif idir == 1:
    +1043                ti = rlon
    +1044                while ti < llon:
    +1045                    ti += 360.0
    +1046                di = (ti - llon)/float(self.nx-1)
    +1047            else:
    +1048                ti = llon
    +1049                while ti < rlon:
    +1050                    ti += 360.0
    +1051                di = (ti - rlon)/float(self.nx-1)
    +1052            if self.ny == 1:
    +1053               dj = 0.0
    +1054            else:
    +1055                dj = (rlat - llat)/float(self.ny-1)
    +1056                if dj < 0.0:
    +1057                    dj = -dj
    +1058            if idir == 1:
    +1059                if llon > rlon:
    +1060                    llon -= 360.0
    +1061                if llon < 0 and rlon > 0:
    +1062                    do_180 = True
    +1063            else:
    +1064                if rlon > llon:
    +1065                    rlon -= 360.0
    +1066                if rlon < 0 and llon > 0:
    +1067                    do_180 = True
    +1068            xlat1d = llat + (np.arange(self.ny)*jdir*dj)
    +1069            xlon1d = llon + (np.arange(self.nx)*idir*di)
    +1070            xlons, xlats = np.meshgrid(xlon1d,xlat1d)
    +1071            rot2ll_vectorized = np.vectorize(arakawa_rotated_grid.rot2ll)
    +1072            lats, lons = rot2ll_vectorized(xlats,xlons,lasp,losp)
    +1073            if do_180:
    +1074                lons = np.where(lons>180.0,lons-360.0,lons)
    +1075            vector_rotation_angles_vectorized = np.vectorize(arakawa_rotated_grid.vector_rotation_angles)
    +1076            rots = vector_rotation_angles_vectorized(lats, lons, clat, losp, xlats)
    +1077            _latlon_datastore[self._sha1_section3]['vector_rotation_angles'] = rots
    +1078            del xlat1d, xlon1d, xlats, xlons
    +1079        else:
    +1080            raise ValueError('Unsupported grid')
    +1081
    +1082        _latlon_datastore[self._sha1_section3]['latitude'] = lats
    +1083        _latlon_datastore[self._sha1_section3]['longitude'] = lons
    +1084
    +1085        return lats, lons
     
    @@ -3263,41 +3406,41 @@

    Returns

    -
    1023    def map_keys(self):
    -1024        """
    -1025        Returns an unpacked data grid where integer grid values are replaced with
    -1026        a string in which the numeric value is a representation of. These types
    -1027        of fields are cateogrical or classifications where data values do not
    -1028        represent an observable or predictable physical quantity.
    -1029
    -1030        An example of such a field field would be [Dominant Precipitation Type -
    -1031        DPTYPE](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-201.shtml)
    -1032
    -1033        Returns
    -1034        -------
    -1035
    -1036        **`numpy.ndarray`** of string values per element.
    -1037        """
    -1038        hold_auto_nans = _AUTO_NANS
    -1039        set_auto_nans(False)
    -1040        if (np.all(self.section1[0:2]==[7,14]) and self.shortName == 'PWTHER') or \
    -1041        (np.all(self.section1[0:2]==[8,65535]) and self.shortName == 'WX'):
    -1042            keys = utils.decode_wx_strings(self.section2)
    -1043            if hasattr(self,'priMissingValue') and self.priMissingValue not in [None,0]:
    -1044                keys[int(self.priMissingValue)] = 'Missing'
    -1045            if hasattr(self,'secMissingValue') and self.secMissingValue not in [None,0]:
    -1046                keys[int(self.secMissingValue)] = 'Missing'
    -1047            u,inv = np.unique(self.data,return_inverse=True)
    -1048            fld = np.array([keys[x] for x in u])[inv].reshape(self.data.shape)
    -1049        else:
    -1050            # For data whose units are defined in a code table (i.e. classification or mask)
    -1051            tblname = re.findall(r'\d\.\d+',self.units,re.IGNORECASE)[0]
    -1052            fld = self.data.astype(np.int32).astype(str)
    -1053            tbl = tables.get_table(tblname,expand=True)
    -1054            for val in np.unique(fld):
    -1055                fld = np.where(fld==val,tbl[val],fld)
    -1056        set_auto_nans(hold_auto_nans)
    -1057        return fld
    +            
    1088    def map_keys(self):
    +1089        """
    +1090        Returns an unpacked data grid where integer grid values are replaced with
    +1091        a string in which the numeric value is a representation of. These types
    +1092        of fields are cateogrical or classifications where data values do not
    +1093        represent an observable or predictable physical quantity.
    +1094
    +1095        An example of such a field field would be [Dominant Precipitation Type -
    +1096        DPTYPE](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table4-201.shtml)
    +1097
    +1098        Returns
    +1099        -------
    +1100
    +1101        **`numpy.ndarray`** of string values per element.
    +1102        """
    +1103        hold_auto_nans = _AUTO_NANS
    +1104        set_auto_nans(False)
    +1105        if (np.all(self.section1[0:2]==[7,14]) and self.shortName == 'PWTHER') or \
    +1106        (np.all(self.section1[0:2]==[8,65535]) and self.shortName == 'WX'):
    +1107            keys = utils.decode_wx_strings(self.section2)
    +1108            if hasattr(self,'priMissingValue') and self.priMissingValue not in [None,0]:
    +1109                keys[int(self.priMissingValue)] = 'Missing'
    +1110            if hasattr(self,'secMissingValue') and self.secMissingValue not in [None,0]:
    +1111                keys[int(self.secMissingValue)] = 'Missing'
    +1112            u,inv = np.unique(self.data,return_inverse=True)
    +1113            fld = np.array([keys[x] for x in u])[inv].reshape(self.data.shape)
    +1114        else:
    +1115            # For data whose units are defined in a code table (i.e. classification or mask)
    +1116            tblname = re.findall(r'\d\.\d+',self.units,re.IGNORECASE)[0]
    +1117            fld = self.data.astype(np.int32).astype(str)
    +1118            tbl = tables.get_table(tblname,expand=True)
    +1119            for val in np.unique(fld):
    +1120                fld = np.where(fld==val,tbl[val],fld)
    +1121        set_auto_nans(hold_auto_nans)
    +1122        return fld
     
    @@ -3327,33 +3470,33 @@

    Returns

    -
    1060    def to_bytes(self, validate=True):
    -1061        """
    -1062        Return packed GRIB2 message in bytes format. This will be Useful for
    -1063        exporting data in non-file formats.  For example, can be used to
    -1064        output grib data directly to S3 using the boto3 client without the
    -1065        need to write a temporary file to upload first.
    -1066
    -1067        Parameters
    -1068        ----------
    -1069
    -1070        **`validate : bool, optional`**
    -1071
    -1072        If `True` (DEFAULT), validates first/last four bytes for proper
    -1073        formatting, else returns None. If `False`, message is output as is.
    -1074
    -1075        Returns
    -1076        -------
    -1077
    -1078        Returns GRIB2 formatted message as bytes.
    -1079        """
    -1080        if validate:
    -1081            if self._msg[0:4]+self._msg[-4:] == b'GRIB7777':
    -1082                return self._msg
    -1083            else:
    -1084                return None
    -1085        else:
    -1086            return self._msg
    +            
    1125    def to_bytes(self, validate=True):
    +1126        """
    +1127        Return packed GRIB2 message in bytes format. This will be Useful for
    +1128        exporting data in non-file formats.  For example, can be used to
    +1129        output grib data directly to S3 using the boto3 client without the
    +1130        need to write a temporary file to upload first.
    +1131
    +1132        Parameters
    +1133        ----------
    +1134
    +1135        **`validate : bool, optional`**
    +1136
    +1137        If `True` (DEFAULT), validates first/last four bytes for proper
    +1138        formatting, else returns None. If `False`, message is output as is.
    +1139
    +1140        Returns
    +1141        -------
    +1142
    +1143        Returns GRIB2 formatted message as bytes.
    +1144        """
    +1145        if validate:
    +1146            if self._msg[0:4]+self._msg[-4:] == b'GRIB7777':
    +1147                return self._msg
    +1148            else:
    +1149                return None
    +1150        else:
    +1151            return self._msg
     
    @@ -3387,68 +3530,68 @@

    Returns

    -
    1089    def interpolate(self, method, grid_def_out, method_options=None):
    -1090        """
    -1091        Perform grid spatial interpolation via the [NCEPLIBS-ip library](https://github.com/NOAA-EMC/NCEPLIBS-ip).
    -1092
    -1093        **IMPORTANT:**  This interpolate method only supports scalar interpolation. If you
    -1094        need to perform vector interpolation, use the module-level `grib2io.interpolate` function.
    -1095
    -1096        Parameters
    -1097        ----------
    -1098
    -1099        **`method : int or str`**
    -1100
    -1101        Interpolate method to use. This can either be an integer or string using
    -1102        the following mapping:
    -1103
    -1104        | Interpolate Scheme | Integer Value |
    -1105        | :---:              | :---:         |
    -1106        | 'bilinear'         | 0             |
    -1107        | 'bicubic'          | 1             |
    -1108        | 'neighbor'         | 2             |
    -1109        | 'budget'           | 3             |
    -1110        | 'spectral'         | 4             |
    -1111        | 'neighbor-budget'  | 6             |
    -1112
    -1113        **`grid_def_out : grib2io.Grib2GridDef`**
    -1114
    -1115        Grib2GridDef object of the output grid.
    -1116
    -1117        **`method_options : list of ints, optional`**
    -1118
    -1119        Interpolation options. See the NCEPLIBS-ip doucmentation for
    -1120        more information on how these are used.
    -1121
    -1122        Returns
    -1123        -------
    -1124
    -1125        If interpolating to a grid, a new Grib2Message object is returned.  The GRIB2 metadata of
    -1126        the new Grib2Message object is indentical to the input except where required to be different
    -1127        because of the new grid specs.
    -1128
    -1129        If interpolating to station points, the interpolated data values are returned as a numpy.ndarray.
    -1130        """
    -1131        section0 = self.section0
    -1132        section0[-1] = 0
    -1133        gds = [0, grid_def_out.npoints, 0, 255, grid_def_out.gdtn]
    -1134        section3 = np.concatenate((gds,grid_def_out.gdt))
    -1135
    -1136        msg = Grib2Message(section0,self.section1,self.section2,section3,
    -1137                           self.section4,self.section5,self.bitMapFlag.value)
    -1138
    -1139        msg._msgnum = -1
    -1140        msg._deflist = self._deflist
    -1141        msg._coordlist = self._coordlist
    -1142        shape = (msg.ny,msg.nx)
    -1143        ndim = 2
    -1144        if msg.typeOfValues == 0:
    -1145            dtype = 'float32'
    -1146        elif msg.typeOfValues == 1:
    -1147            dtype = 'int32'
    -1148        msg._data = interpolate(self.data,method,Grib2GridDef.from_section3(self.section3),grid_def_out,
    -1149                                method_options=method_options).reshape(msg.ny,msg.nx)
    -1150        return msg
    +            
    1154    def interpolate(self, method, grid_def_out, method_options=None):
    +1155        """
    +1156        Perform grid spatial interpolation via the [NCEPLIBS-ip library](https://github.com/NOAA-EMC/NCEPLIBS-ip).
    +1157
    +1158        **IMPORTANT:**  This interpolate method only supports scalar interpolation. If you
    +1159        need to perform vector interpolation, use the module-level `grib2io.interpolate` function.
    +1160
    +1161        Parameters
    +1162        ----------
    +1163
    +1164        **`method : int or str`**
    +1165
    +1166        Interpolate method to use. This can either be an integer or string using
    +1167        the following mapping:
    +1168
    +1169        | Interpolate Scheme | Integer Value |
    +1170        | :---:              | :---:         |
    +1171        | 'bilinear'         | 0             |
    +1172        | 'bicubic'          | 1             |
    +1173        | 'neighbor'         | 2             |
    +1174        | 'budget'           | 3             |
    +1175        | 'spectral'         | 4             |
    +1176        | 'neighbor-budget'  | 6             |
    +1177
    +1178        **`grid_def_out : grib2io.Grib2GridDef`**
    +1179
    +1180        Grib2GridDef object of the output grid.
    +1181
    +1182        **`method_options : list of ints, optional`**
    +1183
    +1184        Interpolation options. See the NCEPLIBS-ip doucmentation for
    +1185        more information on how these are used.
    +1186
    +1187        Returns
    +1188        -------
    +1189
    +1190        If interpolating to a grid, a new Grib2Message object is returned.  The GRIB2 metadata of
    +1191        the new Grib2Message object is indentical to the input except where required to be different
    +1192        because of the new grid specs.
    +1193
    +1194        If interpolating to station points, the interpolated data values are returned as a numpy.ndarray.
    +1195        """
    +1196        section0 = self.section0
    +1197        section0[-1] = 0
    +1198        gds = [0, grid_def_out.npoints, 0, 255, grid_def_out.gdtn]
    +1199        section3 = np.concatenate((gds,grid_def_out.gdt))
    +1200
    +1201        msg = Grib2Message(section0,self.section1,self.section2,section3,
    +1202                           self.section4,self.section5,self.bitMapFlag.value)
    +1203
    +1204        msg._msgnum = -1
    +1205        msg._deflist = self._deflist
    +1206        msg._coordlist = self._coordlist
    +1207        shape = (msg.ny,msg.nx)
    +1208        ndim = 2
    +1209        if msg.typeOfValues == 0:
    +1210            dtype = 'float32'
    +1211        elif msg.typeOfValues == 1:
    +1212            dtype = 'int32'
    +1213        msg._data = interpolate(self.data,method,Grib2GridDef.from_section3(self.section3),grid_def_out,
    +1214                                method_options=method_options).reshape(msg.ny,msg.nx)
    +1215        return msg
     
    @@ -3563,127 +3706,127 @@

    Returns

    -
    1289def interpolate(a, method, grid_def_in, grid_def_out, method_options=None):
    -1290    """
    -1291    This is the module-level interpolation function that interfaces with the grib2io_interp
    -1292    component pakcage that interfaces to the [NCEPLIBS-ip library](https://github.com/NOAA-EMC/NCEPLIBS-ip).
    -1293    It supports scalar and vector interpolation according to the type of object a.  It also
    -1294    supports scalar and vector interpolation to station points when grid_def_out is set up
    -1295    properly for station interpolation.
    -1296
    -1297    Parameters
    -1298    ----------
    -1299
    -1300    **`a : numpy.ndarray or tuple`**
    -1301
    -1302    Input data.  If `a` is a `numpy.ndarray`, scalar interpolation will be
    -1303    performed.  If `a` is a `tuple`, then vector interpolation will be performed
    -1304    with the assumption that u = a[0] and v = a[1] and are both `numpy.ndarray`.
    -1305
    -1306    These data are expected to be in 2-dimensional form with shape (ny, nx) or
    -1307    3-dimensional (:, ny, nx) where the 1st dimension represents another spatial,
    -1308    temporal, or classification (i.e. ensemble members) dimension. The function will
    -1309    properly flatten the (ny,nx) dimensions into (nx * ny) acceptable for input into
    -1310    the interpolation subroutines.
    -1311
    -1312    **`method : int or str`**
    -1313
    -1314    Interpolate method to use. This can either be an integer or string using
    -1315    the following mapping:
    -1316
    -1317    | Interpolate Scheme | Integer Value |
    -1318    | :---:              | :---:         |
    -1319    | 'bilinear'         | 0             |
    -1320    | 'bicubic'          | 1             |
    -1321    | 'neighbor'         | 2             |
    -1322    | 'budget'           | 3             |
    -1323    | 'spectral'         | 4             |
    -1324    | 'neighbor-budget'  | 6             |
    -1325
    -1326    **`grid_def_in : grib2io.Grib2GridDef`**
    -1327
    -1328    Grib2GridDef object for the input grid.
    -1329
    -1330    **`grid_def_out : grib2io.Grib2GridDef`**
    -1331
    -1332    Grib2GridDef object for the output grid or station points.
    -1333
    -1334    **`method_options : list of ints, optional`**
    -1335
    -1336    Interpolation options. See the NCEPLIBS-ip doucmentation for
    -1337    more information on how these are used.
    -1338
    -1339    Returns
    -1340    -------
    -1341
    -1342    Returns a `numpy.ndarray` when scalar interpolation is performed or
    -1343    a `tuple` of `numpy.ndarray`s when vector interpolation is performed
    -1344    with the assumptions that 0-index is the interpolated u and 1-index
    -1345    is the interpolated v.
    -1346    """
    -1347    from grib2io_interp import interpolate
    -1348
    -1349    interp_schemes = {'bilinear':0, 'bicubic':1, 'neighbor':2,
    -1350                      'budget':3, 'spectral':4, 'neighbor-budget':6}
    -1351
    -1352    if isinstance(method,int) and method not in interp_schemes.values():
    -1353        raise ValueError('Invalid interpolation method.')
    -1354    elif isinstance(method,str):
    -1355        if method in interp_schemes.keys():
    -1356            method = interp_schemes[method]
    -1357        else:
    -1358            raise ValueError('Invalid interpolation method.')
    -1359
    -1360    if method_options is None:
    -1361        method_options = np.zeros((20),dtype=np.int32)
    -1362        if method in {3,6}:
    -1363            method_options[0:2] = -1
    +            
    1354def interpolate(a, method, grid_def_in, grid_def_out, method_options=None):
    +1355    """
    +1356    This is the module-level interpolation function that interfaces with the grib2io_interp
    +1357    component pakcage that interfaces to the [NCEPLIBS-ip library](https://github.com/NOAA-EMC/NCEPLIBS-ip).
    +1358    It supports scalar and vector interpolation according to the type of object a.  It also
    +1359    supports scalar and vector interpolation to station points when grid_def_out is set up
    +1360    properly for station interpolation.
    +1361
    +1362    Parameters
    +1363    ----------
     1364
    -1365    ni = grid_def_in.npoints
    -1366    no = grid_def_out.npoints
    -1367
    -1368    # Adjust shape of input array(s)
    -1369    a,newshp = _adjust_array_shape_for_interp(a,grid_def_in,grid_def_out)
    +1365    **`a : numpy.ndarray or tuple`**
    +1366
    +1367    Input data.  If `a` is a `numpy.ndarray`, scalar interpolation will be
    +1368    performed.  If `a` is a `tuple`, then vector interpolation will be performed
    +1369    with the assumption that u = a[0] and v = a[1] and are both `numpy.ndarray`.
     1370
    -1371    # Set lats and lons if stations, else create array for grids.
    -1372    if grid_def_out.gdtn == -1:
    -1373        rlat = np.array(grid_def_out.lats,dtype=np.float32)
    -1374        rlon = np.array(grid_def_out.lons,dtype=np.float32)
    -1375    else:
    -1376        rlat = np.zeros((no),dtype=np.float32)
    -1377        rlon = np.zeros((no),dtype=np.float32)
    +1371    These data are expected to be in 2-dimensional form with shape (ny, nx) or
    +1372    3-dimensional (:, ny, nx) where the 1st dimension represents another spatial,
    +1373    temporal, or classification (i.e. ensemble members) dimension. The function will
    +1374    properly flatten the (ny,nx) dimensions into (nx * ny) acceptable for input into
    +1375    the interpolation subroutines.
    +1376
    +1377    **`method : int or str`**
     1378
    -1379    # Call interpolation subroutines according to type of a.
    -1380    if isinstance(a,np.ndarray):
    -1381        # Scalar
    -1382        ibi = np.zeros((a.shape[0]),dtype=np.int32)
    -1383        li = np.zeros(a.shape,dtype=np.int32)
    -1384        go = np.zeros((a.shape[0],no),dtype=np.float32)
    -1385        no,ibo,lo,iret = interpolate.interpolate_scalar(method,method_options,
    -1386                                                 grid_def_in.gdtn,grid_def_in.gdt,
    -1387                                                 grid_def_out.gdtn,grid_def_out.gdt,
    -1388                                                 ibi,li.T,a.T,go.T,rlat,rlon)
    -1389        out = go.reshape(newshp)
    -1390    elif isinstance(a,tuple):
    -1391        # Vector
    -1392        ibi = np.zeros((a[0].shape[0]),dtype=np.int32)
    -1393        li = np.zeros(a[0].shape,dtype=np.int32)
    -1394        uo = np.zeros((a[0].shape[0],no),dtype=np.float32)
    -1395        vo = np.zeros((a[1].shape[0],no),dtype=np.float32)
    -1396        crot = np.ones((no),dtype=np.float32)
    -1397        srot = np.zeros((no),dtype=np.float32)
    -1398        no,ibo,lo,iret = interpolate.interpolate_vector(method,method_options,
    -1399                                                 grid_def_in.gdtn,grid_def_in.gdt,
    -1400                                                 grid_def_out.gdtn,grid_def_out.gdt,
    -1401                                                 ibi,li.T,a[0].T,a[1].T,uo.T,vo.T,
    -1402                                                 rlat,rlon,crot,srot)
    -1403        del crot
    -1404        del srot
    -1405        out = (uo.reshape(newshp),vo.reshape(newshp))
    +1379    Interpolate method to use. This can either be an integer or string using
    +1380    the following mapping:
    +1381
    +1382    | Interpolate Scheme | Integer Value |
    +1383    | :---:              | :---:         |
    +1384    | 'bilinear'         | 0             |
    +1385    | 'bicubic'          | 1             |
    +1386    | 'neighbor'         | 2             |
    +1387    | 'budget'           | 3             |
    +1388    | 'spectral'         | 4             |
    +1389    | 'neighbor-budget'  | 6             |
    +1390
    +1391    **`grid_def_in : grib2io.Grib2GridDef`**
    +1392
    +1393    Grib2GridDef object for the input grid.
    +1394
    +1395    **`grid_def_out : grib2io.Grib2GridDef`**
    +1396
    +1397    Grib2GridDef object for the output grid or station points.
    +1398
    +1399    **`method_options : list of ints, optional`**
    +1400
    +1401    Interpolation options. See the NCEPLIBS-ip doucmentation for
    +1402    more information on how these are used.
    +1403
    +1404    Returns
    +1405    -------
     1406
    -1407    del rlat
    -1408    del rlon
    -1409    return out
    +1407    Returns a `numpy.ndarray` when scalar interpolation is performed or
    +1408    a `tuple` of `numpy.ndarray`s when vector interpolation is performed
    +1409    with the assumptions that 0-index is the interpolated u and 1-index
    +1410    is the interpolated v.
    +1411    """
    +1412    from grib2io_interp import interpolate
    +1413
    +1414    interp_schemes = {'bilinear':0, 'bicubic':1, 'neighbor':2,
    +1415                      'budget':3, 'spectral':4, 'neighbor-budget':6}
    +1416
    +1417    if isinstance(method,int) and method not in interp_schemes.values():
    +1418        raise ValueError('Invalid interpolation method.')
    +1419    elif isinstance(method,str):
    +1420        if method in interp_schemes.keys():
    +1421            method = interp_schemes[method]
    +1422        else:
    +1423            raise ValueError('Invalid interpolation method.')
    +1424
    +1425    if method_options is None:
    +1426        method_options = np.zeros((20),dtype=np.int32)
    +1427        if method in {3,6}:
    +1428            method_options[0:2] = -1
    +1429
    +1430    ni = grid_def_in.npoints
    +1431    no = grid_def_out.npoints
    +1432
    +1433    # Adjust shape of input array(s)
    +1434    a,newshp = _adjust_array_shape_for_interp(a,grid_def_in,grid_def_out)
    +1435
    +1436    # Set lats and lons if stations, else create array for grids.
    +1437    if grid_def_out.gdtn == -1:
    +1438        rlat = np.array(grid_def_out.lats,dtype=np.float32)
    +1439        rlon = np.array(grid_def_out.lons,dtype=np.float32)
    +1440    else:
    +1441        rlat = np.zeros((no),dtype=np.float32)
    +1442        rlon = np.zeros((no),dtype=np.float32)
    +1443
    +1444    # Call interpolation subroutines according to type of a.
    +1445    if isinstance(a,np.ndarray):
    +1446        # Scalar
    +1447        ibi = np.zeros((a.shape[0]),dtype=np.int32)
    +1448        li = np.zeros(a.shape,dtype=np.int32)
    +1449        go = np.zeros((a.shape[0],no),dtype=np.float32)
    +1450        no,ibo,lo,iret = interpolate.interpolate_scalar(method,method_options,
    +1451                                                 grid_def_in.gdtn,grid_def_in.gdt,
    +1452                                                 grid_def_out.gdtn,grid_def_out.gdt,
    +1453                                                 ibi,li.T,a.T,go.T,rlat,rlon)
    +1454        out = go.reshape(newshp)
    +1455    elif isinstance(a,tuple):
    +1456        # Vector
    +1457        ibi = np.zeros((a[0].shape[0]),dtype=np.int32)
    +1458        li = np.zeros(a[0].shape,dtype=np.int32)
    +1459        uo = np.zeros((a[0].shape[0],no),dtype=np.float32)
    +1460        vo = np.zeros((a[1].shape[0],no),dtype=np.float32)
    +1461        crot = np.ones((no),dtype=np.float32)
    +1462        srot = np.zeros((no),dtype=np.float32)
    +1463        no,ibo,lo,iret = interpolate.interpolate_vector(method,method_options,
    +1464                                                 grid_def_in.gdtn,grid_def_in.gdt,
    +1465                                                 grid_def_out.gdtn,grid_def_out.gdt,
    +1466                                                 ibi,li.T,a[0].T,a[1].T,uo.T,vo.T,
    +1467                                                 rlat,rlon,crot,srot)
    +1468        del crot
    +1469        del srot
    +1470        out = (uo.reshape(newshp),vo.reshape(newshp))
    +1471
    +1472    del rlat
    +1473    del rlon
    +1474    return out
     
    @@ -3781,146 +3924,146 @@

    Returns

    -
    1412def interpolate_to_stations(a, method, grid_def_in, lats, lons, method_options=None):
    -1413    """
    -1414    This is the module-level interpolation function **for interpolation to stations**
    -1415    that interfaces with the grib2io_interp component pakcage that interfaces to
    -1416    the [NCEPLIBS-ip library](https://github.com/NOAA-EMC/NCEPLIBS-ip). It supports
    -1417    scalar and vector interpolation according to the type of object a.
    -1418
    -1419    Parameters
    -1420    ----------
    -1421
    -1422    **`a : numpy.ndarray or tuple`**
    -1423
    -1424    Input data.  If `a` is a `numpy.ndarray`, scalar interpolation will be
    -1425    performed.  If `a` is a `tuple`, then vector interpolation will be performed
    -1426    with the assumption that u = a[0] and v = a[1] and are both `numpy.ndarray`.
    -1427
    -1428    These data are expected to be in 2-dimensional form with shape (ny, nx) or
    -1429    3-dimensional (:, ny, nx) where the 1st dimension represents another spatial,
    -1430    temporal, or classification (i.e. ensemble members) dimension. The function will
    -1431    properly flatten the (ny,nx) dimensions into (nx * ny) acceptable for input into
    -1432    the interpolation subroutines.
    -1433
    -1434    **`method : int or str`**
    -1435
    -1436    Interpolate method to use. This can either be an integer or string using
    -1437    the following mapping:
    -1438
    -1439    | Interpolate Scheme | Integer Value |
    -1440    | :---:              | :---:         |
    -1441    | 'bilinear'         | 0             |
    -1442    | 'bicubic'          | 1             |
    -1443    | 'neighbor'         | 2             |
    -1444    | 'budget'           | 3             |
    -1445    | 'spectral'         | 4             |
    -1446    | 'neighbor-budget'  | 6             |
    -1447
    -1448    **`grid_def_in : grib2io.Grib2GridDef`**
    -1449
    -1450    Grib2GridDef object for the input grid.
    -1451
    -1452    **`lats : numpy.ndarray or list`**
    -1453
    -1454    Latitudes for station points
    -1455
    -1456    **`lons : numpy.ndarray or list`**
    -1457
    -1458    Longitudes for station points
    -1459
    -1460    **`method_options : list of ints, optional`**
    -1461
    -1462    Interpolation options. See the NCEPLIBS-ip doucmentation for
    -1463    more information on how these are used.
    -1464
    -1465    Returns
    -1466    -------
    -1467
    -1468    Returns a `numpy.ndarray` when scalar interpolation is performed or
    -1469    a `tuple` of `numpy.ndarray`s when vector interpolation is performed
    -1470    with the assumptions that 0-index is the interpolated u and 1-index
    -1471    is the interpolated v.
    -1472    """
    -1473    from grib2io_interp import interpolate
    -1474
    -1475    interp_schemes = {'bilinear':0, 'bicubic':1, 'neighbor':2,
    -1476                      'budget':3, 'spectral':4, 'neighbor-budget':6}
    -1477
    -1478    if isinstance(method,int) and method not in interp_schemes.values():
    -1479        raise ValueError('Invalid interpolation method.')
    -1480    elif isinstance(method,str):
    -1481        if method in interp_schemes.keys():
    -1482            method = interp_schemes[method]
    -1483        else:
    -1484            raise ValueError('Invalid interpolation method.')
    -1485
    -1486    if method_options is None:
    -1487        method_options = np.zeros((20),dtype=np.int32)
    -1488        if method in {3,6}:
    -1489            method_options[0:2] = -1
    -1490
    -1491    # Check lats and lons
    -1492    if isinstance(lats,list):
    -1493        nlats = len(lats)
    -1494    elif isinstance(lats,np.ndarray) and len(lats.shape) == 1:
    -1495        nlats = lats.shape[0]
    -1496    else:
    -1497        raise ValueError('Station latitudes must be a list or 1-D NumPy array.')
    -1498    if isinstance(lons,list):
    -1499        nlons = len(lons)
    -1500    elif isinstance(lons,np.ndarray) and len(lons.shape) == 1:
    -1501        nlons = lons.shape[0]
    -1502    else:
    -1503        raise ValueError('Station longitudes must be a list or 1-D NumPy array.')
    -1504    if nlats != nlons:
    -1505        raise ValueError('Station lats and lons must be same size.')
    -1506
    -1507    ni = grid_def_in.npoints
    -1508    no = nlats
    -1509
    -1510    # Adjust shape of input array(s)
    -1511    a,newshp = _adjust_array_shape_for_interp_stations(a,grid_def_in,no)
    +            
    1477def interpolate_to_stations(a, method, grid_def_in, lats, lons, method_options=None):
    +1478    """
    +1479    This is the module-level interpolation function **for interpolation to stations**
    +1480    that interfaces with the grib2io_interp component pakcage that interfaces to
    +1481    the [NCEPLIBS-ip library](https://github.com/NOAA-EMC/NCEPLIBS-ip). It supports
    +1482    scalar and vector interpolation according to the type of object a.
    +1483
    +1484    Parameters
    +1485    ----------
    +1486
    +1487    **`a : numpy.ndarray or tuple`**
    +1488
    +1489    Input data.  If `a` is a `numpy.ndarray`, scalar interpolation will be
    +1490    performed.  If `a` is a `tuple`, then vector interpolation will be performed
    +1491    with the assumption that u = a[0] and v = a[1] and are both `numpy.ndarray`.
    +1492
    +1493    These data are expected to be in 2-dimensional form with shape (ny, nx) or
    +1494    3-dimensional (:, ny, nx) where the 1st dimension represents another spatial,
    +1495    temporal, or classification (i.e. ensemble members) dimension. The function will
    +1496    properly flatten the (ny,nx) dimensions into (nx * ny) acceptable for input into
    +1497    the interpolation subroutines.
    +1498
    +1499    **`method : int or str`**
    +1500
    +1501    Interpolate method to use. This can either be an integer or string using
    +1502    the following mapping:
    +1503
    +1504    | Interpolate Scheme | Integer Value |
    +1505    | :---:              | :---:         |
    +1506    | 'bilinear'         | 0             |
    +1507    | 'bicubic'          | 1             |
    +1508    | 'neighbor'         | 2             |
    +1509    | 'budget'           | 3             |
    +1510    | 'spectral'         | 4             |
    +1511    | 'neighbor-budget'  | 6             |
     1512
    -1513    # Set lats and lons if stations
    -1514    rlat = np.array(lats,dtype=np.float32)
    -1515    rlon = np.array(lons,dtype=np.float32)
    +1513    **`grid_def_in : grib2io.Grib2GridDef`**
    +1514
    +1515    Grib2GridDef object for the input grid.
     1516
    -1517    # Use gdtn = -1 for stations and an empty template array
    -1518    gdtn = -1
    -1519    gdt = np.zeros((200),dtype=np.int32)
    +1517    **`lats : numpy.ndarray or list`**
    +1518
    +1519    Latitudes for station points
     1520
    -1521    # Call interpolation subroutines according to type of a.
    -1522    if isinstance(a,np.ndarray):
    -1523        # Scalar
    -1524        ibi = np.zeros((a.shape[0]),dtype=np.int32)
    -1525        li = np.zeros(a.shape,dtype=np.int32)
    -1526        go = np.zeros((a.shape[0],no),dtype=np.float32)
    -1527        no,ibo,lo,iret = interpolate.interpolate_scalar(method,method_options,
    -1528                                                 grid_def_in.gdtn,grid_def_in.gdt,
    -1529                                                 gdtn,gdt,
    -1530                                                 ibi,li.T,a.T,go.T,rlat,rlon)
    -1531        out = go.reshape(newshp)
    -1532    elif isinstance(a,tuple):
    -1533        # Vector
    -1534        ibi = np.zeros((a[0].shape[0]),dtype=np.int32)
    -1535        li = np.zeros(a[0].shape,dtype=np.int32)
    -1536        uo = np.zeros((a[0].shape[0],no),dtype=np.float32)
    -1537        vo = np.zeros((a[1].shape[0],no),dtype=np.float32)
    -1538        crot = np.ones((no),dtype=np.float32)
    -1539        srot = np.zeros((no),dtype=np.float32)
    -1540        no,ibo,lo,iret = interpolate.interpolate_vector(method,method_options,
    -1541                                                 grid_def_in.gdtn,grid_def_in.gdt,
    -1542                                                 gdtn,gdt,
    -1543                                                 ibi,li.T,a[0].T,a[1].T,uo.T,vo.T,
    -1544                                                 rlat,rlon,crot,srot)
    -1545        del crot
    -1546        del srot
    -1547        out = (uo.reshape(newshp),vo.reshape(newshp))
    -1548
    -1549    del rlat
    -1550    del rlon
    -1551    return out
    +1521    **`lons : numpy.ndarray or list`**
    +1522
    +1523    Longitudes for station points
    +1524
    +1525    **`method_options : list of ints, optional`**
    +1526
    +1527    Interpolation options. See the NCEPLIBS-ip doucmentation for
    +1528    more information on how these are used.
    +1529
    +1530    Returns
    +1531    -------
    +1532
    +1533    Returns a `numpy.ndarray` when scalar interpolation is performed or
    +1534    a `tuple` of `numpy.ndarray`s when vector interpolation is performed
    +1535    with the assumptions that 0-index is the interpolated u and 1-index
    +1536    is the interpolated v.
    +1537    """
    +1538    from grib2io_interp import interpolate
    +1539
    +1540    interp_schemes = {'bilinear':0, 'bicubic':1, 'neighbor':2,
    +1541                      'budget':3, 'spectral':4, 'neighbor-budget':6}
    +1542
    +1543    if isinstance(method,int) and method not in interp_schemes.values():
    +1544        raise ValueError('Invalid interpolation method.')
    +1545    elif isinstance(method,str):
    +1546        if method in interp_schemes.keys():
    +1547            method = interp_schemes[method]
    +1548        else:
    +1549            raise ValueError('Invalid interpolation method.')
    +1550
    +1551    if method_options is None:
    +1552        method_options = np.zeros((20),dtype=np.int32)
    +1553        if method in {3,6}:
    +1554            method_options[0:2] = -1
    +1555
    +1556    # Check lats and lons
    +1557    if isinstance(lats,list):
    +1558        nlats = len(lats)
    +1559    elif isinstance(lats,np.ndarray) and len(lats.shape) == 1:
    +1560        nlats = lats.shape[0]
    +1561    else:
    +1562        raise ValueError('Station latitudes must be a list or 1-D NumPy array.')
    +1563    if isinstance(lons,list):
    +1564        nlons = len(lons)
    +1565    elif isinstance(lons,np.ndarray) and len(lons.shape) == 1:
    +1566        nlons = lons.shape[0]
    +1567    else:
    +1568        raise ValueError('Station longitudes must be a list or 1-D NumPy array.')
    +1569    if nlats != nlons:
    +1570        raise ValueError('Station lats and lons must be same size.')
    +1571
    +1572    ni = grid_def_in.npoints
    +1573    no = nlats
    +1574
    +1575    # Adjust shape of input array(s)
    +1576    a,newshp = _adjust_array_shape_for_interp_stations(a,grid_def_in,no)
    +1577
    +1578    # Set lats and lons if stations
    +1579    rlat = np.array(lats,dtype=np.float32)
    +1580    rlon = np.array(lons,dtype=np.float32)
    +1581
    +1582    # Use gdtn = -1 for stations and an empty template array
    +1583    gdtn = -1
    +1584    gdt = np.zeros((200),dtype=np.int32)
    +1585
    +1586    # Call interpolation subroutines according to type of a.
    +1587    if isinstance(a,np.ndarray):
    +1588        # Scalar
    +1589        ibi = np.zeros((a.shape[0]),dtype=np.int32)
    +1590        li = np.zeros(a.shape,dtype=np.int32)
    +1591        go = np.zeros((a.shape[0],no),dtype=np.float32)
    +1592        no,ibo,lo,iret = interpolate.interpolate_scalar(method,method_options,
    +1593                                                 grid_def_in.gdtn,grid_def_in.gdt,
    +1594                                                 gdtn,gdt,
    +1595                                                 ibi,li.T,a.T,go.T,rlat,rlon)
    +1596        out = go.reshape(newshp)
    +1597    elif isinstance(a,tuple):
    +1598        # Vector
    +1599        ibi = np.zeros((a[0].shape[0]),dtype=np.int32)
    +1600        li = np.zeros(a[0].shape,dtype=np.int32)
    +1601        uo = np.zeros((a[0].shape[0],no),dtype=np.float32)
    +1602        vo = np.zeros((a[1].shape[0],no),dtype=np.float32)
    +1603        crot = np.ones((no),dtype=np.float32)
    +1604        srot = np.zeros((no),dtype=np.float32)
    +1605        no,ibo,lo,iret = interpolate.interpolate_vector(method,method_options,
    +1606                                                 grid_def_in.gdtn,grid_def_in.gdt,
    +1607                                                 gdtn,gdt,
    +1608                                                 ibi,li.T,a[0].T,a[1].T,uo.T,vo.T,
    +1609                                                 rlat,rlon,crot,srot)
    +1610        del crot
    +1611        del srot
    +1612        out = (uo.reshape(newshp),vo.reshape(newshp))
    +1613
    +1614    del rlat
    +1615    del rlon
    +1616    return out
     
    @@ -4022,36 +4165,36 @@

    Returns

    -
    1554@dataclass
    -1555class Grib2GridDef:
    -1556    """
    -1557    Class to hold GRIB2 Grid Definition Template Number and Template as
    -1558    class attributes. This allows for cleaner looking code when passing these
    -1559    metadata around.  For example, the `grib2io._Grib2Message.interpolate`
    -1560    method and `grib2io.interpolate` function accepts these objects.
    -1561    """
    -1562    gdtn: int
    -1563    gdt: np.array
    -1564
    -1565    @classmethod
    -1566    def from_section3(cls, section3):
    -1567        return cls(section3[4],section3[5:])
    -1568
    -1569    @property
    -1570    def nx(self):
    -1571        return self.gdt[7]
    -1572
    -1573    @property
    -1574    def ny(self):
    -1575        return self.gdt[8]
    -1576
    -1577    @property
    -1578    def npoints(self):
    -1579        return self.gdt[7] * self.gdt[8]
    -1580
    -1581    @property
    -1582    def shape(self):
    -1583        return (self.ny, self.nx)
    +            
    1619@dataclass
    +1620class Grib2GridDef:
    +1621    """
    +1622    Class to hold GRIB2 Grid Definition Template Number and Template as
    +1623    class attributes. This allows for cleaner looking code when passing these
    +1624    metadata around.  For example, the `grib2io._Grib2Message.interpolate`
    +1625    method and `grib2io.interpolate` function accepts these objects.
    +1626    """
    +1627    gdtn: int
    +1628    gdt: np.array
    +1629
    +1630    @classmethod
    +1631    def from_section3(cls, section3):
    +1632        return cls(section3[4],section3[5:])
    +1633
    +1634    @property
    +1635    def nx(self):
    +1636        return self.gdt[7]
    +1637
    +1638    @property
    +1639    def ny(self):
    +1640        return self.gdt[8]
    +1641
    +1642    @property
    +1643    def npoints(self):
    +1644        return self.gdt[7] * self.gdt[8]
    +1645
    +1646    @property
    +1647    def shape(self):
    +1648        return (self.ny, self.nx)
     
    @@ -4108,9 +4251,9 @@

    Returns

    -
    1565    @classmethod
    -1566    def from_section3(cls, section3):
    -1567        return cls(section3[4],section3[5:])
    +            
    1630    @classmethod
    +1631    def from_section3(cls, section3):
    +1632        return cls(section3[4],section3[5:])
     
    diff --git a/docs/grib2io/tables.html b/docs/grib2io/tables.html index 52a2b66..3b2b5d1 100644 --- a/docs/grib2io/tables.html +++ b/docs/grib2io/tables.html @@ -38,6 +38,7 @@

    Submodules

  • section4_discipline1
  • section4_discipline10
  • section4_discipline2
  • +
  • section4_discipline20
  • section4_discipline3
  • section4_discipline4
  • section5
  • @@ -46,6 +47,9 @@

    Submodules

    API Documentation

      +
    • + GRIB2_DISCIPLINES +
    • get_table
    • @@ -55,6 +59,12 @@

      API Documentation

    • get_varinfo_from_table
    • +
    • + get_shortnames +
    • +
    • + get_metadata_from_shortname +
    • get_wgrib2_level_string
    • @@ -84,69 +94,69 @@

        1"""
         2Functions for retreiving data from NCEP GRIB2 Tables.
         3"""
      -  4
      -  5from .section0 import *
      -  6from .section1 import *
      -  7from .section3 import *
      -  8from .section4 import *
      -  9from .section5 import *
      - 10from .section6 import *
      - 11from .originating_centers import *
      - 12
      - 13
      - 14def get_table(table, expand=False):
      - 15    """
      - 16    Return GRIB2 code table as a dictionary.
      - 17
      - 18    Parameters
      - 19    ----------
      +  4#from functools import cache # USE WHEN Python 3.9+ only
      +  5from functools import lru_cache
      +  6
      +  7from .section0 import *
      +  8from .section1 import *
      +  9from .section3 import *
      + 10from .section4 import *
      + 11from .section5 import *
      + 12from .section6 import *
      + 13from .originating_centers import *
      + 14
      + 15GRIB2_DISCIPLINES = [0, 1, 2, 3, 4, 10, 20]
      + 16
      + 17def get_table(table, expand=False):
      + 18    """
      + 19    Return GRIB2 code table as a dictionary.
        20
      - 21    **`table`**: Code table number (e.g. '1.0'). NOTE: Code table '4.1' requires a 3rd value
      - 22    representing the product discipline (e.g. '4.1.0').
      - 23
      - 24    **`expand`**: If `True`, expand output dictionary where keys are a range.
      + 21    Parameters
      + 22    ----------
      + 23    **`table`**: Code table number (e.g. '1.0'). NOTE: Code table '4.1' requires a 3rd value
      + 24    representing the product discipline (e.g. '4.1.0').
        25
      - 26    Returns
      - 27    -------
      - 28
      - 29    **`dict`**
      - 30    """
      - 31    if len(table) == 3 and table == '4.1':
      - 32        raise Exception('GRIB2 Code Table 4.1 requires a 3rd value representing the discipline.')
      - 33    if len(table) == 3 and table.startswith('4.2'):
      - 34        raise Exception('Use function get_varinfo_from_table() for GRIB2 Code Table 4.2')
      - 35    try:
      - 36        tbl = globals()['table_'+table.replace('.','_')]
      - 37        if expand:
      - 38            _tbl = {}
      - 39            for k,v in tbl.items():
      - 40                if '-' in k:
      - 41                    irng = [int(i) for i in k.split('-')]
      - 42                    for i in range(irng[0],irng[1]+1):
      - 43                        _tbl[str(i)] = v
      - 44                else:
      - 45                    _tbl[k] = v
      - 46            tbl = _tbl
      - 47        return tbl
      - 48    except(KeyError):
      - 49        return {}
      - 50
      + 26    **`expand`**: If `True`, expand output dictionary where keys are a range.
      + 27
      + 28    Returns
      + 29    -------
      + 30    **`dict`**
      + 31    """
      + 32    if len(table) == 3 and table == '4.1':
      + 33        raise Exception('GRIB2 Code Table 4.1 requires a 3rd value representing the discipline.')
      + 34    if len(table) == 3 and table.startswith('4.2'):
      + 35        raise Exception('Use function get_varinfo_from_table() for GRIB2 Code Table 4.2')
      + 36    try:
      + 37        tbl = globals()['table_'+table.replace('.','_')]
      + 38        if expand:
      + 39            _tbl = {}
      + 40            for k,v in tbl.items():
      + 41                if '-' in k:
      + 42                    irng = [int(i) for i in k.split('-')]
      + 43                    for i in range(irng[0],irng[1]+1):
      + 44                        _tbl[str(i)] = v
      + 45                else:
      + 46                    _tbl[k] = v
      + 47            tbl = _tbl
      + 48        return tbl
      + 49    except(KeyError):
      + 50        return {}
        51
      - 52def get_value_from_table(value, table, expand=False):
      - 53    """
      - 54    Return the definition given a GRIB2 code table.
      - 55
      - 56    Parameters
      - 57    ----------
      - 58
      + 52
      + 53def get_value_from_table(value, table, expand=False):
      + 54    """
      + 55    Return the definition given a GRIB2 code table.
      + 56
      + 57    Parameters
      + 58    ----------
        59    **`value`**: `int` or `str` code table value.
        60
        61    **`table`**: `str` code table number.
        62
        63    **`expand`**: If `True`, expand output dictionary where keys are a range.
      - 64    Returns
      - 65    -------
      - 66
      + 64
      + 65    Returns
      + 66    -------
        67    Table value or `None` if not found.
        68    """
        69    try:
      @@ -170,90 +180,176 @@ 

      87 88 Parameters 89 ---------- - 90 - 91 **`discipline`**: `int` or `str` of Discipline code value of a GRIB2 message. - 92 - 93 **`parmcat`**: `int` or `str` of Parameter Category value of a GRIB2 message. - 94 - 95 **`parmnum`**: `int` or `str` of Parameter Number value of a GRIB2 message. - 96 - 97 **`isNDFD`**: If `True`, signals function to try to get variable information - 98 from the supplemental NDFD tables. - 99 -100 Returns -101 ------- -102 -103 **`list`**: containing variable information. "Unknown" is given for item of -104 information if variable is not found. -105 - list[0] = full name -106 - list[1] = units -107 - list[2] = short name (abbreviated name) -108 """ -109 if isNDFD: -110 try: -111 tblname = f'table_4_2_{discipline}_{parmcat}_ndfd' -112 modname = f'.section4_discipline{discipline}' -113 exec('from '+modname+' import *') -114 return locals()[tblname][str(parmnum)] -115 except(ImportError,KeyError): -116 pass -117 #return ['Unknown','Unknown','Unknown'] -118 try: -119 tblname = f'table_4_2_{discipline}_{parmcat}' -120 modname = f'.section4_discipline{discipline}' -121 exec('from '+modname+' import *') -122 return locals()[tblname][str(parmnum)] -123 except(ImportError,KeyError): -124 return ['Unknown','Unknown','Unknown'] -125 -126 -127def get_wgrib2_level_string(pdtn,pdt): + 90 **`discipline`**: `int` or `str` of Discipline code value of a GRIB2 message. + 91 + 92 **`parmcat`**: `int` or `str` of Parameter Category value of a GRIB2 message. + 93 + 94 **`parmnum`**: `int` or `str` of Parameter Number value of a GRIB2 message. + 95 + 96 **`isNDFD`**: If `True`, signals function to try to get variable information + 97 from the supplemental NDFD tables. + 98 + 99 Returns +100 ------- +101 **`list`**: containing variable information. "Unknown" is given for item of +102 information if variable is not found. +103 - list[0] = full name +104 - list[1] = units +105 - list[2] = short name (abbreviated name) +106 """ +107 if isNDFD: +108 try: +109 tblname = f'table_4_2_{discipline}_{parmcat}_ndfd' +110 modname = f'.section4_discipline{discipline}' +111 exec('from '+modname+' import *') +112 return locals()[tblname][str(parmnum)] +113 except(ImportError,KeyError): +114 pass +115 #return ['Unknown','Unknown','Unknown'] +116 try: +117 tblname = f'table_4_2_{discipline}_{parmcat}' +118 modname = f'.section4_discipline{discipline}' +119 exec('from '+modname+' import *') +120 return locals()[tblname][str(parmnum)] +121 except(ImportError,KeyError): +122 return ['Unknown','Unknown','Unknown'] +123 +124 +125#@cache# USE WHEN Python 3.9+ only +126@lru_cache(maxsize=None) +127def get_shortnames(discipline=None, parmcat=None, parmnum=None, isNDFD=False): 128 """ -129 Return a string that describes the level or layer of the GRIB2 message. The -130 format and language of the string is an exact replica of how wgrib2 produces -131 the level/layer string in its inventory output. +129 Returns a list of variable shortNames given GRIB2 discipline, parameter +130 category, and parameter number. If all 3 args are None, then shortNames +131 from all disciplines, parameter categories, and numbers will be returned. 132 -133 Contents of wgrib2 source, [Level.c](https://github.com/NOAA-EMC/NCEPLIBS-wgrib2/blob/develop/wgrib2/Level.c), -134 were converted into a Python dictionary and stored in grib2io as table -135 'wgrib2_level_string'. +133 Parameters +134 ---------- +135 **`discipline : int`** GRIB2 discipline code value. 136 -137 Parameters -138 ---------- -139 -140 **`pdtn`**: GRIB2 Product Definition Template Number -141 -142 **`pdt`**: sequence containing GRIB2 Product Definition Template (Section 4). -143 -144 Returns -145 ------- -146 -147 **`str`**: wgrib2-formatted level/layer string. -148 """ -149 if pdtn == 48: -150 idxs = slice(20,26) -151 else: -152 idxs = slice(9,15) -153 type1, sfac1, sval1, type2, sfac2, sval2 = map(int,pdt[idxs]) -154 lvlstr = '' -155 val1 = sval1/10**sfac1 -156 if type1 in [100,108]: val1 *= 0.01 -157 if type2 != 255: -158 # Layer -159 #assert type2 == type1, "Surface types are not equal: %g - %g" % (type1,type2) -160 val2 = sval2/10**sfac2 -161 if type2 in [100,108]: val2 *= 0.01 -162 lvlstr = get_value_from_table(type1,table='wgrib2_level_string')[1] -163 vals = (val1,val2) -164 else: -165 # Level -166 lvlstr = get_value_from_table(type1,table='wgrib2_level_string')[0] -167 vals = (val1) -168 if '%g' in lvlstr: lvlstr %= vals -169 return lvlstr +137 **`parmcat : int`** GRIB2 parameter category value. +138 +139 **`parmnum`**: `int` or `str` of Parameter Number value of a GRIB2 message. +140 +141 Returns +142 ------- +143 **`list`** of GRIB2 shortNames. +144 """ +145 shortnames = list() +146 if discipline is None: +147 discipline = GRIB2_DISCIPLINES +148 else: +149 discipline = [discipline] +150 if parmcat is None: +151 parmcat = list() +152 for d in discipline: +153 parmcat += list(get_table(f'4.1.{d}').keys()) +154 else: +155 parmcat = [parmcat] +156 if parmnum is None: +157 parmnum = list(range(256)) +158 else: +159 parmnum = [parmnum] +160 for d in discipline: +161 +162 for pc in parmcat: +163 for pn in parmnum: +164 shortnames.append(get_varinfo_from_table(d,pc,pn,isNDFD)[2]) +165 +166 shortnames = sorted(set(shortnames)) +167 try: +168 shortnames.remove('unknown') +169 shortnames.remove('Unknown') +170 except(ValueError): +171 pass +172 return shortnames +173 +174 +175#@cache# USE WHEN Python 3.9+ only +176@lru_cache(maxsize=None) +177def get_metadata_from_shortname(shortname): +178 """ +179 Provide GRIB2 variable metadata attributes given a GRIB2 shortName. +180 +181 Parameters +182 ---------- +183 **`shortname : str`** GRIB2 variable shortName. +184 +185 Returns +186 ------- +187 **`list`** of dictionary items where each dictionary items contains the variable +188 metadata key:value pairs. **NOTE:** Some variable shortNames will exist in multiple +189 parameter category/number tables according to the GRIB2 discipline. +190 """ +191 metadata = [] +192 for d in GRIB2_DISCIPLINES: +193 parmcat = list(get_table(f'4.1.{d}').keys()) +194 for pc in parmcat: +195 for pn in range(256): +196 varinfo = get_varinfo_from_table(d,pc,pn,False) +197 if shortname == varinfo[2]: +198 metadata.append(dict(discipline=d,parameterCategory=pc,parameterNumber=pn, +199 fullName=varinfo[0],units=varinfo[1])) +200 return metadata +201 +202 +203def get_wgrib2_level_string(pdtn,pdt): +204 """ +205 Return a string that describes the level or layer of the GRIB2 message. The +206 format and language of the string is an exact replica of how wgrib2 produces +207 the level/layer string in its inventory output. +208 +209 Contents of wgrib2 source, [Level.c](https://github.com/NOAA-EMC/NCEPLIBS-wgrib2/blob/develop/wgrib2/Level.c), +210 were converted into a Python dictionary and stored in grib2io as table +211 'wgrib2_level_string'. +212 +213 Parameters +214 ---------- +215 **`pdtn`**: GRIB2 Product Definition Template Number +216 +217 **`pdt`**: sequence containing GRIB2 Product Definition Template (Section 4). +218 +219 Returns +220 ------- +221 **`str`**: wgrib2-formatted level/layer string. +222 """ +223 if pdtn == 48: +224 idxs = slice(20,26) +225 else: +226 idxs = slice(9,15) +227 type1, sfac1, sval1, type2, sfac2, sval2 = map(int,pdt[idxs]) +228 lvlstr = '' +229 val1 = sval1/10**sfac1 +230 if type1 in [100,108]: val1 *= 0.01 +231 if type2 != 255: +232 # Layer +233 #assert type2 == type1, "Surface types are not equal: %g - %g" % (type1,type2) +234 val2 = sval2/10**sfac2 +235 if type2 in [100,108]: val2 *= 0.01 +236 lvlstr = get_value_from_table(type1,table='wgrib2_level_string')[1] +237 vals = (val1,val2) +238 else: +239 # Level +240 lvlstr = get_value_from_table(type1,table='wgrib2_level_string')[0] +241 vals = (val1) +242 if '%g' in lvlstr: lvlstr %= vals +243 return lvlstr

      +
      +
      + GRIB2_DISCIPLINES = +[0, 1, 2, 3, 4, 10, 20] + + +
      + + + + +
      @@ -265,42 +361,40 @@

      -
      15def get_table(table, expand=False):
      -16    """
      -17    Return GRIB2 code table as a dictionary.
      -18
      -19    Parameters
      -20    ----------
      +            
      18def get_table(table, expand=False):
      +19    """
      +20    Return GRIB2 code table as a dictionary.
       21
      -22    **`table`**: Code table number (e.g. '1.0'). NOTE: Code table '4.1' requires a 3rd value
      -23    representing the product discipline (e.g. '4.1.0').
      -24
      -25    **`expand`**: If `True`, expand output dictionary where keys are a range.
      +22    Parameters
      +23    ----------
      +24    **`table`**: Code table number (e.g. '1.0'). NOTE: Code table '4.1' requires a 3rd value
      +25    representing the product discipline (e.g. '4.1.0').
       26
      -27    Returns
      -28    -------
      -29
      -30    **`dict`**
      -31    """
      -32    if len(table) == 3 and table == '4.1':
      -33        raise Exception('GRIB2 Code Table 4.1 requires a 3rd value representing the discipline.')
      -34    if len(table) == 3 and table.startswith('4.2'):
      -35        raise Exception('Use function get_varinfo_from_table() for GRIB2 Code Table 4.2')
      -36    try:
      -37        tbl = globals()['table_'+table.replace('.','_')]
      -38        if expand:
      -39            _tbl = {}
      -40            for k,v in tbl.items():
      -41                if '-' in k:
      -42                    irng = [int(i) for i in k.split('-')]
      -43                    for i in range(irng[0],irng[1]+1):
      -44                        _tbl[str(i)] = v
      -45                else:
      -46                    _tbl[k] = v
      -47            tbl = _tbl
      -48        return tbl
      -49    except(KeyError):
      -50        return {}
      +27    **`expand`**: If `True`, expand output dictionary where keys are a range.
      +28
      +29    Returns
      +30    -------
      +31    **`dict`**
      +32    """
      +33    if len(table) == 3 and table == '4.1':
      +34        raise Exception('GRIB2 Code Table 4.1 requires a 3rd value representing the discipline.')
      +35    if len(table) == 3 and table.startswith('4.2'):
      +36        raise Exception('Use function get_varinfo_from_table() for GRIB2 Code Table 4.2')
      +37    try:
      +38        tbl = globals()['table_'+table.replace('.','_')]
      +39        if expand:
      +40            _tbl = {}
      +41            for k,v in tbl.items():
      +42                if '-' in k:
      +43                    irng = [int(i) for i in k.split('-')]
      +44                    for i in range(irng[0],irng[1]+1):
      +45                        _tbl[str(i)] = v
      +46                else:
      +47                    _tbl[k] = v
      +48            tbl = _tbl
      +49        return tbl
      +50    except(KeyError):
      +51        return {}
       
      @@ -331,21 +425,20 @@

      Returns

      -
      53def get_value_from_table(value, table, expand=False):
      -54    """
      -55    Return the definition given a GRIB2 code table.
      -56
      -57    Parameters
      -58    ----------
      -59
      +            
      54def get_value_from_table(value, table, expand=False):
      +55    """
      +56    Return the definition given a GRIB2 code table.
      +57
      +58    Parameters
      +59    ----------
       60    **`value`**: `int` or `str` code table value.
       61
       62    **`table`**: `str` code table number.
       63
       64    **`expand`**: If `True`, expand output dictionary where keys are a range.
      -65    Returns
      -66    -------
      -67
      +65
      +66    Returns
      +67    -------
       68    Table value or `None` if not found.
       69    """
       70    try:
      @@ -398,41 +491,39 @@ 

      Returns

      88 89 Parameters 90 ---------- - 91 - 92 **`discipline`**: `int` or `str` of Discipline code value of a GRIB2 message. - 93 - 94 **`parmcat`**: `int` or `str` of Parameter Category value of a GRIB2 message. - 95 - 96 **`parmnum`**: `int` or `str` of Parameter Number value of a GRIB2 message. - 97 - 98 **`isNDFD`**: If `True`, signals function to try to get variable information - 99 from the supplemental NDFD tables. -100 -101 Returns -102 ------- -103 -104 **`list`**: containing variable information. "Unknown" is given for item of -105 information if variable is not found. -106 - list[0] = full name -107 - list[1] = units -108 - list[2] = short name (abbreviated name) -109 """ -110 if isNDFD: -111 try: -112 tblname = f'table_4_2_{discipline}_{parmcat}_ndfd' -113 modname = f'.section4_discipline{discipline}' -114 exec('from '+modname+' import *') -115 return locals()[tblname][str(parmnum)] -116 except(ImportError,KeyError): -117 pass -118 #return ['Unknown','Unknown','Unknown'] -119 try: -120 tblname = f'table_4_2_{discipline}_{parmcat}' -121 modname = f'.section4_discipline{discipline}' -122 exec('from '+modname+' import *') -123 return locals()[tblname][str(parmnum)] -124 except(ImportError,KeyError): -125 return ['Unknown','Unknown','Unknown'] + 91 **`discipline`**: `int` or `str` of Discipline code value of a GRIB2 message. + 92 + 93 **`parmcat`**: `int` or `str` of Parameter Category value of a GRIB2 message. + 94 + 95 **`parmnum`**: `int` or `str` of Parameter Number value of a GRIB2 message. + 96 + 97 **`isNDFD`**: If `True`, signals function to try to get variable information + 98 from the supplemental NDFD tables. + 99 +100 Returns +101 ------- +102 **`list`**: containing variable information. "Unknown" is given for item of +103 information if variable is not found. +104 - list[0] = full name +105 - list[1] = units +106 - list[2] = short name (abbreviated name) +107 """ +108 if isNDFD: +109 try: +110 tblname = f'table_4_2_{discipline}_{parmcat}_ndfd' +111 modname = f'.section4_discipline{discipline}' +112 exec('from '+modname+' import *') +113 return locals()[tblname][str(parmnum)] +114 except(ImportError,KeyError): +115 pass +116 #return ['Unknown','Unknown','Unknown'] +117 try: +118 tblname = f'table_4_2_{discipline}_{parmcat}' +119 modname = f'.section4_discipline{discipline}' +120 exec('from '+modname+' import *') +121 return locals()[tblname][str(parmnum)] +122 except(ImportError,KeyError): +123 return ['Unknown','Unknown','Unknown']
      @@ -464,6 +555,142 @@

      Returns

      +
      +
      + +
      +
      @lru_cache(maxsize=None)
      + + def + get_shortnames(discipline=None, parmcat=None, parmnum=None, isNDFD=False): + + + +
      + +
      127@lru_cache(maxsize=None)
      +128def get_shortnames(discipline=None, parmcat=None, parmnum=None, isNDFD=False):
      +129    """
      +130    Returns a list of variable shortNames given GRIB2 discipline, parameter
      +131    category, and parameter number.  If all 3 args are None, then shortNames
      +132    from all disciplines, parameter categories, and numbers will be returned.
      +133
      +134    Parameters
      +135    ----------
      +136    **`discipline : int`** GRIB2 discipline code value.
      +137
      +138    **`parmcat : int`** GRIB2 parameter category value.
      +139
      +140    **`parmnum`**: `int` or `str` of Parameter Number value of a GRIB2 message.
      +141
      +142    Returns
      +143    -------
      +144    **`list`** of GRIB2 shortNames.
      +145    """
      +146    shortnames = list()
      +147    if discipline is None:
      +148        discipline = GRIB2_DISCIPLINES
      +149    else:
      +150        discipline = [discipline]
      +151    if parmcat is None:
      +152        parmcat = list()
      +153        for d in discipline:
      +154            parmcat += list(get_table(f'4.1.{d}').keys())
      +155    else:
      +156        parmcat = [parmcat]
      +157    if parmnum is None:
      +158        parmnum = list(range(256))
      +159    else:
      +160        parmnum = [parmnum]
      +161    for d in discipline:
      +162
      +163        for pc in parmcat:
      +164            for pn in parmnum:
      +165                shortnames.append(get_varinfo_from_table(d,pc,pn,isNDFD)[2])
      +166
      +167    shortnames = sorted(set(shortnames))
      +168    try:
      +169        shortnames.remove('unknown')
      +170        shortnames.remove('Unknown')
      +171    except(ValueError):
      +172        pass
      +173    return shortnames
      +
      + + +

      Returns a list of variable shortNames given GRIB2 discipline, parameter +category, and parameter number. If all 3 args are None, then shortNames +from all disciplines, parameter categories, and numbers will be returned.

      + +

      Parameters

      + +

      discipline : int GRIB2 discipline code value.

      + +

      parmcat : int GRIB2 parameter category value.

      + +

      parmnum: int or str of Parameter Number value of a GRIB2 message.

      + +

      Returns

      + +

      list of GRIB2 shortNames.

      +
      + + +
      +
      + +
      +
      @lru_cache(maxsize=None)
      + + def + get_metadata_from_shortname(shortname): + + + +
      + +
      177@lru_cache(maxsize=None)
      +178def get_metadata_from_shortname(shortname):
      +179    """
      +180    Provide GRIB2 variable metadata attributes given a GRIB2 shortName.
      +181
      +182    Parameters
      +183    ----------
      +184    **`shortname : str`** GRIB2 variable shortName.
      +185
      +186    Returns
      +187    -------
      +188    **`list`** of dictionary items where each dictionary items contains the variable
      +189    metadata key:value pairs. **NOTE:** Some variable shortNames will exist in multiple
      +190    parameter category/number tables according to the GRIB2 discipline.
      +191    """
      +192    metadata = []
      +193    for d in GRIB2_DISCIPLINES:
      +194        parmcat = list(get_table(f'4.1.{d}').keys())
      +195        for pc in parmcat:
      +196            for pn in range(256):
      +197                varinfo = get_varinfo_from_table(d,pc,pn,False)
      +198                if shortname == varinfo[2]:
      +199                    metadata.append(dict(discipline=d,parameterCategory=pc,parameterNumber=pn,
      +200                                         fullName=varinfo[0],units=varinfo[1]))
      +201    return metadata
      +
      + + +

      Provide GRIB2 variable metadata attributes given a GRIB2 shortName.

      + +

      Parameters

      + +

      shortname : str GRIB2 variable shortName.

      + +

      Returns

      + +

      list of dictionary items where each dictionary items contains the variable +metadata key:value pairs. NOTE: Some variable shortNames will exist in multiple +parameter category/number tables according to the GRIB2 discipline.

      +
      + +
      @@ -476,49 +703,47 @@

      Returns

    -
    128def get_wgrib2_level_string(pdtn,pdt):
    -129    """
    -130    Return a string that describes the level or layer of the GRIB2 message. The
    -131    format and language of the string is an exact replica of how wgrib2 produces
    -132    the level/layer string in its inventory output.
    -133
    -134    Contents of wgrib2 source, [Level.c](https://github.com/NOAA-EMC/NCEPLIBS-wgrib2/blob/develop/wgrib2/Level.c),
    -135    were converted into a Python dictionary and stored in grib2io as table
    -136    'wgrib2_level_string'.
    -137
    -138    Parameters
    -139    ----------
    -140
    -141    **`pdtn`**: GRIB2 Product Definition Template Number
    -142
    -143    **`pdt`**: sequence containing GRIB2 Product Definition Template (Section 4).
    -144
    -145    Returns
    -146    -------
    -147
    -148    **`str`**: wgrib2-formatted level/layer string.
    -149    """
    -150    if pdtn == 48:
    -151        idxs = slice(20,26)
    -152    else:
    -153        idxs = slice(9,15)
    -154    type1, sfac1, sval1, type2, sfac2, sval2 = map(int,pdt[idxs])
    -155    lvlstr = ''
    -156    val1 = sval1/10**sfac1
    -157    if type1 in [100,108]: val1 *= 0.01
    -158    if type2 != 255:
    -159        # Layer
    -160        #assert type2 == type1, "Surface types are not equal: %g - %g" % (type1,type2)
    -161        val2 = sval2/10**sfac2
    -162        if type2 in [100,108]: val2 *= 0.01
    -163        lvlstr = get_value_from_table(type1,table='wgrib2_level_string')[1]
    -164        vals = (val1,val2)
    -165    else:
    -166        # Level
    -167        lvlstr = get_value_from_table(type1,table='wgrib2_level_string')[0]
    -168        vals = (val1)
    -169    if '%g' in lvlstr: lvlstr %= vals
    -170    return lvlstr
    +            
    204def get_wgrib2_level_string(pdtn,pdt):
    +205    """
    +206    Return a string that describes the level or layer of the GRIB2 message. The
    +207    format and language of the string is an exact replica of how wgrib2 produces
    +208    the level/layer string in its inventory output.
    +209
    +210    Contents of wgrib2 source, [Level.c](https://github.com/NOAA-EMC/NCEPLIBS-wgrib2/blob/develop/wgrib2/Level.c),
    +211    were converted into a Python dictionary and stored in grib2io as table
    +212    'wgrib2_level_string'.
    +213
    +214    Parameters
    +215    ----------
    +216    **`pdtn`**: GRIB2 Product Definition Template Number
    +217
    +218    **`pdt`**: sequence containing GRIB2 Product Definition Template (Section 4).
    +219
    +220    Returns
    +221    -------
    +222    **`str`**: wgrib2-formatted level/layer string.
    +223    """
    +224    if pdtn == 48:
    +225        idxs = slice(20,26)
    +226    else:
    +227        idxs = slice(9,15)
    +228    type1, sfac1, sval1, type2, sfac2, sval2 = map(int,pdt[idxs])
    +229    lvlstr = ''
    +230    val1 = sval1/10**sfac1
    +231    if type1 in [100,108]: val1 *= 0.01
    +232    if type2 != 255:
    +233        # Layer
    +234        #assert type2 == type1, "Surface types are not equal: %g - %g" % (type1,type2)
    +235        val2 = sval2/10**sfac2
    +236        if type2 in [100,108]: val2 *= 0.01
    +237        lvlstr = get_value_from_table(type1,table='wgrib2_level_string')[1]
    +238        vals = (val1,val2)
    +239    else:
    +240        # Level
    +241        lvlstr = get_value_from_table(type1,table='wgrib2_level_string')[0]
    +242        vals = (val1)
    +243    if '%g' in lvlstr: lvlstr %= vals
    +244    return lvlstr
     
    diff --git a/docs/grib2io/tables/section3.html b/docs/grib2io/tables/section3.html index 00ad551..12debbd 100644 --- a/docs/grib2io/tables/section3.html +++ b/docs/grib2io/tables/section3.html @@ -43,7 +43,7 @@

    API Documentation

    table_3_11
  • - earth_params + table_earth_params
  • @@ -163,19 +163,19 @@

    95'255':'Missing', 96} 97 - 98earth_params = { + 98table_earth_params = { 99'0':{'shape':'spherical','radius':6367470.0}, 100'1':{'shape':'spherical','radius':None}, 101'2':{'shape':'oblateSpheriod','major_axis':6378160.0,'minor_axis':6356775.0,'flattening':1.0/297.0}, 102'3':{'shape':'oblateSpheriod','major_axis':None,'minor_axis':None,'flattening':None}, 103'4':{'shape':'oblateSpheriod','major_axis':6378137.0,'minor_axis':6356752.314,'flattening':1.0/298.257222101}, -104'5':{'shape':'oblateSpheriod','major_axis':6378137.0,'minor_axis':6356752.3142,'flattening':1.0/298.257223563}, +104'5':{'shape':'ellipsoid','major_axis':6378137.0,'minor_axis':6356752.3142,'flattening':1.0/298.257222101}, 105'6':{'shape':'spherical','radius':6371229.0}, 106'7':{'shape':'oblateSpheriod','major_axis':None,'minor_axis':None,'flattening':None}, 107'8':{'shape':'spherical','radius':6371200.0}, 108} 109for i in range(9,256): -110 earth_params[str(i)] = {'shape':'unknown','radius':None} +110 table_earth_params[str(i)] = {'shape':'unknown','radius':None}

    @@ -232,15 +232,15 @@

    -
    +
    - earth_params = - - {'0': {'shape': 'spherical', 'radius': 6367470.0}, '1': {'shape': 'spherical', 'radius': None}, '2': {'shape': 'oblateSpheriod', 'major_axis': 6378160.0, 'minor_axis': 6356775.0, 'flattening': 0.003367003367003367}, '3': {'shape': 'oblateSpheriod', 'major_axis': None, 'minor_axis': None, 'flattening': None}, '4': {'shape': 'oblateSpheriod', 'major_axis': 6378137.0, 'minor_axis': 6356752.314, 'flattening': 0.003352810681182319}, '5': {'shape': 'oblateSpheriod', 'major_axis': 6378137.0, 'minor_axis': 6356752.3142, 'flattening': 0.0033528106647474805}, '6': {'shape': 'spherical', 'radius': 6371229.0}, '7': {'shape': 'oblateSpheriod', 'major_axis': None, 'minor_axis': None, 'flattening': None}, '8': {'shape': 'spherical', 'radius': 6371200.0}, '9': {'shape': 'unknown', 'radius': None}, '10': {'shape': 'unknown', 'radius': None}, '11': {'shape': 'unknown', 'radius': None}, '12': {'shape': 'unknown', 'radius': None}, '13': {'shape': 'unknown', 'radius': None}, '14': {'shape': 'unknown', 'radius': None}, '15': {'shape': 'unknown', 'radius': None}, '16': {'shape': 'unknown', 'radius': None}, '17': {'shape': 'unknown', 'radius': None}, '18': {'shape': 'unknown', 'radius': None}, '19': {'shape': 'unknown', 'radius': None}, '20': {'shape': 'unknown', 'radius': None}, '21': {'shape': 'unknown', 'radius': None}, '22': {'shape': 'unknown', 'radius': None}, '23': {'shape': 'unknown', 'radius': None}, '24': {'shape': 'unknown', 'radius': None}, '25': {'shape': 'unknown', 'radius': None}, '26': {'shape': 'unknown', 'radius': None}, '27': {'shape': 'unknown', 'radius': None}, '28': {'shape': 'unknown', 'radius': None}, '29': {'shape': 'unknown', 'radius': None}, '30': {'shape': 'unknown', 'radius': None}, '31': {'shape': 'unknown', 'radius': None}, '32': {'shape': 'unknown', 'radius': None}, '33': {'shape': 'unknown', 'radius': None}, '34': {'shape': 'unknown', 'radius': None}, '35': {'shape': 'unknown', 'radius': None}, '36': {'shape': 'unknown', 'radius': None}, '37': {'shape': 'unknown', 'radius': None}, '38': {'shape': 'unknown', 'radius': None}, '39': {'shape': 'unknown', 'radius': None}, '40': {'shape': 'unknown', 'radius': None}, '41': {'shape': 'unknown', 'radius': None}, '42': {'shape': 'unknown', 'radius': None}, '43': {'shape': 'unknown', 'radius': None}, '44': {'shape': 'unknown', 'radius': None}, '45': {'shape': 'unknown', 'radius': None}, '46': {'shape': 'unknown', 'radius': None}, '47': {'shape': 'unknown', 'radius': None}, '48': {'shape': 'unknown', 'radius': None}, '49': {'shape': 'unknown', 'radius': None}, '50': {'shape': 'unknown', 'radius': None}, '51': {'shape': 'unknown', 'radius': None}, '52': {'shape': 'unknown', 'radius': None}, '53': {'shape': 'unknown', 'radius': None}, '54': {'shape': 'unknown', 'radius': None}, '55': {'shape': 'unknown', 'radius': None}, '56': {'shape': 'unknown', 'radius': None}, '57': {'shape': 'unknown', 'radius': None}, '58': {'shape': 'unknown', 'radius': None}, '59': {'shape': 'unknown', 'radius': None}, '60': {'shape': 'unknown', 'radius': None}, '61': {'shape': 'unknown', 'radius': None}, '62': {'shape': 'unknown', 'radius': None}, '63': {'shape': 'unknown', 'radius': None}, '64': {'shape': 'unknown', 'radius': None}, '65': {'shape': 'unknown', 'radius': None}, '66': {'shape': 'unknown', 'radius': None}, '67': {'shape': 'unknown', 'radius': None}, '68': {'shape': 'unknown', 'radius': None}, '69': {'shape': 'unknown', 'radius': None}, '70': {'shape': 'unknown', 'radius': None}, '71': {'shape': 'unknown', 'radius': None}, '72': {'shape': 'unknown', 'radius': None}, '73': {'shape': 'unknown', 'radius': None}, '74': {'shape': 'unknown', 'radius': None}, '75': {'shape': 'unknown', 'radius': None}, '76': {'shape': 'unknown', 'radius': None}, '77': {'shape': 'unknown', 'radius': None}, '78': {'shape': 'unknown', 'radius': None}, '79': {'shape': 'unknown', 'radius': None}, '80': {'shape': 'unknown', 'radius': None}, '81': {'shape': 'unknown', 'radius': None}, '82': {'shape': 'unknown', 'radius': None}, '83': {'shape': 'unknown', 'radius': None}, '84': {'shape': 'unknown', 'radius': None}, '85': {'shape': 'unknown', 'radius': None}, '86': {'shape': 'unknown', 'radius': None}, '87': {'shape': 'unknown', 'radius': None}, '88': {'shape': 'unknown', 'radius': None}, '89': {'shape': 'unknown', 'radius': None}, '90': {'shape': 'unknown', 'radius': None}, '91': {'shape': 'unknown', 'radius': None}, '92': {'shape': 'unknown', 'radius': None}, '93': {'shape': 'unknown', 'radius': None}, '94': {'shape': 'unknown', 'radius': None}, '95': {'shape': 'unknown', 'radius': None}, '96': {'shape': 'unknown', 'radius': None}, '97': {'shape': 'unknown', 'radius': None}, '98': {'shape': 'unknown', 'radius': None}, '99': {'shape': 'unknown', 'radius': None}, '100': {'shape': 'unknown', 'radius': None}, '101': {'shape': 'unknown', 'radius': None}, '102': {'shape': 'unknown', 'radius': None}, '103': {'shape': 'unknown', 'radius': None}, '104': {'shape': 'unknown', 'radius': None}, '105': {'shape': 'unknown', 'radius': None}, '106': {'shape': 'unknown', 'radius': None}, '107': {'shape': 'unknown', 'radius': None}, '108': {'shape': 'unknown', 'radius': None}, '109': {'shape': 'unknown', 'radius': None}, '110': {'shape': 'unknown', 'radius': None}, '111': {'shape': 'unknown', 'radius': None}, '112': {'shape': 'unknown', 'radius': None}, '113': {'shape': 'unknown', 'radius': None}, '114': {'shape': 'unknown', 'radius': None}, '115': {'shape': 'unknown', 'radius': None}, '116': {'shape': 'unknown', 'radius': None}, '117': {'shape': 'unknown', 'radius': None}, '118': {'shape': 'unknown', 'radius': None}, '119': {'shape': 'unknown', 'radius': None}, '120': {'shape': 'unknown', 'radius': None}, '121': {'shape': 'unknown', 'radius': None}, '122': {'shape': 'unknown', 'radius': None}, '123': {'shape': 'unknown', 'radius': None}, '124': {'shape': 'unknown', 'radius': None}, '125': {'shape': 'unknown', 'radius': None}, '126': {'shape': 'unknown', 'radius': None}, '127': {'shape': 'unknown', 'radius': None}, '128': {'shape': 'unknown', 'radius': None}, '129': {'shape': 'unknown', 'radius': None}, '130': {'shape': 'unknown', 'radius': None}, '131': {'shape': 'unknown', 'radius': None}, '132': {'shape': 'unknown', 'radius': None}, '133': {'shape': 'unknown', 'radius': None}, '134': {'shape': 'unknown', 'radius': None}, '135': {'shape': 'unknown', 'radius': None}, '136': {'shape': 'unknown', 'radius': None}, '137': {'shape': 'unknown', 'radius': None}, '138': {'shape': 'unknown', 'radius': None}, '139': {'shape': 'unknown', 'radius': None}, '140': {'shape': 'unknown', 'radius': None}, '141': {'shape': 'unknown', 'radius': None}, '142': {'shape': 'unknown', 'radius': None}, '143': {'shape': 'unknown', 'radius': None}, '144': {'shape': 'unknown', 'radius': None}, '145': {'shape': 'unknown', 'radius': None}, '146': {'shape': 'unknown', 'radius': None}, '147': {'shape': 'unknown', 'radius': None}, '148': {'shape': 'unknown', 'radius': None}, '149': {'shape': 'unknown', 'radius': None}, '150': {'shape': 'unknown', 'radius': None}, '151': {'shape': 'unknown', 'radius': None}, '152': {'shape': 'unknown', 'radius': None}, '153': {'shape': 'unknown', 'radius': None}, '154': {'shape': 'unknown', 'radius': None}, '155': {'shape': 'unknown', 'radius': None}, '156': {'shape': 'unknown', 'radius': None}, '157': {'shape': 'unknown', 'radius': None}, '158': {'shape': 'unknown', 'radius': None}, '159': {'shape': 'unknown', 'radius': None}, '160': {'shape': 'unknown', 'radius': None}, '161': {'shape': 'unknown', 'radius': None}, '162': {'shape': 'unknown', 'radius': None}, '163': {'shape': 'unknown', 'radius': None}, '164': {'shape': 'unknown', 'radius': None}, '165': {'shape': 'unknown', 'radius': None}, '166': {'shape': 'unknown', 'radius': None}, '167': {'shape': 'unknown', 'radius': None}, '168': {'shape': 'unknown', 'radius': None}, '169': {'shape': 'unknown', 'radius': None}, '170': {'shape': 'unknown', 'radius': None}, '171': {'shape': 'unknown', 'radius': None}, '172': {'shape': 'unknown', 'radius': None}, '173': {'shape': 'unknown', 'radius': None}, '174': {'shape': 'unknown', 'radius': None}, '175': {'shape': 'unknown', 'radius': None}, '176': {'shape': 'unknown', 'radius': None}, '177': {'shape': 'unknown', 'radius': None}, '178': {'shape': 'unknown', 'radius': None}, '179': {'shape': 'unknown', 'radius': None}, '180': {'shape': 'unknown', 'radius': None}, '181': {'shape': 'unknown', 'radius': None}, '182': {'shape': 'unknown', 'radius': None}, '183': {'shape': 'unknown', 'radius': None}, '184': {'shape': 'unknown', 'radius': None}, '185': {'shape': 'unknown', 'radius': None}, '186': {'shape': 'unknown', 'radius': None}, '187': {'shape': 'unknown', 'radius': None}, '188': {'shape': 'unknown', 'radius': None}, '189': {'shape': 'unknown', 'radius': None}, '190': {'shape': 'unknown', 'radius': None}, '191': {'shape': 'unknown', 'radius': None}, '192': {'shape': 'unknown', 'radius': None}, '193': {'shape': 'unknown', 'radius': None}, '194': {'shape': 'unknown', 'radius': None}, '195': {'shape': 'unknown', 'radius': None}, '196': {'shape': 'unknown', 'radius': None}, '197': {'shape': 'unknown', 'radius': None}, '198': {'shape': 'unknown', 'radius': None}, '199': {'shape': 'unknown', 'radius': None}, '200': {'shape': 'unknown', 'radius': None}, '201': {'shape': 'unknown', 'radius': None}, '202': {'shape': 'unknown', 'radius': None}, '203': {'shape': 'unknown', 'radius': None}, '204': {'shape': 'unknown', 'radius': None}, '205': {'shape': 'unknown', 'radius': None}, '206': {'shape': 'unknown', 'radius': None}, '207': {'shape': 'unknown', 'radius': None}, '208': {'shape': 'unknown', 'radius': None}, '209': {'shape': 'unknown', 'radius': None}, '210': {'shape': 'unknown', 'radius': None}, '211': {'shape': 'unknown', 'radius': None}, '212': {'shape': 'unknown', 'radius': None}, '213': {'shape': 'unknown', 'radius': None}, '214': {'shape': 'unknown', 'radius': None}, '215': {'shape': 'unknown', 'radius': None}, '216': {'shape': 'unknown', 'radius': None}, '217': {'shape': 'unknown', 'radius': None}, '218': {'shape': 'unknown', 'radius': None}, '219': {'shape': 'unknown', 'radius': None}, '220': {'shape': 'unknown', 'radius': None}, '221': {'shape': 'unknown', 'radius': None}, '222': {'shape': 'unknown', 'radius': None}, '223': {'shape': 'unknown', 'radius': None}, '224': {'shape': 'unknown', 'radius': None}, '225': {'shape': 'unknown', 'radius': None}, '226': {'shape': 'unknown', 'radius': None}, '227': {'shape': 'unknown', 'radius': None}, '228': {'shape': 'unknown', 'radius': None}, '229': {'shape': 'unknown', 'radius': None}, '230': {'shape': 'unknown', 'radius': None}, '231': {'shape': 'unknown', 'radius': None}, '232': {'shape': 'unknown', 'radius': None}, '233': {'shape': 'unknown', 'radius': None}, '234': {'shape': 'unknown', 'radius': None}, '235': {'shape': 'unknown', 'radius': None}, '236': {'shape': 'unknown', 'radius': None}, '237': {'shape': 'unknown', 'radius': None}, '238': {'shape': 'unknown', 'radius': None}, '239': {'shape': 'unknown', 'radius': None}, '240': {'shape': 'unknown', 'radius': None}, '241': {'shape': 'unknown', 'radius': None}, '242': {'shape': 'unknown', 'radius': None}, '243': {'shape': 'unknown', 'radius': None}, '244': {'shape': 'unknown', 'radius': None}, '245': {'shape': 'unknown', 'radius': None}, '246': {'shape': 'unknown', 'radius': None}, '247': {'shape': 'unknown', 'radius': None}, '248': {'shape': 'unknown', 'radius': None}, '249': {'shape': 'unknown', 'radius': None}, '250': {'shape': 'unknown', 'radius': None}, '251': {'shape': 'unknown', 'radius': None}, '252': {'shape': 'unknown', 'radius': None}, '253': {'shape': 'unknown', 'radius': None}, '254': {'shape': 'unknown', 'radius': None}, '255': {'shape': 'unknown', 'radius': None}} + table_earth_params = + + {'0': {'shape': 'spherical', 'radius': 6367470.0}, '1': {'shape': 'spherical', 'radius': None}, '2': {'shape': 'oblateSpheriod', 'major_axis': 6378160.0, 'minor_axis': 6356775.0, 'flattening': 0.003367003367003367}, '3': {'shape': 'oblateSpheriod', 'major_axis': None, 'minor_axis': None, 'flattening': None}, '4': {'shape': 'oblateSpheriod', 'major_axis': 6378137.0, 'minor_axis': 6356752.314, 'flattening': 0.003352810681182319}, '5': {'shape': 'ellipsoid', 'major_axis': 6378137.0, 'minor_axis': 6356752.3142, 'flattening': 0.003352810681182319}, '6': {'shape': 'spherical', 'radius': 6371229.0}, '7': {'shape': 'oblateSpheriod', 'major_axis': None, 'minor_axis': None, 'flattening': None}, '8': {'shape': 'spherical', 'radius': 6371200.0}, '9': {'shape': 'unknown', 'radius': None}, '10': {'shape': 'unknown', 'radius': None}, '11': {'shape': 'unknown', 'radius': None}, '12': {'shape': 'unknown', 'radius': None}, '13': {'shape': 'unknown', 'radius': None}, '14': {'shape': 'unknown', 'radius': None}, '15': {'shape': 'unknown', 'radius': None}, '16': {'shape': 'unknown', 'radius': None}, '17': {'shape': 'unknown', 'radius': None}, '18': {'shape': 'unknown', 'radius': None}, '19': {'shape': 'unknown', 'radius': None}, '20': {'shape': 'unknown', 'radius': None}, '21': {'shape': 'unknown', 'radius': None}, '22': {'shape': 'unknown', 'radius': None}, '23': {'shape': 'unknown', 'radius': None}, '24': {'shape': 'unknown', 'radius': None}, '25': {'shape': 'unknown', 'radius': None}, '26': {'shape': 'unknown', 'radius': None}, '27': {'shape': 'unknown', 'radius': None}, '28': {'shape': 'unknown', 'radius': None}, '29': {'shape': 'unknown', 'radius': None}, '30': {'shape': 'unknown', 'radius': None}, '31': {'shape': 'unknown', 'radius': None}, '32': {'shape': 'unknown', 'radius': None}, '33': {'shape': 'unknown', 'radius': None}, '34': {'shape': 'unknown', 'radius': None}, '35': {'shape': 'unknown', 'radius': None}, '36': {'shape': 'unknown', 'radius': None}, '37': {'shape': 'unknown', 'radius': None}, '38': {'shape': 'unknown', 'radius': None}, '39': {'shape': 'unknown', 'radius': None}, '40': {'shape': 'unknown', 'radius': None}, '41': {'shape': 'unknown', 'radius': None}, '42': {'shape': 'unknown', 'radius': None}, '43': {'shape': 'unknown', 'radius': None}, '44': {'shape': 'unknown', 'radius': None}, '45': {'shape': 'unknown', 'radius': None}, '46': {'shape': 'unknown', 'radius': None}, '47': {'shape': 'unknown', 'radius': None}, '48': {'shape': 'unknown', 'radius': None}, '49': {'shape': 'unknown', 'radius': None}, '50': {'shape': 'unknown', 'radius': None}, '51': {'shape': 'unknown', 'radius': None}, '52': {'shape': 'unknown', 'radius': None}, '53': {'shape': 'unknown', 'radius': None}, '54': {'shape': 'unknown', 'radius': None}, '55': {'shape': 'unknown', 'radius': None}, '56': {'shape': 'unknown', 'radius': None}, '57': {'shape': 'unknown', 'radius': None}, '58': {'shape': 'unknown', 'radius': None}, '59': {'shape': 'unknown', 'radius': None}, '60': {'shape': 'unknown', 'radius': None}, '61': {'shape': 'unknown', 'radius': None}, '62': {'shape': 'unknown', 'radius': None}, '63': {'shape': 'unknown', 'radius': None}, '64': {'shape': 'unknown', 'radius': None}, '65': {'shape': 'unknown', 'radius': None}, '66': {'shape': 'unknown', 'radius': None}, '67': {'shape': 'unknown', 'radius': None}, '68': {'shape': 'unknown', 'radius': None}, '69': {'shape': 'unknown', 'radius': None}, '70': {'shape': 'unknown', 'radius': None}, '71': {'shape': 'unknown', 'radius': None}, '72': {'shape': 'unknown', 'radius': None}, '73': {'shape': 'unknown', 'radius': None}, '74': {'shape': 'unknown', 'radius': None}, '75': {'shape': 'unknown', 'radius': None}, '76': {'shape': 'unknown', 'radius': None}, '77': {'shape': 'unknown', 'radius': None}, '78': {'shape': 'unknown', 'radius': None}, '79': {'shape': 'unknown', 'radius': None}, '80': {'shape': 'unknown', 'radius': None}, '81': {'shape': 'unknown', 'radius': None}, '82': {'shape': 'unknown', 'radius': None}, '83': {'shape': 'unknown', 'radius': None}, '84': {'shape': 'unknown', 'radius': None}, '85': {'shape': 'unknown', 'radius': None}, '86': {'shape': 'unknown', 'radius': None}, '87': {'shape': 'unknown', 'radius': None}, '88': {'shape': 'unknown', 'radius': None}, '89': {'shape': 'unknown', 'radius': None}, '90': {'shape': 'unknown', 'radius': None}, '91': {'shape': 'unknown', 'radius': None}, '92': {'shape': 'unknown', 'radius': None}, '93': {'shape': 'unknown', 'radius': None}, '94': {'shape': 'unknown', 'radius': None}, '95': {'shape': 'unknown', 'radius': None}, '96': {'shape': 'unknown', 'radius': None}, '97': {'shape': 'unknown', 'radius': None}, '98': {'shape': 'unknown', 'radius': None}, '99': {'shape': 'unknown', 'radius': None}, '100': {'shape': 'unknown', 'radius': None}, '101': {'shape': 'unknown', 'radius': None}, '102': {'shape': 'unknown', 'radius': None}, '103': {'shape': 'unknown', 'radius': None}, '104': {'shape': 'unknown', 'radius': None}, '105': {'shape': 'unknown', 'radius': None}, '106': {'shape': 'unknown', 'radius': None}, '107': {'shape': 'unknown', 'radius': None}, '108': {'shape': 'unknown', 'radius': None}, '109': {'shape': 'unknown', 'radius': None}, '110': {'shape': 'unknown', 'radius': None}, '111': {'shape': 'unknown', 'radius': None}, '112': {'shape': 'unknown', 'radius': None}, '113': {'shape': 'unknown', 'radius': None}, '114': {'shape': 'unknown', 'radius': None}, '115': {'shape': 'unknown', 'radius': None}, '116': {'shape': 'unknown', 'radius': None}, '117': {'shape': 'unknown', 'radius': None}, '118': {'shape': 'unknown', 'radius': None}, '119': {'shape': 'unknown', 'radius': None}, '120': {'shape': 'unknown', 'radius': None}, '121': {'shape': 'unknown', 'radius': None}, '122': {'shape': 'unknown', 'radius': None}, '123': {'shape': 'unknown', 'radius': None}, '124': {'shape': 'unknown', 'radius': None}, '125': {'shape': 'unknown', 'radius': None}, '126': {'shape': 'unknown', 'radius': None}, '127': {'shape': 'unknown', 'radius': None}, '128': {'shape': 'unknown', 'radius': None}, '129': {'shape': 'unknown', 'radius': None}, '130': {'shape': 'unknown', 'radius': None}, '131': {'shape': 'unknown', 'radius': None}, '132': {'shape': 'unknown', 'radius': None}, '133': {'shape': 'unknown', 'radius': None}, '134': {'shape': 'unknown', 'radius': None}, '135': {'shape': 'unknown', 'radius': None}, '136': {'shape': 'unknown', 'radius': None}, '137': {'shape': 'unknown', 'radius': None}, '138': {'shape': 'unknown', 'radius': None}, '139': {'shape': 'unknown', 'radius': None}, '140': {'shape': 'unknown', 'radius': None}, '141': {'shape': 'unknown', 'radius': None}, '142': {'shape': 'unknown', 'radius': None}, '143': {'shape': 'unknown', 'radius': None}, '144': {'shape': 'unknown', 'radius': None}, '145': {'shape': 'unknown', 'radius': None}, '146': {'shape': 'unknown', 'radius': None}, '147': {'shape': 'unknown', 'radius': None}, '148': {'shape': 'unknown', 'radius': None}, '149': {'shape': 'unknown', 'radius': None}, '150': {'shape': 'unknown', 'radius': None}, '151': {'shape': 'unknown', 'radius': None}, '152': {'shape': 'unknown', 'radius': None}, '153': {'shape': 'unknown', 'radius': None}, '154': {'shape': 'unknown', 'radius': None}, '155': {'shape': 'unknown', 'radius': None}, '156': {'shape': 'unknown', 'radius': None}, '157': {'shape': 'unknown', 'radius': None}, '158': {'shape': 'unknown', 'radius': None}, '159': {'shape': 'unknown', 'radius': None}, '160': {'shape': 'unknown', 'radius': None}, '161': {'shape': 'unknown', 'radius': None}, '162': {'shape': 'unknown', 'radius': None}, '163': {'shape': 'unknown', 'radius': None}, '164': {'shape': 'unknown', 'radius': None}, '165': {'shape': 'unknown', 'radius': None}, '166': {'shape': 'unknown', 'radius': None}, '167': {'shape': 'unknown', 'radius': None}, '168': {'shape': 'unknown', 'radius': None}, '169': {'shape': 'unknown', 'radius': None}, '170': {'shape': 'unknown', 'radius': None}, '171': {'shape': 'unknown', 'radius': None}, '172': {'shape': 'unknown', 'radius': None}, '173': {'shape': 'unknown', 'radius': None}, '174': {'shape': 'unknown', 'radius': None}, '175': {'shape': 'unknown', 'radius': None}, '176': {'shape': 'unknown', 'radius': None}, '177': {'shape': 'unknown', 'radius': None}, '178': {'shape': 'unknown', 'radius': None}, '179': {'shape': 'unknown', 'radius': None}, '180': {'shape': 'unknown', 'radius': None}, '181': {'shape': 'unknown', 'radius': None}, '182': {'shape': 'unknown', 'radius': None}, '183': {'shape': 'unknown', 'radius': None}, '184': {'shape': 'unknown', 'radius': None}, '185': {'shape': 'unknown', 'radius': None}, '186': {'shape': 'unknown', 'radius': None}, '187': {'shape': 'unknown', 'radius': None}, '188': {'shape': 'unknown', 'radius': None}, '189': {'shape': 'unknown', 'radius': None}, '190': {'shape': 'unknown', 'radius': None}, '191': {'shape': 'unknown', 'radius': None}, '192': {'shape': 'unknown', 'radius': None}, '193': {'shape': 'unknown', 'radius': None}, '194': {'shape': 'unknown', 'radius': None}, '195': {'shape': 'unknown', 'radius': None}, '196': {'shape': 'unknown', 'radius': None}, '197': {'shape': 'unknown', 'radius': None}, '198': {'shape': 'unknown', 'radius': None}, '199': {'shape': 'unknown', 'radius': None}, '200': {'shape': 'unknown', 'radius': None}, '201': {'shape': 'unknown', 'radius': None}, '202': {'shape': 'unknown', 'radius': None}, '203': {'shape': 'unknown', 'radius': None}, '204': {'shape': 'unknown', 'radius': None}, '205': {'shape': 'unknown', 'radius': None}, '206': {'shape': 'unknown', 'radius': None}, '207': {'shape': 'unknown', 'radius': None}, '208': {'shape': 'unknown', 'radius': None}, '209': {'shape': 'unknown', 'radius': None}, '210': {'shape': 'unknown', 'radius': None}, '211': {'shape': 'unknown', 'radius': None}, '212': {'shape': 'unknown', 'radius': None}, '213': {'shape': 'unknown', 'radius': None}, '214': {'shape': 'unknown', 'radius': None}, '215': {'shape': 'unknown', 'radius': None}, '216': {'shape': 'unknown', 'radius': None}, '217': {'shape': 'unknown', 'radius': None}, '218': {'shape': 'unknown', 'radius': None}, '219': {'shape': 'unknown', 'radius': None}, '220': {'shape': 'unknown', 'radius': None}, '221': {'shape': 'unknown', 'radius': None}, '222': {'shape': 'unknown', 'radius': None}, '223': {'shape': 'unknown', 'radius': None}, '224': {'shape': 'unknown', 'radius': None}, '225': {'shape': 'unknown', 'radius': None}, '226': {'shape': 'unknown', 'radius': None}, '227': {'shape': 'unknown', 'radius': None}, '228': {'shape': 'unknown', 'radius': None}, '229': {'shape': 'unknown', 'radius': None}, '230': {'shape': 'unknown', 'radius': None}, '231': {'shape': 'unknown', 'radius': None}, '232': {'shape': 'unknown', 'radius': None}, '233': {'shape': 'unknown', 'radius': None}, '234': {'shape': 'unknown', 'radius': None}, '235': {'shape': 'unknown', 'radius': None}, '236': {'shape': 'unknown', 'radius': None}, '237': {'shape': 'unknown', 'radius': None}, '238': {'shape': 'unknown', 'radius': None}, '239': {'shape': 'unknown', 'radius': None}, '240': {'shape': 'unknown', 'radius': None}, '241': {'shape': 'unknown', 'radius': None}, '242': {'shape': 'unknown', 'radius': None}, '243': {'shape': 'unknown', 'radius': None}, '244': {'shape': 'unknown', 'radius': None}, '245': {'shape': 'unknown', 'radius': None}, '246': {'shape': 'unknown', 'radius': None}, '247': {'shape': 'unknown', 'radius': None}, '248': {'shape': 'unknown', 'radius': None}, '249': {'shape': 'unknown', 'radius': None}, '250': {'shape': 'unknown', 'radius': None}, '251': {'shape': 'unknown', 'radius': None}, '252': {'shape': 'unknown', 'radius': None}, '253': {'shape': 'unknown', 'radius': None}, '254': {'shape': 'unknown', 'radius': None}, '255': {'shape': 'unknown', 'radius': None}}
    - + diff --git a/docs/grib2io/tables/section4.html b/docs/grib2io/tables/section4.html index c192c3b..6184d67 100644 --- a/docs/grib2io/tables/section4.html +++ b/docs/grib2io/tables/section4.html @@ -156,9 +156,27 @@

    API Documentation

  • table_4_233
  • +
  • + table_4_234 +
  • +
  • + table_4_235 +
  • +
  • + table_4_236 +
  • +
  • + table_4_238 +
  • +
  • + table_4_239 +
  • table_4_243
  • +
  • + table_4_244 +
  • table_4_246
  • @@ -174,6 +192,9 @@

    API Documentation

  • table_4_250
  • +
  • + table_4_251 +
  • table_scale_time_hours
  • @@ -393,1164 +414,1300 @@

    190'103':'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for waves selected by period range (see Template 4.103)', 191'104':'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for waves selected by period range (see Template 4.104)', 192'105':'Anomalies, significance and other derived products from an analysis or forecast in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (see Template 4.105)', - 193'99-253':'Reserved', - 194'254':'CCITT IA5 character string (see Template 4.254)', - 195'255-999':'Reserved', - 196'1000':'Cross-section of analysis and forecast at a point in time. (see Template 4.1000)', - 197'1001':'Cross-section of averaged or otherwise statistically processed analysis or forecast over a range of time. (see Template 4.1001)', - 198'1002':'Cross-section of analysis and forecast, averaged or otherwise statistically-processed over latitude or longitude. (see Template 4.1002)', - 199'1003-1099':'Reserved', - 200'1100':'Hovmoller-type grid with no averaging or other statistical processing (see Template 4.1100)', - 201'1101':'Hovmoller-type grid with averaging or other statistical processing (see Template 4.1101)', - 202'1102-32767':'Reserved', - 203'32768-65534':'Reserved for Local Use', - 204'65535':'Missing', - 205} - 206 - 207table_4_3 = { - 208'0':'Analysis', - 209'1':'Initialization', - 210'2':'Forecast', - 211'3':'Bias Corrected Forecast', - 212'4':'Ensemble Forecast', - 213'5':'Probability Forecast', - 214'6':'Forecast Error', - 215'7':'Analysis Error', - 216'8':'Observation', - 217'9':'Climatological', - 218'10':'Probability-Weighted Forecast', - 219'11':'Bias-Corrected Ensemble Forecast', - 220'12':'Post-processed Analysis (See Note)', - 221'13':'Post-processed Forecast (See Note)', - 222'14':'Nowcast', - 223'15':'Hindcast', - 224'16':'Physical Retrieval', - 225'17':'Regression Analysis', - 226'18':'Difference Between Two Forecasts', - 227'19-191':'Reserved', - 228'192-254':'Reserved for Local Use', - 229'192':'Forecast Confidence Indicator', - 230'193':'Probability-matched Mean', - 231'194':'Neighborhood Probability', - 232'195':'Bias-Corrected and Downscaled Ensemble Forecast', - 233'196':'Perturbed Analysis for Ensemble Initialization', - 234'197':'Ensemble Agreement Scale Probability', - 235'198':'Post-Processed Deterministic-Expert-Weighted Forecast', - 236'199':'Ensemble Forecast Based on Counting', - 237'200':'Local Probability-matched Mean', - 238'255':'Missing', - 239} - 240 - 241table_4_4 = { - 242'0':'Minute', - 243'1':'Hour', - 244'2':'Day', - 245'3':'Month', - 246'4':'Year', - 247'5':'Decade (10 Years)', - 248'6':'Normal (30 Years)', - 249'7':'Century (100 Years)', - 250'8':'Reserved', - 251'9':'Reserved', - 252'10':'3 Hours', - 253'11':'6 Hours', - 254'12':'12 Hours', - 255'13':'Second', - 256'14-191':'Reserved', - 257'192-254':'Reserved for Local Use', - 258'255':'Missing', - 259} - 260 - 261table_4_5 = { - 262'0':['Reserved','unknown'], - 263'1':['Ground or Water Surface','unknown'], - 264'2':['Cloud Base Level','unknown'], - 265'3':['Level of Cloud Tops','unknown'], - 266'4':['Level of 0o C Isotherm','unknown'], - 267'5':['Level of Adiabatic Condensation Lifted from the Surface','unknown'], - 268'6':['Maximum Wind Level','unknown'], - 269'7':['Tropopause','unknown'], - 270'8':['Nominal Top of the Atmosphere','unknown'], - 271'9':['Sea Bottom','unknown'], - 272'10':['Entire Atmosphere','unknown'], - 273'11':['Cumulonimbus Base (CB)','m'], - 274'12':['Cumulonimbus Top (CT)','m'], - 275'13':['Lowest level where vertically integrated cloud cover exceeds the specified percentage (cloud base for a given percentage cloud cover)','%'], - 276'14':['Level of free convection (LFC)','unknown'], - 277'15':['Convection condensation level (CCL)','unknown'], - 278'16':['Level of neutral buoyancy or equilibrium (LNB)','unknown'], - 279'17-19':['Reserved','unknown'], - 280'20':['Isothermal Level','K'], - 281'21':['Lowest level where mass density exceeds the specified value (base for a given threshold of mass density)','kg m-3'], - 282'22':['Highest level where mass density exceeds the specified value (top for a given threshold of mass density)','kg m-3'], - 283'23':['Lowest level where air concentration exceeds the specified value (base for a given threshold of air concentration','Bq m-3'], - 284'24':['Highest level where air concentration exceeds the specified value (top for a given threshold of air concentration)','Bq m-3'], - 285'25':['Highest level where radar reflectivity exceeds the specified value (echo top for a given threshold of reflectivity)','dBZ'], - 286'26':['Convective cloud layer base','m'], - 287'27':['Convective cloud layer top','m'], - 288'28-29':['Reserved','unknown'], - 289'30':['Specified radius from the centre of the Sun','m'], - 290'31':['Ionospheric D-region level','unknown'], - 291'32':['Ionospheric E-region level','unknown'], - 292'33':['Ionospheric F1-region level','unknown'], - 293'34':['Ionospheric F1-region level','unknown'], - 294'35':['Ionospheric F2-region level','unknown'], - 295'36-99':['Reserved','unknown'], - 296'100':['Isobaric Surface','Pa'], - 297'101':['Mean Sea Level','unknown'], - 298'102':['Specific Altitude Above Mean Sea Level','m'], - 299'103':['Specified Height Level Above Ground','m'], - 300'104':['Sigma Level','unknown'], - 301'105':['Hybrid Level','unknown'], - 302'106':['Depth Below Land Surface','m'], - 303'107':['Isentropic (theta) Level','K'], - 304'108':['Level at Specified Pressure Difference from Ground to Level','Pa'], - 305'109':['Potential Vorticity Surface','K m2 kg-1 s-1'], - 306'110':['Reserved','unknown'], - 307'111':['Eta Level','unknown'], - 308'112':['Reserved','unknown'], - 309'113':['Logarithmic Hybrid Level','unknown'], - 310'114':['Snow Level','Numeric'], - 311'115':['Sigma height level','unknown'], - 312'116':['Reserved','unknown'], - 313'117':['Mixed Layer Depth','m'], - 314'118':['Hybrid Height Level','unknown'], - 315'119':['Hybrid Pressure Level','unknown'], - 316'120-149':['Reserved','unknown'], - 317'150':['Generalized Vertical Height Coordinate','unknown'], - 318'151':['Soil level','Numeric'], - 319'152':['Sea-ice level,(see Note 8)','Numeric'], - 320'153-159':['Reserved','unknown'], - 321'160':['Depth Below Sea Level','m'], - 322'161':['Depth Below Water Surface','m'], - 323'162':['Lake or River Bottom','unknown'], - 324'163':['Bottom Of Sediment Layer','unknown'], - 325'164':['Bottom Of Thermally Active Sediment Layer','unknown'], - 326'165':['Bottom Of Sediment Layer Penetrated By Thermal Wave','unknown'], - 327'166':['Mixing Layer','unknown'], - 328'167':['Bottom of Root Zone','unknown'], - 329'168':['Ocean Model Level','Numeric'], - 330'169':['Ocean level defined by water density (sigma-theta) difference from near-surface to level','kg m-3'], - 331'170':['Ocean level defined by water potential temperature difference from near-surface to level','K'], - 332'171':['Ocean level defined by vertical eddy diffusivity difference from near-surface to level,(see Note 7)','m2 s-1'], - 333'172-173':['Reserved','unknown'], - 334'174':['Top Surface of Ice on Sea, Lake or River','unknown'], - 335'175':['Top Surface of Ice, under Snow, on Sea, Lake or River','unknown'], - 336'176':['Bottom Surface (underside) Ice on Sea, Lake or River','unknown'], - 337'177':['Deep Soil (of indefinite depth)','unknown'], - 338'178':['Reserved','unknown'], - 339'179':['Top Surface of Glacier Ice and Inland Ice','unknown'], - 340'180':['Deep Inland or Glacier Ice (of indefinite depth)','unknown'], - 341'181':['Grid Tile Land Fraction as a Model Surface','unknown'], - 342'182':['Grid Tile Water Fraction as a Model Surface','unknown'], - 343'183':['Grid Tile Ice Fraction on Sea, Lake or River as a Model Surface','unknown'], - 344'184':['Grid Tile Glacier Ice and Inland Ice Fraction as a Model Surface','unknown'], - 345'185-191':['Reserved','unknown'], - 346'192-254':['Reserved for Local Use','unknown'], - 347'200':['Entire atmosphere (considered as a single layer)','unknown'], - 348'201':['Entire ocean (considered as a single layer)','unknown'], - 349'204':['Highest tropospheric freezing level','unknown'], - 350'206':['Grid scale cloud bottom level','unknown'], - 351'207':['Grid scale cloud top level','unknown'], - 352'209':['Boundary layer cloud bottom level','unknown'], - 353'210':['Boundary layer cloud top level','unknown'], - 354'211':['Boundary layer cloud layer','unknown'], - 355'212':['Low cloud bottom level','unknown'], - 356'213':['Low cloud top level','unknown'], - 357'214':['Low cloud layer','unknown'], - 358'215':['Cloud ceiling','unknown'], - 359'216':['Effective Layer Top Level','m'], - 360'217':['Effective Layer Bottom Level','m'], - 361'218':['Effective Layer','m'], - 362'220':['Planetary Boundary Layer','unknown'], - 363'221':['Layer Between Two Hybrid Levels','unknown'], - 364'222':['Middle cloud bottom level','unknown'], - 365'223':['Middle cloud top level','unknown'], - 366'224':['Middle cloud layer','unknown'], - 367'232':['High cloud bottom level','unknown'], - 368'233':['High cloud top level','unknown'], - 369'234':['High cloud layer','unknown'], - 370'235':['Ocean Isotherm Level (1/10 ° C)','unknown'], - 371'236':['Layer between two depths below ocean surface','unknown'], - 372'237':['Bottom of Ocean Mixed Layer (m)','unknown'], - 373'238':['Bottom of Ocean Isothermal Layer (m)','unknown'], - 374'239':['Layer Ocean Surface and 26C Ocean Isothermal Level','unknown'], - 375'240':['Ocean Mixed Layer','unknown'], - 376'241':['Ordered Sequence of Data','unknown'], - 377'242':['Convective cloud bottom level','unknown'], - 378'243':['Convective cloud top level','unknown'], - 379'244':['Convective cloud layer','unknown'], - 380'245':['Lowest level of the wet bulb zero','unknown'], - 381'246':['Maximum equivalent potential temperature level','unknown'], - 382'247':['Equilibrium level','unknown'], - 383'248':['Shallow convective cloud bottom level','unknown'], - 384'249':['Shallow convective cloud top level','unknown'], - 385'251':['Deep convective cloud bottom level','unknown'], - 386'252':['Deep convective cloud top level','unknown'], - 387'253':['Lowest bottom level of supercooled liquid water layer','unknown'], - 388'254':['Highest top level of supercooled liquid water layer','unknown'], - 389'255':['Missing','unknown'], - 390} - 391 - 392table_4_6 = { - 393'0':'Unperturbed High-Resolution Control Forecast', - 394'1':'Unperturbed Low-Resolution Control Forecast', - 395'2':'Negatively Perturbed Forecast', - 396'3':'Positively Perturbed Forecast', - 397'4':'Multi-Model Forecast', - 398'5-191':'Reserved', - 399'192-254':'Reserved for Local Use', - 400'192':'Perturbed Ensemble Member', - 401'255':'Missing', + 193'106':'Anomalies, significance and other derived products from an individual ensemble forecast, control and perturbed in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (see Template 4.106)', + 194'107':'Anomalies, significance and other derived products from derived forecasts based on all ensemble members in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (see Template 4.107)', + 195'108':'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for generic optical products (see Template 4.108)', + 196'109':'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for generic optical products (see Template 4.109)', + 197'110':'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 for generic optical products (see Template 4.110)', + 198'111':'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for generic optical products (see Template 4.111)', + 199'112':'Anomalies, significance and other derived products as probability forecasts in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (see Template 4.112)', + 200'113-253':'Reserved', + 201'254':'CCITT IA5 character string (see Template 4.254)', + 202'255-999':'Reserved', + 203'1000':'Cross-section of analysis and forecast at a point in time. (see Template 4.1000)', + 204'1001':'Cross-section of averaged or otherwise statistically processed analysis or forecast over a range of time. (see Template 4.1001)', + 205'1002':'Cross-section of analysis and forecast, averaged or otherwise statistically-processed over latitude or longitude. (see Template 4.1002)', + 206'1003-1099':'Reserved', + 207'1100':'Hovmoller-type grid with no averaging or other statistical processing (see Template 4.1100)', + 208'1101':'Hovmoller-type grid with averaging or other statistical processing (see Template 4.1101)', + 209'1102-32767':'Reserved', + 210'32768-65534':'Reserved for Local Use', + 211'65535':'Missing', + 212} + 213 + 214table_4_3 = { + 215'0':'Analysis', + 216'1':'Initialization', + 217'2':'Forecast', + 218'3':'Bias Corrected Forecast', + 219'4':'Ensemble Forecast', + 220'5':'Probability Forecast', + 221'6':'Forecast Error', + 222'7':'Analysis Error', + 223'8':'Observation', + 224'9':'Climatological', + 225'10':'Probability-Weighted Forecast', + 226'11':'Bias-Corrected Ensemble Forecast', + 227'12':'Post-processed Analysis (See Note)', + 228'13':'Post-processed Forecast (See Note)', + 229'14':'Nowcast', + 230'15':'Hindcast', + 231'16':'Physical Retrieval', + 232'17':'Regression Analysis', + 233'18':'Difference Between Two Forecasts', + 234'19':'First guess', + 235'20':'Analysis increment', + 236'21':'Initialization increment for analysis', + 237'22-191':'Reserved', + 238'192-254':'Reserved for Local Use', + 239'192':'Forecast Confidence Indicator', + 240'193':'Probability-matched Mean', + 241'194':'Neighborhood Probability', + 242'195':'Bias-Corrected and Downscaled Ensemble Forecast', + 243'196':'Perturbed Analysis for Ensemble Initialization', + 244'197':'Ensemble Agreement Scale Probability', + 245'198':'Post-Processed Deterministic-Expert-Weighted Forecast', + 246'199':'Ensemble Forecast Based on Counting', + 247'200':'Local Probability-matched Mean', + 248'255':'Missing', + 249} + 250 + 251table_4_4 = { + 252'0':'Minute', + 253'1':'Hour', + 254'2':'Day', + 255'3':'Month', + 256'4':'Year', + 257'5':'Decade (10 Years)', + 258'6':'Normal (30 Years)', + 259'7':'Century (100 Years)', + 260'8':'Reserved', + 261'9':'Reserved', + 262'10':'3 Hours', + 263'11':'6 Hours', + 264'12':'12 Hours', + 265'13':'Second', + 266'14-191':'Reserved', + 267'192-254':'Reserved for Local Use', + 268'255':'Missing', + 269} + 270 + 271table_4_5 = { + 272'0':['Reserved','unknown'], + 273'1':['Ground or Water Surface','unknown'], + 274'2':['Cloud Base Level','unknown'], + 275'3':['Level of Cloud Tops','unknown'], + 276'4':['Level of 0o C Isotherm','unknown'], + 277'5':['Level of Adiabatic Condensation Lifted from the Surface','unknown'], + 278'6':['Maximum Wind Level','unknown'], + 279'7':['Tropopause','unknown'], + 280'8':['Nominal Top of the Atmosphere','unknown'], + 281'9':['Sea Bottom','unknown'], + 282'10':['Entire Atmosphere','unknown'], + 283'11':['Cumulonimbus Base (CB)','m'], + 284'12':['Cumulonimbus Top (CT)','m'], + 285'13':['Lowest level where vertically integrated cloud cover exceeds the specified percentage (cloud base for a given percentage cloud cover)','%'], + 286'14':['Level of free convection (LFC)','unknown'], + 287'15':['Convection condensation level (CCL)','unknown'], + 288'16':['Level of neutral buoyancy or equilibrium (LNB)','unknown'], + 289'17':['Departure level of the most unstable parcel of air (MUDL)','unknown'], + 290'18':['Departure level of a mixed layer parcel of air with specified layer depth','Pa'], + 291'19':['Reserved','unknown'], + 292'20':['Isothermal Level','K'], + 293'21':['Lowest level where mass density exceeds the specified value (base for a given threshold of mass density)','kg m-3'], + 294'22':['Highest level where mass density exceeds the specified value (top for a given threshold of mass density)','kg m-3'], + 295'23':['Lowest level where air concentration exceeds the specified value (base for a given threshold of air concentration','Bq m-3'], + 296'24':['Highest level where air concentration exceeds the specified value (top for a given threshold of air concentration)','Bq m-3'], + 297'25':['Highest level where radar reflectivity exceeds the specified value (echo top for a given threshold of reflectivity)','dBZ'], + 298'26':['Convective cloud layer base','m'], + 299'27':['Convective cloud layer top','m'], + 300'28-29':['Reserved','unknown'], + 301'30':['Specified radius from the centre of the Sun','m'], + 302'31':['Solar photosphere','unknown'], + 303'32':['Ionospheric D-region level','unknown'], + 304'33':['Ionospheric E-region level','unknown'], + 305'34':['Ionospheric F1-region level','unknown'], + 306'35':['Ionospheric F2-region level','unknown'], + 307'36-99':['Reserved','unknown'], + 308'100':['Isobaric Surface','Pa'], + 309'101':['Mean Sea Level','unknown'], + 310'102':['Specific Altitude Above Mean Sea Level','m'], + 311'103':['Specified Height Level Above Ground','m'], + 312'104':['Sigma Level','unknown'], + 313'105':['Hybrid Level','unknown'], + 314'106':['Depth Below Land Surface','m'], + 315'107':['Isentropic (theta) Level','K'], + 316'108':['Level at Specified Pressure Difference from Ground to Level','Pa'], + 317'109':['Potential Vorticity Surface','K m2 kg-1 s-1'], + 318'110':['Reserved','unknown'], + 319'111':['Eta Level','unknown'], + 320'112':['Reserved','unknown'], + 321'113':['Logarithmic Hybrid Level','unknown'], + 322'114':['Snow Level','Numeric'], + 323'115':['Sigma height level','unknown'], + 324'116':['Reserved','unknown'], + 325'117':['Mixed Layer Depth','m'], + 326'118':['Hybrid Height Level','unknown'], + 327'119':['Hybrid Pressure Level','unknown'], + 328'120-149':['Reserved','unknown'], + 329'150':['Generalized Vertical Height Coordinate','unknown'], + 330'151':['Soil level','Numeric'], + 331'152':['Sea-ice level,(see Note 8)','Numeric'], + 332'153-159':['Reserved','unknown'], + 333'160':['Depth Below Sea Level','m'], + 334'161':['Depth Below Water Surface','m'], + 335'162':['Lake or River Bottom','unknown'], + 336'163':['Bottom Of Sediment Layer','unknown'], + 337'164':['Bottom Of Thermally Active Sediment Layer','unknown'], + 338'165':['Bottom Of Sediment Layer Penetrated By Thermal Wave','unknown'], + 339'166':['Mixing Layer','unknown'], + 340'167':['Bottom of Root Zone','unknown'], + 341'168':['Ocean Model Level','Numeric'], + 342'169':['Ocean level defined by water density (sigma-theta) difference from near-surface to level','kg m-3'], + 343'170':['Ocean level defined by water potential temperature difference from near-surface to level','K'], + 344'171':['Ocean level defined by vertical eddy diffusivity difference from near-surface to level,(see Note 7)','m2 s-1'], + 345'172-173':['Reserved','unknown'], + 346'174':['Top Surface of Ice on Sea, Lake or River','unknown'], + 347'175':['Top Surface of Ice, under Snow, on Sea, Lake or River','unknown'], + 348'176':['Bottom Surface (underside) Ice on Sea, Lake or River','unknown'], + 349'177':['Deep Soil (of indefinite depth)','unknown'], + 350'178':['Reserved','unknown'], + 351'179':['Top Surface of Glacier Ice and Inland Ice','unknown'], + 352'180':['Deep Inland or Glacier Ice (of indefinite depth)','unknown'], + 353'181':['Grid Tile Land Fraction as a Model Surface','unknown'], + 354'182':['Grid Tile Water Fraction as a Model Surface','unknown'], + 355'183':['Grid Tile Ice Fraction on Sea, Lake or River as a Model Surface','unknown'], + 356'184':['Grid Tile Glacier Ice and Inland Ice Fraction as a Model Surface','unknown'], + 357'185-191':['Reserved','unknown'], + 358'192-254':['Reserved for Local Use','unknown'], + 359'200':['Entire atmosphere (considered as a single layer)','unknown'], + 360'201':['Entire ocean (considered as a single layer)','unknown'], + 361'204':['Highest tropospheric freezing level','unknown'], + 362'206':['Grid scale cloud bottom level','unknown'], + 363'207':['Grid scale cloud top level','unknown'], + 364'209':['Boundary layer cloud bottom level','unknown'], + 365'210':['Boundary layer cloud top level','unknown'], + 366'211':['Boundary layer cloud layer','unknown'], + 367'212':['Low cloud bottom level','unknown'], + 368'213':['Low cloud top level','unknown'], + 369'214':['Low cloud layer','unknown'], + 370'215':['Cloud ceiling','unknown'], + 371'216':['Effective Layer Top Level','m'], + 372'217':['Effective Layer Bottom Level','m'], + 373'218':['Effective Layer','m'], + 374'220':['Planetary Boundary Layer','unknown'], + 375'221':['Layer Between Two Hybrid Levels','unknown'], + 376'222':['Middle cloud bottom level','unknown'], + 377'223':['Middle cloud top level','unknown'], + 378'224':['Middle cloud layer','unknown'], + 379'232':['High cloud bottom level','unknown'], + 380'233':['High cloud top level','unknown'], + 381'234':['High cloud layer','unknown'], + 382'235':['Ocean Isotherm Level (1/10 ° C)','unknown'], + 383'236':['Layer between two depths below ocean surface','unknown'], + 384'237':['Bottom of Ocean Mixed Layer (m)','unknown'], + 385'238':['Bottom of Ocean Isothermal Layer (m)','unknown'], + 386'239':['Layer Ocean Surface and 26C Ocean Isothermal Level','unknown'], + 387'240':['Ocean Mixed Layer','unknown'], + 388'241':['Ordered Sequence of Data','unknown'], + 389'242':['Convective cloud bottom level','unknown'], + 390'243':['Convective cloud top level','unknown'], + 391'244':['Convective cloud layer','unknown'], + 392'245':['Lowest level of the wet bulb zero','unknown'], + 393'246':['Maximum equivalent potential temperature level','unknown'], + 394'247':['Equilibrium level','unknown'], + 395'248':['Shallow convective cloud bottom level','unknown'], + 396'249':['Shallow convective cloud top level','unknown'], + 397'251':['Deep convective cloud bottom level','unknown'], + 398'252':['Deep convective cloud top level','unknown'], + 399'253':['Lowest bottom level of supercooled liquid water layer','unknown'], + 400'254':['Highest top level of supercooled liquid water layer','unknown'], + 401'255':['Missing','unknown'], 402} 403 - 404table_4_7 = { - 405'0':'Unweighted Mean of All Members', - 406'1':'Weighted Mean of All Members', - 407'2':'Standard Deviation with respect to Cluster Mean', - 408'3':'Standard Deviation with respect to Cluster Mean, Normalized', - 409'4':'Spread of All Members', - 410'5':'Large Anomaly Index of All Members', - 411'6':'Unweighted Mean of the Cluster Members', - 412'7':'Interquartile Range (Range between the 25th and 75th quantile)', - 413'8':'Minimum Of All Ensemble Members', - 414'9':'Maximum Of All Ensemble Members', - 415'10-191':'Reserved', - 416'192-254':'Reserved for Local Use', - 417'192':'Unweighted Mode of All Members', - 418'193':'Percentile value (10%) of All Members', - 419'194':'Percentile value (50%) of All Members', - 420'195':'Percentile value (90%) of All Members', - 421'196':'Statistically decided weights for each ensemble member', - 422'197':'Climate Percentile (percentile values from climate distribution)', - 423'198':'Deviation of Ensemble Mean from Daily Climatology', - 424'199':'Extreme Forecast Index', - 425'200':'Equally Weighted Mean', - 426'201':'Percentile value (5%) of All Members', - 427'202':'Percentile value (25%) of All Members', - 428'203':'Percentile value (75%) of All Members', - 429'204':'Percentile value (95%) of All Members', - 430'255':'Missing', - 431} - 432 - 433table_4_8 = { - 434'0':'Anomoly Correlation', - 435'1':'Root Mean Square', - 436'2-191':'Reserved', - 437'192-254':'Reserved for Local Use', - 438'255':'Missing', - 439} - 440 - 441table_4_9 = { - 442'0':'Probability of event below lower limit', - 443'1':'Probability of event above upper limit', - 444'2':'Probability of event between upper and lower limits (the range includes lower limit but no the upper limit)', - 445'3':'Probability of event above lower limit', - 446'4':'Probability of event below upper limit', - 447'5':'Probability of event equal to lower limit', - 448'6':'Probability of event in above normal category (see Notes 1 and 2)', - 449'9-191':'Reserved', - 450'192-254':'Reserved for Local Use', - 451'255':'Missing', - 452} - 453 - 454table_4_10 = { - 455'0':'Average', - 456'1':'Accumulation', - 457'2':'Maximum', - 458'3':'Minimum', - 459'4':'Difference (value at the end of the time range minus value at the beginning)', - 460'5':'Root Mean Square', - 461'6':'Standard Deviation', - 462'7':'Covariance (temporal variance)', - 463'8':'Difference ( value at the beginning of the time range minus value at the end)', - 464'9':'Ratio', - 465'13-191':'Reserved', - 466'192-254':'Reserved for Local Use', - 467'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. If 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. If 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.', - 468'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.', - 469'194':'Average of N uninitialized analyses, starting at reference time, at intervals of P2.', - 470'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.', - 471'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', - 472'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', - 473'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', - 474'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.', - 475'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.', - 476'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.', - 477'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.', - 478'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.', - 479'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', - 480'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', - 481'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', - 482'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', - 483'255':'Missing', - 484} - 485 - 486table_4_11 = { - 487'0':'Reserved', - 488'1':'Successive times processed have same forecast time, start time of forecast is incremented.', - 489'2':'Successive times processed have same start time of forecast, forecast time is incremented.', - 490'3':'Successive times processed have start time of forecast incremented and forecast time decremented so that valid time remains constant.', - 491'4':'Successive times processed have start time of forecast decremented and forecast time incremented so that valid time remains constant.', - 492'5':'Floating subinterval of time between forecast time and end of overall time interval.(see Note 1)', - 493'6-191':'Reserved', - 494'192-254':'Reserved for Local Use', - 495'255':'Missing', - 496} - 497 - 498table_4_15 = { - 499'0':'Data is calculated directly from the source grid with no interpolation', - 500'1':'Bilinear interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', - 501'2':'Bicubic interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', - 502'3':'Using the value from the source grid grid-point which is nearest to the nominal grid-point', - 503'4':'Budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', - 504'5':'Spectral interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', - 505'6':'Neighbor-budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', - 506'7-191':'Reserved', - 507'192-254':'Reserved for Local Use', - 508'255':'Missing', - 509} - 510 - 511table_4_91 = { - 512'0':'Smaller than first limit', - 513'1':'Greater than second limit', - 514'2':'Between first and second limit. The range includes the first limit but not the second limit.', - 515'3':'Greater than first limit', - 516'4':'Smaller than second limit', - 517'5':'Smaller or equal first limit', - 518'6':'Greater or equal second limit', - 519'7':'Between first and second limit. The range includes the first limit and the second limit.', - 520'8':'Greater or equal first limit', - 521'9':'Smaller or equal second limit', - 522'10':'Between first and second limit. The range includes the second limit but not the first limit.', - 523'11':'Equal to first limit', - 524'12-191':'Reserved', + 404table_4_6 = { + 405'0':'Unperturbed High-Resolution Control Forecast', + 406'1':'Unperturbed Low-Resolution Control Forecast', + 407'2':'Negatively Perturbed Forecast', + 408'3':'Positively Perturbed Forecast', + 409'4':'Multi-Model Forecast', + 410'5-191':'Reserved', + 411'192-254':'Reserved for Local Use', + 412'192':'Perturbed Ensemble Member', + 413'255':'Missing', + 414} + 415 + 416table_4_7 = { + 417'0':'Unweighted Mean of All Members', + 418'1':'Weighted Mean of All Members', + 419'2':'Standard Deviation with respect to Cluster Mean', + 420'3':'Standard Deviation with respect to Cluster Mean, Normalized', + 421'4':'Spread of All Members', + 422'5':'Large Anomaly Index of All Members', + 423'6':'Unweighted Mean of the Cluster Members', + 424'7':'Interquartile Range (Range between the 25th and 75th quantile)', + 425'8':'Minimum Of All Ensemble Members', + 426'9':'Maximum Of All Ensemble Members', + 427'10-191':'Reserved', + 428'192-254':'Reserved for Local Use', + 429'192':'Unweighted Mode of All Members', + 430'193':'Percentile value (10%) of All Members', + 431'194':'Percentile value (50%) of All Members', + 432'195':'Percentile value (90%) of All Members', + 433'196':'Statistically decided weights for each ensemble member', + 434'197':'Climate Percentile (percentile values from climate distribution)', + 435'198':'Deviation of Ensemble Mean from Daily Climatology', + 436'199':'Extreme Forecast Index', + 437'200':'Equally Weighted Mean', + 438'201':'Percentile value (5%) of All Members', + 439'202':'Percentile value (25%) of All Members', + 440'203':'Percentile value (75%) of All Members', + 441'204':'Percentile value (95%) of All Members', + 442'255':'Missing', + 443} + 444 + 445table_4_8 = { + 446'0':'Anomoly Correlation', + 447'1':'Root Mean Square', + 448'2-191':'Reserved', + 449'192-254':'Reserved for Local Use', + 450'255':'Missing', + 451} + 452 + 453table_4_9 = { + 454'0':'Probability of event below lower limit', + 455'1':'Probability of event above upper limit', + 456'2':'Probability of event between upper and lower limits (the range includes lower limit but no the upper limit)', + 457'3':'Probability of event above lower limit', + 458'4':'Probability of event below upper limit', + 459'5':'Probability of event equal to lower limit', + 460'6':'Probability of event in above normal category (see Notes 1 and 2)', + 461'9-191':'Reserved', + 462'192-254':'Reserved for Local Use', + 463'255':'Missing', + 464} + 465 + 466table_4_10 = { + 467'0':'Average', + 468'1':'Accumulation', + 469'2':'Maximum', + 470'3':'Minimum', + 471'4':'Difference (value at the end of the time range minus value at the beginning)', + 472'5':'Root Mean Square', + 473'6':'Standard Deviation', + 474'7':'Covariance (temporal variance)', + 475'8':'Difference ( value at the beginning of the time range minus value at the end)', + 476'9':'Ratio', + 477'10':'Standardized Anomaly', + 478'11':'Summation', + 479'12':'Return period', + 480'13-99':'Reserved', + 481'100':'Severity', + 482'101':'Mode', + 483'102-191':'Reserved', + 484'192-254':'Reserved for Local Use', + 485'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. If 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. If 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.', + 486'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.', + 487'194':'Average of N uninitialized analyses, starting at reference time, at intervals of P2.', + 488'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.', + 489'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', + 490'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', + 491'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', + 492'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.', + 493'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.', + 494'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.', + 495'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.', + 496'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.', + 497'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', + 498'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', + 499'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', + 500'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', + 501'255':'Missing', + 502} + 503 + 504table_4_11 = { + 505'0':'Reserved', + 506'1':'Successive times processed have same forecast time, start time of forecast is incremented.', + 507'2':'Successive times processed have same start time of forecast, forecast time is incremented.', + 508'3':'Successive times processed have start time of forecast incremented and forecast time decremented so that valid time remains constant.', + 509'4':'Successive times processed have start time of forecast decremented and forecast time incremented so that valid time remains constant.', + 510'5':'Floating subinterval of time between forecast time and end of overall time interval.(see Note 1)', + 511'6-191':'Reserved', + 512'192-254':'Reserved for Local Use', + 513'255':'Missing', + 514} + 515 + 516table_4_15 = { + 517'0':'Data is calculated directly from the source grid with no interpolation', + 518'1':'Bilinear interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', + 519'2':'Bicubic interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', + 520'3':'Using the value from the source grid grid-point which is nearest to the nominal grid-point', + 521'4':'Budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', + 522'5':'Spectral interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', + 523'6':'Neighbor-budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', + 524'7-191':'Reserved', 525'192-254':'Reserved for Local Use', 526'255':'Missing', 527} 528 - 529table_4_201 = { - 530'0':'Reserved', - 531'1':'Rain', - 532'2':'Thunderstorm', - 533'3':'Freezing Rain', - 534'4':'Mixed/Ice', - 535'5':'Snow', - 536'6':'Wet Snow', - 537'7':'Mixture of Rain and Snow', - 538'8':'Ice Pellets', - 539'9':'Graupel', - 540'10':'Hail', - 541'11':'Drizzle', - 542'12':'Freezing Drizzle', - 543'13-191':'Reserved', - 544'192-254':'Reserved for Local Use', - 545'255':'Missing', - 546} - 547 - 548table_4_202 = { - 549'0-191':'Reserved', - 550'192-254':'Reserved for Local Use', - 551'255':'Missing', - 552} - 553 - 554table_4_203 = { - 555'0':'Clear', - 556'1':'Cumulonimbus', - 557'2':'Stratus', - 558'3':'Stratocumulus', - 559'4':'Cumulus', - 560'5':'Altostratus', - 561'6':'Nimbostratus', - 562'7':'Altocumulus', - 563'8':'Cirrostratus', - 564'9':'Cirrorcumulus', - 565'10':'Cirrus', - 566'11':'Cumulonimbus - ground-based fog beneath the lowest layer', - 567'12':'Stratus - ground-based fog beneath the lowest layer', - 568'13':'Stratocumulus - ground-based fog beneath the lowest layer', - 569'14':'Cumulus - ground-based fog beneath the lowest layer', - 570'15':'Altostratus - ground-based fog beneath the lowest layer', - 571'16':'Nimbostratus - ground-based fog beneath the lowest layer', - 572'17':'Altocumulus - ground-based fog beneath the lowest layer', - 573'18':'Cirrostratus - ground-based fog beneath the lowest layer', - 574'19':'Cirrorcumulus - ground-based fog beneath the lowest layer', - 575'20':'Cirrus - ground-based fog beneath the lowest layer', - 576'21-190':'Reserved', - 577'191':'Unknown', - 578'192-254':'Reserved for Local Use', - 579'255':'Missing', - 580} - 581 - 582table_4_204 = { - 583'1':'Isolated (1-2%)', - 584'2':'Few (3-5%)', - 585'3':'Scattered (16-45%)', - 586'4':'Numerous (>45%)', - 587'5-191':'Reserved', - 588'192-254':'Reserved for Local Use', - 589'255':'Missing', - 590} - 591 - 592table_4_205 = { - 593'0':'Aerosol not present', - 594'1':'Aerosol present', - 595'2-191':'Reserved', + 529table_4_91 = { + 530'0':'Smaller than first limit', + 531'1':'Greater than second limit', + 532'2':'Between first and second limit. The range includes the first limit but not the second limit.', + 533'3':'Greater than first limit', + 534'4':'Smaller than second limit', + 535'5':'Smaller or equal first limit', + 536'6':'Greater or equal second limit', + 537'7':'Between first and second limit. The range includes the first limit and the second limit.', + 538'8':'Greater or equal first limit', + 539'9':'Smaller or equal second limit', + 540'10':'Between first and second limit. The range includes the second limit but not the first limit.', + 541'11':'Equal to first limit', + 542'12-191':'Reserved', + 543'192-254':'Reserved for Local Use', + 544'255':'Missing', + 545} + 546 + 547table_4_201 = { + 548'0':'Reserved', + 549'1':'Rain', + 550'2':'Thunderstorm', + 551'3':'Freezing Rain', + 552'4':'Mixed/Ice', + 553'5':'Snow', + 554'6':'Wet Snow', + 555'7':'Mixture of Rain and Snow', + 556'8':'Ice Pellets', + 557'9':'Graupel', + 558'10':'Hail', + 559'11':'Drizzle', + 560'12':'Freezing Drizzle', + 561'13-191':'Reserved', + 562'192-254':'Reserved for Local Use', + 563'255':'Missing', + 564} + 565 + 566table_4_202 = { + 567'0-191':'Reserved', + 568'192-254':'Reserved for Local Use', + 569'255':'Missing', + 570} + 571 + 572table_4_203 = { + 573'0':'Clear', + 574'1':'Cumulonimbus', + 575'2':'Stratus', + 576'3':'Stratocumulus', + 577'4':'Cumulus', + 578'5':'Altostratus', + 579'6':'Nimbostratus', + 580'7':'Altocumulus', + 581'8':'Cirrostratus', + 582'9':'Cirrorcumulus', + 583'10':'Cirrus', + 584'11':'Cumulonimbus - ground-based fog beneath the lowest layer', + 585'12':'Stratus - ground-based fog beneath the lowest layer', + 586'13':'Stratocumulus - ground-based fog beneath the lowest layer', + 587'14':'Cumulus - ground-based fog beneath the lowest layer', + 588'15':'Altostratus - ground-based fog beneath the lowest layer', + 589'16':'Nimbostratus - ground-based fog beneath the lowest layer', + 590'17':'Altocumulus - ground-based fog beneath the lowest layer', + 591'18':'Cirrostratus - ground-based fog beneath the lowest layer', + 592'19':'Cirrorcumulus - ground-based fog beneath the lowest layer', + 593'20':'Cirrus - ground-based fog beneath the lowest layer', + 594'21-190':'Reserved', + 595'191':'Unknown', 596'192-254':'Reserved for Local Use', 597'255':'Missing', 598} 599 - 600table_4_206 = { - 601'0':'Not Present', - 602'1':'Present', - 603'2-191':'Reserved', - 604'192-254':'Reserved for Local Use', - 605'255':'Missing', - 606} - 607 - 608table_4_207 = { - 609'1':'Light', - 610'2':'Moderate', - 611'3':'Severe', - 612'4':'Trace', - 613'5':'Heavy', - 614'6-191':'Reserved', - 615'192-254':'Reserved for Local Use', - 616'255':'Missing', - 617} - 618 - 619table_4_208 = { - 620'1':'Light', - 621'2':'Moderate', - 622'3':'Severe', - 623'4':'Extreme', - 624'5-191':'Reserved', - 625'192-254':'Reserved for Local Use', - 626'255':'Missing', - 627} - 628 - 629table_4_209 = { - 630'0':'Reserved', - 631'1':'Stable', - 632'2':'Mechanically-Driven Turbulence', - 633'3':'Force Convection', - 634'4':'Free Convection', - 635'5-191':'Reserved', - 636'192-254':'Reserved for Local Use', - 637'255':'Missing', - 638} - 639 - 640table_4_210 = { - 641'0':'Contrail Not Present', - 642'1':'Contrail Present', - 643'2-191':'Reserved', - 644'192-254':'Reserved for Local Use', - 645'255':'Missing', - 646} - 647 - 648table_4_211 = { - 649'0':'Low Bypass', - 650'1':'High Bypass', - 651'2':'Non-Bypass', - 652'3-191':'Reserved', - 653'192-254':'Reserved for Local Use', - 654'255':'Missing', - 655} - 656 - 657table_4_212 = { - 658'0':'Reserved', - 659'1':'Urban Land', - 660'2':'Agricultural', - 661'3':'Range Land', - 662'4':'Deciduous Forest', - 663'5':'Coniferous Forest', - 664'6':'Forest/Wetland', - 665'7':'Water', - 666'8':'Wetlands', - 667'9':'Desert', - 668'10':'Tundra', - 669'11':'Ice', - 670'12':'Tropical Forest', - 671'13':'Savannah', - 672'14-191':'Reserved', - 673'192-254':'Reserved for Local Use', - 674'255':'Missing', - 675} - 676 - 677table_4_213 = { - 678'0':'Reserved', - 679'1':'Sand', - 680'2':'Loamy Sand', - 681'3':'Sandy Loam', - 682'4':'Silt Loam', - 683'5':'Organic', - 684'6':'Sandy Clay Loam', - 685'7':'Silt Clay Loam', - 686'8':'Clay Loam', - 687'9':'Sandy Clay', - 688'10':'Silty Clay', - 689'11':'Clay', - 690'12-191':'Reserved', + 600table_4_204 = { + 601'1':'Isolated (1-2%)', + 602'2':'Few (3-5%)', + 603'3':'Scattered (16-45%)', + 604'4':'Numerous (>45%)', + 605'5-191':'Reserved', + 606'192-254':'Reserved for Local Use', + 607'255':'Missing', + 608} + 609 + 610table_4_205 = { + 611'0':'Aerosol not present', + 612'1':'Aerosol present', + 613'2-191':'Reserved', + 614'192-254':'Reserved for Local Use', + 615'255':'Missing', + 616} + 617 + 618table_4_206 = { + 619'0':'Not Present', + 620'1':'Present', + 621'2-191':'Reserved', + 622'192-254':'Reserved for Local Use', + 623'255':'Missing', + 624} + 625 + 626table_4_207 = { + 627'1':'Light', + 628'2':'Moderate', + 629'3':'Severe', + 630'4':'Trace', + 631'5':'Heavy', + 632'6-191':'Reserved', + 633'192-254':'Reserved for Local Use', + 634'255':'Missing', + 635} + 636 + 637table_4_208 = { + 638'1':'Light', + 639'2':'Moderate', + 640'3':'Severe', + 641'4':'Extreme', + 642'5-191':'Reserved', + 643'192-254':'Reserved for Local Use', + 644'255':'Missing', + 645} + 646 + 647table_4_209 = { + 648'0':'Reserved', + 649'1':'Stable', + 650'2':'Mechanically-Driven Turbulence', + 651'3':'Force Convection', + 652'4':'Free Convection', + 653'5-191':'Reserved', + 654'192-254':'Reserved for Local Use', + 655'255':'Missing', + 656} + 657 + 658table_4_210 = { + 659'0':'Contrail Not Present', + 660'1':'Contrail Present', + 661'2-191':'Reserved', + 662'192-254':'Reserved for Local Use', + 663'255':'Missing', + 664} + 665 + 666table_4_211 = { + 667'0':'Low Bypass', + 668'1':'High Bypass', + 669'2':'Non-Bypass', + 670'3-191':'Reserved', + 671'192-254':'Reserved for Local Use', + 672'255':'Missing', + 673} + 674 + 675table_4_212 = { + 676'0':'Reserved', + 677'1':'Urban Land', + 678'2':'Agricultural', + 679'3':'Range Land', + 680'4':'Deciduous Forest', + 681'5':'Coniferous Forest', + 682'6':'Forest/Wetland', + 683'7':'Water', + 684'8':'Wetlands', + 685'9':'Desert', + 686'10':'Tundra', + 687'11':'Ice', + 688'12':'Tropical Forest', + 689'13':'Savannah', + 690'14-191':'Reserved', 691'192-254':'Reserved for Local Use', 692'255':'Missing', 693} 694 - 695table_4_215 = { - 696'0-49':'Reserved', - 697'50':'No-Snow/No-Cloud', - 698'51-99':'Reserved', - 699'100':'Clouds', - 700'101-249':'Reserved', - 701'250':'Snow', - 702'192-254':'Reserved for Local Use', - 703'255':'Missing', - 704} - 705 - 706table_4_216 = { - 707'0-90':'Elevation in increments of 100 m', - 708'91-253':'Reserved', - 709'254':'Clouds', + 695table_4_213 = { + 696'0':'Reserved', + 697'1':'Sand', + 698'2':'Loamy Sand', + 699'3':'Sandy Loam', + 700'4':'Silt Loam', + 701'5':'Organic', + 702'6':'Sandy Clay Loam', + 703'7':'Silt Clay Loam', + 704'8':'Clay Loam', + 705'9':'Sandy Clay', + 706'10':'Silty Clay', + 707'11':'Clay', + 708'12-191':'Reserved', + 709'192-254':'Reserved for Local Use', 710'255':'Missing', 711} 712 - 713table_4_217 = { - 714'0':'Clear over water', - 715'1':'Clear over land', - 716'2':'Cloud', - 717'3':'No data', - 718'4-191':'Reserved', - 719'192-254':'Reserved for Local Use', - 720'255':'Missing', - 721} - 722 - 723table_4_218 = { - 724'0':'No Scene Identified', - 725'1':'Green Needle-Leafed Forest', - 726'2':'Green Broad-Leafed Forest', - 727'3':'Deciduous Needle-Leafed Forest', - 728'4':'Deciduous Broad-Leafed Forest', - 729'5':'Deciduous Mixed Forest', - 730'6':'Closed Shrub-Land', - 731'7':'Open Shrub-Land', - 732'8':'Woody Savannah', - 733'9':'Savannah', - 734'10':'Grassland', - 735'11':'Permanent Wetland', - 736'12':'Cropland', - 737'13':'Urban', - 738'14':'Vegetation / Crops', - 739'15':'Permanent Snow / Ice', - 740'16':'Barren Desert', - 741'17':'Water Bodies', - 742'18':'Tundra', - 743'19':'Warm Liquid Water Cloud', - 744'20':'Supercooled Liquid Water Cloud', - 745'21':'Mixed Phase Cloud', - 746'22':'Optically Thin Ice Cloud', - 747'23':'Optically Thick Ice Cloud', - 748'24':'Multi-Layeblack Cloud', - 749'25-96':'Reserved', - 750'97':'Snow / Ice on Land', - 751'98':'Snow / Ice on Water', - 752'99':'Sun-Glint', - 753'100':'General Cloud', - 754'101':'Low Cloud / Fog / Stratus', - 755'102':'Low Cloud / Stratocumulus', - 756'103':'Low Cloud / Unknown Type', - 757'104':'Medium Cloud / Nimbostratus', - 758'105':'Medium Cloud / Altostratus', - 759'106':'Medium Cloud / Unknown Type', - 760'107':'High Cloud / Cumulus', - 761'108':'High Cloud / Cirrus', - 762'109':'High Cloud / Unknown Type', - 763'110':'Unknown Cloud Type', - 764'111':'Single layer water cloud', - 765'112':'Single layer ice cloud', - 766'113-191':'Reserved', - 767'192-254':'Reserved for Local Use', - 768'255':'Missing', - 769} - 770 - 771table_4_222 = { - 772'0':'No', - 773'1':'Yes', - 774'2-191':'Reserved', - 775'192-254':'Reserved for Local Use', - 776'255':'Missing', - 777} - 778 - 779table_4_223 = { - 780'0':'No Fire Detected', - 781'1':'Possible Fire Detected', - 782'2':'Probable Fire Detected', - 783'3':'Missing', - 784'4-191':'Reserved', + 713table_4_215 = { + 714'0-49':'Reserved', + 715'50':'No-Snow/No-Cloud', + 716'51-99':'Reserved', + 717'100':'Clouds', + 718'101-249':'Reserved', + 719'250':'Snow', + 720'192-254':'Reserved for Local Use', + 721'255':'Missing', + 722} + 723 + 724table_4_216 = { + 725'0-90':'Elevation in increments of 100 m', + 726'91-253':'Reserved', + 727'254':'Clouds', + 728'255':'Missing', + 729} + 730 + 731table_4_217 = { + 732'0':'Clear over water', + 733'1':'Clear over land', + 734'2':'Cloud', + 735'3':'No data', + 736'4-191':'Reserved', + 737'192-254':'Reserved for Local Use', + 738'255':'Missing', + 739} + 740 + 741table_4_218 = { + 742'0':'No Scene Identified', + 743'1':'Green Needle-Leafed Forest', + 744'2':'Green Broad-Leafed Forest', + 745'3':'Deciduous Needle-Leafed Forest', + 746'4':'Deciduous Broad-Leafed Forest', + 747'5':'Deciduous Mixed Forest', + 748'6':'Closed Shrub-Land', + 749'7':'Open Shrub-Land', + 750'8':'Woody Savannah', + 751'9':'Savannah', + 752'10':'Grassland', + 753'11':'Permanent Wetland', + 754'12':'Cropland', + 755'13':'Urban', + 756'14':'Vegetation / Crops', + 757'15':'Permanent Snow / Ice', + 758'16':'Barren Desert', + 759'17':'Water Bodies', + 760'18':'Tundra', + 761'19':'Warm Liquid Water Cloud', + 762'20':'Supercooled Liquid Water Cloud', + 763'21':'Mixed Phase Cloud', + 764'22':'Optically Thin Ice Cloud', + 765'23':'Optically Thick Ice Cloud', + 766'24':'Multi-Layeblack Cloud', + 767'25-96':'Reserved', + 768'97':'Snow / Ice on Land', + 769'98':'Snow / Ice on Water', + 770'99':'Sun-Glint', + 771'100':'General Cloud', + 772'101':'Low Cloud / Fog / Stratus', + 773'102':'Low Cloud / Stratocumulus', + 774'103':'Low Cloud / Unknown Type', + 775'104':'Medium Cloud / Nimbostratus', + 776'105':'Medium Cloud / Altostratus', + 777'106':'Medium Cloud / Unknown Type', + 778'107':'High Cloud / Cumulus', + 779'108':'High Cloud / Cirrus', + 780'109':'High Cloud / Unknown Type', + 781'110':'Unknown Cloud Type', + 782'111':'Single layer water cloud', + 783'112':'Single layer ice cloud', + 784'113-191':'Reserved', 785'192-254':'Reserved for Local Use', 786'255':'Missing', 787} 788 - 789table_4_224 = { - 790'0':'No Risk Area', - 791'1':'Reserved', - 792'2':'General Thunderstorm Risk Area', - 793'3':'Reserved', - 794'4':'Slight Risk Area', - 795'5':'Reserved', - 796'6':'Moderate Risk Area', - 797'7':'Reserved', - 798'8':'High Risk Area', - 799'9-10':'Reserved', - 800'11':'Dry Thunderstorm (Dry Lightning) Risk Area', - 801'12-13':'Reserved', - 802'14':'Critical Risk Area', - 803'15-17':'Reserved', - 804'18':'Extreamly Critical Risk Area', - 805'19-191':'Reserved', - 806'192-254':'Reserved for Local Use', - 807'255':'Missing', - 808} - 809 - 810table_4_227 = { - 811'1':'General', - 812'2':'Convective', - 813'3':'Stratiform', - 814'4':'Freezing', - 815'5-191':'Reserved', - 816'192-254':'Reserved for Local Use', - 817'255':'Missing', - 818} - 819 - 820table_4_228 = { - 821'1':'Trace', - 822'2':'Light', - 823'3':'Moderate', - 824'4':'Severe', - 825'6-191':'Reserved', - 826'192-254':'Reserved for Local Use', - 827'255':'Missing', - 828} - 829 - 830table_4_233 = { - 831'0':['Ozone','O3'], - 832'1':['Water Vapour','H2O'], - 833'2':['Methane','CH4'], - 834'3':['Carbon Dioxide','CO2'], - 835'4':['Carbon Monoxide','CO'], - 836'5':['Nitrogen Dioxide','NO2'], - 837'6':['Nitrous Oxide','N2O'], - 838'7':['Formaldehyde','HCHO'], - 839'8':['Sulphur Dioxide','SO2'], - 840'9':['Ammonia','NH3'], - 841'10':['Ammonium','NH4+'], - 842'11':['Nitrogen Monoxide','NO'], - 843'12':['Atomic Oxygen','O'], - 844'13':['Nitrate Radical','NO3'], - 845'14':['Hydroperoxyl Radical','HO2'], - 846'15':['Dinitrogen Pentoxide','H2O5'], - 847'16':['Nitrous Acid','HONO'], - 848'17':['Nitric Acid','HNO3'], - 849'18':['Peroxynitric Acid','HO2NO2'], - 850'19':['Hydrogen Peroxide','H2O2'], - 851'20':['Molecular Hydrogen','H'], - 852'21':['Atomic Nitrogen','N'], - 853'22':['Sulphate','SO42-'], - 854'23':['Radon','Rn'], - 855'24':['Elemental Mercury','Hg(O)'], - 856'25':['Divalent Mercury','Hg2+'], - 857'26':['Atomic Chlorine','Cl'], - 858'27':['Chlorine Monoxide','ClO'], - 859'28':['Dichlorine Peroxide','Cl2O2'], - 860'29':['Hypochlorous Acid','HClO'], - 861'30':['Chlorine Nitrate','ClONO2'], - 862'31':['Chlorine Dioxide','ClO2'], - 863'32':['Atomic Bromide','Br'], - 864'33':['Bromine Monoxide','BrO'], - 865'34':['Bromine Chloride','BrCl'], - 866'35':['Hydrogen Bromide','HBr'], - 867'36':['Hypobromous Acid','HBrO'], - 868'37':['Bromine Nitrate','BrONO2'], - 869'38':['Oxygen','O2'], - 870'39-9999':['Reserved','unknown'], - 871'10000':['Hydroxyl Radical','OH'], - 872'10001':['Methyl Peroxy Radical','CH3O2'], - 873'10002':['Methyl Hydroperoxide','CH3O2H'], - 874'10003':['Reserved','unknown'], - 875'10004':['Methanol','CH3OH'], - 876'10005':['Formic Acid','CH3OOH'], - 877'10006':['Hydrogen Cyanide','HCN'], - 878'10007':['Aceto Nitrile','CH3CN'], - 879'10008':['Ethane','C2H6'], - 880'10009':['Ethene (= Ethylene)','C2H4'], - 881'10010':['Ethyne (= Acetylene)','C2H2'], - 882'10011':['Ethanol','C2H5OH'], - 883'10012':['Acetic Acid','C2H5OOH'], - 884'10013':['Peroxyacetyl Nitrate','CH3C(O)OONO2'], - 885'10014':['Propane','C3H8'], - 886'10015':['Propene','C3H6'], - 887'10016':['Butanes','C4H10'], - 888'10017':['Isoprene','C5H10'], - 889'10018':['Alpha Pinene','C10H16'], - 890'10019':['Beta Pinene','C10H16'], - 891'10020':['Limonene','C10H16'], - 892'10021':['Benzene','C6H6'], - 893'10022':['Toluene','C7H8'], - 894'10023':['Xylene','C8H10'], - 895'10024-10499':['Reserved','unknown'], - 896'10500':['Dimethyl Sulphide','CH3SCH3'], - 897'10501-20000':['Reserved','unknown'], - 898'20001':['Hydrogen Chloride','HCL'], - 899'20002':['CFC-11','unknown'], - 900'20003':['CFC-12','unknown'], - 901'20004':['CFC-113','unknown'], - 902'20005':['CFC-113a','unknown'], - 903'20006':['CFC-114','unknown'], - 904'20007':['CFC-115','unknown'], - 905'20008':['HCFC-22','unknown'], - 906'20009':['HCFC-141b','unknown'], - 907'20010':['HCFC-142b','unknown'], - 908'20011':['Halon-1202','unknown'], - 909'20012':['Halon-1211','unknown'], - 910'20013':['Halon-1301','unknown'], - 911'20014':['Halon-2402','unknown'], - 912'20015':['Methyl Chloride (HCC-40)','unknown'], - 913'20016':['Carbon Tetrachloride (HCC-10)','unknown'], - 914'20017':['HCC-140a','CH3CCl3'], - 915'20018':['Methyl Bromide (HBC-40B1)','unknown'], - 916'20019':['Hexachlorocyclohexane (HCH)','unknown'], - 917'20020':['Alpha Hexachlorocyclohexane','unknown'], - 918'20021':['Hexachlorobiphenyl (PCB-153)','unknown'], - 919'20022-29999':['Reserved','unknown'], - 920'30000':['Radioactive Pollutant (Tracer, defined by originating centre)','unknown'], - 921'30001-50000':['Reserved','unknown'], - 922'60000':['HOx Radical (OH+HO2)','unknown'], - 923'60001':['Total Inorganic and Organic Peroxy Radicals (HO2+RO2)','RO2'], - 924'60002':['Passive Ozone','unknown'], - 925'60003':['NOx Expressed As Nitrogen','NOx'], - 926'60004':['All Nitrogen Oxides (NOy) Expressed As Nitrogen','NOy'], - 927'60005':['Total Inorganic Chlorine','Clx'], - 928'60006':['Total Inorganic Bromine','Brx'], - 929'60007':['Total Inorganic Chlorine Except HCl, ClONO2: ClOx','unknown'], - 930'60008':['Total Inorganic Bromine Except Hbr, BrONO2:BrOx','unknown'], - 931'60009':['Lumped Alkanes','unknown'], - 932'60010':['Lumped Alkenes','unknown'], - 933'60011':['Lumped Aromatic Coumpounds','unknown'], - 934'60012':['Lumped Terpenes','unknown'], - 935'60013':['Non-Methane Volatile Organic Compounds Expressed as Carbon','NMVOC'], - 936'60014':['Anthropogenic Non-Methane Volatile Organic Compounds Expressed as Carbon','aNMVOC'], - 937'60015':['Biogenic Non-Methane Volatile Organic Compounds Expressed as Carbon','bNMVOC'], - 938'60016':['Lumped Oxygenated Hydrocarbons','OVOC'], - 939'60017-61999':['Reserved','unknown'], - 940'62000':['Total Aerosol','unknown'], - 941'62001':['Dust Dry','unknown'], - 942'62002':['water In Ambient','unknown'], - 943'62003':['Ammonium Dry','unknown'], - 944'62004':['Nitrate Dry','unknown'], - 945'62005':['Nitric Acid Trihydrate','unknown'], - 946'62006':['Sulphate Dry','unknown'], - 947'62007':['Mercury Dry','unknown'], - 948'62008':['Sea Salt Dry','unknown'], - 949'62009':['Black Carbon Dry','unknown'], - 950'62010':['Particulate Organic Matter Dry','unknown'], - 951'62011':['Primary Particulate Organic Matter Dry','unknown'], - 952'62012':['Secondary Particulate Organic Matter Dry','unknown'], - 953'62013':['Black carbon hydrophilic dry','unknown'], - 954'62014':['Black carbon hydrophobic dry','unknown'], - 955'62015':['Particulate organic matter hydrophilic dry','unknown'], - 956'62016':['Particulate organic matter hydrophobic dry','unknown'], - 957'62017':['Nitrate hydrophilic dry','unknown'], - 958'62018':['Nitrate hydrophobic dry','unknown'], - 959'62019':['Reserved','unknown'], - 960'62020':['Smoke - high absorption','unknown'], - 961'62021':['Smoke - low absorption','unknown'], - 962'62022':['Aerosol - high absorption','unknown'], - 963'62023':['Aerosol - low absorption','unknown'], - 964'62024':['Reserved','unknown'], - 965'62025':['Volcanic ash','unknown'], - 966'62036':['Brown Carbon Dry','unknown'], - 967'62037-65534':['Reserved','unknown'], - 968'65535':['Missing','unknown'], - 969} - 970 - 971table_4_243 = { - 972'0':'Reserved', - 973'1':'Evergreen broadleaved forest', - 974'2':'Deciduous broadleaved closed forest', - 975'3':'Deciduous broadleaved open forest', - 976'4':'Evergreen needle-leaf forest', - 977'5':'Deciduous needle-leaf forest', - 978'6':'Mixed leaf trees', - 979'7':'Fresh water flooded trees', - 980'8':'Saline water flooded trees', - 981'9':'Mosaic tree/natural vegetation', - 982'10':'Burnt tree cover', - 983'11':'Evergreen shurbs closed-open', - 984'12':'Deciduous shurbs closed-open', - 985'13':'Herbaceous vegetation closed-open', - 986'14':'Sparse herbaceous or grass', - 987'15':'Flooded shurbs or herbaceous', - 988'16':'Cultivated and managed areas', - 989'17':'Mosaic crop/tree/natural vegetation', - 990'18':'Mosaic crop/shrub/grass', - 991'19':'Bare areas', - 992'20':'Water', - 993'21':'Snow and ice', - 994'22':'Artificial surface', - 995'23':'Ocean', - 996'24':'Irrigated croplands', - 997'25':'Rain fed croplands', - 998'26':'Mosaic cropland (50-70%)-vegetation (20-50%)', - 999'27':'Mosaic vegetation (50-70%)-cropland (20-50%)', -1000'28':'Closed broadleaved evergreen forest', -1001'29':'Closed needle-leaved evergreen forest', -1002'30':'Open needle-leaved deciduous forest', -1003'31':'Mixed broadleaved and needle-leave forest', -1004'32':'Mosaic shrubland (50-70%)-grassland (20-50%)', -1005'33':'Mosaic grassland (50-70%)-shrubland (20-50%)', -1006'34':'Closed to open shrubland', -1007'35':'Sparse vegetation', -1008'36':'Closed to open forest regularly flooded', -1009'37':'Closed forest or shrubland permanently flooded', -1010'38':'Closed to open grassland regularly flooded', -1011'39':'Undefined', -1012'40-191':'Reserved', -1013'192-254':'Reserved for Local Use', -1014'255':'Missing', -1015} -1016 -1017table_4_246 = { -1018'0':'No thunderstorm occurrence', -1019'1':'Weak thunderstorm', -1020'2':'Moderate thunderstorm', -1021'3':'Severe thunderstorm', -1022'4-191':'Reserved', -1023'192-254':'Reserved for Local Use', -1024'255':'Missing', -1025} -1026 -1027table_4_247 = { -1028'0':'No precipitation occurrence', -1029'1':'Light precipitation', -1030'2':'Moderate precipitation', -1031'3':'Heavy precipitation', -1032'4-191':'Reserved', -1033'192-254':'Reserved for Local Use', -1034'255':'Missing', -1035} -1036 -1037table_4_248 = { -1038'0':'Nearest forecast or analysis time to specified local time', -1039'1':'Interpolated to be valid at the specified local time', -1040'2-191':'Reserved', -1041'192-254':'Reserved for Local Use', -1042'255':'Missing', -1043} -1044 -1045table_4_249 = { -1046'1':'Showers', -1047'2':'Intermittent', -1048'3':'Continuous', -1049'4-191':'Reserved', -1050'192-254':'Reserved for Local Use', -1051'255':'Missing', -1052} -1053 -1054table_4_250 = { -1055'0':'Reserved', -1056'1':'South-West', -1057'2':'South', -1058'3':'South-East', -1059'4':'West', -1060'5':'No direction', -1061'6':'East', -1062'7':'North-West', -1063'8':'North', -1064'9':'North-East', -1065'10-191':'Reserved', + 789table_4_222 = { + 790'0':'No', + 791'1':'Yes', + 792'2-191':'Reserved', + 793'192-254':'Reserved for Local Use', + 794'255':'Missing', + 795} + 796 + 797table_4_223 = { + 798'0':'No Fire Detected', + 799'1':'Possible Fire Detected', + 800'2':'Probable Fire Detected', + 801'3':'Missing', + 802'4-191':'Reserved', + 803'192-254':'Reserved for Local Use', + 804'255':'Missing', + 805} + 806 + 807table_4_224 = { + 808'0':'No Risk Area', + 809'1':'Reserved', + 810'2':'General Thunderstorm Risk Area', + 811'3':'Reserved', + 812'4':'Slight Risk Area', + 813'5':'Reserved', + 814'6':'Moderate Risk Area', + 815'7':'Reserved', + 816'8':'High Risk Area', + 817'9-10':'Reserved', + 818'11':'Dry Thunderstorm (Dry Lightning) Risk Area', + 819'12-13':'Reserved', + 820'14':'Critical Risk Area', + 821'15-17':'Reserved', + 822'18':'Extreamly Critical Risk Area', + 823'19-191':'Reserved', + 824'192-254':'Reserved for Local Use', + 825'255':'Missing', + 826} + 827 + 828table_4_227 = { + 829'1':'General', + 830'2':'Convective', + 831'3':'Stratiform', + 832'4':'Freezing', + 833'5-191':'Reserved', + 834'192-254':'Reserved for Local Use', + 835'255':'Missing', + 836} + 837 + 838table_4_228 = { + 839'1':'Trace', + 840'2':'Light', + 841'3':'Moderate', + 842'4':'Severe', + 843'6-191':'Reserved', + 844'192-254':'Reserved for Local Use', + 845'255':'Missing', + 846} + 847 + 848table_4_233 = { + 849'0':['Ozone','O3'], + 850'1':['Water Vapour','H2O'], + 851'2':['Methane','CH4'], + 852'3':['Carbon Dioxide','CO2'], + 853'4':['Carbon Monoxide','CO'], + 854'5':['Nitrogen Dioxide','NO2'], + 855'6':['Nitrous Oxide','N2O'], + 856'7':['Formaldehyde','HCHO'], + 857'8':['Sulphur Dioxide','SO2'], + 858'9':['Ammonia','NH3'], + 859'10':['Ammonium','NH4+'], + 860'11':['Nitrogen Monoxide','NO'], + 861'12':['Atomic Oxygen','O'], + 862'13':['Nitrate Radical','NO3'], + 863'14':['Hydroperoxyl Radical','HO2'], + 864'15':['Dinitrogen Pentoxide','H2O5'], + 865'16':['Nitrous Acid','HONO'], + 866'17':['Nitric Acid','HNO3'], + 867'18':['Peroxynitric Acid','HO2NO2'], + 868'19':['Hydrogen Peroxide','H2O2'], + 869'20':['Molecular Hydrogen','H'], + 870'21':['Atomic Nitrogen','N'], + 871'22':['Sulphate','SO42-'], + 872'23':['Radon','Rn'], + 873'24':['Elemental Mercury','Hg(O)'], + 874'25':['Divalent Mercury','Hg2+'], + 875'26':['Atomic Chlorine','Cl'], + 876'27':['Chlorine Monoxide','ClO'], + 877'28':['Dichlorine Peroxide','Cl2O2'], + 878'29':['Hypochlorous Acid','HClO'], + 879'30':['Chlorine Nitrate','ClONO2'], + 880'31':['Chlorine Dioxide','ClO2'], + 881'32':['Atomic Bromide','Br'], + 882'33':['Bromine Monoxide','BrO'], + 883'34':['Bromine Chloride','BrCl'], + 884'35':['Hydrogen Bromide','HBr'], + 885'36':['Hypobromous Acid','HBrO'], + 886'37':['Bromine Nitrate','BrONO2'], + 887'38':['Oxygen','O2'], + 888'39-9999':['Reserved','unknown'], + 889'10000':['Hydroxyl Radical','OH'], + 890'10001':['Methyl Peroxy Radical','CH3O2'], + 891'10002':['Methyl Hydroperoxide','CH3O2H'], + 892'10003':['Reserved','unknown'], + 893'10004':['Methanol','CH3OH'], + 894'10005':['Formic Acid','CH3OOH'], + 895'10006':['Hydrogen Cyanide','HCN'], + 896'10007':['Aceto Nitrile','CH3CN'], + 897'10008':['Ethane','C2H6'], + 898'10009':['Ethene (= Ethylene)','C2H4'], + 899'10010':['Ethyne (= Acetylene)','C2H2'], + 900'10011':['Ethanol','C2H5OH'], + 901'10012':['Acetic Acid','C2H5OOH'], + 902'10013':['Peroxyacetyl Nitrate','CH3C(O)OONO2'], + 903'10014':['Propane','C3H8'], + 904'10015':['Propene','C3H6'], + 905'10016':['Butanes','C4H10'], + 906'10017':['Isoprene','C5H10'], + 907'10018':['Alpha Pinene','C10H16'], + 908'10019':['Beta Pinene','C10H16'], + 909'10020':['Limonene','C10H16'], + 910'10021':['Benzene','C6H6'], + 911'10022':['Toluene','C7H8'], + 912'10023':['Xylene','C8H10'], + 913'10024-10499':['Reserved','unknown'], + 914'10500':['Dimethyl Sulphide','CH3SCH3'], + 915'10501-20000':['Reserved','unknown'], + 916'20001':['Hydrogen Chloride','HCL'], + 917'20002':['CFC-11','unknown'], + 918'20003':['CFC-12','unknown'], + 919'20004':['CFC-113','unknown'], + 920'20005':['CFC-113a','unknown'], + 921'20006':['CFC-114','unknown'], + 922'20007':['CFC-115','unknown'], + 923'20008':['HCFC-22','unknown'], + 924'20009':['HCFC-141b','unknown'], + 925'20010':['HCFC-142b','unknown'], + 926'20011':['Halon-1202','unknown'], + 927'20012':['Halon-1211','unknown'], + 928'20013':['Halon-1301','unknown'], + 929'20014':['Halon-2402','unknown'], + 930'20015':['Methyl Chloride (HCC-40)','unknown'], + 931'20016':['Carbon Tetrachloride (HCC-10)','unknown'], + 932'20017':['HCC-140a','CH3CCl3'], + 933'20018':['Methyl Bromide (HBC-40B1)','unknown'], + 934'20019':['Hexachlorocyclohexane (HCH)','unknown'], + 935'20020':['Alpha Hexachlorocyclohexane','unknown'], + 936'20021':['Hexachlorobiphenyl (PCB-153)','unknown'], + 937'20022-29999':['Reserved','unknown'], + 938'30000':['Radioactive Pollutant (Tracer, defined by originating centre)','unknown'], + 939'30001-50000':['Reserved','unknown'], + 940'60000':['HOx Radical (OH+HO2)','unknown'], + 941'60001':['Total Inorganic and Organic Peroxy Radicals (HO2+RO2)','RO2'], + 942'60002':['Passive Ozone','unknown'], + 943'60003':['NOx Expressed As Nitrogen','NOx'], + 944'60004':['All Nitrogen Oxides (NOy) Expressed As Nitrogen','NOy'], + 945'60005':['Total Inorganic Chlorine','Clx'], + 946'60006':['Total Inorganic Bromine','Brx'], + 947'60007':['Total Inorganic Chlorine Except HCl, ClONO2: ClOx','unknown'], + 948'60008':['Total Inorganic Bromine Except Hbr, BrONO2:BrOx','unknown'], + 949'60009':['Lumped Alkanes','unknown'], + 950'60010':['Lumped Alkenes','unknown'], + 951'60011':['Lumped Aromatic Coumpounds','unknown'], + 952'60012':['Lumped Terpenes','unknown'], + 953'60013':['Non-Methane Volatile Organic Compounds Expressed as Carbon','NMVOC'], + 954'60014':['Anthropogenic Non-Methane Volatile Organic Compounds Expressed as Carbon','aNMVOC'], + 955'60015':['Biogenic Non-Methane Volatile Organic Compounds Expressed as Carbon','bNMVOC'], + 956'60016':['Lumped Oxygenated Hydrocarbons','OVOC'], + 957'60017-61999':['Reserved','unknown'], + 958'62000':['Total Aerosol','unknown'], + 959'62001':['Dust Dry','unknown'], + 960'62002':['water In Ambient','unknown'], + 961'62003':['Ammonium Dry','unknown'], + 962'62004':['Nitrate Dry','unknown'], + 963'62005':['Nitric Acid Trihydrate','unknown'], + 964'62006':['Sulphate Dry','unknown'], + 965'62007':['Mercury Dry','unknown'], + 966'62008':['Sea Salt Dry','unknown'], + 967'62009':['Black Carbon Dry','unknown'], + 968'62010':['Particulate Organic Matter Dry','unknown'], + 969'62011':['Primary Particulate Organic Matter Dry','unknown'], + 970'62012':['Secondary Particulate Organic Matter Dry','unknown'], + 971'62013':['Black carbon hydrophilic dry','unknown'], + 972'62014':['Black carbon hydrophobic dry','unknown'], + 973'62015':['Particulate organic matter hydrophilic dry','unknown'], + 974'62016':['Particulate organic matter hydrophobic dry','unknown'], + 975'62017':['Nitrate hydrophilic dry','unknown'], + 976'62018':['Nitrate hydrophobic dry','unknown'], + 977'62019':['Reserved','unknown'], + 978'62020':['Smoke - high absorption','unknown'], + 979'62021':['Smoke - low absorption','unknown'], + 980'62022':['Aerosol - high absorption','unknown'], + 981'62023':['Aerosol - low absorption','unknown'], + 982'62024':['Reserved','unknown'], + 983'62025':['Volcanic ash','unknown'], + 984'62036':['Brown Carbon Dry','unknown'], + 985'62037-65534':['Reserved','unknown'], + 986'65535':['Missing','unknown'], + 987} + 988 + 989table_4_234 = { + 990'1':'Crops, mixed farming', + 991'2':'Short grass', + 992'3':'Evergreen needleleaf trees', + 993'4':'Deciduous needleleaf trees', + 994'5':'Deciduous broadleaf trees', + 995'6':'Evergreen broadleaf trees', + 996'7':'Tall grass', + 997'8':'Desert', + 998'9':'Tundra', + 999'10':'Irrigated corps', +1000'11':'Semidesert', +1001'12':'Ice caps and glaciers', +1002'13':'Bogs and marshes', +1003'14':'Inland water', +1004'15':'Ocean', +1005'16':'Evergreen shrubs', +1006'17':'Deciduous shrubs', +1007'18':'Mixed forest', +1008'19':'Interrupted forest', +1009'20':'Water and land mixtures', +1010'21-191':'Reserved', +1011'192-254':'Reserved for Local Use', +1012'255':'Missing', +1013} +1014 +1015table_4_235 = { +1016'0':'Total Wave Spectrum (combined wind waves and swell)', +1017'1':'Generalized Partition', +1018'2-191':'Reserved', +1019'192-254':'Reserved for Local Use', +1020'255':'Missing', +1021} +1022 +1023table_4_236 = { +1024'1':'Coarse', +1025'2':'Medium', +1026'3':'Medium-fine', +1027'4':'Fine', +1028'5':'Very-fine', +1029'6':'Organic', +1030'7':'Tropical-organic', +1031'8-191':'Reserved', +1032'192-254':'Reserved for Local Use', +1033'255':'Missing', +1034} +1035 +1036table_4_238 = { +1037'0':'Reserved', +1038'1':'Aviation', +1039'2':'Lightning', +1040'3':'Biogenic Sources', +1041'4':'Anthropogenic sources', +1042'5':'Wild fires', +1043'6':'Natural sources', +1044'7':'Bio-fuel', +1045'8':'Volcanoes', +1046'9':'Fossil-fuel', +1047'10':'Wetlands', +1048'11':'Oceans', +1049'12':'Elevated anthropogenic sources', +1050'13':'Surface anthropogenic sources', +1051'14':'Agriculture livestock', +1052'15':'Agriculture soils', +1053'16':'Agriculture waste burning', +1054'17':'Agriculture (all)', +1055'18':'Residential, commercial and other combustion', +1056'19':'Power generation', +1057'20':'Super power stations', +1058'21':'Fugitives', +1059'22':'Industrial process', +1060'23':'Solvents', +1061'24':'Ships', +1062'25':'Wastes', +1063'26':'Road transportation', +1064'27':'Off-road transportation', +1065'28-191':'Reserved', 1066'192-254':'Reserved for Local Use', 1067'255':'Missing', 1068} 1069 -1070table_scale_time_hours = { -1071'0': 60., -1072'1': 1., -1073'2': float(1.0/24.0), -1074'3': float(1.0/720.0), -1075'4': float(1.0/(365.0*24.0)), -1076'5': float(1.0/(10.0*365.0*24.0)), -1077'6': float(1.0/(30.0*365.0*24.0)), -1078'7': float(1.0/(100.0*365.0*24.0)), -1079'8': 1., -1080'9': 1., -1081'10': 3., -1082'11': 6., -1083'12': 12., -1084'13': 3600., -1085'14-255': 1.} -1086 -1087# ---------------------------------------------------------------------------------------- -1088# Source: https://github.com/NOAA-EMC/NCEPLIBS-wgrib2/blob/develop/wgrib2/Level.c -1089# -1090# The dictionary key is the Section 4.5 coded value. The value is a list where the -1091# index 0 is the string to use for level and index 1 is the string for a layer. -1092# ---------------------------------------------------------------------------------------- -1093table_wgrib2_level_string = { -1094'0': ["reserved","reserved"], -1095'1': ["surface","reserved"], -1096'2': ["cloud base","reserved"], -1097'3': ["cloud top","reserved"], -1098'4': ["0C isotherm","reserved"], -1099'5': ["level of adiabatic condensation from sfc","reserved"], -1100'6': ["max wind","reserved"], -1101'7': ["tropopause","reserved"], -1102'8': ["top of atmosphere","reserved"], -1103'9': ["sea bottom","reserved"], -1104'10': ["entire atmosphere","reserved"], -1105'11': ["cumulonimbus base","reserved"], -1106'12': ["cumulonimbus top","reserved"], -1107'13': ["lowest level %g%% integrated cloud cover","reserved"], -1108'14': ["level of free convection","reserved"], -1109'15': ["convection condensation level","reserved"], -1110'16': ["level of neutral buoyancy","reserved"], -1111'17': ["reserved","reserved"], -1112'18': ["reserved","reserved"], -1113'19': ["reserved","reserved"], -1114'20': ["%g K level","reserved"], -1115'21': ["lowest level > %g kg/m^3","reserved"], -1116'22': ["highest level > %g kg/m^3","reserved"], -1117'23': ["lowest level > %g Bq/m^3","reserved"], -1118'24': ["highest level > %g Bg/m^3","reserved"], -1119'25': ["reserved","reserved"], -1120'26': ["reserved","reserved"], -1121'27': ["reserved","reserved"], -1122'28': ["reserved","reserved"], -1123'29': ["reserved","reserved"], -1124'30': ["reserved","reserved"], -1125'31': ["reserved","reserved"], -1126'32': ["reserved","reserved"], -1127'33': ["reserved","reserved"], -1128'34': ["reserved","reserved"], -1129'35': ["reserved","reserved"], -1130'36': ["reserved","reserved"], -1131'37': ["reserved","reserved"], -1132'38': ["reserved","reserved"], -1133'39': ["reserved","reserved"], -1134'40': ["reserved","reserved"], -1135'41': ["reserved","reserved"], -1136'42': ["reserved","reserved"], -1137'43': ["reserved","reserved"], -1138'44': ["reserved","reserved"], -1139'45': ["reserved","reserved"], -1140'46': ["reserved","reserved"], -1141'47': ["reserved","reserved"], -1142'48': ["reserved","reserved"], -1143'49': ["reserved","reserved"], -1144'50': ["reserved","reserved"], -1145'51': ["reserved","reserved"], -1146'52': ["reserved","reserved"], -1147'53': ["reserved","reserved"], -1148'54': ["reserved","reserved"], -1149'55': ["reserved","reserved"], -1150'56': ["reserved","reserved"], -1151'57': ["reserved","reserved"], -1152'58': ["reserved","reserved"], -1153'59': ["reserved","reserved"], -1154'60': ["reserved","reserved"], -1155'61': ["reserved","reserved"], -1156'62': ["reserved","reserved"], -1157'63': ["reserved","reserved"], -1158'64': ["reserved","reserved"], -1159'65': ["reserved","reserved"], -1160'66': ["reserved","reserved"], -1161'67': ["reserved","reserved"], -1162'68': ["reserved","reserved"], -1163'69': ["reserved","reserved"], -1164'70': ["reserved","reserved"], -1165'71': ["reserved","reserved"], -1166'72': ["reserved","reserved"], -1167'73': ["reserved","reserved"], -1168'74': ["reserved","reserved"], -1169'75': ["reserved","reserved"], -1170'76': ["reserved","reserved"], -1171'77': ["reserved","reserved"], -1172'78': ["reserved","reserved"], -1173'79': ["reserved","reserved"], -1174'80': ["reserved","reserved"], -1175'81': ["reserved","reserved"], -1176'82': ["reserved","reserved"], -1177'83': ["reserved","reserved"], -1178'84': ["reserved","reserved"], -1179'85': ["reserved","reserved"], -1180'86': ["reserved","reserved"], -1181'87': ["reserved","reserved"], -1182'88': ["reserved","reserved"], -1183'89': ["reserved","reserved"], -1184'90': ["reserved","reserved"], -1185'91': ["reserved","reserved"], -1186'92': ["reserved","reserved"], -1187'93': ["reserved","reserved"], -1188'94': ["reserved","reserved"], -1189'95': ["reserved","reserved"], -1190'96': ["reserved","reserved"], -1191'97': ["reserved","reserved"], -1192'98': ["reserved","reserved"], -1193'99': ["reserved","reserved"], -1194'100': ["%g mb","%g-%g mb"], -1195'101': ["mean sea level","reserved"], -1196'102': ["%g m above mean sea level","%g-%g m above mean sea level"], -1197'103': ["%g m above ground","%g-%g m above ground"], -1198'104': ["%g sigma level","%g-%g sigma layer"], -1199'105': ["%g hybrid level","%g-%g hybrid layer"], -1200'106': ["%g m underground","%g-%g m underground"], -1201'107': ["%g K isentropic level","%g-%g K isentropic layer"], -1202'108': ["%g mb above ground","%g-%g mb above ground"], -1203'109': ["PV=%g (Km^2/kg/s) surface","reserved"], -1204'110': ["reserved","reserved"], -1205'111': ["%g Eta level","%g-%g Eta layer"], -1206'112': ["reserved","reserved"], -1207'113': ["%g logarithmic hybrid level","reserved"], -1208'114': ["snow level","reserved"], -1209'115': ["%g sigma height level","%g-%g sigma heigh layer"], -1210'116': ["reserved","reserved"], -1211'117': ["mixed layer depth","reserved"], -1212'118': ["%g hybrid height level","%g-%g hybrid height layer"], -1213'119': ["%g hybrid pressure level","%g-%g hybrid pressure layer"], -1214'120': ["reserved","reserved"], -1215'121': ["reserved","reserved"], -1216'122': ["reserved","reserved"], -1217'123': ["reserved","reserved"], -1218'124': ["reserved","reserved"], -1219'125': ["reserved","reserved"], -1220'126': ["reserved","reserved"], -1221'127': ["reserved","reserved"], -1222'128': ["reserved","reserved"], -1223'129': ["reserved","reserved"], -1224'130': ["reserved","reserved"], -1225'131': ["reserved","reserved"], -1226'132': ["reserved","reserved"], -1227'133': ["reserved","reserved"], -1228'134': ["reserved","reserved"], -1229'135': ["reserved","reserved"], -1230'136': ["reserved","reserved"], -1231'137': ["reserved","reserved"], -1232'138': ["reserved","reserved"], -1233'139': ["reserved","reserved"], -1234'140': ["reserved","reserved"], -1235'141': ["reserved","reserved"], -1236'142': ["reserved","reserved"], -1237'143': ["reserved","reserved"], -1238'144': ["reserved","reserved"], -1239'145': ["reserved","reserved"], -1240'146': ["reserved","reserved"], -1241'147': ["reserved","reserved"], -1242'148': ["reserved","reserved"], -1243'149': ["reserved","reserved"], -1244'150': ["%g generalized vertical height coordinate","reserved"], -1245'151': ["soil level %g","reserved"], -1246'152': ["reserved","reserved"], -1247'153': ["reserved","reserved"], -1248'154': ["reserved","reserved"], -1249'155': ["reserved","reserved"], -1250'156': ["reserved","reserved"], -1251'157': ["reserved","reserved"], -1252'158': ["reserved","reserved"], -1253'159': ["reserved","reserved"], -1254'160': ["%g m below sea level","%g-%g m below sea level"], -1255'161': ["%g m below water surface","%g-%g m ocean layer"], -1256'162': ["lake or river bottom","reserved"], -1257'163': ["bottom of sediment layer","reserved"], -1258'164': ["bottom of thermally active sediment layer","reserved"], -1259'165': ["bottom of sediment layer penetrated by thermal wave","reserved"], -1260'166': ["maxing layer","reserved"], -1261'167': ["bottom of root zone","reserved"], -1262'168': ["reserved","reserved"], -1263'169': ["reserved","reserved"], -1264'170': ["reserved","reserved"], -1265'171': ["reserved","reserved"], -1266'172': ["reserved","reserved"], -1267'173': ["reserved","reserved"], -1268'174': ["top surface of ice on sea, lake or river","reserved"], -1269'175': ["top surface of ice, und snow on sea, lake or river","reserved"], -1270'176': ["bottom surface ice on sea, lake or river","reserved"], -1271'177': ["deep soil","reserved"], -1272'178': ["reserved","reserved"], -1273'179': ["top surface of glacier ice and inland ice","reserved"], -1274'180': ["deep inland or glacier ice","reserved"], -1275'181': ["grid tile land fraction as a model surface","reserved"], -1276'182': ["grid tile water fraction as a model surface","reserved"], -1277'183': ["grid tile ice fraction on sea, lake or river as a model surface","reserved"], -1278'184': ["grid tile glacier ice and inland ice fraction as a model surface","reserved"], -1279'185': ["reserved","reserved"], -1280'186': ["reserved","reserved"], -1281'187': ["reserved","reserved"], -1282'188': ["reserved","reserved"], -1283'189': ["reserved","reserved"], -1284'190': ["reserved","reserved"], -1285'191': ["reserved","reserved"], -1286'192': ["reserved","reserved"], -1287'193': ["reserved","reserved"], -1288'194': ["reserved","reserved"], -1289'195': ["reserved","reserved"], -1290'196': ["reserved","reserved"], -1291'197': ["reserved","reserved"], -1292'198': ["reserved","reserved"], -1293'199': ["reserved","reserved"], -1294'200': ["entire atmosphere (considered as a single layer)","reserved"], -1295'201': ["entire ocean (considered as a single layer)","reserved"], -1296'202': ["reserved","reserved"], -1297'203': ["reserved","reserved"], -1298'204': ["highest tropospheric freezing level","reserved"], -1299'205': ["reserved","reserved"], -1300'206': ["grid scale cloud bottom level","reserved"], -1301'207': ["grid scale cloud top level","reserved"], -1302'208': ["reserved","reserved"], -1303'209': ["boundary layer cloud bottom level","reserved"], -1304'210': ["boundary layer cloud top level","reserved"], -1305'211': ["boundary layer cloud layer","reserved"], -1306'212': ["low cloud bottom level","reserved"], -1307'213': ["low cloud top level","reserved"], -1308'214': ["low cloud layer","reserved"], -1309'215': ["cloud ceiling","reserved"], -1310'216': ["reserved","reserved"], -1311'217': ["reserved","reserved"], -1312'218': ["reserved","reserved"], -1313'219': ["reserved","reserved"], -1314'220': ["planetary boundary layer","reserved"], -1315'221': ["layer between two hybrid levels","reserved"], -1316'222': ["middle cloud bottom level","reserved"], -1317'223': ["middle cloud top level","reserved"], -1318'224': ["middle cloud layer","reserved"], -1319'225': ["reserved","reserved"], -1320'226': ["reserved","reserved"], -1321'227': ["reserved","reserved"], -1322'228': ["reserved","reserved"], -1323'229': ["reserved","reserved"], -1324'230': ["reserved","reserved"], -1325'231': ["reserved","reserved"], -1326'232': ["high cloud bottom level","reserved"], -1327'233': ["high cloud top level","reserved"], -1328'234': ["high cloud layer","reserved"], -1329'235': ["%gC ocean isotherm","%g-%gC ocean isotherm layer"], -1330'236': ["layer between two depths below ocean surface","%g-%g m ocean layer"], -1331'237': ["bottom of ocean mixed layer","reserved"], -1332'238': ["bottom of ocean isothermal layer","reserved"], -1333'239': ["layer ocean surface and 26C ocean isothermal level","reserved"], -1334'240': ["ocean mixed layer","reserved"], -1335'241': ["%g in sequence","reserved"], -1336'242': ["convective cloud bottom level","reserved"], -1337'243': ["convective cloud top level","reserved"], -1338'244': ["convective cloud layer","reserved"], -1339'245': ["lowest level of the wet bulb zero","reserved"], -1340'246': ["maximum equivalent potential temperature level","reserved"], -1341'247': ["equilibrium level","reserved"], -1342'248': ["shallow convective cloud bottom level","reserved"], -1343'249': ["shallow convective cloud top level","reserved"], -1344'250': ["reserved","reserved"], -1345'251': ["deep convective cloud bottom level","reserved"], -1346'252': ["deep convective cloud top level","reserved"], -1347'253': ["lowest bottom level of supercooled liquid water layer","reserved"], -1348'254': ["highest top level of supercooled liquid water layer","reserved"], -1349'255': ["missing","reserved"], -1350} +1070table_4_239 = { +1071'0':'Reserved', +1072'1':'Bog', +1073'2':'Drained', +1074'3':'Fen', +1075'4':'Floodplain', +1076'5':'Mangrove', +1077'6':'Marsh', +1078'7':'Rice', +1079'8':'Riverine', +1080'9':'Salt Marsh', +1081'10':'Swamp', +1082'11':'Upland', +1083'12':'Wet tundra', +1084'13-191':'Reserved', +1085'192-254':'Reserved for Local Use', +1086'255':'Missing', +1087} +1088 +1089table_4_243 = { +1090'0':'Reserved', +1091'1':'Evergreen broadleaved forest', +1092'2':'Deciduous broadleaved closed forest', +1093'3':'Deciduous broadleaved open forest', +1094'4':'Evergreen needle-leaf forest', +1095'5':'Deciduous needle-leaf forest', +1096'6':'Mixed leaf trees', +1097'7':'Fresh water flooded trees', +1098'8':'Saline water flooded trees', +1099'9':'Mosaic tree/natural vegetation', +1100'10':'Burnt tree cover', +1101'11':'Evergreen shurbs closed-open', +1102'12':'Deciduous shurbs closed-open', +1103'13':'Herbaceous vegetation closed-open', +1104'14':'Sparse herbaceous or grass', +1105'15':'Flooded shurbs or herbaceous', +1106'16':'Cultivated and managed areas', +1107'17':'Mosaic crop/tree/natural vegetation', +1108'18':'Mosaic crop/shrub/grass', +1109'19':'Bare areas', +1110'20':'Water', +1111'21':'Snow and ice', +1112'22':'Artificial surface', +1113'23':'Ocean', +1114'24':'Irrigated croplands', +1115'25':'Rain fed croplands', +1116'26':'Mosaic cropland (50-70%)-vegetation (20-50%)', +1117'27':'Mosaic vegetation (50-70%)-cropland (20-50%)', +1118'28':'Closed broadleaved evergreen forest', +1119'29':'Closed needle-leaved evergreen forest', +1120'30':'Open needle-leaved deciduous forest', +1121'31':'Mixed broadleaved and needle-leave forest', +1122'32':'Mosaic shrubland (50-70%)-grassland (20-50%)', +1123'33':'Mosaic grassland (50-70%)-shrubland (20-50%)', +1124'34':'Closed to open shrubland', +1125'35':'Sparse vegetation', +1126'36':'Closed to open forest regularly flooded', +1127'37':'Closed forest or shrubland permanently flooded', +1128'38':'Closed to open grassland regularly flooded', +1129'39':'Undefined', +1130'40-191':'Reserved', +1131'192-254':'Reserved for Local Use', +1132'255':'Missing', +1133} +1134 +1135table_4_244 = { +1136'0':'No Quality Information Available', +1137'1':'Failed', +1138'2':'Passed', +1139'3-191':'Reserved', +1140'192-254':'Reserved for Local Use', +1141'255':'Missing', +1142} +1143 +1144table_4_246 = { +1145'0':'No thunderstorm occurrence', +1146'1':'Weak thunderstorm', +1147'2':'Moderate thunderstorm', +1148'3':'Severe thunderstorm', +1149'4-191':'Reserved', +1150'192-254':'Reserved for Local Use', +1151'255':'Missing', +1152} +1153 +1154table_4_247 = { +1155'0':'No precipitation occurrence', +1156'1':'Light precipitation', +1157'2':'Moderate precipitation', +1158'3':'Heavy precipitation', +1159'4-191':'Reserved', +1160'192-254':'Reserved for Local Use', +1161'255':'Missing', +1162} +1163 +1164table_4_248 = { +1165'0':'Nearest forecast or analysis time to specified local time', +1166'1':'Interpolated to be valid at the specified local time', +1167'2-191':'Reserved', +1168'192-254':'Reserved for Local Use', +1169'255':'Missing', +1170} +1171 +1172table_4_249 = { +1173'1':'Showers', +1174'2':'Intermittent', +1175'3':'Continuous', +1176'4-191':'Reserved', +1177'192-254':'Reserved for Local Use', +1178'255':'Missing', +1179} +1180 +1181table_4_250 = { +1182'0':'Reserved', +1183'1':'South-West', +1184'2':'South', +1185'3':'South-East', +1186'4':'West', +1187'5':'No direction', +1188'6':'East', +1189'7':'North-West', +1190'8':'North', +1191'9':'North-East', +1192'10-191':'Reserved', +1193'192-254':'Reserved for Local Use', +1194'255':'Missing', +1195} +1196 +1197table_4_251 = { +1198'0':'Undefined Sequence', +1199'1':'Geometric sequence,(see Note 1)', +1200'2':'Arithmetic sequence,(see Note 2)', +1201'3-191':'Reserved', +1202'192-254':'Reserved for Local Use', +1203'255':'Missing', +1204} +1205 +1206table_scale_time_hours = { +1207'0': 60., +1208'1': 1., +1209'2': float(1.0/24.0), +1210'3': float(1.0/720.0), +1211'4': float(1.0/(365.0*24.0)), +1212'5': float(1.0/(10.0*365.0*24.0)), +1213'6': float(1.0/(30.0*365.0*24.0)), +1214'7': float(1.0/(100.0*365.0*24.0)), +1215'8': 1., +1216'9': 1., +1217'10': 3., +1218'11': 6., +1219'12': 12., +1220'13': 3600., +1221'14-255': 1.} +1222 +1223# ---------------------------------------------------------------------------------------- +1224# Source: https://github.com/NOAA-EMC/NCEPLIBS-wgrib2/blob/develop/wgrib2/Level.c +1225# +1226# The dictionary key is the Section 4.5 coded value. The value is a list where the +1227# index 0 is the string to use for level and index 1 is the string for a layer. +1228# ---------------------------------------------------------------------------------------- +1229table_wgrib2_level_string = { +1230'0': ["reserved","reserved"], +1231'1': ["surface","reserved"], +1232'2': ["cloud base","reserved"], +1233'3': ["cloud top","reserved"], +1234'4': ["0C isotherm","reserved"], +1235'5': ["level of adiabatic condensation from sfc","reserved"], +1236'6': ["max wind","reserved"], +1237'7': ["tropopause","reserved"], +1238'8': ["top of atmosphere","reserved"], +1239'9': ["sea bottom","reserved"], +1240'10': ["entire atmosphere","reserved"], +1241'11': ["cumulonimbus base","reserved"], +1242'12': ["cumulonimbus top","reserved"], +1243'13': ["lowest level %g%% integrated cloud cover","reserved"], +1244'14': ["level of free convection","reserved"], +1245'15': ["convection condensation level","reserved"], +1246'16': ["level of neutral buoyancy","reserved"], +1247'17': ["reserved","reserved"], +1248'18': ["reserved","reserved"], +1249'19': ["reserved","reserved"], +1250'20': ["%g K level","reserved"], +1251'21': ["lowest level > %g kg/m^3","reserved"], +1252'22': ["highest level > %g kg/m^3","reserved"], +1253'23': ["lowest level > %g Bq/m^3","reserved"], +1254'24': ["highest level > %g Bg/m^3","reserved"], +1255'25': ["reserved","reserved"], +1256'26': ["reserved","reserved"], +1257'27': ["reserved","reserved"], +1258'28': ["reserved","reserved"], +1259'29': ["reserved","reserved"], +1260'30': ["reserved","reserved"], +1261'31': ["reserved","reserved"], +1262'32': ["reserved","reserved"], +1263'33': ["reserved","reserved"], +1264'34': ["reserved","reserved"], +1265'35': ["reserved","reserved"], +1266'36': ["reserved","reserved"], +1267'37': ["reserved","reserved"], +1268'38': ["reserved","reserved"], +1269'39': ["reserved","reserved"], +1270'40': ["reserved","reserved"], +1271'41': ["reserved","reserved"], +1272'42': ["reserved","reserved"], +1273'43': ["reserved","reserved"], +1274'44': ["reserved","reserved"], +1275'45': ["reserved","reserved"], +1276'46': ["reserved","reserved"], +1277'47': ["reserved","reserved"], +1278'48': ["reserved","reserved"], +1279'49': ["reserved","reserved"], +1280'50': ["reserved","reserved"], +1281'51': ["reserved","reserved"], +1282'52': ["reserved","reserved"], +1283'53': ["reserved","reserved"], +1284'54': ["reserved","reserved"], +1285'55': ["reserved","reserved"], +1286'56': ["reserved","reserved"], +1287'57': ["reserved","reserved"], +1288'58': ["reserved","reserved"], +1289'59': ["reserved","reserved"], +1290'60': ["reserved","reserved"], +1291'61': ["reserved","reserved"], +1292'62': ["reserved","reserved"], +1293'63': ["reserved","reserved"], +1294'64': ["reserved","reserved"], +1295'65': ["reserved","reserved"], +1296'66': ["reserved","reserved"], +1297'67': ["reserved","reserved"], +1298'68': ["reserved","reserved"], +1299'69': ["reserved","reserved"], +1300'70': ["reserved","reserved"], +1301'71': ["reserved","reserved"], +1302'72': ["reserved","reserved"], +1303'73': ["reserved","reserved"], +1304'74': ["reserved","reserved"], +1305'75': ["reserved","reserved"], +1306'76': ["reserved","reserved"], +1307'77': ["reserved","reserved"], +1308'78': ["reserved","reserved"], +1309'79': ["reserved","reserved"], +1310'80': ["reserved","reserved"], +1311'81': ["reserved","reserved"], +1312'82': ["reserved","reserved"], +1313'83': ["reserved","reserved"], +1314'84': ["reserved","reserved"], +1315'85': ["reserved","reserved"], +1316'86': ["reserved","reserved"], +1317'87': ["reserved","reserved"], +1318'88': ["reserved","reserved"], +1319'89': ["reserved","reserved"], +1320'90': ["reserved","reserved"], +1321'91': ["reserved","reserved"], +1322'92': ["reserved","reserved"], +1323'93': ["reserved","reserved"], +1324'94': ["reserved","reserved"], +1325'95': ["reserved","reserved"], +1326'96': ["reserved","reserved"], +1327'97': ["reserved","reserved"], +1328'98': ["reserved","reserved"], +1329'99': ["reserved","reserved"], +1330'100': ["%g mb","%g-%g mb"], +1331'101': ["mean sea level","reserved"], +1332'102': ["%g m above mean sea level","%g-%g m above mean sea level"], +1333'103': ["%g m above ground","%g-%g m above ground"], +1334'104': ["%g sigma level","%g-%g sigma layer"], +1335'105': ["%g hybrid level","%g-%g hybrid layer"], +1336'106': ["%g m underground","%g-%g m underground"], +1337'107': ["%g K isentropic level","%g-%g K isentropic layer"], +1338'108': ["%g mb above ground","%g-%g mb above ground"], +1339'109': ["PV=%g (Km^2/kg/s) surface","reserved"], +1340'110': ["reserved","reserved"], +1341'111': ["%g Eta level","%g-%g Eta layer"], +1342'112': ["reserved","reserved"], +1343'113': ["%g logarithmic hybrid level","reserved"], +1344'114': ["snow level","reserved"], +1345'115': ["%g sigma height level","%g-%g sigma heigh layer"], +1346'116': ["reserved","reserved"], +1347'117': ["mixed layer depth","reserved"], +1348'118': ["%g hybrid height level","%g-%g hybrid height layer"], +1349'119': ["%g hybrid pressure level","%g-%g hybrid pressure layer"], +1350'120': ["reserved","reserved"], +1351'121': ["reserved","reserved"], +1352'122': ["reserved","reserved"], +1353'123': ["reserved","reserved"], +1354'124': ["reserved","reserved"], +1355'125': ["reserved","reserved"], +1356'126': ["reserved","reserved"], +1357'127': ["reserved","reserved"], +1358'128': ["reserved","reserved"], +1359'129': ["reserved","reserved"], +1360'130': ["reserved","reserved"], +1361'131': ["reserved","reserved"], +1362'132': ["reserved","reserved"], +1363'133': ["reserved","reserved"], +1364'134': ["reserved","reserved"], +1365'135': ["reserved","reserved"], +1366'136': ["reserved","reserved"], +1367'137': ["reserved","reserved"], +1368'138': ["reserved","reserved"], +1369'139': ["reserved","reserved"], +1370'140': ["reserved","reserved"], +1371'141': ["reserved","reserved"], +1372'142': ["reserved","reserved"], +1373'143': ["reserved","reserved"], +1374'144': ["reserved","reserved"], +1375'145': ["reserved","reserved"], +1376'146': ["reserved","reserved"], +1377'147': ["reserved","reserved"], +1378'148': ["reserved","reserved"], +1379'149': ["reserved","reserved"], +1380'150': ["%g generalized vertical height coordinate","reserved"], +1381'151': ["soil level %g","reserved"], +1382'152': ["reserved","reserved"], +1383'153': ["reserved","reserved"], +1384'154': ["reserved","reserved"], +1385'155': ["reserved","reserved"], +1386'156': ["reserved","reserved"], +1387'157': ["reserved","reserved"], +1388'158': ["reserved","reserved"], +1389'159': ["reserved","reserved"], +1390'160': ["%g m below sea level","%g-%g m below sea level"], +1391'161': ["%g m below water surface","%g-%g m ocean layer"], +1392'162': ["lake or river bottom","reserved"], +1393'163': ["bottom of sediment layer","reserved"], +1394'164': ["bottom of thermally active sediment layer","reserved"], +1395'165': ["bottom of sediment layer penetrated by thermal wave","reserved"], +1396'166': ["maxing layer","reserved"], +1397'167': ["bottom of root zone","reserved"], +1398'168': ["reserved","reserved"], +1399'169': ["reserved","reserved"], +1400'170': ["reserved","reserved"], +1401'171': ["reserved","reserved"], +1402'172': ["reserved","reserved"], +1403'173': ["reserved","reserved"], +1404'174': ["top surface of ice on sea, lake or river","reserved"], +1405'175': ["top surface of ice, und snow on sea, lake or river","reserved"], +1406'176': ["bottom surface ice on sea, lake or river","reserved"], +1407'177': ["deep soil","reserved"], +1408'178': ["reserved","reserved"], +1409'179': ["top surface of glacier ice and inland ice","reserved"], +1410'180': ["deep inland or glacier ice","reserved"], +1411'181': ["grid tile land fraction as a model surface","reserved"], +1412'182': ["grid tile water fraction as a model surface","reserved"], +1413'183': ["grid tile ice fraction on sea, lake or river as a model surface","reserved"], +1414'184': ["grid tile glacier ice and inland ice fraction as a model surface","reserved"], +1415'185': ["reserved","reserved"], +1416'186': ["reserved","reserved"], +1417'187': ["reserved","reserved"], +1418'188': ["reserved","reserved"], +1419'189': ["reserved","reserved"], +1420'190': ["reserved","reserved"], +1421'191': ["reserved","reserved"], +1422'192': ["reserved","reserved"], +1423'193': ["reserved","reserved"], +1424'194': ["reserved","reserved"], +1425'195': ["reserved","reserved"], +1426'196': ["reserved","reserved"], +1427'197': ["reserved","reserved"], +1428'198': ["reserved","reserved"], +1429'199': ["reserved","reserved"], +1430'200': ["entire atmosphere (considered as a single layer)","reserved"], +1431'201': ["entire ocean (considered as a single layer)","reserved"], +1432'202': ["reserved","reserved"], +1433'203': ["reserved","reserved"], +1434'204': ["highest tropospheric freezing level","reserved"], +1435'205': ["reserved","reserved"], +1436'206': ["grid scale cloud bottom level","reserved"], +1437'207': ["grid scale cloud top level","reserved"], +1438'208': ["reserved","reserved"], +1439'209': ["boundary layer cloud bottom level","reserved"], +1440'210': ["boundary layer cloud top level","reserved"], +1441'211': ["boundary layer cloud layer","reserved"], +1442'212': ["low cloud bottom level","reserved"], +1443'213': ["low cloud top level","reserved"], +1444'214': ["low cloud layer","reserved"], +1445'215': ["cloud ceiling","reserved"], +1446'216': ["reserved","reserved"], +1447'217': ["reserved","reserved"], +1448'218': ["reserved","reserved"], +1449'219': ["reserved","reserved"], +1450'220': ["planetary boundary layer","reserved"], +1451'221': ["layer between two hybrid levels","reserved"], +1452'222': ["middle cloud bottom level","reserved"], +1453'223': ["middle cloud top level","reserved"], +1454'224': ["middle cloud layer","reserved"], +1455'225': ["reserved","reserved"], +1456'226': ["reserved","reserved"], +1457'227': ["reserved","reserved"], +1458'228': ["reserved","reserved"], +1459'229': ["reserved","reserved"], +1460'230': ["reserved","reserved"], +1461'231': ["reserved","reserved"], +1462'232': ["high cloud bottom level","reserved"], +1463'233': ["high cloud top level","reserved"], +1464'234': ["high cloud layer","reserved"], +1465'235': ["%gC ocean isotherm","%g-%gC ocean isotherm layer"], +1466'236': ["layer between two depths below ocean surface","%g-%g m ocean layer"], +1467'237': ["bottom of ocean mixed layer","reserved"], +1468'238': ["bottom of ocean isothermal layer","reserved"], +1469'239': ["layer ocean surface and 26C ocean isothermal level","reserved"], +1470'240': ["ocean mixed layer","reserved"], +1471'241': ["%g in sequence","reserved"], +1472'242': ["convective cloud bottom level","reserved"], +1473'243': ["convective cloud top level","reserved"], +1474'244': ["convective cloud layer","reserved"], +1475'245': ["lowest level of the wet bulb zero","reserved"], +1476'246': ["maximum equivalent potential temperature level","reserved"], +1477'247': ["equilibrium level","reserved"], +1478'248': ["shallow convective cloud bottom level","reserved"], +1479'249': ["shallow convective cloud top level","reserved"], +1480'250': ["reserved","reserved"], +1481'251': ["deep convective cloud bottom level","reserved"], +1482'252': ["deep convective cloud top level","reserved"], +1483'253': ["lowest bottom level of supercooled liquid water layer","reserved"], +1484'254': ["highest top level of supercooled liquid water layer","reserved"], +1485'255': ["missing","reserved"], +1486}

    @@ -1650,7 +1807,7 @@

    table_4_0 = - {'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 optical properties of 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 (DEPRECATED) (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-75': 'Reserved', '76': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source or sink. (see Template 4.76)', '77': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source or sink. (see Template 4.77)', '78': '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 with source or sink. (see Template 4.78)', '79': '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 with source or sink. (see Template 4.79)', '80': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol with source or sink. (see Template 4.80)', '81': '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 with source or sink. (see Template 4.81)', '82': '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 with source or sink. (see Template 4.82)', '83': '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 with source or sink. (see Template 4.83)', '84': '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 with source or sink. (see Template 4.84)', '85': '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.85)', '86': 'Quantile forecasts at a horizontal level or in a horizontal layer at a point in time. (see Template 4.86)', '87': 'Quantile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval. (see Template 4.87)', '88': 'Analysis or forecast at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.88)', '89-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': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.92)', '93': 'Post-processing analysis or forecast at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.93)', '94': 'Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.94)', '95': 'Average, accumulation, extreme values or other statiscally processed value at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.95)', '96': 'Average, accumulation, extreme values or other statistically processed values of an individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.96)', '97': 'Average, accumulation, extreme values or other statistically processed values of post-processing analysis or forecast at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.97)', '98': 'Average, accumulation, extreme values or other statistically processed values of a post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.98)', '99': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with explicit list of frequencies and directions (see Template 4.99)', '100': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with explicit list of frequencies and directions (see Template 4.100)', '101': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with frequencies and directions defined by formulae (see Template 4.101)', '102': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with frequencies and directions defined by formulae (see Template 4.102)', '103': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for waves selected by period range (see Template 4.103)', '104': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for waves selected by period range (see Template 4.104)', '105': 'Anomalies, significance and other derived products from an analysis or forecast in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (see Template 4.105)', '99-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'} + {'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 optical properties of 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 (DEPRECATED) (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-75': 'Reserved', '76': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source or sink. (see Template 4.76)', '77': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source or sink. (see Template 4.77)', '78': '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 with source or sink. (see Template 4.78)', '79': '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 with source or sink. (see Template 4.79)', '80': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol with source or sink. (see Template 4.80)', '81': '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 with source or sink. (see Template 4.81)', '82': '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 with source or sink. (see Template 4.82)', '83': '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 with source or sink. (see Template 4.83)', '84': '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 with source or sink. (see Template 4.84)', '85': '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.85)', '86': 'Quantile forecasts at a horizontal level or in a horizontal layer at a point in time. (see Template 4.86)', '87': 'Quantile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval. (see Template 4.87)', '88': 'Analysis or forecast at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.88)', '89-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': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.92)', '93': 'Post-processing analysis or forecast at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.93)', '94': 'Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.94)', '95': 'Average, accumulation, extreme values or other statiscally processed value at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.95)', '96': 'Average, accumulation, extreme values or other statistically processed values of an individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.96)', '97': 'Average, accumulation, extreme values or other statistically processed values of post-processing analysis or forecast at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.97)', '98': 'Average, accumulation, extreme values or other statistically processed values of a post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.98)', '99': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with explicit list of frequencies and directions (see Template 4.99)', '100': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with explicit list of frequencies and directions (see Template 4.100)', '101': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with frequencies and directions defined by formulae (see Template 4.101)', '102': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with frequencies and directions defined by formulae (see Template 4.102)', '103': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for waves selected by period range (see Template 4.103)', '104': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for waves selected by period range (see Template 4.104)', '105': 'Anomalies, significance and other derived products from an analysis or forecast in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (see Template 4.105)', '106': 'Anomalies, significance and other derived products from an individual ensemble forecast, control and perturbed in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (see Template 4.106)', '107': 'Anomalies, significance and other derived products from derived forecasts based on all ensemble members in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (see Template 4.107)', '108': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for generic optical products (see Template 4.108)', '109': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for generic optical products (see Template 4.109)', '110': '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 for generic optical products (see Template 4.110)', '111': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for generic optical products (see Template 4.111)', '112': 'Anomalies, significance and other derived products as probability forecasts in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (see Template 4.112)', '113-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'}
    @@ -1663,7 +1820,7 @@

    table_4_3 = - {'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-254': 'Reserved for Local Use', '192': 'Forecast Confidence Indicator', '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'} + {'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': 'First guess', '20': 'Analysis increment', '21': 'Initialization increment for analysis', '22-191': 'Reserved', '192-254': 'Reserved for Local Use', '192': 'Forecast Confidence Indicator', '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'}
    @@ -1689,7 +1846,7 @@

    table_4_5 = - {'0': ['Reserved', 'unknown'], '1': ['Ground or Water Surface', 'unknown'], '2': ['Cloud Base Level', 'unknown'], '3': ['Level of Cloud Tops', 'unknown'], '4': ['Level of 0o C Isotherm', 'unknown'], '5': ['Level of Adiabatic Condensation Lifted from the Surface', 'unknown'], '6': ['Maximum Wind Level', 'unknown'], '7': ['Tropopause', 'unknown'], '8': ['Nominal Top of the Atmosphere', 'unknown'], '9': ['Sea Bottom', 'unknown'], '10': ['Entire Atmosphere', 'unknown'], '11': ['Cumulonimbus Base (CB)', 'm'], '12': ['Cumulonimbus Top (CT)', 'm'], '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)', 'unknown'], '15': ['Convection condensation level (CCL)', 'unknown'], '16': ['Level of neutral buoyancy or equilibrium (LNB)', 'unknown'], '17-19': ['Reserved', 'unknown'], '20': ['Isothermal Level', 'K'], '21': ['Lowest level where mass density exceeds the specified value (base for a given threshold of mass density)', 'kg m-3'], '22': ['Highest level where mass density exceeds the specified value (top for a given threshold of mass density)', 'kg m-3'], '23': ['Lowest level where air concentration exceeds the specified value (base for a given threshold of air concentration', 'Bq m-3'], '24': ['Highest level where air concentration exceeds the specified value (top for a given threshold of air concentration)', 'Bq m-3'], '25': ['Highest level where radar reflectivity exceeds the specified value (echo top for a given threshold of reflectivity)', 'dBZ'], '26': ['Convective cloud layer base', 'm'], '27': ['Convective cloud layer top', 'm'], '28-29': ['Reserved', 'unknown'], '30': ['Specified radius from the centre of the Sun', 'm'], '31': ['Ionospheric D-region level', 'unknown'], '32': ['Ionospheric E-region level', 'unknown'], '33': ['Ionospheric F1-region level', 'unknown'], '34': ['Ionospheric F1-region level', 'unknown'], '35': ['Ionospheric F2-region level', 'unknown'], '36-99': ['Reserved', 'unknown'], '100': ['Isobaric Surface', 'Pa'], '101': ['Mean Sea Level', 'unknown'], '102': ['Specific Altitude Above Mean Sea Level', 'm'], '103': ['Specified Height Level Above Ground', 'm'], '104': ['Sigma Level', 'unknown'], '105': ['Hybrid Level', 'unknown'], '106': ['Depth Below Land Surface', 'm'], '107': ['Isentropic (theta) Level', 'K'], '108': ['Level at Specified Pressure Difference from Ground to Level', 'Pa'], '109': ['Potential Vorticity Surface', 'K m2 kg-1 s-1'], '110': ['Reserved', 'unknown'], '111': ['Eta Level', 'unknown'], '112': ['Reserved', 'unknown'], '113': ['Logarithmic Hybrid Level', 'unknown'], '114': ['Snow Level', 'Numeric'], '115': ['Sigma height level', 'unknown'], '116': ['Reserved', 'unknown'], '117': ['Mixed Layer Depth', 'm'], '118': ['Hybrid Height Level', 'unknown'], '119': ['Hybrid Pressure Level', 'unknown'], '120-149': ['Reserved', 'unknown'], '150': ['Generalized Vertical Height Coordinate', 'unknown'], '151': ['Soil level', 'Numeric'], '152': ['Sea-ice level,(see Note 8)', 'Numeric'], '153-159': ['Reserved', 'unknown'], '160': ['Depth Below Sea Level', 'm'], '161': ['Depth Below Water Surface', 'm'], '162': ['Lake or River Bottom', 'unknown'], '163': ['Bottom Of Sediment Layer', 'unknown'], '164': ['Bottom Of Thermally Active Sediment Layer', 'unknown'], '165': ['Bottom Of Sediment Layer Penetrated By Thermal Wave', 'unknown'], '166': ['Mixing Layer', 'unknown'], '167': ['Bottom of Root Zone', 'unknown'], '168': ['Ocean Model Level', 'Numeric'], '169': ['Ocean level defined by water density (sigma-theta) difference from near-surface to level', 'kg m-3'], '170': ['Ocean level defined by water potential temperature difference from near-surface to level', 'K'], '171': ['Ocean level defined by vertical eddy diffusivity difference from near-surface to level,(see Note 7)', 'm2 s-1'], '172-173': ['Reserved', 'unknown'], '174': ['Top Surface of Ice on Sea, Lake or River', 'unknown'], '175': ['Top Surface of Ice, under Snow, on Sea, Lake or River', 'unknown'], '176': ['Bottom Surface (underside) Ice on Sea, Lake or River', 'unknown'], '177': ['Deep Soil (of indefinite depth)', 'unknown'], '178': ['Reserved', 'unknown'], '179': ['Top Surface of Glacier Ice and Inland Ice', 'unknown'], '180': ['Deep Inland or Glacier Ice (of indefinite depth)', 'unknown'], '181': ['Grid Tile Land Fraction as a Model Surface', 'unknown'], '182': ['Grid Tile Water Fraction as a Model Surface', 'unknown'], '183': ['Grid Tile Ice Fraction on Sea, Lake or River as a Model Surface', 'unknown'], '184': ['Grid Tile Glacier Ice and Inland Ice Fraction as a Model Surface', 'unknown'], '185-191': ['Reserved', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown'], '200': ['Entire atmosphere (considered as a single layer)', 'unknown'], '201': ['Entire ocean (considered as a single layer)', 'unknown'], '204': ['Highest tropospheric freezing level', 'unknown'], '206': ['Grid scale cloud bottom level', 'unknown'], '207': ['Grid scale cloud top level', 'unknown'], '209': ['Boundary layer cloud bottom level', 'unknown'], '210': ['Boundary layer cloud top level', 'unknown'], '211': ['Boundary layer cloud layer', 'unknown'], '212': ['Low cloud bottom level', 'unknown'], '213': ['Low cloud top level', 'unknown'], '214': ['Low cloud layer', 'unknown'], '215': ['Cloud ceiling', 'unknown'], '216': ['Effective Layer Top Level', 'm'], '217': ['Effective Layer Bottom Level', 'm'], '218': ['Effective Layer', 'm'], '220': ['Planetary Boundary Layer', 'unknown'], '221': ['Layer Between Two Hybrid Levels', 'unknown'], '222': ['Middle cloud bottom level', 'unknown'], '223': ['Middle cloud top level', 'unknown'], '224': ['Middle cloud layer', 'unknown'], '232': ['High cloud bottom level', 'unknown'], '233': ['High cloud top level', 'unknown'], '234': ['High cloud layer', 'unknown'], '235': ['Ocean Isotherm Level (1/10 ° C)', 'unknown'], '236': ['Layer between two depths below ocean surface', 'unknown'], '237': ['Bottom of Ocean Mixed Layer (m)', 'unknown'], '238': ['Bottom of Ocean Isothermal Layer (m)', 'unknown'], '239': ['Layer Ocean Surface and 26C Ocean Isothermal Level', 'unknown'], '240': ['Ocean Mixed Layer', 'unknown'], '241': ['Ordered Sequence of Data', 'unknown'], '242': ['Convective cloud bottom level', 'unknown'], '243': ['Convective cloud top level', 'unknown'], '244': ['Convective cloud layer', 'unknown'], '245': ['Lowest level of the wet bulb zero', 'unknown'], '246': ['Maximum equivalent potential temperature level', 'unknown'], '247': ['Equilibrium level', 'unknown'], '248': ['Shallow convective cloud bottom level', 'unknown'], '249': ['Shallow convective cloud top level', 'unknown'], '251': ['Deep convective cloud bottom level', 'unknown'], '252': ['Deep convective cloud top level', 'unknown'], '253': ['Lowest bottom level of supercooled liquid water layer', 'unknown'], '254': ['Highest top level of supercooled liquid water layer', 'unknown'], '255': ['Missing', 'unknown']} + {'0': ['Reserved', 'unknown'], '1': ['Ground or Water Surface', 'unknown'], '2': ['Cloud Base Level', 'unknown'], '3': ['Level of Cloud Tops', 'unknown'], '4': ['Level of 0o C Isotherm', 'unknown'], '5': ['Level of Adiabatic Condensation Lifted from the Surface', 'unknown'], '6': ['Maximum Wind Level', 'unknown'], '7': ['Tropopause', 'unknown'], '8': ['Nominal Top of the Atmosphere', 'unknown'], '9': ['Sea Bottom', 'unknown'], '10': ['Entire Atmosphere', 'unknown'], '11': ['Cumulonimbus Base (CB)', 'm'], '12': ['Cumulonimbus Top (CT)', 'm'], '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)', 'unknown'], '15': ['Convection condensation level (CCL)', 'unknown'], '16': ['Level of neutral buoyancy or equilibrium (LNB)', 'unknown'], '17': ['Departure level of the most unstable parcel of air (MUDL)', 'unknown'], '18': ['Departure level of a mixed layer parcel of air with specified layer depth', 'Pa'], '19': ['Reserved', 'unknown'], '20': ['Isothermal Level', 'K'], '21': ['Lowest level where mass density exceeds the specified value (base for a given threshold of mass density)', 'kg m-3'], '22': ['Highest level where mass density exceeds the specified value (top for a given threshold of mass density)', 'kg m-3'], '23': ['Lowest level where air concentration exceeds the specified value (base for a given threshold of air concentration', 'Bq m-3'], '24': ['Highest level where air concentration exceeds the specified value (top for a given threshold of air concentration)', 'Bq m-3'], '25': ['Highest level where radar reflectivity exceeds the specified value (echo top for a given threshold of reflectivity)', 'dBZ'], '26': ['Convective cloud layer base', 'm'], '27': ['Convective cloud layer top', 'm'], '28-29': ['Reserved', 'unknown'], '30': ['Specified radius from the centre of the Sun', 'm'], '31': ['Solar photosphere', 'unknown'], '32': ['Ionospheric D-region level', 'unknown'], '33': ['Ionospheric E-region level', 'unknown'], '34': ['Ionospheric F1-region level', 'unknown'], '35': ['Ionospheric F2-region level', 'unknown'], '36-99': ['Reserved', 'unknown'], '100': ['Isobaric Surface', 'Pa'], '101': ['Mean Sea Level', 'unknown'], '102': ['Specific Altitude Above Mean Sea Level', 'm'], '103': ['Specified Height Level Above Ground', 'm'], '104': ['Sigma Level', 'unknown'], '105': ['Hybrid Level', 'unknown'], '106': ['Depth Below Land Surface', 'm'], '107': ['Isentropic (theta) Level', 'K'], '108': ['Level at Specified Pressure Difference from Ground to Level', 'Pa'], '109': ['Potential Vorticity Surface', 'K m2 kg-1 s-1'], '110': ['Reserved', 'unknown'], '111': ['Eta Level', 'unknown'], '112': ['Reserved', 'unknown'], '113': ['Logarithmic Hybrid Level', 'unknown'], '114': ['Snow Level', 'Numeric'], '115': ['Sigma height level', 'unknown'], '116': ['Reserved', 'unknown'], '117': ['Mixed Layer Depth', 'm'], '118': ['Hybrid Height Level', 'unknown'], '119': ['Hybrid Pressure Level', 'unknown'], '120-149': ['Reserved', 'unknown'], '150': ['Generalized Vertical Height Coordinate', 'unknown'], '151': ['Soil level', 'Numeric'], '152': ['Sea-ice level,(see Note 8)', 'Numeric'], '153-159': ['Reserved', 'unknown'], '160': ['Depth Below Sea Level', 'm'], '161': ['Depth Below Water Surface', 'm'], '162': ['Lake or River Bottom', 'unknown'], '163': ['Bottom Of Sediment Layer', 'unknown'], '164': ['Bottom Of Thermally Active Sediment Layer', 'unknown'], '165': ['Bottom Of Sediment Layer Penetrated By Thermal Wave', 'unknown'], '166': ['Mixing Layer', 'unknown'], '167': ['Bottom of Root Zone', 'unknown'], '168': ['Ocean Model Level', 'Numeric'], '169': ['Ocean level defined by water density (sigma-theta) difference from near-surface to level', 'kg m-3'], '170': ['Ocean level defined by water potential temperature difference from near-surface to level', 'K'], '171': ['Ocean level defined by vertical eddy diffusivity difference from near-surface to level,(see Note 7)', 'm2 s-1'], '172-173': ['Reserved', 'unknown'], '174': ['Top Surface of Ice on Sea, Lake or River', 'unknown'], '175': ['Top Surface of Ice, under Snow, on Sea, Lake or River', 'unknown'], '176': ['Bottom Surface (underside) Ice on Sea, Lake or River', 'unknown'], '177': ['Deep Soil (of indefinite depth)', 'unknown'], '178': ['Reserved', 'unknown'], '179': ['Top Surface of Glacier Ice and Inland Ice', 'unknown'], '180': ['Deep Inland or Glacier Ice (of indefinite depth)', 'unknown'], '181': ['Grid Tile Land Fraction as a Model Surface', 'unknown'], '182': ['Grid Tile Water Fraction as a Model Surface', 'unknown'], '183': ['Grid Tile Ice Fraction on Sea, Lake or River as a Model Surface', 'unknown'], '184': ['Grid Tile Glacier Ice and Inland Ice Fraction as a Model Surface', 'unknown'], '185-191': ['Reserved', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown'], '200': ['Entire atmosphere (considered as a single layer)', 'unknown'], '201': ['Entire ocean (considered as a single layer)', 'unknown'], '204': ['Highest tropospheric freezing level', 'unknown'], '206': ['Grid scale cloud bottom level', 'unknown'], '207': ['Grid scale cloud top level', 'unknown'], '209': ['Boundary layer cloud bottom level', 'unknown'], '210': ['Boundary layer cloud top level', 'unknown'], '211': ['Boundary layer cloud layer', 'unknown'], '212': ['Low cloud bottom level', 'unknown'], '213': ['Low cloud top level', 'unknown'], '214': ['Low cloud layer', 'unknown'], '215': ['Cloud ceiling', 'unknown'], '216': ['Effective Layer Top Level', 'm'], '217': ['Effective Layer Bottom Level', 'm'], '218': ['Effective Layer', 'm'], '220': ['Planetary Boundary Layer', 'unknown'], '221': ['Layer Between Two Hybrid Levels', 'unknown'], '222': ['Middle cloud bottom level', 'unknown'], '223': ['Middle cloud top level', 'unknown'], '224': ['Middle cloud layer', 'unknown'], '232': ['High cloud bottom level', 'unknown'], '233': ['High cloud top level', 'unknown'], '234': ['High cloud layer', 'unknown'], '235': ['Ocean Isotherm Level (1/10 ° C)', 'unknown'], '236': ['Layer between two depths below ocean surface', 'unknown'], '237': ['Bottom of Ocean Mixed Layer (m)', 'unknown'], '238': ['Bottom of Ocean Isothermal Layer (m)', 'unknown'], '239': ['Layer Ocean Surface and 26C Ocean Isothermal Level', 'unknown'], '240': ['Ocean Mixed Layer', 'unknown'], '241': ['Ordered Sequence of Data', 'unknown'], '242': ['Convective cloud bottom level', 'unknown'], '243': ['Convective cloud top level', 'unknown'], '244': ['Convective cloud layer', 'unknown'], '245': ['Lowest level of the wet bulb zero', 'unknown'], '246': ['Maximum equivalent potential temperature level', 'unknown'], '247': ['Equilibrium level', 'unknown'], '248': ['Shallow convective cloud bottom level', 'unknown'], '249': ['Shallow convective cloud top level', 'unknown'], '251': ['Deep convective cloud bottom level', 'unknown'], '252': ['Deep convective cloud top level', 'unknown'], '253': ['Lowest bottom level of supercooled liquid water layer', 'unknown'], '254': ['Highest top level of supercooled liquid water layer', 'unknown'], '255': ['Missing', 'unknown']}
    @@ -1754,7 +1911,7 @@

    table_4_10 = - {'0': 'Average', '1': 'Accumulation', '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)', '8': 'Difference ( value at the beginning of the time range minus value at the end)', '9': 'Ratio', '13-191': 'Reserved', '192-254': 'Reserved for Local Use', '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. If 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. If 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.', '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', '255': 'Missing'} + {'0': 'Average', '1': 'Accumulation', '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)', '8': 'Difference ( value at the beginning of the time range minus value at the end)', '9': 'Ratio', '10': 'Standardized Anomaly', '11': 'Summation', '12': 'Return period', '13-99': 'Reserved', '100': 'Severity', '101': 'Mode', '102-191': 'Reserved', '192-254': 'Reserved for Local Use', '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. If 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. If 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.', '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', '255': 'Missing'}
    @@ -2098,6 +2255,71 @@

    + +
    +
    + table_4_234 = + + {'1': 'Crops, mixed farming', '2': 'Short grass', '3': 'Evergreen needleleaf trees', '4': 'Deciduous needleleaf trees', '5': 'Deciduous broadleaf trees', '6': 'Evergreen broadleaf trees', '7': 'Tall grass', '8': 'Desert', '9': 'Tundra', '10': 'Irrigated corps', '11': 'Semidesert', '12': 'Ice caps and glaciers', '13': 'Bogs and marshes', '14': 'Inland water', '15': 'Ocean', '16': 'Evergreen shrubs', '17': 'Deciduous shrubs', '18': 'Mixed forest', '19': 'Interrupted forest', '20': 'Water and land mixtures', '21-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'} + + +
    + + + + +
    +
    +
    + table_4_235 = + + {'0': 'Total Wave Spectrum (combined wind waves and swell)', '1': 'Generalized Partition', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'} + + +
    + + + + +
    +
    +
    + table_4_236 = + + {'1': 'Coarse', '2': 'Medium', '3': 'Medium-fine', '4': 'Fine', '5': 'Very-fine', '6': 'Organic', '7': 'Tropical-organic', '8-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'} + + +
    + + + + +
    +
    +
    + table_4_238 = + + {'0': 'Reserved', '1': 'Aviation', '2': 'Lightning', '3': 'Biogenic Sources', '4': 'Anthropogenic sources', '5': 'Wild fires', '6': 'Natural sources', '7': 'Bio-fuel', '8': 'Volcanoes', '9': 'Fossil-fuel', '10': 'Wetlands', '11': 'Oceans', '12': 'Elevated anthropogenic sources', '13': 'Surface anthropogenic sources', '14': 'Agriculture livestock', '15': 'Agriculture soils', '16': 'Agriculture waste burning', '17': 'Agriculture (all)', '18': 'Residential, commercial and other combustion', '19': 'Power generation', '20': 'Super power stations', '21': 'Fugitives', '22': 'Industrial process', '23': 'Solvents', '24': 'Ships', '25': 'Wastes', '26': 'Road transportation', '27': 'Off-road transportation', '28-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'} + + +
    + + + + +
    +
    +
    + table_4_239 = + + {'0': 'Reserved', '1': 'Bog', '2': 'Drained', '3': 'Fen', '4': 'Floodplain', '5': 'Mangrove', '6': 'Marsh', '7': 'Rice', '8': 'Riverine', '9': 'Salt Marsh', '10': 'Swamp', '11': 'Upland', '12': 'Wet tundra', '13-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'} + + +
    + + + +
    @@ -2111,6 +2333,19 @@

    +

    +
    +
    + table_4_244 = + + {'0': 'No Quality Information Available', '1': 'Failed', '2': 'Passed', '3-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'} + + +
    + + + +
    @@ -2176,6 +2411,19 @@

    +

    +
    +
    + table_4_251 = + + {'0': 'Undefined Sequence', '1': 'Geometric sequence,(see Note 1)', '2': 'Arithmetic sequence,(see Note 2)', '3-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'} + + +
    + + + +
    diff --git a/docs/grib2io/tables/section4_discipline0.html b/docs/grib2io/tables/section4_discipline0.html index 1baa569..42acc6a 100644 --- a/docs/grib2io/tables/section4_discipline0.html +++ b/docs/grib2io/tables/section4_discipline0.html @@ -168,7 +168,7 @@

    46'201':['Shallow Convective Heating Rate','K s-1','SHAHR'], 47'202':['Vertical Diffusion Heating rate','K s-1','VDFHR'], 48'203':['Potential Temperature at Top of Viscous Sublayer','K','THZ0'], - 49'204':['Tropical Cyclone Heat Potential','Jm-2K','TCHP'], + 49'204':['Tropical Cyclone Heat Potential','J m-2 K','TCHP'], 50'205':['Effective Layer (EL) Temperature','C','ELMELT'], 51'206':['Wet Bulb Globe Temperature','K','WETGLBT'], 52'255':['Missing','unknown','unknown'], @@ -303,755 +303,804 @@

    181'126':['Presence of blizzard','See Table 4.222','PBLIZZ'], 182'127':['Ice pellets (non-water equivalent) precipitation rate','m s-1','ICEP'], 183'128':['Total solid precipitation rate','kg m-2 s-1','TSPRATE'], -184'129':['Effective radius of cloud water','m','ERADCW'], -185'130':['Effective radius of rain','m','ERADRAIN'], -186'131':['Effective radius of cloud ice','m','ERADCICE'], -187'132':['Effective radius of snow','m','ERADSNOW'], -188'133':['Effective radius of graupel','m','ERADGRL'], -189'134':['Effective radius of hail','m','ERADHAIL'], -190'135':['Effective radius of subgrid liquid clouds','m','ERADSLC'], -191'136':['Effective radius of subgrid ice clouds','m','ERADSIC'], -192'137':['Effective aspect ratio of rain','unknown','ERATIOR'], -193'138':['Effective aspect ratio of cloud ice','unknown','ERATIOCI'], -194'139':['Effective aspect ratio of snow','unknown','ERATIOS'], -195'140':['Effective aspect ratio of graupel','unknown','ERATIOG'], -196'141':['Effective aspect ratio of hail','unknown','ERATIOH'], -197'142':['Effective ratio of subgrid ice clouds','unknown','ERATOSIC'], +184'129':['Effective Radius of Cloud Water','m','EFRCWAT'], +185'130':['Effective Radius of Rain','m','EFRRAIN'], +186'131':['Effective Radius of Cloud Ice','m','EFRCICE'], +187'132':['Effective Radius of Snow','m','EFRSNOW'], +188'133':['Effective Radius of Graupel','m','EFRGRL'], +189'134':['Effective Radius of Hail','m','EFRHAIL'], +190'135':['Effective Radius of Subgrid Liquid Clouds','m','EFRSLC'], +191'136':['Effective Radius of Subgrid Ice Clouds','m','EFRSICEC'], +192'137':['Effective Aspect Ratio of Rain','unknown','EFARRAIN'], +193'138':['Effective Aspect Ratio of Cloud Ice','unknown','EFARCICE'], +194'139':['Effective Aspect Ratio of Snow','unknown','EFARSNOW'], +195'140':['Effective Aspect Ratio of Graupel','unknown','EFARGRL'], +196'141':['Effective Aspect Ratio of Hail','unknown','EFARHAIL'], +197'142':['Effective Aspect Ratio of Subgrid Ice Clouds','unknown','EFARSIC'], 198'143':['Potential evaporation rate','kg m-2 s-1','PERATE'], 199'144':['Specific rain water content (convective)','kg kg-1','SRWATERC'], 200'145':['Specific snow water content (convective)','kg kg-1','SSNOWWC'], 201'146':['Cloud ice precipitation rate','kg m-2 s-1','CICEPR'], -202'147':['Character of precipitation','See Table 4.249','PERATE'], +202'147':['Character of precipitation','See Table 4.249','CHPRECIP'], 203'148':['Snow evaporation rate','kg m-2 s-1','SNOWERAT'], 204'149':['Cloud water mixing ratio','kg kg-1','CWATERMR'], -205'150-128':['Reserved','unknown','unknown'], -206'129':['Effective Radius of Cloud Water','m','EFRCWAT'], -207'130':['Effective Radius of Rain','m','EFRRAIN'], -208'131':['Effective Radius of Cloud Ice','m','EFRCICE'], -209'132':['Effective Radius of Snow','m','EFRSNOW'], -210'133':['Effective Radius of Graupel','m','EFRGRL'], -211'134':['Effective Radius of Hail','m','EFRHAIL'], -212'135':['Effective Radius of Subgrid Liquid Clouds','m','EFRSLC'], -213'136':['Effective Radius of Subgrid Ice Clouds','m','EFRSICEC'], -214'137':['Effective Aspect Ratio of Rain','unknown','EFARRAIN'], -215'138':['Effective Aspect Ratio of Cloud Ice','unknown','EFARCICE'], -216'139':['Effective Aspect Ratio of Snow','unknown','EFARSNOW'], -217'140':['Effective Aspect Ratio of Graupel','unknown','EFARGRL'], -218'141':['Effective Aspect Ratio of Hail','unknown','EFARHAIL'], -219'142':['Effective Aspect Ratio of Subgrid Ice Clouds','unknown','EFARSIC'], -220'143-191':['Reserved','unknown','unknown'], -221'192-254':['Reserved for Local Use','unknown','unknown'], -222'192':['Categorical Rain','Code table 4.222','CRAIN'], -223'193':['Categorical Freezing Rain','Code table 4.222','CFRZR'], -224'194':['Categorical Ice Pellets','Code table 4.222','CICEP'], -225'195':['Categorical Snow','Code table 4.222','CSNOW'], -226'196':['Convective Precipitation Rate','kg m-2 s-1','CPRAT'], -227'197':['Horizontal Moisture Divergence','kg kg-1 s-1','MDIV'], -228'198':['Minimum Relative Humidity','%','MINRH'], -229'199':['Potential Evaporation','kg m-2','PEVAP'], -230'200':['Potential Evaporation Rate','W m-2','PEVPR'], -231'201':['Snow Cover','%','SNOWC'], -232'202':['Rain Fraction of Total Liquid Water','non-dim','FRAIN'], -233'203':['Rime Factor','non-dim','RIME'], -234'204':['Total Column Integrated Rain','kg m-2','TCOLR'], -235'205':['Total Column Integrated Snow','kg m-2','TCOLS'], -236'206':['Total Icing Potential Diagnostic','non-dim','TIPD'], -237'207':['Number concentration for ice particles','non-dim','NCIP'], -238'208':['Snow temperature','K','SNOT'], -239'209':['Total column-integrated supercooled liquid water','kg m-2','TCLSW'], -240'210':['Total column-integrated melting ice','kg m-2','TCOLM'], -241'211':['Evaporation - Precipitation','cm/day','EMNP'], -242'212':['Sublimation (evaporation from snow)','W m-2','SBSNO'], -243'213':['Deep Convective Moistening Rate','kg kg-1 s-1','CNVMR'], -244'214':['Shallow Convective Moistening Rate','kg kg-1 s-1','SHAMR'], -245'215':['Vertical Diffusion Moistening Rate','kg kg-1 s-1','VDFMR'], -246'216':['Condensation Pressure of Parcali Lifted From Indicate Surface','Pa','CONDP'], -247'217':['Large scale moistening rate','kg kg-1 s-1','LRGMR'], -248'218':['Specific humidity at top of viscous sublayer','kg kg-1','QZ0'], -249'219':['Maximum specific humidity at 2m','kg kg-1','QMAX'], -250'220':['Minimum specific humidity at 2m','kg kg-1','QMIN'], -251'221':['Liquid precipitation (Rainfall)','kg m-2','ARAIN'], -252'222':['Snow temperature, depth-avg','K','SNOWT'], -253'223':['Total precipitation (nearest grid point)','kg m-2','APCPN'], -254'224':['Convective precipitation (nearest grid point)','kg m-2','ACPCPN'], -255'225':['Freezing Rain','kg m-2','FRZR'], -256'226':['Predominant Weather','Numeric','PWTHER'], -257'227':['Frozen Rain','kg m-2','FROZR'], -258'228':['Flat Ice Accumulation (FRAM)','kg m-2','FICEAC'], -259'229':['Line Ice Accumulation (FRAM)','kg m-2','LICEAC'], -260'230':['Sleet Accumulation','kg m-2','SLACC'], -261'231':['Precipitation Potential Index','%','PPINDX'], -262'232':['Probability Cloud Ice Present','%','PROBCIP'], -263'233':['Snow Liquid ratio','kg kg-1','SNOWLR'], -264'234':['Precipitation Duration','hour','PCPDUR'], -265'235':['Cloud Liquid Mixing Ratio','kg kg-1','CLLMR'], -266'236-240':['Reserved','unknown','unknown'], -267'241':['Total Snow','kg m-2','TSNOW'], -268'242':['Relative Humidity with Respect to Precipitable Water','%','RHPW'], -269'245':['Hourly Maximum of Column Vertical Integrated Graupel on Entire Atmosphere','kg m-2','MAXVIG'], -270'255':['Missing','unknown','unknown'], -271} -272table_4_2_0_2 = { -273'0':['Wind Direction (from which blowing)','°','WDIR'], -274'1':['Wind Speed','m s-1','WIND'], -275'2':['U-Component of Wind','m s-1','UGRD'], -276'3':['V-Component of Wind','m s-1','VGRD'], -277'4':['Stream Function','m2 s-1','STRM'], -278'5':['Velocity Potential','m2 s-1','VPOT'], -279'6':['Montgomery Stream Function','m2 s-2','MNTSF'], -280'7':['Sigma Coordinate Vertical Velocity','s-1','SGCVV'], -281'8':['Vertical Velocity (Pressure)','Pa s-1','VVEL'], -282'9':['Vertical Velocity (Geometric)','m s-1','DZDT'], -283'10':['Absolute Vorticity','s-1','ABSV'], -284'11':['Absolute Divergence','s-1','ABSD'], -285'12':['Relative Vorticity','s-1','RELV'], -286'13':['Relative Divergence','s-1','RELD'], -287'14':['Potential Vorticity','K m2 kg-1 s-1','PVORT'], -288'15':['Vertical U-Component Shear','s-1','VUCSH'], -289'16':['Vertical V-Component Shear','s-1','VVCSH'], -290'17':['Momentum Flux, U-Component','N m-2','UFLX'], -291'18':['Momentum Flux, V-Component','N m-2','VFLX'], -292'19':['Wind Mixing Energy','J','WMIXE'], -293'20':['Boundary Layer Dissipation','W m-2','BLYDP'], -294'21':['Maximum Wind Speed','m s-1','MAXGUST'], -295'22':['Wind Speed (Gust)','m s-1','GUST'], -296'23':['U-Component of Wind (Gust)','m s-1','UGUST'], -297'24':['V-Component of Wind (Gust)','m s-1','VGUST'], -298'25':['Vertical Speed Shear','s-1','VWSH'], -299'26':['Horizontal Momentum Flux','N m-2','MFLX'], -300'27':['U-Component Storm Motion','m s-1','USTM'], -301'28':['V-Component Storm Motion','m s-1','VSTM'], -302'29':['Drag Coefficient','Numeric','CD'], -303'30':['Frictional Velocity','m s-1','FRICV'], -304'31':['Turbulent Diffusion Coefficient for Momentum','m2 s-1','TDCMOM'], -305'32':['Eta Coordinate Vertical Velocity','s-1','ETACVV'], -306'33':['Wind Fetch','m','WINDF'], -307'34':['Normal Wind Component','m s-1','NWIND'], -308'35':['Tangential Wind Component','m s-1','TWIND'], -309'36':['Amplitude Function for Rossby Wave Envelope for Meridional Wind','m s-1','AFRWE'], -310'37':['Northward Turbulent Surface Stress','N m-2 s','NTSS'], -311'38':['Eastward Turbulent Surface Stress','N m-2 s','ETSS'], -312'39':['Eastward Wind Tendency Due to Parameterizations','m s-2','EWTPARM'], -313'40':['Northward Wind Tendency Due to Parameterizations','m s-2','NWTPARM'], -314'41':['U-Component of Geostrophic Wind','m s-1','UGWIND'], -315'42':['V-Component of Geostrophic Wind','m s-1','VGWIND'], -316'43':['Geostrophic Wind Direction','°','GEOWD'], -317'44':['Geostrophic Wind Speed','m s-1','GEOWS'], -318'45':['Unbalanced Component of Divergence','s-1','UNDIV'], -319'46':['Vorticity Advection','s-2','VORTADV'], -320'47':['Surface roughness for heat,(see Note 5)','m','SFRHEAT'], -321'48':['Surface roughness for moisture,(see Note 6)','m','SFRMOIST'], -322'49-191':['Reserved','unknown','unknown'], -323'192-254':['Reserved for Local Use','unknown','unknown'], -324'192':['Vertical Speed Shear','s-1','VWSH'], -325'193':['Horizontal Momentum Flux','N m-2','MFLX'], -326'194':['U-Component Storm Motion','m s-1','USTM'], -327'195':['V-Component Storm Motion','m s-1','VSTM'], -328'196':['Drag Coefficient','non-dim','CD'], -329'197':['Frictional Velocity','m s-1','FRICV'], -330'198':['Latitude of U Wind Component of Velocity','deg','LAUV'], -331'199':['Longitude of U Wind Component of Velocity','deg','LOUV'], -332'200':['Latitude of V Wind Component of Velocity','deg','LAVV'], -333'201':['Longitude of V Wind Component of Velocity','deg','LOVV'], -334'202':['Latitude of Presure Point','deg','LAPP'], -335'203':['Longitude of Presure Point','deg','LOPP'], -336'204':['Vertical Eddy Diffusivity Heat exchange','m2 s-1','VEDH'], -337'205':['Covariance between Meridional and Zonal Components of the wind.','m2 s-2','COVMZ'], -338'206':['Covariance between Temperature and Zonal Components of the wind.','K*m s-1','COVTZ'], -339'207':['Covariance between Temperature and Meridional Components of the wind.','K*m s-1','COVTM'], -340'208':['Vertical Diffusion Zonal Acceleration','m s-2','VDFUA'], -341'209':['Vertical Diffusion Meridional Acceleration','m s-2','VDFVA'], -342'210':['Gravity wave drag zonal acceleration','m s-2','GWDU'], -343'211':['Gravity wave drag meridional acceleration','m s-2','GWDV'], -344'212':['Convective zonal momentum mixing acceleration','m s-2','CNVU'], -345'213':['Convective meridional momentum mixing acceleration','m s-2','CNVV'], -346'214':['Tendency of vertical velocity','m s-2','WTEND'], -347'215':['Omega (Dp/Dt) divide by density','K','OMGALF'], -348'216':['Convective Gravity wave drag zonal acceleration','m s-2','CNGWDU'], -349'217':['Convective Gravity wave drag meridional acceleration','m s-2','CNGWDV'], -350'218':['Velocity Point Model Surface','unknown','LMV'], -351'219':['Potential Vorticity (Mass-Weighted)','1/s/m','PVMWW'], -352'220':['Hourly Maximum of Upward Vertical Velocity','m s-1','MAXUVV'], -353'221':['Hourly Maximum of Downward Vertical Velocity','m s-1','MAXDVV'], -354'222':['U Component of Hourly Maximum 10m Wind Speed','m s-1','MAXUW'], -355'223':['V Component of Hourly Maximum 10m Wind Speed','m s-1','MAXVW'], -356'224':['Ventilation Rate','m2 s-1','VRATE'], -357'225':['Transport Wind Speed','m s-1','TRWSPD'], -358'226':['Transport Wind Direction','Deg','TRWDIR'], -359'227':['Earliest Reasonable Arrival Time (10% exceedance)','s','TOA10'], -360'228':['Most Likely Arrival Time (50% exceedance)','s','TOA50'], -361'229':['Most Likely Departure Time (50% exceedance)','s','TOD50'], -362'230':['Latest Reasonable Departure Time (90% exceedance)','s','TOD90'], -363'231':['Tropical Wind Direction','°','TPWDIR'], -364'232':['Tropical Wind Speed','m s-1','TPWSPD'], -365'233':['Inflow Based (ESFC) to 50% EL Shear Magnitude','kt','ESHR'], -366'234':['U Component Inflow Based to 50% EL Shear Vector','kt','UESH'], -367'235':['V Component Inflow Based to 50% EL Shear Vector','kt','VESH'], -368'236':['U Component Bunkers Effective Right Motion','kt','UEID'], -369'237':['V Component Bunkers Effective Right Motion','kt','VEID'], -370'255':['Missing','unknown','unknown'], -371} -372table_4_2_0_3 = { -373'0':['Pressure','Pa','PRES'], -374'1':['Pressure Reduced to MSL','Pa','PRMSL'], -375'2':['Pressure Tendency','Pa s-1','PTEND'], -376'3':['ICAO Standard Atmosphere Reference Height','m','ICAHT'], -377'4':['Geopotential','m2 s-2','GP'], -378'5':['Geopotential Height','gpm','HGT'], -379'6':['Geometric Height','m','DIST'], -380'7':['Standard Deviation of Height','m','HSTDV'], -381'8':['Pressure Anomaly','Pa','PRESA'], -382'9':['Geopotential Height Anomaly','gpm','GPA'], -383'10':['Density','kg m-3','DEN'], -384'11':['Altimeter Setting','Pa','ALTS'], -385'12':['Thickness','m','THICK'], -386'13':['Pressure Altitude','m','PRESALT'], -387'14':['Density Altitude','m','DENALT'], -388'15':['5-Wave Geopotential Height','gpm','5WAVH'], -389'16':['Zonal Flux of Gravity Wave Stress','N m-2','U-GWD'], -390'17':['Meridional Flux of Gravity Wave Stress','N m-2','V-GWD'], -391'18':['Planetary Boundary Layer Height','m','HPBL'], -392'19':['5-Wave Geopotential Height Anomaly','gpm','5WAVA'], -393'20':['Standard Deviation of Sub-Grid Scale Orography','m','SDSGSO'], -394'21':['Angle of Sub-Grid Scale Orography','rad','AOSGSO'], -395'22':['Slope of Sub-Grid Scale Orography','Numeric','SSGSO'], -396'23':['Gravity Wave Dissipation','W m-2','GWD'], -397'24':['Anisotropy of Sub-Grid Scale Orography','Numeric','ASGSO'], -398'25':['Natural Logarithm of Pressure in Pa','Numeric','NLPRES'], -399'26':['Exner Pressure','Numeric','EXPRES'], -400'27':['Updraught Mass Flux','kg m-2 s-1','UMFLX'], -401'28':['Downdraught Mass Flux','kg m-2 s-1','DMFLX'], -402'29':['Updraught Detrainment Rate','kg m-3 s-1','UDRATE'], -403'30':['Downdraught Detrainment Rate','kg m-3 s-1','DDRATE'], -404'31':['Unbalanced Component of Logarithm of Surface Pressure','unknown','UCLSPRS'], -405'32':['Saturation water vapour pressure','Pa','SWATERVP'], -406'33':['Geometric altitude above mean sea level','m','GAMSL'], -407'34':['Geometric height above ground level','m','GHAGRD'], -408'35-191':['Reserved','unknown','unknown'], -409'192-254':['Reserved for Local Use','unknown','unknown'], -410'192':['MSLP (Eta model reduction)','Pa','MSLET'], -411'193':['5-Wave Geopotential Height','gpm','5WAVH'], -412'194':['Zonal Flux of Gravity Wave Stress','N m-2','U-GWD'], -413'195':['Meridional Flux of Gravity Wave Stress','N m-2','V-GWD'], -414'196':['Planetary Boundary Layer Height','m','HPBL'], -415'197':['5-Wave Geopotential Height Anomaly','gpm','5WAVA'], -416'198':['MSLP (MAPS System Reduction)','Pa','MSLMA'], -417'199':['3-hr pressure tendency (Std. Atmos. Reduction)','Pa s-1','TSLSA'], -418'200':['Pressure of level from which parcel was lifted','Pa','PLPL'], -419'201':['X-gradient of Log Pressure','m-1','LPSX'], -420'202':['Y-gradient of Log Pressure','m-1','LPSY'], -421'203':['X-gradient of Height','m-1','HGTX'], -422'204':['Y-gradient of Height','m-1','HGTY'], -423'205':['Layer Thickness','m','LAYTH'], -424'206':['Natural Log of Surface Pressure','ln (kPa)','NLGSP'], -425'207':['Convective updraft mass flux','kg m-2 s-1','CNVUMF'], -426'208':['Convective downdraft mass flux','kg m-2 s-1','CNVDMF'], -427'209':['Convective detrainment mass flux','kg m-2 s-1','CNVDEMF'], -428'210':['Mass Point Model Surface','unknown','LMH'], -429'211':['Geopotential Height (nearest grid point)','gpm','HGTN'], -430'212':['Pressure (nearest grid point)','Pa','PRESN'], -431'213':['Orographic Convexity','unknown','ORCONV'], -432'214':['Orographic Asymmetry, W Component','unknown','ORASW'], -433'215':['Orographic Asymmetry, S Component','unknown','ORASS'], -434'216':['Orographic Asymmetry, SW Component','unknown','ORASSW'], -435'217':['Orographic Asymmetry, NW Component','unknown','ORASNW'], -436'218':['Orographic Length Scale, W Component','unknown','ORLSW'], -437'219':['Orographic Length Scale, S Component','unknown','ORLSS'], -438'220':['Orographic Length Scale, SW Component','unknown','ORLSSW'], -439'221':['Orographic Length Scale, NW Component','unknown','ORLSNW'], -440'222':['Effective Surface Height','m','EFSH'], -441'255':['Missing','unknown','unknown'], -442} -443table_4_2_0_4 = { -444'0':['Net Short-Wave Radiation Flux (Surface)','W m-2','NSWRS'], -445'1':['Net Short-Wave Radiation Flux (Top of Atmosphere)','W m-2','NSWRT'], -446'2':['Short-Wave Radiation Flux','W m-2','SWAVR'], -447'3':['Global Radiation Flux','W m-2','GRAD'], -448'4':['Brightness Temperature','K','BRTMP'], -449'5':['Radiance (with respect to wave number)','W m-1 sr-1','LWRAD'], -450'6':['Radiance (with respect to wavelength)','W m-3 sr-1','SWRAD'], -451'7':['Downward Short-Wave Radiation Flux','W m-2','DSWRF'], -452'8':['Upward Short-Wave Radiation Flux','W m-2','USWRF'], -453'9':['Net Short Wave Radiation Flux','W m-2','NSWRF'], -454'10':['Photosynthetically Active Radiation','W m-2','PHOTAR'], -455'11':['Net Short-Wave Radiation Flux, Clear Sky','W m-2','NSWRFCS'], -456'12':['Downward UV Radiation','W m-2','DWUVR'], -457'13':['Direct Short Wave Radiation Flux','W m-2','DSWRFLX'], -458'14':['Diffuse Short Wave Radiation Flux','W m-2','DIFSWRF'], -459'15-49':['Reserved','unknown','unknown'], -460'50':['UV Index (Under Clear Sky)','Numeric','UVIUCS'], -461'51':['UV Index','Numeric','UVI'], -462'52':['Downward Short-Wave Radiation Flux, Clear Sky','W m-2','DSWRFCS'], -463'53':['Upward Short-Wave Radiation Flux, Clear Sky','W m-2','USWRFCS'], -464'54':['Direct normal short-wave radiation flux,(see Note 3)','W m-2','DSWRFLX'], -465'55-191':['Reserved','unknown','unknown'], -466'192-254':['Reserved for Local Use','unknown','unknown'], -467'192':['Downward Short-Wave Radiation Flux','W m-2','DSWRF'], -468'193':['Upward Short-Wave Radiation Flux','W m-2','USWRF'], -469'194':['UV-B Downward Solar Flux','W m-2','DUVB'], -470'195':['Clear sky UV-B Downward Solar Flux','W m-2','CDUVB'], -471'196':['Clear Sky Downward Solar Flux','W m-2','CSDSF'], -472'197':['Solar Radiative Heating Rate','K s-1','SWHR'], -473'198':['Clear Sky Upward Solar Flux','W m-2','CSUSF'], -474'199':['Cloud Forcing Net Solar Flux','W m-2','CFNSF'], -475'200':['Visible Beam Downward Solar Flux','W m-2','VBDSF'], -476'201':['Visible Diffuse Downward Solar Flux','W m-2','VDDSF'], -477'202':['Near IR Beam Downward Solar Flux','W m-2','NBDSF'], -478'203':['Near IR Diffuse Downward Solar Flux','W m-2','NDDSF'], -479'204':['Downward Total Radiation Flux','W m-2','DTRF'], -480'205':['Upward Total Radiation Flux','W m-2','UTRF'], -481'255':['Missing','unknown','unknown'], -482} -483table_4_2_0_5 = { -484'0':['Net Long-Wave Radiation Flux (Surface)','W m-2','NLWRS'], -485'1':['Net Long-Wave Radiation Flux (Top of Atmosphere)','W m-2','NLWRT'], -486'2':['Long-Wave Radiation Flux','W m-2','LWAVR'], -487'3':['Downward Long-Wave Rad. Flux','W m-2','DLWRF'], -488'4':['Upward Long-Wave Rad. Flux','W m-2','ULWRF'], -489'5':['Net Long-Wave Radiation Flux','W m-2','NLWRF'], -490'6':['Net Long-Wave Radiation Flux, Clear Sky','W m-2','NLWRCS'], -491'7':['Brightness Temperature','K','BRTEMP'], -492'8':['Downward Long-Wave Radiation Flux, Clear Sky','W m-2','DLWRFCS'], -493'9-191':['Reserved','unknown','unknown'], -494'192-254':['Reserved for Local Use','unknown','unknown'], -495'192':['Downward Long-Wave Rad. Flux','W m-2','DLWRF'], -496'193':['Upward Long-Wave Rad. Flux','W m-2','ULWRF'], -497'194':['Long-Wave Radiative Heating Rate','K s-1','LWHR'], -498'195':['Clear Sky Upward Long Wave Flux','W m-2','CSULF'], -499'196':['Clear Sky Downward Long Wave Flux','W m-2','CSDLF'], -500'197':['Cloud Forcing Net Long Wave Flux','W m-2','CFNLF'], -501'255':['Missing','unknown','unknown'], -502} -503table_4_2_0_6 = { -504'0':['Cloud Ice','kg m-2','CICE'], -505'1':['Total Cloud Cover','%','TCDC'], -506'2':['Convective Cloud Cover','%','CDCON'], -507'3':['Low Cloud Cover','%','LCDC'], -508'4':['Medium Cloud Cover','%','MCDC'], -509'5':['High Cloud Cover','%','HCDC'], -510'6':['Cloud Water','kg m-2','CWAT'], -511'7':['Cloud Amount','%','CDCA'], -512'8':['Cloud Type','See Table 4.203','CDCT'], -513'9':['Thunderstorm Maximum Tops','m','TMAXT'], -514'10':['Thunderstorm Coverage','See Table 4.204','THUNC'], -515'11':['Cloud Base','m','CDCB'], -516'12':['Cloud Top','m','CDCTOP'], -517'13':['Ceiling','m','CEIL'], -518'14':['Non-Convective Cloud Cover','%','CDLYR'], -519'15':['Cloud Work Function','J kg-1','CWORK'], -520'16':['Convective Cloud Efficiency','Proportion','CUEFI'], -521'17':['Total Condensate','kg kg-1','TCONDO'], -522'18':['Total Column-Integrated Cloud Water','kg m-2','TCOLWO'], -523'19':['Total Column-Integrated Cloud Ice','kg m-2','TCOLIO'], -524'20':['Total Column-Integrated Condensate','kg m-2','TCOLC'], -525'21':['Ice fraction of total condensate','Proportion','FICE'], -526'22':['Cloud Cover','%','CDCC'], -527'23':['Cloud Ice Mixing Ratio','kg kg-1','CDCIMR'], -528'24':['Sunshine','Numeric','SUNS'], -529'25':['Horizontal Extent of Cumulonimbus (CB)','%','CBHE'], -530'26':['Height of Convective Cloud Base','m','HCONCB'], -531'27':['Height of Convective Cloud Top','m','HCONCT'], -532'28':['Number Concentration of Cloud Droplets','kg-1','NCONCD'], -533'29':['Number Concentration of Cloud Ice','kg-1','NCCICE'], -534'30':['Number Density of Cloud Droplets','m-3','NDENCD'], -535'31':['Number Density of Cloud Ice','m-3','NDCICE'], -536'32':['Fraction of Cloud Cover','Numeric','FRACCC'], -537'33':['Sunshine Duration','s','SUNSD'], -538'34':['Surface Long Wave Effective Total Cloudiness','Numeric','SLWTC'], -539'35':['Surface Short Wave Effective Total Cloudiness','Numeric','SSWTC'], -540'36':['Fraction of Stratiform Precipitation Cover','Proportion','FSTRPC'], -541'37':['Fraction of Convective Precipitation Cover','Proportion','FCONPC'], -542'38':['Mass Density of Cloud Droplets','kg m-3','MASSDCD'], -543'39':['Mass Density of Cloud Ice','kg m-3','MASSDCI'], -544'40':['Mass Density of Convective Cloud Water Droplets','kg m-3','MDCCWD'], -545'41-46':['Reserved','unknown','unknown'], -546'47':['Volume Fraction of Cloud Water Droplets','Numeric','VFRCWD'], -547'48':['Volume Fraction of Cloud Ice Particles','Numeric','VFRCICE'], -548'49':['Volume Fraction of Cloud (Ice and/or Water)','Numeric','VFRCIW'], -549'50-191':['Reserved','unknown','unknown'], -550'192-254':['Reserved for Local Use','unknown','unknown'], -551'192':['Non-Convective Cloud Cover','%','CDLYR'], -552'193':['Cloud Work Function','J kg-1','CWORK'], -553'194':['Convective Cloud Efficiency','non-dim','CUEFI'], -554'195':['Total Condensate','kg kg-1','TCOND'], -555'196':['Total Column-Integrated Cloud Water','kg m-2','TCOLW'], -556'197':['Total Column-Integrated Cloud Ice','kg m-2','TCOLI'], -557'198':['Total Column-Integrated Condensate','kg m-2','TCOLC'], -558'199':['Ice fraction of total condensate','non-dim','FICE'], -559'200':['Convective Cloud Mass Flux','Pa s-1','MFLUX'], -560'201':['Sunshine Duration','s','SUNSD'], -561'255':['Missing','unknown','unknown'], -562} -563table_4_2_0_7 = { -564'0':['Parcel Lifted Index (to 500 hPa)','K','PLI'], -565'1':['Best Lifted Index (to 500 hPa)','K','BLI'], -566'2':['K Index','K','KX'], -567'3':['KO Index','K','KOX'], -568'4':['Total Totals Index','K','TOTALX'], -569'5':['Sweat Index','Numeric','SX'], -570'6':['Convective Available Potential Energy','J kg-1','CAPE'], -571'7':['Convective Inhibition','J kg-1','CIN'], -572'8':['Storm Relative Helicity','m2 s-2','HLCY'], -573'9':['Energy Helicity Index','Numeric','EHLX'], -574'10':['Surface Lifted Index','K','LFT X'], -575'11':['Best (4 layer) Lifted Index','K','4LFTX'], -576'12':['Richardson Number','Numeric','RI'], -577'13':['Showalter Index','K','SHWINX'], -578'14':['Reserved','unknown','unknown'], -579'15':['Updraft Helicity','m2 s-2','UPHL'], -580'16':['Bulk Richardson Number','Numeric','BLKRN'], -581'17':['Gradient Richardson Number','Numeric','GRDRN'], -582'18':['Flux Richardson Number','Numeric','FLXRN'], -583'19':['Convective Available Potential Energy Shear','m2 s-2','CONAPES'], -584'20':['Thunderstorm intensity index','See Table 4.246','TIIDEX'], -585'21-191':['Reserved','unknown','unknown'], -586'192-254':['Reserved for Local Use','unknown','unknown'], -587'192':['Surface Lifted Index','K','LFT X'], -588'193':['Best (4 layer) Lifted Index','K','4LFTX'], -589'194':['Richardson Number','Numeric','RI'], -590'195':['Convective Weather Detection Index','unknown','CWDI'], -591'196':['Ultra Violet Index','W m-2','UVI'], -592'197':['Updraft Helicity','m2 s-2','UPHL'], -593'198':['Leaf Area Index','Numeric','LAI'], -594'199':['Hourly Maximum of Updraft Helicity','m2 s-2','MXUPHL'], -595'200':['Hourly Minimum of Updraft Helicity','m2 s-2','MNUPHL'], -596'201':['Bourgoiun Negative Energy Layer (surface to freezing level)','J kg-1','BNEGELAY'], -597'202':['Bourgoiun Positive Energy Layer (2k ft AGL to 400 hPa)','J kg-1','BPOSELAY'], -598'203':['Downdraft CAPE','J kg-1','DCAPE'], -599'204':['Effective Storm Relative Helicity','m2 s-2','EFHL'], -600'205':['Enhanced Stretching Potential','Numeric','ESP'], -601'206':['Critical Angle','Degree','CANGLE'], -602'207':['Effective Surface Helicity','m2 s-2','E3KH'], -603'208':['Significant Tornado Parameter with CIN-Effective Layer','numeric','STPC'], -604'209':['Significant Hail Parameter','numeric','SIGH'], -605'210':['Supercell Composite Parameter-Effective Layer','numeric','SCCP'], -606'211':['Significant Tornado parameter-Fixed Layer','numeric','SIGT'], -607'212':['Mixed Layer (100 mb) Virtual LFC','numeric','MLFC'], -608'255':['Missing','unknown','unknown'], -609} -610table_4_2_0_13 = { -611'0':['Aerosol Type','See Table 4.205','AEROT'], -612'1-191':['Reserved','unknown','unknown'], -613'192-254':['Reserved for Local Use','unknown','unknown'], -614'192':['Particulate matter (coarse)','µg m-3','PMTC'], -615'193':['Particulate matter (fine)','µg m-3','PMTF'], -616'194':['Particulate matter (fine)','log10 (µg m-3)','LPMTF'], -617'195':['Integrated column particulate matter (fine)','log10 (µg m-3)','LIPMF'], -618'255':['Missing','unknown','unknown'], -619} -620table_4_2_0_14 = { -621'0':['Total Ozone','DU','TOZNE'], -622'1':['Ozone Mixing Ratio','kg kg-1','O3MR'], -623'2':['Total Column Integrated Ozone','DU','TCIOZ'], -624'3-191':['Reserved','unknown','unknown'], +205'150':['Column integrated eastward water vapour mass flux','kg m-1s-1','CEWVMF'], +206'151':['Column integrated northward water vapour mass flux','kg m-1s-1','CNWVMF'], +207'152':['Column integrated eastward cloud liquid water mass flux','kg m-1s-1','CECLWMF'], +208'153':['Column integrated northward cloud liquid water mass flux','kg m-1s-1','CNCLWMF'], +209'154':['Column integrated eastward cloud ice mass flux','kg m-1s-1','CECIMF'], +210'155':['Column integrated northward cloud ice mass flux','kg m-1s-1','CNCIMF'], +211'156':['Column integrated eastward rain mass flux','kg m-1s-1','CERMF'], +212'157':['Column integrated northward rain mass flux','kg m-1s-1','CNRMF'], +213'158':['Column integrated eastward snow mass flux','kg m-1s-1','CEFMF'], +214'159':['Column integrated northward snow mass flux','kg m-1s-1','CNSMF'], +215'160':['Column integrated divergence of water vapour mass flux','kg m-1s-1','CDWFMF'], +216'161':['Column integrated divergence of cloud liquid water mass flux','kg m-1s-1','CDCLWMF'], +217'162':['Column integrated divergence of cloud ice mass flux','kg m-1s-1','CDCIMF'], +218'163':['Column integrated divergence of rain mass flux','kg m-1s-1','CDRMF'], +219'164':['Column integrated divergence of snow mass flux','kg m-1s-1','CDSMF'], +220'165':['Column integrated divergence of total water mass flux','kg m-1s-1','CDTWMF'], +221'166':['Column integrated water vapour flux','kg m-1s-1','CWVF'], +222'167':['Total column supercooled liquid water','kg m-2','TCSLW'], +223'167-191':['Reserved','unknown','unknown'], +224'192-254':['Reserved for Local Use','unknown','unknown'], +225'192':['Categorical Rain','Code table 4.222','CRAIN'], +226'193':['Categorical Freezing Rain','Code table 4.222','CFRZR'], +227'194':['Categorical Ice Pellets','Code table 4.222','CICEP'], +228'195':['Categorical Snow','Code table 4.222','CSNOW'], +229'196':['Convective Precipitation Rate','kg m-2 s-1','CPRAT'], +230'197':['Horizontal Moisture Divergence','kg kg-1 s-1','MDIV'], +231'198':['Minimum Relative Humidity','%','MINRH'], +232'199':['Potential Evaporation','kg m-2','PEVAP'], +233'200':['Potential Evaporation Rate','W m-2','PEVPR'], +234'201':['Snow Cover','%','SNOWC'], +235'202':['Rain Fraction of Total Liquid Water','non-dim','FRAIN'], +236'203':['Rime Factor','non-dim','RIME'], +237'204':['Total Column Integrated Rain','kg m-2','TCOLR'], +238'205':['Total Column Integrated Snow','kg m-2','TCOLS'], +239'206':['Total Icing Potential Diagnostic','non-dim','TIPD'], +240'207':['Number concentration for ice particles','non-dim','NCIP'], +241'208':['Snow temperature','K','SNOT'], +242'209':['Total column-integrated supercooled liquid water','kg m-2','TCLSW'], +243'210':['Total column-integrated melting ice','kg m-2','TCOLM'], +244'211':['Evaporation - Precipitation','cm/day','EMNP'], +245'212':['Sublimation (evaporation from snow)','W m-2','SBSNO'], +246'213':['Deep Convective Moistening Rate','kg kg-1 s-1','CNVMR'], +247'214':['Shallow Convective Moistening Rate','kg kg-1 s-1','SHAMR'], +248'215':['Vertical Diffusion Moistening Rate','kg kg-1 s-1','VDFMR'], +249'216':['Condensation Pressure of Parcali Lifted From Indicate Surface','Pa','CONDP'], +250'217':['Large scale moistening rate','kg kg-1 s-1','LRGMR'], +251'218':['Specific humidity at top of viscous sublayer','kg kg-1','QZ0'], +252'219':['Maximum specific humidity at 2m','kg kg-1','QMAX'], +253'220':['Minimum specific humidity at 2m','kg kg-1','QMIN'], +254'221':['Liquid precipitation (Rainfall)','kg m-2','ARAIN'], +255'222':['Snow temperature, depth-avg','K','SNOWT'], +256'223':['Total precipitation (nearest grid point)','kg m-2','APCPN'], +257'224':['Convective precipitation (nearest grid point)','kg m-2','ACPCPN'], +258'225':['Freezing Rain','kg m-2','FRZR'], +259'226':['Predominant Weather (see Local Use Note A)','Numeric','PWTHER'], +260'227':['Frozen Rain','kg m-2','FROZR'], +261'228':['Flat Ice Accumulation (FRAM)','kg m-2','FICEAC'], +262'229':['Line Ice Accumulation (FRAM)','kg m-2','LICEAC'], +263'230':['Sleet Accumulation','kg m-2','SLACC'], +264'231':['Precipitation Potential Index','%','PPINDX'], +265'232':['Probability Cloud Ice Present','%','PROBCIP'], +266'233':['Snow Liquid ratio','kg kg-1','SNOWLR'], +267'234':['Precipitation Duration','hour','PCPDUR'], +268'235':['Cloud Liquid Mixing Ratio','kg kg-1','CLLMR'], +269'236-240':['Reserved','unknown','unknown'], +270'241':['Total Snow','kg m-2','TSNOW'], +271'242':['Relative Humidity with Respect to Precipitable Water','%','RHPW'], +272'245':['Hourly Maximum of Column Vertical Integrated Graupel on Entire Atmosphere','kg m-2','MAXVIG'], +273'255':['Missing','unknown','unknown'], +274} +275table_4_2_0_2 = { +276'0':['Wind Direction (from which blowing)','°','WDIR'], +277'1':['Wind Speed','m s-1','WIND'], +278'2':['U-Component of Wind','m s-1','UGRD'], +279'3':['V-Component of Wind','m s-1','VGRD'], +280'4':['Stream Function','m2 s-1','STRM'], +281'5':['Velocity Potential','m2 s-1','VPOT'], +282'6':['Montgomery Stream Function','m2 s-2','MNTSF'], +283'7':['Sigma Coordinate Vertical Velocity','s-1','SGCVV'], +284'8':['Vertical Velocity (Pressure)','Pa s-1','VVEL'], +285'9':['Vertical Velocity (Geometric)','m s-1','DZDT'], +286'10':['Absolute Vorticity','s-1','ABSV'], +287'11':['Absolute Divergence','s-1','ABSD'], +288'12':['Relative Vorticity','s-1','RELV'], +289'13':['Relative Divergence','s-1','RELD'], +290'14':['Potential Vorticity','K m2 kg-1 s-1','PVORT'], +291'15':['Vertical U-Component Shear','s-1','VUCSH'], +292'16':['Vertical V-Component Shear','s-1','VVCSH'], +293'17':['Momentum Flux, U-Component','N m-2','UFLX'], +294'18':['Momentum Flux, V-Component','N m-2','VFLX'], +295'19':['Wind Mixing Energy','J','WMIXE'], +296'20':['Boundary Layer Dissipation','W m-2','BLYDP'], +297'21':['Maximum Wind Speed','m s-1','MAXGUST'], +298'22':['Wind Speed (Gust)','m s-1','GUST'], +299'23':['U-Component of Wind (Gust)','m s-1','UGUST'], +300'24':['V-Component of Wind (Gust)','m s-1','VGUST'], +301'25':['Vertical Speed Shear','s-1','VWSH'], +302'26':['Horizontal Momentum Flux','N m-2','MFLX'], +303'27':['U-Component Storm Motion','m s-1','USTM'], +304'28':['V-Component Storm Motion','m s-1','VSTM'], +305'29':['Drag Coefficient','Numeric','CD'], +306'30':['Frictional Velocity','m s-1','FRICV'], +307'31':['Turbulent Diffusion Coefficient for Momentum','m2 s-1','TDCMOM'], +308'32':['Eta Coordinate Vertical Velocity','s-1','ETACVV'], +309'33':['Wind Fetch','m','WINDF'], +310'34':['Normal Wind Component','m s-1','NWIND'], +311'35':['Tangential Wind Component','m s-1','TWIND'], +312'36':['Amplitude Function for Rossby Wave Envelope for Meridional Wind','m s-1','AFRWE'], +313'37':['Northward Turbulent Surface Stress','N m-2 s','NTSS'], +314'38':['Eastward Turbulent Surface Stress','N m-2 s','ETSS'], +315'39':['Eastward Wind Tendency Due to Parameterizations','m s-2','EWTPARM'], +316'40':['Northward Wind Tendency Due to Parameterizations','m s-2','NWTPARM'], +317'41':['U-Component of Geostrophic Wind','m s-1','UGWIND'], +318'42':['V-Component of Geostrophic Wind','m s-1','VGWIND'], +319'43':['Geostrophic Wind Direction','°','GEOWD'], +320'44':['Geostrophic Wind Speed','m s-1','GEOWS'], +321'45':['Unbalanced Component of Divergence','s-1','UNDIV'], +322'46':['Vorticity Advection','s-2','VORTADV'], +323'47':['Surface roughness for heat,(see Note 5)','m','SFRHEAT'], +324'48':['Surface roughness for moisture,(see Note 6)','m','SFRMOIST'], +325'49':['Wind stress','N m-2','WINDSTR'], +326'50':['Eastward wind stress','N m-2','EWINDSTR'], +327'51':['Northward wind stress','N m-2','NWINDSTR'], +328'52':['u-component of wind stress','N m-2','UWINDSTR'], +329'53':['v-component of wind stress','N m-2','VWINDSTR'], +330'54':['Natural logarithm of surface roughness length for heat','m','NLSRLH'], +331'55':['Natural logarithm of surface roughness length for moisture','m','NLSRLM'], +332'56':['u-component of neutral wind','m s-1','UNWIND'], +333'57':['v-component of neutral wind','m s-1','VNWIND'], +334'58':['Magnitude of turbulent surface stress','N m-2','TSFCSTR'], +335'58-191':['Reserved','unknown','unknown'], +336'192-254':['Reserved for Local Use','unknown','unknown'], +337'192':['Vertical Speed Shear','s-1','VWSH'], +338'193':['Horizontal Momentum Flux','N m-2','MFLX'], +339'194':['U-Component Storm Motion','m s-1','USTM'], +340'195':['V-Component Storm Motion','m s-1','VSTM'], +341'196':['Drag Coefficient','non-dim','CD'], +342'197':['Frictional Velocity','m s-1','FRICV'], +343'198':['Latitude of U Wind Component of Velocity','deg','LAUV'], +344'199':['Longitude of U Wind Component of Velocity','deg','LOUV'], +345'200':['Latitude of V Wind Component of Velocity','deg','LAVV'], +346'201':['Longitude of V Wind Component of Velocity','deg','LOVV'], +347'202':['Latitude of Presure Point','deg','LAPP'], +348'203':['Longitude of Presure Point','deg','LOPP'], +349'204':['Vertical Eddy Diffusivity Heat exchange','m2 s-1','VEDH'], +350'205':['Covariance between Meridional and Zonal Components of the wind.','m2 s-2','COVMZ'], +351'206':['Covariance between Temperature and Zonal Components of the wind.','K*m s-1','COVTZ'], +352'207':['Covariance between Temperature and Meridional Components of the wind.','K*m s-1','COVTM'], +353'208':['Vertical Diffusion Zonal Acceleration','m s-2','VDFUA'], +354'209':['Vertical Diffusion Meridional Acceleration','m s-2','VDFVA'], +355'210':['Gravity wave drag zonal acceleration','m s-2','GWDU'], +356'211':['Gravity wave drag meridional acceleration','m s-2','GWDV'], +357'212':['Convective zonal momentum mixing acceleration','m s-2','CNVU'], +358'213':['Convective meridional momentum mixing acceleration','m s-2','CNVV'], +359'214':['Tendency of vertical velocity','m s-2','WTEND'], +360'215':['Omega (Dp/Dt) divide by density','K','OMGALF'], +361'216':['Convective Gravity wave drag zonal acceleration','m s-2','CNGWDU'], +362'217':['Convective Gravity wave drag meridional acceleration','m s-2','CNGWDV'], +363'218':['Velocity Point Model Surface','unknown','LMV'], +364'219':['Potential Vorticity (Mass-Weighted)','1/s/m','PVMWW'], +365'220':['Hourly Maximum of Upward Vertical Velocity','m s-1','MAXUVV'], +366'221':['Hourly Maximum of Downward Vertical Velocity','m s-1','MAXDVV'], +367'222':['U Component of Hourly Maximum 10m Wind Speed','m s-1','MAXUW'], +368'223':['V Component of Hourly Maximum 10m Wind Speed','m s-1','MAXVW'], +369'224':['Ventilation Rate','m2 s-1','VRATE'], +370'225':['Transport Wind Speed','m s-1','TRWSPD'], +371'226':['Transport Wind Direction','Deg','TRWDIR'], +372'227':['Earliest Reasonable Arrival Time (10% exceedance)','s','TOA10'], +373'228':['Most Likely Arrival Time (50% exceedance)','s','TOA50'], +374'229':['Most Likely Departure Time (50% exceedance)','s','TOD50'], +375'230':['Latest Reasonable Departure Time (90% exceedance)','s','TOD90'], +376'231':['Tropical Wind Direction','°','TPWDIR'], +377'232':['Tropical Wind Speed','m s-1','TPWSPD'], +378'233':['Inflow Based (ESFC) to 50% EL Shear Magnitude','kt','ESHR'], +379'234':['U Component Inflow Based to 50% EL Shear Vector','kt','UESH'], +380'235':['V Component Inflow Based to 50% EL Shear Vector','kt','VESH'], +381'236':['U Component Bunkers Effective Right Motion','kt','UEID'], +382'237':['V Component Bunkers Effective Right Motion','kt','VEID'], +383'255':['Missing','unknown','unknown'], +384} +385table_4_2_0_3 = { +386'0':['Pressure','Pa','PRES'], +387'1':['Pressure Reduced to MSL','Pa','PRMSL'], +388'2':['Pressure Tendency','Pa s-1','PTEND'], +389'3':['ICAO Standard Atmosphere Reference Height','m','ICAHT'], +390'4':['Geopotential','m2 s-2','GP'], +391'5':['Geopotential Height','gpm','HGT'], +392'6':['Geometric Height','m','DIST'], +393'7':['Standard Deviation of Height','m','HSTDV'], +394'8':['Pressure Anomaly','Pa','PRESA'], +395'9':['Geopotential Height Anomaly','gpm','GPA'], +396'10':['Density','kg m-3','DEN'], +397'11':['Altimeter Setting','Pa','ALTS'], +398'12':['Thickness','m','THICK'], +399'13':['Pressure Altitude','m','PRESALT'], +400'14':['Density Altitude','m','DENALT'], +401'15':['5-Wave Geopotential Height','gpm','5WAVH'], +402'16':['Zonal Flux of Gravity Wave Stress','N m-2','U-GWD'], +403'17':['Meridional Flux of Gravity Wave Stress','N m-2','V-GWD'], +404'18':['Planetary Boundary Layer Height','m','HPBL'], +405'19':['5-Wave Geopotential Height Anomaly','gpm','5WAVA'], +406'20':['Standard Deviation of Sub-Grid Scale Orography','m','SDSGSO'], +407'21':['Angle of Sub-Grid Scale Orography','rad','AOSGSO'], +408'22':['Slope of Sub-Grid Scale Orography','Numeric','SSGSO'], +409'23':['Gravity Wave Dissipation','W m-2','GWD'], +410'24':['Anisotropy of Sub-Grid Scale Orography','Numeric','ASGSO'], +411'25':['Natural Logarithm of Pressure in Pa','Numeric','NLPRES'], +412'26':['Exner Pressure','Numeric','EXPRES'], +413'27':['Updraught Mass Flux','kg m-2 s-1','UMFLX'], +414'28':['Downdraught Mass Flux','kg m-2 s-1','DMFLX'], +415'29':['Updraught Detrainment Rate','kg m-3 s-1','UDRATE'], +416'30':['Downdraught Detrainment Rate','kg m-3 s-1','DDRATE'], +417'31':['Unbalanced Component of Logarithm of Surface Pressure','-','UCLSPRS'], +418'32':['Saturation water vapour pressure','Pa','SWATERVP'], +419'33':['Geometric altitude above mean sea level','m','GAMSL'], +420'34':['Geometric height above ground level','m','GHAGRD'], +421'35':['Column integrated divergence of total mass flux','kg m-2 s-1','CDTMF'], +422'36':['Column integrated eastward total mass flux','kg m-2 s-1','CETMF'], +423'37':['Column integrated northward total mass flux','kg m-2 s-1','CNTMF'], +424'38':['Standard deviation of filtered subgrid orography','m','SDFSO'], +425'39':['Column integrated mass of atmosphere','kg m-2 s-1','CMATMOS'], +426'40':['Column integrated eastward geopotential flux','W m-1','CEGFLUX'], +427'41':['Column integrated northward geopotential flux','W m-1','CNGFLUX'], +428'42':['Column integrated divergence of water geopotential flux','W m-2','CDWGFLUX'], +429'43':['Column integrated divergence of geopotential flux','W m-2','CDGFLUX'], +430'44':['Height of zero-degree wet-bulb temperature','m','HWBT'], +431'45':['Height of one-degree wet-bulb temperature','m','WOBT'], +432'46-191':['Reserved','unknown','unknown'], +433'192-254':['Reserved for Local Use','unknown','unknown'], +434'192':['MSLP (Eta model reduction)','Pa','MSLET'], +435'193':['5-Wave Geopotential Height','gpm','5WAVH'], +436'194':['Zonal Flux of Gravity Wave Stress','N m-2','U-GWD'], +437'195':['Meridional Flux of Gravity Wave Stress','N m-2','V-GWD'], +438'196':['Planetary Boundary Layer Height','m','HPBL'], +439'197':['5-Wave Geopotential Height Anomaly','gpm','5WAVA'], +440'198':['MSLP (MAPS System Reduction)','Pa','MSLMA'], +441'199':['3-hr pressure tendency (Std. Atmos. Reduction)','Pa s-1','TSLSA'], +442'200':['Pressure of level from which parcel was lifted','Pa','PLPL'], +443'201':['X-gradient of Log Pressure','m-1','LPSX'], +444'202':['Y-gradient of Log Pressure','m-1','LPSY'], +445'203':['X-gradient of Height','m-1','HGTX'], +446'204':['Y-gradient of Height','m-1','HGTY'], +447'205':['Layer Thickness','m','LAYTH'], +448'206':['Natural Log of Surface Pressure','ln (kPa)','NLGSP'], +449'207':['Convective updraft mass flux','kg m-2 s-1','CNVUMF'], +450'208':['Convective downdraft mass flux','kg m-2 s-1','CNVDMF'], +451'209':['Convective detrainment mass flux','kg m-2 s-1','CNVDEMF'], +452'210':['Mass Point Model Surface','unknown','LMH'], +453'211':['Geopotential Height (nearest grid point)','gpm','HGTN'], +454'212':['Pressure (nearest grid point)','Pa','PRESN'], +455'213':['Orographic Convexity','unknown','ORCONV'], +456'214':['Orographic Asymmetry, W Component','unknown','ORASW'], +457'215':['Orographic Asymmetry, S Component','unknown','ORASS'], +458'216':['Orographic Asymmetry, SW Component','unknown','ORASSW'], +459'217':['Orographic Asymmetry, NW Component','unknown','ORASNW'], +460'218':['Orographic Length Scale, W Component','unknown','ORLSW'], +461'219':['Orographic Length Scale, S Component','unknown','ORLSS'], +462'220':['Orographic Length Scale, SW Component','unknown','ORLSSW'], +463'221':['Orographic Length Scale, NW Component','unknown','ORLSNW'], +464'222':['Effective Surface Height','m','EFSH'], +465'255':['Missing','unknown','unknown'], +466} +467table_4_2_0_4 = { +468'0':['Net Short-Wave Radiation Flux (Surface)','W m-2','NSWRS'], +469'1':['Net Short-Wave Radiation Flux (Top of Atmosphere)','W m-2','NSWRT'], +470'2':['Short-Wave Radiation Flux','W m-2','SWAVR'], +471'3':['Global Radiation Flux','W m-2','GRAD'], +472'4':['Brightness Temperature','K','BRTMP'], +473'5':['Radiance (with respect to wave number)','W m-1 sr-1','LWRAD'], +474'6':['Radiance (with respect to wavelength)','W m-3 sr-1','SWRAD'], +475'7':['Downward Short-Wave Radiation Flux','W m-2','DSWRF'], +476'8':['Upward Short-Wave Radiation Flux','W m-2','USWRF'], +477'9':['Net Short Wave Radiation Flux','W m-2','NSWRF'], +478'10':['Photosynthetically Active Radiation','W m-2','PHOTAR'], +479'11':['Net Short-Wave Radiation Flux, Clear Sky','W m-2','NSWRFCS'], +480'12':['Downward UV Radiation','W m-2','DWUVR'], +481'13':['Direct Short Wave Radiation Flux','W m-2','DSWRFLX'], +482'14':['Diffuse Short Wave Radiation Flux','W m-2','DIFSWRF'], +483'15':['Upward UV radiation emitted/reflected from the Earths surface','W m-2','UVVEARTH'], +484'16-49':['Reserved','unknown','unknown'], +485'50':['UV Index (Under Clear Sky)','Numeric','UVIUCS'], +486'51':['UV Index','Numeric','UVI'], +487'52':['Downward Short-Wave Radiation Flux, Clear Sky','W m-2','DSWRFCS'], +488'53':['Upward Short-Wave Radiation Flux, Clear Sky','W m-2','USWRFCS'], +489'54':['Direct normal short-wave radiation flux,(see Note 3)','W m-2','DSWRFLX'], +490'55':['UV visible albedo for diffuse radiation','%','UVALBDIF'], +491'56':['UV visible albedo for direct radiation','%','UVALBDIR'], +492'57':['UV visible albedo for direct radiation, geometric component','%','UBALBDIRG'], +493'58':['UV visible albedo for direct radiation, isotropic component','%','UVALBDIRI'], +494'59':['UV visible albedo for direct radiation, volumetric component','%','UVBDIRV'], +495'60':['Photosynthetically active radiation flux, clear sky','W m-2','PHOARFCS'], +496'61':['Direct short-wave radiation flux, clear sky','W m-2','DSWRFLXCS'], +497'62-191':['Reserved','unknown','unknown'], +498'192-254':['Reserved for Local Use','unknown','unknown'], +499'192':['Downward Short-Wave Radiation Flux','W m-2','DSWRF'], +500'193':['Upward Short-Wave Radiation Flux','W m-2','USWRF'], +501'194':['UV-B Downward Solar Flux','W m-2','DUVB'], +502'195':['Clear sky UV-B Downward Solar Flux','W m-2','CDUVB'], +503'196':['Clear Sky Downward Solar Flux','W m-2','CSDSF'], +504'197':['Solar Radiative Heating Rate','K s-1','SWHR'], +505'198':['Clear Sky Upward Solar Flux','W m-2','CSUSF'], +506'199':['Cloud Forcing Net Solar Flux','W m-2','CFNSF'], +507'200':['Visible Beam Downward Solar Flux','W m-2','VBDSF'], +508'201':['Visible Diffuse Downward Solar Flux','W m-2','VDDSF'], +509'202':['Near IR Beam Downward Solar Flux','W m-2','NBDSF'], +510'203':['Near IR Diffuse Downward Solar Flux','W m-2','NDDSF'], +511'204':['Downward Total Radiation Flux','W m-2','DTRF'], +512'205':['Upward Total Radiation Flux','W m-2','UTRF'], +513'255':['Missing','unknown','unknown'], +514} +515table_4_2_0_5 = { +516'0':['Net Long-Wave Radiation Flux (Surface)','W m-2','NLWRS'], +517'1':['Net Long-Wave Radiation Flux (Top of Atmosphere)','W m-2','NLWRT'], +518'2':['Long-Wave Radiation Flux','W m-2','LWAVR'], +519'3':['Downward Long-Wave Rad. Flux','W m-2','DLWRF'], +520'4':['Upward Long-Wave Rad. Flux','W m-2','ULWRF'], +521'5':['Net Long-Wave Radiation Flux','W m-2','NLWRF'], +522'6':['Net Long-Wave Radiation Flux, Clear Sky','W m-2','NLWRCS'], +523'7':['Brightness Temperature','K','BRTEMP'], +524'8':['Downward Long-Wave Radiation Flux, Clear Sky','W m-2','DLWRFCS'], +525'9':['Near IR albedo for diffuse radiation','%','NIRALBDIF'], +526'10':['Near IR albedo for direct radiation','%','NIRALBDIR'], +527'11':['Near IR albedo for direct radiation, geometric component','%','NIRALBDIRG'], +528'12':['Near IR albedo for direct radiation, isotropic component','%','NIRALBDIRI'], +529'13':['Near IR albedo for direct radiation, volumetric component','%','NIRALBDIRV'], +530'14-191':['Reserved','unknown','unknown'], +531'192-254':['Reserved for Local Use','unknown','unknown'], +532'192':['Downward Long-Wave Rad. Flux','W m-2','DLWRF'], +533'193':['Upward Long-Wave Rad. Flux','W m-2','ULWRF'], +534'194':['Long-Wave Radiative Heating Rate','K s-1','LWHR'], +535'195':['Clear Sky Upward Long Wave Flux','W m-2','CSULF'], +536'196':['Clear Sky Downward Long Wave Flux','W m-2','CSDLF'], +537'197':['Cloud Forcing Net Long Wave Flux','W m-2','CFNLF'], +538'255':['Missing','unknown','unknown'], +539} +540table_4_2_0_6 = { +541'0':['Cloud Ice','kg m-2','CICE'], +542'1':['Total Cloud Cover','%','TCDC'], +543'2':['Convective Cloud Cover','%','CDCON'], +544'3':['Low Cloud Cover','%','LCDC'], +545'4':['Medium Cloud Cover','%','MCDC'], +546'5':['High Cloud Cover','%','HCDC'], +547'6':['Cloud Water','kg m-2','CWAT'], +548'7':['Cloud Amount','%','CDCA'], +549'8':['Cloud Type','See Table 4.203','CDCT'], +550'9':['Thunderstorm Maximum Tops','m','TMAXT'], +551'10':['Thunderstorm Coverage','See Table 4.204','THUNC'], +552'11':['Cloud Base','m','CDCB'], +553'12':['Cloud Top','m','CDCTOP'], +554'13':['Ceiling','m','CEIL'], +555'14':['Non-Convective Cloud Cover','%','CDLYR'], +556'15':['Cloud Work Function','J kg-1','CWORK'], +557'16':['Convective Cloud Efficiency','Proportion','CUEFI'], +558'17':['Total Condensate','kg kg-1','TCONDO'], +559'18':['Total Column-Integrated Cloud Water','kg m-2','TCOLWO'], +560'19':['Total Column-Integrated Cloud Ice','kg m-2','TCOLIO'], +561'20':['Total Column-Integrated Condensate','kg m-2','TCOLC'], +562'21':['Ice fraction of total condensate','Proportion','FICE'], +563'22':['Cloud Cover','%','CDCC'], +564'23':['Cloud Ice Mixing Ratio','kg kg-1','CDCIMR'], +565'24':['Sunshine','Numeric','SUNS'], +566'25':['Horizontal Extent of Cumulonimbus (CB)','%','CBHE'], +567'26':['Height of Convective Cloud Base','m','HCONCB'], +568'27':['Height of Convective Cloud Top','m','HCONCT'], +569'28':['Number Concentration of Cloud Droplets','kg-1','NCONCD'], +570'29':['Number Concentration of Cloud Ice','kg-1','NCCICE'], +571'30':['Number Density of Cloud Droplets','m-3','NDENCD'], +572'31':['Number Density of Cloud Ice','m-3','NDCICE'], +573'32':['Fraction of Cloud Cover','Numeric','FRACCC'], +574'33':['Sunshine Duration','s','SUNSD'], +575'34':['Surface Long Wave Effective Total Cloudiness','Numeric','SLWTC'], +576'35':['Surface Short Wave Effective Total Cloudiness','Numeric','SSWTC'], +577'36':['Fraction of Stratiform Precipitation Cover','Proportion','FSTRPC'], +578'37':['Fraction of Convective Precipitation Cover','Proportion','FCONPC'], +579'38':['Mass Density of Cloud Droplets','kg m-3','MASSDCD'], +580'39':['Mass Density of Cloud Ice','kg m-3','MASSDCI'], +581'40':['Mass Density of Convective Cloud Water Droplets','kg m-3','MDCCWD'], +582'41-46':['Reserved','unknown','unknown'], +583'47':['Volume Fraction of Cloud Water Droplets','Numeric','VFRCWD'], +584'48':['Volume Fraction of Cloud Ice Particles','Numeric','VFRCICE'], +585'49':['Volume Fraction of Cloud (Ice and/or Water)','Numeric','VFRCIW'], +586'50':['Fog','%','FOG'], +587'51':['Sunshine Duration Fraction','Proportion','SUNFRAC'], +588'52-191':['Reserved','unknown','unknown'], +589'192-254':['Reserved for Local Use','unknown','unknown'], +590'192':['Non-Convective Cloud Cover','%','CDLYR'], +591'193':['Cloud Work Function','J kg-1','CWORK'], +592'194':['Convective Cloud Efficiency','non-dim','CUEFI'], +593'195':['Total Condensate','kg kg-1','TCOND'], +594'196':['Total Column-Integrated Cloud Water','kg m-2','TCOLW'], +595'197':['Total Column-Integrated Cloud Ice','kg m-2','TCOLI'], +596'198':['Total Column-Integrated Condensate','kg m-2','TCOLC'], +597'199':['Ice fraction of total condensate','non-dim','FICE'], +598'200':['Convective Cloud Mass Flux','Pa s-1','MFLUX'], +599'201':['Sunshine Duration','s','SUNSD'], +600'255':['Missing','unknown','unknown'], +601} +602table_4_2_0_7 = { +603'0':['Parcel Lifted Index (to 500 hPa)','K','PLI'], +604'1':['Best Lifted Index (to 500 hPa)','K','BLI'], +605'2':['K Index','K','KX'], +606'3':['KO Index','K','KOX'], +607'4':['Total Totals Index','K','TOTALX'], +608'5':['Sweat Index','Numeric','SX'], +609'6':['Convective Available Potential Energy','J kg-1','CAPE'], +610'7':['Convective Inhibition','J kg-1','CIN'], +611'8':['Storm Relative Helicity','m2 s-2','HLCY'], +612'9':['Energy Helicity Index','Numeric','EHLX'], +613'10':['Surface Lifted Index','K','LFT X'], +614'11':['Best (4 layer) Lifted Index','K','4LFTX'], +615'12':['Richardson Number','Numeric','RI'], +616'13':['Showalter Index','K','SHWINX'], +617'14':['Reserved','unknown','unknown'], +618'15':['Updraft Helicity','m2 s-2','UPHL'], +619'16':['Bulk Richardson Number','Numeric','BLKRN'], +620'17':['Gradient Richardson Number','Numeric','GRDRN'], +621'18':['Flux Richardson Number','Numeric','FLXRN'], +622'19':['Convective Available Potential Energy Shear','m2 s-2','CONAPES'], +623'20':['Thunderstorm intensity index','See Table 4.246','TIIDEX'], +624'21-191':['Reserved','unknown','unknown'], 625'192-254':['Reserved for Local Use','unknown','unknown'], -626'192':['Ozone Mixing Ratio','kg kg-1','O3MR'], -627'193':['Ozone Concentration','ppb','OZCON'], -628'194':['Categorical Ozone Concentration','Non-Dim','OZCAT'], -629'195':['Ozone Vertical Diffusion','kg kg-1 s-1','VDFOZ'], -630'196':['Ozone Production','kg kg-1 s-1','POZ'], -631'197':['Ozone Tendency','kg kg-1 s-1','TOZ'], -632'198':['Ozone Production from Temperature Term','kg kg-1 s-1','POZT'], -633'199':['Ozone Production from Column Ozone Term','kg kg-1 s-1','POZO'], -634'200':['Ozone Daily Max from 1-hour Average','ppbV','OZMAX1'], -635'201':['Ozone Daily Max from 8-hour Average','ppbV','OZMAX8'], -636'202':['PM 2.5 Daily Max from 1-hour Average','μg m-3','PDMAX1'], -637'203':['PM 2.5 Daily Max from 24-hour Average','μg m-3','PDMAX24'], -638'204':['Acetaldehyde & Higher Aldehydes','ppbV','ALD2'], -639'255':['Missing','unknown','unknown'], -640} -641table_4_2_0_15 = { -642'0':['Base Spectrum Width','m s-1','BSWID'], -643'1':['Base Reflectivity','dB','BREF'], -644'2':['Base Radial Velocity','m s-1','BRVEL'], -645'3':['Vertically-Integrated Liquid Water','kg m-2','VIL'], -646'4':['Layer Maximum Base Reflectivity','dB','LMAXBR'], -647'5':['Precipitation','kg m-2','PREC'], -648'6':['Radar Spectra (1)','unknown','RDSP1'], -649'7':['Radar Spectra (2)','unknown','RDSP2'], -650'8':['Radar Spectra (3)','unknown','RDSP3'], -651'9':['Reflectivity of Cloud Droplets','dB','RFCD'], -652'10':['Reflectivity of Cloud Ice','dB','RFCI'], -653'11':['Reflectivity of Snow','dB','RFSNOW'], -654'12':['Reflectivity of Rain','dB','RFRAIN'], -655'13':['Reflectivity of Graupel','dB','RFGRPL'], -656'14':['Reflectivity of Hail','dB','RFHAIL'], -657'15':['Hybrid Scan Reflectivity','dB','HSR'], -658'16':['Hybrid Scan Reflectivity Height','m','HSRHT'], -659'17-191':['Reserved','unknown','unknown'], -660'192-254':['Reserved for Local Use','unknown','unknown'], -661'255':['Missing','unknown','unknown'], -662} -663table_4_2_0_16 = { -664'0':['Equivalent radar reflectivity factor for rain','m m6 m-3','REFZR'], -665'1':['Equivalent radar reflectivity factor for snow','m m6 m-3','REFZI'], -666'2':['Equivalent radar reflectivity factor for parameterized convection','m m6 m-3','REFZC'], -667'3':['Echo Top','m','RETOP'], -668'4':['Reflectivity','dB','REFD'], -669'5':['Composite reflectivity','dB','REFC'], -670'6-191':['Reserved','unknown','unknown'], -671'192-254':['Reserved for Local Use','unknown','unknown'], -672'192':['Equivalent radar reflectivity factor for rain','m m6 m-3','REFZR'], -673'193':['Equivalent radar reflectivity factor for snow','m m6 m-3','REFZI'], -674'194':['Equivalent radar reflectivity factor for parameterized convection','m m6 m-3','REFZC'], -675'195':['Reflectivity','dB','REFD'], -676'196':['Composite reflectivity','dB','REFC'], -677'197':['Echo Top','m','RETOP'], -678'198':['Hourly Maximum of Simulated Reflectivity','dB','MAXREF'], -679'255':['Missing','unknown','unknown'], -680} -681table_4_2_0_17 = { -682'0':['Lightning Strike Density','m-2 s-1','LTNGSD'], -683'1':['Lightning Potential Index (LPI)','J kg-1','LTPINX'], -684'2':['Cloud-to-Ground Lightning Flash Density','km-2 day-1','CDGDLTFD'], -685'3':['Cloud-to-Cloud Lightning Flash Density','km-2 day-1','CDCDLTFD'], -686'4':['Total Lightning Flash Density','km-2 day-1','TLGTFD'], -687'5':['Subgrid-scale lightning potential index','J kg-1','SLNGPIDX'], -688'6-191':['Reserved','unknown','unknown'], -689'192-254':['Reserved for Local Use','unknown','unknown'], -690'192':['Lightning','non-dim','LTNG'], -691'255':['Missing','unknown','unknown'], -692} -693table_4_2_0_18 = { -694'0':['Air Concentration of Caesium 137','Bq m-3','ACCES'], -695'1':['Air Concentration of Iodine 131','Bq m-3','ACIOD'], -696'2':['Air Concentration of Radioactive Pollutant','Bq m-3','ACRADP'], -697'3':['Ground Deposition of Caesium 137','Bq m-2','GDCES'], -698'4':['Ground Deposition of Iodine 131','Bq m-2','GDIOD'], -699'5':['Ground Deposition of Radioactive Pollutant','Bq m-2','GDRADP'], -700'6':['Time Integrated Air Concentration of Cesium Pollutant','Bq s m-3','TIACCP'], -701'7':['Time Integrated Air Concentration of Iodine Pollutant','Bq s m-3','TIACIP'], -702'8':['Time Integrated Air Concentration of Radioactive Pollutant','Bq s m-3','TIACRP'], -703'9':['Reserved','unknown','unknown'], -704'10':['Air Concentration','Bq m-3','AIRCON'], -705'11':['Wet Deposition','Bq m-2','WETDEP'], -706'12':['Dry Deposition','Bq m-2','DRYDEP'], -707'13':['Total Deposition (Wet + Dry)','Bq m-2','TOTLWD'], -708'14':['Specific Activity Concentration','Bq kg-1','SACON'], -709'15':['Maximum of Air Concentration in Layer','Bq m-3','MAXACON'], -710'16':['Height of Maximum of Air Concentration','m','HMXACON'], -711'17':['Column-Integrated Air Concentration','Bq m-2','CIAIRC'], -712'18':['Column-Averaged Air Concentration in Layer','Bq m-3','CAACL'], -713'19-191':['Reserved','unknown','unknown'], -714'192-254':['Reserved for Local Use','unknown','unknown'], -715'255':['Missing','unknown','unknown'], -716} -717table_4_2_0_19 = { -718'0':['Visibility','m','VIS'], -719'1':['Albedo','%','ALBDO'], -720'2':['Thunderstorm Probability','%','TSTM'], -721'3':['Mixed Layer Depth','m','MIXHT'], -722'4':['Volcanic Ash','See Table 4.206','VOLASH'], -723'5':['Icing Top','m','ICIT'], -724'6':['Icing Base','m','ICIB'], -725'7':['Icing','See Table 4.207','ICI'], -726'8':['Turbulence Top','m','TURBT'], -727'9':['Turbulence Base','m','TURBB'], -728'10':['Turbulence','See Table 4.208','TURB'], -729'11':['Turbulent Kinetic Energy','J kg-1','TKE'], -730'12':['Planetary Boundary Layer Regime','See Table 4.209','PBLREG'], -731'13':['Contrail Intensity','See Table 4.210','CONTI'], -732'14':['Contrail Engine Type','See Table 4.211','CONTET'], -733'15':['Contrail Top','m','CONTT'], -734'16':['Contrail Base','m','CONTB'], -735'17':['Maximum Snow Albedosee Note 1','%','MXSALB'], -736'18':['Snow-Free Albedo','%','SNFALB'], -737'19':['Snow Albedo','%','SALBD'], -738'20':['Icing','%','ICIP'], -739'21':['In-Cloud Turbulence','%','CTP'], -740'22':['Clear Air Turbulence (CAT)','%','CAT'], -741'23':['Supercooled Large Droplet Probabilitysee Note 2','%','SLDP'], -742'24':['Convective Turbulent Kinetic Energy','J kg-1','CONTKE'], -743'25':['Weather','See Table 4.225','WIWW'], -744'26':['Convective Outlook','See Table 4.224','CONVO'], -745'27':['Icing Scenario','See Table 4.227','ICESC'], -746'28':['Mountain Wave Turbulence (Eddy Dissipation Rate)','m2/3 s-1','MWTURB'], -747'29':['Clear Air Turbulence (CAT) (Eddy Dissipation Rate)','m2/3 s-1','CATEDR'], -748'30':['Eddy Dissipation Parameter','m2/3 s-1','EDPARM'], -749'31':['Maximum of Eddy Dissipation Parameter in Layer','m2/3 s-1','MXEDPRM'], -750'32':['Highest Freezing Level','m','HIFREL'], -751'33':['Visibility Through Liquid Fog','m','VISLFOG'], -752'34':['Visibility Through Ice Fog','m','VISIFOG'], -753'35':['Visibility Through Blowing Snow','m','VISBSN'], -754'36':['Presence of Snow Squalls','See Table 4.222','PSNOWS'], -755'37':['Icing Severity','See Table 4.228','ICESEV'], -756'38':['Sky transparency index','See Table 4.214','SKYIDX'], -757'39':['Seeing index','See Table 4.214','SEEINDEX'], -758'40':['Snow level','m','SNOWLVL'], -759'41-191':['Reserved','unknown','unknown'], -760'192-254':['Reserved for Local Use','unknown','unknown'], -761'192':['Maximum Snow Albedo','%','MXSALB'], -762'193':['Snow-Free Albedo','%','SNFALB'], -763'194':['Slight risk convective outlook','categorical','SRCONO'], -764'195':['Moderate risk convective outlook','categorical','MRCONO'], -765'196':['High risk convective outlook','categorical','HRCONO'], -766'197':['Tornado probability','%','TORPROB'], -767'198':['Hail probability','%','HAILPROB'], -768'199':['Wind probability','%','WINDPROB'], -769'200':['Significant Tornado probability','%','STORPROB'], -770'201':['Significant Hail probability','%','SHAILPRO'], -771'202':['Significant Wind probability','%','SWINDPRO'], -772'203':['Categorical Thunderstorm','Code table 4.222','TSTMC'], -773'204':['Number of mixed layers next to surface','integer','MIXLY'], -774'205':['Flight Category','unknown','FLGHT'], -775'206':['Confidence - Ceiling','unknown','CICEL'], -776'207':['Confidence - Visibility','unknown','CIVIS'], -777'208':['Confidence - Flight Category','unknown','CIFLT'], -778'209':['Low-Level aviation interest','unknown','LAVNI'], -779'210':['High-Level aviation interest','unknown','HAVNI'], -780'211':['Visible, Black Sky Albedo','%','SBSALB'], -781'212':['Visible, White Sky Albedo','%','SWSALB'], -782'213':['Near IR, Black Sky Albedo','%','NBSALB'], -783'214':['Near IR, White Sky Albedo','%','NWSALB'], -784'215':['Total Probability of Severe Thunderstorms (Days 2,3)','%','PRSVR'], -785'216':['Total Probability of Extreme Severe Thunderstorms (Days 2,3)','%','PRSIGSVR'], -786'217':['Supercooled Large Droplet (SLD) Icingsee Note 2','See Table 4.207','SIPD'], -787'218':['Radiative emissivity','unknown','EPSR'], -788'219':['Turbulence Potential Forecast Index','unknown','TPFI'], -789'220':['Categorical Severe Thunderstorm','Code table 4.222','SVRTS'], -790'221':['Probability of Convection','%','PROCON'], -791'222':['Convection Potential','Code table 4.222','CONVP'], -792'223-231':['Reserved','unknown','unknown'], -793'232':['Volcanic Ash Forecast Transport and Dispersion','log10 (kg m-3)','VAFTD'], -794'233':['Icing probability','non-dim','ICPRB'], -795'234':['Icing Severity','non-dim','ICSEV'], -796'235':['Joint Fire Weather Probability','%','JFWPRB'], -797'236':['Snow Level','m','SNOWLVL'], -798'237':['Dry Thunderstorm Probability','%','DRYTPROB'], -799'238':['Ellrod Index','unknown','ELLINX'], -800'239':['Craven-Wiedenfeld Aggregate Severe Parameter','Numeric','CWASP'], -801'255':['Missing','unknown','unknown'], -802} -803table_4_2_0_20 = { -804'0':['Mass Density (Concentration)','kg m-3','MASSDEN'], -805'1':['Column-Integrated Mass Density','kg m-2','COLMD'], -806'2':['Mass Mixing Ratio (Mass Fraction in Air)','kg kg-1','MASSMR'], -807'3':['Atmosphere Emission Mass Flux','kg m-2s-1','AEMFLX'], -808'4':['Atmosphere Net Production Mass Flux','kg m-2s-1','ANPMFLX'], -809'5':['Atmosphere Net Production And Emision Mass Flux','kg m-2s-1','ANPEMFLX'], -810'6':['Surface Dry Deposition Mass Flux','kg m-2s-1','SDDMFLX'], -811'7':['Surface Wet Deposition Mass Flux','kg m-2s-1','SWDMFLX'], -812'8':['Atmosphere Re-Emission Mass Flux','kg m-2s-1','AREMFLX'], -813'9':['Wet Deposition by Large-Scale Precipitation Mass Flux','kg m-2s-1','WLSMFLX'], -814'10':['Wet Deposition by Convective Precipitation Mass Flux','kg m-2s-1','WDCPMFLX'], -815'11':['Sedimentation Mass Flux','kg m-2s-1','SEDMFLX'], -816'12':['Dry Deposition Mass Flux','kg m-2s-1','DDMFLX'], -817'13':['Transfer From Hydrophobic to Hydrophilic','kg kg-1s-1','TRANHH'], -818'14':['Transfer From SO2 (Sulphur Dioxide) to SO4 (Sulphate)','kg kg-1s-1','TRSDS'], -819'15':['Dry deposition velocity','m s-1','DDVEL'], -820'16':['Mass mixing ratio with respect to dry air','kg kg-1','MSSRDRYA'], -821'17':['Mass mixing ratio with respect to wet air','kg kg-1','MSSRWETA'], -822'18-49':['Reserved','unknown','unknown'], -823'50':['Amount in Atmosphere','mol','AIA'], -824'51':['Concentration In Air','mol m-3','CONAIR'], -825'52':['Volume Mixing Ratio (Fraction in Air)','mol mol-1','VMXR'], -826'53':['Chemical Gross Production Rate of Concentration','mol m-3s-1','CGPRC'], -827'54':['Chemical Gross Destruction Rate of Concentration','mol m-3s-1','CGDRC'], -828'55':['Surface Flux','mol m-2s-1','SFLUX'], -829'56':['Changes Of Amount in Atmosphere','mol s-1','COAIA'], -830'57':['Total Yearly Average Burden of The Atmosphere>','mol','TYABA'], -831'58':['Total Yearly Average Atmospheric Loss','mol s-1','TYAAL'], -832'59':['Aerosol Number Concentration','m-3','ANCON'], -833'60':['Aerosol Specific Number Concentration','kg-1','ASNCON'], -834'61':['Maximum of Mass Density','kg m-3','MXMASSD'], -835'62':['Height of Mass Density','m','HGTMD'], -836'63':['Column-Averaged Mass Density in Layer','kg m-3','CAVEMDL'], -837'64':['Mole fraction with respect to dry air','mol mol-1','MOLRDRYA'], -838'65':['Mole fraction with respect to wet air','mol mol-1','MOLRWETA'], -839'66':['Column-integrated in-cloud scavenging rate by precipitation','kg m-2 s-1','CINCLDSP'], -840'67':['Column-integrated below-cloud scavenging rate by precipitation','kg m-2 s-1','CBLCLDSP'], -841'68':['Column-integrated release rate from evaporating precipitation','kg m-2 s-1','CIRELREP'], -842'69':['Column-integrated in-cloud scavenging rate by large-scale precipitation','kg m-2 s-1','CINCSLSP'], -843'70':['Column-integrated below-cloud scavenging rate by large-scale precipitation','kg m-2 s-1','CBECSLSP'], -844'71':['Column-integrated release rate from evaporating large-scale precipitation','kg m-2 s-1','CRERELSP'], -845'72':['Column-integrated in-cloud scavenging rate by convective precipitation','kg m-2 s-1','CINCSRCP'], -846'73':['Column-integrated below-cloud scavenging rate by convective precipitation','kg m-2 s-1','CBLCSRCP'], -847'74':['Column-integrated release rate from evaporating convective precipitation','kg m-2 s-1','CIRERECP'], -848'75':['Wildfire flux','kg m-2 s-1','WFIREFLX'], -849'76':['Emission Rate','kg kg-1 s-1','EMISFLX'], -850'77':['Surface Emission flux','kg m-2 s-1','SFCEFLX'], -851'78-99':['Reserved','unknown','unknown'], -852'100':['Surface Area Density (Aerosol)','m-1','SADEN'], -853'101':['Vertical Visual Range','m','ATMTK'], -854'102':['Aerosol Optical Thickness','Numeric','AOTK'], -855'103':['Single Scattering Albedo','Numeric','SSALBK'], -856'104':['Asymmetry Factor','Numeric','ASYSFK'], -857'105':['Aerosol Extinction Coefficient','m-1','AECOEF'], -858'106':['Aerosol Absorption Coefficient','m-1','AACOEF'], -859'107':['Aerosol Lidar Backscatter from Satellite','m-1sr-1','ALBSAT'], -860'108':['Aerosol Lidar Backscatter from the Ground','m-1sr-1','ALBGRD'], -861'109':['Aerosol Lidar Extinction from Satellite','m-1','ALESAT'], -862'110':['Aerosol Lidar Extinction from the Ground','m-1','ALEGRD'], -863'111':['Angstrom Exponent','Numeric','ANGSTEXP'], -864'112':['Scattering Aerosol Optical Thickness','Numeric','SCTAOTK'], -865'113-191':['Reserved','unknown','unknown'], -866'192-254':['Reserved for Local Use','unknown','unknown'], -867'255':['Missing','unknown','unknown'], -868} -869table_4_2_0_190 = { -870'0':['Arbitrary Text String','CCITTIA5','ATEXT'], -871'1-191':['Reserved','unknown','unknown'], -872'192-254':['Reserved for Local Use','unknown','unknown'], -873'255':['Missing','unknown','unknown'], -874} -875table_4_2_0_191 = { -876'0':['Seconds prior to initial reference time (defined in Section 1)','s','TSEC'], -877'1':['Geographical Latitude','° N','GEOLAT'], -878'2':['Geographical Longitude','° E','GEOLON'], -879'3':['Days Since Last Observation','d','DSLOBS'], -880'4-191':['Reserved','unknown','unknown'], -881'192-254':['Reserved for Local Use','unknown','unknown'], -882'192':['Latitude (-90 to 90)','°','NLAT'], -883'193':['East Longitude (0 to 360)','°','ELON'], -884'194':['Seconds prior to initial reference time','s','RTSEC'], -885'195':['Model Layer number (From bottom up)','unknown','MLYNO'], -886'196':['Latitude (nearest neighbor) (-90 to 90)','°','NLATN'], -887'197':['East Longitude (nearest neighbor) (0 to 360)','°','ELONN'], -888'255':['Missing','unknown','unknown'], -889} -890table_4_2_0_192 = { -891'1':['Covariance between zonal and meridional components of the wind. Defined as [uv]-[u][v], where "[]" indicates the mean over the indicated time span.','m2/s2','COVMZ'], -892'2':['Covariance between zonal component of the wind and temperature. Defined as [uT]-[u][T], where "[]" indicates the mean over the indicated time span.','K*m/s','COVTZ'], -893'3':['Covariance between meridional component of the wind and temperature. Defined as [vT]-[v][T], where "[]" indicates the mean over the indicated time span.','K*m/s','COVTM'], -894'4':['Covariance between temperature and vertical component of the wind. Defined as [wT]-[w][T], where "[]" indicates the mean over the indicated time span.','K*m/s','COVTW'], -895'5':['Covariance between zonal and zonal components of the wind. Defined as [uu]-[u][u], where "[]" indicates the mean over the indicated time span.','m2/s2','COVZZ'], -896'6':['Covariance between meridional and meridional components of the wind. Defined as [vv]-[v][v], where "[]" indicates the mean over the indicated time span.','m2/s2','COVMM'], -897'7':['Covariance between specific humidity and zonal components of the wind. Defined as [uq]-[u][q], where "[]" indicates the mean over the indicated time span.','kg/kg*m/s','COVQZ'], -898'8':['Covariance between specific humidity and meridional components of the wind. Defined as [vq]-[v][q], where "[]" indicates the mean over the indicated time span.','kg/kg*m/s','COVQM'], -899'9':['Covariance between temperature and vertical components of the wind. Defined as [ΩT]-[Ω][T], where "[]" indicates the mean over the indicated time span.','K*Pa/s','COVTVV'], -900'10':['Covariance between specific humidity and vertical components of the wind. Defined as [Ωq]-[Ω][q], where "[]" indicates the mean over the indicated time span.','kg/kg*Pa/s','COVQVV'], -901'11':['Covariance between surface pressure and surface pressure. Defined as [Psfc]-[Psfc][Psfc], where "[]" indicates the mean over the indicated time span.','Pa*Pa','COVPSPS'], -902'12':['Covariance between specific humidity and specific humidy. Defined as [qq]-[q][q], where "[]" indicates the mean over the indicated time span.','kg/kg*kg/kg','COVQQ'], -903'13':['Covariance between vertical and vertical components of the wind. Defined as [ΩΩ]-[Ω][Ω], where "[]" indicates the mean over the indicated time span.','Pa2/s2','COVVVVV'], -904'14':['Covariance between temperature and temperature. Defined as [TT]-[T][T], where "[]" indicates the mean over the indicated time span.','K*K','COVTT'], -905'255':['Missing','unknown','unknown'], -906} -907 -908# ---------------------------------------------------------------------------------------- -909# Source: https://github.com/NOAA-EMC/NCEPLIBS-wgrib2/blob/develop/wgrib2/NDFD_gribtab.dat -910# ---------------------------------------------------------------------------------------- -911table_4_2_0_0_ndfd = { -912'193':['Apparent Temperature','K','APPT'], -913} -914table_4_2_0_1_ndfd = { -915'192':['Weather Information','WxInfo','WX'], -916} -917table_4_2_0_19_ndfd = { -918'194':['Convective Hazard Outlook','categorical','CONVOUTLOOK'], -919'197':['Probability of Tornado','%','PTORNADO'], -920'198':['Probability of Hail','%','PHAIL'], -921'199':['Probability of Damaging Wind','%','PWIND'], -922'200':['Probability of Extreme Tornado','%','PXTRMTORN'], -923'201':['Probability of Extreme Hail','%','PXTRMHAIL'], -924'202':['Probability of Extreme Wind','%','PXTRMWIND'], -925'215':['Total Probability of Severe Thunderstorms','%','TOTALSVRPROB'], -926'216':['Total Probability of Extreme Severe Thunderstorms','%','TOTALXTRMPROB'], -927'217':['Watch Warning Advisory','WxInfo','WWA'], -928} -929table_4_2_0_192_ndfd = { -930'192':['Critical Fire Weather','','FIREWX'], -931'194':['Dry Lightning','','DRYLIGHTNING'], -932} +626'192':['Surface Lifted Index','K','LFT X'], +627'193':['Best (4 layer) Lifted Index','K','4LFTX'], +628'194':['Richardson Number','Numeric','RI'], +629'195':['Convective Weather Detection Index','unknown','CWDI'], +630'196':['Ultra Violet Index','W m-2','UVI'], +631'197':['Updraft Helicity','m2 s-2','UPHL'], +632'198':['Leaf Area Index','Numeric','LAI'], +633'199':['Hourly Maximum of Updraft Helicity','m2 s-2','MXUPHL'], +634'200':['Hourly Minimum of Updraft Helicity','m2 s-2','MNUPHL'], +635'201':['Bourgoiun Negative Energy Layer (surface to freezing level)','J kg-1','BNEGELAY'], +636'202':['Bourgoiun Positive Energy Layer (2k ft AGL to 400 hPa)','J kg-1','BPOSELAY'], +637'203':['Downdraft CAPE','J kg-1','DCAPE'], +638'204':['Effective Storm Relative Helicity','m2 s-2','EFHL'], +639'205':['Enhanced Stretching Potential','Numeric','ESP'], +640'206':['Critical Angle','Degree','CANGLE'], +641'207':['Effective Surface Helicity','m2 s-2','E3KH'], +642'208':['Significant Tornado Parameter with CIN-Effective Layer','numeric','STPC'], +643'209':['Significant Hail Parameter','numeric','SIGH'], +644'210':['Supercell Composite Parameter-Effective Layer','numeric','SCCP'], +645'211':['Significant Tornado parameter-Fixed Layer','numeric','SIGT'], +646'212':['Mixed Layer (100 mb) Virtual LFC','numeric','MLFC'], +647'255':['Missing','unknown','unknown'], +648} +649table_4_2_0_13 = { +650'0':['Aerosol Type','See Table 4.205','AEROT'], +651'1-191':['Reserved','unknown','unknown'], +652'192-254':['Reserved for Local Use','unknown','unknown'], +653'192':['Particulate matter (coarse)','µg m-3','PMTC'], +654'193':['Particulate matter (fine)','µg m-3','PMTF'], +655'194':['Particulate matter (fine)','log10 (µg m-3)','LPMTF'], +656'195':['Integrated column particulate matter (fine)','log10 (µg m-3)','LIPMF'], +657'255':['Missing','unknown','unknown'], +658} +659table_4_2_0_14 = { +660'0':['Total Ozone','DU','TOZNE'], +661'1':['Ozone Mixing Ratio','kg kg-1','O3MR'], +662'2':['Total Column Integrated Ozone','DU','TCIOZ'], +663'3-191':['Reserved','unknown','unknown'], +664'192-254':['Reserved for Local Use','unknown','unknown'], +665'192':['Ozone Mixing Ratio','kg kg-1','O3MR'], +666'193':['Ozone Concentration','ppb','OZCON'], +667'194':['Categorical Ozone Concentration','Non-Dim','OZCAT'], +668'195':['Ozone Vertical Diffusion','kg kg-1 s-1','VDFOZ'], +669'196':['Ozone Production','kg kg-1 s-1','POZ'], +670'197':['Ozone Tendency','kg kg-1 s-1','TOZ'], +671'198':['Ozone Production from Temperature Term','kg kg-1 s-1','POZT'], +672'199':['Ozone Production from Column Ozone Term','kg kg-1 s-1','POZO'], +673'200':['Ozone Daily Max from 1-hour Average','ppbV','OZMAX1'], +674'201':['Ozone Daily Max from 8-hour Average','ppbV','OZMAX8'], +675'202':['PM 2.5 Daily Max from 1-hour Average','μg m-3','PDMAX1'], +676'203':['PM 2.5 Daily Max from 24-hour Average','μg m-3','PDMAX24'], +677'204':['Acetaldehyde & Higher Aldehydes','ppbV','ALD2'], +678'255':['Missing','unknown','unknown'], +679} +680table_4_2_0_15 = { +681'0':['Base Spectrum Width','m s-1','BSWID'], +682'1':['Base Reflectivity','dB','BREF'], +683'2':['Base Radial Velocity','m s-1','BRVEL'], +684'3':['Vertically-Integrated Liquid Water','kg m-2','VIL'], +685'4':['Layer Maximum Base Reflectivity','dB','LMAXBR'], +686'5':['Precipitation','kg m-2','PREC'], +687'6':['Radar Spectra (1)','unknown','RDSP1'], +688'7':['Radar Spectra (2)','unknown','RDSP2'], +689'8':['Radar Spectra (3)','unknown','RDSP3'], +690'9':['Reflectivity of Cloud Droplets','dB','RFCD'], +691'10':['Reflectivity of Cloud Ice','dB','RFCI'], +692'11':['Reflectivity of Snow','dB','RFSNOW'], +693'12':['Reflectivity of Rain','dB','RFRAIN'], +694'13':['Reflectivity of Graupel','dB','RFGRPL'], +695'14':['Reflectivity of Hail','dB','RFHAIL'], +696'15':['Hybrid Scan Reflectivity','dB','HSR'], +697'16':['Hybrid Scan Reflectivity Height','m','HSRHT'], +698'17-191':['Reserved','unknown','unknown'], +699'192-254':['Reserved for Local Use','unknown','unknown'], +700'255':['Missing','unknown','unknown'], +701} +702table_4_2_0_16 = { +703'0':['Equivalent radar reflectivity factor for rain','m m6 m-3','REFZR'], +704'1':['Equivalent radar reflectivity factor for snow','m m6 m-3','REFZI'], +705'2':['Equivalent radar reflectivity factor for parameterized convection','m m6 m-3','REFZC'], +706'3':['Echo Top','m','RETOP'], +707'4':['Reflectivity','dB','REFD'], +708'5':['Composite reflectivity','dB','REFC'], +709'6-191':['Reserved','unknown','unknown'], +710'192-254':['Reserved for Local Use','unknown','unknown'], +711'192':['Equivalent radar reflectivity factor for rain','m m6 m-3','REFZR'], +712'193':['Equivalent radar reflectivity factor for snow','m m6 m-3','REFZI'], +713'194':['Equivalent radar reflectivity factor for parameterized convection','m m6 m-3','REFZC'], +714'195':['Reflectivity','dB','REFD'], +715'196':['Composite reflectivity','dB','REFC'], +716'197':['Echo Top','m','RETOP'], +717'198':['Hourly Maximum of Simulated Reflectivity','dB','MAXREF'], +718'255':['Missing','unknown','unknown'], +719} +720table_4_2_0_17 = { +721'0':['Lightning Strike Density','m-2 s-1','LTNGSD'], +722'1':['Lightning Potential Index (LPI)','J kg-1','LTPINX'], +723'2':['Cloud-to-Ground Lightning Flash Density','km-2 day-1','CDGDLTFD'], +724'3':['Cloud-to-Cloud Lightning Flash Density','km-2 day-1','CDCDLTFD'], +725'4':['Total Lightning Flash Density','km-2 day-1','TLGTFD'], +726'5':['Subgrid-scale lightning potential index','J kg-1','SLNGPIDX'], +727'6-191':['Reserved','unknown','unknown'], +728'192-254':['Reserved for Local Use','unknown','unknown'], +729'192':['Lightning','non-dim','LTNG'], +730'255':['Missing','unknown','unknown'], +731} +732table_4_2_0_18 = { +733'0':['Air Concentration of Caesium 137','Bq m-3','ACCES'], +734'1':['Air Concentration of Iodine 131','Bq m-3','ACIOD'], +735'2':['Air Concentration of Radioactive Pollutant','Bq m-3','ACRADP'], +736'3':['Ground Deposition of Caesium 137','Bq m-2','GDCES'], +737'4':['Ground Deposition of Iodine 131','Bq m-2','GDIOD'], +738'5':['Ground Deposition of Radioactive Pollutant','Bq m-2','GDRADP'], +739'6':['Time Integrated Air Concentration of Cesium Pollutant','Bq s m-3','TIACCP'], +740'7':['Time Integrated Air Concentration of Iodine Pollutant','Bq s m-3','TIACIP'], +741'8':['Time Integrated Air Concentration of Radioactive Pollutant','Bq s m-3','TIACRP'], +742'9':['Reserved','unknown','unknown'], +743'10':['Air Concentration','Bq m-3','AIRCON'], +744'11':['Wet Deposition','Bq m-2','WETDEP'], +745'12':['Dry Deposition','Bq m-2','DRYDEP'], +746'13':['Total Deposition (Wet + Dry)','Bq m-2','TOTLWD'], +747'14':['Specific Activity Concentration','Bq kg-1','SACON'], +748'15':['Maximum of Air Concentration in Layer','Bq m-3','MAXACON'], +749'16':['Height of Maximum of Air Concentration','m','HMXACON'], +750'17':['Column-Integrated Air Concentration','Bq m-2','CIAIRC'], +751'18':['Column-Averaged Air Concentration in Layer','Bq m-3','CAACL'], +752'19-191':['Reserved','unknown','unknown'], +753'192-254':['Reserved for Local Use','unknown','unknown'], +754'255':['Missing','unknown','unknown'], +755} +756table_4_2_0_19 = { +757'0':['Visibility','m','VIS'], +758'1':['Albedo','%','ALBDO'], +759'2':['Thunderstorm Probability','%','TSTM'], +760'3':['Mixed Layer Depth','m','MIXHT'], +761'4':['Volcanic Ash','See Table 4.206','VOLASH'], +762'5':['Icing Top','m','ICIT'], +763'6':['Icing Base','m','ICIB'], +764'7':['Icing','See Table 4.207','ICI'], +765'8':['Turbulence Top','m','TURBT'], +766'9':['Turbulence Base','m','TURBB'], +767'10':['Turbulence','See Table 4.208','TURB'], +768'11':['Turbulent Kinetic Energy','J kg-1','TKE'], +769'12':['Planetary Boundary Layer Regime','See Table 4.209','PBLREG'], +770'13':['Contrail Intensity','See Table 4.210','CONTI'], +771'14':['Contrail Engine Type','See Table 4.211','CONTET'], +772'15':['Contrail Top','m','CONTT'], +773'16':['Contrail Base','m','CONTB'], +774'17':['Maximum Snow Albedo','%','MXSALB'], +775'18':['Snow-Free Albedo','%','SNFALB'], +776'19':['Snow Albedo','%','SALBD'], +777'20':['Icing','%','ICIP'], +778'21':['In-Cloud Turbulence','%','CTP'], +779'22':['Clear Air Turbulence (CAT)','%','CAT'], +780'23':['Supercooled Large Droplet Probability','%','SLDP'], +781'24':['Convective Turbulent Kinetic Energy','J kg-1','CONTKE'], +782'25':['Weather','See Table 4.225','WIWW'], +783'26':['Convective Outlook','See Table 4.224','CONVO'], +784'27':['Icing Scenario','See Table 4.227','ICESC'], +785'28':['Mountain Wave Turbulence (Eddy Dissipation Rate)','m2/3 s-1','MWTURB'], +786'29':['Clear Air Turbulence (CAT) (Eddy Dissipation Rate)','m2/3 s-1','CATEDR'], +787'30':['Eddy Dissipation Parameter','m2/3 s-1','EDPARM'], +788'31':['Maximum of Eddy Dissipation Parameter in Layer','m2/3 s-1','MXEDPRM'], +789'32':['Highest Freezing Level','m','HIFREL'], +790'33':['Visibility Through Liquid Fog','m','VISLFOG'], +791'34':['Visibility Through Ice Fog','m','VISIFOG'], +792'35':['Visibility Through Blowing Snow','m','VISBSN'], +793'36':['Presence of Snow Squalls','See Table 4.222','PSNOWS'], +794'37':['Icing Severity','See Table 4.228','ICESEV'], +795'38':['Sky transparency index','See Table 4.214','SKYIDX'], +796'39':['Seeing index','See Table 4.214','SEEINDEX'], +797'40':['Snow level','m','SNOWLVL'], +798'41':['Duct base height','m','DBHEIGHT'], +799'42':['Trapping layer base height','m','TLBHEIGHT'], +800'43':['Trapping layer top height','m','TLTHEIGHT'], +801'44':['Mean vertical gradient of refractivity inside trapping layer','m-1','MEANVGRTL'], +802'45':['Minimum vertical gradient of refractivity inside trapping layer','m-1','MINVGRTL'], +803'46-191':['Reserved','unknown','unknown'], +804'192-254':['Reserved for Local Use','unknown','unknown'], +805'192':['Maximum Snow Albedo','%','MXSALB'], +806'193':['Snow-Free Albedo','%','SNFALB'], +807'194':['Slight risk convective outlook','categorical','SRCONO'], +808'195':['Moderate risk convective outlook','categorical','MRCONO'], +809'196':['High risk convective outlook','categorical','HRCONO'], +810'197':['Tornado probability','%','TORPROB'], +811'198':['Hail probability','%','HAILPROB'], +812'199':['Wind probability','%','WINDPROB'], +813'200':['Significant Tornado probability','%','STORPROB'], +814'201':['Significant Hail probability','%','SHAILPRO'], +815'202':['Significant Wind probability','%','SWINDPRO'], +816'203':['Categorical Thunderstorm','Code table 4.222','TSTMC'], +817'204':['Number of mixed layers next to surface','integer','MIXLY'], +818'205':['Flight Category','unknown','FLGHT'], +819'206':['Confidence - Ceiling','unknown','CICEL'], +820'207':['Confidence - Visibility','unknown','CIVIS'], +821'208':['Confidence - Flight Category','unknown','CIFLT'], +822'209':['Low-Level aviation interest','unknown','LAVNI'], +823'210':['High-Level aviation interest','unknown','HAVNI'], +824'211':['Visible, Black Sky Albedo','%','SBSALB'], +825'212':['Visible, White Sky Albedo','%','SWSALB'], +826'213':['Near IR, Black Sky Albedo','%','NBSALB'], +827'214':['Near IR, White Sky Albedo','%','NWSALB'], +828'215':['Total Probability of Severe Thunderstorms (Days 2,3)','%','PRSVR'], +829'216':['Total Probability of Extreme Severe Thunderstorms (Days 2,3)','%','PRSIGSVR'], +830'217':['Supercooled Large Droplet (SLD) Icing','See Table 4.207','SIPD'], +831'218':['Radiative emissivity','unknown','EPSR'], +832'219':['Turbulence Potential Forecast Index','unknown','TPFI'], +833'220':['Categorical Severe Thunderstorm','Code table 4.222','SVRTS'], +834'221':['Probability of Convection','%','PROCON'], +835'222':['Convection Potential','Code table 4.222','CONVP'], +836'223-231':['Reserved','unknown','unknown'], +837'232':['Volcanic Ash Forecast Transport and Dispersion','log10 (kg m-3)','VAFTD'], +838'233':['Icing probability','non-dim','ICPRB'], +839'234':['Icing Severity','non-dim','ICSEV'], +840'235':['Joint Fire Weather Probability','%','JFWPRB'], +841'236':['Snow Level','m','SNOWLVL'], +842'237':['Dry Thunderstorm Probability','%','DRYTPROB'], +843'238':['Ellrod Index','unknown','ELLINX'], +844'239':['Craven-Wiedenfeld Aggregate Severe Parameter','Numeric','CWASP'], +845'255':['Missing','unknown','unknown'], +846} +847table_4_2_0_20 = { +848'0':['Mass Density (Concentration)','kg m-3','MASSDEN'], +849'1':['Column-Integrated Mass Density','kg m-2','COLMD'], +850'2':['Mass Mixing Ratio (Mass Fraction in Air)','kg kg-1','MASSMR'], +851'3':['Atmosphere Emission Mass Flux','kg m-2s-1','AEMFLX'], +852'4':['Atmosphere Net Production Mass Flux','kg m-2s-1','ANPMFLX'], +853'5':['Atmosphere Net Production And Emision Mass Flux','kg m-2s-1','ANPEMFLX'], +854'6':['Surface Dry Deposition Mass Flux','kg m-2s-1','SDDMFLX'], +855'7':['Surface Wet Deposition Mass Flux','kg m-2s-1','SWDMFLX'], +856'8':['Atmosphere Re-Emission Mass Flux','kg m-2s-1','AREMFLX'], +857'9':['Wet Deposition by Large-Scale Precipitation Mass Flux','kg m-2s-1','WLSMFLX'], +858'10':['Wet Deposition by Convective Precipitation Mass Flux','kg m-2s-1','WDCPMFLX'], +859'11':['Sedimentation Mass Flux','kg m-2s-1','SEDMFLX'], +860'12':['Dry Deposition Mass Flux','kg m-2s-1','DDMFLX'], +861'13':['Transfer From Hydrophobic to Hydrophilic','kg kg-1s-1','TRANHH'], +862'14':['Transfer From SO2 (Sulphur Dioxide) to SO4 (Sulphate)','kg kg-1s-1','TRSDS'], +863'15':['Dry deposition velocity','m s-1','DDVEL'], +864'16':['Mass mixing ratio with respect to dry air','kg kg-1','MSSRDRYA'], +865'17':['Mass mixing ratio with respect to wet air','kg kg-1','MSSRWETA'], +866'18':['Potential of hydrogen (pH)','pH','POTHPH'], +867'19-49':['Reserved','unknown','unknown'], +868'50':['Amount in Atmosphere','mol','AIA'], +869'51':['Concentration In Air','mol m-3','CONAIR'], +870'52':['Volume Mixing Ratio (Fraction in Air)','mol mol-1','VMXR'], +871'53':['Chemical Gross Production Rate of Concentration','mol m-3s-1','CGPRC'], +872'54':['Chemical Gross Destruction Rate of Concentration','mol m-3s-1','CGDRC'], +873'55':['Surface Flux','mol m-2s-1','SFLUX'], +874'56':['Changes Of Amount in Atmosphere','mol s-1','COAIA'], +875'57':['Total Yearly Average Burden of The Atmosphere>','mol','TYABA'], +876'58':['Total Yearly Average Atmospheric Loss','mol s-1','TYAAL'], +877'59':['Aerosol Number Concentration','m-3','ANCON'], +878'60':['Aerosol Specific Number Concentration','kg-1','ASNCON'], +879'61':['Maximum of Mass Density','kg m-3','MXMASSD'], +880'62':['Height of Mass Density','m','HGTMD'], +881'63':['Column-Averaged Mass Density in Layer','kg m-3','CAVEMDL'], +882'64':['Mole fraction with respect to dry air','mol mol-1','MOLRDRYA'], +883'65':['Mole fraction with respect to wet air','mol mol-1','MOLRWETA'], +884'66':['Column-integrated in-cloud scavenging rate by precipitation','kg m-2 s-1','CINCLDSP'], +885'67':['Column-integrated below-cloud scavenging rate by precipitation','kg m-2 s-1','CBLCLDSP'], +886'68':['Column-integrated release rate from evaporating precipitation','kg m-2 s-1','CIRELREP'], +887'69':['Column-integrated in-cloud scavenging rate by large-scale precipitation','kg m-2 s-1','CINCSLSP'], +888'70':['Column-integrated below-cloud scavenging rate by large-scale precipitation','kg m-2 s-1','CBECSLSP'], +889'71':['Column-integrated release rate from evaporating large-scale precipitation','kg m-2 s-1','CRERELSP'], +890'72':['Column-integrated in-cloud scavenging rate by convective precipitation','kg m-2 s-1','CINCSRCP'], +891'73':['Column-integrated below-cloud scavenging rate by convective precipitation','kg m-2 s-1','CBLCSRCP'], +892'74':['Column-integrated release rate from evaporating convective precipitation','kg m-2 s-1','CIRERECP'], +893'75':['Wildfire flux','kg m-2 s-1','WFIREFLX'], +894'76':['Emission Rate','kg kg-1 s-1','EMISFLX'], +895'77':['Surface Emission flux','kg m-2 s-1','SFCEFLX'], +896'78':['Column integrated eastward mass flux','kg m-2 s-1','CEMF'], +897'79':['Column integrated northward mass flux','kg m-2 s-1','CNMF'], +898'80':['Column integrated divergence of mass flux','kg m-2 s-1','CDIVMF'], +899'81':['Column integrated net source','kg m-2 s-1','CDNETS'], +900'82-99':['Reserved','unknown','unknown'], +901'100':['Surface Area Density (Aerosol)','m-1','SADEN'], +902'101':['Vertical Visual Range','m','ATMTK'], +903'102':['Aerosol Optical Thickness','Numeric','AOTK'], +904'103':['Single Scattering Albedo','Numeric','SSALBK'], +905'104':['Asymmetry Factor','Numeric','ASYSFK'], +906'105':['Aerosol Extinction Coefficient','m-1','AECOEF'], +907'106':['Aerosol Absorption Coefficient','m-1','AACOEF'], +908'107':['Aerosol Lidar Backscatter from Satellite','m-1sr-1','ALBSAT'], +909'108':['Aerosol Lidar Backscatter from the Ground','m-1sr-1','ALBGRD'], +910'109':['Aerosol Lidar Extinction from Satellite','m-1','ALESAT'], +911'110':['Aerosol Lidar Extinction from the Ground','m-1','ALEGRD'], +912'111':['Angstrom Exponent','Numeric','ANGSTEXP'], +913'112':['Scattering Aerosol Optical Thickness','Numeric','SCTAOTK'], +914'113-191':['Reserved','unknown','unknown'], +915'192-254':['Reserved for Local Use','unknown','unknown'], +916'255':['Missing','unknown','unknown'], +917} +918table_4_2_0_190 = { +919'0':['Arbitrary Text String','CCITTIA5','ATEXT'], +920'1-191':['Reserved','unknown','unknown'], +921'192-254':['Reserved for Local Use','unknown','unknown'], +922'255':['Missing','unknown','unknown'], +923} +924table_4_2_0_191 = { +925'0':['Seconds prior to initial reference time (defined in Section 1)','s','TSEC'], +926'1':['Geographical Latitude','° N','GEOLAT'], +927'2':['Geographical Longitude','° E','GEOLON'], +928'3':['Days Since Last Observation','d','DSLOBS'], +929'4-191':['Reserved','unknown','unknown'], +930'192-254':['Reserved for Local Use','unknown','unknown'], +931'192':['Latitude (-90 to 90)','°','NLAT'], +932'193':['East Longitude (0 to 360)','°','ELON'], +933'194':['Seconds prior to initial reference time','s','RTSEC'], +934'195':['Model Layer number (From bottom up)','unknown','MLYNO'], +935'196':['Latitude (nearest neighbor) (-90 to 90)','°','NLATN'], +936'197':['East Longitude (nearest neighbor) (0 to 360)','°','ELONN'], +937'255':['Missing','unknown','unknown'], +938} +939table_4_2_0_192 = { +940'1':['Covariance between zonal and meridional components of the wind. Defined as [uv]-[u][v], where "[]" indicates the mean over the indicated time span.','m2/s2','COVMZ'], +941'2':['Covariance between zonal component of the wind and temperature. Defined as [uT]-[u][T], where "[]" indicates the mean over the indicated time span.','K*m/s','COVTZ'], +942'3':['Covariance between meridional component of the wind and temperature. Defined as [vT]-[v][T], where "[]" indicates the mean over the indicated time span.','K*m/s','COVTM'], +943'4':['Covariance between temperature and vertical component of the wind. Defined as [wT]-[w][T], where "[]" indicates the mean over the indicated time span.','K*m/s','COVTW'], +944'5':['Covariance between zonal and zonal components of the wind. Defined as [uu]-[u][u], where "[]" indicates the mean over the indicated time span.','m2/s2','COVZZ'], +945'6':['Covariance between meridional and meridional components of the wind. Defined as [vv]-[v][v], where "[]" indicates the mean over the indicated time span.','m2/s2','COVMM'], +946'7':['Covariance between specific humidity and zonal components of the wind. Defined as [uq]-[u][q], where "[]" indicates the mean over the indicated time span.','kg/kg*m/s','COVQZ'], +947'8':['Covariance between specific humidity and meridional components of the wind. Defined as [vq]-[v][q], where "[]" indicates the mean over the indicated time span.','kg/kg*m/s','COVQM'], +948'9':['Covariance between temperature and vertical components of the wind. Defined as [ΩT]-[Ω][T], where "[]" indicates the mean over the indicated time span.','K*Pa/s','COVTVV'], +949'10':['Covariance between specific humidity and vertical components of the wind. Defined as [Ωq]-[Ω][q], where "[]" indicates the mean over the indicated time span.','kg/kg*Pa/s','COVQVV'], +950'11':['Covariance between surface pressure and surface pressure. Defined as [Psfc]-[Psfc][Psfc], where "[]" indicates the mean over the indicated time span.','Pa*Pa','COVPSPS'], +951'12':['Covariance between specific humidity and specific humidy. Defined as [qq]-[q][q], where "[]" indicates the mean over the indicated time span.','kg/kg*kg/kg','COVQQ'], +952'13':['Covariance between vertical and vertical components of the wind. Defined as [ΩΩ]-[Ω][Ω], where "[]" indicates the mean over the indicated time span.','Pa2/s2','COVVVVV'], +953'14':['Covariance between temperature and temperature. Defined as [TT]-[T][T], where "[]" indicates the mean over the indicated time span.','K*K','COVTT'], +954'255':['Missing','unknown','unknown'], +955} +956 +957# ---------------------------------------------------------------------------------------- +958# Source: https://github.com/NOAA-EMC/NCEPLIBS-wgrib2/blob/develop/wgrib2/NDFD_gribtab.dat +959# ---------------------------------------------------------------------------------------- +960table_4_2_0_0_ndfd = { +961'193':['Apparent Temperature','K','APPT'], +962} +963table_4_2_0_1_ndfd = { +964'192':['Weather Information','WxInfo','WX'], +965} +966table_4_2_0_19_ndfd = { +967'194':['Convective Hazard Outlook','categorical','CONVOUTLOOK'], +968'197':['Probability of Tornado','%','PTORNADO'], +969'198':['Probability of Hail','%','PHAIL'], +970'199':['Probability of Damaging Wind','%','PWIND'], +971'200':['Probability of Extreme Tornado','%','PXTRMTORN'], +972'201':['Probability of Extreme Hail','%','PXTRMHAIL'], +973'202':['Probability of Extreme Wind','%','PXTRMWIND'], +974'215':['Total Probability of Severe Thunderstorms','%','TOTALSVRPROB'], +975'216':['Total Probability of Extreme Severe Thunderstorms','%','TOTALXTRMPROB'], +976'217':['Watch Warning Advisory','WxInfo','WWA'], +977} +978table_4_2_0_192_ndfd = { +979'192':['Critical Fire Weather','','FIREWX'], +980'194':['Dry Lightning','','DRYLIGHTNING'], +981}

    @@ -1060,7 +1109,7 @@

    table_4_2_0_0 = - {'0': ['Temperature', 'K', 'TMP'], '1': ['Virtual Temperature', 'K', 'VTMP'], '2': ['Potential Temperature', 'K', 'POT'], '3': ['Pseudo-Adiabatic Potential Temperature (or Equivalent Potential Temperature)', 'K', 'EPOT'], '4': ['Maximum Temperature', 'K', 'TMAX'], '5': ['Minimum Temperature', 'K', 'TMIN'], '6': ['Dew Point Temperature', 'K', 'DPT'], '7': ['Dew Point Depression (or Deficit)', 'K', 'DEPR'], '8': ['Lapse Rate', 'K m-1', 'LAPR'], '9': ['Temperature Anomaly', 'K', 'TMPA'], '10': ['Latent Heat Net Flux', 'W m-2', 'LHTFL'], '11': ['Sensible Heat Net Flux', 'W m-2', 'SHTFL'], '12': ['Heat Index', 'K', 'HEATX'], '13': ['Wind Chill Factor', 'K', 'WCF'], '14': ['Minimum Dew Point Depression', 'K', 'MINDPD'], '15': ['Virtual Potential Temperature', 'K', 'VPTMP'], '16': ['Snow Phase Change Heat Flux', 'W m-2', 'SNOHF'], '17': ['Skin Temperature', 'K', 'SKINT'], '18': ['Snow Temperature (top of snow)', 'K', 'SNOT'], '19': ['Turbulent Transfer Coefficient for Heat', 'Numeric', 'TTCHT'], '20': ['Turbulent Diffusion Coefficient for Heat', 'm2s-1', 'TDCHT'], '21': ['Apparent Temperature', 'K', 'APTMP'], '22': ['Temperature Tendency due to Short-Wave Radiation', 'K s-1', 'TTSWR'], '23': ['Temperature Tendency due to Long-Wave Radiation', 'K s-1', 'TTLWR'], '24': ['Temperature Tendency due to Short-Wave Radiation, Clear Sky', 'K s-1', 'TTSWRCS'], '25': ['Temperature Tendency due to Long-Wave Radiation, Clear Sky', 'K s-1', 'TTLWRCS'], '26': ['Temperature Tendency due to parameterizations', 'K s-1', 'TTPARM'], '27': ['Wet Bulb Temperature', 'K', 'WETBT'], '28': ['Unbalanced Component of Temperature', 'K', 'UCTMP'], '29': ['Temperature Advection', 'K s-1', 'TMPADV'], '30': ['Latent Heat Net Flux Due to Evaporation', 'W m-2', 'LHFLXE'], '31': ['Latent Heat Net Flux Due to Sublimation', 'W m-2', 'LHFLXS'], '32': ['Wet-Bulb Potential Temperature', 'K', 'WETBPT'], '33-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Snow Phase Change Heat Flux', 'W m-2', 'SNOHF'], '193': ['Temperature Tendency by All Radiation', 'K s-1', 'TTRAD'], '194': ['Relative Error Variance', 'unknown', 'REV'], '195': ['Large Scale Condensate Heating Rate', 'K s-1', 'LRGHR'], '196': ['Deep Convective Heating Rate', 'K s-1', 'CNVHR'], '197': ['Total Downward Heat Flux at Surface', 'W m-2', 'THFLX'], '198': ['Temperature Tendency by All Physics', 'K s-1', 'TTDIA'], '199': ['Temperature Tendency by Non-radiation Physics', 'K s-1', 'TTPHY'], '200': ['Standard Dev. of IR Temp. over 1x1 deg. area', 'K', 'TSD1D'], '201': ['Shallow Convective Heating Rate', 'K s-1', 'SHAHR'], '202': ['Vertical Diffusion Heating rate', 'K s-1', 'VDFHR'], '203': ['Potential Temperature at Top of Viscous Sublayer', 'K', 'THZ0'], '204': ['Tropical Cyclone Heat Potential', 'Jm-2K', 'TCHP'], '205': ['Effective Layer (EL) Temperature', 'C', 'ELMELT'], '206': ['Wet Bulb Globe Temperature', 'K', 'WETGLBT'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Temperature', 'K', 'TMP'], '1': ['Virtual Temperature', 'K', 'VTMP'], '2': ['Potential Temperature', 'K', 'POT'], '3': ['Pseudo-Adiabatic Potential Temperature (or Equivalent Potential Temperature)', 'K', 'EPOT'], '4': ['Maximum Temperature', 'K', 'TMAX'], '5': ['Minimum Temperature', 'K', 'TMIN'], '6': ['Dew Point Temperature', 'K', 'DPT'], '7': ['Dew Point Depression (or Deficit)', 'K', 'DEPR'], '8': ['Lapse Rate', 'K m-1', 'LAPR'], '9': ['Temperature Anomaly', 'K', 'TMPA'], '10': ['Latent Heat Net Flux', 'W m-2', 'LHTFL'], '11': ['Sensible Heat Net Flux', 'W m-2', 'SHTFL'], '12': ['Heat Index', 'K', 'HEATX'], '13': ['Wind Chill Factor', 'K', 'WCF'], '14': ['Minimum Dew Point Depression', 'K', 'MINDPD'], '15': ['Virtual Potential Temperature', 'K', 'VPTMP'], '16': ['Snow Phase Change Heat Flux', 'W m-2', 'SNOHF'], '17': ['Skin Temperature', 'K', 'SKINT'], '18': ['Snow Temperature (top of snow)', 'K', 'SNOT'], '19': ['Turbulent Transfer Coefficient for Heat', 'Numeric', 'TTCHT'], '20': ['Turbulent Diffusion Coefficient for Heat', 'm2s-1', 'TDCHT'], '21': ['Apparent Temperature', 'K', 'APTMP'], '22': ['Temperature Tendency due to Short-Wave Radiation', 'K s-1', 'TTSWR'], '23': ['Temperature Tendency due to Long-Wave Radiation', 'K s-1', 'TTLWR'], '24': ['Temperature Tendency due to Short-Wave Radiation, Clear Sky', 'K s-1', 'TTSWRCS'], '25': ['Temperature Tendency due to Long-Wave Radiation, Clear Sky', 'K s-1', 'TTLWRCS'], '26': ['Temperature Tendency due to parameterizations', 'K s-1', 'TTPARM'], '27': ['Wet Bulb Temperature', 'K', 'WETBT'], '28': ['Unbalanced Component of Temperature', 'K', 'UCTMP'], '29': ['Temperature Advection', 'K s-1', 'TMPADV'], '30': ['Latent Heat Net Flux Due to Evaporation', 'W m-2', 'LHFLXE'], '31': ['Latent Heat Net Flux Due to Sublimation', 'W m-2', 'LHFLXS'], '32': ['Wet-Bulb Potential Temperature', 'K', 'WETBPT'], '33-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Snow Phase Change Heat Flux', 'W m-2', 'SNOHF'], '193': ['Temperature Tendency by All Radiation', 'K s-1', 'TTRAD'], '194': ['Relative Error Variance', 'unknown', 'REV'], '195': ['Large Scale Condensate Heating Rate', 'K s-1', 'LRGHR'], '196': ['Deep Convective Heating Rate', 'K s-1', 'CNVHR'], '197': ['Total Downward Heat Flux at Surface', 'W m-2', 'THFLX'], '198': ['Temperature Tendency by All Physics', 'K s-1', 'TTDIA'], '199': ['Temperature Tendency by Non-radiation Physics', 'K s-1', 'TTPHY'], '200': ['Standard Dev. of IR Temp. over 1x1 deg. area', 'K', 'TSD1D'], '201': ['Shallow Convective Heating Rate', 'K s-1', 'SHAHR'], '202': ['Vertical Diffusion Heating rate', 'K s-1', 'VDFHR'], '203': ['Potential Temperature at Top of Viscous Sublayer', 'K', 'THZ0'], '204': ['Tropical Cyclone Heat Potential', 'J m-2 K', 'TCHP'], '205': ['Effective Layer (EL) Temperature', 'C', 'ELMELT'], '206': ['Wet Bulb Globe Temperature', 'K', 'WETGLBT'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -1073,7 +1122,7 @@

    table_4_2_0_1 = - {'0': ['Specific Humidity', 'kg kg-1', 'SPFH'], '1': ['Relative Humidity', '%', 'RH'], '2': ['Humidity Mixing Ratio', 'kg kg-1', 'MIXR'], '3': ['Precipitable Water', 'kg m-2', 'PWAT'], '4': ['Vapour Pressure', 'Pa', 'VAPP'], '5': ['Saturation Deficit', 'Pa', 'SATD'], '6': ['Evaporation', 'kg m-2', 'EVP'], '7': ['Precipitation Rate', 'kg m-2 s-1', 'PRATE'], '8': ['Total Precipitation', 'kg m-2', 'APCP'], '9': ['Large-Scale Precipitation (non-convective)', 'kg m-2', 'NCPCP'], '10': ['Convective Precipitation', 'kg m-2', 'ACPCP'], '11': ['Snow Depth', 'm', 'SNOD'], '12': ['Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'SRWEQ'], '13': ['Water Equivalent of Accumulated Snow Depth', 'kg m-2', 'WEASD'], '14': ['Convective Snow', 'kg m-2', 'SNOC'], '15': ['Large-Scale Snow', 'kg m-2', 'SNOL'], '16': ['Snow Melt', 'kg m-2', 'SNOM'], '17': ['Snow Age', 'day', 'SNOAG'], '18': ['Absolute Humidity', 'kg m-3', 'ABSH'], '19': ['Precipitation Type', 'See Table 4.201', 'PTYPE'], '20': ['Integrated Liquid Water', 'kg m-2', 'ILIQW'], '21': ['Condensate', 'kg kg-1', 'TCOND'], '22': ['Cloud Mixing Ratio', 'kg kg-1', 'CLMR'], '23': ['Ice Water Mixing Ratio', 'kg kg-1', 'ICMR'], '24': ['Rain Mixing Ratio', 'kg kg-1', 'RWMR'], '25': ['Snow Mixing Ratio', 'kg kg-1', 'SNMR'], '26': ['Horizontal Moisture Convergence', 'kg kg-1 s-1', 'MCONV'], '27': ['Maximum Relative Humidity', '%', 'MAXRH'], '28': ['Maximum Absolute Humidity', 'kg m-3', 'MAXAH'], '29': ['Total Snowfall', 'm', 'ASNOW'], '30': ['Precipitable Water Category', 'See Table 4.202', 'PWCAT'], '31': ['Hail', 'm', 'HAIL'], '32': ['Graupel', 'kg kg-1', 'GRLE'], '33': ['Categorical Rain', 'Code table 4.222', 'CRAIN'], '34': ['Categorical Freezing Rain', 'Code table 4.222', 'CFRZR'], '35': ['Categorical Ice Pellets', 'Code table 4.222', 'CICEP'], '36': ['Categorical Snow', 'Code table 4.222', 'CSNOW'], '37': ['Convective Precipitation Rate', 'kg m-2 s-1', 'CPRAT'], '38': ['Horizontal Moisture Divergence', 'kg kg-1 s-1', 'MDIVER'], '39': ['Percent frozen precipitation', '%', 'CPOFP'], '40': ['Potential Evaporation', 'kg m-2', 'PEVAP'], '41': ['Potential Evaporation Rate', 'W m-2', 'PEVPR'], '42': ['Snow Cover', '%', 'SNOWC'], '43': ['Rain Fraction of Total Cloud Water', 'Proportion', 'FRAIN'], '44': ['Rime Factor', 'Numeric', 'RIME'], '45': ['Total Column Integrated Rain', 'kg m-2', 'TCOLR'], '46': ['Total Column Integrated Snow', 'kg m-2', 'TCOLS'], '47': ['Large Scale Water Precipitation (Non-Convective)', 'kg m-2', 'LSWP'], '48': ['Convective Water Precipitation', 'kg m-2', 'CWP'], '49': ['Total Water Precipitation', 'kg m-2', 'TWATP'], '50': ['Total Snow Precipitation', 'kg m-2', 'TSNOWP'], '51': ['Total Column Water (Vertically integrated total water (vapour+cloud water/ice)', 'kg m-2', 'TCWAT'], '52': ['Total Precipitation Rate', 'kg m-2 s-1', 'TPRATE'], '53': ['Total Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'TSRWE'], '54': ['Large Scale Precipitation Rate', 'kg m-2 s-1', 'LSPRATE'], '55': ['Convective Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'CSRWE'], '56': ['Large Scale Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'LSSRWE'], '57': ['Total Snowfall Rate', 'm s-1', 'TSRATE'], '58': ['Convective Snowfall Rate', 'm s-1', 'CSRATE'], '59': ['Large Scale Snowfall Rate', 'm s-1', 'LSSRATE'], '60': ['Snow Depth Water Equivalent', 'kg m-2', 'SDWE'], '61': ['Snow Density', 'kg m-3', 'SDEN'], '62': ['Snow Evaporation', 'kg m-2', 'SEVAP'], '63': ['Reserved', 'unknown', 'unknown'], '64': ['Total Column Integrated Water Vapour', 'kg m-2', 'TCIWV'], '65': ['Rain Precipitation Rate', 'kg m-2 s-1', 'RPRATE'], '66': ['Snow Precipitation Rate', 'kg m-2 s-1', 'SPRATE'], '67': ['Freezing Rain Precipitation Rate', 'kg m-2 s-1', 'FPRATE'], '68': ['Ice Pellets Precipitation Rate', 'kg m-2 s-1', 'IPRATE'], '69': ['Total Column Integrate Cloud Water', 'kg m-2', 'TCOLW'], '70': ['Total Column Integrate Cloud Ice', 'kg m-2', 'TCOLI'], '71': ['Hail Mixing Ratio', 'kg kg-1', 'HAILMXR'], '72': ['Total Column Integrate Hail', 'kg m-2', 'TCOLH'], '73': ['Hail Prepitation Rate', 'kg m-2 s-1', 'HAILPR'], '74': ['Total Column Integrate Graupel', 'kg m-2', 'TCOLG'], '75': ['Graupel (Snow Pellets) Prepitation Rate', 'kg m-2 s-1', 'GPRATE'], '76': ['Convective Rain Rate', 'kg m-2 s-1', 'CRRATE'], '77': ['Large Scale Rain Rate', 'kg m-2 s-1', 'LSRRATE'], '78': ['Total Column Integrate Water (All components including precipitation)', 'kg m-2', 'TCOLWA'], '79': ['Evaporation Rate', 'kg m-2 s-1', 'EVARATE'], '80': ['Total Condensate', 'kg kg-1', 'TOTCON'], '81': ['Total Column-Integrate Condensate', 'kg m-2', 'TCICON'], '82': ['Cloud Ice Mixing Ratio', 'kg kg-1', 'CIMIXR'], '83': ['Specific Cloud Liquid Water Content', 'kg kg-1', 'SCLLWC'], '84': ['Specific Cloud Ice Water Content', 'kg kg-1', 'SCLIWC'], '85': ['Specific Rain Water Content', 'kg kg-1', 'SRAINW'], '86': ['Specific Snow Water Content', 'kg kg-1', 'SSNOWW'], '87': ['Stratiform Precipitation Rate', 'kg m-2 s-1', 'STRPRATE'], '88': ['Categorical Convective Precipitation', 'Code table 4.222', 'CATCP'], '89': ['Reserved', 'unknown', 'unknown'], '90': ['Total Kinematic Moisture Flux', 'kg kg-1 m s-1', 'TKMFLX'], '91': ['U-component (zonal) Kinematic Moisture Flux', 'kg kg-1 m s-1', 'UKMFLX'], '92': ['V-component (meridional) Kinematic Moisture Flux', 'kg kg-1 m s-1', 'VKMFLX'], '93': ['Relative Humidity With Respect to Water', '%', 'RHWATER'], '94': ['Relative Humidity With Respect to Ice', '%', 'RHICE'], '95': ['Freezing or Frozen Precipitation Rate', 'kg m-2 s-1', 'FZPRATE'], '96': ['Mass Density of Rain', 'kg m-3', 'MASSDR'], '97': ['Mass Density of Snow', 'kg m-3', 'MASSDS'], '98': ['Mass Density of Graupel', 'kg m-3', 'MASSDG'], '99': ['Mass Density of Hail', 'kg m-3', 'MASSDH'], '100': ['Specific Number Concentration of Rain', 'kg-1', 'SPNCR'], '101': ['Specific Number Concentration of Snow', 'kg-1', 'SPNCS'], '102': ['Specific Number Concentration of Graupel', 'kg-1', 'SPNCG'], '103': ['Specific Number Concentration of Hail', 'kg-1', 'SPNCH'], '104': ['Number Density of Rain', 'm-3', 'NUMDR'], '105': ['Number Density of Snow', 'm-3', 'NUMDS'], '106': ['Number Density of Graupel', 'm-3', 'NUMDG'], '107': ['Number Density of Hail', 'm-3', 'NUMDH'], '108': ['Specific Humidity Tendency due to Parameterizations', 'kg kg-1 s-1', 'SHTPRM'], '109': ['Mass Density of Liquid Water Coating on Hail Expressed as Mass of Liquid Water per Unit Volume of Air', 'kg m-3', 'MDLWHVA'], '110': ['Specific Mass of Liquid Water Coating on Hail Expressed as Mass of Liquid Water per Unit Mass of Moist Air', 'kg kg-1', 'SMLWHMA'], '111': ['Mass Mixing Ratio of Liquid Water Coating on Hail Expressed as Mass of Liquid Water per Unit Mass of Dry Air', 'kg kg-1', 'MMLWHDA'], '112': ['Mass Density of Liquid Water Coating on Graupel Expressed as Mass of Liquid Water per Unit Volume of Air', 'kg m-3', 'MDLWGVA'], '113': ['Specific Mass of Liquid Water Coating on Graupel Expressed as Mass of Liquid Water per Unit Mass of Moist Air', 'kg kg-1', 'SMLWGMA'], '114': ['Mass Mixing Ratio of Liquid Water Coating on Graupel Expressed as Mass of Liquid Water per Unit Mass of Dry Air', 'kg kg-1', 'MMLWGDA'], '115': ['Mass Density of Liquid Water Coating on Snow Expressed as Mass of Liquid Water per Unit Volume of Air', 'kg m-3', 'MDLWSVA'], '116': ['Specific Mass of Liquid Water Coating on Snow Expressed as Mass of Liquid Water per Unit Mass of Moist Air', 'kg kg-1', 'SMLWSMA'], '117': ['Mass Mixing Ratio of Liquid Water Coating on Snow Expressed as Mass of Liquid Water per Unit Mass of Dry Air', 'kg kg-1', 'MMLWSDA'], '118': ['Unbalanced Component of Specific Humidity', 'kg kg-1', 'UNCSH'], '119': ['Unbalanced Component of Specific Cloud Liquid Water content', 'kg kg-1', 'UCSCLW'], '120': ['Unbalanced Component of Specific Cloud Ice Water content', 'kg kg-1', 'UCSCIW'], '121': ['Fraction of Snow Cover', 'Proportion', 'FSNOWC'], '122': ['Precipitation intensity index', 'See Table 4.247', 'PIIDX'], '123': ['Domiunknownt precipitation type', 'See Table 4.201', 'DPTYPE'], '124': ['Presence of showers', 'See Table 4.222', 'PSHOW'], '125': ['Presence of blowing snow', 'See Table 4.222', 'PBSNOW'], '126': ['Presence of blizzard', 'See Table 4.222', 'PBLIZZ'], '127': ['Ice pellets (non-water equivalent) precipitation rate', 'm s-1', 'ICEP'], '128': ['Total solid precipitation rate', 'kg m-2 s-1', 'TSPRATE'], '129': ['Effective Radius of Cloud Water', 'm', 'EFRCWAT'], '130': ['Effective Radius of Rain', 'm', 'EFRRAIN'], '131': ['Effective Radius of Cloud Ice', 'm', 'EFRCICE'], '132': ['Effective Radius of Snow', 'm', 'EFRSNOW'], '133': ['Effective Radius of Graupel', 'm', 'EFRGRL'], '134': ['Effective Radius of Hail', 'm', 'EFRHAIL'], '135': ['Effective Radius of Subgrid Liquid Clouds', 'm', 'EFRSLC'], '136': ['Effective Radius of Subgrid Ice Clouds', 'm', 'EFRSICEC'], '137': ['Effective Aspect Ratio of Rain', 'unknown', 'EFARRAIN'], '138': ['Effective Aspect Ratio of Cloud Ice', 'unknown', 'EFARCICE'], '139': ['Effective Aspect Ratio of Snow', 'unknown', 'EFARSNOW'], '140': ['Effective Aspect Ratio of Graupel', 'unknown', 'EFARGRL'], '141': ['Effective Aspect Ratio of Hail', 'unknown', 'EFARHAIL'], '142': ['Effective Aspect Ratio of Subgrid Ice Clouds', 'unknown', 'EFARSIC'], '143': ['Potential evaporation rate', 'kg m-2 s-1', 'PERATE'], '144': ['Specific rain water content (convective)', 'kg kg-1', 'SRWATERC'], '145': ['Specific snow water content (convective)', 'kg kg-1', 'SSNOWWC'], '146': ['Cloud ice precipitation rate', 'kg m-2 s-1', 'CICEPR'], '147': ['Character of precipitation', 'See Table 4.249', 'PERATE'], '148': ['Snow evaporation rate', 'kg m-2 s-1', 'SNOWERAT'], '149': ['Cloud water mixing ratio', 'kg kg-1', 'CWATERMR'], '150-128': ['Reserved', 'unknown', 'unknown'], '143-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Categorical Rain', 'Code table 4.222', 'CRAIN'], '193': ['Categorical Freezing Rain', 'Code table 4.222', 'CFRZR'], '194': ['Categorical Ice Pellets', 'Code table 4.222', 'CICEP'], '195': ['Categorical Snow', 'Code table 4.222', 'CSNOW'], '196': ['Convective Precipitation Rate', 'kg m-2 s-1', 'CPRAT'], '197': ['Horizontal Moisture Divergence', 'kg kg-1 s-1', 'MDIV'], '198': ['Minimum Relative Humidity', '%', 'MINRH'], '199': ['Potential Evaporation', 'kg m-2', 'PEVAP'], '200': ['Potential Evaporation Rate', 'W m-2', 'PEVPR'], '201': ['Snow Cover', '%', 'SNOWC'], '202': ['Rain Fraction of Total Liquid Water', 'non-dim', 'FRAIN'], '203': ['Rime Factor', 'non-dim', 'RIME'], '204': ['Total Column Integrated Rain', 'kg m-2', 'TCOLR'], '205': ['Total Column Integrated Snow', 'kg m-2', 'TCOLS'], '206': ['Total Icing Potential Diagnostic', 'non-dim', 'TIPD'], '207': ['Number concentration for ice particles', 'non-dim', 'NCIP'], '208': ['Snow temperature', 'K', 'SNOT'], '209': ['Total column-integrated supercooled liquid water', 'kg m-2', 'TCLSW'], '210': ['Total column-integrated melting ice', 'kg m-2', 'TCOLM'], '211': ['Evaporation - Precipitation', 'cm/day', 'EMNP'], '212': ['Sublimation (evaporation from snow)', 'W m-2', 'SBSNO'], '213': ['Deep Convective Moistening Rate', 'kg kg-1 s-1', 'CNVMR'], '214': ['Shallow Convective Moistening Rate', 'kg kg-1 s-1', 'SHAMR'], '215': ['Vertical Diffusion Moistening Rate', 'kg kg-1 s-1', 'VDFMR'], '216': ['Condensation Pressure of Parcali Lifted From Indicate Surface', 'Pa', 'CONDP'], '217': ['Large scale moistening rate', 'kg kg-1 s-1', 'LRGMR'], '218': ['Specific humidity at top of viscous sublayer', 'kg kg-1', 'QZ0'], '219': ['Maximum specific humidity at 2m', 'kg kg-1', 'QMAX'], '220': ['Minimum specific humidity at 2m', 'kg kg-1', 'QMIN'], '221': ['Liquid precipitation (Rainfall)', 'kg m-2', 'ARAIN'], '222': ['Snow temperature, depth-avg', 'K', 'SNOWT'], '223': ['Total precipitation (nearest grid point)', 'kg m-2', 'APCPN'], '224': ['Convective precipitation (nearest grid point)', 'kg m-2', 'ACPCPN'], '225': ['Freezing Rain', 'kg m-2', 'FRZR'], '226': ['Predominant Weather', 'Numeric', 'PWTHER'], '227': ['Frozen Rain', 'kg m-2', 'FROZR'], '228': ['Flat Ice Accumulation (FRAM)', 'kg m-2', 'FICEAC'], '229': ['Line Ice Accumulation (FRAM)', 'kg m-2', 'LICEAC'], '230': ['Sleet Accumulation', 'kg m-2', 'SLACC'], '231': ['Precipitation Potential Index', '%', 'PPINDX'], '232': ['Probability Cloud Ice Present', '%', 'PROBCIP'], '233': ['Snow Liquid ratio', 'kg kg-1', 'SNOWLR'], '234': ['Precipitation Duration', 'hour', 'PCPDUR'], '235': ['Cloud Liquid Mixing Ratio', 'kg kg-1', 'CLLMR'], '236-240': ['Reserved', 'unknown', 'unknown'], '241': ['Total Snow', 'kg m-2', 'TSNOW'], '242': ['Relative Humidity with Respect to Precipitable Water', '%', 'RHPW'], '245': ['Hourly Maximum of Column Vertical Integrated Graupel on Entire Atmosphere', 'kg m-2', 'MAXVIG'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Specific Humidity', 'kg kg-1', 'SPFH'], '1': ['Relative Humidity', '%', 'RH'], '2': ['Humidity Mixing Ratio', 'kg kg-1', 'MIXR'], '3': ['Precipitable Water', 'kg m-2', 'PWAT'], '4': ['Vapour Pressure', 'Pa', 'VAPP'], '5': ['Saturation Deficit', 'Pa', 'SATD'], '6': ['Evaporation', 'kg m-2', 'EVP'], '7': ['Precipitation Rate', 'kg m-2 s-1', 'PRATE'], '8': ['Total Precipitation', 'kg m-2', 'APCP'], '9': ['Large-Scale Precipitation (non-convective)', 'kg m-2', 'NCPCP'], '10': ['Convective Precipitation', 'kg m-2', 'ACPCP'], '11': ['Snow Depth', 'm', 'SNOD'], '12': ['Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'SRWEQ'], '13': ['Water Equivalent of Accumulated Snow Depth', 'kg m-2', 'WEASD'], '14': ['Convective Snow', 'kg m-2', 'SNOC'], '15': ['Large-Scale Snow', 'kg m-2', 'SNOL'], '16': ['Snow Melt', 'kg m-2', 'SNOM'], '17': ['Snow Age', 'day', 'SNOAG'], '18': ['Absolute Humidity', 'kg m-3', 'ABSH'], '19': ['Precipitation Type', 'See Table 4.201', 'PTYPE'], '20': ['Integrated Liquid Water', 'kg m-2', 'ILIQW'], '21': ['Condensate', 'kg kg-1', 'TCOND'], '22': ['Cloud Mixing Ratio', 'kg kg-1', 'CLMR'], '23': ['Ice Water Mixing Ratio', 'kg kg-1', 'ICMR'], '24': ['Rain Mixing Ratio', 'kg kg-1', 'RWMR'], '25': ['Snow Mixing Ratio', 'kg kg-1', 'SNMR'], '26': ['Horizontal Moisture Convergence', 'kg kg-1 s-1', 'MCONV'], '27': ['Maximum Relative Humidity', '%', 'MAXRH'], '28': ['Maximum Absolute Humidity', 'kg m-3', 'MAXAH'], '29': ['Total Snowfall', 'm', 'ASNOW'], '30': ['Precipitable Water Category', 'See Table 4.202', 'PWCAT'], '31': ['Hail', 'm', 'HAIL'], '32': ['Graupel', 'kg kg-1', 'GRLE'], '33': ['Categorical Rain', 'Code table 4.222', 'CRAIN'], '34': ['Categorical Freezing Rain', 'Code table 4.222', 'CFRZR'], '35': ['Categorical Ice Pellets', 'Code table 4.222', 'CICEP'], '36': ['Categorical Snow', 'Code table 4.222', 'CSNOW'], '37': ['Convective Precipitation Rate', 'kg m-2 s-1', 'CPRAT'], '38': ['Horizontal Moisture Divergence', 'kg kg-1 s-1', 'MDIVER'], '39': ['Percent frozen precipitation', '%', 'CPOFP'], '40': ['Potential Evaporation', 'kg m-2', 'PEVAP'], '41': ['Potential Evaporation Rate', 'W m-2', 'PEVPR'], '42': ['Snow Cover', '%', 'SNOWC'], '43': ['Rain Fraction of Total Cloud Water', 'Proportion', 'FRAIN'], '44': ['Rime Factor', 'Numeric', 'RIME'], '45': ['Total Column Integrated Rain', 'kg m-2', 'TCOLR'], '46': ['Total Column Integrated Snow', 'kg m-2', 'TCOLS'], '47': ['Large Scale Water Precipitation (Non-Convective)', 'kg m-2', 'LSWP'], '48': ['Convective Water Precipitation', 'kg m-2', 'CWP'], '49': ['Total Water Precipitation', 'kg m-2', 'TWATP'], '50': ['Total Snow Precipitation', 'kg m-2', 'TSNOWP'], '51': ['Total Column Water (Vertically integrated total water (vapour+cloud water/ice)', 'kg m-2', 'TCWAT'], '52': ['Total Precipitation Rate', 'kg m-2 s-1', 'TPRATE'], '53': ['Total Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'TSRWE'], '54': ['Large Scale Precipitation Rate', 'kg m-2 s-1', 'LSPRATE'], '55': ['Convective Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'CSRWE'], '56': ['Large Scale Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'LSSRWE'], '57': ['Total Snowfall Rate', 'm s-1', 'TSRATE'], '58': ['Convective Snowfall Rate', 'm s-1', 'CSRATE'], '59': ['Large Scale Snowfall Rate', 'm s-1', 'LSSRATE'], '60': ['Snow Depth Water Equivalent', 'kg m-2', 'SDWE'], '61': ['Snow Density', 'kg m-3', 'SDEN'], '62': ['Snow Evaporation', 'kg m-2', 'SEVAP'], '63': ['Reserved', 'unknown', 'unknown'], '64': ['Total Column Integrated Water Vapour', 'kg m-2', 'TCIWV'], '65': ['Rain Precipitation Rate', 'kg m-2 s-1', 'RPRATE'], '66': ['Snow Precipitation Rate', 'kg m-2 s-1', 'SPRATE'], '67': ['Freezing Rain Precipitation Rate', 'kg m-2 s-1', 'FPRATE'], '68': ['Ice Pellets Precipitation Rate', 'kg m-2 s-1', 'IPRATE'], '69': ['Total Column Integrate Cloud Water', 'kg m-2', 'TCOLW'], '70': ['Total Column Integrate Cloud Ice', 'kg m-2', 'TCOLI'], '71': ['Hail Mixing Ratio', 'kg kg-1', 'HAILMXR'], '72': ['Total Column Integrate Hail', 'kg m-2', 'TCOLH'], '73': ['Hail Prepitation Rate', 'kg m-2 s-1', 'HAILPR'], '74': ['Total Column Integrate Graupel', 'kg m-2', 'TCOLG'], '75': ['Graupel (Snow Pellets) Prepitation Rate', 'kg m-2 s-1', 'GPRATE'], '76': ['Convective Rain Rate', 'kg m-2 s-1', 'CRRATE'], '77': ['Large Scale Rain Rate', 'kg m-2 s-1', 'LSRRATE'], '78': ['Total Column Integrate Water (All components including precipitation)', 'kg m-2', 'TCOLWA'], '79': ['Evaporation Rate', 'kg m-2 s-1', 'EVARATE'], '80': ['Total Condensate', 'kg kg-1', 'TOTCON'], '81': ['Total Column-Integrate Condensate', 'kg m-2', 'TCICON'], '82': ['Cloud Ice Mixing Ratio', 'kg kg-1', 'CIMIXR'], '83': ['Specific Cloud Liquid Water Content', 'kg kg-1', 'SCLLWC'], '84': ['Specific Cloud Ice Water Content', 'kg kg-1', 'SCLIWC'], '85': ['Specific Rain Water Content', 'kg kg-1', 'SRAINW'], '86': ['Specific Snow Water Content', 'kg kg-1', 'SSNOWW'], '87': ['Stratiform Precipitation Rate', 'kg m-2 s-1', 'STRPRATE'], '88': ['Categorical Convective Precipitation', 'Code table 4.222', 'CATCP'], '89': ['Reserved', 'unknown', 'unknown'], '90': ['Total Kinematic Moisture Flux', 'kg kg-1 m s-1', 'TKMFLX'], '91': ['U-component (zonal) Kinematic Moisture Flux', 'kg kg-1 m s-1', 'UKMFLX'], '92': ['V-component (meridional) Kinematic Moisture Flux', 'kg kg-1 m s-1', 'VKMFLX'], '93': ['Relative Humidity With Respect to Water', '%', 'RHWATER'], '94': ['Relative Humidity With Respect to Ice', '%', 'RHICE'], '95': ['Freezing or Frozen Precipitation Rate', 'kg m-2 s-1', 'FZPRATE'], '96': ['Mass Density of Rain', 'kg m-3', 'MASSDR'], '97': ['Mass Density of Snow', 'kg m-3', 'MASSDS'], '98': ['Mass Density of Graupel', 'kg m-3', 'MASSDG'], '99': ['Mass Density of Hail', 'kg m-3', 'MASSDH'], '100': ['Specific Number Concentration of Rain', 'kg-1', 'SPNCR'], '101': ['Specific Number Concentration of Snow', 'kg-1', 'SPNCS'], '102': ['Specific Number Concentration of Graupel', 'kg-1', 'SPNCG'], '103': ['Specific Number Concentration of Hail', 'kg-1', 'SPNCH'], '104': ['Number Density of Rain', 'm-3', 'NUMDR'], '105': ['Number Density of Snow', 'm-3', 'NUMDS'], '106': ['Number Density of Graupel', 'm-3', 'NUMDG'], '107': ['Number Density of Hail', 'm-3', 'NUMDH'], '108': ['Specific Humidity Tendency due to Parameterizations', 'kg kg-1 s-1', 'SHTPRM'], '109': ['Mass Density of Liquid Water Coating on Hail Expressed as Mass of Liquid Water per Unit Volume of Air', 'kg m-3', 'MDLWHVA'], '110': ['Specific Mass of Liquid Water Coating on Hail Expressed as Mass of Liquid Water per Unit Mass of Moist Air', 'kg kg-1', 'SMLWHMA'], '111': ['Mass Mixing Ratio of Liquid Water Coating on Hail Expressed as Mass of Liquid Water per Unit Mass of Dry Air', 'kg kg-1', 'MMLWHDA'], '112': ['Mass Density of Liquid Water Coating on Graupel Expressed as Mass of Liquid Water per Unit Volume of Air', 'kg m-3', 'MDLWGVA'], '113': ['Specific Mass of Liquid Water Coating on Graupel Expressed as Mass of Liquid Water per Unit Mass of Moist Air', 'kg kg-1', 'SMLWGMA'], '114': ['Mass Mixing Ratio of Liquid Water Coating on Graupel Expressed as Mass of Liquid Water per Unit Mass of Dry Air', 'kg kg-1', 'MMLWGDA'], '115': ['Mass Density of Liquid Water Coating on Snow Expressed as Mass of Liquid Water per Unit Volume of Air', 'kg m-3', 'MDLWSVA'], '116': ['Specific Mass of Liquid Water Coating on Snow Expressed as Mass of Liquid Water per Unit Mass of Moist Air', 'kg kg-1', 'SMLWSMA'], '117': ['Mass Mixing Ratio of Liquid Water Coating on Snow Expressed as Mass of Liquid Water per Unit Mass of Dry Air', 'kg kg-1', 'MMLWSDA'], '118': ['Unbalanced Component of Specific Humidity', 'kg kg-1', 'UNCSH'], '119': ['Unbalanced Component of Specific Cloud Liquid Water content', 'kg kg-1', 'UCSCLW'], '120': ['Unbalanced Component of Specific Cloud Ice Water content', 'kg kg-1', 'UCSCIW'], '121': ['Fraction of Snow Cover', 'Proportion', 'FSNOWC'], '122': ['Precipitation intensity index', 'See Table 4.247', 'PIIDX'], '123': ['Domiunknownt precipitation type', 'See Table 4.201', 'DPTYPE'], '124': ['Presence of showers', 'See Table 4.222', 'PSHOW'], '125': ['Presence of blowing snow', 'See Table 4.222', 'PBSNOW'], '126': ['Presence of blizzard', 'See Table 4.222', 'PBLIZZ'], '127': ['Ice pellets (non-water equivalent) precipitation rate', 'm s-1', 'ICEP'], '128': ['Total solid precipitation rate', 'kg m-2 s-1', 'TSPRATE'], '129': ['Effective Radius of Cloud Water', 'm', 'EFRCWAT'], '130': ['Effective Radius of Rain', 'm', 'EFRRAIN'], '131': ['Effective Radius of Cloud Ice', 'm', 'EFRCICE'], '132': ['Effective Radius of Snow', 'm', 'EFRSNOW'], '133': ['Effective Radius of Graupel', 'm', 'EFRGRL'], '134': ['Effective Radius of Hail', 'm', 'EFRHAIL'], '135': ['Effective Radius of Subgrid Liquid Clouds', 'm', 'EFRSLC'], '136': ['Effective Radius of Subgrid Ice Clouds', 'm', 'EFRSICEC'], '137': ['Effective Aspect Ratio of Rain', 'unknown', 'EFARRAIN'], '138': ['Effective Aspect Ratio of Cloud Ice', 'unknown', 'EFARCICE'], '139': ['Effective Aspect Ratio of Snow', 'unknown', 'EFARSNOW'], '140': ['Effective Aspect Ratio of Graupel', 'unknown', 'EFARGRL'], '141': ['Effective Aspect Ratio of Hail', 'unknown', 'EFARHAIL'], '142': ['Effective Aspect Ratio of Subgrid Ice Clouds', 'unknown', 'EFARSIC'], '143': ['Potential evaporation rate', 'kg m-2 s-1', 'PERATE'], '144': ['Specific rain water content (convective)', 'kg kg-1', 'SRWATERC'], '145': ['Specific snow water content (convective)', 'kg kg-1', 'SSNOWWC'], '146': ['Cloud ice precipitation rate', 'kg m-2 s-1', 'CICEPR'], '147': ['Character of precipitation', 'See Table 4.249', 'CHPRECIP'], '148': ['Snow evaporation rate', 'kg m-2 s-1', 'SNOWERAT'], '149': ['Cloud water mixing ratio', 'kg kg-1', 'CWATERMR'], '150': ['Column integrated eastward water vapour mass flux', 'kg m-1s-1', 'CEWVMF'], '151': ['Column integrated northward water vapour mass flux', 'kg m-1s-1', 'CNWVMF'], '152': ['Column integrated eastward cloud liquid water mass flux', 'kg m-1s-1', 'CECLWMF'], '153': ['Column integrated northward cloud liquid water mass flux', 'kg m-1s-1', 'CNCLWMF'], '154': ['Column integrated eastward cloud ice mass flux', 'kg m-1s-1', 'CECIMF'], '155': ['Column integrated northward cloud ice mass flux', 'kg m-1s-1', 'CNCIMF'], '156': ['Column integrated eastward rain mass flux', 'kg m-1s-1', 'CERMF'], '157': ['Column integrated northward rain mass flux', 'kg m-1s-1', 'CNRMF'], '158': ['Column integrated eastward snow mass flux', 'kg m-1s-1', 'CEFMF'], '159': ['Column integrated northward snow mass flux', 'kg m-1s-1', 'CNSMF'], '160': ['Column integrated divergence of water vapour mass flux', 'kg m-1s-1', 'CDWFMF'], '161': ['Column integrated divergence of cloud liquid water mass flux', 'kg m-1s-1', 'CDCLWMF'], '162': ['Column integrated divergence of cloud ice mass flux', 'kg m-1s-1', 'CDCIMF'], '163': ['Column integrated divergence of rain mass flux', 'kg m-1s-1', 'CDRMF'], '164': ['Column integrated divergence of snow mass flux', 'kg m-1s-1', 'CDSMF'], '165': ['Column integrated divergence of total water mass flux', 'kg m-1s-1', 'CDTWMF'], '166': ['Column integrated water vapour flux', 'kg m-1s-1', 'CWVF'], '167': ['Total column supercooled liquid water', 'kg m-2', 'TCSLW'], '167-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Categorical Rain', 'Code table 4.222', 'CRAIN'], '193': ['Categorical Freezing Rain', 'Code table 4.222', 'CFRZR'], '194': ['Categorical Ice Pellets', 'Code table 4.222', 'CICEP'], '195': ['Categorical Snow', 'Code table 4.222', 'CSNOW'], '196': ['Convective Precipitation Rate', 'kg m-2 s-1', 'CPRAT'], '197': ['Horizontal Moisture Divergence', 'kg kg-1 s-1', 'MDIV'], '198': ['Minimum Relative Humidity', '%', 'MINRH'], '199': ['Potential Evaporation', 'kg m-2', 'PEVAP'], '200': ['Potential Evaporation Rate', 'W m-2', 'PEVPR'], '201': ['Snow Cover', '%', 'SNOWC'], '202': ['Rain Fraction of Total Liquid Water', 'non-dim', 'FRAIN'], '203': ['Rime Factor', 'non-dim', 'RIME'], '204': ['Total Column Integrated Rain', 'kg m-2', 'TCOLR'], '205': ['Total Column Integrated Snow', 'kg m-2', 'TCOLS'], '206': ['Total Icing Potential Diagnostic', 'non-dim', 'TIPD'], '207': ['Number concentration for ice particles', 'non-dim', 'NCIP'], '208': ['Snow temperature', 'K', 'SNOT'], '209': ['Total column-integrated supercooled liquid water', 'kg m-2', 'TCLSW'], '210': ['Total column-integrated melting ice', 'kg m-2', 'TCOLM'], '211': ['Evaporation - Precipitation', 'cm/day', 'EMNP'], '212': ['Sublimation (evaporation from snow)', 'W m-2', 'SBSNO'], '213': ['Deep Convective Moistening Rate', 'kg kg-1 s-1', 'CNVMR'], '214': ['Shallow Convective Moistening Rate', 'kg kg-1 s-1', 'SHAMR'], '215': ['Vertical Diffusion Moistening Rate', 'kg kg-1 s-1', 'VDFMR'], '216': ['Condensation Pressure of Parcali Lifted From Indicate Surface', 'Pa', 'CONDP'], '217': ['Large scale moistening rate', 'kg kg-1 s-1', 'LRGMR'], '218': ['Specific humidity at top of viscous sublayer', 'kg kg-1', 'QZ0'], '219': ['Maximum specific humidity at 2m', 'kg kg-1', 'QMAX'], '220': ['Minimum specific humidity at 2m', 'kg kg-1', 'QMIN'], '221': ['Liquid precipitation (Rainfall)', 'kg m-2', 'ARAIN'], '222': ['Snow temperature, depth-avg', 'K', 'SNOWT'], '223': ['Total precipitation (nearest grid point)', 'kg m-2', 'APCPN'], '224': ['Convective precipitation (nearest grid point)', 'kg m-2', 'ACPCPN'], '225': ['Freezing Rain', 'kg m-2', 'FRZR'], '226': ['Predominant Weather (see Local Use Note A)', 'Numeric', 'PWTHER'], '227': ['Frozen Rain', 'kg m-2', 'FROZR'], '228': ['Flat Ice Accumulation (FRAM)', 'kg m-2', 'FICEAC'], '229': ['Line Ice Accumulation (FRAM)', 'kg m-2', 'LICEAC'], '230': ['Sleet Accumulation', 'kg m-2', 'SLACC'], '231': ['Precipitation Potential Index', '%', 'PPINDX'], '232': ['Probability Cloud Ice Present', '%', 'PROBCIP'], '233': ['Snow Liquid ratio', 'kg kg-1', 'SNOWLR'], '234': ['Precipitation Duration', 'hour', 'PCPDUR'], '235': ['Cloud Liquid Mixing Ratio', 'kg kg-1', 'CLLMR'], '236-240': ['Reserved', 'unknown', 'unknown'], '241': ['Total Snow', 'kg m-2', 'TSNOW'], '242': ['Relative Humidity with Respect to Precipitable Water', '%', 'RHPW'], '245': ['Hourly Maximum of Column Vertical Integrated Graupel on Entire Atmosphere', 'kg m-2', 'MAXVIG'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -1086,7 +1135,7 @@

    table_4_2_0_2 = - {'0': ['Wind Direction (from which blowing)', '°', 'WDIR'], '1': ['Wind Speed', 'm s-1', 'WIND'], '2': ['U-Component of Wind', 'm s-1', 'UGRD'], '3': ['V-Component of Wind', 'm s-1', 'VGRD'], '4': ['Stream Function', 'm2 s-1', 'STRM'], '5': ['Velocity Potential', 'm2 s-1', 'VPOT'], '6': ['Montgomery Stream Function', 'm2 s-2', 'MNTSF'], '7': ['Sigma Coordinate Vertical Velocity', 's-1', 'SGCVV'], '8': ['Vertical Velocity (Pressure)', 'Pa s-1', 'VVEL'], '9': ['Vertical Velocity (Geometric)', 'm s-1', 'DZDT'], '10': ['Absolute Vorticity', 's-1', 'ABSV'], '11': ['Absolute Divergence', 's-1', 'ABSD'], '12': ['Relative Vorticity', 's-1', 'RELV'], '13': ['Relative Divergence', 's-1', 'RELD'], '14': ['Potential Vorticity', 'K m2 kg-1 s-1', 'PVORT'], '15': ['Vertical U-Component Shear', 's-1', 'VUCSH'], '16': ['Vertical V-Component Shear', 's-1', 'VVCSH'], '17': ['Momentum Flux, U-Component', 'N m-2', 'UFLX'], '18': ['Momentum Flux, V-Component', 'N m-2', 'VFLX'], '19': ['Wind Mixing Energy', 'J', 'WMIXE'], '20': ['Boundary Layer Dissipation', 'W m-2', 'BLYDP'], '21': ['Maximum Wind Speed', 'm s-1', 'MAXGUST'], '22': ['Wind Speed (Gust)', 'm s-1', 'GUST'], '23': ['U-Component of Wind (Gust)', 'm s-1', 'UGUST'], '24': ['V-Component of Wind (Gust)', 'm s-1', 'VGUST'], '25': ['Vertical Speed Shear', 's-1', 'VWSH'], '26': ['Horizontal Momentum Flux', 'N m-2', 'MFLX'], '27': ['U-Component Storm Motion', 'm s-1', 'USTM'], '28': ['V-Component Storm Motion', 'm s-1', 'VSTM'], '29': ['Drag Coefficient', 'Numeric', 'CD'], '30': ['Frictional Velocity', 'm s-1', 'FRICV'], '31': ['Turbulent Diffusion Coefficient for Momentum', 'm2 s-1', 'TDCMOM'], '32': ['Eta Coordinate Vertical Velocity', 's-1', 'ETACVV'], '33': ['Wind Fetch', 'm', 'WINDF'], '34': ['Normal Wind Component', 'm s-1', 'NWIND'], '35': ['Tangential Wind Component', 'm s-1', 'TWIND'], '36': ['Amplitude Function for Rossby Wave Envelope for Meridional Wind', 'm s-1', 'AFRWE'], '37': ['Northward Turbulent Surface Stress', 'N m-2 s', 'NTSS'], '38': ['Eastward Turbulent Surface Stress', 'N m-2 s', 'ETSS'], '39': ['Eastward Wind Tendency Due to Parameterizations', 'm s-2', 'EWTPARM'], '40': ['Northward Wind Tendency Due to Parameterizations', 'm s-2', 'NWTPARM'], '41': ['U-Component of Geostrophic Wind', 'm s-1', 'UGWIND'], '42': ['V-Component of Geostrophic Wind', 'm s-1', 'VGWIND'], '43': ['Geostrophic Wind Direction', '°', 'GEOWD'], '44': ['Geostrophic Wind Speed', 'm s-1', 'GEOWS'], '45': ['Unbalanced Component of Divergence', 's-1', 'UNDIV'], '46': ['Vorticity Advection', 's-2', 'VORTADV'], '47': ['Surface roughness for heat,(see Note 5)', 'm', 'SFRHEAT'], '48': ['Surface roughness for moisture,(see Note 6)', 'm', 'SFRMOIST'], '49-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Vertical Speed Shear', 's-1', 'VWSH'], '193': ['Horizontal Momentum Flux', 'N m-2', 'MFLX'], '194': ['U-Component Storm Motion', 'm s-1', 'USTM'], '195': ['V-Component Storm Motion', 'm s-1', 'VSTM'], '196': ['Drag Coefficient', 'non-dim', 'CD'], '197': ['Frictional Velocity', 'm s-1', 'FRICV'], '198': ['Latitude of U Wind Component of Velocity', 'deg', 'LAUV'], '199': ['Longitude of U Wind Component of Velocity', 'deg', 'LOUV'], '200': ['Latitude of V Wind Component of Velocity', 'deg', 'LAVV'], '201': ['Longitude of V Wind Component of Velocity', 'deg', 'LOVV'], '202': ['Latitude of Presure Point', 'deg', 'LAPP'], '203': ['Longitude of Presure Point', 'deg', 'LOPP'], '204': ['Vertical Eddy Diffusivity Heat exchange', 'm2 s-1', 'VEDH'], '205': ['Covariance between Meridional and Zonal Components of the wind.', 'm2 s-2', 'COVMZ'], '206': ['Covariance between Temperature and Zonal Components of the wind.', 'K*m s-1', 'COVTZ'], '207': ['Covariance between Temperature and Meridional Components of the wind.', 'K*m s-1', 'COVTM'], '208': ['Vertical Diffusion Zonal Acceleration', 'm s-2', 'VDFUA'], '209': ['Vertical Diffusion Meridional Acceleration', 'm s-2', 'VDFVA'], '210': ['Gravity wave drag zonal acceleration', 'm s-2', 'GWDU'], '211': ['Gravity wave drag meridional acceleration', 'm s-2', 'GWDV'], '212': ['Convective zonal momentum mixing acceleration', 'm s-2', 'CNVU'], '213': ['Convective meridional momentum mixing acceleration', 'm s-2', 'CNVV'], '214': ['Tendency of vertical velocity', 'm s-2', 'WTEND'], '215': ['Omega (Dp/Dt) divide by density', 'K', 'OMGALF'], '216': ['Convective Gravity wave drag zonal acceleration', 'm s-2', 'CNGWDU'], '217': ['Convective Gravity wave drag meridional acceleration', 'm s-2', 'CNGWDV'], '218': ['Velocity Point Model Surface', 'unknown', 'LMV'], '219': ['Potential Vorticity (Mass-Weighted)', '1/s/m', 'PVMWW'], '220': ['Hourly Maximum of Upward Vertical Velocity', 'm s-1', 'MAXUVV'], '221': ['Hourly Maximum of Downward Vertical Velocity', 'm s-1', 'MAXDVV'], '222': ['U Component of Hourly Maximum 10m Wind Speed', 'm s-1', 'MAXUW'], '223': ['V Component of Hourly Maximum 10m Wind Speed', 'm s-1', 'MAXVW'], '224': ['Ventilation Rate', 'm2 s-1', 'VRATE'], '225': ['Transport Wind Speed', 'm s-1', 'TRWSPD'], '226': ['Transport Wind Direction', 'Deg', 'TRWDIR'], '227': ['Earliest Reasonable Arrival Time (10% exceedance)', 's', 'TOA10'], '228': ['Most Likely Arrival Time (50% exceedance)', 's', 'TOA50'], '229': ['Most Likely Departure Time (50% exceedance)', 's', 'TOD50'], '230': ['Latest Reasonable Departure Time (90% exceedance)', 's', 'TOD90'], '231': ['Tropical Wind Direction', '°', 'TPWDIR'], '232': ['Tropical Wind Speed', 'm s-1', 'TPWSPD'], '233': ['Inflow Based (ESFC) to 50% EL Shear Magnitude', 'kt', 'ESHR'], '234': ['U Component Inflow Based to 50% EL Shear Vector', 'kt', 'UESH'], '235': ['V Component Inflow Based to 50% EL Shear Vector', 'kt', 'VESH'], '236': ['U Component Bunkers Effective Right Motion', 'kt', 'UEID'], '237': ['V Component Bunkers Effective Right Motion', 'kt', 'VEID'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Wind Direction (from which blowing)', '°', 'WDIR'], '1': ['Wind Speed', 'm s-1', 'WIND'], '2': ['U-Component of Wind', 'm s-1', 'UGRD'], '3': ['V-Component of Wind', 'm s-1', 'VGRD'], '4': ['Stream Function', 'm2 s-1', 'STRM'], '5': ['Velocity Potential', 'm2 s-1', 'VPOT'], '6': ['Montgomery Stream Function', 'm2 s-2', 'MNTSF'], '7': ['Sigma Coordinate Vertical Velocity', 's-1', 'SGCVV'], '8': ['Vertical Velocity (Pressure)', 'Pa s-1', 'VVEL'], '9': ['Vertical Velocity (Geometric)', 'm s-1', 'DZDT'], '10': ['Absolute Vorticity', 's-1', 'ABSV'], '11': ['Absolute Divergence', 's-1', 'ABSD'], '12': ['Relative Vorticity', 's-1', 'RELV'], '13': ['Relative Divergence', 's-1', 'RELD'], '14': ['Potential Vorticity', 'K m2 kg-1 s-1', 'PVORT'], '15': ['Vertical U-Component Shear', 's-1', 'VUCSH'], '16': ['Vertical V-Component Shear', 's-1', 'VVCSH'], '17': ['Momentum Flux, U-Component', 'N m-2', 'UFLX'], '18': ['Momentum Flux, V-Component', 'N m-2', 'VFLX'], '19': ['Wind Mixing Energy', 'J', 'WMIXE'], '20': ['Boundary Layer Dissipation', 'W m-2', 'BLYDP'], '21': ['Maximum Wind Speed', 'm s-1', 'MAXGUST'], '22': ['Wind Speed (Gust)', 'm s-1', 'GUST'], '23': ['U-Component of Wind (Gust)', 'm s-1', 'UGUST'], '24': ['V-Component of Wind (Gust)', 'm s-1', 'VGUST'], '25': ['Vertical Speed Shear', 's-1', 'VWSH'], '26': ['Horizontal Momentum Flux', 'N m-2', 'MFLX'], '27': ['U-Component Storm Motion', 'm s-1', 'USTM'], '28': ['V-Component Storm Motion', 'm s-1', 'VSTM'], '29': ['Drag Coefficient', 'Numeric', 'CD'], '30': ['Frictional Velocity', 'm s-1', 'FRICV'], '31': ['Turbulent Diffusion Coefficient for Momentum', 'm2 s-1', 'TDCMOM'], '32': ['Eta Coordinate Vertical Velocity', 's-1', 'ETACVV'], '33': ['Wind Fetch', 'm', 'WINDF'], '34': ['Normal Wind Component', 'm s-1', 'NWIND'], '35': ['Tangential Wind Component', 'm s-1', 'TWIND'], '36': ['Amplitude Function for Rossby Wave Envelope for Meridional Wind', 'm s-1', 'AFRWE'], '37': ['Northward Turbulent Surface Stress', 'N m-2 s', 'NTSS'], '38': ['Eastward Turbulent Surface Stress', 'N m-2 s', 'ETSS'], '39': ['Eastward Wind Tendency Due to Parameterizations', 'm s-2', 'EWTPARM'], '40': ['Northward Wind Tendency Due to Parameterizations', 'm s-2', 'NWTPARM'], '41': ['U-Component of Geostrophic Wind', 'm s-1', 'UGWIND'], '42': ['V-Component of Geostrophic Wind', 'm s-1', 'VGWIND'], '43': ['Geostrophic Wind Direction', '°', 'GEOWD'], '44': ['Geostrophic Wind Speed', 'm s-1', 'GEOWS'], '45': ['Unbalanced Component of Divergence', 's-1', 'UNDIV'], '46': ['Vorticity Advection', 's-2', 'VORTADV'], '47': ['Surface roughness for heat,(see Note 5)', 'm', 'SFRHEAT'], '48': ['Surface roughness for moisture,(see Note 6)', 'm', 'SFRMOIST'], '49': ['Wind stress', 'N m-2', 'WINDSTR'], '50': ['Eastward wind stress', 'N m-2', 'EWINDSTR'], '51': ['Northward wind stress', 'N m-2', 'NWINDSTR'], '52': ['u-component of wind stress', 'N m-2', 'UWINDSTR'], '53': ['v-component of wind stress', 'N m-2', 'VWINDSTR'], '54': ['Natural logarithm of surface roughness length for heat', 'm', 'NLSRLH'], '55': ['Natural logarithm of surface roughness length for moisture', 'm', 'NLSRLM'], '56': ['u-component of neutral wind', 'm s-1', 'UNWIND'], '57': ['v-component of neutral wind', 'm s-1', 'VNWIND'], '58': ['Magnitude of turbulent surface stress', 'N m-2', 'TSFCSTR'], '58-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Vertical Speed Shear', 's-1', 'VWSH'], '193': ['Horizontal Momentum Flux', 'N m-2', 'MFLX'], '194': ['U-Component Storm Motion', 'm s-1', 'USTM'], '195': ['V-Component Storm Motion', 'm s-1', 'VSTM'], '196': ['Drag Coefficient', 'non-dim', 'CD'], '197': ['Frictional Velocity', 'm s-1', 'FRICV'], '198': ['Latitude of U Wind Component of Velocity', 'deg', 'LAUV'], '199': ['Longitude of U Wind Component of Velocity', 'deg', 'LOUV'], '200': ['Latitude of V Wind Component of Velocity', 'deg', 'LAVV'], '201': ['Longitude of V Wind Component of Velocity', 'deg', 'LOVV'], '202': ['Latitude of Presure Point', 'deg', 'LAPP'], '203': ['Longitude of Presure Point', 'deg', 'LOPP'], '204': ['Vertical Eddy Diffusivity Heat exchange', 'm2 s-1', 'VEDH'], '205': ['Covariance between Meridional and Zonal Components of the wind.', 'm2 s-2', 'COVMZ'], '206': ['Covariance between Temperature and Zonal Components of the wind.', 'K*m s-1', 'COVTZ'], '207': ['Covariance between Temperature and Meridional Components of the wind.', 'K*m s-1', 'COVTM'], '208': ['Vertical Diffusion Zonal Acceleration', 'm s-2', 'VDFUA'], '209': ['Vertical Diffusion Meridional Acceleration', 'm s-2', 'VDFVA'], '210': ['Gravity wave drag zonal acceleration', 'm s-2', 'GWDU'], '211': ['Gravity wave drag meridional acceleration', 'm s-2', 'GWDV'], '212': ['Convective zonal momentum mixing acceleration', 'm s-2', 'CNVU'], '213': ['Convective meridional momentum mixing acceleration', 'm s-2', 'CNVV'], '214': ['Tendency of vertical velocity', 'm s-2', 'WTEND'], '215': ['Omega (Dp/Dt) divide by density', 'K', 'OMGALF'], '216': ['Convective Gravity wave drag zonal acceleration', 'm s-2', 'CNGWDU'], '217': ['Convective Gravity wave drag meridional acceleration', 'm s-2', 'CNGWDV'], '218': ['Velocity Point Model Surface', 'unknown', 'LMV'], '219': ['Potential Vorticity (Mass-Weighted)', '1/s/m', 'PVMWW'], '220': ['Hourly Maximum of Upward Vertical Velocity', 'm s-1', 'MAXUVV'], '221': ['Hourly Maximum of Downward Vertical Velocity', 'm s-1', 'MAXDVV'], '222': ['U Component of Hourly Maximum 10m Wind Speed', 'm s-1', 'MAXUW'], '223': ['V Component of Hourly Maximum 10m Wind Speed', 'm s-1', 'MAXVW'], '224': ['Ventilation Rate', 'm2 s-1', 'VRATE'], '225': ['Transport Wind Speed', 'm s-1', 'TRWSPD'], '226': ['Transport Wind Direction', 'Deg', 'TRWDIR'], '227': ['Earliest Reasonable Arrival Time (10% exceedance)', 's', 'TOA10'], '228': ['Most Likely Arrival Time (50% exceedance)', 's', 'TOA50'], '229': ['Most Likely Departure Time (50% exceedance)', 's', 'TOD50'], '230': ['Latest Reasonable Departure Time (90% exceedance)', 's', 'TOD90'], '231': ['Tropical Wind Direction', '°', 'TPWDIR'], '232': ['Tropical Wind Speed', 'm s-1', 'TPWSPD'], '233': ['Inflow Based (ESFC) to 50% EL Shear Magnitude', 'kt', 'ESHR'], '234': ['U Component Inflow Based to 50% EL Shear Vector', 'kt', 'UESH'], '235': ['V Component Inflow Based to 50% EL Shear Vector', 'kt', 'VESH'], '236': ['U Component Bunkers Effective Right Motion', 'kt', 'UEID'], '237': ['V Component Bunkers Effective Right Motion', 'kt', 'VEID'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -1099,7 +1148,7 @@

    table_4_2_0_3 = - {'0': ['Pressure', 'Pa', 'PRES'], '1': ['Pressure Reduced to MSL', 'Pa', 'PRMSL'], '2': ['Pressure Tendency', 'Pa s-1', 'PTEND'], '3': ['ICAO Standard Atmosphere Reference Height', 'm', 'ICAHT'], '4': ['Geopotential', 'm2 s-2', 'GP'], '5': ['Geopotential Height', 'gpm', 'HGT'], '6': ['Geometric Height', 'm', 'DIST'], '7': ['Standard Deviation of Height', 'm', 'HSTDV'], '8': ['Pressure Anomaly', 'Pa', 'PRESA'], '9': ['Geopotential Height Anomaly', 'gpm', 'GPA'], '10': ['Density', 'kg m-3', 'DEN'], '11': ['Altimeter Setting', 'Pa', 'ALTS'], '12': ['Thickness', 'm', 'THICK'], '13': ['Pressure Altitude', 'm', 'PRESALT'], '14': ['Density Altitude', 'm', 'DENALT'], '15': ['5-Wave Geopotential Height', 'gpm', '5WAVH'], '16': ['Zonal Flux of Gravity Wave Stress', 'N m-2', 'U-GWD'], '17': ['Meridional Flux of Gravity Wave Stress', 'N m-2', 'V-GWD'], '18': ['Planetary Boundary Layer Height', 'm', 'HPBL'], '19': ['5-Wave Geopotential Height Anomaly', 'gpm', '5WAVA'], '20': ['Standard Deviation of Sub-Grid Scale Orography', 'm', 'SDSGSO'], '21': ['Angle of Sub-Grid Scale Orography', 'rad', 'AOSGSO'], '22': ['Slope of Sub-Grid Scale Orography', 'Numeric', 'SSGSO'], '23': ['Gravity Wave Dissipation', 'W m-2', 'GWD'], '24': ['Anisotropy of Sub-Grid Scale Orography', 'Numeric', 'ASGSO'], '25': ['Natural Logarithm of Pressure in Pa', 'Numeric', 'NLPRES'], '26': ['Exner Pressure', 'Numeric', 'EXPRES'], '27': ['Updraught Mass Flux', 'kg m-2 s-1', 'UMFLX'], '28': ['Downdraught Mass Flux', 'kg m-2 s-1', 'DMFLX'], '29': ['Updraught Detrainment Rate', 'kg m-3 s-1', 'UDRATE'], '30': ['Downdraught Detrainment Rate', 'kg m-3 s-1', 'DDRATE'], '31': ['Unbalanced Component of Logarithm of Surface Pressure', 'unknown', 'UCLSPRS'], '32': ['Saturation water vapour pressure', 'Pa', 'SWATERVP'], '33': ['Geometric altitude above mean sea level', 'm', 'GAMSL'], '34': ['Geometric height above ground level', 'm', 'GHAGRD'], '35-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['MSLP (Eta model reduction)', 'Pa', 'MSLET'], '193': ['5-Wave Geopotential Height', 'gpm', '5WAVH'], '194': ['Zonal Flux of Gravity Wave Stress', 'N m-2', 'U-GWD'], '195': ['Meridional Flux of Gravity Wave Stress', 'N m-2', 'V-GWD'], '196': ['Planetary Boundary Layer Height', 'm', 'HPBL'], '197': ['5-Wave Geopotential Height Anomaly', 'gpm', '5WAVA'], '198': ['MSLP (MAPS System Reduction)', 'Pa', 'MSLMA'], '199': ['3-hr pressure tendency (Std. Atmos. Reduction)', 'Pa s-1', 'TSLSA'], '200': ['Pressure of level from which parcel was lifted', 'Pa', 'PLPL'], '201': ['X-gradient of Log Pressure', 'm-1', 'LPSX'], '202': ['Y-gradient of Log Pressure', 'm-1', 'LPSY'], '203': ['X-gradient of Height', 'm-1', 'HGTX'], '204': ['Y-gradient of Height', 'm-1', 'HGTY'], '205': ['Layer Thickness', 'm', 'LAYTH'], '206': ['Natural Log of Surface Pressure', 'ln (kPa)', 'NLGSP'], '207': ['Convective updraft mass flux', 'kg m-2 s-1', 'CNVUMF'], '208': ['Convective downdraft mass flux', 'kg m-2 s-1', 'CNVDMF'], '209': ['Convective detrainment mass flux', 'kg m-2 s-1', 'CNVDEMF'], '210': ['Mass Point Model Surface', 'unknown', 'LMH'], '211': ['Geopotential Height (nearest grid point)', 'gpm', 'HGTN'], '212': ['Pressure (nearest grid point)', 'Pa', 'PRESN'], '213': ['Orographic Convexity', 'unknown', 'ORCONV'], '214': ['Orographic Asymmetry, W Component', 'unknown', 'ORASW'], '215': ['Orographic Asymmetry, S Component', 'unknown', 'ORASS'], '216': ['Orographic Asymmetry, SW Component', 'unknown', 'ORASSW'], '217': ['Orographic Asymmetry, NW Component', 'unknown', 'ORASNW'], '218': ['Orographic Length Scale, W Component', 'unknown', 'ORLSW'], '219': ['Orographic Length Scale, S Component', 'unknown', 'ORLSS'], '220': ['Orographic Length Scale, SW Component', 'unknown', 'ORLSSW'], '221': ['Orographic Length Scale, NW Component', 'unknown', 'ORLSNW'], '222': ['Effective Surface Height', 'm', 'EFSH'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Pressure', 'Pa', 'PRES'], '1': ['Pressure Reduced to MSL', 'Pa', 'PRMSL'], '2': ['Pressure Tendency', 'Pa s-1', 'PTEND'], '3': ['ICAO Standard Atmosphere Reference Height', 'm', 'ICAHT'], '4': ['Geopotential', 'm2 s-2', 'GP'], '5': ['Geopotential Height', 'gpm', 'HGT'], '6': ['Geometric Height', 'm', 'DIST'], '7': ['Standard Deviation of Height', 'm', 'HSTDV'], '8': ['Pressure Anomaly', 'Pa', 'PRESA'], '9': ['Geopotential Height Anomaly', 'gpm', 'GPA'], '10': ['Density', 'kg m-3', 'DEN'], '11': ['Altimeter Setting', 'Pa', 'ALTS'], '12': ['Thickness', 'm', 'THICK'], '13': ['Pressure Altitude', 'm', 'PRESALT'], '14': ['Density Altitude', 'm', 'DENALT'], '15': ['5-Wave Geopotential Height', 'gpm', '5WAVH'], '16': ['Zonal Flux of Gravity Wave Stress', 'N m-2', 'U-GWD'], '17': ['Meridional Flux of Gravity Wave Stress', 'N m-2', 'V-GWD'], '18': ['Planetary Boundary Layer Height', 'm', 'HPBL'], '19': ['5-Wave Geopotential Height Anomaly', 'gpm', '5WAVA'], '20': ['Standard Deviation of Sub-Grid Scale Orography', 'm', 'SDSGSO'], '21': ['Angle of Sub-Grid Scale Orography', 'rad', 'AOSGSO'], '22': ['Slope of Sub-Grid Scale Orography', 'Numeric', 'SSGSO'], '23': ['Gravity Wave Dissipation', 'W m-2', 'GWD'], '24': ['Anisotropy of Sub-Grid Scale Orography', 'Numeric', 'ASGSO'], '25': ['Natural Logarithm of Pressure in Pa', 'Numeric', 'NLPRES'], '26': ['Exner Pressure', 'Numeric', 'EXPRES'], '27': ['Updraught Mass Flux', 'kg m-2 s-1', 'UMFLX'], '28': ['Downdraught Mass Flux', 'kg m-2 s-1', 'DMFLX'], '29': ['Updraught Detrainment Rate', 'kg m-3 s-1', 'UDRATE'], '30': ['Downdraught Detrainment Rate', 'kg m-3 s-1', 'DDRATE'], '31': ['Unbalanced Component of Logarithm of Surface Pressure', '-', 'UCLSPRS'], '32': ['Saturation water vapour pressure', 'Pa', 'SWATERVP'], '33': ['Geometric altitude above mean sea level', 'm', 'GAMSL'], '34': ['Geometric height above ground level', 'm', 'GHAGRD'], '35': ['Column integrated divergence of total mass flux', 'kg m-2 s-1', 'CDTMF'], '36': ['Column integrated eastward total mass flux', 'kg m-2 s-1', 'CETMF'], '37': ['Column integrated northward total mass flux', 'kg m-2 s-1', 'CNTMF'], '38': ['Standard deviation of filtered subgrid orography', 'm', 'SDFSO'], '39': ['Column integrated mass of atmosphere', 'kg m-2 s-1', 'CMATMOS'], '40': ['Column integrated eastward geopotential flux', 'W m-1', 'CEGFLUX'], '41': ['Column integrated northward geopotential flux', 'W m-1', 'CNGFLUX'], '42': ['Column integrated divergence of water geopotential flux', 'W m-2', 'CDWGFLUX'], '43': ['Column integrated divergence of geopotential flux', 'W m-2', 'CDGFLUX'], '44': ['Height of zero-degree wet-bulb temperature', 'm', 'HWBT'], '45': ['Height of one-degree wet-bulb temperature', 'm', 'WOBT'], '46-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['MSLP (Eta model reduction)', 'Pa', 'MSLET'], '193': ['5-Wave Geopotential Height', 'gpm', '5WAVH'], '194': ['Zonal Flux of Gravity Wave Stress', 'N m-2', 'U-GWD'], '195': ['Meridional Flux of Gravity Wave Stress', 'N m-2', 'V-GWD'], '196': ['Planetary Boundary Layer Height', 'm', 'HPBL'], '197': ['5-Wave Geopotential Height Anomaly', 'gpm', '5WAVA'], '198': ['MSLP (MAPS System Reduction)', 'Pa', 'MSLMA'], '199': ['3-hr pressure tendency (Std. Atmos. Reduction)', 'Pa s-1', 'TSLSA'], '200': ['Pressure of level from which parcel was lifted', 'Pa', 'PLPL'], '201': ['X-gradient of Log Pressure', 'm-1', 'LPSX'], '202': ['Y-gradient of Log Pressure', 'm-1', 'LPSY'], '203': ['X-gradient of Height', 'm-1', 'HGTX'], '204': ['Y-gradient of Height', 'm-1', 'HGTY'], '205': ['Layer Thickness', 'm', 'LAYTH'], '206': ['Natural Log of Surface Pressure', 'ln (kPa)', 'NLGSP'], '207': ['Convective updraft mass flux', 'kg m-2 s-1', 'CNVUMF'], '208': ['Convective downdraft mass flux', 'kg m-2 s-1', 'CNVDMF'], '209': ['Convective detrainment mass flux', 'kg m-2 s-1', 'CNVDEMF'], '210': ['Mass Point Model Surface', 'unknown', 'LMH'], '211': ['Geopotential Height (nearest grid point)', 'gpm', 'HGTN'], '212': ['Pressure (nearest grid point)', 'Pa', 'PRESN'], '213': ['Orographic Convexity', 'unknown', 'ORCONV'], '214': ['Orographic Asymmetry, W Component', 'unknown', 'ORASW'], '215': ['Orographic Asymmetry, S Component', 'unknown', 'ORASS'], '216': ['Orographic Asymmetry, SW Component', 'unknown', 'ORASSW'], '217': ['Orographic Asymmetry, NW Component', 'unknown', 'ORASNW'], '218': ['Orographic Length Scale, W Component', 'unknown', 'ORLSW'], '219': ['Orographic Length Scale, S Component', 'unknown', 'ORLSS'], '220': ['Orographic Length Scale, SW Component', 'unknown', 'ORLSSW'], '221': ['Orographic Length Scale, NW Component', 'unknown', 'ORLSNW'], '222': ['Effective Surface Height', 'm', 'EFSH'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -1112,7 +1161,7 @@

    table_4_2_0_4 = - {'0': ['Net Short-Wave Radiation Flux (Surface)', 'W m-2', 'NSWRS'], '1': ['Net Short-Wave Radiation Flux (Top of Atmosphere)', 'W m-2', 'NSWRT'], '2': ['Short-Wave Radiation Flux', 'W m-2', 'SWAVR'], '3': ['Global Radiation Flux', 'W m-2', 'GRAD'], '4': ['Brightness Temperature', 'K', 'BRTMP'], '5': ['Radiance (with respect to wave number)', 'W m-1 sr-1', 'LWRAD'], '6': ['Radiance (with respect to wavelength)', 'W m-3 sr-1', 'SWRAD'], '7': ['Downward Short-Wave Radiation Flux', 'W m-2', 'DSWRF'], '8': ['Upward Short-Wave Radiation Flux', 'W m-2', 'USWRF'], '9': ['Net Short Wave Radiation Flux', 'W m-2', 'NSWRF'], '10': ['Photosynthetically Active Radiation', 'W m-2', 'PHOTAR'], '11': ['Net Short-Wave Radiation Flux, Clear Sky', 'W m-2', 'NSWRFCS'], '12': ['Downward UV Radiation', 'W m-2', 'DWUVR'], '13': ['Direct Short Wave Radiation Flux', 'W m-2', 'DSWRFLX'], '14': ['Diffuse Short Wave Radiation Flux', 'W m-2', 'DIFSWRF'], '15-49': ['Reserved', 'unknown', 'unknown'], '50': ['UV Index (Under Clear Sky)', 'Numeric', 'UVIUCS'], '51': ['UV Index', 'Numeric', 'UVI'], '52': ['Downward Short-Wave Radiation Flux, Clear Sky', 'W m-2', 'DSWRFCS'], '53': ['Upward Short-Wave Radiation Flux, Clear Sky', 'W m-2', 'USWRFCS'], '54': ['Direct normal short-wave radiation flux,(see Note 3)', 'W m-2', 'DSWRFLX'], '55-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Downward Short-Wave Radiation Flux', 'W m-2', 'DSWRF'], '193': ['Upward Short-Wave Radiation Flux', 'W m-2', 'USWRF'], '194': ['UV-B Downward Solar Flux', 'W m-2', 'DUVB'], '195': ['Clear sky UV-B Downward Solar Flux', 'W m-2', 'CDUVB'], '196': ['Clear Sky Downward Solar Flux', 'W m-2', 'CSDSF'], '197': ['Solar Radiative Heating Rate', 'K s-1', 'SWHR'], '198': ['Clear Sky Upward Solar Flux', 'W m-2', 'CSUSF'], '199': ['Cloud Forcing Net Solar Flux', 'W m-2', 'CFNSF'], '200': ['Visible Beam Downward Solar Flux', 'W m-2', 'VBDSF'], '201': ['Visible Diffuse Downward Solar Flux', 'W m-2', 'VDDSF'], '202': ['Near IR Beam Downward Solar Flux', 'W m-2', 'NBDSF'], '203': ['Near IR Diffuse Downward Solar Flux', 'W m-2', 'NDDSF'], '204': ['Downward Total Radiation Flux', 'W m-2', 'DTRF'], '205': ['Upward Total Radiation Flux', 'W m-2', 'UTRF'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Net Short-Wave Radiation Flux (Surface)', 'W m-2', 'NSWRS'], '1': ['Net Short-Wave Radiation Flux (Top of Atmosphere)', 'W m-2', 'NSWRT'], '2': ['Short-Wave Radiation Flux', 'W m-2', 'SWAVR'], '3': ['Global Radiation Flux', 'W m-2', 'GRAD'], '4': ['Brightness Temperature', 'K', 'BRTMP'], '5': ['Radiance (with respect to wave number)', 'W m-1 sr-1', 'LWRAD'], '6': ['Radiance (with respect to wavelength)', 'W m-3 sr-1', 'SWRAD'], '7': ['Downward Short-Wave Radiation Flux', 'W m-2', 'DSWRF'], '8': ['Upward Short-Wave Radiation Flux', 'W m-2', 'USWRF'], '9': ['Net Short Wave Radiation Flux', 'W m-2', 'NSWRF'], '10': ['Photosynthetically Active Radiation', 'W m-2', 'PHOTAR'], '11': ['Net Short-Wave Radiation Flux, Clear Sky', 'W m-2', 'NSWRFCS'], '12': ['Downward UV Radiation', 'W m-2', 'DWUVR'], '13': ['Direct Short Wave Radiation Flux', 'W m-2', 'DSWRFLX'], '14': ['Diffuse Short Wave Radiation Flux', 'W m-2', 'DIFSWRF'], '15': ['Upward UV radiation emitted/reflected from the Earths surface', 'W m-2', 'UVVEARTH'], '16-49': ['Reserved', 'unknown', 'unknown'], '50': ['UV Index (Under Clear Sky)', 'Numeric', 'UVIUCS'], '51': ['UV Index', 'Numeric', 'UVI'], '52': ['Downward Short-Wave Radiation Flux, Clear Sky', 'W m-2', 'DSWRFCS'], '53': ['Upward Short-Wave Radiation Flux, Clear Sky', 'W m-2', 'USWRFCS'], '54': ['Direct normal short-wave radiation flux,(see Note 3)', 'W m-2', 'DSWRFLX'], '55': ['UV visible albedo for diffuse radiation', '%', 'UVALBDIF'], '56': ['UV visible albedo for direct radiation', '%', 'UVALBDIR'], '57': ['UV visible albedo for direct radiation, geometric component', '%', 'UBALBDIRG'], '58': ['UV visible albedo for direct radiation, isotropic component', '%', 'UVALBDIRI'], '59': ['UV visible albedo for direct radiation, volumetric component', '%', 'UVBDIRV'], '60': ['Photosynthetically active radiation flux, clear sky', 'W m-2', 'PHOARFCS'], '61': ['Direct short-wave radiation flux, clear sky', 'W m-2', 'DSWRFLXCS'], '62-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Downward Short-Wave Radiation Flux', 'W m-2', 'DSWRF'], '193': ['Upward Short-Wave Radiation Flux', 'W m-2', 'USWRF'], '194': ['UV-B Downward Solar Flux', 'W m-2', 'DUVB'], '195': ['Clear sky UV-B Downward Solar Flux', 'W m-2', 'CDUVB'], '196': ['Clear Sky Downward Solar Flux', 'W m-2', 'CSDSF'], '197': ['Solar Radiative Heating Rate', 'K s-1', 'SWHR'], '198': ['Clear Sky Upward Solar Flux', 'W m-2', 'CSUSF'], '199': ['Cloud Forcing Net Solar Flux', 'W m-2', 'CFNSF'], '200': ['Visible Beam Downward Solar Flux', 'W m-2', 'VBDSF'], '201': ['Visible Diffuse Downward Solar Flux', 'W m-2', 'VDDSF'], '202': ['Near IR Beam Downward Solar Flux', 'W m-2', 'NBDSF'], '203': ['Near IR Diffuse Downward Solar Flux', 'W m-2', 'NDDSF'], '204': ['Downward Total Radiation Flux', 'W m-2', 'DTRF'], '205': ['Upward Total Radiation Flux', 'W m-2', 'UTRF'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -1125,7 +1174,7 @@

    table_4_2_0_5 = - {'0': ['Net Long-Wave Radiation Flux (Surface)', 'W m-2', 'NLWRS'], '1': ['Net Long-Wave Radiation Flux (Top of Atmosphere)', 'W m-2', 'NLWRT'], '2': ['Long-Wave Radiation Flux', 'W m-2', 'LWAVR'], '3': ['Downward Long-Wave Rad. Flux', 'W m-2', 'DLWRF'], '4': ['Upward Long-Wave Rad. Flux', 'W m-2', 'ULWRF'], '5': ['Net Long-Wave Radiation Flux', 'W m-2', 'NLWRF'], '6': ['Net Long-Wave Radiation Flux, Clear Sky', 'W m-2', 'NLWRCS'], '7': ['Brightness Temperature', 'K', 'BRTEMP'], '8': ['Downward Long-Wave Radiation Flux, Clear Sky', 'W m-2', 'DLWRFCS'], '9-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Downward Long-Wave Rad. Flux', 'W m-2', 'DLWRF'], '193': ['Upward Long-Wave Rad. Flux', 'W m-2', 'ULWRF'], '194': ['Long-Wave Radiative Heating Rate', 'K s-1', 'LWHR'], '195': ['Clear Sky Upward Long Wave Flux', 'W m-2', 'CSULF'], '196': ['Clear Sky Downward Long Wave Flux', 'W m-2', 'CSDLF'], '197': ['Cloud Forcing Net Long Wave Flux', 'W m-2', 'CFNLF'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Net Long-Wave Radiation Flux (Surface)', 'W m-2', 'NLWRS'], '1': ['Net Long-Wave Radiation Flux (Top of Atmosphere)', 'W m-2', 'NLWRT'], '2': ['Long-Wave Radiation Flux', 'W m-2', 'LWAVR'], '3': ['Downward Long-Wave Rad. Flux', 'W m-2', 'DLWRF'], '4': ['Upward Long-Wave Rad. Flux', 'W m-2', 'ULWRF'], '5': ['Net Long-Wave Radiation Flux', 'W m-2', 'NLWRF'], '6': ['Net Long-Wave Radiation Flux, Clear Sky', 'W m-2', 'NLWRCS'], '7': ['Brightness Temperature', 'K', 'BRTEMP'], '8': ['Downward Long-Wave Radiation Flux, Clear Sky', 'W m-2', 'DLWRFCS'], '9': ['Near IR albedo for diffuse radiation', '%', 'NIRALBDIF'], '10': ['Near IR albedo for direct radiation', '%', 'NIRALBDIR'], '11': ['Near IR albedo for direct radiation, geometric component', '%', 'NIRALBDIRG'], '12': ['Near IR albedo for direct radiation, isotropic component', '%', 'NIRALBDIRI'], '13': ['Near IR albedo for direct radiation, volumetric component', '%', 'NIRALBDIRV'], '14-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Downward Long-Wave Rad. Flux', 'W m-2', 'DLWRF'], '193': ['Upward Long-Wave Rad. Flux', 'W m-2', 'ULWRF'], '194': ['Long-Wave Radiative Heating Rate', 'K s-1', 'LWHR'], '195': ['Clear Sky Upward Long Wave Flux', 'W m-2', 'CSULF'], '196': ['Clear Sky Downward Long Wave Flux', 'W m-2', 'CSDLF'], '197': ['Cloud Forcing Net Long Wave Flux', 'W m-2', 'CFNLF'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -1138,7 +1187,7 @@

    table_4_2_0_6 = - {'0': ['Cloud Ice', 'kg m-2', 'CICE'], '1': ['Total Cloud Cover', '%', 'TCDC'], '2': ['Convective Cloud Cover', '%', 'CDCON'], '3': ['Low Cloud Cover', '%', 'LCDC'], '4': ['Medium Cloud Cover', '%', 'MCDC'], '5': ['High Cloud Cover', '%', 'HCDC'], '6': ['Cloud Water', 'kg m-2', 'CWAT'], '7': ['Cloud Amount', '%', 'CDCA'], '8': ['Cloud Type', 'See Table 4.203', 'CDCT'], '9': ['Thunderstorm Maximum Tops', 'm', 'TMAXT'], '10': ['Thunderstorm Coverage', 'See Table 4.204', 'THUNC'], '11': ['Cloud Base', 'm', 'CDCB'], '12': ['Cloud Top', 'm', 'CDCTOP'], '13': ['Ceiling', 'm', 'CEIL'], '14': ['Non-Convective Cloud Cover', '%', 'CDLYR'], '15': ['Cloud Work Function', 'J kg-1', 'CWORK'], '16': ['Convective Cloud Efficiency', 'Proportion', 'CUEFI'], '17': ['Total Condensate', 'kg kg-1', 'TCONDO'], '18': ['Total Column-Integrated Cloud Water', 'kg m-2', 'TCOLWO'], '19': ['Total Column-Integrated Cloud Ice', 'kg m-2', 'TCOLIO'], '20': ['Total Column-Integrated Condensate', 'kg m-2', 'TCOLC'], '21': ['Ice fraction of total condensate', 'Proportion', 'FICE'], '22': ['Cloud Cover', '%', 'CDCC'], '23': ['Cloud Ice Mixing Ratio', 'kg kg-1', 'CDCIMR'], '24': ['Sunshine', 'Numeric', 'SUNS'], '25': ['Horizontal Extent of Cumulonimbus (CB)', '%', 'CBHE'], '26': ['Height of Convective Cloud Base', 'm', 'HCONCB'], '27': ['Height of Convective Cloud Top', 'm', 'HCONCT'], '28': ['Number Concentration of Cloud Droplets', 'kg-1', 'NCONCD'], '29': ['Number Concentration of Cloud Ice', 'kg-1', 'NCCICE'], '30': ['Number Density of Cloud Droplets', 'm-3', 'NDENCD'], '31': ['Number Density of Cloud Ice', 'm-3', 'NDCICE'], '32': ['Fraction of Cloud Cover', 'Numeric', 'FRACCC'], '33': ['Sunshine Duration', 's', 'SUNSD'], '34': ['Surface Long Wave Effective Total Cloudiness', 'Numeric', 'SLWTC'], '35': ['Surface Short Wave Effective Total Cloudiness', 'Numeric', 'SSWTC'], '36': ['Fraction of Stratiform Precipitation Cover', 'Proportion', 'FSTRPC'], '37': ['Fraction of Convective Precipitation Cover', 'Proportion', 'FCONPC'], '38': ['Mass Density of Cloud Droplets', 'kg m-3', 'MASSDCD'], '39': ['Mass Density of Cloud Ice', 'kg m-3', 'MASSDCI'], '40': ['Mass Density of Convective Cloud Water Droplets', 'kg m-3', 'MDCCWD'], '41-46': ['Reserved', 'unknown', 'unknown'], '47': ['Volume Fraction of Cloud Water Droplets', 'Numeric', 'VFRCWD'], '48': ['Volume Fraction of Cloud Ice Particles', 'Numeric', 'VFRCICE'], '49': ['Volume Fraction of Cloud (Ice and/or Water)', 'Numeric', 'VFRCIW'], '50-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Non-Convective Cloud Cover', '%', 'CDLYR'], '193': ['Cloud Work Function', 'J kg-1', 'CWORK'], '194': ['Convective Cloud Efficiency', 'non-dim', 'CUEFI'], '195': ['Total Condensate', 'kg kg-1', 'TCOND'], '196': ['Total Column-Integrated Cloud Water', 'kg m-2', 'TCOLW'], '197': ['Total Column-Integrated Cloud Ice', 'kg m-2', 'TCOLI'], '198': ['Total Column-Integrated Condensate', 'kg m-2', 'TCOLC'], '199': ['Ice fraction of total condensate', 'non-dim', 'FICE'], '200': ['Convective Cloud Mass Flux', 'Pa s-1', 'MFLUX'], '201': ['Sunshine Duration', 's', 'SUNSD'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Cloud Ice', 'kg m-2', 'CICE'], '1': ['Total Cloud Cover', '%', 'TCDC'], '2': ['Convective Cloud Cover', '%', 'CDCON'], '3': ['Low Cloud Cover', '%', 'LCDC'], '4': ['Medium Cloud Cover', '%', 'MCDC'], '5': ['High Cloud Cover', '%', 'HCDC'], '6': ['Cloud Water', 'kg m-2', 'CWAT'], '7': ['Cloud Amount', '%', 'CDCA'], '8': ['Cloud Type', 'See Table 4.203', 'CDCT'], '9': ['Thunderstorm Maximum Tops', 'm', 'TMAXT'], '10': ['Thunderstorm Coverage', 'See Table 4.204', 'THUNC'], '11': ['Cloud Base', 'm', 'CDCB'], '12': ['Cloud Top', 'm', 'CDCTOP'], '13': ['Ceiling', 'm', 'CEIL'], '14': ['Non-Convective Cloud Cover', '%', 'CDLYR'], '15': ['Cloud Work Function', 'J kg-1', 'CWORK'], '16': ['Convective Cloud Efficiency', 'Proportion', 'CUEFI'], '17': ['Total Condensate', 'kg kg-1', 'TCONDO'], '18': ['Total Column-Integrated Cloud Water', 'kg m-2', 'TCOLWO'], '19': ['Total Column-Integrated Cloud Ice', 'kg m-2', 'TCOLIO'], '20': ['Total Column-Integrated Condensate', 'kg m-2', 'TCOLC'], '21': ['Ice fraction of total condensate', 'Proportion', 'FICE'], '22': ['Cloud Cover', '%', 'CDCC'], '23': ['Cloud Ice Mixing Ratio', 'kg kg-1', 'CDCIMR'], '24': ['Sunshine', 'Numeric', 'SUNS'], '25': ['Horizontal Extent of Cumulonimbus (CB)', '%', 'CBHE'], '26': ['Height of Convective Cloud Base', 'm', 'HCONCB'], '27': ['Height of Convective Cloud Top', 'm', 'HCONCT'], '28': ['Number Concentration of Cloud Droplets', 'kg-1', 'NCONCD'], '29': ['Number Concentration of Cloud Ice', 'kg-1', 'NCCICE'], '30': ['Number Density of Cloud Droplets', 'm-3', 'NDENCD'], '31': ['Number Density of Cloud Ice', 'm-3', 'NDCICE'], '32': ['Fraction of Cloud Cover', 'Numeric', 'FRACCC'], '33': ['Sunshine Duration', 's', 'SUNSD'], '34': ['Surface Long Wave Effective Total Cloudiness', 'Numeric', 'SLWTC'], '35': ['Surface Short Wave Effective Total Cloudiness', 'Numeric', 'SSWTC'], '36': ['Fraction of Stratiform Precipitation Cover', 'Proportion', 'FSTRPC'], '37': ['Fraction of Convective Precipitation Cover', 'Proportion', 'FCONPC'], '38': ['Mass Density of Cloud Droplets', 'kg m-3', 'MASSDCD'], '39': ['Mass Density of Cloud Ice', 'kg m-3', 'MASSDCI'], '40': ['Mass Density of Convective Cloud Water Droplets', 'kg m-3', 'MDCCWD'], '41-46': ['Reserved', 'unknown', 'unknown'], '47': ['Volume Fraction of Cloud Water Droplets', 'Numeric', 'VFRCWD'], '48': ['Volume Fraction of Cloud Ice Particles', 'Numeric', 'VFRCICE'], '49': ['Volume Fraction of Cloud (Ice and/or Water)', 'Numeric', 'VFRCIW'], '50': ['Fog', '%', 'FOG'], '51': ['Sunshine Duration Fraction', 'Proportion', 'SUNFRAC'], '52-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Non-Convective Cloud Cover', '%', 'CDLYR'], '193': ['Cloud Work Function', 'J kg-1', 'CWORK'], '194': ['Convective Cloud Efficiency', 'non-dim', 'CUEFI'], '195': ['Total Condensate', 'kg kg-1', 'TCOND'], '196': ['Total Column-Integrated Cloud Water', 'kg m-2', 'TCOLW'], '197': ['Total Column-Integrated Cloud Ice', 'kg m-2', 'TCOLI'], '198': ['Total Column-Integrated Condensate', 'kg m-2', 'TCOLC'], '199': ['Ice fraction of total condensate', 'non-dim', 'FICE'], '200': ['Convective Cloud Mass Flux', 'Pa s-1', 'MFLUX'], '201': ['Sunshine Duration', 's', 'SUNSD'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -1242,7 +1291,7 @@

    table_4_2_0_19 = - {'0': ['Visibility', 'm', 'VIS'], '1': ['Albedo', '%', 'ALBDO'], '2': ['Thunderstorm Probability', '%', 'TSTM'], '3': ['Mixed Layer Depth', 'm', 'MIXHT'], '4': ['Volcanic Ash', 'See Table 4.206', 'VOLASH'], '5': ['Icing Top', 'm', 'ICIT'], '6': ['Icing Base', 'm', 'ICIB'], '7': ['Icing', 'See Table 4.207', 'ICI'], '8': ['Turbulence Top', 'm', 'TURBT'], '9': ['Turbulence Base', 'm', 'TURBB'], '10': ['Turbulence', 'See Table 4.208', 'TURB'], '11': ['Turbulent Kinetic Energy', 'J kg-1', 'TKE'], '12': ['Planetary Boundary Layer Regime', 'See Table 4.209', 'PBLREG'], '13': ['Contrail Intensity', 'See Table 4.210', 'CONTI'], '14': ['Contrail Engine Type', 'See Table 4.211', 'CONTET'], '15': ['Contrail Top', 'm', 'CONTT'], '16': ['Contrail Base', 'm', 'CONTB'], '17': ['Maximum Snow Albedosee Note 1', '%', 'MXSALB'], '18': ['Snow-Free Albedo', '%', 'SNFALB'], '19': ['Snow Albedo', '%', 'SALBD'], '20': ['Icing', '%', 'ICIP'], '21': ['In-Cloud Turbulence', '%', 'CTP'], '22': ['Clear Air Turbulence (CAT)', '%', 'CAT'], '23': ['Supercooled Large Droplet Probabilitysee Note 2', '%', 'SLDP'], '24': ['Convective Turbulent Kinetic Energy', 'J kg-1', 'CONTKE'], '25': ['Weather', 'See Table 4.225', 'WIWW'], '26': ['Convective Outlook', 'See Table 4.224', 'CONVO'], '27': ['Icing Scenario', 'See Table 4.227', 'ICESC'], '28': ['Mountain Wave Turbulence (Eddy Dissipation Rate)', 'm2/3 s-1', 'MWTURB'], '29': ['Clear Air Turbulence (CAT) (Eddy Dissipation Rate)', 'm2/3 s-1', 'CATEDR'], '30': ['Eddy Dissipation Parameter', 'm2/3 s-1', 'EDPARM'], '31': ['Maximum of Eddy Dissipation Parameter in Layer', 'm2/3 s-1', 'MXEDPRM'], '32': ['Highest Freezing Level', 'm', 'HIFREL'], '33': ['Visibility Through Liquid Fog', 'm', 'VISLFOG'], '34': ['Visibility Through Ice Fog', 'm', 'VISIFOG'], '35': ['Visibility Through Blowing Snow', 'm', 'VISBSN'], '36': ['Presence of Snow Squalls', 'See Table 4.222', 'PSNOWS'], '37': ['Icing Severity', 'See Table 4.228', 'ICESEV'], '38': ['Sky transparency index', 'See Table 4.214', 'SKYIDX'], '39': ['Seeing index', 'See Table 4.214', 'SEEINDEX'], '40': ['Snow level', 'm', 'SNOWLVL'], '41-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Maximum Snow Albedo', '%', 'MXSALB'], '193': ['Snow-Free Albedo', '%', 'SNFALB'], '194': ['Slight risk convective outlook', 'categorical', 'SRCONO'], '195': ['Moderate risk convective outlook', 'categorical', 'MRCONO'], '196': ['High risk convective outlook', 'categorical', 'HRCONO'], '197': ['Tornado probability', '%', 'TORPROB'], '198': ['Hail probability', '%', 'HAILPROB'], '199': ['Wind probability', '%', 'WINDPROB'], '200': ['Significant Tornado probability', '%', 'STORPROB'], '201': ['Significant Hail probability', '%', 'SHAILPRO'], '202': ['Significant Wind probability', '%', 'SWINDPRO'], '203': ['Categorical Thunderstorm', 'Code table 4.222', 'TSTMC'], '204': ['Number of mixed layers next to surface', 'integer', 'MIXLY'], '205': ['Flight Category', 'unknown', 'FLGHT'], '206': ['Confidence - Ceiling', 'unknown', 'CICEL'], '207': ['Confidence - Visibility', 'unknown', 'CIVIS'], '208': ['Confidence - Flight Category', 'unknown', 'CIFLT'], '209': ['Low-Level aviation interest', 'unknown', 'LAVNI'], '210': ['High-Level aviation interest', 'unknown', 'HAVNI'], '211': ['Visible, Black Sky Albedo', '%', 'SBSALB'], '212': ['Visible, White Sky Albedo', '%', 'SWSALB'], '213': ['Near IR, Black Sky Albedo', '%', 'NBSALB'], '214': ['Near IR, White Sky Albedo', '%', 'NWSALB'], '215': ['Total Probability of Severe Thunderstorms (Days 2,3)', '%', 'PRSVR'], '216': ['Total Probability of Extreme Severe Thunderstorms (Days 2,3)', '%', 'PRSIGSVR'], '217': ['Supercooled Large Droplet (SLD) Icingsee Note 2', 'See Table 4.207', 'SIPD'], '218': ['Radiative emissivity', 'unknown', 'EPSR'], '219': ['Turbulence Potential Forecast Index', 'unknown', 'TPFI'], '220': ['Categorical Severe Thunderstorm', 'Code table 4.222', 'SVRTS'], '221': ['Probability of Convection', '%', 'PROCON'], '222': ['Convection Potential', 'Code table 4.222', 'CONVP'], '223-231': ['Reserved', 'unknown', 'unknown'], '232': ['Volcanic Ash Forecast Transport and Dispersion', 'log10 (kg m-3)', 'VAFTD'], '233': ['Icing probability', 'non-dim', 'ICPRB'], '234': ['Icing Severity', 'non-dim', 'ICSEV'], '235': ['Joint Fire Weather Probability', '%', 'JFWPRB'], '236': ['Snow Level', 'm', 'SNOWLVL'], '237': ['Dry Thunderstorm Probability', '%', 'DRYTPROB'], '238': ['Ellrod Index', 'unknown', 'ELLINX'], '239': ['Craven-Wiedenfeld Aggregate Severe Parameter', 'Numeric', 'CWASP'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Visibility', 'm', 'VIS'], '1': ['Albedo', '%', 'ALBDO'], '2': ['Thunderstorm Probability', '%', 'TSTM'], '3': ['Mixed Layer Depth', 'm', 'MIXHT'], '4': ['Volcanic Ash', 'See Table 4.206', 'VOLASH'], '5': ['Icing Top', 'm', 'ICIT'], '6': ['Icing Base', 'm', 'ICIB'], '7': ['Icing', 'See Table 4.207', 'ICI'], '8': ['Turbulence Top', 'm', 'TURBT'], '9': ['Turbulence Base', 'm', 'TURBB'], '10': ['Turbulence', 'See Table 4.208', 'TURB'], '11': ['Turbulent Kinetic Energy', 'J kg-1', 'TKE'], '12': ['Planetary Boundary Layer Regime', 'See Table 4.209', 'PBLREG'], '13': ['Contrail Intensity', 'See Table 4.210', 'CONTI'], '14': ['Contrail Engine Type', 'See Table 4.211', 'CONTET'], '15': ['Contrail Top', 'm', 'CONTT'], '16': ['Contrail Base', 'm', 'CONTB'], '17': ['Maximum Snow Albedo', '%', 'MXSALB'], '18': ['Snow-Free Albedo', '%', 'SNFALB'], '19': ['Snow Albedo', '%', 'SALBD'], '20': ['Icing', '%', 'ICIP'], '21': ['In-Cloud Turbulence', '%', 'CTP'], '22': ['Clear Air Turbulence (CAT)', '%', 'CAT'], '23': ['Supercooled Large Droplet Probability', '%', 'SLDP'], '24': ['Convective Turbulent Kinetic Energy', 'J kg-1', 'CONTKE'], '25': ['Weather', 'See Table 4.225', 'WIWW'], '26': ['Convective Outlook', 'See Table 4.224', 'CONVO'], '27': ['Icing Scenario', 'See Table 4.227', 'ICESC'], '28': ['Mountain Wave Turbulence (Eddy Dissipation Rate)', 'm2/3 s-1', 'MWTURB'], '29': ['Clear Air Turbulence (CAT) (Eddy Dissipation Rate)', 'm2/3 s-1', 'CATEDR'], '30': ['Eddy Dissipation Parameter', 'm2/3 s-1', 'EDPARM'], '31': ['Maximum of Eddy Dissipation Parameter in Layer', 'm2/3 s-1', 'MXEDPRM'], '32': ['Highest Freezing Level', 'm', 'HIFREL'], '33': ['Visibility Through Liquid Fog', 'm', 'VISLFOG'], '34': ['Visibility Through Ice Fog', 'm', 'VISIFOG'], '35': ['Visibility Through Blowing Snow', 'm', 'VISBSN'], '36': ['Presence of Snow Squalls', 'See Table 4.222', 'PSNOWS'], '37': ['Icing Severity', 'See Table 4.228', 'ICESEV'], '38': ['Sky transparency index', 'See Table 4.214', 'SKYIDX'], '39': ['Seeing index', 'See Table 4.214', 'SEEINDEX'], '40': ['Snow level', 'm', 'SNOWLVL'], '41': ['Duct base height', 'm', 'DBHEIGHT'], '42': ['Trapping layer base height', 'm', 'TLBHEIGHT'], '43': ['Trapping layer top height', 'm', 'TLTHEIGHT'], '44': ['Mean vertical gradient of refractivity inside trapping layer', 'm-1', 'MEANVGRTL'], '45': ['Minimum vertical gradient of refractivity inside trapping layer', 'm-1', 'MINVGRTL'], '46-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Maximum Snow Albedo', '%', 'MXSALB'], '193': ['Snow-Free Albedo', '%', 'SNFALB'], '194': ['Slight risk convective outlook', 'categorical', 'SRCONO'], '195': ['Moderate risk convective outlook', 'categorical', 'MRCONO'], '196': ['High risk convective outlook', 'categorical', 'HRCONO'], '197': ['Tornado probability', '%', 'TORPROB'], '198': ['Hail probability', '%', 'HAILPROB'], '199': ['Wind probability', '%', 'WINDPROB'], '200': ['Significant Tornado probability', '%', 'STORPROB'], '201': ['Significant Hail probability', '%', 'SHAILPRO'], '202': ['Significant Wind probability', '%', 'SWINDPRO'], '203': ['Categorical Thunderstorm', 'Code table 4.222', 'TSTMC'], '204': ['Number of mixed layers next to surface', 'integer', 'MIXLY'], '205': ['Flight Category', 'unknown', 'FLGHT'], '206': ['Confidence - Ceiling', 'unknown', 'CICEL'], '207': ['Confidence - Visibility', 'unknown', 'CIVIS'], '208': ['Confidence - Flight Category', 'unknown', 'CIFLT'], '209': ['Low-Level aviation interest', 'unknown', 'LAVNI'], '210': ['High-Level aviation interest', 'unknown', 'HAVNI'], '211': ['Visible, Black Sky Albedo', '%', 'SBSALB'], '212': ['Visible, White Sky Albedo', '%', 'SWSALB'], '213': ['Near IR, Black Sky Albedo', '%', 'NBSALB'], '214': ['Near IR, White Sky Albedo', '%', 'NWSALB'], '215': ['Total Probability of Severe Thunderstorms (Days 2,3)', '%', 'PRSVR'], '216': ['Total Probability of Extreme Severe Thunderstorms (Days 2,3)', '%', 'PRSIGSVR'], '217': ['Supercooled Large Droplet (SLD) Icing', 'See Table 4.207', 'SIPD'], '218': ['Radiative emissivity', 'unknown', 'EPSR'], '219': ['Turbulence Potential Forecast Index', 'unknown', 'TPFI'], '220': ['Categorical Severe Thunderstorm', 'Code table 4.222', 'SVRTS'], '221': ['Probability of Convection', '%', 'PROCON'], '222': ['Convection Potential', 'Code table 4.222', 'CONVP'], '223-231': ['Reserved', 'unknown', 'unknown'], '232': ['Volcanic Ash Forecast Transport and Dispersion', 'log10 (kg m-3)', 'VAFTD'], '233': ['Icing probability', 'non-dim', 'ICPRB'], '234': ['Icing Severity', 'non-dim', 'ICSEV'], '235': ['Joint Fire Weather Probability', '%', 'JFWPRB'], '236': ['Snow Level', 'm', 'SNOWLVL'], '237': ['Dry Thunderstorm Probability', '%', 'DRYTPROB'], '238': ['Ellrod Index', 'unknown', 'ELLINX'], '239': ['Craven-Wiedenfeld Aggregate Severe Parameter', 'Numeric', 'CWASP'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -1255,7 +1304,7 @@

    table_4_2_0_20 = - {'0': ['Mass Density (Concentration)', 'kg m-3', 'MASSDEN'], '1': ['Column-Integrated Mass Density', 'kg m-2', 'COLMD'], '2': ['Mass Mixing Ratio (Mass Fraction in Air)', 'kg kg-1', 'MASSMR'], '3': ['Atmosphere Emission Mass Flux', 'kg m-2s-1', 'AEMFLX'], '4': ['Atmosphere Net Production Mass Flux', 'kg m-2s-1', 'ANPMFLX'], '5': ['Atmosphere Net Production And Emision Mass Flux', 'kg m-2s-1', 'ANPEMFLX'], '6': ['Surface Dry Deposition Mass Flux', 'kg m-2s-1', 'SDDMFLX'], '7': ['Surface Wet Deposition Mass Flux', 'kg m-2s-1', 'SWDMFLX'], '8': ['Atmosphere Re-Emission Mass Flux', 'kg m-2s-1', 'AREMFLX'], '9': ['Wet Deposition by Large-Scale Precipitation Mass Flux', 'kg m-2s-1', 'WLSMFLX'], '10': ['Wet Deposition by Convective Precipitation Mass Flux', 'kg m-2s-1', 'WDCPMFLX'], '11': ['Sedimentation Mass Flux', 'kg m-2s-1', 'SEDMFLX'], '12': ['Dry Deposition Mass Flux', 'kg m-2s-1', 'DDMFLX'], '13': ['Transfer From Hydrophobic to Hydrophilic', 'kg kg-1s-1', 'TRANHH'], '14': ['Transfer From SO2 (Sulphur Dioxide) to SO4 (Sulphate)', 'kg kg-1s-1', 'TRSDS'], '15': ['Dry deposition velocity', 'm s-1', 'DDVEL'], '16': ['Mass mixing ratio with respect to dry air', 'kg kg-1', 'MSSRDRYA'], '17': ['Mass mixing ratio with respect to wet air', 'kg kg-1', 'MSSRWETA'], '18-49': ['Reserved', 'unknown', 'unknown'], '50': ['Amount in Atmosphere', 'mol', 'AIA'], '51': ['Concentration In Air', 'mol m-3', 'CONAIR'], '52': ['Volume Mixing Ratio (Fraction in Air)', 'mol mol-1', 'VMXR'], '53': ['Chemical Gross Production Rate of Concentration', 'mol m-3s-1', 'CGPRC'], '54': ['Chemical Gross Destruction Rate of Concentration', 'mol m-3s-1', 'CGDRC'], '55': ['Surface Flux', 'mol m-2s-1', 'SFLUX'], '56': ['Changes Of Amount in Atmosphere', 'mol s-1', 'COAIA'], '57': ['Total Yearly Average Burden of The Atmosphere>', 'mol', 'TYABA'], '58': ['Total Yearly Average Atmospheric Loss', 'mol s-1', 'TYAAL'], '59': ['Aerosol Number Concentration', 'm-3', 'ANCON'], '60': ['Aerosol Specific Number Concentration', 'kg-1', 'ASNCON'], '61': ['Maximum of Mass Density', 'kg m-3', 'MXMASSD'], '62': ['Height of Mass Density', 'm', 'HGTMD'], '63': ['Column-Averaged Mass Density in Layer', 'kg m-3', 'CAVEMDL'], '64': ['Mole fraction with respect to dry air', 'mol mol-1', 'MOLRDRYA'], '65': ['Mole fraction with respect to wet air', 'mol mol-1', 'MOLRWETA'], '66': ['Column-integrated in-cloud scavenging rate by precipitation', 'kg m-2 s-1', 'CINCLDSP'], '67': ['Column-integrated below-cloud scavenging rate by precipitation', 'kg m-2 s-1', 'CBLCLDSP'], '68': ['Column-integrated release rate from evaporating precipitation', 'kg m-2 s-1', 'CIRELREP'], '69': ['Column-integrated in-cloud scavenging rate by large-scale precipitation', 'kg m-2 s-1', 'CINCSLSP'], '70': ['Column-integrated below-cloud scavenging rate by large-scale precipitation', 'kg m-2 s-1', 'CBECSLSP'], '71': ['Column-integrated release rate from evaporating large-scale precipitation', 'kg m-2 s-1', 'CRERELSP'], '72': ['Column-integrated in-cloud scavenging rate by convective precipitation', 'kg m-2 s-1', 'CINCSRCP'], '73': ['Column-integrated below-cloud scavenging rate by convective precipitation', 'kg m-2 s-1', 'CBLCSRCP'], '74': ['Column-integrated release rate from evaporating convective precipitation', 'kg m-2 s-1', 'CIRERECP'], '75': ['Wildfire flux', 'kg m-2 s-1', 'WFIREFLX'], '76': ['Emission Rate', 'kg kg-1 s-1', 'EMISFLX'], '77': ['Surface Emission flux', 'kg m-2 s-1', 'SFCEFLX'], '78-99': ['Reserved', 'unknown', 'unknown'], '100': ['Surface Area Density (Aerosol)', 'm-1', 'SADEN'], '101': ['Vertical Visual Range', 'm', 'ATMTK'], '102': ['Aerosol Optical Thickness', 'Numeric', 'AOTK'], '103': ['Single Scattering Albedo', 'Numeric', 'SSALBK'], '104': ['Asymmetry Factor', 'Numeric', 'ASYSFK'], '105': ['Aerosol Extinction Coefficient', 'm-1', 'AECOEF'], '106': ['Aerosol Absorption Coefficient', 'm-1', 'AACOEF'], '107': ['Aerosol Lidar Backscatter from Satellite', 'm-1sr-1', 'ALBSAT'], '108': ['Aerosol Lidar Backscatter from the Ground', 'm-1sr-1', 'ALBGRD'], '109': ['Aerosol Lidar Extinction from Satellite', 'm-1', 'ALESAT'], '110': ['Aerosol Lidar Extinction from the Ground', 'm-1', 'ALEGRD'], '111': ['Angstrom Exponent', 'Numeric', 'ANGSTEXP'], '112': ['Scattering Aerosol Optical Thickness', 'Numeric', 'SCTAOTK'], '113-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Mass Density (Concentration)', 'kg m-3', 'MASSDEN'], '1': ['Column-Integrated Mass Density', 'kg m-2', 'COLMD'], '2': ['Mass Mixing Ratio (Mass Fraction in Air)', 'kg kg-1', 'MASSMR'], '3': ['Atmosphere Emission Mass Flux', 'kg m-2s-1', 'AEMFLX'], '4': ['Atmosphere Net Production Mass Flux', 'kg m-2s-1', 'ANPMFLX'], '5': ['Atmosphere Net Production And Emision Mass Flux', 'kg m-2s-1', 'ANPEMFLX'], '6': ['Surface Dry Deposition Mass Flux', 'kg m-2s-1', 'SDDMFLX'], '7': ['Surface Wet Deposition Mass Flux', 'kg m-2s-1', 'SWDMFLX'], '8': ['Atmosphere Re-Emission Mass Flux', 'kg m-2s-1', 'AREMFLX'], '9': ['Wet Deposition by Large-Scale Precipitation Mass Flux', 'kg m-2s-1', 'WLSMFLX'], '10': ['Wet Deposition by Convective Precipitation Mass Flux', 'kg m-2s-1', 'WDCPMFLX'], '11': ['Sedimentation Mass Flux', 'kg m-2s-1', 'SEDMFLX'], '12': ['Dry Deposition Mass Flux', 'kg m-2s-1', 'DDMFLX'], '13': ['Transfer From Hydrophobic to Hydrophilic', 'kg kg-1s-1', 'TRANHH'], '14': ['Transfer From SO2 (Sulphur Dioxide) to SO4 (Sulphate)', 'kg kg-1s-1', 'TRSDS'], '15': ['Dry deposition velocity', 'm s-1', 'DDVEL'], '16': ['Mass mixing ratio with respect to dry air', 'kg kg-1', 'MSSRDRYA'], '17': ['Mass mixing ratio with respect to wet air', 'kg kg-1', 'MSSRWETA'], '18': ['Potential of hydrogen (pH)', 'pH', 'POTHPH'], '19-49': ['Reserved', 'unknown', 'unknown'], '50': ['Amount in Atmosphere', 'mol', 'AIA'], '51': ['Concentration In Air', 'mol m-3', 'CONAIR'], '52': ['Volume Mixing Ratio (Fraction in Air)', 'mol mol-1', 'VMXR'], '53': ['Chemical Gross Production Rate of Concentration', 'mol m-3s-1', 'CGPRC'], '54': ['Chemical Gross Destruction Rate of Concentration', 'mol m-3s-1', 'CGDRC'], '55': ['Surface Flux', 'mol m-2s-1', 'SFLUX'], '56': ['Changes Of Amount in Atmosphere', 'mol s-1', 'COAIA'], '57': ['Total Yearly Average Burden of The Atmosphere>', 'mol', 'TYABA'], '58': ['Total Yearly Average Atmospheric Loss', 'mol s-1', 'TYAAL'], '59': ['Aerosol Number Concentration', 'm-3', 'ANCON'], '60': ['Aerosol Specific Number Concentration', 'kg-1', 'ASNCON'], '61': ['Maximum of Mass Density', 'kg m-3', 'MXMASSD'], '62': ['Height of Mass Density', 'm', 'HGTMD'], '63': ['Column-Averaged Mass Density in Layer', 'kg m-3', 'CAVEMDL'], '64': ['Mole fraction with respect to dry air', 'mol mol-1', 'MOLRDRYA'], '65': ['Mole fraction with respect to wet air', 'mol mol-1', 'MOLRWETA'], '66': ['Column-integrated in-cloud scavenging rate by precipitation', 'kg m-2 s-1', 'CINCLDSP'], '67': ['Column-integrated below-cloud scavenging rate by precipitation', 'kg m-2 s-1', 'CBLCLDSP'], '68': ['Column-integrated release rate from evaporating precipitation', 'kg m-2 s-1', 'CIRELREP'], '69': ['Column-integrated in-cloud scavenging rate by large-scale precipitation', 'kg m-2 s-1', 'CINCSLSP'], '70': ['Column-integrated below-cloud scavenging rate by large-scale precipitation', 'kg m-2 s-1', 'CBECSLSP'], '71': ['Column-integrated release rate from evaporating large-scale precipitation', 'kg m-2 s-1', 'CRERELSP'], '72': ['Column-integrated in-cloud scavenging rate by convective precipitation', 'kg m-2 s-1', 'CINCSRCP'], '73': ['Column-integrated below-cloud scavenging rate by convective precipitation', 'kg m-2 s-1', 'CBLCSRCP'], '74': ['Column-integrated release rate from evaporating convective precipitation', 'kg m-2 s-1', 'CIRERECP'], '75': ['Wildfire flux', 'kg m-2 s-1', 'WFIREFLX'], '76': ['Emission Rate', 'kg kg-1 s-1', 'EMISFLX'], '77': ['Surface Emission flux', 'kg m-2 s-1', 'SFCEFLX'], '78': ['Column integrated eastward mass flux', 'kg m-2 s-1', 'CEMF'], '79': ['Column integrated northward mass flux', 'kg m-2 s-1', 'CNMF'], '80': ['Column integrated divergence of mass flux', 'kg m-2 s-1', 'CDIVMF'], '81': ['Column integrated net source', 'kg m-2 s-1', 'CDNETS'], '82-99': ['Reserved', 'unknown', 'unknown'], '100': ['Surface Area Density (Aerosol)', 'm-1', 'SADEN'], '101': ['Vertical Visual Range', 'm', 'ATMTK'], '102': ['Aerosol Optical Thickness', 'Numeric', 'AOTK'], '103': ['Single Scattering Albedo', 'Numeric', 'SSALBK'], '104': ['Asymmetry Factor', 'Numeric', 'ASYSFK'], '105': ['Aerosol Extinction Coefficient', 'm-1', 'AECOEF'], '106': ['Aerosol Absorption Coefficient', 'm-1', 'AACOEF'], '107': ['Aerosol Lidar Backscatter from Satellite', 'm-1sr-1', 'ALBSAT'], '108': ['Aerosol Lidar Backscatter from the Ground', 'm-1sr-1', 'ALBGRD'], '109': ['Aerosol Lidar Extinction from Satellite', 'm-1', 'ALESAT'], '110': ['Aerosol Lidar Extinction from the Ground', 'm-1', 'ALEGRD'], '111': ['Angstrom Exponent', 'Numeric', 'ANGSTEXP'], '112': ['Scattering Aerosol Optical Thickness', 'Numeric', 'SCTAOTK'], '113-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}
    diff --git a/docs/grib2io/tables/section4_discipline1.html b/docs/grib2io/tables/section4_discipline1.html index c6151b7..14c633d 100644 --- a/docs/grib2io/tables/section4_discipline1.html +++ b/docs/grib2io/tables/section4_discipline1.html @@ -94,28 +94,30 @@

    32'193':['Percent of Frozen Precipitation','%','CPOFP'], 33'194':['Probability of precipitation exceeding flash flood guidance values','%','PPFFG'], 34'195':['Probability of Wetting Rain, exceeding in 0.10" in a given time period','%','CWR'], -35'255':['Missing','unknown','unknown'], -36} -37table_4_2_1_2 = { -38'0':['Water Depth','m','WDPTHIL'], -39'1':['Water Temperature','K','WTMPIL'], -40'2':['Water Fraction','Proportion','WFRACT'], -41'3':['Sediment Thickness','m','SEDTK'], -42'4':['Sediment Temperature','K','SEDTMP'], -43'5':['Ice Thickness','m','ICTKIL'], -44'6':['Ice Temperature','K','ICETIL'], -45'7':['Ice Cover','Proportion','ICECIL'], -46'8':['Land Cover (0=water, 1=land)','Proportion','LANDIL'], -47'9':['Shape Factor with Respect to Salinity Profile','unknown','SFSAL'], -48'10':['Shape Factor with Respect to Temperature Profile in Thermocline','unknown','SFTMP'], -49'11':['Attenuation Coefficient of Water with Respect to Solar Radiation','m-1','ACWSR'], -50'12':['Salinity','kg kg-1','SALTIL'], -51'13':['Cross Sectional Area of Flow in Channel','m2','CSAFC'], -52'14':['Snow temperature','K','LNDSNOWT'], -53'15-191':['Reserved','unknown','unknown'], -54'192-254':['Reserved for Local Use','unknown','unknown'], -55'255':['Missing','unknown','unknown'], -56} +35'196':['Binary Probability of precipitation exceeding average recurrence intervals (ARI)','see Code table 4.222','QPFARI'], +36'197':['Binary Probability of precipitation exceeding flash flood guidance values','see Code table 4.222','QPFFFG'], +37'255':['Missing','unknown','unknown'], +38} +39table_4_2_1_2 = { +40'0':['Water Depth','m','WDPTHIL'], +41'1':['Water Temperature','K','WTMPIL'], +42'2':['Water Fraction','Proportion','WFRACT'], +43'3':['Sediment Thickness','m','SEDTK'], +44'4':['Sediment Temperature','K','SEDTMP'], +45'5':['Ice Thickness','m','ICTKIL'], +46'6':['Ice Temperature','K','ICETIL'], +47'7':['Ice Cover','Proportion','ICECIL'], +48'8':['Land Cover (0=water, 1=land)','Proportion','LANDIL'], +49'9':['Shape Factor with Respect to Salinity Profile','unknown','SFSAL'], +50'10':['Shape Factor with Respect to Temperature Profile in Thermocline','unknown','SFTMP'], +51'11':['Attenuation Coefficient of Water with Respect to Solar Radiation','m-1','ACWSR'], +52'12':['Salinity','kg kg-1','SALTIL'], +53'13':['Cross Sectional Area of Flow in Channel','m2','CSAFC'], +54'14':['Snow temperature','K','LNDSNOWT'], +55'15-191':['Reserved','unknown','unknown'], +56'192-254':['Reserved for Local Use','unknown','unknown'], +57'255':['Missing','unknown','unknown'], +58} @@ -137,7 +139,7 @@

    table_4_2_1_1 = - {'0': ['Conditional percent precipitation amount fractile for an overall period (encoded as an accumulation)', 'kg m-2', 'CPPOP'], '1': ['Percent Precipitation in a sub-period of an overall period (encoded as a percent accumulation over the sub-period)', '%', 'PPOSP'], '2': ['Probability of 0.01 inch of precipitation (POP)', '%', 'POP'], '3-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Probability of Freezing Precipitation', '%', 'CPOZP'], '193': ['Percent of Frozen Precipitation', '%', 'CPOFP'], '194': ['Probability of precipitation exceeding flash flood guidance values', '%', 'PPFFG'], '195': ['Probability of Wetting Rain, exceeding in 0.10" in a given time period', '%', 'CWR'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Conditional percent precipitation amount fractile for an overall period (encoded as an accumulation)', 'kg m-2', 'CPPOP'], '1': ['Percent Precipitation in a sub-period of an overall period (encoded as a percent accumulation over the sub-period)', '%', 'PPOSP'], '2': ['Probability of 0.01 inch of precipitation (POP)', '%', 'POP'], '3-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Probability of Freezing Precipitation', '%', 'CPOZP'], '193': ['Percent of Frozen Precipitation', '%', 'CPOFP'], '194': ['Probability of precipitation exceeding flash flood guidance values', '%', 'PPFFG'], '195': ['Probability of Wetting Rain, exceeding in 0.10" in a given time period', '%', 'CWR'], '196': ['Binary Probability of precipitation exceeding average recurrence intervals (ARI)', 'see Code table 4.222', 'QPFARI'], '197': ['Binary Probability of precipitation exceeding flash flood guidance values', 'see Code table 4.222', 'QPFFFG'], '255': ['Missing', 'unknown', 'unknown']}
    diff --git a/docs/grib2io/tables/section4_discipline10.html b/docs/grib2io/tables/section4_discipline10.html index 2e00826..44bee47 100644 --- a/docs/grib2io/tables/section4_discipline10.html +++ b/docs/grib2io/tables/section4_discipline10.html @@ -139,158 +139,201 @@

    68'66':['Peak Wave Period of Second Swell Partition','s','PWPSSPAR'], 69'67':['Peak Wave Period of Third Swell Partition','s','PWPTSPAR'], 70'68':['Peak Wave Direction of First Swell Partition','degree true','PWDFSPAR'], - 71'69':['Peak Wave Direction of Second Swell Partition','degree true','PWDFSPAR'], - 72'70':['Peak Wave Direction of First Swell Partition','degree true','PWDSSPAR'], + 71'69':['Peak Wave Direction of Second Swell Partition','degree true','PWDSSPAR'], + 72'70':['Peak Wave Direction of Third Swell Partition','degree true','PWDTSPAR'], 73'71':['Peak Direction of Wind Waves','degree true','PDWWAVE'], 74'72':['Peak Direction of Total Swell','degree true','PDTSWELL'], 75'73':['Whitecap Fraction','fraction','WCAPFRAC'], - 76'74-191':['Reserved','unknown','unknown'], - 77'192-254':['Reserved for Local Use','unknown','unknown'], - 78'192':['Wave Steepness','proportion','WSTP'], - 79'193':['Wave Length','unknown','WLENG'], - 80'255':['Missing','unknown','unknown'], - 81} - 82table_4_2_10_1 = { - 83'0':['Current Direction','degree True','DIRC'], - 84'1':['Current Speed','m s-1','SPC'], - 85'2':['U-Component of Current','m s-1','UOGRD'], - 86'3':['V-Component of Current','m s-1','VOGRD'], - 87'4':['Rip Current Occurrence Probability','%','RIPCOP'], - 88'5-191':['Reserved','unknown','unknown'], - 89'192-254':['Reserved for Local Use','unknown','unknown'], - 90'192':['Ocean Mixed Layer U Velocity','m s-1','OMLU'], - 91'193':['Ocean Mixed Layer V Velocity','m s-1','OMLV'], - 92'194':['Barotropic U velocity','m s-1','UBARO'], - 93'195':['Barotropic V velocity','m s-1','VBARO'], - 94'255':['Missing','unknown','unknown'], - 95} - 96table_4_2_10_2 = { - 97'0':['Ice Cover','Proportion','ICEC'], - 98'1':['Ice Thickness','m','ICETK'], - 99'2':['Direction of Ice Drift','degree True','DICED'], -100'3':['Speed of Ice Drift','m s-1','SICED'], -101'4':['U-Component of Ice Drift','m s-1','UICE'], -102'5':['V-Component of Ice Drift','m s-1','VICE'], -103'6':['Ice Growth Rate','m s-1','ICEG'], -104'7':['Ice Divergence','s-1','ICED'], -105'8':['Ice Temperature','K','ICETMP'], -106'9':['Module of Ice Internal Pressure','Pa m','ICEPRS'], -107'10':['Zonal Vector Component of Vertically Integrated Ice Internal Pressure','Pa m','ZVCICEP'], -108'11':['Meridional Vector Component of Vertically Integrated Ice Internal Pressure','Pa m','MVCICEP'], -109'12':['Compressive Ice Strength','N m-1','CICES'], -110'13':['Snow Temperature (over sea ice)','K','SNOWTSI'], -111'14':['Albedo','Numeric','ALBICE'], -112'15-191':['Reserved','unknown','unknown'], -113'192-254':['Reserved for Local Use','unknown','unknown'], -114'255':['Missing','unknown','unknown'], -115} -116table_4_2_10_3 = { -117'0':['Water Temperature','K','WTMP'], -118'1':['Deviation of Sea Level from Mean','m','DSLM'], -119'2':['Heat Exchange Coefficient','unknown','CH'], -120'3':['Practical Salinity','Numeric','PRACTSAL'], -121'4':['Downward Heat Flux','W m-2','DWHFLUX'], -122'5':['Eastward Surface Stress','N m-2','EASTWSS'], -123'6':['Northward surface stress','N m-2','NORTHWSS'], -124'7':['x-component Surface Stress','N m-2','XCOMPSS'], -125'8':['y-component Surface Stress','N m-2','YCOMPSS'], -126'9':['Thermosteric Change in Sea Surface Height','m','THERCSSH'], -127'10':['Halosteric Change in Sea Surface Height','m','HALOCSSH'], -128'11':['Steric Change in Sea Surface Height','m','STERCSSH'], -129'12':['Sea Salt Flux','kg m-2s-1','SEASFLUX'], -130'13':['Net upward water flux','kg m-2s-1','unknown'], -131'14':['Eastward surface water velocity','m s-1','unknown'], -132'15':['Northward surface water velocity','m s-1','unknown'], -133'16':['x-component of surface water velocity','m s-1','unknown'], -134'17':['y-component of surface water velocity','m s-1','unknown'], -135'18':['Heat flux correction','W m-2','unknown'], -136'19':['Sea surface height tendency due to parameterization','m s-1','unknown'], -137'20':['Deviation of sea level from mean with inverse barometer correction','m','unknown'], -138'21-191':['Reserved','unknown','unknown'], -139'192-254':['Reserved for Local Use','unknown','unknown'], -140'192':['Hurricane Storm Surge','m','SURGE'], -141'193':['Extra Tropical Storm Surge','m','ETSRG'], -142'194':['Ocean Surface Elevation Relative to Geoid','m','ELEV'], -143'195':['Sea Surface Height Relative to Geoid','m','SSHG'], -144'196':['Ocean Mixed Layer Potential Density (Reference 2000m)','kg m-3','P2OMLT'], -145'197':['Net Air-Ocean Heat Flux','W m-2','AOHFLX'], -146'198':['Assimilative Heat Flux','W m-2','ASHFL'], -147'199':['Surface Temperature Trend','degree per day','SSTT'], -148'200':['Surface Salinity Trend','psu per day','SSST'], -149'201':['Kinetic Energy','J kg-1','KENG'], -150'202':['Salt Flux','kg m-2s-1','SLTFL'], -151'203':['Heat Exchange Coefficient','unknown','LCH'], -152'204':['Freezing Spray','unknown','FRZSPR'], -153'205':['Total Water Level Accounting for Tide, Wind and Waves','m','TWLWAV'], -154'206':['Total Water Level Increase due to Waves','m','RUNUP'], -155'207':['Mean Increase in Water Level due to Waves','m','SETUP'], -156'208':['Time-varying Increase in Water Level due to Waves','m','SWASH'], -157'209':['Total Water Level Above Dune Toe','m','TWLDT'], -158'210':['Total Water Level Above Dune Crest','m','TWLDC'], -159'211-241':['Reserved','unknown','unknown'], -160'242':['20% Tropical Cyclone Storm Surge Exceedance','m','TCSRG20'], -161'243':['30% Tropical Cyclone Storm Surge Exceedance','m','TCSRG30'], -162'244':['40% Tropical Cyclone Storm Surge Exceedance','m','TCSRG40'], -163'245':['50% Tropical Cyclone Storm Surge Exceedance','m','TCSRG50'], -164'246':['60% Tropical Cyclone Storm Surge Exceedance','m','TCSRG60'], -165'247':['70% Tropical Cyclone Storm Surge Exceedance','m','TCSRG70'], -166'248':['80% Tropical Cyclone Storm Surge Exceedance','m','TCSRG80'], -167'249':['90% Tropical Cyclone Storm Surge Exceedance','m','TCSRG90'], -168'250':['Extra Tropical Storm Surge Combined Surge and Tide','m','ETCWL'], -169'251':['Tide','m','TIDE'], -170'252':['Erosion Occurrence Probability','%','EROSNP'], -171'253':['Overwash Occurrence Probability','%','OWASHP'], -172'254':['Reserved','unknown','unknown'], -173'255':['Missing','unknown','unknown'], -174} -175table_4_2_10_4 = { -176'0':['Main Thermocline Depth','m','MTHD'], -177'1':['Main Thermocline Anomaly','m','MTHA'], -178'2':['Transient Thermocline Depth','m','TTHDP'], -179'3':['Salinity','kg kg-1','SALTY'], -180'4':['Ocean Vertical Heat Diffusivity','m2 s-1','OVHD'], -181'5':['Ocean Vertical Salt Diffusivity','m2 s-1','OVSD'], -182'6':['Ocean Vertical Momentum Diffusivity','m2 s-1','OVMD'], -183'7':['Bathymetry','m','BATHY'], -184'8-10':['Reserved','unknown','unknown'], -185'11':['Shape Factor With Respect To Salinity Profile','unknown','SFSALP'], -186'12':['Shape Factor With Respect To Temperature Profile In Thermocline','unknown','SFTMPP'], -187'13':['Attenuation Coefficient Of Water With Respect to Solar Radiation','m-1','ACWSRD'], -188'14':['Water Depth','m','WDEPTH'], -189'15':['Water Temperature','K','WTMPSS'], -190'16':['Water Density (rho)','kg m-3','WATERDEN'], -191'17':['Water Density Anomaly (sigma) See note','kg m-3','WATDENA'], -192'18':['Water potential temperature (theta)','K','WATPTEMP'], -193'19':['Water potential density (rho theta)','kg m-3','WATPDEN'], -194'20':['Water potential density anomaly (sigma theta) See Note','kg m-3','WATPDENA'], -195'21':['Practical Salinity','psu (numeric)','PRTSAL'], -196'22':['Water Column-integrated Heat Content','J m-2','WCHEATC'], -197'23':['Eastward Water Velocity','m s-1','EASTWVEL'], -198'24':['Northward Water Velocity','m s-1','NRTHWVEL'], -199'25':['X-Component Water Velocity','m s-1','XCOMPWV'], -200'26':['Y-Component Water Velocity','m s-1','YCOMPWV'], -201'27':['Upward Water Velocity','m s-1','UPWWVEL'], -202'28':['Vertical Eddy Diffusivity','m2 s-1','VEDDYDIF'], -203'29-191':['Reserved','unknown','unknown'], -204'192-254':['Reserved for Local Use','unknown','unknown'], -205'192':['3-D Temperature','° c','WTMPC'], -206'193':['3-D Salinity','psu','SALIN'], -207'194':['Barotropic Kinectic Energy','J kg-1','BKENG'], -208'195':['Geometric Depth Below Sea Surface','m','DBSS'], -209'196':['Interface Depths','m','INTFD'], -210'197':['Ocean Heat Content','J m-2','OHC'], -211'255':['Missing','unknown','unknown'], -212} -213table_4_2_10_191 = { -214'0':['Seconds Prior To Initial Reference Time (Defined In Section 1)','s','IRTSEC'], -215'1':['Meridional Overturning Stream Function','m3 s-1','MOSF'], -216'2':['Reserved','unknown','unknown'], -217'3':['Days Since Last Observation','d','DSLOBS'], -218'4':['Barotropic Stream Function','m3 s-1','BARDSF'], -219'5-191':['Reserved','unknown','unknown'], -220'192-254':['Reserved for Local Use','unknown','unknown'], -221'255':['Missing','unknown','unknown'], -222} + 76'74':['Mean Direction of Total Swell','degree','MDTSWEL'], + 77'75':['Mean Direction of Wind Waves','degree','MDWWAVE'], + 78'76':['Charnock','Numeric','CHNCK'], + 79'77':['Wave Spectral Skewness','Numeric','WAVESPSK'], + 80'78':['Wave Energy Flux Magnitude','W m-1','WAVEFMAG'], + 81'79':['Wave Energy Flux Mean Direction','degree true','WAVEFDIR'], + 82'80':['Raio of Wave Angular and Frequency width','Numeric','RWAVEAFW'], + 83'81':['Free Convective Velocity over the Oceans','m s-1','FCVOCEAN'], + 84'82':['Air Density over the Oceans','kg m-3','AIRDENOC'], + 85'83':['Normalized Energy Flux into Waves','Numeric','NEFW'], + 86'84':['Normalized Stress into Ocean','Numeric','NSOCEAN'], + 87'85':['Normalized Energy Flux into Ocean','Numeric','NEFOCEAN'], + 88'86':['Surface Elevation Variance due to Waves (over all frequencies and directions)','m2 s rad-1','SEVWAVE'], + 89'87':['Wave Induced Mean Se Level Correction','m','WAVEMSLC'], + 90'88':['Spectral Width Index','Numeric','SPECWI'], + 91'89':['Number of Events in Freak Wave Statistics','Numeric','EFWS'], + 92'90':['U-Component of Surface Momentum Flux into Ocean','N m-2','USMFO'], + 93'91':['U-Component of Surface Momentum Flux into Ocean','N m-2','VSMFO'], + 94'92':['Wave Turbulent Energy Flux into Ocean','W m-2','WAVETEFO'], + 95'93-191':['Reserved','unknown','unknown'], + 96'192-254':['Reserved for Local Use','unknown','unknown'], + 97'192':['Wave Steepness','proportion','WSTP'], + 98'193':['Wave Length','unknown','WLENG'], + 99'255':['Missing','unknown','unknown'], +100} +101table_4_2_10_1 = { +102'0':['Current Direction','degree True','DIRC'], +103'1':['Current Speed','m s-1','SPC'], +104'2':['U-Component of Current','m s-1','UOGRD'], +105'3':['V-Component of Current','m s-1','VOGRD'], +106'4':['Rip Current Occurrence Probability','%','RIPCOP'], +107'5':['Eastward Current','m s-1','EASTCUR'], +108'6':['Northward Current','m s-1','NRTHCUR'], +109'7-191':['Reserved','unknown','unknown'], +110'192-254':['Reserved for Local Use','unknown','unknown'], +111'192':['Ocean Mixed Layer U Velocity','m s-1','OMLU'], +112'193':['Ocean Mixed Layer V Velocity','m s-1','OMLV'], +113'194':['Barotropic U velocity','m s-1','UBARO'], +114'195':['Barotropic V velocity','m s-1','VBARO'], +115'255':['Missing','unknown','unknown'], +116} +117table_4_2_10_2 = { +118'0':['Ice Cover','Proportion','ICEC'], +119'1':['Ice Thickness','m','ICETK'], +120'2':['Direction of Ice Drift','degree True','DICED'], +121'3':['Speed of Ice Drift','m s-1','SICED'], +122'4':['U-Component of Ice Drift','m s-1','UICE'], +123'5':['V-Component of Ice Drift','m s-1','VICE'], +124'6':['Ice Growth Rate','m s-1','ICEG'], +125'7':['Ice Divergence','s-1','ICED'], +126'8':['Ice Temperature','K','ICETMP'], +127'9':['Module of Ice Internal Pressure','Pa m','ICEPRS'], +128'10':['Zonal Vector Component of Vertically Integrated Ice Internal Pressure','Pa m','ZVCICEP'], +129'11':['Meridional Vector Component of Vertically Integrated Ice Internal Pressure','Pa m','MVCICEP'], +130'12':['Compressive Ice Strength','N m-1','CICES'], +131'13':['Snow Temperature (over sea ice)','K','SNOWTSI'], +132'14':['Albedo','Numeric','ALBDOICE'], +133'15':['Sea Ice Volume per Unit Area','m3m-2','SICEVOL'], +134'16':['Snow Volume Over Sea Ice per Unit Area','m3m-2','SNVOLSI'], +135'17':['Sea Ice Heat Content','J m-2','SICEHC'], +136'18':['Snow over Sea Ice Heat Content','J m-2','SNCEHC'], +137'19':['Ice Freeboard Thickness','m','ICEFTHCK'], +138'20':['Ice Melt Pond Fraction','fraction','ICEMPF'], +139'21':['Ice Melt Pond Depth','m','ICEMPD'], +140'22':['Ice Melt Pond Volume per Unit Area','m3m-2','ICEMPV'], +141'23':['Sea Ice Fraction Tendency due to Parameterization','s-1','SIFTP'], +142'24-191':['Reserved','unknown','unknown'], +143'192-254':['Reserved for Local Use','unknown','unknown'], +144'255':['Missing','unknown','unknown'], +145} +146table_4_2_10_3 = { +147'0':['Water Temperature','K','WTMP'], +148'1':['Deviation of Sea Level from Mean','m','DSLM'], +149'2':['Heat Exchange Coefficient','unknown','CH'], +150'3':['Practical Salinity','Numeric','PRACTSAL'], +151'4':['Downward Heat Flux','W m-2','DWHFLUX'], +152'5':['Eastward Surface Stress','N m-2','EASTWSS'], +153'6':['Northward surface stress','N m-2','NORTHWSS'], +154'7':['x-component Surface Stress','N m-2','XCOMPSS'], +155'8':['y-component Surface Stress','N m-2','YCOMPSS'], +156'9':['Thermosteric Change in Sea Surface Height','m','THERCSSH'], +157'10':['Halosteric Change in Sea Surface Height','m','HALOCSSH'], +158'11':['Steric Change in Sea Surface Height','m','STERCSSH'], +159'12':['Sea Salt Flux','kg m-2s-1','SEASFLUX'], +160'13':['Net upward water flux','kg m-2s-1','NETUPWFLUX'], +161'14':['Eastward surface water velocity','m s-1','ESURFWVEL'], +162'15':['Northward surface water velocity','m s-1','NSURFWVEL'], +163'16':['x-component of surface water velocity','m s-1','XSURFWVEL'], +164'17':['y-component of surface water velocity','m s-1','YSURFWVEL'], +165'18':['Heat flux correction','W m-2','HFLUXCOR'], +166'19':['Sea surface height tendency due to parameterization','m s-1','SSHGTPARM'], +167'20':['Deviation of sea level from mean with inverse barometer correction','m','DSLIBARCOR'], +168'21-191':['Reserved','unknown','unknown'], +169'192-254':['Reserved for Local Use','unknown','unknown'], +170'192':['Hurricane Storm Surge','m','SURGE'], +171'193':['Extra Tropical Storm Surge','m','ETSRG'], +172'194':['Ocean Surface Elevation Relative to Geoid','m','ELEV'], +173'195':['Sea Surface Height Relative to Geoid','m','SSHG'], +174'196':['Ocean Mixed Layer Potential Density (Reference 2000m)','kg m-3','P2OMLT'], +175'197':['Net Air-Ocean Heat Flux','W m-2','AOHFLX'], +176'198':['Assimilative Heat Flux','W m-2','ASHFL'], +177'199':['Surface Temperature Trend','degree per day','SSTT'], +178'200':['Surface Salinity Trend','psu per day','SSST'], +179'201':['Kinetic Energy','J kg-1','KENG'], +180'202':['Salt Flux','kg m-2s-1','SLTFL'], +181'203':['Heat Exchange Coefficient','unknown','LCH'], +182'204':['Freezing Spray','unknown','FRZSPR'], +183'205':['Total Water Level Accounting for Tide, Wind and Waves','m','TWLWAV'], +184'206':['Total Water Level Increase due to Waves','m','RUNUP'], +185'207':['Mean Increase in Water Level due to Waves','m','SETUP'], +186'208':['Time-varying Increase in Water Level due to Waves','m','SWASH'], +187'209':['Total Water Level Above Dune Toe','m','TWLDT'], +188'210':['Total Water Level Above Dune Crest','m','TWLDC'], +189'211-241':['Reserved','unknown','unknown'], +190'242':['20% Tropical Cyclone Storm Surge Exceedance','m','TCSRG20'], +191'243':['30% Tropical Cyclone Storm Surge Exceedance','m','TCSRG30'], +192'244':['40% Tropical Cyclone Storm Surge Exceedance','m','TCSRG40'], +193'245':['50% Tropical Cyclone Storm Surge Exceedance','m','TCSRG50'], +194'246':['60% Tropical Cyclone Storm Surge Exceedance','m','TCSRG60'], +195'247':['70% Tropical Cyclone Storm Surge Exceedance','m','TCSRG70'], +196'248':['80% Tropical Cyclone Storm Surge Exceedance','m','TCSRG80'], +197'249':['90% Tropical Cyclone Storm Surge Exceedance','m','TCSRG90'], +198'250':['Extra Tropical Storm Surge Combined Surge and Tide','m','ETCWL'], +199'251':['Tide','m','TIDE'], +200'252':['Erosion Occurrence Probability','%','EROSNP'], +201'253':['Overwash Occurrence Probability','%','OWASHP'], +202'254':['Reserved','unknown','unknown'], +203'255':['Missing','unknown','unknown'], +204} +205table_4_2_10_4 = { +206'0':['Main Thermocline Depth','m','MTHD'], +207'1':['Main Thermocline Anomaly','m','MTHA'], +208'2':['Transient Thermocline Depth','m','TTHDP'], +209'3':['Salinity','kg kg-1','SALTY'], +210'4':['Ocean Vertical Heat Diffusivity','m2 s-1','OVHD'], +211'5':['Ocean Vertical Salt Diffusivity','m2 s-1','OVSD'], +212'6':['Ocean Vertical Momentum Diffusivity','m2 s-1','OVMD'], +213'7':['Bathymetry','m','BATHY'], +214'8-10':['Reserved','unknown','unknown'], +215'11':['Shape Factor With Respect To Salinity Profile','unknown','SFSALP'], +216'12':['Shape Factor With Respect To Temperature Profile In Thermocline','unknown','SFTMPP'], +217'13':['Attenuation Coefficient Of Water With Respect to Solar Radiation','m-1','ACWSRD'], +218'14':['Water Depth','m','WDEPTH'], +219'15':['Water Temperature','K','WTMPSS'], +220'16':['Water Density (rho)','kg m-3','WATERDEN'], +221'17':['Water Density Anomaly (sigma)','kg m-3','WATDENA'], +222'18':['Water potential temperature (theta)','K','WATPTEMP'], +223'19':['Water potential density (rho theta)','kg m-3','WATPDEN'], +224'20':['Water potential density anomaly (sigma theta)','kg m-3','WATPDENA'], +225'21':['Practical Salinity','psu (numeric)','PRTSAL'], +226'22':['Water Column-integrated Heat Content','J m-2','WCHEATC'], +227'23':['Eastward Water Velocity','m s-1','EASTWVEL'], +228'24':['Northward Water Velocity','m s-1','NRTHWVEL'], +229'25':['X-Component Water Velocity','m s-1','XCOMPWV'], +230'26':['Y-Component Water Velocity','m s-1','YCOMPWV'], +231'27':['Upward Water Velocity','m s-1','UPWWVEL'], +232'28':['Vertical Eddy Diffusivity','m2 s-1','VEDDYDIF'], +233'29':['Bottom Pressure Equivalent Height','m','BPEH'], +234'30':['Fresh Water Flux into Sea Water from Rivers','kg m-2s-1','FWFSW'], +235'31':['Fresh Water Flux Correction','kg m-2s-1','FWFC'], +236'32':['Virtual Salt Flux into Sea Water','g kg m-2s-1','VSFSW'], +237'33':['Virtual Salt Flux Correction','g kg m-2s-1','VSFC'], +238'34':['Sea Water Temperature Tendency due to Newtonian Relaxation','K s-1','SWTTNR'], +239'35':['Sea Water Salinity Tendency due to Newtonian Relaxation','g kg m-2s-1','SWSTNR'], +240'36':['Sea Water Temperature Tendency due to Parameterization','K s-1','SWTTP'], +241'37':['Sea Water Salinity Tendency due to Parameterization','g kg m-2s-1','SWSTP'], +242'38':['Eastward Sea Water Velocity Tendency Due To Parameterization','m-2s-1','ESWVP'], +243'39':['Northward Sea Water Velocity Tendency Due To Parameterization','m-2s-1','NSWVP'], +244'40':['Sea Water Temperature Tendency Due to Direct Bias Correction','K s-1','SWTTBC'], +245'41':['Sea Water Salinity Tendency due to Direct Bias Correction','g kg m-2s-1','SWSTBC'], +246'42-191':['Reserved','unknown','unknown'], +247'192-254':['Reserved for Local Use','unknown','unknown'], +248'192':['3-D Temperature','° c','WTMPC'], +249'193':['3-D Salinity','psu','SALIN'], +250'194':['Barotropic Kinectic Energy','J kg-1','BKENG'], +251'195':['Geometric Depth Below Sea Surface','m','DBSS'], +252'196':['Interface Depths','m','INTFD'], +253'197':['Ocean Heat Content','J m-2','OHC'], +254'255':['Missing','unknown','unknown'], +255} +256table_4_2_10_191 = { +257'0':['Seconds Prior To Initial Reference Time (Defined In Section 1)','s','IRTSEC'], +258'1':['Meridional Overturning Stream Function','m3 s-1','MOSF'], +259'2':['Reserved','unknown','unknown'], +260'3':['Days Since Last Observation','d','DSLOBS'], +261'4':['Barotropic Stream Function','m3 s-1','BARDSF'], +262'5-191':['Reserved','unknown','unknown'], +263'192-254':['Reserved for Local Use','unknown','unknown'], +264'255':['Missing','unknown','unknown'], +265} @@ -299,7 +342,7 @@

    table_4_2_10_0 = - {'0': ['Wave Spectra (1)', '-', 'WVSP1'], '1': ['Wave Spectra (2)', '-', 'WVSP2'], '2': ['Wave Spectra (3)', '-', 'WVSP3'], '3': ['Significant Height of Combined Wind Waves and Swell', 'm', 'HTSGW'], '4': ['Direction of Wind Waves', 'degree true', 'WVDIR'], '5': ['Significant Height of Wind Waves', 'm', 'WVHGT'], '6': ['Mean Period of Wind Waves', 's', 'WVPER'], '7': ['Direction of Swell Waves', 'degree true', 'SWDIR'], '8': ['Significant Height of Swell Waves', 'm', 'SWELL'], '9': ['Mean Period of Swell Waves', 's', 'SWPER'], '10': ['Primary Wave Direction', 'degree true', 'DIRPW'], '11': ['Primary Wave Mean Period', 's', 'PERPW'], '12': ['Secondary Wave Direction', 'degree true', 'DIRSW'], '13': ['Secondary Wave Mean Period', 's', 'PERSW'], '14': ['Direction of Combined Wind Waves and Swell', 'degree true', 'WWSDIR'], '15': ['Mean Period of Combined Wind Waves and Swell', 's', 'MWSPER'], '16': ['Coefficient of Drag With Waves', '-', 'CDWW'], '17': ['Friction Velocity', 'm s-1', 'FRICVW'], '18': ['Wave Stress', 'N m-2', 'WSTR'], '19': ['Normalised Waves Stress', '-', 'NWSTR'], '20': ['Mean Square Slope of Waves', '-', 'MSSW'], '21': ['U-component Surface Stokes Drift', 'm s-1', 'USSD'], '22': ['V-component Surface Stokes Drift', 'm s-1', 'VSSD'], '23': ['Period of Maximum Individual Wave Height', 's', 'PMAXWH'], '24': ['Maximum Individual Wave Height', 'm', 'MAXWH'], '25': ['Inverse Mean Wave Frequency', 's', 'IMWF'], '26': ['Inverse Mean Frequency of The Wind Waves', 's', 'IMFWW'], '27': ['Inverse Mean Frequency of The Total Swell', 's', 'IMFTSW'], '28': ['Mean Zero-Crossing Wave Period', 's', 'MZWPER'], '29': ['Mean Zero-Crossing Period of The Wind Waves', 's', 'MZPWW'], '30': ['Mean Zero-Crossing Period of The Total Swell', 's', 'MZPTSW'], '31': ['Wave Directional Width', '-', 'WDIRW'], '32': ['Directional Width of The Wind Waves', '-', 'DIRWWW'], '33': ['Directional Width of The Total Swell', '-', 'DIRWTS'], '34': ['Peak Wave Period', 's', 'PWPER'], '35': ['Peak Period of The Wind Waves', 's', 'PPERWW'], '36': ['Peak Period of The Total Swell', 's', 'PPERTS'], '37': ['Altimeter Wave Height', 'm', 'ALTWH'], '38': ['Altimeter Corrected Wave Height', 'm', 'ALCWH'], '39': ['Altimeter Range Relative Correction', '-', 'ALRRC'], '40': ['10 Metre Neutral Wind Speed Over Waves', 'm s-1', 'MNWSOW'], '41': ['10 Metre Wind Direction Over Waves', 'degree true', 'MWDIRW'], '42': ['Wave Engery Spectrum', 'm-2 s rad-1', 'WESP'], '43': ['Kurtosis of The Sea Surface Elevation Due to Waves', '-', 'KSSEW'], '44': ['Benjamin-Feir Index', '-', 'BENINX'], '45': ['Spectral Peakedness Factor', 's-1', 'SPFTR'], '46': ['Peak wave direction', '&deg', 'PWAVEDIR'], '47': ['Significant wave height of first swell partition', 'm', 'SWHFSWEL'], '48': ['Significant wave height of second swell partition', 'm', 'SWHSSWEL'], '49': ['Significant wave height of third swell partition', 'm', 'SWHTSWEL'], '50': ['Mean wave period of first swell partition', 's', 'MWPFSWEL'], '51': ['Mean wave period of second swell partition', 's', 'MWPSSWEL'], '52': ['Mean wave period of third swell partition', 's', 'MWPTSWEL'], '53': ['Mean wave direction of first swell partition', '&deg', 'MWDFSWEL'], '54': ['Mean wave direction of second swell partition', '&deg', 'MWDSSWEL'], '55': ['Mean wave direction of third swell partition', '&deg', 'MWDTSWEL'], '56': ['Wave directional width of first swell partition', '-', 'WDWFSWEL'], '57': ['Wave directional width of second swell partition', '-', 'WDWSSWEL'], '58': ['Wave directional width of third swell partition', '-', 'WDWTSWEL'], '59': ['Wave frequency width of first swell partition', '-', 'WFWFSWEL'], '60': ['Wave frequency width of second swell partition', '-', 'WFWSSWEL'], '61': ['Wave frequency width of third swell partition', '-', 'WFWTSWEL'], '62': ['Wave frequency width', '-', 'WAVEFREW'], '63': ['Frequency width of wind waves', '-', 'FREWWW'], '64': ['Frequency width of total swell', '-', 'FREWTSW'], '65': ['Peak Wave Period of First Swell Partition', 's', 'PWPFSPAR'], '66': ['Peak Wave Period of Second Swell Partition', 's', 'PWPSSPAR'], '67': ['Peak Wave Period of Third Swell Partition', 's', 'PWPTSPAR'], '68': ['Peak Wave Direction of First Swell Partition', 'degree true', 'PWDFSPAR'], '69': ['Peak Wave Direction of Second Swell Partition', 'degree true', 'PWDFSPAR'], '70': ['Peak Wave Direction of First Swell Partition', 'degree true', 'PWDSSPAR'], '71': ['Peak Direction of Wind Waves', 'degree true', 'PDWWAVE'], '72': ['Peak Direction of Total Swell', 'degree true', 'PDTSWELL'], '73': ['Whitecap Fraction', 'fraction', 'WCAPFRAC'], '74-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Wave Steepness', 'proportion', 'WSTP'], '193': ['Wave Length', 'unknown', 'WLENG'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Wave Spectra (1)', '-', 'WVSP1'], '1': ['Wave Spectra (2)', '-', 'WVSP2'], '2': ['Wave Spectra (3)', '-', 'WVSP3'], '3': ['Significant Height of Combined Wind Waves and Swell', 'm', 'HTSGW'], '4': ['Direction of Wind Waves', 'degree true', 'WVDIR'], '5': ['Significant Height of Wind Waves', 'm', 'WVHGT'], '6': ['Mean Period of Wind Waves', 's', 'WVPER'], '7': ['Direction of Swell Waves', 'degree true', 'SWDIR'], '8': ['Significant Height of Swell Waves', 'm', 'SWELL'], '9': ['Mean Period of Swell Waves', 's', 'SWPER'], '10': ['Primary Wave Direction', 'degree true', 'DIRPW'], '11': ['Primary Wave Mean Period', 's', 'PERPW'], '12': ['Secondary Wave Direction', 'degree true', 'DIRSW'], '13': ['Secondary Wave Mean Period', 's', 'PERSW'], '14': ['Direction of Combined Wind Waves and Swell', 'degree true', 'WWSDIR'], '15': ['Mean Period of Combined Wind Waves and Swell', 's', 'MWSPER'], '16': ['Coefficient of Drag With Waves', '-', 'CDWW'], '17': ['Friction Velocity', 'm s-1', 'FRICVW'], '18': ['Wave Stress', 'N m-2', 'WSTR'], '19': ['Normalised Waves Stress', '-', 'NWSTR'], '20': ['Mean Square Slope of Waves', '-', 'MSSW'], '21': ['U-component Surface Stokes Drift', 'm s-1', 'USSD'], '22': ['V-component Surface Stokes Drift', 'm s-1', 'VSSD'], '23': ['Period of Maximum Individual Wave Height', 's', 'PMAXWH'], '24': ['Maximum Individual Wave Height', 'm', 'MAXWH'], '25': ['Inverse Mean Wave Frequency', 's', 'IMWF'], '26': ['Inverse Mean Frequency of The Wind Waves', 's', 'IMFWW'], '27': ['Inverse Mean Frequency of The Total Swell', 's', 'IMFTSW'], '28': ['Mean Zero-Crossing Wave Period', 's', 'MZWPER'], '29': ['Mean Zero-Crossing Period of The Wind Waves', 's', 'MZPWW'], '30': ['Mean Zero-Crossing Period of The Total Swell', 's', 'MZPTSW'], '31': ['Wave Directional Width', '-', 'WDIRW'], '32': ['Directional Width of The Wind Waves', '-', 'DIRWWW'], '33': ['Directional Width of The Total Swell', '-', 'DIRWTS'], '34': ['Peak Wave Period', 's', 'PWPER'], '35': ['Peak Period of The Wind Waves', 's', 'PPERWW'], '36': ['Peak Period of The Total Swell', 's', 'PPERTS'], '37': ['Altimeter Wave Height', 'm', 'ALTWH'], '38': ['Altimeter Corrected Wave Height', 'm', 'ALCWH'], '39': ['Altimeter Range Relative Correction', '-', 'ALRRC'], '40': ['10 Metre Neutral Wind Speed Over Waves', 'm s-1', 'MNWSOW'], '41': ['10 Metre Wind Direction Over Waves', 'degree true', 'MWDIRW'], '42': ['Wave Engery Spectrum', 'm-2 s rad-1', 'WESP'], '43': ['Kurtosis of The Sea Surface Elevation Due to Waves', '-', 'KSSEW'], '44': ['Benjamin-Feir Index', '-', 'BENINX'], '45': ['Spectral Peakedness Factor', 's-1', 'SPFTR'], '46': ['Peak wave direction', '&deg', 'PWAVEDIR'], '47': ['Significant wave height of first swell partition', 'm', 'SWHFSWEL'], '48': ['Significant wave height of second swell partition', 'm', 'SWHSSWEL'], '49': ['Significant wave height of third swell partition', 'm', 'SWHTSWEL'], '50': ['Mean wave period of first swell partition', 's', 'MWPFSWEL'], '51': ['Mean wave period of second swell partition', 's', 'MWPSSWEL'], '52': ['Mean wave period of third swell partition', 's', 'MWPTSWEL'], '53': ['Mean wave direction of first swell partition', '&deg', 'MWDFSWEL'], '54': ['Mean wave direction of second swell partition', '&deg', 'MWDSSWEL'], '55': ['Mean wave direction of third swell partition', '&deg', 'MWDTSWEL'], '56': ['Wave directional width of first swell partition', '-', 'WDWFSWEL'], '57': ['Wave directional width of second swell partition', '-', 'WDWSSWEL'], '58': ['Wave directional width of third swell partition', '-', 'WDWTSWEL'], '59': ['Wave frequency width of first swell partition', '-', 'WFWFSWEL'], '60': ['Wave frequency width of second swell partition', '-', 'WFWSSWEL'], '61': ['Wave frequency width of third swell partition', '-', 'WFWTSWEL'], '62': ['Wave frequency width', '-', 'WAVEFREW'], '63': ['Frequency width of wind waves', '-', 'FREWWW'], '64': ['Frequency width of total swell', '-', 'FREWTSW'], '65': ['Peak Wave Period of First Swell Partition', 's', 'PWPFSPAR'], '66': ['Peak Wave Period of Second Swell Partition', 's', 'PWPSSPAR'], '67': ['Peak Wave Period of Third Swell Partition', 's', 'PWPTSPAR'], '68': ['Peak Wave Direction of First Swell Partition', 'degree true', 'PWDFSPAR'], '69': ['Peak Wave Direction of Second Swell Partition', 'degree true', 'PWDSSPAR'], '70': ['Peak Wave Direction of Third Swell Partition', 'degree true', 'PWDTSPAR'], '71': ['Peak Direction of Wind Waves', 'degree true', 'PDWWAVE'], '72': ['Peak Direction of Total Swell', 'degree true', 'PDTSWELL'], '73': ['Whitecap Fraction', 'fraction', 'WCAPFRAC'], '74': ['Mean Direction of Total Swell', 'degree', 'MDTSWEL'], '75': ['Mean Direction of Wind Waves', 'degree', 'MDWWAVE'], '76': ['Charnock', 'Numeric', 'CHNCK'], '77': ['Wave Spectral Skewness', 'Numeric', 'WAVESPSK'], '78': ['Wave Energy Flux Magnitude', 'W m-1', 'WAVEFMAG'], '79': ['Wave Energy Flux Mean Direction', 'degree true', 'WAVEFDIR'], '80': ['Raio of Wave Angular and Frequency width', 'Numeric', 'RWAVEAFW'], '81': ['Free Convective Velocity over the Oceans', 'm s-1', 'FCVOCEAN'], '82': ['Air Density over the Oceans', 'kg m-3', 'AIRDENOC'], '83': ['Normalized Energy Flux into Waves', 'Numeric', 'NEFW'], '84': ['Normalized Stress into Ocean', 'Numeric', 'NSOCEAN'], '85': ['Normalized Energy Flux into Ocean', 'Numeric', 'NEFOCEAN'], '86': ['Surface Elevation Variance due to Waves (over all frequencies and directions)', 'm2 s rad-1', 'SEVWAVE'], '87': ['Wave Induced Mean Se Level Correction', 'm', 'WAVEMSLC'], '88': ['Spectral Width Index', 'Numeric', 'SPECWI'], '89': ['Number of Events in Freak Wave Statistics', 'Numeric', 'EFWS'], '90': ['U-Component of Surface Momentum Flux into Ocean', 'N m-2', 'USMFO'], '91': ['U-Component of Surface Momentum Flux into Ocean', 'N m-2', 'VSMFO'], '92': ['Wave Turbulent Energy Flux into Ocean', 'W m-2', 'WAVETEFO'], '93-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Wave Steepness', 'proportion', 'WSTP'], '193': ['Wave Length', 'unknown', 'WLENG'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -312,7 +355,7 @@

    table_4_2_10_1 = - {'0': ['Current Direction', 'degree True', 'DIRC'], '1': ['Current Speed', 'm s-1', 'SPC'], '2': ['U-Component of Current', 'm s-1', 'UOGRD'], '3': ['V-Component of Current', 'm s-1', 'VOGRD'], '4': ['Rip Current Occurrence Probability', '%', 'RIPCOP'], '5-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Ocean Mixed Layer U Velocity', 'm s-1', 'OMLU'], '193': ['Ocean Mixed Layer V Velocity', 'm s-1', 'OMLV'], '194': ['Barotropic U velocity', 'm s-1', 'UBARO'], '195': ['Barotropic V velocity', 'm s-1', 'VBARO'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Current Direction', 'degree True', 'DIRC'], '1': ['Current Speed', 'm s-1', 'SPC'], '2': ['U-Component of Current', 'm s-1', 'UOGRD'], '3': ['V-Component of Current', 'm s-1', 'VOGRD'], '4': ['Rip Current Occurrence Probability', '%', 'RIPCOP'], '5': ['Eastward Current', 'm s-1', 'EASTCUR'], '6': ['Northward Current', 'm s-1', 'NRTHCUR'], '7-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Ocean Mixed Layer U Velocity', 'm s-1', 'OMLU'], '193': ['Ocean Mixed Layer V Velocity', 'm s-1', 'OMLV'], '194': ['Barotropic U velocity', 'm s-1', 'UBARO'], '195': ['Barotropic V velocity', 'm s-1', 'VBARO'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -325,7 +368,7 @@

    table_4_2_10_2 = - {'0': ['Ice Cover', 'Proportion', 'ICEC'], '1': ['Ice Thickness', 'm', 'ICETK'], '2': ['Direction of Ice Drift', 'degree True', 'DICED'], '3': ['Speed of Ice Drift', 'm s-1', 'SICED'], '4': ['U-Component of Ice Drift', 'm s-1', 'UICE'], '5': ['V-Component of Ice Drift', 'm s-1', 'VICE'], '6': ['Ice Growth Rate', 'm s-1', 'ICEG'], '7': ['Ice Divergence', 's-1', 'ICED'], '8': ['Ice Temperature', 'K', 'ICETMP'], '9': ['Module of Ice Internal Pressure', 'Pa m', 'ICEPRS'], '10': ['Zonal Vector Component of Vertically Integrated Ice Internal Pressure', 'Pa m', 'ZVCICEP'], '11': ['Meridional Vector Component of Vertically Integrated Ice Internal Pressure', 'Pa m', 'MVCICEP'], '12': ['Compressive Ice Strength', 'N m-1', 'CICES'], '13': ['Snow Temperature (over sea ice)', 'K', 'SNOWTSI'], '14': ['Albedo', 'Numeric', 'ALBICE'], '15-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Ice Cover', 'Proportion', 'ICEC'], '1': ['Ice Thickness', 'm', 'ICETK'], '2': ['Direction of Ice Drift', 'degree True', 'DICED'], '3': ['Speed of Ice Drift', 'm s-1', 'SICED'], '4': ['U-Component of Ice Drift', 'm s-1', 'UICE'], '5': ['V-Component of Ice Drift', 'm s-1', 'VICE'], '6': ['Ice Growth Rate', 'm s-1', 'ICEG'], '7': ['Ice Divergence', 's-1', 'ICED'], '8': ['Ice Temperature', 'K', 'ICETMP'], '9': ['Module of Ice Internal Pressure', 'Pa m', 'ICEPRS'], '10': ['Zonal Vector Component of Vertically Integrated Ice Internal Pressure', 'Pa m', 'ZVCICEP'], '11': ['Meridional Vector Component of Vertically Integrated Ice Internal Pressure', 'Pa m', 'MVCICEP'], '12': ['Compressive Ice Strength', 'N m-1', 'CICES'], '13': ['Snow Temperature (over sea ice)', 'K', 'SNOWTSI'], '14': ['Albedo', 'Numeric', 'ALBDOICE'], '15': ['Sea Ice Volume per Unit Area', 'm3m-2', 'SICEVOL'], '16': ['Snow Volume Over Sea Ice per Unit Area', 'm3m-2', 'SNVOLSI'], '17': ['Sea Ice Heat Content', 'J m-2', 'SICEHC'], '18': ['Snow over Sea Ice Heat Content', 'J m-2', 'SNCEHC'], '19': ['Ice Freeboard Thickness', 'm', 'ICEFTHCK'], '20': ['Ice Melt Pond Fraction', 'fraction', 'ICEMPF'], '21': ['Ice Melt Pond Depth', 'm', 'ICEMPD'], '22': ['Ice Melt Pond Volume per Unit Area', 'm3m-2', 'ICEMPV'], '23': ['Sea Ice Fraction Tendency due to Parameterization', 's-1', 'SIFTP'], '24-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -338,7 +381,7 @@

    table_4_2_10_3 = - {'0': ['Water Temperature', 'K', 'WTMP'], '1': ['Deviation of Sea Level from Mean', 'm', 'DSLM'], '2': ['Heat Exchange Coefficient', 'unknown', 'CH'], '3': ['Practical Salinity', 'Numeric', 'PRACTSAL'], '4': ['Downward Heat Flux', 'W m-2', 'DWHFLUX'], '5': ['Eastward Surface Stress', 'N m-2', 'EASTWSS'], '6': ['Northward surface stress', 'N m-2', 'NORTHWSS'], '7': ['x-component Surface Stress', 'N m-2', 'XCOMPSS'], '8': ['y-component Surface Stress', 'N m-2', 'YCOMPSS'], '9': ['Thermosteric Change in Sea Surface Height', 'm', 'THERCSSH'], '10': ['Halosteric Change in Sea Surface Height', 'm', 'HALOCSSH'], '11': ['Steric Change in Sea Surface Height', 'm', 'STERCSSH'], '12': ['Sea Salt Flux', 'kg m-2s-1', 'SEASFLUX'], '13': ['Net upward water flux', 'kg m-2s-1', 'unknown'], '14': ['Eastward surface water velocity', 'm s-1', 'unknown'], '15': ['Northward surface water velocity', 'm s-1', 'unknown'], '16': ['x-component of surface water velocity', 'm s-1', 'unknown'], '17': ['y-component of surface water velocity', 'm s-1', 'unknown'], '18': ['Heat flux correction', 'W m-2', 'unknown'], '19': ['Sea surface height tendency due to parameterization', 'm s-1', 'unknown'], '20': ['Deviation of sea level from mean with inverse barometer correction', 'm', 'unknown'], '21-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Hurricane Storm Surge', 'm', 'SURGE'], '193': ['Extra Tropical Storm Surge', 'm', 'ETSRG'], '194': ['Ocean Surface Elevation Relative to Geoid', 'm', 'ELEV'], '195': ['Sea Surface Height Relative to Geoid', 'm', 'SSHG'], '196': ['Ocean Mixed Layer Potential Density (Reference 2000m)', 'kg m-3', 'P2OMLT'], '197': ['Net Air-Ocean Heat Flux', 'W m-2', 'AOHFLX'], '198': ['Assimilative Heat Flux', 'W m-2', 'ASHFL'], '199': ['Surface Temperature Trend', 'degree per day', 'SSTT'], '200': ['Surface Salinity Trend', 'psu per day', 'SSST'], '201': ['Kinetic Energy', 'J kg-1', 'KENG'], '202': ['Salt Flux', 'kg m-2s-1', 'SLTFL'], '203': ['Heat Exchange Coefficient', 'unknown', 'LCH'], '204': ['Freezing Spray', 'unknown', 'FRZSPR'], '205': ['Total Water Level Accounting for Tide, Wind and Waves', 'm', 'TWLWAV'], '206': ['Total Water Level Increase due to Waves', 'm', 'RUNUP'], '207': ['Mean Increase in Water Level due to Waves', 'm', 'SETUP'], '208': ['Time-varying Increase in Water Level due to Waves', 'm', 'SWASH'], '209': ['Total Water Level Above Dune Toe', 'm', 'TWLDT'], '210': ['Total Water Level Above Dune Crest', 'm', 'TWLDC'], '211-241': ['Reserved', 'unknown', 'unknown'], '242': ['20% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG20'], '243': ['30% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG30'], '244': ['40% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG40'], '245': ['50% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG50'], '246': ['60% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG60'], '247': ['70% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG70'], '248': ['80% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG80'], '249': ['90% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG90'], '250': ['Extra Tropical Storm Surge Combined Surge and Tide', 'm', 'ETCWL'], '251': ['Tide', 'm', 'TIDE'], '252': ['Erosion Occurrence Probability', '%', 'EROSNP'], '253': ['Overwash Occurrence Probability', '%', 'OWASHP'], '254': ['Reserved', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Water Temperature', 'K', 'WTMP'], '1': ['Deviation of Sea Level from Mean', 'm', 'DSLM'], '2': ['Heat Exchange Coefficient', 'unknown', 'CH'], '3': ['Practical Salinity', 'Numeric', 'PRACTSAL'], '4': ['Downward Heat Flux', 'W m-2', 'DWHFLUX'], '5': ['Eastward Surface Stress', 'N m-2', 'EASTWSS'], '6': ['Northward surface stress', 'N m-2', 'NORTHWSS'], '7': ['x-component Surface Stress', 'N m-2', 'XCOMPSS'], '8': ['y-component Surface Stress', 'N m-2', 'YCOMPSS'], '9': ['Thermosteric Change in Sea Surface Height', 'm', 'THERCSSH'], '10': ['Halosteric Change in Sea Surface Height', 'm', 'HALOCSSH'], '11': ['Steric Change in Sea Surface Height', 'm', 'STERCSSH'], '12': ['Sea Salt Flux', 'kg m-2s-1', 'SEASFLUX'], '13': ['Net upward water flux', 'kg m-2s-1', 'NETUPWFLUX'], '14': ['Eastward surface water velocity', 'm s-1', 'ESURFWVEL'], '15': ['Northward surface water velocity', 'm s-1', 'NSURFWVEL'], '16': ['x-component of surface water velocity', 'm s-1', 'XSURFWVEL'], '17': ['y-component of surface water velocity', 'm s-1', 'YSURFWVEL'], '18': ['Heat flux correction', 'W m-2', 'HFLUXCOR'], '19': ['Sea surface height tendency due to parameterization', 'm s-1', 'SSHGTPARM'], '20': ['Deviation of sea level from mean with inverse barometer correction', 'm', 'DSLIBARCOR'], '21-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Hurricane Storm Surge', 'm', 'SURGE'], '193': ['Extra Tropical Storm Surge', 'm', 'ETSRG'], '194': ['Ocean Surface Elevation Relative to Geoid', 'm', 'ELEV'], '195': ['Sea Surface Height Relative to Geoid', 'm', 'SSHG'], '196': ['Ocean Mixed Layer Potential Density (Reference 2000m)', 'kg m-3', 'P2OMLT'], '197': ['Net Air-Ocean Heat Flux', 'W m-2', 'AOHFLX'], '198': ['Assimilative Heat Flux', 'W m-2', 'ASHFL'], '199': ['Surface Temperature Trend', 'degree per day', 'SSTT'], '200': ['Surface Salinity Trend', 'psu per day', 'SSST'], '201': ['Kinetic Energy', 'J kg-1', 'KENG'], '202': ['Salt Flux', 'kg m-2s-1', 'SLTFL'], '203': ['Heat Exchange Coefficient', 'unknown', 'LCH'], '204': ['Freezing Spray', 'unknown', 'FRZSPR'], '205': ['Total Water Level Accounting for Tide, Wind and Waves', 'm', 'TWLWAV'], '206': ['Total Water Level Increase due to Waves', 'm', 'RUNUP'], '207': ['Mean Increase in Water Level due to Waves', 'm', 'SETUP'], '208': ['Time-varying Increase in Water Level due to Waves', 'm', 'SWASH'], '209': ['Total Water Level Above Dune Toe', 'm', 'TWLDT'], '210': ['Total Water Level Above Dune Crest', 'm', 'TWLDC'], '211-241': ['Reserved', 'unknown', 'unknown'], '242': ['20% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG20'], '243': ['30% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG30'], '244': ['40% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG40'], '245': ['50% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG50'], '246': ['60% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG60'], '247': ['70% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG70'], '248': ['80% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG80'], '249': ['90% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG90'], '250': ['Extra Tropical Storm Surge Combined Surge and Tide', 'm', 'ETCWL'], '251': ['Tide', 'm', 'TIDE'], '252': ['Erosion Occurrence Probability', '%', 'EROSNP'], '253': ['Overwash Occurrence Probability', '%', 'OWASHP'], '254': ['Reserved', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -351,7 +394,7 @@

    table_4_2_10_4 = - {'0': ['Main Thermocline Depth', 'm', 'MTHD'], '1': ['Main Thermocline Anomaly', 'm', 'MTHA'], '2': ['Transient Thermocline Depth', 'm', 'TTHDP'], '3': ['Salinity', 'kg kg-1', 'SALTY'], '4': ['Ocean Vertical Heat Diffusivity', 'm2 s-1', 'OVHD'], '5': ['Ocean Vertical Salt Diffusivity', 'm2 s-1', 'OVSD'], '6': ['Ocean Vertical Momentum Diffusivity', 'm2 s-1', 'OVMD'], '7': ['Bathymetry', 'm', 'BATHY'], '8-10': ['Reserved', 'unknown', 'unknown'], '11': ['Shape Factor With Respect To Salinity Profile', 'unknown', 'SFSALP'], '12': ['Shape Factor With Respect To Temperature Profile In Thermocline', 'unknown', 'SFTMPP'], '13': ['Attenuation Coefficient Of Water With Respect to Solar Radiation', 'm-1', 'ACWSRD'], '14': ['Water Depth', 'm', 'WDEPTH'], '15': ['Water Temperature', 'K', 'WTMPSS'], '16': ['Water Density (rho)', 'kg m-3', 'WATERDEN'], '17': ['Water Density Anomaly (sigma) See note', 'kg m-3', 'WATDENA'], '18': ['Water potential temperature (theta)', 'K', 'WATPTEMP'], '19': ['Water potential density (rho theta)', 'kg m-3', 'WATPDEN'], '20': ['Water potential density anomaly (sigma theta) See Note', 'kg m-3', 'WATPDENA'], '21': ['Practical Salinity', 'psu (numeric)', 'PRTSAL'], '22': ['Water Column-integrated Heat Content', 'J m-2', 'WCHEATC'], '23': ['Eastward Water Velocity', 'm s-1', 'EASTWVEL'], '24': ['Northward Water Velocity', 'm s-1', 'NRTHWVEL'], '25': ['X-Component Water Velocity', 'm s-1', 'XCOMPWV'], '26': ['Y-Component Water Velocity', 'm s-1', 'YCOMPWV'], '27': ['Upward Water Velocity', 'm s-1', 'UPWWVEL'], '28': ['Vertical Eddy Diffusivity', 'm2 s-1', 'VEDDYDIF'], '29-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['3-D Temperature', '° c', 'WTMPC'], '193': ['3-D Salinity', 'psu', 'SALIN'], '194': ['Barotropic Kinectic Energy', 'J kg-1', 'BKENG'], '195': ['Geometric Depth Below Sea Surface', 'm', 'DBSS'], '196': ['Interface Depths', 'm', 'INTFD'], '197': ['Ocean Heat Content', 'J m-2', 'OHC'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Main Thermocline Depth', 'm', 'MTHD'], '1': ['Main Thermocline Anomaly', 'm', 'MTHA'], '2': ['Transient Thermocline Depth', 'm', 'TTHDP'], '3': ['Salinity', 'kg kg-1', 'SALTY'], '4': ['Ocean Vertical Heat Diffusivity', 'm2 s-1', 'OVHD'], '5': ['Ocean Vertical Salt Diffusivity', 'm2 s-1', 'OVSD'], '6': ['Ocean Vertical Momentum Diffusivity', 'm2 s-1', 'OVMD'], '7': ['Bathymetry', 'm', 'BATHY'], '8-10': ['Reserved', 'unknown', 'unknown'], '11': ['Shape Factor With Respect To Salinity Profile', 'unknown', 'SFSALP'], '12': ['Shape Factor With Respect To Temperature Profile In Thermocline', 'unknown', 'SFTMPP'], '13': ['Attenuation Coefficient Of Water With Respect to Solar Radiation', 'm-1', 'ACWSRD'], '14': ['Water Depth', 'm', 'WDEPTH'], '15': ['Water Temperature', 'K', 'WTMPSS'], '16': ['Water Density (rho)', 'kg m-3', 'WATERDEN'], '17': ['Water Density Anomaly (sigma)', 'kg m-3', 'WATDENA'], '18': ['Water potential temperature (theta)', 'K', 'WATPTEMP'], '19': ['Water potential density (rho theta)', 'kg m-3', 'WATPDEN'], '20': ['Water potential density anomaly (sigma theta)', 'kg m-3', 'WATPDENA'], '21': ['Practical Salinity', 'psu (numeric)', 'PRTSAL'], '22': ['Water Column-integrated Heat Content', 'J m-2', 'WCHEATC'], '23': ['Eastward Water Velocity', 'm s-1', 'EASTWVEL'], '24': ['Northward Water Velocity', 'm s-1', 'NRTHWVEL'], '25': ['X-Component Water Velocity', 'm s-1', 'XCOMPWV'], '26': ['Y-Component Water Velocity', 'm s-1', 'YCOMPWV'], '27': ['Upward Water Velocity', 'm s-1', 'UPWWVEL'], '28': ['Vertical Eddy Diffusivity', 'm2 s-1', 'VEDDYDIF'], '29': ['Bottom Pressure Equivalent Height', 'm', 'BPEH'], '30': ['Fresh Water Flux into Sea Water from Rivers', 'kg m-2s-1', 'FWFSW'], '31': ['Fresh Water Flux Correction', 'kg m-2s-1', 'FWFC'], '32': ['Virtual Salt Flux into Sea Water', 'g kg m-2s-1', 'VSFSW'], '33': ['Virtual Salt Flux Correction', 'g kg m-2s-1', 'VSFC'], '34': ['Sea Water Temperature Tendency due to Newtonian Relaxation', 'K s-1', 'SWTTNR'], '35': ['Sea Water Salinity Tendency due to Newtonian Relaxation', 'g kg m-2s-1', 'SWSTNR'], '36': ['Sea Water Temperature Tendency due to Parameterization', 'K s-1', 'SWTTP'], '37': ['Sea Water Salinity Tendency due to Parameterization', 'g kg m-2s-1', 'SWSTP'], '38': ['Eastward Sea Water Velocity Tendency Due To Parameterization', 'm-2s-1', 'ESWVP'], '39': ['Northward Sea Water Velocity Tendency Due To Parameterization', 'm-2s-1', 'NSWVP'], '40': ['Sea Water Temperature Tendency Due to Direct Bias Correction', 'K s-1', 'SWTTBC'], '41': ['Sea Water Salinity Tendency due to Direct Bias Correction', 'g kg m-2s-1', 'SWSTBC'], '42-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['3-D Temperature', '° c', 'WTMPC'], '193': ['3-D Salinity', 'psu', 'SALIN'], '194': ['Barotropic Kinectic Energy', 'J kg-1', 'BKENG'], '195': ['Geometric Depth Below Sea Surface', 'm', 'DBSS'], '196': ['Interface Depths', 'm', 'INTFD'], '197': ['Ocean Heat Content', 'J m-2', 'OHC'], '255': ['Missing', 'unknown', 'unknown']}
    diff --git a/docs/grib2io/tables/section4_discipline2.html b/docs/grib2io/tables/section4_discipline2.html index f44b858..1dbd7ec 100644 --- a/docs/grib2io/tables/section4_discipline2.html +++ b/docs/grib2io/tables/section4_discipline2.html @@ -69,8 +69,8 @@

      1table_4_2_2_0  = {
       2'0':['Land Cover (0=sea, 1=land)','Proportion','LAND'],
       3'1':['Surface Roughness','m','SFCR'],
    -  4'2':['Soil Temperature','K','TSOIL'],
    -  5'3':['Parameter deprecated - use another parameter instead.','unknown','unknown'],
    +  4'2':['Soil Temperature (Parameter Deprecated, see Note 3)','K','TSOIL'],
    +  5'3':['Soil Moisture Content (Parameter Deprecated, see Note 1)','unknown','unknown'],
       6'4':['Vegetation','%','VEG'],
       7'5':['Water Runoff','kg m-2','WATR'],
       8'6':['Evapotranspiration','kg-2 s-1','EVAPT'],
    @@ -84,13 +84,13 @@ 

    16'14':['Blackadars Mixing Length Scale','m','BMIXL'], 17'15':['Canopy Conductance','m s-1','CCOND'], 18'16':['Minimal Stomatal Resistance','s m-1','RSMIN'], - 19'17':['Wilting Point','Proportion','WILT'], + 19'17':['Wilting Point (Parameter Deprecated, see Note 1)','Proportion','WILT'], 20'18':['Solar parameter in canopy conductance','Proportion','RCS'], 21'19':['Temperature parameter in canopy','Proportion','RCT'], 22'20':['Humidity parameter in canopy conductance','Proportion','RCQ'], 23'21':['Soil moisture parameter in canopy conductance','Proportion','RCSOL'], - 24'22':['Parameter deprecated - use another parameter instead.','unknown','unknown'], - 25'23':['Column-Integrated Soil Water','kg m-2','CISOILW'], + 24'22':['Soil Moisture (Parameter Deprecated, See Note 3)','unknown','unknown'], + 25'23':['Column-Integrated Soil Water (Parameter Deprecated, See Note 3)','kg m-2','CISOILW'], 26'24':['Heat Flux','W m-2','HFLUX'], 27'25':['Volumetric Soil Moisture','m3 m-3','VSOILM'], 28'26':['Wilting Point','kg m-3','WILT'], @@ -112,144 +112,168 @@

    44'42':['Water Runoff and Drainage Rate','kg m-2 s-1','WRDRATE'], 45'43':['Drainage direction','See Table 4.250','DRAINDIR'], 46'44':['Upstream Area','m2','UPSAREA'], - 47'45-191':['Reserved','unknown','unknown'], - 48'192-254':['Reserved for Local Use','unknown','unknown'], - 49'192':['Volumetric Soil Moisture Content','Fraction','SOILW'], - 50'193':['Ground Heat Flux','W m-2','GFLUX'], - 51'194':['Moisture Availability','%','MSTAV'], - 52'195':['Exchange Coefficient','(kg m-3) (m s-1)','SFEXC'], - 53'196':['Plant Canopy Surface Water','kg m-2','CNWAT'], - 54'197':['Blackadar’s Mixing Length Scale','m','BMIXL'], - 55'198':['Vegetation Type','Integer (0-13)','VGTYP'], - 56'199':['Canopy Conductance','m s-1','CCOND'], - 57'200':['Minimal Stomatal Resistance','s m-1','RSMIN'], - 58'201':['Wilting Point','Fraction','WILT'], - 59'202':['Solar parameter in canopy conductance','Fraction','RCS'], - 60'203':['Temperature parameter in canopy conductance','Fraction','RCT'], - 61'204':['Humidity parameter in canopy conductance','Fraction','RCQ'], - 62'205':['Soil moisture parameter in canopy conductance','Fraction','RCSOL'], - 63'206':['Rate of water dropping from canopy to ground','unknown','RDRIP'], - 64'207':['Ice-free water surface','%','ICWAT'], - 65'208':['Surface exchange coefficients for T and Q divided by delta z','m s-1','AKHS'], - 66'209':['Surface exchange coefficients for U and V divided by delta z','m s-1','AKMS'], - 67'210':['Vegetation canopy temperature','K','VEGT'], - 68'211':['Surface water storage','Kg m-2','SSTOR'], - 69'212':['Liquid soil moisture content (non-frozen)','Kg m-2','LSOIL'], - 70'213':['Open water evaporation (standing water)','W m-2','EWATR'], - 71'214':['Groundwater recharge','Kg m-2','GWREC'], - 72'215':['Flood plain recharge','Kg m-2','QREC'], - 73'216':['Roughness length for heat','m','SFCRH'], - 74'217':['Normalized Difference Vegetation Index','unknown','NDVI'], - 75'218':['Land-sea coverage (nearest neighbor) [land=1,sea=0]','unknown','LANDN'], - 76'219':['Asymptotic mixing length scale','m','AMIXL'], - 77'220':['Water vapor added by precip assimilation','Kg m-2','WVINC'], - 78'221':['Water condensate added by precip assimilation','Kg m-2','WCINC'], - 79'222':['Water Vapor Flux Convergance (Vertical Int)','Kg m-2','WVCONV'], - 80'223':['Water Condensate Flux Convergance (Vertical Int)','Kg m-2','WCCONV'], - 81'224':['Water Vapor Zonal Flux (Vertical Int)','Kg m-2','WVUFLX'], - 82'225':['Water Vapor Meridional Flux (Vertical Int)','Kg m-2','WVVFLX'], - 83'226':['Water Condensate Zonal Flux (Vertical Int)','Kg m-2','WCUFLX'], - 84'227':['Water Condensate Meridional Flux (Vertical Int)','Kg m-2','WCVFLX'], - 85'228':['Aerodynamic conductance','m s-1','ACOND'], - 86'229':['Canopy water evaporation','W m-2','EVCW'], - 87'230':['Transpiration','W m-2','TRANS'], - 88'231':['Seasonally Minimum Green Vegetation Fraction (over 1-year period)','%','VEGMIN'], - 89'232':['Seasonally Maximum Green Vegetation Fraction (over 1-year period)','%','VEGMAX'], - 90'233':['Land Fraction','Fraction','LANDFRC'], - 91'234':['Lake Fraction','Fraction','LAKEFRC'], - 92'235':['Precipitation Advected Heat Flux','W m-2','PAHFLX'], - 93'236':['Water Storage in Aquifer','Kg m-2','WATERSA'], - 94'237':['Evaporation of Intercepted Water','Kg m-2','EIWATER'], - 95'238':['Plant Transpiration','Kg m-2','PLANTTR'], - 96'239':['Soil Surface Evaporation','Kg m-2','SOILSE'], - 97'255':['Missing','unknown','unknown'], - 98} - 99table_4_2_2_1 = { -100'0-191':['Reserved','unknown','unknown'], -101'192-254':['Reserved for Local Use','unknown','unknown'], -102'192':['Cold Advisory for Newborn Livestock','unknown','CANL'], -103'255':['Missing','unknown','unknown'], -104} -105table_4_2_2_3 = { -106'0':['Soil Type','See Table 4.213','SOTYP'], -107'1':['Upper Layer Soil Temperature','K','UPLST'], -108'2':['Upper Layer Soil Moisture','kg m-3','UPLSM'], -109'3':['Lower Layer Soil Moisture','kg m-3','LOWLSM'], -110'4':['Bottom Layer Soil Temperature','K','BOTLST'], -111'5':['Liquid Volumetric Soil Moisture (non-frozen)','Proportion','SOILL'], -112'6':['Number of Soil Layers in Root Zone','Numeric','RLYRS'], -113'7':['Transpiration Stress-onset (soil moisture)','Proportion','SMREF'], -114'8':['Direct Evaporation Cease (soil moisture)','Proportion','SMDRY'], -115'9':['Soil Porosity','Proportion','POROS'], -116'10':['Liquid Volumetric Soil Moisture (Non-Frozen)','m3 m-3','LIQVSM'], -117'11':['Volumetric Transpiration Stree-Onset(Soil Moisture)','m3 m-3','VOLTSO'], -118'12':['Transpiration Stree-Onset(Soil Moisture)','kg m-3','TRANSO'], -119'13':['Volumetric Direct Evaporation Cease(Soil Moisture)','m3 m-3','VOLDEC'], -120'14':['Direct Evaporation Cease(Soil Moisture)','kg m-3','DIREC'], -121'15':['Soil Porosity','m3 m-3','SOILP'], -122'16':['Volumetric Saturation Of Soil Moisture','m3 m-3','VSOSM'], -123'17':['Saturation Of Soil Moisture','kg m-3','SATOSM'], -124'18':['Soil Temperature','K','SOILTMP'], -125'19':['Soil Moisture','kg m-3','SOILMOI'], -126'20':['Column-Integrated Soil Moisture','kg m-2','CISOILM'], -127'21':['Soil Ice','kg m-3','SOILICE'], -128'22':['Column-Integrated Soil Ice','kg m-2','CISICE'], -129'23':['Liquid Water in Snow Pack','kg m-2','LWSNWP'], -130'24':['Frost Index','kg day-1','FRSTINX'], -131'25':['Snow Depth at Elevation Bands','kg m-2','SNWDEB'], -132'26':['Soil Heat Flux','W m-2','SHFLX'], -133'27':['Soil Depth','m','SOILDEP'], -134'28':['Snow Temperature','K','SNOWTMP'], -135'29':['Ice Temperature','K','ICETEMP'], -136'30-191':['Reserved','unknown','unknown'], -137'192-254':['Reserved for Local Use','unknown','unknown'], -138'192':['Liquid Volumetric Soil Moisture (non Frozen)','Proportion','SOILL'], -139'193':['Number of Soil Layers in Root Zone','non-dim','RLYRS'], -140'194':['Surface Slope Type','Index','SLTYP'], -141'195':['Transpiration Stress-onset (soil moisture)','Proportion','SMREF'], -142'196':['Direct Evaporation Cease (soil moisture)','Proportion','SMDRY'], -143'197':['Soil Porosity','Proportion','POROS'], -144'198':['Direct Evaporation from Bare Soil','W m-2','EVBS'], -145'199':['Land Surface Precipitation Accumulation','kg m-2','LSPA'], -146'200':['Bare Soil Surface Skin temperature','K','BARET'], -147'201':['Average Surface Skin Temperature','K','AVSFT'], -148'202':['Effective Radiative Skin Temperature','K','RADT'], -149'203':['Field Capacity','Fraction','FLDCP'], -150'204':['Soil Moisture Availability In The Top Soil Layer','%','MSTAV'], -151'255':['Missing','unknown','unknown'], -152} -153table_4_2_2_4 = { -154'0':['Fire Outlook','See Table 4.224','FIREOLK'], -155'1':['Fire Outlook Due to Dry Thunderstorm','See Table 4.224','FIREODT'], -156'2':['Haines Index','Numeric','HINDEX'], -157'3':['Fire Burned Area','%','FBAREA'], -158'4':['Fosberg Index','Numeric','FOSINDX'], -159'5':['Fire Weath Index (Canadian Forest Service)','Numeric','FWINX'], -160'6':['Fine Fuel Moisture Code (Canadian Forest Service)','Numeric','FFMCODE'], -161'7':['Duff Moisture Code (Canadian Forest Service)','Numeric','DUFMCODE'], -162'8':['Drought Code (Canadian Forest Service)','Numeric','DRTCODE'], -163'9':['Initial Fire Spread Index (Canadian Forest Service)','Numeric','INFSINX'], -164'10':['Fire Build Up Index (Canadian Forest Service)','Numeric','FBUPINX'], -165'11':['Fire Daily Severity Rating (Canadian Forest Service)','Numeric','FDSRTE'], -166'12':['Keetch-Byram Drought Index','Numeric','KRIDX'], -167'13':['Drought Factor (as defined by the Australian forest service)','Numeric','DRFACT'], -168'14':['Rate of Spread (as defined by the Australian forest service)','m s-1','RATESPRD'], -169'15':['Fire Danger index (as defined by the Australian forest service)','Numeric','FIREDIDX'], -170'16':['Spread component (as defined by the US Forest Service National Fire Danger Rating System)','Numeric','SPRDCOMP'], -171'17':['Burning Index (as defined by the Australian forest service)','Numeric','BURNIDX'], -172'18':['Ignition Component (as defined by the Australian forest service)','%','IGNCOMP'], -173'19':['Energy Release Component (as defined by the Australian forest service)','J m-2','ENRELCOM'], -174'20-191':['Reserved','unknown','unknown'], -175'192-254':['Reserved for Local Use','unknown','unknown'], -176'255':['Missing','unknown','unknown'], -177} -178table_4_2_2_5 = { -179'0':['Glacier Cover (see Note)','Proportion','GLACCOV'], -180'1':['Glacier Temperature','K','GLACTMP'], -181'2-191':['Reserved','unknown','unknown'], -182'192-254':['Reserved for Local Use','unknown','unknown'], -183'255':['Missing','unknown','unknown'], -184} + 47'45':['Wetland Cover','Proportion','WETCOV'], + 48'46':['Wetland Type','See Table 4.239','WETTYPE'], + 49'47':['Irrigation Cover','Proportion','IRRCOV'], + 50'48':['C4 Crop Cover','Proportion','CROPCOV'], + 51'49':['C4 Grass Cover','Proportion','GRASSCOV'], + 52'50':['Skin Resovoir Content','kg m-2','SKINRC'], + 53'51':['Surface Runoff Rate','kg m-2 s-1','SURFRATE'], + 54'52':['Subsurface Runoff Rate','kg m-2 s-1','SUBSRATE'], + 55'53':['Low-Vegetation Cover','Proportion','LOVEGCOV'], + 56'54':['High-Vegetation Cover','Proportion','HIVEGCOV'], + 57'55':['Leaf Area Index (Low-Vegetation)','m2 m-2','LAILO'], + 58'56':['Leaf Area Index (High-Vegetation)','m2 m-2','LAIHI'], + 59'57':['Type of Low-Vegetation','See Table 4.234','TYPLOVEG'], + 60'58':['Type of High-Vegetation','See Table 4.234','TYPHIVEG'], + 61'59':['Net Ecosystem Exchange Flux','kg-2 s-1','NECOFLUX'], + 62'60':['Gross Primary Production Flux','kg-2 s-1','GROSSFLUX'], + 63'61':['Ecosystem Respiration Flux','kg-2 s-1','ECORFLUX'], + 64'45-191':['Reserved','unknown','unknown'], + 65'192-254':['Reserved for Local Use','unknown','unknown'], + 66'192':['Volumetric Soil Moisture Content','Fraction','SOILW'], + 67'193':['Ground Heat Flux','W m-2','GFLUX'], + 68'194':['Moisture Availability','%','MSTAV'], + 69'195':['Exchange Coefficient','(kg m-3) (m s-1)','SFEXC'], + 70'196':['Plant Canopy Surface Water','kg m-2','CNWAT'], + 71'197':['Blackadar’s Mixing Length Scale','m','BMIXL'], + 72'198':['Vegetation Type','Integer (0-13)','VGTYP'], + 73'199':['Canopy Conductance','m s-1','CCOND'], + 74'200':['Minimal Stomatal Resistance','s m-1','RSMIN'], + 75'201':['Wilting Point','Fraction','WILT'], + 76'202':['Solar parameter in canopy conductance','Fraction','RCS'], + 77'203':['Temperature parameter in canopy conductance','Fraction','RCT'], + 78'204':['Humidity parameter in canopy conductance','Fraction','RCQ'], + 79'205':['Soil moisture parameter in canopy conductance','Fraction','RCSOL'], + 80'206':['Rate of water dropping from canopy to ground','unknown','RDRIP'], + 81'207':['Ice-free water surface','%','ICWAT'], + 82'208':['Surface exchange coefficients for T and Q divided by delta z','m s-1','AKHS'], + 83'209':['Surface exchange coefficients for U and V divided by delta z','m s-1','AKMS'], + 84'210':['Vegetation canopy temperature','K','VEGT'], + 85'211':['Surface water storage','kg m-2','SSTOR'], + 86'212':['Liquid soil moisture content (non-frozen)','kg m-2','LSOIL'], + 87'213':['Open water evaporation (standing water)','W m-2','EWATR'], + 88'214':['Groundwater recharge','kg m-2','GWREC'], + 89'215':['Flood plain recharge','kg m-2','QREC'], + 90'216':['Roughness length for heat','m','SFCRH'], + 91'217':['Normalized Difference Vegetation Index','unknown','NDVI'], + 92'218':['Land-sea coverage (nearest neighbor) [land=1,sea=0]','unknown','LANDN'], + 93'219':['Asymptotic mixing length scale','m','AMIXL'], + 94'220':['Water vapor added by precip assimilation','kg m-2','WVINC'], + 95'221':['Water condensate added by precip assimilation','kg m-2','WCINC'], + 96'222':['Water Vapor Flux Convergance (Vertical Int)','kg m-2','WVCONV'], + 97'223':['Water Condensate Flux Convergance (Vertical Int)','kg m-2','WCCONV'], + 98'224':['Water Vapor Zonal Flux (Vertical Int)','kg m-2','WVUFLX'], + 99'225':['Water Vapor Meridional Flux (Vertical Int)','kg m-2','WVVFLX'], +100'226':['Water Condensate Zonal Flux (Vertical Int)','kg m-2','WCUFLX'], +101'227':['Water Condensate Meridional Flux (Vertical Int)','kg m-2','WCVFLX'], +102'228':['Aerodynamic conductance','m s-1','ACOND'], +103'229':['Canopy water evaporation','W m-2','EVCW'], +104'230':['Transpiration','W m-2','TRANS'], +105'231':['Seasonally Minimum Green Vegetation Fraction (over 1-year period)','%','VEGMIN'], +106'232':['Seasonally Maximum Green Vegetation Fraction (over 1-year period)','%','VEGMAX'], +107'233':['Land Fraction','Fraction','LANDFRC'], +108'234':['Lake Fraction','Fraction','LAKEFRC'], +109'235':['Precipitation Advected Heat Flux','W m-2','PAHFLX'], +110'236':['Water Storage in Aquifer','kg m-2','WATERSA'], +111'237':['Evaporation of Intercepted Water','kg m-2','EIWATER'], +112'238':['Plant Transpiration','kg m-2','PLANTTR'], +113'239':['Soil Surface Evaporation','kg m-2','SOILSE'], +114'255':['Missing','unknown','unknown'], +115} +116table_4_2_2_1 = { +117'0-191':['Reserved','unknown','unknown'], +118'192-254':['Reserved for Local Use','unknown','unknown'], +119'192':['Cold Advisory for Newborn Livestock','unknown','CANL'], +120'255':['Missing','unknown','unknown'], +121} +122table_4_2_2_3 = { +123'0':['Soil Type','See Table 4.213','SOTYP'], +124'1':['Upper Layer Soil Temperature','K','UPLST'], +125'2':['Upper Layer Soil Moisture','kg m-3','UPLSM'], +126'3':['Lower Layer Soil Moisture','kg m-3','LOWLSM'], +127'4':['Bottom Layer Soil Temperature','K','BOTLST'], +128'5':['Liquid Volumetric Soil Moisture(non-frozen)','Proportion','SOILL'], +129'6':['Number of Soil Layers in Root Zone','Numeric','RLYRS'], +130'7':['Transpiration Stress-onset (soil moisture)','Proportion','SMREF'], +131'8':['Direct Evaporation Cease (soil moisture)','Proportion','SMDRY'], +132'9':['Soil Porosity','Proportion','POROS'], +133'10':['Liquid Volumetric Soil Moisture (Non-Frozen)','m3 m-3','LIQVSM'], +134'11':['Volumetric Transpiration Stree-Onset(Soil Moisture)','m3 m-3','VOLTSO'], +135'12':['Transpiration Stree-Onset(Soil Moisture)','kg m-3','TRANSO'], +136'13':['Volumetric Direct Evaporation Cease(Soil Moisture)','m3 m-3','VOLDEC'], +137'14':['Direct Evaporation Cease(Soil Moisture)','kg m-3','DIREC'], +138'15':['Soil Porosity','m3 m-3','SOILP'], +139'16':['Volumetric Saturation Of Soil Moisture','m3 m-3','VSOSM'], +140'17':['Saturation Of Soil Moisture','kg m-3','SATOSM'], +141'18':['Soil Temperature','K','SOILTMP'], +142'19':['Soil Moisture','kg m-3','SOILMOI'], +143'20':['Column-Integrated Soil Moisture','kg m-2','CISOILM'], +144'21':['Soil Ice','kg m-3','SOILICE'], +145'22':['Column-Integrated Soil Ice','kg m-2','CISICE'], +146'23':['Liquid Water in Snow Pack','kg m-2','LWSNWP'], +147'24':['Frost Index','kg day-1','FRSTINX'], +148'25':['Snow Depth at Elevation Bands','kg m-2','SNWDEB'], +149'26':['Soil Heat Flux','W m-2','SHFLX'], +150'27':['Soil Depth','m','SOILDEP'], +151'28':['Snow Temperature','K','SNOWTMP'], +152'29':['Ice Temperature','K','ICETEMP'], +153'30-191':['Reserved','unknown','unknown'], +154'192-254':['Reserved for Local Use','unknown','unknown'], +155'192':['Liquid Volumetric Soil Moisture (non Frozen)','Proportion','SOILL'], +156'193':['Number of Soil Layers in Root Zone','non-dim','RLYRS'], +157'194':['Surface Slope Type','Index','SLTYP'], +158'195':['Transpiration Stress-onset (soil moisture)','Proportion','SMREF'], +159'196':['Direct Evaporation Cease (soil moisture)','Proportion','SMDRY'], +160'197':['Soil Porosity','Proportion','POROS'], +161'198':['Direct Evaporation from Bare Soil','W m-2','EVBS'], +162'199':['Land Surface Precipitation Accumulation','kg m-2','LSPA'], +163'200':['Bare Soil Surface Skin temperature','K','BARET'], +164'201':['Average Surface Skin Temperature','K','AVSFT'], +165'202':['Effective Radiative Skin Temperature','K','RADT'], +166'203':['Field Capacity','Fraction','FLDCP'], +167'204':['Soil Moisture Availability In The Top Soil Layer','%','MSTAV'], +168'255':['Missing','unknown','unknown'], +169} +170table_4_2_2_4 = { +171'0':['Fire Outlook','See Table 4.224','FIREOLK'], +172'1':['Fire Outlook Due to Dry Thunderstorm','See Table 4.224','FIREODT'], +173'2':['Haines Index','Numeric','HINDEX'], +174'3':['Fire Burned Area','%','FBAREA'], +175'4':['Fosberg Index','Numeric','FOSINDX'], +176'5':['Fire Weath Index (Canadian Forest Service)','Numeric','FWINX'], +177'6':['Fine Fuel Moisture Code (Canadian Forest Service)','Numeric','FFMCODE'], +178'7':['Duff Moisture Code (Canadian Forest Service)','Numeric','DUFMCODE'], +179'8':['Drought Code (Canadian Forest Service)','Numeric','DRTCODE'], +180'9':['Initial Fire Spread Index (Canadian Forest Service)','Numeric','INFSINX'], +181'10':['Fire Build Up Index (Canadian Forest Service)','Numeric','FBUPINX'], +182'11':['Fire Daily Severity Rating (Canadian Forest Service)','Numeric','FDSRTE'], +183'12':['Keetch-Byram Drought Index','Numeric','KRIDX'], +184'13':['Drought Factor (as defined by the Australian forest service)','Numeric','DRFACT'], +185'14':['Rate of Spread (as defined by the Australian forest service)','m s-1','RATESPRD'], +186'15':['Fire Danger index (as defined by the Australian forest service)','Numeric','FIREDIDX'], +187'16':['Spread component (as defined by the US Forest Service National Fire Danger Rating System)','Numeric','SPRDCOMP'], +188'17':['Burning Index (as defined by the Australian forest service)','Numeric','BURNIDX'], +189'18':['Ignition Component (as defined by the Australian forest service)','%','IGNCOMP'], +190'19':['Energy Release Component (as defined by the Australian forest service)','J m-2','ENRELCOM'], +191'20':['Burning Area','%','BURNAREA'], +192'21':['Burnable Area','%','BURNABAREA'], +193'22':['Unburnable Area','%','UNBURNAREA'], +194'23':['Fuel Load','kg m-2','FUELLOAD'], +195'24':['Combustion Completeness','%','COMBCO'], +196'25':['Fuel Moisture Content','kg kg-1','FUELMC'], +197'26':['Wildfire Potential (as defined by NOAA Global Systems Laboratory)','Numeric','WFIREPOT'], +198'27-191':['Reserved','unknown','unknown'], +199'192-254':['Reserved for Local Use','unknown','unknown'], +200'255':['Missing','unknown','unknown'], +201} +202table_4_2_2_5 = { +203'0':['Glacier Cover','Proportion','GLACCOV'], +204'1':['Glacier Temperature','K','GLACTMP'], +205'2-191':['Reserved','unknown','unknown'], +206'192-254':['Reserved for Local Use','unknown','unknown'], +207'255':['Missing','unknown','unknown'], +208}

    @@ -258,7 +282,7 @@

    table_4_2_2_0 = - {'0': ['Land Cover (0=sea, 1=land)', 'Proportion', 'LAND'], '1': ['Surface Roughness', 'm', 'SFCR'], '2': ['Soil Temperature', 'K', 'TSOIL'], '3': ['Parameter deprecated - use another parameter instead.', 'unknown', 'unknown'], '4': ['Vegetation', '%', 'VEG'], '5': ['Water Runoff', 'kg m-2', 'WATR'], '6': ['Evapotranspiration', 'kg-2 s-1', 'EVAPT'], '7': ['Model Terrain Height', 'm', 'MTERH'], '8': ['Land Use', 'See Table 4.212', 'LANDU'], '9': ['Volumetric Soil Moisture Content', 'Proportion', 'SOILW'], '10': ['Ground Heat Flux', 'W m-2', 'GFLUX'], '11': ['Moisture Availability', '%', 'MSTAV'], '12': ['Exchange Coefficient', 'kg m-2 s-1', 'SFEXC'], '13': ['Plant Canopy Surface Water', 'kg m-2', 'CNWAT'], '14': ['Blackadars Mixing Length Scale', 'm', 'BMIXL'], '15': ['Canopy Conductance', 'm s-1', 'CCOND'], '16': ['Minimal Stomatal Resistance', 's m-1', 'RSMIN'], '17': ['Wilting Point', 'Proportion', 'WILT'], '18': ['Solar parameter in canopy conductance', 'Proportion', 'RCS'], '19': ['Temperature parameter in canopy', 'Proportion', 'RCT'], '20': ['Humidity parameter in canopy conductance', 'Proportion', 'RCQ'], '21': ['Soil moisture parameter in canopy conductance', 'Proportion', 'RCSOL'], '22': ['Parameter deprecated - use another parameter instead.', 'unknown', 'unknown'], '23': ['Column-Integrated Soil Water', 'kg m-2', 'CISOILW'], '24': ['Heat Flux', 'W m-2', 'HFLUX'], '25': ['Volumetric Soil Moisture', 'm3 m-3', 'VSOILM'], '26': ['Wilting Point', 'kg m-3', 'WILT'], '27': ['Volumetric Wilting Point', 'm3 m-3', 'VWILTP'], '28': ['Leaf Area Index', 'Numeric', 'LEAINX'], '29': ['Evergreen Forest Cover', 'Proportion', 'EVGFC'], '30': ['Deciduous Forest Cover', 'Proportion', 'DECFC'], '31': ['Normalized Differential Vegetation Index (NDVI)', 'Numeric', 'NDVINX'], '32': ['Root Depth of Vegetation', 'm', 'RDVEG'], '33': ['Water Runoff and Drainage', 'kg m-2', 'WROD'], '34': ['Surface Water Runoff', 'kg m-2', 'SFCWRO'], '35': ['Tile Class', 'See Table 4.243', 'TCLASS'], '36': ['Tile Fraction', 'Proportion', 'TFRCT'], '37': ['Tile Percentage', '%', 'TPERCT'], '38': ['Soil Volumetric Ice Content (Water Equivalent)', 'm3 m-3', 'SOILVIC'], '39': ['Evapotranspiration Rate', 'kg m-2 s-1', 'EVAPTRAT'], '40': ['Potential Evapotranspiration Rate', 'kg m-2 s-1', 'PERATE'], '41': ['Snow Melt Rate', 'kg m-2 s-1', 'SMRATE'], '42': ['Water Runoff and Drainage Rate', 'kg m-2 s-1', 'WRDRATE'], '43': ['Drainage direction', 'See Table 4.250', 'DRAINDIR'], '44': ['Upstream Area', 'm2', 'UPSAREA'], '45-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Volumetric Soil Moisture Content', 'Fraction', 'SOILW'], '193': ['Ground Heat Flux', 'W m-2', 'GFLUX'], '194': ['Moisture Availability', '%', 'MSTAV'], '195': ['Exchange Coefficient', '(kg m-3) (m s-1)', 'SFEXC'], '196': ['Plant Canopy Surface Water', 'kg m-2', 'CNWAT'], '197': ['Blackadar’s Mixing Length Scale', 'm', 'BMIXL'], '198': ['Vegetation Type', 'Integer (0-13)', 'VGTYP'], '199': ['Canopy Conductance', 'm s-1', 'CCOND'], '200': ['Minimal Stomatal Resistance', 's m-1', 'RSMIN'], '201': ['Wilting Point', 'Fraction', 'WILT'], '202': ['Solar parameter in canopy conductance', 'Fraction', 'RCS'], '203': ['Temperature parameter in canopy conductance', 'Fraction', 'RCT'], '204': ['Humidity parameter in canopy conductance', 'Fraction', 'RCQ'], '205': ['Soil moisture parameter in canopy conductance', 'Fraction', 'RCSOL'], '206': ['Rate of water dropping from canopy to ground', 'unknown', 'RDRIP'], '207': ['Ice-free water surface', '%', 'ICWAT'], '208': ['Surface exchange coefficients for T and Q divided by delta z', 'm s-1', 'AKHS'], '209': ['Surface exchange coefficients for U and V divided by delta z', 'm s-1', 'AKMS'], '210': ['Vegetation canopy temperature', 'K', 'VEGT'], '211': ['Surface water storage', 'Kg m-2', 'SSTOR'], '212': ['Liquid soil moisture content (non-frozen)', 'Kg m-2', 'LSOIL'], '213': ['Open water evaporation (standing water)', 'W m-2', 'EWATR'], '214': ['Groundwater recharge', 'Kg m-2', 'GWREC'], '215': ['Flood plain recharge', 'Kg m-2', 'QREC'], '216': ['Roughness length for heat', 'm', 'SFCRH'], '217': ['Normalized Difference Vegetation Index', 'unknown', 'NDVI'], '218': ['Land-sea coverage (nearest neighbor) [land=1,sea=0]', 'unknown', 'LANDN'], '219': ['Asymptotic mixing length scale', 'm', 'AMIXL'], '220': ['Water vapor added by precip assimilation', 'Kg m-2', 'WVINC'], '221': ['Water condensate added by precip assimilation', 'Kg m-2', 'WCINC'], '222': ['Water Vapor Flux Convergance (Vertical Int)', 'Kg m-2', 'WVCONV'], '223': ['Water Condensate Flux Convergance (Vertical Int)', 'Kg m-2', 'WCCONV'], '224': ['Water Vapor Zonal Flux (Vertical Int)', 'Kg m-2', 'WVUFLX'], '225': ['Water Vapor Meridional Flux (Vertical Int)', 'Kg m-2', 'WVVFLX'], '226': ['Water Condensate Zonal Flux (Vertical Int)', 'Kg m-2', 'WCUFLX'], '227': ['Water Condensate Meridional Flux (Vertical Int)', 'Kg m-2', 'WCVFLX'], '228': ['Aerodynamic conductance', 'm s-1', 'ACOND'], '229': ['Canopy water evaporation', 'W m-2', 'EVCW'], '230': ['Transpiration', 'W m-2', 'TRANS'], '231': ['Seasonally Minimum Green Vegetation Fraction (over 1-year period)', '%', 'VEGMIN'], '232': ['Seasonally Maximum Green Vegetation Fraction (over 1-year period)', '%', 'VEGMAX'], '233': ['Land Fraction', 'Fraction', 'LANDFRC'], '234': ['Lake Fraction', 'Fraction', 'LAKEFRC'], '235': ['Precipitation Advected Heat Flux', 'W m-2', 'PAHFLX'], '236': ['Water Storage in Aquifer', 'Kg m-2', 'WATERSA'], '237': ['Evaporation of Intercepted Water', 'Kg m-2', 'EIWATER'], '238': ['Plant Transpiration', 'Kg m-2', 'PLANTTR'], '239': ['Soil Surface Evaporation', 'Kg m-2', 'SOILSE'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Land Cover (0=sea, 1=land)', 'Proportion', 'LAND'], '1': ['Surface Roughness', 'm', 'SFCR'], '2': ['Soil Temperature (Parameter Deprecated, see Note 3)', 'K', 'TSOIL'], '3': ['Soil Moisture Content (Parameter Deprecated, see Note 1)', 'unknown', 'unknown'], '4': ['Vegetation', '%', 'VEG'], '5': ['Water Runoff', 'kg m-2', 'WATR'], '6': ['Evapotranspiration', 'kg-2 s-1', 'EVAPT'], '7': ['Model Terrain Height', 'm', 'MTERH'], '8': ['Land Use', 'See Table 4.212', 'LANDU'], '9': ['Volumetric Soil Moisture Content', 'Proportion', 'SOILW'], '10': ['Ground Heat Flux', 'W m-2', 'GFLUX'], '11': ['Moisture Availability', '%', 'MSTAV'], '12': ['Exchange Coefficient', 'kg m-2 s-1', 'SFEXC'], '13': ['Plant Canopy Surface Water', 'kg m-2', 'CNWAT'], '14': ['Blackadars Mixing Length Scale', 'm', 'BMIXL'], '15': ['Canopy Conductance', 'm s-1', 'CCOND'], '16': ['Minimal Stomatal Resistance', 's m-1', 'RSMIN'], '17': ['Wilting Point (Parameter Deprecated, see Note 1)', 'Proportion', 'WILT'], '18': ['Solar parameter in canopy conductance', 'Proportion', 'RCS'], '19': ['Temperature parameter in canopy', 'Proportion', 'RCT'], '20': ['Humidity parameter in canopy conductance', 'Proportion', 'RCQ'], '21': ['Soil moisture parameter in canopy conductance', 'Proportion', 'RCSOL'], '22': ['Soil Moisture (Parameter Deprecated, See Note 3)', 'unknown', 'unknown'], '23': ['Column-Integrated Soil Water (Parameter Deprecated, See Note 3)', 'kg m-2', 'CISOILW'], '24': ['Heat Flux', 'W m-2', 'HFLUX'], '25': ['Volumetric Soil Moisture', 'm3 m-3', 'VSOILM'], '26': ['Wilting Point', 'kg m-3', 'WILT'], '27': ['Volumetric Wilting Point', 'm3 m-3', 'VWILTP'], '28': ['Leaf Area Index', 'Numeric', 'LEAINX'], '29': ['Evergreen Forest Cover', 'Proportion', 'EVGFC'], '30': ['Deciduous Forest Cover', 'Proportion', 'DECFC'], '31': ['Normalized Differential Vegetation Index (NDVI)', 'Numeric', 'NDVINX'], '32': ['Root Depth of Vegetation', 'm', 'RDVEG'], '33': ['Water Runoff and Drainage', 'kg m-2', 'WROD'], '34': ['Surface Water Runoff', 'kg m-2', 'SFCWRO'], '35': ['Tile Class', 'See Table 4.243', 'TCLASS'], '36': ['Tile Fraction', 'Proportion', 'TFRCT'], '37': ['Tile Percentage', '%', 'TPERCT'], '38': ['Soil Volumetric Ice Content (Water Equivalent)', 'm3 m-3', 'SOILVIC'], '39': ['Evapotranspiration Rate', 'kg m-2 s-1', 'EVAPTRAT'], '40': ['Potential Evapotranspiration Rate', 'kg m-2 s-1', 'PERATE'], '41': ['Snow Melt Rate', 'kg m-2 s-1', 'SMRATE'], '42': ['Water Runoff and Drainage Rate', 'kg m-2 s-1', 'WRDRATE'], '43': ['Drainage direction', 'See Table 4.250', 'DRAINDIR'], '44': ['Upstream Area', 'm2', 'UPSAREA'], '45': ['Wetland Cover', 'Proportion', 'WETCOV'], '46': ['Wetland Type', 'See Table 4.239', 'WETTYPE'], '47': ['Irrigation Cover', 'Proportion', 'IRRCOV'], '48': ['C4 Crop Cover', 'Proportion', 'CROPCOV'], '49': ['C4 Grass Cover', 'Proportion', 'GRASSCOV'], '50': ['Skin Resovoir Content', 'kg m-2', 'SKINRC'], '51': ['Surface Runoff Rate', 'kg m-2 s-1', 'SURFRATE'], '52': ['Subsurface Runoff Rate', 'kg m-2 s-1', 'SUBSRATE'], '53': ['Low-Vegetation Cover', 'Proportion', 'LOVEGCOV'], '54': ['High-Vegetation Cover', 'Proportion', 'HIVEGCOV'], '55': ['Leaf Area Index (Low-Vegetation)', 'm2 m-2', 'LAILO'], '56': ['Leaf Area Index (High-Vegetation)', 'm2 m-2', 'LAIHI'], '57': ['Type of Low-Vegetation', 'See Table 4.234', 'TYPLOVEG'], '58': ['Type of High-Vegetation', 'See Table 4.234', 'TYPHIVEG'], '59': ['Net Ecosystem Exchange Flux', 'kg-2 s-1', 'NECOFLUX'], '60': ['Gross Primary Production Flux', 'kg-2 s-1', 'GROSSFLUX'], '61': ['Ecosystem Respiration Flux', 'kg-2 s-1', 'ECORFLUX'], '45-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Volumetric Soil Moisture Content', 'Fraction', 'SOILW'], '193': ['Ground Heat Flux', 'W m-2', 'GFLUX'], '194': ['Moisture Availability', '%', 'MSTAV'], '195': ['Exchange Coefficient', '(kg m-3) (m s-1)', 'SFEXC'], '196': ['Plant Canopy Surface Water', 'kg m-2', 'CNWAT'], '197': ['Blackadar’s Mixing Length Scale', 'm', 'BMIXL'], '198': ['Vegetation Type', 'Integer (0-13)', 'VGTYP'], '199': ['Canopy Conductance', 'm s-1', 'CCOND'], '200': ['Minimal Stomatal Resistance', 's m-1', 'RSMIN'], '201': ['Wilting Point', 'Fraction', 'WILT'], '202': ['Solar parameter in canopy conductance', 'Fraction', 'RCS'], '203': ['Temperature parameter in canopy conductance', 'Fraction', 'RCT'], '204': ['Humidity parameter in canopy conductance', 'Fraction', 'RCQ'], '205': ['Soil moisture parameter in canopy conductance', 'Fraction', 'RCSOL'], '206': ['Rate of water dropping from canopy to ground', 'unknown', 'RDRIP'], '207': ['Ice-free water surface', '%', 'ICWAT'], '208': ['Surface exchange coefficients for T and Q divided by delta z', 'm s-1', 'AKHS'], '209': ['Surface exchange coefficients for U and V divided by delta z', 'm s-1', 'AKMS'], '210': ['Vegetation canopy temperature', 'K', 'VEGT'], '211': ['Surface water storage', 'kg m-2', 'SSTOR'], '212': ['Liquid soil moisture content (non-frozen)', 'kg m-2', 'LSOIL'], '213': ['Open water evaporation (standing water)', 'W m-2', 'EWATR'], '214': ['Groundwater recharge', 'kg m-2', 'GWREC'], '215': ['Flood plain recharge', 'kg m-2', 'QREC'], '216': ['Roughness length for heat', 'm', 'SFCRH'], '217': ['Normalized Difference Vegetation Index', 'unknown', 'NDVI'], '218': ['Land-sea coverage (nearest neighbor) [land=1,sea=0]', 'unknown', 'LANDN'], '219': ['Asymptotic mixing length scale', 'm', 'AMIXL'], '220': ['Water vapor added by precip assimilation', 'kg m-2', 'WVINC'], '221': ['Water condensate added by precip assimilation', 'kg m-2', 'WCINC'], '222': ['Water Vapor Flux Convergance (Vertical Int)', 'kg m-2', 'WVCONV'], '223': ['Water Condensate Flux Convergance (Vertical Int)', 'kg m-2', 'WCCONV'], '224': ['Water Vapor Zonal Flux (Vertical Int)', 'kg m-2', 'WVUFLX'], '225': ['Water Vapor Meridional Flux (Vertical Int)', 'kg m-2', 'WVVFLX'], '226': ['Water Condensate Zonal Flux (Vertical Int)', 'kg m-2', 'WCUFLX'], '227': ['Water Condensate Meridional Flux (Vertical Int)', 'kg m-2', 'WCVFLX'], '228': ['Aerodynamic conductance', 'm s-1', 'ACOND'], '229': ['Canopy water evaporation', 'W m-2', 'EVCW'], '230': ['Transpiration', 'W m-2', 'TRANS'], '231': ['Seasonally Minimum Green Vegetation Fraction (over 1-year period)', '%', 'VEGMIN'], '232': ['Seasonally Maximum Green Vegetation Fraction (over 1-year period)', '%', 'VEGMAX'], '233': ['Land Fraction', 'Fraction', 'LANDFRC'], '234': ['Lake Fraction', 'Fraction', 'LAKEFRC'], '235': ['Precipitation Advected Heat Flux', 'W m-2', 'PAHFLX'], '236': ['Water Storage in Aquifer', 'kg m-2', 'WATERSA'], '237': ['Evaporation of Intercepted Water', 'kg m-2', 'EIWATER'], '238': ['Plant Transpiration', 'kg m-2', 'PLANTTR'], '239': ['Soil Surface Evaporation', 'kg m-2', 'SOILSE'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -284,7 +308,7 @@

    table_4_2_2_3 = - {'0': ['Soil Type', 'See Table 4.213', 'SOTYP'], '1': ['Upper Layer Soil Temperature', 'K', 'UPLST'], '2': ['Upper Layer Soil Moisture', 'kg m-3', 'UPLSM'], '3': ['Lower Layer Soil Moisture', 'kg m-3', 'LOWLSM'], '4': ['Bottom Layer Soil Temperature', 'K', 'BOTLST'], '5': ['Liquid Volumetric Soil Moisture (non-frozen)', 'Proportion', 'SOILL'], '6': ['Number of Soil Layers in Root Zone', 'Numeric', 'RLYRS'], '7': ['Transpiration Stress-onset (soil moisture)', 'Proportion', 'SMREF'], '8': ['Direct Evaporation Cease (soil moisture)', 'Proportion', 'SMDRY'], '9': ['Soil Porosity', 'Proportion', 'POROS'], '10': ['Liquid Volumetric Soil Moisture (Non-Frozen)', 'm3 m-3', 'LIQVSM'], '11': ['Volumetric Transpiration Stree-Onset(Soil Moisture)', 'm3 m-3', 'VOLTSO'], '12': ['Transpiration Stree-Onset(Soil Moisture)', 'kg m-3', 'TRANSO'], '13': ['Volumetric Direct Evaporation Cease(Soil Moisture)', 'm3 m-3', 'VOLDEC'], '14': ['Direct Evaporation Cease(Soil Moisture)', 'kg m-3', 'DIREC'], '15': ['Soil Porosity', 'm3 m-3', 'SOILP'], '16': ['Volumetric Saturation Of Soil Moisture', 'm3 m-3', 'VSOSM'], '17': ['Saturation Of Soil Moisture', 'kg m-3', 'SATOSM'], '18': ['Soil Temperature', 'K', 'SOILTMP'], '19': ['Soil Moisture', 'kg m-3', 'SOILMOI'], '20': ['Column-Integrated Soil Moisture', 'kg m-2', 'CISOILM'], '21': ['Soil Ice', 'kg m-3', 'SOILICE'], '22': ['Column-Integrated Soil Ice', 'kg m-2', 'CISICE'], '23': ['Liquid Water in Snow Pack', 'kg m-2', 'LWSNWP'], '24': ['Frost Index', 'kg day-1', 'FRSTINX'], '25': ['Snow Depth at Elevation Bands', 'kg m-2', 'SNWDEB'], '26': ['Soil Heat Flux', 'W m-2', 'SHFLX'], '27': ['Soil Depth', 'm', 'SOILDEP'], '28': ['Snow Temperature', 'K', 'SNOWTMP'], '29': ['Ice Temperature', 'K', 'ICETEMP'], '30-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Liquid Volumetric Soil Moisture (non Frozen)', 'Proportion', 'SOILL'], '193': ['Number of Soil Layers in Root Zone', 'non-dim', 'RLYRS'], '194': ['Surface Slope Type', 'Index', 'SLTYP'], '195': ['Transpiration Stress-onset (soil moisture)', 'Proportion', 'SMREF'], '196': ['Direct Evaporation Cease (soil moisture)', 'Proportion', 'SMDRY'], '197': ['Soil Porosity', 'Proportion', 'POROS'], '198': ['Direct Evaporation from Bare Soil', 'W m-2', 'EVBS'], '199': ['Land Surface Precipitation Accumulation', 'kg m-2', 'LSPA'], '200': ['Bare Soil Surface Skin temperature', 'K', 'BARET'], '201': ['Average Surface Skin Temperature', 'K', 'AVSFT'], '202': ['Effective Radiative Skin Temperature', 'K', 'RADT'], '203': ['Field Capacity', 'Fraction', 'FLDCP'], '204': ['Soil Moisture Availability In The Top Soil Layer', '%', 'MSTAV'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Soil Type', 'See Table 4.213', 'SOTYP'], '1': ['Upper Layer Soil Temperature', 'K', 'UPLST'], '2': ['Upper Layer Soil Moisture', 'kg m-3', 'UPLSM'], '3': ['Lower Layer Soil Moisture', 'kg m-3', 'LOWLSM'], '4': ['Bottom Layer Soil Temperature', 'K', 'BOTLST'], '5': ['Liquid Volumetric Soil Moisture(non-frozen)', 'Proportion', 'SOILL'], '6': ['Number of Soil Layers in Root Zone', 'Numeric', 'RLYRS'], '7': ['Transpiration Stress-onset (soil moisture)', 'Proportion', 'SMREF'], '8': ['Direct Evaporation Cease (soil moisture)', 'Proportion', 'SMDRY'], '9': ['Soil Porosity', 'Proportion', 'POROS'], '10': ['Liquid Volumetric Soil Moisture (Non-Frozen)', 'm3 m-3', 'LIQVSM'], '11': ['Volumetric Transpiration Stree-Onset(Soil Moisture)', 'm3 m-3', 'VOLTSO'], '12': ['Transpiration Stree-Onset(Soil Moisture)', 'kg m-3', 'TRANSO'], '13': ['Volumetric Direct Evaporation Cease(Soil Moisture)', 'm3 m-3', 'VOLDEC'], '14': ['Direct Evaporation Cease(Soil Moisture)', 'kg m-3', 'DIREC'], '15': ['Soil Porosity', 'm3 m-3', 'SOILP'], '16': ['Volumetric Saturation Of Soil Moisture', 'm3 m-3', 'VSOSM'], '17': ['Saturation Of Soil Moisture', 'kg m-3', 'SATOSM'], '18': ['Soil Temperature', 'K', 'SOILTMP'], '19': ['Soil Moisture', 'kg m-3', 'SOILMOI'], '20': ['Column-Integrated Soil Moisture', 'kg m-2', 'CISOILM'], '21': ['Soil Ice', 'kg m-3', 'SOILICE'], '22': ['Column-Integrated Soil Ice', 'kg m-2', 'CISICE'], '23': ['Liquid Water in Snow Pack', 'kg m-2', 'LWSNWP'], '24': ['Frost Index', 'kg day-1', 'FRSTINX'], '25': ['Snow Depth at Elevation Bands', 'kg m-2', 'SNWDEB'], '26': ['Soil Heat Flux', 'W m-2', 'SHFLX'], '27': ['Soil Depth', 'm', 'SOILDEP'], '28': ['Snow Temperature', 'K', 'SNOWTMP'], '29': ['Ice Temperature', 'K', 'ICETEMP'], '30-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Liquid Volumetric Soil Moisture (non Frozen)', 'Proportion', 'SOILL'], '193': ['Number of Soil Layers in Root Zone', 'non-dim', 'RLYRS'], '194': ['Surface Slope Type', 'Index', 'SLTYP'], '195': ['Transpiration Stress-onset (soil moisture)', 'Proportion', 'SMREF'], '196': ['Direct Evaporation Cease (soil moisture)', 'Proportion', 'SMDRY'], '197': ['Soil Porosity', 'Proportion', 'POROS'], '198': ['Direct Evaporation from Bare Soil', 'W m-2', 'EVBS'], '199': ['Land Surface Precipitation Accumulation', 'kg m-2', 'LSPA'], '200': ['Bare Soil Surface Skin temperature', 'K', 'BARET'], '201': ['Average Surface Skin Temperature', 'K', 'AVSFT'], '202': ['Effective Radiative Skin Temperature', 'K', 'RADT'], '203': ['Field Capacity', 'Fraction', 'FLDCP'], '204': ['Soil Moisture Availability In The Top Soil Layer', '%', 'MSTAV'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -297,7 +321,7 @@

    table_4_2_2_4 = - {'0': ['Fire Outlook', 'See Table 4.224', 'FIREOLK'], '1': ['Fire Outlook Due to Dry Thunderstorm', 'See Table 4.224', 'FIREODT'], '2': ['Haines Index', 'Numeric', 'HINDEX'], '3': ['Fire Burned Area', '%', 'FBAREA'], '4': ['Fosberg Index', 'Numeric', 'FOSINDX'], '5': ['Fire Weath Index (Canadian Forest Service)', 'Numeric', 'FWINX'], '6': ['Fine Fuel Moisture Code (Canadian Forest Service)', 'Numeric', 'FFMCODE'], '7': ['Duff Moisture Code (Canadian Forest Service)', 'Numeric', 'DUFMCODE'], '8': ['Drought Code (Canadian Forest Service)', 'Numeric', 'DRTCODE'], '9': ['Initial Fire Spread Index (Canadian Forest Service)', 'Numeric', 'INFSINX'], '10': ['Fire Build Up Index (Canadian Forest Service)', 'Numeric', 'FBUPINX'], '11': ['Fire Daily Severity Rating (Canadian Forest Service)', 'Numeric', 'FDSRTE'], '12': ['Keetch-Byram Drought Index', 'Numeric', 'KRIDX'], '13': ['Drought Factor (as defined by the Australian forest service)', 'Numeric', 'DRFACT'], '14': ['Rate of Spread (as defined by the Australian forest service)', 'm s-1', 'RATESPRD'], '15': ['Fire Danger index (as defined by the Australian forest service)', 'Numeric', 'FIREDIDX'], '16': ['Spread component (as defined by the US Forest Service National Fire Danger Rating System)', 'Numeric', 'SPRDCOMP'], '17': ['Burning Index (as defined by the Australian forest service)', 'Numeric', 'BURNIDX'], '18': ['Ignition Component (as defined by the Australian forest service)', '%', 'IGNCOMP'], '19': ['Energy Release Component (as defined by the Australian forest service)', 'J m-2', 'ENRELCOM'], '20-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Fire Outlook', 'See Table 4.224', 'FIREOLK'], '1': ['Fire Outlook Due to Dry Thunderstorm', 'See Table 4.224', 'FIREODT'], '2': ['Haines Index', 'Numeric', 'HINDEX'], '3': ['Fire Burned Area', '%', 'FBAREA'], '4': ['Fosberg Index', 'Numeric', 'FOSINDX'], '5': ['Fire Weath Index (Canadian Forest Service)', 'Numeric', 'FWINX'], '6': ['Fine Fuel Moisture Code (Canadian Forest Service)', 'Numeric', 'FFMCODE'], '7': ['Duff Moisture Code (Canadian Forest Service)', 'Numeric', 'DUFMCODE'], '8': ['Drought Code (Canadian Forest Service)', 'Numeric', 'DRTCODE'], '9': ['Initial Fire Spread Index (Canadian Forest Service)', 'Numeric', 'INFSINX'], '10': ['Fire Build Up Index (Canadian Forest Service)', 'Numeric', 'FBUPINX'], '11': ['Fire Daily Severity Rating (Canadian Forest Service)', 'Numeric', 'FDSRTE'], '12': ['Keetch-Byram Drought Index', 'Numeric', 'KRIDX'], '13': ['Drought Factor (as defined by the Australian forest service)', 'Numeric', 'DRFACT'], '14': ['Rate of Spread (as defined by the Australian forest service)', 'm s-1', 'RATESPRD'], '15': ['Fire Danger index (as defined by the Australian forest service)', 'Numeric', 'FIREDIDX'], '16': ['Spread component (as defined by the US Forest Service National Fire Danger Rating System)', 'Numeric', 'SPRDCOMP'], '17': ['Burning Index (as defined by the Australian forest service)', 'Numeric', 'BURNIDX'], '18': ['Ignition Component (as defined by the Australian forest service)', '%', 'IGNCOMP'], '19': ['Energy Release Component (as defined by the Australian forest service)', 'J m-2', 'ENRELCOM'], '20': ['Burning Area', '%', 'BURNAREA'], '21': ['Burnable Area', '%', 'BURNABAREA'], '22': ['Unburnable Area', '%', 'UNBURNAREA'], '23': ['Fuel Load', 'kg m-2', 'FUELLOAD'], '24': ['Combustion Completeness', '%', 'COMBCO'], '25': ['Fuel Moisture Content', 'kg kg-1', 'FUELMC'], '26': ['Wildfire Potential (as defined by NOAA Global Systems Laboratory)', 'Numeric', 'WFIREPOT'], '27-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -310,7 +334,7 @@

    table_4_2_2_5 = - {'0': ['Glacier Cover (see Note)', 'Proportion', 'GLACCOV'], '1': ['Glacier Temperature', 'K', 'GLACTMP'], '2-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Glacier Cover', 'Proportion', 'GLACCOV'], '1': ['Glacier Temperature', 'K', 'GLACTMP'], '2-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}
    diff --git a/docs/grib2io/tables/section4_discipline20.html b/docs/grib2io/tables/section4_discipline20.html new file mode 100644 index 0000000..3d04fe4 --- /dev/null +++ b/docs/grib2io/tables/section4_discipline20.html @@ -0,0 +1,324 @@ + + + + + + + grib2io.tables.section4_discipline20 API documentation + + + + + + + + + +
    +
    +

    +grib2io.tables.section4_discipline20

    + + + + + + +
     1table_4_2_20_0  = {
    + 2'0':['Universal Thermal Climate Index','K','UTHCIDX'],
    + 3'1':['Mean Radiant Temperature','K','MEANRTMP'],
    + 4'2':['Wet-bulb Globe Temperature (see Note)','K','WETBGTMP'],
    + 5'3':['Globe Temperature (see Note)','K','GLOBETMP'],
    + 6'4':['Humidex','K','HUMIDX'],
    + 7'5':['Effective Temperature','K','EFFTEMP'],
    + 8'6':['Normal Effective Temperature','K','NOREFTMP'],
    + 9'7':['Standard Effective Temperature','K','STDEFTMP'],
    +10'8':['Physiological Equivalent Temperature','K','PEQUTMP'],
    +11'9-191':['Reserved','unknown','unknown'],
    +12'192-254':['Reserved for Local Use','unknown','unknown'],
    +13'255':['Missing','unknown','unknown'],
    +14}
    +15table_4_2_20_1  = {
    +16'0':['Malaria Cases','Fraction','MALACASE'],
    +17'1':['Malaria Circumsporozoite Protein Rate','Fraction','MACPRATE'],
    +18'2':['Plasmodium Falciparum Entomological Inoculation Rate','Bites per day per person','PFEIRATE'],
    +19'3':['Human Bite Rate by Anopheles Vectors','Bites per day per person','HBRATEAV'],
    +20'4':['Malaria Immunity','Fraction','MALAIMM'],
    +21'5':['Falciparum Parasite Rates','Fraction','FALPRATE'],
    +22'6':['Detectable Falciparum Parasite Ratio (after day 10)','Fraction','DFPRATIO'],
    +23'7':['Anopheles Vector to Host Ratio','Fraction','AVHRATIO'],
    +24'8':['Anopheles Vector Number','Number m-2','AVECTNUM'],
    +25'9':['Fraction of Malarial Vector Reproductive Habitat','Fraction','FMALVRH'],
    +26'10-191':['Reserved','unknown','unknown'],
    +27'192-254':['Reserved for Local Use','unknown','unknown'],
    +28'255':['Missing','unknown','unknown'],
    +29}
    +30table_4_2_20_2  = {
    +31'0':['Population Density','Person m-2','POPDEN'],
    +32'1-191':['Reserved','unknown','unknown'],
    +33'192-254':['Reserved for Local Use','unknown','unknown'],
    +34'255':['Missing','unknown','unknown'],
    +35}
    +
    + + +
    +
    +
    + table_4_2_20_0 = + + {'0': ['Universal Thermal Climate Index', 'K', 'UTHCIDX'], '1': ['Mean Radiant Temperature', 'K', 'MEANRTMP'], '2': ['Wet-bulb Globe Temperature (see Note)', 'K', 'WETBGTMP'], '3': ['Globe Temperature (see Note)', 'K', 'GLOBETMP'], '4': ['Humidex', 'K', 'HUMIDX'], '5': ['Effective Temperature', 'K', 'EFFTEMP'], '6': ['Normal Effective Temperature', 'K', 'NOREFTMP'], '7': ['Standard Effective Temperature', 'K', 'STDEFTMP'], '8': ['Physiological Equivalent Temperature', 'K', 'PEQUTMP'], '9-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']} + + +
    + + + + +
    +
    +
    + table_4_2_20_1 = + + {'0': ['Malaria Cases', 'Fraction', 'MALACASE'], '1': ['Malaria Circumsporozoite Protein Rate', 'Fraction', 'MACPRATE'], '2': ['Plasmodium Falciparum Entomological Inoculation Rate', 'Bites per day per person', 'PFEIRATE'], '3': ['Human Bite Rate by Anopheles Vectors', 'Bites per day per person', 'HBRATEAV'], '4': ['Malaria Immunity', 'Fraction', 'MALAIMM'], '5': ['Falciparum Parasite Rates', 'Fraction', 'FALPRATE'], '6': ['Detectable Falciparum Parasite Ratio (after day 10)', 'Fraction', 'DFPRATIO'], '7': ['Anopheles Vector to Host Ratio', 'Fraction', 'AVHRATIO'], '8': ['Anopheles Vector Number', 'Number m-2', 'AVECTNUM'], '9': ['Fraction of Malarial Vector Reproductive Habitat', 'Fraction', 'FMALVRH'], '10-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']} + + +
    + + + + +
    +
    +
    + table_4_2_20_2 = + + {'0': ['Population Density', 'Person m-2', 'POPDEN'], '1-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']} + + +
    + + + + +
    +
    + + \ No newline at end of file diff --git a/docs/grib2io/tables/section4_discipline3.html b/docs/grib2io/tables/section4_discipline3.html index 968af05..82691df 100644 --- a/docs/grib2io/tables/section4_discipline3.html +++ b/docs/grib2io/tables/section4_discipline3.html @@ -119,170 +119,171 @@

    42'27':['Bidirectional Reflecance Factor','Numeric','BRFLF'], 43'28':['Brightness Temperature','K','SPBRT'], 44'29':['Scaled Radiance','Numeric','SCRAD'], - 45'30-97':['Reserved','unknown','unknown'], - 46'98':['Correlation coefficient between MPE rain rates for the co-located IR data and the microwave data rain rates','Numeric','CCMPEMRR'], - 47'99':['Standard deviation between MPE rain rates for the co-located IR data and the microwave data rain rates','Numeric','SDMPEMRR'], - 48'100-191':['Reserved','unknown','unknown'], - 49'192-254':['Reserved for Local Use','unknown','unknown'], - 50'192':['Scatterometer Estimated U Wind Component','m s-1','USCT'], - 51'193':['Scatterometer Estimated V Wind Component','m s-1','VSCT'], - 52'194':['Scatterometer Wind Quality','unknown','SWQI'], - 53'255':['Missing','unknown','unknown'], - 54} - 55table_4_2_3_2 = { - 56'0':['Clear Sky Probability','%','CSKPROB'], - 57'1':['Cloud Top Temperature','K','CTOPTMP'], - 58'2':['Cloud Top Pressure','Pa','CTOPRES'], - 59'3':['Cloud Type','See Table 4.218','CLDTYPE'], - 60'4':['Cloud Phase','See Table 4.218','CLDPHAS'], - 61'5':['Cloud Optical Depth','Numeric','CLDODEP'], - 62'6':['Cloud Particle Effective Radius','m','CLDPER'], - 63'7':['Cloud Liquid Water Path','kg m-2','CLDLWP'], - 64'8':['Cloud Ice Water Path','kg m-2','CLDIWP'], - 65'9':['Cloud Albedo','Numeric','CLDALB'], - 66'10':['Cloud Emissivity','Numeric','CLDEMISS'], - 67'11':['Effective Absorption Optical Depth Ratio','Numeric','EAODR'], - 68'12-29':['Reserved','unknown','unknown'], - 69'30':['Measurement cost','Numeric','MEACST'], - 70'41-191':['Reserved','unknown','unknown'], - 71'192-254':['Reserved for Local Use','unknown','unknown'], - 72'255':['Missing','unknown','unknown'], - 73} - 74table_4_2_3_3 = { - 75'0':['Probability of Encountering Marginal Visual Flight Rules Conditions','%','PBMVFRC'], - 76'1':['Probability of Encountering Low Instrument Flight Rules Conditions','%','PBLIFRC'], - 77'2':['Probability of Encountering Instrument Flight Rules Conditions','%','PBINFRC'], - 78'3-191':['Reserved','unknown','unknown'], - 79'192-254':['Reserved for Local Use','unknown','unknown'], - 80'255':['Missing','unknown','unknown'], - 81} - 82table_4_2_3_4 = { - 83'0':['Volcanic Ash Probability','%','VOLAPROB'], - 84'1':['Volcanic Ash Cloud Top Temperature','K','VOLACDTT'], - 85'2':['Volcanic Ash Cloud Top Pressure','Pa','VOLACDTP'], - 86'3':['Volcanic Ash Cloud Top Height','m','VOLACDTH'], - 87'4':['Volcanic Ash Cloud Emissity','Numeric','VOLACDEM'], - 88'5':['Volcanic Ash Effective Absorption Depth Ratio','Numeric','VOLAEADR'], - 89'6':['Volcanic Ash Cloud Optical Depth','Numeric','VOLACDOD'], - 90'7':['Volcanic Ash Column Density','kg m-2','VOLACDEN'], - 91'8':['Volcanic Ash Particle Effective Radius','m','VOLAPER'], - 92'9-191':['Reserved','unknown','unknown'], - 93'192-254':['Reserved for Local Use','unknown','unknown'], - 94'255':['Missing','unknown','unknown'], - 95} - 96table_4_2_3_5 = { - 97'0':['Interface Sea-Surface Temperature','K','ISSTMP'], - 98'1':['Skin Sea-Surface Temperature','K','SKSSTMP'], - 99'2':['Sub-Skin Sea-Surface Temperature','K','SSKSSTMP'], -100'3':['Foundation Sea-Surface Temperature','K','FDNSSTMP'], -101'4':['Estimated bias between Sea-Surface Temperature and Standard','K','EBSSTSTD'], -102'5':['Estimated bias Standard Deviation between Sea-Surface Temperature and Standard','K','EBSDSSTS'], -103'6-191':['Reserved','unknown','unknown'], -104'192-254':['Reserved for Local Use','unknown','unknown'], -105'255':['Missing','unknown','unknown'], -106} -107table_4_2_3_6 = { -108'0':['Global Solar Irradiance','W m-2','GSOLIRR'], -109'1':['Global Solar Exposure','J m-2','GSOLEXP'], -110'2':['Direct Solar Irradiance','W m-2','DIRSOLIR'], -111'3':['Direct Solar Exposure','J m-2','DIRSOLEX'], -112'4':['Diffuse Solar Irradiance','W m-2','DIFSOLIR'], -113'5':['Diffuse Solar Exposure','J m-2','DIFSOLEX'], -114'6-191':['Reserved','unknown','unknown'], -115'192-254':['Reserved for Local Use','unknown','unknown'], -116'255':['Missing','unknown','unknown'], -117} -118table_4_2_3_192 = { -119'0':['Simulated Brightness Temperature for GOES 12, Channel 2','K','SBT122'], -120'1':['Simulated Brightness Temperature for GOES 12, Channel 3','K','SBT123'], -121'2':['Simulated Brightness Temperature for GOES 12, Channel 4','K','SBT124'], -122'3':['Simulated Brightness Temperature for GOES 12, Channel 6','K','SBT126'], -123'4':['Simulated Brightness Counts for GOES 12, Channel 3','Byte','SBC123'], -124'5':['Simulated Brightness Counts for GOES 12, Channel 4','Byte','SBC124'], -125'6':['Simulated Brightness Temperature for GOES 11, Channel 2','K','SBT112'], -126'7':['Simulated Brightness Temperature for GOES 11, Channel 3','K','SBT113'], -127'8':['Simulated Brightness Temperature for GOES 11, Channel 4','K','SBT114'], -128'9':['Simulated Brightness Temperature for GOES 11, Channel 5','K','SBT115'], -129'10':['Simulated Brightness Temperature for AMSRE on Aqua, Channel 9','K','AMSRE9'], -130'11':['Simulated Brightness Temperature for AMSRE on Aqua, Channel 10','K','AMSRE10'], -131'12':['Simulated Brightness Temperature for AMSRE on Aqua, Channel 11','K','AMSRE11'], -132'13':['Simulated Brightness Temperature for AMSRE on Aqua, Channel 12','K','AMSRE12'], -133'14':['Simulated Reflectance Factor for ABI GOES-16, Band-1','unknown','SRFA161'], -134'15':['Simulated Reflectance Factor for ABI GOES-16, Band-2','unknown','SRFA162'], -135'16':['Simulated Reflectance Factor for ABI GOES-16, Band-3','unknown','SRFA163'], -136'17':['Simulated Reflectance Factor for ABI GOES-16, Band-4','unknown','SRFA164'], -137'18':['Simulated Reflectance Factor for ABI GOES-16, Band-5','unknown','SRFA165'], -138'19':['Simulated Reflectance Factor for ABI GOES-16, Band-6','unknown','SRFA166'], -139'20':['Simulated Brightness Temperature for ABI GOES-16, Band-7','K','SBTA167'], -140'21':['Simulated Brightness Temperature for ABI GOES-16, Band-8','K','SBTA168'], -141'22':['Simulated Brightness Temperature for ABI GOES-16, Band-9','K','SBTA169'], -142'23':['Simulated Brightness Temperature for ABI GOES-16, Band-10','K','SBTA1610'], -143'24':['Simulated Brightness Temperature for ABI GOES-16, Band-11','K','SBTA1611'], -144'25':['Simulated Brightness Temperature for ABI GOES-16, Band-12','K','SBTA1612'], -145'26':['Simulated Brightness Temperature for ABI GOES-16, Band-13','K','SBTA1613'], -146'27':['Simulated Brightness Temperature for ABI GOES-16, Band-14','K','SBTA1614'], -147'28':['Simulated Brightness Temperature for ABI GOES-16, Band-15','K','SBTA1615'], -148'29':['Simulated Brightness Temperature for ABI GOES-16, Band-16','K','SBTA1616'], -149'30':['Simulated Reflectance Factor for ABI GOES-17, Band-1','unknown','SRFA171'], -150'31':['Simulated Reflectance Factor for ABI GOES-17, Band-2','unknown','SRFA172'], -151'32':['Simulated Reflectance Factor for ABI GOES-17, Band-3','unknown','SRFA173'], -152'33':['Simulated Reflectance Factor for ABI GOES-17, Band-4','unknown','SRFA174'], -153'34':['Simulated Reflectance Factor for ABI GOES-17, Band-5','unknown','SRFA175'], -154'35':['Simulated Reflectance Factor for ABI GOES-17, Band-6','unknown','SRFA176'], -155'36':['Simulated Brightness Temperature for ABI GOES-17, Band-7','K','SBTA177'], -156'37':['Simulated Brightness Temperature for ABI GOES-17, Band-8','K','SBTA178'], -157'38':['Simulated Brightness Temperature for ABI GOES-17, Band-9','K','SBTA179'], -158'39':['Simulated Brightness Temperature for ABI GOES-17, Band-10','K','SBTA1710'], -159'40':['Simulated Brightness Temperature for ABI GOES-17, Band-11','K','SBTA1711'], -160'41':['Simulated Brightness Temperature for ABI GOES-17, Band-12','K','SBTA1712'], -161'42':['Simulated Brightness Temperature for ABI GOES-17, Band-13','K','SBTA1713'], -162'43':['Simulated Brightness Temperature for ABI GOES-17, Band-14','K','SBTA1714'], -163'44':['Simulated Brightness Temperature for ABI GOES-17, Band-15','K','SBTA1715'], -164'45':['Simulated Brightness Temperature for ABI GOES-17, Band-16','K','SBTA1716'], -165'46':['Simulated Reflectance Factor for nadir ABI GOES-R, Band-1','unknown','SRFAGR1'], -166'47':['Simulated Reflectance Factor for nadir ABI GOES-R, Band-2','unknown','SRFAGR2'], -167'48':['Simulated Reflectance Factor for nadir ABI GOES-R, Band-3','unknown','SRFAGR3'], -168'49':['Simulated Reflectance Factor for nadir ABI GOES-R, Band-4','unknown','SRFAGR4'], -169'50':['Simulated Reflectance Factor for nadir ABI GOES-R, Band-5','unknown','SRFAGR5'], -170'51':['Simulated Reflectance Factor for nadir ABI GOES-R, Band-6','unknown','SRFAGR6'], -171'52':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-7','unknown','SBTAGR7'], -172'53':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-8','unknown','SBTAGR8'], -173'54':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-9','unknown','SBTAGR9'], -174'55':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-10','unknown','SBTAGR10'], -175'56':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-11','unknown','SBTAGR11'], -176'57':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-12','unknown','SBTAGR12'], -177'58':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-13','unknown','SBTAGR13'], -178'59':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-14','unknown','SBTAGR14'], -179'60':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-15','unknown','SBTAGR15'], -180'61':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-16','unknown','SBTAGR16'], -181'62':['Simulated Brightness Temperature for SSMIS-F17, Channel 15','K','SSMS1715'], -182'63':['Simulated Brightness Temperature for SSMIS-F17, Channel 16','K','SSMS1716'], -183'64':['Simulated Brightness Temperature for SSMIS-F17, Channel 17','K','SSMS1717'], -184'65':['Simulated Brightness Temperature for SSMIS-F17, Channel 18','K','SSMS1718'], -185'66':['Simulated Brightness Temperature for Himawari-8, Band-7','K','SBTAHI7'], -186'67':['Simulated Brightness Temperature for Himawari-8, Band-8','K','SBTAHI8'], -187'68':['Simulated Brightness Temperature for Himawari-8, Band-9','K','SBTAHI9'], -188'69':['Simulated Brightness Temperature for Himawari-8, Band-10','K','SBTAHI10'], -189'70':['Simulated Brightness Temperature for Himawari-8, Band-11','K','SBTAHI11'], -190'71':['Simulated Brightness Temperature for Himawari-8, Band-12','K','SBTAHI12'], -191'72':['Simulated Brightness Temperature for Himawari-8, Band-13','K','SBTAHI13'], -192'73':['Simulated Brightness Temperature for Himawari-8, Band-14','K','SBTAHI14'], -193'74':['Simulated Brightness Temperature for Himawari-8, Band-15','K','SBTAHI15'], -194'75':['Simulated Brightness Temperature for Himawari-8, Band-16','K','SBTAHI16'], -195'76':['Simulated Brightness Temperature for ABI GOES-18, Band-7','K','SBTA187'], -196'77':['Simulated Brightness Temperature for ABI GOES-18, Band-8','K','SBTA188'], -197'78':['Simulated Brightness Temperature for ABI GOES-18, Band-9','K','SBTA189'], -198'79':['Simulated Brightness Temperature for ABI GOES-18, Band-10','K','SBTA1810'], -199'80':['Simulated Brightness Temperature for ABI GOES-18, Band-11','K','SBTA1811'], -200'81':['Simulated Brightness Temperature for ABI GOES-18, Band-12','K','SBTA1812'], -201'82':['Simulated Brightness Temperature for ABI GOES-18, Band-13','K','SBTA1813'], -202'83':['Simulated Brightness Temperature for ABI GOES-18, Band-14','K','SBTA1814'], -203'84':['Simulated Brightness Temperature for ABI GOES-18, Band-15','K','SBTA1815'], -204'85':['Simulated Brightness Temperature for ABI GOES-18, Band-16','K','SBTA1816'], -205'86-191':['Reserved','unknown','unknown'], -206'192-254':['Reserved for Local Use','unknown','unknown'], -207'255':['Missing','unknown','unknown'], -208} + 45'30':['Reflectance in 0.4 Micron Channel','%','RFL04'], + 46'31-97':['Reserved','unknown','unknown'], + 47'98':['Correlation coefficient between MPE rain rates for the co-located IR data and the microwave data rain rates','Numeric','CCMPEMRR'], + 48'99':['Standard deviation between MPE rain rates for the co-located IR data and the microwave data rain rates','Numeric','SDMPEMRR'], + 49'100-191':['Reserved','unknown','unknown'], + 50'192-254':['Reserved for Local Use','unknown','unknown'], + 51'192':['Scatterometer Estimated U Wind Component','m s-1','USCT'], + 52'193':['Scatterometer Estimated V Wind Component','m s-1','VSCT'], + 53'194':['Scatterometer Wind Quality','unknown','SWQI'], + 54'255':['Missing','unknown','unknown'], + 55} + 56table_4_2_3_2 = { + 57'0':['Clear Sky Probability','%','CSKPROB'], + 58'1':['Cloud Top Temperature','K','CTOPTMP'], + 59'2':['Cloud Top Pressure','Pa','CTOPRES'], + 60'3':['Cloud Type','See Table 4.218','CLDTYPE'], + 61'4':['Cloud Phase','See Table 4.218','CLDPHAS'], + 62'5':['Cloud Optical Depth','Numeric','CLDODEP'], + 63'6':['Cloud Particle Effective Radius','m','CLDPER'], + 64'7':['Cloud Liquid Water Path','kg m-2','CLDLWP'], + 65'8':['Cloud Ice Water Path','kg m-2','CLDIWP'], + 66'9':['Cloud Albedo','Numeric','CLDALB'], + 67'10':['Cloud Emissivity','Numeric','CLDEMISS'], + 68'11':['Effective Absorption Optical Depth Ratio','Numeric','EAODR'], + 69'12-29':['Reserved','unknown','unknown'], + 70'30':['Measurement cost','Numeric','MEACST'], + 71'41-191':['Reserved','unknown','unknown'], + 72'192-254':['Reserved for Local Use','unknown','unknown'], + 73'255':['Missing','unknown','unknown'], + 74} + 75table_4_2_3_3 = { + 76'0':['Probability of Encountering Marginal Visual Flight Rules Conditions','%','PBMVFRC'], + 77'1':['Probability of Encountering Low Instrument Flight Rules Conditions','%','PBLIFRC'], + 78'2':['Probability of Encountering Instrument Flight Rules Conditions','%','PBINFRC'], + 79'3-191':['Reserved','unknown','unknown'], + 80'192-254':['Reserved for Local Use','unknown','unknown'], + 81'255':['Missing','unknown','unknown'], + 82} + 83table_4_2_3_4 = { + 84'0':['Volcanic Ash Probability','%','VOLAPROB'], + 85'1':['Volcanic Ash Cloud Top Temperature','K','VOLACDTT'], + 86'2':['Volcanic Ash Cloud Top Pressure','Pa','VOLACDTP'], + 87'3':['Volcanic Ash Cloud Top Height','m','VOLACDTH'], + 88'4':['Volcanic Ash Cloud Emissity','Numeric','VOLACDEM'], + 89'5':['Volcanic Ash Effective Absorption Depth Ratio','Numeric','VOLAEADR'], + 90'6':['Volcanic Ash Cloud Optical Depth','Numeric','VOLACDOD'], + 91'7':['Volcanic Ash Column Density','kg m-2','VOLACDEN'], + 92'8':['Volcanic Ash Particle Effective Radius','m','VOLAPER'], + 93'9-191':['Reserved','unknown','unknown'], + 94'192-254':['Reserved for Local Use','unknown','unknown'], + 95'255':['Missing','unknown','unknown'], + 96} + 97table_4_2_3_5 = { + 98'0':['Interface Sea-Surface Temperature','K','ISSTMP'], + 99'1':['Skin Sea-Surface Temperature','K','SKSSTMP'], +100'2':['Sub-Skin Sea-Surface Temperature','K','SSKSSTMP'], +101'3':['Foundation Sea-Surface Temperature','K','FDNSSTMP'], +102'4':['Estimated bias between Sea-Surface Temperature and Standard','K','EBSSTSTD'], +103'5':['Estimated bias Standard Deviation between Sea-Surface Temperature and Standard','K','EBSDSSTS'], +104'6-191':['Reserved','unknown','unknown'], +105'192-254':['Reserved for Local Use','unknown','unknown'], +106'255':['Missing','unknown','unknown'], +107} +108table_4_2_3_6 = { +109'0':['Global Solar Irradiance','W m-2','GSOLIRR'], +110'1':['Global Solar Exposure','J m-2','GSOLEXP'], +111'2':['Direct Solar Irradiance','W m-2','DIRSOLIR'], +112'3':['Direct Solar Exposure','J m-2','DIRSOLEX'], +113'4':['Diffuse Solar Irradiance','W m-2','DIFSOLIR'], +114'5':['Diffuse Solar Exposure','J m-2','DIFSOLEX'], +115'6-191':['Reserved','unknown','unknown'], +116'192-254':['Reserved for Local Use','unknown','unknown'], +117'255':['Missing','unknown','unknown'], +118} +119table_4_2_3_192 = { +120'0':['Simulated Brightness Temperature for GOES 12, Channel 2','K','SBT122'], +121'1':['Simulated Brightness Temperature for GOES 12, Channel 3','K','SBT123'], +122'2':['Simulated Brightness Temperature for GOES 12, Channel 4','K','SBT124'], +123'3':['Simulated Brightness Temperature for GOES 12, Channel 6','K','SBT126'], +124'4':['Simulated Brightness Counts for GOES 12, Channel 3','Byte','SBC123'], +125'5':['Simulated Brightness Counts for GOES 12, Channel 4','Byte','SBC124'], +126'6':['Simulated Brightness Temperature for GOES 11, Channel 2','K','SBT112'], +127'7':['Simulated Brightness Temperature for GOES 11, Channel 3','K','SBT113'], +128'8':['Simulated Brightness Temperature for GOES 11, Channel 4','K','SBT114'], +129'9':['Simulated Brightness Temperature for GOES 11, Channel 5','K','SBT115'], +130'10':['Simulated Brightness Temperature for AMSRE on Aqua, Channel 9','K','AMSRE9'], +131'11':['Simulated Brightness Temperature for AMSRE on Aqua, Channel 10','K','AMSRE10'], +132'12':['Simulated Brightness Temperature for AMSRE on Aqua, Channel 11','K','AMSRE11'], +133'13':['Simulated Brightness Temperature for AMSRE on Aqua, Channel 12','K','AMSRE12'], +134'14':['Simulated Reflectance Factor for ABI GOES-16, Band-1','unknown','SRFA161'], +135'15':['Simulated Reflectance Factor for ABI GOES-16, Band-2','unknown','SRFA162'], +136'16':['Simulated Reflectance Factor for ABI GOES-16, Band-3','unknown','SRFA163'], +137'17':['Simulated Reflectance Factor for ABI GOES-16, Band-4','unknown','SRFA164'], +138'18':['Simulated Reflectance Factor for ABI GOES-16, Band-5','unknown','SRFA165'], +139'19':['Simulated Reflectance Factor for ABI GOES-16, Band-6','unknown','SRFA166'], +140'20':['Simulated Brightness Temperature for ABI GOES-16, Band-7','K','SBTA167'], +141'21':['Simulated Brightness Temperature for ABI GOES-16, Band-8','K','SBTA168'], +142'22':['Simulated Brightness Temperature for ABI GOES-16, Band-9','K','SBTA169'], +143'23':['Simulated Brightness Temperature for ABI GOES-16, Band-10','K','SBTA1610'], +144'24':['Simulated Brightness Temperature for ABI GOES-16, Band-11','K','SBTA1611'], +145'25':['Simulated Brightness Temperature for ABI GOES-16, Band-12','K','SBTA1612'], +146'26':['Simulated Brightness Temperature for ABI GOES-16, Band-13','K','SBTA1613'], +147'27':['Simulated Brightness Temperature for ABI GOES-16, Band-14','K','SBTA1614'], +148'28':['Simulated Brightness Temperature for ABI GOES-16, Band-15','K','SBTA1615'], +149'29':['Simulated Brightness Temperature for ABI GOES-16, Band-16','K','SBTA1616'], +150'30':['Simulated Reflectance Factor for ABI GOES-17, Band-1','unknown','SRFA171'], +151'31':['Simulated Reflectance Factor for ABI GOES-17, Band-2','unknown','SRFA172'], +152'32':['Simulated Reflectance Factor for ABI GOES-17, Band-3','unknown','SRFA173'], +153'33':['Simulated Reflectance Factor for ABI GOES-17, Band-4','unknown','SRFA174'], +154'34':['Simulated Reflectance Factor for ABI GOES-17, Band-5','unknown','SRFA175'], +155'35':['Simulated Reflectance Factor for ABI GOES-17, Band-6','unknown','SRFA176'], +156'36':['Simulated Brightness Temperature for ABI GOES-17, Band-7','K','SBTA177'], +157'37':['Simulated Brightness Temperature for ABI GOES-17, Band-8','K','SBTA178'], +158'38':['Simulated Brightness Temperature for ABI GOES-17, Band-9','K','SBTA179'], +159'39':['Simulated Brightness Temperature for ABI GOES-17, Band-10','K','SBTA1710'], +160'40':['Simulated Brightness Temperature for ABI GOES-17, Band-11','K','SBTA1711'], +161'41':['Simulated Brightness Temperature for ABI GOES-17, Band-12','K','SBTA1712'], +162'42':['Simulated Brightness Temperature for ABI GOES-17, Band-13','K','SBTA1713'], +163'43':['Simulated Brightness Temperature for ABI GOES-17, Band-14','K','SBTA1714'], +164'44':['Simulated Brightness Temperature for ABI GOES-17, Band-15','K','SBTA1715'], +165'45':['Simulated Brightness Temperature for ABI GOES-17, Band-16','K','SBTA1716'], +166'46':['Simulated Reflectance Factor for nadir ABI GOES-R, Band-1','unknown','SRFAGR1'], +167'47':['Simulated Reflectance Factor for nadir ABI GOES-R, Band-2','unknown','SRFAGR2'], +168'48':['Simulated Reflectance Factor for nadir ABI GOES-R, Band-3','unknown','SRFAGR3'], +169'49':['Simulated Reflectance Factor for nadir ABI GOES-R, Band-4','unknown','SRFAGR4'], +170'50':['Simulated Reflectance Factor for nadir ABI GOES-R, Band-5','unknown','SRFAGR5'], +171'51':['Simulated Reflectance Factor for nadir ABI GOES-R, Band-6','unknown','SRFAGR6'], +172'52':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-7','unknown','SBTAGR7'], +173'53':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-8','unknown','SBTAGR8'], +174'54':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-9','unknown','SBTAGR9'], +175'55':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-10','unknown','SBTAGR10'], +176'56':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-11','unknown','SBTAGR11'], +177'57':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-12','unknown','SBTAGR12'], +178'58':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-13','unknown','SBTAGR13'], +179'59':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-14','unknown','SBTAGR14'], +180'60':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-15','unknown','SBTAGR15'], +181'61':['Simulated Brightness Temperature for nadir ABI GOES-R, Band-16','unknown','SBTAGR16'], +182'62':['Simulated Brightness Temperature for SSMIS-F17, Channel 15','K','SSMS1715'], +183'63':['Simulated Brightness Temperature for SSMIS-F17, Channel 16','K','SSMS1716'], +184'64':['Simulated Brightness Temperature for SSMIS-F17, Channel 17','K','SSMS1717'], +185'65':['Simulated Brightness Temperature for SSMIS-F17, Channel 18','K','SSMS1718'], +186'66':['Simulated Brightness Temperature for Himawari-8, Band-7','K','SBTAHI7'], +187'67':['Simulated Brightness Temperature for Himawari-8, Band-8','K','SBTAHI8'], +188'68':['Simulated Brightness Temperature for Himawari-8, Band-9','K','SBTAHI9'], +189'69':['Simulated Brightness Temperature for Himawari-8, Band-10','K','SBTAHI10'], +190'70':['Simulated Brightness Temperature for Himawari-8, Band-11','K','SBTAHI11'], +191'71':['Simulated Brightness Temperature for Himawari-8, Band-12','K','SBTAHI12'], +192'72':['Simulated Brightness Temperature for Himawari-8, Band-13','K','SBTAHI13'], +193'73':['Simulated Brightness Temperature for Himawari-8, Band-14','K','SBTAHI14'], +194'74':['Simulated Brightness Temperature for Himawari-8, Band-15','K','SBTAHI15'], +195'75':['Simulated Brightness Temperature for Himawari-8, Band-16','K','SBTAHI16'], +196'76':['Simulated Brightness Temperature for ABI GOES-18, Band-7','K','SBTA187'], +197'77':['Simulated Brightness Temperature for ABI GOES-18, Band-8','K','SBTA188'], +198'78':['Simulated Brightness Temperature for ABI GOES-18, Band-9','K','SBTA189'], +199'79':['Simulated Brightness Temperature for ABI GOES-18, Band-10','K','SBTA1810'], +200'80':['Simulated Brightness Temperature for ABI GOES-18, Band-11','K','SBTA1811'], +201'81':['Simulated Brightness Temperature for ABI GOES-18, Band-12','K','SBTA1812'], +202'82':['Simulated Brightness Temperature for ABI GOES-18, Band-13','K','SBTA1813'], +203'83':['Simulated Brightness Temperature for ABI GOES-18, Band-14','K','SBTA1814'], +204'84':['Simulated Brightness Temperature for ABI GOES-18, Band-15','K','SBTA1815'], +205'85':['Simulated Brightness Temperature for ABI GOES-18, Band-16','K','SBTA1816'], +206'86-191':['Reserved','unknown','unknown'], +207'192-254':['Reserved for Local Use','unknown','unknown'], +208'255':['Missing','unknown','unknown'], +209} @@ -304,7 +305,7 @@

    table_4_2_3_1 = - {'0': ['Estimated Precipitation', 'kg m-2', 'ESTP'], '1': ['Instantaneous Rain Rate', 'kg m-2 s-1', 'IRRATE'], '2': ['Cloud Top Height', 'm', 'CTOPH'], '3': ['Cloud Top Height Quality Indicator', 'Code table 4.219', 'CTOPHQI'], '4': ['Estimated u-Component of Wind', 'm s-1', 'ESTUGRD'], '5': ['Estimated v-Component of Wind', 'm s-1', 'ESTVGRD'], '6': ['Number Of Pixels Used', 'Numeric', 'NPIXU'], '7': ['Solar Zenith Angle', '°', 'SOLZA'], '8': ['Relative Azimuth Angle', '°', 'RAZA'], '9': ['Reflectance in 0.6 Micron Channel', '%', 'RFL06'], '10': ['Reflectance in 0.8 Micron Channel', '%', 'RFL08'], '11': ['Reflectance in 1.6 Micron Channel', '%', 'RFL16'], '12': ['Reflectance in 3.9 Micron Channel', '%', 'RFL39'], '13': ['Atmospheric Divergence', 's-1', 'ATMDIV'], '14': ['Cloudy Brightness Temperature', 'K', 'CBTMP'], '15': ['Clear Sky Brightness Temperature', 'K', 'CSBTMP'], '16': ['Cloudy Radiance (with respect to wave number)', 'W m-1 sr-1', 'CLDRAD'], '17': ['Clear Sky Radiance (with respect to wave number)', 'W m-1 sr-1', 'CSKYRAD'], '18': ['Reserved', 'unknown', 'unknown'], '19': ['Wind Speed', 'm s-1', 'WINDS'], '20': ['Aerosol Optical Thickness at 0.635 µm', 'unknown', 'AOT06'], '21': ['Aerosol Optical Thickness at 0.810 µm', 'unknown', 'AOT08'], '22': ['Aerosol Optical Thickness at 1.640 µm', 'unknown', 'AOT16'], '23': ['Angstrom Coefficient', 'unknown', 'ANGCOE'], '24-26': ['Reserved', 'unknown', 'unknown'], '27': ['Bidirectional Reflecance Factor', 'Numeric', 'BRFLF'], '28': ['Brightness Temperature', 'K', 'SPBRT'], '29': ['Scaled Radiance', 'Numeric', 'SCRAD'], '30-97': ['Reserved', 'unknown', 'unknown'], '98': ['Correlation coefficient between MPE rain rates for the co-located IR data and the microwave data rain rates', 'Numeric', 'CCMPEMRR'], '99': ['Standard deviation between MPE rain rates for the co-located IR data and the microwave data rain rates', 'Numeric', 'SDMPEMRR'], '100-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Scatterometer Estimated U Wind Component', 'm s-1', 'USCT'], '193': ['Scatterometer Estimated V Wind Component', 'm s-1', 'VSCT'], '194': ['Scatterometer Wind Quality', 'unknown', 'SWQI'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Estimated Precipitation', 'kg m-2', 'ESTP'], '1': ['Instantaneous Rain Rate', 'kg m-2 s-1', 'IRRATE'], '2': ['Cloud Top Height', 'm', 'CTOPH'], '3': ['Cloud Top Height Quality Indicator', 'Code table 4.219', 'CTOPHQI'], '4': ['Estimated u-Component of Wind', 'm s-1', 'ESTUGRD'], '5': ['Estimated v-Component of Wind', 'm s-1', 'ESTVGRD'], '6': ['Number Of Pixels Used', 'Numeric', 'NPIXU'], '7': ['Solar Zenith Angle', '°', 'SOLZA'], '8': ['Relative Azimuth Angle', '°', 'RAZA'], '9': ['Reflectance in 0.6 Micron Channel', '%', 'RFL06'], '10': ['Reflectance in 0.8 Micron Channel', '%', 'RFL08'], '11': ['Reflectance in 1.6 Micron Channel', '%', 'RFL16'], '12': ['Reflectance in 3.9 Micron Channel', '%', 'RFL39'], '13': ['Atmospheric Divergence', 's-1', 'ATMDIV'], '14': ['Cloudy Brightness Temperature', 'K', 'CBTMP'], '15': ['Clear Sky Brightness Temperature', 'K', 'CSBTMP'], '16': ['Cloudy Radiance (with respect to wave number)', 'W m-1 sr-1', 'CLDRAD'], '17': ['Clear Sky Radiance (with respect to wave number)', 'W m-1 sr-1', 'CSKYRAD'], '18': ['Reserved', 'unknown', 'unknown'], '19': ['Wind Speed', 'm s-1', 'WINDS'], '20': ['Aerosol Optical Thickness at 0.635 µm', 'unknown', 'AOT06'], '21': ['Aerosol Optical Thickness at 0.810 µm', 'unknown', 'AOT08'], '22': ['Aerosol Optical Thickness at 1.640 µm', 'unknown', 'AOT16'], '23': ['Angstrom Coefficient', 'unknown', 'ANGCOE'], '24-26': ['Reserved', 'unknown', 'unknown'], '27': ['Bidirectional Reflecance Factor', 'Numeric', 'BRFLF'], '28': ['Brightness Temperature', 'K', 'SPBRT'], '29': ['Scaled Radiance', 'Numeric', 'SCRAD'], '30': ['Reflectance in 0.4 Micron Channel', '%', 'RFL04'], '31-97': ['Reserved', 'unknown', 'unknown'], '98': ['Correlation coefficient between MPE rain rates for the co-located IR data and the microwave data rain rates', 'Numeric', 'CCMPEMRR'], '99': ['Standard deviation between MPE rain rates for the co-located IR data and the microwave data rain rates', 'Numeric', 'SDMPEMRR'], '100-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Scatterometer Estimated U Wind Component', 'm s-1', 'USCT'], '193': ['Scatterometer Estimated V Wind Component', 'm s-1', 'VSCT'], '194': ['Scatterometer Wind Quality', 'unknown', 'SWQI'], '255': ['Missing', 'unknown', 'unknown']}
    diff --git a/docs/grib2io/tables/section4_discipline4.html b/docs/grib2io/tables/section4_discipline4.html index e11f897..4eec85e 100644 --- a/docs/grib2io/tables/section4_discipline4.html +++ b/docs/grib2io/tables/section4_discipline4.html @@ -106,7 +106,7 @@

    23'1':['Electron Density','m-3','ELCDEN'], 24'2':['Proton Density','m-3','PROTDEN'], 25'3':['Ion Density','m-3','IONDEN'], - 26'4':['Vertical Electron Content','m-2','VTEC'], + 26'4':['Vertical Total Electron Content','TECU','VTEC'], 27'5':['HF Absorption Frequency','Hz','ABSFRQ'], 28'6':['HF Absorption','dB','ABSRB'], 29'7':['Spread F','m','SPRDF'], @@ -167,10 +167,10 @@

    84'255':['Missing','unknown','unknown'], 85} 86table_4_2_4_7 = { - 87'0':['Limb Intensity','m-2 s-1','LMBINT'], - 88'1':['Disk Intensity','m-2 s-1','DSKINT'], - 89'2':['Disk Intensity Day','m-2 s-1','DSKDAY'], - 90'3':['Disk Intensity Night','m-2 s-1','DSKNGT'], + 87'0':['Limb Intensity','J m-2 s-1','LMBINT'], + 88'1':['Disk Intensity','J m-2 s-1','DSKINT'], + 89'2':['Disk Intensity Day','J m-2 s-1','DSKDAY'], + 90'3':['Disk Intensity Night','J m-2 s-1','DSKNGT'], 91'4-191':['Reserved','unknown','unknown'], 92'192-254':['Reserved for Local Use','unknown','unknown'], 93'255':['Missing','unknown','unknown'], @@ -184,18 +184,19 @@

    101'5':['White Light Coronagraph Radiance','W sr-1 m-2','WHTCOR'], 102'6':['Heliospheric Radiance','W sr-1 m-2','HELCOR'], 103'7':['Thematic Mask','Numeric','MASK'], -104'8-191':['Reserved','unknown','unknown'], -105'192-254':['Reserved for Local Use','unknown','unknown'], -106'255':['Missing','unknown','unknown'], -107} -108table_4_2_4_9 = { -109'0':['Pedersen Conductivity','S m-1','SIGPED'], -110'1':['Hall Conductivity','S m-1','SIGHAL'], -111'2':['Parallel Conductivity','S m-1','SIGPAR'], -112'3-191':['Reserved','unknown','unknown'], -113'192-254':['Reserved for Local Use','unknown','unknown'], -114'255':['Missing','unknown','unknown'], -115} +104'8':['Solar Induced Chlorophyll Fluorscence','W sr-1 m-2','SICFL'], +105'9-191':['Reserved','unknown','unknown'], +106'192-254':['Reserved for Local Use','unknown','unknown'], +107'255':['Missing','unknown','unknown'], +108} +109table_4_2_4_9 = { +110'0':['Pedersen Conductivity','S m-1','SIGPED'], +111'1':['Hall Conductivity','S m-1','SIGHAL'], +112'2':['Parallel Conductivity','S m-1','SIGPAR'], +113'3-191':['Reserved','unknown','unknown'], +114'192-254':['Reserved for Local Use','unknown','unknown'], +115'255':['Missing','unknown','unknown'], +116} @@ -230,7 +231,7 @@

    table_4_2_4_2 = - {'0': ['Particle Number Density', 'm-3', 'PLSMDEN'], '1': ['Electron Density', 'm-3', 'ELCDEN'], '2': ['Proton Density', 'm-3', 'PROTDEN'], '3': ['Ion Density', 'm-3', 'IONDEN'], '4': ['Vertical Electron Content', 'm-2', 'VTEC'], '5': ['HF Absorption Frequency', 'Hz', 'ABSFRQ'], '6': ['HF Absorption', 'dB', 'ABSRB'], '7': ['Spread F', 'm', 'SPRDF'], '8': ['hF', 'm', 'HPRIMF'], '9': ['Critical Frequency', 'Hz', 'CRTFRQ'], '10': ['Maximal Usable Frequency (MUF)', 'Hz', 'MAXUFZ'], '11': ['Peak Height (hm)', 'm', 'PEAKH'], '12': ['Peak Density', 'm-3', 'PEAKDEN'], '13': ['Equivalent Slab Thickness (tau)', 'km', 'EQSLABT'], '14-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Particle Number Density', 'm-3', 'PLSMDEN'], '1': ['Electron Density', 'm-3', 'ELCDEN'], '2': ['Proton Density', 'm-3', 'PROTDEN'], '3': ['Ion Density', 'm-3', 'IONDEN'], '4': ['Vertical Total Electron Content', 'TECU', 'VTEC'], '5': ['HF Absorption Frequency', 'Hz', 'ABSFRQ'], '6': ['HF Absorption', 'dB', 'ABSRB'], '7': ['Spread F', 'm', 'SPRDF'], '8': ['hF', 'm', 'HPRIMF'], '9': ['Critical Frequency', 'Hz', 'CRTFRQ'], '10': ['Maximal Usable Frequency (MUF)', 'Hz', 'MAXUFZ'], '11': ['Peak Height (hm)', 'm', 'PEAKH'], '12': ['Peak Density', 'm-3', 'PEAKDEN'], '13': ['Equivalent Slab Thickness (tau)', 'km', 'EQSLABT'], '14-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -295,7 +296,7 @@

    table_4_2_4_7 = - {'0': ['Limb Intensity', 'm-2 s-1', 'LMBINT'], '1': ['Disk Intensity', 'm-2 s-1', 'DSKINT'], '2': ['Disk Intensity Day', 'm-2 s-1', 'DSKDAY'], '3': ['Disk Intensity Night', 'm-2 s-1', 'DSKNGT'], '4-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['Limb Intensity', 'J m-2 s-1', 'LMBINT'], '1': ['Disk Intensity', 'J m-2 s-1', 'DSKINT'], '2': ['Disk Intensity Day', 'J m-2 s-1', 'DSKDAY'], '3': ['Disk Intensity Night', 'J m-2 s-1', 'DSKNGT'], '4-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}
    @@ -308,7 +309,7 @@

    table_4_2_4_8 = - {'0': ['X-Ray Radiance', 'W sr-1 m-2', 'XRAYRAD'], '1': ['EUV Radiance', 'W sr-1 m-2', 'EUVRAD'], '2': ['H-Alpha Radiance', 'W sr-1 m-2', 'HARAD'], '3': ['White Light Radiance', 'W sr-1 m-2', 'WHTRAD'], '4': ['CaII-K Radiance', 'W sr-1 m-2', 'CAIIRAD'], '5': ['White Light Coronagraph Radiance', 'W sr-1 m-2', 'WHTCOR'], '6': ['Heliospheric Radiance', 'W sr-1 m-2', 'HELCOR'], '7': ['Thematic Mask', 'Numeric', 'MASK'], '8-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']} + {'0': ['X-Ray Radiance', 'W sr-1 m-2', 'XRAYRAD'], '1': ['EUV Radiance', 'W sr-1 m-2', 'EUVRAD'], '2': ['H-Alpha Radiance', 'W sr-1 m-2', 'HARAD'], '3': ['White Light Radiance', 'W sr-1 m-2', 'WHTRAD'], '4': ['CaII-K Radiance', 'W sr-1 m-2', 'CAIIRAD'], '5': ['White Light Coronagraph Radiance', 'W sr-1 m-2', 'WHTCOR'], '6': ['Heliospheric Radiance', 'W sr-1 m-2', 'HELCOR'], '7': ['Thematic Mask', 'Numeric', 'MASK'], '8': ['Solar Induced Chlorophyll Fluorscence', 'W sr-1 m-2', 'SICFL'], '9-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}
    diff --git a/docs/grib2io/templates.html b/docs/grib2io/templates.html index 2a7a79b..c561e2f 100644 --- a/docs/grib2io/templates.html +++ b/docs/grib2io/templates.html @@ -227,6 +227,12 @@

    API Documentation

    + +
  • + EarthShape +
      +
    +
  • EarthRadius @@ -293,6 +299,18 @@

    API Documentation

    +
  • +
  • + LatitudeCenterGridpoint +
      +
    + +
  • +
  • + LongitudeCenterGridpoint +
      +
    +
  • GridlengthXDirection @@ -632,6 +650,60 @@

    API Documentation

  • + +
  • + GridDefinitionTemplate32768 + + +
  • +
  • + GridDefinitionTemplate32769 + +
  • gdt_class_by_gdtn @@ -715,13 +787,13 @@

    API Documentation

  • - UnitOfTimeRange + UnitOfForecastTime
  • - ForecastTime + ValueOfForecastTime
    @@ -863,6 +935,18 @@

    API Documentation

    +
  • +
  • + ScaleFactorOfThresholdUpperLimit +
      +
    + +
  • +
  • + ScaledValueOfThresholdUpperLimit +
      +
    +
  • ThresholdLowerLimit @@ -1087,10 +1171,10 @@

    API Documentation

    minutesAfterDataCutoff
  • - unitOfTimeRange + unitOfForecastTime
  • - forecastTime + valueOfForecastTime
  • typeOfFirstFixedSurface @@ -1152,6 +1236,18 @@

    API Documentation

  • typeOfProbability
  • +
  • + scaleFactorOfThresholdLowerLimit +
  • +
  • + scaledValueOfThresholdLowerLimit +
  • +
  • + scaleFactorOfThresholdUpperLimit +
  • +
  • + scaledValueOfThresholdUpperLimit +
  • thresholdLowerLimit
  • @@ -1233,6 +1329,18 @@

    API Documentation

  • typeOfProbability
  • +
  • + scaleFactorOfThresholdLowerLimit +
  • +
  • + scaledValueOfThresholdLowerLimit +
  • +
  • + scaleFactorOfThresholdUpperLimit +
  • +
  • + scaledValueOfThresholdUpperLimit +
  • thresholdLowerLimit
  • @@ -2201,9 +2309,9 @@

    276 277class EarthParams: 278 def __get__(self, obj, objtype=None): - 279 if obj.gridDefinitionSection[4] in {50,51,52,1200}: + 279 if obj.section3[5] in {50,51,52,1200}: 280 return None - 281 return tables.earth_params[str(obj.section3[5])] + 281 return tables.get_table('earth_params')[str(obj.section3[5])] 282 def __set__(self, obj, value): 283 raise RuntimeError 284 @@ -2261,1559 +2369,1643 @@

    336 def __set__(self, obj, value): 337 obj.section3[5] = value 338 - 339class EarthRadius: + 339class EarthShape: 340 def __get__(self, obj, objtype=None): - 341 earthparams = obj._earthparams - 342 if earthparams['shape'] == 'spherical': - 343 if earthparams['radius'] is None: - 344 return obj.section3[7]/(10.**obj.section3[6]) - 345 else: - 346 return earthparams['radius'] - 347 if earthparams['shape'] == 'oblateSpheriod': - 348 if earthparams['radius'] is None and earthparams['major_axis'] is None and earthparams['minor_axis'] is None: - 349 return obj.section3[7]/(10.**obj.section3[6]) - 350 else: - 351 return earthparams['radius'] - 352 def __set__(self, obj, value): - 353 raise RuntimeError - 354 - 355class EarthMajorAxis: - 356 def __get__(self, obj, objtype=None): - 357 earthparams = obj._earthparams - 358 if earthparams['shape'] == 'spherical': - 359 return None - 360 if earthparams['shape'] == 'oblateSpheriod': - 361 if earthparams['radius'] is None and earthparams['major_axis'] is None and earthparams['minor_axis'] is None: - 362 return obj.section3[9]/(10.**obj.section3[8]) - 363 else: - 364 return earthparams['major_axis'] - 365 def __set__(self, obj, value): - 366 raise RuntimeError - 367 - 368class EarthMinorAxis: - 369 def __get__(self, obj, objtype=None): - 370 earthparams = obj._earthparams - 371 if earthparams['shape'] == 'spherical': - 372 return None - 373 if earthparams['shape'] == 'oblateSpheriod': - 374 if earthparams['radius'] is None and earthparams['major_axis'] is None and earthparams['minor_axis'] is None: - 375 return obj.section3[11]/(10.**section3[10]) - 376 else: - 377 return earthparams['minor_axis'] - 378 def __set__(self, obj, value): - 379 raise RuntimeError - 380 - 381class Nx: - 382 def __get__(self, obj, objtype=None): - 383 return obj.section3[12] - 384 def __set__(self, obj, value): - 385 obj.section3[12] = value - 386 obj.section3[1] = value * obj.section3[13] - 387 - 388class Ny: - 389 def __get__(self, obj, objtype=None): - 390 return obj.section3[13] - 391 def __set__(self, obj, value): - 392 obj.section3[13] = value - 393 obj.section3[1] = value * obj.section3[12] - 394 - 395class ScanModeFlags: - 396 _key = {0:18, 1:18, 10:15, 20:17, 30:17, 31:17, 40:18, 41:18, 90:16, 110:15, 203:18, 204:18, 205:18, 32768:18, 32769:18} - 397 def __get__(self, obj, objtype=None): - 398 if obj.gdtn == 50: - 399 return [None, None, None, None] - 400 else: - 401 return utils.int2bin(obj.section3[self._key[obj.gdtn]+5],output=list)[0:8] - 402 def __set__(self, obj, value): - 403 obj.section3[self._key[obj.gdtn]+5] = value - 404 - 405class ResolutionAndComponentFlags: - 406 _key = {0:13, 1:13, 10:11, 20:11, 30:11, 31:11, 40:13, 41:13, 90:11, 110:11, 203:13, 204:13, 205:13, 32768:13, 32769:13} - 407 def __get__(self, obj, objtype=None): - 408 if obj.gdtn == 50: - 409 return [None for i in range(8)] - 410 else: - 411 return utils.int2bin(obj.section3[self._key[obj.gdtn]+5],output=list) - 412 def __set__(self, obj, value): - 413 obj.section3[self._key[obj.gdtn]+5] = value - 414 - 415class LatitudeFirstGridpoint: - 416 _key = {0:11, 1:11, 10:9, 20:9, 30:9, 31:9, 40:11, 41:11, 110:9, 203:11, 204:11, 205:11, 32768:11, 32769:11} - 417 def __get__(self, obj, objtype=None): - 418 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor - 419 def __set__(self, obj, value): - 420 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) - 421 - 422class LongitudeFirstGridpoint: - 423 _key = {0:12, 1:12, 10:10, 20:10, 30:10, 31:10, 40:12, 41:12, 110:10, 203:12, 204:12, 205:12, 32768:12, 32769:12} - 424 def __get__(self, obj, objtype=None): - 425 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor - 426 def __set__(self, obj, value): - 427 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) - 428 - 429class LatitudeLastGridpoint: - 430 _key = {0:14, 1:14, 10:13, 40:14, 41:14, 203:14, 204:14, 205:14, 32768:14, 32769:14} - 431 def __get__(self, obj, objtype=None): - 432 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor - 433 def __set__(self, obj, value): - 434 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) - 435 - 436class LongitudeLastGridpoint: - 437 _key = {0:15, 1:15, 10:14, 40:15, 41:15, 203:15, 204:15, 205:15, 32768:15, 32769:15} - 438 def __get__(self, obj, objtype=None): - 439 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor - 440 def __set__(self, obj, value): - 441 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) - 442 - 443class GridlengthXDirection: - 444 _key = {0:16, 1:16, 10:17, 20:14, 30:14, 31:14, 40:16, 41:16, 203:16, 204:16, 205:16, 32768:16, 32769:16} - 445 def __get__(self, obj, objtype=None): - 446 return (obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._xydivisor)*obj._dxsign - 447 def __set__(self, obj, value): - 448 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._xydivisor/obj._llscalefactor) - 449 - 450class GridlengthYDirection: - 451 _key = {0:17, 1:17, 10:18, 20:15, 30:15, 31:15, 40:17, 41:17, 203:17, 204:17, 205:17, 32768:17, 32769:17} - 452 def __get__(self, obj, objtype=None): - 453 return (obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._xydivisor)*obj._dysign - 454 def __set__(self, obj, value): - 455 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._xydivisor/obj._llscalefactor) - 456 - 457class LatitudeSouthernPole: - 458 _key = {1:19, 30:20, 31:20, 41:19} - 459 def __get__(self, obj, objtype=None): - 460 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor - 461 def __set__(self, obj, value): - 462 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) - 463 - 464class LongitudeSouthernPole: - 465 _key = {1:20, 30:21, 31:21, 41:20} - 466 def __get__(self, obj, objtype=None): - 467 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor - 468 def __set__(self, obj, value): - 469 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) - 470 - 471class AnglePoleRotation: - 472 _key = {1:21, 41:21} - 473 def __get__(self, obj, objtype=None): - 474 return obj.section3[self._key[obj.gdtn]+5] - 475 def __set__(self, obj, value): - 476 obj.section3[self._key[obj.gdtn]+5] = int(value) - 477 - 478class LatitudeTrueScale: - 479 _key = {10:12, 20:12, 30:12, 31:12} - 480 def __get__(self, obj, objtype=None): - 481 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor - 482 def __set__(self, obj, value): - 483 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) - 484 - 485class GridOrientation: - 486 _key = {10:16, 20:13, 30:13, 31:13} - 487 def __get__(self, obj, objtype=None): - 488 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor - 489 def __set__(self, obj, value): - 490 if obj.gdtn == 10 and (value < 0 or value > 90): - 491 raise ValueError("Grid orientation is limited to range of 0 to 90 degrees.") - 492 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) - 493 - 494class ProjectionCenterFlag: - 495 _key = {20:16, 30:16, 31:16} - 496 def __get__(self, obj, objtype=None): - 497 return utils.int2bin(obj.section3[self._key[obj.gdtn]+5],output=list)[0] - 498 def __set__(self, obj, value): - 499 obj.section3[self._key[obj.gdtn]+5] = value - 500 - 501class StandardLatitude1: - 502 _key = {30:18, 31:18} - 503 def __get__(self, obj, objtype=None): - 504 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor - 505 def __set__(self, obj, value): - 506 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) - 507 - 508class StandardLatitude2: - 509 _key = {30:19, 31:19} - 510 def __get__(self, obj, objtype=None): - 511 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor - 512 def __set__(self, obj, value): - 513 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) - 514 - 515class SpectralFunctionParameters: - 516 def __get__(self, obj, objtype=None): - 517 return obj.section3[0:3] - 518 def __set__(self, obj, value): - 519 obj.section3[0:3] = value[0:3] - 520 - 521class ProjParameters: - 522 def __get__(self, obj, objtype=None): - 523 projparams = {} - 524 projparams['a'] = 1.0 - 525 projparams['b'] = 1.0 - 526 if obj.earthRadius is not None: - 527 projparams['a'] = obj.earthRadius - 528 projparams['b'] = obj.earthRadius - 529 else: - 530 if obj.earthMajorAxis is not None: projparams['a'] = obj.earthMajorAxis - 531 if obj.earthMajorAxis is not None: projparams['b'] = obj.earthMinorAxis - 532 if obj.gdtn == 0: - 533 projparams['proj'] = 'longlat' - 534 elif obj.gdtn == 1: - 535 projparams['o_proj'] = 'longlat' - 536 projparams['proj'] = 'ob_tran' - 537 projparams['o_lat_p'] = -1.0*obj.latitudeSouthernPole - 538 projparams['o_lon_p'] = obj.anglePoleRotation - 539 projparams['lon_0'] = obj.longitudeSouthernPole - 540 elif obj.gdtn == 10: - 541 projparams['proj'] = 'merc' - 542 projparams['lat_ts'] = obj.latitudeTrueScale - 543 projparams['lon_0'] = 0.5*(obj.longitudeFirstGridpoint+obj.longitudeLastGridpoint) - 544 elif obj.gdtn == 20: - 545 if obj.projectionCenterFlag == 0: - 546 lat0 = 90.0 - 547 elif obj.projectionCenterFlag == 1: - 548 lat0 = -90.0 - 549 projparams['proj'] = 'stere' - 550 projparams['lat_ts'] = obj.latitudeTrueScale - 551 projparams['lat_0'] = lat0 - 552 projparams['lon_0'] = obj.gridOrientation - 553 elif obj.gdtn == 30: - 554 projparams['proj'] = 'lcc' - 555 projparams['lat_1'] = obj.standardLatitude1 - 556 projparams['lat_2'] = obj.standardLatitude2 - 557 projparams['lat_0'] = obj.latitudeTrueScale - 558 projparams['lon_0'] = obj.gridOrientation - 559 elif obj.gdtn == 31: - 560 projparams['proj'] = 'aea' - 561 projparams['lat_1'] = obj.standardLatitude1 - 562 projparams['lat_2'] = obj.standardLatitude2 - 563 projparams['lat_0'] = obj.latitudeTrueScale - 564 projparams['lon_0'] = obj.gridOrientation - 565 elif obj.gdtn == 40: - 566 projparams['proj'] = 'eqc' - 567 return projparams - 568 def __set__(self, obj, value): - 569 raise RuntimeError - 570 - 571@dataclass(init=False) - 572class GridDefinitionTemplate0(): - 573 _len = 19 - 574 _num = 0 - 575 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) - 576 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) - 577 latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint()) - 578 longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint()) - 579 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) - 580 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) - 581 @classmethod - 582 @property - 583 def _attrs(cls): - 584 return list(cls.__dataclass_fields__.keys()) - 585 - 586@dataclass(init=False) - 587class GridDefinitionTemplate1(): - 588 _len = 22 - 589 _num = 1 - 590 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) - 591 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) - 592 latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint()) - 593 longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint()) - 594 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) - 595 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) - 596 latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole()) - 597 longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole()) - 598 anglePoleRotation: float = field(init=False, repr=False, default=AnglePoleRotation()) - 599 @classmethod - 600 @property - 601 def _attrs(cls): - 602 return list(cls.__dataclass_fields__.keys()) - 603 - 604@dataclass(init=False) - 605class GridDefinitionTemplate10(): - 606 _len = 19 - 607 _num = 10 - 608 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) - 609 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) - 610 latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale()) - 611 latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint()) - 612 longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint()) - 613 gridOrientation: float = field(init=False, repr=False, default=GridOrientation()) - 614 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) - 615 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) - 616 projParameters: dict = field(init=False, repr=False, default=ProjParameters()) - 617 @classmethod - 618 @property - 619 def _attrs(cls): - 620 return list(cls.__dataclass_fields__.keys()) - 621 - 622@dataclass(init=False) - 623class GridDefinitionTemplate20(): - 624 _len = 18 - 625 _num = 20 - 626 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) - 627 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) - 628 latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale()) - 629 gridOrientation: float = field(init=False, repr=False, default=GridOrientation()) - 630 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) - 631 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) - 632 projectionCenterFlag: list = field(init=False, repr=False, default=ProjectionCenterFlag()) - 633 projParameters: dict = field(init=False, repr=False, default=ProjParameters()) - 634 @classmethod - 635 @property - 636 def _attrs(cls): - 637 return list(cls.__dataclass_fields__.keys()) - 638 - 639@dataclass(init=False) - 640class GridDefinitionTemplate30(): - 641 _len = 22 - 642 _num = 30 - 643 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) - 644 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) - 645 latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale()) - 646 gridOrientation: float = field(init=False, repr=False, default=GridOrientation()) - 647 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) - 648 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) - 649 projectionCenterFlag: list = field(init=False, repr=False, default=ProjectionCenterFlag()) - 650 standardLatitude1: float = field(init=False, repr=False, default=StandardLatitude1()) - 651 standardLatitude2: float = field(init=False, repr=False, default=StandardLatitude2()) - 652 latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole()) - 653 longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole()) - 654 projParameters: dict = field(init=False, repr=False, default=ProjParameters()) - 655 @classmethod - 656 @property - 657 def _attrs(cls): - 658 return list(cls.__dataclass_fields__.keys()) - 659 - 660@dataclass(init=False) - 661class GridDefinitionTemplate31(): - 662 _len = 22 - 663 _num = 31 - 664 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) - 665 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) - 666 latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale()) - 667 gridOrientation: float = field(init=False, repr=False, default=GridOrientation()) - 668 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) - 669 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) - 670 projectionCenterFlag: list = field(init=False, repr=False, default=ProjectionCenterFlag()) - 671 standardLatitude1: float = field(init=False, repr=False, default=StandardLatitude1()) - 672 standardLatitude2: float = field(init=False, repr=False, default=StandardLatitude2()) - 673 latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole()) - 674 longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole()) - 675 @classmethod - 676 @property - 677 def _attrs(cls): - 678 return list(cls.__dataclass_fields__.keys()) - 679 - 680@dataclass(init=False) - 681class GridDefinitionTemplate40(): - 682 _len = 19 - 683 _num = 40 - 684 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) - 685 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) - 686 latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint()) - 687 longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint()) - 688 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) - 689 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) - 690 @classmethod - 691 @property - 692 def _attrs(cls): - 693 return list(cls.__dataclass_fields__.keys()) - 694 - 695@dataclass(init=False) - 696class GridDefinitionTemplate41(): - 697 _len = 22 - 698 _num = 41 - 699 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) - 700 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) - 701 latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint()) - 702 longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint()) - 703 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) - 704 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) - 705 latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole()) - 706 longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole()) - 707 anglePoleRotation: float = field(init=False, repr=False, default=AnglePoleRotation()) - 708 @classmethod - 709 @property - 710 def _attrs(cls): - 711 return list(cls.__dataclass_fields__.keys()) - 712 - 713@dataclass(init=False) - 714class GridDefinitionTemplate50(): - 715 _len = 5 - 716 _num = 50 - 717 spectralFunctionParameters: list = field(init=False, repr=False, default=SpectralFunctionParameters()) - 718 @classmethod - 719 @property - 720 def _attrs(cls): - 721 return list(cls.__dataclass_fields__.keys()) - 722 - 723_gdt_by_gdtn = {0: GridDefinitionTemplate0, - 724 1: GridDefinitionTemplate1, - 725 10: GridDefinitionTemplate10, - 726 20: GridDefinitionTemplate20, - 727 30: GridDefinitionTemplate30, - 728 31: GridDefinitionTemplate31, - 729 40: GridDefinitionTemplate40, - 730 41: GridDefinitionTemplate41, - 731 50: GridDefinitionTemplate50, - 732 } - 733 - 734def gdt_class_by_gdtn(gdtn): - 735 return _gdt_by_gdtn[gdtn] + 341 return obj._earthparams['shape'] + 342 def __set__(self, obj, value): + 343 raise RuntimeError + 344 + 345class EarthRadius: + 346 def __get__(self, obj, objtype=None): + 347 ep = obj._earthparams + 348 if ep['shape'] == 'spherical': + 349 if ep['radius'] is None: + 350 return obj.section3[7]/(10.**obj.section3[6]) + 351 else: + 352 return ep['radius'] + 353 elif ep['shape'] in {'ellipsoid','oblateSpheriod'}: + 354 return None + 355 def __set__(self, obj, value): + 356 raise RuntimeError + 357 + 358class EarthMajorAxis: + 359 def __get__(self, obj, objtype=None): + 360 ep = obj._earthparams + 361 if ep['shape'] == 'spherical': + 362 return None + 363 elif ep['shape'] in {'ellipsoid','oblateSpheriod'}: + 364 if ep['major_axis'] is None and ep['minor_axis'] is None: + 365 return obj.section3[9]/(10.**obj.section3[8]) + 366 else: + 367 return ep['major_axis'] + 368 def __set__(self, obj, value): + 369 raise RuntimeError + 370 + 371class EarthMinorAxis: + 372 def __get__(self, obj, objtype=None): + 373 ep = obj._earthparams + 374 if ep['shape'] == 'spherical': + 375 return None + 376 if ep['shape'] in {'ellipsoid','oblateSpheriod'}: + 377 if ep['major_axis'] is None and ep['minor_axis'] is None: + 378 return obj.section3[11]/(10.**section3[10]) + 379 else: + 380 return ep['minor_axis'] + 381 def __set__(self, obj, value): + 382 raise RuntimeError + 383 + 384class Nx: + 385 def __get__(self, obj, objtype=None): + 386 return obj.section3[12] + 387 def __set__(self, obj, value): + 388 obj.section3[12] = value + 389 obj.section3[1] = value * obj.section3[13] + 390 + 391class Ny: + 392 def __get__(self, obj, objtype=None): + 393 return obj.section3[13] + 394 def __set__(self, obj, value): + 395 obj.section3[13] = value + 396 obj.section3[1] = value * obj.section3[12] + 397 + 398class ScanModeFlags: + 399 _key = {0:18, 1:18, 10:15, 20:17, 30:17, 31:17, 40:18, 41:18, 90:16, 110:15, 203:18, 204:18, 205:18, 32768:18, 32769:18} + 400 def __get__(self, obj, objtype=None): + 401 if obj.gdtn == 50: + 402 return [None, None, None, None] + 403 else: + 404 return utils.int2bin(obj.section3[self._key[obj.gdtn]+5],output=list)[0:8] + 405 def __set__(self, obj, value): + 406 obj.section3[self._key[obj.gdtn]+5] = value + 407 + 408class ResolutionAndComponentFlags: + 409 _key = {0:13, 1:13, 10:11, 20:11, 30:11, 31:11, 40:13, 41:13, 90:11, 110:11, 203:13, 204:13, 205:13, 32768:13, 32769:13} + 410 def __get__(self, obj, objtype=None): + 411 if obj.gdtn == 50: + 412 return [None for i in range(8)] + 413 else: + 414 return utils.int2bin(obj.section3[self._key[obj.gdtn]+5],output=list) + 415 def __set__(self, obj, value): + 416 obj.section3[self._key[obj.gdtn]+5] = value + 417 + 418class LatitudeFirstGridpoint: + 419 _key = {0:11, 1:11, 10:9, 20:9, 30:9, 31:9, 40:11, 41:11, 110:9, 203:11, 204:11, 205:11, 32768:11, 32769:11} + 420 def __get__(self, obj, objtype=None): + 421 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor + 422 def __set__(self, obj, value): + 423 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) + 424 + 425class LongitudeFirstGridpoint: + 426 _key = {0:12, 1:12, 10:10, 20:10, 30:10, 31:10, 40:12, 41:12, 110:10, 203:12, 204:12, 205:12, 32768:12, 32769:12} + 427 def __get__(self, obj, objtype=None): + 428 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor + 429 def __set__(self, obj, value): + 430 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) + 431 + 432class LatitudeLastGridpoint: + 433 _key = {0:14, 1:14, 10:13, 40:14, 41:14, 203:14, 204:14, 205:14, 32768:14, 32769:19} + 434 def __get__(self, obj, objtype=None): + 435 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor + 436 def __set__(self, obj, value): + 437 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) + 438 + 439class LongitudeLastGridpoint: + 440 _key = {0:15, 1:15, 10:14, 40:15, 41:15, 203:15, 204:15, 205:15, 32768:15, 32769:20} + 441 def __get__(self, obj, objtype=None): + 442 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor + 443 def __set__(self, obj, value): + 444 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) + 445 + 446class LatitudeCenterGridpoint: + 447 _key = {32768:14, 32769:14} + 448 def __get__(self, obj, objtype=None): + 449 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor + 450 def __set__(self, obj, value): + 451 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) + 452 + 453class LongitudeCenterGridpoint: + 454 _key = {32768:15, 32769:15} + 455 def __get__(self, obj, objtype=None): + 456 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor + 457 def __set__(self, obj, value): + 458 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) + 459 + 460class GridlengthXDirection: + 461 _key = {0:16, 1:16, 10:17, 20:14, 30:14, 31:14, 40:16, 41:16, 203:16, 204:16, 205:16, 32768:16, 32769:16} + 462 def __get__(self, obj, objtype=None): + 463 return (obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._xydivisor)*obj._dxsign + 464 def __set__(self, obj, value): + 465 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._xydivisor/obj._llscalefactor) + 466 + 467class GridlengthYDirection: + 468 _key = {0:17, 1:17, 10:18, 20:15, 30:15, 31:15, 40:17, 41:17, 203:17, 204:17, 205:17, 32768:17, 32769:17} + 469 def __get__(self, obj, objtype=None): + 470 return (obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._xydivisor)*obj._dysign + 471 def __set__(self, obj, value): + 472 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._xydivisor/obj._llscalefactor) + 473 + 474class LatitudeSouthernPole: + 475 _key = {1:19, 30:20, 31:20, 41:19} + 476 def __get__(self, obj, objtype=None): + 477 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor + 478 def __set__(self, obj, value): + 479 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) + 480 + 481class LongitudeSouthernPole: + 482 _key = {1:20, 30:21, 31:21, 41:20} + 483 def __get__(self, obj, objtype=None): + 484 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor + 485 def __set__(self, obj, value): + 486 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) + 487 + 488class AnglePoleRotation: + 489 _key = {1:21, 41:21} + 490 def __get__(self, obj, objtype=None): + 491 return obj.section3[self._key[obj.gdtn]+5] + 492 def __set__(self, obj, value): + 493 obj.section3[self._key[obj.gdtn]+5] = int(value) + 494 + 495class LatitudeTrueScale: + 496 _key = {10:12, 20:12, 30:12, 31:12} + 497 def __get__(self, obj, objtype=None): + 498 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor + 499 def __set__(self, obj, value): + 500 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) + 501 + 502class GridOrientation: + 503 _key = {10:16, 20:13, 30:13, 31:13} + 504 def __get__(self, obj, objtype=None): + 505 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor + 506 def __set__(self, obj, value): + 507 if obj.gdtn == 10 and (value < 0 or value > 90): + 508 raise ValueError("Grid orientation is limited to range of 0 to 90 degrees.") + 509 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) + 510 + 511class ProjectionCenterFlag: + 512 _key = {20:16, 30:16, 31:16} + 513 def __get__(self, obj, objtype=None): + 514 return utils.int2bin(obj.section3[self._key[obj.gdtn]+5],output=list)[0] + 515 def __set__(self, obj, value): + 516 obj.section3[self._key[obj.gdtn]+5] = value + 517 + 518class StandardLatitude1: + 519 _key = {30:18, 31:18} + 520 def __get__(self, obj, objtype=None): + 521 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor + 522 def __set__(self, obj, value): + 523 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) + 524 + 525class StandardLatitude2: + 526 _key = {30:19, 31:19} + 527 def __get__(self, obj, objtype=None): + 528 return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor + 529 def __set__(self, obj, value): + 530 obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor) + 531 + 532class SpectralFunctionParameters: + 533 def __get__(self, obj, objtype=None): + 534 return obj.section3[0:3] + 535 def __set__(self, obj, value): + 536 obj.section3[0:3] = value[0:3] + 537 + 538class ProjParameters: + 539 def __get__(self, obj, objtype=None): + 540 projparams = {} + 541 projparams['a'] = 1.0 + 542 projparams['b'] = 1.0 + 543 if obj.earthRadius is not None: + 544 projparams['a'] = obj.earthRadius + 545 projparams['b'] = obj.earthRadius + 546 else: + 547 if obj.earthMajorAxis is not None: projparams['a'] = obj.earthMajorAxis + 548 if obj.earthMajorAxis is not None: projparams['b'] = obj.earthMinorAxis + 549 if obj.gdtn == 0: + 550 projparams['proj'] = 'longlat' + 551 elif obj.gdtn == 1: + 552 projparams['o_proj'] = 'longlat' + 553 projparams['proj'] = 'ob_tran' + 554 projparams['o_lat_p'] = -1.0*obj.latitudeSouthernPole + 555 projparams['o_lon_p'] = obj.anglePoleRotation + 556 projparams['lon_0'] = obj.longitudeSouthernPole + 557 elif obj.gdtn == 10: + 558 projparams['proj'] = 'merc' + 559 projparams['lat_ts'] = obj.latitudeTrueScale + 560 projparams['lon_0'] = 0.5*(obj.longitudeFirstGridpoint+obj.longitudeLastGridpoint) + 561 elif obj.gdtn == 20: + 562 if obj.projectionCenterFlag == 0: + 563 lat0 = 90.0 + 564 elif obj.projectionCenterFlag == 1: + 565 lat0 = -90.0 + 566 projparams['proj'] = 'stere' + 567 projparams['lat_ts'] = obj.latitudeTrueScale + 568 projparams['lat_0'] = lat0 + 569 projparams['lon_0'] = obj.gridOrientation + 570 elif obj.gdtn == 30: + 571 projparams['proj'] = 'lcc' + 572 projparams['lat_1'] = obj.standardLatitude1 + 573 projparams['lat_2'] = obj.standardLatitude2 + 574 projparams['lat_0'] = obj.latitudeTrueScale + 575 projparams['lon_0'] = obj.gridOrientation + 576 elif obj.gdtn == 31: + 577 projparams['proj'] = 'aea' + 578 projparams['lat_1'] = obj.standardLatitude1 + 579 projparams['lat_2'] = obj.standardLatitude2 + 580 projparams['lat_0'] = obj.latitudeTrueScale + 581 projparams['lon_0'] = obj.gridOrientation + 582 elif obj.gdtn == 40: + 583 projparams['proj'] = 'eqc' + 584 elif obj.gdtn == 32769: + 585 projparams['o_proj'] = 'longlat' + 586 projparams['proj'] = 'ob_tran' + 587 projparams['o_lat_p'] = 90.0 - obj.latitudeCenterGridpoint + 588 #projparams['o_lon_p'] = obj.longitudeCenterGridpoint - 360.0 if obj.longitudeCenterGridpoint > 180.0 else obj.longitudeCenterGridpoint + 589 #projparams['o_lon_p'] = 180.0 - (360. - obj.longitudeCenterGridpoint) + 590 projparams['o_lon_p'] = 0 + 591 return projparams + 592 def __set__(self, obj, value): + 593 raise RuntimeError + 594 + 595@dataclass(init=False) + 596class GridDefinitionTemplate0(): + 597 _len = 19 + 598 _num = 0 + 599 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) + 600 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) + 601 latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint()) + 602 longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint()) + 603 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) + 604 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) + 605 @classmethod + 606 @property + 607 def _attrs(cls): + 608 return list(cls.__dataclass_fields__.keys()) + 609 + 610@dataclass(init=False) + 611class GridDefinitionTemplate1(): + 612 _len = 22 + 613 _num = 1 + 614 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) + 615 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) + 616 latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint()) + 617 longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint()) + 618 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) + 619 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) + 620 latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole()) + 621 longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole()) + 622 anglePoleRotation: float = field(init=False, repr=False, default=AnglePoleRotation()) + 623 @classmethod + 624 @property + 625 def _attrs(cls): + 626 return list(cls.__dataclass_fields__.keys()) + 627 + 628@dataclass(init=False) + 629class GridDefinitionTemplate10(): + 630 _len = 19 + 631 _num = 10 + 632 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) + 633 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) + 634 latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale()) + 635 latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint()) + 636 longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint()) + 637 gridOrientation: float = field(init=False, repr=False, default=GridOrientation()) + 638 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) + 639 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) + 640 projParameters: dict = field(init=False, repr=False, default=ProjParameters()) + 641 @classmethod + 642 @property + 643 def _attrs(cls): + 644 return list(cls.__dataclass_fields__.keys()) + 645 + 646@dataclass(init=False) + 647class GridDefinitionTemplate20(): + 648 _len = 18 + 649 _num = 20 + 650 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) + 651 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) + 652 latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale()) + 653 gridOrientation: float = field(init=False, repr=False, default=GridOrientation()) + 654 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) + 655 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) + 656 projectionCenterFlag: list = field(init=False, repr=False, default=ProjectionCenterFlag()) + 657 projParameters: dict = field(init=False, repr=False, default=ProjParameters()) + 658 @classmethod + 659 @property + 660 def _attrs(cls): + 661 return list(cls.__dataclass_fields__.keys()) + 662 + 663@dataclass(init=False) + 664class GridDefinitionTemplate30(): + 665 _len = 22 + 666 _num = 30 + 667 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) + 668 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) + 669 latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale()) + 670 gridOrientation: float = field(init=False, repr=False, default=GridOrientation()) + 671 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) + 672 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) + 673 projectionCenterFlag: list = field(init=False, repr=False, default=ProjectionCenterFlag()) + 674 standardLatitude1: float = field(init=False, repr=False, default=StandardLatitude1()) + 675 standardLatitude2: float = field(init=False, repr=False, default=StandardLatitude2()) + 676 latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole()) + 677 longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole()) + 678 projParameters: dict = field(init=False, repr=False, default=ProjParameters()) + 679 @classmethod + 680 @property + 681 def _attrs(cls): + 682 return list(cls.__dataclass_fields__.keys()) + 683 + 684@dataclass(init=False) + 685class GridDefinitionTemplate31(): + 686 _len = 22 + 687 _num = 31 + 688 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) + 689 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) + 690 latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale()) + 691 gridOrientation: float = field(init=False, repr=False, default=GridOrientation()) + 692 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) + 693 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) + 694 projectionCenterFlag: list = field(init=False, repr=False, default=ProjectionCenterFlag()) + 695 standardLatitude1: float = field(init=False, repr=False, default=StandardLatitude1()) + 696 standardLatitude2: float = field(init=False, repr=False, default=StandardLatitude2()) + 697 latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole()) + 698 longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole()) + 699 @classmethod + 700 @property + 701 def _attrs(cls): + 702 return list(cls.__dataclass_fields__.keys()) + 703 + 704@dataclass(init=False) + 705class GridDefinitionTemplate40(): + 706 _len = 19 + 707 _num = 40 + 708 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) + 709 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) + 710 latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint()) + 711 longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint()) + 712 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) + 713 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) + 714 @classmethod + 715 @property + 716 def _attrs(cls): + 717 return list(cls.__dataclass_fields__.keys()) + 718 + 719@dataclass(init=False) + 720class GridDefinitionTemplate41(): + 721 _len = 22 + 722 _num = 41 + 723 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) + 724 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) + 725 latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint()) + 726 longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint()) + 727 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) + 728 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) + 729 latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole()) + 730 longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole()) + 731 anglePoleRotation: float = field(init=False, repr=False, default=AnglePoleRotation()) + 732 @classmethod + 733 @property + 734 def _attrs(cls): + 735 return list(cls.__dataclass_fields__.keys()) 736 - 737# ---------------------------------------------------------------------------------------- - 738# Descriptor Classes for Section 4 metadata. - 739# ---------------------------------------------------------------------------------------- - 740class ProductDefinitionTemplateNumber: - 741 def __get__(self, obj, objtype=None): - 742 return Grib2Metadata(obj.section4[1],table='4.0') - 743 def __set__(self, obj, value): - 744 raise RuntimeError - 745 - 746# since PDT begins at position 2 of section4, code written with +2 for added readability with grib2 documentation - 747class ProductDefinitionTemplate: - 748 def __get__(self, obj, objtype=None): - 749 return obj.section4[2:] - 750 def __set__(self, obj, value): - 751 raise RuntimeError - 752 - 753class ParameterCategory: - 754 _key = defaultdict(lambda: 0) - 755 def __get__(self, obj, objtype=None): - 756 return obj.section4[0+2] - 757 def __set__(self, obj, value): - 758 obj.section4[self._key[obj.pdtn]+2] = value - 759 - 760class ParameterNumber: - 761 _key = defaultdict(lambda: 1) - 762 def __get__(self, obj, objtype=None): - 763 return obj.section4[1+2] - 764 def __set__(self, obj, value): - 765 obj.section4[self._key[obj.pdtn]+2] = value - 766 - 767class VarInfo: - 768 def __get__(self, obj, objtype=None): - 769 return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD) - 770 def __set__(self, obj, value): - 771 raise RuntimeError - 772 - 773class FullName: - 774 def __get__(self, obj, objtype=None): - 775 return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD)[0] - 776 def __set__(self, obj, value): - 777 raise RuntimeError + 737@dataclass(init=False) + 738class GridDefinitionTemplate50(): + 739 _len = 5 + 740 _num = 50 + 741 spectralFunctionParameters: list = field(init=False, repr=False, default=SpectralFunctionParameters()) + 742 @classmethod + 743 @property + 744 def _attrs(cls): + 745 return list(cls.__dataclass_fields__.keys()) + 746 + 747@dataclass(init=False) + 748class GridDefinitionTemplate32768(): + 749 _len = 19 + 750 _num = 32768 + 751 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) + 752 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) + 753 latitudeCenterGridpoint: float = field(init=False, repr=False, default=LatitudeCenterGridpoint()) + 754 longitudeCenterGridpoint: float = field(init=False, repr=False, default=LongitudeCenterGridpoint()) + 755 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) + 756 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) + 757 @classmethod + 758 @property + 759 def _attrs(cls): + 760 return list(cls.__dataclass_fields__.keys()) + 761 + 762@dataclass(init=False) + 763class GridDefinitionTemplate32769(): + 764 _len = 19 + 765 _num = 32769 + 766 latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint()) + 767 longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint()) + 768 latitudeCenterGridpoint: float = field(init=False, repr=False, default=LatitudeCenterGridpoint()) + 769 longitudeCenterGridpoint: float = field(init=False, repr=False, default=LongitudeCenterGridpoint()) + 770 gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection()) + 771 gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection()) + 772 latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint()) + 773 longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint()) + 774 @classmethod + 775 @property + 776 def _attrs(cls): + 777 return list(cls.__dataclass_fields__.keys()) 778 - 779class Units: - 780 def __get__(self, obj, objtype=None): - 781 return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD)[1] - 782 def __set__(self, obj, value): - 783 raise RuntimeError - 784 - 785class ShortName: - 786 def __get__(self, obj, objtype=None): - 787 return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD)[2] - 788 def __set__(self, obj, value): - 789 raise RuntimeError - 790 - 791class TypeOfGeneratingProcess: - 792 _key = defaultdict(lambda: 2, {48:13}) - 793 #_key = {0:2, 1:2, 2:2, 5:2, 6:2, 8:2, 9:2, 10:2, 11:2, 12:2, 15:2, 48:13} - 794 def __get__(self, obj, objtype=None): - 795 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.3') - 796 def __set__(self, obj, value): - 797 obj.section4[self._key[obj.pdtn]+2] = value - 798 - 799class BackgroundGeneratingProcessIdentifier: - 800 _key = defaultdict(lambda: 3, {48:14}) - 801 #_key = {0:3, 1:3, 2:3, 5:3, 6:3, 8:3, 9:3, 10:3, 11:3, 12:3, 15:3, 48:14} - 802 def __get__(self, obj, objtype=None): - 803 return obj.section4[self._key[obj.pdtn]+2] - 804 def __set__(self, obj, value): - 805 obj.section4[self._key[obj.pdtn]+2] = value - 806 - 807class GeneratingProcess: - 808 _key = defaultdict(lambda: 4, {48:15}) - 809 #_key = {0:4, 1:4, 2:4, 5:4, 6:4, 8:4, 9:4, 10:4, 11:4, 12:4, 15:4, 48:15} - 810 def __get__(self, obj, objtype=None): - 811 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='generating_process') - 812 def __set__(self, obj, value): - 813 obj.section4[self._key[obj.pdtn]+2] = value - 814 - 815class HoursAfterDataCutoff: - 816 _key = defaultdict(lambda: 5, {48:16}) - 817 def __get__(self, obj, objtype=None): - 818 return obj.section4[self._key[obj.pdtn]+2] - 819 def __set__(self, obj, value): - 820 obj.section4[self._key[obj.pdtn]+2] = value - 821 - 822class MinutesAfterDataCutoff: - 823 _key = defaultdict(lambda: 6, {48:17}) - 824 def __get__(self, obj, objtype=None): - 825 return obj.section4[self._key[obj.pdtn]+2] - 826 def __set__(self, obj, value): - 827 obj.section4[self._key[obj.pdtn]+2] = value - 828 - 829class UnitOfTimeRange: - 830 _key = defaultdict(lambda: 7, {48:18}) - 831 #_key = {0:7, 1:7, 2:7, 5:7, 6:7, 8:7, 9:7, 10:7, 11:7, 12:7, 15:7, 48:18} + 779_gdt_by_gdtn = {0: GridDefinitionTemplate0, + 780 1: GridDefinitionTemplate1, + 781 10: GridDefinitionTemplate10, + 782 20: GridDefinitionTemplate20, + 783 30: GridDefinitionTemplate30, + 784 31: GridDefinitionTemplate31, + 785 40: GridDefinitionTemplate40, + 786 41: GridDefinitionTemplate41, + 787 50: GridDefinitionTemplate50, + 788 32768: GridDefinitionTemplate32768, + 789 32769: GridDefinitionTemplate32769, + 790 } + 791 + 792def gdt_class_by_gdtn(gdtn): + 793 return _gdt_by_gdtn[gdtn] + 794 + 795# ---------------------------------------------------------------------------------------- + 796# Descriptor Classes for Section 4 metadata. + 797# ---------------------------------------------------------------------------------------- + 798class ProductDefinitionTemplateNumber: + 799 def __get__(self, obj, objtype=None): + 800 return Grib2Metadata(obj.section4[1],table='4.0') + 801 def __set__(self, obj, value): + 802 raise RuntimeError + 803 + 804# since PDT begins at position 2 of section4, code written with +2 for added readability with grib2 documentation + 805class ProductDefinitionTemplate: + 806 def __get__(self, obj, objtype=None): + 807 return obj.section4[2:] + 808 def __set__(self, obj, value): + 809 raise RuntimeError + 810 + 811class ParameterCategory: + 812 _key = defaultdict(lambda: 0) + 813 def __get__(self, obj, objtype=None): + 814 return obj.section4[0+2] + 815 def __set__(self, obj, value): + 816 obj.section4[self._key[obj.pdtn]+2] = value + 817 + 818class ParameterNumber: + 819 _key = defaultdict(lambda: 1) + 820 def __get__(self, obj, objtype=None): + 821 return obj.section4[1+2] + 822 def __set__(self, obj, value): + 823 obj.section4[self._key[obj.pdtn]+2] = value + 824 + 825class VarInfo: + 826 def __get__(self, obj, objtype=None): + 827 return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD) + 828 def __set__(self, obj, value): + 829 raise RuntimeError + 830 + 831class FullName: 832 def __get__(self, obj, objtype=None): - 833 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.4') + 833 return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD)[0] 834 def __set__(self, obj, value): - 835 obj.section4[self._key[obj.pdtn]+2] = value + 835 raise RuntimeError 836 - 837class ForecastTime: - 838 _key = defaultdict(lambda: 8, {48:19}) - 839 def __get__(self, obj, objtype=None): - 840 return obj.section4[self._key[obj.pdtn]+2] - 841 def __set__(self, obj, value): - 842 obj.section4[self._key[obj.pdtn]+2] = value - 843 - 844class LeadTime: - 845 def __get__(self, obj, objtype=None): - 846 return utils.get_leadtime(obj.section1,obj.section4[1], - 847 obj.section4[2:]) - 848 def __set__(self, obj, value): - 849 raise NotImplementedError - 850 - 851class FixedSfc1Info: - 852 _key = defaultdict(lambda: 9, {48:20}) - 853 #_key = {0:9, 1:9, 2:9, 5:9, 6:9, 8:9, 9:9, 10:9, 11:9, 12:9, 15:9, 48:20} - 854 def __get__(self, obj, objtype=None): - 855 if obj.section4[self._key[obj.pdtn]+2] == 255: - 856 return [None, None] - 857 return tables.get_value_from_table(obj.section4[self._key[obj.pdtn]+2],'4.5') - 858 def __set__(self, obj, value): - 859 raise NotImplementedError - 860 - 861class FixedSfc2Info: - 862 _key = defaultdict(lambda: 12, {48:23}) - 863 #_key = {0:12, 1:12, 2:12, 5:12, 6:12, 8:12, 9:12, 10:12, 11:12, 12:12, 15:12, 48:23} - 864 def __get__(self, obj, objtype=None): - 865 if obj.section4[self._key[obj.pdtn]+2] == 255: - 866 return [None, None] - 867 return tables.get_value_from_table(obj.section4[self._key[obj.pdtn]+2],'4.5') - 868 def __set__(self, obj, value): - 869 raise NotImplementedError - 870 - 871class TypeOfFirstFixedSurface: - 872 _key = defaultdict(lambda: 9, {48:20}) - 873 #_key = {0:9, 1:9, 2:9, 5:9, 6:9, 8:9, 9:9, 10:9, 11:9, 12:9, 15:9, 48:20} - 874 def __get__(self, obj, objtype=None): - 875 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.5') - 876 def __set__(self, obj, value): - 877 obj.section4[self._key[obj.pdtn]+2] = value - 878 - 879class ScaleFactorOfFirstFixedSurface: - 880 _key = defaultdict(lambda: 10, {48:21}) - 881 #_key = {0:10, 1:10, 2:10, 5:10, 6:10, 8:10, 9:10, 10:10, 11:10, 12:10, 15:10, 48:21} + 837class Units: + 838 def __get__(self, obj, objtype=None): + 839 return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD)[1] + 840 def __set__(self, obj, value): + 841 raise RuntimeError + 842 + 843class ShortName: + 844 def __get__(self, obj, objtype=None): + 845 return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD)[2] + 846 def __set__(self, obj, value): + 847 raise RuntimeError + 848 + 849class TypeOfGeneratingProcess: + 850 _key = defaultdict(lambda: 2, {48:13}) + 851 #_key = {0:2, 1:2, 2:2, 5:2, 6:2, 8:2, 9:2, 10:2, 11:2, 12:2, 15:2, 48:13} + 852 def __get__(self, obj, objtype=None): + 853 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.3') + 854 def __set__(self, obj, value): + 855 obj.section4[self._key[obj.pdtn]+2] = value + 856 + 857class BackgroundGeneratingProcessIdentifier: + 858 _key = defaultdict(lambda: 3, {48:14}) + 859 #_key = {0:3, 1:3, 2:3, 5:3, 6:3, 8:3, 9:3, 10:3, 11:3, 12:3, 15:3, 48:14} + 860 def __get__(self, obj, objtype=None): + 861 return obj.section4[self._key[obj.pdtn]+2] + 862 def __set__(self, obj, value): + 863 obj.section4[self._key[obj.pdtn]+2] = value + 864 + 865class GeneratingProcess: + 866 _key = defaultdict(lambda: 4, {48:15}) + 867 #_key = {0:4, 1:4, 2:4, 5:4, 6:4, 8:4, 9:4, 10:4, 11:4, 12:4, 15:4, 48:15} + 868 def __get__(self, obj, objtype=None): + 869 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='generating_process') + 870 def __set__(self, obj, value): + 871 obj.section4[self._key[obj.pdtn]+2] = value + 872 + 873class HoursAfterDataCutoff: + 874 _key = defaultdict(lambda: 5, {48:16}) + 875 def __get__(self, obj, objtype=None): + 876 return obj.section4[self._key[obj.pdtn]+2] + 877 def __set__(self, obj, value): + 878 obj.section4[self._key[obj.pdtn]+2] = value + 879 + 880class MinutesAfterDataCutoff: + 881 _key = defaultdict(lambda: 6, {48:17}) 882 def __get__(self, obj, objtype=None): 883 return obj.section4[self._key[obj.pdtn]+2] 884 def __set__(self, obj, value): 885 obj.section4[self._key[obj.pdtn]+2] = value 886 - 887class ScaledValueOfFirstFixedSurface: - 888 _key = defaultdict(lambda: 11, {48:22}) - 889 #_key = {0:11, 1:11, 2:11, 5:11, 6:11, 8:11, 9:11, 10:11, 11:11, 12:11, 15:11, 48:22} + 887class UnitOfForecastTime: + 888 _key = defaultdict(lambda: 7, {48:18}) + 889 #_key = {0:7, 1:7, 2:7, 5:7, 6:7, 8:7, 9:7, 10:7, 11:7, 12:7, 15:7, 48:18} 890 def __get__(self, obj, objtype=None): - 891 return obj.section4[self._key[obj.pdtn]+2] + 891 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.4') 892 def __set__(self, obj, value): 893 obj.section4[self._key[obj.pdtn]+2] = value 894 - 895class UnitOfFirstFixedSurface: - 896 def __get__(self, obj, objtype=None): - 897 return obj._fixedsfc1info[1] - 898 def __set__(self, obj, value): - 899 pass - 900 - 901class ValueOfFirstFixedSurface: - 902 def __get__(self, obj, objtype=None): - 903 return obj.section4[ScaledValueOfFirstFixedSurface._key[obj.pdtn]+2]/\ - 904 (10.**obj.section4[ScaleFactorOfFirstFixedSurface._key[obj.pdtn]+2]) - 905 def __set__(self, obj, value): - 906 pass - 907 - 908class TypeOfSecondFixedSurface: - 909 _key = defaultdict(lambda: 12, {48:23}) - 910 #_key = {0:12, 1:12, 2:12, 5:12, 6:12, 8:12, 9:12, 10:12, 11:12, 12:12, 15:12, 48:23} - 911 def __get__(self, obj, objtype=None): - 912 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.5') - 913 def __set__(self, obj, value): - 914 obj.section4[self._key[obj.pdtn]+2] = value - 915 - 916class ScaleFactorOfSecondFixedSurface: - 917 _key = defaultdict(lambda: 13, {48:24}) - 918 #_key = {0:13, 1:13, 2:13, 5:13, 6:13, 8:13, 9:13, 10:13, 11:13, 12:13, 15:13, 48:24} - 919 def __get__(self, obj, objtype=None): - 920 return obj.section4[self._key[obj.pdtn]+2] - 921 def __set__(self, obj, value): - 922 obj.section4[self._key[obj.pdtn]+2] = value - 923 - 924class ScaledValueOfSecondFixedSurface: - 925 _key = defaultdict(lambda: 14, {48:25}) - 926 #_key = {0:14, 1:14, 2:14, 5:14, 6:14, 8:14, 9:14, 10:14, 11:14, 12:14, 15:14, 48:25} - 927 def __get__(self, obj, objtype=None): - 928 return obj.section4[self._key[obj.pdtn]+2] - 929 def __set__(self, obj, value): - 930 obj.section4[self._key[obj.pdtn]+2] = value - 931 - 932class UnitOfSecondFixedSurface: - 933 def __get__(self, obj, objtype=None): - 934 return obj._fixedsfc2info[1] - 935 def __set__(self, obj, value): - 936 pass - 937 - 938class ValueOfSecondFixedSurface: - 939 def __get__(self, obj, objtype=None): - 940 return obj.section4[ScaledValueOfFirstFixedSurface._key[obj.pdtn]+2]/\ - 941 (10.**obj.section4[ScaleFactorOfFirstFixedSurface._key[obj.pdtn]+2]) + 895class ValueOfForecastTime: + 896 _key = defaultdict(lambda: 8, {48:19}) + 897 def __get__(self, obj, objtype=None): + 898 return obj.section4[self._key[obj.pdtn]+2] + 899 def __set__(self, obj, value): + 900 obj.section4[self._key[obj.pdtn]+2] = value + 901 + 902class LeadTime: + 903 def __get__(self, obj, objtype=None): + 904 return utils.get_leadtime(obj.section1,obj.section4[1], + 905 obj.section4[2:]) + 906 def __set__(self, obj, value): + 907 raise NotImplementedError + 908 + 909class FixedSfc1Info: + 910 _key = defaultdict(lambda: 9, {48:20}) + 911 #_key = {0:9, 1:9, 2:9, 5:9, 6:9, 8:9, 9:9, 10:9, 11:9, 12:9, 15:9, 48:20} + 912 def __get__(self, obj, objtype=None): + 913 if obj.section4[self._key[obj.pdtn]+2] == 255: + 914 return [None, None] + 915 return tables.get_value_from_table(obj.section4[self._key[obj.pdtn]+2],'4.5') + 916 def __set__(self, obj, value): + 917 raise NotImplementedError + 918 + 919class FixedSfc2Info: + 920 _key = defaultdict(lambda: 12, {48:23}) + 921 #_key = {0:12, 1:12, 2:12, 5:12, 6:12, 8:12, 9:12, 10:12, 11:12, 12:12, 15:12, 48:23} + 922 def __get__(self, obj, objtype=None): + 923 if obj.section4[self._key[obj.pdtn]+2] == 255: + 924 return [None, None] + 925 return tables.get_value_from_table(obj.section4[self._key[obj.pdtn]+2],'4.5') + 926 def __set__(self, obj, value): + 927 raise NotImplementedError + 928 + 929class TypeOfFirstFixedSurface: + 930 _key = defaultdict(lambda: 9, {48:20}) + 931 #_key = {0:9, 1:9, 2:9, 5:9, 6:9, 8:9, 9:9, 10:9, 11:9, 12:9, 15:9, 48:20} + 932 def __get__(self, obj, objtype=None): + 933 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.5') + 934 def __set__(self, obj, value): + 935 obj.section4[self._key[obj.pdtn]+2] = value + 936 + 937class ScaleFactorOfFirstFixedSurface: + 938 _key = defaultdict(lambda: 10, {48:21}) + 939 #_key = {0:10, 1:10, 2:10, 5:10, 6:10, 8:10, 9:10, 10:10, 11:10, 12:10, 15:10, 48:21} + 940 def __get__(self, obj, objtype=None): + 941 return obj.section4[self._key[obj.pdtn]+2] 942 def __set__(self, obj, value): - 943 pass + 943 obj.section4[self._key[obj.pdtn]+2] = value 944 - 945class Level: - 946 def __get__(self, obj, objtype=None): - 947 return tables.get_wgrib2_level_string(obj.pdtn,obj.section4[2:]) - 948 def __set__(self, obj, value): - 949 pass - 950 - 951class TypeOfEnsembleForecast: - 952 _key = {1:15, 11:15} - 953 def __get__(self, obj, objtype=None): - 954 pdtn = obj.section4[1] - 955 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.6') + 945class ScaledValueOfFirstFixedSurface: + 946 _key = defaultdict(lambda: 11, {48:22}) + 947 #_key = {0:11, 1:11, 2:11, 5:11, 6:11, 8:11, 9:11, 10:11, 11:11, 12:11, 15:11, 48:22} + 948 def __get__(self, obj, objtype=None): + 949 return obj.section4[self._key[obj.pdtn]+2] + 950 def __set__(self, obj, value): + 951 obj.section4[self._key[obj.pdtn]+2] = value + 952 + 953class UnitOfFirstFixedSurface: + 954 def __get__(self, obj, objtype=None): + 955 return obj._fixedsfc1info[1] 956 def __set__(self, obj, value): - 957 pdtn = obj.section4[1] - 958 obj.section4[self._key[pdtn]+2] = value - 959 - 960class PerturbationNumber: - 961 _key = {1:16, 11:16} - 962 def __get__(self, obj, objtype=None): - 963 pdtn = obj.section4[1] - 964 return obj.section4[self._key[pdtn]+2] - 965 def __set__(self, obj, value): - 966 pdtn = obj.section4[1] - 967 obj.section4[self._key[pdtn]+2] = value - 968 - 969class NumberOfEnsembleForecasts: - 970 _key = {1:17, 2:16, 11:17, 12:16} - 971 def __get__(self, obj, objtype=None): - 972 pdtn = obj.section4[1] - 973 return obj.section4[self._key[pdtn]+2] - 974 def __set__(self, obj, value): - 975 pdtn = obj.section4[1] - 976 obj.section4[self._key[pdtn]+2] = value - 977 - 978class TypeOfDerivedForecast: - 979 _key = {2:15, 12:15} - 980 def __get__(self, obj, objtype=None): - 981 pdtn = obj.section4[1] - 982 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.7') - 983 def __set__(self, obj, value): - 984 pdtn = obj.section4[1] - 985 obj.section4[self._key[pdtn]+2] = value - 986 - 987class ForecastProbabilityNumber: - 988 _key = {5:15, 9:15} - 989 def __get__(self, obj, objtype=None): - 990 pdtn = obj.section4[1] - 991 return obj.section4[self._key[pdtn]+2] - 992 def __set__(self, obj, value): - 993 pdtn = obj.section4[1] - 994 obj.section4[self._key[pdtn]+2] = value + 957 pass + 958 + 959class ValueOfFirstFixedSurface: + 960 def __get__(self, obj, objtype=None): + 961 return obj.section4[ScaledValueOfFirstFixedSurface._key[obj.pdtn]+2]/\ + 962 (10.**obj.section4[ScaleFactorOfFirstFixedSurface._key[obj.pdtn]+2]) + 963 def __set__(self, obj, value): + 964 pass + 965 + 966class TypeOfSecondFixedSurface: + 967 _key = defaultdict(lambda: 12, {48:23}) + 968 #_key = {0:12, 1:12, 2:12, 5:12, 6:12, 8:12, 9:12, 10:12, 11:12, 12:12, 15:12, 48:23} + 969 def __get__(self, obj, objtype=None): + 970 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.5') + 971 def __set__(self, obj, value): + 972 obj.section4[self._key[obj.pdtn]+2] = value + 973 + 974class ScaleFactorOfSecondFixedSurface: + 975 _key = defaultdict(lambda: 13, {48:24}) + 976 #_key = {0:13, 1:13, 2:13, 5:13, 6:13, 8:13, 9:13, 10:13, 11:13, 12:13, 15:13, 48:24} + 977 def __get__(self, obj, objtype=None): + 978 return obj.section4[self._key[obj.pdtn]+2] + 979 def __set__(self, obj, value): + 980 obj.section4[self._key[obj.pdtn]+2] = value + 981 + 982class ScaledValueOfSecondFixedSurface: + 983 _key = defaultdict(lambda: 14, {48:25}) + 984 #_key = {0:14, 1:14, 2:14, 5:14, 6:14, 8:14, 9:14, 10:14, 11:14, 12:14, 15:14, 48:25} + 985 def __get__(self, obj, objtype=None): + 986 return obj.section4[self._key[obj.pdtn]+2] + 987 def __set__(self, obj, value): + 988 obj.section4[self._key[obj.pdtn]+2] = value + 989 + 990class UnitOfSecondFixedSurface: + 991 def __get__(self, obj, objtype=None): + 992 return obj._fixedsfc2info[1] + 993 def __set__(self, obj, value): + 994 pass 995 - 996class TotalNumberOfForecastProbabilities: - 997 _key = {5:16, 9:16} - 998 def __get__(self, obj, objtype=None): - 999 pdtn = obj.section4[1] -1000 return obj.section4[self._key[pdtn]+2] -1001 def __set__(self, obj, value): -1002 pdtn = obj.section4[1] -1003 obj.section4[self._key[pdtn]+2] = value -1004 -1005class TypeOfProbability: -1006 _key = {5:17, 9:17} -1007 def __get__(self, obj, objtype=None): -1008 pdtn = obj.section4[1] -1009 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.9') -1010 def __set__(self, obj, value): -1011 pdtn = obj.section4[1] -1012 obj.section4[self._key[pdtn]+2] = value -1013 -1014class ScaleFactorOfThresholdLowerLimit: -1015 _key = {5:18, 9:18} -1016 def __get__(self, obj, objtype=None): -1017 pdtn = obj.section4[1] -1018 return obj.section4[self._key[pdtn]+2] -1019 def __set__(self, obj, value): -1020 pdtn = obj.section4[1] -1021 obj.section4[self._key[pdtn]+2] = value -1022 -1023class ScaledValueOfThresholdLowerLimit: -1024 _key = {5:19, 9:19} -1025 def __get__(self, obj, objtype=None): -1026 pdtn = obj.section4[1] -1027 return obj.section4[self._key[pdtn]+2] -1028 def __set__(self, obj, value): -1029 pdtn = obj.section4[1] -1030 obj.section4[self._key[pdtn]+2] = value -1031 -1032class ThresholdLowerLimit: -1033 def __get__(self, obj, objtype=None): -1034 if obj.section4[18+2] == -127 and \ -1035 obj.section4[19+2] == 255: -1036 return 0.0 -1037 else: -1038 return obj.section4[19+2]/(10.**obj.section4[18+2]) -1039 def __set__(self, obj, value): -1040 pass -1041 -1042class ThresholdUpperLimit: -1043 def __get__(self, obj, objtype=None): -1044 if obj.section4[20+2] == -127 and \ -1045 obj.section4[21+2] == 255: -1046 return 0.0 -1047 else: -1048 return obj.section4[21+2]/(10.**obj.section4[20+2]) -1049 def __set__(self, obj, value): -1050 pass -1051 -1052class Threshold: -1053 def __get__(self, obj, objtype=None): -1054 return utils.get_wgrib2_prob_string(*obj.section4[17+2:22+2]) -1055 def __set__(self, obj, value): -1056 pass -1057 -1058class PercentileValue: -1059 _key = {6:15, 10:15} -1060 def __get__(self, obj, objtype=None): -1061 pdtn = obj.section4[1] -1062 return obj.section4[self._key[pdtn]+2] -1063 def __set__(self, obj, value): -1064 pdtn = obj.section4[1] -1065 obj.section4[self._key[pdtn]+2] = value -1066 -1067class YearOfEndOfTimePeriod: -1068 _key = {8:15, 9:22, 10:16, 11:18, 12:17} -1069 def __get__(self, obj, objtype=None): -1070 pdtn = obj.section4[1] -1071 return obj.section4[self._key[pdtn]+2] -1072 def __set__(self, obj, value): -1073 pdtn = obj.section4[1] -1074 obj.section4[self._key[pdtn]+2] = value -1075 -1076class MonthOfEndOfTimePeriod: -1077 _key = {8:16, 9:23, 10:17, 11:19, 12:18} -1078 def __get__(self, obj, objtype=None): -1079 pdtn = obj.section4[1] -1080 return obj.section4[self._key[pdtn]+2] -1081 def __set__(self, obj, value): -1082 pdtn = obj.section4[1] -1083 obj.section4[self._key[pdtn]+2] = value -1084 -1085class DayOfEndOfTimePeriod: -1086 _key = {8:17, 9:24, 10:18, 11:20, 12:19} -1087 def __get__(self, obj, objtype=None): -1088 pdtn = obj.section4[1] -1089 return obj.section4[self._key[pdtn]+2] -1090 def __set__(self, obj, value): -1091 pdtn = obj.section4[1] -1092 obj.section4[self._key[pdtn]+2] = value -1093 -1094class HourOfEndOfTimePeriod: -1095 _key = {8:18, 9:25, 10:19, 11:21, 12:20} -1096 def __get__(self, obj, objtype=None): -1097 pdtn = obj.section4[1] -1098 return obj.section4[self._key[pdtn]+2] -1099 def __set__(self, obj, value): -1100 pdtn = obj.section4[1] -1101 obj.section4[self._key[pdtn]+2] = value -1102 -1103class MinuteOfEndOfTimePeriod: -1104 _key = {8:19, 9:26, 10:20, 11:22, 12:21} -1105 def __get__(self, obj, objtype=None): -1106 pdtn = obj.section4[1] -1107 return obj.section4[self._key[pdtn]+2] -1108 def __set__(self, obj, value): -1109 pdtn = obj.section4[1] -1110 obj.section4[self._key[pdtn]+2] = value -1111 -1112class SecondOfEndOfTimePeriod: -1113 _key = {8:20, 9:27, 10:21, 11:23, 12:22} -1114 def __get__(self, obj, objtype=None): -1115 pdtn = obj.section4[1] -1116 return obj.section4[self._key[pdtn]+2] -1117 def __set__(self, obj, value): -1118 pdtn = obj.section4[1] -1119 obj.section4[self._key[pdtn]+2] = value -1120 -1121class Duration: -1122 def __get__(self, obj, objtype=None): -1123 return utils.get_duration(obj.section4[1],obj.section4[2:]) -1124 def __set__(self, obj, value): -1125 pass -1126 -1127class ValidDate: -1128 _key = {8:slice(15,21), 9:slice(22,28), 10:slice(16,22), 11:slice(18,24), 12:slice(17,23)} + 996class ValueOfSecondFixedSurface: + 997 def __get__(self, obj, objtype=None): + 998 return obj.section4[ScaledValueOfFirstFixedSurface._key[obj.pdtn]+2]/\ + 999 (10.**obj.section4[ScaleFactorOfFirstFixedSurface._key[obj.pdtn]+2]) +1000 def __set__(self, obj, value): +1001 pass +1002 +1003class Level: +1004 def __get__(self, obj, objtype=None): +1005 return tables.get_wgrib2_level_string(obj.pdtn,obj.section4[2:]) +1006 def __set__(self, obj, value): +1007 pass +1008 +1009class TypeOfEnsembleForecast: +1010 _key = {1:15, 11:15} +1011 def __get__(self, obj, objtype=None): +1012 pdtn = obj.section4[1] +1013 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.6') +1014 def __set__(self, obj, value): +1015 pdtn = obj.section4[1] +1016 obj.section4[self._key[pdtn]+2] = value +1017 +1018class PerturbationNumber: +1019 _key = {1:16, 11:16} +1020 def __get__(self, obj, objtype=None): +1021 pdtn = obj.section4[1] +1022 return obj.section4[self._key[pdtn]+2] +1023 def __set__(self, obj, value): +1024 pdtn = obj.section4[1] +1025 obj.section4[self._key[pdtn]+2] = value +1026 +1027class NumberOfEnsembleForecasts: +1028 _key = {1:17, 2:16, 11:17, 12:16} +1029 def __get__(self, obj, objtype=None): +1030 pdtn = obj.section4[1] +1031 return obj.section4[self._key[pdtn]+2] +1032 def __set__(self, obj, value): +1033 pdtn = obj.section4[1] +1034 obj.section4[self._key[pdtn]+2] = value +1035 +1036class TypeOfDerivedForecast: +1037 _key = {2:15, 12:15} +1038 def __get__(self, obj, objtype=None): +1039 pdtn = obj.section4[1] +1040 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.7') +1041 def __set__(self, obj, value): +1042 pdtn = obj.section4[1] +1043 obj.section4[self._key[pdtn]+2] = value +1044 +1045class ForecastProbabilityNumber: +1046 _key = {5:15, 9:15} +1047 def __get__(self, obj, objtype=None): +1048 pdtn = obj.section4[1] +1049 return obj.section4[self._key[pdtn]+2] +1050 def __set__(self, obj, value): +1051 pdtn = obj.section4[1] +1052 obj.section4[self._key[pdtn]+2] = value +1053 +1054class TotalNumberOfForecastProbabilities: +1055 _key = {5:16, 9:16} +1056 def __get__(self, obj, objtype=None): +1057 pdtn = obj.section4[1] +1058 return obj.section4[self._key[pdtn]+2] +1059 def __set__(self, obj, value): +1060 pdtn = obj.section4[1] +1061 obj.section4[self._key[pdtn]+2] = value +1062 +1063class TypeOfProbability: +1064 _key = {5:17, 9:17} +1065 def __get__(self, obj, objtype=None): +1066 pdtn = obj.section4[1] +1067 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.9') +1068 def __set__(self, obj, value): +1069 pdtn = obj.section4[1] +1070 obj.section4[self._key[pdtn]+2] = value +1071 +1072class ScaleFactorOfThresholdLowerLimit: +1073 _key = {5:18, 9:18} +1074 def __get__(self, obj, objtype=None): +1075 pdtn = obj.section4[1] +1076 return obj.section4[self._key[pdtn]+2] +1077 def __set__(self, obj, value): +1078 pdtn = obj.section4[1] +1079 obj.section4[self._key[pdtn]+2] = value +1080 +1081class ScaledValueOfThresholdLowerLimit: +1082 _key = {5:19, 9:19} +1083 def __get__(self, obj, objtype=None): +1084 pdtn = obj.section4[1] +1085 return obj.section4[self._key[pdtn]+2] +1086 def __set__(self, obj, value): +1087 pdtn = obj.section4[1] +1088 obj.section4[self._key[pdtn]+2] = value +1089 +1090class ScaleFactorOfThresholdUpperLimit: +1091 _key = {5:20, 9:20} +1092 def __get__(self, obj, objtype=None): +1093 pdtn = obj.section4[1] +1094 return obj.section4[self._key[pdtn]+2] +1095 def __set__(self, obj, value): +1096 pdtn = obj.section4[1] +1097 obj.section4[self._key[pdtn]+2] = value +1098 +1099class ScaledValueOfThresholdUpperLimit: +1100 _key = {5:21, 9:21} +1101 def __get__(self, obj, objtype=None): +1102 pdtn = obj.section4[1] +1103 return obj.section4[self._key[pdtn]+2] +1104 def __set__(self, obj, value): +1105 pdtn = obj.section4[1] +1106 obj.section4[self._key[pdtn]+2] = value +1107 +1108class ThresholdLowerLimit: +1109 def __get__(self, obj, objtype=None): +1110 if obj.section4[18+2] == -127 and \ +1111 obj.section4[19+2] == 255: +1112 return 0.0 +1113 else: +1114 return obj.section4[19+2]/(10.**obj.section4[18+2]) +1115 def __set__(self, obj, value): +1116 pass +1117 +1118class ThresholdUpperLimit: +1119 def __get__(self, obj, objtype=None): +1120 if obj.section4[20+2] == -127 and \ +1121 obj.section4[21+2] == 255: +1122 return 0.0 +1123 else: +1124 return obj.section4[21+2]/(10.**obj.section4[20+2]) +1125 def __set__(self, obj, value): +1126 pass +1127 +1128class Threshold: 1129 def __get__(self, obj, objtype=None): -1130 pdtn = obj.section4[1] -1131 try: -1132 s = slice(self._key[pdtn].start+2,self._key[pdtn].stop+2) -1133 return datetime.datetime(*obj.section4[s]) -1134 except(KeyError): -1135 return obj.refDate + obj.leadTime -1136 def __set__(self, obj, value): -1137 pass -1138 -1139class NumberOfTimeRanges: -1140 _key = {8:21, 9:28, 10:22, 11:24, 12:23} -1141 def __get__(self, obj, objtype=None): -1142 pdtn = obj.section4[1] -1143 return obj.section4[self._key[pdtn]+2] -1144 def __set__(self, obj, value): -1145 pdtn = obj.section4[1] -1146 obj.section4[self._key[pdtn]+2] = value -1147 -1148class NumberOfMissingValues: -1149 _key = {8:22, 9:29, 10:23, 11:25, 12:24} -1150 def __get__(self, obj, objtype=None): -1151 pdtn = obj.section4[1] -1152 return obj.section4[self._key[pdtn]+2] -1153 def __set__(self, obj, value): -1154 pdtn = obj.section4[1] -1155 obj.section4[self._key[pdtn]+2] = value -1156 -1157class StatisticalProcess: -1158 _key = {8:23, 9:30, 10:24, 11:26, 12:25, 15:15} -1159 def __get__(self, obj, objtype=None): -1160 pdtn = obj.section4[1] -1161 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.10') -1162 def __set__(self, obj, value): -1163 pdtn = obj.section4[1] -1164 obj.section4[self._key[pdtn]+2] = value -1165 -1166class TypeOfTimeIncrementOfStatisticalProcess: -1167 _key = {8:24, 9:31, 10:25, 11:27, 12:26} -1168 def __get__(self, obj, objtype=None): -1169 pdtn = obj.section4[1] -1170 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.11') -1171 def __set__(self, obj, value): -1172 pdtn = obj.section4[1] -1173 obj.section4[self._key[pdtn]+2] = value -1174 -1175class UnitOfTimeRangeOfStatisticalProcess: -1176 _key = {8:25, 9:32, 10:26, 11:28, 12:27} -1177 def __get__(self, obj, objtype=None): -1178 pdtn = obj.section4[1] -1179 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.4') -1180 def __set__(self, obj, value): -1181 pdtn = obj.section4[1] -1182 obj.section4[self._key[pdtn]+2] = value -1183 -1184class TimeRangeOfStatisticalProcess: -1185 _key = {8:26, 9:33, 10:27, 11:29, 12:28} -1186 def __get__(self, obj, objtype=None): -1187 pdtn = obj.section4[1] -1188 return obj.section4[self._key[pdtn]+2] -1189 def __set__(self, obj, value): -1190 pdtn = obj.section4[1] -1191 obj.section4[self._key[pdtn]+2] = value -1192 -1193class UnitOfTimeRangeOfSuccessiveFields: -1194 _key = {8:27, 9:34, 10:28, 11:30, 12:29} -1195 def __get__(self, obj, objtype=None): -1196 pdtn = obj.section4[1] -1197 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.4') -1198 def __set__(self, obj, value): -1199 pdtn = obj.section4[1] -1200 obj.section4[self._key[pdtn]+2] = value -1201 -1202class TimeIncrementOfSuccessiveFields: -1203 _key = {8:28, 9:35, 10:29, 11:31, 12:30} -1204 def __get__(self, obj, objtype=None): -1205 pdtn = obj.section4[1] -1206 return obj.section4[self._key[pdtn]+2] -1207 def __set__(self, obj, value): -1208 pdtn = obj.section4[1] -1209 obj.section4[self._key[pdtn]+2] = value -1210 -1211class TypeOfStatisticalProcessing: -1212 _key = {15:16} -1213 def __get__(self, obj, objtype=None): -1214 pdtn = obj.section4[1] -1215 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.15') -1216 def __set__(self, obj, value): -1217 pdtn = obj.section4[1] -1218 obj.section4[self._key[pdtn]+2] = value -1219 -1220class NumberOfDataPointsForSpatialProcessing: -1221 _key = {15:17} -1222 def __get__(self, obj, objtype=None): -1223 pdtn = obj.section4[1] -1224 return obj.section4[self._key[pdtn]+2] -1225 def __set__(self, obj, value): -1226 pdtn = obj.section4[1] -1227 obj.section4[self._key[pdtn]+2] = value -1228 -1229class TypeOfAerosol: -1230 _key = {48:2} -1231 def __get__(self, obj, objtype=None): -1232 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.233') -1233 def __set__(self, obj, value): -1234 obj.section4[self._key[obj.pdtn]+2] = value -1235 -1236class TypeOfIntervalForAerosolSize: -1237 _key = {48:3} -1238 def __get__(self, obj, objtype=None): -1239 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.91') -1240 def __set__(self, obj, value): -1241 obj.section4[self._key[obj.pdtn]+2] = value -1242 -1243class ScaleFactorOfFirstSize: -1244 _key = {48:4} -1245 def __get__(self, obj, objtype=None): -1246 return obj.section4[self._key[obj.pdtn]+2] +1130 return utils.get_wgrib2_prob_string(*obj.section4[17+2:22+2]) +1131 def __set__(self, obj, value): +1132 pass +1133 +1134class PercentileValue: +1135 _key = {6:15, 10:15} +1136 def __get__(self, obj, objtype=None): +1137 pdtn = obj.section4[1] +1138 return obj.section4[self._key[pdtn]+2] +1139 def __set__(self, obj, value): +1140 pdtn = obj.section4[1] +1141 obj.section4[self._key[pdtn]+2] = value +1142 +1143class YearOfEndOfTimePeriod: +1144 _key = {8:15, 9:22, 10:16, 11:18, 12:17} +1145 def __get__(self, obj, objtype=None): +1146 pdtn = obj.section4[1] +1147 return obj.section4[self._key[pdtn]+2] +1148 def __set__(self, obj, value): +1149 pdtn = obj.section4[1] +1150 obj.section4[self._key[pdtn]+2] = value +1151 +1152class MonthOfEndOfTimePeriod: +1153 _key = {8:16, 9:23, 10:17, 11:19, 12:18} +1154 def __get__(self, obj, objtype=None): +1155 pdtn = obj.section4[1] +1156 return obj.section4[self._key[pdtn]+2] +1157 def __set__(self, obj, value): +1158 pdtn = obj.section4[1] +1159 obj.section4[self._key[pdtn]+2] = value +1160 +1161class DayOfEndOfTimePeriod: +1162 _key = {8:17, 9:24, 10:18, 11:20, 12:19} +1163 def __get__(self, obj, objtype=None): +1164 pdtn = obj.section4[1] +1165 return obj.section4[self._key[pdtn]+2] +1166 def __set__(self, obj, value): +1167 pdtn = obj.section4[1] +1168 obj.section4[self._key[pdtn]+2] = value +1169 +1170class HourOfEndOfTimePeriod: +1171 _key = {8:18, 9:25, 10:19, 11:21, 12:20} +1172 def __get__(self, obj, objtype=None): +1173 pdtn = obj.section4[1] +1174 return obj.section4[self._key[pdtn]+2] +1175 def __set__(self, obj, value): +1176 pdtn = obj.section4[1] +1177 obj.section4[self._key[pdtn]+2] = value +1178 +1179class MinuteOfEndOfTimePeriod: +1180 _key = {8:19, 9:26, 10:20, 11:22, 12:21} +1181 def __get__(self, obj, objtype=None): +1182 pdtn = obj.section4[1] +1183 return obj.section4[self._key[pdtn]+2] +1184 def __set__(self, obj, value): +1185 pdtn = obj.section4[1] +1186 obj.section4[self._key[pdtn]+2] = value +1187 +1188class SecondOfEndOfTimePeriod: +1189 _key = {8:20, 9:27, 10:21, 11:23, 12:22} +1190 def __get__(self, obj, objtype=None): +1191 pdtn = obj.section4[1] +1192 return obj.section4[self._key[pdtn]+2] +1193 def __set__(self, obj, value): +1194 pdtn = obj.section4[1] +1195 obj.section4[self._key[pdtn]+2] = value +1196 +1197class Duration: +1198 def __get__(self, obj, objtype=None): +1199 return utils.get_duration(obj.section4[1],obj.section4[2:]) +1200 def __set__(self, obj, value): +1201 pass +1202 +1203class ValidDate: +1204 _key = {8:slice(15,21), 9:slice(22,28), 10:slice(16,22), 11:slice(18,24), 12:slice(17,23)} +1205 def __get__(self, obj, objtype=None): +1206 pdtn = obj.section4[1] +1207 try: +1208 s = slice(self._key[pdtn].start+2,self._key[pdtn].stop+2) +1209 return datetime.datetime(*obj.section4[s]) +1210 except(KeyError): +1211 return obj.refDate + obj.leadTime +1212 def __set__(self, obj, value): +1213 pass +1214 +1215class NumberOfTimeRanges: +1216 _key = {8:21, 9:28, 10:22, 11:24, 12:23} +1217 def __get__(self, obj, objtype=None): +1218 pdtn = obj.section4[1] +1219 return obj.section4[self._key[pdtn]+2] +1220 def __set__(self, obj, value): +1221 pdtn = obj.section4[1] +1222 obj.section4[self._key[pdtn]+2] = value +1223 +1224class NumberOfMissingValues: +1225 _key = {8:22, 9:29, 10:23, 11:25, 12:24} +1226 def __get__(self, obj, objtype=None): +1227 pdtn = obj.section4[1] +1228 return obj.section4[self._key[pdtn]+2] +1229 def __set__(self, obj, value): +1230 pdtn = obj.section4[1] +1231 obj.section4[self._key[pdtn]+2] = value +1232 +1233class StatisticalProcess: +1234 _key = {8:23, 9:30, 10:24, 11:26, 12:25, 15:15} +1235 def __get__(self, obj, objtype=None): +1236 pdtn = obj.section4[1] +1237 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.10') +1238 def __set__(self, obj, value): +1239 pdtn = obj.section4[1] +1240 obj.section4[self._key[pdtn]+2] = value +1241 +1242class TypeOfTimeIncrementOfStatisticalProcess: +1243 _key = {8:24, 9:31, 10:25, 11:27, 12:26} +1244 def __get__(self, obj, objtype=None): +1245 pdtn = obj.section4[1] +1246 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.11') 1247 def __set__(self, obj, value): -1248 obj.section4[self._key[obj.pdtn]+2] = value -1249 -1250class ScaledValueOfFirstSize: -1251 _key = {48:5} -1252 def __get__(self, obj, objtype=None): -1253 return obj.section4[self._key[obj.pdtn]+2] -1254 def __set__(self, obj, value): -1255 obj.section4[self._key[obj.pdtn]+2] = value -1256 -1257class ScaleFactorOfSecondSize: -1258 _key = {48:6} -1259 def __get__(self, obj, objtype=None): -1260 return obj.section4[self._key[obj.pdtn]+2] -1261 def __set__(self, obj, value): -1262 obj.section4[self._key[obj.pdtn]+2] = value -1263 -1264class ScaledValueOfSecondSize: -1265 _key = {48:7} -1266 def __get__(self, obj, objtype=None): -1267 return obj.section4[self._key[obj.pdtn]+2] -1268 def __set__(self, obj, value): -1269 obj.section4[self._key[obj.pdtn]+2] = value -1270 -1271class TypeOfIntervalForAerosolWavelength: -1272 _key = {48:8} -1273 def __get__(self, obj, objtype=None): -1274 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.91') -1275 def __set__(self, obj, value): -1276 obj.section4[self._key[obj.pdtn]+2] = value +1248 pdtn = obj.section4[1] +1249 obj.section4[self._key[pdtn]+2] = value +1250 +1251class UnitOfTimeRangeOfStatisticalProcess: +1252 _key = {8:25, 9:32, 10:26, 11:28, 12:27} +1253 def __get__(self, obj, objtype=None): +1254 pdtn = obj.section4[1] +1255 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.4') +1256 def __set__(self, obj, value): +1257 pdtn = obj.section4[1] +1258 obj.section4[self._key[pdtn]+2] = value +1259 +1260class TimeRangeOfStatisticalProcess: +1261 _key = {8:26, 9:33, 10:27, 11:29, 12:28} +1262 def __get__(self, obj, objtype=None): +1263 pdtn = obj.section4[1] +1264 return obj.section4[self._key[pdtn]+2] +1265 def __set__(self, obj, value): +1266 pdtn = obj.section4[1] +1267 obj.section4[self._key[pdtn]+2] = value +1268 +1269class UnitOfTimeRangeOfSuccessiveFields: +1270 _key = {8:27, 9:34, 10:28, 11:30, 12:29} +1271 def __get__(self, obj, objtype=None): +1272 pdtn = obj.section4[1] +1273 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.4') +1274 def __set__(self, obj, value): +1275 pdtn = obj.section4[1] +1276 obj.section4[self._key[pdtn]+2] = value 1277 -1278class ScaleFactorOfFirstWavelength: -1279 _key = {48:9} +1278class TimeIncrementOfSuccessiveFields: +1279 _key = {8:28, 9:35, 10:29, 11:31, 12:30} 1280 def __get__(self, obj, objtype=None): -1281 return obj.section4[self._key[obj.pdtn]+2] -1282 def __set__(self, obj, value): -1283 obj.section4[self._key[obj.pdtn]+2] = value -1284 -1285class ScaledValueOfFirstWavelength: -1286 _key = {48:10} -1287 def __get__(self, obj, objtype=None): -1288 return obj.section4[self._key[obj.pdtn]+2] -1289 def __set__(self, obj, value): -1290 obj.section4[self._key[obj.pdtn]+2] = value -1291 -1292class ScaleFactorOfSecondWavelength: -1293 _key = {48:11} -1294 def __get__(self, obj, objtype=None): -1295 return obj.section4[self._key[obj.pdtn]+2] -1296 def __set__(self, obj, value): -1297 obj.section4[self._key[obj.pdtn]+2] = value -1298 -1299class ScaledValueOfSecondWavelength: -1300 _key = {48:12} -1301 def __get__(self, obj, objtype=None): -1302 return obj.section4[self._key[obj.pdtn]+2] -1303 def __set__(self, obj, value): -1304 obj.section4[self._key[obj.pdtn]+2] = value -1305 -1306@dataclass(init=False) -1307class ProductDefinitionTemplate0(): -1308 _len = 15 -1309 _num = 0 -1310 parameterCategory: int = field(init=False,repr=False,default=ParameterCategory()) -1311 parameterNumber: int = field(init=False,repr=False,default=ParameterNumber()) -1312 typeOfGeneratingProcess: Grib2Metadata = field(init=False,repr=False,default=TypeOfGeneratingProcess()) -1313 generatingProcess: Grib2Metadata = field(init=False, repr=False, default=GeneratingProcess()) -1314 backgroundGeneratingProcessIdentifier: int = field(init=False,repr=False,default=BackgroundGeneratingProcessIdentifier()) -1315 hoursAfterDataCutoff: int = field(init=False,repr=False,default=HoursAfterDataCutoff()) -1316 minutesAfterDataCutoff: int = field(init=False,repr=False,default=MinutesAfterDataCutoff()) -1317 unitOfTimeRange: Grib2Metadata = field(init=False,repr=False,default=UnitOfTimeRange()) -1318 forecastTime: int = field(init=False,repr=False,default=ForecastTime()) -1319 typeOfFirstFixedSurface: Grib2Metadata = field(init=False,repr=False,default=TypeOfFirstFixedSurface()) -1320 scaleFactorOfFirstFixedSurface: int = field(init=False,repr=False,default=ScaleFactorOfFirstFixedSurface()) -1321 scaledValueOfFirstFixedSurface: int = field(init=False,repr=False,default=ScaledValueOfFirstFixedSurface()) -1322 typeOfSecondFixedSurface: Grib2Metadata = field(init=False,repr=False,default=TypeOfSecondFixedSurface()) -1323 scaleFactorOfSecondFixedSurface: int = field(init=False,repr=False,default=ScaleFactorOfSecondFixedSurface()) -1324 scaledValueOfSecondFixedSurface: int = field(init=False,repr=False,default=ScaledValueOfSecondFixedSurface()) -1325 @classmethod -1326 @property -1327 def _attrs(cls): -1328 return list(cls.__dataclass_fields__.keys()) -1329 -1330@dataclass(init=False) -1331class ProductDefinitionTemplate1(ProductDefinitionTemplate0): -1332 _len = 18 -1333 _num = 1 -1334 typeOfEnsembleForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfEnsembleForecast()) -1335 perturbationNumber: int = field(init=False, repr=False, default=PerturbationNumber()) -1336 numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts()) -1337 @classmethod -1338 @property -1339 def _attrs(cls): -1340 return list(cls.__dataclass_fields__.keys()) -1341 -1342@dataclass(init=False) -1343class ProductDefinitionTemplate2(ProductDefinitionTemplate0): -1344 _len = 17 -1345 _num = 2 -1346 typeOfDerivedForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfDerivedForecast()) -1347 numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts()) -1348 @classmethod -1349 @property -1350 def _attrs(cls): -1351 return list(cls.__dataclass_fields__.keys()) -1352 -1353@dataclass(init=False) -1354class ProductDefinitionTemplate5(ProductDefinitionTemplate0): -1355 _len = 22 -1356 _num = 5 -1357 forecastProbabilityNumber: int = field(init=False, repr=False, default=ForecastProbabilityNumber()) -1358 totalNumberOfForecastProbabilities: int = field(init=False, repr=False, default=TotalNumberOfForecastProbabilities()) -1359 typeOfProbability: Grib2Metadata = field(init=False, repr=False, default=TypeOfProbability()) -1360 thresholdLowerLimit: float = field(init=False, repr=False, default=ThresholdLowerLimit()) -1361 thresholdUpperLimit: float = field(init=False, repr=False, default=ThresholdUpperLimit()) -1362 threshold: str = field(init=False, repr=False, default=Threshold()) -1363 @classmethod -1364 @property -1365 def _attrs(cls): -1366 return list(cls.__dataclass_fields__.keys()) +1281 pdtn = obj.section4[1] +1282 return obj.section4[self._key[pdtn]+2] +1283 def __set__(self, obj, value): +1284 pdtn = obj.section4[1] +1285 obj.section4[self._key[pdtn]+2] = value +1286 +1287class TypeOfStatisticalProcessing: +1288 _key = {15:16} +1289 def __get__(self, obj, objtype=None): +1290 pdtn = obj.section4[1] +1291 return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.15') +1292 def __set__(self, obj, value): +1293 pdtn = obj.section4[1] +1294 obj.section4[self._key[pdtn]+2] = value +1295 +1296class NumberOfDataPointsForSpatialProcessing: +1297 _key = {15:17} +1298 def __get__(self, obj, objtype=None): +1299 pdtn = obj.section4[1] +1300 return obj.section4[self._key[pdtn]+2] +1301 def __set__(self, obj, value): +1302 pdtn = obj.section4[1] +1303 obj.section4[self._key[pdtn]+2] = value +1304 +1305class TypeOfAerosol: +1306 _key = {48:2} +1307 def __get__(self, obj, objtype=None): +1308 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.233') +1309 def __set__(self, obj, value): +1310 obj.section4[self._key[obj.pdtn]+2] = value +1311 +1312class TypeOfIntervalForAerosolSize: +1313 _key = {48:3} +1314 def __get__(self, obj, objtype=None): +1315 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.91') +1316 def __set__(self, obj, value): +1317 obj.section4[self._key[obj.pdtn]+2] = value +1318 +1319class ScaleFactorOfFirstSize: +1320 _key = {48:4} +1321 def __get__(self, obj, objtype=None): +1322 return obj.section4[self._key[obj.pdtn]+2] +1323 def __set__(self, obj, value): +1324 obj.section4[self._key[obj.pdtn]+2] = value +1325 +1326class ScaledValueOfFirstSize: +1327 _key = {48:5} +1328 def __get__(self, obj, objtype=None): +1329 return obj.section4[self._key[obj.pdtn]+2] +1330 def __set__(self, obj, value): +1331 obj.section4[self._key[obj.pdtn]+2] = value +1332 +1333class ScaleFactorOfSecondSize: +1334 _key = {48:6} +1335 def __get__(self, obj, objtype=None): +1336 return obj.section4[self._key[obj.pdtn]+2] +1337 def __set__(self, obj, value): +1338 obj.section4[self._key[obj.pdtn]+2] = value +1339 +1340class ScaledValueOfSecondSize: +1341 _key = {48:7} +1342 def __get__(self, obj, objtype=None): +1343 return obj.section4[self._key[obj.pdtn]+2] +1344 def __set__(self, obj, value): +1345 obj.section4[self._key[obj.pdtn]+2] = value +1346 +1347class TypeOfIntervalForAerosolWavelength: +1348 _key = {48:8} +1349 def __get__(self, obj, objtype=None): +1350 return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.91') +1351 def __set__(self, obj, value): +1352 obj.section4[self._key[obj.pdtn]+2] = value +1353 +1354class ScaleFactorOfFirstWavelength: +1355 _key = {48:9} +1356 def __get__(self, obj, objtype=None): +1357 return obj.section4[self._key[obj.pdtn]+2] +1358 def __set__(self, obj, value): +1359 obj.section4[self._key[obj.pdtn]+2] = value +1360 +1361class ScaledValueOfFirstWavelength: +1362 _key = {48:10} +1363 def __get__(self, obj, objtype=None): +1364 return obj.section4[self._key[obj.pdtn]+2] +1365 def __set__(self, obj, value): +1366 obj.section4[self._key[obj.pdtn]+2] = value 1367 -1368@dataclass(init=False) -1369class ProductDefinitionTemplate6(ProductDefinitionTemplate0): -1370 _len = 16 -1371 _num = 6 -1372 percentileValue: int = field(init=False, repr=False, default=PercentileValue()) -1373 @classmethod -1374 @property -1375 def _attrs(cls): -1376 return list(cls.__dataclass_fields__.keys()) -1377 -1378@dataclass(init=False) -1379class ProductDefinitionTemplate8(ProductDefinitionTemplate0): -1380 _len = 29 -1381 _num = 8 -1382 yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod()) -1383 monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod()) -1384 dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod()) -1385 hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod()) -1386 minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod()) -1387 secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod()) -1388 numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges()) -1389 numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues()) -1390 statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess()) -1391 typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess()) -1392 unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess()) -1393 timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess()) -1394 unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields()) -1395 timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields()) -1396 @classmethod -1397 @property -1398 def _attrs(cls): -1399 return list(cls.__dataclass_fields__.keys()) -1400 -1401@dataclass(init=False) -1402class ProductDefinitionTemplate9(ProductDefinitionTemplate0): -1403 _len = 36 -1404 _num = 9 -1405 forecastProbabilityNumber: int = field(init=False, repr=False, default=ForecastProbabilityNumber()) -1406 totalNumberOfForecastProbabilities: int = field(init=False, repr=False, default=TotalNumberOfForecastProbabilities()) -1407 typeOfProbability: Grib2Metadata = field(init=False, repr=False, default=TypeOfProbability()) -1408 thresholdLowerLimit: float = field(init=False, repr=False, default=ThresholdLowerLimit()) -1409 thresholdUpperLimit: float = field(init=False, repr=False, default=ThresholdUpperLimit()) -1410 threshold: str = field(init=False, repr=False, default=Threshold()) -1411 yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod()) -1412 monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod()) -1413 dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod()) -1414 hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod()) -1415 minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod()) -1416 secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod()) -1417 numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges()) -1418 numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues()) -1419 statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess()) -1420 typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess()) -1421 unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess()) -1422 timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess()) -1423 unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields()) -1424 timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields()) -1425 @classmethod -1426 @property -1427 def _attrs(cls): -1428 return list(cls.__dataclass_fields__.keys()) -1429 -1430@dataclass(init=False) -1431class ProductDefinitionTemplate10(ProductDefinitionTemplate0): -1432 _len = 30 -1433 _num = 10 -1434 percentileValue: int = field(init=False, repr=False, default=PercentileValue()) -1435 yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod()) -1436 monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod()) -1437 dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod()) -1438 hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod()) -1439 minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod()) -1440 secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod()) -1441 numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges()) -1442 numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues()) -1443 statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess()) -1444 typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess()) -1445 unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess()) -1446 timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess()) -1447 unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields()) -1448 timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields()) -1449 @classmethod -1450 @property -1451 def _attrs(cls): -1452 return list(cls.__dataclass_fields__.keys()) -1453 -1454@dataclass(init=False) -1455class ProductDefinitionTemplate11(ProductDefinitionTemplate0): -1456 _len = 32 -1457 _num = 11 -1458 typeOfEnsembleForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfEnsembleForecast()) -1459 perturbationNumber: int = field(init=False, repr=False, default=PerturbationNumber()) -1460 numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts()) -1461 yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod()) -1462 monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod()) -1463 dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod()) -1464 hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod()) -1465 minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod()) -1466 secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod()) -1467 numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges()) -1468 numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues()) -1469 statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess()) -1470 typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess()) -1471 unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess()) -1472 timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess()) -1473 unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields()) -1474 timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields()) -1475 @classmethod -1476 @property -1477 def _attrs(cls): -1478 return list(cls.__dataclass_fields__.keys()) -1479 -1480@dataclass(init=False) -1481class ProductDefinitionTemplate12(ProductDefinitionTemplate0): -1482 _len = 31 -1483 _num = 12 -1484 typeOfDerivedForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfDerivedForecast()) -1485 numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts()) -1486 yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod()) -1487 monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod()) -1488 dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod()) -1489 hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod()) -1490 minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod()) -1491 secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod()) -1492 numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges()) -1493 numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues()) -1494 statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess()) -1495 typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess()) -1496 unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess()) -1497 timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess()) -1498 unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields()) -1499 timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields()) -1500 @classmethod -1501 @property -1502 def _attrs(cls): -1503 return list(cls.__dataclass_fields__.keys()) -1504 -1505@dataclass(init=False) -1506class ProductDefinitionTemplate15(ProductDefinitionTemplate0): -1507 _len = 18 -1508 _num = 15 -1509 statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess()) -1510 typeOfStatisticalProcessing: Grib2Metadata = field(init=False, repr=False, default=TypeOfStatisticalProcessing()) -1511 numberOfDataPointsForSpatialProcessing: int = field(init=False, repr=False, default=NumberOfDataPointsForSpatialProcessing()) -1512 @classmethod -1513 @property -1514 def _attrs(cls): -1515 return list(cls.__dataclass_fields__.keys()) -1516 -1517@dataclass(init=False) -1518class ProductDefinitionTemplate48(ProductDefinitionTemplate0): -1519 _len = 26 -1520 _num = 48 -1521 typeOfAerosol: Grib2Metadata = field(init=False, repr=False, default=TypeOfAerosol()) -1522 typeOfIntervalForAerosolSize: Grib2Metadata = field(init=False, repr=False, default=TypeOfIntervalForAerosolSize()) -1523 scaleFactorOfFirstSize: int = field(init=False, repr=False, default=ScaleFactorOfFirstSize()) -1524 scaledValueOfFirstSize: int = field(init=False, repr=False, default=ScaledValueOfFirstSize()) -1525 scaleFactorOfSecondSize: int = field(init=False, repr=False, default=ScaleFactorOfSecondSize()) -1526 scaledValueOfSecondSize: int = field(init=False, repr=False, default=ScaledValueOfSecondSize()) -1527 typeOfIntervalForAerosolWavelength: Grib2Metadata = field(init=False, repr=False, default=TypeOfIntervalForAerosolWavelength()) -1528 scaleFactorOfFirstWavelength: int = field(init=False, repr=False, default=ScaleFactorOfFirstWavelength()) -1529 scaledValueOfFirstWavelength: int = field(init=False, repr=False, default=ScaledValueOfFirstWavelength()) -1530 scaleFactorOfSecondWavelength: int = field(init=False, repr=False, default=ScaleFactorOfSecondWavelength()) -1531 scaledValueOfSecondWavelength: int = field(init=False, repr=False, default=ScaledValueOfSecondWavelength()) -1532 @classmethod -1533 @property -1534 def _attrs(cls): -1535 return list(cls.__dataclass_fields__.keys()) -1536 -1537_pdt_by_pdtn = { -1538 0: ProductDefinitionTemplate0, -1539 1: ProductDefinitionTemplate1, -1540 2: ProductDefinitionTemplate2, -1541 5: ProductDefinitionTemplate5, -1542 6: ProductDefinitionTemplate6, -1543 8: ProductDefinitionTemplate8, -1544 9: ProductDefinitionTemplate9, -1545 10: ProductDefinitionTemplate10, -1546 11: ProductDefinitionTemplate11, -1547 12: ProductDefinitionTemplate12, -1548 15: ProductDefinitionTemplate15, -1549 48: ProductDefinitionTemplate48, -1550 } -1551 -1552def pdt_class_by_pdtn(pdtn): -1553 return _pdt_by_pdtn[pdtn] -1554 -1555# ---------------------------------------------------------------------------------------- -1556# Descriptor Classes for Section 5 metadata. -1557# ---------------------------------------------------------------------------------------- -1558class NumberOfPackedValues: -1559 def __get__(self, obj, objtype=None): -1560 return obj.section5[0] -1561 def __set__(self, obj, value): -1562 pass +1368class ScaleFactorOfSecondWavelength: +1369 _key = {48:11} +1370 def __get__(self, obj, objtype=None): +1371 return obj.section4[self._key[obj.pdtn]+2] +1372 def __set__(self, obj, value): +1373 obj.section4[self._key[obj.pdtn]+2] = value +1374 +1375class ScaledValueOfSecondWavelength: +1376 _key = {48:12} +1377 def __get__(self, obj, objtype=None): +1378 return obj.section4[self._key[obj.pdtn]+2] +1379 def __set__(self, obj, value): +1380 obj.section4[self._key[obj.pdtn]+2] = value +1381 +1382@dataclass(init=False) +1383class ProductDefinitionTemplate0(): +1384 _len = 15 +1385 _num = 0 +1386 parameterCategory: int = field(init=False,repr=False,default=ParameterCategory()) +1387 parameterNumber: int = field(init=False,repr=False,default=ParameterNumber()) +1388 typeOfGeneratingProcess: Grib2Metadata = field(init=False,repr=False,default=TypeOfGeneratingProcess()) +1389 generatingProcess: Grib2Metadata = field(init=False, repr=False, default=GeneratingProcess()) +1390 backgroundGeneratingProcessIdentifier: int = field(init=False,repr=False,default=BackgroundGeneratingProcessIdentifier()) +1391 hoursAfterDataCutoff: int = field(init=False,repr=False,default=HoursAfterDataCutoff()) +1392 minutesAfterDataCutoff: int = field(init=False,repr=False,default=MinutesAfterDataCutoff()) +1393 unitOfForecastTime: Grib2Metadata = field(init=False,repr=False,default=UnitOfForecastTime()) +1394 valueOfForecastTime: int = field(init=False,repr=False,default=ValueOfForecastTime()) +1395 typeOfFirstFixedSurface: Grib2Metadata = field(init=False,repr=False,default=TypeOfFirstFixedSurface()) +1396 scaleFactorOfFirstFixedSurface: int = field(init=False,repr=False,default=ScaleFactorOfFirstFixedSurface()) +1397 scaledValueOfFirstFixedSurface: int = field(init=False,repr=False,default=ScaledValueOfFirstFixedSurface()) +1398 typeOfSecondFixedSurface: Grib2Metadata = field(init=False,repr=False,default=TypeOfSecondFixedSurface()) +1399 scaleFactorOfSecondFixedSurface: int = field(init=False,repr=False,default=ScaleFactorOfSecondFixedSurface()) +1400 scaledValueOfSecondFixedSurface: int = field(init=False,repr=False,default=ScaledValueOfSecondFixedSurface()) +1401 @classmethod +1402 @property +1403 def _attrs(cls): +1404 return list(cls.__dataclass_fields__.keys()) +1405 +1406@dataclass(init=False) +1407class ProductDefinitionTemplate1(ProductDefinitionTemplate0): +1408 _len = 18 +1409 _num = 1 +1410 typeOfEnsembleForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfEnsembleForecast()) +1411 perturbationNumber: int = field(init=False, repr=False, default=PerturbationNumber()) +1412 numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts()) +1413 @classmethod +1414 @property +1415 def _attrs(cls): +1416 return list(cls.__dataclass_fields__.keys()) +1417 +1418@dataclass(init=False) +1419class ProductDefinitionTemplate2(ProductDefinitionTemplate0): +1420 _len = 17 +1421 _num = 2 +1422 typeOfDerivedForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfDerivedForecast()) +1423 numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts()) +1424 @classmethod +1425 @property +1426 def _attrs(cls): +1427 return list(cls.__dataclass_fields__.keys()) +1428 +1429@dataclass(init=False) +1430class ProductDefinitionTemplate5(ProductDefinitionTemplate0): +1431 _len = 22 +1432 _num = 5 +1433 forecastProbabilityNumber: int = field(init=False, repr=False, default=ForecastProbabilityNumber()) +1434 totalNumberOfForecastProbabilities: int = field(init=False, repr=False, default=TotalNumberOfForecastProbabilities()) +1435 typeOfProbability: Grib2Metadata = field(init=False, repr=False, default=TypeOfProbability()) +1436 scaleFactorOfThresholdLowerLimit: float = field(init=False, repr=False, default=ScaleFactorOfThresholdLowerLimit()) +1437 scaledValueOfThresholdLowerLimit: float = field(init=False, repr=False, default=ScaledValueOfThresholdLowerLimit()) +1438 scaleFactorOfThresholdUpperLimit: float = field(init=False, repr=False, default=ScaleFactorOfThresholdUpperLimit()) +1439 scaledValueOfThresholdUpperLimit: float = field(init=False, repr=False, default=ScaledValueOfThresholdUpperLimit()) +1440 thresholdLowerLimit: float = field(init=False, repr=False, default=ThresholdLowerLimit()) +1441 thresholdUpperLimit: float = field(init=False, repr=False, default=ThresholdUpperLimit()) +1442 threshold: str = field(init=False, repr=False, default=Threshold()) +1443 @classmethod +1444 @property +1445 def _attrs(cls): +1446 return list(cls.__dataclass_fields__.keys()) +1447 +1448@dataclass(init=False) +1449class ProductDefinitionTemplate6(ProductDefinitionTemplate0): +1450 _len = 16 +1451 _num = 6 +1452 percentileValue: int = field(init=False, repr=False, default=PercentileValue()) +1453 @classmethod +1454 @property +1455 def _attrs(cls): +1456 return list(cls.__dataclass_fields__.keys()) +1457 +1458@dataclass(init=False) +1459class ProductDefinitionTemplate8(ProductDefinitionTemplate0): +1460 _len = 29 +1461 _num = 8 +1462 yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod()) +1463 monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod()) +1464 dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod()) +1465 hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod()) +1466 minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod()) +1467 secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod()) +1468 numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges()) +1469 numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues()) +1470 statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess()) +1471 typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess()) +1472 unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess()) +1473 timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess()) +1474 unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields()) +1475 timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields()) +1476 @classmethod +1477 @property +1478 def _attrs(cls): +1479 return list(cls.__dataclass_fields__.keys()) +1480 +1481@dataclass(init=False) +1482class ProductDefinitionTemplate9(ProductDefinitionTemplate0): +1483 _len = 36 +1484 _num = 9 +1485 forecastProbabilityNumber: int = field(init=False, repr=False, default=ForecastProbabilityNumber()) +1486 totalNumberOfForecastProbabilities: int = field(init=False, repr=False, default=TotalNumberOfForecastProbabilities()) +1487 typeOfProbability: Grib2Metadata = field(init=False, repr=False, default=TypeOfProbability()) +1488 scaleFactorOfThresholdLowerLimit: float = field(init=False, repr=False, default=ScaleFactorOfThresholdLowerLimit()) +1489 scaledValueOfThresholdLowerLimit: float = field(init=False, repr=False, default=ScaledValueOfThresholdLowerLimit()) +1490 scaleFactorOfThresholdUpperLimit: float = field(init=False, repr=False, default=ScaleFactorOfThresholdUpperLimit()) +1491 scaledValueOfThresholdUpperLimit: float = field(init=False, repr=False, default=ScaledValueOfThresholdUpperLimit()) +1492 thresholdLowerLimit: float = field(init=False, repr=False, default=ThresholdLowerLimit()) +1493 thresholdUpperLimit: float = field(init=False, repr=False, default=ThresholdUpperLimit()) +1494 threshold: str = field(init=False, repr=False, default=Threshold()) +1495 yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod()) +1496 monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod()) +1497 dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod()) +1498 hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod()) +1499 minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod()) +1500 secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod()) +1501 numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges()) +1502 numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues()) +1503 statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess()) +1504 typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess()) +1505 unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess()) +1506 timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess()) +1507 unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields()) +1508 timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields()) +1509 @classmethod +1510 @property +1511 def _attrs(cls): +1512 return list(cls.__dataclass_fields__.keys()) +1513 +1514@dataclass(init=False) +1515class ProductDefinitionTemplate10(ProductDefinitionTemplate0): +1516 _len = 30 +1517 _num = 10 +1518 percentileValue: int = field(init=False, repr=False, default=PercentileValue()) +1519 yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod()) +1520 monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod()) +1521 dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod()) +1522 hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod()) +1523 minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod()) +1524 secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod()) +1525 numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges()) +1526 numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues()) +1527 statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess()) +1528 typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess()) +1529 unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess()) +1530 timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess()) +1531 unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields()) +1532 timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields()) +1533 @classmethod +1534 @property +1535 def _attrs(cls): +1536 return list(cls.__dataclass_fields__.keys()) +1537 +1538@dataclass(init=False) +1539class ProductDefinitionTemplate11(ProductDefinitionTemplate0): +1540 _len = 32 +1541 _num = 11 +1542 typeOfEnsembleForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfEnsembleForecast()) +1543 perturbationNumber: int = field(init=False, repr=False, default=PerturbationNumber()) +1544 numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts()) +1545 yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod()) +1546 monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod()) +1547 dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod()) +1548 hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod()) +1549 minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod()) +1550 secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod()) +1551 numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges()) +1552 numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues()) +1553 statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess()) +1554 typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess()) +1555 unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess()) +1556 timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess()) +1557 unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields()) +1558 timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields()) +1559 @classmethod +1560 @property +1561 def _attrs(cls): +1562 return list(cls.__dataclass_fields__.keys()) 1563 -1564class DataRepresentationTemplateNumber: -1565 def __get__(self, obj, objtype=None): -1566 return Grib2Metadata(obj.section5[1],table='5.0') -1567 def __set__(self, obj, value): -1568 pass -1569 -1570class DataRepresentationTemplate: -1571 def __get__(self, obj, objtype=None): -1572 return obj.section5[2:] -1573 def __set__(self, obj, value): -1574 raise NotImplementedError -1575 -1576class RefValue: -1577 def __get__(self, obj, objtype=None): -1578 return utils.ieee_int_to_float(obj.section5[0+2]) -1579 def __set__(self, obj, value): -1580 pass -1581 -1582class BinScaleFactor: -1583 def __get__(self, obj, objtype=None): -1584 return obj.section5[1+2] -1585 def __set__(self, obj, value): -1586 obj.section5[1+2] = value -1587 -1588class DecScaleFactor: -1589 def __get__(self, obj, objtype=None): -1590 return obj.section5[2+2] -1591 def __set__(self, obj, value): -1592 obj.section5[2+2] = value -1593 -1594class NBitsPacking: -1595 def __get__(self, obj, objtype=None): -1596 return obj.section5[3+2] -1597 def __set__(self, obj, value): -1598 obj.section5[3+2] = value -1599 -1600class TypeOfValues: -1601 def __get__(self, obj, objtype=None): -1602 return Grib2Metadata(obj.section5[4+2],table='5.1') -1603 def __set__(self, obj, value): -1604 obj.section5[4+2] = value -1605 -1606class GroupSplittingMethod: -1607 def __get__(self, obj, objtype=None): -1608 return Grib2Metadata(obj.section5[5+2],table='5.4') -1609 def __set__(self, obj, value): -1610 obj.section5[5+2] = value -1611 -1612class TypeOfMissingValueManagement: -1613 def __get__(self, obj, objtype=None): -1614 return Grib2Metadata(obj.section5[6+2],table='5.5') -1615 def __set__(self, obj, value): -1616 obj.section5[6+2] = value -1617 -1618class PriMissingValue: -1619 def __get__(self, obj, objtype=None): -1620 if obj.typeOfValues == 0: -1621 return utils.ieee_int_to_float(obj.section5[7+2]) if obj.section5[6+2] in {1,2} and obj.section5[7+2] != 255 else None -1622 elif obj.typeOfValues == 1: -1623 return obj.section5[7+2] if obj.section5[6+2] in [1,2] else None -1624 def __set__(self, obj, value): -1625 if obj.typeOfValues == 0: -1626 obj.section5[7+2] = utils.ieee_float_to_int(value) -1627 elif self.typeOfValues == 1: -1628 obj.section5[7+2] = int(value) -1629 obj.section5[6+2] = 1 -1630 -1631class SecMissingValue: -1632 def __get__(self, obj, objtype=None): -1633 if obj.typeOfValues == 0: -1634 return utils.ieee_int_to_float(obj.section5[8+2]) if obj.section5[6+2] in {1,2} and obj.section5[8+2] != 255 else None -1635 elif obj.typeOfValues == 1: -1636 return obj.section5[8+2] if obj.section5[6+2] in {1,2} else None -1637 def __set__(self, obj, value): -1638 if obj.typeOfValues == 0: -1639 obj.section5[8+2] = utils.ieee_float_to_int(value) -1640 elif self.typeOfValues == 1: -1641 obj.section5[8+2] = int(value) -1642 obj.section5[6+2] = 2 -1643 -1644class NGroups: -1645 def __get__(self, obj, objtype=None): -1646 return obj.section5[9+2] -1647 def __set__(self, obj, value): -1648 pass -1649 -1650class RefGroupWidth: -1651 def __get__(self, obj, objtype=None): -1652 return obj.section5[10+2] -1653 def __set__(self, obj, value): -1654 pass -1655 -1656class NBitsGroupWidth: -1657 def __get__(self, obj, objtype=None): -1658 return obj.section5[11+2] -1659 def __set__(self, obj, value): -1660 pass -1661 -1662class RefGroupLength: -1663 def __get__(self, obj, objtype=None): -1664 return obj.section5[12+2] -1665 def __set__(self, obj, value): -1666 pass -1667 -1668class GroupLengthIncrement: -1669 def __get__(self, obj, objtype=None): -1670 return obj.section5[13+2] -1671 def __set__(self, obj, value): -1672 pass -1673 -1674class LengthOfLastGroup: -1675 def __get__(self, obj, objtype=None): -1676 return obj.section5[14+2] -1677 def __set__(self, obj, value): -1678 pass -1679 -1680class NBitsScaledGroupLength: -1681 def __get__(self, obj, objtype=None): -1682 return obj.section5[15+2] -1683 def __set__(self, obj, value): -1684 pass -1685 -1686class SpatialDifferenceOrder: -1687 def __get__(self, obj, objtype=None): -1688 return Grib2Metadata(obj.section5[16+2],table='5.6') -1689 def __set__(self, obj, value): -1690 obj.section5[16+2] = value -1691 -1692class NBytesSpatialDifference: -1693 def __get__(self, obj, objtype=None): -1694 return obj.section5[17+2] -1695 def __set__(self, obj, value): -1696 pass -1697 -1698class Precision: -1699 def __get__(self, obj, objtype=None): -1700 return Grib2Metadata(obj.section5[0+2],table='5.7') -1701 def __set__(self, obj, value): -1702 obj.section5[0+2] = value -1703 -1704class TypeOfCompression: -1705 def __get__(self, obj, objtype=None): -1706 return Grib2Metadata(obj.section5[5+2],table='5.40') -1707 def __set__(self, obj, value): -1708 obj.section5[5+2] = value -1709 -1710class TargetCompressionRatio: -1711 def __get__(self, obj, objtype=None): -1712 return obj.section5[6+2] -1713 def __set__(self, obj, value): -1714 pass -1715 -1716class RealOfCoefficient: -1717 def __get__(self, obj, objtype=None): -1718 return utils.ieee_int_to_float(obj.section5[4+2]) -1719 def __set__(self, obj, value): -1720 obj.section5[4+2] = utils.ieee_float_to_int(float(value)) -1721 -1722class CompressionOptionsMask: -1723 def __get__(self, obj, objtype=None): -1724 return obj.section5[5+2] -1725 def __set__(self, obj, value): -1726 obj.section5[5+2] = value +1564@dataclass(init=False) +1565class ProductDefinitionTemplate12(ProductDefinitionTemplate0): +1566 _len = 31 +1567 _num = 12 +1568 typeOfDerivedForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfDerivedForecast()) +1569 numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts()) +1570 yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod()) +1571 monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod()) +1572 dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod()) +1573 hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod()) +1574 minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod()) +1575 secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod()) +1576 numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges()) +1577 numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues()) +1578 statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess()) +1579 typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess()) +1580 unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess()) +1581 timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess()) +1582 unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields()) +1583 timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields()) +1584 @classmethod +1585 @property +1586 def _attrs(cls): +1587 return list(cls.__dataclass_fields__.keys()) +1588 +1589@dataclass(init=False) +1590class ProductDefinitionTemplate15(ProductDefinitionTemplate0): +1591 _len = 18 +1592 _num = 15 +1593 statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess()) +1594 typeOfStatisticalProcessing: Grib2Metadata = field(init=False, repr=False, default=TypeOfStatisticalProcessing()) +1595 numberOfDataPointsForSpatialProcessing: int = field(init=False, repr=False, default=NumberOfDataPointsForSpatialProcessing()) +1596 @classmethod +1597 @property +1598 def _attrs(cls): +1599 return list(cls.__dataclass_fields__.keys()) +1600 +1601@dataclass(init=False) +1602class ProductDefinitionTemplate48(ProductDefinitionTemplate0): +1603 _len = 26 +1604 _num = 48 +1605 typeOfAerosol: Grib2Metadata = field(init=False, repr=False, default=TypeOfAerosol()) +1606 typeOfIntervalForAerosolSize: Grib2Metadata = field(init=False, repr=False, default=TypeOfIntervalForAerosolSize()) +1607 scaleFactorOfFirstSize: int = field(init=False, repr=False, default=ScaleFactorOfFirstSize()) +1608 scaledValueOfFirstSize: int = field(init=False, repr=False, default=ScaledValueOfFirstSize()) +1609 scaleFactorOfSecondSize: int = field(init=False, repr=False, default=ScaleFactorOfSecondSize()) +1610 scaledValueOfSecondSize: int = field(init=False, repr=False, default=ScaledValueOfSecondSize()) +1611 typeOfIntervalForAerosolWavelength: Grib2Metadata = field(init=False, repr=False, default=TypeOfIntervalForAerosolWavelength()) +1612 scaleFactorOfFirstWavelength: int = field(init=False, repr=False, default=ScaleFactorOfFirstWavelength()) +1613 scaledValueOfFirstWavelength: int = field(init=False, repr=False, default=ScaledValueOfFirstWavelength()) +1614 scaleFactorOfSecondWavelength: int = field(init=False, repr=False, default=ScaleFactorOfSecondWavelength()) +1615 scaledValueOfSecondWavelength: int = field(init=False, repr=False, default=ScaledValueOfSecondWavelength()) +1616 @classmethod +1617 @property +1618 def _attrs(cls): +1619 return list(cls.__dataclass_fields__.keys()) +1620 +1621_pdt_by_pdtn = { +1622 0: ProductDefinitionTemplate0, +1623 1: ProductDefinitionTemplate1, +1624 2: ProductDefinitionTemplate2, +1625 5: ProductDefinitionTemplate5, +1626 6: ProductDefinitionTemplate6, +1627 8: ProductDefinitionTemplate8, +1628 9: ProductDefinitionTemplate9, +1629 10: ProductDefinitionTemplate10, +1630 11: ProductDefinitionTemplate11, +1631 12: ProductDefinitionTemplate12, +1632 15: ProductDefinitionTemplate15, +1633 48: ProductDefinitionTemplate48, +1634 } +1635 +1636def pdt_class_by_pdtn(pdtn): +1637 return _pdt_by_pdtn[pdtn] +1638 +1639# ---------------------------------------------------------------------------------------- +1640# Descriptor Classes for Section 5 metadata. +1641# ---------------------------------------------------------------------------------------- +1642class NumberOfPackedValues: +1643 def __get__(self, obj, objtype=None): +1644 return obj.section5[0] +1645 def __set__(self, obj, value): +1646 pass +1647 +1648class DataRepresentationTemplateNumber: +1649 def __get__(self, obj, objtype=None): +1650 return Grib2Metadata(obj.section5[1],table='5.0') +1651 def __set__(self, obj, value): +1652 pass +1653 +1654class DataRepresentationTemplate: +1655 def __get__(self, obj, objtype=None): +1656 return obj.section5[2:] +1657 def __set__(self, obj, value): +1658 raise NotImplementedError +1659 +1660class RefValue: +1661 def __get__(self, obj, objtype=None): +1662 return utils.ieee_int_to_float(obj.section5[0+2]) +1663 def __set__(self, obj, value): +1664 pass +1665 +1666class BinScaleFactor: +1667 def __get__(self, obj, objtype=None): +1668 return obj.section5[1+2] +1669 def __set__(self, obj, value): +1670 obj.section5[1+2] = value +1671 +1672class DecScaleFactor: +1673 def __get__(self, obj, objtype=None): +1674 return obj.section5[2+2] +1675 def __set__(self, obj, value): +1676 obj.section5[2+2] = value +1677 +1678class NBitsPacking: +1679 def __get__(self, obj, objtype=None): +1680 return obj.section5[3+2] +1681 def __set__(self, obj, value): +1682 obj.section5[3+2] = value +1683 +1684class TypeOfValues: +1685 def __get__(self, obj, objtype=None): +1686 return Grib2Metadata(obj.section5[4+2],table='5.1') +1687 def __set__(self, obj, value): +1688 obj.section5[4+2] = value +1689 +1690class GroupSplittingMethod: +1691 def __get__(self, obj, objtype=None): +1692 return Grib2Metadata(obj.section5[5+2],table='5.4') +1693 def __set__(self, obj, value): +1694 obj.section5[5+2] = value +1695 +1696class TypeOfMissingValueManagement: +1697 def __get__(self, obj, objtype=None): +1698 return Grib2Metadata(obj.section5[6+2],table='5.5') +1699 def __set__(self, obj, value): +1700 obj.section5[6+2] = value +1701 +1702class PriMissingValue: +1703 def __get__(self, obj, objtype=None): +1704 if obj.typeOfValues == 0: +1705 return utils.ieee_int_to_float(obj.section5[7+2]) if obj.section5[6+2] in {1,2} and obj.section5[7+2] != 255 else None +1706 elif obj.typeOfValues == 1: +1707 return obj.section5[7+2] if obj.section5[6+2] in [1,2] else None +1708 def __set__(self, obj, value): +1709 if obj.typeOfValues == 0: +1710 obj.section5[7+2] = utils.ieee_float_to_int(value) +1711 elif self.typeOfValues == 1: +1712 obj.section5[7+2] = int(value) +1713 obj.section5[6+2] = 1 +1714 +1715class SecMissingValue: +1716 def __get__(self, obj, objtype=None): +1717 if obj.typeOfValues == 0: +1718 return utils.ieee_int_to_float(obj.section5[8+2]) if obj.section5[6+2] in {1,2} and obj.section5[8+2] != 255 else None +1719 elif obj.typeOfValues == 1: +1720 return obj.section5[8+2] if obj.section5[6+2] in {1,2} else None +1721 def __set__(self, obj, value): +1722 if obj.typeOfValues == 0: +1723 obj.section5[8+2] = utils.ieee_float_to_int(value) +1724 elif self.typeOfValues == 1: +1725 obj.section5[8+2] = int(value) +1726 obj.section5[6+2] = 2 1727 -1728class BlockSize: +1728class NGroups: 1729 def __get__(self, obj, objtype=None): -1730 return obj.section5[6+2] +1730 return obj.section5[9+2] 1731 def __set__(self, obj, value): -1732 obj.section5[6+2] = value +1732 pass 1733 -1734class RefSampleInterval: +1734class RefGroupWidth: 1735 def __get__(self, obj, objtype=None): -1736 return obj.section5[7+2] +1736 return obj.section5[10+2] 1737 def __set__(self, obj, value): -1738 obj.section5[7+2] = value +1738 pass 1739 -1740@dataclass(init=False) -1741class DataRepresentationTemplate0(): -1742 _len = 5 -1743 _num = 0 -1744 _packingScheme = 'simple' -1745 refValue: float = field(init=False, repr=False, default=RefValue()) -1746 binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor()) -1747 decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor()) -1748 nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking()) -1749 @classmethod -1750 @property -1751 def _attrs(cls): -1752 return list(cls.__dataclass_fields__.keys()) -1753 -1754@dataclass(init=False) -1755class DataRepresentationTemplate2(): -1756 _len = 16 -1757 _num = 2 -1758 _packingScheme = 'complex' -1759 refValue: float = field(init=False, repr=False, default=RefValue()) -1760 binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor()) -1761 decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor()) -1762 nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking()) -1763 groupSplittingMethod: Grib2Metadata = field(init=False, repr=False, default=GroupSplittingMethod()) -1764 typeOfMissingValueManagement: Grib2Metadata = field(init=False, repr=False, default=TypeOfMissingValueManagement()) -1765 priMissingValue: [float, int] = field(init=False, repr=False, default=PriMissingValue()) -1766 secMissingValue: [float, int] = field(init=False, repr=False, default=SecMissingValue()) -1767 nGroups: int = field(init=False, repr=False, default=NGroups()) -1768 refGroupWidth: int = field(init=False, repr=False, default=RefGroupWidth()) -1769 nBitsGroupWidth: int = field(init=False, repr=False, default=NBitsGroupWidth()) -1770 refGroupLength: int = field(init=False, repr=False, default=RefGroupLength()) -1771 groupLengthIncrement: int = field(init=False, repr=False, default=GroupLengthIncrement()) -1772 lengthOfLastGroup: int = field(init=False, repr=False, default=LengthOfLastGroup()) -1773 nBitsScaledGroupLength: int = field(init=False, repr=False, default=NBitsScaledGroupLength()) -1774 @classmethod -1775 @property -1776 def _attrs(cls): -1777 return list(cls.__dataclass_fields__.keys()) -1778 -1779@dataclass(init=False) -1780class DataRepresentationTemplate3(): -1781 _len = 18 -1782 _num = 3 -1783 _packingScheme = 'complex-spdiff' -1784 refValue: float = field(init=False, repr=False, default=RefValue()) -1785 binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor()) -1786 decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor()) -1787 nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking()) -1788 groupSplittingMethod: Grib2Metadata = field(init=False, repr=False, default=GroupSplittingMethod()) -1789 typeOfMissingValueManagement: Grib2Metadata = field(init=False, repr=False, default=TypeOfMissingValueManagement()) -1790 priMissingValue: [float, int] = field(init=False, repr=False, default=PriMissingValue()) -1791 secMissingValue: [float, int] = field(init=False, repr=False, default=SecMissingValue()) -1792 nGroups: int = field(init=False, repr=False, default=NGroups()) -1793 refGroupWidth: int = field(init=False, repr=False, default=RefGroupWidth()) -1794 nBitsGroupWidth: int = field(init=False, repr=False, default=NBitsGroupWidth()) -1795 refGroupLength: int = field(init=False, repr=False, default=RefGroupLength()) -1796 groupLengthIncrement: int = field(init=False, repr=False, default=GroupLengthIncrement()) -1797 lengthOfLastGroup: int = field(init=False, repr=False, default=LengthOfLastGroup()) -1798 nBitsScaledGroupLength: int = field(init=False, repr=False, default=NBitsScaledGroupLength()) -1799 spatialDifferenceOrder: Grib2Metadata = field(init=False, repr=False, default=SpatialDifferenceOrder()) -1800 nBytesSpatialDifference: int = field(init=False, repr=False, default=NBytesSpatialDifference()) -1801 @classmethod -1802 @property -1803 def _attrs(cls): -1804 return list(cls.__dataclass_fields__.keys()) +1740class NBitsGroupWidth: +1741 def __get__(self, obj, objtype=None): +1742 return obj.section5[11+2] +1743 def __set__(self, obj, value): +1744 pass +1745 +1746class RefGroupLength: +1747 def __get__(self, obj, objtype=None): +1748 return obj.section5[12+2] +1749 def __set__(self, obj, value): +1750 pass +1751 +1752class GroupLengthIncrement: +1753 def __get__(self, obj, objtype=None): +1754 return obj.section5[13+2] +1755 def __set__(self, obj, value): +1756 pass +1757 +1758class LengthOfLastGroup: +1759 def __get__(self, obj, objtype=None): +1760 return obj.section5[14+2] +1761 def __set__(self, obj, value): +1762 pass +1763 +1764class NBitsScaledGroupLength: +1765 def __get__(self, obj, objtype=None): +1766 return obj.section5[15+2] +1767 def __set__(self, obj, value): +1768 pass +1769 +1770class SpatialDifferenceOrder: +1771 def __get__(self, obj, objtype=None): +1772 return Grib2Metadata(obj.section5[16+2],table='5.6') +1773 def __set__(self, obj, value): +1774 obj.section5[16+2] = value +1775 +1776class NBytesSpatialDifference: +1777 def __get__(self, obj, objtype=None): +1778 return obj.section5[17+2] +1779 def __set__(self, obj, value): +1780 pass +1781 +1782class Precision: +1783 def __get__(self, obj, objtype=None): +1784 return Grib2Metadata(obj.section5[0+2],table='5.7') +1785 def __set__(self, obj, value): +1786 obj.section5[0+2] = value +1787 +1788class TypeOfCompression: +1789 def __get__(self, obj, objtype=None): +1790 return Grib2Metadata(obj.section5[5+2],table='5.40') +1791 def __set__(self, obj, value): +1792 obj.section5[5+2] = value +1793 +1794class TargetCompressionRatio: +1795 def __get__(self, obj, objtype=None): +1796 return obj.section5[6+2] +1797 def __set__(self, obj, value): +1798 pass +1799 +1800class RealOfCoefficient: +1801 def __get__(self, obj, objtype=None): +1802 return utils.ieee_int_to_float(obj.section5[4+2]) +1803 def __set__(self, obj, value): +1804 obj.section5[4+2] = utils.ieee_float_to_int(float(value)) 1805 -1806@dataclass(init=False) -1807class DataRepresentationTemplate4(): -1808 _len = 1 -1809 _num = 4 -1810 _packingScheme = 'ieee-float' -1811 precision: Grib2Metadata = field(init=False, repr=False, default=Precision()) -1812 @classmethod -1813 @property -1814 def _attrs(cls): -1815 return list(cls.__dataclass_fields__.keys()) -1816 -1817@dataclass(init=False) -1818class DataRepresentationTemplate40(): -1819 _len = 7 -1820 _num = 40 -1821 _packingScheme = 'jpeg' -1822 refValue: float = field(init=False, repr=False, default=RefValue()) -1823 binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor()) -1824 decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor()) -1825 nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking()) -1826 typeOfCompression: Grib2Metadata = field(init=False, repr=False, default=TypeOfCompression()) -1827 targetCompressionRatio: int = field(init=False, repr=False, default=TargetCompressionRatio()) -1828 @classmethod -1829 @property -1830 def _attrs(cls): -1831 return list(cls.__dataclass_fields__.keys()) -1832 -1833@dataclass(init=False) -1834class DataRepresentationTemplate41(): -1835 _len = 5 -1836 _num = 41 -1837 _packingScheme = 'png' -1838 refValue: float = field(init=False, repr=False, default=RefValue()) -1839 binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor()) -1840 decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor()) -1841 nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking()) -1842 @classmethod -1843 @property -1844 def _attrs(cls): -1845 return list(cls.__dataclass_fields__.keys()) -1846 -1847@dataclass(init=False) -1848class DataRepresentationTemplate42(): -1849 _len = 8 -1850 _num = 42 -1851 _packingScheme = 'aec' -1852 refValue: float = field(init=False, repr=False, default=RefValue()) -1853 binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor()) -1854 decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor()) -1855 nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking()) -1856 compressionOptionsMask: int = field(init=False, repr=False, default=CompressionOptionsMask()) -1857 blockSize: int = field(init=False, repr=False, default=BlockSize()) -1858 refSampleInterval: int = field(init=False, repr=False, default=RefSampleInterval()) -1859 @classmethod -1860 @property -1861 def _attrs(cls): -1862 return list(cls.__dataclass_fields__.keys()) -1863 -1864@dataclass(init=False) -1865class DataRepresentationTemplate50(): -1866 _len = 5 -1867 _num = 0 -1868 _packingScheme = 'spectral-simple' -1869 refValue: float = field(init=False, repr=False, default=RefValue()) -1870 binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor()) -1871 decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor()) -1872 nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking()) -1873 realOfCoefficient: float = field(init=False, repr=False, default=RealOfCoefficient()) -1874 @classmethod -1875 @property -1876 def _attrs(cls): -1877 return list(cls.__dataclass_fields__.keys()) -1878 -1879_drt_by_drtn = { -1880 0: DataRepresentationTemplate0, -1881 2: DataRepresentationTemplate2, -1882 3: DataRepresentationTemplate3, -1883 4: DataRepresentationTemplate4, -1884 40: DataRepresentationTemplate40, -1885 41: DataRepresentationTemplate41, -1886 42: DataRepresentationTemplate42, -1887 50: DataRepresentationTemplate50, -1888 } +1806class CompressionOptionsMask: +1807 def __get__(self, obj, objtype=None): +1808 return obj.section5[5+2] +1809 def __set__(self, obj, value): +1810 obj.section5[5+2] = value +1811 +1812class BlockSize: +1813 def __get__(self, obj, objtype=None): +1814 return obj.section5[6+2] +1815 def __set__(self, obj, value): +1816 obj.section5[6+2] = value +1817 +1818class RefSampleInterval: +1819 def __get__(self, obj, objtype=None): +1820 return obj.section5[7+2] +1821 def __set__(self, obj, value): +1822 obj.section5[7+2] = value +1823 +1824@dataclass(init=False) +1825class DataRepresentationTemplate0(): +1826 _len = 5 +1827 _num = 0 +1828 _packingScheme = 'simple' +1829 refValue: float = field(init=False, repr=False, default=RefValue()) +1830 binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor()) +1831 decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor()) +1832 nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking()) +1833 @classmethod +1834 @property +1835 def _attrs(cls): +1836 return list(cls.__dataclass_fields__.keys()) +1837 +1838@dataclass(init=False) +1839class DataRepresentationTemplate2(): +1840 _len = 16 +1841 _num = 2 +1842 _packingScheme = 'complex' +1843 refValue: float = field(init=False, repr=False, default=RefValue()) +1844 binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor()) +1845 decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor()) +1846 nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking()) +1847 groupSplittingMethod: Grib2Metadata = field(init=False, repr=False, default=GroupSplittingMethod()) +1848 typeOfMissingValueManagement: Grib2Metadata = field(init=False, repr=False, default=TypeOfMissingValueManagement()) +1849 priMissingValue: [float, int] = field(init=False, repr=False, default=PriMissingValue()) +1850 secMissingValue: [float, int] = field(init=False, repr=False, default=SecMissingValue()) +1851 nGroups: int = field(init=False, repr=False, default=NGroups()) +1852 refGroupWidth: int = field(init=False, repr=False, default=RefGroupWidth()) +1853 nBitsGroupWidth: int = field(init=False, repr=False, default=NBitsGroupWidth()) +1854 refGroupLength: int = field(init=False, repr=False, default=RefGroupLength()) +1855 groupLengthIncrement: int = field(init=False, repr=False, default=GroupLengthIncrement()) +1856 lengthOfLastGroup: int = field(init=False, repr=False, default=LengthOfLastGroup()) +1857 nBitsScaledGroupLength: int = field(init=False, repr=False, default=NBitsScaledGroupLength()) +1858 @classmethod +1859 @property +1860 def _attrs(cls): +1861 return list(cls.__dataclass_fields__.keys()) +1862 +1863@dataclass(init=False) +1864class DataRepresentationTemplate3(): +1865 _len = 18 +1866 _num = 3 +1867 _packingScheme = 'complex-spdiff' +1868 refValue: float = field(init=False, repr=False, default=RefValue()) +1869 binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor()) +1870 decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor()) +1871 nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking()) +1872 groupSplittingMethod: Grib2Metadata = field(init=False, repr=False, default=GroupSplittingMethod()) +1873 typeOfMissingValueManagement: Grib2Metadata = field(init=False, repr=False, default=TypeOfMissingValueManagement()) +1874 priMissingValue: [float, int] = field(init=False, repr=False, default=PriMissingValue()) +1875 secMissingValue: [float, int] = field(init=False, repr=False, default=SecMissingValue()) +1876 nGroups: int = field(init=False, repr=False, default=NGroups()) +1877 refGroupWidth: int = field(init=False, repr=False, default=RefGroupWidth()) +1878 nBitsGroupWidth: int = field(init=False, repr=False, default=NBitsGroupWidth()) +1879 refGroupLength: int = field(init=False, repr=False, default=RefGroupLength()) +1880 groupLengthIncrement: int = field(init=False, repr=False, default=GroupLengthIncrement()) +1881 lengthOfLastGroup: int = field(init=False, repr=False, default=LengthOfLastGroup()) +1882 nBitsScaledGroupLength: int = field(init=False, repr=False, default=NBitsScaledGroupLength()) +1883 spatialDifferenceOrder: Grib2Metadata = field(init=False, repr=False, default=SpatialDifferenceOrder()) +1884 nBytesSpatialDifference: int = field(init=False, repr=False, default=NBytesSpatialDifference()) +1885 @classmethod +1886 @property +1887 def _attrs(cls): +1888 return list(cls.__dataclass_fields__.keys()) 1889 -1890def drt_class_by_drtn(drtn): -1891 return _drt_by_drtn[drtn] +1890@dataclass(init=False) +1891class DataRepresentationTemplate4(): +1892 _len = 1 +1893 _num = 4 +1894 _packingScheme = 'ieee-float' +1895 precision: Grib2Metadata = field(init=False, repr=False, default=Precision()) +1896 @classmethod +1897 @property +1898 def _attrs(cls): +1899 return list(cls.__dataclass_fields__.keys()) +1900 +1901@dataclass(init=False) +1902class DataRepresentationTemplate40(): +1903 _len = 7 +1904 _num = 40 +1905 _packingScheme = 'jpeg' +1906 refValue: float = field(init=False, repr=False, default=RefValue()) +1907 binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor()) +1908 decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor()) +1909 nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking()) +1910 typeOfCompression: Grib2Metadata = field(init=False, repr=False, default=TypeOfCompression()) +1911 targetCompressionRatio: int = field(init=False, repr=False, default=TargetCompressionRatio()) +1912 @classmethod +1913 @property +1914 def _attrs(cls): +1915 return list(cls.__dataclass_fields__.keys()) +1916 +1917@dataclass(init=False) +1918class DataRepresentationTemplate41(): +1919 _len = 5 +1920 _num = 41 +1921 _packingScheme = 'png' +1922 refValue: float = field(init=False, repr=False, default=RefValue()) +1923 binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor()) +1924 decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor()) +1925 nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking()) +1926 @classmethod +1927 @property +1928 def _attrs(cls): +1929 return list(cls.__dataclass_fields__.keys()) +1930 +1931@dataclass(init=False) +1932class DataRepresentationTemplate42(): +1933 _len = 8 +1934 _num = 42 +1935 _packingScheme = 'aec' +1936 refValue: float = field(init=False, repr=False, default=RefValue()) +1937 binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor()) +1938 decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor()) +1939 nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking()) +1940 compressionOptionsMask: int = field(init=False, repr=False, default=CompressionOptionsMask()) +1941 blockSize: int = field(init=False, repr=False, default=BlockSize()) +1942 refSampleInterval: int = field(init=False, repr=False, default=RefSampleInterval()) +1943 @classmethod +1944 @property +1945 def _attrs(cls): +1946 return list(cls.__dataclass_fields__.keys()) +1947 +1948@dataclass(init=False) +1949class DataRepresentationTemplate50(): +1950 _len = 5 +1951 _num = 0 +1952 _packingScheme = 'spectral-simple' +1953 refValue: float = field(init=False, repr=False, default=RefValue()) +1954 binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor()) +1955 decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor()) +1956 nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking()) +1957 realOfCoefficient: float = field(init=False, repr=False, default=RealOfCoefficient()) +1958 @classmethod +1959 @property +1960 def _attrs(cls): +1961 return list(cls.__dataclass_fields__.keys()) +1962 +1963_drt_by_drtn = { +1964 0: DataRepresentationTemplate0, +1965 2: DataRepresentationTemplate2, +1966 3: DataRepresentationTemplate3, +1967 4: DataRepresentationTemplate4, +1968 40: DataRepresentationTemplate40, +1969 41: DataRepresentationTemplate41, +1970 42: DataRepresentationTemplate42, +1971 50: DataRepresentationTemplate50, +1972 } +1973 +1974def drt_class_by_drtn(drtn): +1975 return _drt_by_drtn[drtn] @@ -4568,9 +4760,9 @@

    278class EarthParams:
     279    def __get__(self, obj, objtype=None):
    -280        if obj.gridDefinitionSection[4] in {50,51,52,1200}:
    +280        if obj.section3[5] in {50,51,52,1200}:
     281            return None
    -282        return tables.earth_params[str(obj.section3[5])]
    +282        return tables.get_table('earth_params')[str(obj.section3[5])]
     283    def __set__(self, obj, value):
     284        raise RuntimeError
     
    @@ -4728,6 +4920,28 @@

    +

    +
    + +
    + + class + EarthShape: + + + +
    + +
    340class EarthShape:
    +341    def __get__(self, obj, objtype=None):
    +342        return obj._earthparams['shape']
    +343    def __set__(self, obj, value):
    +344        raise RuntimeError
    +
    + + + +
    @@ -4740,21 +4954,18 @@

    -
    340class EarthRadius:
    -341    def __get__(self, obj, objtype=None):
    -342        earthparams = obj._earthparams
    -343        if earthparams['shape'] == 'spherical':
    -344            if earthparams['radius'] is None:
    -345                return obj.section3[7]/(10.**obj.section3[6])
    -346            else:
    -347                return earthparams['radius']
    -348        if earthparams['shape'] == 'oblateSpheriod':
    -349            if earthparams['radius'] is None and earthparams['major_axis'] is None and earthparams['minor_axis'] is None:
    -350                return obj.section3[7]/(10.**obj.section3[6])
    -351            else:
    -352                return earthparams['radius']
    -353    def __set__(self, obj, value):
    -354        raise RuntimeError
    +            
    346class EarthRadius:
    +347    def __get__(self, obj, objtype=None):
    +348        ep = obj._earthparams
    +349        if ep['shape'] == 'spherical':
    +350            if ep['radius'] is None:
    +351                return obj.section3[7]/(10.**obj.section3[6])
    +352            else:
    +353                return ep['radius']
    +354        elif ep['shape'] in {'ellipsoid','oblateSpheriod'}:
    +355            return None
    +356    def __set__(self, obj, value):
    +357        raise RuntimeError
     
    @@ -4772,18 +4983,18 @@

    -
    356class EarthMajorAxis:
    -357    def __get__(self, obj, objtype=None):
    -358        earthparams = obj._earthparams
    -359        if earthparams['shape'] == 'spherical':
    -360            return None
    -361        if earthparams['shape'] == 'oblateSpheriod':
    -362            if earthparams['radius'] is None and earthparams['major_axis'] is None and earthparams['minor_axis'] is None:
    -363                return obj.section3[9]/(10.**obj.section3[8])
    -364            else:
    -365                return earthparams['major_axis']
    -366    def __set__(self, obj, value):
    -367        raise RuntimeError
    +            
    359class EarthMajorAxis:
    +360    def __get__(self, obj, objtype=None):
    +361        ep = obj._earthparams
    +362        if ep['shape'] == 'spherical':
    +363            return None
    +364        elif ep['shape'] in {'ellipsoid','oblateSpheriod'}:
    +365            if ep['major_axis'] is None and ep['minor_axis'] is None:
    +366                return obj.section3[9]/(10.**obj.section3[8])
    +367            else:
    +368                return ep['major_axis']
    +369    def __set__(self, obj, value):
    +370        raise RuntimeError
     
    @@ -4801,18 +5012,18 @@

    -
    369class EarthMinorAxis:
    -370    def __get__(self, obj, objtype=None):
    -371        earthparams = obj._earthparams
    -372        if earthparams['shape'] == 'spherical':
    -373            return None
    -374        if earthparams['shape'] == 'oblateSpheriod':
    -375            if earthparams['radius'] is None and earthparams['major_axis'] is None and earthparams['minor_axis'] is None:
    -376                return obj.section3[11]/(10.**section3[10])
    -377            else:
    -378                return earthparams['minor_axis']
    -379    def __set__(self, obj, value):
    -380        raise RuntimeError
    +            
    372class EarthMinorAxis:
    +373    def __get__(self, obj, objtype=None):
    +374        ep = obj._earthparams
    +375        if ep['shape'] == 'spherical':
    +376            return None
    +377        if ep['shape'] in {'ellipsoid','oblateSpheriod'}:
    +378            if ep['major_axis'] is None and ep['minor_axis'] is None:
    +379                return obj.section3[11]/(10.**section3[10])
    +380            else:
    +381                return ep['minor_axis']
    +382    def __set__(self, obj, value):
    +383        raise RuntimeError
     
    @@ -4830,12 +5041,12 @@

    -
    382class Nx:
    -383    def __get__(self, obj, objtype=None):
    -384        return obj.section3[12]
    -385    def __set__(self, obj, value):
    -386        obj.section3[12] = value
    -387        obj.section3[1] = value * obj.section3[13]
    +            
    385class Nx:
    +386    def __get__(self, obj, objtype=None):
    +387        return obj.section3[12]
    +388    def __set__(self, obj, value):
    +389        obj.section3[12] = value
    +390        obj.section3[1] = value * obj.section3[13]
     
    @@ -4853,12 +5064,12 @@

    -
    389class Ny:
    -390    def __get__(self, obj, objtype=None):
    -391        return obj.section3[13]
    -392    def __set__(self, obj, value):
    -393        obj.section3[13] = value
    -394        obj.section3[1] = value * obj.section3[12]
    +            
    392class Ny:
    +393    def __get__(self, obj, objtype=None):
    +394        return obj.section3[13]
    +395    def __set__(self, obj, value):
    +396        obj.section3[13] = value
    +397        obj.section3[1] = value * obj.section3[12]
     
    @@ -4876,15 +5087,15 @@

    -
    396class ScanModeFlags:
    -397    _key = {0:18, 1:18, 10:15, 20:17, 30:17, 31:17, 40:18, 41:18, 90:16, 110:15, 203:18, 204:18, 205:18, 32768:18, 32769:18}
    -398    def __get__(self, obj, objtype=None):
    -399        if obj.gdtn == 50:
    -400            return [None, None, None, None]
    -401        else:
    -402            return utils.int2bin(obj.section3[self._key[obj.gdtn]+5],output=list)[0:8]
    -403    def __set__(self, obj, value):
    -404        obj.section3[self._key[obj.gdtn]+5] = value
    +            
    399class ScanModeFlags:
    +400    _key = {0:18, 1:18, 10:15, 20:17, 30:17, 31:17, 40:18, 41:18, 90:16, 110:15, 203:18, 204:18, 205:18, 32768:18, 32769:18}
    +401    def __get__(self, obj, objtype=None):
    +402        if obj.gdtn == 50:
    +403            return [None, None, None, None]
    +404        else:
    +405            return utils.int2bin(obj.section3[self._key[obj.gdtn]+5],output=list)[0:8]
    +406    def __set__(self, obj, value):
    +407        obj.section3[self._key[obj.gdtn]+5] = value
     
    @@ -4902,15 +5113,15 @@

    -
    406class ResolutionAndComponentFlags:
    -407    _key = {0:13, 1:13, 10:11, 20:11, 30:11, 31:11, 40:13, 41:13, 90:11, 110:11, 203:13, 204:13, 205:13, 32768:13, 32769:13}
    -408    def __get__(self, obj, objtype=None):
    -409        if obj.gdtn == 50:
    -410            return [None for i in range(8)]
    -411        else:
    -412            return utils.int2bin(obj.section3[self._key[obj.gdtn]+5],output=list)
    -413    def __set__(self, obj, value):
    -414        obj.section3[self._key[obj.gdtn]+5] = value
    +            
    409class ResolutionAndComponentFlags:
    +410    _key = {0:13, 1:13, 10:11, 20:11, 30:11, 31:11, 40:13, 41:13, 90:11, 110:11, 203:13, 204:13, 205:13, 32768:13, 32769:13}
    +411    def __get__(self, obj, objtype=None):
    +412        if obj.gdtn == 50:
    +413            return [None for i in range(8)]
    +414        else:
    +415            return utils.int2bin(obj.section3[self._key[obj.gdtn]+5],output=list)
    +416    def __set__(self, obj, value):
    +417        obj.section3[self._key[obj.gdtn]+5] = value
     
    @@ -4928,12 +5139,12 @@

    -
    416class LatitudeFirstGridpoint:
    -417    _key = {0:11, 1:11, 10:9, 20:9, 30:9, 31:9, 40:11, 41:11, 110:9, 203:11, 204:11, 205:11, 32768:11, 32769:11}
    -418    def __get__(self, obj, objtype=None):
    -419        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    -420    def __set__(self, obj, value):
    -421        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
    +            
    419class LatitudeFirstGridpoint:
    +420    _key = {0:11, 1:11, 10:9, 20:9, 30:9, 31:9, 40:11, 41:11, 110:9, 203:11, 204:11, 205:11, 32768:11, 32769:11}
    +421    def __get__(self, obj, objtype=None):
    +422        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    +423    def __set__(self, obj, value):
    +424        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
     
    @@ -4951,12 +5162,12 @@

    -
    423class LongitudeFirstGridpoint:
    -424    _key = {0:12, 1:12, 10:10, 20:10, 30:10, 31:10, 40:12, 41:12, 110:10, 203:12, 204:12, 205:12, 32768:12, 32769:12}
    -425    def __get__(self, obj, objtype=None):
    -426        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    -427    def __set__(self, obj, value):
    -428        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
    +            
    426class LongitudeFirstGridpoint:
    +427    _key = {0:12, 1:12, 10:10, 20:10, 30:10, 31:10, 40:12, 41:12, 110:10, 203:12, 204:12, 205:12, 32768:12, 32769:12}
    +428    def __get__(self, obj, objtype=None):
    +429        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    +430    def __set__(self, obj, value):
    +431        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
     
    @@ -4974,12 +5185,12 @@

    -
    430class LatitudeLastGridpoint:
    -431    _key = {0:14, 1:14, 10:13, 40:14, 41:14, 203:14, 204:14, 205:14, 32768:14, 32769:14}
    -432    def __get__(self, obj, objtype=None):
    -433        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    -434    def __set__(self, obj, value):
    -435        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
    +            
    433class LatitudeLastGridpoint:
    +434    _key = {0:14, 1:14, 10:13, 40:14, 41:14, 203:14, 204:14, 205:14, 32768:14, 32769:19}
    +435    def __get__(self, obj, objtype=None):
    +436        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    +437    def __set__(self, obj, value):
    +438        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
     
    @@ -4997,12 +5208,58 @@

    -
    437class LongitudeLastGridpoint:
    -438    _key = {0:15, 1:15, 10:14, 40:15, 41:15, 203:15, 204:15, 205:15, 32768:15, 32769:15}
    -439    def __get__(self, obj, objtype=None):
    -440        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    -441    def __set__(self, obj, value):
    -442        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
    +            
    440class LongitudeLastGridpoint:
    +441    _key = {0:15, 1:15, 10:14, 40:15, 41:15, 203:15, 204:15, 205:15, 32768:15, 32769:20}
    +442    def __get__(self, obj, objtype=None):
    +443        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    +444    def __set__(self, obj, value):
    +445        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
    +
    + + + + +

    +
    + +
    + + class + LatitudeCenterGridpoint: + + + +
    + +
    447class LatitudeCenterGridpoint:
    +448    _key = {32768:14, 32769:14}
    +449    def __get__(self, obj, objtype=None):
    +450        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    +451    def __set__(self, obj, value):
    +452        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
    +
    + + + + +
    +
    + +
    + + class + LongitudeCenterGridpoint: + + + +
    + +
    454class LongitudeCenterGridpoint:
    +455    _key = {32768:15, 32769:15}
    +456    def __get__(self, obj, objtype=None):
    +457        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    +458    def __set__(self, obj, value):
    +459        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
     
    @@ -5020,12 +5277,12 @@

    -
    444class GridlengthXDirection:
    -445    _key = {0:16, 1:16, 10:17, 20:14, 30:14, 31:14, 40:16, 41:16, 203:16, 204:16, 205:16, 32768:16, 32769:16}
    -446    def __get__(self, obj, objtype=None):
    -447        return (obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._xydivisor)*obj._dxsign
    -448    def __set__(self, obj, value):
    -449        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._xydivisor/obj._llscalefactor)
    +            
    461class GridlengthXDirection:
    +462    _key = {0:16, 1:16, 10:17, 20:14, 30:14, 31:14, 40:16, 41:16, 203:16, 204:16, 205:16, 32768:16, 32769:16}
    +463    def __get__(self, obj, objtype=None):
    +464        return (obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._xydivisor)*obj._dxsign
    +465    def __set__(self, obj, value):
    +466        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._xydivisor/obj._llscalefactor)
     
    @@ -5043,12 +5300,12 @@

    -
    451class GridlengthYDirection:
    -452    _key = {0:17, 1:17, 10:18, 20:15, 30:15, 31:15, 40:17, 41:17, 203:17, 204:17, 205:17, 32768:17, 32769:17}
    -453    def __get__(self, obj, objtype=None):
    -454        return (obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._xydivisor)*obj._dysign
    -455    def __set__(self, obj, value):
    -456        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._xydivisor/obj._llscalefactor)
    +            
    468class GridlengthYDirection:
    +469    _key = {0:17, 1:17, 10:18, 20:15, 30:15, 31:15, 40:17, 41:17, 203:17, 204:17, 205:17, 32768:17, 32769:17}
    +470    def __get__(self, obj, objtype=None):
    +471        return (obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._xydivisor)*obj._dysign
    +472    def __set__(self, obj, value):
    +473        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._xydivisor/obj._llscalefactor)
     
    @@ -5066,12 +5323,12 @@

    -
    458class LatitudeSouthernPole:
    -459    _key = {1:19, 30:20, 31:20, 41:19}
    -460    def __get__(self, obj, objtype=None):
    -461        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    -462    def __set__(self, obj, value):
    -463        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
    +            
    475class LatitudeSouthernPole:
    +476    _key = {1:19, 30:20, 31:20, 41:19}
    +477    def __get__(self, obj, objtype=None):
    +478        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    +479    def __set__(self, obj, value):
    +480        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
     
    @@ -5089,12 +5346,12 @@

    -
    465class LongitudeSouthernPole:
    -466    _key = {1:20, 30:21, 31:21, 41:20}
    -467    def __get__(self, obj, objtype=None):
    -468        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    -469    def __set__(self, obj, value):
    -470        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
    +            
    482class LongitudeSouthernPole:
    +483    _key = {1:20, 30:21, 31:21, 41:20}
    +484    def __get__(self, obj, objtype=None):
    +485        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    +486    def __set__(self, obj, value):
    +487        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
     
    @@ -5112,12 +5369,12 @@

    -
    472class AnglePoleRotation:
    -473    _key = {1:21, 41:21}
    -474    def __get__(self, obj, objtype=None):
    -475        return obj.section3[self._key[obj.gdtn]+5]
    -476    def __set__(self, obj, value):
    -477        obj.section3[self._key[obj.gdtn]+5] = int(value)
    +            
    489class AnglePoleRotation:
    +490    _key = {1:21, 41:21}
    +491    def __get__(self, obj, objtype=None):
    +492        return obj.section3[self._key[obj.gdtn]+5]
    +493    def __set__(self, obj, value):
    +494        obj.section3[self._key[obj.gdtn]+5] = int(value)
     
    @@ -5135,12 +5392,12 @@

    -
    479class LatitudeTrueScale:
    -480    _key = {10:12, 20:12, 30:12, 31:12}
    -481    def __get__(self, obj, objtype=None):
    -482        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    -483    def __set__(self, obj, value):
    -484        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
    +            
    496class LatitudeTrueScale:
    +497    _key = {10:12, 20:12, 30:12, 31:12}
    +498    def __get__(self, obj, objtype=None):
    +499        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    +500    def __set__(self, obj, value):
    +501        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
     
    @@ -5158,14 +5415,14 @@

    -
    486class GridOrientation:
    -487    _key = {10:16, 20:13, 30:13, 31:13}
    -488    def __get__(self, obj, objtype=None):
    -489        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    -490    def __set__(self, obj, value):
    -491        if obj.gdtn == 10 and (value < 0 or value > 90):
    -492            raise ValueError("Grid orientation is limited to range of 0 to 90 degrees.")
    -493        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
    +            
    503class GridOrientation:
    +504    _key = {10:16, 20:13, 30:13, 31:13}
    +505    def __get__(self, obj, objtype=None):
    +506        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    +507    def __set__(self, obj, value):
    +508        if obj.gdtn == 10 and (value < 0 or value > 90):
    +509            raise ValueError("Grid orientation is limited to range of 0 to 90 degrees.")
    +510        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
     
    @@ -5183,12 +5440,12 @@

    -
    495class ProjectionCenterFlag:
    -496    _key = {20:16, 30:16, 31:16}
    -497    def __get__(self, obj, objtype=None):
    -498        return utils.int2bin(obj.section3[self._key[obj.gdtn]+5],output=list)[0]
    -499    def __set__(self, obj, value):
    -500        obj.section3[self._key[obj.gdtn]+5] = value
    +            
    512class ProjectionCenterFlag:
    +513    _key = {20:16, 30:16, 31:16}
    +514    def __get__(self, obj, objtype=None):
    +515        return utils.int2bin(obj.section3[self._key[obj.gdtn]+5],output=list)[0]
    +516    def __set__(self, obj, value):
    +517        obj.section3[self._key[obj.gdtn]+5] = value
     
    @@ -5206,12 +5463,12 @@

    -
    502class StandardLatitude1:
    -503    _key = {30:18, 31:18}
    -504    def __get__(self, obj, objtype=None):
    -505        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    -506    def __set__(self, obj, value):
    -507        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
    +            
    519class StandardLatitude1:
    +520    _key = {30:18, 31:18}
    +521    def __get__(self, obj, objtype=None):
    +522        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    +523    def __set__(self, obj, value):
    +524        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
     
    @@ -5229,12 +5486,12 @@

    -
    509class StandardLatitude2:
    -510    _key = {30:19, 31:19}
    -511    def __get__(self, obj, objtype=None):
    -512        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    -513    def __set__(self, obj, value):
    -514        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
    +            
    526class StandardLatitude2:
    +527    _key = {30:19, 31:19}
    +528    def __get__(self, obj, objtype=None):
    +529        return obj._llscalefactor*obj.section3[self._key[obj.gdtn]+5]/obj._lldivisor
    +530    def __set__(self, obj, value):
    +531        obj.section3[self._key[obj.gdtn]+5] = int(value*obj._lldivisor/obj._llscalefactor)
     
    @@ -5252,11 +5509,11 @@

    -
    516class SpectralFunctionParameters:
    -517    def __get__(self, obj, objtype=None):
    -518        return obj.section3[0:3]
    -519    def __set__(self, obj, value):
    -520        obj.section3[0:3] = value[0:3]
    +            
    533class SpectralFunctionParameters:
    +534    def __get__(self, obj, objtype=None):
    +535        return obj.section3[0:3]
    +536    def __set__(self, obj, value):
    +537        obj.section3[0:3] = value[0:3]
     
    @@ -5274,55 +5531,62 @@

    -
    522class ProjParameters:
    -523    def __get__(self, obj, objtype=None):
    -524        projparams = {}
    -525        projparams['a'] = 1.0
    -526        projparams['b'] = 1.0
    -527        if obj.earthRadius is not None:
    -528            projparams['a'] = obj.earthRadius
    -529            projparams['b'] = obj.earthRadius
    -530        else:
    -531            if obj.earthMajorAxis is not None: projparams['a'] = obj.earthMajorAxis
    -532            if obj.earthMajorAxis is not None: projparams['b'] = obj.earthMinorAxis
    -533        if obj.gdtn == 0:
    -534            projparams['proj'] = 'longlat'
    -535        elif obj.gdtn == 1:
    -536            projparams['o_proj'] = 'longlat'
    -537            projparams['proj'] = 'ob_tran'
    -538            projparams['o_lat_p'] = -1.0*obj.latitudeSouthernPole
    -539            projparams['o_lon_p'] = obj.anglePoleRotation
    -540            projparams['lon_0'] = obj.longitudeSouthernPole
    -541        elif obj.gdtn == 10:
    -542            projparams['proj'] = 'merc'
    -543            projparams['lat_ts'] = obj.latitudeTrueScale
    -544            projparams['lon_0'] = 0.5*(obj.longitudeFirstGridpoint+obj.longitudeLastGridpoint)
    -545        elif obj.gdtn == 20:
    -546            if obj.projectionCenterFlag == 0:
    -547                lat0 = 90.0
    -548            elif obj.projectionCenterFlag == 1:
    -549                lat0 = -90.0
    -550            projparams['proj'] = 'stere'
    -551            projparams['lat_ts'] = obj.latitudeTrueScale
    -552            projparams['lat_0'] = lat0
    -553            projparams['lon_0'] = obj.gridOrientation
    -554        elif obj.gdtn == 30:
    -555            projparams['proj'] = 'lcc'
    -556            projparams['lat_1'] = obj.standardLatitude1
    -557            projparams['lat_2'] = obj.standardLatitude2
    -558            projparams['lat_0'] = obj.latitudeTrueScale
    -559            projparams['lon_0'] = obj.gridOrientation
    -560        elif obj.gdtn == 31:
    -561            projparams['proj'] = 'aea'
    -562            projparams['lat_1'] = obj.standardLatitude1
    -563            projparams['lat_2'] = obj.standardLatitude2
    -564            projparams['lat_0'] = obj.latitudeTrueScale
    -565            projparams['lon_0'] = obj.gridOrientation
    -566        elif obj.gdtn == 40:
    -567            projparams['proj'] = 'eqc'
    -568        return projparams
    -569    def __set__(self, obj, value):
    -570        raise RuntimeError
    +            
    539class ProjParameters:
    +540    def __get__(self, obj, objtype=None):
    +541        projparams = {}
    +542        projparams['a'] = 1.0
    +543        projparams['b'] = 1.0
    +544        if obj.earthRadius is not None:
    +545            projparams['a'] = obj.earthRadius
    +546            projparams['b'] = obj.earthRadius
    +547        else:
    +548            if obj.earthMajorAxis is not None: projparams['a'] = obj.earthMajorAxis
    +549            if obj.earthMajorAxis is not None: projparams['b'] = obj.earthMinorAxis
    +550        if obj.gdtn == 0:
    +551            projparams['proj'] = 'longlat'
    +552        elif obj.gdtn == 1:
    +553            projparams['o_proj'] = 'longlat'
    +554            projparams['proj'] = 'ob_tran'
    +555            projparams['o_lat_p'] = -1.0*obj.latitudeSouthernPole
    +556            projparams['o_lon_p'] = obj.anglePoleRotation
    +557            projparams['lon_0'] = obj.longitudeSouthernPole
    +558        elif obj.gdtn == 10:
    +559            projparams['proj'] = 'merc'
    +560            projparams['lat_ts'] = obj.latitudeTrueScale
    +561            projparams['lon_0'] = 0.5*(obj.longitudeFirstGridpoint+obj.longitudeLastGridpoint)
    +562        elif obj.gdtn == 20:
    +563            if obj.projectionCenterFlag == 0:
    +564                lat0 = 90.0
    +565            elif obj.projectionCenterFlag == 1:
    +566                lat0 = -90.0
    +567            projparams['proj'] = 'stere'
    +568            projparams['lat_ts'] = obj.latitudeTrueScale
    +569            projparams['lat_0'] = lat0
    +570            projparams['lon_0'] = obj.gridOrientation
    +571        elif obj.gdtn == 30:
    +572            projparams['proj'] = 'lcc'
    +573            projparams['lat_1'] = obj.standardLatitude1
    +574            projparams['lat_2'] = obj.standardLatitude2
    +575            projparams['lat_0'] = obj.latitudeTrueScale
    +576            projparams['lon_0'] = obj.gridOrientation
    +577        elif obj.gdtn == 31:
    +578            projparams['proj'] = 'aea'
    +579            projparams['lat_1'] = obj.standardLatitude1
    +580            projparams['lat_2'] = obj.standardLatitude2
    +581            projparams['lat_0'] = obj.latitudeTrueScale
    +582            projparams['lon_0'] = obj.gridOrientation
    +583        elif obj.gdtn == 40:
    +584            projparams['proj'] = 'eqc'
    +585        elif obj.gdtn == 32769:
    +586            projparams['o_proj'] = 'longlat'
    +587            projparams['proj'] = 'ob_tran'
    +588            projparams['o_lat_p'] = 90.0 - obj.latitudeCenterGridpoint
    +589            #projparams['o_lon_p'] = obj.longitudeCenterGridpoint - 360.0 if obj.longitudeCenterGridpoint > 180.0 else obj.longitudeCenterGridpoint
    +590            #projparams['o_lon_p'] = 180.0 - (360. - obj.longitudeCenterGridpoint)
    +591            projparams['o_lon_p'] = 0
    +592        return projparams
    +593    def __set__(self, obj, value):
    +594        raise RuntimeError
     
    @@ -5341,20 +5605,20 @@

    -
    572@dataclass(init=False)
    -573class GridDefinitionTemplate0():
    -574    _len = 19
    -575    _num = 0
    -576    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    -577    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    -578    latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint())
    -579    longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint())
    -580    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    -581    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    -582    @classmethod
    -583    @property
    -584    def _attrs(cls):
    -585        return list(cls.__dataclass_fields__.keys())
    +            
    596@dataclass(init=False)
    +597class GridDefinitionTemplate0():
    +598    _len = 19
    +599    _num = 0
    +600    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    +601    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    +602    latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint())
    +603    longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint())
    +604    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    +605    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    +606    @classmethod
    +607    @property
    +608    def _attrs(cls):
    +609        return list(cls.__dataclass_fields__.keys())
     
    @@ -5439,23 +5703,23 @@

    -
    587@dataclass(init=False)
    -588class GridDefinitionTemplate1():
    -589    _len = 22
    -590    _num = 1
    -591    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    -592    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    -593    latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint())
    -594    longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint())
    -595    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    -596    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    -597    latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole())
    -598    longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole())
    -599    anglePoleRotation: float = field(init=False, repr=False, default=AnglePoleRotation())
    -600    @classmethod
    -601    @property
    -602    def _attrs(cls):
    -603        return list(cls.__dataclass_fields__.keys())
    +            
    611@dataclass(init=False)
    +612class GridDefinitionTemplate1():
    +613    _len = 22
    +614    _num = 1
    +615    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    +616    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    +617    latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint())
    +618    longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint())
    +619    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    +620    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    +621    latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole())
    +622    longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole())
    +623    anglePoleRotation: float = field(init=False, repr=False, default=AnglePoleRotation())
    +624    @classmethod
    +625    @property
    +626    def _attrs(cls):
    +627        return list(cls.__dataclass_fields__.keys())
     
    @@ -5573,23 +5837,23 @@

    -
    605@dataclass(init=False)
    -606class GridDefinitionTemplate10():
    -607    _len = 19
    -608    _num = 10
    -609    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    -610    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    -611    latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale())
    -612    latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint())
    -613    longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint())
    -614    gridOrientation: float = field(init=False, repr=False, default=GridOrientation())
    -615    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    -616    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    -617    projParameters: dict = field(init=False, repr=False, default=ProjParameters())
    -618    @classmethod
    -619    @property
    -620    def _attrs(cls):
    -621        return list(cls.__dataclass_fields__.keys())
    +            
    629@dataclass(init=False)
    +630class GridDefinitionTemplate10():
    +631    _len = 19
    +632    _num = 10
    +633    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    +634    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    +635    latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale())
    +636    latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint())
    +637    longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint())
    +638    gridOrientation: float = field(init=False, repr=False, default=GridOrientation())
    +639    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    +640    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    +641    projParameters: dict = field(init=False, repr=False, default=ProjParameters())
    +642    @classmethod
    +643    @property
    +644    def _attrs(cls):
    +645        return list(cls.__dataclass_fields__.keys())
     
    @@ -5707,22 +5971,22 @@

    -
    623@dataclass(init=False)
    -624class GridDefinitionTemplate20():
    -625    _len = 18
    -626    _num = 20
    -627    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    -628    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    -629    latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale())
    -630    gridOrientation: float = field(init=False, repr=False, default=GridOrientation())
    -631    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    -632    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    -633    projectionCenterFlag: list = field(init=False, repr=False, default=ProjectionCenterFlag())
    -634    projParameters: dict = field(init=False, repr=False, default=ProjParameters())
    -635    @classmethod
    -636    @property
    -637    def _attrs(cls):
    -638        return list(cls.__dataclass_fields__.keys())
    +            
    647@dataclass(init=False)
    +648class GridDefinitionTemplate20():
    +649    _len = 18
    +650    _num = 20
    +651    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    +652    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    +653    latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale())
    +654    gridOrientation: float = field(init=False, repr=False, default=GridOrientation())
    +655    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    +656    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    +657    projectionCenterFlag: list = field(init=False, repr=False, default=ProjectionCenterFlag())
    +658    projParameters: dict = field(init=False, repr=False, default=ProjParameters())
    +659    @classmethod
    +660    @property
    +661    def _attrs(cls):
    +662        return list(cls.__dataclass_fields__.keys())
     
    @@ -5829,26 +6093,26 @@

    -
    640@dataclass(init=False)
    -641class GridDefinitionTemplate30():
    -642    _len = 22
    -643    _num = 30
    -644    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    -645    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    -646    latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale())
    -647    gridOrientation: float = field(init=False, repr=False, default=GridOrientation())
    -648    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    -649    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    -650    projectionCenterFlag: list = field(init=False, repr=False, default=ProjectionCenterFlag())
    -651    standardLatitude1: float = field(init=False, repr=False, default=StandardLatitude1())
    -652    standardLatitude2: float = field(init=False, repr=False, default=StandardLatitude2())
    -653    latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole())
    -654    longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole())
    -655    projParameters: dict = field(init=False, repr=False, default=ProjParameters())
    -656    @classmethod
    -657    @property
    -658    def _attrs(cls):
    -659        return list(cls.__dataclass_fields__.keys())
    +            
    664@dataclass(init=False)
    +665class GridDefinitionTemplate30():
    +666    _len = 22
    +667    _num = 30
    +668    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    +669    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    +670    latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale())
    +671    gridOrientation: float = field(init=False, repr=False, default=GridOrientation())
    +672    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    +673    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    +674    projectionCenterFlag: list = field(init=False, repr=False, default=ProjectionCenterFlag())
    +675    standardLatitude1: float = field(init=False, repr=False, default=StandardLatitude1())
    +676    standardLatitude2: float = field(init=False, repr=False, default=StandardLatitude2())
    +677    latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole())
    +678    longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole())
    +679    projParameters: dict = field(init=False, repr=False, default=ProjParameters())
    +680    @classmethod
    +681    @property
    +682    def _attrs(cls):
    +683        return list(cls.__dataclass_fields__.keys())
     
    @@ -5999,25 +6263,25 @@

    -
    661@dataclass(init=False)
    -662class GridDefinitionTemplate31():
    -663    _len = 22
    -664    _num = 31
    -665    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    -666    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    -667    latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale())
    -668    gridOrientation: float = field(init=False, repr=False, default=GridOrientation())
    -669    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    -670    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    -671    projectionCenterFlag: list = field(init=False, repr=False, default=ProjectionCenterFlag())
    -672    standardLatitude1: float = field(init=False, repr=False, default=StandardLatitude1())
    -673    standardLatitude2: float = field(init=False, repr=False, default=StandardLatitude2())
    -674    latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole())
    -675    longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole())
    -676    @classmethod
    -677    @property
    -678    def _attrs(cls):
    -679        return list(cls.__dataclass_fields__.keys())
    +            
    685@dataclass(init=False)
    +686class GridDefinitionTemplate31():
    +687    _len = 22
    +688    _num = 31
    +689    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    +690    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    +691    latitudeTrueScale: float = field(init=False, repr=False, default=LatitudeTrueScale())
    +692    gridOrientation: float = field(init=False, repr=False, default=GridOrientation())
    +693    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    +694    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    +695    projectionCenterFlag: list = field(init=False, repr=False, default=ProjectionCenterFlag())
    +696    standardLatitude1: float = field(init=False, repr=False, default=StandardLatitude1())
    +697    standardLatitude2: float = field(init=False, repr=False, default=StandardLatitude2())
    +698    latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole())
    +699    longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole())
    +700    @classmethod
    +701    @property
    +702    def _attrs(cls):
    +703        return list(cls.__dataclass_fields__.keys())
     
    @@ -6157,20 +6421,20 @@

    -
    681@dataclass(init=False)
    -682class GridDefinitionTemplate40():
    -683    _len = 19
    -684    _num = 40
    -685    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    -686    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    -687    latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint())
    -688    longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint())
    -689    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    -690    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    -691    @classmethod
    -692    @property
    -693    def _attrs(cls):
    -694        return list(cls.__dataclass_fields__.keys())
    +            
    705@dataclass(init=False)
    +706class GridDefinitionTemplate40():
    +707    _len = 19
    +708    _num = 40
    +709    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    +710    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    +711    latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint())
    +712    longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint())
    +713    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    +714    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    +715    @classmethod
    +716    @property
    +717    def _attrs(cls):
    +718        return list(cls.__dataclass_fields__.keys())
     
    @@ -6255,23 +6519,23 @@

    -
    696@dataclass(init=False)
    -697class GridDefinitionTemplate41():
    -698    _len = 22
    -699    _num = 41
    -700    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    -701    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    -702    latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint())
    -703    longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint())
    -704    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    -705    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    -706    latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole())
    -707    longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole())
    -708    anglePoleRotation: float = field(init=False, repr=False, default=AnglePoleRotation())
    -709    @classmethod
    -710    @property
    -711    def _attrs(cls):
    -712        return list(cls.__dataclass_fields__.keys())
    +            
    720@dataclass(init=False)
    +721class GridDefinitionTemplate41():
    +722    _len = 22
    +723    _num = 41
    +724    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    +725    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    +726    latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint())
    +727    longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint())
    +728    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    +729    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    +730    latitudeSouthernPole: float = field(init=False, repr=False, default=LatitudeSouthernPole())
    +731    longitudeSouthernPole: float = field(init=False, repr=False, default=LongitudeSouthernPole())
    +732    anglePoleRotation: float = field(init=False, repr=False, default=AnglePoleRotation())
    +733    @classmethod
    +734    @property
    +735    def _attrs(cls):
    +736        return list(cls.__dataclass_fields__.keys())
     
    @@ -6389,15 +6653,15 @@

    -
    714@dataclass(init=False)
    -715class GridDefinitionTemplate50():
    -716    _len = 5
    -717    _num = 50
    -718    spectralFunctionParameters: list = field(init=False, repr=False, default=SpectralFunctionParameters())
    -719    @classmethod
    -720    @property
    -721    def _attrs(cls):
    -722        return list(cls.__dataclass_fields__.keys())
    +            
    738@dataclass(init=False)
    +739class GridDefinitionTemplate50():
    +740    _len = 5
    +741    _num = 50
    +742    spectralFunctionParameters: list = field(init=False, repr=False, default=SpectralFunctionParameters())
    +743    @classmethod
    +744    @property
    +745    def _attrs(cls):
    +746        return list(cls.__dataclass_fields__.keys())
     
    @@ -6413,6 +6677,226 @@

    +

    +

    +
    + +
    +
    @dataclass(init=False)
    + + class + GridDefinitionTemplate32768: + + + +
    + +
    748@dataclass(init=False)
    +749class GridDefinitionTemplate32768():
    +750    _len = 19
    +751    _num = 32768
    +752    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    +753    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    +754    latitudeCenterGridpoint: float = field(init=False, repr=False, default=LatitudeCenterGridpoint())
    +755    longitudeCenterGridpoint: float = field(init=False, repr=False, default=LongitudeCenterGridpoint())
    +756    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    +757    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    +758    @classmethod
    +759    @property
    +760    def _attrs(cls):
    +761        return list(cls.__dataclass_fields__.keys())
    +
    + + + + +
    +
    + latitudeFirstGridpoint: float + + +
    + + + + +
    +
    +
    + longitudeFirstGridpoint: float + + +
    + + + + +
    +
    +
    + latitudeCenterGridpoint: float + + +
    + + + + +
    +
    +
    + longitudeCenterGridpoint: float + + +
    + + + + +
    +
    +
    + gridlengthXDirection: float + + +
    + + + + +
    +
    +
    + gridlengthYDirection: float + + +
    + + + + +
    +
    +
    + +
    +
    @dataclass(init=False)
    + + class + GridDefinitionTemplate32769: + + + +
    + +
    763@dataclass(init=False)
    +764class GridDefinitionTemplate32769():
    +765    _len = 19
    +766    _num = 32769
    +767    latitudeFirstGridpoint: float = field(init=False, repr=False, default=LatitudeFirstGridpoint())
    +768    longitudeFirstGridpoint: float = field(init=False, repr=False, default=LongitudeFirstGridpoint())
    +769    latitudeCenterGridpoint: float = field(init=False, repr=False, default=LatitudeCenterGridpoint())
    +770    longitudeCenterGridpoint: float = field(init=False, repr=False, default=LongitudeCenterGridpoint())
    +771    gridlengthXDirection: float = field(init=False, repr=False, default=GridlengthXDirection())
    +772    gridlengthYDirection: float = field(init=False, repr=False, default=GridlengthYDirection())
    +773    latitudeLastGridpoint: float = field(init=False, repr=False, default=LatitudeLastGridpoint())
    +774    longitudeLastGridpoint: float = field(init=False, repr=False, default=LongitudeLastGridpoint())
    +775    @classmethod
    +776    @property
    +777    def _attrs(cls):
    +778        return list(cls.__dataclass_fields__.keys())
    +
    + + + + +
    +
    + latitudeFirstGridpoint: float + + +
    + + + + +
    +
    +
    + longitudeFirstGridpoint: float + + +
    + + + + +
    +
    +
    + latitudeCenterGridpoint: float + + +
    + + + + +
    +
    +
    + longitudeCenterGridpoint: float + + +
    + + + + +
    +
    +
    + gridlengthXDirection: float + + +
    + + + + +
    +
    +
    + gridlengthYDirection: float + + +
    + + + + +
    +
    +
    + latitudeLastGridpoint: float + + +
    + + + + +
    +
    +
    + longitudeLastGridpoint: float + + +
    + + + +
    @@ -6426,8 +6910,8 @@

    -
    735def gdt_class_by_gdtn(gdtn):
    -736    return _gdt_by_gdtn[gdtn]
    +            
    793def gdt_class_by_gdtn(gdtn):
    +794    return _gdt_by_gdtn[gdtn]
     
    @@ -6445,11 +6929,11 @@

    -
    741class ProductDefinitionTemplateNumber:
    -742    def __get__(self, obj, objtype=None):
    -743        return Grib2Metadata(obj.section4[1],table='4.0')
    -744    def __set__(self, obj, value):
    -745        raise RuntimeError
    +            
    799class ProductDefinitionTemplateNumber:
    +800    def __get__(self, obj, objtype=None):
    +801        return Grib2Metadata(obj.section4[1],table='4.0')
    +802    def __set__(self, obj, value):
    +803        raise RuntimeError
     
    @@ -6467,11 +6951,11 @@

    -
    748class ProductDefinitionTemplate:
    -749    def __get__(self, obj, objtype=None):
    -750        return obj.section4[2:]
    -751    def __set__(self, obj, value):
    -752        raise RuntimeError
    +            
    806class ProductDefinitionTemplate:
    +807    def __get__(self, obj, objtype=None):
    +808        return obj.section4[2:]
    +809    def __set__(self, obj, value):
    +810        raise RuntimeError
     
    @@ -6489,12 +6973,12 @@

    -
    754class ParameterCategory:
    -755    _key = defaultdict(lambda: 0)
    -756    def __get__(self, obj, objtype=None):
    -757        return obj.section4[0+2]
    -758    def __set__(self, obj, value):
    -759        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    812class ParameterCategory:
    +813    _key = defaultdict(lambda: 0)
    +814    def __get__(self, obj, objtype=None):
    +815        return obj.section4[0+2]
    +816    def __set__(self, obj, value):
    +817        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -6512,12 +6996,12 @@

    -
    761class ParameterNumber:
    -762    _key = defaultdict(lambda: 1)
    -763    def __get__(self, obj, objtype=None):
    -764        return obj.section4[1+2]
    -765    def __set__(self, obj, value):
    -766        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    819class ParameterNumber:
    +820    _key = defaultdict(lambda: 1)
    +821    def __get__(self, obj, objtype=None):
    +822        return obj.section4[1+2]
    +823    def __set__(self, obj, value):
    +824        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -6535,11 +7019,11 @@

    -
    768class VarInfo:
    -769    def __get__(self, obj, objtype=None):
    -770        return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD)
    -771    def __set__(self, obj, value):
    -772        raise RuntimeError
    +            
    826class VarInfo:
    +827    def __get__(self, obj, objtype=None):
    +828        return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD)
    +829    def __set__(self, obj, value):
    +830        raise RuntimeError
     
    @@ -6557,11 +7041,11 @@

    -
    774class FullName:
    -775    def __get__(self, obj, objtype=None):
    -776        return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD)[0]
    -777    def __set__(self, obj, value):
    -778        raise RuntimeError
    +            
    832class FullName:
    +833    def __get__(self, obj, objtype=None):
    +834        return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD)[0]
    +835    def __set__(self, obj, value):
    +836        raise RuntimeError
     
    @@ -6579,11 +7063,11 @@

    -
    780class Units:
    -781    def __get__(self, obj, objtype=None):
    -782        return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD)[1]
    -783    def __set__(self, obj, value):
    -784        raise RuntimeError
    +            
    838class Units:
    +839    def __get__(self, obj, objtype=None):
    +840        return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD)[1]
    +841    def __set__(self, obj, value):
    +842        raise RuntimeError
     
    @@ -6601,11 +7085,11 @@

    -
    786class ShortName:
    -787    def __get__(self, obj, objtype=None):
    -788        return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD)[2]
    -789    def __set__(self, obj, value):
    -790        raise RuntimeError
    +            
    844class ShortName:
    +845    def __get__(self, obj, objtype=None):
    +846        return tables.get_varinfo_from_table(obj.section0[2],*obj.section4[2:4],isNDFD=obj._isNDFD)[2]
    +847    def __set__(self, obj, value):
    +848        raise RuntimeError
     
    @@ -6623,13 +7107,13 @@

    -
    792class TypeOfGeneratingProcess:
    -793    _key = defaultdict(lambda: 2, {48:13})
    -794    #_key = {0:2, 1:2, 2:2, 5:2, 6:2, 8:2, 9:2, 10:2, 11:2, 12:2, 15:2, 48:13}
    -795    def __get__(self, obj, objtype=None):
    -796        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.3')
    -797    def __set__(self, obj, value):
    -798        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    850class TypeOfGeneratingProcess:
    +851    _key = defaultdict(lambda: 2, {48:13})
    +852    #_key = {0:2, 1:2, 2:2, 5:2, 6:2, 8:2, 9:2, 10:2, 11:2, 12:2, 15:2, 48:13}
    +853    def __get__(self, obj, objtype=None):
    +854        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.3')
    +855    def __set__(self, obj, value):
    +856        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -6647,13 +7131,13 @@

    -
    800class BackgroundGeneratingProcessIdentifier:
    -801    _key = defaultdict(lambda: 3, {48:14})
    -802    #_key = {0:3, 1:3, 2:3, 5:3, 6:3, 8:3, 9:3, 10:3, 11:3, 12:3, 15:3, 48:14}
    -803    def __get__(self, obj, objtype=None):
    -804        return obj.section4[self._key[obj.pdtn]+2]
    -805    def __set__(self, obj, value):
    -806        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    858class BackgroundGeneratingProcessIdentifier:
    +859    _key = defaultdict(lambda: 3, {48:14})
    +860    #_key = {0:3, 1:3, 2:3, 5:3, 6:3, 8:3, 9:3, 10:3, 11:3, 12:3, 15:3, 48:14}
    +861    def __get__(self, obj, objtype=None):
    +862        return obj.section4[self._key[obj.pdtn]+2]
    +863    def __set__(self, obj, value):
    +864        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -6671,13 +7155,13 @@

    -
    808class GeneratingProcess:
    -809    _key = defaultdict(lambda: 4, {48:15})
    -810    #_key = {0:4, 1:4, 2:4, 5:4, 6:4, 8:4, 9:4, 10:4, 11:4, 12:4, 15:4, 48:15}
    -811    def __get__(self, obj, objtype=None):
    -812        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='generating_process')
    -813    def __set__(self, obj, value):
    -814        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    866class GeneratingProcess:
    +867    _key = defaultdict(lambda: 4, {48:15})
    +868    #_key = {0:4, 1:4, 2:4, 5:4, 6:4, 8:4, 9:4, 10:4, 11:4, 12:4, 15:4, 48:15}
    +869    def __get__(self, obj, objtype=None):
    +870        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='generating_process')
    +871    def __set__(self, obj, value):
    +872        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -6695,12 +7179,12 @@

    -
    816class HoursAfterDataCutoff:
    -817    _key = defaultdict(lambda: 5, {48:16})
    -818    def __get__(self, obj, objtype=None):
    -819        return obj.section4[self._key[obj.pdtn]+2]
    -820    def __set__(self, obj, value):
    -821        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    874class HoursAfterDataCutoff:
    +875    _key = defaultdict(lambda: 5, {48:16})
    +876    def __get__(self, obj, objtype=None):
    +877        return obj.section4[self._key[obj.pdtn]+2]
    +878    def __set__(self, obj, value):
    +879        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -6718,59 +7202,59 @@

    -
    823class MinutesAfterDataCutoff:
    -824    _key = defaultdict(lambda: 6, {48:17})
    -825    def __get__(self, obj, objtype=None):
    -826        return obj.section4[self._key[obj.pdtn]+2]
    -827    def __set__(self, obj, value):
    -828        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    881class MinutesAfterDataCutoff:
    +882    _key = defaultdict(lambda: 6, {48:17})
    +883    def __get__(self, obj, objtype=None):
    +884        return obj.section4[self._key[obj.pdtn]+2]
    +885    def __set__(self, obj, value):
    +886        obj.section4[self._key[obj.pdtn]+2] = value
     

    -
    - +
    +
    class - UnitOfTimeRange: + UnitOfForecastTime: - +
    - -
    830class UnitOfTimeRange:
    -831    _key = defaultdict(lambda: 7, {48:18})
    -832    #_key = {0:7, 1:7, 2:7, 5:7, 6:7, 8:7, 9:7, 10:7, 11:7, 12:7, 15:7, 48:18}
    -833    def __get__(self, obj, objtype=None):
    -834        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.4')
    -835    def __set__(self, obj, value):
    -836        obj.section4[self._key[obj.pdtn]+2] = value
    +    
    +            
    888class UnitOfForecastTime:
    +889    _key = defaultdict(lambda: 7, {48:18})
    +890    #_key = {0:7, 1:7, 2:7, 5:7, 6:7, 8:7, 9:7, 10:7, 11:7, 12:7, 15:7, 48:18}
    +891    def __get__(self, obj, objtype=None):
    +892        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.4')
    +893    def __set__(self, obj, value):
    +894        obj.section4[self._key[obj.pdtn]+2] = value
     
    -
    - +
    +
    class - ForecastTime: + ValueOfForecastTime: - +
    - -
    838class ForecastTime:
    -839    _key = defaultdict(lambda: 8, {48:19})
    -840    def __get__(self, obj, objtype=None):
    -841        return obj.section4[self._key[obj.pdtn]+2]
    -842    def __set__(self, obj, value):
    -843        obj.section4[self._key[obj.pdtn]+2] = value
    +    
    +            
    896class ValueOfForecastTime:
    +897    _key = defaultdict(lambda: 8, {48:19})
    +898    def __get__(self, obj, objtype=None):
    +899        return obj.section4[self._key[obj.pdtn]+2]
    +900    def __set__(self, obj, value):
    +901        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -6788,12 +7272,12 @@

    -
    845class LeadTime:
    -846    def __get__(self, obj, objtype=None):
    -847        return utils.get_leadtime(obj.section1,obj.section4[1],
    -848                                  obj.section4[2:])
    -849    def __set__(self, obj, value):
    -850        raise NotImplementedError
    +            
    903class LeadTime:
    +904    def __get__(self, obj, objtype=None):
    +905        return utils.get_leadtime(obj.section1,obj.section4[1],
    +906                                  obj.section4[2:])
    +907    def __set__(self, obj, value):
    +908        raise NotImplementedError
     
    @@ -6811,15 +7295,15 @@

    -
    852class FixedSfc1Info:
    -853    _key = defaultdict(lambda: 9, {48:20})
    -854    #_key = {0:9, 1:9, 2:9, 5:9, 6:9, 8:9, 9:9, 10:9, 11:9, 12:9, 15:9, 48:20}
    -855    def __get__(self, obj, objtype=None):
    -856        if obj.section4[self._key[obj.pdtn]+2] == 255:
    -857            return [None, None]
    -858        return tables.get_value_from_table(obj.section4[self._key[obj.pdtn]+2],'4.5')
    -859    def __set__(self, obj, value):
    -860        raise NotImplementedError
    +            
    910class FixedSfc1Info:
    +911    _key = defaultdict(lambda: 9, {48:20})
    +912    #_key = {0:9, 1:9, 2:9, 5:9, 6:9, 8:9, 9:9, 10:9, 11:9, 12:9, 15:9, 48:20}
    +913    def __get__(self, obj, objtype=None):
    +914        if obj.section4[self._key[obj.pdtn]+2] == 255:
    +915            return [None, None]
    +916        return tables.get_value_from_table(obj.section4[self._key[obj.pdtn]+2],'4.5')
    +917    def __set__(self, obj, value):
    +918        raise NotImplementedError
     
    @@ -6837,15 +7321,15 @@

    -
    862class FixedSfc2Info:
    -863    _key = defaultdict(lambda: 12, {48:23})
    -864    #_key = {0:12, 1:12, 2:12, 5:12, 6:12, 8:12, 9:12, 10:12, 11:12, 12:12, 15:12, 48:23}
    -865    def __get__(self, obj, objtype=None):
    -866        if obj.section4[self._key[obj.pdtn]+2] == 255:
    -867            return [None, None]
    -868        return tables.get_value_from_table(obj.section4[self._key[obj.pdtn]+2],'4.5')
    -869    def __set__(self, obj, value):
    -870        raise NotImplementedError
    +            
    920class FixedSfc2Info:
    +921    _key = defaultdict(lambda: 12, {48:23})
    +922    #_key = {0:12, 1:12, 2:12, 5:12, 6:12, 8:12, 9:12, 10:12, 11:12, 12:12, 15:12, 48:23}
    +923    def __get__(self, obj, objtype=None):
    +924        if obj.section4[self._key[obj.pdtn]+2] == 255:
    +925            return [None, None]
    +926        return tables.get_value_from_table(obj.section4[self._key[obj.pdtn]+2],'4.5')
    +927    def __set__(self, obj, value):
    +928        raise NotImplementedError
     
    @@ -6863,13 +7347,13 @@

    -
    872class TypeOfFirstFixedSurface:
    -873    _key = defaultdict(lambda: 9, {48:20})
    -874    #_key = {0:9, 1:9, 2:9, 5:9, 6:9, 8:9, 9:9, 10:9, 11:9, 12:9, 15:9, 48:20}
    -875    def __get__(self, obj, objtype=None):
    -876        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.5')
    -877    def __set__(self, obj, value):
    -878        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    930class TypeOfFirstFixedSurface:
    +931    _key = defaultdict(lambda: 9, {48:20})
    +932    #_key = {0:9, 1:9, 2:9, 5:9, 6:9, 8:9, 9:9, 10:9, 11:9, 12:9, 15:9, 48:20}
    +933    def __get__(self, obj, objtype=None):
    +934        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.5')
    +935    def __set__(self, obj, value):
    +936        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -6887,13 +7371,13 @@

    -
    880class ScaleFactorOfFirstFixedSurface:
    -881    _key = defaultdict(lambda: 10, {48:21})
    -882    #_key = {0:10, 1:10, 2:10, 5:10, 6:10, 8:10, 9:10, 10:10, 11:10, 12:10, 15:10, 48:21}
    -883    def __get__(self, obj, objtype=None):
    -884        return obj.section4[self._key[obj.pdtn]+2]
    -885    def __set__(self, obj, value):
    -886        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    938class ScaleFactorOfFirstFixedSurface:
    +939    _key = defaultdict(lambda: 10, {48:21})
    +940    #_key = {0:10, 1:10, 2:10, 5:10, 6:10, 8:10, 9:10, 10:10, 11:10, 12:10, 15:10, 48:21}
    +941    def __get__(self, obj, objtype=None):
    +942        return obj.section4[self._key[obj.pdtn]+2]
    +943    def __set__(self, obj, value):
    +944        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -6911,13 +7395,13 @@

    -
    888class ScaledValueOfFirstFixedSurface:
    -889    _key = defaultdict(lambda: 11, {48:22})
    -890    #_key = {0:11, 1:11, 2:11, 5:11, 6:11, 8:11, 9:11, 10:11, 11:11, 12:11, 15:11, 48:22}
    -891    def __get__(self, obj, objtype=None):
    -892        return obj.section4[self._key[obj.pdtn]+2]
    -893    def __set__(self, obj, value):
    -894        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    946class ScaledValueOfFirstFixedSurface:
    +947    _key = defaultdict(lambda: 11, {48:22})
    +948    #_key = {0:11, 1:11, 2:11, 5:11, 6:11, 8:11, 9:11, 10:11, 11:11, 12:11, 15:11, 48:22}
    +949    def __get__(self, obj, objtype=None):
    +950        return obj.section4[self._key[obj.pdtn]+2]
    +951    def __set__(self, obj, value):
    +952        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -6935,11 +7419,11 @@

    -
    896class UnitOfFirstFixedSurface:
    -897    def __get__(self, obj, objtype=None):
    -898        return obj._fixedsfc1info[1]
    -899    def __set__(self, obj, value):
    -900        pass
    +            
    954class UnitOfFirstFixedSurface:
    +955    def __get__(self, obj, objtype=None):
    +956        return obj._fixedsfc1info[1]
    +957    def __set__(self, obj, value):
    +958        pass
     
    @@ -6957,12 +7441,12 @@

    -
    902class ValueOfFirstFixedSurface:
    -903    def __get__(self, obj, objtype=None):
    -904        return obj.section4[ScaledValueOfFirstFixedSurface._key[obj.pdtn]+2]/\
    -905                            (10.**obj.section4[ScaleFactorOfFirstFixedSurface._key[obj.pdtn]+2])
    -906    def __set__(self, obj, value):
    -907        pass
    +            
    960class ValueOfFirstFixedSurface:
    +961    def __get__(self, obj, objtype=None):
    +962        return obj.section4[ScaledValueOfFirstFixedSurface._key[obj.pdtn]+2]/\
    +963                            (10.**obj.section4[ScaleFactorOfFirstFixedSurface._key[obj.pdtn]+2])
    +964    def __set__(self, obj, value):
    +965        pass
     
    @@ -6980,13 +7464,13 @@

    -
    909class TypeOfSecondFixedSurface:
    -910    _key = defaultdict(lambda: 12, {48:23})
    -911    #_key = {0:12, 1:12, 2:12, 5:12, 6:12, 8:12, 9:12, 10:12, 11:12, 12:12, 15:12, 48:23}
    -912    def __get__(self, obj, objtype=None):
    -913        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.5')
    -914    def __set__(self, obj, value):
    -915        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    967class TypeOfSecondFixedSurface:
    +968    _key = defaultdict(lambda: 12, {48:23})
    +969    #_key = {0:12, 1:12, 2:12, 5:12, 6:12, 8:12, 9:12, 10:12, 11:12, 12:12, 15:12, 48:23}
    +970    def __get__(self, obj, objtype=None):
    +971        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.5')
    +972    def __set__(self, obj, value):
    +973        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -7004,13 +7488,13 @@

    -
    917class ScaleFactorOfSecondFixedSurface:
    -918    _key = defaultdict(lambda: 13, {48:24})
    -919    #_key = {0:13, 1:13, 2:13, 5:13, 6:13, 8:13, 9:13, 10:13, 11:13, 12:13, 15:13, 48:24}
    -920    def __get__(self, obj, objtype=None):
    -921        return obj.section4[self._key[obj.pdtn]+2]
    -922    def __set__(self, obj, value):
    -923        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    975class ScaleFactorOfSecondFixedSurface:
    +976    _key = defaultdict(lambda: 13, {48:24})
    +977    #_key = {0:13, 1:13, 2:13, 5:13, 6:13, 8:13, 9:13, 10:13, 11:13, 12:13, 15:13, 48:24}
    +978    def __get__(self, obj, objtype=None):
    +979        return obj.section4[self._key[obj.pdtn]+2]
    +980    def __set__(self, obj, value):
    +981        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -7028,13 +7512,13 @@

    -
    925class ScaledValueOfSecondFixedSurface:
    -926    _key = defaultdict(lambda: 14, {48:25})
    -927    #_key = {0:14, 1:14, 2:14, 5:14, 6:14, 8:14, 9:14, 10:14, 11:14, 12:14, 15:14, 48:25}
    -928    def __get__(self, obj, objtype=None):
    -929        return obj.section4[self._key[obj.pdtn]+2]
    -930    def __set__(self, obj, value):
    -931        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    983class ScaledValueOfSecondFixedSurface:
    +984    _key = defaultdict(lambda: 14, {48:25})
    +985    #_key = {0:14, 1:14, 2:14, 5:14, 6:14, 8:14, 9:14, 10:14, 11:14, 12:14, 15:14, 48:25}
    +986    def __get__(self, obj, objtype=None):
    +987        return obj.section4[self._key[obj.pdtn]+2]
    +988    def __set__(self, obj, value):
    +989        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -7052,11 +7536,11 @@

    -
    933class UnitOfSecondFixedSurface:
    -934    def __get__(self, obj, objtype=None):
    -935        return obj._fixedsfc2info[1]
    -936    def __set__(self, obj, value):
    -937        pass
    +            
    991class UnitOfSecondFixedSurface:
    +992    def __get__(self, obj, objtype=None):
    +993        return obj._fixedsfc2info[1]
    +994    def __set__(self, obj, value):
    +995        pass
     
    @@ -7074,12 +7558,12 @@

    -
    939class ValueOfSecondFixedSurface:
    -940    def __get__(self, obj, objtype=None):
    -941        return obj.section4[ScaledValueOfFirstFixedSurface._key[obj.pdtn]+2]/\
    -942                            (10.**obj.section4[ScaleFactorOfFirstFixedSurface._key[obj.pdtn]+2])
    -943    def __set__(self, obj, value):
    -944        pass
    +            
     997class ValueOfSecondFixedSurface:
    + 998    def __get__(self, obj, objtype=None):
    + 999        return obj.section4[ScaledValueOfFirstFixedSurface._key[obj.pdtn]+2]/\
    +1000                            (10.**obj.section4[ScaleFactorOfFirstFixedSurface._key[obj.pdtn]+2])
    +1001    def __set__(self, obj, value):
    +1002        pass
     
    @@ -7097,11 +7581,11 @@

    -
    946class Level:
    -947    def __get__(self, obj, objtype=None):
    -948        return tables.get_wgrib2_level_string(obj.pdtn,obj.section4[2:])
    -949    def __set__(self, obj, value):
    -950        pass
    +            
    1004class Level:
    +1005    def __get__(self, obj, objtype=None):
    +1006        return tables.get_wgrib2_level_string(obj.pdtn,obj.section4[2:])
    +1007    def __set__(self, obj, value):
    +1008        pass
     
    @@ -7119,14 +7603,14 @@

    -
    952class TypeOfEnsembleForecast:
    -953    _key = {1:15, 11:15}
    -954    def __get__(self, obj, objtype=None):
    -955        pdtn = obj.section4[1]
    -956        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.6')
    -957    def __set__(self, obj, value):
    -958        pdtn = obj.section4[1]
    -959        obj.section4[self._key[pdtn]+2] = value
    +            
    1010class TypeOfEnsembleForecast:
    +1011    _key = {1:15, 11:15}
    +1012    def __get__(self, obj, objtype=None):
    +1013        pdtn = obj.section4[1]
    +1014        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.6')
    +1015    def __set__(self, obj, value):
    +1016        pdtn = obj.section4[1]
    +1017        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7144,14 +7628,14 @@

    -
    961class PerturbationNumber:
    -962    _key = {1:16, 11:16}
    -963    def __get__(self, obj, objtype=None):
    -964        pdtn = obj.section4[1]
    -965        return obj.section4[self._key[pdtn]+2]
    -966    def __set__(self, obj, value):
    -967        pdtn = obj.section4[1]
    -968        obj.section4[self._key[pdtn]+2] = value
    +            
    1019class PerturbationNumber:
    +1020    _key = {1:16, 11:16}
    +1021    def __get__(self, obj, objtype=None):
    +1022        pdtn = obj.section4[1]
    +1023        return obj.section4[self._key[pdtn]+2]
    +1024    def __set__(self, obj, value):
    +1025        pdtn = obj.section4[1]
    +1026        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7169,14 +7653,14 @@

    -
    970class NumberOfEnsembleForecasts:
    -971    _key = {1:17, 2:16, 11:17, 12:16}
    -972    def __get__(self, obj, objtype=None):
    -973        pdtn = obj.section4[1]
    -974        return obj.section4[self._key[pdtn]+2]
    -975    def __set__(self, obj, value):
    -976        pdtn = obj.section4[1]
    -977        obj.section4[self._key[pdtn]+2] = value
    +            
    1028class NumberOfEnsembleForecasts:
    +1029    _key = {1:17, 2:16, 11:17, 12:16}
    +1030    def __get__(self, obj, objtype=None):
    +1031        pdtn = obj.section4[1]
    +1032        return obj.section4[self._key[pdtn]+2]
    +1033    def __set__(self, obj, value):
    +1034        pdtn = obj.section4[1]
    +1035        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7194,14 +7678,14 @@

    -
    979class TypeOfDerivedForecast:
    -980    _key = {2:15, 12:15}
    -981    def __get__(self, obj, objtype=None):
    -982        pdtn = obj.section4[1]
    -983        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.7')
    -984    def __set__(self, obj, value):
    -985        pdtn = obj.section4[1]
    -986        obj.section4[self._key[pdtn]+2] = value
    +            
    1037class TypeOfDerivedForecast:
    +1038    _key = {2:15, 12:15}
    +1039    def __get__(self, obj, objtype=None):
    +1040        pdtn = obj.section4[1]
    +1041        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.7')
    +1042    def __set__(self, obj, value):
    +1043        pdtn = obj.section4[1]
    +1044        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7219,14 +7703,14 @@

    -
    988class ForecastProbabilityNumber:
    -989    _key = {5:15, 9:15}
    -990    def __get__(self, obj, objtype=None):
    -991        pdtn = obj.section4[1]
    -992        return obj.section4[self._key[pdtn]+2]
    -993    def __set__(self, obj, value):
    -994        pdtn = obj.section4[1]
    -995        obj.section4[self._key[pdtn]+2] = value
    +            
    1046class ForecastProbabilityNumber:
    +1047    _key = {5:15, 9:15}
    +1048    def __get__(self, obj, objtype=None):
    +1049        pdtn = obj.section4[1]
    +1050        return obj.section4[self._key[pdtn]+2]
    +1051    def __set__(self, obj, value):
    +1052        pdtn = obj.section4[1]
    +1053        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7244,14 +7728,14 @@

    -
     997class TotalNumberOfForecastProbabilities:
    - 998    _key = {5:16, 9:16}
    - 999    def __get__(self, obj, objtype=None):
    -1000        pdtn = obj.section4[1]
    -1001        return obj.section4[self._key[pdtn]+2]
    -1002    def __set__(self, obj, value):
    -1003        pdtn = obj.section4[1]
    -1004        obj.section4[self._key[pdtn]+2] = value
    +            
    1055class TotalNumberOfForecastProbabilities:
    +1056    _key = {5:16, 9:16}
    +1057    def __get__(self, obj, objtype=None):
    +1058        pdtn = obj.section4[1]
    +1059        return obj.section4[self._key[pdtn]+2]
    +1060    def __set__(self, obj, value):
    +1061        pdtn = obj.section4[1]
    +1062        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7269,14 +7753,14 @@

    -
    1006class TypeOfProbability:
    -1007    _key = {5:17, 9:17}
    -1008    def __get__(self, obj, objtype=None):
    -1009        pdtn = obj.section4[1]
    -1010        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.9')
    -1011    def __set__(self, obj, value):
    -1012        pdtn = obj.section4[1]
    -1013        obj.section4[self._key[pdtn]+2] = value
    +            
    1064class TypeOfProbability:
    +1065    _key = {5:17, 9:17}
    +1066    def __get__(self, obj, objtype=None):
    +1067        pdtn = obj.section4[1]
    +1068        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.9')
    +1069    def __set__(self, obj, value):
    +1070        pdtn = obj.section4[1]
    +1071        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7294,14 +7778,14 @@

    -
    1015class ScaleFactorOfThresholdLowerLimit:
    -1016    _key = {5:18, 9:18}
    -1017    def __get__(self, obj, objtype=None):
    -1018        pdtn = obj.section4[1]
    -1019        return obj.section4[self._key[pdtn]+2]
    -1020    def __set__(self, obj, value):
    -1021        pdtn = obj.section4[1]
    -1022        obj.section4[self._key[pdtn]+2] = value
    +            
    1073class ScaleFactorOfThresholdLowerLimit:
    +1074    _key = {5:18, 9:18}
    +1075    def __get__(self, obj, objtype=None):
    +1076        pdtn = obj.section4[1]
    +1077        return obj.section4[self._key[pdtn]+2]
    +1078    def __set__(self, obj, value):
    +1079        pdtn = obj.section4[1]
    +1080        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7319,14 +7803,64 @@

    -
    1024class ScaledValueOfThresholdLowerLimit:
    -1025    _key = {5:19, 9:19}
    -1026    def __get__(self, obj, objtype=None):
    -1027        pdtn = obj.section4[1]
    -1028        return obj.section4[self._key[pdtn]+2]
    -1029    def __set__(self, obj, value):
    -1030        pdtn = obj.section4[1]
    -1031        obj.section4[self._key[pdtn]+2] = value
    +            
    1082class ScaledValueOfThresholdLowerLimit:
    +1083    _key = {5:19, 9:19}
    +1084    def __get__(self, obj, objtype=None):
    +1085        pdtn = obj.section4[1]
    +1086        return obj.section4[self._key[pdtn]+2]
    +1087    def __set__(self, obj, value):
    +1088        pdtn = obj.section4[1]
    +1089        obj.section4[self._key[pdtn]+2] = value
    +
    + + + + +
    +
    + +
    + + class + ScaleFactorOfThresholdUpperLimit: + + + +
    + +
    1091class ScaleFactorOfThresholdUpperLimit:
    +1092    _key = {5:20, 9:20}
    +1093    def __get__(self, obj, objtype=None):
    +1094        pdtn = obj.section4[1]
    +1095        return obj.section4[self._key[pdtn]+2]
    +1096    def __set__(self, obj, value):
    +1097        pdtn = obj.section4[1]
    +1098        obj.section4[self._key[pdtn]+2] = value
    +
    + + + + +
    +
    + +
    + + class + ScaledValueOfThresholdUpperLimit: + + + +
    + +
    1100class ScaledValueOfThresholdUpperLimit:
    +1101    _key = {5:21, 9:21}
    +1102    def __get__(self, obj, objtype=None):
    +1103        pdtn = obj.section4[1]
    +1104        return obj.section4[self._key[pdtn]+2]
    +1105    def __set__(self, obj, value):
    +1106        pdtn = obj.section4[1]
    +1107        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7344,15 +7878,15 @@

    -
    1033class ThresholdLowerLimit:
    -1034    def __get__(self, obj, objtype=None):
    -1035        if obj.section4[18+2] == -127 and \
    -1036           obj.section4[19+2] == 255:
    -1037            return 0.0
    -1038        else:
    -1039            return obj.section4[19+2]/(10.**obj.section4[18+2])
    -1040    def __set__(self, obj, value):
    -1041        pass
    +            
    1109class ThresholdLowerLimit:
    +1110    def __get__(self, obj, objtype=None):
    +1111        if obj.section4[18+2] == -127 and \
    +1112           obj.section4[19+2] == 255:
    +1113            return 0.0
    +1114        else:
    +1115            return obj.section4[19+2]/(10.**obj.section4[18+2])
    +1116    def __set__(self, obj, value):
    +1117        pass
     
    @@ -7370,15 +7904,15 @@

    -
    1043class ThresholdUpperLimit:
    -1044    def __get__(self, obj, objtype=None):
    -1045        if obj.section4[20+2] == -127 and \
    -1046           obj.section4[21+2] == 255:
    -1047            return 0.0
    -1048        else:
    -1049            return obj.section4[21+2]/(10.**obj.section4[20+2])
    -1050    def __set__(self, obj, value):
    -1051        pass
    +            
    1119class ThresholdUpperLimit:
    +1120    def __get__(self, obj, objtype=None):
    +1121        if obj.section4[20+2] == -127 and \
    +1122           obj.section4[21+2] == 255:
    +1123            return 0.0
    +1124        else:
    +1125            return obj.section4[21+2]/(10.**obj.section4[20+2])
    +1126    def __set__(self, obj, value):
    +1127        pass
     
    @@ -7396,11 +7930,11 @@

    -
    1053class Threshold:
    -1054    def __get__(self, obj, objtype=None):
    -1055        return utils.get_wgrib2_prob_string(*obj.section4[17+2:22+2])
    -1056    def __set__(self, obj, value):
    -1057        pass
    +            
    1129class Threshold:
    +1130    def __get__(self, obj, objtype=None):
    +1131        return utils.get_wgrib2_prob_string(*obj.section4[17+2:22+2])
    +1132    def __set__(self, obj, value):
    +1133        pass
     
    @@ -7418,14 +7952,14 @@

    -
    1059class PercentileValue:
    -1060    _key = {6:15, 10:15}
    -1061    def __get__(self, obj, objtype=None):
    -1062        pdtn = obj.section4[1]
    -1063        return obj.section4[self._key[pdtn]+2]
    -1064    def __set__(self, obj, value):
    -1065        pdtn = obj.section4[1]
    -1066        obj.section4[self._key[pdtn]+2] = value
    +            
    1135class PercentileValue:
    +1136    _key = {6:15, 10:15}
    +1137    def __get__(self, obj, objtype=None):
    +1138        pdtn = obj.section4[1]
    +1139        return obj.section4[self._key[pdtn]+2]
    +1140    def __set__(self, obj, value):
    +1141        pdtn = obj.section4[1]
    +1142        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7443,14 +7977,14 @@

    -
    1068class YearOfEndOfTimePeriod:
    -1069    _key = {8:15, 9:22, 10:16, 11:18, 12:17}
    -1070    def __get__(self, obj, objtype=None):
    -1071        pdtn = obj.section4[1]
    -1072        return obj.section4[self._key[pdtn]+2]
    -1073    def __set__(self, obj, value):
    -1074        pdtn = obj.section4[1]
    -1075        obj.section4[self._key[pdtn]+2] = value
    +            
    1144class YearOfEndOfTimePeriod:
    +1145    _key = {8:15, 9:22, 10:16, 11:18, 12:17}
    +1146    def __get__(self, obj, objtype=None):
    +1147        pdtn = obj.section4[1]
    +1148        return obj.section4[self._key[pdtn]+2]
    +1149    def __set__(self, obj, value):
    +1150        pdtn = obj.section4[1]
    +1151        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7468,14 +8002,14 @@

    -
    1077class MonthOfEndOfTimePeriod:
    -1078    _key = {8:16, 9:23, 10:17, 11:19, 12:18}
    -1079    def __get__(self, obj, objtype=None):
    -1080        pdtn = obj.section4[1]
    -1081        return obj.section4[self._key[pdtn]+2]
    -1082    def __set__(self, obj, value):
    -1083        pdtn = obj.section4[1]
    -1084        obj.section4[self._key[pdtn]+2] = value
    +            
    1153class MonthOfEndOfTimePeriod:
    +1154    _key = {8:16, 9:23, 10:17, 11:19, 12:18}
    +1155    def __get__(self, obj, objtype=None):
    +1156        pdtn = obj.section4[1]
    +1157        return obj.section4[self._key[pdtn]+2]
    +1158    def __set__(self, obj, value):
    +1159        pdtn = obj.section4[1]
    +1160        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7493,14 +8027,14 @@

    -
    1086class DayOfEndOfTimePeriod:
    -1087    _key = {8:17, 9:24, 10:18, 11:20, 12:19}
    -1088    def __get__(self, obj, objtype=None):
    -1089        pdtn = obj.section4[1]
    -1090        return obj.section4[self._key[pdtn]+2]
    -1091    def __set__(self, obj, value):
    -1092        pdtn = obj.section4[1]
    -1093        obj.section4[self._key[pdtn]+2] = value
    +            
    1162class DayOfEndOfTimePeriod:
    +1163    _key = {8:17, 9:24, 10:18, 11:20, 12:19}
    +1164    def __get__(self, obj, objtype=None):
    +1165        pdtn = obj.section4[1]
    +1166        return obj.section4[self._key[pdtn]+2]
    +1167    def __set__(self, obj, value):
    +1168        pdtn = obj.section4[1]
    +1169        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7518,14 +8052,14 @@

    -
    1095class HourOfEndOfTimePeriod:
    -1096    _key = {8:18, 9:25, 10:19, 11:21, 12:20}
    -1097    def __get__(self, obj, objtype=None):
    -1098        pdtn = obj.section4[1]
    -1099        return obj.section4[self._key[pdtn]+2]
    -1100    def __set__(self, obj, value):
    -1101        pdtn = obj.section4[1]
    -1102        obj.section4[self._key[pdtn]+2] = value
    +            
    1171class HourOfEndOfTimePeriod:
    +1172    _key = {8:18, 9:25, 10:19, 11:21, 12:20}
    +1173    def __get__(self, obj, objtype=None):
    +1174        pdtn = obj.section4[1]
    +1175        return obj.section4[self._key[pdtn]+2]
    +1176    def __set__(self, obj, value):
    +1177        pdtn = obj.section4[1]
    +1178        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7543,14 +8077,14 @@

    -
    1104class MinuteOfEndOfTimePeriod:
    -1105    _key = {8:19, 9:26, 10:20, 11:22, 12:21}
    -1106    def __get__(self, obj, objtype=None):
    -1107        pdtn = obj.section4[1]
    -1108        return obj.section4[self._key[pdtn]+2]
    -1109    def __set__(self, obj, value):
    -1110        pdtn = obj.section4[1]
    -1111        obj.section4[self._key[pdtn]+2] = value
    +            
    1180class MinuteOfEndOfTimePeriod:
    +1181    _key = {8:19, 9:26, 10:20, 11:22, 12:21}
    +1182    def __get__(self, obj, objtype=None):
    +1183        pdtn = obj.section4[1]
    +1184        return obj.section4[self._key[pdtn]+2]
    +1185    def __set__(self, obj, value):
    +1186        pdtn = obj.section4[1]
    +1187        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7568,14 +8102,14 @@

    -
    1113class SecondOfEndOfTimePeriod:
    -1114    _key = {8:20, 9:27, 10:21, 11:23, 12:22}
    -1115    def __get__(self, obj, objtype=None):
    -1116        pdtn = obj.section4[1]
    -1117        return obj.section4[self._key[pdtn]+2]
    -1118    def __set__(self, obj, value):
    -1119        pdtn = obj.section4[1]
    -1120        obj.section4[self._key[pdtn]+2] = value
    +            
    1189class SecondOfEndOfTimePeriod:
    +1190    _key = {8:20, 9:27, 10:21, 11:23, 12:22}
    +1191    def __get__(self, obj, objtype=None):
    +1192        pdtn = obj.section4[1]
    +1193        return obj.section4[self._key[pdtn]+2]
    +1194    def __set__(self, obj, value):
    +1195        pdtn = obj.section4[1]
    +1196        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7593,11 +8127,11 @@

    -
    1122class Duration:
    -1123    def __get__(self, obj, objtype=None):
    -1124        return utils.get_duration(obj.section4[1],obj.section4[2:])
    -1125    def __set__(self, obj, value):
    -1126        pass
    +            
    1198class Duration:
    +1199    def __get__(self, obj, objtype=None):
    +1200        return utils.get_duration(obj.section4[1],obj.section4[2:])
    +1201    def __set__(self, obj, value):
    +1202        pass
     
    @@ -7615,17 +8149,17 @@

    -
    1128class ValidDate:
    -1129    _key = {8:slice(15,21), 9:slice(22,28), 10:slice(16,22), 11:slice(18,24), 12:slice(17,23)}
    -1130    def __get__(self, obj, objtype=None):
    -1131        pdtn = obj.section4[1]
    -1132        try:
    -1133            s = slice(self._key[pdtn].start+2,self._key[pdtn].stop+2)
    -1134            return datetime.datetime(*obj.section4[s])
    -1135        except(KeyError):
    -1136            return obj.refDate + obj.leadTime
    -1137    def __set__(self, obj, value):
    -1138        pass
    +            
    1204class ValidDate:
    +1205    _key = {8:slice(15,21), 9:slice(22,28), 10:slice(16,22), 11:slice(18,24), 12:slice(17,23)}
    +1206    def __get__(self, obj, objtype=None):
    +1207        pdtn = obj.section4[1]
    +1208        try:
    +1209            s = slice(self._key[pdtn].start+2,self._key[pdtn].stop+2)
    +1210            return datetime.datetime(*obj.section4[s])
    +1211        except(KeyError):
    +1212            return obj.refDate + obj.leadTime
    +1213    def __set__(self, obj, value):
    +1214        pass
     
    @@ -7643,14 +8177,14 @@

    -
    1140class NumberOfTimeRanges:
    -1141    _key = {8:21, 9:28, 10:22, 11:24, 12:23}
    -1142    def __get__(self, obj, objtype=None):
    -1143        pdtn = obj.section4[1]
    -1144        return obj.section4[self._key[pdtn]+2]
    -1145    def __set__(self, obj, value):
    -1146        pdtn = obj.section4[1]
    -1147        obj.section4[self._key[pdtn]+2] = value
    +            
    1216class NumberOfTimeRanges:
    +1217    _key = {8:21, 9:28, 10:22, 11:24, 12:23}
    +1218    def __get__(self, obj, objtype=None):
    +1219        pdtn = obj.section4[1]
    +1220        return obj.section4[self._key[pdtn]+2]
    +1221    def __set__(self, obj, value):
    +1222        pdtn = obj.section4[1]
    +1223        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7668,14 +8202,14 @@

    -
    1149class NumberOfMissingValues:
    -1150    _key = {8:22, 9:29, 10:23, 11:25, 12:24}
    -1151    def __get__(self, obj, objtype=None):
    -1152        pdtn = obj.section4[1]
    -1153        return obj.section4[self._key[pdtn]+2]
    -1154    def __set__(self, obj, value):
    -1155        pdtn = obj.section4[1]
    -1156        obj.section4[self._key[pdtn]+2] = value
    +            
    1225class NumberOfMissingValues:
    +1226    _key = {8:22, 9:29, 10:23, 11:25, 12:24}
    +1227    def __get__(self, obj, objtype=None):
    +1228        pdtn = obj.section4[1]
    +1229        return obj.section4[self._key[pdtn]+2]
    +1230    def __set__(self, obj, value):
    +1231        pdtn = obj.section4[1]
    +1232        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7693,14 +8227,14 @@

    -
    1158class StatisticalProcess:
    -1159    _key = {8:23, 9:30, 10:24, 11:26, 12:25, 15:15}
    -1160    def __get__(self, obj, objtype=None):
    -1161        pdtn = obj.section4[1]
    -1162        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.10')
    -1163    def __set__(self, obj, value):
    -1164        pdtn = obj.section4[1]
    -1165        obj.section4[self._key[pdtn]+2] = value
    +            
    1234class StatisticalProcess:
    +1235    _key = {8:23, 9:30, 10:24, 11:26, 12:25, 15:15}
    +1236    def __get__(self, obj, objtype=None):
    +1237        pdtn = obj.section4[1]
    +1238        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.10')
    +1239    def __set__(self, obj, value):
    +1240        pdtn = obj.section4[1]
    +1241        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7718,14 +8252,14 @@

    -
    1167class TypeOfTimeIncrementOfStatisticalProcess:
    -1168    _key = {8:24, 9:31, 10:25, 11:27, 12:26}
    -1169    def __get__(self, obj, objtype=None):
    -1170        pdtn = obj.section4[1]
    -1171        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.11')
    -1172    def __set__(self, obj, value):
    -1173        pdtn = obj.section4[1]
    -1174        obj.section4[self._key[pdtn]+2] = value
    +            
    1243class TypeOfTimeIncrementOfStatisticalProcess:
    +1244    _key = {8:24, 9:31, 10:25, 11:27, 12:26}
    +1245    def __get__(self, obj, objtype=None):
    +1246        pdtn = obj.section4[1]
    +1247        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.11')
    +1248    def __set__(self, obj, value):
    +1249        pdtn = obj.section4[1]
    +1250        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7743,14 +8277,14 @@

    -
    1176class UnitOfTimeRangeOfStatisticalProcess:
    -1177    _key = {8:25, 9:32, 10:26, 11:28, 12:27}
    -1178    def __get__(self, obj, objtype=None):
    -1179        pdtn = obj.section4[1]
    -1180        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.4')
    -1181    def __set__(self, obj, value):
    -1182        pdtn = obj.section4[1]
    -1183        obj.section4[self._key[pdtn]+2] = value
    +            
    1252class UnitOfTimeRangeOfStatisticalProcess:
    +1253    _key = {8:25, 9:32, 10:26, 11:28, 12:27}
    +1254    def __get__(self, obj, objtype=None):
    +1255        pdtn = obj.section4[1]
    +1256        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.4')
    +1257    def __set__(self, obj, value):
    +1258        pdtn = obj.section4[1]
    +1259        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7768,14 +8302,14 @@

    -
    1185class TimeRangeOfStatisticalProcess:
    -1186    _key = {8:26, 9:33, 10:27, 11:29, 12:28}
    -1187    def __get__(self, obj, objtype=None):
    -1188        pdtn = obj.section4[1]
    -1189        return obj.section4[self._key[pdtn]+2]
    -1190    def __set__(self, obj, value):
    -1191        pdtn = obj.section4[1]
    -1192        obj.section4[self._key[pdtn]+2] = value
    +            
    1261class TimeRangeOfStatisticalProcess:
    +1262    _key = {8:26, 9:33, 10:27, 11:29, 12:28}
    +1263    def __get__(self, obj, objtype=None):
    +1264        pdtn = obj.section4[1]
    +1265        return obj.section4[self._key[pdtn]+2]
    +1266    def __set__(self, obj, value):
    +1267        pdtn = obj.section4[1]
    +1268        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7793,14 +8327,14 @@

    -
    1194class UnitOfTimeRangeOfSuccessiveFields:
    -1195    _key = {8:27, 9:34, 10:28, 11:30, 12:29}
    -1196    def __get__(self, obj, objtype=None):
    -1197        pdtn = obj.section4[1]
    -1198        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.4')
    -1199    def __set__(self, obj, value):
    -1200        pdtn = obj.section4[1]
    -1201        obj.section4[self._key[pdtn]+2] = value
    +            
    1270class UnitOfTimeRangeOfSuccessiveFields:
    +1271    _key = {8:27, 9:34, 10:28, 11:30, 12:29}
    +1272    def __get__(self, obj, objtype=None):
    +1273        pdtn = obj.section4[1]
    +1274        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.4')
    +1275    def __set__(self, obj, value):
    +1276        pdtn = obj.section4[1]
    +1277        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7818,14 +8352,14 @@

    -
    1203class TimeIncrementOfSuccessiveFields:
    -1204    _key = {8:28, 9:35, 10:29, 11:31, 12:30}
    -1205    def __get__(self, obj, objtype=None):
    -1206        pdtn = obj.section4[1]
    -1207        return obj.section4[self._key[pdtn]+2]
    -1208    def __set__(self, obj, value):
    -1209        pdtn = obj.section4[1]
    -1210        obj.section4[self._key[pdtn]+2] = value
    +            
    1279class TimeIncrementOfSuccessiveFields:
    +1280    _key = {8:28, 9:35, 10:29, 11:31, 12:30}
    +1281    def __get__(self, obj, objtype=None):
    +1282        pdtn = obj.section4[1]
    +1283        return obj.section4[self._key[pdtn]+2]
    +1284    def __set__(self, obj, value):
    +1285        pdtn = obj.section4[1]
    +1286        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7843,14 +8377,14 @@

    -
    1212class TypeOfStatisticalProcessing:
    -1213    _key = {15:16}
    -1214    def __get__(self, obj, objtype=None):
    -1215        pdtn = obj.section4[1]
    -1216        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.15')
    -1217    def __set__(self, obj, value):
    -1218        pdtn = obj.section4[1]
    -1219        obj.section4[self._key[pdtn]+2] = value
    +            
    1288class TypeOfStatisticalProcessing:
    +1289    _key = {15:16}
    +1290    def __get__(self, obj, objtype=None):
    +1291        pdtn = obj.section4[1]
    +1292        return Grib2Metadata(obj.section4[self._key[pdtn]+2],table='4.15')
    +1293    def __set__(self, obj, value):
    +1294        pdtn = obj.section4[1]
    +1295        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7868,14 +8402,14 @@

    -
    1221class NumberOfDataPointsForSpatialProcessing:
    -1222    _key = {15:17}
    -1223    def __get__(self, obj, objtype=None):
    -1224        pdtn = obj.section4[1]
    -1225        return obj.section4[self._key[pdtn]+2]
    -1226    def __set__(self, obj, value):
    -1227        pdtn = obj.section4[1]
    -1228        obj.section4[self._key[pdtn]+2] = value
    +            
    1297class NumberOfDataPointsForSpatialProcessing:
    +1298    _key = {15:17}
    +1299    def __get__(self, obj, objtype=None):
    +1300        pdtn = obj.section4[1]
    +1301        return obj.section4[self._key[pdtn]+2]
    +1302    def __set__(self, obj, value):
    +1303        pdtn = obj.section4[1]
    +1304        obj.section4[self._key[pdtn]+2] = value
     
    @@ -7893,12 +8427,12 @@

    -
    1230class TypeOfAerosol:
    -1231    _key = {48:2}
    -1232    def __get__(self, obj, objtype=None):
    -1233        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.233')
    -1234    def __set__(self, obj, value):
    -1235        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    1306class TypeOfAerosol:
    +1307    _key = {48:2}
    +1308    def __get__(self, obj, objtype=None):
    +1309        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.233')
    +1310    def __set__(self, obj, value):
    +1311        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -7916,12 +8450,12 @@

    -
    1237class TypeOfIntervalForAerosolSize:
    -1238    _key = {48:3}
    -1239    def __get__(self, obj, objtype=None):
    -1240        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.91')
    -1241    def __set__(self, obj, value):
    -1242        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    1313class TypeOfIntervalForAerosolSize:
    +1314    _key = {48:3}
    +1315    def __get__(self, obj, objtype=None):
    +1316        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.91')
    +1317    def __set__(self, obj, value):
    +1318        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -7939,12 +8473,12 @@

    -
    1244class ScaleFactorOfFirstSize:
    -1245    _key = {48:4}
    -1246    def __get__(self, obj, objtype=None):
    -1247        return obj.section4[self._key[obj.pdtn]+2]
    -1248    def __set__(self, obj, value):
    -1249        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    1320class ScaleFactorOfFirstSize:
    +1321    _key = {48:4}
    +1322    def __get__(self, obj, objtype=None):
    +1323        return obj.section4[self._key[obj.pdtn]+2]
    +1324    def __set__(self, obj, value):
    +1325        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -7962,12 +8496,12 @@

    -
    1251class ScaledValueOfFirstSize:
    -1252    _key = {48:5}
    -1253    def __get__(self, obj, objtype=None):
    -1254        return obj.section4[self._key[obj.pdtn]+2]
    -1255    def __set__(self, obj, value):
    -1256        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    1327class ScaledValueOfFirstSize:
    +1328    _key = {48:5}
    +1329    def __get__(self, obj, objtype=None):
    +1330        return obj.section4[self._key[obj.pdtn]+2]
    +1331    def __set__(self, obj, value):
    +1332        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -7985,12 +8519,12 @@

    -
    1258class ScaleFactorOfSecondSize:
    -1259    _key = {48:6}
    -1260    def __get__(self, obj, objtype=None):
    -1261        return obj.section4[self._key[obj.pdtn]+2]
    -1262    def __set__(self, obj, value):
    -1263        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    1334class ScaleFactorOfSecondSize:
    +1335    _key = {48:6}
    +1336    def __get__(self, obj, objtype=None):
    +1337        return obj.section4[self._key[obj.pdtn]+2]
    +1338    def __set__(self, obj, value):
    +1339        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -8008,12 +8542,12 @@

    -
    1265class ScaledValueOfSecondSize:
    -1266    _key = {48:7}
    -1267    def __get__(self, obj, objtype=None):
    -1268        return obj.section4[self._key[obj.pdtn]+2]
    -1269    def __set__(self, obj, value):
    -1270        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    1341class ScaledValueOfSecondSize:
    +1342    _key = {48:7}
    +1343    def __get__(self, obj, objtype=None):
    +1344        return obj.section4[self._key[obj.pdtn]+2]
    +1345    def __set__(self, obj, value):
    +1346        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -8031,12 +8565,12 @@

    -
    1272class TypeOfIntervalForAerosolWavelength:
    -1273    _key = {48:8}
    -1274    def __get__(self, obj, objtype=None):
    -1275        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.91')
    -1276    def __set__(self, obj, value):
    -1277        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    1348class TypeOfIntervalForAerosolWavelength:
    +1349    _key = {48:8}
    +1350    def __get__(self, obj, objtype=None):
    +1351        return Grib2Metadata(obj.section4[self._key[obj.pdtn]+2],table='4.91')
    +1352    def __set__(self, obj, value):
    +1353        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -8054,12 +8588,12 @@

    -
    1279class ScaleFactorOfFirstWavelength:
    -1280    _key = {48:9}
    -1281    def __get__(self, obj, objtype=None):
    -1282        return obj.section4[self._key[obj.pdtn]+2]
    -1283    def __set__(self, obj, value):
    -1284        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    1355class ScaleFactorOfFirstWavelength:
    +1356    _key = {48:9}
    +1357    def __get__(self, obj, objtype=None):
    +1358        return obj.section4[self._key[obj.pdtn]+2]
    +1359    def __set__(self, obj, value):
    +1360        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -8077,12 +8611,12 @@

    -
    1286class ScaledValueOfFirstWavelength:
    -1287    _key = {48:10}
    -1288    def __get__(self, obj, objtype=None):
    -1289        return obj.section4[self._key[obj.pdtn]+2]
    -1290    def __set__(self, obj, value):
    -1291        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    1362class ScaledValueOfFirstWavelength:
    +1363    _key = {48:10}
    +1364    def __get__(self, obj, objtype=None):
    +1365        return obj.section4[self._key[obj.pdtn]+2]
    +1366    def __set__(self, obj, value):
    +1367        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -8100,12 +8634,12 @@

    -
    1293class ScaleFactorOfSecondWavelength:
    -1294    _key = {48:11}
    -1295    def __get__(self, obj, objtype=None):
    -1296        return obj.section4[self._key[obj.pdtn]+2]
    -1297    def __set__(self, obj, value):
    -1298        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    1369class ScaleFactorOfSecondWavelength:
    +1370    _key = {48:11}
    +1371    def __get__(self, obj, objtype=None):
    +1372        return obj.section4[self._key[obj.pdtn]+2]
    +1373    def __set__(self, obj, value):
    +1374        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -8123,12 +8657,12 @@

    -
    1300class ScaledValueOfSecondWavelength:
    -1301    _key = {48:12}
    -1302    def __get__(self, obj, objtype=None):
    -1303        return obj.section4[self._key[obj.pdtn]+2]
    -1304    def __set__(self, obj, value):
    -1305        obj.section4[self._key[obj.pdtn]+2] = value
    +            
    1376class ScaledValueOfSecondWavelength:
    +1377    _key = {48:12}
    +1378    def __get__(self, obj, objtype=None):
    +1379        return obj.section4[self._key[obj.pdtn]+2]
    +1380    def __set__(self, obj, value):
    +1381        obj.section4[self._key[obj.pdtn]+2] = value
     
    @@ -8147,29 +8681,29 @@

    -
    1307@dataclass(init=False)
    -1308class ProductDefinitionTemplate0():
    -1309    _len = 15
    -1310    _num = 0
    -1311    parameterCategory: int = field(init=False,repr=False,default=ParameterCategory())
    -1312    parameterNumber: int = field(init=False,repr=False,default=ParameterNumber())
    -1313    typeOfGeneratingProcess: Grib2Metadata = field(init=False,repr=False,default=TypeOfGeneratingProcess())
    -1314    generatingProcess: Grib2Metadata = field(init=False, repr=False, default=GeneratingProcess())
    -1315    backgroundGeneratingProcessIdentifier: int = field(init=False,repr=False,default=BackgroundGeneratingProcessIdentifier())
    -1316    hoursAfterDataCutoff: int = field(init=False,repr=False,default=HoursAfterDataCutoff())
    -1317    minutesAfterDataCutoff: int = field(init=False,repr=False,default=MinutesAfterDataCutoff())
    -1318    unitOfTimeRange: Grib2Metadata = field(init=False,repr=False,default=UnitOfTimeRange())
    -1319    forecastTime: int = field(init=False,repr=False,default=ForecastTime())
    -1320    typeOfFirstFixedSurface: Grib2Metadata = field(init=False,repr=False,default=TypeOfFirstFixedSurface())
    -1321    scaleFactorOfFirstFixedSurface: int = field(init=False,repr=False,default=ScaleFactorOfFirstFixedSurface())
    -1322    scaledValueOfFirstFixedSurface: int = field(init=False,repr=False,default=ScaledValueOfFirstFixedSurface())
    -1323    typeOfSecondFixedSurface: Grib2Metadata = field(init=False,repr=False,default=TypeOfSecondFixedSurface())
    -1324    scaleFactorOfSecondFixedSurface: int = field(init=False,repr=False,default=ScaleFactorOfSecondFixedSurface())
    -1325    scaledValueOfSecondFixedSurface: int = field(init=False,repr=False,default=ScaledValueOfSecondFixedSurface())
    -1326    @classmethod
    -1327    @property
    -1328    def _attrs(cls):
    -1329        return list(cls.__dataclass_fields__.keys())
    +            
    1383@dataclass(init=False)
    +1384class ProductDefinitionTemplate0():
    +1385    _len = 15
    +1386    _num = 0
    +1387    parameterCategory: int = field(init=False,repr=False,default=ParameterCategory())
    +1388    parameterNumber: int = field(init=False,repr=False,default=ParameterNumber())
    +1389    typeOfGeneratingProcess: Grib2Metadata = field(init=False,repr=False,default=TypeOfGeneratingProcess())
    +1390    generatingProcess: Grib2Metadata = field(init=False, repr=False, default=GeneratingProcess())
    +1391    backgroundGeneratingProcessIdentifier: int = field(init=False,repr=False,default=BackgroundGeneratingProcessIdentifier())
    +1392    hoursAfterDataCutoff: int = field(init=False,repr=False,default=HoursAfterDataCutoff())
    +1393    minutesAfterDataCutoff: int = field(init=False,repr=False,default=MinutesAfterDataCutoff())
    +1394    unitOfForecastTime: Grib2Metadata = field(init=False,repr=False,default=UnitOfForecastTime())
    +1395    valueOfForecastTime: int = field(init=False,repr=False,default=ValueOfForecastTime())
    +1396    typeOfFirstFixedSurface: Grib2Metadata = field(init=False,repr=False,default=TypeOfFirstFixedSurface())
    +1397    scaleFactorOfFirstFixedSurface: int = field(init=False,repr=False,default=ScaleFactorOfFirstFixedSurface())
    +1398    scaledValueOfFirstFixedSurface: int = field(init=False,repr=False,default=ScaledValueOfFirstFixedSurface())
    +1399    typeOfSecondFixedSurface: Grib2Metadata = field(init=False,repr=False,default=TypeOfSecondFixedSurface())
    +1400    scaleFactorOfSecondFixedSurface: int = field(init=False,repr=False,default=ScaleFactorOfSecondFixedSurface())
    +1401    scaledValueOfSecondFixedSurface: int = field(init=False,repr=False,default=ScaledValueOfSecondFixedSurface())
    +1402    @classmethod
    +1403    @property
    +1404    def _attrs(cls):
    +1405        return list(cls.__dataclass_fields__.keys())
     
    @@ -8252,24 +8786,24 @@

    -
    +
    - unitOfTimeRange: Grib2Metadata + unitOfForecastTime: Grib2Metadata
    - +
    -
    +
    - forecastTime: int + valueOfForecastTime: int
    - + @@ -8353,17 +8887,17 @@

    -
    1331@dataclass(init=False)
    -1332class ProductDefinitionTemplate1(ProductDefinitionTemplate0):
    -1333    _len = 18
    -1334    _num = 1
    -1335    typeOfEnsembleForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfEnsembleForecast())
    -1336    perturbationNumber: int = field(init=False, repr=False, default=PerturbationNumber())
    -1337    numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts())
    -1338    @classmethod
    -1339    @property
    -1340    def _attrs(cls):
    -1341        return list(cls.__dataclass_fields__.keys())
    +            
    1407@dataclass(init=False)
    +1408class ProductDefinitionTemplate1(ProductDefinitionTemplate0):
    +1409    _len = 18
    +1410    _num = 1
    +1411    typeOfEnsembleForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfEnsembleForecast())
    +1412    perturbationNumber: int = field(init=False, repr=False, default=PerturbationNumber())
    +1413    numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts())
    +1414    @classmethod
    +1415    @property
    +1416    def _attrs(cls):
    +1417        return list(cls.__dataclass_fields__.keys())
     
    @@ -8413,8 +8947,8 @@
    Inherited Members
    backgroundGeneratingProcessIdentifier
    hoursAfterDataCutoff
    minutesAfterDataCutoff
    -
    unitOfTimeRange
    -
    forecastTime
    +
    unitOfForecastTime
    +
    valueOfForecastTime
    typeOfFirstFixedSurface
    scaleFactorOfFirstFixedSurface
    scaledValueOfFirstFixedSurface
    @@ -8438,16 +8972,16 @@
    Inherited Members
    -
    1343@dataclass(init=False)
    -1344class ProductDefinitionTemplate2(ProductDefinitionTemplate0):
    -1345    _len = 17
    -1346    _num = 2
    -1347    typeOfDerivedForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfDerivedForecast())
    -1348    numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts())
    -1349    @classmethod
    -1350    @property
    -1351    def _attrs(cls):
    -1352        return list(cls.__dataclass_fields__.keys())
    +            
    1419@dataclass(init=False)
    +1420class ProductDefinitionTemplate2(ProductDefinitionTemplate0):
    +1421    _len = 17
    +1422    _num = 2
    +1423    typeOfDerivedForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfDerivedForecast())
    +1424    numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts())
    +1425    @classmethod
    +1426    @property
    +1427    def _attrs(cls):
    +1428        return list(cls.__dataclass_fields__.keys())
     
    @@ -8486,8 +9020,8 @@
    Inherited Members
    backgroundGeneratingProcessIdentifier
    hoursAfterDataCutoff
    minutesAfterDataCutoff
    -
    unitOfTimeRange
    -
    forecastTime
    +
    unitOfForecastTime
    +
    valueOfForecastTime
    typeOfFirstFixedSurface
    scaleFactorOfFirstFixedSurface
    scaledValueOfFirstFixedSurface
    @@ -8511,20 +9045,24 @@
    Inherited Members
    -
    1354@dataclass(init=False)
    -1355class ProductDefinitionTemplate5(ProductDefinitionTemplate0):
    -1356    _len = 22
    -1357    _num = 5
    -1358    forecastProbabilityNumber: int = field(init=False, repr=False, default=ForecastProbabilityNumber())
    -1359    totalNumberOfForecastProbabilities: int = field(init=False, repr=False, default=TotalNumberOfForecastProbabilities())
    -1360    typeOfProbability: Grib2Metadata = field(init=False, repr=False, default=TypeOfProbability())
    -1361    thresholdLowerLimit: float = field(init=False, repr=False, default=ThresholdLowerLimit())
    -1362    thresholdUpperLimit: float = field(init=False, repr=False, default=ThresholdUpperLimit())
    -1363    threshold: str = field(init=False, repr=False, default=Threshold())
    -1364    @classmethod
    -1365    @property
    -1366    def _attrs(cls):
    -1367        return list(cls.__dataclass_fields__.keys())
    +            
    1430@dataclass(init=False)
    +1431class ProductDefinitionTemplate5(ProductDefinitionTemplate0):
    +1432    _len = 22
    +1433    _num = 5
    +1434    forecastProbabilityNumber: int = field(init=False, repr=False, default=ForecastProbabilityNumber())
    +1435    totalNumberOfForecastProbabilities: int = field(init=False, repr=False, default=TotalNumberOfForecastProbabilities())
    +1436    typeOfProbability: Grib2Metadata = field(init=False, repr=False, default=TypeOfProbability())
    +1437    scaleFactorOfThresholdLowerLimit: float = field(init=False, repr=False, default=ScaleFactorOfThresholdLowerLimit())
    +1438    scaledValueOfThresholdLowerLimit: float = field(init=False, repr=False, default=ScaledValueOfThresholdLowerLimit())
    +1439    scaleFactorOfThresholdUpperLimit: float = field(init=False, repr=False, default=ScaleFactorOfThresholdUpperLimit())
    +1440    scaledValueOfThresholdUpperLimit: float = field(init=False, repr=False, default=ScaledValueOfThresholdUpperLimit())
    +1441    thresholdLowerLimit: float = field(init=False, repr=False, default=ThresholdLowerLimit())
    +1442    thresholdUpperLimit: float = field(init=False, repr=False, default=ThresholdUpperLimit())
    +1443    threshold: str = field(init=False, repr=False, default=Threshold())
    +1444    @classmethod
    +1445    @property
    +1446    def _attrs(cls):
    +1447        return list(cls.__dataclass_fields__.keys())
     
    @@ -8562,6 +9100,50 @@
    Inherited Members
    +
    +
    +
    + scaleFactorOfThresholdLowerLimit: float + + +
    + + + + +
    +
    +
    + scaledValueOfThresholdLowerLimit: float + + +
    + + + + +
    +
    +
    + scaleFactorOfThresholdUpperLimit: float + + +
    + + + + +
    +
    +
    + scaledValueOfThresholdUpperLimit: float + + +
    + + + +
    -
    1369@dataclass(init=False)
    -1370class ProductDefinitionTemplate6(ProductDefinitionTemplate0):
    -1371    _len = 16
    -1372    _num = 6
    -1373    percentileValue: int = field(init=False, repr=False, default=PercentileValue())
    -1374    @classmethod
    -1375    @property
    -1376    def _attrs(cls):
    -1377        return list(cls.__dataclass_fields__.keys())
    +            
    1449@dataclass(init=False)
    +1450class ProductDefinitionTemplate6(ProductDefinitionTemplate0):
    +1451    _len = 16
    +1452    _num = 6
    +1453    percentileValue: int = field(init=False, repr=False, default=PercentileValue())
    +1454    @classmethod
    +1455    @property
    +1456    def _attrs(cls):
    +1457        return list(cls.__dataclass_fields__.keys())
     
    @@ -8668,8 +9250,8 @@
    Inherited Members
    backgroundGeneratingProcessIdentifier
    hoursAfterDataCutoff
    minutesAfterDataCutoff
    -
    unitOfTimeRange
    -
    forecastTime
    +
    unitOfForecastTime
    +
    valueOfForecastTime
    typeOfFirstFixedSurface
    scaleFactorOfFirstFixedSurface
    scaledValueOfFirstFixedSurface
    @@ -8693,28 +9275,28 @@
    Inherited Members
    -
    1379@dataclass(init=False)
    -1380class ProductDefinitionTemplate8(ProductDefinitionTemplate0):
    -1381    _len = 29
    -1382    _num = 8
    -1383    yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod())
    -1384    monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod())
    -1385    dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod())
    -1386    hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod())
    -1387    minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod())
    -1388    secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod())
    -1389    numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges())
    -1390    numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues())
    -1391    statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess())
    -1392    typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess())
    -1393    unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess())
    -1394    timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess())
    -1395    unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields())
    -1396    timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields())
    -1397    @classmethod
    -1398    @property
    -1399    def _attrs(cls):
    -1400        return list(cls.__dataclass_fields__.keys())
    +            
    1459@dataclass(init=False)
    +1460class ProductDefinitionTemplate8(ProductDefinitionTemplate0):
    +1461    _len = 29
    +1462    _num = 8
    +1463    yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod())
    +1464    monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod())
    +1465    dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod())
    +1466    hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod())
    +1467    minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod())
    +1468    secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod())
    +1469    numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges())
    +1470    numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues())
    +1471    statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess())
    +1472    typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess())
    +1473    unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess())
    +1474    timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess())
    +1475    unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields())
    +1476    timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields())
    +1477    @classmethod
    +1478    @property
    +1479    def _attrs(cls):
    +1480        return list(cls.__dataclass_fields__.keys())
     
    @@ -8885,8 +9467,8 @@
    Inherited Members
    backgroundGeneratingProcessIdentifier
    hoursAfterDataCutoff
    minutesAfterDataCutoff
    -
    unitOfTimeRange
    -
    forecastTime
    +
    unitOfForecastTime
    +
    valueOfForecastTime
    typeOfFirstFixedSurface
    scaleFactorOfFirstFixedSurface
    scaledValueOfFirstFixedSurface
    @@ -8910,34 +9492,38 @@
    Inherited Members
    -
    1402@dataclass(init=False)
    -1403class ProductDefinitionTemplate9(ProductDefinitionTemplate0):
    -1404    _len = 36
    -1405    _num = 9
    -1406    forecastProbabilityNumber: int = field(init=False, repr=False, default=ForecastProbabilityNumber())
    -1407    totalNumberOfForecastProbabilities: int = field(init=False, repr=False, default=TotalNumberOfForecastProbabilities())
    -1408    typeOfProbability: Grib2Metadata = field(init=False, repr=False, default=TypeOfProbability())
    -1409    thresholdLowerLimit: float = field(init=False, repr=False, default=ThresholdLowerLimit())
    -1410    thresholdUpperLimit: float = field(init=False, repr=False, default=ThresholdUpperLimit())
    -1411    threshold: str = field(init=False, repr=False, default=Threshold())
    -1412    yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod())
    -1413    monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod())
    -1414    dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod())
    -1415    hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod())
    -1416    minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod())
    -1417    secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod())
    -1418    numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges())
    -1419    numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues())
    -1420    statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess())
    -1421    typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess())
    -1422    unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess())
    -1423    timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess())
    -1424    unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields())
    -1425    timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields())
    -1426    @classmethod
    -1427    @property
    -1428    def _attrs(cls):
    -1429        return list(cls.__dataclass_fields__.keys())
    +            
    1482@dataclass(init=False)
    +1483class ProductDefinitionTemplate9(ProductDefinitionTemplate0):
    +1484    _len = 36
    +1485    _num = 9
    +1486    forecastProbabilityNumber: int = field(init=False, repr=False, default=ForecastProbabilityNumber())
    +1487    totalNumberOfForecastProbabilities: int = field(init=False, repr=False, default=TotalNumberOfForecastProbabilities())
    +1488    typeOfProbability: Grib2Metadata = field(init=False, repr=False, default=TypeOfProbability())
    +1489    scaleFactorOfThresholdLowerLimit: float = field(init=False, repr=False, default=ScaleFactorOfThresholdLowerLimit())
    +1490    scaledValueOfThresholdLowerLimit: float = field(init=False, repr=False, default=ScaledValueOfThresholdLowerLimit())
    +1491    scaleFactorOfThresholdUpperLimit: float = field(init=False, repr=False, default=ScaleFactorOfThresholdUpperLimit())
    +1492    scaledValueOfThresholdUpperLimit: float = field(init=False, repr=False, default=ScaledValueOfThresholdUpperLimit())
    +1493    thresholdLowerLimit: float = field(init=False, repr=False, default=ThresholdLowerLimit())
    +1494    thresholdUpperLimit: float = field(init=False, repr=False, default=ThresholdUpperLimit())
    +1495    threshold: str = field(init=False, repr=False, default=Threshold())
    +1496    yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod())
    +1497    monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod())
    +1498    dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod())
    +1499    hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod())
    +1500    minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod())
    +1501    secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod())
    +1502    numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges())
    +1503    numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues())
    +1504    statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess())
    +1505    typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess())
    +1506    unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess())
    +1507    timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess())
    +1508    unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields())
    +1509    timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields())
    +1510    @classmethod
    +1511    @property
    +1512    def _attrs(cls):
    +1513        return list(cls.__dataclass_fields__.keys())
     
    @@ -8975,6 +9561,50 @@
    Inherited Members
    +
    +
    +
    + scaleFactorOfThresholdLowerLimit: float + + +
    + + + + +
    +
    +
    + scaledValueOfThresholdLowerLimit: float + + +
    + + + + +
    +
    +
    + scaleFactorOfThresholdUpperLimit: float + + +
    + + + + +
    +
    +
    + scaledValueOfThresholdUpperLimit: float + + +
    + + + +
    -
    1431@dataclass(init=False)
    -1432class ProductDefinitionTemplate10(ProductDefinitionTemplate0):
    -1433    _len = 30
    -1434    _num = 10
    -1435    percentileValue: int = field(init=False, repr=False, default=PercentileValue())
    -1436    yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod())
    -1437    monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod())
    -1438    dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod())
    -1439    hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod())
    -1440    minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod())
    -1441    secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod())
    -1442    numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges())
    -1443    numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues())
    -1444    statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess())
    -1445    typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess())
    -1446    unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess())
    -1447    timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess())
    -1448    unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields())
    -1449    timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields())
    -1450    @classmethod
    -1451    @property
    -1452    def _attrs(cls):
    -1453        return list(cls.__dataclass_fields__.keys())
    +            
    1515@dataclass(init=False)
    +1516class ProductDefinitionTemplate10(ProductDefinitionTemplate0):
    +1517    _len = 30
    +1518    _num = 10
    +1519    percentileValue: int = field(init=False, repr=False, default=PercentileValue())
    +1520    yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod())
    +1521    monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod())
    +1522    dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod())
    +1523    hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod())
    +1524    minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod())
    +1525    secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod())
    +1526    numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges())
    +1527    numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues())
    +1528    statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess())
    +1529    typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess())
    +1530    unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess())
    +1531    timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess())
    +1532    unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields())
    +1533    timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields())
    +1534    @classmethod
    +1535    @property
    +1536    def _attrs(cls):
    +1537        return list(cls.__dataclass_fields__.keys())
     
    @@ -9403,8 +10033,8 @@
    Inherited Members
    backgroundGeneratingProcessIdentifier
    hoursAfterDataCutoff
    minutesAfterDataCutoff
    -
    unitOfTimeRange
    -
    forecastTime
    +
    unitOfForecastTime
    +
    valueOfForecastTime
    typeOfFirstFixedSurface
    scaleFactorOfFirstFixedSurface
    scaledValueOfFirstFixedSurface
    @@ -9428,31 +10058,31 @@
    Inherited Members
    -
    1455@dataclass(init=False)
    -1456class ProductDefinitionTemplate11(ProductDefinitionTemplate0):
    -1457    _len = 32
    -1458    _num = 11
    -1459    typeOfEnsembleForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfEnsembleForecast())
    -1460    perturbationNumber: int = field(init=False, repr=False, default=PerturbationNumber())
    -1461    numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts())
    -1462    yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod())
    -1463    monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod())
    -1464    dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod())
    -1465    hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod())
    -1466    minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod())
    -1467    secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod())
    -1468    numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges())
    -1469    numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues())
    -1470    statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess())
    -1471    typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess())
    -1472    unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess())
    -1473    timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess())
    -1474    unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields())
    -1475    timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields())
    -1476    @classmethod
    -1477    @property
    -1478    def _attrs(cls):
    -1479        return list(cls.__dataclass_fields__.keys())
    +            
    1539@dataclass(init=False)
    +1540class ProductDefinitionTemplate11(ProductDefinitionTemplate0):
    +1541    _len = 32
    +1542    _num = 11
    +1543    typeOfEnsembleForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfEnsembleForecast())
    +1544    perturbationNumber: int = field(init=False, repr=False, default=PerturbationNumber())
    +1545    numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts())
    +1546    yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod())
    +1547    monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod())
    +1548    dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod())
    +1549    hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod())
    +1550    minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod())
    +1551    secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod())
    +1552    numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges())
    +1553    numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues())
    +1554    statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess())
    +1555    typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess())
    +1556    unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess())
    +1557    timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess())
    +1558    unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields())
    +1559    timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields())
    +1560    @classmethod
    +1561    @property
    +1562    def _attrs(cls):
    +1563        return list(cls.__dataclass_fields__.keys())
     
    @@ -9656,8 +10286,8 @@
    Inherited Members
    backgroundGeneratingProcessIdentifier
    hoursAfterDataCutoff
    minutesAfterDataCutoff
    -
    unitOfTimeRange
    -
    forecastTime
    +
    unitOfForecastTime
    +
    valueOfForecastTime
    typeOfFirstFixedSurface
    scaleFactorOfFirstFixedSurface
    scaledValueOfFirstFixedSurface
    @@ -9681,30 +10311,30 @@
    Inherited Members
    -
    1481@dataclass(init=False)
    -1482class ProductDefinitionTemplate12(ProductDefinitionTemplate0):
    -1483    _len = 31
    -1484    _num = 12
    -1485    typeOfDerivedForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfDerivedForecast())
    -1486    numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts())
    -1487    yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod())
    -1488    monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod())
    -1489    dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod())
    -1490    hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod())
    -1491    minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod())
    -1492    secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod())
    -1493    numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges())
    -1494    numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues())
    -1495    statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess())
    -1496    typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess())
    -1497    unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess())
    -1498    timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess())
    -1499    unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields())
    -1500    timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields())
    -1501    @classmethod
    -1502    @property
    -1503    def _attrs(cls):
    -1504        return list(cls.__dataclass_fields__.keys())
    +            
    1565@dataclass(init=False)
    +1566class ProductDefinitionTemplate12(ProductDefinitionTemplate0):
    +1567    _len = 31
    +1568    _num = 12
    +1569    typeOfDerivedForecast: Grib2Metadata = field(init=False, repr=False, default=TypeOfDerivedForecast())
    +1570    numberOfEnsembleForecasts: int = field(init=False, repr=False, default=NumberOfEnsembleForecasts())
    +1571    yearOfEndOfTimePeriod: int = field(init=False, repr=False, default=YearOfEndOfTimePeriod())
    +1572    monthOfEndOfTimePeriod: int = field(init=False, repr=False, default=MonthOfEndOfTimePeriod())
    +1573    dayOfEndOfTimePeriod: int = field(init=False, repr=False, default=DayOfEndOfTimePeriod())
    +1574    hourOfEndOfTimePeriod: int = field(init=False, repr=False, default=HourOfEndOfTimePeriod())
    +1575    minuteOfEndOfTimePeriod: int = field(init=False, repr=False, default=MinuteOfEndOfTimePeriod())
    +1576    secondOfEndOfTimePeriod: int = field(init=False, repr=False, default=SecondOfEndOfTimePeriod())
    +1577    numberOfTimeRanges: int = field(init=False, repr=False, default=NumberOfTimeRanges())
    +1578    numberOfMissingValues: int = field(init=False, repr=False, default=NumberOfMissingValues())
    +1579    statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess())
    +1580    typeOfTimeIncrementOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=TypeOfTimeIncrementOfStatisticalProcess())
    +1581    unitOfTimeRangeOfStatisticalProcess: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfStatisticalProcess())
    +1582    timeRangeOfStatisticalProcess: int = field(init=False, repr=False, default=TimeRangeOfStatisticalProcess())
    +1583    unitOfTimeRangeOfSuccessiveFields: Grib2Metadata = field(init=False, repr=False, default=UnitOfTimeRangeOfSuccessiveFields())
    +1584    timeIncrementOfSuccessiveFields: int = field(init=False, repr=False, default=TimeIncrementOfSuccessiveFields())
    +1585    @classmethod
    +1586    @property
    +1587    def _attrs(cls):
    +1588        return list(cls.__dataclass_fields__.keys())
     
    @@ -9897,8 +10527,8 @@
    Inherited Members
    backgroundGeneratingProcessIdentifier
    hoursAfterDataCutoff
    minutesAfterDataCutoff
    -
    unitOfTimeRange
    -
    forecastTime
    +
    unitOfForecastTime
    +
    valueOfForecastTime
    typeOfFirstFixedSurface
    scaleFactorOfFirstFixedSurface
    scaledValueOfFirstFixedSurface
    @@ -9922,17 +10552,17 @@
    Inherited Members
    -
    1506@dataclass(init=False)
    -1507class ProductDefinitionTemplate15(ProductDefinitionTemplate0):
    -1508    _len = 18
    -1509    _num = 15
    -1510    statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess())
    -1511    typeOfStatisticalProcessing: Grib2Metadata = field(init=False, repr=False, default=TypeOfStatisticalProcessing())
    -1512    numberOfDataPointsForSpatialProcessing: int = field(init=False, repr=False, default=NumberOfDataPointsForSpatialProcessing())
    -1513    @classmethod
    -1514    @property
    -1515    def _attrs(cls):
    -1516        return list(cls.__dataclass_fields__.keys())
    +            
    1590@dataclass(init=False)
    +1591class ProductDefinitionTemplate15(ProductDefinitionTemplate0):
    +1592    _len = 18
    +1593    _num = 15
    +1594    statisticalProcess: Grib2Metadata = field(init=False, repr=False, default=StatisticalProcess())
    +1595    typeOfStatisticalProcessing: Grib2Metadata = field(init=False, repr=False, default=TypeOfStatisticalProcessing())
    +1596    numberOfDataPointsForSpatialProcessing: int = field(init=False, repr=False, default=NumberOfDataPointsForSpatialProcessing())
    +1597    @classmethod
    +1598    @property
    +1599    def _attrs(cls):
    +1600        return list(cls.__dataclass_fields__.keys())
     
    @@ -9982,8 +10612,8 @@
    Inherited Members
    backgroundGeneratingProcessIdentifier
    hoursAfterDataCutoff
    minutesAfterDataCutoff
    -
    unitOfTimeRange
    -
    forecastTime
    +
    unitOfForecastTime
    +
    valueOfForecastTime
    typeOfFirstFixedSurface
    scaleFactorOfFirstFixedSurface
    scaledValueOfFirstFixedSurface
    @@ -10007,25 +10637,25 @@
    Inherited Members
    -
    1518@dataclass(init=False)
    -1519class ProductDefinitionTemplate48(ProductDefinitionTemplate0):
    -1520    _len = 26
    -1521    _num = 48
    -1522    typeOfAerosol: Grib2Metadata = field(init=False, repr=False, default=TypeOfAerosol())
    -1523    typeOfIntervalForAerosolSize: Grib2Metadata = field(init=False, repr=False, default=TypeOfIntervalForAerosolSize())
    -1524    scaleFactorOfFirstSize: int = field(init=False, repr=False, default=ScaleFactorOfFirstSize())
    -1525    scaledValueOfFirstSize: int = field(init=False, repr=False, default=ScaledValueOfFirstSize())
    -1526    scaleFactorOfSecondSize: int = field(init=False, repr=False, default=ScaleFactorOfSecondSize())
    -1527    scaledValueOfSecondSize: int = field(init=False, repr=False, default=ScaledValueOfSecondSize())
    -1528    typeOfIntervalForAerosolWavelength: Grib2Metadata = field(init=False, repr=False, default=TypeOfIntervalForAerosolWavelength())
    -1529    scaleFactorOfFirstWavelength: int = field(init=False, repr=False, default=ScaleFactorOfFirstWavelength())
    -1530    scaledValueOfFirstWavelength: int = field(init=False, repr=False, default=ScaledValueOfFirstWavelength())
    -1531    scaleFactorOfSecondWavelength: int = field(init=False, repr=False, default=ScaleFactorOfSecondWavelength())
    -1532    scaledValueOfSecondWavelength: int = field(init=False, repr=False, default=ScaledValueOfSecondWavelength())
    -1533    @classmethod
    -1534    @property
    -1535    def _attrs(cls):
    -1536        return list(cls.__dataclass_fields__.keys())
    +            
    1602@dataclass(init=False)
    +1603class ProductDefinitionTemplate48(ProductDefinitionTemplate0):
    +1604    _len = 26
    +1605    _num = 48
    +1606    typeOfAerosol: Grib2Metadata = field(init=False, repr=False, default=TypeOfAerosol())
    +1607    typeOfIntervalForAerosolSize: Grib2Metadata = field(init=False, repr=False, default=TypeOfIntervalForAerosolSize())
    +1608    scaleFactorOfFirstSize: int = field(init=False, repr=False, default=ScaleFactorOfFirstSize())
    +1609    scaledValueOfFirstSize: int = field(init=False, repr=False, default=ScaledValueOfFirstSize())
    +1610    scaleFactorOfSecondSize: int = field(init=False, repr=False, default=ScaleFactorOfSecondSize())
    +1611    scaledValueOfSecondSize: int = field(init=False, repr=False, default=ScaledValueOfSecondSize())
    +1612    typeOfIntervalForAerosolWavelength: Grib2Metadata = field(init=False, repr=False, default=TypeOfIntervalForAerosolWavelength())
    +1613    scaleFactorOfFirstWavelength: int = field(init=False, repr=False, default=ScaleFactorOfFirstWavelength())
    +1614    scaledValueOfFirstWavelength: int = field(init=False, repr=False, default=ScaledValueOfFirstWavelength())
    +1615    scaleFactorOfSecondWavelength: int = field(init=False, repr=False, default=ScaleFactorOfSecondWavelength())
    +1616    scaledValueOfSecondWavelength: int = field(init=False, repr=False, default=ScaledValueOfSecondWavelength())
    +1617    @classmethod
    +1618    @property
    +1619    def _attrs(cls):
    +1620        return list(cls.__dataclass_fields__.keys())
     
    @@ -10163,8 +10793,8 @@
    Inherited Members
    backgroundGeneratingProcessIdentifier
    hoursAfterDataCutoff
    minutesAfterDataCutoff
    -
    unitOfTimeRange
    -
    forecastTime
    +
    unitOfForecastTime
    +
    valueOfForecastTime
    typeOfFirstFixedSurface
    scaleFactorOfFirstFixedSurface
    scaledValueOfFirstFixedSurface
    @@ -10187,8 +10817,8 @@
    Inherited Members
    -
    1553def pdt_class_by_pdtn(pdtn):
    -1554    return _pdt_by_pdtn[pdtn]
    +            
    1637def pdt_class_by_pdtn(pdtn):
    +1638    return _pdt_by_pdtn[pdtn]
     
    @@ -10206,11 +10836,11 @@
    Inherited Members
    -
    1559class NumberOfPackedValues:
    -1560    def __get__(self, obj, objtype=None):
    -1561        return obj.section5[0]
    -1562    def __set__(self, obj, value):
    -1563        pass
    +            
    1643class NumberOfPackedValues:
    +1644    def __get__(self, obj, objtype=None):
    +1645        return obj.section5[0]
    +1646    def __set__(self, obj, value):
    +1647        pass
     
    @@ -10228,11 +10858,11 @@
    Inherited Members
    -
    1565class DataRepresentationTemplateNumber:
    -1566    def __get__(self, obj, objtype=None):
    -1567        return Grib2Metadata(obj.section5[1],table='5.0')
    -1568    def __set__(self, obj, value):
    -1569        pass
    +            
    1649class DataRepresentationTemplateNumber:
    +1650    def __get__(self, obj, objtype=None):
    +1651        return Grib2Metadata(obj.section5[1],table='5.0')
    +1652    def __set__(self, obj, value):
    +1653        pass
     
    @@ -10250,11 +10880,11 @@
    Inherited Members
    -
    1571class DataRepresentationTemplate:
    -1572    def __get__(self, obj, objtype=None):
    -1573        return obj.section5[2:]
    -1574    def __set__(self, obj, value):
    -1575        raise NotImplementedError
    +            
    1655class DataRepresentationTemplate:
    +1656    def __get__(self, obj, objtype=None):
    +1657        return obj.section5[2:]
    +1658    def __set__(self, obj, value):
    +1659        raise NotImplementedError
     
    @@ -10272,11 +10902,11 @@
    Inherited Members
    -
    1577class RefValue:
    -1578    def __get__(self, obj, objtype=None):
    -1579        return utils.ieee_int_to_float(obj.section5[0+2])
    -1580    def __set__(self, obj, value):
    -1581        pass
    +            
    1661class RefValue:
    +1662    def __get__(self, obj, objtype=None):
    +1663        return utils.ieee_int_to_float(obj.section5[0+2])
    +1664    def __set__(self, obj, value):
    +1665        pass
     
    @@ -10294,11 +10924,11 @@
    Inherited Members
    -
    1583class BinScaleFactor:
    -1584    def __get__(self, obj, objtype=None):
    -1585        return obj.section5[1+2]
    -1586    def __set__(self, obj, value):
    -1587        obj.section5[1+2] = value
    +            
    1667class BinScaleFactor:
    +1668    def __get__(self, obj, objtype=None):
    +1669        return obj.section5[1+2]
    +1670    def __set__(self, obj, value):
    +1671        obj.section5[1+2] = value
     
    @@ -10316,11 +10946,11 @@
    Inherited Members
    -
    1589class DecScaleFactor:
    -1590    def __get__(self, obj, objtype=None):
    -1591        return obj.section5[2+2]
    -1592    def __set__(self, obj, value):
    -1593        obj.section5[2+2] = value
    +            
    1673class DecScaleFactor:
    +1674    def __get__(self, obj, objtype=None):
    +1675        return obj.section5[2+2]
    +1676    def __set__(self, obj, value):
    +1677        obj.section5[2+2] = value
     
    @@ -10338,11 +10968,11 @@
    Inherited Members
    -
    1595class NBitsPacking:
    -1596    def __get__(self, obj, objtype=None):
    -1597        return obj.section5[3+2]
    -1598    def __set__(self, obj, value):
    -1599        obj.section5[3+2] = value
    +            
    1679class NBitsPacking:
    +1680    def __get__(self, obj, objtype=None):
    +1681        return obj.section5[3+2]
    +1682    def __set__(self, obj, value):
    +1683        obj.section5[3+2] = value
     
    @@ -10360,11 +10990,11 @@
    Inherited Members
    -
    1601class TypeOfValues:
    -1602    def __get__(self, obj, objtype=None):
    -1603        return Grib2Metadata(obj.section5[4+2],table='5.1')
    -1604    def __set__(self, obj, value):
    -1605        obj.section5[4+2] = value
    +            
    1685class TypeOfValues:
    +1686    def __get__(self, obj, objtype=None):
    +1687        return Grib2Metadata(obj.section5[4+2],table='5.1')
    +1688    def __set__(self, obj, value):
    +1689        obj.section5[4+2] = value
     
    @@ -10382,11 +11012,11 @@
    Inherited Members
    -
    1607class GroupSplittingMethod:
    -1608    def __get__(self, obj, objtype=None):
    -1609        return Grib2Metadata(obj.section5[5+2],table='5.4')
    -1610    def __set__(self, obj, value):
    -1611        obj.section5[5+2] = value
    +            
    1691class GroupSplittingMethod:
    +1692    def __get__(self, obj, objtype=None):
    +1693        return Grib2Metadata(obj.section5[5+2],table='5.4')
    +1694    def __set__(self, obj, value):
    +1695        obj.section5[5+2] = value
     
    @@ -10404,11 +11034,11 @@
    Inherited Members
    -
    1613class TypeOfMissingValueManagement:
    -1614    def __get__(self, obj, objtype=None):
    -1615        return Grib2Metadata(obj.section5[6+2],table='5.5')
    -1616    def __set__(self, obj, value):
    -1617        obj.section5[6+2] = value
    +            
    1697class TypeOfMissingValueManagement:
    +1698    def __get__(self, obj, objtype=None):
    +1699        return Grib2Metadata(obj.section5[6+2],table='5.5')
    +1700    def __set__(self, obj, value):
    +1701        obj.section5[6+2] = value
     
    @@ -10426,18 +11056,18 @@
    Inherited Members
    -
    1619class PriMissingValue:
    -1620    def __get__(self, obj, objtype=None):
    -1621        if obj.typeOfValues == 0:
    -1622            return utils.ieee_int_to_float(obj.section5[7+2]) if obj.section5[6+2] in {1,2} and obj.section5[7+2] != 255 else None
    -1623        elif obj.typeOfValues == 1:
    -1624            return obj.section5[7+2] if obj.section5[6+2] in [1,2] else None
    -1625    def __set__(self, obj, value):
    -1626        if obj.typeOfValues == 0:
    -1627            obj.section5[7+2] = utils.ieee_float_to_int(value)
    -1628        elif self.typeOfValues == 1:
    -1629            obj.section5[7+2] = int(value)
    -1630        obj.section5[6+2] = 1
    +            
    1703class PriMissingValue:
    +1704    def __get__(self, obj, objtype=None):
    +1705        if obj.typeOfValues == 0:
    +1706            return utils.ieee_int_to_float(obj.section5[7+2]) if obj.section5[6+2] in {1,2} and obj.section5[7+2] != 255 else None
    +1707        elif obj.typeOfValues == 1:
    +1708            return obj.section5[7+2] if obj.section5[6+2] in [1,2] else None
    +1709    def __set__(self, obj, value):
    +1710        if obj.typeOfValues == 0:
    +1711            obj.section5[7+2] = utils.ieee_float_to_int(value)
    +1712        elif self.typeOfValues == 1:
    +1713            obj.section5[7+2] = int(value)
    +1714        obj.section5[6+2] = 1
     
    @@ -10455,18 +11085,18 @@
    Inherited Members
    -
    1632class SecMissingValue:
    -1633    def __get__(self, obj, objtype=None):
    -1634        if obj.typeOfValues == 0:
    -1635            return utils.ieee_int_to_float(obj.section5[8+2]) if obj.section5[6+2] in {1,2} and obj.section5[8+2] != 255 else None
    -1636        elif obj.typeOfValues == 1:
    -1637            return obj.section5[8+2] if obj.section5[6+2] in {1,2} else None
    -1638    def __set__(self, obj, value):
    -1639        if obj.typeOfValues == 0:
    -1640            obj.section5[8+2] = utils.ieee_float_to_int(value)
    -1641        elif self.typeOfValues == 1:
    -1642            obj.section5[8+2] = int(value)
    -1643        obj.section5[6+2] = 2
    +            
    1716class SecMissingValue:
    +1717    def __get__(self, obj, objtype=None):
    +1718        if obj.typeOfValues == 0:
    +1719            return utils.ieee_int_to_float(obj.section5[8+2]) if obj.section5[6+2] in {1,2} and obj.section5[8+2] != 255 else None
    +1720        elif obj.typeOfValues == 1:
    +1721            return obj.section5[8+2] if obj.section5[6+2] in {1,2} else None
    +1722    def __set__(self, obj, value):
    +1723        if obj.typeOfValues == 0:
    +1724            obj.section5[8+2] = utils.ieee_float_to_int(value)
    +1725        elif self.typeOfValues == 1:
    +1726            obj.section5[8+2] = int(value)
    +1727        obj.section5[6+2] = 2
     
    @@ -10484,11 +11114,11 @@
    Inherited Members
    -
    1645class NGroups:
    -1646    def __get__(self, obj, objtype=None):
    -1647        return obj.section5[9+2]
    -1648    def __set__(self, obj, value):
    -1649        pass
    +            
    1729class NGroups:
    +1730    def __get__(self, obj, objtype=None):
    +1731        return obj.section5[9+2]
    +1732    def __set__(self, obj, value):
    +1733        pass
     
    @@ -10506,11 +11136,11 @@
    Inherited Members
    -
    1651class RefGroupWidth:
    -1652    def __get__(self, obj, objtype=None):
    -1653        return obj.section5[10+2]
    -1654    def __set__(self, obj, value):
    -1655        pass
    +            
    1735class RefGroupWidth:
    +1736    def __get__(self, obj, objtype=None):
    +1737        return obj.section5[10+2]
    +1738    def __set__(self, obj, value):
    +1739        pass
     
    @@ -10528,11 +11158,11 @@
    Inherited Members
    -
    1657class NBitsGroupWidth:
    -1658    def __get__(self, obj, objtype=None):
    -1659        return obj.section5[11+2]
    -1660    def __set__(self, obj, value):
    -1661        pass
    +            
    1741class NBitsGroupWidth:
    +1742    def __get__(self, obj, objtype=None):
    +1743        return obj.section5[11+2]
    +1744    def __set__(self, obj, value):
    +1745        pass
     
    @@ -10550,11 +11180,11 @@
    Inherited Members
    -
    1663class RefGroupLength:
    -1664    def __get__(self, obj, objtype=None):
    -1665        return obj.section5[12+2]
    -1666    def __set__(self, obj, value):
    -1667        pass
    +            
    1747class RefGroupLength:
    +1748    def __get__(self, obj, objtype=None):
    +1749        return obj.section5[12+2]
    +1750    def __set__(self, obj, value):
    +1751        pass
     
    @@ -10572,11 +11202,11 @@
    Inherited Members
    -
    1669class GroupLengthIncrement:
    -1670    def __get__(self, obj, objtype=None):
    -1671        return obj.section5[13+2]
    -1672    def __set__(self, obj, value):
    -1673        pass
    +            
    1753class GroupLengthIncrement:
    +1754    def __get__(self, obj, objtype=None):
    +1755        return obj.section5[13+2]
    +1756    def __set__(self, obj, value):
    +1757        pass
     
    @@ -10594,11 +11224,11 @@
    Inherited Members
    -
    1675class LengthOfLastGroup:
    -1676    def __get__(self, obj, objtype=None):
    -1677        return obj.section5[14+2]
    -1678    def __set__(self, obj, value):
    -1679        pass
    +            
    1759class LengthOfLastGroup:
    +1760    def __get__(self, obj, objtype=None):
    +1761        return obj.section5[14+2]
    +1762    def __set__(self, obj, value):
    +1763        pass
     
    @@ -10616,11 +11246,11 @@
    Inherited Members
    -
    1681class NBitsScaledGroupLength:
    -1682    def __get__(self, obj, objtype=None):
    -1683        return obj.section5[15+2]
    -1684    def __set__(self, obj, value):
    -1685        pass
    +            
    1765class NBitsScaledGroupLength:
    +1766    def __get__(self, obj, objtype=None):
    +1767        return obj.section5[15+2]
    +1768    def __set__(self, obj, value):
    +1769        pass
     
    @@ -10638,11 +11268,11 @@
    Inherited Members
    -
    1687class SpatialDifferenceOrder:
    -1688    def __get__(self, obj, objtype=None):
    -1689        return Grib2Metadata(obj.section5[16+2],table='5.6')
    -1690    def __set__(self, obj, value):
    -1691        obj.section5[16+2] = value
    +            
    1771class SpatialDifferenceOrder:
    +1772    def __get__(self, obj, objtype=None):
    +1773        return Grib2Metadata(obj.section5[16+2],table='5.6')
    +1774    def __set__(self, obj, value):
    +1775        obj.section5[16+2] = value
     
    @@ -10660,11 +11290,11 @@
    Inherited Members
    -
    1693class NBytesSpatialDifference:
    -1694    def __get__(self, obj, objtype=None):
    -1695        return obj.section5[17+2]
    -1696    def __set__(self, obj, value):
    -1697        pass
    +            
    1777class NBytesSpatialDifference:
    +1778    def __get__(self, obj, objtype=None):
    +1779        return obj.section5[17+2]
    +1780    def __set__(self, obj, value):
    +1781        pass
     
    @@ -10682,11 +11312,11 @@
    Inherited Members
    -
    1699class Precision:
    -1700    def __get__(self, obj, objtype=None):
    -1701        return Grib2Metadata(obj.section5[0+2],table='5.7')
    -1702    def __set__(self, obj, value):
    -1703        obj.section5[0+2] = value
    +            
    1783class Precision:
    +1784    def __get__(self, obj, objtype=None):
    +1785        return Grib2Metadata(obj.section5[0+2],table='5.7')
    +1786    def __set__(self, obj, value):
    +1787        obj.section5[0+2] = value
     
    @@ -10704,11 +11334,11 @@
    Inherited Members
    -
    1705class TypeOfCompression:
    -1706    def __get__(self, obj, objtype=None):
    -1707        return Grib2Metadata(obj.section5[5+2],table='5.40')
    -1708    def __set__(self, obj, value):
    -1709        obj.section5[5+2] = value
    +            
    1789class TypeOfCompression:
    +1790    def __get__(self, obj, objtype=None):
    +1791        return Grib2Metadata(obj.section5[5+2],table='5.40')
    +1792    def __set__(self, obj, value):
    +1793        obj.section5[5+2] = value
     
    @@ -10726,11 +11356,11 @@
    Inherited Members
    -
    1711class TargetCompressionRatio:
    -1712    def __get__(self, obj, objtype=None):
    -1713        return obj.section5[6+2]
    -1714    def __set__(self, obj, value):
    -1715        pass
    +            
    1795class TargetCompressionRatio:
    +1796    def __get__(self, obj, objtype=None):
    +1797        return obj.section5[6+2]
    +1798    def __set__(self, obj, value):
    +1799        pass
     
    @@ -10748,11 +11378,11 @@
    Inherited Members
    -
    1717class RealOfCoefficient:
    -1718    def __get__(self, obj, objtype=None):
    -1719        return utils.ieee_int_to_float(obj.section5[4+2])
    -1720    def __set__(self, obj, value):
    -1721        obj.section5[4+2] = utils.ieee_float_to_int(float(value))
    +            
    1801class RealOfCoefficient:
    +1802    def __get__(self, obj, objtype=None):
    +1803        return utils.ieee_int_to_float(obj.section5[4+2])
    +1804    def __set__(self, obj, value):
    +1805        obj.section5[4+2] = utils.ieee_float_to_int(float(value))
     
    @@ -10770,11 +11400,11 @@
    Inherited Members
    -
    1723class CompressionOptionsMask:
    -1724    def __get__(self, obj, objtype=None):
    -1725        return obj.section5[5+2]
    -1726    def __set__(self, obj, value):
    -1727        obj.section5[5+2] = value
    +            
    1807class CompressionOptionsMask:
    +1808    def __get__(self, obj, objtype=None):
    +1809        return obj.section5[5+2]
    +1810    def __set__(self, obj, value):
    +1811        obj.section5[5+2] = value
     
    @@ -10792,11 +11422,11 @@
    Inherited Members
    -
    1729class BlockSize:
    -1730    def __get__(self, obj, objtype=None):
    -1731        return obj.section5[6+2]
    -1732    def __set__(self, obj, value):
    -1733        obj.section5[6+2] = value
    +            
    1813class BlockSize:
    +1814    def __get__(self, obj, objtype=None):
    +1815        return obj.section5[6+2]
    +1816    def __set__(self, obj, value):
    +1817        obj.section5[6+2] = value
     
    @@ -10814,11 +11444,11 @@
    Inherited Members
    -
    1735class RefSampleInterval:
    -1736    def __get__(self, obj, objtype=None):
    -1737        return obj.section5[7+2]
    -1738    def __set__(self, obj, value):
    -1739        obj.section5[7+2] = value
    +            
    1819class RefSampleInterval:
    +1820    def __get__(self, obj, objtype=None):
    +1821        return obj.section5[7+2]
    +1822    def __set__(self, obj, value):
    +1823        obj.section5[7+2] = value
     
    @@ -10837,19 +11467,19 @@
    Inherited Members
    -
    1741@dataclass(init=False)
    -1742class DataRepresentationTemplate0():
    -1743    _len = 5
    -1744    _num = 0
    -1745    _packingScheme = 'simple'
    -1746    refValue: float = field(init=False, repr=False, default=RefValue())
    -1747    binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor())
    -1748    decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor())
    -1749    nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking())
    -1750    @classmethod
    -1751    @property
    -1752    def _attrs(cls):
    -1753        return list(cls.__dataclass_fields__.keys())
    +            
    1825@dataclass(init=False)
    +1826class DataRepresentationTemplate0():
    +1827    _len = 5
    +1828    _num = 0
    +1829    _packingScheme = 'simple'
    +1830    refValue: float = field(init=False, repr=False, default=RefValue())
    +1831    binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor())
    +1832    decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor())
    +1833    nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking())
    +1834    @classmethod
    +1835    @property
    +1836    def _attrs(cls):
    +1837        return list(cls.__dataclass_fields__.keys())
     
    @@ -10912,30 +11542,30 @@
    Inherited Members
    -
    1755@dataclass(init=False)
    -1756class DataRepresentationTemplate2():
    -1757    _len = 16
    -1758    _num = 2
    -1759    _packingScheme = 'complex'
    -1760    refValue: float = field(init=False, repr=False, default=RefValue())
    -1761    binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor())
    -1762    decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor())
    -1763    nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking())
    -1764    groupSplittingMethod: Grib2Metadata = field(init=False, repr=False, default=GroupSplittingMethod())
    -1765    typeOfMissingValueManagement: Grib2Metadata = field(init=False, repr=False, default=TypeOfMissingValueManagement())
    -1766    priMissingValue: [float, int] = field(init=False, repr=False, default=PriMissingValue())
    -1767    secMissingValue: [float, int] = field(init=False, repr=False, default=SecMissingValue())
    -1768    nGroups: int = field(init=False, repr=False, default=NGroups())
    -1769    refGroupWidth: int = field(init=False, repr=False, default=RefGroupWidth())
    -1770    nBitsGroupWidth: int = field(init=False, repr=False, default=NBitsGroupWidth())
    -1771    refGroupLength: int = field(init=False, repr=False, default=RefGroupLength())
    -1772    groupLengthIncrement: int = field(init=False, repr=False, default=GroupLengthIncrement())
    -1773    lengthOfLastGroup: int = field(init=False, repr=False, default=LengthOfLastGroup())
    -1774    nBitsScaledGroupLength: int = field(init=False, repr=False, default=NBitsScaledGroupLength())
    -1775    @classmethod
    -1776    @property
    -1777    def _attrs(cls):
    -1778        return list(cls.__dataclass_fields__.keys())
    +            
    1839@dataclass(init=False)
    +1840class DataRepresentationTemplate2():
    +1841    _len = 16
    +1842    _num = 2
    +1843    _packingScheme = 'complex'
    +1844    refValue: float = field(init=False, repr=False, default=RefValue())
    +1845    binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor())
    +1846    decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor())
    +1847    nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking())
    +1848    groupSplittingMethod: Grib2Metadata = field(init=False, repr=False, default=GroupSplittingMethod())
    +1849    typeOfMissingValueManagement: Grib2Metadata = field(init=False, repr=False, default=TypeOfMissingValueManagement())
    +1850    priMissingValue: [float, int] = field(init=False, repr=False, default=PriMissingValue())
    +1851    secMissingValue: [float, int] = field(init=False, repr=False, default=SecMissingValue())
    +1852    nGroups: int = field(init=False, repr=False, default=NGroups())
    +1853    refGroupWidth: int = field(init=False, repr=False, default=RefGroupWidth())
    +1854    nBitsGroupWidth: int = field(init=False, repr=False, default=NBitsGroupWidth())
    +1855    refGroupLength: int = field(init=False, repr=False, default=RefGroupLength())
    +1856    groupLengthIncrement: int = field(init=False, repr=False, default=GroupLengthIncrement())
    +1857    lengthOfLastGroup: int = field(init=False, repr=False, default=LengthOfLastGroup())
    +1858    nBitsScaledGroupLength: int = field(init=False, repr=False, default=NBitsScaledGroupLength())
    +1859    @classmethod
    +1860    @property
    +1861    def _attrs(cls):
    +1862        return list(cls.__dataclass_fields__.keys())
     
    @@ -11119,32 +11749,32 @@
    Inherited Members
    -
    1780@dataclass(init=False)
    -1781class DataRepresentationTemplate3():
    -1782    _len = 18
    -1783    _num = 3
    -1784    _packingScheme = 'complex-spdiff'
    -1785    refValue: float = field(init=False, repr=False, default=RefValue())
    -1786    binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor())
    -1787    decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor())
    -1788    nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking())
    -1789    groupSplittingMethod: Grib2Metadata = field(init=False, repr=False, default=GroupSplittingMethod())
    -1790    typeOfMissingValueManagement: Grib2Metadata = field(init=False, repr=False, default=TypeOfMissingValueManagement())
    -1791    priMissingValue: [float, int] = field(init=False, repr=False, default=PriMissingValue())
    -1792    secMissingValue: [float, int] = field(init=False, repr=False, default=SecMissingValue())
    -1793    nGroups: int = field(init=False, repr=False, default=NGroups())
    -1794    refGroupWidth: int = field(init=False, repr=False, default=RefGroupWidth())
    -1795    nBitsGroupWidth: int = field(init=False, repr=False, default=NBitsGroupWidth())
    -1796    refGroupLength: int = field(init=False, repr=False, default=RefGroupLength())
    -1797    groupLengthIncrement: int = field(init=False, repr=False, default=GroupLengthIncrement())
    -1798    lengthOfLastGroup: int = field(init=False, repr=False, default=LengthOfLastGroup())
    -1799    nBitsScaledGroupLength: int = field(init=False, repr=False, default=NBitsScaledGroupLength())
    -1800    spatialDifferenceOrder: Grib2Metadata = field(init=False, repr=False, default=SpatialDifferenceOrder())
    -1801    nBytesSpatialDifference: int = field(init=False, repr=False, default=NBytesSpatialDifference())
    -1802    @classmethod
    -1803    @property
    -1804    def _attrs(cls):
    -1805        return list(cls.__dataclass_fields__.keys())
    +            
    1864@dataclass(init=False)
    +1865class DataRepresentationTemplate3():
    +1866    _len = 18
    +1867    _num = 3
    +1868    _packingScheme = 'complex-spdiff'
    +1869    refValue: float = field(init=False, repr=False, default=RefValue())
    +1870    binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor())
    +1871    decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor())
    +1872    nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking())
    +1873    groupSplittingMethod: Grib2Metadata = field(init=False, repr=False, default=GroupSplittingMethod())
    +1874    typeOfMissingValueManagement: Grib2Metadata = field(init=False, repr=False, default=TypeOfMissingValueManagement())
    +1875    priMissingValue: [float, int] = field(init=False, repr=False, default=PriMissingValue())
    +1876    secMissingValue: [float, int] = field(init=False, repr=False, default=SecMissingValue())
    +1877    nGroups: int = field(init=False, repr=False, default=NGroups())
    +1878    refGroupWidth: int = field(init=False, repr=False, default=RefGroupWidth())
    +1879    nBitsGroupWidth: int = field(init=False, repr=False, default=NBitsGroupWidth())
    +1880    refGroupLength: int = field(init=False, repr=False, default=RefGroupLength())
    +1881    groupLengthIncrement: int = field(init=False, repr=False, default=GroupLengthIncrement())
    +1882    lengthOfLastGroup: int = field(init=False, repr=False, default=LengthOfLastGroup())
    +1883    nBitsScaledGroupLength: int = field(init=False, repr=False, default=NBitsScaledGroupLength())
    +1884    spatialDifferenceOrder: Grib2Metadata = field(init=False, repr=False, default=SpatialDifferenceOrder())
    +1885    nBytesSpatialDifference: int = field(init=False, repr=False, default=NBytesSpatialDifference())
    +1886    @classmethod
    +1887    @property
    +1888    def _attrs(cls):
    +1889        return list(cls.__dataclass_fields__.keys())
     
    @@ -11350,16 +11980,16 @@
    Inherited Members
    -
    1807@dataclass(init=False)
    -1808class DataRepresentationTemplate4():
    -1809    _len = 1
    -1810    _num = 4
    -1811    _packingScheme = 'ieee-float'
    -1812    precision: Grib2Metadata = field(init=False, repr=False, default=Precision())
    -1813    @classmethod
    -1814    @property
    -1815    def _attrs(cls):
    -1816        return list(cls.__dataclass_fields__.keys())
    +            
    1891@dataclass(init=False)
    +1892class DataRepresentationTemplate4():
    +1893    _len = 1
    +1894    _num = 4
    +1895    _packingScheme = 'ieee-float'
    +1896    precision: Grib2Metadata = field(init=False, repr=False, default=Precision())
    +1897    @classmethod
    +1898    @property
    +1899    def _attrs(cls):
    +1900        return list(cls.__dataclass_fields__.keys())
     
    @@ -11389,21 +12019,21 @@
    Inherited Members
    -
    1818@dataclass(init=False)
    -1819class DataRepresentationTemplate40():
    -1820    _len = 7
    -1821    _num = 40
    -1822    _packingScheme = 'jpeg'
    -1823    refValue: float = field(init=False, repr=False, default=RefValue())
    -1824    binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor())
    -1825    decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor())
    -1826    nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking())
    -1827    typeOfCompression: Grib2Metadata = field(init=False, repr=False, default=TypeOfCompression())
    -1828    targetCompressionRatio: int = field(init=False, repr=False, default=TargetCompressionRatio())
    -1829    @classmethod
    -1830    @property
    -1831    def _attrs(cls):
    -1832        return list(cls.__dataclass_fields__.keys())
    +            
    1902@dataclass(init=False)
    +1903class DataRepresentationTemplate40():
    +1904    _len = 7
    +1905    _num = 40
    +1906    _packingScheme = 'jpeg'
    +1907    refValue: float = field(init=False, repr=False, default=RefValue())
    +1908    binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor())
    +1909    decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor())
    +1910    nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking())
    +1911    typeOfCompression: Grib2Metadata = field(init=False, repr=False, default=TypeOfCompression())
    +1912    targetCompressionRatio: int = field(init=False, repr=False, default=TargetCompressionRatio())
    +1913    @classmethod
    +1914    @property
    +1915    def _attrs(cls):
    +1916        return list(cls.__dataclass_fields__.keys())
     
    @@ -11488,19 +12118,19 @@
    Inherited Members
    -
    1834@dataclass(init=False)
    -1835class DataRepresentationTemplate41():
    -1836    _len = 5
    -1837    _num = 41
    -1838    _packingScheme = 'png'
    -1839    refValue: float = field(init=False, repr=False, default=RefValue())
    -1840    binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor())
    -1841    decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor())
    -1842    nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking())
    -1843    @classmethod
    -1844    @property
    -1845    def _attrs(cls):
    -1846        return list(cls.__dataclass_fields__.keys())
    +            
    1918@dataclass(init=False)
    +1919class DataRepresentationTemplate41():
    +1920    _len = 5
    +1921    _num = 41
    +1922    _packingScheme = 'png'
    +1923    refValue: float = field(init=False, repr=False, default=RefValue())
    +1924    binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor())
    +1925    decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor())
    +1926    nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking())
    +1927    @classmethod
    +1928    @property
    +1929    def _attrs(cls):
    +1930        return list(cls.__dataclass_fields__.keys())
     
    @@ -11563,22 +12193,22 @@
    Inherited Members
    -
    1848@dataclass(init=False)
    -1849class DataRepresentationTemplate42():
    -1850    _len = 8
    -1851    _num = 42
    -1852    _packingScheme = 'aec'
    -1853    refValue: float = field(init=False, repr=False, default=RefValue())
    -1854    binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor())
    -1855    decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor())
    -1856    nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking())
    -1857    compressionOptionsMask: int = field(init=False, repr=False, default=CompressionOptionsMask())
    -1858    blockSize: int = field(init=False, repr=False, default=BlockSize())
    -1859    refSampleInterval: int = field(init=False, repr=False, default=RefSampleInterval())
    -1860    @classmethod
    -1861    @property
    -1862    def _attrs(cls):
    -1863        return list(cls.__dataclass_fields__.keys())
    +            
    1932@dataclass(init=False)
    +1933class DataRepresentationTemplate42():
    +1934    _len = 8
    +1935    _num = 42
    +1936    _packingScheme = 'aec'
    +1937    refValue: float = field(init=False, repr=False, default=RefValue())
    +1938    binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor())
    +1939    decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor())
    +1940    nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking())
    +1941    compressionOptionsMask: int = field(init=False, repr=False, default=CompressionOptionsMask())
    +1942    blockSize: int = field(init=False, repr=False, default=BlockSize())
    +1943    refSampleInterval: int = field(init=False, repr=False, default=RefSampleInterval())
    +1944    @classmethod
    +1945    @property
    +1946    def _attrs(cls):
    +1947        return list(cls.__dataclass_fields__.keys())
     
    @@ -11674,20 +12304,20 @@
    Inherited Members
    -
    1865@dataclass(init=False)
    -1866class DataRepresentationTemplate50():
    -1867    _len = 5
    -1868    _num = 0
    -1869    _packingScheme = 'spectral-simple'
    -1870    refValue: float = field(init=False, repr=False, default=RefValue())
    -1871    binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor())
    -1872    decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor())
    -1873    nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking())
    -1874    realOfCoefficient: float = field(init=False, repr=False, default=RealOfCoefficient())
    -1875    @classmethod
    -1876    @property
    -1877    def _attrs(cls):
    -1878        return list(cls.__dataclass_fields__.keys())
    +            
    1949@dataclass(init=False)
    +1950class DataRepresentationTemplate50():
    +1951    _len = 5
    +1952    _num = 0
    +1953    _packingScheme = 'spectral-simple'
    +1954    refValue: float = field(init=False, repr=False, default=RefValue())
    +1955    binScaleFactor: int = field(init=False, repr=False, default=BinScaleFactor())
    +1956    decScaleFactor: int = field(init=False, repr=False, default=DecScaleFactor())
    +1957    nBitsPacking: int = field(init=False, repr=False, default=NBitsPacking())
    +1958    realOfCoefficient: float = field(init=False, repr=False, default=RealOfCoefficient())
    +1959    @classmethod
    +1960    @property
    +1961    def _attrs(cls):
    +1962        return list(cls.__dataclass_fields__.keys())
     
    @@ -11760,8 +12390,8 @@
    Inherited Members
    -
    1891def drt_class_by_drtn(drtn):
    -1892    return _drt_by_drtn[drtn]
    +            
    1975def drt_class_by_drtn(drtn):
    +1976    return _drt_by_drtn[drtn]
     
    diff --git a/docs/grib2io/utils.html b/docs/grib2io/utils.html index 91f2c3a..974800f 100644 --- a/docs/grib2io/utils.html +++ b/docs/grib2io/utils.html @@ -29,6 +29,7 @@

    Submodules

    diff --git a/docs/grib2io/utils/arakawa_rotated_grid.html b/docs/grib2io/utils/arakawa_rotated_grid.html new file mode 100644 index 0000000..22fb5ee --- /dev/null +++ b/docs/grib2io/utils/arakawa_rotated_grid.html @@ -0,0 +1,719 @@ + + + + + + + grib2io.utils.arakawa_rotated_grid API documentation + + + + + + + + + +
    +
    +

    +grib2io.utils.arakawa_rotated_grid

    + +

    Functions for handling an Arakawa Rotated Lat/Lon Grids.

    + +

    This grid is not often used, but is currently used for the NCEP/RAP using +GRIB2 Grid Definition Template 32769

    + +

    These functions are adapted from the NCAR Command Language (ncl), +from NcGRIB2.c

    +
    + + + + + +
      1"""
    +  2Functions for handling an Arakawa Rotated Lat/Lon Grids.
    +  3
    +  4This grid is not often used, but is currently used for the NCEP/RAP using
    +  5[GRIB2 Grid Definition Template 32769](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_temp3-32769.shtml)
    +  6
    +  7These functions are adapted from the NCAR Command Language (ncl),
    +  8from [NcGRIB2.c](https://github.com/NCAR/ncl/blob/develop/ni/src/ncl/NclGRIB2.c)
    +  9"""
    + 10import math
    + 11import numpy as np
    + 12
    + 13from . import rotated_grid
    + 14
    + 15DEG2RAD = rotated_grid.DEG2RAD
    + 16RAD2DEG = rotated_grid.RAD2DEG
    + 17
    + 18def ll2rot(latin, lonin, latpole, lonpole):
    + 19    """
    + 20    Rotate a latitude/longitude pair.
    + 21
    + 22    Parameters
    + 23    ----------
    + 24    **`latin`**: `float`
    + 25        Latitudes in units of degrees.
    + 26
    + 27    **`lonin`**: `float`
    + 28        Longitudes in units of degrees.
    + 29
    + 30    **`latpole`**: `float`
    + 31        Latitude of Pole.
    + 32
    + 33    **`lonpole`**: `float`
    + 34        Longitude of Pole.
    + 35
    + 36    Returns
    + 37    -------
    + 38    **`tlat, tlons`**
    + 39        Returns two floats of rotated latitude and longitude in units of degrees.
    + 40    """
    + 41    tlon = lonin - lonpole
    + 42
    + 43    # Convert to xyz coordinates
    + 44    x = math.cos(latin * DEG2RAD) * math.cos(tlon * DEG2RAD)
    + 45    y = math.cos(latin * DEG2RAD) * math.sin(tlon * DEG2RAD)
    + 46    z = math.sin(latin * DEG2RAD)
    + 47
    + 48    # Rotate around y axis
    + 49    rotang = (latpole + 90) * DEG2RAD
    + 50    sinrot = math.sin(rotang)
    + 51    cosrot = math.cos(rotang)
    + 52    ry = y
    + 53    rx = x * cosrot + z * sinrot
    + 54    rz = -x * sinrot + z * cosrot
    + 55
    + 56    # Convert back to lat/lon
    + 57    tlat = math.asin(rz) / DEG2RAD
    + 58    if math.fabs(rx) > 0.0001:
    + 59        tlon = math.atan2(ry,rx) / DEG2RAD
    + 60    elif ry > 0:
    + 61        tlon = 90.0
    + 62    else:
    + 63        tlon = -90.0
    + 64
    + 65    if tlon < -180:
    + 66        tlon += 360.0
    + 67    if tlon >= 180:
    + 68        tlon -= 360.0
    + 69
    + 70    return tlat, tlon
    + 71
    + 72
    + 73def rot2ll(latin, lonin, latpole, lonpole):
    + 74    """
    + 75    Unrotate a latitude/longitude pair.
    + 76
    + 77    Parameters
    + 78    ----------
    + 79    **`latin`**: `float`
    + 80        Latitudes in units of degrees.
    + 81
    + 82    **`lonin`**: `float`
    + 83        Longitudes in units of degrees.
    + 84
    + 85    **`latpole`**: `float`
    + 86        Latitude of Pole.
    + 87
    + 88    **`lonpole`**: `float`
    + 89        Longitude of Pole.
    + 90
    + 91    Returns
    + 92    -------
    + 93    **`tlat, tlons`**
    + 94        Returns two floats of unrotated latitude and longitude in units of degrees.
    + 95    """
    + 96    tlon = lonin
    + 97
    + 98    # Convert to xyz coordinates
    + 99    x = math.cos(latin * DEG2RAD) * math.cos(lonin * DEG2RAD)
    +100    y = math.cos(latin * DEG2RAD) * math.sin(lonin * DEG2RAD)
    +101    z = math.sin(latin * DEG2RAD)
    +102
    +103    # Rotate around y axis
    +104    rotang = -(latpole + 90) * DEG2RAD
    +105    sinrot = math.sin(rotang)
    +106    cosrot = math.cos(rotang)
    +107    ry = y
    +108    rx = x * cosrot + z * sinrot
    +109    rz = -x * sinrot + z * cosrot
    +110
    +111    # Convert back to lat/lon
    +112    tlat = math.asin(rz) / DEG2RAD
    +113    if math.fabs(rx) > 0.0001:
    +114        tlon = math.atan2(ry,rx) / DEG2RAD
    +115    elif ry > 0:
    +116        tlon = 90.0
    +117    else:
    +118        tlon = -90.0
    +119    
    +120    # Remove the longitude rotation
    +121    tlon += lonpole
    +122    if tlon < 0:
    +123        tlon += 360.0
    +124    if tlon > 360:
    +125        tlon -= 360.0
    +126    
    +127    return tlat, tlon
    +128
    +129
    +130def vector_rotation_angles(tlat, tlon, clat, losp, xlat):
    +131    """
    +132    Generate a rotation angle value that can be applied to a vector quantity to
    +133    make it Earth-oriented.
    +134
    +135    Parameters
    +136    ----------
    +137    **`tlat`**: `float`
    +138        True latitude in units of degrees.
    +139
    +140    **tlon`**: `float`
    +141        True longitude in units of degrees..
    +142
    +143    **`clat`**: `float`
    +144        Latitude of center grid point in units of degrees.
    +145
    +146    **`losp`**: `float`
    +147        Longitude of the southern pole in units of degrees.
    +148
    +149    **`xlat`**: `float`
    +150        Latitude of the rotated grid in units of degrees.
    +151
    +152    Returns
    +153    -------
    +154    **`rot : float`**
    +155        Rotation angle in units of radians. 
    +156    """
    +157    slon = math.sin((tlon-losp)*DEG2RAD)
    +158    cgridlat = math.cos(xlat*DEG2RAD)
    +159    if cgridlat <= 0.0:
    +160        rot = 0.0
    +161    else:
    +162        crot = (math.cos(clat*DEG2RAD)*math.cos(tlat*DEG2RAD)+
    +163                math.sin(clat*DEG2RAD)*math.sin(tlat*DEG2RAD)*
    +164                math.cos(tlon*DEG2RAD))/cgridlat
    +165        srot = (-1.0*math.sin(clat*DEG2RAD)*slon)/cgridlat
    +166        rot = math.atan2(srot,crot)
    +167    return rot
    +
    + + +
    +
    +
    + DEG2RAD = +0.017453292519943295 + + +
    + + + + +
    +
    +
    + RAD2DEG = +57.29577951308232 + + +
    + + + + +
    +
    + +
    + + def + ll2rot(latin, lonin, latpole, lonpole): + + + +
    + +
    19def ll2rot(latin, lonin, latpole, lonpole):
    +20    """
    +21    Rotate a latitude/longitude pair.
    +22
    +23    Parameters
    +24    ----------
    +25    **`latin`**: `float`
    +26        Latitudes in units of degrees.
    +27
    +28    **`lonin`**: `float`
    +29        Longitudes in units of degrees.
    +30
    +31    **`latpole`**: `float`
    +32        Latitude of Pole.
    +33
    +34    **`lonpole`**: `float`
    +35        Longitude of Pole.
    +36
    +37    Returns
    +38    -------
    +39    **`tlat, tlons`**
    +40        Returns two floats of rotated latitude and longitude in units of degrees.
    +41    """
    +42    tlon = lonin - lonpole
    +43
    +44    # Convert to xyz coordinates
    +45    x = math.cos(latin * DEG2RAD) * math.cos(tlon * DEG2RAD)
    +46    y = math.cos(latin * DEG2RAD) * math.sin(tlon * DEG2RAD)
    +47    z = math.sin(latin * DEG2RAD)
    +48
    +49    # Rotate around y axis
    +50    rotang = (latpole + 90) * DEG2RAD
    +51    sinrot = math.sin(rotang)
    +52    cosrot = math.cos(rotang)
    +53    ry = y
    +54    rx = x * cosrot + z * sinrot
    +55    rz = -x * sinrot + z * cosrot
    +56
    +57    # Convert back to lat/lon
    +58    tlat = math.asin(rz) / DEG2RAD
    +59    if math.fabs(rx) > 0.0001:
    +60        tlon = math.atan2(ry,rx) / DEG2RAD
    +61    elif ry > 0:
    +62        tlon = 90.0
    +63    else:
    +64        tlon = -90.0
    +65
    +66    if tlon < -180:
    +67        tlon += 360.0
    +68    if tlon >= 180:
    +69        tlon -= 360.0
    +70
    +71    return tlat, tlon
    +
    + + +

    Rotate a latitude/longitude pair.

    + +

    Parameters

    + +

    latin: float + Latitudes in units of degrees.

    + +

    lonin: float + Longitudes in units of degrees.

    + +

    latpole: float + Latitude of Pole.

    + +

    lonpole: float + Longitude of Pole.

    + +

    Returns

    + +

    tlat, tlons + Returns two floats of rotated latitude and longitude in units of degrees.

    +
    + + +
    +
    + +
    + + def + rot2ll(latin, lonin, latpole, lonpole): + + + +
    + +
     74def rot2ll(latin, lonin, latpole, lonpole):
    + 75    """
    + 76    Unrotate a latitude/longitude pair.
    + 77
    + 78    Parameters
    + 79    ----------
    + 80    **`latin`**: `float`
    + 81        Latitudes in units of degrees.
    + 82
    + 83    **`lonin`**: `float`
    + 84        Longitudes in units of degrees.
    + 85
    + 86    **`latpole`**: `float`
    + 87        Latitude of Pole.
    + 88
    + 89    **`lonpole`**: `float`
    + 90        Longitude of Pole.
    + 91
    + 92    Returns
    + 93    -------
    + 94    **`tlat, tlons`**
    + 95        Returns two floats of unrotated latitude and longitude in units of degrees.
    + 96    """
    + 97    tlon = lonin
    + 98
    + 99    # Convert to xyz coordinates
    +100    x = math.cos(latin * DEG2RAD) * math.cos(lonin * DEG2RAD)
    +101    y = math.cos(latin * DEG2RAD) * math.sin(lonin * DEG2RAD)
    +102    z = math.sin(latin * DEG2RAD)
    +103
    +104    # Rotate around y axis
    +105    rotang = -(latpole + 90) * DEG2RAD
    +106    sinrot = math.sin(rotang)
    +107    cosrot = math.cos(rotang)
    +108    ry = y
    +109    rx = x * cosrot + z * sinrot
    +110    rz = -x * sinrot + z * cosrot
    +111
    +112    # Convert back to lat/lon
    +113    tlat = math.asin(rz) / DEG2RAD
    +114    if math.fabs(rx) > 0.0001:
    +115        tlon = math.atan2(ry,rx) / DEG2RAD
    +116    elif ry > 0:
    +117        tlon = 90.0
    +118    else:
    +119        tlon = -90.0
    +120    
    +121    # Remove the longitude rotation
    +122    tlon += lonpole
    +123    if tlon < 0:
    +124        tlon += 360.0
    +125    if tlon > 360:
    +126        tlon -= 360.0
    +127    
    +128    return tlat, tlon
    +
    + + +

    Unrotate a latitude/longitude pair.

    + +

    Parameters

    + +

    latin: float + Latitudes in units of degrees.

    + +

    lonin: float + Longitudes in units of degrees.

    + +

    latpole: float + Latitude of Pole.

    + +

    lonpole: float + Longitude of Pole.

    + +

    Returns

    + +

    tlat, tlons + Returns two floats of unrotated latitude and longitude in units of degrees.

    +
    + + +
    +
    + +
    + + def + vector_rotation_angles(tlat, tlon, clat, losp, xlat): + + + +
    + +
    131def vector_rotation_angles(tlat, tlon, clat, losp, xlat):
    +132    """
    +133    Generate a rotation angle value that can be applied to a vector quantity to
    +134    make it Earth-oriented.
    +135
    +136    Parameters
    +137    ----------
    +138    **`tlat`**: `float`
    +139        True latitude in units of degrees.
    +140
    +141    **tlon`**: `float`
    +142        True longitude in units of degrees..
    +143
    +144    **`clat`**: `float`
    +145        Latitude of center grid point in units of degrees.
    +146
    +147    **`losp`**: `float`
    +148        Longitude of the southern pole in units of degrees.
    +149
    +150    **`xlat`**: `float`
    +151        Latitude of the rotated grid in units of degrees.
    +152
    +153    Returns
    +154    -------
    +155    **`rot : float`**
    +156        Rotation angle in units of radians. 
    +157    """
    +158    slon = math.sin((tlon-losp)*DEG2RAD)
    +159    cgridlat = math.cos(xlat*DEG2RAD)
    +160    if cgridlat <= 0.0:
    +161        rot = 0.0
    +162    else:
    +163        crot = (math.cos(clat*DEG2RAD)*math.cos(tlat*DEG2RAD)+
    +164                math.sin(clat*DEG2RAD)*math.sin(tlat*DEG2RAD)*
    +165                math.cos(tlon*DEG2RAD))/cgridlat
    +166        srot = (-1.0*math.sin(clat*DEG2RAD)*slon)/cgridlat
    +167        rot = math.atan2(srot,crot)
    +168    return rot
    +
    + + +

    Generate a rotation angle value that can be applied to a vector quantity to +make it Earth-oriented.

    + +

    Parameters

    + +

    tlat: float + True latitude in units of degrees.

    + +

    **tlon**:float` + True longitude in units of degrees..

    + +

    clat: float + Latitude of center grid point in units of degrees.

    + +

    losp: float + Longitude of the southern pole in units of degrees.

    + +

    xlat: float + Latitude of the rotated grid in units of degrees.

    + +

    Returns

    + +

    rot : float + Rotation angle in units of radians.

    +
    + + +
    +
    + + \ No newline at end of file diff --git a/docs/search.js b/docs/search.js index 29ad3e0..b07afa6 100644 --- a/docs/search.js +++ b/docs/search.js @@ -1,6 +1,6 @@ window.pdocSearch = (function(){ /** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();oIntroduction

    \n\n

    grib2io is a Python package that provides an interface to the NCEP GRIB2 C (g2c)\nlibrary for the purpose of reading and writing WMO GRIdded Binary, Edition 2 (GRIB2) messages. A physical file can contain one\nor more GRIB2 messages.

    \n\n

    GRIB2 file IO is performed directly in Python. The unpacking/packing of GRIB2 integer, coded metadata and data sections is performed\nby the g2c library functions via the g2clib Cython wrapper module. The decoding/encoding of GRIB2 metadata is translated into more\ndescriptive, plain language metadata by looking up the integer code values against the appropriate GRIB2 code tables. These code tables\nare a part of the grib2io module.

    \n\n

    For example usage of grib2io, please see the Jupyter Notebook.

    \n"}, {"fullname": "grib2io.open", "modulename": "grib2io", "qualname": "open", "kind": "class", "doc": "

    GRIB2 File Object. A physical file can contain one or more GRIB2 messages. When instantiated,\nclass grib2io.open, the file named filename is opened for reading (mode = 'r') and is\nautomatically indexed. The indexing procedure reads some of the GRIB2 metadata for all GRIB2 Messages.

    \n\n

    A GRIB2 Message may contain submessages whereby Section 2-7 can be repeated. grib2io accommodates\nfor this by flattening any GRIB2 submessages into multiple individual messages.

    \n\n

    Attributes

    \n\n

    mode File IO mode of opening the file.

    \n\n

    name Full path name of the GRIB2 file.

    \n\n

    messages Count of GRIB2 Messages contained in the file.

    \n\n

    current_message Current position of the file in units of GRIB2 Messages.

    \n\n

    size Size of the file in units of bytes.

    \n\n

    closed True is file handle is close; False otherwise.

    \n\n

    variables Tuple containing a unique list of variable short names (i.e. GRIB2 abbreviation names).

    \n\n

    levels Tuple containing a unique list of wgrib2-formatted level/layer strings.

    \n"}, {"fullname": "grib2io.open.__init__", "modulename": "grib2io", "qualname": "open.__init__", "kind": "function", "doc": "

    open Constructor

    \n\n

    Parameters

    \n\n

    filename : str

    \n\n

    File name containing GRIB2 messages.

    \n\n

    mode : str, optional

    \n\n

    File access mode where r opens the files for reading only; w opens the file for writing.

    \n", "signature": "(filename, mode='r', **kwargs)"}, {"fullname": "grib2io.open.mode", "modulename": "grib2io", "qualname": "open.mode", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.name", "modulename": "grib2io", "qualname": "open.name", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.messages", "modulename": "grib2io", "qualname": "open.messages", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.current_message", "modulename": "grib2io", "qualname": "open.current_message", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.size", "modulename": "grib2io", "qualname": "open.size", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.closed", "modulename": "grib2io", "qualname": "open.closed", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.levels", "modulename": "grib2io", "qualname": "open.levels", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.variables", "modulename": "grib2io", "qualname": "open.variables", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.close", "modulename": "grib2io", "qualname": "open.close", "kind": "function", "doc": "

    Close the file handle

    \n", "signature": "(self):", "funcdef": "def"}, {"fullname": "grib2io.open.read", "modulename": "grib2io", "qualname": "open.read", "kind": "function", "doc": "

    Read size amount of GRIB2 messages from the current position. If no argument is\ngiven, then size is None and all messages are returned from the current position\nin the file. This read method follows the behavior of Python's builtin open()\nfunction, but whereas that operates on units of bytes, we operate on units of\nGRIB2 messages.

    \n\n

    Parameters

    \n\n

    size : int, optional

    \n\n

    The number of GRIB2 messages to read from the current position. If no argument is\ngive, the default value is None and remainder of the file is read.

    \n\n

    Returns

    \n\n

    Grib2Message object when size = 1 or a list of Grib2Messages when\nsize > 1.

    \n", "signature": "(self, size=None):", "funcdef": "def"}, {"fullname": "grib2io.open.seek", "modulename": "grib2io", "qualname": "open.seek", "kind": "function", "doc": "

    Set the position within the file in units of GRIB2 messages.

    \n\n

    Parameters

    \n\n

    pos : int

    \n\n

    The GRIB2 Message number to set the file pointer to.

    \n", "signature": "(self, pos):", "funcdef": "def"}, {"fullname": "grib2io.open.tell", "modulename": "grib2io", "qualname": "open.tell", "kind": "function", "doc": "

    Returns the position of the file in units of GRIB2 Messages.

    \n", "signature": "(self):", "funcdef": "def"}, {"fullname": "grib2io.open.select", "modulename": "grib2io", "qualname": "open.select", "kind": "function", "doc": "

    Select GRIB2 messages by Grib2Message attributes.

    \n", "signature": "(self, **kwargs):", "funcdef": "def"}, {"fullname": "grib2io.open.write", "modulename": "grib2io", "qualname": "open.write", "kind": "function", "doc": "

    Writes GRIB2 message object to file.

    \n\n

    Parameters

    \n\n

    msg : Grib2Message or sequence of Grib2Messages

    \n\n

    GRIB2 message objects to write to file.

    \n", "signature": "(self, msg):", "funcdef": "def"}, {"fullname": "grib2io.open.flush", "modulename": "grib2io", "qualname": "open.flush", "kind": "function", "doc": "

    Flush the file object buffer.

    \n", "signature": "(self):", "funcdef": "def"}, {"fullname": "grib2io.open.levels_by_var", "modulename": "grib2io", "qualname": "open.levels_by_var", "kind": "function", "doc": "

    Return a list of level strings given a variable shortName.

    \n\n

    Parameters

    \n\n

    name : str

    \n\n

    Grib2Message variable shortName

    \n\n

    Returns

    \n\n

    A list of strings of unique level strings.

    \n", "signature": "(self, name):", "funcdef": "def"}, {"fullname": "grib2io.open.vars_by_level", "modulename": "grib2io", "qualname": "open.vars_by_level", "kind": "function", "doc": "

    Return a list of variable shortName strings given a level.

    \n\n

    Parameters

    \n\n

    level : str

    \n\n

    Grib2Message variable level

    \n\n

    Returns

    \n\n

    A list of strings of variable shortName strings.

    \n", "signature": "(self, level):", "funcdef": "def"}, {"fullname": "grib2io.Grib2Message", "modulename": "grib2io", "qualname": "Grib2Message", "kind": "class", "doc": "

    Creation class for a GRIB2 message.

    \n"}, {"fullname": "grib2io.show_config", "modulename": "grib2io", "qualname": "show_config", "kind": "function", "doc": "

    Print grib2io build configuration information.

    \n", "signature": "():", "funcdef": "def"}, {"fullname": "grib2io.interpolate", "modulename": "grib2io", "qualname": "interpolate", "kind": "function", "doc": "

    This is the module-level interpolation function that interfaces with the grib2io_interp\ncomponent pakcage that interfaces to the NCEPLIBS-ip library.\nIt supports scalar and vector interpolation according to the type of object a. It also\nsupports scalar and vector interpolation to station points when grid_def_out is set up\nproperly for station interpolation.

    \n\n

    Parameters

    \n\n

    a : numpy.ndarray or tuple

    \n\n

    Input data. If a is a numpy.ndarray, scalar interpolation will be\nperformed. If a is a tuple, then vector interpolation will be performed\nwith the assumption that u = a[0] and v = a[1] and are both numpy.ndarray.

    \n\n

    These data are expected to be in 2-dimensional form with shape (ny, nx) or\n3-dimensional (:, ny, nx) where the 1st dimension represents another spatial,\ntemporal, or classification (i.e. ensemble members) dimension. The function will\nproperly flatten the (ny,nx) dimensions into (nx * ny) acceptable for input into\nthe interpolation subroutines.

    \n\n

    method : int or str

    \n\n

    Interpolate method to use. This can either be an integer or string using\nthe following mapping:

    \n\n\n\n\n \n \n\n\n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n
    Interpolate SchemeInteger Value
    'bilinear'0
    'bicubic'1
    'neighbor'2
    'budget'3
    'spectral'4
    'neighbor-budget'6
    \n\n

    grid_def_in : grib2io.Grib2GridDef

    \n\n

    Grib2GridDef object for the input grid.

    \n\n

    grid_def_out : grib2io.Grib2GridDef

    \n\n

    Grib2GridDef object for the output grid or station points.

    \n\n

    method_options : list of ints, optional

    \n\n

    Interpolation options. See the NCEPLIBS-ip doucmentation for\nmore information on how these are used.

    \n\n

    Returns

    \n\n

    Returns a numpy.ndarray when scalar interpolation is performed or\na tuple of numpy.ndarrays when vector interpolation is performed\nwith the assumptions that 0-index is the interpolated u and 1-index\nis the interpolated v.

    \n", "signature": "(a, method, grid_def_in, grid_def_out, method_options=None):", "funcdef": "def"}, {"fullname": "grib2io.interpolate_to_stations", "modulename": "grib2io", "qualname": "interpolate_to_stations", "kind": "function", "doc": "

    This is the module-level interpolation function for interpolation to stations\nthat interfaces with the grib2io_interp component pakcage that interfaces to\nthe NCEPLIBS-ip library. It supports\nscalar and vector interpolation according to the type of object a.

    \n\n

    Parameters

    \n\n

    a : numpy.ndarray or tuple

    \n\n

    Input data. If a is a numpy.ndarray, scalar interpolation will be\nperformed. If a is a tuple, then vector interpolation will be performed\nwith the assumption that u = a[0] and v = a[1] and are both numpy.ndarray.

    \n\n

    These data are expected to be in 2-dimensional form with shape (ny, nx) or\n3-dimensional (:, ny, nx) where the 1st dimension represents another spatial,\ntemporal, or classification (i.e. ensemble members) dimension. The function will\nproperly flatten the (ny,nx) dimensions into (nx * ny) acceptable for input into\nthe interpolation subroutines.

    \n\n

    method : int or str

    \n\n

    Interpolate method to use. This can either be an integer or string using\nthe following mapping:

    \n\n\n\n\n \n \n\n\n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n
    Interpolate SchemeInteger Value
    'bilinear'0
    'bicubic'1
    'neighbor'2
    'budget'3
    'spectral'4
    'neighbor-budget'6
    \n\n

    grid_def_in : grib2io.Grib2GridDef

    \n\n

    Grib2GridDef object for the input grid.

    \n\n

    lats : numpy.ndarray or list

    \n\n

    Latitudes for station points

    \n\n

    lons : numpy.ndarray or list

    \n\n

    Longitudes for station points

    \n\n

    method_options : list of ints, optional

    \n\n

    Interpolation options. See the NCEPLIBS-ip doucmentation for\nmore information on how these are used.

    \n\n

    Returns

    \n\n

    Returns a numpy.ndarray when scalar interpolation is performed or\na tuple of numpy.ndarrays when vector interpolation is performed\nwith the assumptions that 0-index is the interpolated u and 1-index\nis the interpolated v.

    \n", "signature": "(a, method, grid_def_in, lats, lons, method_options=None):", "funcdef": "def"}, {"fullname": "grib2io.Grib2GridDef", "modulename": "grib2io", "qualname": "Grib2GridDef", "kind": "class", "doc": "

    Class to hold GRIB2 Grid Definition Template Number and Template as\nclass attributes. This allows for cleaner looking code when passing these\nmetadata around. For example, the grib2io._Grib2Message.interpolate\nmethod and grib2io.interpolate function accepts these objects.

    \n"}, {"fullname": "grib2io.Grib2GridDef.__init__", "modulename": "grib2io", "qualname": "Grib2GridDef.__init__", "kind": "function", "doc": "

    \n", "signature": "(gdtn: int, gdt: <built-in function array>)"}, {"fullname": "grib2io.Grib2GridDef.gdtn", "modulename": "grib2io", "qualname": "Grib2GridDef.gdtn", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.Grib2GridDef.gdt", "modulename": "grib2io", "qualname": "Grib2GridDef.gdt", "kind": "variable", "doc": "

    \n", "annotation": ": <built-in function array>"}, {"fullname": "grib2io.Grib2GridDef.from_section3", "modulename": "grib2io", "qualname": "Grib2GridDef.from_section3", "kind": "function", "doc": "

    \n", "signature": "(cls, section3):", "funcdef": "def"}, {"fullname": "grib2io.Grib2GridDef.nx", "modulename": "grib2io", "qualname": "Grib2GridDef.nx", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.Grib2GridDef.ny", "modulename": "grib2io", "qualname": "Grib2GridDef.ny", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.Grib2GridDef.npoints", "modulename": "grib2io", "qualname": "Grib2GridDef.npoints", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.Grib2GridDef.shape", "modulename": "grib2io", "qualname": "Grib2GridDef.shape", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.tables", "modulename": "grib2io.tables", "kind": "module", "doc": "

    Functions for retreiving data from NCEP GRIB2 Tables.

    \n"}, {"fullname": "grib2io.tables.get_table", "modulename": "grib2io.tables", "qualname": "get_table", "kind": "function", "doc": "

    Return GRIB2 code table as a dictionary.

    \n\n

    Parameters

    \n\n

    table: Code table number (e.g. '1.0'). NOTE: Code table '4.1' requires a 3rd value\nrepresenting the product discipline (e.g. '4.1.0').

    \n\n

    expand: If True, expand output dictionary where keys are a range.

    \n\n

    Returns

    \n\n

    dict

    \n", "signature": "(table, expand=False):", "funcdef": "def"}, {"fullname": "grib2io.tables.get_value_from_table", "modulename": "grib2io.tables", "qualname": "get_value_from_table", "kind": "function", "doc": "

    Return the definition given a GRIB2 code table.

    \n\n

    Parameters

    \n\n

    value: int or str code table value.

    \n\n

    table: str code table number.

    \n\n

    expand: If True, expand output dictionary where keys are a range.

    \n\n

    Returns

    \n\n

    Table value or None if not found.

    \n", "signature": "(value, table, expand=False):", "funcdef": "def"}, {"fullname": "grib2io.tables.get_varinfo_from_table", "modulename": "grib2io.tables", "qualname": "get_varinfo_from_table", "kind": "function", "doc": "

    Return the GRIB2 variable information given values of discipline,\nparmcat, and parmnum. NOTE: This functions allows for all arguments\nto be converted to a string type if arguments are integer.

    \n\n

    Parameters

    \n\n

    discipline: int or str of Discipline code value of a GRIB2 message.

    \n\n

    parmcat: int or str of Parameter Category value of a GRIB2 message.

    \n\n

    parmnum: int or str of Parameter Number value of a GRIB2 message.

    \n\n

    isNDFD: If True, signals function to try to get variable information\nfrom the supplemental NDFD tables.

    \n\n

    Returns

    \n\n

    list: containing variable information. \"Unknown\" is given for item of\ninformation if variable is not found.

    \n\n
      \n
    • list[0] = full name
    • \n
    • list[1] = units
    • \n
    • list[2] = short name (abbreviated name)
    • \n
    \n", "signature": "(discipline, parmcat, parmnum, isNDFD=False):", "funcdef": "def"}, {"fullname": "grib2io.tables.get_wgrib2_level_string", "modulename": "grib2io.tables", "qualname": "get_wgrib2_level_string", "kind": "function", "doc": "

    Return a string that describes the level or layer of the GRIB2 message. The\nformat and language of the string is an exact replica of how wgrib2 produces\nthe level/layer string in its inventory output.

    \n\n

    Contents of wgrib2 source, Level.c,\nwere converted into a Python dictionary and stored in grib2io as table\n'wgrib2_level_string'.

    \n\n

    Parameters

    \n\n

    pdtn: GRIB2 Product Definition Template Number

    \n\n

    pdt: sequence containing GRIB2 Product Definition Template (Section 4).

    \n\n

    Returns

    \n\n

    str: wgrib2-formatted level/layer string.

    \n", "signature": "(pdtn, pdt):", "funcdef": "def"}, {"fullname": "grib2io.tables.originating_centers", "modulename": "grib2io.tables.originating_centers", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.originating_centers.table_originating_centers", "modulename": "grib2io.tables.originating_centers", "qualname": "table_originating_centers", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'Melbourne (WMC)', '2': 'Melbourne (WMC)', '3': 'Melbourne (WMC)', '4': 'Moscow (WMC)', '5': 'Moscow (WMC)', '6': 'Moscow (WMC)', '7': 'US National Weather Service - NCEP (WMC)', '8': 'US National Weather Service - NWSTG (WMC)', '9': 'US National Weather Service - Other (WMC)', '10': 'Cairo (RSMC/RAFC)', '11': 'Cairo (RSMC/RAFC)', '12': 'Dakar (RSMC/RAFC)', '13': 'Dakar (RSMC/RAFC)', '14': 'Nairobi (RSMC/RAFC)', '15': 'Nairobi (RSMC/RAFC)', '16': 'Casablanca (RSMC)', '17': 'Tunis (RSMC)', '18': 'Tunis-Casablanca (RSMC)', '19': 'Tunis-Casablanca (RSMC)', '20': 'Las Palmas (RAFC)', '21': 'Algiers (RSMC)', '22': 'ACMAD', '23': 'Mozambique (NMC)', '24': 'Pretoria (RSMC)', '25': 'La Reunion (RSMC)', '26': 'Khabarovsk (RSMC)', '27': 'Khabarovsk (RSMC)', '28': 'New Delhi (RSMC/RAFC)', '29': 'New Delhi (RSMC/RAFC)', '30': 'Novosibirsk (RSMC)', '31': 'Novosibirsk (RSMC)', '32': 'Tashkent (RSMC)', '33': 'Jeddah (RSMC)', '34': 'Tokyo (RSMC), Japanese Meteorological Agency', '35': 'Tokyo (RSMC), Japanese Meteorological Agency', '36': 'Bankok', '37': 'Ulan Bator', '38': 'Beijing (RSMC)', '39': 'Beijing (RSMC)', '40': 'Seoul', '41': 'Buenos Aires (RSMC/RAFC)', '42': 'Buenos Aires (RSMC/RAFC)', '43': 'Brasilia (RSMC/RAFC)', '44': 'Brasilia (RSMC/RAFC)', '45': 'Santiago', '46': 'Brazilian Space Agency - INPE', '47': 'Columbia (NMC)', '48': 'Ecuador (NMC)', '49': 'Peru (NMC)', '50': 'Venezuela (NMC)', '51': 'Miami (RSMC/RAFC)', '52': 'Miami (RSMC), National Hurricane Center', '53': 'Canadian Meteorological Service - Montreal (RSMC)', '54': 'Canadian Meteorological Service - Montreal (RSMC)', '55': 'San Francisco', '56': 'ARINC Center', '57': 'US Air Force - Air Force Global Weather Center', '58': 'Fleet Numerical Meteorology and Oceanography Center,Monterey,CA,USA', '59': 'The NOAA Forecast Systems Lab, Boulder, CO, USA', '60': 'National Center for Atmospheric Research (NCAR), Boulder, CO', '61': 'Service ARGOS - Landover, MD, USA', '62': 'US Naval Oceanographic Office', '63': 'International Research Institude for Climate and Society', '64': 'Honolulu', '65': 'Darwin (RSMC)', '66': 'Darwin (RSMC)', '67': 'Melbourne (RSMC)', '68': 'Reserved', '69': 'Wellington (RSMC/RAFC)', '70': 'Wellington (RSMC/RAFC)', '71': 'Nadi (RSMC)', '72': 'Singapore', '73': 'Malaysia (NMC)', '74': 'U.K. Met Office - Exeter (RSMC)', '75': 'U.K. Met Office - Exeter (RSMC)', '76': 'Moscow (RSMC/RAFC)', '77': 'Reserved', '78': 'Offenbach (RSMC)', '79': 'Offenbach (RSMC)', '80': 'Rome (RSMC)', '81': 'Rome (RSMC)', '82': 'Norrkoping', '83': 'Norrkoping', '84': 'French Weather Service - Toulouse', '85': 'French Weather Service - Toulouse', '86': 'Helsinki', '87': 'Belgrade', '88': 'Oslo', '89': 'Prague', '90': 'Episkopi', '91': 'Ankara', '92': 'Frankfurt/Main (RAFC)', '93': 'London (WAFC)', '94': 'Copenhagen', '95': 'Rota', '96': 'Athens', '97': 'European Space Agency (ESA)', '98': 'European Center for Medium-Range Weather Forecasts (RSMC)', '99': 'De Bilt, Netherlands', '100': 'Brazzaville', '101': 'Abidjan', '102': 'Libyan Arab Jamahiriya (NMC)', '103': 'Madagascar (NMC)', '104': 'Mauritius (NMC)', '105': 'Niger (NMC)', '106': 'Seychelles (NMC)', '107': 'Uganda (NMC)', '108': 'United Republic of Tanzania (NMC)', '109': 'Zimbabwe (NMC)', '110': 'Hong-Kong', '111': 'Afghanistan (NMC)', '112': 'Bahrain (NMC)', '113': 'Bangladesh (NMC)', '114': 'Bhutan (NMC)', '115': 'Cambodia (NMC)', '116': 'Democratic Peoples Republic of Korea (NMC)', '117': 'Islamic Republic of Iran (NMC)', '118': 'Iraq (NMC)', '119': 'Kazakhstan (NMC)', '120': 'Kuwait (NMC)', '121': 'Kyrgyz Republic (NMC)', '122': 'Lao Peoples Democratic Republic (NMC)', '123': 'Macao, China', '124': 'Maldives (NMC)', '125': 'Myanmar (NMC)', '126': 'Nepal (NMC)', '127': 'Oman (NMC)', '128': 'Pakistan (NMC)', '129': 'Qatar (NMC)', '130': 'Yemen (NMC)', '131': 'Sri Lanka (NMC)', '132': 'Tajikistan (NMC)', '133': 'Turkmenistan (NMC)', '134': 'United Arab Emirates (NMC)', '135': 'Uzbekistan (NMC)', '136': 'Viet Nam (NMC)', '137-139': 'Reserved', '140': 'Bolivia (NMC)', '141': 'Guyana (NMC)', '142': 'Paraguay (NMC)', '143': 'Suriname (NMC)', '144': 'Uruguay (NMC)', '145': 'French Guyana', '146': 'Brazilian Navy Hydrographic Center', '147': 'National Commission on Space Activities - Argentina', '148': 'Brazilian Department of Airspace Control - DECEA', '149': 'Reserved', '150': 'Antigua and Barbuda (NMC)', '151': 'Bahamas (NMC)', '152': 'Barbados (NMC)', '153': 'Belize (NMC)', '154': 'British Caribbean Territories Center', '155': 'San Jose', '156': 'Cuba (NMC)', '157': 'Dominica (NMC)', '158': 'Dominican Republic (NMC)', '159': 'El Salvador (NMC)', '160': 'US NOAA/NESDIS', '161': 'US NOAA Office of Oceanic and Atmospheric Research', '162': 'Guatemala (NMC)', '163': 'Haiti (NMC)', '164': 'Honduras (NMC)', '165': 'Jamaica (NMC)', '166': 'Mexico City', '167': 'Netherlands Antilles and Aruba (NMC)', '168': 'Nicaragua (NMC)', '169': 'Panama (NMC)', '170': 'Saint Lucia (NMC)', '171': 'Trinidad and Tobago (NMC)', '172': 'French Departments in RA IV', '173': 'US National Aeronautics and Space Administration (NASA)', '174': 'Integrated System Data Management/Marine Environmental Data Service (ISDM/MEDS) - Canada', '175': 'Reserved', '176': 'US Cooperative Institude for Meteorological Satellite Studies', '177-189': 'Reserved', '190': 'Cook Islands (NMC)', '191': 'French Polynesia (NMC)', '192': 'Tonga (NMC)', '193': 'Vanuatu (NMC)', '194': 'Brunei (NMC)', '195': 'Indonesia (NMC)', '196': 'Kiribati (NMC)', '197': 'Federated States of Micronesia (NMC)', '198': 'New Caledonia (NMC)', '199': 'Niue', '200': 'Papua New Guinea (NMC)', '201': 'Philippines (NMC)', '202': 'Samoa (NMC)', '203': 'Solomon Islands (NMC)', '204': 'Narional Institude of Water and Atmospheric Research - New Zealand', '205-209': 'Reserved', '210': 'Frascati (ESA/ESRIN)', '211': 'Lanion', '212': 'Lisbon', '213': 'Reykjavik', '214': 'Madrid', '215': 'Zurich', '216': 'Service ARGOS - Toulouse', '217': 'Bratislava', '218': 'Budapest', '219': 'Ljubljana', '220': 'Warsaw', '221': 'Zagreb', '222': 'Albania (NMC)', '223': 'Armenia (NMC)', '224': 'Austria (NMC)', '225': 'Azerbaijan (NMC)', '226': 'Belarus (NMC)', '227': 'Belgium (NMC)', '228': 'Bosnia and Herzegovina (NMC)', '229': 'Bulgaria (NMC)', '230': 'Cyprus (NMC)', '231': 'Estonia (NMC)', '232': 'Georgia (NMC)', '233': 'Dublin', '234': 'Israel (NMC)', '235': 'Jordan (NMC)', '236': 'Latvia (NMC)', '237': 'Lebanon (NMC)', '238': 'Lithuania (NMC)', '239': 'Luxembourg', '240': 'Malta (NMC)', '241': 'Monaco', '242': 'Romania (NMC)', '243': 'Syrian Arab Republic (NMC)', '244': 'The former Yugoslav Republic of Macedonia (NMC)', '245': 'Ukraine (NMC)', '246': 'Republic of Moldova (NMC)', '247': 'Operational Programme for the Exchange of Weather RAdar Information (OPERA) - EUMETNET', '248-249': 'Reserved', '250': 'COnsortium for Small scale MOdelling (COSMO)', '251-253': 'Reserved', '254': 'EUMETSAT Operations Center', '255': 'Missing Value'}"}, {"fullname": "grib2io.tables.originating_centers.table_originating_subcenters", "modulename": "grib2io.tables.originating_centers", "qualname": "table_originating_subcenters", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'NCEP Re-Analysis Project', '2': 'NCEP Ensemble Products', '3': 'NCEP Central Operations', '4': 'Environmental Modeling Center', '5': 'Weather Prediction Center', '6': 'Ocean Prediction Center', '7': 'Climate Prediction Center', '8': 'Aviation Weather Center', '9': 'Storm Prediction Center', '10': 'National Hurricane Center', '11': 'NWS Techniques Development Laboratory', '12': 'NESDIS Office of Research and Applications', '13': 'Federal Aviation Administration', '14': 'NWS Meteorological Development Laboratory', '15': 'North American Regional Reanalysis Project', '16': 'Space Weather Prediction Center', '17': 'ESRL Global Systems Division'}"}, {"fullname": "grib2io.tables.originating_centers.table_generating_process", "modulename": "grib2io.tables.originating_centers", "qualname": "table_generating_process", "kind": "variable", "doc": "

    \n", "default_value": "{'0-1': 'Reserved', '2': 'Ultra Violet Index Model', '3': 'NCEP/ARL Transport and Dispersion Model', '4': 'NCEP/ARL Smoke Model', '5': 'Satellite Derived Precipitation and temperatures, from IR (See PDS Octet 41 ... for specific satellite ID)', '6': 'NCEP/ARL Dust Model', '7-9': 'Reserved', '10': 'Global Wind-Wave Forecast Model', '11': 'Global Multi-Grid Wave Model (Static Grids)', '12': 'Probabilistic Storm Surge (P-Surge)', '13': 'Hurricane Multi-Grid Wave Model', '14': 'Extra-tropical Storm Surge Atlantic Domain', '15': 'Nearshore Wave Prediction System (NWPS)', '16': 'Extra-Tropical Storm Surge (ETSS)', '17': 'Extra-tropical Storm Surge Pacific Domain', '18': 'Probabilistic Extra-Tropical Storm Surge (P-ETSS)', '19': 'Reserved', '20': 'Extra-tropical Storm Surge Micronesia Domain', '21': 'Extra-tropical Storm Surge Atlantic Domain (3D)', '22': 'Extra-tropical Storm Surge Pacific Domain (3D)', '23': 'Extra-tropical Storm Surge Micronesia Domain (3D)', '24': 'Reserved', '25': 'Snow Cover Analysis', '26-29': 'Reserved', '30': 'Forecaster generated field', '31': 'Value added post processed field', '32-41': 'Reserved', '42': 'Global Optimum Interpolation Analysis (GOI) from GFS model', '43': 'Global Optimum Interpolation Analysis (GOI) from "Final" run', '44': 'Sea Surface Temperature Analysis', '45': 'Coastal Ocean Circulation Model', '46': 'HYCOM - Global', '47': 'HYCOM - North Pacific basin', '48': 'HYCOM - North Atlantic basin', '49': 'Ozone Analysis from TIROS Observations', '50-51': 'Reserved', '52': 'Ozone Analysis from Nimbus 7 Observations', '53-63': 'Reserved', '64': 'Regional Optimum Interpolation Analysis (ROI)', '65-67': 'Reserved', '68': '80 wave triangular, 18-layer Spectral model from GFS model', '69': '80 wave triangular, 18 layer Spectral model from "Medium Range Forecast" run', '70': 'Quasi-Lagrangian Hurricane Model (QLM)', '71': 'Hurricane Weather Research and Forecasting (HWRF)', '72': 'Hurricane Non-Hydrostatic Multiscale Model on the B Grid (HNMMB)', '73': 'Fog Forecast model - Ocean Prod. Center', '74': 'Gulf of Mexico Wind/Wave', '75': 'Gulf of Alaska Wind/Wave', '76': 'Bias corrected Medium Range Forecast', '77': '126 wave triangular, 28 layer Spectral model from GFS model', '78': '126 wave triangular, 28 layer Spectral model from "Medium Range Forecast" run', '79': 'Reserved', '80': '62 wave triangular, 28 layer Spectral model from "Medium Range Forecast" run', '81': 'Analysis from GFS (Global Forecast System)', '82': 'Analysis from GDAS (Global Data Assimilation System)', '83': 'High Resolution Rapid Refresh (HRRR)', '84': 'MESO NAM Model (currently 12 km)', '85': 'Real Time Ocean Forecast System (RTOFS)', '86': 'Early Hurricane Wind Speed Probability Model', '87': 'CAC Ensemble Forecasts from Spectral (ENSMB)', '88': 'NOAA Wave Watch III (NWW3) Ocean Wave Model', '89': 'Non-hydrostatic Meso Model (NMM) (Currently 8 km)', '90': '62 wave triangular, 28 layer spectral model extension of the "Medium Range Forecast" run', '91': '62 wave triangular, 28 layer spectral model extension of the GFS model', '92': '62 wave triangular, 28 layer spectral model run from the "Medium Range Forecast" final analysis', '93': '62 wave triangular, 28 layer spectral model run from the T62 GDAS analysis of the "Medium Range Forecast" run', '94': 'T170/L42 Global Spectral Model from MRF run', '95': 'T126/L42 Global Spectral Model from MRF run', '96': 'Global Forecast System Model T1534 - Forecast hours 00-384 T574 - Forecast hours 00-192 T190 - Forecast hours 204-384', '97': 'Reserved', '98': '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.', '99': 'Miscellaneous Test ID', '100': 'Miscellaneous Test ID', '101': 'Conventional Observation Re-Analysis (CORE)', '102-103': 'Reserved', '104': 'National Blend GRIB', '105': 'Rapid Refresh (RAP)', '106': 'Reserved', '107': 'Global Ensemble Forecast System (GEFS)', '108': 'Localized Aviation MOS Program (LAMP)', '109': 'Real Time Mesoscale Analysis (RTMA)', '110': 'NAM Model - 15km version', '111': 'NAM model, generic resolution (Used in SREF processing)', '112': 'WRF-NMM model, generic resolution (Used in various runs) NMM=Nondydrostatic Mesoscale Model (NCEP)', '113': 'Products from NCEP SREF processing', '114': 'NAEFS Products from joined NCEP, CMC global ensembles', '115': 'Downscaled GFS from NAM eXtension', '116': 'WRF-EM model, generic resolution (Used in various runs) EM - Eulerian Mass-core (NCAR - aka Advanced Research WRF)', '117': 'NEMS GFS Aerosol Component', '118': 'UnRestricted Mesoscale Analysis (URMA)', '119': 'WAM (Whole Atmosphere Model)', '120': 'Ice Concentration Analysis', '121': 'Western North Atlantic Regional Wave Model', '122': 'Alaska Waters Regional Wave Model', '123': 'North Atlantic Hurricane Wave Model', '124': 'Eastern North Pacific Regional Wave Model', '125': 'North Pacific Hurricane Wave Model', '126': 'Sea Ice Forecast Model', '127': 'Lake Ice Forecast Model', '128': 'Global Ocean Forecast Model', '129': 'Global Ocean Data Analysis System (GODAS)', '130': 'Merge of fields from the RUC, NAM, and Spectral Model', '131': 'Great Lakes Wave Model', '132': 'High Resolution Ensemble Forecast (HREF)', '133': 'Great Lakes Short Range Wave Model', '134': 'Rapid Refresh Forecast System (RRFS)', '135': 'Hurricane Analysis and Forecast System (HAFS)', '136-139': 'Reserved', '140': 'North American Regional Reanalysis (NARR)', '141': 'Land Data Assimilation and Forecast System', '142-149': 'Reserved', '150': 'NWS River Forecast System (NWSRFS)', '151': 'NWS Flash Flood Guidance System (NWSFFGS)', '152': 'WSR-88D Stage II Precipitation Analysis', '153': 'WSR-88D Stage III Precipitation Analysis', '154-179': 'Reserved', '180': 'Quantitative Precipitation Forecast generated by NCEP', '181': 'River Forecast Center Quantitative Precipitation Forecast mosaic generated by NCEP', '182': 'River Forecast Center Quantitative Precipitation estimate mosaic generated by NCEP', '183': 'NDFD product generated by NCEP/HPC', '184': 'Climatological Calibrated Precipitation Analysis (CCPA)', '185-189': 'Reserved', '190': 'National Convective Weather Diagnostic generated by NCEP/AWC', '191': 'Current Icing Potential automated product genterated by NCEP/AWC', '192': 'Analysis product from NCEP/AWC', '193': 'Forecast product from NCEP/AWC', '194': 'Reserved', '195': 'Climate Data Assimilation System 2 (CDAS2)', '196': 'Climate Data Assimilation System 2 (CDAS2) - used for regeneration runs', '197': 'Climate Data Assimilation System (CDAS)', '198': 'Climate Data Assimilation System (CDAS) - used for regeneration runs', '199': 'Climate Forecast System Reanalysis (CFSR) -- Atmospheric model (GFS) coupled to a multi level ocean, land and seaice model. GFS spectral model at T382, 64 levels coupled to 40 level MOM4 ocean model.', '200': 'CPC Manual Forecast Product', '201': 'CPC Automated Product', '202-209': 'Reserved', '210': 'EPA Air Quality Forecast - Currently North East US domain', '211': 'EPA Air Quality Forecast - Currently Eastern US domain', '212-214': 'Reserved', '215': 'SPC Manual Forecast Product', '216-219': 'Reserved', '220': 'NCEP/OPC automated product', '221-230': 'Reserved for WPC products', '231-254': 'Reserved', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section0", "modulename": "grib2io.tables.section0", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section0.table_0_0", "modulename": "grib2io.tables.section0", "qualname": "table_0_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Meteorological Products', '1': 'Hydrological Products', '2': 'Land Surface Products', '3': 'Satellite Remote Sensing Products', '4': 'Space Weather Products', '5-9': 'Reserved', '10': 'Oceanographic Products', '11-19': 'Reserved', '20': 'Health and Socioeconomic Impacts', '21-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section1", "modulename": "grib2io.tables.section1", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section1.table_1_0", "modulename": "grib2io.tables.section1", "qualname": "table_1_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Experimental', '1': 'Version Implemented on 7 November 2001', '2': 'Version Implemented on 4 November 2003', '3': 'Version Implemented on 2 November 2005', '4': 'Version Implemented on 7 November 2007', '5': 'Version Implemented on 4 November 2009', '6': 'Version Implemented on 15 September 2010', '7': 'Version Implemented on 4 May 2011', '8': 'Version Implemented on 8 November 2011', '9': 'Version Implemented on 2 May 2012', '10': 'Version Implemented on 7 November 2012', '11': 'Version Implemented on 8 May 2013', '12': 'Version Implemented on 14 November 2013', '13': 'Version Implemented on 7 May 2014', '14': 'Version Implemented on 5 November 2014', '16': 'Version Implemented on 11 November 2015', '17': 'Version Implemented on 4 May 2016', '18': 'Version Implemented on 2 November 2016', '19': 'Version Implemented on 3 May 2017', '20': 'Version Implemented on 8 November 2017', '21': 'Version Implemented on 2 May 2018', '22': 'Version Implemented on 7 November 2018', '23': 'Version Implemented on 15 May 2019', '24': 'Version Implemented on 06 November 2019', '25': 'Version Implemented on 06 May 2020', '26': 'Version Implemented on 16 November 2020', '27': 'Version Implemented on 16 June 2021', '28': 'Version Implemented on 15 November 2021', '29': 'Version Implemented on 15 May 2022', '30': 'Version Implemented on 15 November 2022', '31': 'Version Implemented on 15 June 2023', '32': 'Pre-operational to be implemented by next amendment', '23-254': 'Future Version', '255': 'Missing"'}"}, {"fullname": "grib2io.tables.section1.table_1_1", "modulename": "grib2io.tables.section1", "qualname": "table_1_1", "kind": "variable", "doc": "

    \n", "default_value": "{'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'}"}, {"fullname": "grib2io.tables.section1.table_1_2", "modulename": "grib2io.tables.section1", "qualname": "table_1_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Analysis', '1': 'Start of Forecast', '2': 'Verifying Time of Forecast', '3': 'Observation Time', '4': 'Local Time', '5-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section1.table_1_3", "modulename": "grib2io.tables.section1", "qualname": "table_1_3", "kind": "variable", "doc": "

    \n", "default_value": "{'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': 'Copernicus Regional Reanalysis', '11': 'Copernicus Regional Reanalysis Test', '12-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section1.table_1_4", "modulename": "grib2io.tables.section1", "qualname": "table_1_4", "kind": "variable", "doc": "

    \n", "default_value": "{'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'}"}, {"fullname": "grib2io.tables.section1.table_1_5", "modulename": "grib2io.tables.section1", "qualname": "table_1_5", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Calendar Definition', '1': 'Paleontological Offset', '2': 'Calendar Definition and Paleontological Offset', '3-32767': 'Reserved', '32768-65534': 'Reserved for Local Use', '65535': 'Missing'}"}, {"fullname": "grib2io.tables.section1.table_1_6", "modulename": "grib2io.tables.section1", "qualname": "table_1_6", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Gregorian', '1': '360-day', '2': '365-day', '3': 'Proleptic Gregorian', '4-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section3", "modulename": "grib2io.tables.section3", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section3.table_3_0", "modulename": "grib2io.tables.section3", "qualname": "table_3_0", "kind": "variable", "doc": "

    \n", "default_value": "{'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.'}"}, {"fullname": "grib2io.tables.section3.table_3_1", "modulename": "grib2io.tables.section3", "qualname": "table_3_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Latitude/Longitude', '1': 'Rotated Latitude/Longitude', '2': 'Stretched Latitude/Longitude', '3': 'Rotated and Stretched Latitude/Longitude', '4': 'Variable Resolution Latitude/longitude ', '5': 'Variable Resolution Rotated Latitude/longitude ', '6-9': 'Reserved', '10': 'Mercator', '11': 'Reserved', '12': 'Transverse Mercator ', '13': 'Mercator with modelling subdomains definition ', '14-19': 'Reserved', '20': 'Polar Stereographic Projection (Can be North or South)', '21-22': 'Reserved', '23': 'Polar Stereographic with modelling subdomains definition ', '24-29': 'Reserved', '30': 'Lambert Conformal (Can be Secant, Tangent, Conical, or Bipolar)', '31': 'Albers Equal Area', '32': 'Reserved', '33': 'Lambert conformal with modelling subdomains definition ', '34-39': 'Reserved', '40': 'Gaussian Latitude/Longitude', '41': 'Rotated Gaussian Latitude/Longitude', '42': 'Stretched Gaussian Latitude/Longitude', '43': 'Rotated and Stretched Gaussian Latitude/Longitude', '44-49': 'Reserved', '50': 'Spherical Harmonic Coefficients', '51': 'Rotated Spherical Harmonic Coefficients', '52': 'Stretched Spherical Harmonic Coefficients', '53': 'Rotated and Stretched Spherical Harmonic Coefficients', '54-59': 'Reserved', '60': 'Cubed-Sphere Gnomonic ', '61': 'Spectral Mercator with modelling subdomains definition ', '62': 'Spectral Polar Stereographic with modelling subdomains definition ', '63': 'Spectral Lambert conformal with modelling subdomains definition ', '64-89': 'Reserved', '90': 'Space View Perspective or Orthographic', '91-99': 'Reserved', '100': 'Triangular Grid Based on an Icosahedron', '101': 'General Unstructured Grid (see Template 3.101)', '102-109': 'Reserved', '110': 'Equatorial Azimuthal Equidistant Projection', '111-119': 'Reserved', '120': 'Azimuth-Range Projection', '121-139': 'Reserved', '140': 'Lambert Azimuthal Equal Area Projection ', '141-203': 'Reserved', '204': 'Curvilinear Orthogonal Grids', '205-999': 'Reserved', '1000': 'Cross Section Grid with Points Equally Spaced on the Horizontal', '1001-1099': 'Reserved', '1100': 'Hovmoller Diagram with Points Equally Spaced on the Horizontal', '1101-1199': 'Reserved', '1200': 'Time Section Grid', '1201-32767': 'Reserved', '32768-65534': 'Reserved for Local Use', '32768': 'Rotated Latitude/Longitude (Arakawa Staggered E-Grid)', '32769': 'Rotated Latitude/Longitude (Arakawa Non-E Staggered Grid)', '65535': 'Missing'}"}, {"fullname": "grib2io.tables.section3.table_3_2", "modulename": "grib2io.tables.section3", "qualname": "table_3_2", "kind": "variable", "doc": "

    \n", "default_value": "{'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': 'Earth model assumed WGS84 with corrected geomagnetic coordinates (latitude and longitude) defined by Gustafsson et al., 1992".', '11': 'Sun assumed spherical with radius = 695 990 000 m (Allen, C.W., Astrophysical Quantities, 3rd ed.; Athlone: London, 1976) and Stonyhurst latitude and longitude system with origin at the intersection of the solar central meridian (as seen from Earth) and the solar equator (Thompson, W., Coordinate systems for solar image data, Astron. Astrophys. 2006, 449, 791-803)', '12-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section3.table_3_11", "modulename": "grib2io.tables.section3", "qualname": "table_3_11", "kind": "variable", "doc": "

    \n", "default_value": "{'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)', '4-254': 'Reserved', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section3.earth_params", "modulename": "grib2io.tables.section3", "qualname": "earth_params", "kind": "variable", "doc": "

    \n", "default_value": "{'0': {'shape': 'spherical', 'radius': 6367470.0}, '1': {'shape': 'spherical', 'radius': None}, '2': {'shape': 'oblateSpheriod', 'major_axis': 6378160.0, 'minor_axis': 6356775.0, 'flattening': 0.003367003367003367}, '3': {'shape': 'oblateSpheriod', 'major_axis': None, 'minor_axis': None, 'flattening': None}, '4': {'shape': 'oblateSpheriod', 'major_axis': 6378137.0, 'minor_axis': 6356752.314, 'flattening': 0.003352810681182319}, '5': {'shape': 'oblateSpheriod', 'major_axis': 6378137.0, 'minor_axis': 6356752.3142, 'flattening': 0.0033528106647474805}, '6': {'shape': 'spherical', 'radius': 6371229.0}, '7': {'shape': 'oblateSpheriod', 'major_axis': None, 'minor_axis': None, 'flattening': None}, '8': {'shape': 'spherical', 'radius': 6371200.0}, '9': {'shape': 'unknown', 'radius': None}, '10': {'shape': 'unknown', 'radius': None}, '11': {'shape': 'unknown', 'radius': None}, '12': {'shape': 'unknown', 'radius': None}, '13': {'shape': 'unknown', 'radius': None}, '14': {'shape': 'unknown', 'radius': None}, '15': {'shape': 'unknown', 'radius': None}, '16': {'shape': 'unknown', 'radius': None}, '17': {'shape': 'unknown', 'radius': None}, '18': {'shape': 'unknown', 'radius': None}, '19': {'shape': 'unknown', 'radius': None}, '20': {'shape': 'unknown', 'radius': None}, '21': {'shape': 'unknown', 'radius': None}, '22': {'shape': 'unknown', 'radius': None}, '23': {'shape': 'unknown', 'radius': None}, '24': {'shape': 'unknown', 'radius': None}, '25': {'shape': 'unknown', 'radius': None}, '26': {'shape': 'unknown', 'radius': None}, '27': {'shape': 'unknown', 'radius': None}, '28': {'shape': 'unknown', 'radius': None}, '29': {'shape': 'unknown', 'radius': None}, '30': {'shape': 'unknown', 'radius': None}, '31': {'shape': 'unknown', 'radius': None}, '32': {'shape': 'unknown', 'radius': None}, '33': {'shape': 'unknown', 'radius': None}, '34': {'shape': 'unknown', 'radius': None}, '35': {'shape': 'unknown', 'radius': None}, '36': {'shape': 'unknown', 'radius': None}, '37': {'shape': 'unknown', 'radius': None}, '38': {'shape': 'unknown', 'radius': None}, '39': {'shape': 'unknown', 'radius': None}, '40': {'shape': 'unknown', 'radius': None}, '41': {'shape': 'unknown', 'radius': None}, '42': {'shape': 'unknown', 'radius': None}, '43': {'shape': 'unknown', 'radius': None}, '44': {'shape': 'unknown', 'radius': None}, '45': {'shape': 'unknown', 'radius': None}, '46': {'shape': 'unknown', 'radius': None}, '47': {'shape': 'unknown', 'radius': None}, '48': {'shape': 'unknown', 'radius': None}, '49': {'shape': 'unknown', 'radius': None}, '50': {'shape': 'unknown', 'radius': None}, '51': {'shape': 'unknown', 'radius': None}, '52': {'shape': 'unknown', 'radius': None}, '53': {'shape': 'unknown', 'radius': None}, '54': {'shape': 'unknown', 'radius': None}, '55': {'shape': 'unknown', 'radius': None}, '56': {'shape': 'unknown', 'radius': None}, '57': {'shape': 'unknown', 'radius': None}, '58': {'shape': 'unknown', 'radius': None}, '59': {'shape': 'unknown', 'radius': None}, '60': {'shape': 'unknown', 'radius': None}, '61': {'shape': 'unknown', 'radius': None}, '62': {'shape': 'unknown', 'radius': None}, '63': {'shape': 'unknown', 'radius': None}, '64': {'shape': 'unknown', 'radius': None}, '65': {'shape': 'unknown', 'radius': None}, '66': {'shape': 'unknown', 'radius': None}, '67': {'shape': 'unknown', 'radius': None}, '68': {'shape': 'unknown', 'radius': None}, '69': {'shape': 'unknown', 'radius': None}, '70': {'shape': 'unknown', 'radius': None}, '71': {'shape': 'unknown', 'radius': None}, '72': {'shape': 'unknown', 'radius': None}, '73': {'shape': 'unknown', 'radius': None}, '74': {'shape': 'unknown', 'radius': None}, '75': {'shape': 'unknown', 'radius': None}, '76': {'shape': 'unknown', 'radius': None}, '77': {'shape': 'unknown', 'radius': None}, '78': {'shape': 'unknown', 'radius': None}, '79': {'shape': 'unknown', 'radius': None}, '80': {'shape': 'unknown', 'radius': None}, '81': {'shape': 'unknown', 'radius': None}, '82': {'shape': 'unknown', 'radius': None}, '83': {'shape': 'unknown', 'radius': None}, '84': {'shape': 'unknown', 'radius': None}, '85': {'shape': 'unknown', 'radius': None}, '86': {'shape': 'unknown', 'radius': None}, '87': {'shape': 'unknown', 'radius': None}, '88': {'shape': 'unknown', 'radius': None}, '89': {'shape': 'unknown', 'radius': None}, '90': {'shape': 'unknown', 'radius': None}, '91': {'shape': 'unknown', 'radius': None}, '92': {'shape': 'unknown', 'radius': None}, '93': {'shape': 'unknown', 'radius': None}, '94': {'shape': 'unknown', 'radius': None}, '95': {'shape': 'unknown', 'radius': None}, '96': {'shape': 'unknown', 'radius': None}, '97': {'shape': 'unknown', 'radius': None}, '98': {'shape': 'unknown', 'radius': None}, '99': {'shape': 'unknown', 'radius': None}, '100': {'shape': 'unknown', 'radius': None}, '101': {'shape': 'unknown', 'radius': None}, '102': {'shape': 'unknown', 'radius': None}, '103': {'shape': 'unknown', 'radius': None}, '104': {'shape': 'unknown', 'radius': None}, '105': {'shape': 'unknown', 'radius': None}, '106': {'shape': 'unknown', 'radius': None}, '107': {'shape': 'unknown', 'radius': None}, '108': {'shape': 'unknown', 'radius': None}, '109': {'shape': 'unknown', 'radius': None}, '110': {'shape': 'unknown', 'radius': None}, '111': {'shape': 'unknown', 'radius': None}, '112': {'shape': 'unknown', 'radius': None}, '113': {'shape': 'unknown', 'radius': None}, '114': {'shape': 'unknown', 'radius': None}, '115': {'shape': 'unknown', 'radius': None}, '116': {'shape': 'unknown', 'radius': None}, '117': {'shape': 'unknown', 'radius': None}, '118': {'shape': 'unknown', 'radius': None}, '119': {'shape': 'unknown', 'radius': None}, '120': {'shape': 'unknown', 'radius': None}, '121': {'shape': 'unknown', 'radius': None}, '122': {'shape': 'unknown', 'radius': None}, '123': {'shape': 'unknown', 'radius': None}, '124': {'shape': 'unknown', 'radius': None}, '125': {'shape': 'unknown', 'radius': None}, '126': {'shape': 'unknown', 'radius': None}, '127': {'shape': 'unknown', 'radius': None}, '128': {'shape': 'unknown', 'radius': None}, '129': {'shape': 'unknown', 'radius': None}, '130': {'shape': 'unknown', 'radius': None}, '131': {'shape': 'unknown', 'radius': None}, '132': {'shape': 'unknown', 'radius': None}, '133': {'shape': 'unknown', 'radius': None}, '134': {'shape': 'unknown', 'radius': None}, '135': {'shape': 'unknown', 'radius': None}, '136': {'shape': 'unknown', 'radius': None}, '137': {'shape': 'unknown', 'radius': None}, '138': {'shape': 'unknown', 'radius': None}, '139': {'shape': 'unknown', 'radius': None}, '140': {'shape': 'unknown', 'radius': None}, '141': {'shape': 'unknown', 'radius': None}, '142': {'shape': 'unknown', 'radius': None}, '143': {'shape': 'unknown', 'radius': None}, '144': {'shape': 'unknown', 'radius': None}, '145': {'shape': 'unknown', 'radius': None}, '146': {'shape': 'unknown', 'radius': None}, '147': {'shape': 'unknown', 'radius': None}, '148': {'shape': 'unknown', 'radius': None}, '149': {'shape': 'unknown', 'radius': None}, '150': {'shape': 'unknown', 'radius': None}, '151': {'shape': 'unknown', 'radius': None}, '152': {'shape': 'unknown', 'radius': None}, '153': {'shape': 'unknown', 'radius': None}, '154': {'shape': 'unknown', 'radius': None}, '155': {'shape': 'unknown', 'radius': None}, '156': {'shape': 'unknown', 'radius': None}, '157': {'shape': 'unknown', 'radius': None}, '158': {'shape': 'unknown', 'radius': None}, '159': {'shape': 'unknown', 'radius': None}, '160': {'shape': 'unknown', 'radius': None}, '161': {'shape': 'unknown', 'radius': None}, '162': {'shape': 'unknown', 'radius': None}, '163': {'shape': 'unknown', 'radius': None}, '164': {'shape': 'unknown', 'radius': None}, '165': {'shape': 'unknown', 'radius': None}, '166': {'shape': 'unknown', 'radius': None}, '167': {'shape': 'unknown', 'radius': None}, '168': {'shape': 'unknown', 'radius': None}, '169': {'shape': 'unknown', 'radius': None}, '170': {'shape': 'unknown', 'radius': None}, '171': {'shape': 'unknown', 'radius': None}, '172': {'shape': 'unknown', 'radius': None}, '173': {'shape': 'unknown', 'radius': None}, '174': {'shape': 'unknown', 'radius': None}, '175': {'shape': 'unknown', 'radius': None}, '176': {'shape': 'unknown', 'radius': None}, '177': {'shape': 'unknown', 'radius': None}, '178': {'shape': 'unknown', 'radius': None}, '179': {'shape': 'unknown', 'radius': None}, '180': {'shape': 'unknown', 'radius': None}, '181': {'shape': 'unknown', 'radius': None}, '182': {'shape': 'unknown', 'radius': None}, '183': {'shape': 'unknown', 'radius': None}, '184': {'shape': 'unknown', 'radius': None}, '185': {'shape': 'unknown', 'radius': None}, '186': {'shape': 'unknown', 'radius': None}, '187': {'shape': 'unknown', 'radius': None}, '188': {'shape': 'unknown', 'radius': None}, '189': {'shape': 'unknown', 'radius': None}, '190': {'shape': 'unknown', 'radius': None}, '191': {'shape': 'unknown', 'radius': None}, '192': {'shape': 'unknown', 'radius': None}, '193': {'shape': 'unknown', 'radius': None}, '194': {'shape': 'unknown', 'radius': None}, '195': {'shape': 'unknown', 'radius': None}, '196': {'shape': 'unknown', 'radius': None}, '197': {'shape': 'unknown', 'radius': None}, '198': {'shape': 'unknown', 'radius': None}, '199': {'shape': 'unknown', 'radius': None}, '200': {'shape': 'unknown', 'radius': None}, '201': {'shape': 'unknown', 'radius': None}, '202': {'shape': 'unknown', 'radius': None}, '203': {'shape': 'unknown', 'radius': None}, '204': {'shape': 'unknown', 'radius': None}, '205': {'shape': 'unknown', 'radius': None}, '206': {'shape': 'unknown', 'radius': None}, '207': {'shape': 'unknown', 'radius': None}, '208': {'shape': 'unknown', 'radius': None}, '209': {'shape': 'unknown', 'radius': None}, '210': {'shape': 'unknown', 'radius': None}, '211': {'shape': 'unknown', 'radius': None}, '212': {'shape': 'unknown', 'radius': None}, '213': {'shape': 'unknown', 'radius': None}, '214': {'shape': 'unknown', 'radius': None}, '215': {'shape': 'unknown', 'radius': None}, '216': {'shape': 'unknown', 'radius': None}, '217': {'shape': 'unknown', 'radius': None}, '218': {'shape': 'unknown', 'radius': None}, '219': {'shape': 'unknown', 'radius': None}, '220': {'shape': 'unknown', 'radius': None}, '221': {'shape': 'unknown', 'radius': None}, '222': {'shape': 'unknown', 'radius': None}, '223': {'shape': 'unknown', 'radius': None}, '224': {'shape': 'unknown', 'radius': None}, '225': {'shape': 'unknown', 'radius': None}, '226': {'shape': 'unknown', 'radius': None}, '227': {'shape': 'unknown', 'radius': None}, '228': {'shape': 'unknown', 'radius': None}, '229': {'shape': 'unknown', 'radius': None}, '230': {'shape': 'unknown', 'radius': None}, '231': {'shape': 'unknown', 'radius': None}, '232': {'shape': 'unknown', 'radius': None}, '233': {'shape': 'unknown', 'radius': None}, '234': {'shape': 'unknown', 'radius': None}, '235': {'shape': 'unknown', 'radius': None}, '236': {'shape': 'unknown', 'radius': None}, '237': {'shape': 'unknown', 'radius': None}, '238': {'shape': 'unknown', 'radius': None}, '239': {'shape': 'unknown', 'radius': None}, '240': {'shape': 'unknown', 'radius': None}, '241': {'shape': 'unknown', 'radius': None}, '242': {'shape': 'unknown', 'radius': None}, '243': {'shape': 'unknown', 'radius': None}, '244': {'shape': 'unknown', 'radius': None}, '245': {'shape': 'unknown', 'radius': None}, '246': {'shape': 'unknown', 'radius': None}, '247': {'shape': 'unknown', 'radius': None}, '248': {'shape': 'unknown', 'radius': None}, '249': {'shape': 'unknown', 'radius': None}, '250': {'shape': 'unknown', 'radius': None}, '251': {'shape': 'unknown', 'radius': None}, '252': {'shape': 'unknown', 'radius': None}, '253': {'shape': 'unknown', 'radius': None}, '254': {'shape': 'unknown', 'radius': None}, '255': {'shape': 'unknown', 'radius': None}}"}, {"fullname": "grib2io.tables.section4", "modulename": "grib2io.tables.section4", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4.table_4_1_0", "modulename": "grib2io.tables.section4", "qualname": "table_4_1_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Temperature', '1': 'Moisture', '2': 'Momentum', '3': 'Mass', '4': 'Short-wave radiation', '5': 'Long-wave radiation', '6': 'Cloud', '7': 'Thermodynamic Stability indicies', '8': 'Kinematic Stability indicies', '9': 'Temperature Probabilities*', '10': 'Moisture Probabilities*', '11': 'Momentum Probabilities*', '12': 'Mass Probabilities*', '13': 'Aerosols', '14': 'Trace gases', '15': 'Radar', '16': 'Forecast Radar Imagery', '17': 'Electrodynamics', '18': 'Nuclear/radiology', '19': 'Physical atmospheric properties', '20': 'Atmospheric chemical Constituents', '21-189': 'Reserved', '190': 'CCITT IA5 string', '191': 'Miscellaneous', '192-254': 'Reserved for Local Use', '192': 'Covariance', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_1_1", "modulename": "grib2io.tables.section4", "qualname": "table_4_1_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Hydrology basic products', '1': 'Hydrology probabilities', '2': 'Inland water and sediment properties', '3-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_1_2", "modulename": "grib2io.tables.section4", "qualname": "table_4_1_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Vegetation/Biomass', '1': 'Agricultural/Aquacultural Special Products', '2': 'Transportation-related Products', '3': 'Soil Products', '4': 'Fire Weather Products', '5': 'Land Surface Products', '6-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_1_3", "modulename": "grib2io.tables.section4", "qualname": "table_4_1_3", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Image format products', '1': 'Quantitative products', '2': 'Cloud Properties', '3': 'Flight Rules Conditions', '4': 'Volcanic Ash', '5': 'Sea-surface Temperature', '6': 'Solar Radiation', '7-191': 'Reserved', '192-254': 'Reserved for Local Use', '192': 'Forecast Satellite Imagery', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_1_4", "modulename": "grib2io.tables.section4", "qualname": "table_4_1_4", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Temperature', '1': 'Momentum', '2': 'Charged Particle Mass and Number', '3': 'Electric and Magnetic Fields', '4': 'Energetic Particles', '5': 'Waves', '6': 'Solar Electromagnetic Emissions', '7': 'Terrestrial Electromagnetic Emissions', '8': 'Imagery', '9': 'Ion-Neutral Coupling', '10': 'Space Weather Indices', '11-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_1_10", "modulename": "grib2io.tables.section4", "qualname": "table_4_1_10", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Waves', '1': 'Currents', '2': 'Ice', '3': 'Surface Properties', '4': 'Sub-surface Properties', '5-190': 'Reserved', '191': 'Miscellaneous', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_1_20", "modulename": "grib2io.tables.section4", "qualname": "table_4_1_20", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Health Indicators', '1': 'Epidemiology', '2': 'Socioeconomic indicators', '3-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_0", "modulename": "grib2io.tables.section4", "qualname": "table_4_0", "kind": "variable", "doc": "

    \n", "default_value": "{'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 optical properties of 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 (DEPRECATED) (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-75': 'Reserved', '76': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source or sink. (see Template 4.76)', '77': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source or sink. (see Template 4.77)', '78': '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 with source or sink. (see Template 4.78)', '79': '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 with source or sink. (see Template 4.79)', '80': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol with source or sink. (see Template 4.80)', '81': '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 with source or sink. (see Template 4.81)', '82': '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 with source or sink. (see Template 4.82)', '83': '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 with source or sink. (see Template 4.83)', '84': '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 with source or sink. (see Template 4.84)', '85': '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.85)', '86': 'Quantile forecasts at a horizontal level or in a horizontal layer at a point in time. (see Template 4.86)', '87': 'Quantile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval. (see Template 4.87)', '88': 'Analysis or forecast at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.88)', '89-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': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.92)', '93': 'Post-processing analysis or forecast at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.93)', '94': 'Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.94)', '95': 'Average, accumulation, extreme values or other statiscally processed value at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.95)', '96': 'Average, accumulation, extreme values or other statistically processed values of an individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.96)', '97': 'Average, accumulation, extreme values or other statistically processed values of post-processing analysis or forecast at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.97)', '98': 'Average, accumulation, extreme values or other statistically processed values of a post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.98)', '99': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with explicit list of frequencies and directions (see Template 4.99)', '100': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with explicit list of frequencies and directions (see Template 4.100)', '101': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with frequencies and directions defined by formulae (see Template 4.101)', '102': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with frequencies and directions defined by formulae (see Template 4.102)', '103': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for waves selected by period range (see Template 4.103)', '104': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for waves selected by period range (see Template 4.104)', '105': 'Anomalies, significance and other derived products from an analysis or forecast in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (see Template 4.105)', '99-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'}"}, {"fullname": "grib2io.tables.section4.table_4_3", "modulename": "grib2io.tables.section4", "qualname": "table_4_3", "kind": "variable", "doc": "

    \n", "default_value": "{'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-254': 'Reserved for Local Use', '192': 'Forecast Confidence Indicator', '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'}"}, {"fullname": "grib2io.tables.section4.table_4_4", "modulename": "grib2io.tables.section4", "qualname": "table_4_4", "kind": "variable", "doc": "

    \n", "default_value": "{'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'}"}, {"fullname": "grib2io.tables.section4.table_4_5", "modulename": "grib2io.tables.section4", "qualname": "table_4_5", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Reserved', 'unknown'], '1': ['Ground or Water Surface', 'unknown'], '2': ['Cloud Base Level', 'unknown'], '3': ['Level of Cloud Tops', 'unknown'], '4': ['Level of 0o C Isotherm', 'unknown'], '5': ['Level of Adiabatic Condensation Lifted from the Surface', 'unknown'], '6': ['Maximum Wind Level', 'unknown'], '7': ['Tropopause', 'unknown'], '8': ['Nominal Top of the Atmosphere', 'unknown'], '9': ['Sea Bottom', 'unknown'], '10': ['Entire Atmosphere', 'unknown'], '11': ['Cumulonimbus Base (CB)', 'm'], '12': ['Cumulonimbus Top (CT)', 'm'], '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)', 'unknown'], '15': ['Convection condensation level (CCL)', 'unknown'], '16': ['Level of neutral buoyancy or equilibrium (LNB)', 'unknown'], '17-19': ['Reserved', 'unknown'], '20': ['Isothermal Level', 'K'], '21': ['Lowest level where mass density exceeds the specified value (base for a given threshold of mass density)', 'kg m-3'], '22': ['Highest level where mass density exceeds the specified value (top for a given threshold of mass density)', 'kg m-3'], '23': ['Lowest level where air concentration exceeds the specified value (base for a given threshold of air concentration', 'Bq m-3'], '24': ['Highest level where air concentration exceeds the specified value (top for a given threshold of air concentration)', 'Bq m-3'], '25': ['Highest level where radar reflectivity exceeds the specified value (echo top for a given threshold of reflectivity)', 'dBZ'], '26': ['Convective cloud layer base', 'm'], '27': ['Convective cloud layer top', 'm'], '28-29': ['Reserved', 'unknown'], '30': ['Specified radius from the centre of the Sun', 'm'], '31': ['Ionospheric D-region level', 'unknown'], '32': ['Ionospheric E-region level', 'unknown'], '33': ['Ionospheric F1-region level', 'unknown'], '34': ['Ionospheric F1-region level', 'unknown'], '35': ['Ionospheric F2-region level', 'unknown'], '36-99': ['Reserved', 'unknown'], '100': ['Isobaric Surface', 'Pa'], '101': ['Mean Sea Level', 'unknown'], '102': ['Specific Altitude Above Mean Sea Level', 'm'], '103': ['Specified Height Level Above Ground', 'm'], '104': ['Sigma Level', 'unknown'], '105': ['Hybrid Level', 'unknown'], '106': ['Depth Below Land Surface', 'm'], '107': ['Isentropic (theta) Level', 'K'], '108': ['Level at Specified Pressure Difference from Ground to Level', 'Pa'], '109': ['Potential Vorticity Surface', 'K m2 kg-1 s-1'], '110': ['Reserved', 'unknown'], '111': ['Eta Level', 'unknown'], '112': ['Reserved', 'unknown'], '113': ['Logarithmic Hybrid Level', 'unknown'], '114': ['Snow Level', 'Numeric'], '115': ['Sigma height level', 'unknown'], '116': ['Reserved', 'unknown'], '117': ['Mixed Layer Depth', 'm'], '118': ['Hybrid Height Level', 'unknown'], '119': ['Hybrid Pressure Level', 'unknown'], '120-149': ['Reserved', 'unknown'], '150': ['Generalized Vertical Height Coordinate', 'unknown'], '151': ['Soil level', 'Numeric'], '152': ['Sea-ice level,(see Note 8)', 'Numeric'], '153-159': ['Reserved', 'unknown'], '160': ['Depth Below Sea Level', 'm'], '161': ['Depth Below Water Surface', 'm'], '162': ['Lake or River Bottom', 'unknown'], '163': ['Bottom Of Sediment Layer', 'unknown'], '164': ['Bottom Of Thermally Active Sediment Layer', 'unknown'], '165': ['Bottom Of Sediment Layer Penetrated By Thermal Wave', 'unknown'], '166': ['Mixing Layer', 'unknown'], '167': ['Bottom of Root Zone', 'unknown'], '168': ['Ocean Model Level', 'Numeric'], '169': ['Ocean level defined by water density (sigma-theta) difference from near-surface to level', 'kg m-3'], '170': ['Ocean level defined by water potential temperature difference from near-surface to level', 'K'], '171': ['Ocean level defined by vertical eddy diffusivity difference from near-surface to level,(see Note 7)', 'm2 s-1'], '172-173': ['Reserved', 'unknown'], '174': ['Top Surface of Ice on Sea, Lake or River', 'unknown'], '175': ['Top Surface of Ice, under Snow, on Sea, Lake or River', 'unknown'], '176': ['Bottom Surface (underside) Ice on Sea, Lake or River', 'unknown'], '177': ['Deep Soil (of indefinite depth)', 'unknown'], '178': ['Reserved', 'unknown'], '179': ['Top Surface of Glacier Ice and Inland Ice', 'unknown'], '180': ['Deep Inland or Glacier Ice (of indefinite depth)', 'unknown'], '181': ['Grid Tile Land Fraction as a Model Surface', 'unknown'], '182': ['Grid Tile Water Fraction as a Model Surface', 'unknown'], '183': ['Grid Tile Ice Fraction on Sea, Lake or River as a Model Surface', 'unknown'], '184': ['Grid Tile Glacier Ice and Inland Ice Fraction as a Model Surface', 'unknown'], '185-191': ['Reserved', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown'], '200': ['Entire atmosphere (considered as a single layer)', 'unknown'], '201': ['Entire ocean (considered as a single layer)', 'unknown'], '204': ['Highest tropospheric freezing level', 'unknown'], '206': ['Grid scale cloud bottom level', 'unknown'], '207': ['Grid scale cloud top level', 'unknown'], '209': ['Boundary layer cloud bottom level', 'unknown'], '210': ['Boundary layer cloud top level', 'unknown'], '211': ['Boundary layer cloud layer', 'unknown'], '212': ['Low cloud bottom level', 'unknown'], '213': ['Low cloud top level', 'unknown'], '214': ['Low cloud layer', 'unknown'], '215': ['Cloud ceiling', 'unknown'], '216': ['Effective Layer Top Level', 'm'], '217': ['Effective Layer Bottom Level', 'm'], '218': ['Effective Layer', 'm'], '220': ['Planetary Boundary Layer', 'unknown'], '221': ['Layer Between Two Hybrid Levels', 'unknown'], '222': ['Middle cloud bottom level', 'unknown'], '223': ['Middle cloud top level', 'unknown'], '224': ['Middle cloud layer', 'unknown'], '232': ['High cloud bottom level', 'unknown'], '233': ['High cloud top level', 'unknown'], '234': ['High cloud layer', 'unknown'], '235': ['Ocean Isotherm Level (1/10 \u00b0 C)', 'unknown'], '236': ['Layer between two depths below ocean surface', 'unknown'], '237': ['Bottom of Ocean Mixed Layer (m)', 'unknown'], '238': ['Bottom of Ocean Isothermal Layer (m)', 'unknown'], '239': ['Layer Ocean Surface and 26C Ocean Isothermal Level', 'unknown'], '240': ['Ocean Mixed Layer', 'unknown'], '241': ['Ordered Sequence of Data', 'unknown'], '242': ['Convective cloud bottom level', 'unknown'], '243': ['Convective cloud top level', 'unknown'], '244': ['Convective cloud layer', 'unknown'], '245': ['Lowest level of the wet bulb zero', 'unknown'], '246': ['Maximum equivalent potential temperature level', 'unknown'], '247': ['Equilibrium level', 'unknown'], '248': ['Shallow convective cloud bottom level', 'unknown'], '249': ['Shallow convective cloud top level', 'unknown'], '251': ['Deep convective cloud bottom level', 'unknown'], '252': ['Deep convective cloud top level', 'unknown'], '253': ['Lowest bottom level of supercooled liquid water layer', 'unknown'], '254': ['Highest top level of supercooled liquid water layer', 'unknown'], '255': ['Missing', 'unknown']}"}, {"fullname": "grib2io.tables.section4.table_4_6", "modulename": "grib2io.tables.section4", "qualname": "table_4_6", "kind": "variable", "doc": "

    \n", "default_value": "{'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-254': 'Reserved for Local Use', '192': 'Perturbed Ensemble Member', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_7", "modulename": "grib2io.tables.section4", "qualname": "table_4_7", "kind": "variable", "doc": "

    \n", "default_value": "{'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', '6': 'Unweighted Mean of the Cluster Members', '7': 'Interquartile Range (Range between the 25th and 75th quantile)', '8': 'Minimum Of All Ensemble Members', '9': 'Maximum Of All Ensemble Members', '10-191': 'Reserved', '192-254': 'Reserved for Local Use', '192': 'Unweighted Mode of All Members', '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'}"}, {"fullname": "grib2io.tables.section4.table_4_8", "modulename": "grib2io.tables.section4", "qualname": "table_4_8", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Anomoly Correlation', '1': 'Root Mean Square', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_9", "modulename": "grib2io.tables.section4", "qualname": "table_4_9", "kind": "variable", "doc": "

    \n", "default_value": "{'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)', '9-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_10", "modulename": "grib2io.tables.section4", "qualname": "table_4_10", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Average', '1': 'Accumulation', '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)', '8': 'Difference ( value at the beginning of the time range minus value at the end)', '9': 'Ratio', '13-191': 'Reserved', '192-254': 'Reserved for Local Use', '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. If 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. If 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.', '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', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_11", "modulename": "grib2io.tables.section4", "qualname": "table_4_11", "kind": "variable", "doc": "

    \n", "default_value": "{'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'}"}, {"fullname": "grib2io.tables.section4.table_4_15", "modulename": "grib2io.tables.section4", "qualname": "table_4_15", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Data is calculated directly from the source grid with no interpolation', '1': 'Bilinear interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', '2': 'Bicubic interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', '3': 'Using the value from the source grid grid-point which is nearest to the nominal grid-point', '4': 'Budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', '5': 'Spectral interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', '6': 'Neighbor-budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', '7-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_91", "modulename": "grib2io.tables.section4", "qualname": "table_4_91", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Smaller than first limit', '1': 'Greater than second limit', '2': 'Between first and second limit. The range includes the first limit but not the second limit.', '3': 'Greater than first limit', '4': 'Smaller than second limit', '5': 'Smaller or equal first limit', '6': 'Greater or equal second limit', '7': 'Between first and second limit. The range includes the first limit and the second limit.', '8': 'Greater or equal first limit', '9': 'Smaller or equal second limit', '10': 'Between first and second limit. The range includes the second limit but not the first limit.', '11': 'Equal to first limit', '12-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_201", "modulename": "grib2io.tables.section4", "qualname": "table_4_201", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'Rain', '2': 'Thunderstorm', '3': 'Freezing Rain', '4': 'Mixed/Ice', '5': 'Snow', '6': 'Wet Snow', '7': 'Mixture of Rain and Snow', '8': 'Ice Pellets', '9': 'Graupel', '10': 'Hail', '11': 'Drizzle', '12': 'Freezing Drizzle', '13-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_202", "modulename": "grib2io.tables.section4", "qualname": "table_4_202", "kind": "variable", "doc": "

    \n", "default_value": "{'0-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_203", "modulename": "grib2io.tables.section4", "qualname": "table_4_203", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Clear', '1': 'Cumulonimbus', '2': 'Stratus', '3': 'Stratocumulus', '4': 'Cumulus', '5': 'Altostratus', '6': 'Nimbostratus', '7': 'Altocumulus', '8': 'Cirrostratus', '9': 'Cirrorcumulus', '10': 'Cirrus', '11': 'Cumulonimbus - ground-based fog beneath the lowest layer', '12': 'Stratus - ground-based fog beneath the lowest layer', '13': 'Stratocumulus - ground-based fog beneath the lowest layer', '14': 'Cumulus - ground-based fog beneath the lowest layer', '15': 'Altostratus - ground-based fog beneath the lowest layer', '16': 'Nimbostratus - ground-based fog beneath the lowest layer', '17': 'Altocumulus - ground-based fog beneath the lowest layer', '18': 'Cirrostratus - ground-based fog beneath the lowest layer', '19': 'Cirrorcumulus - ground-based fog beneath the lowest layer', '20': 'Cirrus - ground-based fog beneath the lowest layer', '21-190': 'Reserved', '191': 'Unknown', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_204", "modulename": "grib2io.tables.section4", "qualname": "table_4_204", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'Isolated (1-2%)', '2': 'Few (3-5%)', '3': 'Scattered (16-45%)', '4': 'Numerous (>45%)', '5-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_205", "modulename": "grib2io.tables.section4", "qualname": "table_4_205", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Aerosol not present', '1': 'Aerosol present', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_206", "modulename": "grib2io.tables.section4", "qualname": "table_4_206", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Not Present', '1': 'Present', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_207", "modulename": "grib2io.tables.section4", "qualname": "table_4_207", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'Light', '2': 'Moderate', '3': 'Severe', '4': 'Trace', '5': 'Heavy', '6-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_208", "modulename": "grib2io.tables.section4", "qualname": "table_4_208", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'Light', '2': 'Moderate', '3': 'Severe', '4': 'Extreme', '5-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_209", "modulename": "grib2io.tables.section4", "qualname": "table_4_209", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'Stable', '2': 'Mechanically-Driven Turbulence', '3': 'Force Convection', '4': 'Free Convection', '5-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_210", "modulename": "grib2io.tables.section4", "qualname": "table_4_210", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Contrail Not Present', '1': 'Contrail Present', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_211", "modulename": "grib2io.tables.section4", "qualname": "table_4_211", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Low Bypass', '1': 'High Bypass', '2': 'Non-Bypass', '3-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_212", "modulename": "grib2io.tables.section4", "qualname": "table_4_212", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'Urban Land', '2': 'Agricultural', '3': 'Range Land', '4': 'Deciduous Forest', '5': 'Coniferous Forest', '6': 'Forest/Wetland', '7': 'Water', '8': 'Wetlands', '9': 'Desert', '10': 'Tundra', '11': 'Ice', '12': 'Tropical Forest', '13': 'Savannah', '14-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_213", "modulename": "grib2io.tables.section4", "qualname": "table_4_213", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'Sand', '2': 'Loamy Sand', '3': 'Sandy Loam', '4': 'Silt Loam', '5': 'Organic', '6': 'Sandy Clay Loam', '7': 'Silt Clay Loam', '8': 'Clay Loam', '9': 'Sandy Clay', '10': 'Silty Clay', '11': 'Clay', '12-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_215", "modulename": "grib2io.tables.section4", "qualname": "table_4_215", "kind": "variable", "doc": "

    \n", "default_value": "{'0-49': 'Reserved', '50': 'No-Snow/No-Cloud', '51-99': 'Reserved', '100': 'Clouds', '101-249': 'Reserved', '250': 'Snow', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_216", "modulename": "grib2io.tables.section4", "qualname": "table_4_216", "kind": "variable", "doc": "

    \n", "default_value": "{'0-90': 'Elevation in increments of 100 m', '91-253': 'Reserved', '254': 'Clouds', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_217", "modulename": "grib2io.tables.section4", "qualname": "table_4_217", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Clear over water', '1': 'Clear over land', '2': 'Cloud', '3': 'No data', '4-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_218", "modulename": "grib2io.tables.section4", "qualname": "table_4_218", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No Scene Identified', '1': 'Green Needle-Leafed Forest', '2': 'Green Broad-Leafed Forest', '3': 'Deciduous Needle-Leafed Forest', '4': 'Deciduous Broad-Leafed Forest', '5': 'Deciduous Mixed Forest', '6': 'Closed Shrub-Land', '7': 'Open Shrub-Land', '8': 'Woody Savannah', '9': 'Savannah', '10': 'Grassland', '11': 'Permanent Wetland', '12': 'Cropland', '13': 'Urban', '14': 'Vegetation / Crops', '15': 'Permanent Snow / Ice', '16': 'Barren Desert', '17': 'Water Bodies', '18': 'Tundra', '19': 'Warm Liquid Water Cloud', '20': 'Supercooled Liquid Water Cloud', '21': 'Mixed Phase Cloud', '22': 'Optically Thin Ice Cloud', '23': 'Optically Thick Ice Cloud', '24': 'Multi-Layeblack Cloud', '25-96': 'Reserved', '97': 'Snow / Ice on Land', '98': 'Snow / Ice on Water', '99': 'Sun-Glint', '100': 'General Cloud', '101': 'Low Cloud / Fog / Stratus', '102': 'Low Cloud / Stratocumulus', '103': 'Low Cloud / Unknown Type', '104': 'Medium Cloud / Nimbostratus', '105': 'Medium Cloud / Altostratus', '106': 'Medium Cloud / Unknown Type', '107': 'High Cloud / Cumulus', '108': 'High Cloud / Cirrus', '109': 'High Cloud / Unknown Type', '110': 'Unknown Cloud Type', '111': 'Single layer water cloud', '112': 'Single layer ice cloud', '113-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_222", "modulename": "grib2io.tables.section4", "qualname": "table_4_222", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No', '1': 'Yes', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_223", "modulename": "grib2io.tables.section4", "qualname": "table_4_223", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No Fire Detected', '1': 'Possible Fire Detected', '2': 'Probable Fire Detected', '3': 'Missing', '4-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_224", "modulename": "grib2io.tables.section4", "qualname": "table_4_224", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No Risk Area', '1': 'Reserved', '2': 'General Thunderstorm Risk Area', '3': 'Reserved', '4': 'Slight Risk Area', '5': 'Reserved', '6': 'Moderate Risk Area', '7': 'Reserved', '8': 'High Risk Area', '9-10': 'Reserved', '11': 'Dry Thunderstorm (Dry Lightning) Risk Area', '12-13': 'Reserved', '14': 'Critical Risk Area', '15-17': 'Reserved', '18': 'Extreamly Critical Risk Area', '19-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_227", "modulename": "grib2io.tables.section4", "qualname": "table_4_227", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'General', '2': 'Convective', '3': 'Stratiform', '4': 'Freezing', '5-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_228", "modulename": "grib2io.tables.section4", "qualname": "table_4_228", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'Trace', '2': 'Light', '3': 'Moderate', '4': 'Severe', '6-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_233", "modulename": "grib2io.tables.section4", "qualname": "table_4_233", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Ozone', 'O3'], '1': ['Water Vapour', 'H2O'], '2': ['Methane', 'CH4'], '3': ['Carbon Dioxide', 'CO2'], '4': ['Carbon Monoxide', 'CO'], '5': ['Nitrogen Dioxide', 'NO2'], '6': ['Nitrous Oxide', 'N2O'], '7': ['Formaldehyde', 'HCHO'], '8': ['Sulphur Dioxide', 'SO2'], '9': ['Ammonia', 'NH3'], '10': ['Ammonium', 'NH4+'], '11': ['Nitrogen Monoxide', 'NO'], '12': ['Atomic Oxygen', 'O'], '13': ['Nitrate Radical', 'NO3'], '14': ['Hydroperoxyl Radical', 'HO2'], '15': ['Dinitrogen Pentoxide', 'H2O5'], '16': ['Nitrous Acid', 'HONO'], '17': ['Nitric Acid', 'HNO3'], '18': ['Peroxynitric Acid', 'HO2NO2'], '19': ['Hydrogen Peroxide', 'H2O2'], '20': ['Molecular Hydrogen', 'H'], '21': ['Atomic Nitrogen', 'N'], '22': ['Sulphate', 'SO42-'], '23': ['Radon', 'Rn'], '24': ['Elemental Mercury', 'Hg(O)'], '25': ['Divalent Mercury', 'Hg2+'], '26': ['Atomic Chlorine', 'Cl'], '27': ['Chlorine Monoxide', 'ClO'], '28': ['Dichlorine Peroxide', 'Cl2O2'], '29': ['Hypochlorous Acid', 'HClO'], '30': ['Chlorine Nitrate', 'ClONO2'], '31': ['Chlorine Dioxide', 'ClO2'], '32': ['Atomic Bromide', 'Br'], '33': ['Bromine Monoxide', 'BrO'], '34': ['Bromine Chloride', 'BrCl'], '35': ['Hydrogen Bromide', 'HBr'], '36': ['Hypobromous Acid', 'HBrO'], '37': ['Bromine Nitrate', 'BrONO2'], '38': ['Oxygen', 'O2'], '39-9999': ['Reserved', 'unknown'], '10000': ['Hydroxyl Radical', 'OH'], '10001': ['Methyl Peroxy Radical', 'CH3O2'], '10002': ['Methyl Hydroperoxide', 'CH3O2H'], '10003': ['Reserved', 'unknown'], '10004': ['Methanol', 'CH3OH'], '10005': ['Formic Acid', 'CH3OOH'], '10006': ['Hydrogen Cyanide', 'HCN'], '10007': ['Aceto Nitrile', 'CH3CN'], '10008': ['Ethane', 'C2H6'], '10009': ['Ethene (= Ethylene)', 'C2H4'], '10010': ['Ethyne (= Acetylene)', 'C2H2'], '10011': ['Ethanol', 'C2H5OH'], '10012': ['Acetic Acid', 'C2H5OOH'], '10013': ['Peroxyacetyl Nitrate', 'CH3C(O)OONO2'], '10014': ['Propane', 'C3H8'], '10015': ['Propene', 'C3H6'], '10016': ['Butanes', 'C4H10'], '10017': ['Isoprene', 'C5H10'], '10018': ['Alpha Pinene', 'C10H16'], '10019': ['Beta Pinene', 'C10H16'], '10020': ['Limonene', 'C10H16'], '10021': ['Benzene', 'C6H6'], '10022': ['Toluene', 'C7H8'], '10023': ['Xylene', 'C8H10'], '10024-10499': ['Reserved', 'unknown'], '10500': ['Dimethyl Sulphide', 'CH3SCH3'], '10501-20000': ['Reserved', 'unknown'], '20001': ['Hydrogen Chloride', 'HCL'], '20002': ['CFC-11', 'unknown'], '20003': ['CFC-12', 'unknown'], '20004': ['CFC-113', 'unknown'], '20005': ['CFC-113a', 'unknown'], '20006': ['CFC-114', 'unknown'], '20007': ['CFC-115', 'unknown'], '20008': ['HCFC-22', 'unknown'], '20009': ['HCFC-141b', 'unknown'], '20010': ['HCFC-142b', 'unknown'], '20011': ['Halon-1202', 'unknown'], '20012': ['Halon-1211', 'unknown'], '20013': ['Halon-1301', 'unknown'], '20014': ['Halon-2402', 'unknown'], '20015': ['Methyl Chloride (HCC-40)', 'unknown'], '20016': ['Carbon Tetrachloride (HCC-10)', 'unknown'], '20017': ['HCC-140a', 'CH3CCl3'], '20018': ['Methyl Bromide (HBC-40B1)', 'unknown'], '20019': ['Hexachlorocyclohexane (HCH)', 'unknown'], '20020': ['Alpha Hexachlorocyclohexane', 'unknown'], '20021': ['Hexachlorobiphenyl (PCB-153)', 'unknown'], '20022-29999': ['Reserved', 'unknown'], '30000': ['Radioactive Pollutant (Tracer, defined by originating centre)', 'unknown'], '30001-50000': ['Reserved', 'unknown'], '60000': ['HOx Radical (OH+HO2)', 'unknown'], '60001': ['Total Inorganic and Organic Peroxy Radicals (HO2+RO2)', 'RO2'], '60002': ['Passive Ozone', 'unknown'], '60003': ['NOx Expressed As Nitrogen', 'NOx'], '60004': ['All Nitrogen Oxides (NOy) Expressed As Nitrogen', 'NOy'], '60005': ['Total Inorganic Chlorine', 'Clx'], '60006': ['Total Inorganic Bromine', 'Brx'], '60007': ['Total Inorganic Chlorine Except HCl, ClONO2: ClOx', 'unknown'], '60008': ['Total Inorganic Bromine Except Hbr, BrONO2:BrOx', 'unknown'], '60009': ['Lumped Alkanes', 'unknown'], '60010': ['Lumped Alkenes', 'unknown'], '60011': ['Lumped Aromatic Coumpounds', 'unknown'], '60012': ['Lumped Terpenes', 'unknown'], '60013': ['Non-Methane Volatile Organic Compounds Expressed as Carbon', 'NMVOC'], '60014': ['Anthropogenic Non-Methane Volatile Organic Compounds Expressed as Carbon', 'aNMVOC'], '60015': ['Biogenic Non-Methane Volatile Organic Compounds Expressed as Carbon', 'bNMVOC'], '60016': ['Lumped Oxygenated Hydrocarbons', 'OVOC'], '60017-61999': ['Reserved', 'unknown'], '62000': ['Total Aerosol', 'unknown'], '62001': ['Dust Dry', 'unknown'], '62002': ['water In Ambient', 'unknown'], '62003': ['Ammonium Dry', 'unknown'], '62004': ['Nitrate Dry', 'unknown'], '62005': ['Nitric Acid Trihydrate', 'unknown'], '62006': ['Sulphate Dry', 'unknown'], '62007': ['Mercury Dry', 'unknown'], '62008': ['Sea Salt Dry', 'unknown'], '62009': ['Black Carbon Dry', 'unknown'], '62010': ['Particulate Organic Matter Dry', 'unknown'], '62011': ['Primary Particulate Organic Matter Dry', 'unknown'], '62012': ['Secondary Particulate Organic Matter Dry', 'unknown'], '62013': ['Black carbon hydrophilic dry', 'unknown'], '62014': ['Black carbon hydrophobic dry', 'unknown'], '62015': ['Particulate organic matter hydrophilic dry', 'unknown'], '62016': ['Particulate organic matter hydrophobic dry', 'unknown'], '62017': ['Nitrate hydrophilic dry', 'unknown'], '62018': ['Nitrate hydrophobic dry', 'unknown'], '62019': ['Reserved', 'unknown'], '62020': ['Smoke - high absorption', 'unknown'], '62021': ['Smoke - low absorption', 'unknown'], '62022': ['Aerosol - high absorption', 'unknown'], '62023': ['Aerosol - low absorption', 'unknown'], '62024': ['Reserved', 'unknown'], '62025': ['Volcanic ash', 'unknown'], '62036': ['Brown Carbon Dry', 'unknown'], '62037-65534': ['Reserved', 'unknown'], '65535': ['Missing', 'unknown']}"}, {"fullname": "grib2io.tables.section4.table_4_243", "modulename": "grib2io.tables.section4", "qualname": "table_4_243", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'Evergreen broadleaved forest', '2': 'Deciduous broadleaved closed forest', '3': 'Deciduous broadleaved open forest', '4': 'Evergreen needle-leaf forest', '5': 'Deciduous needle-leaf forest', '6': 'Mixed leaf trees', '7': 'Fresh water flooded trees', '8': 'Saline water flooded trees', '9': 'Mosaic tree/natural vegetation', '10': 'Burnt tree cover', '11': 'Evergreen shurbs closed-open', '12': 'Deciduous shurbs closed-open', '13': 'Herbaceous vegetation closed-open', '14': 'Sparse herbaceous or grass', '15': 'Flooded shurbs or herbaceous', '16': 'Cultivated and managed areas', '17': 'Mosaic crop/tree/natural vegetation', '18': 'Mosaic crop/shrub/grass', '19': 'Bare areas', '20': 'Water', '21': 'Snow and ice', '22': 'Artificial surface', '23': 'Ocean', '24': 'Irrigated croplands', '25': 'Rain fed croplands', '26': 'Mosaic cropland (50-70%)-vegetation (20-50%)', '27': 'Mosaic vegetation (50-70%)-cropland (20-50%)', '28': 'Closed broadleaved evergreen forest', '29': 'Closed needle-leaved evergreen forest', '30': 'Open needle-leaved deciduous forest', '31': 'Mixed broadleaved and needle-leave forest', '32': 'Mosaic shrubland (50-70%)-grassland (20-50%)', '33': 'Mosaic grassland (50-70%)-shrubland (20-50%)', '34': 'Closed to open shrubland', '35': 'Sparse vegetation', '36': 'Closed to open forest regularly flooded', '37': 'Closed forest or shrubland permanently flooded', '38': 'Closed to open grassland regularly flooded', '39': 'Undefined', '40-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_246", "modulename": "grib2io.tables.section4", "qualname": "table_4_246", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No thunderstorm occurrence', '1': 'Weak thunderstorm', '2': 'Moderate thunderstorm', '3': 'Severe thunderstorm', '4-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_247", "modulename": "grib2io.tables.section4", "qualname": "table_4_247", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No precipitation occurrence', '1': 'Light precipitation', '2': 'Moderate precipitation', '3': 'Heavy precipitation', '4-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_248", "modulename": "grib2io.tables.section4", "qualname": "table_4_248", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Nearest forecast or analysis time to specified local time', '1': 'Interpolated to be valid at the specified local time', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_249", "modulename": "grib2io.tables.section4", "qualname": "table_4_249", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'Showers', '2': 'Intermittent', '3': 'Continuous', '4-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_250", "modulename": "grib2io.tables.section4", "qualname": "table_4_250", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'South-West', '2': 'South', '3': 'South-East', '4': 'West', '5': 'No direction', '6': 'East', '7': 'North-West', '8': 'North', '9': 'North-East', '10-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_scale_time_hours", "modulename": "grib2io.tables.section4", "qualname": "table_scale_time_hours", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 60.0, '1': 1.0, '2': 0.041666666666666664, '3': 0.001388888888888889, '4': 0.00011415525114155251, '5': 1.1415525114155251e-05, '6': 3.80517503805175e-06, '7': 1.1415525114155251e-06, '8': 1.0, '9': 1.0, '10': 3.0, '11': 6.0, '12': 12.0, '13': 3600.0, '14-255': 1.0}"}, {"fullname": "grib2io.tables.section4.table_wgrib2_level_string", "modulename": "grib2io.tables.section4", "qualname": "table_wgrib2_level_string", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['reserved', 'reserved'], '1': ['surface', 'reserved'], '2': ['cloud base', 'reserved'], '3': ['cloud top', 'reserved'], '4': ['0C isotherm', 'reserved'], '5': ['level of adiabatic condensation from sfc', 'reserved'], '6': ['max wind', 'reserved'], '7': ['tropopause', 'reserved'], '8': ['top of atmosphere', 'reserved'], '9': ['sea bottom', 'reserved'], '10': ['entire atmosphere', 'reserved'], '11': ['cumulonimbus base', 'reserved'], '12': ['cumulonimbus top', 'reserved'], '13': ['lowest level %g%% integrated cloud cover', 'reserved'], '14': ['level of free convection', 'reserved'], '15': ['convection condensation level', 'reserved'], '16': ['level of neutral buoyancy', 'reserved'], '17': ['reserved', 'reserved'], '18': ['reserved', 'reserved'], '19': ['reserved', 'reserved'], '20': ['%g K level', 'reserved'], '21': ['lowest level > %g kg/m^3', 'reserved'], '22': ['highest level > %g kg/m^3', 'reserved'], '23': ['lowest level > %g Bq/m^3', 'reserved'], '24': ['highest level > %g Bg/m^3', 'reserved'], '25': ['reserved', 'reserved'], '26': ['reserved', 'reserved'], '27': ['reserved', 'reserved'], '28': ['reserved', 'reserved'], '29': ['reserved', 'reserved'], '30': ['reserved', 'reserved'], '31': ['reserved', 'reserved'], '32': ['reserved', 'reserved'], '33': ['reserved', 'reserved'], '34': ['reserved', 'reserved'], '35': ['reserved', 'reserved'], '36': ['reserved', 'reserved'], '37': ['reserved', 'reserved'], '38': ['reserved', 'reserved'], '39': ['reserved', 'reserved'], '40': ['reserved', 'reserved'], '41': ['reserved', 'reserved'], '42': ['reserved', 'reserved'], '43': ['reserved', 'reserved'], '44': ['reserved', 'reserved'], '45': ['reserved', 'reserved'], '46': ['reserved', 'reserved'], '47': ['reserved', 'reserved'], '48': ['reserved', 'reserved'], '49': ['reserved', 'reserved'], '50': ['reserved', 'reserved'], '51': ['reserved', 'reserved'], '52': ['reserved', 'reserved'], '53': ['reserved', 'reserved'], '54': ['reserved', 'reserved'], '55': ['reserved', 'reserved'], '56': ['reserved', 'reserved'], '57': ['reserved', 'reserved'], '58': ['reserved', 'reserved'], '59': ['reserved', 'reserved'], '60': ['reserved', 'reserved'], '61': ['reserved', 'reserved'], '62': ['reserved', 'reserved'], '63': ['reserved', 'reserved'], '64': ['reserved', 'reserved'], '65': ['reserved', 'reserved'], '66': ['reserved', 'reserved'], '67': ['reserved', 'reserved'], '68': ['reserved', 'reserved'], '69': ['reserved', 'reserved'], '70': ['reserved', 'reserved'], '71': ['reserved', 'reserved'], '72': ['reserved', 'reserved'], '73': ['reserved', 'reserved'], '74': ['reserved', 'reserved'], '75': ['reserved', 'reserved'], '76': ['reserved', 'reserved'], '77': ['reserved', 'reserved'], '78': ['reserved', 'reserved'], '79': ['reserved', 'reserved'], '80': ['reserved', 'reserved'], '81': ['reserved', 'reserved'], '82': ['reserved', 'reserved'], '83': ['reserved', 'reserved'], '84': ['reserved', 'reserved'], '85': ['reserved', 'reserved'], '86': ['reserved', 'reserved'], '87': ['reserved', 'reserved'], '88': ['reserved', 'reserved'], '89': ['reserved', 'reserved'], '90': ['reserved', 'reserved'], '91': ['reserved', 'reserved'], '92': ['reserved', 'reserved'], '93': ['reserved', 'reserved'], '94': ['reserved', 'reserved'], '95': ['reserved', 'reserved'], '96': ['reserved', 'reserved'], '97': ['reserved', 'reserved'], '98': ['reserved', 'reserved'], '99': ['reserved', 'reserved'], '100': ['%g mb', '%g-%g mb'], '101': ['mean sea level', 'reserved'], '102': ['%g m above mean sea level', '%g-%g m above mean sea level'], '103': ['%g m above ground', '%g-%g m above ground'], '104': ['%g sigma level', '%g-%g sigma layer'], '105': ['%g hybrid level', '%g-%g hybrid layer'], '106': ['%g m underground', '%g-%g m underground'], '107': ['%g K isentropic level', '%g-%g K isentropic layer'], '108': ['%g mb above ground', '%g-%g mb above ground'], '109': ['PV=%g (Km^2/kg/s) surface', 'reserved'], '110': ['reserved', 'reserved'], '111': ['%g Eta level', '%g-%g Eta layer'], '112': ['reserved', 'reserved'], '113': ['%g logarithmic hybrid level', 'reserved'], '114': ['snow level', 'reserved'], '115': ['%g sigma height level', '%g-%g sigma heigh layer'], '116': ['reserved', 'reserved'], '117': ['mixed layer depth', 'reserved'], '118': ['%g hybrid height level', '%g-%g hybrid height layer'], '119': ['%g hybrid pressure level', '%g-%g hybrid pressure layer'], '120': ['reserved', 'reserved'], '121': ['reserved', 'reserved'], '122': ['reserved', 'reserved'], '123': ['reserved', 'reserved'], '124': ['reserved', 'reserved'], '125': ['reserved', 'reserved'], '126': ['reserved', 'reserved'], '127': ['reserved', 'reserved'], '128': ['reserved', 'reserved'], '129': ['reserved', 'reserved'], '130': ['reserved', 'reserved'], '131': ['reserved', 'reserved'], '132': ['reserved', 'reserved'], '133': ['reserved', 'reserved'], '134': ['reserved', 'reserved'], '135': ['reserved', 'reserved'], '136': ['reserved', 'reserved'], '137': ['reserved', 'reserved'], '138': ['reserved', 'reserved'], '139': ['reserved', 'reserved'], '140': ['reserved', 'reserved'], '141': ['reserved', 'reserved'], '142': ['reserved', 'reserved'], '143': ['reserved', 'reserved'], '144': ['reserved', 'reserved'], '145': ['reserved', 'reserved'], '146': ['reserved', 'reserved'], '147': ['reserved', 'reserved'], '148': ['reserved', 'reserved'], '149': ['reserved', 'reserved'], '150': ['%g generalized vertical height coordinate', 'reserved'], '151': ['soil level %g', 'reserved'], '152': ['reserved', 'reserved'], '153': ['reserved', 'reserved'], '154': ['reserved', 'reserved'], '155': ['reserved', 'reserved'], '156': ['reserved', 'reserved'], '157': ['reserved', 'reserved'], '158': ['reserved', 'reserved'], '159': ['reserved', 'reserved'], '160': ['%g m below sea level', '%g-%g m below sea level'], '161': ['%g m below water surface', '%g-%g m ocean layer'], '162': ['lake or river bottom', 'reserved'], '163': ['bottom of sediment layer', 'reserved'], '164': ['bottom of thermally active sediment layer', 'reserved'], '165': ['bottom of sediment layer penetrated by thermal wave', 'reserved'], '166': ['maxing layer', 'reserved'], '167': ['bottom of root zone', 'reserved'], '168': ['reserved', 'reserved'], '169': ['reserved', 'reserved'], '170': ['reserved', 'reserved'], '171': ['reserved', 'reserved'], '172': ['reserved', 'reserved'], '173': ['reserved', 'reserved'], '174': ['top surface of ice on sea, lake or river', 'reserved'], '175': ['top surface of ice, und snow on sea, lake or river', 'reserved'], '176': ['bottom surface ice on sea, lake or river', 'reserved'], '177': ['deep soil', 'reserved'], '178': ['reserved', 'reserved'], '179': ['top surface of glacier ice and inland ice', 'reserved'], '180': ['deep inland or glacier ice', 'reserved'], '181': ['grid tile land fraction as a model surface', 'reserved'], '182': ['grid tile water fraction as a model surface', 'reserved'], '183': ['grid tile ice fraction on sea, lake or river as a model surface', 'reserved'], '184': ['grid tile glacier ice and inland ice fraction as a model surface', 'reserved'], '185': ['reserved', 'reserved'], '186': ['reserved', 'reserved'], '187': ['reserved', 'reserved'], '188': ['reserved', 'reserved'], '189': ['reserved', 'reserved'], '190': ['reserved', 'reserved'], '191': ['reserved', 'reserved'], '192': ['reserved', 'reserved'], '193': ['reserved', 'reserved'], '194': ['reserved', 'reserved'], '195': ['reserved', 'reserved'], '196': ['reserved', 'reserved'], '197': ['reserved', 'reserved'], '198': ['reserved', 'reserved'], '199': ['reserved', 'reserved'], '200': ['entire atmosphere (considered as a single layer)', 'reserved'], '201': ['entire ocean (considered as a single layer)', 'reserved'], '202': ['reserved', 'reserved'], '203': ['reserved', 'reserved'], '204': ['highest tropospheric freezing level', 'reserved'], '205': ['reserved', 'reserved'], '206': ['grid scale cloud bottom level', 'reserved'], '207': ['grid scale cloud top level', 'reserved'], '208': ['reserved', 'reserved'], '209': ['boundary layer cloud bottom level', 'reserved'], '210': ['boundary layer cloud top level', 'reserved'], '211': ['boundary layer cloud layer', 'reserved'], '212': ['low cloud bottom level', 'reserved'], '213': ['low cloud top level', 'reserved'], '214': ['low cloud layer', 'reserved'], '215': ['cloud ceiling', 'reserved'], '216': ['reserved', 'reserved'], '217': ['reserved', 'reserved'], '218': ['reserved', 'reserved'], '219': ['reserved', 'reserved'], '220': ['planetary boundary layer', 'reserved'], '221': ['layer between two hybrid levels', 'reserved'], '222': ['middle cloud bottom level', 'reserved'], '223': ['middle cloud top level', 'reserved'], '224': ['middle cloud layer', 'reserved'], '225': ['reserved', 'reserved'], '226': ['reserved', 'reserved'], '227': ['reserved', 'reserved'], '228': ['reserved', 'reserved'], '229': ['reserved', 'reserved'], '230': ['reserved', 'reserved'], '231': ['reserved', 'reserved'], '232': ['high cloud bottom level', 'reserved'], '233': ['high cloud top level', 'reserved'], '234': ['high cloud layer', 'reserved'], '235': ['%gC ocean isotherm', '%g-%gC ocean isotherm layer'], '236': ['layer between two depths below ocean surface', '%g-%g m ocean layer'], '237': ['bottom of ocean mixed layer', 'reserved'], '238': ['bottom of ocean isothermal layer', 'reserved'], '239': ['layer ocean surface and 26C ocean isothermal level', 'reserved'], '240': ['ocean mixed layer', 'reserved'], '241': ['%g in sequence', 'reserved'], '242': ['convective cloud bottom level', 'reserved'], '243': ['convective cloud top level', 'reserved'], '244': ['convective cloud layer', 'reserved'], '245': ['lowest level of the wet bulb zero', 'reserved'], '246': ['maximum equivalent potential temperature level', 'reserved'], '247': ['equilibrium level', 'reserved'], '248': ['shallow convective cloud bottom level', 'reserved'], '249': ['shallow convective cloud top level', 'reserved'], '250': ['reserved', 'reserved'], '251': ['deep convective cloud bottom level', 'reserved'], '252': ['deep convective cloud top level', 'reserved'], '253': ['lowest bottom level of supercooled liquid water layer', 'reserved'], '254': ['highest top level of supercooled liquid water layer', 'reserved'], '255': ['missing', 'reserved']}"}, {"fullname": "grib2io.tables.section4_discipline0", "modulename": "grib2io.tables.section4_discipline0", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_0", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Temperature', 'K', 'TMP'], '1': ['Virtual Temperature', 'K', 'VTMP'], '2': ['Potential Temperature', 'K', 'POT'], '3': ['Pseudo-Adiabatic Potential Temperature (or Equivalent Potential Temperature)', 'K', 'EPOT'], '4': ['Maximum Temperature', 'K', 'TMAX'], '5': ['Minimum Temperature', 'K', 'TMIN'], '6': ['Dew Point Temperature', 'K', 'DPT'], '7': ['Dew Point Depression (or Deficit)', 'K', 'DEPR'], '8': ['Lapse Rate', 'K m-1', 'LAPR'], '9': ['Temperature Anomaly', 'K', 'TMPA'], '10': ['Latent Heat Net Flux', 'W m-2', 'LHTFL'], '11': ['Sensible Heat Net Flux', 'W m-2', 'SHTFL'], '12': ['Heat Index', 'K', 'HEATX'], '13': ['Wind Chill Factor', 'K', 'WCF'], '14': ['Minimum Dew Point Depression', 'K', 'MINDPD'], '15': ['Virtual Potential Temperature', 'K', 'VPTMP'], '16': ['Snow Phase Change Heat Flux', 'W m-2', 'SNOHF'], '17': ['Skin Temperature', 'K', 'SKINT'], '18': ['Snow Temperature (top of snow)', 'K', 'SNOT'], '19': ['Turbulent Transfer Coefficient for Heat', 'Numeric', 'TTCHT'], '20': ['Turbulent Diffusion Coefficient for Heat', 'm2s-1', 'TDCHT'], '21': ['Apparent Temperature', 'K', 'APTMP'], '22': ['Temperature Tendency due to Short-Wave Radiation', 'K s-1', 'TTSWR'], '23': ['Temperature Tendency due to Long-Wave Radiation', 'K s-1', 'TTLWR'], '24': ['Temperature Tendency due to Short-Wave Radiation, Clear Sky', 'K s-1', 'TTSWRCS'], '25': ['Temperature Tendency due to Long-Wave Radiation, Clear Sky', 'K s-1', 'TTLWRCS'], '26': ['Temperature Tendency due to parameterizations', 'K s-1', 'TTPARM'], '27': ['Wet Bulb Temperature', 'K', 'WETBT'], '28': ['Unbalanced Component of Temperature', 'K', 'UCTMP'], '29': ['Temperature Advection', 'K s-1', 'TMPADV'], '30': ['Latent Heat Net Flux Due to Evaporation', 'W m-2', 'LHFLXE'], '31': ['Latent Heat Net Flux Due to Sublimation', 'W m-2', 'LHFLXS'], '32': ['Wet-Bulb Potential Temperature', 'K', 'WETBPT'], '33-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Snow Phase Change Heat Flux', 'W m-2', 'SNOHF'], '193': ['Temperature Tendency by All Radiation', 'K s-1', 'TTRAD'], '194': ['Relative Error Variance', 'unknown', 'REV'], '195': ['Large Scale Condensate Heating Rate', 'K s-1', 'LRGHR'], '196': ['Deep Convective Heating Rate', 'K s-1', 'CNVHR'], '197': ['Total Downward Heat Flux at Surface', 'W m-2', 'THFLX'], '198': ['Temperature Tendency by All Physics', 'K s-1', 'TTDIA'], '199': ['Temperature Tendency by Non-radiation Physics', 'K s-1', 'TTPHY'], '200': ['Standard Dev. of IR Temp. over 1x1 deg. area', 'K', 'TSD1D'], '201': ['Shallow Convective Heating Rate', 'K s-1', 'SHAHR'], '202': ['Vertical Diffusion Heating rate', 'K s-1', 'VDFHR'], '203': ['Potential Temperature at Top of Viscous Sublayer', 'K', 'THZ0'], '204': ['Tropical Cyclone Heat Potential', 'Jm-2K', 'TCHP'], '205': ['Effective Layer (EL) Temperature', 'C', 'ELMELT'], '206': ['Wet Bulb Globe Temperature', 'K', 'WETGLBT'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_1", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Specific Humidity', 'kg kg-1', 'SPFH'], '1': ['Relative Humidity', '%', 'RH'], '2': ['Humidity Mixing Ratio', 'kg kg-1', 'MIXR'], '3': ['Precipitable Water', 'kg m-2', 'PWAT'], '4': ['Vapour Pressure', 'Pa', 'VAPP'], '5': ['Saturation Deficit', 'Pa', 'SATD'], '6': ['Evaporation', 'kg m-2', 'EVP'], '7': ['Precipitation Rate', 'kg m-2 s-1', 'PRATE'], '8': ['Total Precipitation', 'kg m-2', 'APCP'], '9': ['Large-Scale Precipitation (non-convective)', 'kg m-2', 'NCPCP'], '10': ['Convective Precipitation', 'kg m-2', 'ACPCP'], '11': ['Snow Depth', 'm', 'SNOD'], '12': ['Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'SRWEQ'], '13': ['Water Equivalent of Accumulated Snow Depth', 'kg m-2', 'WEASD'], '14': ['Convective Snow', 'kg m-2', 'SNOC'], '15': ['Large-Scale Snow', 'kg m-2', 'SNOL'], '16': ['Snow Melt', 'kg m-2', 'SNOM'], '17': ['Snow Age', 'day', 'SNOAG'], '18': ['Absolute Humidity', 'kg m-3', 'ABSH'], '19': ['Precipitation Type', 'See Table 4.201', 'PTYPE'], '20': ['Integrated Liquid Water', 'kg m-2', 'ILIQW'], '21': ['Condensate', 'kg kg-1', 'TCOND'], '22': ['Cloud Mixing Ratio', 'kg kg-1', 'CLMR'], '23': ['Ice Water Mixing Ratio', 'kg kg-1', 'ICMR'], '24': ['Rain Mixing Ratio', 'kg kg-1', 'RWMR'], '25': ['Snow Mixing Ratio', 'kg kg-1', 'SNMR'], '26': ['Horizontal Moisture Convergence', 'kg kg-1 s-1', 'MCONV'], '27': ['Maximum Relative Humidity', '%', 'MAXRH'], '28': ['Maximum Absolute Humidity', 'kg m-3', 'MAXAH'], '29': ['Total Snowfall', 'm', 'ASNOW'], '30': ['Precipitable Water Category', 'See Table 4.202', 'PWCAT'], '31': ['Hail', 'm', 'HAIL'], '32': ['Graupel', 'kg kg-1', 'GRLE'], '33': ['Categorical Rain', 'Code table 4.222', 'CRAIN'], '34': ['Categorical Freezing Rain', 'Code table 4.222', 'CFRZR'], '35': ['Categorical Ice Pellets', 'Code table 4.222', 'CICEP'], '36': ['Categorical Snow', 'Code table 4.222', 'CSNOW'], '37': ['Convective Precipitation Rate', 'kg m-2 s-1', 'CPRAT'], '38': ['Horizontal Moisture Divergence', 'kg kg-1 s-1', 'MDIVER'], '39': ['Percent frozen precipitation', '%', 'CPOFP'], '40': ['Potential Evaporation', 'kg m-2', 'PEVAP'], '41': ['Potential Evaporation Rate', 'W m-2', 'PEVPR'], '42': ['Snow Cover', '%', 'SNOWC'], '43': ['Rain Fraction of Total Cloud Water', 'Proportion', 'FRAIN'], '44': ['Rime Factor', 'Numeric', 'RIME'], '45': ['Total Column Integrated Rain', 'kg m-2', 'TCOLR'], '46': ['Total Column Integrated Snow', 'kg m-2', 'TCOLS'], '47': ['Large Scale Water Precipitation (Non-Convective)', 'kg m-2', 'LSWP'], '48': ['Convective Water Precipitation', 'kg m-2', 'CWP'], '49': ['Total Water Precipitation', 'kg m-2', 'TWATP'], '50': ['Total Snow Precipitation', 'kg m-2', 'TSNOWP'], '51': ['Total Column Water (Vertically integrated total water (vapour+cloud water/ice)', 'kg m-2', 'TCWAT'], '52': ['Total Precipitation Rate', 'kg m-2 s-1', 'TPRATE'], '53': ['Total Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'TSRWE'], '54': ['Large Scale Precipitation Rate', 'kg m-2 s-1', 'LSPRATE'], '55': ['Convective Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'CSRWE'], '56': ['Large Scale Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'LSSRWE'], '57': ['Total Snowfall Rate', 'm s-1', 'TSRATE'], '58': ['Convective Snowfall Rate', 'm s-1', 'CSRATE'], '59': ['Large Scale Snowfall Rate', 'm s-1', 'LSSRATE'], '60': ['Snow Depth Water Equivalent', 'kg m-2', 'SDWE'], '61': ['Snow Density', 'kg m-3', 'SDEN'], '62': ['Snow Evaporation', 'kg m-2', 'SEVAP'], '63': ['Reserved', 'unknown', 'unknown'], '64': ['Total Column Integrated Water Vapour', 'kg m-2', 'TCIWV'], '65': ['Rain Precipitation Rate', 'kg m-2 s-1', 'RPRATE'], '66': ['Snow Precipitation Rate', 'kg m-2 s-1', 'SPRATE'], '67': ['Freezing Rain Precipitation Rate', 'kg m-2 s-1', 'FPRATE'], '68': ['Ice Pellets Precipitation Rate', 'kg m-2 s-1', 'IPRATE'], '69': ['Total Column Integrate Cloud Water', 'kg m-2', 'TCOLW'], '70': ['Total Column Integrate Cloud Ice', 'kg m-2', 'TCOLI'], '71': ['Hail Mixing Ratio', 'kg kg-1', 'HAILMXR'], '72': ['Total Column Integrate Hail', 'kg m-2', 'TCOLH'], '73': ['Hail Prepitation Rate', 'kg m-2 s-1', 'HAILPR'], '74': ['Total Column Integrate Graupel', 'kg m-2', 'TCOLG'], '75': ['Graupel (Snow Pellets) Prepitation Rate', 'kg m-2 s-1', 'GPRATE'], '76': ['Convective Rain Rate', 'kg m-2 s-1', 'CRRATE'], '77': ['Large Scale Rain Rate', 'kg m-2 s-1', 'LSRRATE'], '78': ['Total Column Integrate Water (All components including precipitation)', 'kg m-2', 'TCOLWA'], '79': ['Evaporation Rate', 'kg m-2 s-1', 'EVARATE'], '80': ['Total Condensate', 'kg kg-1', 'TOTCON'], '81': ['Total Column-Integrate Condensate', 'kg m-2', 'TCICON'], '82': ['Cloud Ice Mixing Ratio', 'kg kg-1', 'CIMIXR'], '83': ['Specific Cloud Liquid Water Content', 'kg kg-1', 'SCLLWC'], '84': ['Specific Cloud Ice Water Content', 'kg kg-1', 'SCLIWC'], '85': ['Specific Rain Water Content', 'kg kg-1', 'SRAINW'], '86': ['Specific Snow Water Content', 'kg kg-1', 'SSNOWW'], '87': ['Stratiform Precipitation Rate', 'kg m-2 s-1', 'STRPRATE'], '88': ['Categorical Convective Precipitation', 'Code table 4.222', 'CATCP'], '89': ['Reserved', 'unknown', 'unknown'], '90': ['Total Kinematic Moisture Flux', 'kg kg-1 m s-1', 'TKMFLX'], '91': ['U-component (zonal) Kinematic Moisture Flux', 'kg kg-1 m s-1', 'UKMFLX'], '92': ['V-component (meridional) Kinematic Moisture Flux', 'kg kg-1 m s-1', 'VKMFLX'], '93': ['Relative Humidity With Respect to Water', '%', 'RHWATER'], '94': ['Relative Humidity With Respect to Ice', '%', 'RHICE'], '95': ['Freezing or Frozen Precipitation Rate', 'kg m-2 s-1', 'FZPRATE'], '96': ['Mass Density of Rain', 'kg m-3', 'MASSDR'], '97': ['Mass Density of Snow', 'kg m-3', 'MASSDS'], '98': ['Mass Density of Graupel', 'kg m-3', 'MASSDG'], '99': ['Mass Density of Hail', 'kg m-3', 'MASSDH'], '100': ['Specific Number Concentration of Rain', 'kg-1', 'SPNCR'], '101': ['Specific Number Concentration of Snow', 'kg-1', 'SPNCS'], '102': ['Specific Number Concentration of Graupel', 'kg-1', 'SPNCG'], '103': ['Specific Number Concentration of Hail', 'kg-1', 'SPNCH'], '104': ['Number Density of Rain', 'm-3', 'NUMDR'], '105': ['Number Density of Snow', 'm-3', 'NUMDS'], '106': ['Number Density of Graupel', 'm-3', 'NUMDG'], '107': ['Number Density of Hail', 'm-3', 'NUMDH'], '108': ['Specific Humidity Tendency due to Parameterizations', 'kg kg-1 s-1', 'SHTPRM'], '109': ['Mass Density of Liquid Water Coating on Hail Expressed as Mass of Liquid Water per Unit Volume of Air', 'kg m-3', 'MDLWHVA'], '110': ['Specific Mass of Liquid Water Coating on Hail Expressed as Mass of Liquid Water per Unit Mass of Moist Air', 'kg kg-1', 'SMLWHMA'], '111': ['Mass Mixing Ratio of Liquid Water Coating on Hail Expressed as Mass of Liquid Water per Unit Mass of Dry Air', 'kg kg-1', 'MMLWHDA'], '112': ['Mass Density of Liquid Water Coating on Graupel Expressed as Mass of Liquid Water per Unit Volume of Air', 'kg m-3', 'MDLWGVA'], '113': ['Specific Mass of Liquid Water Coating on Graupel Expressed as Mass of Liquid Water per Unit Mass of Moist Air', 'kg kg-1', 'SMLWGMA'], '114': ['Mass Mixing Ratio of Liquid Water Coating on Graupel Expressed as Mass of Liquid Water per Unit Mass of Dry Air', 'kg kg-1', 'MMLWGDA'], '115': ['Mass Density of Liquid Water Coating on Snow Expressed as Mass of Liquid Water per Unit Volume of Air', 'kg m-3', 'MDLWSVA'], '116': ['Specific Mass of Liquid Water Coating on Snow Expressed as Mass of Liquid Water per Unit Mass of Moist Air', 'kg kg-1', 'SMLWSMA'], '117': ['Mass Mixing Ratio of Liquid Water Coating on Snow Expressed as Mass of Liquid Water per Unit Mass of Dry Air', 'kg kg-1', 'MMLWSDA'], '118': ['Unbalanced Component of Specific Humidity', 'kg kg-1', 'UNCSH'], '119': ['Unbalanced Component of Specific Cloud Liquid Water content', 'kg kg-1', 'UCSCLW'], '120': ['Unbalanced Component of Specific Cloud Ice Water content', 'kg kg-1', 'UCSCIW'], '121': ['Fraction of Snow Cover', 'Proportion', 'FSNOWC'], '122': ['Precipitation intensity index', 'See Table 4.247', 'PIIDX'], '123': ['Domiunknownt precipitation type', 'See Table 4.201', 'DPTYPE'], '124': ['Presence of showers', 'See Table 4.222', 'PSHOW'], '125': ['Presence of blowing snow', 'See Table 4.222', 'PBSNOW'], '126': ['Presence of blizzard', 'See Table 4.222', 'PBLIZZ'], '127': ['Ice pellets (non-water equivalent) precipitation rate', 'm s-1', 'ICEP'], '128': ['Total solid precipitation rate', 'kg m-2 s-1', 'TSPRATE'], '129': ['Effective Radius of Cloud Water', 'm', 'EFRCWAT'], '130': ['Effective Radius of Rain', 'm', 'EFRRAIN'], '131': ['Effective Radius of Cloud Ice', 'm', 'EFRCICE'], '132': ['Effective Radius of Snow', 'm', 'EFRSNOW'], '133': ['Effective Radius of Graupel', 'm', 'EFRGRL'], '134': ['Effective Radius of Hail', 'm', 'EFRHAIL'], '135': ['Effective Radius of Subgrid Liquid Clouds', 'm', 'EFRSLC'], '136': ['Effective Radius of Subgrid Ice Clouds', 'm', 'EFRSICEC'], '137': ['Effective Aspect Ratio of Rain', 'unknown', 'EFARRAIN'], '138': ['Effective Aspect Ratio of Cloud Ice', 'unknown', 'EFARCICE'], '139': ['Effective Aspect Ratio of Snow', 'unknown', 'EFARSNOW'], '140': ['Effective Aspect Ratio of Graupel', 'unknown', 'EFARGRL'], '141': ['Effective Aspect Ratio of Hail', 'unknown', 'EFARHAIL'], '142': ['Effective Aspect Ratio of Subgrid Ice Clouds', 'unknown', 'EFARSIC'], '143': ['Potential evaporation rate', 'kg m-2 s-1', 'PERATE'], '144': ['Specific rain water content (convective)', 'kg kg-1', 'SRWATERC'], '145': ['Specific snow water content (convective)', 'kg kg-1', 'SSNOWWC'], '146': ['Cloud ice precipitation rate', 'kg m-2 s-1', 'CICEPR'], '147': ['Character of precipitation', 'See Table 4.249', 'PERATE'], '148': ['Snow evaporation rate', 'kg m-2 s-1', 'SNOWERAT'], '149': ['Cloud water mixing ratio', 'kg kg-1', 'CWATERMR'], '150-128': ['Reserved', 'unknown', 'unknown'], '143-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Categorical Rain', 'Code table 4.222', 'CRAIN'], '193': ['Categorical Freezing Rain', 'Code table 4.222', 'CFRZR'], '194': ['Categorical Ice Pellets', 'Code table 4.222', 'CICEP'], '195': ['Categorical Snow', 'Code table 4.222', 'CSNOW'], '196': ['Convective Precipitation Rate', 'kg m-2 s-1', 'CPRAT'], '197': ['Horizontal Moisture Divergence', 'kg kg-1 s-1', 'MDIV'], '198': ['Minimum Relative Humidity', '%', 'MINRH'], '199': ['Potential Evaporation', 'kg m-2', 'PEVAP'], '200': ['Potential Evaporation Rate', 'W m-2', 'PEVPR'], '201': ['Snow Cover', '%', 'SNOWC'], '202': ['Rain Fraction of Total Liquid Water', 'non-dim', 'FRAIN'], '203': ['Rime Factor', 'non-dim', 'RIME'], '204': ['Total Column Integrated Rain', 'kg m-2', 'TCOLR'], '205': ['Total Column Integrated Snow', 'kg m-2', 'TCOLS'], '206': ['Total Icing Potential Diagnostic', 'non-dim', 'TIPD'], '207': ['Number concentration for ice particles', 'non-dim', 'NCIP'], '208': ['Snow temperature', 'K', 'SNOT'], '209': ['Total column-integrated supercooled liquid water', 'kg m-2', 'TCLSW'], '210': ['Total column-integrated melting ice', 'kg m-2', 'TCOLM'], '211': ['Evaporation - Precipitation', 'cm/day', 'EMNP'], '212': ['Sublimation (evaporation from snow)', 'W m-2', 'SBSNO'], '213': ['Deep Convective Moistening Rate', 'kg kg-1 s-1', 'CNVMR'], '214': ['Shallow Convective Moistening Rate', 'kg kg-1 s-1', 'SHAMR'], '215': ['Vertical Diffusion Moistening Rate', 'kg kg-1 s-1', 'VDFMR'], '216': ['Condensation Pressure of Parcali Lifted From Indicate Surface', 'Pa', 'CONDP'], '217': ['Large scale moistening rate', 'kg kg-1 s-1', 'LRGMR'], '218': ['Specific humidity at top of viscous sublayer', 'kg kg-1', 'QZ0'], '219': ['Maximum specific humidity at 2m', 'kg kg-1', 'QMAX'], '220': ['Minimum specific humidity at 2m', 'kg kg-1', 'QMIN'], '221': ['Liquid precipitation (Rainfall)', 'kg m-2', 'ARAIN'], '222': ['Snow temperature, depth-avg', 'K', 'SNOWT'], '223': ['Total precipitation (nearest grid point)', 'kg m-2', 'APCPN'], '224': ['Convective precipitation (nearest grid point)', 'kg m-2', 'ACPCPN'], '225': ['Freezing Rain', 'kg m-2', 'FRZR'], '226': ['Predominant Weather', 'Numeric', 'PWTHER'], '227': ['Frozen Rain', 'kg m-2', 'FROZR'], '228': ['Flat Ice Accumulation (FRAM)', 'kg m-2', 'FICEAC'], '229': ['Line Ice Accumulation (FRAM)', 'kg m-2', 'LICEAC'], '230': ['Sleet Accumulation', 'kg m-2', 'SLACC'], '231': ['Precipitation Potential Index', '%', 'PPINDX'], '232': ['Probability Cloud Ice Present', '%', 'PROBCIP'], '233': ['Snow Liquid ratio', 'kg kg-1', 'SNOWLR'], '234': ['Precipitation Duration', 'hour', 'PCPDUR'], '235': ['Cloud Liquid Mixing Ratio', 'kg kg-1', 'CLLMR'], '236-240': ['Reserved', 'unknown', 'unknown'], '241': ['Total Snow', 'kg m-2', 'TSNOW'], '242': ['Relative Humidity with Respect to Precipitable Water', '%', 'RHPW'], '245': ['Hourly Maximum of Column Vertical Integrated Graupel on Entire Atmosphere', 'kg m-2', 'MAXVIG'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_2", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Wind Direction (from which blowing)', '\u00b0', 'WDIR'], '1': ['Wind Speed', 'm s-1', 'WIND'], '2': ['U-Component of Wind', 'm s-1', 'UGRD'], '3': ['V-Component of Wind', 'm s-1', 'VGRD'], '4': ['Stream Function', 'm2 s-1', 'STRM'], '5': ['Velocity Potential', 'm2 s-1', 'VPOT'], '6': ['Montgomery Stream Function', 'm2 s-2', 'MNTSF'], '7': ['Sigma Coordinate Vertical Velocity', 's-1', 'SGCVV'], '8': ['Vertical Velocity (Pressure)', 'Pa s-1', 'VVEL'], '9': ['Vertical Velocity (Geometric)', 'm s-1', 'DZDT'], '10': ['Absolute Vorticity', 's-1', 'ABSV'], '11': ['Absolute Divergence', 's-1', 'ABSD'], '12': ['Relative Vorticity', 's-1', 'RELV'], '13': ['Relative Divergence', 's-1', 'RELD'], '14': ['Potential Vorticity', 'K m2 kg-1 s-1', 'PVORT'], '15': ['Vertical U-Component Shear', 's-1', 'VUCSH'], '16': ['Vertical V-Component Shear', 's-1', 'VVCSH'], '17': ['Momentum Flux, U-Component', 'N m-2', 'UFLX'], '18': ['Momentum Flux, V-Component', 'N m-2', 'VFLX'], '19': ['Wind Mixing Energy', 'J', 'WMIXE'], '20': ['Boundary Layer Dissipation', 'W m-2', 'BLYDP'], '21': ['Maximum Wind Speed', 'm s-1', 'MAXGUST'], '22': ['Wind Speed (Gust)', 'm s-1', 'GUST'], '23': ['U-Component of Wind (Gust)', 'm s-1', 'UGUST'], '24': ['V-Component of Wind (Gust)', 'm s-1', 'VGUST'], '25': ['Vertical Speed Shear', 's-1', 'VWSH'], '26': ['Horizontal Momentum Flux', 'N m-2', 'MFLX'], '27': ['U-Component Storm Motion', 'm s-1', 'USTM'], '28': ['V-Component Storm Motion', 'm s-1', 'VSTM'], '29': ['Drag Coefficient', 'Numeric', 'CD'], '30': ['Frictional Velocity', 'm s-1', 'FRICV'], '31': ['Turbulent Diffusion Coefficient for Momentum', 'm2 s-1', 'TDCMOM'], '32': ['Eta Coordinate Vertical Velocity', 's-1', 'ETACVV'], '33': ['Wind Fetch', 'm', 'WINDF'], '34': ['Normal Wind Component', 'm s-1', 'NWIND'], '35': ['Tangential Wind Component', 'm s-1', 'TWIND'], '36': ['Amplitude Function for Rossby Wave Envelope for Meridional Wind', 'm s-1', 'AFRWE'], '37': ['Northward Turbulent Surface Stress', 'N m-2 s', 'NTSS'], '38': ['Eastward Turbulent Surface Stress', 'N m-2 s', 'ETSS'], '39': ['Eastward Wind Tendency Due to Parameterizations', 'm s-2', 'EWTPARM'], '40': ['Northward Wind Tendency Due to Parameterizations', 'm s-2', 'NWTPARM'], '41': ['U-Component of Geostrophic Wind', 'm s-1', 'UGWIND'], '42': ['V-Component of Geostrophic Wind', 'm s-1', 'VGWIND'], '43': ['Geostrophic Wind Direction', '\u00b0', 'GEOWD'], '44': ['Geostrophic Wind Speed', 'm s-1', 'GEOWS'], '45': ['Unbalanced Component of Divergence', 's-1', 'UNDIV'], '46': ['Vorticity Advection', 's-2', 'VORTADV'], '47': ['Surface roughness for heat,(see Note 5)', 'm', 'SFRHEAT'], '48': ['Surface roughness for moisture,(see Note 6)', 'm', 'SFRMOIST'], '49-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Vertical Speed Shear', 's-1', 'VWSH'], '193': ['Horizontal Momentum Flux', 'N m-2', 'MFLX'], '194': ['U-Component Storm Motion', 'm s-1', 'USTM'], '195': ['V-Component Storm Motion', 'm s-1', 'VSTM'], '196': ['Drag Coefficient', 'non-dim', 'CD'], '197': ['Frictional Velocity', 'm s-1', 'FRICV'], '198': ['Latitude of U Wind Component of Velocity', 'deg', 'LAUV'], '199': ['Longitude of U Wind Component of Velocity', 'deg', 'LOUV'], '200': ['Latitude of V Wind Component of Velocity', 'deg', 'LAVV'], '201': ['Longitude of V Wind Component of Velocity', 'deg', 'LOVV'], '202': ['Latitude of Presure Point', 'deg', 'LAPP'], '203': ['Longitude of Presure Point', 'deg', 'LOPP'], '204': ['Vertical Eddy Diffusivity Heat exchange', 'm2 s-1', 'VEDH'], '205': ['Covariance between Meridional and Zonal Components of the wind.', 'm2 s-2', 'COVMZ'], '206': ['Covariance between Temperature and Zonal Components of the wind.', 'K*m s-1', 'COVTZ'], '207': ['Covariance between Temperature and Meridional Components of the wind.', 'K*m s-1', 'COVTM'], '208': ['Vertical Diffusion Zonal Acceleration', 'm s-2', 'VDFUA'], '209': ['Vertical Diffusion Meridional Acceleration', 'm s-2', 'VDFVA'], '210': ['Gravity wave drag zonal acceleration', 'm s-2', 'GWDU'], '211': ['Gravity wave drag meridional acceleration', 'm s-2', 'GWDV'], '212': ['Convective zonal momentum mixing acceleration', 'm s-2', 'CNVU'], '213': ['Convective meridional momentum mixing acceleration', 'm s-2', 'CNVV'], '214': ['Tendency of vertical velocity', 'm s-2', 'WTEND'], '215': ['Omega (Dp/Dt) divide by density', 'K', 'OMGALF'], '216': ['Convective Gravity wave drag zonal acceleration', 'm s-2', 'CNGWDU'], '217': ['Convective Gravity wave drag meridional acceleration', 'm s-2', 'CNGWDV'], '218': ['Velocity Point Model Surface', 'unknown', 'LMV'], '219': ['Potential Vorticity (Mass-Weighted)', '1/s/m', 'PVMWW'], '220': ['Hourly Maximum of Upward Vertical Velocity', 'm s-1', 'MAXUVV'], '221': ['Hourly Maximum of Downward Vertical Velocity', 'm s-1', 'MAXDVV'], '222': ['U Component of Hourly Maximum 10m Wind Speed', 'm s-1', 'MAXUW'], '223': ['V Component of Hourly Maximum 10m Wind Speed', 'm s-1', 'MAXVW'], '224': ['Ventilation Rate', 'm2 s-1', 'VRATE'], '225': ['Transport Wind Speed', 'm s-1', 'TRWSPD'], '226': ['Transport Wind Direction', 'Deg', 'TRWDIR'], '227': ['Earliest Reasonable Arrival Time (10% exceedance)', 's', 'TOA10'], '228': ['Most Likely Arrival Time (50% exceedance)', 's', 'TOA50'], '229': ['Most Likely Departure Time (50% exceedance)', 's', 'TOD50'], '230': ['Latest Reasonable Departure Time (90% exceedance)', 's', 'TOD90'], '231': ['Tropical Wind Direction', '\u00b0', 'TPWDIR'], '232': ['Tropical Wind Speed', 'm s-1', 'TPWSPD'], '233': ['Inflow Based (ESFC) to 50% EL Shear Magnitude', 'kt', 'ESHR'], '234': ['U Component Inflow Based to 50% EL Shear Vector', 'kt', 'UESH'], '235': ['V Component Inflow Based to 50% EL Shear Vector', 'kt', 'VESH'], '236': ['U Component Bunkers Effective Right Motion', 'kt', 'UEID'], '237': ['V Component Bunkers Effective Right Motion', 'kt', 'VEID'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_3", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_3", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Pressure', 'Pa', 'PRES'], '1': ['Pressure Reduced to MSL', 'Pa', 'PRMSL'], '2': ['Pressure Tendency', 'Pa s-1', 'PTEND'], '3': ['ICAO Standard Atmosphere Reference Height', 'm', 'ICAHT'], '4': ['Geopotential', 'm2 s-2', 'GP'], '5': ['Geopotential Height', 'gpm', 'HGT'], '6': ['Geometric Height', 'm', 'DIST'], '7': ['Standard Deviation of Height', 'm', 'HSTDV'], '8': ['Pressure Anomaly', 'Pa', 'PRESA'], '9': ['Geopotential Height Anomaly', 'gpm', 'GPA'], '10': ['Density', 'kg m-3', 'DEN'], '11': ['Altimeter Setting', 'Pa', 'ALTS'], '12': ['Thickness', 'm', 'THICK'], '13': ['Pressure Altitude', 'm', 'PRESALT'], '14': ['Density Altitude', 'm', 'DENALT'], '15': ['5-Wave Geopotential Height', 'gpm', '5WAVH'], '16': ['Zonal Flux of Gravity Wave Stress', 'N m-2', 'U-GWD'], '17': ['Meridional Flux of Gravity Wave Stress', 'N m-2', 'V-GWD'], '18': ['Planetary Boundary Layer Height', 'm', 'HPBL'], '19': ['5-Wave Geopotential Height Anomaly', 'gpm', '5WAVA'], '20': ['Standard Deviation of Sub-Grid Scale Orography', 'm', 'SDSGSO'], '21': ['Angle of Sub-Grid Scale Orography', 'rad', 'AOSGSO'], '22': ['Slope of Sub-Grid Scale Orography', 'Numeric', 'SSGSO'], '23': ['Gravity Wave Dissipation', 'W m-2', 'GWD'], '24': ['Anisotropy of Sub-Grid Scale Orography', 'Numeric', 'ASGSO'], '25': ['Natural Logarithm of Pressure in Pa', 'Numeric', 'NLPRES'], '26': ['Exner Pressure', 'Numeric', 'EXPRES'], '27': ['Updraught Mass Flux', 'kg m-2 s-1', 'UMFLX'], '28': ['Downdraught Mass Flux', 'kg m-2 s-1', 'DMFLX'], '29': ['Updraught Detrainment Rate', 'kg m-3 s-1', 'UDRATE'], '30': ['Downdraught Detrainment Rate', 'kg m-3 s-1', 'DDRATE'], '31': ['Unbalanced Component of Logarithm of Surface Pressure', 'unknown', 'UCLSPRS'], '32': ['Saturation water vapour pressure', 'Pa', 'SWATERVP'], '33': ['Geometric altitude above mean sea level', 'm', 'GAMSL'], '34': ['Geometric height above ground level', 'm', 'GHAGRD'], '35-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['MSLP (Eta model reduction)', 'Pa', 'MSLET'], '193': ['5-Wave Geopotential Height', 'gpm', '5WAVH'], '194': ['Zonal Flux of Gravity Wave Stress', 'N m-2', 'U-GWD'], '195': ['Meridional Flux of Gravity Wave Stress', 'N m-2', 'V-GWD'], '196': ['Planetary Boundary Layer Height', 'm', 'HPBL'], '197': ['5-Wave Geopotential Height Anomaly', 'gpm', '5WAVA'], '198': ['MSLP (MAPS System Reduction)', 'Pa', 'MSLMA'], '199': ['3-hr pressure tendency (Std. Atmos. Reduction)', 'Pa s-1', 'TSLSA'], '200': ['Pressure of level from which parcel was lifted', 'Pa', 'PLPL'], '201': ['X-gradient of Log Pressure', 'm-1', 'LPSX'], '202': ['Y-gradient of Log Pressure', 'm-1', 'LPSY'], '203': ['X-gradient of Height', 'm-1', 'HGTX'], '204': ['Y-gradient of Height', 'm-1', 'HGTY'], '205': ['Layer Thickness', 'm', 'LAYTH'], '206': ['Natural Log of Surface Pressure', 'ln (kPa)', 'NLGSP'], '207': ['Convective updraft mass flux', 'kg m-2 s-1', 'CNVUMF'], '208': ['Convective downdraft mass flux', 'kg m-2 s-1', 'CNVDMF'], '209': ['Convective detrainment mass flux', 'kg m-2 s-1', 'CNVDEMF'], '210': ['Mass Point Model Surface', 'unknown', 'LMH'], '211': ['Geopotential Height (nearest grid point)', 'gpm', 'HGTN'], '212': ['Pressure (nearest grid point)', 'Pa', 'PRESN'], '213': ['Orographic Convexity', 'unknown', 'ORCONV'], '214': ['Orographic Asymmetry, W Component', 'unknown', 'ORASW'], '215': ['Orographic Asymmetry, S Component', 'unknown', 'ORASS'], '216': ['Orographic Asymmetry, SW Component', 'unknown', 'ORASSW'], '217': ['Orographic Asymmetry, NW Component', 'unknown', 'ORASNW'], '218': ['Orographic Length Scale, W Component', 'unknown', 'ORLSW'], '219': ['Orographic Length Scale, S Component', 'unknown', 'ORLSS'], '220': ['Orographic Length Scale, SW Component', 'unknown', 'ORLSSW'], '221': ['Orographic Length Scale, NW Component', 'unknown', 'ORLSNW'], '222': ['Effective Surface Height', 'm', 'EFSH'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_4", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_4", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Net Short-Wave Radiation Flux (Surface)', 'W m-2', 'NSWRS'], '1': ['Net Short-Wave Radiation Flux (Top of Atmosphere)', 'W m-2', 'NSWRT'], '2': ['Short-Wave Radiation Flux', 'W m-2', 'SWAVR'], '3': ['Global Radiation Flux', 'W m-2', 'GRAD'], '4': ['Brightness Temperature', 'K', 'BRTMP'], '5': ['Radiance (with respect to wave number)', 'W m-1 sr-1', 'LWRAD'], '6': ['Radiance (with respect to wavelength)', 'W m-3 sr-1', 'SWRAD'], '7': ['Downward Short-Wave Radiation Flux', 'W m-2', 'DSWRF'], '8': ['Upward Short-Wave Radiation Flux', 'W m-2', 'USWRF'], '9': ['Net Short Wave Radiation Flux', 'W m-2', 'NSWRF'], '10': ['Photosynthetically Active Radiation', 'W m-2', 'PHOTAR'], '11': ['Net Short-Wave Radiation Flux, Clear Sky', 'W m-2', 'NSWRFCS'], '12': ['Downward UV Radiation', 'W m-2', 'DWUVR'], '13': ['Direct Short Wave Radiation Flux', 'W m-2', 'DSWRFLX'], '14': ['Diffuse Short Wave Radiation Flux', 'W m-2', 'DIFSWRF'], '15-49': ['Reserved', 'unknown', 'unknown'], '50': ['UV Index (Under Clear Sky)', 'Numeric', 'UVIUCS'], '51': ['UV Index', 'Numeric', 'UVI'], '52': ['Downward Short-Wave Radiation Flux, Clear Sky', 'W m-2', 'DSWRFCS'], '53': ['Upward Short-Wave Radiation Flux, Clear Sky', 'W m-2', 'USWRFCS'], '54': ['Direct normal short-wave radiation flux,(see Note 3)', 'W m-2', 'DSWRFLX'], '55-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Downward Short-Wave Radiation Flux', 'W m-2', 'DSWRF'], '193': ['Upward Short-Wave Radiation Flux', 'W m-2', 'USWRF'], '194': ['UV-B Downward Solar Flux', 'W m-2', 'DUVB'], '195': ['Clear sky UV-B Downward Solar Flux', 'W m-2', 'CDUVB'], '196': ['Clear Sky Downward Solar Flux', 'W m-2', 'CSDSF'], '197': ['Solar Radiative Heating Rate', 'K s-1', 'SWHR'], '198': ['Clear Sky Upward Solar Flux', 'W m-2', 'CSUSF'], '199': ['Cloud Forcing Net Solar Flux', 'W m-2', 'CFNSF'], '200': ['Visible Beam Downward Solar Flux', 'W m-2', 'VBDSF'], '201': ['Visible Diffuse Downward Solar Flux', 'W m-2', 'VDDSF'], '202': ['Near IR Beam Downward Solar Flux', 'W m-2', 'NBDSF'], '203': ['Near IR Diffuse Downward Solar Flux', 'W m-2', 'NDDSF'], '204': ['Downward Total Radiation Flux', 'W m-2', 'DTRF'], '205': ['Upward Total Radiation Flux', 'W m-2', 'UTRF'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_5", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_5", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Net Long-Wave Radiation Flux (Surface)', 'W m-2', 'NLWRS'], '1': ['Net Long-Wave Radiation Flux (Top of Atmosphere)', 'W m-2', 'NLWRT'], '2': ['Long-Wave Radiation Flux', 'W m-2', 'LWAVR'], '3': ['Downward Long-Wave Rad. Flux', 'W m-2', 'DLWRF'], '4': ['Upward Long-Wave Rad. Flux', 'W m-2', 'ULWRF'], '5': ['Net Long-Wave Radiation Flux', 'W m-2', 'NLWRF'], '6': ['Net Long-Wave Radiation Flux, Clear Sky', 'W m-2', 'NLWRCS'], '7': ['Brightness Temperature', 'K', 'BRTEMP'], '8': ['Downward Long-Wave Radiation Flux, Clear Sky', 'W m-2', 'DLWRFCS'], '9-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Downward Long-Wave Rad. Flux', 'W m-2', 'DLWRF'], '193': ['Upward Long-Wave Rad. Flux', 'W m-2', 'ULWRF'], '194': ['Long-Wave Radiative Heating Rate', 'K s-1', 'LWHR'], '195': ['Clear Sky Upward Long Wave Flux', 'W m-2', 'CSULF'], '196': ['Clear Sky Downward Long Wave Flux', 'W m-2', 'CSDLF'], '197': ['Cloud Forcing Net Long Wave Flux', 'W m-2', 'CFNLF'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_6", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_6", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Cloud Ice', 'kg m-2', 'CICE'], '1': ['Total Cloud Cover', '%', 'TCDC'], '2': ['Convective Cloud Cover', '%', 'CDCON'], '3': ['Low Cloud Cover', '%', 'LCDC'], '4': ['Medium Cloud Cover', '%', 'MCDC'], '5': ['High Cloud Cover', '%', 'HCDC'], '6': ['Cloud Water', 'kg m-2', 'CWAT'], '7': ['Cloud Amount', '%', 'CDCA'], '8': ['Cloud Type', 'See Table 4.203', 'CDCT'], '9': ['Thunderstorm Maximum Tops', 'm', 'TMAXT'], '10': ['Thunderstorm Coverage', 'See Table 4.204', 'THUNC'], '11': ['Cloud Base', 'm', 'CDCB'], '12': ['Cloud Top', 'm', 'CDCTOP'], '13': ['Ceiling', 'm', 'CEIL'], '14': ['Non-Convective Cloud Cover', '%', 'CDLYR'], '15': ['Cloud Work Function', 'J kg-1', 'CWORK'], '16': ['Convective Cloud Efficiency', 'Proportion', 'CUEFI'], '17': ['Total Condensate', 'kg kg-1', 'TCONDO'], '18': ['Total Column-Integrated Cloud Water', 'kg m-2', 'TCOLWO'], '19': ['Total Column-Integrated Cloud Ice', 'kg m-2', 'TCOLIO'], '20': ['Total Column-Integrated Condensate', 'kg m-2', 'TCOLC'], '21': ['Ice fraction of total condensate', 'Proportion', 'FICE'], '22': ['Cloud Cover', '%', 'CDCC'], '23': ['Cloud Ice Mixing Ratio', 'kg kg-1', 'CDCIMR'], '24': ['Sunshine', 'Numeric', 'SUNS'], '25': ['Horizontal Extent of Cumulonimbus (CB)', '%', 'CBHE'], '26': ['Height of Convective Cloud Base', 'm', 'HCONCB'], '27': ['Height of Convective Cloud Top', 'm', 'HCONCT'], '28': ['Number Concentration of Cloud Droplets', 'kg-1', 'NCONCD'], '29': ['Number Concentration of Cloud Ice', 'kg-1', 'NCCICE'], '30': ['Number Density of Cloud Droplets', 'm-3', 'NDENCD'], '31': ['Number Density of Cloud Ice', 'm-3', 'NDCICE'], '32': ['Fraction of Cloud Cover', 'Numeric', 'FRACCC'], '33': ['Sunshine Duration', 's', 'SUNSD'], '34': ['Surface Long Wave Effective Total Cloudiness', 'Numeric', 'SLWTC'], '35': ['Surface Short Wave Effective Total Cloudiness', 'Numeric', 'SSWTC'], '36': ['Fraction of Stratiform Precipitation Cover', 'Proportion', 'FSTRPC'], '37': ['Fraction of Convective Precipitation Cover', 'Proportion', 'FCONPC'], '38': ['Mass Density of Cloud Droplets', 'kg m-3', 'MASSDCD'], '39': ['Mass Density of Cloud Ice', 'kg m-3', 'MASSDCI'], '40': ['Mass Density of Convective Cloud Water Droplets', 'kg m-3', 'MDCCWD'], '41-46': ['Reserved', 'unknown', 'unknown'], '47': ['Volume Fraction of Cloud Water Droplets', 'Numeric', 'VFRCWD'], '48': ['Volume Fraction of Cloud Ice Particles', 'Numeric', 'VFRCICE'], '49': ['Volume Fraction of Cloud (Ice and/or Water)', 'Numeric', 'VFRCIW'], '50-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Non-Convective Cloud Cover', '%', 'CDLYR'], '193': ['Cloud Work Function', 'J kg-1', 'CWORK'], '194': ['Convective Cloud Efficiency', 'non-dim', 'CUEFI'], '195': ['Total Condensate', 'kg kg-1', 'TCOND'], '196': ['Total Column-Integrated Cloud Water', 'kg m-2', 'TCOLW'], '197': ['Total Column-Integrated Cloud Ice', 'kg m-2', 'TCOLI'], '198': ['Total Column-Integrated Condensate', 'kg m-2', 'TCOLC'], '199': ['Ice fraction of total condensate', 'non-dim', 'FICE'], '200': ['Convective Cloud Mass Flux', 'Pa s-1', 'MFLUX'], '201': ['Sunshine Duration', 's', 'SUNSD'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_7", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_7", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Parcel Lifted Index (to 500 hPa)', 'K', 'PLI'], '1': ['Best Lifted Index (to 500 hPa)', 'K', 'BLI'], '2': ['K Index', 'K', 'KX'], '3': ['KO Index', 'K', 'KOX'], '4': ['Total Totals Index', 'K', 'TOTALX'], '5': ['Sweat Index', 'Numeric', 'SX'], '6': ['Convective Available Potential Energy', 'J kg-1', 'CAPE'], '7': ['Convective Inhibition', 'J kg-1', 'CIN'], '8': ['Storm Relative Helicity', 'm2 s-2', 'HLCY'], '9': ['Energy Helicity Index', 'Numeric', 'EHLX'], '10': ['Surface Lifted Index', 'K', 'LFT X'], '11': ['Best (4 layer) Lifted Index', 'K', '4LFTX'], '12': ['Richardson Number', 'Numeric', 'RI'], '13': ['Showalter Index', 'K', 'SHWINX'], '14': ['Reserved', 'unknown', 'unknown'], '15': ['Updraft Helicity', 'm2 s-2', 'UPHL'], '16': ['Bulk Richardson Number', 'Numeric', 'BLKRN'], '17': ['Gradient Richardson Number', 'Numeric', 'GRDRN'], '18': ['Flux Richardson Number', 'Numeric', 'FLXRN'], '19': ['Convective Available Potential Energy Shear', 'm2 s-2', 'CONAPES'], '20': ['Thunderstorm intensity index', 'See Table 4.246', 'TIIDEX'], '21-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Surface Lifted Index', 'K', 'LFT X'], '193': ['Best (4 layer) Lifted Index', 'K', '4LFTX'], '194': ['Richardson Number', 'Numeric', 'RI'], '195': ['Convective Weather Detection Index', 'unknown', 'CWDI'], '196': ['Ultra Violet Index', 'W m-2', 'UVI'], '197': ['Updraft Helicity', 'm2 s-2', 'UPHL'], '198': ['Leaf Area Index', 'Numeric', 'LAI'], '199': ['Hourly Maximum of Updraft Helicity', 'm2 s-2', 'MXUPHL'], '200': ['Hourly Minimum of Updraft Helicity', 'm2 s-2', 'MNUPHL'], '201': ['Bourgoiun Negative Energy Layer (surface to freezing level)', 'J kg-1', 'BNEGELAY'], '202': ['Bourgoiun Positive Energy Layer (2k ft AGL to 400 hPa)', 'J kg-1', 'BPOSELAY'], '203': ['Downdraft CAPE', 'J kg-1', 'DCAPE'], '204': ['Effective Storm Relative Helicity', 'm2 s-2', 'EFHL'], '205': ['Enhanced Stretching Potential', 'Numeric', 'ESP'], '206': ['Critical Angle', 'Degree', 'CANGLE'], '207': ['Effective Surface Helicity', 'm2 s-2', 'E3KH'], '208': ['Significant Tornado Parameter with CIN-Effective Layer', 'numeric', 'STPC'], '209': ['Significant Hail Parameter', 'numeric', 'SIGH'], '210': ['Supercell Composite Parameter-Effective Layer', 'numeric', 'SCCP'], '211': ['Significant Tornado parameter-Fixed Layer', 'numeric', 'SIGT'], '212': ['Mixed Layer (100 mb) Virtual LFC', 'numeric', 'MLFC'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_13", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_13", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Aerosol Type', 'See Table 4.205', 'AEROT'], '1-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Particulate matter (coarse)', '\u00b5g m-3', 'PMTC'], '193': ['Particulate matter (fine)', '\u00b5g m-3', 'PMTF'], '194': ['Particulate matter (fine)', 'log10 (\u00b5g m-3)', 'LPMTF'], '195': ['Integrated column particulate matter (fine)', 'log10 (\u00b5g m-3)', 'LIPMF'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_14", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_14", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Total Ozone', 'DU', 'TOZNE'], '1': ['Ozone Mixing Ratio', 'kg kg-1', 'O3MR'], '2': ['Total Column Integrated Ozone', 'DU', 'TCIOZ'], '3-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Ozone Mixing Ratio', 'kg kg-1', 'O3MR'], '193': ['Ozone Concentration', 'ppb', 'OZCON'], '194': ['Categorical Ozone Concentration', 'Non-Dim', 'OZCAT'], '195': ['Ozone Vertical Diffusion', 'kg kg-1 s-1', 'VDFOZ'], '196': ['Ozone Production', 'kg kg-1 s-1', 'POZ'], '197': ['Ozone Tendency', 'kg kg-1 s-1', 'TOZ'], '198': ['Ozone Production from Temperature Term', 'kg kg-1 s-1', 'POZT'], '199': ['Ozone Production from Column Ozone Term', 'kg kg-1 s-1', 'POZO'], '200': ['Ozone Daily Max from 1-hour Average', 'ppbV', 'OZMAX1'], '201': ['Ozone Daily Max from 8-hour Average', 'ppbV', 'OZMAX8'], '202': ['PM 2.5 Daily Max from 1-hour Average', '\u03bcg m-3', 'PDMAX1'], '203': ['PM 2.5 Daily Max from 24-hour Average', '\u03bcg m-3', 'PDMAX24'], '204': ['Acetaldehyde & Higher Aldehydes', 'ppbV', 'ALD2'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_15", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_15", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Base Spectrum Width', 'm s-1', 'BSWID'], '1': ['Base Reflectivity', 'dB', 'BREF'], '2': ['Base Radial Velocity', 'm s-1', 'BRVEL'], '3': ['Vertically-Integrated Liquid Water', 'kg m-2', 'VIL'], '4': ['Layer Maximum Base Reflectivity', 'dB', 'LMAXBR'], '5': ['Precipitation', 'kg m-2', 'PREC'], '6': ['Radar Spectra (1)', 'unknown', 'RDSP1'], '7': ['Radar Spectra (2)', 'unknown', 'RDSP2'], '8': ['Radar Spectra (3)', 'unknown', 'RDSP3'], '9': ['Reflectivity of Cloud Droplets', 'dB', 'RFCD'], '10': ['Reflectivity of Cloud Ice', 'dB', 'RFCI'], '11': ['Reflectivity of Snow', 'dB', 'RFSNOW'], '12': ['Reflectivity of Rain', 'dB', 'RFRAIN'], '13': ['Reflectivity of Graupel', 'dB', 'RFGRPL'], '14': ['Reflectivity of Hail', 'dB', 'RFHAIL'], '15': ['Hybrid Scan Reflectivity', 'dB', 'HSR'], '16': ['Hybrid Scan Reflectivity Height', 'm', 'HSRHT'], '17-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_16", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_16", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Equivalent radar reflectivity factor for rain', 'm m6 m-3', 'REFZR'], '1': ['Equivalent radar reflectivity factor for snow', 'm m6 m-3', 'REFZI'], '2': ['Equivalent radar reflectivity factor for parameterized convection', 'm m6 m-3', 'REFZC'], '3': ['Echo Top', 'm', 'RETOP'], '4': ['Reflectivity', 'dB', 'REFD'], '5': ['Composite reflectivity', 'dB', 'REFC'], '6-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Equivalent radar reflectivity factor for rain', 'm m6 m-3', 'REFZR'], '193': ['Equivalent radar reflectivity factor for snow', 'm m6 m-3', 'REFZI'], '194': ['Equivalent radar reflectivity factor for parameterized convection', 'm m6 m-3', 'REFZC'], '195': ['Reflectivity', 'dB', 'REFD'], '196': ['Composite reflectivity', 'dB', 'REFC'], '197': ['Echo Top', 'm', 'RETOP'], '198': ['Hourly Maximum of Simulated Reflectivity', 'dB', 'MAXREF'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_17", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_17", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Lightning Strike Density', 'm-2 s-1', 'LTNGSD'], '1': ['Lightning Potential Index (LPI)', 'J kg-1', 'LTPINX'], '2': ['Cloud-to-Ground Lightning Flash Density', 'km-2 day-1', 'CDGDLTFD'], '3': ['Cloud-to-Cloud Lightning Flash Density', 'km-2 day-1', 'CDCDLTFD'], '4': ['Total Lightning Flash Density', 'km-2 day-1', 'TLGTFD'], '5': ['Subgrid-scale lightning potential index', 'J kg-1', 'SLNGPIDX'], '6-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Lightning', 'non-dim', 'LTNG'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_18", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_18", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Air Concentration of Caesium 137', 'Bq m-3', 'ACCES'], '1': ['Air Concentration of Iodine 131', 'Bq m-3', 'ACIOD'], '2': ['Air Concentration of Radioactive Pollutant', 'Bq m-3', 'ACRADP'], '3': ['Ground Deposition of Caesium 137', 'Bq m-2', 'GDCES'], '4': ['Ground Deposition of Iodine 131', 'Bq m-2', 'GDIOD'], '5': ['Ground Deposition of Radioactive Pollutant', 'Bq m-2', 'GDRADP'], '6': ['Time Integrated Air Concentration of Cesium Pollutant', 'Bq s m-3', 'TIACCP'], '7': ['Time Integrated Air Concentration of Iodine Pollutant', 'Bq s m-3', 'TIACIP'], '8': ['Time Integrated Air Concentration of Radioactive Pollutant', 'Bq s m-3', 'TIACRP'], '9': ['Reserved', 'unknown', 'unknown'], '10': ['Air Concentration', 'Bq m-3', 'AIRCON'], '11': ['Wet Deposition', 'Bq m-2', 'WETDEP'], '12': ['Dry Deposition', 'Bq m-2', 'DRYDEP'], '13': ['Total Deposition (Wet + Dry)', 'Bq m-2', 'TOTLWD'], '14': ['Specific Activity Concentration', 'Bq kg-1', 'SACON'], '15': ['Maximum of Air Concentration in Layer', 'Bq m-3', 'MAXACON'], '16': ['Height of Maximum of Air Concentration', 'm', 'HMXACON'], '17': ['Column-Integrated Air Concentration', 'Bq m-2', 'CIAIRC'], '18': ['Column-Averaged Air Concentration in Layer', 'Bq m-3', 'CAACL'], '19-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_19", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_19", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Visibility', 'm', 'VIS'], '1': ['Albedo', '%', 'ALBDO'], '2': ['Thunderstorm Probability', '%', 'TSTM'], '3': ['Mixed Layer Depth', 'm', 'MIXHT'], '4': ['Volcanic Ash', 'See Table 4.206', 'VOLASH'], '5': ['Icing Top', 'm', 'ICIT'], '6': ['Icing Base', 'm', 'ICIB'], '7': ['Icing', 'See Table 4.207', 'ICI'], '8': ['Turbulence Top', 'm', 'TURBT'], '9': ['Turbulence Base', 'm', 'TURBB'], '10': ['Turbulence', 'See Table 4.208', 'TURB'], '11': ['Turbulent Kinetic Energy', 'J kg-1', 'TKE'], '12': ['Planetary Boundary Layer Regime', 'See Table 4.209', 'PBLREG'], '13': ['Contrail Intensity', 'See Table 4.210', 'CONTI'], '14': ['Contrail Engine Type', 'See Table 4.211', 'CONTET'], '15': ['Contrail Top', 'm', 'CONTT'], '16': ['Contrail Base', 'm', 'CONTB'], '17': ['Maximum Snow Albedosee Note 1', '%', 'MXSALB'], '18': ['Snow-Free Albedo', '%', 'SNFALB'], '19': ['Snow Albedo', '%', 'SALBD'], '20': ['Icing', '%', 'ICIP'], '21': ['In-Cloud Turbulence', '%', 'CTP'], '22': ['Clear Air Turbulence (CAT)', '%', 'CAT'], '23': ['Supercooled Large Droplet Probabilitysee Note 2', '%', 'SLDP'], '24': ['Convective Turbulent Kinetic Energy', 'J kg-1', 'CONTKE'], '25': ['Weather', 'See Table 4.225', 'WIWW'], '26': ['Convective Outlook', 'See Table 4.224', 'CONVO'], '27': ['Icing Scenario', 'See Table 4.227', 'ICESC'], '28': ['Mountain Wave Turbulence (Eddy Dissipation Rate)', 'm2/3 s-1', 'MWTURB'], '29': ['Clear Air Turbulence (CAT) (Eddy Dissipation Rate)', 'm2/3 s-1', 'CATEDR'], '30': ['Eddy Dissipation Parameter', 'm2/3 s-1', 'EDPARM'], '31': ['Maximum of Eddy Dissipation Parameter in Layer', 'm2/3 s-1', 'MXEDPRM'], '32': ['Highest Freezing Level', 'm', 'HIFREL'], '33': ['Visibility Through Liquid Fog', 'm', 'VISLFOG'], '34': ['Visibility Through Ice Fog', 'm', 'VISIFOG'], '35': ['Visibility Through Blowing Snow', 'm', 'VISBSN'], '36': ['Presence of Snow Squalls', 'See Table 4.222', 'PSNOWS'], '37': ['Icing Severity', 'See Table 4.228', 'ICESEV'], '38': ['Sky transparency index', 'See Table 4.214', 'SKYIDX'], '39': ['Seeing index', 'See Table 4.214', 'SEEINDEX'], '40': ['Snow level', 'm', 'SNOWLVL'], '41-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Maximum Snow Albedo', '%', 'MXSALB'], '193': ['Snow-Free Albedo', '%', 'SNFALB'], '194': ['Slight risk convective outlook', 'categorical', 'SRCONO'], '195': ['Moderate risk convective outlook', 'categorical', 'MRCONO'], '196': ['High risk convective outlook', 'categorical', 'HRCONO'], '197': ['Tornado probability', '%', 'TORPROB'], '198': ['Hail probability', '%', 'HAILPROB'], '199': ['Wind probability', '%', 'WINDPROB'], '200': ['Significant Tornado probability', '%', 'STORPROB'], '201': ['Significant Hail probability', '%', 'SHAILPRO'], '202': ['Significant Wind probability', '%', 'SWINDPRO'], '203': ['Categorical Thunderstorm', 'Code table 4.222', 'TSTMC'], '204': ['Number of mixed layers next to surface', 'integer', 'MIXLY'], '205': ['Flight Category', 'unknown', 'FLGHT'], '206': ['Confidence - Ceiling', 'unknown', 'CICEL'], '207': ['Confidence - Visibility', 'unknown', 'CIVIS'], '208': ['Confidence - Flight Category', 'unknown', 'CIFLT'], '209': ['Low-Level aviation interest', 'unknown', 'LAVNI'], '210': ['High-Level aviation interest', 'unknown', 'HAVNI'], '211': ['Visible, Black Sky Albedo', '%', 'SBSALB'], '212': ['Visible, White Sky Albedo', '%', 'SWSALB'], '213': ['Near IR, Black Sky Albedo', '%', 'NBSALB'], '214': ['Near IR, White Sky Albedo', '%', 'NWSALB'], '215': ['Total Probability of Severe Thunderstorms (Days 2,3)', '%', 'PRSVR'], '216': ['Total Probability of Extreme Severe Thunderstorms (Days 2,3)', '%', 'PRSIGSVR'], '217': ['Supercooled Large Droplet (SLD) Icingsee Note 2', 'See Table 4.207', 'SIPD'], '218': ['Radiative emissivity', 'unknown', 'EPSR'], '219': ['Turbulence Potential Forecast Index', 'unknown', 'TPFI'], '220': ['Categorical Severe Thunderstorm', 'Code table 4.222', 'SVRTS'], '221': ['Probability of Convection', '%', 'PROCON'], '222': ['Convection Potential', 'Code table 4.222', 'CONVP'], '223-231': ['Reserved', 'unknown', 'unknown'], '232': ['Volcanic Ash Forecast Transport and Dispersion', 'log10 (kg m-3)', 'VAFTD'], '233': ['Icing probability', 'non-dim', 'ICPRB'], '234': ['Icing Severity', 'non-dim', 'ICSEV'], '235': ['Joint Fire Weather Probability', '%', 'JFWPRB'], '236': ['Snow Level', 'm', 'SNOWLVL'], '237': ['Dry Thunderstorm Probability', '%', 'DRYTPROB'], '238': ['Ellrod Index', 'unknown', 'ELLINX'], '239': ['Craven-Wiedenfeld Aggregate Severe Parameter', 'Numeric', 'CWASP'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_20", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_20", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Mass Density (Concentration)', 'kg m-3', 'MASSDEN'], '1': ['Column-Integrated Mass Density', 'kg m-2', 'COLMD'], '2': ['Mass Mixing Ratio (Mass Fraction in Air)', 'kg kg-1', 'MASSMR'], '3': ['Atmosphere Emission Mass Flux', 'kg m-2s-1', 'AEMFLX'], '4': ['Atmosphere Net Production Mass Flux', 'kg m-2s-1', 'ANPMFLX'], '5': ['Atmosphere Net Production And Emision Mass Flux', 'kg m-2s-1', 'ANPEMFLX'], '6': ['Surface Dry Deposition Mass Flux', 'kg m-2s-1', 'SDDMFLX'], '7': ['Surface Wet Deposition Mass Flux', 'kg m-2s-1', 'SWDMFLX'], '8': ['Atmosphere Re-Emission Mass Flux', 'kg m-2s-1', 'AREMFLX'], '9': ['Wet Deposition by Large-Scale Precipitation Mass Flux', 'kg m-2s-1', 'WLSMFLX'], '10': ['Wet Deposition by Convective Precipitation Mass Flux', 'kg m-2s-1', 'WDCPMFLX'], '11': ['Sedimentation Mass Flux', 'kg m-2s-1', 'SEDMFLX'], '12': ['Dry Deposition Mass Flux', 'kg m-2s-1', 'DDMFLX'], '13': ['Transfer From Hydrophobic to Hydrophilic', 'kg kg-1s-1', 'TRANHH'], '14': ['Transfer From SO2 (Sulphur Dioxide) to SO4 (Sulphate)', 'kg kg-1s-1', 'TRSDS'], '15': ['Dry deposition velocity', 'm s-1', 'DDVEL'], '16': ['Mass mixing ratio with respect to dry air', 'kg kg-1', 'MSSRDRYA'], '17': ['Mass mixing ratio with respect to wet air', 'kg kg-1', 'MSSRWETA'], '18-49': ['Reserved', 'unknown', 'unknown'], '50': ['Amount in Atmosphere', 'mol', 'AIA'], '51': ['Concentration In Air', 'mol m-3', 'CONAIR'], '52': ['Volume Mixing Ratio (Fraction in Air)', 'mol mol-1', 'VMXR'], '53': ['Chemical Gross Production Rate of Concentration', 'mol m-3s-1', 'CGPRC'], '54': ['Chemical Gross Destruction Rate of Concentration', 'mol m-3s-1', 'CGDRC'], '55': ['Surface Flux', 'mol m-2s-1', 'SFLUX'], '56': ['Changes Of Amount in Atmosphere', 'mol s-1', 'COAIA'], '57': ['Total Yearly Average Burden of The Atmosphere>', 'mol', 'TYABA'], '58': ['Total Yearly Average Atmospheric Loss', 'mol s-1', 'TYAAL'], '59': ['Aerosol Number Concentration', 'm-3', 'ANCON'], '60': ['Aerosol Specific Number Concentration', 'kg-1', 'ASNCON'], '61': ['Maximum of Mass Density', 'kg m-3', 'MXMASSD'], '62': ['Height of Mass Density', 'm', 'HGTMD'], '63': ['Column-Averaged Mass Density in Layer', 'kg m-3', 'CAVEMDL'], '64': ['Mole fraction with respect to dry air', 'mol mol-1', 'MOLRDRYA'], '65': ['Mole fraction with respect to wet air', 'mol mol-1', 'MOLRWETA'], '66': ['Column-integrated in-cloud scavenging rate by precipitation', 'kg m-2 s-1', 'CINCLDSP'], '67': ['Column-integrated below-cloud scavenging rate by precipitation', 'kg m-2 s-1', 'CBLCLDSP'], '68': ['Column-integrated release rate from evaporating precipitation', 'kg m-2 s-1', 'CIRELREP'], '69': ['Column-integrated in-cloud scavenging rate by large-scale precipitation', 'kg m-2 s-1', 'CINCSLSP'], '70': ['Column-integrated below-cloud scavenging rate by large-scale precipitation', 'kg m-2 s-1', 'CBECSLSP'], '71': ['Column-integrated release rate from evaporating large-scale precipitation', 'kg m-2 s-1', 'CRERELSP'], '72': ['Column-integrated in-cloud scavenging rate by convective precipitation', 'kg m-2 s-1', 'CINCSRCP'], '73': ['Column-integrated below-cloud scavenging rate by convective precipitation', 'kg m-2 s-1', 'CBLCSRCP'], '74': ['Column-integrated release rate from evaporating convective precipitation', 'kg m-2 s-1', 'CIRERECP'], '75': ['Wildfire flux', 'kg m-2 s-1', 'WFIREFLX'], '76': ['Emission Rate', 'kg kg-1 s-1', 'EMISFLX'], '77': ['Surface Emission flux', 'kg m-2 s-1', 'SFCEFLX'], '78-99': ['Reserved', 'unknown', 'unknown'], '100': ['Surface Area Density (Aerosol)', 'm-1', 'SADEN'], '101': ['Vertical Visual Range', 'm', 'ATMTK'], '102': ['Aerosol Optical Thickness', 'Numeric', 'AOTK'], '103': ['Single Scattering Albedo', 'Numeric', 'SSALBK'], '104': ['Asymmetry Factor', 'Numeric', 'ASYSFK'], '105': ['Aerosol Extinction Coefficient', 'm-1', 'AECOEF'], '106': ['Aerosol Absorption Coefficient', 'm-1', 'AACOEF'], '107': ['Aerosol Lidar Backscatter from Satellite', 'm-1sr-1', 'ALBSAT'], '108': ['Aerosol Lidar Backscatter from the Ground', 'm-1sr-1', 'ALBGRD'], '109': ['Aerosol Lidar Extinction from Satellite', 'm-1', 'ALESAT'], '110': ['Aerosol Lidar Extinction from the Ground', 'm-1', 'ALEGRD'], '111': ['Angstrom Exponent', 'Numeric', 'ANGSTEXP'], '112': ['Scattering Aerosol Optical Thickness', 'Numeric', 'SCTAOTK'], '113-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_190", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_190", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Arbitrary Text String', 'CCITTIA5', 'ATEXT'], '1-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_191", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_191", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Seconds prior to initial reference time (defined in Section 1)', 's', 'TSEC'], '1': ['Geographical Latitude', '\u00b0 N', 'GEOLAT'], '2': ['Geographical Longitude', '\u00b0 E', 'GEOLON'], '3': ['Days Since Last Observation', 'd', 'DSLOBS'], '4-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Latitude (-90 to 90)', '\u00b0', 'NLAT'], '193': ['East Longitude (0 to 360)', '\u00b0', 'ELON'], '194': ['Seconds prior to initial reference time', 's', 'RTSEC'], '195': ['Model Layer number (From bottom up)', 'unknown', 'MLYNO'], '196': ['Latitude (nearest neighbor) (-90 to 90)', '\u00b0', 'NLATN'], '197': ['East Longitude (nearest neighbor) (0 to 360)', '\u00b0', 'ELONN'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_192", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_192", "kind": "variable", "doc": "

    \n", "default_value": "{'1': ['Covariance between zonal and meridional components of the wind. Defined as [uv]-[u][v], where "[]" indicates the mean over the indicated time span.', 'm2/s2', 'COVMZ'], '2': ['Covariance between zonal component of the wind and temperature. Defined as [uT]-[u][T], where "[]" indicates the mean over the indicated time span.', 'K*m/s', 'COVTZ'], '3': ['Covariance between meridional component of the wind and temperature. Defined as [vT]-[v][T], where "[]" indicates the mean over the indicated time span.', 'K*m/s', 'COVTM'], '4': ['Covariance between temperature and vertical component of the wind. Defined as [wT]-[w][T], where "[]" indicates the mean over the indicated time span.', 'K*m/s', 'COVTW'], '5': ['Covariance between zonal and zonal components of the wind. Defined as [uu]-[u][u], where "[]" indicates the mean over the indicated time span.', 'm2/s2', 'COVZZ'], '6': ['Covariance between meridional and meridional components of the wind. Defined as [vv]-[v][v], where "[]" indicates the mean over the indicated time span.', 'm2/s2', 'COVMM'], '7': ['Covariance between specific humidity and zonal components of the wind. Defined as [uq]-[u][q], where "[]" indicates the mean over the indicated time span.', 'kg/kg*m/s', 'COVQZ'], '8': ['Covariance between specific humidity and meridional components of the wind. Defined as [vq]-[v][q], where "[]" indicates the mean over the indicated time span.', 'kg/kg*m/s', 'COVQM'], '9': ['Covariance between temperature and vertical components of the wind. Defined as [\u03a9T]-[\u03a9][T], where "[]" indicates the mean over the indicated time span.', 'K*Pa/s', 'COVTVV'], '10': ['Covariance between specific humidity and vertical components of the wind. Defined as [\u03a9q]-[\u03a9][q], where "[]" indicates the mean over the indicated time span.', 'kg/kg*Pa/s', 'COVQVV'], '11': ['Covariance between surface pressure and surface pressure. Defined as [Psfc]-[Psfc][Psfc], where "[]" indicates the mean over the indicated time span.', 'Pa*Pa', 'COVPSPS'], '12': ['Covariance between specific humidity and specific humidy. Defined as [qq]-[q][q], where "[]" indicates the mean over the indicated time span.', 'kg/kg*kg/kg', 'COVQQ'], '13': ['Covariance between vertical and vertical components of the wind. Defined as [\u03a9\u03a9]-[\u03a9][\u03a9], where "[]" indicates the mean over the indicated time span.', 'Pa2/s2', 'COVVVVV'], '14': ['Covariance between temperature and temperature. Defined as [TT]-[T][T], where "[]" indicates the mean over the indicated time span.', 'K*K', 'COVTT'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_0_ndfd", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_0_ndfd", "kind": "variable", "doc": "

    \n", "default_value": "{'193': ['Apparent Temperature', 'K', 'APPT']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_1_ndfd", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_1_ndfd", "kind": "variable", "doc": "

    \n", "default_value": "{'192': ['Weather Information', 'WxInfo', 'WX']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_19_ndfd", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_19_ndfd", "kind": "variable", "doc": "

    \n", "default_value": "{'194': ['Convective Hazard Outlook', 'categorical', 'CONVOUTLOOK'], '197': ['Probability of Tornado', '%', 'PTORNADO'], '198': ['Probability of Hail', '%', 'PHAIL'], '199': ['Probability of Damaging Wind', '%', 'PWIND'], '200': ['Probability of Extreme Tornado', '%', 'PXTRMTORN'], '201': ['Probability of Extreme Hail', '%', 'PXTRMHAIL'], '202': ['Probability of Extreme Wind', '%', 'PXTRMWIND'], '215': ['Total Probability of Severe Thunderstorms', '%', 'TOTALSVRPROB'], '216': ['Total Probability of Extreme Severe Thunderstorms', '%', 'TOTALXTRMPROB'], '217': ['Watch Warning Advisory', 'WxInfo', 'WWA']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_192_ndfd", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_192_ndfd", "kind": "variable", "doc": "

    \n", "default_value": "{'192': ['Critical Fire Weather', '', 'FIREWX'], '194': ['Dry Lightning', '', 'DRYLIGHTNING']}"}, {"fullname": "grib2io.tables.section4_discipline1", "modulename": "grib2io.tables.section4_discipline1", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4_discipline1.table_4_2_1_0", "modulename": "grib2io.tables.section4_discipline1", "qualname": "table_4_2_1_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Flash Flood Guidance (Encoded as an accumulation over a floating subinterval of time between the reference time and valid time)', 'kg m-2', 'FFLDG'], '1': ['Flash Flood Runoff (Encoded as an accumulation over a floating subinterval of time)', 'kg m-2', 'FFLDRO'], '2': ['Remotely Sensed Snow Cover', 'See Table 4.215', 'RSSC'], '3': ['Elevation of Snow Covered Terrain', 'See Table 4.216', 'ESCT'], '4': ['Snow Water Equivalent Percent of Normal', '%', 'SWEPON'], '5': ['Baseflow-Groundwater Runoff', 'kg m-2', 'BGRUN'], '6': ['Storm Surface Runoff', 'kg m-2', 'SSRUN'], '7': ['Discharge from Rivers or Streams', 'm3 s-1', 'DISRS'], '8': ['Group Water Upper Storage', 'kg m-2', 'GWUPS'], '9': ['Group Water Lower Storage', 'kg m-2', 'GWLOWS'], '10': ['Side Flow into River Channel', 'm3 s-1 m-1', 'SFLORC'], '11': ['River Storage of Water', 'm3', 'RVERSW'], '12': ['Flood Plain Storage of Water', 'm3', 'FLDPSW'], '13': ['Depth of Water on Soil Surface', 'kg m-2', 'DEPWSS'], '14': ['Upstream Accumulated Precipitation', 'kg m-2', 'UPAPCP'], '15': ['Upstream Accumulated Snow Melt', 'kg m-2', 'UPASM'], '16': ['Percolation Rate', 'kg m-2 s-1', 'PERRATE'], '17-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Baseflow-Groundwater Runoff', 'kg m-2', 'BGRUN'], '193': ['Storm Surface Runoff', 'kg m-2', 'SSRUN'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline1.table_4_2_1_1", "modulename": "grib2io.tables.section4_discipline1", "qualname": "table_4_2_1_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Conditional percent precipitation amount fractile for an overall period (encoded as an accumulation)', 'kg m-2', 'CPPOP'], '1': ['Percent Precipitation in a sub-period of an overall period (encoded as a percent accumulation over the sub-period)', '%', 'PPOSP'], '2': ['Probability of 0.01 inch of precipitation (POP)', '%', 'POP'], '3-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Probability of Freezing Precipitation', '%', 'CPOZP'], '193': ['Percent of Frozen Precipitation', '%', 'CPOFP'], '194': ['Probability of precipitation exceeding flash flood guidance values', '%', 'PPFFG'], '195': ['Probability of Wetting Rain, exceeding in 0.10" in a given time period', '%', 'CWR'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline1.table_4_2_1_2", "modulename": "grib2io.tables.section4_discipline1", "qualname": "table_4_2_1_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Water Depth', 'm', 'WDPTHIL'], '1': ['Water Temperature', 'K', 'WTMPIL'], '2': ['Water Fraction', 'Proportion', 'WFRACT'], '3': ['Sediment Thickness', 'm', 'SEDTK'], '4': ['Sediment Temperature', 'K', 'SEDTMP'], '5': ['Ice Thickness', 'm', 'ICTKIL'], '6': ['Ice Temperature', 'K', 'ICETIL'], '7': ['Ice Cover', 'Proportion', 'ICECIL'], '8': ['Land Cover (0=water, 1=land)', 'Proportion', 'LANDIL'], '9': ['Shape Factor with Respect to Salinity Profile', 'unknown', 'SFSAL'], '10': ['Shape Factor with Respect to Temperature Profile in Thermocline', 'unknown', 'SFTMP'], '11': ['Attenuation Coefficient of Water with Respect to Solar Radiation', 'm-1', 'ACWSR'], '12': ['Salinity', 'kg kg-1', 'SALTIL'], '13': ['Cross Sectional Area of Flow in Channel', 'm2', 'CSAFC'], '14': ['Snow temperature', 'K', 'LNDSNOWT'], '15-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline10", "modulename": "grib2io.tables.section4_discipline10", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4_discipline10.table_4_2_10_0", "modulename": "grib2io.tables.section4_discipline10", "qualname": "table_4_2_10_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Wave Spectra (1)', '-', 'WVSP1'], '1': ['Wave Spectra (2)', '-', 'WVSP2'], '2': ['Wave Spectra (3)', '-', 'WVSP3'], '3': ['Significant Height of Combined Wind Waves and Swell', 'm', 'HTSGW'], '4': ['Direction of Wind Waves', 'degree true', 'WVDIR'], '5': ['Significant Height of Wind Waves', 'm', 'WVHGT'], '6': ['Mean Period of Wind Waves', 's', 'WVPER'], '7': ['Direction of Swell Waves', 'degree true', 'SWDIR'], '8': ['Significant Height of Swell Waves', 'm', 'SWELL'], '9': ['Mean Period of Swell Waves', 's', 'SWPER'], '10': ['Primary Wave Direction', 'degree true', 'DIRPW'], '11': ['Primary Wave Mean Period', 's', 'PERPW'], '12': ['Secondary Wave Direction', 'degree true', 'DIRSW'], '13': ['Secondary Wave Mean Period', 's', 'PERSW'], '14': ['Direction of Combined Wind Waves and Swell', 'degree true', 'WWSDIR'], '15': ['Mean Period of Combined Wind Waves and Swell', 's', 'MWSPER'], '16': ['Coefficient of Drag With Waves', '-', 'CDWW'], '17': ['Friction Velocity', 'm s-1', 'FRICVW'], '18': ['Wave Stress', 'N m-2', 'WSTR'], '19': ['Normalised Waves Stress', '-', 'NWSTR'], '20': ['Mean Square Slope of Waves', '-', 'MSSW'], '21': ['U-component Surface Stokes Drift', 'm s-1', 'USSD'], '22': ['V-component Surface Stokes Drift', 'm s-1', 'VSSD'], '23': ['Period of Maximum Individual Wave Height', 's', 'PMAXWH'], '24': ['Maximum Individual Wave Height', 'm', 'MAXWH'], '25': ['Inverse Mean Wave Frequency', 's', 'IMWF'], '26': ['Inverse Mean Frequency of The Wind Waves', 's', 'IMFWW'], '27': ['Inverse Mean Frequency of The Total Swell', 's', 'IMFTSW'], '28': ['Mean Zero-Crossing Wave Period', 's', 'MZWPER'], '29': ['Mean Zero-Crossing Period of The Wind Waves', 's', 'MZPWW'], '30': ['Mean Zero-Crossing Period of The Total Swell', 's', 'MZPTSW'], '31': ['Wave Directional Width', '-', 'WDIRW'], '32': ['Directional Width of The Wind Waves', '-', 'DIRWWW'], '33': ['Directional Width of The Total Swell', '-', 'DIRWTS'], '34': ['Peak Wave Period', 's', 'PWPER'], '35': ['Peak Period of The Wind Waves', 's', 'PPERWW'], '36': ['Peak Period of The Total Swell', 's', 'PPERTS'], '37': ['Altimeter Wave Height', 'm', 'ALTWH'], '38': ['Altimeter Corrected Wave Height', 'm', 'ALCWH'], '39': ['Altimeter Range Relative Correction', '-', 'ALRRC'], '40': ['10 Metre Neutral Wind Speed Over Waves', 'm s-1', 'MNWSOW'], '41': ['10 Metre Wind Direction Over Waves', 'degree true', 'MWDIRW'], '42': ['Wave Engery Spectrum', 'm-2 s rad-1', 'WESP'], '43': ['Kurtosis of The Sea Surface Elevation Due to Waves', '-', 'KSSEW'], '44': ['Benjamin-Feir Index', '-', 'BENINX'], '45': ['Spectral Peakedness Factor', 's-1', 'SPFTR'], '46': ['Peak wave direction', '&deg', 'PWAVEDIR'], '47': ['Significant wave height of first swell partition', 'm', 'SWHFSWEL'], '48': ['Significant wave height of second swell partition', 'm', 'SWHSSWEL'], '49': ['Significant wave height of third swell partition', 'm', 'SWHTSWEL'], '50': ['Mean wave period of first swell partition', 's', 'MWPFSWEL'], '51': ['Mean wave period of second swell partition', 's', 'MWPSSWEL'], '52': ['Mean wave period of third swell partition', 's', 'MWPTSWEL'], '53': ['Mean wave direction of first swell partition', '&deg', 'MWDFSWEL'], '54': ['Mean wave direction of second swell partition', '&deg', 'MWDSSWEL'], '55': ['Mean wave direction of third swell partition', '&deg', 'MWDTSWEL'], '56': ['Wave directional width of first swell partition', '-', 'WDWFSWEL'], '57': ['Wave directional width of second swell partition', '-', 'WDWSSWEL'], '58': ['Wave directional width of third swell partition', '-', 'WDWTSWEL'], '59': ['Wave frequency width of first swell partition', '-', 'WFWFSWEL'], '60': ['Wave frequency width of second swell partition', '-', 'WFWSSWEL'], '61': ['Wave frequency width of third swell partition', '-', 'WFWTSWEL'], '62': ['Wave frequency width', '-', 'WAVEFREW'], '63': ['Frequency width of wind waves', '-', 'FREWWW'], '64': ['Frequency width of total swell', '-', 'FREWTSW'], '65': ['Peak Wave Period of First Swell Partition', 's', 'PWPFSPAR'], '66': ['Peak Wave Period of Second Swell Partition', 's', 'PWPSSPAR'], '67': ['Peak Wave Period of Third Swell Partition', 's', 'PWPTSPAR'], '68': ['Peak Wave Direction of First Swell Partition', 'degree true', 'PWDFSPAR'], '69': ['Peak Wave Direction of Second Swell Partition', 'degree true', 'PWDFSPAR'], '70': ['Peak Wave Direction of First Swell Partition', 'degree true', 'PWDSSPAR'], '71': ['Peak Direction of Wind Waves', 'degree true', 'PDWWAVE'], '72': ['Peak Direction of Total Swell', 'degree true', 'PDTSWELL'], '73': ['Whitecap Fraction', 'fraction', 'WCAPFRAC'], '74-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Wave Steepness', 'proportion', 'WSTP'], '193': ['Wave Length', 'unknown', 'WLENG'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline10.table_4_2_10_1", "modulename": "grib2io.tables.section4_discipline10", "qualname": "table_4_2_10_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Current Direction', 'degree True', 'DIRC'], '1': ['Current Speed', 'm s-1', 'SPC'], '2': ['U-Component of Current', 'm s-1', 'UOGRD'], '3': ['V-Component of Current', 'm s-1', 'VOGRD'], '4': ['Rip Current Occurrence Probability', '%', 'RIPCOP'], '5-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Ocean Mixed Layer U Velocity', 'm s-1', 'OMLU'], '193': ['Ocean Mixed Layer V Velocity', 'm s-1', 'OMLV'], '194': ['Barotropic U velocity', 'm s-1', 'UBARO'], '195': ['Barotropic V velocity', 'm s-1', 'VBARO'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline10.table_4_2_10_2", "modulename": "grib2io.tables.section4_discipline10", "qualname": "table_4_2_10_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Ice Cover', 'Proportion', 'ICEC'], '1': ['Ice Thickness', 'm', 'ICETK'], '2': ['Direction of Ice Drift', 'degree True', 'DICED'], '3': ['Speed of Ice Drift', 'm s-1', 'SICED'], '4': ['U-Component of Ice Drift', 'm s-1', 'UICE'], '5': ['V-Component of Ice Drift', 'm s-1', 'VICE'], '6': ['Ice Growth Rate', 'm s-1', 'ICEG'], '7': ['Ice Divergence', 's-1', 'ICED'], '8': ['Ice Temperature', 'K', 'ICETMP'], '9': ['Module of Ice Internal Pressure', 'Pa m', 'ICEPRS'], '10': ['Zonal Vector Component of Vertically Integrated Ice Internal Pressure', 'Pa m', 'ZVCICEP'], '11': ['Meridional Vector Component of Vertically Integrated Ice Internal Pressure', 'Pa m', 'MVCICEP'], '12': ['Compressive Ice Strength', 'N m-1', 'CICES'], '13': ['Snow Temperature (over sea ice)', 'K', 'SNOWTSI'], '14': ['Albedo', 'Numeric', 'ALBICE'], '15-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline10.table_4_2_10_3", "modulename": "grib2io.tables.section4_discipline10", "qualname": "table_4_2_10_3", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Water Temperature', 'K', 'WTMP'], '1': ['Deviation of Sea Level from Mean', 'm', 'DSLM'], '2': ['Heat Exchange Coefficient', 'unknown', 'CH'], '3': ['Practical Salinity', 'Numeric', 'PRACTSAL'], '4': ['Downward Heat Flux', 'W m-2', 'DWHFLUX'], '5': ['Eastward Surface Stress', 'N m-2', 'EASTWSS'], '6': ['Northward surface stress', 'N m-2', 'NORTHWSS'], '7': ['x-component Surface Stress', 'N m-2', 'XCOMPSS'], '8': ['y-component Surface Stress', 'N m-2', 'YCOMPSS'], '9': ['Thermosteric Change in Sea Surface Height', 'm', 'THERCSSH'], '10': ['Halosteric Change in Sea Surface Height', 'm', 'HALOCSSH'], '11': ['Steric Change in Sea Surface Height', 'm', 'STERCSSH'], '12': ['Sea Salt Flux', 'kg m-2s-1', 'SEASFLUX'], '13': ['Net upward water flux', 'kg m-2s-1', 'unknown'], '14': ['Eastward surface water velocity', 'm s-1', 'unknown'], '15': ['Northward surface water velocity', 'm s-1', 'unknown'], '16': ['x-component of surface water velocity', 'm s-1', 'unknown'], '17': ['y-component of surface water velocity', 'm s-1', 'unknown'], '18': ['Heat flux correction', 'W m-2', 'unknown'], '19': ['Sea surface height tendency due to parameterization', 'm s-1', 'unknown'], '20': ['Deviation of sea level from mean with inverse barometer correction', 'm', 'unknown'], '21-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Hurricane Storm Surge', 'm', 'SURGE'], '193': ['Extra Tropical Storm Surge', 'm', 'ETSRG'], '194': ['Ocean Surface Elevation Relative to Geoid', 'm', 'ELEV'], '195': ['Sea Surface Height Relative to Geoid', 'm', 'SSHG'], '196': ['Ocean Mixed Layer Potential Density (Reference 2000m)', 'kg m-3', 'P2OMLT'], '197': ['Net Air-Ocean Heat Flux', 'W m-2', 'AOHFLX'], '198': ['Assimilative Heat Flux', 'W m-2', 'ASHFL'], '199': ['Surface Temperature Trend', 'degree per day', 'SSTT'], '200': ['Surface Salinity Trend', 'psu per day', 'SSST'], '201': ['Kinetic Energy', 'J kg-1', 'KENG'], '202': ['Salt Flux', 'kg m-2s-1', 'SLTFL'], '203': ['Heat Exchange Coefficient', 'unknown', 'LCH'], '204': ['Freezing Spray', 'unknown', 'FRZSPR'], '205': ['Total Water Level Accounting for Tide, Wind and Waves', 'm', 'TWLWAV'], '206': ['Total Water Level Increase due to Waves', 'm', 'RUNUP'], '207': ['Mean Increase in Water Level due to Waves', 'm', 'SETUP'], '208': ['Time-varying Increase in Water Level due to Waves', 'm', 'SWASH'], '209': ['Total Water Level Above Dune Toe', 'm', 'TWLDT'], '210': ['Total Water Level Above Dune Crest', 'm', 'TWLDC'], '211-241': ['Reserved', 'unknown', 'unknown'], '242': ['20% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG20'], '243': ['30% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG30'], '244': ['40% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG40'], '245': ['50% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG50'], '246': ['60% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG60'], '247': ['70% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG70'], '248': ['80% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG80'], '249': ['90% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG90'], '250': ['Extra Tropical Storm Surge Combined Surge and Tide', 'm', 'ETCWL'], '251': ['Tide', 'm', 'TIDE'], '252': ['Erosion Occurrence Probability', '%', 'EROSNP'], '253': ['Overwash Occurrence Probability', '%', 'OWASHP'], '254': ['Reserved', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline10.table_4_2_10_4", "modulename": "grib2io.tables.section4_discipline10", "qualname": "table_4_2_10_4", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Main Thermocline Depth', 'm', 'MTHD'], '1': ['Main Thermocline Anomaly', 'm', 'MTHA'], '2': ['Transient Thermocline Depth', 'm', 'TTHDP'], '3': ['Salinity', 'kg kg-1', 'SALTY'], '4': ['Ocean Vertical Heat Diffusivity', 'm2 s-1', 'OVHD'], '5': ['Ocean Vertical Salt Diffusivity', 'm2 s-1', 'OVSD'], '6': ['Ocean Vertical Momentum Diffusivity', 'm2 s-1', 'OVMD'], '7': ['Bathymetry', 'm', 'BATHY'], '8-10': ['Reserved', 'unknown', 'unknown'], '11': ['Shape Factor With Respect To Salinity Profile', 'unknown', 'SFSALP'], '12': ['Shape Factor With Respect To Temperature Profile In Thermocline', 'unknown', 'SFTMPP'], '13': ['Attenuation Coefficient Of Water With Respect to Solar Radiation', 'm-1', 'ACWSRD'], '14': ['Water Depth', 'm', 'WDEPTH'], '15': ['Water Temperature', 'K', 'WTMPSS'], '16': ['Water Density (rho)', 'kg m-3', 'WATERDEN'], '17': ['Water Density Anomaly (sigma) See note', 'kg m-3', 'WATDENA'], '18': ['Water potential temperature (theta)', 'K', 'WATPTEMP'], '19': ['Water potential density (rho theta)', 'kg m-3', 'WATPDEN'], '20': ['Water potential density anomaly (sigma theta) See Note', 'kg m-3', 'WATPDENA'], '21': ['Practical Salinity', 'psu (numeric)', 'PRTSAL'], '22': ['Water Column-integrated Heat Content', 'J m-2', 'WCHEATC'], '23': ['Eastward Water Velocity', 'm s-1', 'EASTWVEL'], '24': ['Northward Water Velocity', 'm s-1', 'NRTHWVEL'], '25': ['X-Component Water Velocity', 'm s-1', 'XCOMPWV'], '26': ['Y-Component Water Velocity', 'm s-1', 'YCOMPWV'], '27': ['Upward Water Velocity', 'm s-1', 'UPWWVEL'], '28': ['Vertical Eddy Diffusivity', 'm2 s-1', 'VEDDYDIF'], '29-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['3-D Temperature', '\u00b0 c', 'WTMPC'], '193': ['3-D Salinity', 'psu', 'SALIN'], '194': ['Barotropic Kinectic Energy', 'J kg-1', 'BKENG'], '195': ['Geometric Depth Below Sea Surface', 'm', 'DBSS'], '196': ['Interface Depths', 'm', 'INTFD'], '197': ['Ocean Heat Content', 'J m-2', 'OHC'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline10.table_4_2_10_191", "modulename": "grib2io.tables.section4_discipline10", "qualname": "table_4_2_10_191", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Seconds Prior To Initial Reference Time (Defined In Section 1)', 's', 'IRTSEC'], '1': ['Meridional Overturning Stream Function', 'm3 s-1', 'MOSF'], '2': ['Reserved', 'unknown', 'unknown'], '3': ['Days Since Last Observation', 'd', 'DSLOBS'], '4': ['Barotropic Stream Function', 'm3 s-1', 'BARDSF'], '5-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline2", "modulename": "grib2io.tables.section4_discipline2", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4_discipline2.table_4_2_2_0", "modulename": "grib2io.tables.section4_discipline2", "qualname": "table_4_2_2_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Land Cover (0=sea, 1=land)', 'Proportion', 'LAND'], '1': ['Surface Roughness', 'm', 'SFCR'], '2': ['Soil Temperature', 'K', 'TSOIL'], '3': ['Parameter deprecated - use another parameter instead.', 'unknown', 'unknown'], '4': ['Vegetation', '%', 'VEG'], '5': ['Water Runoff', 'kg m-2', 'WATR'], '6': ['Evapotranspiration', 'kg-2 s-1', 'EVAPT'], '7': ['Model Terrain Height', 'm', 'MTERH'], '8': ['Land Use', 'See Table 4.212', 'LANDU'], '9': ['Volumetric Soil Moisture Content', 'Proportion', 'SOILW'], '10': ['Ground Heat Flux', 'W m-2', 'GFLUX'], '11': ['Moisture Availability', '%', 'MSTAV'], '12': ['Exchange Coefficient', 'kg m-2 s-1', 'SFEXC'], '13': ['Plant Canopy Surface Water', 'kg m-2', 'CNWAT'], '14': ['Blackadars Mixing Length Scale', 'm', 'BMIXL'], '15': ['Canopy Conductance', 'm s-1', 'CCOND'], '16': ['Minimal Stomatal Resistance', 's m-1', 'RSMIN'], '17': ['Wilting Point', 'Proportion', 'WILT'], '18': ['Solar parameter in canopy conductance', 'Proportion', 'RCS'], '19': ['Temperature parameter in canopy', 'Proportion', 'RCT'], '20': ['Humidity parameter in canopy conductance', 'Proportion', 'RCQ'], '21': ['Soil moisture parameter in canopy conductance', 'Proportion', 'RCSOL'], '22': ['Parameter deprecated - use another parameter instead.', 'unknown', 'unknown'], '23': ['Column-Integrated Soil Water', 'kg m-2', 'CISOILW'], '24': ['Heat Flux', 'W m-2', 'HFLUX'], '25': ['Volumetric Soil Moisture', 'm3 m-3', 'VSOILM'], '26': ['Wilting Point', 'kg m-3', 'WILT'], '27': ['Volumetric Wilting Point', 'm3 m-3', 'VWILTP'], '28': ['Leaf Area Index', 'Numeric', 'LEAINX'], '29': ['Evergreen Forest Cover', 'Proportion', 'EVGFC'], '30': ['Deciduous Forest Cover', 'Proportion', 'DECFC'], '31': ['Normalized Differential Vegetation Index (NDVI)', 'Numeric', 'NDVINX'], '32': ['Root Depth of Vegetation', 'm', 'RDVEG'], '33': ['Water Runoff and Drainage', 'kg m-2', 'WROD'], '34': ['Surface Water Runoff', 'kg m-2', 'SFCWRO'], '35': ['Tile Class', 'See Table 4.243', 'TCLASS'], '36': ['Tile Fraction', 'Proportion', 'TFRCT'], '37': ['Tile Percentage', '%', 'TPERCT'], '38': ['Soil Volumetric Ice Content (Water Equivalent)', 'm3 m-3', 'SOILVIC'], '39': ['Evapotranspiration Rate', 'kg m-2 s-1', 'EVAPTRAT'], '40': ['Potential Evapotranspiration Rate', 'kg m-2 s-1', 'PERATE'], '41': ['Snow Melt Rate', 'kg m-2 s-1', 'SMRATE'], '42': ['Water Runoff and Drainage Rate', 'kg m-2 s-1', 'WRDRATE'], '43': ['Drainage direction', 'See Table 4.250', 'DRAINDIR'], '44': ['Upstream Area', 'm2', 'UPSAREA'], '45-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Volumetric Soil Moisture Content', 'Fraction', 'SOILW'], '193': ['Ground Heat Flux', 'W m-2', 'GFLUX'], '194': ['Moisture Availability', '%', 'MSTAV'], '195': ['Exchange Coefficient', '(kg m-3) (m s-1)', 'SFEXC'], '196': ['Plant Canopy Surface Water', 'kg m-2', 'CNWAT'], '197': ['Blackadar\u2019s Mixing Length Scale', 'm', 'BMIXL'], '198': ['Vegetation Type', 'Integer (0-13)', 'VGTYP'], '199': ['Canopy Conductance', 'm s-1', 'CCOND'], '200': ['Minimal Stomatal Resistance', 's m-1', 'RSMIN'], '201': ['Wilting Point', 'Fraction', 'WILT'], '202': ['Solar parameter in canopy conductance', 'Fraction', 'RCS'], '203': ['Temperature parameter in canopy conductance', 'Fraction', 'RCT'], '204': ['Humidity parameter in canopy conductance', 'Fraction', 'RCQ'], '205': ['Soil moisture parameter in canopy conductance', 'Fraction', 'RCSOL'], '206': ['Rate of water dropping from canopy to ground', 'unknown', 'RDRIP'], '207': ['Ice-free water surface', '%', 'ICWAT'], '208': ['Surface exchange coefficients for T and Q divided by delta z', 'm s-1', 'AKHS'], '209': ['Surface exchange coefficients for U and V divided by delta z', 'm s-1', 'AKMS'], '210': ['Vegetation canopy temperature', 'K', 'VEGT'], '211': ['Surface water storage', 'Kg m-2', 'SSTOR'], '212': ['Liquid soil moisture content (non-frozen)', 'Kg m-2', 'LSOIL'], '213': ['Open water evaporation (standing water)', 'W m-2', 'EWATR'], '214': ['Groundwater recharge', 'Kg m-2', 'GWREC'], '215': ['Flood plain recharge', 'Kg m-2', 'QREC'], '216': ['Roughness length for heat', 'm', 'SFCRH'], '217': ['Normalized Difference Vegetation Index', 'unknown', 'NDVI'], '218': ['Land-sea coverage (nearest neighbor) [land=1,sea=0]', 'unknown', 'LANDN'], '219': ['Asymptotic mixing length scale', 'm', 'AMIXL'], '220': ['Water vapor added by precip assimilation', 'Kg m-2', 'WVINC'], '221': ['Water condensate added by precip assimilation', 'Kg m-2', 'WCINC'], '222': ['Water Vapor Flux Convergance (Vertical Int)', 'Kg m-2', 'WVCONV'], '223': ['Water Condensate Flux Convergance (Vertical Int)', 'Kg m-2', 'WCCONV'], '224': ['Water Vapor Zonal Flux (Vertical Int)', 'Kg m-2', 'WVUFLX'], '225': ['Water Vapor Meridional Flux (Vertical Int)', 'Kg m-2', 'WVVFLX'], '226': ['Water Condensate Zonal Flux (Vertical Int)', 'Kg m-2', 'WCUFLX'], '227': ['Water Condensate Meridional Flux (Vertical Int)', 'Kg m-2', 'WCVFLX'], '228': ['Aerodynamic conductance', 'm s-1', 'ACOND'], '229': ['Canopy water evaporation', 'W m-2', 'EVCW'], '230': ['Transpiration', 'W m-2', 'TRANS'], '231': ['Seasonally Minimum Green Vegetation Fraction (over 1-year period)', '%', 'VEGMIN'], '232': ['Seasonally Maximum Green Vegetation Fraction (over 1-year period)', '%', 'VEGMAX'], '233': ['Land Fraction', 'Fraction', 'LANDFRC'], '234': ['Lake Fraction', 'Fraction', 'LAKEFRC'], '235': ['Precipitation Advected Heat Flux', 'W m-2', 'PAHFLX'], '236': ['Water Storage in Aquifer', 'Kg m-2', 'WATERSA'], '237': ['Evaporation of Intercepted Water', 'Kg m-2', 'EIWATER'], '238': ['Plant Transpiration', 'Kg m-2', 'PLANTTR'], '239': ['Soil Surface Evaporation', 'Kg m-2', 'SOILSE'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline2.table_4_2_2_1", "modulename": "grib2io.tables.section4_discipline2", "qualname": "table_4_2_2_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Cold Advisory for Newborn Livestock', 'unknown', 'CANL'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline2.table_4_2_2_3", "modulename": "grib2io.tables.section4_discipline2", "qualname": "table_4_2_2_3", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Soil Type', 'See Table 4.213', 'SOTYP'], '1': ['Upper Layer Soil Temperature', 'K', 'UPLST'], '2': ['Upper Layer Soil Moisture', 'kg m-3', 'UPLSM'], '3': ['Lower Layer Soil Moisture', 'kg m-3', 'LOWLSM'], '4': ['Bottom Layer Soil Temperature', 'K', 'BOTLST'], '5': ['Liquid Volumetric Soil Moisture (non-frozen)', 'Proportion', 'SOILL'], '6': ['Number of Soil Layers in Root Zone', 'Numeric', 'RLYRS'], '7': ['Transpiration Stress-onset (soil moisture)', 'Proportion', 'SMREF'], '8': ['Direct Evaporation Cease (soil moisture)', 'Proportion', 'SMDRY'], '9': ['Soil Porosity', 'Proportion', 'POROS'], '10': ['Liquid Volumetric Soil Moisture (Non-Frozen)', 'm3 m-3', 'LIQVSM'], '11': ['Volumetric Transpiration Stree-Onset(Soil Moisture)', 'm3 m-3', 'VOLTSO'], '12': ['Transpiration Stree-Onset(Soil Moisture)', 'kg m-3', 'TRANSO'], '13': ['Volumetric Direct Evaporation Cease(Soil Moisture)', 'm3 m-3', 'VOLDEC'], '14': ['Direct Evaporation Cease(Soil Moisture)', 'kg m-3', 'DIREC'], '15': ['Soil Porosity', 'm3 m-3', 'SOILP'], '16': ['Volumetric Saturation Of Soil Moisture', 'm3 m-3', 'VSOSM'], '17': ['Saturation Of Soil Moisture', 'kg m-3', 'SATOSM'], '18': ['Soil Temperature', 'K', 'SOILTMP'], '19': ['Soil Moisture', 'kg m-3', 'SOILMOI'], '20': ['Column-Integrated Soil Moisture', 'kg m-2', 'CISOILM'], '21': ['Soil Ice', 'kg m-3', 'SOILICE'], '22': ['Column-Integrated Soil Ice', 'kg m-2', 'CISICE'], '23': ['Liquid Water in Snow Pack', 'kg m-2', 'LWSNWP'], '24': ['Frost Index', 'kg day-1', 'FRSTINX'], '25': ['Snow Depth at Elevation Bands', 'kg m-2', 'SNWDEB'], '26': ['Soil Heat Flux', 'W m-2', 'SHFLX'], '27': ['Soil Depth', 'm', 'SOILDEP'], '28': ['Snow Temperature', 'K', 'SNOWTMP'], '29': ['Ice Temperature', 'K', 'ICETEMP'], '30-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Liquid Volumetric Soil Moisture (non Frozen)', 'Proportion', 'SOILL'], '193': ['Number of Soil Layers in Root Zone', 'non-dim', 'RLYRS'], '194': ['Surface Slope Type', 'Index', 'SLTYP'], '195': ['Transpiration Stress-onset (soil moisture)', 'Proportion', 'SMREF'], '196': ['Direct Evaporation Cease (soil moisture)', 'Proportion', 'SMDRY'], '197': ['Soil Porosity', 'Proportion', 'POROS'], '198': ['Direct Evaporation from Bare Soil', 'W m-2', 'EVBS'], '199': ['Land Surface Precipitation Accumulation', 'kg m-2', 'LSPA'], '200': ['Bare Soil Surface Skin temperature', 'K', 'BARET'], '201': ['Average Surface Skin Temperature', 'K', 'AVSFT'], '202': ['Effective Radiative Skin Temperature', 'K', 'RADT'], '203': ['Field Capacity', 'Fraction', 'FLDCP'], '204': ['Soil Moisture Availability In The Top Soil Layer', '%', 'MSTAV'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline2.table_4_2_2_4", "modulename": "grib2io.tables.section4_discipline2", "qualname": "table_4_2_2_4", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Fire Outlook', 'See Table 4.224', 'FIREOLK'], '1': ['Fire Outlook Due to Dry Thunderstorm', 'See Table 4.224', 'FIREODT'], '2': ['Haines Index', 'Numeric', 'HINDEX'], '3': ['Fire Burned Area', '%', 'FBAREA'], '4': ['Fosberg Index', 'Numeric', 'FOSINDX'], '5': ['Fire Weath Index (Canadian Forest Service)', 'Numeric', 'FWINX'], '6': ['Fine Fuel Moisture Code (Canadian Forest Service)', 'Numeric', 'FFMCODE'], '7': ['Duff Moisture Code (Canadian Forest Service)', 'Numeric', 'DUFMCODE'], '8': ['Drought Code (Canadian Forest Service)', 'Numeric', 'DRTCODE'], '9': ['Initial Fire Spread Index (Canadian Forest Service)', 'Numeric', 'INFSINX'], '10': ['Fire Build Up Index (Canadian Forest Service)', 'Numeric', 'FBUPINX'], '11': ['Fire Daily Severity Rating (Canadian Forest Service)', 'Numeric', 'FDSRTE'], '12': ['Keetch-Byram Drought Index', 'Numeric', 'KRIDX'], '13': ['Drought Factor (as defined by the Australian forest service)', 'Numeric', 'DRFACT'], '14': ['Rate of Spread (as defined by the Australian forest service)', 'm s-1', 'RATESPRD'], '15': ['Fire Danger index (as defined by the Australian forest service)', 'Numeric', 'FIREDIDX'], '16': ['Spread component (as defined by the US Forest Service National Fire Danger Rating System)', 'Numeric', 'SPRDCOMP'], '17': ['Burning Index (as defined by the Australian forest service)', 'Numeric', 'BURNIDX'], '18': ['Ignition Component (as defined by the Australian forest service)', '%', 'IGNCOMP'], '19': ['Energy Release Component (as defined by the Australian forest service)', 'J m-2', 'ENRELCOM'], '20-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline2.table_4_2_2_5", "modulename": "grib2io.tables.section4_discipline2", "qualname": "table_4_2_2_5", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Glacier Cover (see Note)', 'Proportion', 'GLACCOV'], '1': ['Glacier Temperature', 'K', 'GLACTMP'], '2-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3", "modulename": "grib2io.tables.section4_discipline3", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_0", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Scaled Radiance', 'Numeric', 'SRAD'], '1': ['Scaled Albedo', 'Numeric', 'SALBEDO'], '2': ['Scaled Brightness Temperature', 'Numeric', 'SBTMP'], '3': ['Scaled Precipitable Water', 'Numeric', 'SPWAT'], '4': ['Scaled Lifted Index', 'Numeric', 'SLFTI'], '5': ['Scaled Cloud Top Pressure', 'Numeric', 'SCTPRES'], '6': ['Scaled Skin Temperature', 'Numeric', 'SSTMP'], '7': ['Cloud Mask', 'See Table 4.217', 'CLOUDM'], '8': ['Pixel scene type', 'See Table 4.218', 'PIXST'], '9': ['Fire Detection Indicator', 'See Table 4.223', 'FIREDI'], '10-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_1", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Estimated Precipitation', 'kg m-2', 'ESTP'], '1': ['Instantaneous Rain Rate', 'kg m-2 s-1', 'IRRATE'], '2': ['Cloud Top Height', 'm', 'CTOPH'], '3': ['Cloud Top Height Quality Indicator', 'Code table 4.219', 'CTOPHQI'], '4': ['Estimated u-Component of Wind', 'm s-1', 'ESTUGRD'], '5': ['Estimated v-Component of Wind', 'm s-1', 'ESTVGRD'], '6': ['Number Of Pixels Used', 'Numeric', 'NPIXU'], '7': ['Solar Zenith Angle', '\u00b0', 'SOLZA'], '8': ['Relative Azimuth Angle', '\u00b0', 'RAZA'], '9': ['Reflectance in 0.6 Micron Channel', '%', 'RFL06'], '10': ['Reflectance in 0.8 Micron Channel', '%', 'RFL08'], '11': ['Reflectance in 1.6 Micron Channel', '%', 'RFL16'], '12': ['Reflectance in 3.9 Micron Channel', '%', 'RFL39'], '13': ['Atmospheric Divergence', 's-1', 'ATMDIV'], '14': ['Cloudy Brightness Temperature', 'K', 'CBTMP'], '15': ['Clear Sky Brightness Temperature', 'K', 'CSBTMP'], '16': ['Cloudy Radiance (with respect to wave number)', 'W m-1 sr-1', 'CLDRAD'], '17': ['Clear Sky Radiance (with respect to wave number)', 'W m-1 sr-1', 'CSKYRAD'], '18': ['Reserved', 'unknown', 'unknown'], '19': ['Wind Speed', 'm s-1', 'WINDS'], '20': ['Aerosol Optical Thickness at 0.635 \u00b5m', 'unknown', 'AOT06'], '21': ['Aerosol Optical Thickness at 0.810 \u00b5m', 'unknown', 'AOT08'], '22': ['Aerosol Optical Thickness at 1.640 \u00b5m', 'unknown', 'AOT16'], '23': ['Angstrom Coefficient', 'unknown', 'ANGCOE'], '24-26': ['Reserved', 'unknown', 'unknown'], '27': ['Bidirectional Reflecance Factor', 'Numeric', 'BRFLF'], '28': ['Brightness Temperature', 'K', 'SPBRT'], '29': ['Scaled Radiance', 'Numeric', 'SCRAD'], '30-97': ['Reserved', 'unknown', 'unknown'], '98': ['Correlation coefficient between MPE rain rates for the co-located IR data and the microwave data rain rates', 'Numeric', 'CCMPEMRR'], '99': ['Standard deviation between MPE rain rates for the co-located IR data and the microwave data rain rates', 'Numeric', 'SDMPEMRR'], '100-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Scatterometer Estimated U Wind Component', 'm s-1', 'USCT'], '193': ['Scatterometer Estimated V Wind Component', 'm s-1', 'VSCT'], '194': ['Scatterometer Wind Quality', 'unknown', 'SWQI'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_2", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Clear Sky Probability', '%', 'CSKPROB'], '1': ['Cloud Top Temperature', 'K', 'CTOPTMP'], '2': ['Cloud Top Pressure', 'Pa', 'CTOPRES'], '3': ['Cloud Type', 'See Table 4.218', 'CLDTYPE'], '4': ['Cloud Phase', 'See Table 4.218', 'CLDPHAS'], '5': ['Cloud Optical Depth', 'Numeric', 'CLDODEP'], '6': ['Cloud Particle Effective Radius', 'm', 'CLDPER'], '7': ['Cloud Liquid Water Path', 'kg m-2', 'CLDLWP'], '8': ['Cloud Ice Water Path', 'kg m-2', 'CLDIWP'], '9': ['Cloud Albedo', 'Numeric', 'CLDALB'], '10': ['Cloud Emissivity', 'Numeric', 'CLDEMISS'], '11': ['Effective Absorption Optical Depth Ratio', 'Numeric', 'EAODR'], '12-29': ['Reserved', 'unknown', 'unknown'], '30': ['Measurement cost', 'Numeric', 'MEACST'], '41-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_3", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_3", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Probability of Encountering Marginal Visual Flight Rules Conditions', '%', 'PBMVFRC'], '1': ['Probability of Encountering Low Instrument Flight Rules Conditions', '%', 'PBLIFRC'], '2': ['Probability of Encountering Instrument Flight Rules Conditions', '%', 'PBINFRC'], '3-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_4", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_4", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Volcanic Ash Probability', '%', 'VOLAPROB'], '1': ['Volcanic Ash Cloud Top Temperature', 'K', 'VOLACDTT'], '2': ['Volcanic Ash Cloud Top Pressure', 'Pa', 'VOLACDTP'], '3': ['Volcanic Ash Cloud Top Height', 'm', 'VOLACDTH'], '4': ['Volcanic Ash Cloud Emissity', 'Numeric', 'VOLACDEM'], '5': ['Volcanic Ash Effective Absorption Depth Ratio', 'Numeric', 'VOLAEADR'], '6': ['Volcanic Ash Cloud Optical Depth', 'Numeric', 'VOLACDOD'], '7': ['Volcanic Ash Column Density', 'kg m-2', 'VOLACDEN'], '8': ['Volcanic Ash Particle Effective Radius', 'm', 'VOLAPER'], '9-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_5", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_5", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Interface Sea-Surface Temperature', 'K', 'ISSTMP'], '1': ['Skin Sea-Surface Temperature', 'K', 'SKSSTMP'], '2': ['Sub-Skin Sea-Surface Temperature', 'K', 'SSKSSTMP'], '3': ['Foundation Sea-Surface Temperature', 'K', 'FDNSSTMP'], '4': ['Estimated bias between Sea-Surface Temperature and Standard', 'K', 'EBSSTSTD'], '5': ['Estimated bias Standard Deviation between Sea-Surface Temperature and Standard', 'K', 'EBSDSSTS'], '6-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_6", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_6", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Global Solar Irradiance', 'W m-2', 'GSOLIRR'], '1': ['Global Solar Exposure', 'J m-2', 'GSOLEXP'], '2': ['Direct Solar Irradiance', 'W m-2', 'DIRSOLIR'], '3': ['Direct Solar Exposure', 'J m-2', 'DIRSOLEX'], '4': ['Diffuse Solar Irradiance', 'W m-2', 'DIFSOLIR'], '5': ['Diffuse Solar Exposure', 'J m-2', 'DIFSOLEX'], '6-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_192", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_192", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Simulated Brightness Temperature for GOES 12, Channel 2', 'K', 'SBT122'], '1': ['Simulated Brightness Temperature for GOES 12, Channel 3', 'K', 'SBT123'], '2': ['Simulated Brightness Temperature for GOES 12, Channel 4', 'K', 'SBT124'], '3': ['Simulated Brightness Temperature for GOES 12, Channel 6', 'K', 'SBT126'], '4': ['Simulated Brightness Counts for GOES 12, Channel 3', 'Byte', 'SBC123'], '5': ['Simulated Brightness Counts for GOES 12, Channel 4', 'Byte', 'SBC124'], '6': ['Simulated Brightness Temperature for GOES 11, Channel 2', 'K', 'SBT112'], '7': ['Simulated Brightness Temperature for GOES 11, Channel 3', 'K', 'SBT113'], '8': ['Simulated Brightness Temperature for GOES 11, Channel 4', 'K', 'SBT114'], '9': ['Simulated Brightness Temperature for GOES 11, Channel 5', 'K', 'SBT115'], '10': ['Simulated Brightness Temperature for AMSRE on Aqua, Channel 9', 'K', 'AMSRE9'], '11': ['Simulated Brightness Temperature for AMSRE on Aqua, Channel 10', 'K', 'AMSRE10'], '12': ['Simulated Brightness Temperature for AMSRE on Aqua, Channel 11', 'K', 'AMSRE11'], '13': ['Simulated Brightness Temperature for AMSRE on Aqua, Channel 12', 'K', 'AMSRE12'], '14': ['Simulated Reflectance Factor for ABI GOES-16, Band-1', 'unknown', 'SRFA161'], '15': ['Simulated Reflectance Factor for ABI GOES-16, Band-2', 'unknown', 'SRFA162'], '16': ['Simulated Reflectance Factor for ABI GOES-16, Band-3', 'unknown', 'SRFA163'], '17': ['Simulated Reflectance Factor for ABI GOES-16, Band-4', 'unknown', 'SRFA164'], '18': ['Simulated Reflectance Factor for ABI GOES-16, Band-5', 'unknown', 'SRFA165'], '19': ['Simulated Reflectance Factor for ABI GOES-16, Band-6', 'unknown', 'SRFA166'], '20': ['Simulated Brightness Temperature for ABI GOES-16, Band-7', 'K', 'SBTA167'], '21': ['Simulated Brightness Temperature for ABI GOES-16, Band-8', 'K', 'SBTA168'], '22': ['Simulated Brightness Temperature for ABI GOES-16, Band-9', 'K', 'SBTA169'], '23': ['Simulated Brightness Temperature for ABI GOES-16, Band-10', 'K', 'SBTA1610'], '24': ['Simulated Brightness Temperature for ABI GOES-16, Band-11', 'K', 'SBTA1611'], '25': ['Simulated Brightness Temperature for ABI GOES-16, Band-12', 'K', 'SBTA1612'], '26': ['Simulated Brightness Temperature for ABI GOES-16, Band-13', 'K', 'SBTA1613'], '27': ['Simulated Brightness Temperature for ABI GOES-16, Band-14', 'K', 'SBTA1614'], '28': ['Simulated Brightness Temperature for ABI GOES-16, Band-15', 'K', 'SBTA1615'], '29': ['Simulated Brightness Temperature for ABI GOES-16, Band-16', 'K', 'SBTA1616'], '30': ['Simulated Reflectance Factor for ABI GOES-17, Band-1', 'unknown', 'SRFA171'], '31': ['Simulated Reflectance Factor for ABI GOES-17, Band-2', 'unknown', 'SRFA172'], '32': ['Simulated Reflectance Factor for ABI GOES-17, Band-3', 'unknown', 'SRFA173'], '33': ['Simulated Reflectance Factor for ABI GOES-17, Band-4', 'unknown', 'SRFA174'], '34': ['Simulated Reflectance Factor for ABI GOES-17, Band-5', 'unknown', 'SRFA175'], '35': ['Simulated Reflectance Factor for ABI GOES-17, Band-6', 'unknown', 'SRFA176'], '36': ['Simulated Brightness Temperature for ABI GOES-17, Band-7', 'K', 'SBTA177'], '37': ['Simulated Brightness Temperature for ABI GOES-17, Band-8', 'K', 'SBTA178'], '38': ['Simulated Brightness Temperature for ABI GOES-17, Band-9', 'K', 'SBTA179'], '39': ['Simulated Brightness Temperature for ABI GOES-17, Band-10', 'K', 'SBTA1710'], '40': ['Simulated Brightness Temperature for ABI GOES-17, Band-11', 'K', 'SBTA1711'], '41': ['Simulated Brightness Temperature for ABI GOES-17, Band-12', 'K', 'SBTA1712'], '42': ['Simulated Brightness Temperature for ABI GOES-17, Band-13', 'K', 'SBTA1713'], '43': ['Simulated Brightness Temperature for ABI GOES-17, Band-14', 'K', 'SBTA1714'], '44': ['Simulated Brightness Temperature for ABI GOES-17, Band-15', 'K', 'SBTA1715'], '45': ['Simulated Brightness Temperature for ABI GOES-17, Band-16', 'K', 'SBTA1716'], '46': ['Simulated Reflectance Factor for nadir ABI GOES-R, Band-1', 'unknown', 'SRFAGR1'], '47': ['Simulated Reflectance Factor for nadir ABI GOES-R, Band-2', 'unknown', 'SRFAGR2'], '48': ['Simulated Reflectance Factor for nadir ABI GOES-R, Band-3', 'unknown', 'SRFAGR3'], '49': ['Simulated Reflectance Factor for nadir ABI GOES-R, Band-4', 'unknown', 'SRFAGR4'], '50': ['Simulated Reflectance Factor for nadir ABI GOES-R, Band-5', 'unknown', 'SRFAGR5'], '51': ['Simulated Reflectance Factor for nadir ABI GOES-R, Band-6', 'unknown', 'SRFAGR6'], '52': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-7', 'unknown', 'SBTAGR7'], '53': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-8', 'unknown', 'SBTAGR8'], '54': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-9', 'unknown', 'SBTAGR9'], '55': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-10', 'unknown', 'SBTAGR10'], '56': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-11', 'unknown', 'SBTAGR11'], '57': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-12', 'unknown', 'SBTAGR12'], '58': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-13', 'unknown', 'SBTAGR13'], '59': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-14', 'unknown', 'SBTAGR14'], '60': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-15', 'unknown', 'SBTAGR15'], '61': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-16', 'unknown', 'SBTAGR16'], '62': ['Simulated Brightness Temperature for SSMIS-F17, Channel 15', 'K', 'SSMS1715'], '63': ['Simulated Brightness Temperature for SSMIS-F17, Channel 16', 'K', 'SSMS1716'], '64': ['Simulated Brightness Temperature for SSMIS-F17, Channel 17', 'K', 'SSMS1717'], '65': ['Simulated Brightness Temperature for SSMIS-F17, Channel 18', 'K', 'SSMS1718'], '66': ['Simulated Brightness Temperature for Himawari-8, Band-7', 'K', 'SBTAHI7'], '67': ['Simulated Brightness Temperature for Himawari-8, Band-8', 'K', 'SBTAHI8'], '68': ['Simulated Brightness Temperature for Himawari-8, Band-9', 'K', 'SBTAHI9'], '69': ['Simulated Brightness Temperature for Himawari-8, Band-10', 'K', 'SBTAHI10'], '70': ['Simulated Brightness Temperature for Himawari-8, Band-11', 'K', 'SBTAHI11'], '71': ['Simulated Brightness Temperature for Himawari-8, Band-12', 'K', 'SBTAHI12'], '72': ['Simulated Brightness Temperature for Himawari-8, Band-13', 'K', 'SBTAHI13'], '73': ['Simulated Brightness Temperature for Himawari-8, Band-14', 'K', 'SBTAHI14'], '74': ['Simulated Brightness Temperature for Himawari-8, Band-15', 'K', 'SBTAHI15'], '75': ['Simulated Brightness Temperature for Himawari-8, Band-16', 'K', 'SBTAHI16'], '76': ['Simulated Brightness Temperature for ABI GOES-18, Band-7', 'K', 'SBTA187'], '77': ['Simulated Brightness Temperature for ABI GOES-18, Band-8', 'K', 'SBTA188'], '78': ['Simulated Brightness Temperature for ABI GOES-18, Band-9', 'K', 'SBTA189'], '79': ['Simulated Brightness Temperature for ABI GOES-18, Band-10', 'K', 'SBTA1810'], '80': ['Simulated Brightness Temperature for ABI GOES-18, Band-11', 'K', 'SBTA1811'], '81': ['Simulated Brightness Temperature for ABI GOES-18, Band-12', 'K', 'SBTA1812'], '82': ['Simulated Brightness Temperature for ABI GOES-18, Band-13', 'K', 'SBTA1813'], '83': ['Simulated Brightness Temperature for ABI GOES-18, Band-14', 'K', 'SBTA1814'], '84': ['Simulated Brightness Temperature for ABI GOES-18, Band-15', 'K', 'SBTA1815'], '85': ['Simulated Brightness Temperature for ABI GOES-18, Band-16', 'K', 'SBTA1816'], '86-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4", "modulename": "grib2io.tables.section4_discipline4", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_0", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Temperature', 'K', 'TMPSWP'], '1': ['Electron Temperature', 'K', 'ELECTMP'], '2': ['Proton Temperature', 'K', 'PROTTMP'], '3': ['Ion Temperature', 'K', 'IONTMP'], '4': ['Parallel Temperature', 'K', 'PRATMP'], '5': ['Perpendicular Temperature', 'K', 'PRPTMP'], '6-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_1", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Velocity Magnitude (Speed)', 'm s-1', 'SPEED'], '1': ['1st Vector Component of Velocity (Coordinate system dependent)', 'm s-1', 'VEL1'], '2': ['2nd Vector Component of Velocity (Coordinate system dependent)', 'm s-1', 'VEL2'], '3': ['3rd Vector Component of Velocity (Coordinate system dependent)', 'm s-1', 'VEL3'], '4-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_2", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Particle Number Density', 'm-3', 'PLSMDEN'], '1': ['Electron Density', 'm-3', 'ELCDEN'], '2': ['Proton Density', 'm-3', 'PROTDEN'], '3': ['Ion Density', 'm-3', 'IONDEN'], '4': ['Vertical Electron Content', 'm-2', 'VTEC'], '5': ['HF Absorption Frequency', 'Hz', 'ABSFRQ'], '6': ['HF Absorption', 'dB', 'ABSRB'], '7': ['Spread F', 'm', 'SPRDF'], '8': ['hF', 'm', 'HPRIMF'], '9': ['Critical Frequency', 'Hz', 'CRTFRQ'], '10': ['Maximal Usable Frequency (MUF)', 'Hz', 'MAXUFZ'], '11': ['Peak Height (hm)', 'm', 'PEAKH'], '12': ['Peak Density', 'm-3', 'PEAKDEN'], '13': ['Equivalent Slab Thickness (tau)', 'km', 'EQSLABT'], '14-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_3", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_3", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Magnetic Field Magnitude', 'T', 'BTOT'], '1': ['1st Vector Component of Magnetic Field', 'T', 'BVEC1'], '2': ['2nd Vector Component of Magnetic Field', 'T', 'BVEC2'], '3': ['3rd Vector Component of Magnetic Field', 'T', 'BVEC3'], '4': ['Electric Field Magnitude', 'V m-1', 'ETOT'], '5': ['1st Vector Component of Electric Field', 'V m-1', 'EVEC1'], '6': ['2nd Vector Component of Electric Field', 'V m-1', 'EVEC2'], '7': ['3rd Vector Component of Electric Field', 'V m-1', 'EVEC3'], '8-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_4", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_4", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Proton Flux (Differential)', '(m2 s sr eV)-1', 'DIFPFLUX'], '1': ['Proton Flux (Integral)', '(m2 s sr)-1', 'INTPFLUX'], '2': ['Electron Flux (Differential)', '(m2 s sr eV)-1', 'DIFEFLUX'], '3': ['Electron Flux (Integral)', '(m2 s sr)-1', 'INTEFLUX'], '4': ['Heavy Ion Flux (Differential)', '(m2 s sr eV / nuc)-1', 'DIFIFLUX'], '5': ['Heavy Ion Flux (iIntegral)', '(m2 s sr)-1', 'INTIFLUX'], '6': ['Cosmic Ray Neutron Flux', 'h-1', 'NTRNFLUX'], '7-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_5", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_5", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Amplitude', 'rad', 'AMPL'], '1': ['Phase', 'rad', 'PHASE'], '2': ['Frequency', 'Hz', 'FREQ'], '3': ['Wavelength', 'm', 'WAVELGTH'], '4-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_6", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_6", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Integrated Solar Irradiance', 'W m-2', 'TSI'], '1': ['Solar X-ray Flux (XRS Long)', 'W m-2', 'XLONG'], '2': ['Solar X-ray Flux (XRS Short)', 'W m-2', 'XSHRT'], '3': ['Solar EUV Irradiance', 'W m-2', 'EUVIRR'], '4': ['Solar Spectral Irradiance', 'W m-2 nm-1', 'SPECIRR'], '5': ['F10.7', 'W m-2 Hz-1', 'F107'], '6': ['Solar Radio Emissions', 'W m-2 Hz-1', 'SOLRF'], '7-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_7", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_7", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Limb Intensity', 'm-2 s-1', 'LMBINT'], '1': ['Disk Intensity', 'm-2 s-1', 'DSKINT'], '2': ['Disk Intensity Day', 'm-2 s-1', 'DSKDAY'], '3': ['Disk Intensity Night', 'm-2 s-1', 'DSKNGT'], '4-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_8", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_8", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['X-Ray Radiance', 'W sr-1 m-2', 'XRAYRAD'], '1': ['EUV Radiance', 'W sr-1 m-2', 'EUVRAD'], '2': ['H-Alpha Radiance', 'W sr-1 m-2', 'HARAD'], '3': ['White Light Radiance', 'W sr-1 m-2', 'WHTRAD'], '4': ['CaII-K Radiance', 'W sr-1 m-2', 'CAIIRAD'], '5': ['White Light Coronagraph Radiance', 'W sr-1 m-2', 'WHTCOR'], '6': ['Heliospheric Radiance', 'W sr-1 m-2', 'HELCOR'], '7': ['Thematic Mask', 'Numeric', 'MASK'], '8-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_9", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_9", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Pedersen Conductivity', 'S m-1', 'SIGPED'], '1': ['Hall Conductivity', 'S m-1', 'SIGHAL'], '2': ['Parallel Conductivity', 'S m-1', 'SIGPAR'], '3-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section5", "modulename": "grib2io.tables.section5", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section5.table_5_0", "modulename": "grib2io.tables.section5", "qualname": "table_5_0", "kind": "variable", "doc": "

    \n", "default_value": "{'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 - JPEG 2000 code stream format (see Template 5.40)', '41': 'Grid point data - Portable Network Graphics (PNG) (see Template 5.41)', '42': 'Grid point data - CCSDS recommended lossless compression (see Template 5.42)', '43-49': 'Reserved', '50': 'Spectral Data - Simple Packing (see Template 5.50)', '51': 'Spectral Data - Complex Packing (see Template 5.51)', '52': 'Reserved', '53': 'Spectral data for limited area models - complex packing (see Template 5.53)', '54-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': 'Reserved', '49152-65534': 'Reserved for Local Use', '65535': 'Missing'}"}, {"fullname": "grib2io.tables.section5.table_5_1", "modulename": "grib2io.tables.section5", "qualname": "table_5_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Floating Point', '1': 'Integer', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section5.table_5_2", "modulename": "grib2io.tables.section5", "qualname": "table_5_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Explicit Coordinate Values Set', '1': 'Linear Coordinates f(1) = C1 f(n) = f(n-1) + C2', '2-10': 'Reserved', '11': 'Geometric Coordinates f(1) = C1 f(n) = C2 x f(n-1)', '12-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section5.table_5_3", "modulename": "grib2io.tables.section5", "qualname": "table_5_3", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'Direction Degrees True', '2': 'Frequency (s-1)', '3': 'Radial Number (2pi/lamda) (m-1)', '4-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section5.table_5_4", "modulename": "grib2io.tables.section5", "qualname": "table_5_4", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Row by Row Splitting', '1': 'General Group Splitting', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section5.table_5_5", "modulename": "grib2io.tables.section5", "qualname": "table_5_5", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No explicit missing values included within the data values', '1': 'Primary missing values included within the data values', '2': 'Primary and secondary missing values included within the data values', '3-191': 'Reserved', '192-254': 'Reserved for Local Use'}"}, {"fullname": "grib2io.tables.section5.table_5_6", "modulename": "grib2io.tables.section5", "qualname": "table_5_6", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'First-Order Spatial Differencing', '2': 'Second-Order Spatial Differencing', '3-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section5.table_5_7", "modulename": "grib2io.tables.section5", "qualname": "table_5_7", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'IEEE 32-bit (I=4 in Section 7)', '2': 'IEEE 64-bit (I=8 in Section 7)', '3': 'IEEE 128-bit (I=16 in Section 7)', '4-254': 'Reserved', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section5.table_5_40", "modulename": "grib2io.tables.section5", "qualname": "table_5_40", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Lossless', '1': 'Lossy', '2-254': 'Reserved', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section6", "modulename": "grib2io.tables.section6", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section6.table_6_0", "modulename": "grib2io.tables.section6", "qualname": "table_6_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'A bit map applies to this product and is specified in this section.', '1-253': 'A bit map pre-determined by the orginating/generating center applies to this product and is not specified in this section.', '254': 'A bit map previously defined in the same GRIB2 message applies to this product.', '255': 'A bit map does not apply to this product.'}"}, {"fullname": "grib2io.templates", "modulename": "grib2io.templates", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.templates.Grib2Metadata", "modulename": "grib2io.templates", "qualname": "Grib2Metadata", "kind": "class", "doc": "

    Class to hold GRIB2 metadata both as numeric code value as stored in\nGRIB2 and its plain langauge definition.

    \n\n

    value : int

    \n\n

    GRIB2 metadata integer code value.

    \n\n

    table : str, optional

    \n\n

    GRIB2 table to lookup the value. Default is None.

    \n"}, {"fullname": "grib2io.templates.Grib2Metadata.__init__", "modulename": "grib2io.templates", "qualname": "Grib2Metadata.__init__", "kind": "function", "doc": "

    \n", "signature": "(value, table=None)"}, {"fullname": "grib2io.templates.Grib2Metadata.value", "modulename": "grib2io.templates", "qualname": "Grib2Metadata.value", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.templates.Grib2Metadata.table", "modulename": "grib2io.templates", "qualname": "Grib2Metadata.table", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.templates.Grib2Metadata.definition", "modulename": "grib2io.templates", "qualname": "Grib2Metadata.definition", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.templates.IndicatorSection", "modulename": "grib2io.templates", "qualname": "IndicatorSection", "kind": "class", "doc": "

    GRIB2 Section 0, Indicator Section

    \n"}, {"fullname": "grib2io.templates.Discipline", "modulename": "grib2io.templates", "qualname": "Discipline", "kind": "class", "doc": "

    Discipline From Table 0.0

    \n"}, {"fullname": "grib2io.templates.IdentificationSection", "modulename": "grib2io.templates", "qualname": "IdentificationSection", "kind": "class", "doc": "

    GRIB2 Section 1, Identification Section

    \n"}, {"fullname": "grib2io.templates.OriginatingCenter", "modulename": "grib2io.templates", "qualname": "OriginatingCenter", "kind": "class", "doc": "

    Identification of originating/generating center\n(See Table 0)

    \n"}, {"fullname": "grib2io.templates.OriginatingSubCenter", "modulename": "grib2io.templates", "qualname": "OriginatingSubCenter", "kind": "class", "doc": "

    Identification of originating/generating subcenter\n(See Table C)

    \n"}, {"fullname": "grib2io.templates.MasterTableInfo", "modulename": "grib2io.templates", "qualname": "MasterTableInfo", "kind": "class", "doc": "

    GRIB master tables version number (currently 2)\n(See Table 1.0)

    \n"}, {"fullname": "grib2io.templates.LocalTableInfo", "modulename": "grib2io.templates", "qualname": "LocalTableInfo", "kind": "class", "doc": "

    Version number of GRIB local tables used to augment Master Tables\n(See Table 1.1)

    \n"}, {"fullname": "grib2io.templates.SignificanceOfReferenceTime", "modulename": "grib2io.templates", "qualname": "SignificanceOfReferenceTime", "kind": "class", "doc": "

    Significance of reference time (See Table 1.2)

    \n"}, {"fullname": "grib2io.templates.Year", "modulename": "grib2io.templates", "qualname": "Year", "kind": "class", "doc": "

    Year of reference time

    \n"}, {"fullname": "grib2io.templates.Month", "modulename": "grib2io.templates", "qualname": "Month", "kind": "class", "doc": "

    Month of reference time

    \n"}, {"fullname": "grib2io.templates.Day", "modulename": "grib2io.templates", "qualname": "Day", "kind": "class", "doc": "

    Day of reference time

    \n"}, {"fullname": "grib2io.templates.Hour", "modulename": "grib2io.templates", "qualname": "Hour", "kind": "class", "doc": "

    Hour of reference time

    \n"}, {"fullname": "grib2io.templates.Minute", "modulename": "grib2io.templates", "qualname": "Minute", "kind": "class", "doc": "

    Minute of reference time

    \n"}, {"fullname": "grib2io.templates.Second", "modulename": "grib2io.templates", "qualname": "Second", "kind": "class", "doc": "

    Second of reference time

    \n"}, {"fullname": "grib2io.templates.RefDate", "modulename": "grib2io.templates", "qualname": "RefDate", "kind": "class", "doc": "

    Reference date as a datetime.datetime object

    \n"}, {"fullname": "grib2io.templates.ProductionStatus", "modulename": "grib2io.templates", "qualname": "ProductionStatus", "kind": "class", "doc": "

    Production Status of Processed data in the GRIB message\n(See Table 1.3)

    \n"}, {"fullname": "grib2io.templates.TypeOfData", "modulename": "grib2io.templates", "qualname": "TypeOfData", "kind": "class", "doc": "

    Type of processed data in this GRIB message\n(See Table 1.4)

    \n"}, {"fullname": "grib2io.templates.GridDefinitionSection", "modulename": "grib2io.templates", "qualname": "GridDefinitionSection", "kind": "class", "doc": "

    GRIB2 Section 3, Grid Definition Section

    \n"}, {"fullname": "grib2io.templates.SourceOfGridDefinition", "modulename": "grib2io.templates", "qualname": "SourceOfGridDefinition", "kind": "class", "doc": "

    Source of grid definition\n[(See Table 3.0)](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-0.shtml

    \n"}, {"fullname": "grib2io.templates.NumberOfDataPoints", "modulename": "grib2io.templates", "qualname": "NumberOfDataPoints", "kind": "class", "doc": "

    Number of Data Points

    \n"}, {"fullname": "grib2io.templates.InterpretationOfListOfNumbers", "modulename": "grib2io.templates", "qualname": "InterpretationOfListOfNumbers", "kind": "class", "doc": "

    Interpretation of List of Numbers

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplateNumber", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplateNumber", "kind": "class", "doc": "

    Grid definition template number\n[(See Table 3.1)](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-1.shtml

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate", "kind": "class", "doc": "

    Grid definition template

    \n"}, {"fullname": "grib2io.templates.EarthParams", "modulename": "grib2io.templates", "qualname": "EarthParams", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DxSign", "modulename": "grib2io.templates", "qualname": "DxSign", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DySign", "modulename": "grib2io.templates", "qualname": "DySign", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LLScaleFactor", "modulename": "grib2io.templates", "qualname": "LLScaleFactor", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LLDivisor", "modulename": "grib2io.templates", "qualname": "LLDivisor", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.XYDivisor", "modulename": "grib2io.templates", "qualname": "XYDivisor", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ShapeOfEarth", "modulename": "grib2io.templates", "qualname": "ShapeOfEarth", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.EarthRadius", "modulename": "grib2io.templates", "qualname": "EarthRadius", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.EarthMajorAxis", "modulename": "grib2io.templates", "qualname": "EarthMajorAxis", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.EarthMinorAxis", "modulename": "grib2io.templates", "qualname": "EarthMinorAxis", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.Nx", "modulename": "grib2io.templates", "qualname": "Nx", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.Ny", "modulename": "grib2io.templates", "qualname": "Ny", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScanModeFlags", "modulename": "grib2io.templates", "qualname": "ScanModeFlags", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ResolutionAndComponentFlags", "modulename": "grib2io.templates", "qualname": "ResolutionAndComponentFlags", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LatitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "LatitudeFirstGridpoint", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LongitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "LongitudeFirstGridpoint", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LatitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "LatitudeLastGridpoint", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LongitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "LongitudeLastGridpoint", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridlengthXDirection", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridlengthYDirection", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LatitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "LatitudeSouthernPole", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LongitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "LongitudeSouthernPole", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.AnglePoleRotation", "modulename": "grib2io.templates", "qualname": "AnglePoleRotation", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LatitudeTrueScale", "modulename": "grib2io.templates", "qualname": "LatitudeTrueScale", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridOrientation", "modulename": "grib2io.templates", "qualname": "GridOrientation", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ProjectionCenterFlag", "modulename": "grib2io.templates", "qualname": "ProjectionCenterFlag", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.StandardLatitude1", "modulename": "grib2io.templates", "qualname": "StandardLatitude1", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.StandardLatitude2", "modulename": "grib2io.templates", "qualname": "StandardLatitude2", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.SpectralFunctionParameters", "modulename": "grib2io.templates", "qualname": "SpectralFunctionParameters", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ProjParameters", "modulename": "grib2io.templates", "qualname": "ProjParameters", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate0", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate0", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate0.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate0.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate0.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate0.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate0.latitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate0.latitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate0.longitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate0.longitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate0.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate0.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate0.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate0.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.latitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.latitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.longitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.longitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.latitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.latitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.longitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.longitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.anglePoleRotation", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.anglePoleRotation", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.latitudeTrueScale", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.latitudeTrueScale", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.latitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.latitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.longitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.longitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.gridOrientation", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.gridOrientation", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.projParameters", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.projParameters", "kind": "variable", "doc": "

    \n", "annotation": ": dict"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.latitudeTrueScale", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.latitudeTrueScale", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.gridOrientation", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.gridOrientation", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.projectionCenterFlag", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.projectionCenterFlag", "kind": "variable", "doc": "

    \n", "annotation": ": list"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.projParameters", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.projParameters", "kind": "variable", "doc": "

    \n", "annotation": ": dict"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.latitudeTrueScale", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.latitudeTrueScale", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.gridOrientation", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.gridOrientation", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.projectionCenterFlag", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.projectionCenterFlag", "kind": "variable", "doc": "

    \n", "annotation": ": list"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.standardLatitude1", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.standardLatitude1", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.standardLatitude2", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.standardLatitude2", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.latitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.latitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.longitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.longitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.projParameters", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.projParameters", "kind": "variable", "doc": "

    \n", "annotation": ": dict"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.latitudeTrueScale", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.latitudeTrueScale", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.gridOrientation", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.gridOrientation", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.projectionCenterFlag", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.projectionCenterFlag", "kind": "variable", "doc": "

    \n", "annotation": ": list"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.standardLatitude1", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.standardLatitude1", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.standardLatitude2", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.standardLatitude2", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.latitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.latitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.longitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.longitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate40", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate40", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate40.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate40.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate40.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate40.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate40.latitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate40.latitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate40.longitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate40.longitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate40.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate40.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate40.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate40.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.latitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.latitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.longitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.longitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.latitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.latitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.longitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.longitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.anglePoleRotation", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.anglePoleRotation", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate50", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate50", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate50.spectralFunctionParameters", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate50.spectralFunctionParameters", "kind": "variable", "doc": "

    \n", "annotation": ": list"}, {"fullname": "grib2io.templates.gdt_class_by_gdtn", "modulename": "grib2io.templates", "qualname": "gdt_class_by_gdtn", "kind": "function", "doc": "

    \n", "signature": "(gdtn):", "funcdef": "def"}, {"fullname": "grib2io.templates.ProductDefinitionTemplateNumber", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplateNumber", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ParameterCategory", "modulename": "grib2io.templates", "qualname": "ParameterCategory", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ParameterNumber", "modulename": "grib2io.templates", "qualname": "ParameterNumber", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.VarInfo", "modulename": "grib2io.templates", "qualname": "VarInfo", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.FullName", "modulename": "grib2io.templates", "qualname": "FullName", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.Units", "modulename": "grib2io.templates", "qualname": "Units", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ShortName", "modulename": "grib2io.templates", "qualname": "ShortName", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfGeneratingProcess", "modulename": "grib2io.templates", "qualname": "TypeOfGeneratingProcess", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.BackgroundGeneratingProcessIdentifier", "modulename": "grib2io.templates", "qualname": "BackgroundGeneratingProcessIdentifier", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GeneratingProcess", "modulename": "grib2io.templates", "qualname": "GeneratingProcess", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.HoursAfterDataCutoff", "modulename": "grib2io.templates", "qualname": "HoursAfterDataCutoff", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.MinutesAfterDataCutoff", "modulename": "grib2io.templates", "qualname": "MinutesAfterDataCutoff", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.UnitOfTimeRange", "modulename": "grib2io.templates", "qualname": "UnitOfTimeRange", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ForecastTime", "modulename": "grib2io.templates", "qualname": "ForecastTime", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LeadTime", "modulename": "grib2io.templates", "qualname": "LeadTime", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.FixedSfc1Info", "modulename": "grib2io.templates", "qualname": "FixedSfc1Info", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.FixedSfc2Info", "modulename": "grib2io.templates", "qualname": "FixedSfc2Info", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "TypeOfFirstFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfFirstFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "ScaledValueOfFirstFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.UnitOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "UnitOfFirstFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ValueOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "ValueOfFirstFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "TypeOfSecondFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfSecondFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "ScaledValueOfSecondFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.UnitOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "UnitOfSecondFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ValueOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "ValueOfSecondFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.Level", "modulename": "grib2io.templates", "qualname": "Level", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfEnsembleForecast", "modulename": "grib2io.templates", "qualname": "TypeOfEnsembleForecast", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.PerturbationNumber", "modulename": "grib2io.templates", "qualname": "PerturbationNumber", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NumberOfEnsembleForecasts", "modulename": "grib2io.templates", "qualname": "NumberOfEnsembleForecasts", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfDerivedForecast", "modulename": "grib2io.templates", "qualname": "TypeOfDerivedForecast", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ForecastProbabilityNumber", "modulename": "grib2io.templates", "qualname": "ForecastProbabilityNumber", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TotalNumberOfForecastProbabilities", "modulename": "grib2io.templates", "qualname": "TotalNumberOfForecastProbabilities", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfProbability", "modulename": "grib2io.templates", "qualname": "TypeOfProbability", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfThresholdLowerLimit", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfThresholdLowerLimit", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfThresholdLowerLimit", "modulename": "grib2io.templates", "qualname": "ScaledValueOfThresholdLowerLimit", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ThresholdLowerLimit", "modulename": "grib2io.templates", "qualname": "ThresholdLowerLimit", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ThresholdUpperLimit", "modulename": "grib2io.templates", "qualname": "ThresholdUpperLimit", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.Threshold", "modulename": "grib2io.templates", "qualname": "Threshold", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.PercentileValue", "modulename": "grib2io.templates", "qualname": "PercentileValue", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.YearOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "YearOfEndOfTimePeriod", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.MonthOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "MonthOfEndOfTimePeriod", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DayOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "DayOfEndOfTimePeriod", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.HourOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "HourOfEndOfTimePeriod", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.MinuteOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "MinuteOfEndOfTimePeriod", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.SecondOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "SecondOfEndOfTimePeriod", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.Duration", "modulename": "grib2io.templates", "qualname": "Duration", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ValidDate", "modulename": "grib2io.templates", "qualname": "ValidDate", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NumberOfTimeRanges", "modulename": "grib2io.templates", "qualname": "NumberOfTimeRanges", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NumberOfMissingValues", "modulename": "grib2io.templates", "qualname": "NumberOfMissingValues", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.StatisticalProcess", "modulename": "grib2io.templates", "qualname": "StatisticalProcess", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfTimeIncrementOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "TypeOfTimeIncrementOfStatisticalProcess", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.UnitOfTimeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "UnitOfTimeRangeOfStatisticalProcess", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TimeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "TimeRangeOfStatisticalProcess", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.UnitOfTimeRangeOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "UnitOfTimeRangeOfSuccessiveFields", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TimeIncrementOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "TimeIncrementOfSuccessiveFields", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfStatisticalProcessing", "modulename": "grib2io.templates", "qualname": "TypeOfStatisticalProcessing", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NumberOfDataPointsForSpatialProcessing", "modulename": "grib2io.templates", "qualname": "NumberOfDataPointsForSpatialProcessing", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfAerosol", "modulename": "grib2io.templates", "qualname": "TypeOfAerosol", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfIntervalForAerosolSize", "modulename": "grib2io.templates", "qualname": "TypeOfIntervalForAerosolSize", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfFirstSize", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfFirstSize", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfFirstSize", "modulename": "grib2io.templates", "qualname": "ScaledValueOfFirstSize", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfSecondSize", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfSecondSize", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfSecondSize", "modulename": "grib2io.templates", "qualname": "ScaledValueOfSecondSize", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfIntervalForAerosolWavelength", "modulename": "grib2io.templates", "qualname": "TypeOfIntervalForAerosolWavelength", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfFirstWavelength", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfFirstWavelength", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfFirstWavelength", "modulename": "grib2io.templates", "qualname": "ScaledValueOfFirstWavelength", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfSecondWavelength", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfSecondWavelength", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfSecondWavelength", "modulename": "grib2io.templates", "qualname": "ScaledValueOfSecondWavelength", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.parameterCategory", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.parameterCategory", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.parameterNumber", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.parameterNumber", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.typeOfGeneratingProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.typeOfGeneratingProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.generatingProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.generatingProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.backgroundGeneratingProcessIdentifier", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.backgroundGeneratingProcessIdentifier", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.hoursAfterDataCutoff", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.hoursAfterDataCutoff", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.minutesAfterDataCutoff", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.minutesAfterDataCutoff", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.unitOfTimeRange", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.unitOfTimeRange", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.forecastTime", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.forecastTime", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.typeOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.typeOfFirstFixedSurface", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.scaleFactorOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.scaleFactorOfFirstFixedSurface", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.scaledValueOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.scaledValueOfFirstFixedSurface", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.typeOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.typeOfSecondFixedSurface", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.scaleFactorOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.scaleFactorOfSecondFixedSurface", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.scaledValueOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.scaledValueOfSecondFixedSurface", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate1", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate1", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate1.typeOfEnsembleForecast", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate1.typeOfEnsembleForecast", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate1.perturbationNumber", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate1.perturbationNumber", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate1.numberOfEnsembleForecasts", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate1.numberOfEnsembleForecasts", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate2", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate2", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate2.typeOfDerivedForecast", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate2.typeOfDerivedForecast", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate2.numberOfEnsembleForecasts", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate2.numberOfEnsembleForecasts", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.forecastProbabilityNumber", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.forecastProbabilityNumber", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.totalNumberOfForecastProbabilities", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.totalNumberOfForecastProbabilities", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.typeOfProbability", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.typeOfProbability", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.thresholdLowerLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.thresholdLowerLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.thresholdUpperLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.thresholdUpperLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.threshold", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.threshold", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate6", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate6", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate6.percentileValue", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate6.percentileValue", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.yearOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.yearOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.monthOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.monthOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.dayOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.dayOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.hourOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.hourOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.minuteOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.minuteOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.secondOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.secondOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.numberOfTimeRanges", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.numberOfTimeRanges", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.numberOfMissingValues", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.numberOfMissingValues", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.statisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.statisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.typeOfTimeIncrementOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.typeOfTimeIncrementOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.unitOfTimeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.unitOfTimeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.timeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.timeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.unitOfTimeRangeOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.unitOfTimeRangeOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.timeIncrementOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.timeIncrementOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.forecastProbabilityNumber", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.forecastProbabilityNumber", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.totalNumberOfForecastProbabilities", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.totalNumberOfForecastProbabilities", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.typeOfProbability", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.typeOfProbability", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.thresholdLowerLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.thresholdLowerLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.thresholdUpperLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.thresholdUpperLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.threshold", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.threshold", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.yearOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.yearOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.monthOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.monthOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.dayOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.dayOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.hourOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.hourOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.minuteOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.minuteOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.secondOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.secondOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.numberOfTimeRanges", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.numberOfTimeRanges", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.numberOfMissingValues", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.numberOfMissingValues", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.statisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.statisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.typeOfTimeIncrementOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.typeOfTimeIncrementOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.unitOfTimeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.unitOfTimeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.timeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.timeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.unitOfTimeRangeOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.unitOfTimeRangeOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.timeIncrementOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.timeIncrementOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.percentileValue", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.percentileValue", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.yearOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.yearOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.monthOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.monthOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.dayOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.dayOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.hourOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.hourOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.minuteOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.minuteOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.secondOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.secondOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.numberOfTimeRanges", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.numberOfTimeRanges", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.numberOfMissingValues", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.numberOfMissingValues", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.statisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.statisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.typeOfTimeIncrementOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.typeOfTimeIncrementOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.unitOfTimeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.unitOfTimeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.timeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.timeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.unitOfTimeRangeOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.unitOfTimeRangeOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.timeIncrementOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.timeIncrementOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.typeOfEnsembleForecast", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.typeOfEnsembleForecast", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.perturbationNumber", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.perturbationNumber", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.numberOfEnsembleForecasts", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.numberOfEnsembleForecasts", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.yearOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.yearOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.monthOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.monthOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.dayOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.dayOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.hourOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.hourOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.minuteOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.minuteOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.secondOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.secondOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.numberOfTimeRanges", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.numberOfTimeRanges", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.numberOfMissingValues", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.numberOfMissingValues", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.statisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.statisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.typeOfTimeIncrementOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.typeOfTimeIncrementOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.unitOfTimeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.unitOfTimeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.timeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.timeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.unitOfTimeRangeOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.unitOfTimeRangeOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.timeIncrementOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.timeIncrementOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.typeOfDerivedForecast", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.typeOfDerivedForecast", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.numberOfEnsembleForecasts", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.numberOfEnsembleForecasts", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.yearOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.yearOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.monthOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.monthOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.dayOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.dayOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.hourOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.hourOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.minuteOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.minuteOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.secondOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.secondOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.numberOfTimeRanges", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.numberOfTimeRanges", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.numberOfMissingValues", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.numberOfMissingValues", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.statisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.statisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.typeOfTimeIncrementOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.typeOfTimeIncrementOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.unitOfTimeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.unitOfTimeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.timeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.timeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.unitOfTimeRangeOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.unitOfTimeRangeOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.timeIncrementOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.timeIncrementOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate15", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate15", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate15.statisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate15.statisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate15.typeOfStatisticalProcessing", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate15.typeOfStatisticalProcessing", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate15.numberOfDataPointsForSpatialProcessing", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate15.numberOfDataPointsForSpatialProcessing", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.typeOfAerosol", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.typeOfAerosol", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.typeOfIntervalForAerosolSize", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.typeOfIntervalForAerosolSize", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaleFactorOfFirstSize", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaleFactorOfFirstSize", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaledValueOfFirstSize", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaledValueOfFirstSize", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaleFactorOfSecondSize", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaleFactorOfSecondSize", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaledValueOfSecondSize", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaledValueOfSecondSize", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.typeOfIntervalForAerosolWavelength", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.typeOfIntervalForAerosolWavelength", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaleFactorOfFirstWavelength", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaleFactorOfFirstWavelength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaledValueOfFirstWavelength", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaledValueOfFirstWavelength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaleFactorOfSecondWavelength", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaleFactorOfSecondWavelength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaledValueOfSecondWavelength", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaledValueOfSecondWavelength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.pdt_class_by_pdtn", "modulename": "grib2io.templates", "qualname": "pdt_class_by_pdtn", "kind": "function", "doc": "

    \n", "signature": "(pdtn):", "funcdef": "def"}, {"fullname": "grib2io.templates.NumberOfPackedValues", "modulename": "grib2io.templates", "qualname": "NumberOfPackedValues", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplateNumber", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplateNumber", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.RefValue", "modulename": "grib2io.templates", "qualname": "RefValue", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.BinScaleFactor", "modulename": "grib2io.templates", "qualname": "BinScaleFactor", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DecScaleFactor", "modulename": "grib2io.templates", "qualname": "DecScaleFactor", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NBitsPacking", "modulename": "grib2io.templates", "qualname": "NBitsPacking", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfValues", "modulename": "grib2io.templates", "qualname": "TypeOfValues", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GroupSplittingMethod", "modulename": "grib2io.templates", "qualname": "GroupSplittingMethod", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfMissingValueManagement", "modulename": "grib2io.templates", "qualname": "TypeOfMissingValueManagement", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.PriMissingValue", "modulename": "grib2io.templates", "qualname": "PriMissingValue", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.SecMissingValue", "modulename": "grib2io.templates", "qualname": "SecMissingValue", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NGroups", "modulename": "grib2io.templates", "qualname": "NGroups", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.RefGroupWidth", "modulename": "grib2io.templates", "qualname": "RefGroupWidth", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NBitsGroupWidth", "modulename": "grib2io.templates", "qualname": "NBitsGroupWidth", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.RefGroupLength", "modulename": "grib2io.templates", "qualname": "RefGroupLength", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GroupLengthIncrement", "modulename": "grib2io.templates", "qualname": "GroupLengthIncrement", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LengthOfLastGroup", "modulename": "grib2io.templates", "qualname": "LengthOfLastGroup", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NBitsScaledGroupLength", "modulename": "grib2io.templates", "qualname": "NBitsScaledGroupLength", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.SpatialDifferenceOrder", "modulename": "grib2io.templates", "qualname": "SpatialDifferenceOrder", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NBytesSpatialDifference", "modulename": "grib2io.templates", "qualname": "NBytesSpatialDifference", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.Precision", "modulename": "grib2io.templates", "qualname": "Precision", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfCompression", "modulename": "grib2io.templates", "qualname": "TypeOfCompression", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TargetCompressionRatio", "modulename": "grib2io.templates", "qualname": "TargetCompressionRatio", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.RealOfCoefficient", "modulename": "grib2io.templates", "qualname": "RealOfCoefficient", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.CompressionOptionsMask", "modulename": "grib2io.templates", "qualname": "CompressionOptionsMask", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.BlockSize", "modulename": "grib2io.templates", "qualname": "BlockSize", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.RefSampleInterval", "modulename": "grib2io.templates", "qualname": "RefSampleInterval", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate0", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate0", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate0.refValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate0.refValue", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.DataRepresentationTemplate0.binScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate0.binScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate0.decScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate0.decScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate0.nBitsPacking", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate0.nBitsPacking", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.refValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.refValue", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.binScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.binScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.decScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.decScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.nBitsPacking", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.nBitsPacking", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.groupSplittingMethod", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.groupSplittingMethod", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.typeOfMissingValueManagement", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.typeOfMissingValueManagement", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.priMissingValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.priMissingValue", "kind": "variable", "doc": "

    \n", "annotation": ": [<class 'float'>, <class 'int'>]"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.secMissingValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.secMissingValue", "kind": "variable", "doc": "

    \n", "annotation": ": [<class 'float'>, <class 'int'>]"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.nGroups", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.nGroups", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.refGroupWidth", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.refGroupWidth", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.nBitsGroupWidth", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.nBitsGroupWidth", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.refGroupLength", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.refGroupLength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.groupLengthIncrement", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.groupLengthIncrement", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.lengthOfLastGroup", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.lengthOfLastGroup", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.nBitsScaledGroupLength", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.nBitsScaledGroupLength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.refValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.refValue", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.binScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.binScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.decScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.decScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.nBitsPacking", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.nBitsPacking", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.groupSplittingMethod", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.groupSplittingMethod", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.typeOfMissingValueManagement", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.typeOfMissingValueManagement", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.priMissingValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.priMissingValue", "kind": "variable", "doc": "

    \n", "annotation": ": [<class 'float'>, <class 'int'>]"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.secMissingValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.secMissingValue", "kind": "variable", "doc": "

    \n", "annotation": ": [<class 'float'>, <class 'int'>]"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.nGroups", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.nGroups", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.refGroupWidth", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.refGroupWidth", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.nBitsGroupWidth", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.nBitsGroupWidth", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.refGroupLength", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.refGroupLength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.groupLengthIncrement", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.groupLengthIncrement", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.lengthOfLastGroup", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.lengthOfLastGroup", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.nBitsScaledGroupLength", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.nBitsScaledGroupLength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.spatialDifferenceOrder", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.spatialDifferenceOrder", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.nBytesSpatialDifference", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.nBytesSpatialDifference", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate4", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate4", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate4.precision", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate4.precision", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.DataRepresentationTemplate40", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate40", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate40.refValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate40.refValue", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.DataRepresentationTemplate40.binScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate40.binScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate40.decScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate40.decScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate40.nBitsPacking", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate40.nBitsPacking", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate40.typeOfCompression", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate40.typeOfCompression", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.DataRepresentationTemplate40.targetCompressionRatio", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate40.targetCompressionRatio", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate41", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate41", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate41.refValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate41.refValue", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.DataRepresentationTemplate41.binScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate41.binScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate41.decScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate41.decScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate41.nBitsPacking", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate41.nBitsPacking", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42.refValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42.refValue", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42.binScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42.binScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42.decScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42.decScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42.nBitsPacking", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42.nBitsPacking", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42.compressionOptionsMask", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42.compressionOptionsMask", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42.blockSize", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42.blockSize", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42.refSampleInterval", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42.refSampleInterval", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate50", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate50", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate50.refValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate50.refValue", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.DataRepresentationTemplate50.binScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate50.binScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate50.decScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate50.decScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate50.nBitsPacking", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate50.nBitsPacking", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate50.realOfCoefficient", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate50.realOfCoefficient", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.drt_class_by_drtn", "modulename": "grib2io.templates", "qualname": "drt_class_by_drtn", "kind": "function", "doc": "

    \n", "signature": "(drtn):", "funcdef": "def"}, {"fullname": "grib2io.utils", "modulename": "grib2io.utils", "kind": "module", "doc": "

    Collection of utility functions to assist in the encoding and decoding\nof GRIB2 Messages.

    \n"}, {"fullname": "grib2io.utils.int2bin", "modulename": "grib2io.utils", "qualname": "int2bin", "kind": "function", "doc": "

    Convert integer to binary string or list

    \n\n

    Parameters

    \n\n

    i: Integer value to convert to binary representation.

    \n\n

    nbits: Number of bits to return. Valid values are 8 [DEFAULT], 16,\n32, and 64.

    \n\n

    output: Return data as str [DEFAULT] or list (list of ints).

    \n\n

    Returns

    \n\n

    str or list (list of ints) of binary representation of the integer value.

    \n", "signature": "(i, nbits=8, output=<class 'str'>):", "funcdef": "def"}, {"fullname": "grib2io.utils.ieee_float_to_int", "modulename": "grib2io.utils", "qualname": "ieee_float_to_int", "kind": "function", "doc": "

    Convert an IEEE 32-bit float to a 32-bit integer.

    \n\n

    Parameters

    \n\n

    f: Float value.

    \n\n

    Returns

    \n\n

    Numpy Int32 representation of an IEEE 32-bit float.

    \n", "signature": "(f):", "funcdef": "def"}, {"fullname": "grib2io.utils.ieee_int_to_float", "modulename": "grib2io.utils", "qualname": "ieee_int_to_float", "kind": "function", "doc": "

    Convert a 32-bit integer to an IEEE 32-bit float.

    \n\n

    Parameters

    \n\n

    i: Integer value.

    \n\n

    Returns

    \n\n

    Numpy float32

    \n", "signature": "(i):", "funcdef": "def"}, {"fullname": "grib2io.utils.get_leadtime", "modulename": "grib2io.utils", "qualname": "get_leadtime", "kind": "function", "doc": "

    Computes lead time as a datetime.timedelta object using information from\nGRIB2 Identification Section (Section 1), Product Definition Template\nNumber, and Product Definition Template (Section 4).

    \n\n

    Parameters

    \n\n

    idsec: seqeunce containing GRIB2 Identification Section (Section 1).

    \n\n

    pdtn: GRIB2 Product Definition Template Number

    \n\n

    idsec: seqeunce containing GRIB2 Product Definition Template (Section 4).

    \n\n

    Returns

    \n\n

    datetime.timedelta object representing the lead time of the GRIB2 message.

    \n", "signature": "(idsec, pdtn, pdt):", "funcdef": "def"}, {"fullname": "grib2io.utils.get_duration", "modulename": "grib2io.utils", "qualname": "get_duration", "kind": "function", "doc": "

    Computes a time duration as a datetime.timedelta using information from\nProduct Definition Template Number, and Product Definition Template (Section 4).

    \n\n

    Parameters

    \n\n

    pdtn: GRIB2 Product Definition Template Number

    \n\n

    pdt: sequence containing GRIB2 Product Definition Template (Section 4).

    \n\n

    Returns

    \n\n

    datetime.timedelta object representing the time duration of the GRIB2 message.

    \n", "signature": "(pdtn, pdt):", "funcdef": "def"}, {"fullname": "grib2io.utils.decode_wx_strings", "modulename": "grib2io.utils", "qualname": "decode_wx_strings", "kind": "function", "doc": "

    Decode GRIB2 Local Use Section to obtain NDFD/MDL Weather Strings. The\ndecode procedure is defined here.

    \n\n

    Parameters

    \n\n

    lus: GRIB2 Local Use Section containing NDFD weather strings.

    \n\n

    Returns

    \n\n

    dict: Dictionary of NDFD/MDL weather strings. Keys are an integer\nvalue that represent the sequential order of the key in the packed loca\nuse section and the value is the weather key.

    \n", "signature": "(lus):", "funcdef": "def"}, {"fullname": "grib2io.utils.get_wgrib2_prob_string", "modulename": "grib2io.utils", "qualname": "get_wgrib2_prob_string", "kind": "function", "doc": "

    Return a wgrib2-formatted string explaining probabilistic\nthreshold informaiton. Logic from wgrib2 source, Prob.c,\nis replicated here.

    \n\n

    Parameters

    \n\n

    probtype: int type of probability (Code Table 4.9).

    \n\n

    sfacl: int scale factor of lower limit.

    \n\n

    svall: int scaled value of lower limit.

    \n\n

    sfacu: int scale factor of upper limit.

    \n\n

    svalu: int scaled value of upper limit.

    \n\n

    Returns

    \n\n

    str: wgrib2-formatted string of probability threshold.

    \n", "signature": "(probtype, sfacl, svall, sfacu, svalu):", "funcdef": "def"}, {"fullname": "grib2io.utils.gauss_grid", "modulename": "grib2io.utils.gauss_grid", "kind": "module", "doc": "

    Tools for working with Gaussian grids.

    \n"}, {"fullname": "grib2io.utils.gauss_grid.gaussian_latitudes", "modulename": "grib2io.utils.gauss_grid", "qualname": "gaussian_latitudes", "kind": "function", "doc": "

    Construct latitudes for a Gaussian grid.

    \n\n

    Parameters

    \n\n

    nlat: The number of latitudes in the Gaussian grid.

    \n\n

    Returns

    \n\n

    Numpy array of latitudes (in degrees) with a length of nlat.

    \n", "signature": "():", "funcdef": "def"}, {"fullname": "grib2io.utils.rotated_grid", "modulename": "grib2io.utils.rotated_grid", "kind": "module", "doc": "

    Tools for working with Rotated Lat/Lon Grids.

    \n"}, {"fullname": "grib2io.utils.rotated_grid.RAD2DEG", "modulename": "grib2io.utils.rotated_grid", "qualname": "RAD2DEG", "kind": "variable", "doc": "

    \n", "default_value": "57.29577951308232"}, {"fullname": "grib2io.utils.rotated_grid.DEG2RAD", "modulename": "grib2io.utils.rotated_grid", "qualname": "DEG2RAD", "kind": "variable", "doc": "

    \n", "default_value": "0.017453292519943295"}, {"fullname": "grib2io.utils.rotated_grid.rotate", "modulename": "grib2io.utils.rotated_grid", "qualname": "rotate", "kind": "function", "doc": "

    Perform grid rotation. This function is adapted from ECMWF's ecCodes library\nvoid function, rotate().

    \n\n

    https://github.com/ecmwf/eccodes/blob/develop/src/grib_geography.cc

    \n\n

    Parameters

    \n\n

    latin: float or array_like

    \n\n

    Latitudes in units of degrees.

    \n\n

    lonin: float or array_like

    \n\n

    Longitudes in units of degrees.

    \n\n

    aor: float

    \n\n

    Angle of rotation as defined in GRIB2 GDTN 4.1.

    \n\n

    splat: float

    \n\n

    Latitude of South Pole as defined in GRIB2 GDTN 4.1.

    \n\n

    splon: float

    \n\n

    Longitude of South Pole as defined in GRIB2 GDTN 4.1.

    \n\n

    Returns

    \n\n

    lats, lons : numpy.ndarray

    \n\n

    Returns two numpy.ndarrays with dtype=numpy.float32 of grid latitudes and\nlongitudes in units of degrees.

    \n", "signature": "(latin, lonin, aor, splat, splon):", "funcdef": "def"}, {"fullname": "grib2io.utils.rotated_grid.unrotate", "modulename": "grib2io.utils.rotated_grid", "qualname": "unrotate", "kind": "function", "doc": "

    Perform grid un-rotation. This function is adapted from ECMWF's ecCodes library\nvoid function, unrotate().

    \n\n

    https://github.com/ecmwf/eccodes/blob/develop/src/grib_geography.cc

    \n\n

    Parameters

    \n\n

    latin: float or array_like

    \n\n

    Latitudes in units of degrees.

    \n\n

    lonin: float or array_like

    \n\n

    Longitudes in units of degrees.

    \n\n

    aor: float

    \n\n

    Angle of rotation as defined in GRIB2 GDTN 4.1.

    \n\n

    splat: float

    \n\n

    Latitude of South Pole as defined in GRIB2 GDTN 4.1.

    \n\n

    splon: float

    \n\n

    Longitude of South Pole as defined in GRIB2 GDTN 4.1.

    \n\n

    Returns

    \n\n

    lats, lons : numpy.ndarray

    \n\n

    Returns two numpy.ndarrays with dtype=numpy.float32 of grid latitudes and\nlongitudes in units of degrees.

    \n", "signature": "(latin, lonin, aor, splat, splon):", "funcdef": "def"}]; + /** pdoc search index */const docs = [{"fullname": "grib2io", "modulename": "grib2io", "kind": "module", "doc": "

    Introduction

    \n\n

    grib2io is a Python package that provides an interface to the NCEP GRIB2 C (g2c)\nlibrary for the purpose of reading and writing WMO GRIdded Binary, Edition 2 (GRIB2) messages. A physical file can contain one\nor more GRIB2 messages.

    \n\n

    GRIB2 file IO is performed directly in Python. The unpacking/packing of GRIB2 integer, coded metadata and data sections is performed\nby the g2c library functions via the g2clib Cython wrapper module. The decoding/encoding of GRIB2 metadata is translated into more\ndescriptive, plain language metadata by looking up the integer code values against the appropriate GRIB2 code tables. These code tables\nare a part of the grib2io module.

    \n\n

    For example usage of grib2io, please see the Jupyter Notebook.

    \n"}, {"fullname": "grib2io.open", "modulename": "grib2io", "qualname": "open", "kind": "class", "doc": "

    GRIB2 File Object. A physical file can contain one or more GRIB2 messages. When instantiated,\nclass grib2io.open, the file named filename is opened for reading (mode = 'r') and is\nautomatically indexed. The indexing procedure reads some of the GRIB2 metadata for all GRIB2 Messages.

    \n\n

    A GRIB2 Message may contain submessages whereby Section 2-7 can be repeated. grib2io accommodates\nfor this by flattening any GRIB2 submessages into multiple individual messages.

    \n\n

    Attributes

    \n\n

    mode File IO mode of opening the file.

    \n\n

    name Full path name of the GRIB2 file.

    \n\n

    messages Count of GRIB2 Messages contained in the file.

    \n\n

    current_message Current position of the file in units of GRIB2 Messages.

    \n\n

    size Size of the file in units of bytes.

    \n\n

    closed True is file handle is close; False otherwise.

    \n\n

    variables Tuple containing a unique list of variable short names (i.e. GRIB2 abbreviation names).

    \n\n

    levels Tuple containing a unique list of wgrib2-formatted level/layer strings.

    \n"}, {"fullname": "grib2io.open.__init__", "modulename": "grib2io", "qualname": "open.__init__", "kind": "function", "doc": "

    open Constructor

    \n\n

    Parameters

    \n\n

    filename : str

    \n\n

    File name containing GRIB2 messages.

    \n\n

    mode : str, optional

    \n\n

    File access mode where r opens the files for reading only; w opens the file for writing.

    \n", "signature": "(filename, mode='r', **kwargs)"}, {"fullname": "grib2io.open.mode", "modulename": "grib2io", "qualname": "open.mode", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.name", "modulename": "grib2io", "qualname": "open.name", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.messages", "modulename": "grib2io", "qualname": "open.messages", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.current_message", "modulename": "grib2io", "qualname": "open.current_message", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.size", "modulename": "grib2io", "qualname": "open.size", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.closed", "modulename": "grib2io", "qualname": "open.closed", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.levels", "modulename": "grib2io", "qualname": "open.levels", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.variables", "modulename": "grib2io", "qualname": "open.variables", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.open.close", "modulename": "grib2io", "qualname": "open.close", "kind": "function", "doc": "

    Close the file handle

    \n", "signature": "(self):", "funcdef": "def"}, {"fullname": "grib2io.open.read", "modulename": "grib2io", "qualname": "open.read", "kind": "function", "doc": "

    Read size amount of GRIB2 messages from the current position. If no argument is\ngiven, then size is None and all messages are returned from the current position\nin the file. This read method follows the behavior of Python's builtin open()\nfunction, but whereas that operates on units of bytes, we operate on units of\nGRIB2 messages.

    \n\n

    Parameters

    \n\n

    size : int, optional

    \n\n

    The number of GRIB2 messages to read from the current position. If no argument is\ngive, the default value is None and remainder of the file is read.

    \n\n

    Returns

    \n\n

    Grib2Message object when size = 1 or a list of Grib2Messages when\nsize > 1.

    \n", "signature": "(self, size=None):", "funcdef": "def"}, {"fullname": "grib2io.open.seek", "modulename": "grib2io", "qualname": "open.seek", "kind": "function", "doc": "

    Set the position within the file in units of GRIB2 messages.

    \n\n

    Parameters

    \n\n

    pos : int

    \n\n

    The GRIB2 Message number to set the file pointer to.

    \n", "signature": "(self, pos):", "funcdef": "def"}, {"fullname": "grib2io.open.tell", "modulename": "grib2io", "qualname": "open.tell", "kind": "function", "doc": "

    Returns the position of the file in units of GRIB2 Messages.

    \n", "signature": "(self):", "funcdef": "def"}, {"fullname": "grib2io.open.select", "modulename": "grib2io", "qualname": "open.select", "kind": "function", "doc": "

    Select GRIB2 messages by Grib2Message attributes.

    \n", "signature": "(self, **kwargs):", "funcdef": "def"}, {"fullname": "grib2io.open.write", "modulename": "grib2io", "qualname": "open.write", "kind": "function", "doc": "

    Writes GRIB2 message object to file.

    \n\n

    Parameters

    \n\n

    msg : Grib2Message or sequence of Grib2Messages

    \n\n

    GRIB2 message objects to write to file.

    \n", "signature": "(self, msg):", "funcdef": "def"}, {"fullname": "grib2io.open.flush", "modulename": "grib2io", "qualname": "open.flush", "kind": "function", "doc": "

    Flush the file object buffer.

    \n", "signature": "(self):", "funcdef": "def"}, {"fullname": "grib2io.open.levels_by_var", "modulename": "grib2io", "qualname": "open.levels_by_var", "kind": "function", "doc": "

    Return a list of level strings given a variable shortName.

    \n\n

    Parameters

    \n\n

    name : str

    \n\n

    Grib2Message variable shortName

    \n\n

    Returns

    \n\n

    A list of strings of unique level strings.

    \n", "signature": "(self, name):", "funcdef": "def"}, {"fullname": "grib2io.open.vars_by_level", "modulename": "grib2io", "qualname": "open.vars_by_level", "kind": "function", "doc": "

    Return a list of variable shortName strings given a level.

    \n\n

    Parameters

    \n\n

    level : str

    \n\n

    Grib2Message variable level

    \n\n

    Returns

    \n\n

    A list of strings of variable shortName strings.

    \n", "signature": "(self, level):", "funcdef": "def"}, {"fullname": "grib2io.Grib2Message", "modulename": "grib2io", "qualname": "Grib2Message", "kind": "class", "doc": "

    Creation class for a GRIB2 message.

    \n"}, {"fullname": "grib2io.show_config", "modulename": "grib2io", "qualname": "show_config", "kind": "function", "doc": "

    Print grib2io build configuration information.

    \n", "signature": "():", "funcdef": "def"}, {"fullname": "grib2io.interpolate", "modulename": "grib2io", "qualname": "interpolate", "kind": "function", "doc": "

    This is the module-level interpolation function that interfaces with the grib2io_interp\ncomponent pakcage that interfaces to the NCEPLIBS-ip library.\nIt supports scalar and vector interpolation according to the type of object a. It also\nsupports scalar and vector interpolation to station points when grid_def_out is set up\nproperly for station interpolation.

    \n\n

    Parameters

    \n\n

    a : numpy.ndarray or tuple

    \n\n

    Input data. If a is a numpy.ndarray, scalar interpolation will be\nperformed. If a is a tuple, then vector interpolation will be performed\nwith the assumption that u = a[0] and v = a[1] and are both numpy.ndarray.

    \n\n

    These data are expected to be in 2-dimensional form with shape (ny, nx) or\n3-dimensional (:, ny, nx) where the 1st dimension represents another spatial,\ntemporal, or classification (i.e. ensemble members) dimension. The function will\nproperly flatten the (ny,nx) dimensions into (nx * ny) acceptable for input into\nthe interpolation subroutines.

    \n\n

    method : int or str

    \n\n

    Interpolate method to use. This can either be an integer or string using\nthe following mapping:

    \n\n\n\n\n \n \n\n\n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n
    Interpolate SchemeInteger Value
    'bilinear'0
    'bicubic'1
    'neighbor'2
    'budget'3
    'spectral'4
    'neighbor-budget'6
    \n\n

    grid_def_in : grib2io.Grib2GridDef

    \n\n

    Grib2GridDef object for the input grid.

    \n\n

    grid_def_out : grib2io.Grib2GridDef

    \n\n

    Grib2GridDef object for the output grid or station points.

    \n\n

    method_options : list of ints, optional

    \n\n

    Interpolation options. See the NCEPLIBS-ip doucmentation for\nmore information on how these are used.

    \n\n

    Returns

    \n\n

    Returns a numpy.ndarray when scalar interpolation is performed or\na tuple of numpy.ndarrays when vector interpolation is performed\nwith the assumptions that 0-index is the interpolated u and 1-index\nis the interpolated v.

    \n", "signature": "(a, method, grid_def_in, grid_def_out, method_options=None):", "funcdef": "def"}, {"fullname": "grib2io.interpolate_to_stations", "modulename": "grib2io", "qualname": "interpolate_to_stations", "kind": "function", "doc": "

    This is the module-level interpolation function for interpolation to stations\nthat interfaces with the grib2io_interp component pakcage that interfaces to\nthe NCEPLIBS-ip library. It supports\nscalar and vector interpolation according to the type of object a.

    \n\n

    Parameters

    \n\n

    a : numpy.ndarray or tuple

    \n\n

    Input data. If a is a numpy.ndarray, scalar interpolation will be\nperformed. If a is a tuple, then vector interpolation will be performed\nwith the assumption that u = a[0] and v = a[1] and are both numpy.ndarray.

    \n\n

    These data are expected to be in 2-dimensional form with shape (ny, nx) or\n3-dimensional (:, ny, nx) where the 1st dimension represents another spatial,\ntemporal, or classification (i.e. ensemble members) dimension. The function will\nproperly flatten the (ny,nx) dimensions into (nx * ny) acceptable for input into\nthe interpolation subroutines.

    \n\n

    method : int or str

    \n\n

    Interpolate method to use. This can either be an integer or string using\nthe following mapping:

    \n\n\n\n\n \n \n\n\n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n
    Interpolate SchemeInteger Value
    'bilinear'0
    'bicubic'1
    'neighbor'2
    'budget'3
    'spectral'4
    'neighbor-budget'6
    \n\n

    grid_def_in : grib2io.Grib2GridDef

    \n\n

    Grib2GridDef object for the input grid.

    \n\n

    lats : numpy.ndarray or list

    \n\n

    Latitudes for station points

    \n\n

    lons : numpy.ndarray or list

    \n\n

    Longitudes for station points

    \n\n

    method_options : list of ints, optional

    \n\n

    Interpolation options. See the NCEPLIBS-ip doucmentation for\nmore information on how these are used.

    \n\n

    Returns

    \n\n

    Returns a numpy.ndarray when scalar interpolation is performed or\na tuple of numpy.ndarrays when vector interpolation is performed\nwith the assumptions that 0-index is the interpolated u and 1-index\nis the interpolated v.

    \n", "signature": "(a, method, grid_def_in, lats, lons, method_options=None):", "funcdef": "def"}, {"fullname": "grib2io.Grib2GridDef", "modulename": "grib2io", "qualname": "Grib2GridDef", "kind": "class", "doc": "

    Class to hold GRIB2 Grid Definition Template Number and Template as\nclass attributes. This allows for cleaner looking code when passing these\nmetadata around. For example, the grib2io._Grib2Message.interpolate\nmethod and grib2io.interpolate function accepts these objects.

    \n"}, {"fullname": "grib2io.Grib2GridDef.__init__", "modulename": "grib2io", "qualname": "Grib2GridDef.__init__", "kind": "function", "doc": "

    \n", "signature": "(gdtn: int, gdt: <built-in function array>)"}, {"fullname": "grib2io.Grib2GridDef.gdtn", "modulename": "grib2io", "qualname": "Grib2GridDef.gdtn", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.Grib2GridDef.gdt", "modulename": "grib2io", "qualname": "Grib2GridDef.gdt", "kind": "variable", "doc": "

    \n", "annotation": ": <built-in function array>"}, {"fullname": "grib2io.Grib2GridDef.from_section3", "modulename": "grib2io", "qualname": "Grib2GridDef.from_section3", "kind": "function", "doc": "

    \n", "signature": "(cls, section3):", "funcdef": "def"}, {"fullname": "grib2io.Grib2GridDef.nx", "modulename": "grib2io", "qualname": "Grib2GridDef.nx", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.Grib2GridDef.ny", "modulename": "grib2io", "qualname": "Grib2GridDef.ny", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.Grib2GridDef.npoints", "modulename": "grib2io", "qualname": "Grib2GridDef.npoints", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.Grib2GridDef.shape", "modulename": "grib2io", "qualname": "Grib2GridDef.shape", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.tables", "modulename": "grib2io.tables", "kind": "module", "doc": "

    Functions for retreiving data from NCEP GRIB2 Tables.

    \n"}, {"fullname": "grib2io.tables.GRIB2_DISCIPLINES", "modulename": "grib2io.tables", "qualname": "GRIB2_DISCIPLINES", "kind": "variable", "doc": "

    \n", "default_value": "[0, 1, 2, 3, 4, 10, 20]"}, {"fullname": "grib2io.tables.get_table", "modulename": "grib2io.tables", "qualname": "get_table", "kind": "function", "doc": "

    Return GRIB2 code table as a dictionary.

    \n\n

    Parameters

    \n\n

    table: Code table number (e.g. '1.0'). NOTE: Code table '4.1' requires a 3rd value\nrepresenting the product discipline (e.g. '4.1.0').

    \n\n

    expand: If True, expand output dictionary where keys are a range.

    \n\n

    Returns

    \n\n

    dict

    \n", "signature": "(table, expand=False):", "funcdef": "def"}, {"fullname": "grib2io.tables.get_value_from_table", "modulename": "grib2io.tables", "qualname": "get_value_from_table", "kind": "function", "doc": "

    Return the definition given a GRIB2 code table.

    \n\n

    Parameters

    \n\n

    value: int or str code table value.

    \n\n

    table: str code table number.

    \n\n

    expand: If True, expand output dictionary where keys are a range.

    \n\n

    Returns

    \n\n

    Table value or None if not found.

    \n", "signature": "(value, table, expand=False):", "funcdef": "def"}, {"fullname": "grib2io.tables.get_varinfo_from_table", "modulename": "grib2io.tables", "qualname": "get_varinfo_from_table", "kind": "function", "doc": "

    Return the GRIB2 variable information given values of discipline,\nparmcat, and parmnum. NOTE: This functions allows for all arguments\nto be converted to a string type if arguments are integer.

    \n\n

    Parameters

    \n\n

    discipline: int or str of Discipline code value of a GRIB2 message.

    \n\n

    parmcat: int or str of Parameter Category value of a GRIB2 message.

    \n\n

    parmnum: int or str of Parameter Number value of a GRIB2 message.

    \n\n

    isNDFD: If True, signals function to try to get variable information\nfrom the supplemental NDFD tables.

    \n\n

    Returns

    \n\n

    list: containing variable information. \"Unknown\" is given for item of\ninformation if variable is not found.

    \n\n
      \n
    • list[0] = full name
    • \n
    • list[1] = units
    • \n
    • list[2] = short name (abbreviated name)
    • \n
    \n", "signature": "(discipline, parmcat, parmnum, isNDFD=False):", "funcdef": "def"}, {"fullname": "grib2io.tables.get_shortnames", "modulename": "grib2io.tables", "qualname": "get_shortnames", "kind": "function", "doc": "

    Returns a list of variable shortNames given GRIB2 discipline, parameter\ncategory, and parameter number. If all 3 args are None, then shortNames\nfrom all disciplines, parameter categories, and numbers will be returned.

    \n\n

    Parameters

    \n\n

    discipline : int GRIB2 discipline code value.

    \n\n

    parmcat : int GRIB2 parameter category value.

    \n\n

    parmnum: int or str of Parameter Number value of a GRIB2 message.

    \n\n

    Returns

    \n\n

    list of GRIB2 shortNames.

    \n", "signature": "(discipline=None, parmcat=None, parmnum=None, isNDFD=False):", "funcdef": "def"}, {"fullname": "grib2io.tables.get_metadata_from_shortname", "modulename": "grib2io.tables", "qualname": "get_metadata_from_shortname", "kind": "function", "doc": "

    Provide GRIB2 variable metadata attributes given a GRIB2 shortName.

    \n\n

    Parameters

    \n\n

    shortname : str GRIB2 variable shortName.

    \n\n

    Returns

    \n\n

    list of dictionary items where each dictionary items contains the variable\nmetadata key:value pairs. NOTE: Some variable shortNames will exist in multiple\nparameter category/number tables according to the GRIB2 discipline.

    \n", "signature": "(shortname):", "funcdef": "def"}, {"fullname": "grib2io.tables.get_wgrib2_level_string", "modulename": "grib2io.tables", "qualname": "get_wgrib2_level_string", "kind": "function", "doc": "

    Return a string that describes the level or layer of the GRIB2 message. The\nformat and language of the string is an exact replica of how wgrib2 produces\nthe level/layer string in its inventory output.

    \n\n

    Contents of wgrib2 source, Level.c,\nwere converted into a Python dictionary and stored in grib2io as table\n'wgrib2_level_string'.

    \n\n

    Parameters

    \n\n

    pdtn: GRIB2 Product Definition Template Number

    \n\n

    pdt: sequence containing GRIB2 Product Definition Template (Section 4).

    \n\n

    Returns

    \n\n

    str: wgrib2-formatted level/layer string.

    \n", "signature": "(pdtn, pdt):", "funcdef": "def"}, {"fullname": "grib2io.tables.originating_centers", "modulename": "grib2io.tables.originating_centers", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.originating_centers.table_originating_centers", "modulename": "grib2io.tables.originating_centers", "qualname": "table_originating_centers", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'Melbourne (WMC)', '2': 'Melbourne (WMC)', '3': 'Melbourne (WMC)', '4': 'Moscow (WMC)', '5': 'Moscow (WMC)', '6': 'Moscow (WMC)', '7': 'US National Weather Service - NCEP (WMC)', '8': 'US National Weather Service - NWSTG (WMC)', '9': 'US National Weather Service - Other (WMC)', '10': 'Cairo (RSMC/RAFC)', '11': 'Cairo (RSMC/RAFC)', '12': 'Dakar (RSMC/RAFC)', '13': 'Dakar (RSMC/RAFC)', '14': 'Nairobi (RSMC/RAFC)', '15': 'Nairobi (RSMC/RAFC)', '16': 'Casablanca (RSMC)', '17': 'Tunis (RSMC)', '18': 'Tunis-Casablanca (RSMC)', '19': 'Tunis-Casablanca (RSMC)', '20': 'Las Palmas (RAFC)', '21': 'Algiers (RSMC)', '22': 'ACMAD', '23': 'Mozambique (NMC)', '24': 'Pretoria (RSMC)', '25': 'La Reunion (RSMC)', '26': 'Khabarovsk (RSMC)', '27': 'Khabarovsk (RSMC)', '28': 'New Delhi (RSMC/RAFC)', '29': 'New Delhi (RSMC/RAFC)', '30': 'Novosibirsk (RSMC)', '31': 'Novosibirsk (RSMC)', '32': 'Tashkent (RSMC)', '33': 'Jeddah (RSMC)', '34': 'Tokyo (RSMC), Japanese Meteorological Agency', '35': 'Tokyo (RSMC), Japanese Meteorological Agency', '36': 'Bankok', '37': 'Ulan Bator', '38': 'Beijing (RSMC)', '39': 'Beijing (RSMC)', '40': 'Seoul', '41': 'Buenos Aires (RSMC/RAFC)', '42': 'Buenos Aires (RSMC/RAFC)', '43': 'Brasilia (RSMC/RAFC)', '44': 'Brasilia (RSMC/RAFC)', '45': 'Santiago', '46': 'Brazilian Space Agency - INPE', '47': 'Columbia (NMC)', '48': 'Ecuador (NMC)', '49': 'Peru (NMC)', '50': 'Venezuela (NMC)', '51': 'Miami (RSMC/RAFC)', '52': 'Miami (RSMC), National Hurricane Center', '53': 'Canadian Meteorological Service - Montreal (RSMC)', '54': 'Canadian Meteorological Service - Montreal (RSMC)', '55': 'San Francisco', '56': 'ARINC Center', '57': 'US Air Force - Air Force Global Weather Center', '58': 'Fleet Numerical Meteorology and Oceanography Center,Monterey,CA,USA', '59': 'The NOAA Forecast Systems Lab, Boulder, CO, USA', '60': 'National Center for Atmospheric Research (NCAR), Boulder, CO', '61': 'Service ARGOS - Landover, MD, USA', '62': 'US Naval Oceanographic Office', '63': 'International Research Institude for Climate and Society', '64': 'Honolulu', '65': 'Darwin (RSMC)', '66': 'Darwin (RSMC)', '67': 'Melbourne (RSMC)', '68': 'Reserved', '69': 'Wellington (RSMC/RAFC)', '70': 'Wellington (RSMC/RAFC)', '71': 'Nadi (RSMC)', '72': 'Singapore', '73': 'Malaysia (NMC)', '74': 'U.K. Met Office - Exeter (RSMC)', '75': 'U.K. Met Office - Exeter (RSMC)', '76': 'Moscow (RSMC/RAFC)', '77': 'Reserved', '78': 'Offenbach (RSMC)', '79': 'Offenbach (RSMC)', '80': 'Rome (RSMC)', '81': 'Rome (RSMC)', '82': 'Norrkoping', '83': 'Norrkoping', '84': 'French Weather Service - Toulouse', '85': 'French Weather Service - Toulouse', '86': 'Helsinki', '87': 'Belgrade', '88': 'Oslo', '89': 'Prague', '90': 'Episkopi', '91': 'Ankara', '92': 'Frankfurt/Main (RAFC)', '93': 'London (WAFC)', '94': 'Copenhagen', '95': 'Rota', '96': 'Athens', '97': 'European Space Agency (ESA)', '98': 'European Center for Medium-Range Weather Forecasts (RSMC)', '99': 'De Bilt, Netherlands', '100': 'Brazzaville', '101': 'Abidjan', '102': 'Libyan Arab Jamahiriya (NMC)', '103': 'Madagascar (NMC)', '104': 'Mauritius (NMC)', '105': 'Niger (NMC)', '106': 'Seychelles (NMC)', '107': 'Uganda (NMC)', '108': 'United Republic of Tanzania (NMC)', '109': 'Zimbabwe (NMC)', '110': 'Hong-Kong', '111': 'Afghanistan (NMC)', '112': 'Bahrain (NMC)', '113': 'Bangladesh (NMC)', '114': 'Bhutan (NMC)', '115': 'Cambodia (NMC)', '116': 'Democratic Peoples Republic of Korea (NMC)', '117': 'Islamic Republic of Iran (NMC)', '118': 'Iraq (NMC)', '119': 'Kazakhstan (NMC)', '120': 'Kuwait (NMC)', '121': 'Kyrgyz Republic (NMC)', '122': 'Lao Peoples Democratic Republic (NMC)', '123': 'Macao, China', '124': 'Maldives (NMC)', '125': 'Myanmar (NMC)', '126': 'Nepal (NMC)', '127': 'Oman (NMC)', '128': 'Pakistan (NMC)', '129': 'Qatar (NMC)', '130': 'Yemen (NMC)', '131': 'Sri Lanka (NMC)', '132': 'Tajikistan (NMC)', '133': 'Turkmenistan (NMC)', '134': 'United Arab Emirates (NMC)', '135': 'Uzbekistan (NMC)', '136': 'Viet Nam (NMC)', '137-139': 'Reserved', '140': 'Bolivia (NMC)', '141': 'Guyana (NMC)', '142': 'Paraguay (NMC)', '143': 'Suriname (NMC)', '144': 'Uruguay (NMC)', '145': 'French Guyana', '146': 'Brazilian Navy Hydrographic Center', '147': 'National Commission on Space Activities - Argentina', '148': 'Brazilian Department of Airspace Control - DECEA', '149': 'Reserved', '150': 'Antigua and Barbuda (NMC)', '151': 'Bahamas (NMC)', '152': 'Barbados (NMC)', '153': 'Belize (NMC)', '154': 'British Caribbean Territories Center', '155': 'San Jose', '156': 'Cuba (NMC)', '157': 'Dominica (NMC)', '158': 'Dominican Republic (NMC)', '159': 'El Salvador (NMC)', '160': 'US NOAA/NESDIS', '161': 'US NOAA Office of Oceanic and Atmospheric Research', '162': 'Guatemala (NMC)', '163': 'Haiti (NMC)', '164': 'Honduras (NMC)', '165': 'Jamaica (NMC)', '166': 'Mexico City', '167': 'Netherlands Antilles and Aruba (NMC)', '168': 'Nicaragua (NMC)', '169': 'Panama (NMC)', '170': 'Saint Lucia (NMC)', '171': 'Trinidad and Tobago (NMC)', '172': 'French Departments in RA IV', '173': 'US National Aeronautics and Space Administration (NASA)', '174': 'Integrated System Data Management/Marine Environmental Data Service (ISDM/MEDS) - Canada', '175': 'Reserved', '176': 'US Cooperative Institude for Meteorological Satellite Studies', '177-189': 'Reserved', '190': 'Cook Islands (NMC)', '191': 'French Polynesia (NMC)', '192': 'Tonga (NMC)', '193': 'Vanuatu (NMC)', '194': 'Brunei (NMC)', '195': 'Indonesia (NMC)', '196': 'Kiribati (NMC)', '197': 'Federated States of Micronesia (NMC)', '198': 'New Caledonia (NMC)', '199': 'Niue', '200': 'Papua New Guinea (NMC)', '201': 'Philippines (NMC)', '202': 'Samoa (NMC)', '203': 'Solomon Islands (NMC)', '204': 'Narional Institude of Water and Atmospheric Research - New Zealand', '205-209': 'Reserved', '210': 'Frascati (ESA/ESRIN)', '211': 'Lanion', '212': 'Lisbon', '213': 'Reykjavik', '214': 'Madrid', '215': 'Zurich', '216': 'Service ARGOS - Toulouse', '217': 'Bratislava', '218': 'Budapest', '219': 'Ljubljana', '220': 'Warsaw', '221': 'Zagreb', '222': 'Albania (NMC)', '223': 'Armenia (NMC)', '224': 'Austria (NMC)', '225': 'Azerbaijan (NMC)', '226': 'Belarus (NMC)', '227': 'Belgium (NMC)', '228': 'Bosnia and Herzegovina (NMC)', '229': 'Bulgaria (NMC)', '230': 'Cyprus (NMC)', '231': 'Estonia (NMC)', '232': 'Georgia (NMC)', '233': 'Dublin', '234': 'Israel (NMC)', '235': 'Jordan (NMC)', '236': 'Latvia (NMC)', '237': 'Lebanon (NMC)', '238': 'Lithuania (NMC)', '239': 'Luxembourg', '240': 'Malta (NMC)', '241': 'Monaco', '242': 'Romania (NMC)', '243': 'Syrian Arab Republic (NMC)', '244': 'The former Yugoslav Republic of Macedonia (NMC)', '245': 'Ukraine (NMC)', '246': 'Republic of Moldova (NMC)', '247': 'Operational Programme for the Exchange of Weather RAdar Information (OPERA) - EUMETNET', '248-249': 'Reserved', '250': 'COnsortium for Small scale MOdelling (COSMO)', '251-253': 'Reserved', '254': 'EUMETSAT Operations Center', '255': 'Missing Value'}"}, {"fullname": "grib2io.tables.originating_centers.table_originating_subcenters", "modulename": "grib2io.tables.originating_centers", "qualname": "table_originating_subcenters", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'NCEP Re-Analysis Project', '2': 'NCEP Ensemble Products', '3': 'NCEP Central Operations', '4': 'Environmental Modeling Center', '5': 'Weather Prediction Center', '6': 'Ocean Prediction Center', '7': 'Climate Prediction Center', '8': 'Aviation Weather Center', '9': 'Storm Prediction Center', '10': 'National Hurricane Center', '11': 'NWS Techniques Development Laboratory', '12': 'NESDIS Office of Research and Applications', '13': 'Federal Aviation Administration', '14': 'NWS Meteorological Development Laboratory', '15': 'North American Regional Reanalysis Project', '16': 'Space Weather Prediction Center', '17': 'ESRL Global Systems Division'}"}, {"fullname": "grib2io.tables.originating_centers.table_generating_process", "modulename": "grib2io.tables.originating_centers", "qualname": "table_generating_process", "kind": "variable", "doc": "

    \n", "default_value": "{'0-1': 'Reserved', '2': 'Ultra Violet Index Model', '3': 'NCEP/ARL Transport and Dispersion Model', '4': 'NCEP/ARL Smoke Model', '5': 'Satellite Derived Precipitation and temperatures, from IR (See PDS Octet 41 ... for specific satellite ID)', '6': 'NCEP/ARL Dust Model', '7-9': 'Reserved', '10': 'Global Wind-Wave Forecast Model', '11': 'Global Multi-Grid Wave Model (Static Grids)', '12': 'Probabilistic Storm Surge (P-Surge)', '13': 'Hurricane Multi-Grid Wave Model', '14': 'Extra-tropical Storm Surge Atlantic Domain', '15': 'Nearshore Wave Prediction System (NWPS)', '16': 'Extra-Tropical Storm Surge (ETSS)', '17': 'Extra-tropical Storm Surge Pacific Domain', '18': 'Probabilistic Extra-Tropical Storm Surge (P-ETSS)', '19': 'Reserved', '20': 'Extra-tropical Storm Surge Micronesia Domain', '21': 'Extra-tropical Storm Surge Atlantic Domain (3D)', '22': 'Extra-tropical Storm Surge Pacific Domain (3D)', '23': 'Extra-tropical Storm Surge Micronesia Domain (3D)', '24': 'Reserved', '25': 'Snow Cover Analysis', '26-29': 'Reserved', '30': 'Forecaster generated field', '31': 'Value added post processed field', '32-41': 'Reserved', '42': 'Global Optimum Interpolation Analysis (GOI) from GFS model', '43': 'Global Optimum Interpolation Analysis (GOI) from "Final" run', '44': 'Sea Surface Temperature Analysis', '45': 'Coastal Ocean Circulation Model', '46': 'HYCOM - Global', '47': 'HYCOM - North Pacific basin', '48': 'HYCOM - North Atlantic basin', '49': 'Ozone Analysis from TIROS Observations', '50-51': 'Reserved', '52': 'Ozone Analysis from Nimbus 7 Observations', '53-63': 'Reserved', '64': 'Regional Optimum Interpolation Analysis (ROI)', '65-67': 'Reserved', '68': '80 wave triangular, 18-layer Spectral model from GFS model', '69': '80 wave triangular, 18 layer Spectral model from "Medium Range Forecast" run', '70': 'Quasi-Lagrangian Hurricane Model (QLM)', '71': 'Hurricane Weather Research and Forecasting (HWRF)', '72': 'Hurricane Non-Hydrostatic Multiscale Model on the B Grid (HNMMB)', '73': 'Fog Forecast model - Ocean Prod. Center', '74': 'Gulf of Mexico Wind/Wave', '75': 'Gulf of Alaska Wind/Wave', '76': 'Bias corrected Medium Range Forecast', '77': '126 wave triangular, 28 layer Spectral model from GFS model', '78': '126 wave triangular, 28 layer Spectral model from "Medium Range Forecast" run', '79': 'Reserved', '80': '62 wave triangular, 28 layer Spectral model from "Medium Range Forecast" run', '81': 'Analysis from GFS (Global Forecast System)', '82': 'Analysis from GDAS (Global Data Assimilation System)', '83': 'High Resolution Rapid Refresh (HRRR)', '84': 'MESO NAM Model (currently 12 km)', '85': 'Real Time Ocean Forecast System (RTOFS)', '86': 'Early Hurricane Wind Speed Probability Model', '87': 'CAC Ensemble Forecasts from Spectral (ENSMB)', '88': 'NOAA Wave Watch III (NWW3) Ocean Wave Model', '89': 'Non-hydrostatic Meso Model (NMM) (Currently 8 km)', '90': '62 wave triangular, 28 layer spectral model extension of the "Medium Range Forecast" run', '91': '62 wave triangular, 28 layer spectral model extension of the GFS model', '92': '62 wave triangular, 28 layer spectral model run from the "Medium Range Forecast" final analysis', '93': '62 wave triangular, 28 layer spectral model run from the T62 GDAS analysis of the "Medium Range Forecast" run', '94': 'T170/L42 Global Spectral Model from MRF run', '95': 'T126/L42 Global Spectral Model from MRF run', '96': 'Global Forecast System Model T1534 - Forecast hours 00-384 T574 - Forecast hours 00-192 T190 - Forecast hours 204-384', '97': 'Reserved', '98': '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.', '99': 'Miscellaneous Test ID', '100': 'Miscellaneous Test ID', '101': 'Conventional Observation Re-Analysis (CORE)', '102-103': 'Reserved', '104': 'National Blend GRIB', '105': 'Rapid Refresh (RAP)', '106': 'Reserved', '107': 'Global Ensemble Forecast System (GEFS)', '108': 'Localized Aviation MOS Program (LAMP)', '109': 'Real Time Mesoscale Analysis (RTMA)', '110': 'NAM Model - 15km version', '111': 'NAM model, generic resolution (Used in SREF processing)', '112': 'WRF-NMM model, generic resolution (Used in various runs) NMM=Nondydrostatic Mesoscale Model (NCEP)', '113': 'Products from NCEP SREF processing', '114': 'NAEFS Products from joined NCEP, CMC global ensembles', '115': 'Downscaled GFS from NAM eXtension', '116': 'WRF-EM model, generic resolution (Used in various runs) EM - Eulerian Mass-core (NCAR - aka Advanced Research WRF)', '117': 'NEMS GFS Aerosol Component', '118': 'UnRestricted Mesoscale Analysis (URMA)', '119': 'WAM (Whole Atmosphere Model)', '120': 'Ice Concentration Analysis', '121': 'Western North Atlantic Regional Wave Model', '122': 'Alaska Waters Regional Wave Model', '123': 'North Atlantic Hurricane Wave Model', '124': 'Eastern North Pacific Regional Wave Model', '125': 'North Pacific Hurricane Wave Model', '126': 'Sea Ice Forecast Model', '127': 'Lake Ice Forecast Model', '128': 'Global Ocean Forecast Model', '129': 'Global Ocean Data Analysis System (GODAS)', '130': 'Merge of fields from the RUC, NAM, and Spectral Model', '131': 'Great Lakes Wave Model', '132': 'High Resolution Ensemble Forecast (HREF)', '133': 'Great Lakes Short Range Wave Model', '134': 'Rapid Refresh Forecast System (RRFS)', '135': 'Hurricane Analysis and Forecast System (HAFS)', '136-139': 'Reserved', '140': 'North American Regional Reanalysis (NARR)', '141': 'Land Data Assimilation and Forecast System', '142-149': 'Reserved', '150': 'NWS River Forecast System (NWSRFS)', '151': 'NWS Flash Flood Guidance System (NWSFFGS)', '152': 'WSR-88D Stage II Precipitation Analysis', '153': 'WSR-88D Stage III Precipitation Analysis', '154-179': 'Reserved', '180': 'Quantitative Precipitation Forecast generated by NCEP', '181': 'River Forecast Center Quantitative Precipitation Forecast mosaic generated by NCEP', '182': 'River Forecast Center Quantitative Precipitation estimate mosaic generated by NCEP', '183': 'NDFD product generated by NCEP/HPC', '184': 'Climatological Calibrated Precipitation Analysis (CCPA)', '185-189': 'Reserved', '190': 'National Convective Weather Diagnostic generated by NCEP/AWC', '191': 'Current Icing Potential automated product genterated by NCEP/AWC', '192': 'Analysis product from NCEP/AWC', '193': 'Forecast product from NCEP/AWC', '194': 'Reserved', '195': 'Climate Data Assimilation System 2 (CDAS2)', '196': 'Climate Data Assimilation System 2 (CDAS2) - used for regeneration runs', '197': 'Climate Data Assimilation System (CDAS)', '198': 'Climate Data Assimilation System (CDAS) - used for regeneration runs', '199': 'Climate Forecast System Reanalysis (CFSR) -- Atmospheric model (GFS) coupled to a multi level ocean, land and seaice model. GFS spectral model at T382, 64 levels coupled to 40 level MOM4 ocean model.', '200': 'CPC Manual Forecast Product', '201': 'CPC Automated Product', '202-209': 'Reserved', '210': 'EPA Air Quality Forecast - Currently North East US domain', '211': 'EPA Air Quality Forecast - Currently Eastern US domain', '212-214': 'Reserved', '215': 'SPC Manual Forecast Product', '216-219': 'Reserved', '220': 'NCEP/OPC automated product', '221-230': 'Reserved for WPC products', '231-254': 'Reserved', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section0", "modulename": "grib2io.tables.section0", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section0.table_0_0", "modulename": "grib2io.tables.section0", "qualname": "table_0_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Meteorological Products', '1': 'Hydrological Products', '2': 'Land Surface Products', '3': 'Satellite Remote Sensing Products', '4': 'Space Weather Products', '5-9': 'Reserved', '10': 'Oceanographic Products', '11-19': 'Reserved', '20': 'Health and Socioeconomic Impacts', '21-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section1", "modulename": "grib2io.tables.section1", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section1.table_1_0", "modulename": "grib2io.tables.section1", "qualname": "table_1_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Experimental', '1': 'Version Implemented on 7 November 2001', '2': 'Version Implemented on 4 November 2003', '3': 'Version Implemented on 2 November 2005', '4': 'Version Implemented on 7 November 2007', '5': 'Version Implemented on 4 November 2009', '6': 'Version Implemented on 15 September 2010', '7': 'Version Implemented on 4 May 2011', '8': 'Version Implemented on 8 November 2011', '9': 'Version Implemented on 2 May 2012', '10': 'Version Implemented on 7 November 2012', '11': 'Version Implemented on 8 May 2013', '12': 'Version Implemented on 14 November 2013', '13': 'Version Implemented on 7 May 2014', '14': 'Version Implemented on 5 November 2014', '16': 'Version Implemented on 11 November 2015', '17': 'Version Implemented on 4 May 2016', '18': 'Version Implemented on 2 November 2016', '19': 'Version Implemented on 3 May 2017', '20': 'Version Implemented on 8 November 2017', '21': 'Version Implemented on 2 May 2018', '22': 'Version Implemented on 7 November 2018', '23': 'Version Implemented on 15 May 2019', '24': 'Version Implemented on 06 November 2019', '25': 'Version Implemented on 06 May 2020', '26': 'Version Implemented on 16 November 2020', '27': 'Version Implemented on 16 June 2021', '28': 'Version Implemented on 15 November 2021', '29': 'Version Implemented on 15 May 2022', '30': 'Version Implemented on 15 November 2022', '31': 'Version Implemented on 15 June 2023', '32': 'Pre-operational to be implemented by next amendment', '23-254': 'Future Version', '255': 'Missing"'}"}, {"fullname": "grib2io.tables.section1.table_1_1", "modulename": "grib2io.tables.section1", "qualname": "table_1_1", "kind": "variable", "doc": "

    \n", "default_value": "{'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'}"}, {"fullname": "grib2io.tables.section1.table_1_2", "modulename": "grib2io.tables.section1", "qualname": "table_1_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Analysis', '1': 'Start of Forecast', '2': 'Verifying Time of Forecast', '3': 'Observation Time', '4': 'Local Time', '5-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section1.table_1_3", "modulename": "grib2io.tables.section1", "qualname": "table_1_3", "kind": "variable", "doc": "

    \n", "default_value": "{'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': 'Copernicus Regional Reanalysis', '11': 'Copernicus Regional Reanalysis Test', '12-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section1.table_1_4", "modulename": "grib2io.tables.section1", "qualname": "table_1_4", "kind": "variable", "doc": "

    \n", "default_value": "{'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'}"}, {"fullname": "grib2io.tables.section1.table_1_5", "modulename": "grib2io.tables.section1", "qualname": "table_1_5", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Calendar Definition', '1': 'Paleontological Offset', '2': 'Calendar Definition and Paleontological Offset', '3-32767': 'Reserved', '32768-65534': 'Reserved for Local Use', '65535': 'Missing'}"}, {"fullname": "grib2io.tables.section1.table_1_6", "modulename": "grib2io.tables.section1", "qualname": "table_1_6", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Gregorian', '1': '360-day', '2': '365-day', '3': 'Proleptic Gregorian', '4-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section3", "modulename": "grib2io.tables.section3", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section3.table_3_0", "modulename": "grib2io.tables.section3", "qualname": "table_3_0", "kind": "variable", "doc": "

    \n", "default_value": "{'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.'}"}, {"fullname": "grib2io.tables.section3.table_3_1", "modulename": "grib2io.tables.section3", "qualname": "table_3_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Latitude/Longitude', '1': 'Rotated Latitude/Longitude', '2': 'Stretched Latitude/Longitude', '3': 'Rotated and Stretched Latitude/Longitude', '4': 'Variable Resolution Latitude/longitude ', '5': 'Variable Resolution Rotated Latitude/longitude ', '6-9': 'Reserved', '10': 'Mercator', '11': 'Reserved', '12': 'Transverse Mercator ', '13': 'Mercator with modelling subdomains definition ', '14-19': 'Reserved', '20': 'Polar Stereographic Projection (Can be North or South)', '21-22': 'Reserved', '23': 'Polar Stereographic with modelling subdomains definition ', '24-29': 'Reserved', '30': 'Lambert Conformal (Can be Secant, Tangent, Conical, or Bipolar)', '31': 'Albers Equal Area', '32': 'Reserved', '33': 'Lambert conformal with modelling subdomains definition ', '34-39': 'Reserved', '40': 'Gaussian Latitude/Longitude', '41': 'Rotated Gaussian Latitude/Longitude', '42': 'Stretched Gaussian Latitude/Longitude', '43': 'Rotated and Stretched Gaussian Latitude/Longitude', '44-49': 'Reserved', '50': 'Spherical Harmonic Coefficients', '51': 'Rotated Spherical Harmonic Coefficients', '52': 'Stretched Spherical Harmonic Coefficients', '53': 'Rotated and Stretched Spherical Harmonic Coefficients', '54-59': 'Reserved', '60': 'Cubed-Sphere Gnomonic ', '61': 'Spectral Mercator with modelling subdomains definition ', '62': 'Spectral Polar Stereographic with modelling subdomains definition ', '63': 'Spectral Lambert conformal with modelling subdomains definition ', '64-89': 'Reserved', '90': 'Space View Perspective or Orthographic', '91-99': 'Reserved', '100': 'Triangular Grid Based on an Icosahedron', '101': 'General Unstructured Grid (see Template 3.101)', '102-109': 'Reserved', '110': 'Equatorial Azimuthal Equidistant Projection', '111-119': 'Reserved', '120': 'Azimuth-Range Projection', '121-139': 'Reserved', '140': 'Lambert Azimuthal Equal Area Projection ', '141-203': 'Reserved', '204': 'Curvilinear Orthogonal Grids', '205-999': 'Reserved', '1000': 'Cross Section Grid with Points Equally Spaced on the Horizontal', '1001-1099': 'Reserved', '1100': 'Hovmoller Diagram with Points Equally Spaced on the Horizontal', '1101-1199': 'Reserved', '1200': 'Time Section Grid', '1201-32767': 'Reserved', '32768-65534': 'Reserved for Local Use', '32768': 'Rotated Latitude/Longitude (Arakawa Staggered E-Grid)', '32769': 'Rotated Latitude/Longitude (Arakawa Non-E Staggered Grid)', '65535': 'Missing'}"}, {"fullname": "grib2io.tables.section3.table_3_2", "modulename": "grib2io.tables.section3", "qualname": "table_3_2", "kind": "variable", "doc": "

    \n", "default_value": "{'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': 'Earth model assumed WGS84 with corrected geomagnetic coordinates (latitude and longitude) defined by Gustafsson et al., 1992".', '11': 'Sun assumed spherical with radius = 695 990 000 m (Allen, C.W., Astrophysical Quantities, 3rd ed.; Athlone: London, 1976) and Stonyhurst latitude and longitude system with origin at the intersection of the solar central meridian (as seen from Earth) and the solar equator (Thompson, W., Coordinate systems for solar image data, Astron. Astrophys. 2006, 449, 791-803)', '12-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section3.table_3_11", "modulename": "grib2io.tables.section3", "qualname": "table_3_11", "kind": "variable", "doc": "

    \n", "default_value": "{'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)', '4-254': 'Reserved', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section3.table_earth_params", "modulename": "grib2io.tables.section3", "qualname": "table_earth_params", "kind": "variable", "doc": "

    \n", "default_value": "{'0': {'shape': 'spherical', 'radius': 6367470.0}, '1': {'shape': 'spherical', 'radius': None}, '2': {'shape': 'oblateSpheriod', 'major_axis': 6378160.0, 'minor_axis': 6356775.0, 'flattening': 0.003367003367003367}, '3': {'shape': 'oblateSpheriod', 'major_axis': None, 'minor_axis': None, 'flattening': None}, '4': {'shape': 'oblateSpheriod', 'major_axis': 6378137.0, 'minor_axis': 6356752.314, 'flattening': 0.003352810681182319}, '5': {'shape': 'ellipsoid', 'major_axis': 6378137.0, 'minor_axis': 6356752.3142, 'flattening': 0.003352810681182319}, '6': {'shape': 'spherical', 'radius': 6371229.0}, '7': {'shape': 'oblateSpheriod', 'major_axis': None, 'minor_axis': None, 'flattening': None}, '8': {'shape': 'spherical', 'radius': 6371200.0}, '9': {'shape': 'unknown', 'radius': None}, '10': {'shape': 'unknown', 'radius': None}, '11': {'shape': 'unknown', 'radius': None}, '12': {'shape': 'unknown', 'radius': None}, '13': {'shape': 'unknown', 'radius': None}, '14': {'shape': 'unknown', 'radius': None}, '15': {'shape': 'unknown', 'radius': None}, '16': {'shape': 'unknown', 'radius': None}, '17': {'shape': 'unknown', 'radius': None}, '18': {'shape': 'unknown', 'radius': None}, '19': {'shape': 'unknown', 'radius': None}, '20': {'shape': 'unknown', 'radius': None}, '21': {'shape': 'unknown', 'radius': None}, '22': {'shape': 'unknown', 'radius': None}, '23': {'shape': 'unknown', 'radius': None}, '24': {'shape': 'unknown', 'radius': None}, '25': {'shape': 'unknown', 'radius': None}, '26': {'shape': 'unknown', 'radius': None}, '27': {'shape': 'unknown', 'radius': None}, '28': {'shape': 'unknown', 'radius': None}, '29': {'shape': 'unknown', 'radius': None}, '30': {'shape': 'unknown', 'radius': None}, '31': {'shape': 'unknown', 'radius': None}, '32': {'shape': 'unknown', 'radius': None}, '33': {'shape': 'unknown', 'radius': None}, '34': {'shape': 'unknown', 'radius': None}, '35': {'shape': 'unknown', 'radius': None}, '36': {'shape': 'unknown', 'radius': None}, '37': {'shape': 'unknown', 'radius': None}, '38': {'shape': 'unknown', 'radius': None}, '39': {'shape': 'unknown', 'radius': None}, '40': {'shape': 'unknown', 'radius': None}, '41': {'shape': 'unknown', 'radius': None}, '42': {'shape': 'unknown', 'radius': None}, '43': {'shape': 'unknown', 'radius': None}, '44': {'shape': 'unknown', 'radius': None}, '45': {'shape': 'unknown', 'radius': None}, '46': {'shape': 'unknown', 'radius': None}, '47': {'shape': 'unknown', 'radius': None}, '48': {'shape': 'unknown', 'radius': None}, '49': {'shape': 'unknown', 'radius': None}, '50': {'shape': 'unknown', 'radius': None}, '51': {'shape': 'unknown', 'radius': None}, '52': {'shape': 'unknown', 'radius': None}, '53': {'shape': 'unknown', 'radius': None}, '54': {'shape': 'unknown', 'radius': None}, '55': {'shape': 'unknown', 'radius': None}, '56': {'shape': 'unknown', 'radius': None}, '57': {'shape': 'unknown', 'radius': None}, '58': {'shape': 'unknown', 'radius': None}, '59': {'shape': 'unknown', 'radius': None}, '60': {'shape': 'unknown', 'radius': None}, '61': {'shape': 'unknown', 'radius': None}, '62': {'shape': 'unknown', 'radius': None}, '63': {'shape': 'unknown', 'radius': None}, '64': {'shape': 'unknown', 'radius': None}, '65': {'shape': 'unknown', 'radius': None}, '66': {'shape': 'unknown', 'radius': None}, '67': {'shape': 'unknown', 'radius': None}, '68': {'shape': 'unknown', 'radius': None}, '69': {'shape': 'unknown', 'radius': None}, '70': {'shape': 'unknown', 'radius': None}, '71': {'shape': 'unknown', 'radius': None}, '72': {'shape': 'unknown', 'radius': None}, '73': {'shape': 'unknown', 'radius': None}, '74': {'shape': 'unknown', 'radius': None}, '75': {'shape': 'unknown', 'radius': None}, '76': {'shape': 'unknown', 'radius': None}, '77': {'shape': 'unknown', 'radius': None}, '78': {'shape': 'unknown', 'radius': None}, '79': {'shape': 'unknown', 'radius': None}, '80': {'shape': 'unknown', 'radius': None}, '81': {'shape': 'unknown', 'radius': None}, '82': {'shape': 'unknown', 'radius': None}, '83': {'shape': 'unknown', 'radius': None}, '84': {'shape': 'unknown', 'radius': None}, '85': {'shape': 'unknown', 'radius': None}, '86': {'shape': 'unknown', 'radius': None}, '87': {'shape': 'unknown', 'radius': None}, '88': {'shape': 'unknown', 'radius': None}, '89': {'shape': 'unknown', 'radius': None}, '90': {'shape': 'unknown', 'radius': None}, '91': {'shape': 'unknown', 'radius': None}, '92': {'shape': 'unknown', 'radius': None}, '93': {'shape': 'unknown', 'radius': None}, '94': {'shape': 'unknown', 'radius': None}, '95': {'shape': 'unknown', 'radius': None}, '96': {'shape': 'unknown', 'radius': None}, '97': {'shape': 'unknown', 'radius': None}, '98': {'shape': 'unknown', 'radius': None}, '99': {'shape': 'unknown', 'radius': None}, '100': {'shape': 'unknown', 'radius': None}, '101': {'shape': 'unknown', 'radius': None}, '102': {'shape': 'unknown', 'radius': None}, '103': {'shape': 'unknown', 'radius': None}, '104': {'shape': 'unknown', 'radius': None}, '105': {'shape': 'unknown', 'radius': None}, '106': {'shape': 'unknown', 'radius': None}, '107': {'shape': 'unknown', 'radius': None}, '108': {'shape': 'unknown', 'radius': None}, '109': {'shape': 'unknown', 'radius': None}, '110': {'shape': 'unknown', 'radius': None}, '111': {'shape': 'unknown', 'radius': None}, '112': {'shape': 'unknown', 'radius': None}, '113': {'shape': 'unknown', 'radius': None}, '114': {'shape': 'unknown', 'radius': None}, '115': {'shape': 'unknown', 'radius': None}, '116': {'shape': 'unknown', 'radius': None}, '117': {'shape': 'unknown', 'radius': None}, '118': {'shape': 'unknown', 'radius': None}, '119': {'shape': 'unknown', 'radius': None}, '120': {'shape': 'unknown', 'radius': None}, '121': {'shape': 'unknown', 'radius': None}, '122': {'shape': 'unknown', 'radius': None}, '123': {'shape': 'unknown', 'radius': None}, '124': {'shape': 'unknown', 'radius': None}, '125': {'shape': 'unknown', 'radius': None}, '126': {'shape': 'unknown', 'radius': None}, '127': {'shape': 'unknown', 'radius': None}, '128': {'shape': 'unknown', 'radius': None}, '129': {'shape': 'unknown', 'radius': None}, '130': {'shape': 'unknown', 'radius': None}, '131': {'shape': 'unknown', 'radius': None}, '132': {'shape': 'unknown', 'radius': None}, '133': {'shape': 'unknown', 'radius': None}, '134': {'shape': 'unknown', 'radius': None}, '135': {'shape': 'unknown', 'radius': None}, '136': {'shape': 'unknown', 'radius': None}, '137': {'shape': 'unknown', 'radius': None}, '138': {'shape': 'unknown', 'radius': None}, '139': {'shape': 'unknown', 'radius': None}, '140': {'shape': 'unknown', 'radius': None}, '141': {'shape': 'unknown', 'radius': None}, '142': {'shape': 'unknown', 'radius': None}, '143': {'shape': 'unknown', 'radius': None}, '144': {'shape': 'unknown', 'radius': None}, '145': {'shape': 'unknown', 'radius': None}, '146': {'shape': 'unknown', 'radius': None}, '147': {'shape': 'unknown', 'radius': None}, '148': {'shape': 'unknown', 'radius': None}, '149': {'shape': 'unknown', 'radius': None}, '150': {'shape': 'unknown', 'radius': None}, '151': {'shape': 'unknown', 'radius': None}, '152': {'shape': 'unknown', 'radius': None}, '153': {'shape': 'unknown', 'radius': None}, '154': {'shape': 'unknown', 'radius': None}, '155': {'shape': 'unknown', 'radius': None}, '156': {'shape': 'unknown', 'radius': None}, '157': {'shape': 'unknown', 'radius': None}, '158': {'shape': 'unknown', 'radius': None}, '159': {'shape': 'unknown', 'radius': None}, '160': {'shape': 'unknown', 'radius': None}, '161': {'shape': 'unknown', 'radius': None}, '162': {'shape': 'unknown', 'radius': None}, '163': {'shape': 'unknown', 'radius': None}, '164': {'shape': 'unknown', 'radius': None}, '165': {'shape': 'unknown', 'radius': None}, '166': {'shape': 'unknown', 'radius': None}, '167': {'shape': 'unknown', 'radius': None}, '168': {'shape': 'unknown', 'radius': None}, '169': {'shape': 'unknown', 'radius': None}, '170': {'shape': 'unknown', 'radius': None}, '171': {'shape': 'unknown', 'radius': None}, '172': {'shape': 'unknown', 'radius': None}, '173': {'shape': 'unknown', 'radius': None}, '174': {'shape': 'unknown', 'radius': None}, '175': {'shape': 'unknown', 'radius': None}, '176': {'shape': 'unknown', 'radius': None}, '177': {'shape': 'unknown', 'radius': None}, '178': {'shape': 'unknown', 'radius': None}, '179': {'shape': 'unknown', 'radius': None}, '180': {'shape': 'unknown', 'radius': None}, '181': {'shape': 'unknown', 'radius': None}, '182': {'shape': 'unknown', 'radius': None}, '183': {'shape': 'unknown', 'radius': None}, '184': {'shape': 'unknown', 'radius': None}, '185': {'shape': 'unknown', 'radius': None}, '186': {'shape': 'unknown', 'radius': None}, '187': {'shape': 'unknown', 'radius': None}, '188': {'shape': 'unknown', 'radius': None}, '189': {'shape': 'unknown', 'radius': None}, '190': {'shape': 'unknown', 'radius': None}, '191': {'shape': 'unknown', 'radius': None}, '192': {'shape': 'unknown', 'radius': None}, '193': {'shape': 'unknown', 'radius': None}, '194': {'shape': 'unknown', 'radius': None}, '195': {'shape': 'unknown', 'radius': None}, '196': {'shape': 'unknown', 'radius': None}, '197': {'shape': 'unknown', 'radius': None}, '198': {'shape': 'unknown', 'radius': None}, '199': {'shape': 'unknown', 'radius': None}, '200': {'shape': 'unknown', 'radius': None}, '201': {'shape': 'unknown', 'radius': None}, '202': {'shape': 'unknown', 'radius': None}, '203': {'shape': 'unknown', 'radius': None}, '204': {'shape': 'unknown', 'radius': None}, '205': {'shape': 'unknown', 'radius': None}, '206': {'shape': 'unknown', 'radius': None}, '207': {'shape': 'unknown', 'radius': None}, '208': {'shape': 'unknown', 'radius': None}, '209': {'shape': 'unknown', 'radius': None}, '210': {'shape': 'unknown', 'radius': None}, '211': {'shape': 'unknown', 'radius': None}, '212': {'shape': 'unknown', 'radius': None}, '213': {'shape': 'unknown', 'radius': None}, '214': {'shape': 'unknown', 'radius': None}, '215': {'shape': 'unknown', 'radius': None}, '216': {'shape': 'unknown', 'radius': None}, '217': {'shape': 'unknown', 'radius': None}, '218': {'shape': 'unknown', 'radius': None}, '219': {'shape': 'unknown', 'radius': None}, '220': {'shape': 'unknown', 'radius': None}, '221': {'shape': 'unknown', 'radius': None}, '222': {'shape': 'unknown', 'radius': None}, '223': {'shape': 'unknown', 'radius': None}, '224': {'shape': 'unknown', 'radius': None}, '225': {'shape': 'unknown', 'radius': None}, '226': {'shape': 'unknown', 'radius': None}, '227': {'shape': 'unknown', 'radius': None}, '228': {'shape': 'unknown', 'radius': None}, '229': {'shape': 'unknown', 'radius': None}, '230': {'shape': 'unknown', 'radius': None}, '231': {'shape': 'unknown', 'radius': None}, '232': {'shape': 'unknown', 'radius': None}, '233': {'shape': 'unknown', 'radius': None}, '234': {'shape': 'unknown', 'radius': None}, '235': {'shape': 'unknown', 'radius': None}, '236': {'shape': 'unknown', 'radius': None}, '237': {'shape': 'unknown', 'radius': None}, '238': {'shape': 'unknown', 'radius': None}, '239': {'shape': 'unknown', 'radius': None}, '240': {'shape': 'unknown', 'radius': None}, '241': {'shape': 'unknown', 'radius': None}, '242': {'shape': 'unknown', 'radius': None}, '243': {'shape': 'unknown', 'radius': None}, '244': {'shape': 'unknown', 'radius': None}, '245': {'shape': 'unknown', 'radius': None}, '246': {'shape': 'unknown', 'radius': None}, '247': {'shape': 'unknown', 'radius': None}, '248': {'shape': 'unknown', 'radius': None}, '249': {'shape': 'unknown', 'radius': None}, '250': {'shape': 'unknown', 'radius': None}, '251': {'shape': 'unknown', 'radius': None}, '252': {'shape': 'unknown', 'radius': None}, '253': {'shape': 'unknown', 'radius': None}, '254': {'shape': 'unknown', 'radius': None}, '255': {'shape': 'unknown', 'radius': None}}"}, {"fullname": "grib2io.tables.section4", "modulename": "grib2io.tables.section4", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4.table_4_1_0", "modulename": "grib2io.tables.section4", "qualname": "table_4_1_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Temperature', '1': 'Moisture', '2': 'Momentum', '3': 'Mass', '4': 'Short-wave radiation', '5': 'Long-wave radiation', '6': 'Cloud', '7': 'Thermodynamic Stability indicies', '8': 'Kinematic Stability indicies', '9': 'Temperature Probabilities*', '10': 'Moisture Probabilities*', '11': 'Momentum Probabilities*', '12': 'Mass Probabilities*', '13': 'Aerosols', '14': 'Trace gases', '15': 'Radar', '16': 'Forecast Radar Imagery', '17': 'Electrodynamics', '18': 'Nuclear/radiology', '19': 'Physical atmospheric properties', '20': 'Atmospheric chemical Constituents', '21-189': 'Reserved', '190': 'CCITT IA5 string', '191': 'Miscellaneous', '192-254': 'Reserved for Local Use', '192': 'Covariance', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_1_1", "modulename": "grib2io.tables.section4", "qualname": "table_4_1_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Hydrology basic products', '1': 'Hydrology probabilities', '2': 'Inland water and sediment properties', '3-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_1_2", "modulename": "grib2io.tables.section4", "qualname": "table_4_1_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Vegetation/Biomass', '1': 'Agricultural/Aquacultural Special Products', '2': 'Transportation-related Products', '3': 'Soil Products', '4': 'Fire Weather Products', '5': 'Land Surface Products', '6-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_1_3", "modulename": "grib2io.tables.section4", "qualname": "table_4_1_3", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Image format products', '1': 'Quantitative products', '2': 'Cloud Properties', '3': 'Flight Rules Conditions', '4': 'Volcanic Ash', '5': 'Sea-surface Temperature', '6': 'Solar Radiation', '7-191': 'Reserved', '192-254': 'Reserved for Local Use', '192': 'Forecast Satellite Imagery', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_1_4", "modulename": "grib2io.tables.section4", "qualname": "table_4_1_4", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Temperature', '1': 'Momentum', '2': 'Charged Particle Mass and Number', '3': 'Electric and Magnetic Fields', '4': 'Energetic Particles', '5': 'Waves', '6': 'Solar Electromagnetic Emissions', '7': 'Terrestrial Electromagnetic Emissions', '8': 'Imagery', '9': 'Ion-Neutral Coupling', '10': 'Space Weather Indices', '11-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_1_10", "modulename": "grib2io.tables.section4", "qualname": "table_4_1_10", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Waves', '1': 'Currents', '2': 'Ice', '3': 'Surface Properties', '4': 'Sub-surface Properties', '5-190': 'Reserved', '191': 'Miscellaneous', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_1_20", "modulename": "grib2io.tables.section4", "qualname": "table_4_1_20", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Health Indicators', '1': 'Epidemiology', '2': 'Socioeconomic indicators', '3-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_0", "modulename": "grib2io.tables.section4", "qualname": "table_4_0", "kind": "variable", "doc": "

    \n", "default_value": "{'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 optical properties of 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 (DEPRECATED) (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-75': 'Reserved', '76': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source or sink. (see Template 4.76)', '77': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for atmospheric chemical constituents with source or sink. (see Template 4.77)', '78': '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 with source or sink. (see Template 4.78)', '79': '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 with source or sink. (see Template 4.79)', '80': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for optical properties of aerosol with source or sink. (see Template 4.80)', '81': '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 with source or sink. (see Template 4.81)', '82': '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 with source or sink. (see Template 4.82)', '83': '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 with source or sink. (see Template 4.83)', '84': '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 with source or sink. (see Template 4.84)', '85': '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.85)', '86': 'Quantile forecasts at a horizontal level or in a horizontal layer at a point in time. (see Template 4.86)', '87': 'Quantile forecasts at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval. (see Template 4.87)', '88': 'Analysis or forecast at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.88)', '89-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': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.92)', '93': 'Post-processing analysis or forecast at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.93)', '94': 'Post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.94)', '95': 'Average, accumulation, extreme values or other statiscally processed value at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.95)', '96': 'Average, accumulation, extreme values or other statistically processed values of an individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.96)', '97': 'Average, accumulation, extreme values or other statistically processed values of post-processing analysis or forecast at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.97)', '98': 'Average, accumulation, extreme values or other statistically processed values of a post-processing individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a specified local time. (see Template 4.98)', '99': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with explicit list of frequencies and directions (see Template 4.99)', '100': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with explicit list of frequencies and directions (see Template 4.100)', '101': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with frequencies and directions defined by formulae (see Template 4.101)', '102': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for wave 2D spectra with frequencies and directions defined by formulae (see Template 4.102)', '103': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for waves selected by period range (see Template 4.103)', '104': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for waves selected by period range (see Template 4.104)', '105': 'Anomalies, significance and other derived products from an analysis or forecast in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (see Template 4.105)', '106': 'Anomalies, significance and other derived products from an individual ensemble forecast, control and perturbed in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (see Template 4.106)', '107': 'Anomalies, significance and other derived products from derived forecasts based on all ensemble members in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (see Template 4.107)', '108': 'Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for generic optical products (see Template 4.108)', '109': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time for generic optical products (see Template 4.109)', '110': '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 for generic optical products (see Template 4.110)', '111': 'Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous interval for generic optical products (see Template 4.111)', '112': 'Anomalies, significance and other derived products as probability forecasts in relation to a reference period at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (see Template 4.112)', '113-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'}"}, {"fullname": "grib2io.tables.section4.table_4_3", "modulename": "grib2io.tables.section4", "qualname": "table_4_3", "kind": "variable", "doc": "

    \n", "default_value": "{'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': 'First guess', '20': 'Analysis increment', '21': 'Initialization increment for analysis', '22-191': 'Reserved', '192-254': 'Reserved for Local Use', '192': 'Forecast Confidence Indicator', '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'}"}, {"fullname": "grib2io.tables.section4.table_4_4", "modulename": "grib2io.tables.section4", "qualname": "table_4_4", "kind": "variable", "doc": "

    \n", "default_value": "{'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'}"}, {"fullname": "grib2io.tables.section4.table_4_5", "modulename": "grib2io.tables.section4", "qualname": "table_4_5", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Reserved', 'unknown'], '1': ['Ground or Water Surface', 'unknown'], '2': ['Cloud Base Level', 'unknown'], '3': ['Level of Cloud Tops', 'unknown'], '4': ['Level of 0o C Isotherm', 'unknown'], '5': ['Level of Adiabatic Condensation Lifted from the Surface', 'unknown'], '6': ['Maximum Wind Level', 'unknown'], '7': ['Tropopause', 'unknown'], '8': ['Nominal Top of the Atmosphere', 'unknown'], '9': ['Sea Bottom', 'unknown'], '10': ['Entire Atmosphere', 'unknown'], '11': ['Cumulonimbus Base (CB)', 'm'], '12': ['Cumulonimbus Top (CT)', 'm'], '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)', 'unknown'], '15': ['Convection condensation level (CCL)', 'unknown'], '16': ['Level of neutral buoyancy or equilibrium (LNB)', 'unknown'], '17': ['Departure level of the most unstable parcel of air (MUDL)', 'unknown'], '18': ['Departure level of a mixed layer parcel of air with specified layer depth', 'Pa'], '19': ['Reserved', 'unknown'], '20': ['Isothermal Level', 'K'], '21': ['Lowest level where mass density exceeds the specified value (base for a given threshold of mass density)', 'kg m-3'], '22': ['Highest level where mass density exceeds the specified value (top for a given threshold of mass density)', 'kg m-3'], '23': ['Lowest level where air concentration exceeds the specified value (base for a given threshold of air concentration', 'Bq m-3'], '24': ['Highest level where air concentration exceeds the specified value (top for a given threshold of air concentration)', 'Bq m-3'], '25': ['Highest level where radar reflectivity exceeds the specified value (echo top for a given threshold of reflectivity)', 'dBZ'], '26': ['Convective cloud layer base', 'm'], '27': ['Convective cloud layer top', 'm'], '28-29': ['Reserved', 'unknown'], '30': ['Specified radius from the centre of the Sun', 'm'], '31': ['Solar photosphere', 'unknown'], '32': ['Ionospheric D-region level', 'unknown'], '33': ['Ionospheric E-region level', 'unknown'], '34': ['Ionospheric F1-region level', 'unknown'], '35': ['Ionospheric F2-region level', 'unknown'], '36-99': ['Reserved', 'unknown'], '100': ['Isobaric Surface', 'Pa'], '101': ['Mean Sea Level', 'unknown'], '102': ['Specific Altitude Above Mean Sea Level', 'm'], '103': ['Specified Height Level Above Ground', 'm'], '104': ['Sigma Level', 'unknown'], '105': ['Hybrid Level', 'unknown'], '106': ['Depth Below Land Surface', 'm'], '107': ['Isentropic (theta) Level', 'K'], '108': ['Level at Specified Pressure Difference from Ground to Level', 'Pa'], '109': ['Potential Vorticity Surface', 'K m2 kg-1 s-1'], '110': ['Reserved', 'unknown'], '111': ['Eta Level', 'unknown'], '112': ['Reserved', 'unknown'], '113': ['Logarithmic Hybrid Level', 'unknown'], '114': ['Snow Level', 'Numeric'], '115': ['Sigma height level', 'unknown'], '116': ['Reserved', 'unknown'], '117': ['Mixed Layer Depth', 'm'], '118': ['Hybrid Height Level', 'unknown'], '119': ['Hybrid Pressure Level', 'unknown'], '120-149': ['Reserved', 'unknown'], '150': ['Generalized Vertical Height Coordinate', 'unknown'], '151': ['Soil level', 'Numeric'], '152': ['Sea-ice level,(see Note 8)', 'Numeric'], '153-159': ['Reserved', 'unknown'], '160': ['Depth Below Sea Level', 'm'], '161': ['Depth Below Water Surface', 'm'], '162': ['Lake or River Bottom', 'unknown'], '163': ['Bottom Of Sediment Layer', 'unknown'], '164': ['Bottom Of Thermally Active Sediment Layer', 'unknown'], '165': ['Bottom Of Sediment Layer Penetrated By Thermal Wave', 'unknown'], '166': ['Mixing Layer', 'unknown'], '167': ['Bottom of Root Zone', 'unknown'], '168': ['Ocean Model Level', 'Numeric'], '169': ['Ocean level defined by water density (sigma-theta) difference from near-surface to level', 'kg m-3'], '170': ['Ocean level defined by water potential temperature difference from near-surface to level', 'K'], '171': ['Ocean level defined by vertical eddy diffusivity difference from near-surface to level,(see Note 7)', 'm2 s-1'], '172-173': ['Reserved', 'unknown'], '174': ['Top Surface of Ice on Sea, Lake or River', 'unknown'], '175': ['Top Surface of Ice, under Snow, on Sea, Lake or River', 'unknown'], '176': ['Bottom Surface (underside) Ice on Sea, Lake or River', 'unknown'], '177': ['Deep Soil (of indefinite depth)', 'unknown'], '178': ['Reserved', 'unknown'], '179': ['Top Surface of Glacier Ice and Inland Ice', 'unknown'], '180': ['Deep Inland or Glacier Ice (of indefinite depth)', 'unknown'], '181': ['Grid Tile Land Fraction as a Model Surface', 'unknown'], '182': ['Grid Tile Water Fraction as a Model Surface', 'unknown'], '183': ['Grid Tile Ice Fraction on Sea, Lake or River as a Model Surface', 'unknown'], '184': ['Grid Tile Glacier Ice and Inland Ice Fraction as a Model Surface', 'unknown'], '185-191': ['Reserved', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown'], '200': ['Entire atmosphere (considered as a single layer)', 'unknown'], '201': ['Entire ocean (considered as a single layer)', 'unknown'], '204': ['Highest tropospheric freezing level', 'unknown'], '206': ['Grid scale cloud bottom level', 'unknown'], '207': ['Grid scale cloud top level', 'unknown'], '209': ['Boundary layer cloud bottom level', 'unknown'], '210': ['Boundary layer cloud top level', 'unknown'], '211': ['Boundary layer cloud layer', 'unknown'], '212': ['Low cloud bottom level', 'unknown'], '213': ['Low cloud top level', 'unknown'], '214': ['Low cloud layer', 'unknown'], '215': ['Cloud ceiling', 'unknown'], '216': ['Effective Layer Top Level', 'm'], '217': ['Effective Layer Bottom Level', 'm'], '218': ['Effective Layer', 'm'], '220': ['Planetary Boundary Layer', 'unknown'], '221': ['Layer Between Two Hybrid Levels', 'unknown'], '222': ['Middle cloud bottom level', 'unknown'], '223': ['Middle cloud top level', 'unknown'], '224': ['Middle cloud layer', 'unknown'], '232': ['High cloud bottom level', 'unknown'], '233': ['High cloud top level', 'unknown'], '234': ['High cloud layer', 'unknown'], '235': ['Ocean Isotherm Level (1/10 \u00b0 C)', 'unknown'], '236': ['Layer between two depths below ocean surface', 'unknown'], '237': ['Bottom of Ocean Mixed Layer (m)', 'unknown'], '238': ['Bottom of Ocean Isothermal Layer (m)', 'unknown'], '239': ['Layer Ocean Surface and 26C Ocean Isothermal Level', 'unknown'], '240': ['Ocean Mixed Layer', 'unknown'], '241': ['Ordered Sequence of Data', 'unknown'], '242': ['Convective cloud bottom level', 'unknown'], '243': ['Convective cloud top level', 'unknown'], '244': ['Convective cloud layer', 'unknown'], '245': ['Lowest level of the wet bulb zero', 'unknown'], '246': ['Maximum equivalent potential temperature level', 'unknown'], '247': ['Equilibrium level', 'unknown'], '248': ['Shallow convective cloud bottom level', 'unknown'], '249': ['Shallow convective cloud top level', 'unknown'], '251': ['Deep convective cloud bottom level', 'unknown'], '252': ['Deep convective cloud top level', 'unknown'], '253': ['Lowest bottom level of supercooled liquid water layer', 'unknown'], '254': ['Highest top level of supercooled liquid water layer', 'unknown'], '255': ['Missing', 'unknown']}"}, {"fullname": "grib2io.tables.section4.table_4_6", "modulename": "grib2io.tables.section4", "qualname": "table_4_6", "kind": "variable", "doc": "

    \n", "default_value": "{'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-254': 'Reserved for Local Use', '192': 'Perturbed Ensemble Member', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_7", "modulename": "grib2io.tables.section4", "qualname": "table_4_7", "kind": "variable", "doc": "

    \n", "default_value": "{'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', '6': 'Unweighted Mean of the Cluster Members', '7': 'Interquartile Range (Range between the 25th and 75th quantile)', '8': 'Minimum Of All Ensemble Members', '9': 'Maximum Of All Ensemble Members', '10-191': 'Reserved', '192-254': 'Reserved for Local Use', '192': 'Unweighted Mode of All Members', '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'}"}, {"fullname": "grib2io.tables.section4.table_4_8", "modulename": "grib2io.tables.section4", "qualname": "table_4_8", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Anomoly Correlation', '1': 'Root Mean Square', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_9", "modulename": "grib2io.tables.section4", "qualname": "table_4_9", "kind": "variable", "doc": "

    \n", "default_value": "{'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)', '9-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_10", "modulename": "grib2io.tables.section4", "qualname": "table_4_10", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Average', '1': 'Accumulation', '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)', '8': 'Difference ( value at the beginning of the time range minus value at the end)', '9': 'Ratio', '10': 'Standardized Anomaly', '11': 'Summation', '12': 'Return period', '13-99': 'Reserved', '100': 'Severity', '101': 'Mode', '102-191': 'Reserved', '192-254': 'Reserved for Local Use', '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. If 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. If 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.', '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', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_11", "modulename": "grib2io.tables.section4", "qualname": "table_4_11", "kind": "variable", "doc": "

    \n", "default_value": "{'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'}"}, {"fullname": "grib2io.tables.section4.table_4_15", "modulename": "grib2io.tables.section4", "qualname": "table_4_15", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Data is calculated directly from the source grid with no interpolation', '1': 'Bilinear interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', '2': 'Bicubic interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', '3': 'Using the value from the source grid grid-point which is nearest to the nominal grid-point', '4': 'Budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', '5': 'Spectral interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', '6': 'Neighbor-budget interpolation using the 4 source grid grid-point values surrounding the nominal grid-point', '7-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_91", "modulename": "grib2io.tables.section4", "qualname": "table_4_91", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Smaller than first limit', '1': 'Greater than second limit', '2': 'Between first and second limit. The range includes the first limit but not the second limit.', '3': 'Greater than first limit', '4': 'Smaller than second limit', '5': 'Smaller or equal first limit', '6': 'Greater or equal second limit', '7': 'Between first and second limit. The range includes the first limit and the second limit.', '8': 'Greater or equal first limit', '9': 'Smaller or equal second limit', '10': 'Between first and second limit. The range includes the second limit but not the first limit.', '11': 'Equal to first limit', '12-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_201", "modulename": "grib2io.tables.section4", "qualname": "table_4_201", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'Rain', '2': 'Thunderstorm', '3': 'Freezing Rain', '4': 'Mixed/Ice', '5': 'Snow', '6': 'Wet Snow', '7': 'Mixture of Rain and Snow', '8': 'Ice Pellets', '9': 'Graupel', '10': 'Hail', '11': 'Drizzle', '12': 'Freezing Drizzle', '13-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_202", "modulename": "grib2io.tables.section4", "qualname": "table_4_202", "kind": "variable", "doc": "

    \n", "default_value": "{'0-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_203", "modulename": "grib2io.tables.section4", "qualname": "table_4_203", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Clear', '1': 'Cumulonimbus', '2': 'Stratus', '3': 'Stratocumulus', '4': 'Cumulus', '5': 'Altostratus', '6': 'Nimbostratus', '7': 'Altocumulus', '8': 'Cirrostratus', '9': 'Cirrorcumulus', '10': 'Cirrus', '11': 'Cumulonimbus - ground-based fog beneath the lowest layer', '12': 'Stratus - ground-based fog beneath the lowest layer', '13': 'Stratocumulus - ground-based fog beneath the lowest layer', '14': 'Cumulus - ground-based fog beneath the lowest layer', '15': 'Altostratus - ground-based fog beneath the lowest layer', '16': 'Nimbostratus - ground-based fog beneath the lowest layer', '17': 'Altocumulus - ground-based fog beneath the lowest layer', '18': 'Cirrostratus - ground-based fog beneath the lowest layer', '19': 'Cirrorcumulus - ground-based fog beneath the lowest layer', '20': 'Cirrus - ground-based fog beneath the lowest layer', '21-190': 'Reserved', '191': 'Unknown', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_204", "modulename": "grib2io.tables.section4", "qualname": "table_4_204", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'Isolated (1-2%)', '2': 'Few (3-5%)', '3': 'Scattered (16-45%)', '4': 'Numerous (>45%)', '5-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_205", "modulename": "grib2io.tables.section4", "qualname": "table_4_205", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Aerosol not present', '1': 'Aerosol present', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_206", "modulename": "grib2io.tables.section4", "qualname": "table_4_206", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Not Present', '1': 'Present', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_207", "modulename": "grib2io.tables.section4", "qualname": "table_4_207", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'Light', '2': 'Moderate', '3': 'Severe', '4': 'Trace', '5': 'Heavy', '6-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_208", "modulename": "grib2io.tables.section4", "qualname": "table_4_208", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'Light', '2': 'Moderate', '3': 'Severe', '4': 'Extreme', '5-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_209", "modulename": "grib2io.tables.section4", "qualname": "table_4_209", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'Stable', '2': 'Mechanically-Driven Turbulence', '3': 'Force Convection', '4': 'Free Convection', '5-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_210", "modulename": "grib2io.tables.section4", "qualname": "table_4_210", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Contrail Not Present', '1': 'Contrail Present', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_211", "modulename": "grib2io.tables.section4", "qualname": "table_4_211", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Low Bypass', '1': 'High Bypass', '2': 'Non-Bypass', '3-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_212", "modulename": "grib2io.tables.section4", "qualname": "table_4_212", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'Urban Land', '2': 'Agricultural', '3': 'Range Land', '4': 'Deciduous Forest', '5': 'Coniferous Forest', '6': 'Forest/Wetland', '7': 'Water', '8': 'Wetlands', '9': 'Desert', '10': 'Tundra', '11': 'Ice', '12': 'Tropical Forest', '13': 'Savannah', '14-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_213", "modulename": "grib2io.tables.section4", "qualname": "table_4_213", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'Sand', '2': 'Loamy Sand', '3': 'Sandy Loam', '4': 'Silt Loam', '5': 'Organic', '6': 'Sandy Clay Loam', '7': 'Silt Clay Loam', '8': 'Clay Loam', '9': 'Sandy Clay', '10': 'Silty Clay', '11': 'Clay', '12-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_215", "modulename": "grib2io.tables.section4", "qualname": "table_4_215", "kind": "variable", "doc": "

    \n", "default_value": "{'0-49': 'Reserved', '50': 'No-Snow/No-Cloud', '51-99': 'Reserved', '100': 'Clouds', '101-249': 'Reserved', '250': 'Snow', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_216", "modulename": "grib2io.tables.section4", "qualname": "table_4_216", "kind": "variable", "doc": "

    \n", "default_value": "{'0-90': 'Elevation in increments of 100 m', '91-253': 'Reserved', '254': 'Clouds', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_217", "modulename": "grib2io.tables.section4", "qualname": "table_4_217", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Clear over water', '1': 'Clear over land', '2': 'Cloud', '3': 'No data', '4-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_218", "modulename": "grib2io.tables.section4", "qualname": "table_4_218", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No Scene Identified', '1': 'Green Needle-Leafed Forest', '2': 'Green Broad-Leafed Forest', '3': 'Deciduous Needle-Leafed Forest', '4': 'Deciduous Broad-Leafed Forest', '5': 'Deciduous Mixed Forest', '6': 'Closed Shrub-Land', '7': 'Open Shrub-Land', '8': 'Woody Savannah', '9': 'Savannah', '10': 'Grassland', '11': 'Permanent Wetland', '12': 'Cropland', '13': 'Urban', '14': 'Vegetation / Crops', '15': 'Permanent Snow / Ice', '16': 'Barren Desert', '17': 'Water Bodies', '18': 'Tundra', '19': 'Warm Liquid Water Cloud', '20': 'Supercooled Liquid Water Cloud', '21': 'Mixed Phase Cloud', '22': 'Optically Thin Ice Cloud', '23': 'Optically Thick Ice Cloud', '24': 'Multi-Layeblack Cloud', '25-96': 'Reserved', '97': 'Snow / Ice on Land', '98': 'Snow / Ice on Water', '99': 'Sun-Glint', '100': 'General Cloud', '101': 'Low Cloud / Fog / Stratus', '102': 'Low Cloud / Stratocumulus', '103': 'Low Cloud / Unknown Type', '104': 'Medium Cloud / Nimbostratus', '105': 'Medium Cloud / Altostratus', '106': 'Medium Cloud / Unknown Type', '107': 'High Cloud / Cumulus', '108': 'High Cloud / Cirrus', '109': 'High Cloud / Unknown Type', '110': 'Unknown Cloud Type', '111': 'Single layer water cloud', '112': 'Single layer ice cloud', '113-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_222", "modulename": "grib2io.tables.section4", "qualname": "table_4_222", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No', '1': 'Yes', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_223", "modulename": "grib2io.tables.section4", "qualname": "table_4_223", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No Fire Detected', '1': 'Possible Fire Detected', '2': 'Probable Fire Detected', '3': 'Missing', '4-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_224", "modulename": "grib2io.tables.section4", "qualname": "table_4_224", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No Risk Area', '1': 'Reserved', '2': 'General Thunderstorm Risk Area', '3': 'Reserved', '4': 'Slight Risk Area', '5': 'Reserved', '6': 'Moderate Risk Area', '7': 'Reserved', '8': 'High Risk Area', '9-10': 'Reserved', '11': 'Dry Thunderstorm (Dry Lightning) Risk Area', '12-13': 'Reserved', '14': 'Critical Risk Area', '15-17': 'Reserved', '18': 'Extreamly Critical Risk Area', '19-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_227", "modulename": "grib2io.tables.section4", "qualname": "table_4_227", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'General', '2': 'Convective', '3': 'Stratiform', '4': 'Freezing', '5-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_228", "modulename": "grib2io.tables.section4", "qualname": "table_4_228", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'Trace', '2': 'Light', '3': 'Moderate', '4': 'Severe', '6-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_233", "modulename": "grib2io.tables.section4", "qualname": "table_4_233", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Ozone', 'O3'], '1': ['Water Vapour', 'H2O'], '2': ['Methane', 'CH4'], '3': ['Carbon Dioxide', 'CO2'], '4': ['Carbon Monoxide', 'CO'], '5': ['Nitrogen Dioxide', 'NO2'], '6': ['Nitrous Oxide', 'N2O'], '7': ['Formaldehyde', 'HCHO'], '8': ['Sulphur Dioxide', 'SO2'], '9': ['Ammonia', 'NH3'], '10': ['Ammonium', 'NH4+'], '11': ['Nitrogen Monoxide', 'NO'], '12': ['Atomic Oxygen', 'O'], '13': ['Nitrate Radical', 'NO3'], '14': ['Hydroperoxyl Radical', 'HO2'], '15': ['Dinitrogen Pentoxide', 'H2O5'], '16': ['Nitrous Acid', 'HONO'], '17': ['Nitric Acid', 'HNO3'], '18': ['Peroxynitric Acid', 'HO2NO2'], '19': ['Hydrogen Peroxide', 'H2O2'], '20': ['Molecular Hydrogen', 'H'], '21': ['Atomic Nitrogen', 'N'], '22': ['Sulphate', 'SO42-'], '23': ['Radon', 'Rn'], '24': ['Elemental Mercury', 'Hg(O)'], '25': ['Divalent Mercury', 'Hg2+'], '26': ['Atomic Chlorine', 'Cl'], '27': ['Chlorine Monoxide', 'ClO'], '28': ['Dichlorine Peroxide', 'Cl2O2'], '29': ['Hypochlorous Acid', 'HClO'], '30': ['Chlorine Nitrate', 'ClONO2'], '31': ['Chlorine Dioxide', 'ClO2'], '32': ['Atomic Bromide', 'Br'], '33': ['Bromine Monoxide', 'BrO'], '34': ['Bromine Chloride', 'BrCl'], '35': ['Hydrogen Bromide', 'HBr'], '36': ['Hypobromous Acid', 'HBrO'], '37': ['Bromine Nitrate', 'BrONO2'], '38': ['Oxygen', 'O2'], '39-9999': ['Reserved', 'unknown'], '10000': ['Hydroxyl Radical', 'OH'], '10001': ['Methyl Peroxy Radical', 'CH3O2'], '10002': ['Methyl Hydroperoxide', 'CH3O2H'], '10003': ['Reserved', 'unknown'], '10004': ['Methanol', 'CH3OH'], '10005': ['Formic Acid', 'CH3OOH'], '10006': ['Hydrogen Cyanide', 'HCN'], '10007': ['Aceto Nitrile', 'CH3CN'], '10008': ['Ethane', 'C2H6'], '10009': ['Ethene (= Ethylene)', 'C2H4'], '10010': ['Ethyne (= Acetylene)', 'C2H2'], '10011': ['Ethanol', 'C2H5OH'], '10012': ['Acetic Acid', 'C2H5OOH'], '10013': ['Peroxyacetyl Nitrate', 'CH3C(O)OONO2'], '10014': ['Propane', 'C3H8'], '10015': ['Propene', 'C3H6'], '10016': ['Butanes', 'C4H10'], '10017': ['Isoprene', 'C5H10'], '10018': ['Alpha Pinene', 'C10H16'], '10019': ['Beta Pinene', 'C10H16'], '10020': ['Limonene', 'C10H16'], '10021': ['Benzene', 'C6H6'], '10022': ['Toluene', 'C7H8'], '10023': ['Xylene', 'C8H10'], '10024-10499': ['Reserved', 'unknown'], '10500': ['Dimethyl Sulphide', 'CH3SCH3'], '10501-20000': ['Reserved', 'unknown'], '20001': ['Hydrogen Chloride', 'HCL'], '20002': ['CFC-11', 'unknown'], '20003': ['CFC-12', 'unknown'], '20004': ['CFC-113', 'unknown'], '20005': ['CFC-113a', 'unknown'], '20006': ['CFC-114', 'unknown'], '20007': ['CFC-115', 'unknown'], '20008': ['HCFC-22', 'unknown'], '20009': ['HCFC-141b', 'unknown'], '20010': ['HCFC-142b', 'unknown'], '20011': ['Halon-1202', 'unknown'], '20012': ['Halon-1211', 'unknown'], '20013': ['Halon-1301', 'unknown'], '20014': ['Halon-2402', 'unknown'], '20015': ['Methyl Chloride (HCC-40)', 'unknown'], '20016': ['Carbon Tetrachloride (HCC-10)', 'unknown'], '20017': ['HCC-140a', 'CH3CCl3'], '20018': ['Methyl Bromide (HBC-40B1)', 'unknown'], '20019': ['Hexachlorocyclohexane (HCH)', 'unknown'], '20020': ['Alpha Hexachlorocyclohexane', 'unknown'], '20021': ['Hexachlorobiphenyl (PCB-153)', 'unknown'], '20022-29999': ['Reserved', 'unknown'], '30000': ['Radioactive Pollutant (Tracer, defined by originating centre)', 'unknown'], '30001-50000': ['Reserved', 'unknown'], '60000': ['HOx Radical (OH+HO2)', 'unknown'], '60001': ['Total Inorganic and Organic Peroxy Radicals (HO2+RO2)', 'RO2'], '60002': ['Passive Ozone', 'unknown'], '60003': ['NOx Expressed As Nitrogen', 'NOx'], '60004': ['All Nitrogen Oxides (NOy) Expressed As Nitrogen', 'NOy'], '60005': ['Total Inorganic Chlorine', 'Clx'], '60006': ['Total Inorganic Bromine', 'Brx'], '60007': ['Total Inorganic Chlorine Except HCl, ClONO2: ClOx', 'unknown'], '60008': ['Total Inorganic Bromine Except Hbr, BrONO2:BrOx', 'unknown'], '60009': ['Lumped Alkanes', 'unknown'], '60010': ['Lumped Alkenes', 'unknown'], '60011': ['Lumped Aromatic Coumpounds', 'unknown'], '60012': ['Lumped Terpenes', 'unknown'], '60013': ['Non-Methane Volatile Organic Compounds Expressed as Carbon', 'NMVOC'], '60014': ['Anthropogenic Non-Methane Volatile Organic Compounds Expressed as Carbon', 'aNMVOC'], '60015': ['Biogenic Non-Methane Volatile Organic Compounds Expressed as Carbon', 'bNMVOC'], '60016': ['Lumped Oxygenated Hydrocarbons', 'OVOC'], '60017-61999': ['Reserved', 'unknown'], '62000': ['Total Aerosol', 'unknown'], '62001': ['Dust Dry', 'unknown'], '62002': ['water In Ambient', 'unknown'], '62003': ['Ammonium Dry', 'unknown'], '62004': ['Nitrate Dry', 'unknown'], '62005': ['Nitric Acid Trihydrate', 'unknown'], '62006': ['Sulphate Dry', 'unknown'], '62007': ['Mercury Dry', 'unknown'], '62008': ['Sea Salt Dry', 'unknown'], '62009': ['Black Carbon Dry', 'unknown'], '62010': ['Particulate Organic Matter Dry', 'unknown'], '62011': ['Primary Particulate Organic Matter Dry', 'unknown'], '62012': ['Secondary Particulate Organic Matter Dry', 'unknown'], '62013': ['Black carbon hydrophilic dry', 'unknown'], '62014': ['Black carbon hydrophobic dry', 'unknown'], '62015': ['Particulate organic matter hydrophilic dry', 'unknown'], '62016': ['Particulate organic matter hydrophobic dry', 'unknown'], '62017': ['Nitrate hydrophilic dry', 'unknown'], '62018': ['Nitrate hydrophobic dry', 'unknown'], '62019': ['Reserved', 'unknown'], '62020': ['Smoke - high absorption', 'unknown'], '62021': ['Smoke - low absorption', 'unknown'], '62022': ['Aerosol - high absorption', 'unknown'], '62023': ['Aerosol - low absorption', 'unknown'], '62024': ['Reserved', 'unknown'], '62025': ['Volcanic ash', 'unknown'], '62036': ['Brown Carbon Dry', 'unknown'], '62037-65534': ['Reserved', 'unknown'], '65535': ['Missing', 'unknown']}"}, {"fullname": "grib2io.tables.section4.table_4_234", "modulename": "grib2io.tables.section4", "qualname": "table_4_234", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'Crops, mixed farming', '2': 'Short grass', '3': 'Evergreen needleleaf trees', '4': 'Deciduous needleleaf trees', '5': 'Deciduous broadleaf trees', '6': 'Evergreen broadleaf trees', '7': 'Tall grass', '8': 'Desert', '9': 'Tundra', '10': 'Irrigated corps', '11': 'Semidesert', '12': 'Ice caps and glaciers', '13': 'Bogs and marshes', '14': 'Inland water', '15': 'Ocean', '16': 'Evergreen shrubs', '17': 'Deciduous shrubs', '18': 'Mixed forest', '19': 'Interrupted forest', '20': 'Water and land mixtures', '21-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_235", "modulename": "grib2io.tables.section4", "qualname": "table_4_235", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Total Wave Spectrum (combined wind waves and swell)', '1': 'Generalized Partition', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_236", "modulename": "grib2io.tables.section4", "qualname": "table_4_236", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'Coarse', '2': 'Medium', '3': 'Medium-fine', '4': 'Fine', '5': 'Very-fine', '6': 'Organic', '7': 'Tropical-organic', '8-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_238", "modulename": "grib2io.tables.section4", "qualname": "table_4_238", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'Aviation', '2': 'Lightning', '3': 'Biogenic Sources', '4': 'Anthropogenic sources', '5': 'Wild fires', '6': 'Natural sources', '7': 'Bio-fuel', '8': 'Volcanoes', '9': 'Fossil-fuel', '10': 'Wetlands', '11': 'Oceans', '12': 'Elevated anthropogenic sources', '13': 'Surface anthropogenic sources', '14': 'Agriculture livestock', '15': 'Agriculture soils', '16': 'Agriculture waste burning', '17': 'Agriculture (all)', '18': 'Residential, commercial and other combustion', '19': 'Power generation', '20': 'Super power stations', '21': 'Fugitives', '22': 'Industrial process', '23': 'Solvents', '24': 'Ships', '25': 'Wastes', '26': 'Road transportation', '27': 'Off-road transportation', '28-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_239", "modulename": "grib2io.tables.section4", "qualname": "table_4_239", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'Bog', '2': 'Drained', '3': 'Fen', '4': 'Floodplain', '5': 'Mangrove', '6': 'Marsh', '7': 'Rice', '8': 'Riverine', '9': 'Salt Marsh', '10': 'Swamp', '11': 'Upland', '12': 'Wet tundra', '13-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_243", "modulename": "grib2io.tables.section4", "qualname": "table_4_243", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'Evergreen broadleaved forest', '2': 'Deciduous broadleaved closed forest', '3': 'Deciduous broadleaved open forest', '4': 'Evergreen needle-leaf forest', '5': 'Deciduous needle-leaf forest', '6': 'Mixed leaf trees', '7': 'Fresh water flooded trees', '8': 'Saline water flooded trees', '9': 'Mosaic tree/natural vegetation', '10': 'Burnt tree cover', '11': 'Evergreen shurbs closed-open', '12': 'Deciduous shurbs closed-open', '13': 'Herbaceous vegetation closed-open', '14': 'Sparse herbaceous or grass', '15': 'Flooded shurbs or herbaceous', '16': 'Cultivated and managed areas', '17': 'Mosaic crop/tree/natural vegetation', '18': 'Mosaic crop/shrub/grass', '19': 'Bare areas', '20': 'Water', '21': 'Snow and ice', '22': 'Artificial surface', '23': 'Ocean', '24': 'Irrigated croplands', '25': 'Rain fed croplands', '26': 'Mosaic cropland (50-70%)-vegetation (20-50%)', '27': 'Mosaic vegetation (50-70%)-cropland (20-50%)', '28': 'Closed broadleaved evergreen forest', '29': 'Closed needle-leaved evergreen forest', '30': 'Open needle-leaved deciduous forest', '31': 'Mixed broadleaved and needle-leave forest', '32': 'Mosaic shrubland (50-70%)-grassland (20-50%)', '33': 'Mosaic grassland (50-70%)-shrubland (20-50%)', '34': 'Closed to open shrubland', '35': 'Sparse vegetation', '36': 'Closed to open forest regularly flooded', '37': 'Closed forest or shrubland permanently flooded', '38': 'Closed to open grassland regularly flooded', '39': 'Undefined', '40-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_244", "modulename": "grib2io.tables.section4", "qualname": "table_4_244", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No Quality Information Available', '1': 'Failed', '2': 'Passed', '3-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_246", "modulename": "grib2io.tables.section4", "qualname": "table_4_246", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No thunderstorm occurrence', '1': 'Weak thunderstorm', '2': 'Moderate thunderstorm', '3': 'Severe thunderstorm', '4-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_247", "modulename": "grib2io.tables.section4", "qualname": "table_4_247", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No precipitation occurrence', '1': 'Light precipitation', '2': 'Moderate precipitation', '3': 'Heavy precipitation', '4-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_248", "modulename": "grib2io.tables.section4", "qualname": "table_4_248", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Nearest forecast or analysis time to specified local time', '1': 'Interpolated to be valid at the specified local time', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_249", "modulename": "grib2io.tables.section4", "qualname": "table_4_249", "kind": "variable", "doc": "

    \n", "default_value": "{'1': 'Showers', '2': 'Intermittent', '3': 'Continuous', '4-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_250", "modulename": "grib2io.tables.section4", "qualname": "table_4_250", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'South-West', '2': 'South', '3': 'South-East', '4': 'West', '5': 'No direction', '6': 'East', '7': 'North-West', '8': 'North', '9': 'North-East', '10-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_4_251", "modulename": "grib2io.tables.section4", "qualname": "table_4_251", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Undefined Sequence', '1': 'Geometric sequence,(see Note 1)', '2': 'Arithmetic sequence,(see Note 2)', '3-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section4.table_scale_time_hours", "modulename": "grib2io.tables.section4", "qualname": "table_scale_time_hours", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 60.0, '1': 1.0, '2': 0.041666666666666664, '3': 0.001388888888888889, '4': 0.00011415525114155251, '5': 1.1415525114155251e-05, '6': 3.80517503805175e-06, '7': 1.1415525114155251e-06, '8': 1.0, '9': 1.0, '10': 3.0, '11': 6.0, '12': 12.0, '13': 3600.0, '14-255': 1.0}"}, {"fullname": "grib2io.tables.section4.table_wgrib2_level_string", "modulename": "grib2io.tables.section4", "qualname": "table_wgrib2_level_string", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['reserved', 'reserved'], '1': ['surface', 'reserved'], '2': ['cloud base', 'reserved'], '3': ['cloud top', 'reserved'], '4': ['0C isotherm', 'reserved'], '5': ['level of adiabatic condensation from sfc', 'reserved'], '6': ['max wind', 'reserved'], '7': ['tropopause', 'reserved'], '8': ['top of atmosphere', 'reserved'], '9': ['sea bottom', 'reserved'], '10': ['entire atmosphere', 'reserved'], '11': ['cumulonimbus base', 'reserved'], '12': ['cumulonimbus top', 'reserved'], '13': ['lowest level %g%% integrated cloud cover', 'reserved'], '14': ['level of free convection', 'reserved'], '15': ['convection condensation level', 'reserved'], '16': ['level of neutral buoyancy', 'reserved'], '17': ['reserved', 'reserved'], '18': ['reserved', 'reserved'], '19': ['reserved', 'reserved'], '20': ['%g K level', 'reserved'], '21': ['lowest level > %g kg/m^3', 'reserved'], '22': ['highest level > %g kg/m^3', 'reserved'], '23': ['lowest level > %g Bq/m^3', 'reserved'], '24': ['highest level > %g Bg/m^3', 'reserved'], '25': ['reserved', 'reserved'], '26': ['reserved', 'reserved'], '27': ['reserved', 'reserved'], '28': ['reserved', 'reserved'], '29': ['reserved', 'reserved'], '30': ['reserved', 'reserved'], '31': ['reserved', 'reserved'], '32': ['reserved', 'reserved'], '33': ['reserved', 'reserved'], '34': ['reserved', 'reserved'], '35': ['reserved', 'reserved'], '36': ['reserved', 'reserved'], '37': ['reserved', 'reserved'], '38': ['reserved', 'reserved'], '39': ['reserved', 'reserved'], '40': ['reserved', 'reserved'], '41': ['reserved', 'reserved'], '42': ['reserved', 'reserved'], '43': ['reserved', 'reserved'], '44': ['reserved', 'reserved'], '45': ['reserved', 'reserved'], '46': ['reserved', 'reserved'], '47': ['reserved', 'reserved'], '48': ['reserved', 'reserved'], '49': ['reserved', 'reserved'], '50': ['reserved', 'reserved'], '51': ['reserved', 'reserved'], '52': ['reserved', 'reserved'], '53': ['reserved', 'reserved'], '54': ['reserved', 'reserved'], '55': ['reserved', 'reserved'], '56': ['reserved', 'reserved'], '57': ['reserved', 'reserved'], '58': ['reserved', 'reserved'], '59': ['reserved', 'reserved'], '60': ['reserved', 'reserved'], '61': ['reserved', 'reserved'], '62': ['reserved', 'reserved'], '63': ['reserved', 'reserved'], '64': ['reserved', 'reserved'], '65': ['reserved', 'reserved'], '66': ['reserved', 'reserved'], '67': ['reserved', 'reserved'], '68': ['reserved', 'reserved'], '69': ['reserved', 'reserved'], '70': ['reserved', 'reserved'], '71': ['reserved', 'reserved'], '72': ['reserved', 'reserved'], '73': ['reserved', 'reserved'], '74': ['reserved', 'reserved'], '75': ['reserved', 'reserved'], '76': ['reserved', 'reserved'], '77': ['reserved', 'reserved'], '78': ['reserved', 'reserved'], '79': ['reserved', 'reserved'], '80': ['reserved', 'reserved'], '81': ['reserved', 'reserved'], '82': ['reserved', 'reserved'], '83': ['reserved', 'reserved'], '84': ['reserved', 'reserved'], '85': ['reserved', 'reserved'], '86': ['reserved', 'reserved'], '87': ['reserved', 'reserved'], '88': ['reserved', 'reserved'], '89': ['reserved', 'reserved'], '90': ['reserved', 'reserved'], '91': ['reserved', 'reserved'], '92': ['reserved', 'reserved'], '93': ['reserved', 'reserved'], '94': ['reserved', 'reserved'], '95': ['reserved', 'reserved'], '96': ['reserved', 'reserved'], '97': ['reserved', 'reserved'], '98': ['reserved', 'reserved'], '99': ['reserved', 'reserved'], '100': ['%g mb', '%g-%g mb'], '101': ['mean sea level', 'reserved'], '102': ['%g m above mean sea level', '%g-%g m above mean sea level'], '103': ['%g m above ground', '%g-%g m above ground'], '104': ['%g sigma level', '%g-%g sigma layer'], '105': ['%g hybrid level', '%g-%g hybrid layer'], '106': ['%g m underground', '%g-%g m underground'], '107': ['%g K isentropic level', '%g-%g K isentropic layer'], '108': ['%g mb above ground', '%g-%g mb above ground'], '109': ['PV=%g (Km^2/kg/s) surface', 'reserved'], '110': ['reserved', 'reserved'], '111': ['%g Eta level', '%g-%g Eta layer'], '112': ['reserved', 'reserved'], '113': ['%g logarithmic hybrid level', 'reserved'], '114': ['snow level', 'reserved'], '115': ['%g sigma height level', '%g-%g sigma heigh layer'], '116': ['reserved', 'reserved'], '117': ['mixed layer depth', 'reserved'], '118': ['%g hybrid height level', '%g-%g hybrid height layer'], '119': ['%g hybrid pressure level', '%g-%g hybrid pressure layer'], '120': ['reserved', 'reserved'], '121': ['reserved', 'reserved'], '122': ['reserved', 'reserved'], '123': ['reserved', 'reserved'], '124': ['reserved', 'reserved'], '125': ['reserved', 'reserved'], '126': ['reserved', 'reserved'], '127': ['reserved', 'reserved'], '128': ['reserved', 'reserved'], '129': ['reserved', 'reserved'], '130': ['reserved', 'reserved'], '131': ['reserved', 'reserved'], '132': ['reserved', 'reserved'], '133': ['reserved', 'reserved'], '134': ['reserved', 'reserved'], '135': ['reserved', 'reserved'], '136': ['reserved', 'reserved'], '137': ['reserved', 'reserved'], '138': ['reserved', 'reserved'], '139': ['reserved', 'reserved'], '140': ['reserved', 'reserved'], '141': ['reserved', 'reserved'], '142': ['reserved', 'reserved'], '143': ['reserved', 'reserved'], '144': ['reserved', 'reserved'], '145': ['reserved', 'reserved'], '146': ['reserved', 'reserved'], '147': ['reserved', 'reserved'], '148': ['reserved', 'reserved'], '149': ['reserved', 'reserved'], '150': ['%g generalized vertical height coordinate', 'reserved'], '151': ['soil level %g', 'reserved'], '152': ['reserved', 'reserved'], '153': ['reserved', 'reserved'], '154': ['reserved', 'reserved'], '155': ['reserved', 'reserved'], '156': ['reserved', 'reserved'], '157': ['reserved', 'reserved'], '158': ['reserved', 'reserved'], '159': ['reserved', 'reserved'], '160': ['%g m below sea level', '%g-%g m below sea level'], '161': ['%g m below water surface', '%g-%g m ocean layer'], '162': ['lake or river bottom', 'reserved'], '163': ['bottom of sediment layer', 'reserved'], '164': ['bottom of thermally active sediment layer', 'reserved'], '165': ['bottom of sediment layer penetrated by thermal wave', 'reserved'], '166': ['maxing layer', 'reserved'], '167': ['bottom of root zone', 'reserved'], '168': ['reserved', 'reserved'], '169': ['reserved', 'reserved'], '170': ['reserved', 'reserved'], '171': ['reserved', 'reserved'], '172': ['reserved', 'reserved'], '173': ['reserved', 'reserved'], '174': ['top surface of ice on sea, lake or river', 'reserved'], '175': ['top surface of ice, und snow on sea, lake or river', 'reserved'], '176': ['bottom surface ice on sea, lake or river', 'reserved'], '177': ['deep soil', 'reserved'], '178': ['reserved', 'reserved'], '179': ['top surface of glacier ice and inland ice', 'reserved'], '180': ['deep inland or glacier ice', 'reserved'], '181': ['grid tile land fraction as a model surface', 'reserved'], '182': ['grid tile water fraction as a model surface', 'reserved'], '183': ['grid tile ice fraction on sea, lake or river as a model surface', 'reserved'], '184': ['grid tile glacier ice and inland ice fraction as a model surface', 'reserved'], '185': ['reserved', 'reserved'], '186': ['reserved', 'reserved'], '187': ['reserved', 'reserved'], '188': ['reserved', 'reserved'], '189': ['reserved', 'reserved'], '190': ['reserved', 'reserved'], '191': ['reserved', 'reserved'], '192': ['reserved', 'reserved'], '193': ['reserved', 'reserved'], '194': ['reserved', 'reserved'], '195': ['reserved', 'reserved'], '196': ['reserved', 'reserved'], '197': ['reserved', 'reserved'], '198': ['reserved', 'reserved'], '199': ['reserved', 'reserved'], '200': ['entire atmosphere (considered as a single layer)', 'reserved'], '201': ['entire ocean (considered as a single layer)', 'reserved'], '202': ['reserved', 'reserved'], '203': ['reserved', 'reserved'], '204': ['highest tropospheric freezing level', 'reserved'], '205': ['reserved', 'reserved'], '206': ['grid scale cloud bottom level', 'reserved'], '207': ['grid scale cloud top level', 'reserved'], '208': ['reserved', 'reserved'], '209': ['boundary layer cloud bottom level', 'reserved'], '210': ['boundary layer cloud top level', 'reserved'], '211': ['boundary layer cloud layer', 'reserved'], '212': ['low cloud bottom level', 'reserved'], '213': ['low cloud top level', 'reserved'], '214': ['low cloud layer', 'reserved'], '215': ['cloud ceiling', 'reserved'], '216': ['reserved', 'reserved'], '217': ['reserved', 'reserved'], '218': ['reserved', 'reserved'], '219': ['reserved', 'reserved'], '220': ['planetary boundary layer', 'reserved'], '221': ['layer between two hybrid levels', 'reserved'], '222': ['middle cloud bottom level', 'reserved'], '223': ['middle cloud top level', 'reserved'], '224': ['middle cloud layer', 'reserved'], '225': ['reserved', 'reserved'], '226': ['reserved', 'reserved'], '227': ['reserved', 'reserved'], '228': ['reserved', 'reserved'], '229': ['reserved', 'reserved'], '230': ['reserved', 'reserved'], '231': ['reserved', 'reserved'], '232': ['high cloud bottom level', 'reserved'], '233': ['high cloud top level', 'reserved'], '234': ['high cloud layer', 'reserved'], '235': ['%gC ocean isotherm', '%g-%gC ocean isotherm layer'], '236': ['layer between two depths below ocean surface', '%g-%g m ocean layer'], '237': ['bottom of ocean mixed layer', 'reserved'], '238': ['bottom of ocean isothermal layer', 'reserved'], '239': ['layer ocean surface and 26C ocean isothermal level', 'reserved'], '240': ['ocean mixed layer', 'reserved'], '241': ['%g in sequence', 'reserved'], '242': ['convective cloud bottom level', 'reserved'], '243': ['convective cloud top level', 'reserved'], '244': ['convective cloud layer', 'reserved'], '245': ['lowest level of the wet bulb zero', 'reserved'], '246': ['maximum equivalent potential temperature level', 'reserved'], '247': ['equilibrium level', 'reserved'], '248': ['shallow convective cloud bottom level', 'reserved'], '249': ['shallow convective cloud top level', 'reserved'], '250': ['reserved', 'reserved'], '251': ['deep convective cloud bottom level', 'reserved'], '252': ['deep convective cloud top level', 'reserved'], '253': ['lowest bottom level of supercooled liquid water layer', 'reserved'], '254': ['highest top level of supercooled liquid water layer', 'reserved'], '255': ['missing', 'reserved']}"}, {"fullname": "grib2io.tables.section4_discipline0", "modulename": "grib2io.tables.section4_discipline0", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_0", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Temperature', 'K', 'TMP'], '1': ['Virtual Temperature', 'K', 'VTMP'], '2': ['Potential Temperature', 'K', 'POT'], '3': ['Pseudo-Adiabatic Potential Temperature (or Equivalent Potential Temperature)', 'K', 'EPOT'], '4': ['Maximum Temperature', 'K', 'TMAX'], '5': ['Minimum Temperature', 'K', 'TMIN'], '6': ['Dew Point Temperature', 'K', 'DPT'], '7': ['Dew Point Depression (or Deficit)', 'K', 'DEPR'], '8': ['Lapse Rate', 'K m-1', 'LAPR'], '9': ['Temperature Anomaly', 'K', 'TMPA'], '10': ['Latent Heat Net Flux', 'W m-2', 'LHTFL'], '11': ['Sensible Heat Net Flux', 'W m-2', 'SHTFL'], '12': ['Heat Index', 'K', 'HEATX'], '13': ['Wind Chill Factor', 'K', 'WCF'], '14': ['Minimum Dew Point Depression', 'K', 'MINDPD'], '15': ['Virtual Potential Temperature', 'K', 'VPTMP'], '16': ['Snow Phase Change Heat Flux', 'W m-2', 'SNOHF'], '17': ['Skin Temperature', 'K', 'SKINT'], '18': ['Snow Temperature (top of snow)', 'K', 'SNOT'], '19': ['Turbulent Transfer Coefficient for Heat', 'Numeric', 'TTCHT'], '20': ['Turbulent Diffusion Coefficient for Heat', 'm2s-1', 'TDCHT'], '21': ['Apparent Temperature', 'K', 'APTMP'], '22': ['Temperature Tendency due to Short-Wave Radiation', 'K s-1', 'TTSWR'], '23': ['Temperature Tendency due to Long-Wave Radiation', 'K s-1', 'TTLWR'], '24': ['Temperature Tendency due to Short-Wave Radiation, Clear Sky', 'K s-1', 'TTSWRCS'], '25': ['Temperature Tendency due to Long-Wave Radiation, Clear Sky', 'K s-1', 'TTLWRCS'], '26': ['Temperature Tendency due to parameterizations', 'K s-1', 'TTPARM'], '27': ['Wet Bulb Temperature', 'K', 'WETBT'], '28': ['Unbalanced Component of Temperature', 'K', 'UCTMP'], '29': ['Temperature Advection', 'K s-1', 'TMPADV'], '30': ['Latent Heat Net Flux Due to Evaporation', 'W m-2', 'LHFLXE'], '31': ['Latent Heat Net Flux Due to Sublimation', 'W m-2', 'LHFLXS'], '32': ['Wet-Bulb Potential Temperature', 'K', 'WETBPT'], '33-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Snow Phase Change Heat Flux', 'W m-2', 'SNOHF'], '193': ['Temperature Tendency by All Radiation', 'K s-1', 'TTRAD'], '194': ['Relative Error Variance', 'unknown', 'REV'], '195': ['Large Scale Condensate Heating Rate', 'K s-1', 'LRGHR'], '196': ['Deep Convective Heating Rate', 'K s-1', 'CNVHR'], '197': ['Total Downward Heat Flux at Surface', 'W m-2', 'THFLX'], '198': ['Temperature Tendency by All Physics', 'K s-1', 'TTDIA'], '199': ['Temperature Tendency by Non-radiation Physics', 'K s-1', 'TTPHY'], '200': ['Standard Dev. of IR Temp. over 1x1 deg. area', 'K', 'TSD1D'], '201': ['Shallow Convective Heating Rate', 'K s-1', 'SHAHR'], '202': ['Vertical Diffusion Heating rate', 'K s-1', 'VDFHR'], '203': ['Potential Temperature at Top of Viscous Sublayer', 'K', 'THZ0'], '204': ['Tropical Cyclone Heat Potential', 'J m-2 K', 'TCHP'], '205': ['Effective Layer (EL) Temperature', 'C', 'ELMELT'], '206': ['Wet Bulb Globe Temperature', 'K', 'WETGLBT'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_1", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Specific Humidity', 'kg kg-1', 'SPFH'], '1': ['Relative Humidity', '%', 'RH'], '2': ['Humidity Mixing Ratio', 'kg kg-1', 'MIXR'], '3': ['Precipitable Water', 'kg m-2', 'PWAT'], '4': ['Vapour Pressure', 'Pa', 'VAPP'], '5': ['Saturation Deficit', 'Pa', 'SATD'], '6': ['Evaporation', 'kg m-2', 'EVP'], '7': ['Precipitation Rate', 'kg m-2 s-1', 'PRATE'], '8': ['Total Precipitation', 'kg m-2', 'APCP'], '9': ['Large-Scale Precipitation (non-convective)', 'kg m-2', 'NCPCP'], '10': ['Convective Precipitation', 'kg m-2', 'ACPCP'], '11': ['Snow Depth', 'm', 'SNOD'], '12': ['Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'SRWEQ'], '13': ['Water Equivalent of Accumulated Snow Depth', 'kg m-2', 'WEASD'], '14': ['Convective Snow', 'kg m-2', 'SNOC'], '15': ['Large-Scale Snow', 'kg m-2', 'SNOL'], '16': ['Snow Melt', 'kg m-2', 'SNOM'], '17': ['Snow Age', 'day', 'SNOAG'], '18': ['Absolute Humidity', 'kg m-3', 'ABSH'], '19': ['Precipitation Type', 'See Table 4.201', 'PTYPE'], '20': ['Integrated Liquid Water', 'kg m-2', 'ILIQW'], '21': ['Condensate', 'kg kg-1', 'TCOND'], '22': ['Cloud Mixing Ratio', 'kg kg-1', 'CLMR'], '23': ['Ice Water Mixing Ratio', 'kg kg-1', 'ICMR'], '24': ['Rain Mixing Ratio', 'kg kg-1', 'RWMR'], '25': ['Snow Mixing Ratio', 'kg kg-1', 'SNMR'], '26': ['Horizontal Moisture Convergence', 'kg kg-1 s-1', 'MCONV'], '27': ['Maximum Relative Humidity', '%', 'MAXRH'], '28': ['Maximum Absolute Humidity', 'kg m-3', 'MAXAH'], '29': ['Total Snowfall', 'm', 'ASNOW'], '30': ['Precipitable Water Category', 'See Table 4.202', 'PWCAT'], '31': ['Hail', 'm', 'HAIL'], '32': ['Graupel', 'kg kg-1', 'GRLE'], '33': ['Categorical Rain', 'Code table 4.222', 'CRAIN'], '34': ['Categorical Freezing Rain', 'Code table 4.222', 'CFRZR'], '35': ['Categorical Ice Pellets', 'Code table 4.222', 'CICEP'], '36': ['Categorical Snow', 'Code table 4.222', 'CSNOW'], '37': ['Convective Precipitation Rate', 'kg m-2 s-1', 'CPRAT'], '38': ['Horizontal Moisture Divergence', 'kg kg-1 s-1', 'MDIVER'], '39': ['Percent frozen precipitation', '%', 'CPOFP'], '40': ['Potential Evaporation', 'kg m-2', 'PEVAP'], '41': ['Potential Evaporation Rate', 'W m-2', 'PEVPR'], '42': ['Snow Cover', '%', 'SNOWC'], '43': ['Rain Fraction of Total Cloud Water', 'Proportion', 'FRAIN'], '44': ['Rime Factor', 'Numeric', 'RIME'], '45': ['Total Column Integrated Rain', 'kg m-2', 'TCOLR'], '46': ['Total Column Integrated Snow', 'kg m-2', 'TCOLS'], '47': ['Large Scale Water Precipitation (Non-Convective)', 'kg m-2', 'LSWP'], '48': ['Convective Water Precipitation', 'kg m-2', 'CWP'], '49': ['Total Water Precipitation', 'kg m-2', 'TWATP'], '50': ['Total Snow Precipitation', 'kg m-2', 'TSNOWP'], '51': ['Total Column Water (Vertically integrated total water (vapour+cloud water/ice)', 'kg m-2', 'TCWAT'], '52': ['Total Precipitation Rate', 'kg m-2 s-1', 'TPRATE'], '53': ['Total Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'TSRWE'], '54': ['Large Scale Precipitation Rate', 'kg m-2 s-1', 'LSPRATE'], '55': ['Convective Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'CSRWE'], '56': ['Large Scale Snowfall Rate Water Equivalent', 'kg m-2 s-1', 'LSSRWE'], '57': ['Total Snowfall Rate', 'm s-1', 'TSRATE'], '58': ['Convective Snowfall Rate', 'm s-1', 'CSRATE'], '59': ['Large Scale Snowfall Rate', 'm s-1', 'LSSRATE'], '60': ['Snow Depth Water Equivalent', 'kg m-2', 'SDWE'], '61': ['Snow Density', 'kg m-3', 'SDEN'], '62': ['Snow Evaporation', 'kg m-2', 'SEVAP'], '63': ['Reserved', 'unknown', 'unknown'], '64': ['Total Column Integrated Water Vapour', 'kg m-2', 'TCIWV'], '65': ['Rain Precipitation Rate', 'kg m-2 s-1', 'RPRATE'], '66': ['Snow Precipitation Rate', 'kg m-2 s-1', 'SPRATE'], '67': ['Freezing Rain Precipitation Rate', 'kg m-2 s-1', 'FPRATE'], '68': ['Ice Pellets Precipitation Rate', 'kg m-2 s-1', 'IPRATE'], '69': ['Total Column Integrate Cloud Water', 'kg m-2', 'TCOLW'], '70': ['Total Column Integrate Cloud Ice', 'kg m-2', 'TCOLI'], '71': ['Hail Mixing Ratio', 'kg kg-1', 'HAILMXR'], '72': ['Total Column Integrate Hail', 'kg m-2', 'TCOLH'], '73': ['Hail Prepitation Rate', 'kg m-2 s-1', 'HAILPR'], '74': ['Total Column Integrate Graupel', 'kg m-2', 'TCOLG'], '75': ['Graupel (Snow Pellets) Prepitation Rate', 'kg m-2 s-1', 'GPRATE'], '76': ['Convective Rain Rate', 'kg m-2 s-1', 'CRRATE'], '77': ['Large Scale Rain Rate', 'kg m-2 s-1', 'LSRRATE'], '78': ['Total Column Integrate Water (All components including precipitation)', 'kg m-2', 'TCOLWA'], '79': ['Evaporation Rate', 'kg m-2 s-1', 'EVARATE'], '80': ['Total Condensate', 'kg kg-1', 'TOTCON'], '81': ['Total Column-Integrate Condensate', 'kg m-2', 'TCICON'], '82': ['Cloud Ice Mixing Ratio', 'kg kg-1', 'CIMIXR'], '83': ['Specific Cloud Liquid Water Content', 'kg kg-1', 'SCLLWC'], '84': ['Specific Cloud Ice Water Content', 'kg kg-1', 'SCLIWC'], '85': ['Specific Rain Water Content', 'kg kg-1', 'SRAINW'], '86': ['Specific Snow Water Content', 'kg kg-1', 'SSNOWW'], '87': ['Stratiform Precipitation Rate', 'kg m-2 s-1', 'STRPRATE'], '88': ['Categorical Convective Precipitation', 'Code table 4.222', 'CATCP'], '89': ['Reserved', 'unknown', 'unknown'], '90': ['Total Kinematic Moisture Flux', 'kg kg-1 m s-1', 'TKMFLX'], '91': ['U-component (zonal) Kinematic Moisture Flux', 'kg kg-1 m s-1', 'UKMFLX'], '92': ['V-component (meridional) Kinematic Moisture Flux', 'kg kg-1 m s-1', 'VKMFLX'], '93': ['Relative Humidity With Respect to Water', '%', 'RHWATER'], '94': ['Relative Humidity With Respect to Ice', '%', 'RHICE'], '95': ['Freezing or Frozen Precipitation Rate', 'kg m-2 s-1', 'FZPRATE'], '96': ['Mass Density of Rain', 'kg m-3', 'MASSDR'], '97': ['Mass Density of Snow', 'kg m-3', 'MASSDS'], '98': ['Mass Density of Graupel', 'kg m-3', 'MASSDG'], '99': ['Mass Density of Hail', 'kg m-3', 'MASSDH'], '100': ['Specific Number Concentration of Rain', 'kg-1', 'SPNCR'], '101': ['Specific Number Concentration of Snow', 'kg-1', 'SPNCS'], '102': ['Specific Number Concentration of Graupel', 'kg-1', 'SPNCG'], '103': ['Specific Number Concentration of Hail', 'kg-1', 'SPNCH'], '104': ['Number Density of Rain', 'm-3', 'NUMDR'], '105': ['Number Density of Snow', 'm-3', 'NUMDS'], '106': ['Number Density of Graupel', 'm-3', 'NUMDG'], '107': ['Number Density of Hail', 'm-3', 'NUMDH'], '108': ['Specific Humidity Tendency due to Parameterizations', 'kg kg-1 s-1', 'SHTPRM'], '109': ['Mass Density of Liquid Water Coating on Hail Expressed as Mass of Liquid Water per Unit Volume of Air', 'kg m-3', 'MDLWHVA'], '110': ['Specific Mass of Liquid Water Coating on Hail Expressed as Mass of Liquid Water per Unit Mass of Moist Air', 'kg kg-1', 'SMLWHMA'], '111': ['Mass Mixing Ratio of Liquid Water Coating on Hail Expressed as Mass of Liquid Water per Unit Mass of Dry Air', 'kg kg-1', 'MMLWHDA'], '112': ['Mass Density of Liquid Water Coating on Graupel Expressed as Mass of Liquid Water per Unit Volume of Air', 'kg m-3', 'MDLWGVA'], '113': ['Specific Mass of Liquid Water Coating on Graupel Expressed as Mass of Liquid Water per Unit Mass of Moist Air', 'kg kg-1', 'SMLWGMA'], '114': ['Mass Mixing Ratio of Liquid Water Coating on Graupel Expressed as Mass of Liquid Water per Unit Mass of Dry Air', 'kg kg-1', 'MMLWGDA'], '115': ['Mass Density of Liquid Water Coating on Snow Expressed as Mass of Liquid Water per Unit Volume of Air', 'kg m-3', 'MDLWSVA'], '116': ['Specific Mass of Liquid Water Coating on Snow Expressed as Mass of Liquid Water per Unit Mass of Moist Air', 'kg kg-1', 'SMLWSMA'], '117': ['Mass Mixing Ratio of Liquid Water Coating on Snow Expressed as Mass of Liquid Water per Unit Mass of Dry Air', 'kg kg-1', 'MMLWSDA'], '118': ['Unbalanced Component of Specific Humidity', 'kg kg-1', 'UNCSH'], '119': ['Unbalanced Component of Specific Cloud Liquid Water content', 'kg kg-1', 'UCSCLW'], '120': ['Unbalanced Component of Specific Cloud Ice Water content', 'kg kg-1', 'UCSCIW'], '121': ['Fraction of Snow Cover', 'Proportion', 'FSNOWC'], '122': ['Precipitation intensity index', 'See Table 4.247', 'PIIDX'], '123': ['Domiunknownt precipitation type', 'See Table 4.201', 'DPTYPE'], '124': ['Presence of showers', 'See Table 4.222', 'PSHOW'], '125': ['Presence of blowing snow', 'See Table 4.222', 'PBSNOW'], '126': ['Presence of blizzard', 'See Table 4.222', 'PBLIZZ'], '127': ['Ice pellets (non-water equivalent) precipitation rate', 'm s-1', 'ICEP'], '128': ['Total solid precipitation rate', 'kg m-2 s-1', 'TSPRATE'], '129': ['Effective Radius of Cloud Water', 'm', 'EFRCWAT'], '130': ['Effective Radius of Rain', 'm', 'EFRRAIN'], '131': ['Effective Radius of Cloud Ice', 'm', 'EFRCICE'], '132': ['Effective Radius of Snow', 'm', 'EFRSNOW'], '133': ['Effective Radius of Graupel', 'm', 'EFRGRL'], '134': ['Effective Radius of Hail', 'm', 'EFRHAIL'], '135': ['Effective Radius of Subgrid Liquid Clouds', 'm', 'EFRSLC'], '136': ['Effective Radius of Subgrid Ice Clouds', 'm', 'EFRSICEC'], '137': ['Effective Aspect Ratio of Rain', 'unknown', 'EFARRAIN'], '138': ['Effective Aspect Ratio of Cloud Ice', 'unknown', 'EFARCICE'], '139': ['Effective Aspect Ratio of Snow', 'unknown', 'EFARSNOW'], '140': ['Effective Aspect Ratio of Graupel', 'unknown', 'EFARGRL'], '141': ['Effective Aspect Ratio of Hail', 'unknown', 'EFARHAIL'], '142': ['Effective Aspect Ratio of Subgrid Ice Clouds', 'unknown', 'EFARSIC'], '143': ['Potential evaporation rate', 'kg m-2 s-1', 'PERATE'], '144': ['Specific rain water content (convective)', 'kg kg-1', 'SRWATERC'], '145': ['Specific snow water content (convective)', 'kg kg-1', 'SSNOWWC'], '146': ['Cloud ice precipitation rate', 'kg m-2 s-1', 'CICEPR'], '147': ['Character of precipitation', 'See Table 4.249', 'CHPRECIP'], '148': ['Snow evaporation rate', 'kg m-2 s-1', 'SNOWERAT'], '149': ['Cloud water mixing ratio', 'kg kg-1', 'CWATERMR'], '150': ['Column integrated eastward water vapour mass flux', 'kg m-1s-1', 'CEWVMF'], '151': ['Column integrated northward water vapour mass flux', 'kg m-1s-1', 'CNWVMF'], '152': ['Column integrated eastward cloud liquid water mass flux', 'kg m-1s-1', 'CECLWMF'], '153': ['Column integrated northward cloud liquid water mass flux', 'kg m-1s-1', 'CNCLWMF'], '154': ['Column integrated eastward cloud ice mass flux', 'kg m-1s-1', 'CECIMF'], '155': ['Column integrated northward cloud ice mass flux', 'kg m-1s-1', 'CNCIMF'], '156': ['Column integrated eastward rain mass flux', 'kg m-1s-1', 'CERMF'], '157': ['Column integrated northward rain mass flux', 'kg m-1s-1', 'CNRMF'], '158': ['Column integrated eastward snow mass flux', 'kg m-1s-1', 'CEFMF'], '159': ['Column integrated northward snow mass flux', 'kg m-1s-1', 'CNSMF'], '160': ['Column integrated divergence of water vapour mass flux', 'kg m-1s-1', 'CDWFMF'], '161': ['Column integrated divergence of cloud liquid water mass flux', 'kg m-1s-1', 'CDCLWMF'], '162': ['Column integrated divergence of cloud ice mass flux', 'kg m-1s-1', 'CDCIMF'], '163': ['Column integrated divergence of rain mass flux', 'kg m-1s-1', 'CDRMF'], '164': ['Column integrated divergence of snow mass flux', 'kg m-1s-1', 'CDSMF'], '165': ['Column integrated divergence of total water mass flux', 'kg m-1s-1', 'CDTWMF'], '166': ['Column integrated water vapour flux', 'kg m-1s-1', 'CWVF'], '167': ['Total column supercooled liquid water', 'kg m-2', 'TCSLW'], '167-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Categorical Rain', 'Code table 4.222', 'CRAIN'], '193': ['Categorical Freezing Rain', 'Code table 4.222', 'CFRZR'], '194': ['Categorical Ice Pellets', 'Code table 4.222', 'CICEP'], '195': ['Categorical Snow', 'Code table 4.222', 'CSNOW'], '196': ['Convective Precipitation Rate', 'kg m-2 s-1', 'CPRAT'], '197': ['Horizontal Moisture Divergence', 'kg kg-1 s-1', 'MDIV'], '198': ['Minimum Relative Humidity', '%', 'MINRH'], '199': ['Potential Evaporation', 'kg m-2', 'PEVAP'], '200': ['Potential Evaporation Rate', 'W m-2', 'PEVPR'], '201': ['Snow Cover', '%', 'SNOWC'], '202': ['Rain Fraction of Total Liquid Water', 'non-dim', 'FRAIN'], '203': ['Rime Factor', 'non-dim', 'RIME'], '204': ['Total Column Integrated Rain', 'kg m-2', 'TCOLR'], '205': ['Total Column Integrated Snow', 'kg m-2', 'TCOLS'], '206': ['Total Icing Potential Diagnostic', 'non-dim', 'TIPD'], '207': ['Number concentration for ice particles', 'non-dim', 'NCIP'], '208': ['Snow temperature', 'K', 'SNOT'], '209': ['Total column-integrated supercooled liquid water', 'kg m-2', 'TCLSW'], '210': ['Total column-integrated melting ice', 'kg m-2', 'TCOLM'], '211': ['Evaporation - Precipitation', 'cm/day', 'EMNP'], '212': ['Sublimation (evaporation from snow)', 'W m-2', 'SBSNO'], '213': ['Deep Convective Moistening Rate', 'kg kg-1 s-1', 'CNVMR'], '214': ['Shallow Convective Moistening Rate', 'kg kg-1 s-1', 'SHAMR'], '215': ['Vertical Diffusion Moistening Rate', 'kg kg-1 s-1', 'VDFMR'], '216': ['Condensation Pressure of Parcali Lifted From Indicate Surface', 'Pa', 'CONDP'], '217': ['Large scale moistening rate', 'kg kg-1 s-1', 'LRGMR'], '218': ['Specific humidity at top of viscous sublayer', 'kg kg-1', 'QZ0'], '219': ['Maximum specific humidity at 2m', 'kg kg-1', 'QMAX'], '220': ['Minimum specific humidity at 2m', 'kg kg-1', 'QMIN'], '221': ['Liquid precipitation (Rainfall)', 'kg m-2', 'ARAIN'], '222': ['Snow temperature, depth-avg', 'K', 'SNOWT'], '223': ['Total precipitation (nearest grid point)', 'kg m-2', 'APCPN'], '224': ['Convective precipitation (nearest grid point)', 'kg m-2', 'ACPCPN'], '225': ['Freezing Rain', 'kg m-2', 'FRZR'], '226': ['Predominant Weather (see Local Use Note A)', 'Numeric', 'PWTHER'], '227': ['Frozen Rain', 'kg m-2', 'FROZR'], '228': ['Flat Ice Accumulation (FRAM)', 'kg m-2', 'FICEAC'], '229': ['Line Ice Accumulation (FRAM)', 'kg m-2', 'LICEAC'], '230': ['Sleet Accumulation', 'kg m-2', 'SLACC'], '231': ['Precipitation Potential Index', '%', 'PPINDX'], '232': ['Probability Cloud Ice Present', '%', 'PROBCIP'], '233': ['Snow Liquid ratio', 'kg kg-1', 'SNOWLR'], '234': ['Precipitation Duration', 'hour', 'PCPDUR'], '235': ['Cloud Liquid Mixing Ratio', 'kg kg-1', 'CLLMR'], '236-240': ['Reserved', 'unknown', 'unknown'], '241': ['Total Snow', 'kg m-2', 'TSNOW'], '242': ['Relative Humidity with Respect to Precipitable Water', '%', 'RHPW'], '245': ['Hourly Maximum of Column Vertical Integrated Graupel on Entire Atmosphere', 'kg m-2', 'MAXVIG'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_2", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Wind Direction (from which blowing)', '\u00b0', 'WDIR'], '1': ['Wind Speed', 'm s-1', 'WIND'], '2': ['U-Component of Wind', 'm s-1', 'UGRD'], '3': ['V-Component of Wind', 'm s-1', 'VGRD'], '4': ['Stream Function', 'm2 s-1', 'STRM'], '5': ['Velocity Potential', 'm2 s-1', 'VPOT'], '6': ['Montgomery Stream Function', 'm2 s-2', 'MNTSF'], '7': ['Sigma Coordinate Vertical Velocity', 's-1', 'SGCVV'], '8': ['Vertical Velocity (Pressure)', 'Pa s-1', 'VVEL'], '9': ['Vertical Velocity (Geometric)', 'm s-1', 'DZDT'], '10': ['Absolute Vorticity', 's-1', 'ABSV'], '11': ['Absolute Divergence', 's-1', 'ABSD'], '12': ['Relative Vorticity', 's-1', 'RELV'], '13': ['Relative Divergence', 's-1', 'RELD'], '14': ['Potential Vorticity', 'K m2 kg-1 s-1', 'PVORT'], '15': ['Vertical U-Component Shear', 's-1', 'VUCSH'], '16': ['Vertical V-Component Shear', 's-1', 'VVCSH'], '17': ['Momentum Flux, U-Component', 'N m-2', 'UFLX'], '18': ['Momentum Flux, V-Component', 'N m-2', 'VFLX'], '19': ['Wind Mixing Energy', 'J', 'WMIXE'], '20': ['Boundary Layer Dissipation', 'W m-2', 'BLYDP'], '21': ['Maximum Wind Speed', 'm s-1', 'MAXGUST'], '22': ['Wind Speed (Gust)', 'm s-1', 'GUST'], '23': ['U-Component of Wind (Gust)', 'm s-1', 'UGUST'], '24': ['V-Component of Wind (Gust)', 'm s-1', 'VGUST'], '25': ['Vertical Speed Shear', 's-1', 'VWSH'], '26': ['Horizontal Momentum Flux', 'N m-2', 'MFLX'], '27': ['U-Component Storm Motion', 'm s-1', 'USTM'], '28': ['V-Component Storm Motion', 'm s-1', 'VSTM'], '29': ['Drag Coefficient', 'Numeric', 'CD'], '30': ['Frictional Velocity', 'm s-1', 'FRICV'], '31': ['Turbulent Diffusion Coefficient for Momentum', 'm2 s-1', 'TDCMOM'], '32': ['Eta Coordinate Vertical Velocity', 's-1', 'ETACVV'], '33': ['Wind Fetch', 'm', 'WINDF'], '34': ['Normal Wind Component', 'm s-1', 'NWIND'], '35': ['Tangential Wind Component', 'm s-1', 'TWIND'], '36': ['Amplitude Function for Rossby Wave Envelope for Meridional Wind', 'm s-1', 'AFRWE'], '37': ['Northward Turbulent Surface Stress', 'N m-2 s', 'NTSS'], '38': ['Eastward Turbulent Surface Stress', 'N m-2 s', 'ETSS'], '39': ['Eastward Wind Tendency Due to Parameterizations', 'm s-2', 'EWTPARM'], '40': ['Northward Wind Tendency Due to Parameterizations', 'm s-2', 'NWTPARM'], '41': ['U-Component of Geostrophic Wind', 'm s-1', 'UGWIND'], '42': ['V-Component of Geostrophic Wind', 'm s-1', 'VGWIND'], '43': ['Geostrophic Wind Direction', '\u00b0', 'GEOWD'], '44': ['Geostrophic Wind Speed', 'm s-1', 'GEOWS'], '45': ['Unbalanced Component of Divergence', 's-1', 'UNDIV'], '46': ['Vorticity Advection', 's-2', 'VORTADV'], '47': ['Surface roughness for heat,(see Note 5)', 'm', 'SFRHEAT'], '48': ['Surface roughness for moisture,(see Note 6)', 'm', 'SFRMOIST'], '49': ['Wind stress', 'N m-2', 'WINDSTR'], '50': ['Eastward wind stress', 'N m-2', 'EWINDSTR'], '51': ['Northward wind stress', 'N m-2', 'NWINDSTR'], '52': ['u-component of wind stress', 'N m-2', 'UWINDSTR'], '53': ['v-component of wind stress', 'N m-2', 'VWINDSTR'], '54': ['Natural logarithm of surface roughness length for heat', 'm', 'NLSRLH'], '55': ['Natural logarithm of surface roughness length for moisture', 'm', 'NLSRLM'], '56': ['u-component of neutral wind', 'm s-1', 'UNWIND'], '57': ['v-component of neutral wind', 'm s-1', 'VNWIND'], '58': ['Magnitude of turbulent surface stress', 'N m-2', 'TSFCSTR'], '58-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Vertical Speed Shear', 's-1', 'VWSH'], '193': ['Horizontal Momentum Flux', 'N m-2', 'MFLX'], '194': ['U-Component Storm Motion', 'm s-1', 'USTM'], '195': ['V-Component Storm Motion', 'm s-1', 'VSTM'], '196': ['Drag Coefficient', 'non-dim', 'CD'], '197': ['Frictional Velocity', 'm s-1', 'FRICV'], '198': ['Latitude of U Wind Component of Velocity', 'deg', 'LAUV'], '199': ['Longitude of U Wind Component of Velocity', 'deg', 'LOUV'], '200': ['Latitude of V Wind Component of Velocity', 'deg', 'LAVV'], '201': ['Longitude of V Wind Component of Velocity', 'deg', 'LOVV'], '202': ['Latitude of Presure Point', 'deg', 'LAPP'], '203': ['Longitude of Presure Point', 'deg', 'LOPP'], '204': ['Vertical Eddy Diffusivity Heat exchange', 'm2 s-1', 'VEDH'], '205': ['Covariance between Meridional and Zonal Components of the wind.', 'm2 s-2', 'COVMZ'], '206': ['Covariance between Temperature and Zonal Components of the wind.', 'K*m s-1', 'COVTZ'], '207': ['Covariance between Temperature and Meridional Components of the wind.', 'K*m s-1', 'COVTM'], '208': ['Vertical Diffusion Zonal Acceleration', 'm s-2', 'VDFUA'], '209': ['Vertical Diffusion Meridional Acceleration', 'm s-2', 'VDFVA'], '210': ['Gravity wave drag zonal acceleration', 'm s-2', 'GWDU'], '211': ['Gravity wave drag meridional acceleration', 'm s-2', 'GWDV'], '212': ['Convective zonal momentum mixing acceleration', 'm s-2', 'CNVU'], '213': ['Convective meridional momentum mixing acceleration', 'm s-2', 'CNVV'], '214': ['Tendency of vertical velocity', 'm s-2', 'WTEND'], '215': ['Omega (Dp/Dt) divide by density', 'K', 'OMGALF'], '216': ['Convective Gravity wave drag zonal acceleration', 'm s-2', 'CNGWDU'], '217': ['Convective Gravity wave drag meridional acceleration', 'm s-2', 'CNGWDV'], '218': ['Velocity Point Model Surface', 'unknown', 'LMV'], '219': ['Potential Vorticity (Mass-Weighted)', '1/s/m', 'PVMWW'], '220': ['Hourly Maximum of Upward Vertical Velocity', 'm s-1', 'MAXUVV'], '221': ['Hourly Maximum of Downward Vertical Velocity', 'm s-1', 'MAXDVV'], '222': ['U Component of Hourly Maximum 10m Wind Speed', 'm s-1', 'MAXUW'], '223': ['V Component of Hourly Maximum 10m Wind Speed', 'm s-1', 'MAXVW'], '224': ['Ventilation Rate', 'm2 s-1', 'VRATE'], '225': ['Transport Wind Speed', 'm s-1', 'TRWSPD'], '226': ['Transport Wind Direction', 'Deg', 'TRWDIR'], '227': ['Earliest Reasonable Arrival Time (10% exceedance)', 's', 'TOA10'], '228': ['Most Likely Arrival Time (50% exceedance)', 's', 'TOA50'], '229': ['Most Likely Departure Time (50% exceedance)', 's', 'TOD50'], '230': ['Latest Reasonable Departure Time (90% exceedance)', 's', 'TOD90'], '231': ['Tropical Wind Direction', '\u00b0', 'TPWDIR'], '232': ['Tropical Wind Speed', 'm s-1', 'TPWSPD'], '233': ['Inflow Based (ESFC) to 50% EL Shear Magnitude', 'kt', 'ESHR'], '234': ['U Component Inflow Based to 50% EL Shear Vector', 'kt', 'UESH'], '235': ['V Component Inflow Based to 50% EL Shear Vector', 'kt', 'VESH'], '236': ['U Component Bunkers Effective Right Motion', 'kt', 'UEID'], '237': ['V Component Bunkers Effective Right Motion', 'kt', 'VEID'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_3", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_3", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Pressure', 'Pa', 'PRES'], '1': ['Pressure Reduced to MSL', 'Pa', 'PRMSL'], '2': ['Pressure Tendency', 'Pa s-1', 'PTEND'], '3': ['ICAO Standard Atmosphere Reference Height', 'm', 'ICAHT'], '4': ['Geopotential', 'm2 s-2', 'GP'], '5': ['Geopotential Height', 'gpm', 'HGT'], '6': ['Geometric Height', 'm', 'DIST'], '7': ['Standard Deviation of Height', 'm', 'HSTDV'], '8': ['Pressure Anomaly', 'Pa', 'PRESA'], '9': ['Geopotential Height Anomaly', 'gpm', 'GPA'], '10': ['Density', 'kg m-3', 'DEN'], '11': ['Altimeter Setting', 'Pa', 'ALTS'], '12': ['Thickness', 'm', 'THICK'], '13': ['Pressure Altitude', 'm', 'PRESALT'], '14': ['Density Altitude', 'm', 'DENALT'], '15': ['5-Wave Geopotential Height', 'gpm', '5WAVH'], '16': ['Zonal Flux of Gravity Wave Stress', 'N m-2', 'U-GWD'], '17': ['Meridional Flux of Gravity Wave Stress', 'N m-2', 'V-GWD'], '18': ['Planetary Boundary Layer Height', 'm', 'HPBL'], '19': ['5-Wave Geopotential Height Anomaly', 'gpm', '5WAVA'], '20': ['Standard Deviation of Sub-Grid Scale Orography', 'm', 'SDSGSO'], '21': ['Angle of Sub-Grid Scale Orography', 'rad', 'AOSGSO'], '22': ['Slope of Sub-Grid Scale Orography', 'Numeric', 'SSGSO'], '23': ['Gravity Wave Dissipation', 'W m-2', 'GWD'], '24': ['Anisotropy of Sub-Grid Scale Orography', 'Numeric', 'ASGSO'], '25': ['Natural Logarithm of Pressure in Pa', 'Numeric', 'NLPRES'], '26': ['Exner Pressure', 'Numeric', 'EXPRES'], '27': ['Updraught Mass Flux', 'kg m-2 s-1', 'UMFLX'], '28': ['Downdraught Mass Flux', 'kg m-2 s-1', 'DMFLX'], '29': ['Updraught Detrainment Rate', 'kg m-3 s-1', 'UDRATE'], '30': ['Downdraught Detrainment Rate', 'kg m-3 s-1', 'DDRATE'], '31': ['Unbalanced Component of Logarithm of Surface Pressure', '-', 'UCLSPRS'], '32': ['Saturation water vapour pressure', 'Pa', 'SWATERVP'], '33': ['Geometric altitude above mean sea level', 'm', 'GAMSL'], '34': ['Geometric height above ground level', 'm', 'GHAGRD'], '35': ['Column integrated divergence of total mass flux', 'kg m-2 s-1', 'CDTMF'], '36': ['Column integrated eastward total mass flux', 'kg m-2 s-1', 'CETMF'], '37': ['Column integrated northward total mass flux', 'kg m-2 s-1', 'CNTMF'], '38': ['Standard deviation of filtered subgrid orography', 'm', 'SDFSO'], '39': ['Column integrated mass of atmosphere', 'kg m-2 s-1', 'CMATMOS'], '40': ['Column integrated eastward geopotential flux', 'W m-1', 'CEGFLUX'], '41': ['Column integrated northward geopotential flux', 'W m-1', 'CNGFLUX'], '42': ['Column integrated divergence of water geopotential flux', 'W m-2', 'CDWGFLUX'], '43': ['Column integrated divergence of geopotential flux', 'W m-2', 'CDGFLUX'], '44': ['Height of zero-degree wet-bulb temperature', 'm', 'HWBT'], '45': ['Height of one-degree wet-bulb temperature', 'm', 'WOBT'], '46-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['MSLP (Eta model reduction)', 'Pa', 'MSLET'], '193': ['5-Wave Geopotential Height', 'gpm', '5WAVH'], '194': ['Zonal Flux of Gravity Wave Stress', 'N m-2', 'U-GWD'], '195': ['Meridional Flux of Gravity Wave Stress', 'N m-2', 'V-GWD'], '196': ['Planetary Boundary Layer Height', 'm', 'HPBL'], '197': ['5-Wave Geopotential Height Anomaly', 'gpm', '5WAVA'], '198': ['MSLP (MAPS System Reduction)', 'Pa', 'MSLMA'], '199': ['3-hr pressure tendency (Std. Atmos. Reduction)', 'Pa s-1', 'TSLSA'], '200': ['Pressure of level from which parcel was lifted', 'Pa', 'PLPL'], '201': ['X-gradient of Log Pressure', 'm-1', 'LPSX'], '202': ['Y-gradient of Log Pressure', 'm-1', 'LPSY'], '203': ['X-gradient of Height', 'm-1', 'HGTX'], '204': ['Y-gradient of Height', 'm-1', 'HGTY'], '205': ['Layer Thickness', 'm', 'LAYTH'], '206': ['Natural Log of Surface Pressure', 'ln (kPa)', 'NLGSP'], '207': ['Convective updraft mass flux', 'kg m-2 s-1', 'CNVUMF'], '208': ['Convective downdraft mass flux', 'kg m-2 s-1', 'CNVDMF'], '209': ['Convective detrainment mass flux', 'kg m-2 s-1', 'CNVDEMF'], '210': ['Mass Point Model Surface', 'unknown', 'LMH'], '211': ['Geopotential Height (nearest grid point)', 'gpm', 'HGTN'], '212': ['Pressure (nearest grid point)', 'Pa', 'PRESN'], '213': ['Orographic Convexity', 'unknown', 'ORCONV'], '214': ['Orographic Asymmetry, W Component', 'unknown', 'ORASW'], '215': ['Orographic Asymmetry, S Component', 'unknown', 'ORASS'], '216': ['Orographic Asymmetry, SW Component', 'unknown', 'ORASSW'], '217': ['Orographic Asymmetry, NW Component', 'unknown', 'ORASNW'], '218': ['Orographic Length Scale, W Component', 'unknown', 'ORLSW'], '219': ['Orographic Length Scale, S Component', 'unknown', 'ORLSS'], '220': ['Orographic Length Scale, SW Component', 'unknown', 'ORLSSW'], '221': ['Orographic Length Scale, NW Component', 'unknown', 'ORLSNW'], '222': ['Effective Surface Height', 'm', 'EFSH'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_4", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_4", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Net Short-Wave Radiation Flux (Surface)', 'W m-2', 'NSWRS'], '1': ['Net Short-Wave Radiation Flux (Top of Atmosphere)', 'W m-2', 'NSWRT'], '2': ['Short-Wave Radiation Flux', 'W m-2', 'SWAVR'], '3': ['Global Radiation Flux', 'W m-2', 'GRAD'], '4': ['Brightness Temperature', 'K', 'BRTMP'], '5': ['Radiance (with respect to wave number)', 'W m-1 sr-1', 'LWRAD'], '6': ['Radiance (with respect to wavelength)', 'W m-3 sr-1', 'SWRAD'], '7': ['Downward Short-Wave Radiation Flux', 'W m-2', 'DSWRF'], '8': ['Upward Short-Wave Radiation Flux', 'W m-2', 'USWRF'], '9': ['Net Short Wave Radiation Flux', 'W m-2', 'NSWRF'], '10': ['Photosynthetically Active Radiation', 'W m-2', 'PHOTAR'], '11': ['Net Short-Wave Radiation Flux, Clear Sky', 'W m-2', 'NSWRFCS'], '12': ['Downward UV Radiation', 'W m-2', 'DWUVR'], '13': ['Direct Short Wave Radiation Flux', 'W m-2', 'DSWRFLX'], '14': ['Diffuse Short Wave Radiation Flux', 'W m-2', 'DIFSWRF'], '15': ['Upward UV radiation emitted/reflected from the Earths surface', 'W m-2', 'UVVEARTH'], '16-49': ['Reserved', 'unknown', 'unknown'], '50': ['UV Index (Under Clear Sky)', 'Numeric', 'UVIUCS'], '51': ['UV Index', 'Numeric', 'UVI'], '52': ['Downward Short-Wave Radiation Flux, Clear Sky', 'W m-2', 'DSWRFCS'], '53': ['Upward Short-Wave Radiation Flux, Clear Sky', 'W m-2', 'USWRFCS'], '54': ['Direct normal short-wave radiation flux,(see Note 3)', 'W m-2', 'DSWRFLX'], '55': ['UV visible albedo for diffuse radiation', '%', 'UVALBDIF'], '56': ['UV visible albedo for direct radiation', '%', 'UVALBDIR'], '57': ['UV visible albedo for direct radiation, geometric component', '%', 'UBALBDIRG'], '58': ['UV visible albedo for direct radiation, isotropic component', '%', 'UVALBDIRI'], '59': ['UV visible albedo for direct radiation, volumetric component', '%', 'UVBDIRV'], '60': ['Photosynthetically active radiation flux, clear sky', 'W m-2', 'PHOARFCS'], '61': ['Direct short-wave radiation flux, clear sky', 'W m-2', 'DSWRFLXCS'], '62-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Downward Short-Wave Radiation Flux', 'W m-2', 'DSWRF'], '193': ['Upward Short-Wave Radiation Flux', 'W m-2', 'USWRF'], '194': ['UV-B Downward Solar Flux', 'W m-2', 'DUVB'], '195': ['Clear sky UV-B Downward Solar Flux', 'W m-2', 'CDUVB'], '196': ['Clear Sky Downward Solar Flux', 'W m-2', 'CSDSF'], '197': ['Solar Radiative Heating Rate', 'K s-1', 'SWHR'], '198': ['Clear Sky Upward Solar Flux', 'W m-2', 'CSUSF'], '199': ['Cloud Forcing Net Solar Flux', 'W m-2', 'CFNSF'], '200': ['Visible Beam Downward Solar Flux', 'W m-2', 'VBDSF'], '201': ['Visible Diffuse Downward Solar Flux', 'W m-2', 'VDDSF'], '202': ['Near IR Beam Downward Solar Flux', 'W m-2', 'NBDSF'], '203': ['Near IR Diffuse Downward Solar Flux', 'W m-2', 'NDDSF'], '204': ['Downward Total Radiation Flux', 'W m-2', 'DTRF'], '205': ['Upward Total Radiation Flux', 'W m-2', 'UTRF'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_5", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_5", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Net Long-Wave Radiation Flux (Surface)', 'W m-2', 'NLWRS'], '1': ['Net Long-Wave Radiation Flux (Top of Atmosphere)', 'W m-2', 'NLWRT'], '2': ['Long-Wave Radiation Flux', 'W m-2', 'LWAVR'], '3': ['Downward Long-Wave Rad. Flux', 'W m-2', 'DLWRF'], '4': ['Upward Long-Wave Rad. Flux', 'W m-2', 'ULWRF'], '5': ['Net Long-Wave Radiation Flux', 'W m-2', 'NLWRF'], '6': ['Net Long-Wave Radiation Flux, Clear Sky', 'W m-2', 'NLWRCS'], '7': ['Brightness Temperature', 'K', 'BRTEMP'], '8': ['Downward Long-Wave Radiation Flux, Clear Sky', 'W m-2', 'DLWRFCS'], '9': ['Near IR albedo for diffuse radiation', '%', 'NIRALBDIF'], '10': ['Near IR albedo for direct radiation', '%', 'NIRALBDIR'], '11': ['Near IR albedo for direct radiation, geometric component', '%', 'NIRALBDIRG'], '12': ['Near IR albedo for direct radiation, isotropic component', '%', 'NIRALBDIRI'], '13': ['Near IR albedo for direct radiation, volumetric component', '%', 'NIRALBDIRV'], '14-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Downward Long-Wave Rad. Flux', 'W m-2', 'DLWRF'], '193': ['Upward Long-Wave Rad. Flux', 'W m-2', 'ULWRF'], '194': ['Long-Wave Radiative Heating Rate', 'K s-1', 'LWHR'], '195': ['Clear Sky Upward Long Wave Flux', 'W m-2', 'CSULF'], '196': ['Clear Sky Downward Long Wave Flux', 'W m-2', 'CSDLF'], '197': ['Cloud Forcing Net Long Wave Flux', 'W m-2', 'CFNLF'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_6", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_6", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Cloud Ice', 'kg m-2', 'CICE'], '1': ['Total Cloud Cover', '%', 'TCDC'], '2': ['Convective Cloud Cover', '%', 'CDCON'], '3': ['Low Cloud Cover', '%', 'LCDC'], '4': ['Medium Cloud Cover', '%', 'MCDC'], '5': ['High Cloud Cover', '%', 'HCDC'], '6': ['Cloud Water', 'kg m-2', 'CWAT'], '7': ['Cloud Amount', '%', 'CDCA'], '8': ['Cloud Type', 'See Table 4.203', 'CDCT'], '9': ['Thunderstorm Maximum Tops', 'm', 'TMAXT'], '10': ['Thunderstorm Coverage', 'See Table 4.204', 'THUNC'], '11': ['Cloud Base', 'm', 'CDCB'], '12': ['Cloud Top', 'm', 'CDCTOP'], '13': ['Ceiling', 'm', 'CEIL'], '14': ['Non-Convective Cloud Cover', '%', 'CDLYR'], '15': ['Cloud Work Function', 'J kg-1', 'CWORK'], '16': ['Convective Cloud Efficiency', 'Proportion', 'CUEFI'], '17': ['Total Condensate', 'kg kg-1', 'TCONDO'], '18': ['Total Column-Integrated Cloud Water', 'kg m-2', 'TCOLWO'], '19': ['Total Column-Integrated Cloud Ice', 'kg m-2', 'TCOLIO'], '20': ['Total Column-Integrated Condensate', 'kg m-2', 'TCOLC'], '21': ['Ice fraction of total condensate', 'Proportion', 'FICE'], '22': ['Cloud Cover', '%', 'CDCC'], '23': ['Cloud Ice Mixing Ratio', 'kg kg-1', 'CDCIMR'], '24': ['Sunshine', 'Numeric', 'SUNS'], '25': ['Horizontal Extent of Cumulonimbus (CB)', '%', 'CBHE'], '26': ['Height of Convective Cloud Base', 'm', 'HCONCB'], '27': ['Height of Convective Cloud Top', 'm', 'HCONCT'], '28': ['Number Concentration of Cloud Droplets', 'kg-1', 'NCONCD'], '29': ['Number Concentration of Cloud Ice', 'kg-1', 'NCCICE'], '30': ['Number Density of Cloud Droplets', 'm-3', 'NDENCD'], '31': ['Number Density of Cloud Ice', 'm-3', 'NDCICE'], '32': ['Fraction of Cloud Cover', 'Numeric', 'FRACCC'], '33': ['Sunshine Duration', 's', 'SUNSD'], '34': ['Surface Long Wave Effective Total Cloudiness', 'Numeric', 'SLWTC'], '35': ['Surface Short Wave Effective Total Cloudiness', 'Numeric', 'SSWTC'], '36': ['Fraction of Stratiform Precipitation Cover', 'Proportion', 'FSTRPC'], '37': ['Fraction of Convective Precipitation Cover', 'Proportion', 'FCONPC'], '38': ['Mass Density of Cloud Droplets', 'kg m-3', 'MASSDCD'], '39': ['Mass Density of Cloud Ice', 'kg m-3', 'MASSDCI'], '40': ['Mass Density of Convective Cloud Water Droplets', 'kg m-3', 'MDCCWD'], '41-46': ['Reserved', 'unknown', 'unknown'], '47': ['Volume Fraction of Cloud Water Droplets', 'Numeric', 'VFRCWD'], '48': ['Volume Fraction of Cloud Ice Particles', 'Numeric', 'VFRCICE'], '49': ['Volume Fraction of Cloud (Ice and/or Water)', 'Numeric', 'VFRCIW'], '50': ['Fog', '%', 'FOG'], '51': ['Sunshine Duration Fraction', 'Proportion', 'SUNFRAC'], '52-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Non-Convective Cloud Cover', '%', 'CDLYR'], '193': ['Cloud Work Function', 'J kg-1', 'CWORK'], '194': ['Convective Cloud Efficiency', 'non-dim', 'CUEFI'], '195': ['Total Condensate', 'kg kg-1', 'TCOND'], '196': ['Total Column-Integrated Cloud Water', 'kg m-2', 'TCOLW'], '197': ['Total Column-Integrated Cloud Ice', 'kg m-2', 'TCOLI'], '198': ['Total Column-Integrated Condensate', 'kg m-2', 'TCOLC'], '199': ['Ice fraction of total condensate', 'non-dim', 'FICE'], '200': ['Convective Cloud Mass Flux', 'Pa s-1', 'MFLUX'], '201': ['Sunshine Duration', 's', 'SUNSD'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_7", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_7", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Parcel Lifted Index (to 500 hPa)', 'K', 'PLI'], '1': ['Best Lifted Index (to 500 hPa)', 'K', 'BLI'], '2': ['K Index', 'K', 'KX'], '3': ['KO Index', 'K', 'KOX'], '4': ['Total Totals Index', 'K', 'TOTALX'], '5': ['Sweat Index', 'Numeric', 'SX'], '6': ['Convective Available Potential Energy', 'J kg-1', 'CAPE'], '7': ['Convective Inhibition', 'J kg-1', 'CIN'], '8': ['Storm Relative Helicity', 'm2 s-2', 'HLCY'], '9': ['Energy Helicity Index', 'Numeric', 'EHLX'], '10': ['Surface Lifted Index', 'K', 'LFT X'], '11': ['Best (4 layer) Lifted Index', 'K', '4LFTX'], '12': ['Richardson Number', 'Numeric', 'RI'], '13': ['Showalter Index', 'K', 'SHWINX'], '14': ['Reserved', 'unknown', 'unknown'], '15': ['Updraft Helicity', 'm2 s-2', 'UPHL'], '16': ['Bulk Richardson Number', 'Numeric', 'BLKRN'], '17': ['Gradient Richardson Number', 'Numeric', 'GRDRN'], '18': ['Flux Richardson Number', 'Numeric', 'FLXRN'], '19': ['Convective Available Potential Energy Shear', 'm2 s-2', 'CONAPES'], '20': ['Thunderstorm intensity index', 'See Table 4.246', 'TIIDEX'], '21-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Surface Lifted Index', 'K', 'LFT X'], '193': ['Best (4 layer) Lifted Index', 'K', '4LFTX'], '194': ['Richardson Number', 'Numeric', 'RI'], '195': ['Convective Weather Detection Index', 'unknown', 'CWDI'], '196': ['Ultra Violet Index', 'W m-2', 'UVI'], '197': ['Updraft Helicity', 'm2 s-2', 'UPHL'], '198': ['Leaf Area Index', 'Numeric', 'LAI'], '199': ['Hourly Maximum of Updraft Helicity', 'm2 s-2', 'MXUPHL'], '200': ['Hourly Minimum of Updraft Helicity', 'm2 s-2', 'MNUPHL'], '201': ['Bourgoiun Negative Energy Layer (surface to freezing level)', 'J kg-1', 'BNEGELAY'], '202': ['Bourgoiun Positive Energy Layer (2k ft AGL to 400 hPa)', 'J kg-1', 'BPOSELAY'], '203': ['Downdraft CAPE', 'J kg-1', 'DCAPE'], '204': ['Effective Storm Relative Helicity', 'm2 s-2', 'EFHL'], '205': ['Enhanced Stretching Potential', 'Numeric', 'ESP'], '206': ['Critical Angle', 'Degree', 'CANGLE'], '207': ['Effective Surface Helicity', 'm2 s-2', 'E3KH'], '208': ['Significant Tornado Parameter with CIN-Effective Layer', 'numeric', 'STPC'], '209': ['Significant Hail Parameter', 'numeric', 'SIGH'], '210': ['Supercell Composite Parameter-Effective Layer', 'numeric', 'SCCP'], '211': ['Significant Tornado parameter-Fixed Layer', 'numeric', 'SIGT'], '212': ['Mixed Layer (100 mb) Virtual LFC', 'numeric', 'MLFC'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_13", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_13", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Aerosol Type', 'See Table 4.205', 'AEROT'], '1-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Particulate matter (coarse)', '\u00b5g m-3', 'PMTC'], '193': ['Particulate matter (fine)', '\u00b5g m-3', 'PMTF'], '194': ['Particulate matter (fine)', 'log10 (\u00b5g m-3)', 'LPMTF'], '195': ['Integrated column particulate matter (fine)', 'log10 (\u00b5g m-3)', 'LIPMF'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_14", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_14", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Total Ozone', 'DU', 'TOZNE'], '1': ['Ozone Mixing Ratio', 'kg kg-1', 'O3MR'], '2': ['Total Column Integrated Ozone', 'DU', 'TCIOZ'], '3-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Ozone Mixing Ratio', 'kg kg-1', 'O3MR'], '193': ['Ozone Concentration', 'ppb', 'OZCON'], '194': ['Categorical Ozone Concentration', 'Non-Dim', 'OZCAT'], '195': ['Ozone Vertical Diffusion', 'kg kg-1 s-1', 'VDFOZ'], '196': ['Ozone Production', 'kg kg-1 s-1', 'POZ'], '197': ['Ozone Tendency', 'kg kg-1 s-1', 'TOZ'], '198': ['Ozone Production from Temperature Term', 'kg kg-1 s-1', 'POZT'], '199': ['Ozone Production from Column Ozone Term', 'kg kg-1 s-1', 'POZO'], '200': ['Ozone Daily Max from 1-hour Average', 'ppbV', 'OZMAX1'], '201': ['Ozone Daily Max from 8-hour Average', 'ppbV', 'OZMAX8'], '202': ['PM 2.5 Daily Max from 1-hour Average', '\u03bcg m-3', 'PDMAX1'], '203': ['PM 2.5 Daily Max from 24-hour Average', '\u03bcg m-3', 'PDMAX24'], '204': ['Acetaldehyde & Higher Aldehydes', 'ppbV', 'ALD2'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_15", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_15", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Base Spectrum Width', 'm s-1', 'BSWID'], '1': ['Base Reflectivity', 'dB', 'BREF'], '2': ['Base Radial Velocity', 'm s-1', 'BRVEL'], '3': ['Vertically-Integrated Liquid Water', 'kg m-2', 'VIL'], '4': ['Layer Maximum Base Reflectivity', 'dB', 'LMAXBR'], '5': ['Precipitation', 'kg m-2', 'PREC'], '6': ['Radar Spectra (1)', 'unknown', 'RDSP1'], '7': ['Radar Spectra (2)', 'unknown', 'RDSP2'], '8': ['Radar Spectra (3)', 'unknown', 'RDSP3'], '9': ['Reflectivity of Cloud Droplets', 'dB', 'RFCD'], '10': ['Reflectivity of Cloud Ice', 'dB', 'RFCI'], '11': ['Reflectivity of Snow', 'dB', 'RFSNOW'], '12': ['Reflectivity of Rain', 'dB', 'RFRAIN'], '13': ['Reflectivity of Graupel', 'dB', 'RFGRPL'], '14': ['Reflectivity of Hail', 'dB', 'RFHAIL'], '15': ['Hybrid Scan Reflectivity', 'dB', 'HSR'], '16': ['Hybrid Scan Reflectivity Height', 'm', 'HSRHT'], '17-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_16", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_16", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Equivalent radar reflectivity factor for rain', 'm m6 m-3', 'REFZR'], '1': ['Equivalent radar reflectivity factor for snow', 'm m6 m-3', 'REFZI'], '2': ['Equivalent radar reflectivity factor for parameterized convection', 'm m6 m-3', 'REFZC'], '3': ['Echo Top', 'm', 'RETOP'], '4': ['Reflectivity', 'dB', 'REFD'], '5': ['Composite reflectivity', 'dB', 'REFC'], '6-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Equivalent radar reflectivity factor for rain', 'm m6 m-3', 'REFZR'], '193': ['Equivalent radar reflectivity factor for snow', 'm m6 m-3', 'REFZI'], '194': ['Equivalent radar reflectivity factor for parameterized convection', 'm m6 m-3', 'REFZC'], '195': ['Reflectivity', 'dB', 'REFD'], '196': ['Composite reflectivity', 'dB', 'REFC'], '197': ['Echo Top', 'm', 'RETOP'], '198': ['Hourly Maximum of Simulated Reflectivity', 'dB', 'MAXREF'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_17", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_17", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Lightning Strike Density', 'm-2 s-1', 'LTNGSD'], '1': ['Lightning Potential Index (LPI)', 'J kg-1', 'LTPINX'], '2': ['Cloud-to-Ground Lightning Flash Density', 'km-2 day-1', 'CDGDLTFD'], '3': ['Cloud-to-Cloud Lightning Flash Density', 'km-2 day-1', 'CDCDLTFD'], '4': ['Total Lightning Flash Density', 'km-2 day-1', 'TLGTFD'], '5': ['Subgrid-scale lightning potential index', 'J kg-1', 'SLNGPIDX'], '6-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Lightning', 'non-dim', 'LTNG'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_18", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_18", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Air Concentration of Caesium 137', 'Bq m-3', 'ACCES'], '1': ['Air Concentration of Iodine 131', 'Bq m-3', 'ACIOD'], '2': ['Air Concentration of Radioactive Pollutant', 'Bq m-3', 'ACRADP'], '3': ['Ground Deposition of Caesium 137', 'Bq m-2', 'GDCES'], '4': ['Ground Deposition of Iodine 131', 'Bq m-2', 'GDIOD'], '5': ['Ground Deposition of Radioactive Pollutant', 'Bq m-2', 'GDRADP'], '6': ['Time Integrated Air Concentration of Cesium Pollutant', 'Bq s m-3', 'TIACCP'], '7': ['Time Integrated Air Concentration of Iodine Pollutant', 'Bq s m-3', 'TIACIP'], '8': ['Time Integrated Air Concentration of Radioactive Pollutant', 'Bq s m-3', 'TIACRP'], '9': ['Reserved', 'unknown', 'unknown'], '10': ['Air Concentration', 'Bq m-3', 'AIRCON'], '11': ['Wet Deposition', 'Bq m-2', 'WETDEP'], '12': ['Dry Deposition', 'Bq m-2', 'DRYDEP'], '13': ['Total Deposition (Wet + Dry)', 'Bq m-2', 'TOTLWD'], '14': ['Specific Activity Concentration', 'Bq kg-1', 'SACON'], '15': ['Maximum of Air Concentration in Layer', 'Bq m-3', 'MAXACON'], '16': ['Height of Maximum of Air Concentration', 'm', 'HMXACON'], '17': ['Column-Integrated Air Concentration', 'Bq m-2', 'CIAIRC'], '18': ['Column-Averaged Air Concentration in Layer', 'Bq m-3', 'CAACL'], '19-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_19", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_19", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Visibility', 'm', 'VIS'], '1': ['Albedo', '%', 'ALBDO'], '2': ['Thunderstorm Probability', '%', 'TSTM'], '3': ['Mixed Layer Depth', 'm', 'MIXHT'], '4': ['Volcanic Ash', 'See Table 4.206', 'VOLASH'], '5': ['Icing Top', 'm', 'ICIT'], '6': ['Icing Base', 'm', 'ICIB'], '7': ['Icing', 'See Table 4.207', 'ICI'], '8': ['Turbulence Top', 'm', 'TURBT'], '9': ['Turbulence Base', 'm', 'TURBB'], '10': ['Turbulence', 'See Table 4.208', 'TURB'], '11': ['Turbulent Kinetic Energy', 'J kg-1', 'TKE'], '12': ['Planetary Boundary Layer Regime', 'See Table 4.209', 'PBLREG'], '13': ['Contrail Intensity', 'See Table 4.210', 'CONTI'], '14': ['Contrail Engine Type', 'See Table 4.211', 'CONTET'], '15': ['Contrail Top', 'm', 'CONTT'], '16': ['Contrail Base', 'm', 'CONTB'], '17': ['Maximum Snow Albedo', '%', 'MXSALB'], '18': ['Snow-Free Albedo', '%', 'SNFALB'], '19': ['Snow Albedo', '%', 'SALBD'], '20': ['Icing', '%', 'ICIP'], '21': ['In-Cloud Turbulence', '%', 'CTP'], '22': ['Clear Air Turbulence (CAT)', '%', 'CAT'], '23': ['Supercooled Large Droplet Probability', '%', 'SLDP'], '24': ['Convective Turbulent Kinetic Energy', 'J kg-1', 'CONTKE'], '25': ['Weather', 'See Table 4.225', 'WIWW'], '26': ['Convective Outlook', 'See Table 4.224', 'CONVO'], '27': ['Icing Scenario', 'See Table 4.227', 'ICESC'], '28': ['Mountain Wave Turbulence (Eddy Dissipation Rate)', 'm2/3 s-1', 'MWTURB'], '29': ['Clear Air Turbulence (CAT) (Eddy Dissipation Rate)', 'm2/3 s-1', 'CATEDR'], '30': ['Eddy Dissipation Parameter', 'm2/3 s-1', 'EDPARM'], '31': ['Maximum of Eddy Dissipation Parameter in Layer', 'm2/3 s-1', 'MXEDPRM'], '32': ['Highest Freezing Level', 'm', 'HIFREL'], '33': ['Visibility Through Liquid Fog', 'm', 'VISLFOG'], '34': ['Visibility Through Ice Fog', 'm', 'VISIFOG'], '35': ['Visibility Through Blowing Snow', 'm', 'VISBSN'], '36': ['Presence of Snow Squalls', 'See Table 4.222', 'PSNOWS'], '37': ['Icing Severity', 'See Table 4.228', 'ICESEV'], '38': ['Sky transparency index', 'See Table 4.214', 'SKYIDX'], '39': ['Seeing index', 'See Table 4.214', 'SEEINDEX'], '40': ['Snow level', 'm', 'SNOWLVL'], '41': ['Duct base height', 'm', 'DBHEIGHT'], '42': ['Trapping layer base height', 'm', 'TLBHEIGHT'], '43': ['Trapping layer top height', 'm', 'TLTHEIGHT'], '44': ['Mean vertical gradient of refractivity inside trapping layer', 'm-1', 'MEANVGRTL'], '45': ['Minimum vertical gradient of refractivity inside trapping layer', 'm-1', 'MINVGRTL'], '46-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Maximum Snow Albedo', '%', 'MXSALB'], '193': ['Snow-Free Albedo', '%', 'SNFALB'], '194': ['Slight risk convective outlook', 'categorical', 'SRCONO'], '195': ['Moderate risk convective outlook', 'categorical', 'MRCONO'], '196': ['High risk convective outlook', 'categorical', 'HRCONO'], '197': ['Tornado probability', '%', 'TORPROB'], '198': ['Hail probability', '%', 'HAILPROB'], '199': ['Wind probability', '%', 'WINDPROB'], '200': ['Significant Tornado probability', '%', 'STORPROB'], '201': ['Significant Hail probability', '%', 'SHAILPRO'], '202': ['Significant Wind probability', '%', 'SWINDPRO'], '203': ['Categorical Thunderstorm', 'Code table 4.222', 'TSTMC'], '204': ['Number of mixed layers next to surface', 'integer', 'MIXLY'], '205': ['Flight Category', 'unknown', 'FLGHT'], '206': ['Confidence - Ceiling', 'unknown', 'CICEL'], '207': ['Confidence - Visibility', 'unknown', 'CIVIS'], '208': ['Confidence - Flight Category', 'unknown', 'CIFLT'], '209': ['Low-Level aviation interest', 'unknown', 'LAVNI'], '210': ['High-Level aviation interest', 'unknown', 'HAVNI'], '211': ['Visible, Black Sky Albedo', '%', 'SBSALB'], '212': ['Visible, White Sky Albedo', '%', 'SWSALB'], '213': ['Near IR, Black Sky Albedo', '%', 'NBSALB'], '214': ['Near IR, White Sky Albedo', '%', 'NWSALB'], '215': ['Total Probability of Severe Thunderstorms (Days 2,3)', '%', 'PRSVR'], '216': ['Total Probability of Extreme Severe Thunderstorms (Days 2,3)', '%', 'PRSIGSVR'], '217': ['Supercooled Large Droplet (SLD) Icing', 'See Table 4.207', 'SIPD'], '218': ['Radiative emissivity', 'unknown', 'EPSR'], '219': ['Turbulence Potential Forecast Index', 'unknown', 'TPFI'], '220': ['Categorical Severe Thunderstorm', 'Code table 4.222', 'SVRTS'], '221': ['Probability of Convection', '%', 'PROCON'], '222': ['Convection Potential', 'Code table 4.222', 'CONVP'], '223-231': ['Reserved', 'unknown', 'unknown'], '232': ['Volcanic Ash Forecast Transport and Dispersion', 'log10 (kg m-3)', 'VAFTD'], '233': ['Icing probability', 'non-dim', 'ICPRB'], '234': ['Icing Severity', 'non-dim', 'ICSEV'], '235': ['Joint Fire Weather Probability', '%', 'JFWPRB'], '236': ['Snow Level', 'm', 'SNOWLVL'], '237': ['Dry Thunderstorm Probability', '%', 'DRYTPROB'], '238': ['Ellrod Index', 'unknown', 'ELLINX'], '239': ['Craven-Wiedenfeld Aggregate Severe Parameter', 'Numeric', 'CWASP'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_20", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_20", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Mass Density (Concentration)', 'kg m-3', 'MASSDEN'], '1': ['Column-Integrated Mass Density', 'kg m-2', 'COLMD'], '2': ['Mass Mixing Ratio (Mass Fraction in Air)', 'kg kg-1', 'MASSMR'], '3': ['Atmosphere Emission Mass Flux', 'kg m-2s-1', 'AEMFLX'], '4': ['Atmosphere Net Production Mass Flux', 'kg m-2s-1', 'ANPMFLX'], '5': ['Atmosphere Net Production And Emision Mass Flux', 'kg m-2s-1', 'ANPEMFLX'], '6': ['Surface Dry Deposition Mass Flux', 'kg m-2s-1', 'SDDMFLX'], '7': ['Surface Wet Deposition Mass Flux', 'kg m-2s-1', 'SWDMFLX'], '8': ['Atmosphere Re-Emission Mass Flux', 'kg m-2s-1', 'AREMFLX'], '9': ['Wet Deposition by Large-Scale Precipitation Mass Flux', 'kg m-2s-1', 'WLSMFLX'], '10': ['Wet Deposition by Convective Precipitation Mass Flux', 'kg m-2s-1', 'WDCPMFLX'], '11': ['Sedimentation Mass Flux', 'kg m-2s-1', 'SEDMFLX'], '12': ['Dry Deposition Mass Flux', 'kg m-2s-1', 'DDMFLX'], '13': ['Transfer From Hydrophobic to Hydrophilic', 'kg kg-1s-1', 'TRANHH'], '14': ['Transfer From SO2 (Sulphur Dioxide) to SO4 (Sulphate)', 'kg kg-1s-1', 'TRSDS'], '15': ['Dry deposition velocity', 'm s-1', 'DDVEL'], '16': ['Mass mixing ratio with respect to dry air', 'kg kg-1', 'MSSRDRYA'], '17': ['Mass mixing ratio with respect to wet air', 'kg kg-1', 'MSSRWETA'], '18': ['Potential of hydrogen (pH)', 'pH', 'POTHPH'], '19-49': ['Reserved', 'unknown', 'unknown'], '50': ['Amount in Atmosphere', 'mol', 'AIA'], '51': ['Concentration In Air', 'mol m-3', 'CONAIR'], '52': ['Volume Mixing Ratio (Fraction in Air)', 'mol mol-1', 'VMXR'], '53': ['Chemical Gross Production Rate of Concentration', 'mol m-3s-1', 'CGPRC'], '54': ['Chemical Gross Destruction Rate of Concentration', 'mol m-3s-1', 'CGDRC'], '55': ['Surface Flux', 'mol m-2s-1', 'SFLUX'], '56': ['Changes Of Amount in Atmosphere', 'mol s-1', 'COAIA'], '57': ['Total Yearly Average Burden of The Atmosphere>', 'mol', 'TYABA'], '58': ['Total Yearly Average Atmospheric Loss', 'mol s-1', 'TYAAL'], '59': ['Aerosol Number Concentration', 'm-3', 'ANCON'], '60': ['Aerosol Specific Number Concentration', 'kg-1', 'ASNCON'], '61': ['Maximum of Mass Density', 'kg m-3', 'MXMASSD'], '62': ['Height of Mass Density', 'm', 'HGTMD'], '63': ['Column-Averaged Mass Density in Layer', 'kg m-3', 'CAVEMDL'], '64': ['Mole fraction with respect to dry air', 'mol mol-1', 'MOLRDRYA'], '65': ['Mole fraction with respect to wet air', 'mol mol-1', 'MOLRWETA'], '66': ['Column-integrated in-cloud scavenging rate by precipitation', 'kg m-2 s-1', 'CINCLDSP'], '67': ['Column-integrated below-cloud scavenging rate by precipitation', 'kg m-2 s-1', 'CBLCLDSP'], '68': ['Column-integrated release rate from evaporating precipitation', 'kg m-2 s-1', 'CIRELREP'], '69': ['Column-integrated in-cloud scavenging rate by large-scale precipitation', 'kg m-2 s-1', 'CINCSLSP'], '70': ['Column-integrated below-cloud scavenging rate by large-scale precipitation', 'kg m-2 s-1', 'CBECSLSP'], '71': ['Column-integrated release rate from evaporating large-scale precipitation', 'kg m-2 s-1', 'CRERELSP'], '72': ['Column-integrated in-cloud scavenging rate by convective precipitation', 'kg m-2 s-1', 'CINCSRCP'], '73': ['Column-integrated below-cloud scavenging rate by convective precipitation', 'kg m-2 s-1', 'CBLCSRCP'], '74': ['Column-integrated release rate from evaporating convective precipitation', 'kg m-2 s-1', 'CIRERECP'], '75': ['Wildfire flux', 'kg m-2 s-1', 'WFIREFLX'], '76': ['Emission Rate', 'kg kg-1 s-1', 'EMISFLX'], '77': ['Surface Emission flux', 'kg m-2 s-1', 'SFCEFLX'], '78': ['Column integrated eastward mass flux', 'kg m-2 s-1', 'CEMF'], '79': ['Column integrated northward mass flux', 'kg m-2 s-1', 'CNMF'], '80': ['Column integrated divergence of mass flux', 'kg m-2 s-1', 'CDIVMF'], '81': ['Column integrated net source', 'kg m-2 s-1', 'CDNETS'], '82-99': ['Reserved', 'unknown', 'unknown'], '100': ['Surface Area Density (Aerosol)', 'm-1', 'SADEN'], '101': ['Vertical Visual Range', 'm', 'ATMTK'], '102': ['Aerosol Optical Thickness', 'Numeric', 'AOTK'], '103': ['Single Scattering Albedo', 'Numeric', 'SSALBK'], '104': ['Asymmetry Factor', 'Numeric', 'ASYSFK'], '105': ['Aerosol Extinction Coefficient', 'm-1', 'AECOEF'], '106': ['Aerosol Absorption Coefficient', 'm-1', 'AACOEF'], '107': ['Aerosol Lidar Backscatter from Satellite', 'm-1sr-1', 'ALBSAT'], '108': ['Aerosol Lidar Backscatter from the Ground', 'm-1sr-1', 'ALBGRD'], '109': ['Aerosol Lidar Extinction from Satellite', 'm-1', 'ALESAT'], '110': ['Aerosol Lidar Extinction from the Ground', 'm-1', 'ALEGRD'], '111': ['Angstrom Exponent', 'Numeric', 'ANGSTEXP'], '112': ['Scattering Aerosol Optical Thickness', 'Numeric', 'SCTAOTK'], '113-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_190", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_190", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Arbitrary Text String', 'CCITTIA5', 'ATEXT'], '1-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_191", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_191", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Seconds prior to initial reference time (defined in Section 1)', 's', 'TSEC'], '1': ['Geographical Latitude', '\u00b0 N', 'GEOLAT'], '2': ['Geographical Longitude', '\u00b0 E', 'GEOLON'], '3': ['Days Since Last Observation', 'd', 'DSLOBS'], '4-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Latitude (-90 to 90)', '\u00b0', 'NLAT'], '193': ['East Longitude (0 to 360)', '\u00b0', 'ELON'], '194': ['Seconds prior to initial reference time', 's', 'RTSEC'], '195': ['Model Layer number (From bottom up)', 'unknown', 'MLYNO'], '196': ['Latitude (nearest neighbor) (-90 to 90)', '\u00b0', 'NLATN'], '197': ['East Longitude (nearest neighbor) (0 to 360)', '\u00b0', 'ELONN'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_192", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_192", "kind": "variable", "doc": "

    \n", "default_value": "{'1': ['Covariance between zonal and meridional components of the wind. Defined as [uv]-[u][v], where "[]" indicates the mean over the indicated time span.', 'm2/s2', 'COVMZ'], '2': ['Covariance between zonal component of the wind and temperature. Defined as [uT]-[u][T], where "[]" indicates the mean over the indicated time span.', 'K*m/s', 'COVTZ'], '3': ['Covariance between meridional component of the wind and temperature. Defined as [vT]-[v][T], where "[]" indicates the mean over the indicated time span.', 'K*m/s', 'COVTM'], '4': ['Covariance between temperature and vertical component of the wind. Defined as [wT]-[w][T], where "[]" indicates the mean over the indicated time span.', 'K*m/s', 'COVTW'], '5': ['Covariance between zonal and zonal components of the wind. Defined as [uu]-[u][u], where "[]" indicates the mean over the indicated time span.', 'm2/s2', 'COVZZ'], '6': ['Covariance between meridional and meridional components of the wind. Defined as [vv]-[v][v], where "[]" indicates the mean over the indicated time span.', 'm2/s2', 'COVMM'], '7': ['Covariance between specific humidity and zonal components of the wind. Defined as [uq]-[u][q], where "[]" indicates the mean over the indicated time span.', 'kg/kg*m/s', 'COVQZ'], '8': ['Covariance between specific humidity and meridional components of the wind. Defined as [vq]-[v][q], where "[]" indicates the mean over the indicated time span.', 'kg/kg*m/s', 'COVQM'], '9': ['Covariance between temperature and vertical components of the wind. Defined as [\u03a9T]-[\u03a9][T], where "[]" indicates the mean over the indicated time span.', 'K*Pa/s', 'COVTVV'], '10': ['Covariance between specific humidity and vertical components of the wind. Defined as [\u03a9q]-[\u03a9][q], where "[]" indicates the mean over the indicated time span.', 'kg/kg*Pa/s', 'COVQVV'], '11': ['Covariance between surface pressure and surface pressure. Defined as [Psfc]-[Psfc][Psfc], where "[]" indicates the mean over the indicated time span.', 'Pa*Pa', 'COVPSPS'], '12': ['Covariance between specific humidity and specific humidy. Defined as [qq]-[q][q], where "[]" indicates the mean over the indicated time span.', 'kg/kg*kg/kg', 'COVQQ'], '13': ['Covariance between vertical and vertical components of the wind. Defined as [\u03a9\u03a9]-[\u03a9][\u03a9], where "[]" indicates the mean over the indicated time span.', 'Pa2/s2', 'COVVVVV'], '14': ['Covariance between temperature and temperature. Defined as [TT]-[T][T], where "[]" indicates the mean over the indicated time span.', 'K*K', 'COVTT'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_0_ndfd", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_0_ndfd", "kind": "variable", "doc": "

    \n", "default_value": "{'193': ['Apparent Temperature', 'K', 'APPT']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_1_ndfd", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_1_ndfd", "kind": "variable", "doc": "

    \n", "default_value": "{'192': ['Weather Information', 'WxInfo', 'WX']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_19_ndfd", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_19_ndfd", "kind": "variable", "doc": "

    \n", "default_value": "{'194': ['Convective Hazard Outlook', 'categorical', 'CONVOUTLOOK'], '197': ['Probability of Tornado', '%', 'PTORNADO'], '198': ['Probability of Hail', '%', 'PHAIL'], '199': ['Probability of Damaging Wind', '%', 'PWIND'], '200': ['Probability of Extreme Tornado', '%', 'PXTRMTORN'], '201': ['Probability of Extreme Hail', '%', 'PXTRMHAIL'], '202': ['Probability of Extreme Wind', '%', 'PXTRMWIND'], '215': ['Total Probability of Severe Thunderstorms', '%', 'TOTALSVRPROB'], '216': ['Total Probability of Extreme Severe Thunderstorms', '%', 'TOTALXTRMPROB'], '217': ['Watch Warning Advisory', 'WxInfo', 'WWA']}"}, {"fullname": "grib2io.tables.section4_discipline0.table_4_2_0_192_ndfd", "modulename": "grib2io.tables.section4_discipline0", "qualname": "table_4_2_0_192_ndfd", "kind": "variable", "doc": "

    \n", "default_value": "{'192': ['Critical Fire Weather', '', 'FIREWX'], '194': ['Dry Lightning', '', 'DRYLIGHTNING']}"}, {"fullname": "grib2io.tables.section4_discipline1", "modulename": "grib2io.tables.section4_discipline1", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4_discipline1.table_4_2_1_0", "modulename": "grib2io.tables.section4_discipline1", "qualname": "table_4_2_1_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Flash Flood Guidance (Encoded as an accumulation over a floating subinterval of time between the reference time and valid time)', 'kg m-2', 'FFLDG'], '1': ['Flash Flood Runoff (Encoded as an accumulation over a floating subinterval of time)', 'kg m-2', 'FFLDRO'], '2': ['Remotely Sensed Snow Cover', 'See Table 4.215', 'RSSC'], '3': ['Elevation of Snow Covered Terrain', 'See Table 4.216', 'ESCT'], '4': ['Snow Water Equivalent Percent of Normal', '%', 'SWEPON'], '5': ['Baseflow-Groundwater Runoff', 'kg m-2', 'BGRUN'], '6': ['Storm Surface Runoff', 'kg m-2', 'SSRUN'], '7': ['Discharge from Rivers or Streams', 'm3 s-1', 'DISRS'], '8': ['Group Water Upper Storage', 'kg m-2', 'GWUPS'], '9': ['Group Water Lower Storage', 'kg m-2', 'GWLOWS'], '10': ['Side Flow into River Channel', 'm3 s-1 m-1', 'SFLORC'], '11': ['River Storage of Water', 'm3', 'RVERSW'], '12': ['Flood Plain Storage of Water', 'm3', 'FLDPSW'], '13': ['Depth of Water on Soil Surface', 'kg m-2', 'DEPWSS'], '14': ['Upstream Accumulated Precipitation', 'kg m-2', 'UPAPCP'], '15': ['Upstream Accumulated Snow Melt', 'kg m-2', 'UPASM'], '16': ['Percolation Rate', 'kg m-2 s-1', 'PERRATE'], '17-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Baseflow-Groundwater Runoff', 'kg m-2', 'BGRUN'], '193': ['Storm Surface Runoff', 'kg m-2', 'SSRUN'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline1.table_4_2_1_1", "modulename": "grib2io.tables.section4_discipline1", "qualname": "table_4_2_1_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Conditional percent precipitation amount fractile for an overall period (encoded as an accumulation)', 'kg m-2', 'CPPOP'], '1': ['Percent Precipitation in a sub-period of an overall period (encoded as a percent accumulation over the sub-period)', '%', 'PPOSP'], '2': ['Probability of 0.01 inch of precipitation (POP)', '%', 'POP'], '3-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Probability of Freezing Precipitation', '%', 'CPOZP'], '193': ['Percent of Frozen Precipitation', '%', 'CPOFP'], '194': ['Probability of precipitation exceeding flash flood guidance values', '%', 'PPFFG'], '195': ['Probability of Wetting Rain, exceeding in 0.10" in a given time period', '%', 'CWR'], '196': ['Binary Probability of precipitation exceeding average recurrence intervals (ARI)', 'see Code table 4.222', 'QPFARI'], '197': ['Binary Probability of precipitation exceeding flash flood guidance values', 'see Code table 4.222', 'QPFFFG'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline1.table_4_2_1_2", "modulename": "grib2io.tables.section4_discipline1", "qualname": "table_4_2_1_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Water Depth', 'm', 'WDPTHIL'], '1': ['Water Temperature', 'K', 'WTMPIL'], '2': ['Water Fraction', 'Proportion', 'WFRACT'], '3': ['Sediment Thickness', 'm', 'SEDTK'], '4': ['Sediment Temperature', 'K', 'SEDTMP'], '5': ['Ice Thickness', 'm', 'ICTKIL'], '6': ['Ice Temperature', 'K', 'ICETIL'], '7': ['Ice Cover', 'Proportion', 'ICECIL'], '8': ['Land Cover (0=water, 1=land)', 'Proportion', 'LANDIL'], '9': ['Shape Factor with Respect to Salinity Profile', 'unknown', 'SFSAL'], '10': ['Shape Factor with Respect to Temperature Profile in Thermocline', 'unknown', 'SFTMP'], '11': ['Attenuation Coefficient of Water with Respect to Solar Radiation', 'm-1', 'ACWSR'], '12': ['Salinity', 'kg kg-1', 'SALTIL'], '13': ['Cross Sectional Area of Flow in Channel', 'm2', 'CSAFC'], '14': ['Snow temperature', 'K', 'LNDSNOWT'], '15-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline10", "modulename": "grib2io.tables.section4_discipline10", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4_discipline10.table_4_2_10_0", "modulename": "grib2io.tables.section4_discipline10", "qualname": "table_4_2_10_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Wave Spectra (1)', '-', 'WVSP1'], '1': ['Wave Spectra (2)', '-', 'WVSP2'], '2': ['Wave Spectra (3)', '-', 'WVSP3'], '3': ['Significant Height of Combined Wind Waves and Swell', 'm', 'HTSGW'], '4': ['Direction of Wind Waves', 'degree true', 'WVDIR'], '5': ['Significant Height of Wind Waves', 'm', 'WVHGT'], '6': ['Mean Period of Wind Waves', 's', 'WVPER'], '7': ['Direction of Swell Waves', 'degree true', 'SWDIR'], '8': ['Significant Height of Swell Waves', 'm', 'SWELL'], '9': ['Mean Period of Swell Waves', 's', 'SWPER'], '10': ['Primary Wave Direction', 'degree true', 'DIRPW'], '11': ['Primary Wave Mean Period', 's', 'PERPW'], '12': ['Secondary Wave Direction', 'degree true', 'DIRSW'], '13': ['Secondary Wave Mean Period', 's', 'PERSW'], '14': ['Direction of Combined Wind Waves and Swell', 'degree true', 'WWSDIR'], '15': ['Mean Period of Combined Wind Waves and Swell', 's', 'MWSPER'], '16': ['Coefficient of Drag With Waves', '-', 'CDWW'], '17': ['Friction Velocity', 'm s-1', 'FRICVW'], '18': ['Wave Stress', 'N m-2', 'WSTR'], '19': ['Normalised Waves Stress', '-', 'NWSTR'], '20': ['Mean Square Slope of Waves', '-', 'MSSW'], '21': ['U-component Surface Stokes Drift', 'm s-1', 'USSD'], '22': ['V-component Surface Stokes Drift', 'm s-1', 'VSSD'], '23': ['Period of Maximum Individual Wave Height', 's', 'PMAXWH'], '24': ['Maximum Individual Wave Height', 'm', 'MAXWH'], '25': ['Inverse Mean Wave Frequency', 's', 'IMWF'], '26': ['Inverse Mean Frequency of The Wind Waves', 's', 'IMFWW'], '27': ['Inverse Mean Frequency of The Total Swell', 's', 'IMFTSW'], '28': ['Mean Zero-Crossing Wave Period', 's', 'MZWPER'], '29': ['Mean Zero-Crossing Period of The Wind Waves', 's', 'MZPWW'], '30': ['Mean Zero-Crossing Period of The Total Swell', 's', 'MZPTSW'], '31': ['Wave Directional Width', '-', 'WDIRW'], '32': ['Directional Width of The Wind Waves', '-', 'DIRWWW'], '33': ['Directional Width of The Total Swell', '-', 'DIRWTS'], '34': ['Peak Wave Period', 's', 'PWPER'], '35': ['Peak Period of The Wind Waves', 's', 'PPERWW'], '36': ['Peak Period of The Total Swell', 's', 'PPERTS'], '37': ['Altimeter Wave Height', 'm', 'ALTWH'], '38': ['Altimeter Corrected Wave Height', 'm', 'ALCWH'], '39': ['Altimeter Range Relative Correction', '-', 'ALRRC'], '40': ['10 Metre Neutral Wind Speed Over Waves', 'm s-1', 'MNWSOW'], '41': ['10 Metre Wind Direction Over Waves', 'degree true', 'MWDIRW'], '42': ['Wave Engery Spectrum', 'm-2 s rad-1', 'WESP'], '43': ['Kurtosis of The Sea Surface Elevation Due to Waves', '-', 'KSSEW'], '44': ['Benjamin-Feir Index', '-', 'BENINX'], '45': ['Spectral Peakedness Factor', 's-1', 'SPFTR'], '46': ['Peak wave direction', '&deg', 'PWAVEDIR'], '47': ['Significant wave height of first swell partition', 'm', 'SWHFSWEL'], '48': ['Significant wave height of second swell partition', 'm', 'SWHSSWEL'], '49': ['Significant wave height of third swell partition', 'm', 'SWHTSWEL'], '50': ['Mean wave period of first swell partition', 's', 'MWPFSWEL'], '51': ['Mean wave period of second swell partition', 's', 'MWPSSWEL'], '52': ['Mean wave period of third swell partition', 's', 'MWPTSWEL'], '53': ['Mean wave direction of first swell partition', '&deg', 'MWDFSWEL'], '54': ['Mean wave direction of second swell partition', '&deg', 'MWDSSWEL'], '55': ['Mean wave direction of third swell partition', '&deg', 'MWDTSWEL'], '56': ['Wave directional width of first swell partition', '-', 'WDWFSWEL'], '57': ['Wave directional width of second swell partition', '-', 'WDWSSWEL'], '58': ['Wave directional width of third swell partition', '-', 'WDWTSWEL'], '59': ['Wave frequency width of first swell partition', '-', 'WFWFSWEL'], '60': ['Wave frequency width of second swell partition', '-', 'WFWSSWEL'], '61': ['Wave frequency width of third swell partition', '-', 'WFWTSWEL'], '62': ['Wave frequency width', '-', 'WAVEFREW'], '63': ['Frequency width of wind waves', '-', 'FREWWW'], '64': ['Frequency width of total swell', '-', 'FREWTSW'], '65': ['Peak Wave Period of First Swell Partition', 's', 'PWPFSPAR'], '66': ['Peak Wave Period of Second Swell Partition', 's', 'PWPSSPAR'], '67': ['Peak Wave Period of Third Swell Partition', 's', 'PWPTSPAR'], '68': ['Peak Wave Direction of First Swell Partition', 'degree true', 'PWDFSPAR'], '69': ['Peak Wave Direction of Second Swell Partition', 'degree true', 'PWDSSPAR'], '70': ['Peak Wave Direction of Third Swell Partition', 'degree true', 'PWDTSPAR'], '71': ['Peak Direction of Wind Waves', 'degree true', 'PDWWAVE'], '72': ['Peak Direction of Total Swell', 'degree true', 'PDTSWELL'], '73': ['Whitecap Fraction', 'fraction', 'WCAPFRAC'], '74': ['Mean Direction of Total Swell', 'degree', 'MDTSWEL'], '75': ['Mean Direction of Wind Waves', 'degree', 'MDWWAVE'], '76': ['Charnock', 'Numeric', 'CHNCK'], '77': ['Wave Spectral Skewness', 'Numeric', 'WAVESPSK'], '78': ['Wave Energy Flux Magnitude', 'W m-1', 'WAVEFMAG'], '79': ['Wave Energy Flux Mean Direction', 'degree true', 'WAVEFDIR'], '80': ['Raio of Wave Angular and Frequency width', 'Numeric', 'RWAVEAFW'], '81': ['Free Convective Velocity over the Oceans', 'm s-1', 'FCVOCEAN'], '82': ['Air Density over the Oceans', 'kg m-3', 'AIRDENOC'], '83': ['Normalized Energy Flux into Waves', 'Numeric', 'NEFW'], '84': ['Normalized Stress into Ocean', 'Numeric', 'NSOCEAN'], '85': ['Normalized Energy Flux into Ocean', 'Numeric', 'NEFOCEAN'], '86': ['Surface Elevation Variance due to Waves (over all frequencies and directions)', 'm2 s rad-1', 'SEVWAVE'], '87': ['Wave Induced Mean Se Level Correction', 'm', 'WAVEMSLC'], '88': ['Spectral Width Index', 'Numeric', 'SPECWI'], '89': ['Number of Events in Freak Wave Statistics', 'Numeric', 'EFWS'], '90': ['U-Component of Surface Momentum Flux into Ocean', 'N m-2', 'USMFO'], '91': ['U-Component of Surface Momentum Flux into Ocean', 'N m-2', 'VSMFO'], '92': ['Wave Turbulent Energy Flux into Ocean', 'W m-2', 'WAVETEFO'], '93-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Wave Steepness', 'proportion', 'WSTP'], '193': ['Wave Length', 'unknown', 'WLENG'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline10.table_4_2_10_1", "modulename": "grib2io.tables.section4_discipline10", "qualname": "table_4_2_10_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Current Direction', 'degree True', 'DIRC'], '1': ['Current Speed', 'm s-1', 'SPC'], '2': ['U-Component of Current', 'm s-1', 'UOGRD'], '3': ['V-Component of Current', 'm s-1', 'VOGRD'], '4': ['Rip Current Occurrence Probability', '%', 'RIPCOP'], '5': ['Eastward Current', 'm s-1', 'EASTCUR'], '6': ['Northward Current', 'm s-1', 'NRTHCUR'], '7-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Ocean Mixed Layer U Velocity', 'm s-1', 'OMLU'], '193': ['Ocean Mixed Layer V Velocity', 'm s-1', 'OMLV'], '194': ['Barotropic U velocity', 'm s-1', 'UBARO'], '195': ['Barotropic V velocity', 'm s-1', 'VBARO'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline10.table_4_2_10_2", "modulename": "grib2io.tables.section4_discipline10", "qualname": "table_4_2_10_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Ice Cover', 'Proportion', 'ICEC'], '1': ['Ice Thickness', 'm', 'ICETK'], '2': ['Direction of Ice Drift', 'degree True', 'DICED'], '3': ['Speed of Ice Drift', 'm s-1', 'SICED'], '4': ['U-Component of Ice Drift', 'm s-1', 'UICE'], '5': ['V-Component of Ice Drift', 'm s-1', 'VICE'], '6': ['Ice Growth Rate', 'm s-1', 'ICEG'], '7': ['Ice Divergence', 's-1', 'ICED'], '8': ['Ice Temperature', 'K', 'ICETMP'], '9': ['Module of Ice Internal Pressure', 'Pa m', 'ICEPRS'], '10': ['Zonal Vector Component of Vertically Integrated Ice Internal Pressure', 'Pa m', 'ZVCICEP'], '11': ['Meridional Vector Component of Vertically Integrated Ice Internal Pressure', 'Pa m', 'MVCICEP'], '12': ['Compressive Ice Strength', 'N m-1', 'CICES'], '13': ['Snow Temperature (over sea ice)', 'K', 'SNOWTSI'], '14': ['Albedo', 'Numeric', 'ALBDOICE'], '15': ['Sea Ice Volume per Unit Area', 'm3m-2', 'SICEVOL'], '16': ['Snow Volume Over Sea Ice per Unit Area', 'm3m-2', 'SNVOLSI'], '17': ['Sea Ice Heat Content', 'J m-2', 'SICEHC'], '18': ['Snow over Sea Ice Heat Content', 'J m-2', 'SNCEHC'], '19': ['Ice Freeboard Thickness', 'm', 'ICEFTHCK'], '20': ['Ice Melt Pond Fraction', 'fraction', 'ICEMPF'], '21': ['Ice Melt Pond Depth', 'm', 'ICEMPD'], '22': ['Ice Melt Pond Volume per Unit Area', 'm3m-2', 'ICEMPV'], '23': ['Sea Ice Fraction Tendency due to Parameterization', 's-1', 'SIFTP'], '24-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline10.table_4_2_10_3", "modulename": "grib2io.tables.section4_discipline10", "qualname": "table_4_2_10_3", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Water Temperature', 'K', 'WTMP'], '1': ['Deviation of Sea Level from Mean', 'm', 'DSLM'], '2': ['Heat Exchange Coefficient', 'unknown', 'CH'], '3': ['Practical Salinity', 'Numeric', 'PRACTSAL'], '4': ['Downward Heat Flux', 'W m-2', 'DWHFLUX'], '5': ['Eastward Surface Stress', 'N m-2', 'EASTWSS'], '6': ['Northward surface stress', 'N m-2', 'NORTHWSS'], '7': ['x-component Surface Stress', 'N m-2', 'XCOMPSS'], '8': ['y-component Surface Stress', 'N m-2', 'YCOMPSS'], '9': ['Thermosteric Change in Sea Surface Height', 'm', 'THERCSSH'], '10': ['Halosteric Change in Sea Surface Height', 'm', 'HALOCSSH'], '11': ['Steric Change in Sea Surface Height', 'm', 'STERCSSH'], '12': ['Sea Salt Flux', 'kg m-2s-1', 'SEASFLUX'], '13': ['Net upward water flux', 'kg m-2s-1', 'NETUPWFLUX'], '14': ['Eastward surface water velocity', 'm s-1', 'ESURFWVEL'], '15': ['Northward surface water velocity', 'm s-1', 'NSURFWVEL'], '16': ['x-component of surface water velocity', 'm s-1', 'XSURFWVEL'], '17': ['y-component of surface water velocity', 'm s-1', 'YSURFWVEL'], '18': ['Heat flux correction', 'W m-2', 'HFLUXCOR'], '19': ['Sea surface height tendency due to parameterization', 'm s-1', 'SSHGTPARM'], '20': ['Deviation of sea level from mean with inverse barometer correction', 'm', 'DSLIBARCOR'], '21-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Hurricane Storm Surge', 'm', 'SURGE'], '193': ['Extra Tropical Storm Surge', 'm', 'ETSRG'], '194': ['Ocean Surface Elevation Relative to Geoid', 'm', 'ELEV'], '195': ['Sea Surface Height Relative to Geoid', 'm', 'SSHG'], '196': ['Ocean Mixed Layer Potential Density (Reference 2000m)', 'kg m-3', 'P2OMLT'], '197': ['Net Air-Ocean Heat Flux', 'W m-2', 'AOHFLX'], '198': ['Assimilative Heat Flux', 'W m-2', 'ASHFL'], '199': ['Surface Temperature Trend', 'degree per day', 'SSTT'], '200': ['Surface Salinity Trend', 'psu per day', 'SSST'], '201': ['Kinetic Energy', 'J kg-1', 'KENG'], '202': ['Salt Flux', 'kg m-2s-1', 'SLTFL'], '203': ['Heat Exchange Coefficient', 'unknown', 'LCH'], '204': ['Freezing Spray', 'unknown', 'FRZSPR'], '205': ['Total Water Level Accounting for Tide, Wind and Waves', 'm', 'TWLWAV'], '206': ['Total Water Level Increase due to Waves', 'm', 'RUNUP'], '207': ['Mean Increase in Water Level due to Waves', 'm', 'SETUP'], '208': ['Time-varying Increase in Water Level due to Waves', 'm', 'SWASH'], '209': ['Total Water Level Above Dune Toe', 'm', 'TWLDT'], '210': ['Total Water Level Above Dune Crest', 'm', 'TWLDC'], '211-241': ['Reserved', 'unknown', 'unknown'], '242': ['20% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG20'], '243': ['30% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG30'], '244': ['40% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG40'], '245': ['50% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG50'], '246': ['60% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG60'], '247': ['70% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG70'], '248': ['80% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG80'], '249': ['90% Tropical Cyclone Storm Surge Exceedance', 'm', 'TCSRG90'], '250': ['Extra Tropical Storm Surge Combined Surge and Tide', 'm', 'ETCWL'], '251': ['Tide', 'm', 'TIDE'], '252': ['Erosion Occurrence Probability', '%', 'EROSNP'], '253': ['Overwash Occurrence Probability', '%', 'OWASHP'], '254': ['Reserved', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline10.table_4_2_10_4", "modulename": "grib2io.tables.section4_discipline10", "qualname": "table_4_2_10_4", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Main Thermocline Depth', 'm', 'MTHD'], '1': ['Main Thermocline Anomaly', 'm', 'MTHA'], '2': ['Transient Thermocline Depth', 'm', 'TTHDP'], '3': ['Salinity', 'kg kg-1', 'SALTY'], '4': ['Ocean Vertical Heat Diffusivity', 'm2 s-1', 'OVHD'], '5': ['Ocean Vertical Salt Diffusivity', 'm2 s-1', 'OVSD'], '6': ['Ocean Vertical Momentum Diffusivity', 'm2 s-1', 'OVMD'], '7': ['Bathymetry', 'm', 'BATHY'], '8-10': ['Reserved', 'unknown', 'unknown'], '11': ['Shape Factor With Respect To Salinity Profile', 'unknown', 'SFSALP'], '12': ['Shape Factor With Respect To Temperature Profile In Thermocline', 'unknown', 'SFTMPP'], '13': ['Attenuation Coefficient Of Water With Respect to Solar Radiation', 'm-1', 'ACWSRD'], '14': ['Water Depth', 'm', 'WDEPTH'], '15': ['Water Temperature', 'K', 'WTMPSS'], '16': ['Water Density (rho)', 'kg m-3', 'WATERDEN'], '17': ['Water Density Anomaly (sigma)', 'kg m-3', 'WATDENA'], '18': ['Water potential temperature (theta)', 'K', 'WATPTEMP'], '19': ['Water potential density (rho theta)', 'kg m-3', 'WATPDEN'], '20': ['Water potential density anomaly (sigma theta)', 'kg m-3', 'WATPDENA'], '21': ['Practical Salinity', 'psu (numeric)', 'PRTSAL'], '22': ['Water Column-integrated Heat Content', 'J m-2', 'WCHEATC'], '23': ['Eastward Water Velocity', 'm s-1', 'EASTWVEL'], '24': ['Northward Water Velocity', 'm s-1', 'NRTHWVEL'], '25': ['X-Component Water Velocity', 'm s-1', 'XCOMPWV'], '26': ['Y-Component Water Velocity', 'm s-1', 'YCOMPWV'], '27': ['Upward Water Velocity', 'm s-1', 'UPWWVEL'], '28': ['Vertical Eddy Diffusivity', 'm2 s-1', 'VEDDYDIF'], '29': ['Bottom Pressure Equivalent Height', 'm', 'BPEH'], '30': ['Fresh Water Flux into Sea Water from Rivers', 'kg m-2s-1', 'FWFSW'], '31': ['Fresh Water Flux Correction', 'kg m-2s-1', 'FWFC'], '32': ['Virtual Salt Flux into Sea Water', 'g kg m-2s-1', 'VSFSW'], '33': ['Virtual Salt Flux Correction', 'g kg m-2s-1', 'VSFC'], '34': ['Sea Water Temperature Tendency due to Newtonian Relaxation', 'K s-1', 'SWTTNR'], '35': ['Sea Water Salinity Tendency due to Newtonian Relaxation', 'g kg m-2s-1', 'SWSTNR'], '36': ['Sea Water Temperature Tendency due to Parameterization', 'K s-1', 'SWTTP'], '37': ['Sea Water Salinity Tendency due to Parameterization', 'g kg m-2s-1', 'SWSTP'], '38': ['Eastward Sea Water Velocity Tendency Due To Parameterization', 'm-2s-1', 'ESWVP'], '39': ['Northward Sea Water Velocity Tendency Due To Parameterization', 'm-2s-1', 'NSWVP'], '40': ['Sea Water Temperature Tendency Due to Direct Bias Correction', 'K s-1', 'SWTTBC'], '41': ['Sea Water Salinity Tendency due to Direct Bias Correction', 'g kg m-2s-1', 'SWSTBC'], '42-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['3-D Temperature', '\u00b0 c', 'WTMPC'], '193': ['3-D Salinity', 'psu', 'SALIN'], '194': ['Barotropic Kinectic Energy', 'J kg-1', 'BKENG'], '195': ['Geometric Depth Below Sea Surface', 'm', 'DBSS'], '196': ['Interface Depths', 'm', 'INTFD'], '197': ['Ocean Heat Content', 'J m-2', 'OHC'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline10.table_4_2_10_191", "modulename": "grib2io.tables.section4_discipline10", "qualname": "table_4_2_10_191", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Seconds Prior To Initial Reference Time (Defined In Section 1)', 's', 'IRTSEC'], '1': ['Meridional Overturning Stream Function', 'm3 s-1', 'MOSF'], '2': ['Reserved', 'unknown', 'unknown'], '3': ['Days Since Last Observation', 'd', 'DSLOBS'], '4': ['Barotropic Stream Function', 'm3 s-1', 'BARDSF'], '5-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline2", "modulename": "grib2io.tables.section4_discipline2", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4_discipline2.table_4_2_2_0", "modulename": "grib2io.tables.section4_discipline2", "qualname": "table_4_2_2_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Land Cover (0=sea, 1=land)', 'Proportion', 'LAND'], '1': ['Surface Roughness', 'm', 'SFCR'], '2': ['Soil Temperature (Parameter Deprecated, see Note 3)', 'K', 'TSOIL'], '3': ['Soil Moisture Content (Parameter Deprecated, see Note 1)', 'unknown', 'unknown'], '4': ['Vegetation', '%', 'VEG'], '5': ['Water Runoff', 'kg m-2', 'WATR'], '6': ['Evapotranspiration', 'kg-2 s-1', 'EVAPT'], '7': ['Model Terrain Height', 'm', 'MTERH'], '8': ['Land Use', 'See Table 4.212', 'LANDU'], '9': ['Volumetric Soil Moisture Content', 'Proportion', 'SOILW'], '10': ['Ground Heat Flux', 'W m-2', 'GFLUX'], '11': ['Moisture Availability', '%', 'MSTAV'], '12': ['Exchange Coefficient', 'kg m-2 s-1', 'SFEXC'], '13': ['Plant Canopy Surface Water', 'kg m-2', 'CNWAT'], '14': ['Blackadars Mixing Length Scale', 'm', 'BMIXL'], '15': ['Canopy Conductance', 'm s-1', 'CCOND'], '16': ['Minimal Stomatal Resistance', 's m-1', 'RSMIN'], '17': ['Wilting Point (Parameter Deprecated, see Note 1)', 'Proportion', 'WILT'], '18': ['Solar parameter in canopy conductance', 'Proportion', 'RCS'], '19': ['Temperature parameter in canopy', 'Proportion', 'RCT'], '20': ['Humidity parameter in canopy conductance', 'Proportion', 'RCQ'], '21': ['Soil moisture parameter in canopy conductance', 'Proportion', 'RCSOL'], '22': ['Soil Moisture (Parameter Deprecated, See Note 3)', 'unknown', 'unknown'], '23': ['Column-Integrated Soil Water (Parameter Deprecated, See Note 3)', 'kg m-2', 'CISOILW'], '24': ['Heat Flux', 'W m-2', 'HFLUX'], '25': ['Volumetric Soil Moisture', 'm3 m-3', 'VSOILM'], '26': ['Wilting Point', 'kg m-3', 'WILT'], '27': ['Volumetric Wilting Point', 'm3 m-3', 'VWILTP'], '28': ['Leaf Area Index', 'Numeric', 'LEAINX'], '29': ['Evergreen Forest Cover', 'Proportion', 'EVGFC'], '30': ['Deciduous Forest Cover', 'Proportion', 'DECFC'], '31': ['Normalized Differential Vegetation Index (NDVI)', 'Numeric', 'NDVINX'], '32': ['Root Depth of Vegetation', 'm', 'RDVEG'], '33': ['Water Runoff and Drainage', 'kg m-2', 'WROD'], '34': ['Surface Water Runoff', 'kg m-2', 'SFCWRO'], '35': ['Tile Class', 'See Table 4.243', 'TCLASS'], '36': ['Tile Fraction', 'Proportion', 'TFRCT'], '37': ['Tile Percentage', '%', 'TPERCT'], '38': ['Soil Volumetric Ice Content (Water Equivalent)', 'm3 m-3', 'SOILVIC'], '39': ['Evapotranspiration Rate', 'kg m-2 s-1', 'EVAPTRAT'], '40': ['Potential Evapotranspiration Rate', 'kg m-2 s-1', 'PERATE'], '41': ['Snow Melt Rate', 'kg m-2 s-1', 'SMRATE'], '42': ['Water Runoff and Drainage Rate', 'kg m-2 s-1', 'WRDRATE'], '43': ['Drainage direction', 'See Table 4.250', 'DRAINDIR'], '44': ['Upstream Area', 'm2', 'UPSAREA'], '45': ['Wetland Cover', 'Proportion', 'WETCOV'], '46': ['Wetland Type', 'See Table 4.239', 'WETTYPE'], '47': ['Irrigation Cover', 'Proportion', 'IRRCOV'], '48': ['C4 Crop Cover', 'Proportion', 'CROPCOV'], '49': ['C4 Grass Cover', 'Proportion', 'GRASSCOV'], '50': ['Skin Resovoir Content', 'kg m-2', 'SKINRC'], '51': ['Surface Runoff Rate', 'kg m-2 s-1', 'SURFRATE'], '52': ['Subsurface Runoff Rate', 'kg m-2 s-1', 'SUBSRATE'], '53': ['Low-Vegetation Cover', 'Proportion', 'LOVEGCOV'], '54': ['High-Vegetation Cover', 'Proportion', 'HIVEGCOV'], '55': ['Leaf Area Index (Low-Vegetation)', 'm2 m-2', 'LAILO'], '56': ['Leaf Area Index (High-Vegetation)', 'm2 m-2', 'LAIHI'], '57': ['Type of Low-Vegetation', 'See Table 4.234', 'TYPLOVEG'], '58': ['Type of High-Vegetation', 'See Table 4.234', 'TYPHIVEG'], '59': ['Net Ecosystem Exchange Flux', 'kg-2 s-1', 'NECOFLUX'], '60': ['Gross Primary Production Flux', 'kg-2 s-1', 'GROSSFLUX'], '61': ['Ecosystem Respiration Flux', 'kg-2 s-1', 'ECORFLUX'], '45-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Volumetric Soil Moisture Content', 'Fraction', 'SOILW'], '193': ['Ground Heat Flux', 'W m-2', 'GFLUX'], '194': ['Moisture Availability', '%', 'MSTAV'], '195': ['Exchange Coefficient', '(kg m-3) (m s-1)', 'SFEXC'], '196': ['Plant Canopy Surface Water', 'kg m-2', 'CNWAT'], '197': ['Blackadar\u2019s Mixing Length Scale', 'm', 'BMIXL'], '198': ['Vegetation Type', 'Integer (0-13)', 'VGTYP'], '199': ['Canopy Conductance', 'm s-1', 'CCOND'], '200': ['Minimal Stomatal Resistance', 's m-1', 'RSMIN'], '201': ['Wilting Point', 'Fraction', 'WILT'], '202': ['Solar parameter in canopy conductance', 'Fraction', 'RCS'], '203': ['Temperature parameter in canopy conductance', 'Fraction', 'RCT'], '204': ['Humidity parameter in canopy conductance', 'Fraction', 'RCQ'], '205': ['Soil moisture parameter in canopy conductance', 'Fraction', 'RCSOL'], '206': ['Rate of water dropping from canopy to ground', 'unknown', 'RDRIP'], '207': ['Ice-free water surface', '%', 'ICWAT'], '208': ['Surface exchange coefficients for T and Q divided by delta z', 'm s-1', 'AKHS'], '209': ['Surface exchange coefficients for U and V divided by delta z', 'm s-1', 'AKMS'], '210': ['Vegetation canopy temperature', 'K', 'VEGT'], '211': ['Surface water storage', 'kg m-2', 'SSTOR'], '212': ['Liquid soil moisture content (non-frozen)', 'kg m-2', 'LSOIL'], '213': ['Open water evaporation (standing water)', 'W m-2', 'EWATR'], '214': ['Groundwater recharge', 'kg m-2', 'GWREC'], '215': ['Flood plain recharge', 'kg m-2', 'QREC'], '216': ['Roughness length for heat', 'm', 'SFCRH'], '217': ['Normalized Difference Vegetation Index', 'unknown', 'NDVI'], '218': ['Land-sea coverage (nearest neighbor) [land=1,sea=0]', 'unknown', 'LANDN'], '219': ['Asymptotic mixing length scale', 'm', 'AMIXL'], '220': ['Water vapor added by precip assimilation', 'kg m-2', 'WVINC'], '221': ['Water condensate added by precip assimilation', 'kg m-2', 'WCINC'], '222': ['Water Vapor Flux Convergance (Vertical Int)', 'kg m-2', 'WVCONV'], '223': ['Water Condensate Flux Convergance (Vertical Int)', 'kg m-2', 'WCCONV'], '224': ['Water Vapor Zonal Flux (Vertical Int)', 'kg m-2', 'WVUFLX'], '225': ['Water Vapor Meridional Flux (Vertical Int)', 'kg m-2', 'WVVFLX'], '226': ['Water Condensate Zonal Flux (Vertical Int)', 'kg m-2', 'WCUFLX'], '227': ['Water Condensate Meridional Flux (Vertical Int)', 'kg m-2', 'WCVFLX'], '228': ['Aerodynamic conductance', 'm s-1', 'ACOND'], '229': ['Canopy water evaporation', 'W m-2', 'EVCW'], '230': ['Transpiration', 'W m-2', 'TRANS'], '231': ['Seasonally Minimum Green Vegetation Fraction (over 1-year period)', '%', 'VEGMIN'], '232': ['Seasonally Maximum Green Vegetation Fraction (over 1-year period)', '%', 'VEGMAX'], '233': ['Land Fraction', 'Fraction', 'LANDFRC'], '234': ['Lake Fraction', 'Fraction', 'LAKEFRC'], '235': ['Precipitation Advected Heat Flux', 'W m-2', 'PAHFLX'], '236': ['Water Storage in Aquifer', 'kg m-2', 'WATERSA'], '237': ['Evaporation of Intercepted Water', 'kg m-2', 'EIWATER'], '238': ['Plant Transpiration', 'kg m-2', 'PLANTTR'], '239': ['Soil Surface Evaporation', 'kg m-2', 'SOILSE'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline2.table_4_2_2_1", "modulename": "grib2io.tables.section4_discipline2", "qualname": "table_4_2_2_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Cold Advisory for Newborn Livestock', 'unknown', 'CANL'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline2.table_4_2_2_3", "modulename": "grib2io.tables.section4_discipline2", "qualname": "table_4_2_2_3", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Soil Type', 'See Table 4.213', 'SOTYP'], '1': ['Upper Layer Soil Temperature', 'K', 'UPLST'], '2': ['Upper Layer Soil Moisture', 'kg m-3', 'UPLSM'], '3': ['Lower Layer Soil Moisture', 'kg m-3', 'LOWLSM'], '4': ['Bottom Layer Soil Temperature', 'K', 'BOTLST'], '5': ['Liquid Volumetric Soil Moisture(non-frozen)', 'Proportion', 'SOILL'], '6': ['Number of Soil Layers in Root Zone', 'Numeric', 'RLYRS'], '7': ['Transpiration Stress-onset (soil moisture)', 'Proportion', 'SMREF'], '8': ['Direct Evaporation Cease (soil moisture)', 'Proportion', 'SMDRY'], '9': ['Soil Porosity', 'Proportion', 'POROS'], '10': ['Liquid Volumetric Soil Moisture (Non-Frozen)', 'm3 m-3', 'LIQVSM'], '11': ['Volumetric Transpiration Stree-Onset(Soil Moisture)', 'm3 m-3', 'VOLTSO'], '12': ['Transpiration Stree-Onset(Soil Moisture)', 'kg m-3', 'TRANSO'], '13': ['Volumetric Direct Evaporation Cease(Soil Moisture)', 'm3 m-3', 'VOLDEC'], '14': ['Direct Evaporation Cease(Soil Moisture)', 'kg m-3', 'DIREC'], '15': ['Soil Porosity', 'm3 m-3', 'SOILP'], '16': ['Volumetric Saturation Of Soil Moisture', 'm3 m-3', 'VSOSM'], '17': ['Saturation Of Soil Moisture', 'kg m-3', 'SATOSM'], '18': ['Soil Temperature', 'K', 'SOILTMP'], '19': ['Soil Moisture', 'kg m-3', 'SOILMOI'], '20': ['Column-Integrated Soil Moisture', 'kg m-2', 'CISOILM'], '21': ['Soil Ice', 'kg m-3', 'SOILICE'], '22': ['Column-Integrated Soil Ice', 'kg m-2', 'CISICE'], '23': ['Liquid Water in Snow Pack', 'kg m-2', 'LWSNWP'], '24': ['Frost Index', 'kg day-1', 'FRSTINX'], '25': ['Snow Depth at Elevation Bands', 'kg m-2', 'SNWDEB'], '26': ['Soil Heat Flux', 'W m-2', 'SHFLX'], '27': ['Soil Depth', 'm', 'SOILDEP'], '28': ['Snow Temperature', 'K', 'SNOWTMP'], '29': ['Ice Temperature', 'K', 'ICETEMP'], '30-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Liquid Volumetric Soil Moisture (non Frozen)', 'Proportion', 'SOILL'], '193': ['Number of Soil Layers in Root Zone', 'non-dim', 'RLYRS'], '194': ['Surface Slope Type', 'Index', 'SLTYP'], '195': ['Transpiration Stress-onset (soil moisture)', 'Proportion', 'SMREF'], '196': ['Direct Evaporation Cease (soil moisture)', 'Proportion', 'SMDRY'], '197': ['Soil Porosity', 'Proportion', 'POROS'], '198': ['Direct Evaporation from Bare Soil', 'W m-2', 'EVBS'], '199': ['Land Surface Precipitation Accumulation', 'kg m-2', 'LSPA'], '200': ['Bare Soil Surface Skin temperature', 'K', 'BARET'], '201': ['Average Surface Skin Temperature', 'K', 'AVSFT'], '202': ['Effective Radiative Skin Temperature', 'K', 'RADT'], '203': ['Field Capacity', 'Fraction', 'FLDCP'], '204': ['Soil Moisture Availability In The Top Soil Layer', '%', 'MSTAV'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline2.table_4_2_2_4", "modulename": "grib2io.tables.section4_discipline2", "qualname": "table_4_2_2_4", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Fire Outlook', 'See Table 4.224', 'FIREOLK'], '1': ['Fire Outlook Due to Dry Thunderstorm', 'See Table 4.224', 'FIREODT'], '2': ['Haines Index', 'Numeric', 'HINDEX'], '3': ['Fire Burned Area', '%', 'FBAREA'], '4': ['Fosberg Index', 'Numeric', 'FOSINDX'], '5': ['Fire Weath Index (Canadian Forest Service)', 'Numeric', 'FWINX'], '6': ['Fine Fuel Moisture Code (Canadian Forest Service)', 'Numeric', 'FFMCODE'], '7': ['Duff Moisture Code (Canadian Forest Service)', 'Numeric', 'DUFMCODE'], '8': ['Drought Code (Canadian Forest Service)', 'Numeric', 'DRTCODE'], '9': ['Initial Fire Spread Index (Canadian Forest Service)', 'Numeric', 'INFSINX'], '10': ['Fire Build Up Index (Canadian Forest Service)', 'Numeric', 'FBUPINX'], '11': ['Fire Daily Severity Rating (Canadian Forest Service)', 'Numeric', 'FDSRTE'], '12': ['Keetch-Byram Drought Index', 'Numeric', 'KRIDX'], '13': ['Drought Factor (as defined by the Australian forest service)', 'Numeric', 'DRFACT'], '14': ['Rate of Spread (as defined by the Australian forest service)', 'm s-1', 'RATESPRD'], '15': ['Fire Danger index (as defined by the Australian forest service)', 'Numeric', 'FIREDIDX'], '16': ['Spread component (as defined by the US Forest Service National Fire Danger Rating System)', 'Numeric', 'SPRDCOMP'], '17': ['Burning Index (as defined by the Australian forest service)', 'Numeric', 'BURNIDX'], '18': ['Ignition Component (as defined by the Australian forest service)', '%', 'IGNCOMP'], '19': ['Energy Release Component (as defined by the Australian forest service)', 'J m-2', 'ENRELCOM'], '20': ['Burning Area', '%', 'BURNAREA'], '21': ['Burnable Area', '%', 'BURNABAREA'], '22': ['Unburnable Area', '%', 'UNBURNAREA'], '23': ['Fuel Load', 'kg m-2', 'FUELLOAD'], '24': ['Combustion Completeness', '%', 'COMBCO'], '25': ['Fuel Moisture Content', 'kg kg-1', 'FUELMC'], '26': ['Wildfire Potential (as defined by NOAA Global Systems Laboratory)', 'Numeric', 'WFIREPOT'], '27-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline2.table_4_2_2_5", "modulename": "grib2io.tables.section4_discipline2", "qualname": "table_4_2_2_5", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Glacier Cover', 'Proportion', 'GLACCOV'], '1': ['Glacier Temperature', 'K', 'GLACTMP'], '2-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline20", "modulename": "grib2io.tables.section4_discipline20", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4_discipline20.table_4_2_20_0", "modulename": "grib2io.tables.section4_discipline20", "qualname": "table_4_2_20_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Universal Thermal Climate Index', 'K', 'UTHCIDX'], '1': ['Mean Radiant Temperature', 'K', 'MEANRTMP'], '2': ['Wet-bulb Globe Temperature (see Note)', 'K', 'WETBGTMP'], '3': ['Globe Temperature (see Note)', 'K', 'GLOBETMP'], '4': ['Humidex', 'K', 'HUMIDX'], '5': ['Effective Temperature', 'K', 'EFFTEMP'], '6': ['Normal Effective Temperature', 'K', 'NOREFTMP'], '7': ['Standard Effective Temperature', 'K', 'STDEFTMP'], '8': ['Physiological Equivalent Temperature', 'K', 'PEQUTMP'], '9-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline20.table_4_2_20_1", "modulename": "grib2io.tables.section4_discipline20", "qualname": "table_4_2_20_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Malaria Cases', 'Fraction', 'MALACASE'], '1': ['Malaria Circumsporozoite Protein Rate', 'Fraction', 'MACPRATE'], '2': ['Plasmodium Falciparum Entomological Inoculation Rate', 'Bites per day per person', 'PFEIRATE'], '3': ['Human Bite Rate by Anopheles Vectors', 'Bites per day per person', 'HBRATEAV'], '4': ['Malaria Immunity', 'Fraction', 'MALAIMM'], '5': ['Falciparum Parasite Rates', 'Fraction', 'FALPRATE'], '6': ['Detectable Falciparum Parasite Ratio (after day 10)', 'Fraction', 'DFPRATIO'], '7': ['Anopheles Vector to Host Ratio', 'Fraction', 'AVHRATIO'], '8': ['Anopheles Vector Number', 'Number m-2', 'AVECTNUM'], '9': ['Fraction of Malarial Vector Reproductive Habitat', 'Fraction', 'FMALVRH'], '10-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline20.table_4_2_20_2", "modulename": "grib2io.tables.section4_discipline20", "qualname": "table_4_2_20_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Population Density', 'Person m-2', 'POPDEN'], '1-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3", "modulename": "grib2io.tables.section4_discipline3", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_0", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Scaled Radiance', 'Numeric', 'SRAD'], '1': ['Scaled Albedo', 'Numeric', 'SALBEDO'], '2': ['Scaled Brightness Temperature', 'Numeric', 'SBTMP'], '3': ['Scaled Precipitable Water', 'Numeric', 'SPWAT'], '4': ['Scaled Lifted Index', 'Numeric', 'SLFTI'], '5': ['Scaled Cloud Top Pressure', 'Numeric', 'SCTPRES'], '6': ['Scaled Skin Temperature', 'Numeric', 'SSTMP'], '7': ['Cloud Mask', 'See Table 4.217', 'CLOUDM'], '8': ['Pixel scene type', 'See Table 4.218', 'PIXST'], '9': ['Fire Detection Indicator', 'See Table 4.223', 'FIREDI'], '10-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_1", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Estimated Precipitation', 'kg m-2', 'ESTP'], '1': ['Instantaneous Rain Rate', 'kg m-2 s-1', 'IRRATE'], '2': ['Cloud Top Height', 'm', 'CTOPH'], '3': ['Cloud Top Height Quality Indicator', 'Code table 4.219', 'CTOPHQI'], '4': ['Estimated u-Component of Wind', 'm s-1', 'ESTUGRD'], '5': ['Estimated v-Component of Wind', 'm s-1', 'ESTVGRD'], '6': ['Number Of Pixels Used', 'Numeric', 'NPIXU'], '7': ['Solar Zenith Angle', '\u00b0', 'SOLZA'], '8': ['Relative Azimuth Angle', '\u00b0', 'RAZA'], '9': ['Reflectance in 0.6 Micron Channel', '%', 'RFL06'], '10': ['Reflectance in 0.8 Micron Channel', '%', 'RFL08'], '11': ['Reflectance in 1.6 Micron Channel', '%', 'RFL16'], '12': ['Reflectance in 3.9 Micron Channel', '%', 'RFL39'], '13': ['Atmospheric Divergence', 's-1', 'ATMDIV'], '14': ['Cloudy Brightness Temperature', 'K', 'CBTMP'], '15': ['Clear Sky Brightness Temperature', 'K', 'CSBTMP'], '16': ['Cloudy Radiance (with respect to wave number)', 'W m-1 sr-1', 'CLDRAD'], '17': ['Clear Sky Radiance (with respect to wave number)', 'W m-1 sr-1', 'CSKYRAD'], '18': ['Reserved', 'unknown', 'unknown'], '19': ['Wind Speed', 'm s-1', 'WINDS'], '20': ['Aerosol Optical Thickness at 0.635 \u00b5m', 'unknown', 'AOT06'], '21': ['Aerosol Optical Thickness at 0.810 \u00b5m', 'unknown', 'AOT08'], '22': ['Aerosol Optical Thickness at 1.640 \u00b5m', 'unknown', 'AOT16'], '23': ['Angstrom Coefficient', 'unknown', 'ANGCOE'], '24-26': ['Reserved', 'unknown', 'unknown'], '27': ['Bidirectional Reflecance Factor', 'Numeric', 'BRFLF'], '28': ['Brightness Temperature', 'K', 'SPBRT'], '29': ['Scaled Radiance', 'Numeric', 'SCRAD'], '30': ['Reflectance in 0.4 Micron Channel', '%', 'RFL04'], '31-97': ['Reserved', 'unknown', 'unknown'], '98': ['Correlation coefficient between MPE rain rates for the co-located IR data and the microwave data rain rates', 'Numeric', 'CCMPEMRR'], '99': ['Standard deviation between MPE rain rates for the co-located IR data and the microwave data rain rates', 'Numeric', 'SDMPEMRR'], '100-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '192': ['Scatterometer Estimated U Wind Component', 'm s-1', 'USCT'], '193': ['Scatterometer Estimated V Wind Component', 'm s-1', 'VSCT'], '194': ['Scatterometer Wind Quality', 'unknown', 'SWQI'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_2", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Clear Sky Probability', '%', 'CSKPROB'], '1': ['Cloud Top Temperature', 'K', 'CTOPTMP'], '2': ['Cloud Top Pressure', 'Pa', 'CTOPRES'], '3': ['Cloud Type', 'See Table 4.218', 'CLDTYPE'], '4': ['Cloud Phase', 'See Table 4.218', 'CLDPHAS'], '5': ['Cloud Optical Depth', 'Numeric', 'CLDODEP'], '6': ['Cloud Particle Effective Radius', 'm', 'CLDPER'], '7': ['Cloud Liquid Water Path', 'kg m-2', 'CLDLWP'], '8': ['Cloud Ice Water Path', 'kg m-2', 'CLDIWP'], '9': ['Cloud Albedo', 'Numeric', 'CLDALB'], '10': ['Cloud Emissivity', 'Numeric', 'CLDEMISS'], '11': ['Effective Absorption Optical Depth Ratio', 'Numeric', 'EAODR'], '12-29': ['Reserved', 'unknown', 'unknown'], '30': ['Measurement cost', 'Numeric', 'MEACST'], '41-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_3", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_3", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Probability of Encountering Marginal Visual Flight Rules Conditions', '%', 'PBMVFRC'], '1': ['Probability of Encountering Low Instrument Flight Rules Conditions', '%', 'PBLIFRC'], '2': ['Probability of Encountering Instrument Flight Rules Conditions', '%', 'PBINFRC'], '3-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_4", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_4", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Volcanic Ash Probability', '%', 'VOLAPROB'], '1': ['Volcanic Ash Cloud Top Temperature', 'K', 'VOLACDTT'], '2': ['Volcanic Ash Cloud Top Pressure', 'Pa', 'VOLACDTP'], '3': ['Volcanic Ash Cloud Top Height', 'm', 'VOLACDTH'], '4': ['Volcanic Ash Cloud Emissity', 'Numeric', 'VOLACDEM'], '5': ['Volcanic Ash Effective Absorption Depth Ratio', 'Numeric', 'VOLAEADR'], '6': ['Volcanic Ash Cloud Optical Depth', 'Numeric', 'VOLACDOD'], '7': ['Volcanic Ash Column Density', 'kg m-2', 'VOLACDEN'], '8': ['Volcanic Ash Particle Effective Radius', 'm', 'VOLAPER'], '9-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_5", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_5", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Interface Sea-Surface Temperature', 'K', 'ISSTMP'], '1': ['Skin Sea-Surface Temperature', 'K', 'SKSSTMP'], '2': ['Sub-Skin Sea-Surface Temperature', 'K', 'SSKSSTMP'], '3': ['Foundation Sea-Surface Temperature', 'K', 'FDNSSTMP'], '4': ['Estimated bias between Sea-Surface Temperature and Standard', 'K', 'EBSSTSTD'], '5': ['Estimated bias Standard Deviation between Sea-Surface Temperature and Standard', 'K', 'EBSDSSTS'], '6-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_6", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_6", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Global Solar Irradiance', 'W m-2', 'GSOLIRR'], '1': ['Global Solar Exposure', 'J m-2', 'GSOLEXP'], '2': ['Direct Solar Irradiance', 'W m-2', 'DIRSOLIR'], '3': ['Direct Solar Exposure', 'J m-2', 'DIRSOLEX'], '4': ['Diffuse Solar Irradiance', 'W m-2', 'DIFSOLIR'], '5': ['Diffuse Solar Exposure', 'J m-2', 'DIFSOLEX'], '6-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline3.table_4_2_3_192", "modulename": "grib2io.tables.section4_discipline3", "qualname": "table_4_2_3_192", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Simulated Brightness Temperature for GOES 12, Channel 2', 'K', 'SBT122'], '1': ['Simulated Brightness Temperature for GOES 12, Channel 3', 'K', 'SBT123'], '2': ['Simulated Brightness Temperature for GOES 12, Channel 4', 'K', 'SBT124'], '3': ['Simulated Brightness Temperature for GOES 12, Channel 6', 'K', 'SBT126'], '4': ['Simulated Brightness Counts for GOES 12, Channel 3', 'Byte', 'SBC123'], '5': ['Simulated Brightness Counts for GOES 12, Channel 4', 'Byte', 'SBC124'], '6': ['Simulated Brightness Temperature for GOES 11, Channel 2', 'K', 'SBT112'], '7': ['Simulated Brightness Temperature for GOES 11, Channel 3', 'K', 'SBT113'], '8': ['Simulated Brightness Temperature for GOES 11, Channel 4', 'K', 'SBT114'], '9': ['Simulated Brightness Temperature for GOES 11, Channel 5', 'K', 'SBT115'], '10': ['Simulated Brightness Temperature for AMSRE on Aqua, Channel 9', 'K', 'AMSRE9'], '11': ['Simulated Brightness Temperature for AMSRE on Aqua, Channel 10', 'K', 'AMSRE10'], '12': ['Simulated Brightness Temperature for AMSRE on Aqua, Channel 11', 'K', 'AMSRE11'], '13': ['Simulated Brightness Temperature for AMSRE on Aqua, Channel 12', 'K', 'AMSRE12'], '14': ['Simulated Reflectance Factor for ABI GOES-16, Band-1', 'unknown', 'SRFA161'], '15': ['Simulated Reflectance Factor for ABI GOES-16, Band-2', 'unknown', 'SRFA162'], '16': ['Simulated Reflectance Factor for ABI GOES-16, Band-3', 'unknown', 'SRFA163'], '17': ['Simulated Reflectance Factor for ABI GOES-16, Band-4', 'unknown', 'SRFA164'], '18': ['Simulated Reflectance Factor for ABI GOES-16, Band-5', 'unknown', 'SRFA165'], '19': ['Simulated Reflectance Factor for ABI GOES-16, Band-6', 'unknown', 'SRFA166'], '20': ['Simulated Brightness Temperature for ABI GOES-16, Band-7', 'K', 'SBTA167'], '21': ['Simulated Brightness Temperature for ABI GOES-16, Band-8', 'K', 'SBTA168'], '22': ['Simulated Brightness Temperature for ABI GOES-16, Band-9', 'K', 'SBTA169'], '23': ['Simulated Brightness Temperature for ABI GOES-16, Band-10', 'K', 'SBTA1610'], '24': ['Simulated Brightness Temperature for ABI GOES-16, Band-11', 'K', 'SBTA1611'], '25': ['Simulated Brightness Temperature for ABI GOES-16, Band-12', 'K', 'SBTA1612'], '26': ['Simulated Brightness Temperature for ABI GOES-16, Band-13', 'K', 'SBTA1613'], '27': ['Simulated Brightness Temperature for ABI GOES-16, Band-14', 'K', 'SBTA1614'], '28': ['Simulated Brightness Temperature for ABI GOES-16, Band-15', 'K', 'SBTA1615'], '29': ['Simulated Brightness Temperature for ABI GOES-16, Band-16', 'K', 'SBTA1616'], '30': ['Simulated Reflectance Factor for ABI GOES-17, Band-1', 'unknown', 'SRFA171'], '31': ['Simulated Reflectance Factor for ABI GOES-17, Band-2', 'unknown', 'SRFA172'], '32': ['Simulated Reflectance Factor for ABI GOES-17, Band-3', 'unknown', 'SRFA173'], '33': ['Simulated Reflectance Factor for ABI GOES-17, Band-4', 'unknown', 'SRFA174'], '34': ['Simulated Reflectance Factor for ABI GOES-17, Band-5', 'unknown', 'SRFA175'], '35': ['Simulated Reflectance Factor for ABI GOES-17, Band-6', 'unknown', 'SRFA176'], '36': ['Simulated Brightness Temperature for ABI GOES-17, Band-7', 'K', 'SBTA177'], '37': ['Simulated Brightness Temperature for ABI GOES-17, Band-8', 'K', 'SBTA178'], '38': ['Simulated Brightness Temperature for ABI GOES-17, Band-9', 'K', 'SBTA179'], '39': ['Simulated Brightness Temperature for ABI GOES-17, Band-10', 'K', 'SBTA1710'], '40': ['Simulated Brightness Temperature for ABI GOES-17, Band-11', 'K', 'SBTA1711'], '41': ['Simulated Brightness Temperature for ABI GOES-17, Band-12', 'K', 'SBTA1712'], '42': ['Simulated Brightness Temperature for ABI GOES-17, Band-13', 'K', 'SBTA1713'], '43': ['Simulated Brightness Temperature for ABI GOES-17, Band-14', 'K', 'SBTA1714'], '44': ['Simulated Brightness Temperature for ABI GOES-17, Band-15', 'K', 'SBTA1715'], '45': ['Simulated Brightness Temperature for ABI GOES-17, Band-16', 'K', 'SBTA1716'], '46': ['Simulated Reflectance Factor for nadir ABI GOES-R, Band-1', 'unknown', 'SRFAGR1'], '47': ['Simulated Reflectance Factor for nadir ABI GOES-R, Band-2', 'unknown', 'SRFAGR2'], '48': ['Simulated Reflectance Factor for nadir ABI GOES-R, Band-3', 'unknown', 'SRFAGR3'], '49': ['Simulated Reflectance Factor for nadir ABI GOES-R, Band-4', 'unknown', 'SRFAGR4'], '50': ['Simulated Reflectance Factor for nadir ABI GOES-R, Band-5', 'unknown', 'SRFAGR5'], '51': ['Simulated Reflectance Factor for nadir ABI GOES-R, Band-6', 'unknown', 'SRFAGR6'], '52': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-7', 'unknown', 'SBTAGR7'], '53': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-8', 'unknown', 'SBTAGR8'], '54': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-9', 'unknown', 'SBTAGR9'], '55': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-10', 'unknown', 'SBTAGR10'], '56': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-11', 'unknown', 'SBTAGR11'], '57': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-12', 'unknown', 'SBTAGR12'], '58': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-13', 'unknown', 'SBTAGR13'], '59': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-14', 'unknown', 'SBTAGR14'], '60': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-15', 'unknown', 'SBTAGR15'], '61': ['Simulated Brightness Temperature for nadir ABI GOES-R, Band-16', 'unknown', 'SBTAGR16'], '62': ['Simulated Brightness Temperature for SSMIS-F17, Channel 15', 'K', 'SSMS1715'], '63': ['Simulated Brightness Temperature for SSMIS-F17, Channel 16', 'K', 'SSMS1716'], '64': ['Simulated Brightness Temperature for SSMIS-F17, Channel 17', 'K', 'SSMS1717'], '65': ['Simulated Brightness Temperature for SSMIS-F17, Channel 18', 'K', 'SSMS1718'], '66': ['Simulated Brightness Temperature for Himawari-8, Band-7', 'K', 'SBTAHI7'], '67': ['Simulated Brightness Temperature for Himawari-8, Band-8', 'K', 'SBTAHI8'], '68': ['Simulated Brightness Temperature for Himawari-8, Band-9', 'K', 'SBTAHI9'], '69': ['Simulated Brightness Temperature for Himawari-8, Band-10', 'K', 'SBTAHI10'], '70': ['Simulated Brightness Temperature for Himawari-8, Band-11', 'K', 'SBTAHI11'], '71': ['Simulated Brightness Temperature for Himawari-8, Band-12', 'K', 'SBTAHI12'], '72': ['Simulated Brightness Temperature for Himawari-8, Band-13', 'K', 'SBTAHI13'], '73': ['Simulated Brightness Temperature for Himawari-8, Band-14', 'K', 'SBTAHI14'], '74': ['Simulated Brightness Temperature for Himawari-8, Band-15', 'K', 'SBTAHI15'], '75': ['Simulated Brightness Temperature for Himawari-8, Band-16', 'K', 'SBTAHI16'], '76': ['Simulated Brightness Temperature for ABI GOES-18, Band-7', 'K', 'SBTA187'], '77': ['Simulated Brightness Temperature for ABI GOES-18, Band-8', 'K', 'SBTA188'], '78': ['Simulated Brightness Temperature for ABI GOES-18, Band-9', 'K', 'SBTA189'], '79': ['Simulated Brightness Temperature for ABI GOES-18, Band-10', 'K', 'SBTA1810'], '80': ['Simulated Brightness Temperature for ABI GOES-18, Band-11', 'K', 'SBTA1811'], '81': ['Simulated Brightness Temperature for ABI GOES-18, Band-12', 'K', 'SBTA1812'], '82': ['Simulated Brightness Temperature for ABI GOES-18, Band-13', 'K', 'SBTA1813'], '83': ['Simulated Brightness Temperature for ABI GOES-18, Band-14', 'K', 'SBTA1814'], '84': ['Simulated Brightness Temperature for ABI GOES-18, Band-15', 'K', 'SBTA1815'], '85': ['Simulated Brightness Temperature for ABI GOES-18, Band-16', 'K', 'SBTA1816'], '86-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4", "modulename": "grib2io.tables.section4_discipline4", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_0", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Temperature', 'K', 'TMPSWP'], '1': ['Electron Temperature', 'K', 'ELECTMP'], '2': ['Proton Temperature', 'K', 'PROTTMP'], '3': ['Ion Temperature', 'K', 'IONTMP'], '4': ['Parallel Temperature', 'K', 'PRATMP'], '5': ['Perpendicular Temperature', 'K', 'PRPTMP'], '6-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_1", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Velocity Magnitude (Speed)', 'm s-1', 'SPEED'], '1': ['1st Vector Component of Velocity (Coordinate system dependent)', 'm s-1', 'VEL1'], '2': ['2nd Vector Component of Velocity (Coordinate system dependent)', 'm s-1', 'VEL2'], '3': ['3rd Vector Component of Velocity (Coordinate system dependent)', 'm s-1', 'VEL3'], '4-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_2", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Particle Number Density', 'm-3', 'PLSMDEN'], '1': ['Electron Density', 'm-3', 'ELCDEN'], '2': ['Proton Density', 'm-3', 'PROTDEN'], '3': ['Ion Density', 'm-3', 'IONDEN'], '4': ['Vertical Total Electron Content', 'TECU', 'VTEC'], '5': ['HF Absorption Frequency', 'Hz', 'ABSFRQ'], '6': ['HF Absorption', 'dB', 'ABSRB'], '7': ['Spread F', 'm', 'SPRDF'], '8': ['hF', 'm', 'HPRIMF'], '9': ['Critical Frequency', 'Hz', 'CRTFRQ'], '10': ['Maximal Usable Frequency (MUF)', 'Hz', 'MAXUFZ'], '11': ['Peak Height (hm)', 'm', 'PEAKH'], '12': ['Peak Density', 'm-3', 'PEAKDEN'], '13': ['Equivalent Slab Thickness (tau)', 'km', 'EQSLABT'], '14-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_3", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_3", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Magnetic Field Magnitude', 'T', 'BTOT'], '1': ['1st Vector Component of Magnetic Field', 'T', 'BVEC1'], '2': ['2nd Vector Component of Magnetic Field', 'T', 'BVEC2'], '3': ['3rd Vector Component of Magnetic Field', 'T', 'BVEC3'], '4': ['Electric Field Magnitude', 'V m-1', 'ETOT'], '5': ['1st Vector Component of Electric Field', 'V m-1', 'EVEC1'], '6': ['2nd Vector Component of Electric Field', 'V m-1', 'EVEC2'], '7': ['3rd Vector Component of Electric Field', 'V m-1', 'EVEC3'], '8-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_4", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_4", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Proton Flux (Differential)', '(m2 s sr eV)-1', 'DIFPFLUX'], '1': ['Proton Flux (Integral)', '(m2 s sr)-1', 'INTPFLUX'], '2': ['Electron Flux (Differential)', '(m2 s sr eV)-1', 'DIFEFLUX'], '3': ['Electron Flux (Integral)', '(m2 s sr)-1', 'INTEFLUX'], '4': ['Heavy Ion Flux (Differential)', '(m2 s sr eV / nuc)-1', 'DIFIFLUX'], '5': ['Heavy Ion Flux (iIntegral)', '(m2 s sr)-1', 'INTIFLUX'], '6': ['Cosmic Ray Neutron Flux', 'h-1', 'NTRNFLUX'], '7-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_5", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_5", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Amplitude', 'rad', 'AMPL'], '1': ['Phase', 'rad', 'PHASE'], '2': ['Frequency', 'Hz', 'FREQ'], '3': ['Wavelength', 'm', 'WAVELGTH'], '4-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_6", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_6", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Integrated Solar Irradiance', 'W m-2', 'TSI'], '1': ['Solar X-ray Flux (XRS Long)', 'W m-2', 'XLONG'], '2': ['Solar X-ray Flux (XRS Short)', 'W m-2', 'XSHRT'], '3': ['Solar EUV Irradiance', 'W m-2', 'EUVIRR'], '4': ['Solar Spectral Irradiance', 'W m-2 nm-1', 'SPECIRR'], '5': ['F10.7', 'W m-2 Hz-1', 'F107'], '6': ['Solar Radio Emissions', 'W m-2 Hz-1', 'SOLRF'], '7-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_7", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_7", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Limb Intensity', 'J m-2 s-1', 'LMBINT'], '1': ['Disk Intensity', 'J m-2 s-1', 'DSKINT'], '2': ['Disk Intensity Day', 'J m-2 s-1', 'DSKDAY'], '3': ['Disk Intensity Night', 'J m-2 s-1', 'DSKNGT'], '4-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_8", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_8", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['X-Ray Radiance', 'W sr-1 m-2', 'XRAYRAD'], '1': ['EUV Radiance', 'W sr-1 m-2', 'EUVRAD'], '2': ['H-Alpha Radiance', 'W sr-1 m-2', 'HARAD'], '3': ['White Light Radiance', 'W sr-1 m-2', 'WHTRAD'], '4': ['CaII-K Radiance', 'W sr-1 m-2', 'CAIIRAD'], '5': ['White Light Coronagraph Radiance', 'W sr-1 m-2', 'WHTCOR'], '6': ['Heliospheric Radiance', 'W sr-1 m-2', 'HELCOR'], '7': ['Thematic Mask', 'Numeric', 'MASK'], '8': ['Solar Induced Chlorophyll Fluorscence', 'W sr-1 m-2', 'SICFL'], '9-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section4_discipline4.table_4_2_4_9", "modulename": "grib2io.tables.section4_discipline4", "qualname": "table_4_2_4_9", "kind": "variable", "doc": "

    \n", "default_value": "{'0': ['Pedersen Conductivity', 'S m-1', 'SIGPED'], '1': ['Hall Conductivity', 'S m-1', 'SIGHAL'], '2': ['Parallel Conductivity', 'S m-1', 'SIGPAR'], '3-191': ['Reserved', 'unknown', 'unknown'], '192-254': ['Reserved for Local Use', 'unknown', 'unknown'], '255': ['Missing', 'unknown', 'unknown']}"}, {"fullname": "grib2io.tables.section5", "modulename": "grib2io.tables.section5", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section5.table_5_0", "modulename": "grib2io.tables.section5", "qualname": "table_5_0", "kind": "variable", "doc": "

    \n", "default_value": "{'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 - JPEG 2000 code stream format (see Template 5.40)', '41': 'Grid point data - Portable Network Graphics (PNG) (see Template 5.41)', '42': 'Grid point data - CCSDS recommended lossless compression (see Template 5.42)', '43-49': 'Reserved', '50': 'Spectral Data - Simple Packing (see Template 5.50)', '51': 'Spectral Data - Complex Packing (see Template 5.51)', '52': 'Reserved', '53': 'Spectral data for limited area models - complex packing (see Template 5.53)', '54-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': 'Reserved', '49152-65534': 'Reserved for Local Use', '65535': 'Missing'}"}, {"fullname": "grib2io.tables.section5.table_5_1", "modulename": "grib2io.tables.section5", "qualname": "table_5_1", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Floating Point', '1': 'Integer', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section5.table_5_2", "modulename": "grib2io.tables.section5", "qualname": "table_5_2", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Explicit Coordinate Values Set', '1': 'Linear Coordinates f(1) = C1 f(n) = f(n-1) + C2', '2-10': 'Reserved', '11': 'Geometric Coordinates f(1) = C1 f(n) = C2 x f(n-1)', '12-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section5.table_5_3", "modulename": "grib2io.tables.section5", "qualname": "table_5_3", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'Direction Degrees True', '2': 'Frequency (s-1)', '3': 'Radial Number (2pi/lamda) (m-1)', '4-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section5.table_5_4", "modulename": "grib2io.tables.section5", "qualname": "table_5_4", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Row by Row Splitting', '1': 'General Group Splitting', '2-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section5.table_5_5", "modulename": "grib2io.tables.section5", "qualname": "table_5_5", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'No explicit missing values included within the data values', '1': 'Primary missing values included within the data values', '2': 'Primary and secondary missing values included within the data values', '3-191': 'Reserved', '192-254': 'Reserved for Local Use'}"}, {"fullname": "grib2io.tables.section5.table_5_6", "modulename": "grib2io.tables.section5", "qualname": "table_5_6", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'First-Order Spatial Differencing', '2': 'Second-Order Spatial Differencing', '3-191': 'Reserved', '192-254': 'Reserved for Local Use', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section5.table_5_7", "modulename": "grib2io.tables.section5", "qualname": "table_5_7", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Reserved', '1': 'IEEE 32-bit (I=4 in Section 7)', '2': 'IEEE 64-bit (I=8 in Section 7)', '3': 'IEEE 128-bit (I=16 in Section 7)', '4-254': 'Reserved', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section5.table_5_40", "modulename": "grib2io.tables.section5", "qualname": "table_5_40", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'Lossless', '1': 'Lossy', '2-254': 'Reserved', '255': 'Missing'}"}, {"fullname": "grib2io.tables.section6", "modulename": "grib2io.tables.section6", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.tables.section6.table_6_0", "modulename": "grib2io.tables.section6", "qualname": "table_6_0", "kind": "variable", "doc": "

    \n", "default_value": "{'0': 'A bit map applies to this product and is specified in this section.', '1-253': 'A bit map pre-determined by the orginating/generating center applies to this product and is not specified in this section.', '254': 'A bit map previously defined in the same GRIB2 message applies to this product.', '255': 'A bit map does not apply to this product.'}"}, {"fullname": "grib2io.templates", "modulename": "grib2io.templates", "kind": "module", "doc": "

    \n"}, {"fullname": "grib2io.templates.Grib2Metadata", "modulename": "grib2io.templates", "qualname": "Grib2Metadata", "kind": "class", "doc": "

    Class to hold GRIB2 metadata both as numeric code value as stored in\nGRIB2 and its plain langauge definition.

    \n\n

    value : int

    \n\n

    GRIB2 metadata integer code value.

    \n\n

    table : str, optional

    \n\n

    GRIB2 table to lookup the value. Default is None.

    \n"}, {"fullname": "grib2io.templates.Grib2Metadata.__init__", "modulename": "grib2io.templates", "qualname": "Grib2Metadata.__init__", "kind": "function", "doc": "

    \n", "signature": "(value, table=None)"}, {"fullname": "grib2io.templates.Grib2Metadata.value", "modulename": "grib2io.templates", "qualname": "Grib2Metadata.value", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.templates.Grib2Metadata.table", "modulename": "grib2io.templates", "qualname": "Grib2Metadata.table", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.templates.Grib2Metadata.definition", "modulename": "grib2io.templates", "qualname": "Grib2Metadata.definition", "kind": "variable", "doc": "

    \n"}, {"fullname": "grib2io.templates.IndicatorSection", "modulename": "grib2io.templates", "qualname": "IndicatorSection", "kind": "class", "doc": "

    GRIB2 Section 0, Indicator Section

    \n"}, {"fullname": "grib2io.templates.Discipline", "modulename": "grib2io.templates", "qualname": "Discipline", "kind": "class", "doc": "

    Discipline From Table 0.0

    \n"}, {"fullname": "grib2io.templates.IdentificationSection", "modulename": "grib2io.templates", "qualname": "IdentificationSection", "kind": "class", "doc": "

    GRIB2 Section 1, Identification Section

    \n"}, {"fullname": "grib2io.templates.OriginatingCenter", "modulename": "grib2io.templates", "qualname": "OriginatingCenter", "kind": "class", "doc": "

    Identification of originating/generating center\n(See Table 0)

    \n"}, {"fullname": "grib2io.templates.OriginatingSubCenter", "modulename": "grib2io.templates", "qualname": "OriginatingSubCenter", "kind": "class", "doc": "

    Identification of originating/generating subcenter\n(See Table C)

    \n"}, {"fullname": "grib2io.templates.MasterTableInfo", "modulename": "grib2io.templates", "qualname": "MasterTableInfo", "kind": "class", "doc": "

    GRIB master tables version number (currently 2)\n(See Table 1.0)

    \n"}, {"fullname": "grib2io.templates.LocalTableInfo", "modulename": "grib2io.templates", "qualname": "LocalTableInfo", "kind": "class", "doc": "

    Version number of GRIB local tables used to augment Master Tables\n(See Table 1.1)

    \n"}, {"fullname": "grib2io.templates.SignificanceOfReferenceTime", "modulename": "grib2io.templates", "qualname": "SignificanceOfReferenceTime", "kind": "class", "doc": "

    Significance of reference time (See Table 1.2)

    \n"}, {"fullname": "grib2io.templates.Year", "modulename": "grib2io.templates", "qualname": "Year", "kind": "class", "doc": "

    Year of reference time

    \n"}, {"fullname": "grib2io.templates.Month", "modulename": "grib2io.templates", "qualname": "Month", "kind": "class", "doc": "

    Month of reference time

    \n"}, {"fullname": "grib2io.templates.Day", "modulename": "grib2io.templates", "qualname": "Day", "kind": "class", "doc": "

    Day of reference time

    \n"}, {"fullname": "grib2io.templates.Hour", "modulename": "grib2io.templates", "qualname": "Hour", "kind": "class", "doc": "

    Hour of reference time

    \n"}, {"fullname": "grib2io.templates.Minute", "modulename": "grib2io.templates", "qualname": "Minute", "kind": "class", "doc": "

    Minute of reference time

    \n"}, {"fullname": "grib2io.templates.Second", "modulename": "grib2io.templates", "qualname": "Second", "kind": "class", "doc": "

    Second of reference time

    \n"}, {"fullname": "grib2io.templates.RefDate", "modulename": "grib2io.templates", "qualname": "RefDate", "kind": "class", "doc": "

    Reference date as a datetime.datetime object

    \n"}, {"fullname": "grib2io.templates.ProductionStatus", "modulename": "grib2io.templates", "qualname": "ProductionStatus", "kind": "class", "doc": "

    Production Status of Processed data in the GRIB message\n(See Table 1.3)

    \n"}, {"fullname": "grib2io.templates.TypeOfData", "modulename": "grib2io.templates", "qualname": "TypeOfData", "kind": "class", "doc": "

    Type of processed data in this GRIB message\n(See Table 1.4)

    \n"}, {"fullname": "grib2io.templates.GridDefinitionSection", "modulename": "grib2io.templates", "qualname": "GridDefinitionSection", "kind": "class", "doc": "

    GRIB2 Section 3, Grid Definition Section

    \n"}, {"fullname": "grib2io.templates.SourceOfGridDefinition", "modulename": "grib2io.templates", "qualname": "SourceOfGridDefinition", "kind": "class", "doc": "

    Source of grid definition\n[(See Table 3.0)](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-0.shtml

    \n"}, {"fullname": "grib2io.templates.NumberOfDataPoints", "modulename": "grib2io.templates", "qualname": "NumberOfDataPoints", "kind": "class", "doc": "

    Number of Data Points

    \n"}, {"fullname": "grib2io.templates.InterpretationOfListOfNumbers", "modulename": "grib2io.templates", "qualname": "InterpretationOfListOfNumbers", "kind": "class", "doc": "

    Interpretation of List of Numbers

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplateNumber", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplateNumber", "kind": "class", "doc": "

    Grid definition template number\n[(See Table 3.1)](https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/grib2_table3-1.shtml

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate", "kind": "class", "doc": "

    Grid definition template

    \n"}, {"fullname": "grib2io.templates.EarthParams", "modulename": "grib2io.templates", "qualname": "EarthParams", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DxSign", "modulename": "grib2io.templates", "qualname": "DxSign", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DySign", "modulename": "grib2io.templates", "qualname": "DySign", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LLScaleFactor", "modulename": "grib2io.templates", "qualname": "LLScaleFactor", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LLDivisor", "modulename": "grib2io.templates", "qualname": "LLDivisor", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.XYDivisor", "modulename": "grib2io.templates", "qualname": "XYDivisor", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ShapeOfEarth", "modulename": "grib2io.templates", "qualname": "ShapeOfEarth", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.EarthShape", "modulename": "grib2io.templates", "qualname": "EarthShape", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.EarthRadius", "modulename": "grib2io.templates", "qualname": "EarthRadius", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.EarthMajorAxis", "modulename": "grib2io.templates", "qualname": "EarthMajorAxis", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.EarthMinorAxis", "modulename": "grib2io.templates", "qualname": "EarthMinorAxis", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.Nx", "modulename": "grib2io.templates", "qualname": "Nx", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.Ny", "modulename": "grib2io.templates", "qualname": "Ny", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScanModeFlags", "modulename": "grib2io.templates", "qualname": "ScanModeFlags", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ResolutionAndComponentFlags", "modulename": "grib2io.templates", "qualname": "ResolutionAndComponentFlags", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LatitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "LatitudeFirstGridpoint", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LongitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "LongitudeFirstGridpoint", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LatitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "LatitudeLastGridpoint", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LongitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "LongitudeLastGridpoint", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LatitudeCenterGridpoint", "modulename": "grib2io.templates", "qualname": "LatitudeCenterGridpoint", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LongitudeCenterGridpoint", "modulename": "grib2io.templates", "qualname": "LongitudeCenterGridpoint", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridlengthXDirection", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridlengthYDirection", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LatitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "LatitudeSouthernPole", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LongitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "LongitudeSouthernPole", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.AnglePoleRotation", "modulename": "grib2io.templates", "qualname": "AnglePoleRotation", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LatitudeTrueScale", "modulename": "grib2io.templates", "qualname": "LatitudeTrueScale", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridOrientation", "modulename": "grib2io.templates", "qualname": "GridOrientation", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ProjectionCenterFlag", "modulename": "grib2io.templates", "qualname": "ProjectionCenterFlag", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.StandardLatitude1", "modulename": "grib2io.templates", "qualname": "StandardLatitude1", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.StandardLatitude2", "modulename": "grib2io.templates", "qualname": "StandardLatitude2", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.SpectralFunctionParameters", "modulename": "grib2io.templates", "qualname": "SpectralFunctionParameters", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ProjParameters", "modulename": "grib2io.templates", "qualname": "ProjParameters", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate0", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate0", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate0.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate0.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate0.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate0.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate0.latitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate0.latitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate0.longitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate0.longitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate0.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate0.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate0.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate0.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.latitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.latitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.longitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.longitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.latitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.latitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.longitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.longitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate1.anglePoleRotation", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate1.anglePoleRotation", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.latitudeTrueScale", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.latitudeTrueScale", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.latitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.latitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.longitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.longitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.gridOrientation", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.gridOrientation", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate10.projParameters", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate10.projParameters", "kind": "variable", "doc": "

    \n", "annotation": ": dict"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.latitudeTrueScale", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.latitudeTrueScale", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.gridOrientation", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.gridOrientation", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.projectionCenterFlag", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.projectionCenterFlag", "kind": "variable", "doc": "

    \n", "annotation": ": list"}, {"fullname": "grib2io.templates.GridDefinitionTemplate20.projParameters", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate20.projParameters", "kind": "variable", "doc": "

    \n", "annotation": ": dict"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.latitudeTrueScale", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.latitudeTrueScale", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.gridOrientation", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.gridOrientation", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.projectionCenterFlag", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.projectionCenterFlag", "kind": "variable", "doc": "

    \n", "annotation": ": list"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.standardLatitude1", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.standardLatitude1", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.standardLatitude2", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.standardLatitude2", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.latitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.latitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.longitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.longitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate30.projParameters", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate30.projParameters", "kind": "variable", "doc": "

    \n", "annotation": ": dict"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.latitudeTrueScale", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.latitudeTrueScale", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.gridOrientation", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.gridOrientation", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.projectionCenterFlag", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.projectionCenterFlag", "kind": "variable", "doc": "

    \n", "annotation": ": list"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.standardLatitude1", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.standardLatitude1", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.standardLatitude2", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.standardLatitude2", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.latitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.latitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate31.longitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate31.longitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate40", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate40", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate40.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate40.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate40.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate40.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate40.latitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate40.latitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate40.longitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate40.longitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate40.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate40.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate40.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate40.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.latitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.latitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.longitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.longitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.latitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.latitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.longitudeSouthernPole", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.longitudeSouthernPole", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate41.anglePoleRotation", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate41.anglePoleRotation", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate50", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate50", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate50.spectralFunctionParameters", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate50.spectralFunctionParameters", "kind": "variable", "doc": "

    \n", "annotation": ": list"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32768", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32768", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32768.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32768.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32768.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32768.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32768.latitudeCenterGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32768.latitudeCenterGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32768.longitudeCenterGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32768.longitudeCenterGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32768.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32768.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32768.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32768.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32769", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32769", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32769.latitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32769.latitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32769.longitudeFirstGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32769.longitudeFirstGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32769.latitudeCenterGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32769.latitudeCenterGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32769.longitudeCenterGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32769.longitudeCenterGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32769.gridlengthXDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32769.gridlengthXDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32769.gridlengthYDirection", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32769.gridlengthYDirection", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32769.latitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32769.latitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.GridDefinitionTemplate32769.longitudeLastGridpoint", "modulename": "grib2io.templates", "qualname": "GridDefinitionTemplate32769.longitudeLastGridpoint", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.gdt_class_by_gdtn", "modulename": "grib2io.templates", "qualname": "gdt_class_by_gdtn", "kind": "function", "doc": "

    \n", "signature": "(gdtn):", "funcdef": "def"}, {"fullname": "grib2io.templates.ProductDefinitionTemplateNumber", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplateNumber", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ParameterCategory", "modulename": "grib2io.templates", "qualname": "ParameterCategory", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ParameterNumber", "modulename": "grib2io.templates", "qualname": "ParameterNumber", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.VarInfo", "modulename": "grib2io.templates", "qualname": "VarInfo", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.FullName", "modulename": "grib2io.templates", "qualname": "FullName", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.Units", "modulename": "grib2io.templates", "qualname": "Units", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ShortName", "modulename": "grib2io.templates", "qualname": "ShortName", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfGeneratingProcess", "modulename": "grib2io.templates", "qualname": "TypeOfGeneratingProcess", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.BackgroundGeneratingProcessIdentifier", "modulename": "grib2io.templates", "qualname": "BackgroundGeneratingProcessIdentifier", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GeneratingProcess", "modulename": "grib2io.templates", "qualname": "GeneratingProcess", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.HoursAfterDataCutoff", "modulename": "grib2io.templates", "qualname": "HoursAfterDataCutoff", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.MinutesAfterDataCutoff", "modulename": "grib2io.templates", "qualname": "MinutesAfterDataCutoff", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.UnitOfForecastTime", "modulename": "grib2io.templates", "qualname": "UnitOfForecastTime", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ValueOfForecastTime", "modulename": "grib2io.templates", "qualname": "ValueOfForecastTime", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LeadTime", "modulename": "grib2io.templates", "qualname": "LeadTime", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.FixedSfc1Info", "modulename": "grib2io.templates", "qualname": "FixedSfc1Info", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.FixedSfc2Info", "modulename": "grib2io.templates", "qualname": "FixedSfc2Info", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "TypeOfFirstFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfFirstFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "ScaledValueOfFirstFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.UnitOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "UnitOfFirstFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ValueOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "ValueOfFirstFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "TypeOfSecondFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfSecondFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "ScaledValueOfSecondFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.UnitOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "UnitOfSecondFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ValueOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "ValueOfSecondFixedSurface", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.Level", "modulename": "grib2io.templates", "qualname": "Level", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfEnsembleForecast", "modulename": "grib2io.templates", "qualname": "TypeOfEnsembleForecast", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.PerturbationNumber", "modulename": "grib2io.templates", "qualname": "PerturbationNumber", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NumberOfEnsembleForecasts", "modulename": "grib2io.templates", "qualname": "NumberOfEnsembleForecasts", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfDerivedForecast", "modulename": "grib2io.templates", "qualname": "TypeOfDerivedForecast", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ForecastProbabilityNumber", "modulename": "grib2io.templates", "qualname": "ForecastProbabilityNumber", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TotalNumberOfForecastProbabilities", "modulename": "grib2io.templates", "qualname": "TotalNumberOfForecastProbabilities", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfProbability", "modulename": "grib2io.templates", "qualname": "TypeOfProbability", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfThresholdLowerLimit", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfThresholdLowerLimit", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfThresholdLowerLimit", "modulename": "grib2io.templates", "qualname": "ScaledValueOfThresholdLowerLimit", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfThresholdUpperLimit", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfThresholdUpperLimit", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfThresholdUpperLimit", "modulename": "grib2io.templates", "qualname": "ScaledValueOfThresholdUpperLimit", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ThresholdLowerLimit", "modulename": "grib2io.templates", "qualname": "ThresholdLowerLimit", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ThresholdUpperLimit", "modulename": "grib2io.templates", "qualname": "ThresholdUpperLimit", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.Threshold", "modulename": "grib2io.templates", "qualname": "Threshold", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.PercentileValue", "modulename": "grib2io.templates", "qualname": "PercentileValue", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.YearOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "YearOfEndOfTimePeriod", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.MonthOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "MonthOfEndOfTimePeriod", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DayOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "DayOfEndOfTimePeriod", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.HourOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "HourOfEndOfTimePeriod", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.MinuteOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "MinuteOfEndOfTimePeriod", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.SecondOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "SecondOfEndOfTimePeriod", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.Duration", "modulename": "grib2io.templates", "qualname": "Duration", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ValidDate", "modulename": "grib2io.templates", "qualname": "ValidDate", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NumberOfTimeRanges", "modulename": "grib2io.templates", "qualname": "NumberOfTimeRanges", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NumberOfMissingValues", "modulename": "grib2io.templates", "qualname": "NumberOfMissingValues", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.StatisticalProcess", "modulename": "grib2io.templates", "qualname": "StatisticalProcess", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfTimeIncrementOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "TypeOfTimeIncrementOfStatisticalProcess", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.UnitOfTimeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "UnitOfTimeRangeOfStatisticalProcess", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TimeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "TimeRangeOfStatisticalProcess", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.UnitOfTimeRangeOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "UnitOfTimeRangeOfSuccessiveFields", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TimeIncrementOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "TimeIncrementOfSuccessiveFields", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfStatisticalProcessing", "modulename": "grib2io.templates", "qualname": "TypeOfStatisticalProcessing", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NumberOfDataPointsForSpatialProcessing", "modulename": "grib2io.templates", "qualname": "NumberOfDataPointsForSpatialProcessing", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfAerosol", "modulename": "grib2io.templates", "qualname": "TypeOfAerosol", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfIntervalForAerosolSize", "modulename": "grib2io.templates", "qualname": "TypeOfIntervalForAerosolSize", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfFirstSize", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfFirstSize", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfFirstSize", "modulename": "grib2io.templates", "qualname": "ScaledValueOfFirstSize", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfSecondSize", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfSecondSize", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfSecondSize", "modulename": "grib2io.templates", "qualname": "ScaledValueOfSecondSize", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfIntervalForAerosolWavelength", "modulename": "grib2io.templates", "qualname": "TypeOfIntervalForAerosolWavelength", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfFirstWavelength", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfFirstWavelength", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfFirstWavelength", "modulename": "grib2io.templates", "qualname": "ScaledValueOfFirstWavelength", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaleFactorOfSecondWavelength", "modulename": "grib2io.templates", "qualname": "ScaleFactorOfSecondWavelength", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ScaledValueOfSecondWavelength", "modulename": "grib2io.templates", "qualname": "ScaledValueOfSecondWavelength", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.parameterCategory", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.parameterCategory", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.parameterNumber", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.parameterNumber", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.typeOfGeneratingProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.typeOfGeneratingProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.generatingProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.generatingProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.backgroundGeneratingProcessIdentifier", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.backgroundGeneratingProcessIdentifier", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.hoursAfterDataCutoff", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.hoursAfterDataCutoff", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.minutesAfterDataCutoff", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.minutesAfterDataCutoff", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.unitOfForecastTime", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.unitOfForecastTime", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.valueOfForecastTime", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.valueOfForecastTime", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.typeOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.typeOfFirstFixedSurface", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.scaleFactorOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.scaleFactorOfFirstFixedSurface", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.scaledValueOfFirstFixedSurface", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.scaledValueOfFirstFixedSurface", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.typeOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.typeOfSecondFixedSurface", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.scaleFactorOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.scaleFactorOfSecondFixedSurface", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate0.scaledValueOfSecondFixedSurface", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate0.scaledValueOfSecondFixedSurface", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate1", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate1", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate1.typeOfEnsembleForecast", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate1.typeOfEnsembleForecast", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate1.perturbationNumber", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate1.perturbationNumber", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate1.numberOfEnsembleForecasts", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate1.numberOfEnsembleForecasts", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate2", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate2", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate2.typeOfDerivedForecast", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate2.typeOfDerivedForecast", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate2.numberOfEnsembleForecasts", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate2.numberOfEnsembleForecasts", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.forecastProbabilityNumber", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.forecastProbabilityNumber", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.totalNumberOfForecastProbabilities", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.totalNumberOfForecastProbabilities", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.typeOfProbability", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.typeOfProbability", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.scaleFactorOfThresholdLowerLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.scaleFactorOfThresholdLowerLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.scaledValueOfThresholdLowerLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.scaledValueOfThresholdLowerLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.scaleFactorOfThresholdUpperLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.scaleFactorOfThresholdUpperLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.scaledValueOfThresholdUpperLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.scaledValueOfThresholdUpperLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.thresholdLowerLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.thresholdLowerLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.thresholdUpperLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.thresholdUpperLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate5.threshold", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate5.threshold", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate6", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate6", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate6.percentileValue", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate6.percentileValue", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.yearOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.yearOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.monthOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.monthOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.dayOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.dayOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.hourOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.hourOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.minuteOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.minuteOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.secondOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.secondOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.numberOfTimeRanges", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.numberOfTimeRanges", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.numberOfMissingValues", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.numberOfMissingValues", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.statisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.statisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.typeOfTimeIncrementOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.typeOfTimeIncrementOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.unitOfTimeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.unitOfTimeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.timeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.timeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.unitOfTimeRangeOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.unitOfTimeRangeOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate8.timeIncrementOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate8.timeIncrementOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.forecastProbabilityNumber", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.forecastProbabilityNumber", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.totalNumberOfForecastProbabilities", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.totalNumberOfForecastProbabilities", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.typeOfProbability", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.typeOfProbability", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.scaleFactorOfThresholdLowerLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.scaleFactorOfThresholdLowerLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.scaledValueOfThresholdLowerLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.scaledValueOfThresholdLowerLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.scaleFactorOfThresholdUpperLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.scaleFactorOfThresholdUpperLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.scaledValueOfThresholdUpperLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.scaledValueOfThresholdUpperLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.thresholdLowerLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.thresholdLowerLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.thresholdUpperLimit", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.thresholdUpperLimit", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.threshold", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.threshold", "kind": "variable", "doc": "

    \n", "annotation": ": str"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.yearOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.yearOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.monthOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.monthOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.dayOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.dayOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.hourOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.hourOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.minuteOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.minuteOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.secondOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.secondOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.numberOfTimeRanges", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.numberOfTimeRanges", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.numberOfMissingValues", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.numberOfMissingValues", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.statisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.statisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.typeOfTimeIncrementOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.typeOfTimeIncrementOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.unitOfTimeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.unitOfTimeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.timeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.timeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.unitOfTimeRangeOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.unitOfTimeRangeOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate9.timeIncrementOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate9.timeIncrementOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.percentileValue", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.percentileValue", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.yearOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.yearOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.monthOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.monthOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.dayOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.dayOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.hourOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.hourOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.minuteOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.minuteOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.secondOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.secondOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.numberOfTimeRanges", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.numberOfTimeRanges", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.numberOfMissingValues", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.numberOfMissingValues", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.statisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.statisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.typeOfTimeIncrementOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.typeOfTimeIncrementOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.unitOfTimeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.unitOfTimeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.timeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.timeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.unitOfTimeRangeOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.unitOfTimeRangeOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate10.timeIncrementOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate10.timeIncrementOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.typeOfEnsembleForecast", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.typeOfEnsembleForecast", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.perturbationNumber", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.perturbationNumber", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.numberOfEnsembleForecasts", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.numberOfEnsembleForecasts", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.yearOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.yearOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.monthOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.monthOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.dayOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.dayOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.hourOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.hourOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.minuteOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.minuteOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.secondOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.secondOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.numberOfTimeRanges", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.numberOfTimeRanges", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.numberOfMissingValues", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.numberOfMissingValues", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.statisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.statisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.typeOfTimeIncrementOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.typeOfTimeIncrementOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.unitOfTimeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.unitOfTimeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.timeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.timeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.unitOfTimeRangeOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.unitOfTimeRangeOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate11.timeIncrementOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate11.timeIncrementOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.typeOfDerivedForecast", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.typeOfDerivedForecast", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.numberOfEnsembleForecasts", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.numberOfEnsembleForecasts", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.yearOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.yearOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.monthOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.monthOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.dayOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.dayOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.hourOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.hourOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.minuteOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.minuteOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.secondOfEndOfTimePeriod", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.secondOfEndOfTimePeriod", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.numberOfTimeRanges", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.numberOfTimeRanges", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.numberOfMissingValues", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.numberOfMissingValues", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.statisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.statisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.typeOfTimeIncrementOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.typeOfTimeIncrementOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.unitOfTimeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.unitOfTimeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.timeRangeOfStatisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.timeRangeOfStatisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.unitOfTimeRangeOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.unitOfTimeRangeOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate12.timeIncrementOfSuccessiveFields", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate12.timeIncrementOfSuccessiveFields", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate15", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate15", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate15.statisticalProcess", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate15.statisticalProcess", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate15.typeOfStatisticalProcessing", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate15.typeOfStatisticalProcessing", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate15.numberOfDataPointsForSpatialProcessing", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate15.numberOfDataPointsForSpatialProcessing", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48", "kind": "class", "doc": "

    \n", "bases": "ProductDefinitionTemplate0"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.typeOfAerosol", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.typeOfAerosol", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.typeOfIntervalForAerosolSize", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.typeOfIntervalForAerosolSize", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaleFactorOfFirstSize", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaleFactorOfFirstSize", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaledValueOfFirstSize", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaledValueOfFirstSize", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaleFactorOfSecondSize", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaleFactorOfSecondSize", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaledValueOfSecondSize", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaledValueOfSecondSize", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.typeOfIntervalForAerosolWavelength", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.typeOfIntervalForAerosolWavelength", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaleFactorOfFirstWavelength", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaleFactorOfFirstWavelength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaledValueOfFirstWavelength", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaledValueOfFirstWavelength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaleFactorOfSecondWavelength", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaleFactorOfSecondWavelength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.ProductDefinitionTemplate48.scaledValueOfSecondWavelength", "modulename": "grib2io.templates", "qualname": "ProductDefinitionTemplate48.scaledValueOfSecondWavelength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.pdt_class_by_pdtn", "modulename": "grib2io.templates", "qualname": "pdt_class_by_pdtn", "kind": "function", "doc": "

    \n", "signature": "(pdtn):", "funcdef": "def"}, {"fullname": "grib2io.templates.NumberOfPackedValues", "modulename": "grib2io.templates", "qualname": "NumberOfPackedValues", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplateNumber", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplateNumber", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.RefValue", "modulename": "grib2io.templates", "qualname": "RefValue", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.BinScaleFactor", "modulename": "grib2io.templates", "qualname": "BinScaleFactor", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DecScaleFactor", "modulename": "grib2io.templates", "qualname": "DecScaleFactor", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NBitsPacking", "modulename": "grib2io.templates", "qualname": "NBitsPacking", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfValues", "modulename": "grib2io.templates", "qualname": "TypeOfValues", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GroupSplittingMethod", "modulename": "grib2io.templates", "qualname": "GroupSplittingMethod", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfMissingValueManagement", "modulename": "grib2io.templates", "qualname": "TypeOfMissingValueManagement", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.PriMissingValue", "modulename": "grib2io.templates", "qualname": "PriMissingValue", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.SecMissingValue", "modulename": "grib2io.templates", "qualname": "SecMissingValue", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NGroups", "modulename": "grib2io.templates", "qualname": "NGroups", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.RefGroupWidth", "modulename": "grib2io.templates", "qualname": "RefGroupWidth", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NBitsGroupWidth", "modulename": "grib2io.templates", "qualname": "NBitsGroupWidth", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.RefGroupLength", "modulename": "grib2io.templates", "qualname": "RefGroupLength", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.GroupLengthIncrement", "modulename": "grib2io.templates", "qualname": "GroupLengthIncrement", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.LengthOfLastGroup", "modulename": "grib2io.templates", "qualname": "LengthOfLastGroup", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NBitsScaledGroupLength", "modulename": "grib2io.templates", "qualname": "NBitsScaledGroupLength", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.SpatialDifferenceOrder", "modulename": "grib2io.templates", "qualname": "SpatialDifferenceOrder", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.NBytesSpatialDifference", "modulename": "grib2io.templates", "qualname": "NBytesSpatialDifference", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.Precision", "modulename": "grib2io.templates", "qualname": "Precision", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TypeOfCompression", "modulename": "grib2io.templates", "qualname": "TypeOfCompression", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.TargetCompressionRatio", "modulename": "grib2io.templates", "qualname": "TargetCompressionRatio", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.RealOfCoefficient", "modulename": "grib2io.templates", "qualname": "RealOfCoefficient", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.CompressionOptionsMask", "modulename": "grib2io.templates", "qualname": "CompressionOptionsMask", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.BlockSize", "modulename": "grib2io.templates", "qualname": "BlockSize", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.RefSampleInterval", "modulename": "grib2io.templates", "qualname": "RefSampleInterval", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate0", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate0", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate0.refValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate0.refValue", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.DataRepresentationTemplate0.binScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate0.binScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate0.decScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate0.decScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate0.nBitsPacking", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate0.nBitsPacking", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.refValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.refValue", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.binScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.binScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.decScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.decScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.nBitsPacking", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.nBitsPacking", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.groupSplittingMethod", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.groupSplittingMethod", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.typeOfMissingValueManagement", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.typeOfMissingValueManagement", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.priMissingValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.priMissingValue", "kind": "variable", "doc": "

    \n", "annotation": ": [<class 'float'>, <class 'int'>]"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.secMissingValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.secMissingValue", "kind": "variable", "doc": "

    \n", "annotation": ": [<class 'float'>, <class 'int'>]"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.nGroups", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.nGroups", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.refGroupWidth", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.refGroupWidth", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.nBitsGroupWidth", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.nBitsGroupWidth", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.refGroupLength", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.refGroupLength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.groupLengthIncrement", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.groupLengthIncrement", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.lengthOfLastGroup", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.lengthOfLastGroup", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate2.nBitsScaledGroupLength", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate2.nBitsScaledGroupLength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.refValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.refValue", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.binScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.binScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.decScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.decScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.nBitsPacking", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.nBitsPacking", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.groupSplittingMethod", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.groupSplittingMethod", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.typeOfMissingValueManagement", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.typeOfMissingValueManagement", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.priMissingValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.priMissingValue", "kind": "variable", "doc": "

    \n", "annotation": ": [<class 'float'>, <class 'int'>]"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.secMissingValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.secMissingValue", "kind": "variable", "doc": "

    \n", "annotation": ": [<class 'float'>, <class 'int'>]"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.nGroups", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.nGroups", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.refGroupWidth", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.refGroupWidth", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.nBitsGroupWidth", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.nBitsGroupWidth", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.refGroupLength", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.refGroupLength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.groupLengthIncrement", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.groupLengthIncrement", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.lengthOfLastGroup", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.lengthOfLastGroup", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.nBitsScaledGroupLength", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.nBitsScaledGroupLength", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.spatialDifferenceOrder", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.spatialDifferenceOrder", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.DataRepresentationTemplate3.nBytesSpatialDifference", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate3.nBytesSpatialDifference", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate4", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate4", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate4.precision", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate4.precision", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.DataRepresentationTemplate40", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate40", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate40.refValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate40.refValue", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.DataRepresentationTemplate40.binScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate40.binScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate40.decScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate40.decScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate40.nBitsPacking", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate40.nBitsPacking", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate40.typeOfCompression", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate40.typeOfCompression", "kind": "variable", "doc": "

    \n", "annotation": ": grib2io.templates.Grib2Metadata"}, {"fullname": "grib2io.templates.DataRepresentationTemplate40.targetCompressionRatio", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate40.targetCompressionRatio", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate41", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate41", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate41.refValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate41.refValue", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.DataRepresentationTemplate41.binScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate41.binScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate41.decScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate41.decScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate41.nBitsPacking", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate41.nBitsPacking", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42.refValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42.refValue", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42.binScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42.binScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42.decScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42.decScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42.nBitsPacking", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42.nBitsPacking", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42.compressionOptionsMask", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42.compressionOptionsMask", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42.blockSize", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42.blockSize", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate42.refSampleInterval", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate42.refSampleInterval", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate50", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate50", "kind": "class", "doc": "

    \n"}, {"fullname": "grib2io.templates.DataRepresentationTemplate50.refValue", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate50.refValue", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.DataRepresentationTemplate50.binScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate50.binScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate50.decScaleFactor", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate50.decScaleFactor", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate50.nBitsPacking", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate50.nBitsPacking", "kind": "variable", "doc": "

    \n", "annotation": ": int"}, {"fullname": "grib2io.templates.DataRepresentationTemplate50.realOfCoefficient", "modulename": "grib2io.templates", "qualname": "DataRepresentationTemplate50.realOfCoefficient", "kind": "variable", "doc": "

    \n", "annotation": ": float"}, {"fullname": "grib2io.templates.drt_class_by_drtn", "modulename": "grib2io.templates", "qualname": "drt_class_by_drtn", "kind": "function", "doc": "

    \n", "signature": "(drtn):", "funcdef": "def"}, {"fullname": "grib2io.utils", "modulename": "grib2io.utils", "kind": "module", "doc": "

    Collection of utility functions to assist in the encoding and decoding\nof GRIB2 Messages.

    \n"}, {"fullname": "grib2io.utils.int2bin", "modulename": "grib2io.utils", "qualname": "int2bin", "kind": "function", "doc": "

    Convert integer to binary string or list

    \n\n

    Parameters

    \n\n

    i: Integer value to convert to binary representation.

    \n\n

    nbits: Number of bits to return. Valid values are 8 [DEFAULT], 16,\n32, and 64.

    \n\n

    output: Return data as str [DEFAULT] or list (list of ints).

    \n\n

    Returns

    \n\n

    str or list (list of ints) of binary representation of the integer value.

    \n", "signature": "(i, nbits=8, output=<class 'str'>):", "funcdef": "def"}, {"fullname": "grib2io.utils.ieee_float_to_int", "modulename": "grib2io.utils", "qualname": "ieee_float_to_int", "kind": "function", "doc": "

    Convert an IEEE 32-bit float to a 32-bit integer.

    \n\n

    Parameters

    \n\n

    f: Float value.

    \n\n

    Returns

    \n\n

    Numpy Int32 representation of an IEEE 32-bit float.

    \n", "signature": "(f):", "funcdef": "def"}, {"fullname": "grib2io.utils.ieee_int_to_float", "modulename": "grib2io.utils", "qualname": "ieee_int_to_float", "kind": "function", "doc": "

    Convert a 32-bit integer to an IEEE 32-bit float.

    \n\n

    Parameters

    \n\n

    i: Integer value.

    \n\n

    Returns

    \n\n

    Numpy float32

    \n", "signature": "(i):", "funcdef": "def"}, {"fullname": "grib2io.utils.get_leadtime", "modulename": "grib2io.utils", "qualname": "get_leadtime", "kind": "function", "doc": "

    Computes lead time as a datetime.timedelta object using information from\nGRIB2 Identification Section (Section 1), Product Definition Template\nNumber, and Product Definition Template (Section 4).

    \n\n

    Parameters

    \n\n

    idsec: seqeunce containing GRIB2 Identification Section (Section 1).

    \n\n

    pdtn: GRIB2 Product Definition Template Number

    \n\n

    idsec: seqeunce containing GRIB2 Product Definition Template (Section 4).

    \n\n

    Returns

    \n\n

    datetime.timedelta object representing the lead time of the GRIB2 message.

    \n", "signature": "(idsec, pdtn, pdt):", "funcdef": "def"}, {"fullname": "grib2io.utils.get_duration", "modulename": "grib2io.utils", "qualname": "get_duration", "kind": "function", "doc": "

    Computes a time duration as a datetime.timedelta using information from\nProduct Definition Template Number, and Product Definition Template (Section 4).

    \n\n

    Parameters

    \n\n

    pdtn: GRIB2 Product Definition Template Number

    \n\n

    pdt: sequence containing GRIB2 Product Definition Template (Section 4).

    \n\n

    Returns

    \n\n

    datetime.timedelta object representing the time duration of the GRIB2 message.

    \n", "signature": "(pdtn, pdt):", "funcdef": "def"}, {"fullname": "grib2io.utils.decode_wx_strings", "modulename": "grib2io.utils", "qualname": "decode_wx_strings", "kind": "function", "doc": "

    Decode GRIB2 Local Use Section to obtain NDFD/MDL Weather Strings. The\ndecode procedure is defined here.

    \n\n

    Parameters

    \n\n

    lus: GRIB2 Local Use Section containing NDFD weather strings.

    \n\n

    Returns

    \n\n

    dict: Dictionary of NDFD/MDL weather strings. Keys are an integer\nvalue that represent the sequential order of the key in the packed loca\nuse section and the value is the weather key.

    \n", "signature": "(lus):", "funcdef": "def"}, {"fullname": "grib2io.utils.get_wgrib2_prob_string", "modulename": "grib2io.utils", "qualname": "get_wgrib2_prob_string", "kind": "function", "doc": "

    Return a wgrib2-formatted string explaining probabilistic\nthreshold informaiton. Logic from wgrib2 source, Prob.c,\nis replicated here.

    \n\n

    Parameters

    \n\n

    probtype: int type of probability (Code Table 4.9).

    \n\n

    sfacl: int scale factor of lower limit.

    \n\n

    svall: int scaled value of lower limit.

    \n\n

    sfacu: int scale factor of upper limit.

    \n\n

    svalu: int scaled value of upper limit.

    \n\n

    Returns

    \n\n

    str: wgrib2-formatted string of probability threshold.

    \n", "signature": "(probtype, sfacl, svall, sfacu, svalu):", "funcdef": "def"}, {"fullname": "grib2io.utils.arakawa_rotated_grid", "modulename": "grib2io.utils.arakawa_rotated_grid", "kind": "module", "doc": "

    Functions for handling an Arakawa Rotated Lat/Lon Grids.

    \n\n

    This grid is not often used, but is currently used for the NCEP/RAP using\nGRIB2 Grid Definition Template 32769

    \n\n

    These functions are adapted from the NCAR Command Language (ncl),\nfrom NcGRIB2.c

    \n"}, {"fullname": "grib2io.utils.arakawa_rotated_grid.DEG2RAD", "modulename": "grib2io.utils.arakawa_rotated_grid", "qualname": "DEG2RAD", "kind": "variable", "doc": "

    \n", "default_value": "0.017453292519943295"}, {"fullname": "grib2io.utils.arakawa_rotated_grid.RAD2DEG", "modulename": "grib2io.utils.arakawa_rotated_grid", "qualname": "RAD2DEG", "kind": "variable", "doc": "

    \n", "default_value": "57.29577951308232"}, {"fullname": "grib2io.utils.arakawa_rotated_grid.ll2rot", "modulename": "grib2io.utils.arakawa_rotated_grid", "qualname": "ll2rot", "kind": "function", "doc": "

    Rotate a latitude/longitude pair.

    \n\n

    Parameters

    \n\n

    latin: float\n Latitudes in units of degrees.

    \n\n

    lonin: float\n Longitudes in units of degrees.

    \n\n

    latpole: float\n Latitude of Pole.

    \n\n

    lonpole: float\n Longitude of Pole.

    \n\n

    Returns

    \n\n

    tlat, tlons\n Returns two floats of rotated latitude and longitude in units of degrees.

    \n", "signature": "(latin, lonin, latpole, lonpole):", "funcdef": "def"}, {"fullname": "grib2io.utils.arakawa_rotated_grid.rot2ll", "modulename": "grib2io.utils.arakawa_rotated_grid", "qualname": "rot2ll", "kind": "function", "doc": "

    Unrotate a latitude/longitude pair.

    \n\n

    Parameters

    \n\n

    latin: float\n Latitudes in units of degrees.

    \n\n

    lonin: float\n Longitudes in units of degrees.

    \n\n

    latpole: float\n Latitude of Pole.

    \n\n

    lonpole: float\n Longitude of Pole.

    \n\n

    Returns

    \n\n

    tlat, tlons\n Returns two floats of unrotated latitude and longitude in units of degrees.

    \n", "signature": "(latin, lonin, latpole, lonpole):", "funcdef": "def"}, {"fullname": "grib2io.utils.arakawa_rotated_grid.vector_rotation_angles", "modulename": "grib2io.utils.arakawa_rotated_grid", "qualname": "vector_rotation_angles", "kind": "function", "doc": "

    Generate a rotation angle value that can be applied to a vector quantity to\nmake it Earth-oriented.

    \n\n

    Parameters

    \n\n

    tlat: float\n True latitude in units of degrees.

    \n\n

    **tlon**:float`\n True longitude in units of degrees..

    \n\n

    clat: float\n Latitude of center grid point in units of degrees.

    \n\n

    losp: float\n Longitude of the southern pole in units of degrees.

    \n\n

    xlat: float\n Latitude of the rotated grid in units of degrees.

    \n\n

    Returns

    \n\n

    rot : float\n Rotation angle in units of radians.

    \n", "signature": "(tlat, tlon, clat, losp, xlat):", "funcdef": "def"}, {"fullname": "grib2io.utils.gauss_grid", "modulename": "grib2io.utils.gauss_grid", "kind": "module", "doc": "

    Tools for working with Gaussian grids.

    \n"}, {"fullname": "grib2io.utils.gauss_grid.gaussian_latitudes", "modulename": "grib2io.utils.gauss_grid", "qualname": "gaussian_latitudes", "kind": "function", "doc": "

    Construct latitudes for a Gaussian grid.

    \n\n

    Parameters

    \n\n

    nlat: The number of latitudes in the Gaussian grid.

    \n\n

    Returns

    \n\n

    Numpy array of latitudes (in degrees) with a length of nlat.

    \n", "signature": "():", "funcdef": "def"}, {"fullname": "grib2io.utils.rotated_grid", "modulename": "grib2io.utils.rotated_grid", "kind": "module", "doc": "

    Tools for working with Rotated Lat/Lon Grids.

    \n"}, {"fullname": "grib2io.utils.rotated_grid.RAD2DEG", "modulename": "grib2io.utils.rotated_grid", "qualname": "RAD2DEG", "kind": "variable", "doc": "

    \n", "default_value": "57.29577951308232"}, {"fullname": "grib2io.utils.rotated_grid.DEG2RAD", "modulename": "grib2io.utils.rotated_grid", "qualname": "DEG2RAD", "kind": "variable", "doc": "

    \n", "default_value": "0.017453292519943295"}, {"fullname": "grib2io.utils.rotated_grid.rotate", "modulename": "grib2io.utils.rotated_grid", "qualname": "rotate", "kind": "function", "doc": "

    Perform grid rotation. This function is adapted from ECMWF's ecCodes library\nvoid function, rotate().

    \n\n

    https://github.com/ecmwf/eccodes/blob/develop/src/grib_geography.cc

    \n\n

    Parameters

    \n\n

    latin: float or array_like

    \n\n

    Latitudes in units of degrees.

    \n\n

    lonin: float or array_like

    \n\n

    Longitudes in units of degrees.

    \n\n

    aor: float

    \n\n

    Angle of rotation as defined in GRIB2 GDTN 4.1.

    \n\n

    splat: float

    \n\n

    Latitude of South Pole as defined in GRIB2 GDTN 4.1.

    \n\n

    splon: float

    \n\n

    Longitude of South Pole as defined in GRIB2 GDTN 4.1.

    \n\n

    Returns

    \n\n

    lats, lons : numpy.ndarray

    \n\n

    Returns two numpy.ndarrays with dtype=numpy.float32 of grid latitudes and\nlongitudes in units of degrees.

    \n", "signature": "(latin, lonin, aor, splat, splon):", "funcdef": "def"}, {"fullname": "grib2io.utils.rotated_grid.unrotate", "modulename": "grib2io.utils.rotated_grid", "qualname": "unrotate", "kind": "function", "doc": "

    Perform grid un-rotation. This function is adapted from ECMWF's ecCodes library\nvoid function, unrotate().

    \n\n

    https://github.com/ecmwf/eccodes/blob/develop/src/grib_geography.cc

    \n\n

    Parameters

    \n\n

    latin: float or array_like

    \n\n

    Latitudes in units of degrees.

    \n\n

    lonin: float or array_like

    \n\n

    Longitudes in units of degrees.

    \n\n

    aor: float

    \n\n

    Angle of rotation as defined in GRIB2 GDTN 4.1.

    \n\n

    splat: float

    \n\n

    Latitude of South Pole as defined in GRIB2 GDTN 4.1.

    \n\n

    splon: float

    \n\n

    Longitude of South Pole as defined in GRIB2 GDTN 4.1.

    \n\n

    Returns

    \n\n

    lats, lons : numpy.ndarray

    \n\n

    Returns two numpy.ndarrays with dtype=numpy.float32 of grid latitudes and\nlongitudes in units of degrees.

    \n", "signature": "(latin, lonin, aor, splat, splon):", "funcdef": "def"}]; // mirrored in build-search-index.js (part 1) // Also split on html tags. this is a cheap heuristic, but good enough.