Changeset 2e62398 in flex_extract.git


Ignore:
Timestamp:
Nov 16, 2018, 8:31:15 PM (12 months ago)
Author:
Anne Philipp <anne.philipp@…>
Branches:
dev
Children:
403cbf1
Parents:
adb0b63
Message:

moved from grib_api to eccodes

Location:
source/python/classes
Files:
2 edited

Legend:

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

    r96e1533 r2e62398  
    8282import numpy as np
    8383
    84 from gribapi import (grib_set, grib_index_select, grib_new_from_index, grib_get,
    85                      grib_write, grib_get_values, grib_set_values, grib_release,
    86                      grib_index_release, grib_index_get)
    87 
    88 # from eccodes import (codes_index_select, codes_new_from_index, codes_get,
    89                      # codes_get_values, codes_set_values, codes_set,
    90                      # codes_write, codes_release, codes_new_from_index,
    91                      # codes_index_release, codes_index_get)
     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, codes_index_get)
    9288
    9389# software specific classes and modules from flex_extract
     
    403399        Return
    404400        ------
    405         iid : :obj:`grib_index`
     401        iid : :obj:`codes_index`
    406402            This is a grib specific index structure to access
    407403            messages in a file.
     
    427423        index_vals = []
    428424        for key in index_keys:
    429             #index_vals.append(grib_index_get(iid, key))
    430             #print(index_vals[-1])
    431             key_vals = grib_index_get(iid, key)
     425            key_vals = codes_index_get(iid, key)
    432426            print(key_vals)
    433427            # have to sort the steps for disaggregation,
     
    771765
    772766            for i in range(len(index_keys)):
    773                 grib_index_select(iid, index_keys[i], prod[i])
     767                codes_index_select(iid, index_keys[i], prod[i])
    774768
    775769            # get first id from current product
    776             gid = grib_new_from_index(iid)
     770            gid = codes_new_from_index(iid)
    777771
    778772            # if there is no data for this specific time combination / product
     
    782776
    783777            # create correct timestamp from the three time informations
    784             cdate = str(grib_get(gid, 'date'))
    785             ctime = '{:0>2}'.format(grib_get(gid, 'time')/100)
    786             cstep = '{:0>3}'.format(grib_get(gid, 'step'))
     778            cdate = str(codes_get(gid, 'date'))
     779            ctime = '{:0>2}'.format(codes_get(gid, 'time')/100)
     780            cstep = '{:0>3}'.format(codes_get(gid, 'step'))
    787781            t_date = datetime.strptime(cdate + ctime, '%Y%m%d%H')
    788782            t_dt = t_date + timedelta(hours=int(cstep))
     
    810804
    811805            print("outputfile = " + fnout)
     806            f_handle = open(fnout, 'w')
     807            h_handle = open(hnout, 'w')
     808            g_handle = open(gnout, 'w')
    812809
    813810            # read message for message and store relevant data fields
     
    816813                if not gid:
    817814                    break
    818                 cparamId = str(grib_get(gid, 'paramId'))
    819                 step = grib_get(gid, 'step')
    820                 time = grib_get(gid, 'time')
    821                 ni = grib_get(gid, 'Ni')
    822                 nj = grib_get(gid, 'Nj')
     815                cparamId = str(codes_get(gid, 'paramId'))
     816                step = codes_get(gid, 'step')
     817                time = codes_get(gid, 'time')
     818                ni = codes_get(gid, 'Ni')
     819                nj = codes_get(gid, 'Nj')
    823820                if cparamId in valsdict.keys():
    824                     values = grib_get_values(gid)
     821                    values = codes_get_values(gid)
    825822                    vdp = valsdict[cparamId]
    826823                    svdp = svalsdict[cparamId]
     
    842839                          values[0], np.std(values))
    843840
    844                     # len(svdp) correspond to the time
     841                    # len(svdp) corresponds to the time
    845842                    if len(svdp) >= 3:
    846843                        if len(svdp) > 3:
     
    860857                                values = svdp[0]
    861858
    862                         grib_set_values(gid, values)
     859                        codes_set_values(gid, values)
    863860
    864861                        if c.maxstep > 12:
    865                             grib_set(gid, 'step', max(0, step-2*int(c.dtime)))
     862                            codes_set(gid, 'step', max(0, step-2*int(c.dtime)))
    866863                        else:
    867                             grib_set(gid, 'step', 0)
    868                             grib_set(gid, 'time', t_m2dt.hour*100)
    869                             grib_set(gid, 'date', int(t_m2dt.strftime('%Y%m%d')))
    870 
    871                         with open(fnout, 'w') as f_handle:
    872                             grib_write(gid, f_handle)
     864                            codes_set(gid, 'step', 0)
     865                            codes_set(gid, 'time', t_m2dt.hour*100)
     866                            codes_set(gid, 'date', int(t_m2dt.strftime('%Y%m%d')))
     867
     868                        codes_write(gid, f_handle)
    873869
    874870                        if c.basetime:
     
    890886
    891887                            values = svdp[3]
    892                             grib_set_values(gid, values)
    893                             grib_set(gid, 'step', 0)
     888                            codes_set_values(gid, values)
     889                            codes_set(gid, 'step', 0)
    894890                            truedatetime = t_m2dt + timedelta(hours=
    895891                                                              2*int(c.dtime))
    896                             grib_set(gid, 'time', truedatetime.hour * 100)
    897                             grib_set(gid, 'date', truedatetime.year * 10000 +
     892                            codes_set(gid, 'time', truedatetime.hour * 100)
     893                            codes_set(gid, 'date', truedatetime.year * 10000 +
    898894                                      truedatetime.month * 100 +
    899895                                      truedatetime.day)
    900                             with open(hnout, 'w') as h_handle:
    901                                 grib_write(gid, h_handle)
     896                            codes_write(gid, h_handle)
    902897
    903898                            #values = (svdp[1]+svdp[2])/2.
     
    907902                                values = disaggregation.dapoly(list(reversed(svdp)))
    908903
    909                             grib_set(gid, 'step', 0)
     904                            codes_set(gid, 'step', 0)
    910905                            truedatetime = t_m2dt + timedelta(hours=int(c.dtime))
    911                             grib_set(gid, 'time', truedatetime.hour * 100)
    912                             grib_set(gid, 'date', truedatetime.year * 10000 +
    913                                      truedatetime.month * 100 +
    914                                      truedatetime.day)
    915                             grib_set_values(gid, values)
    916                             with open(gnout, 'w') as g_handle:
    917                                 grib_write(gid, g_handle)
    918 
    919                 grib_release(gid)
    920 
    921                 gid = grib_new_from_index(iid)
    922 
    923         grib_index_release(iid)
     906                            codes_set(gid, 'time', truedatetime.hour * 100)
     907                            codes_set(gid, 'date', truedatetime.year * 10000 +
     908                                      truedatetime.month * 100 +
     909                                      truedatetime.day)
     910                            codes_set_values(gid, values)
     911                            codes_write(gid, g_handle)
     912
     913                codes_release(gid)
     914
     915                gid = codes_new_from_index(iid)
     916
     917            f_handle.close()
     918            g_handle.close()
     919            h_handle.close()
     920
     921        codes_index_release(iid)
    924922
    925923        return
     
    992990
    993991            for i in range(len(index_keys)):
    994                 grib_index_select(iid, index_keys[i], prod[i])
     992                codes_index_select(iid, index_keys[i], prod[i])
    995993
    996994            # get first id from current product
    997             gid = grib_new_from_index(iid)
     995            gid = codes_new_from_index(iid)
    998996
    999997            # if there is no data for this specific time combination / product
     
    10101008
    10111009            # create correct timestamp from the three time informations
    1012             cdate = str(grib_get(gid, 'date'))
    1013             ctime = '{:0>2}'.format(grib_get(gid, 'time')/100)
    1014             cstep = '{:0>3}'.format(grib_get(gid, 'step'))
     1010            cdate = str(codes_get(gid, 'date'))
     1011            ctime = '{:0>2}'.format(codes_get(gid, 'time')/100)
     1012            cstep = '{:0>3}'.format(codes_get(gid, 'step'))
    10151013            timestamp = datetime.strptime(cdate + ctime, '%Y%m%d%H')
    10161014            timestamp += timedelta(hours=int(cstep))
     
    10401038                if not gid:
    10411039                    break
    1042                 paramId = grib_get(gid, 'paramId')
    1043                 gridtype = grib_get(gid, 'gridType')
    1044                 levtype = grib_get(gid, 'typeOfLevel')
     1040                paramId = codes_get(gid, 'paramId')
     1041                gridtype = codes_get(gid, 'gridType')
     1042                levtype = codes_get(gid, 'typeOfLevel')
    10451043                if paramId == 77: # ETADOT
    1046                     grib_write(gid, fdict['21'])
     1044                    codes_write(gid, fdict['21'])
    10471045                elif paramId == 130: # T
    1048                     grib_write(gid, fdict['11'])
     1046                    codes_write(gid, fdict['11'])
    10491047                elif paramId == 131 or paramId == 132: # U, V wind component
    1050                     grib_write(gid, fdict['10'])
     1048                    codes_write(gid, fdict['10'])
    10511049                elif paramId == 133 and gridtype != 'reduced_gg': # Q
    1052                     grib_write(gid, fdict['17'])
     1050                    codes_write(gid, fdict['17'])
    10531051                elif paramId == 133 and gridtype == 'reduced_gg': # Q, gaussian
    1054                     grib_write(gid, fdict['18'])
     1052                    codes_write(gid, fdict['18'])
    10551053                elif paramId == 135: # W
    1056                     grib_write(gid, fdict['19'])
     1054                    codes_write(gid, fdict['19'])
    10571055                elif paramId == 152: # LNSP
    1058                     grib_write(gid, fdict['12'])
     1056                    codes_write(gid, fdict['12'])
    10591057                elif paramId == 155 and gridtype == 'sh': # D
    1060                     grib_write(gid, fdict['13'])
     1058                    codes_write(gid, fdict['13'])
    10611059                elif paramId == 246 or paramId == 247: # CLWC, CIWC
    10621060                    # sum cloud liquid water and ice
    10631061                    if scwc is None:
    1064                         scwc = grib_get_values(gid)
     1062                        scwc = codes_get_values(gid)
    10651063                    else:
    1066                         scwc += grib_get_values(gid)
    1067                         grib_set_values(gid, scwc)
    1068                         grib_set(gid, 'paramId', 201031)
    1069                         grib_write(gid, fdict['22'])
     1064                        scwc += codes_get_values(gid)
     1065                        codes_set_values(gid, scwc)
     1066                        codes_set(gid, 'paramId', 201031)
     1067                        codes_write(gid, fdict['22'])
    10701068                elif c.wrf and paramId in [129, 138, 155] and \
    10711069                      levtype == 'hybrid': # Z, VO, D
     
    10771075                        # SD/MSL/TCC/10U/10V/2T/2D/Z/LSM/SDOR/CVL/CVH/SR
    10781076                        # and all ADDPAR parameter
    1079                         grib_write(gid, fdict['16'])
     1077                        codes_write(gid, fdict['16'])
    10801078                        savedfields.append(paramId)
    10811079                    else:
     
    10871085                        if levtype == 'hybrid' and \
    10881086                           paramId in [129, 130, 131, 132, 133, 138, 155]:
    1089                             grib_write(gid, fwrf)
     1087                            codes_write(gid, fwrf)
    10901088                        # sfc layer
    10911089                        elif paramId in wrfpars:
    1092                             grib_write(gid, fwrf)
     1090                            codes_write(gid, fwrf)
    10931091                except AttributeError:
    10941092                    pass
    10951093
    1096                 grib_release(gid)
    1097                 gid = grib_new_from_index(iid)
     1094                codes_release(gid)
     1095                gid = codes_new_from_index(iid)
    10981096
    10991097            for f in fdict.values():
     
    11491147            fwrf.close()
    11501148
    1151         grib_index_release(iid)
     1149        codes_index_release(iid)
    11521150
    11531151        return
     
    11901188
    11911189            if c.format.lower() == 'grib2':
    1192                 p = subprocess.check_call(['grib_set', '-s', 'edition=2,',
     1190                p = subprocess.check_call(['codes_set', '-s', 'edition=2,',
    11931191                                           'productDefinitionTemplateNumber=8',
    11941192                                           ofile, ofile + '_2'])
  • source/python/classes/GribTools.py

    r274f9ef r2e62398  
    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
    50 
    51 
    52 # from eccodes import (codes_grib_new_from_file, codes_is_defined, codes_get,
    53                      # codes_release, codes_set, codes_write, codes_index_read,
    54                      # codes_index_new_from_file, codes_index_add_file,
    55                      # codes_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)
    5651
    5752# ------------------------------------------------------------------------------
     
    109104
    110105        while 1:
    111             gid = grib_new_from_file(fileid)
     106            gid = codes_new_from_file(fileid)
    112107
    113108            if gid is None:
     
    121116            i = 0
    122117            for wherekey in wherekeynames:
    123                 if not grib_is_defined(gid, wherekey):
     118                if not codes_is_defined(gid, wherekey):
    124119                    raise Exception("where key was not defined")
    125120
    126121                select = (select and (str(wherekeyvalues[i]) ==
    127                                       str(grib_get(gid, wherekey))))
     122                                      str(codes_get(gid, wherekey))))
    128123                i += 1
    129124
     
    131126                llist = []
    132127                for key in keynames:
    133                     llist.extend([str(grib_get(gid, key))])
     128                    llist.extend([str(codes_get(gid, key))])
    134129                return_list.append(llist)
    135130
    136             grib_release(gid)
     131            codes_release(gid)
    137132
    138133        fileid.close()
     
    182177
    183178        while 1:
    184             gid = grib_new_from_file(fin)
     179            gid = codes_new_from_file(fin)
    185180
    186181            if gid is None:
     
    193188            i = 0
    194189            for wherekey in wherekeynames:
    195                 if not grib_is_defined(gid, wherekey):
     190                if not codes_is_defined(gid, wherekey):
    196191                    raise Exception("where Key was not defined")
    197192
    198193                select = (select and (str(wherekeyvalues[i]) ==
    199                                       str(grib_get(gid, wherekey))))
     194                                      str(codes_get(gid, wherekey))))
    200195                i += 1
    201196
     
    203198                i = 0
    204199                for key in keynames:
    205                     grib_set(gid, key, keyvalues[i])
     200                    codes_set(gid, key, keyvalues[i])
    206201                    i += 1
    207202
    208             grib_write(gid, fout)
    209 
    210             grib_release(gid)
     203            codes_write(gid, fout)
     204
     205            codes_release(gid)
    211206
    212207        fin.close()
     
    250245
    251246        while 1:
    252             gid = grib_new_from_file(fin)
     247            gid = codes_new_from_file(fin)
    253248
    254249            if gid is None:
     
    261256            i = 0
    262257            for key in keynames:
    263                 if not grib_is_defined(gid, key):
     258                if not codes_is_defined(gid, key):
    264259                    raise Exception("Key was not defined")
    265260
    266261                if selectWhere:
    267262                    select = (select and (str(keyvalues[i]) ==
    268                                           str(grib_get(gid, key))))
     263                                          str(codes_get(gid, key))))
    269264                else:
    270265                    select = (select and (str(keyvalues[i]) !=
    271                                           str(grib_get(gid, key))))
     266                                          str(codes_get(gid, key))))
    272267                i += 1
    273268
    274269            if select:
    275                 grib_write(gid, fout)
    276 
    277             grib_release(gid)
     270                codes_write(gid, fout)
     271
     272            codes_release(gid)
    278273
    279274        fin.close()
     
    306301
    307302        if os.path.exists(index_file):
    308             iid = grib_index_read(index_file)
     303            iid = codes_index_read(index_file)
    309304            print("Use existing index file: %s " % (index_file))
    310305        else:
     
    312307                print("Inputfile: %s " % (filename))
    313308                if iid is None:
    314                     iid = grib_index_new_from_file(filename, index_keys)
     309                    iid = codes_index_new_from_file(filename, index_keys)
    315310                else:
    316                     grib_index_add_file(iid, filename)
     311                    codes_index_add_file(iid, filename)
    317312
    318313            if iid is not None:
    319                 grib_index_write(iid, index_file)
     314                codes_index_write(iid, index_file)
    320315
    321316        print('... index done')
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG