Beispiel #1
0
def test_grib_multi_support_reset_file():
    try:
        # TODO: read an actual multi-field GRIB here
        fpath = get_sample_fullpath("GRIB2.tmpl")
        if fpath is None:
            return
        eccodes.codes_grib_multi_support_on()
        with open(fpath, "rb") as f:
            eccodes.codes_grib_multi_support_reset_file(f)
    finally:
        eccodes.codes_grib_multi_support_off()
Beispiel #2
0
def multi_enabled(file: T.IO[bytes]) -> T.Iterator[None]:
    """Context manager that enables MULTI-FIELD support in ecCodes from a clean state"""
    eccodes.codes_grib_multi_support_on()
    #
    # Explicitly reset the multi_support global state that gets confused by random access
    #
    # @alexamici: I'm note sure this is thread-safe. See :#141
    #
    eccodes.codes_grib_multi_support_reset_file(file)
    try:
        yield
    except Exception:
        eccodes.codes_grib_multi_support_off()
        raise
    eccodes.codes_grib_multi_support_off()
Beispiel #3
0
def multi_enabled(file):
    """Context manager that enables MULTI-FIELD support in ecCodes from a clean state"""
    eccodes.codes_grib_multi_support_on()
    #
    # Explicitly reset the multi_support global state that gets confused by random access
    #
    # @alexamici: I'm note sure this is thread-safe. See :#141
    #
    context = eccodes.lib.codes_context_get_default()
    eccodes.lib.codes_grib_multi_support_reset_file(context, file)
    try:
        yield
    except Exception:
        eccodes.codes_grib_multi_support_off()
        raise
    eccodes.codes_grib_multi_support_off()
Beispiel #4
0
levsIncl = [
    1000, 975, 950, 925, 900, 850, 800, 750, 700, 650, 600, 550, 500, 450, 400,
    350, 300, 200, 100
]

filePrefix = 'rmf.hgra.2019032100'
fileSuffix = '.grb2'
filenames = []
filePaths = []
for i in range(nfiles):
    filenames.append(filePrefix + '{:03d}'.format(i) + fileSuffix)
    filePaths.append(os.path.join(inDir, filenames[i]))

f = open(filePaths[0], 'r')
print(filePaths[0])
eccodes.codes_grib_multi_support_on()
mcount = eccodes.codes_count_in_file(f)
print(mcount)
gids = [eccodes.codes_grib_new_from_file(f) for i in range(mcount)]
f.close()

varNames = []
levels = []
varParCat = []
varParNum = []
prodDefinTemNum = []
for i in range(mcount):
    gid = gids[i]
    varNames.append(eccodes.codes_get(gid, 'shortName'))
    levels.append(eccodes.codes_get(gid, 'level'))
    varParCat.append(eccodes.codes_get(gid, 'parameterCategory'))
Beispiel #5
0
 def __init__(self, filename, filename_info, filetype_info):
     """Read the global attributes and prepare for dataset reading."""
     super().__init__(filename, filename_info, filetype_info)
     # Turn on support for multiple fields in single GRIB messages (required for SEVIRI L2 files)
     ec.codes_grib_multi_support_on()