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()
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()
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()
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'))
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()