# Copyright 2005-2015 ECMWF. # # This software is licensed under the terms of the Apache Licence Version 2.0 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. # # In applying this licence, ECMWF does not waive the privileges and immunities granted to it by # virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. import traceback import sys from eccodes import * from datetime import date INPUT='../../data/regular_latlon_surface_constant.grib1' OUTPUT='out.set.grib' VERBOSE=1 # verbose error reporting def example(): fin = open(INPUT) fout = open(OUTPUT,'w') gid = codes_grib_new_from_file(fin) dt = date.today() today = "%d%02d%02d" % (dt.year,dt.month,dt.day) codes_set(gid,'dataDate',int(today)) codes_set(gid,'centre',80) centreIntVal = codes_get(gid,'centre',int) centreStrVal = codes_get(gid,'centre',str) dateStrVal = codes_get(gid,'dataDate',str) assert(centreIntVal == 80) assert(centreStrVal == 'cnmc') assert(dateStrVal == today) print 'get centre as an integer - centre = %d' % centreIntVal print 'get centre as a string - centre = %s' % centreStrVal print 'get date as a string - date = %s' % dateStrVal # Now do the same but using set_key_vals, setting keys all at once codes_set_key_vals(gid, 'level=1,centre=98') # with a String assert(codes_get(gid,'centre',str) == 'ecmf') assert(codes_get(gid,'level',int) == 1) codes_set_key_vals(gid, ['level=2', 'centre=kwbc']) # with a Tuple assert(codes_get(gid,'centre',int) == 7) assert(codes_get(gid,'level',int) == 2) codes_set_key_vals(gid, {'level': 3, 'centre': 84}) # with a Dictionary assert(codes_get(gid,'centre',str) == 'lfpw') assert(codes_get(gid,'level',int) == 3) codes_gts_header(True) codes_gts_header(False) codes_write(gid,fout) codes_release(gid) fin.close() fout.close() def main(): try: example() except CodesInternalError,err: if VERBOSE: traceback.print_exc(file=sys.stderr) else: print >>sys.stderr,err.msg return 1 if __name__ == "__main__": sys.exit(main())