Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Notewarning

Note: The high-level Python interface is currently experimental and may change in a future release. It is provided here to solicit feedback.

...

Tabs Container
directionhorizontal


Tabs Page
titleGribFile


Code Block
languagepy
linenumberstrue
# A GRIB file handle meant for use in a context manager.

# One can easily iterate over each message in the file::

# Usage::
>>> with GribFile(filename) as grib:
...     # Print number of messages in file
...     len(grib)
...     # Open all messages in file
...     for msg in grib:
...         print(msg[key_name])
>>> # When the file is closed, any open messages are closed



Tabs Page
titleGribMessage


Code Block
languagepy
linenumberstrue
# A GRIB message.

# Each ``GribMessage`` is stored as a key/value pair in a dictionary-like
# structure. It can be used in a context manager or by itself. When the
# ``GribFile`` it belongs to is closed, the ``GribFile`` closes any open
# ``GribMessage``s that belong to it. If a ``GribMessage`` is closed before
# its ``GribFile`` is closed, it informs the ``GribFile`` of its closure.

# Scalar and vector values are set appropriately through the same method.

# ``GribMessage``s can be instantiated from a ``GribFile``, cloned from
# other ``GribMessage``s or taken from samples. Iterating over the members
# of a ``GribFile`` extracts the ``GribMessage``s it contains until the
# ``GribFile`` is exhausted.

# Usage::
>>> with GribFile(filename) as grib:
...     # Iterate through each message in the file
...     for msg in grib:
...         # Access a key from each message
...         print(msg[key_name])
...         # Report message size in bytes
...         msg.size()
...         # Report keys in message
...         msg.keys()
...         # Set scalar value
...         msg[scalar_key] = 5
...         # Array values are set transparently
...         msg[array_key] = [1, 2, 3]
...         # Messages can be written to file
...         with open(testfile, "w") as test:
...             msg.write(test)
...         # Messages can be cloned from other messages
...         msg2 = GribMessage(clone=msg)



Tabs Page
titleGribIndex


Code Block
languagepy
linenumberstrue
# A GRIB index meant for use in a context manager.                               
                                                                                   
Usage::              
>>> # Create index from file with keys                                     
>>> with GribIndex(filename, keys) as idx:                                 
...     # Write index to file                                              
...     idx.write(index_file)                                              
>>> # Read index from file                                                 
>>> with GribIndex(file_index=index_file) as idx:                          
...     # Add new file to index                                            
...     idx.add(other_filename)                                            
...     # Report number of unique values for given key                     
...     idx.size(key)                                                      
...     # Report unique values indexed by key                              
...     idx.values(key)                                                    
...     # Request GribMessage matching key, value                          
...     msg = idx.select({key: value})     



Tabs Page
titleBufrFile


Code Block
languagepy
linenumberstrue
# A BUFR file handle meant for use in a context manager.

# One can easily iterate over each message in the file::

# Usage::
>>> with BufrFile(filename) as bufr:
...     # Print number of messages in file
...     len(bufr)
...     # Open all messages in file
...     for msg in bufr:
...         print(msg[key_name])
>>> # When the file is closed, any open messages are closed



Tabs Page
titleBufrMessage


Code Block
languagepy
linenumberstrue
# A BUFR message.

# Each ``BufrMessage`` is stored as a key/value pair in a dictionary-like
# structure. It can be used in a context manager or by itself. When the
# ``BufrFile`` it belongs to is closed, the ``BufrFile`` closes any open
# ``BufrMessage``s that belong to it. If a ``BufrMessage`` is closed before
# its ``BufrFile`` is closed, it informs the ``BufrFile`` of its closure.

# Scalar and vector values are set appropriately through the same method.

# ``BufrMessage``s can be instantiated from a ``BufrFile``, cloned from
# other ``BufrMessage``s or taken from samples. Iterating over the members
# of a ``BufrFile`` extracts the ``BufrMessage``s it contains until the
# ``BufrFile`` is exhausted.

# Usage::
>>> with BufrFile(filename) as bufr:
...     # Iterate through each message in the file
...     for msg in bufr:
...         # Access a key from each message
...         print(msg[key_name])
...         # Report message size in bytes
...         msg.size()
...         # Report keys in message
...         msg.keys()
...         # Set scalar value
...         msg[scalar_key] = 5
...         # Array values are set transparently
...         msg[array_key] = [1, 2, 3]
...         # Messages can be written to file
...         with open(testfile, "w") as test:
...             msg.write(test)
...         # Messages can be cloned from other messages
...         msg2 = BufrMessage(clone=msg)

...





This feature is a contribution from DWD for which we are very thankful.