Changeset aa275fc in flex_extract.git


Ignore:
Timestamp:
Oct 9, 2018, 9:13:15 PM (7 months ago)
Author:
Anne Philipp <anne.philipp@…>
Branches:
dev
Children:
efba13f
Parents:
c5074d2
Message:

substituted grib_api with eccodes

Location:
source/python/classes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • source/python/classes/EcFlexpart.py

    rc5074d2 raa275fc  
    8181from datetime import datetime, timedelta
    8282import numpy as np
    83 from gribapi import grib_set, grib_index_select, grib_new_from_index, grib_get,\
    84                     grib_write, grib_get_values, grib_set_values, grib_release,\
    85                     grib_index_release, grib_index_get
     83
     84from eccodes import (codes_index_select, codes_new_from_index, codes_get,
     85                     codes_get_values, codes_set_values, codes_set,
     86                     codes_write, codes_release, codes_new_from_index,
     87                     codes_index_release)
    8688
    8789# software specific classes and modules from flex_extract
     
    789791
    790792            for i in range(len(index_keys)):
    791                 grib_index_select(iid, index_keys[i], prod[i])
     793                codes_index_select(iid, index_keys[i], prod[i])
    792794
    793795            # get first id from current product
    794             gid = grib_new_from_index(iid)
     796            gid = codes_new_from_index(iid)
    795797
    796798            # if there is no data for this specific time combination / product
     
    800802
    801803            # create correct timestamp from the three time informations
    802             cdate = str(grib_get(gid, 'date'))
    803             ctime = '{:0>2}'.format(grib_get(gid, 'time')/100)
    804             cstep = '{:0>3}'.format(grib_get(gid, 'step'))
     804            cdate = str(codes_get(gid, 'date'))
     805            ctime = '{:0>2}'.format(codes_get(gid, 'time')/100)
     806            cstep = '{:0>3}'.format(codes_get(gid, 'step'))
    805807            t_date = datetime.strptime(cdate + ctime, '%Y%m%d%H')
    806808            t_dt = t_date + timedelta(hours=int(cstep))
     
    834836                if not gid:
    835837                    break
    836                 cparamId = str(grib_get(gid, 'paramId'))
    837                 step = grib_get(gid, 'step')
    838                 time = grib_get(gid, 'time')
    839                 ni = grib_get(gid, 'Ni')
    840                 nj = grib_get(gid, 'Nj')
     838                cparamId = str(codes_get(gid, 'paramId'))
     839                step = codes_get(gid, 'step')
     840                time = codes_get(gid, 'time')
     841                ni = codes_get(gid, 'Ni')
     842                nj = codes_get(gid, 'Nj')
    841843                if cparamId in valsdict.keys():
    842                     values = grib_get_values(gid)
     844                    values = codes_get_values(gid)
    843845                    vdp = valsdict[cparamId]
    844846                    svdp = svalsdict[cparamId]
     
    879881                                values = svdp[0]
    880882
    881                         grib_set_values(gid, values)
     883                        codes_set_values(gid, values)
    882884
    883885                        if c.maxstep > 12:
    884                             grib_set(gid, 'step', max(0, step-2*int(c.dtime)))
     886                            codes_set(gid, 'step', max(0, step-2*int(c.dtime)))
    885887                        else:
    886                             grib_set(gid, 'step', 0)
    887                             grib_set(gid, 'time', t_m2dt.hour*100)
    888                             grib_set(gid, 'date', int(t_m2dt.strftime('%Y%m%d')))
     888                            codes_set(gid, 'step', 0)
     889                            codes_set(gid, 'time', t_m2dt.hour*100)
     890                            codes_set(gid, 'date', int(t_m2dt.strftime('%Y%m%d')))
    889891
    890892                        with open(fnout, 'w') as f_handle:
    891                             grib_write(gid, f_handle)
     893                            codes_write(gid, f_handle)
    892894
    893895                        if c.basetime:
     
    909911
    910912                            values = svdp[3]
    911                             grib_set_values(gid, values)
    912                             grib_set(gid, 'step', 0)
     913                            codes_set_values(gid, values)
     914                            codes_set(gid, 'step', 0)
    913915                            truedatetime = t_m2dt + timedelta(hours=
    914                                                              2*int(c.dtime))
    915                             grib_set(gid, 'time', truedatetime.hour * 100)
    916                             grib_set(gid, 'date', truedatetime.year * 10000 +
    917                                      truedatetime.month * 100 +
    918                                      truedatetime.day)
     916                                                              2*int(c.dtime))
     917                            codes_set(gid, 'time', truedatetime.hour * 100)
     918                            codes_set(gid, 'date', truedatetime.year * 10000 +
     919                                      truedatetime.month * 100 +
     920                                      truedatetime.day)
    919921                            with open(hnout, 'w') as h_handle:
    920                                 grib_write(gid, h_handle)
     922                                codes_write(gid, h_handle)
    921923
    922924                            #values = (svdp[1]+svdp[2])/2.
     
    926928                                values = disaggregation.dapoly(list(reversed(svdp)))
    927929
    928                             grib_set(gid, 'step', 0)
     930                            codes_set(gid, 'step', 0)
    929931                            truedatetime = t_m2dt + timedelta(hours=int(c.dtime))
    930                             grib_set(gid, 'time', truedatetime.hour * 100)
    931                             grib_set(gid, 'date', truedatetime.year * 10000 +
     932                            codes_set(gid, 'time', truedatetime.hour * 100)
     933                            codes_set(gid, 'date', truedatetime.year * 10000 +
    932934                                     truedatetime.month * 100 +
    933935                                     truedatetime.day)
    934                             grib_set_values(gid, values)
     936                            codes_set_values(gid, values)
    935937                            with open(gnout, 'w') as g_handle:
    936                                 grib_write(gid, g_handle)
    937 
    938                 grib_release(gid)
    939 
    940                 gid = grib_new_from_index(iid)
    941 
    942         grib_index_release(iid)
     938                                codes_write(gid, g_handle)
     939
     940                codes_release(gid)
     941
     942                gid = codes_new_from_index(iid)
     943
     944        codes_index_release(iid)
    943945
    944946        return
     
    10141016
    10151017            for i in range(len(index_keys)):
    1016                 grib_index_select(iid, index_keys[i], prod[i])
     1018                codes_index_select(iid, index_keys[i], prod[i])
    10171019
    10181020            # get first id from current product
    1019             gid = grib_new_from_index(iid)
     1021            gid = codes_new_from_index(iid)
    10201022
    10211023            # if there is no data for this specific time combination / product
     
    10321034
    10331035            # create correct timestamp from the three time informations
    1034             cdate = str(grib_get(gid, 'date'))
    1035             ctime = '{:0>2}'.format(grib_get(gid, 'time')/100)
    1036             cstep = '{:0>3}'.format(grib_get(gid, 'step'))
     1036            cdate = str(codes_get(gid, 'date'))
     1037            ctime = '{:0>2}'.format(codes_get(gid, 'time')/100)
     1038            cstep = '{:0>3}'.format(codes_get(gid, 'step'))
    10371039            timestamp = datetime.strptime(cdate + ctime, '%Y%m%d%H')
    10381040            timestamp += timedelta(hours=int(cstep))
     
    10621064                if not gid:
    10631065                    break
    1064                 paramId = grib_get(gid, 'paramId')
    1065                 gridtype = grib_get(gid, 'gridType')
    1066                 levtype = grib_get(gid, 'typeOfLevel')
     1066                paramId = codes_get(gid, 'paramId')
     1067                gridtype = codes_get(gid, 'gridType')
     1068                levtype = codes_get(gid, 'typeOfLevel')
    10671069                if paramId == 77: # ETADOT
    1068                     grib_write(gid, fdict['21'])
     1070                    codes_write(gid, fdict['21'])
    10691071                elif paramId == 130: # T
    1070                     grib_write(gid, fdict['11'])
     1072                    codes_write(gid, fdict['11'])
    10711073                elif paramId == 131 or paramId == 132: # U, V wind component
    1072                     grib_write(gid, fdict['10'])
     1074                    codes_write(gid, fdict['10'])
    10731075                elif paramId == 133 and gridtype != 'reduced_gg': # Q
    1074                     grib_write(gid, fdict['17'])
     1076                    codes_write(gid, fdict['17'])
    10751077                elif paramId == 133 and gridtype == 'reduced_gg': # Q, gaussian
    1076                     grib_write(gid, fdict['18'])
     1078                    codes_write(gid, fdict['18'])
    10771079                elif paramId == 135: # W
    1078                     grib_write(gid, fdict['19'])
     1080                    codes_write(gid, fdict['19'])
    10791081                elif paramId == 152: # LNSP
    1080                     grib_write(gid, fdict['12'])
     1082                    codes_write(gid, fdict['12'])
    10811083                elif paramId == 155 and gridtype == 'sh': # D
    1082                     grib_write(gid, fdict['13'])
     1084                    codes_write(gid, fdict['13'])
    10831085                elif paramId == 246 or paramId == 247: # CLWC, CIWC
    10841086                    # sum cloud liquid water and ice
    10851087                    if not scwc:
    1086                         scwc = grib_get_values(gid)
     1088                        scwc = codes_get_values(gid)
    10871089                    else:
    1088                         scwc += grib_get_values(gid)
    1089                         grib_set_values(gid, scwc)
    1090                         grib_set(gid, 'paramId', 201031)
    1091                         grib_write(gid, fdict['22'])
     1090                        scwc += codes_get_values(gid)
     1091                        codes_set_values(gid, scwc)
     1092                        codes_set(gid, 'paramId', 201031)
     1093                        codes_write(gid, fdict['22'])
    10921094                elif c.wrf and paramId in [129, 138, 155] and \
    10931095                      levtype == 'hybrid': # Z, VO, D
     
    10991101                        # SD/MSL/TCC/10U/10V/2T/2D/Z/LSM/SDOR/CVL/CVH/SR
    11001102                        # and all ADDPAR parameter
    1101                         grib_write(gid, fdict['16'])
     1103                        codes_write(gid, fdict['16'])
    11021104                        savedfields.append(paramId)
    11031105                    else:
     
    11091111                        if levtype == 'hybrid' and \
    11101112                           paramId in [129, 130, 131, 132, 133, 138, 155]:
    1111                             grib_write(gid, fwrf)
     1113                            codes_write(gid, fwrf)
    11121114                        # sfc layer
    11131115                        elif paramId in wrfpars:
    1114                             grib_write(gid, fwrf)
     1116                            codes_write(gid, fwrf)
    11151117                except AttributeError:
    11161118                    pass
    11171119
    1118                 grib_release(gid)
    1119                 gid = grib_new_from_index(iid)
     1120                codes_release(gid)
     1121                gid = codes_new_from_index(iid)
    11201122
    11211123            for f in fdict.values():
     
    11711173            fwrf.close()
    11721174
    1173         grib_index_release(iid)
     1175        codes_index_release(iid)
    11741176
    11751177        return
  • source/python/classes/GribTools.py

    r25b14be raa275fc  
    4444# ------------------------------------------------------------------------------
    4545import os
    46 from gribapi import grib_new_from_file, grib_is_defined, grib_get, \
    47                     grib_release, grib_set, grib_write, grib_index_read, \
    48                     grib_index_new_from_file, grib_index_add_file,  \
    49                     grib_index_write
     46
     47from eccodes import (codes_grib_new_from_file, codes_is_defined, codes_get,
     48                     codes_release, codes_set, codes_write, codes_index_read,
     49                     codes_index_new_from_file, codes_index_add_file,
     50                     codes_index_write)
    5051
    5152# ------------------------------------------------------------------------------
     
    104105
    105106        while 1:
    106             gid_in = grib_new_from_file(fileid)
    107 
    108             if gid_in is None:
     107            gid = codes_new_from_file(fileid)
     108
     109            if gid is None:
    109110                break
    110111
     
    116117            i = 0
    117118            for wherekey in wherekeynames:
    118                 if not grib_is_defined(gid_in, wherekey):
     119                if not codes_is_defined(gid, wherekey):
    119120                    raise Exception("where key was not defined")
    120121
    121122                select = (select and (str(wherekeyvalues[i]) ==
    122                                       str(grib_get(gid_in, wherekey))))
     123                                      str(codes_get(gid, wherekey))))
    123124                i += 1
    124125
     
    126127                llist = []
    127128                for key in keynames:
    128                     llist.extend([str(grib_get(gid_in, key))])
     129                    llist.extend([str(codes_get(gid, key))])
    129130                return_list.append(llist)
    130131
    131             grib_release(gid_in)
     132            codes_release(gid)
    132133
    133134        fileid.close()
     
    178179
    179180        while 1:
    180             gid_in = grib_new_from_file(fin)
    181 
    182             if gid_in is None:
     181            gid = codes_new_from_file(fin)
     182
     183            if gid is None:
    183184                break
    184185
     
    189190            i = 0
    190191            for wherekey in wherekeynames:
    191                 if not grib_is_defined(gid_in, wherekey):
     192                if not codes_is_defined(gid, wherekey):
    192193                    raise Exception("where Key was not defined")
    193194
    194195                select = (select and (str(wherekeyvalues[i]) ==
    195                                       str(grib_get(gid_in, wherekey))))
     196                                      str(codes_get(gid, wherekey))))
    196197                i += 1
    197198
     
    199200                i = 0
    200201                for key in keynames:
    201                     grib_set(gid_in, key, keyvalues[i])
     202                    codes_set(gid, key, keyvalues[i])
    202203                    i += 1
    203204
    204             grib_write(gid_in, fout)
    205 
    206             grib_release(gid_in)
     205            codes_write(gid, fout)
     206
     207            codes_release(gid)
    207208
    208209        fin.close()
     
    245246
    246247        while 1:
    247             gid_in = grib_new_from_file(fin)
    248 
    249             if gid_in is None:
     248            gid = codes_new_from_file(fin)
     249
     250            if gid is None:
    250251                break
    251252
     
    256257            i = 0
    257258            for key in keynames:
    258                 if not grib_is_defined(gid_in, key):
     259                if not codes_is_defined(gid, key):
    259260                    raise Exception("Key was not defined")
    260261
    261262                if selectWhere:
    262263                    select = (select and (str(keyvalues[i]) ==
    263                                           str(grib_get(gid_in, key))))
     264                                          str(codes_get(gid, key))))
    264265                else:
    265266                    select = (select and (str(keyvalues[i]) !=
    266                                           str(grib_get(gid_in, key))))
     267                                          str(codes_get(gid, key))))
    267268                i += 1
    268269
    269270            if select:
    270                 grib_write(gid_in, fout)
    271 
    272             grib_release(gid_in)
     271                codes_write(gid, fout)
     272
     273            codes_release(gid)
    273274
    274275        fin.close()
     
    301302
    302303        if os.path.exists(index_file):
    303             iid = grib_index_read(index_file)
     304            iid = codes_index_read(index_file)
    304305            print("Use existing index file: %s " % (index_file))
    305306        else:
     
    307308                print("Inputfile: %s " % (filename))
    308309                if iid is None:
    309                     iid = grib_index_new_from_file(filename, index_keys)
     310                    iid = codes_index_new_from_file(filename, index_keys)
    310311                else:
    311                     grib_index_add_file(iid, filename)
     312                    codes_index_add_file(iid, filename)
    312313
    313314            if iid is not None:
    314                 grib_index_write(iid, index_file)
     315                codes_index_write(iid, index_file)
    315316
    316317        print('... index done')
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG