- Timestamp:
- Oct 9, 2018, 9:13:15 PM (6 years ago)
- Branches:
- master, ctbto, dev
- Children:
- efba13f
- Parents:
- c5074d2
- Location:
- source/python/classes
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
source/python/classes/EcFlexpart.py
rc5074d2 raa275fc 81 81 from datetime import datetime, timedelta 82 82 import 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 84 from 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) 86 88 87 89 # software specific classes and modules from flex_extract … … 789 791 790 792 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]) 792 794 793 795 # get first id from current product 794 gid = grib_new_from_index(iid)796 gid = codes_new_from_index(iid) 795 797 796 798 # if there is no data for this specific time combination / product … … 800 802 801 803 # 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')) 805 807 t_date = datetime.strptime(cdate + ctime, '%Y%m%d%H') 806 808 t_dt = t_date + timedelta(hours=int(cstep)) … … 834 836 if not gid: 835 837 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') 841 843 if cparamId in valsdict.keys(): 842 values = grib_get_values(gid)844 values = codes_get_values(gid) 843 845 vdp = valsdict[cparamId] 844 846 svdp = svalsdict[cparamId] … … 879 881 values = svdp[0] 880 882 881 grib_set_values(gid, values)883 codes_set_values(gid, values) 882 884 883 885 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))) 885 887 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'))) 889 891 890 892 with open(fnout, 'w') as f_handle: 891 grib_write(gid, f_handle)893 codes_write(gid, f_handle) 892 894 893 895 if c.basetime: … … 909 911 910 912 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) 913 915 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) 919 921 with open(hnout, 'w') as h_handle: 920 grib_write(gid, h_handle)922 codes_write(gid, h_handle) 921 923 922 924 #values = (svdp[1]+svdp[2])/2. … … 926 928 values = disaggregation.dapoly(list(reversed(svdp))) 927 929 928 grib_set(gid, 'step', 0)930 codes_set(gid, 'step', 0) 929 931 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 + 932 934 truedatetime.month * 100 + 933 935 truedatetime.day) 934 grib_set_values(gid, values)936 codes_set_values(gid, values) 935 937 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) 943 945 944 946 return … … 1014 1016 1015 1017 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]) 1017 1019 1018 1020 # get first id from current product 1019 gid = grib_new_from_index(iid)1021 gid = codes_new_from_index(iid) 1020 1022 1021 1023 # if there is no data for this specific time combination / product … … 1032 1034 1033 1035 # 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')) 1037 1039 timestamp = datetime.strptime(cdate + ctime, '%Y%m%d%H') 1038 1040 timestamp += timedelta(hours=int(cstep)) … … 1062 1064 if not gid: 1063 1065 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') 1067 1069 if paramId == 77: # ETADOT 1068 grib_write(gid, fdict['21'])1070 codes_write(gid, fdict['21']) 1069 1071 elif paramId == 130: # T 1070 grib_write(gid, fdict['11'])1072 codes_write(gid, fdict['11']) 1071 1073 elif paramId == 131 or paramId == 132: # U, V wind component 1072 grib_write(gid, fdict['10'])1074 codes_write(gid, fdict['10']) 1073 1075 elif paramId == 133 and gridtype != 'reduced_gg': # Q 1074 grib_write(gid, fdict['17'])1076 codes_write(gid, fdict['17']) 1075 1077 elif paramId == 133 and gridtype == 'reduced_gg': # Q, gaussian 1076 grib_write(gid, fdict['18'])1078 codes_write(gid, fdict['18']) 1077 1079 elif paramId == 135: # W 1078 grib_write(gid, fdict['19'])1080 codes_write(gid, fdict['19']) 1079 1081 elif paramId == 152: # LNSP 1080 grib_write(gid, fdict['12'])1082 codes_write(gid, fdict['12']) 1081 1083 elif paramId == 155 and gridtype == 'sh': # D 1082 grib_write(gid, fdict['13'])1084 codes_write(gid, fdict['13']) 1083 1085 elif paramId == 246 or paramId == 247: # CLWC, CIWC 1084 1086 # sum cloud liquid water and ice 1085 1087 if not scwc: 1086 scwc = grib_get_values(gid)1088 scwc = codes_get_values(gid) 1087 1089 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']) 1092 1094 elif c.wrf and paramId in [129, 138, 155] and \ 1093 1095 levtype == 'hybrid': # Z, VO, D … … 1099 1101 # SD/MSL/TCC/10U/10V/2T/2D/Z/LSM/SDOR/CVL/CVH/SR 1100 1102 # and all ADDPAR parameter 1101 grib_write(gid, fdict['16'])1103 codes_write(gid, fdict['16']) 1102 1104 savedfields.append(paramId) 1103 1105 else: … … 1109 1111 if levtype == 'hybrid' and \ 1110 1112 paramId in [129, 130, 131, 132, 133, 138, 155]: 1111 grib_write(gid, fwrf)1113 codes_write(gid, fwrf) 1112 1114 # sfc layer 1113 1115 elif paramId in wrfpars: 1114 grib_write(gid, fwrf)1116 codes_write(gid, fwrf) 1115 1117 except AttributeError: 1116 1118 pass 1117 1119 1118 grib_release(gid)1119 gid = grib_new_from_index(iid)1120 codes_release(gid) 1121 gid = codes_new_from_index(iid) 1120 1122 1121 1123 for f in fdict.values(): … … 1171 1173 fwrf.close() 1172 1174 1173 grib_index_release(iid)1175 codes_index_release(iid) 1174 1176 1175 1177 return -
source/python/classes/GribTools.py
r25b14be raa275fc 44 44 # ------------------------------------------------------------------------------ 45 45 import 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 47 from 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) 50 51 51 52 # ------------------------------------------------------------------------------ … … 104 105 105 106 while 1: 106 gid _in = grib_new_from_file(fileid)107 108 if gid _inis None:107 gid = codes_new_from_file(fileid) 108 109 if gid is None: 109 110 break 110 111 … … 116 117 i = 0 117 118 for wherekey in wherekeynames: 118 if not grib_is_defined(gid_in, wherekey):119 if not codes_is_defined(gid, wherekey): 119 120 raise Exception("where key was not defined") 120 121 121 122 select = (select and (str(wherekeyvalues[i]) == 122 str( grib_get(gid_in, wherekey))))123 str(codes_get(gid, wherekey)))) 123 124 i += 1 124 125 … … 126 127 llist = [] 127 128 for key in keynames: 128 llist.extend([str( grib_get(gid_in, key))])129 llist.extend([str(codes_get(gid, key))]) 129 130 return_list.append(llist) 130 131 131 grib_release(gid_in)132 codes_release(gid) 132 133 133 134 fileid.close() … … 178 179 179 180 while 1: 180 gid _in = grib_new_from_file(fin)181 182 if gid _inis None:181 gid = codes_new_from_file(fin) 182 183 if gid is None: 183 184 break 184 185 … … 189 190 i = 0 190 191 for wherekey in wherekeynames: 191 if not grib_is_defined(gid_in, wherekey):192 if not codes_is_defined(gid, wherekey): 192 193 raise Exception("where Key was not defined") 193 194 194 195 select = (select and (str(wherekeyvalues[i]) == 195 str( grib_get(gid_in, wherekey))))196 str(codes_get(gid, wherekey)))) 196 197 i += 1 197 198 … … 199 200 i = 0 200 201 for key in keynames: 201 grib_set(gid_in, key, keyvalues[i])202 codes_set(gid, key, keyvalues[i]) 202 203 i += 1 203 204 204 grib_write(gid_in, fout)205 206 grib_release(gid_in)205 codes_write(gid, fout) 206 207 codes_release(gid) 207 208 208 209 fin.close() … … 245 246 246 247 while 1: 247 gid _in = grib_new_from_file(fin)248 249 if gid _inis None:248 gid = codes_new_from_file(fin) 249 250 if gid is None: 250 251 break 251 252 … … 256 257 i = 0 257 258 for key in keynames: 258 if not grib_is_defined(gid_in, key):259 if not codes_is_defined(gid, key): 259 260 raise Exception("Key was not defined") 260 261 261 262 if selectWhere: 262 263 select = (select and (str(keyvalues[i]) == 263 str( grib_get(gid_in, key))))264 str(codes_get(gid, key)))) 264 265 else: 265 266 select = (select and (str(keyvalues[i]) != 266 str( grib_get(gid_in, key))))267 str(codes_get(gid, key)))) 267 268 i += 1 268 269 269 270 if select: 270 grib_write(gid_in, fout)271 272 grib_release(gid_in)271 codes_write(gid, fout) 272 273 codes_release(gid) 273 274 274 275 fin.close() … … 301 302 302 303 if os.path.exists(index_file): 303 iid = grib_index_read(index_file)304 iid = codes_index_read(index_file) 304 305 print("Use existing index file: %s " % (index_file)) 305 306 else: … … 307 308 print("Inputfile: %s " % (filename)) 308 309 if iid is None: 309 iid = grib_index_new_from_file(filename, index_keys)310 iid = codes_index_new_from_file(filename, index_keys) 310 311 else: 311 grib_index_add_file(iid, filename)312 codes_index_add_file(iid, filename) 312 313 313 314 if iid is not None: 314 grib_index_write(iid, index_file)315 codes_index_write(iid, index_file) 315 316 316 317 print('... index done')
Note: See TracChangeset
for help on using the changeset viewer.