Changeset 0934db1 in flex_extract.git for source/python/classes
- Timestamp:
- Oct 12, 2018, 7:23:41 PM (6 years ago)
- Branches:
- master, ctbto, dev
- Children:
- c97d8ec
- Parents:
- 40408cb
- Location:
- source/python/classes
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
source/python/classes/EcFlexpart.py
r70fee58 r0934db1 82 82 import numpy as np 83 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, codes_index_get) 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) 88 92 89 93 # software specific classes and modules from flex_extract … … 433 437 #index_vals.append(grib_index_get(iid, key)) 434 438 #print(index_vals[-1]) 435 key_vals = codes_index_get(iid, key)439 key_vals = grib_index_get(iid, key) 436 440 print(key_vals) 437 441 # have to sort the steps for disaggregation, … … 791 795 792 796 for i in range(len(index_keys)): 793 codes_index_select(iid, index_keys[i], prod[i])797 grib_index_select(iid, index_keys[i], prod[i]) 794 798 795 799 # get first id from current product 796 gid = codes_new_from_index(iid)800 gid = grib_new_from_index(iid) 797 801 798 802 # if there is no data for this specific time combination / product … … 802 806 803 807 # create correct timestamp from the three time informations 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'))808 cdate = str(grib_get(gid, 'date')) 809 ctime = '{:0>2}'.format(grib_get(gid, 'time')/100) 810 cstep = '{:0>3}'.format(grib_get(gid, 'step')) 807 811 t_date = datetime.strptime(cdate + ctime, '%Y%m%d%H') 808 812 t_dt = t_date + timedelta(hours=int(cstep)) … … 836 840 if not gid: 837 841 break 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')842 cparamId = str(grib_get(gid, 'paramId')) 843 step = grib_get(gid, 'step') 844 time = grib_get(gid, 'time') 845 ni = grib_get(gid, 'Ni') 846 nj = grib_get(gid, 'Nj') 843 847 if cparamId in valsdict.keys(): 844 values = codes_get_values(gid)848 values = grib_get_values(gid) 845 849 vdp = valsdict[cparamId] 846 850 svdp = svalsdict[cparamId] … … 881 885 values = svdp[0] 882 886 883 codes_set_values(gid, values)887 grib_set_values(gid, values) 884 888 885 889 if c.maxstep > 12: 886 codes_set(gid, 'step', max(0, step-2*int(c.dtime)))890 grib_set(gid, 'step', max(0, step-2*int(c.dtime))) 887 891 else: 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')))892 grib_set(gid, 'step', 0) 893 grib_set(gid, 'time', t_m2dt.hour*100) 894 grib_set(gid, 'date', int(t_m2dt.strftime('%Y%m%d'))) 891 895 892 896 with open(fnout, 'w') as f_handle: 893 codes_write(gid, f_handle)897 grib_write(gid, f_handle) 894 898 895 899 if c.basetime: … … 911 915 912 916 values = svdp[3] 913 codes_set_values(gid, values)914 codes_set(gid, 'step', 0)917 grib_set_values(gid, values) 918 grib_set(gid, 'step', 0) 915 919 truedatetime = t_m2dt + timedelta(hours= 916 920 2*int(c.dtime)) 917 codes_set(gid, 'time', truedatetime.hour * 100)918 codes_set(gid, 'date', truedatetime.year * 10000 +921 grib_set(gid, 'time', truedatetime.hour * 100) 922 grib_set(gid, 'date', truedatetime.year * 10000 + 919 923 truedatetime.month * 100 + 920 924 truedatetime.day) 921 925 with open(hnout, 'w') as h_handle: 922 codes_write(gid, h_handle)926 grib_write(gid, h_handle) 923 927 924 928 #values = (svdp[1]+svdp[2])/2. … … 928 932 values = disaggregation.dapoly(list(reversed(svdp))) 929 933 930 codes_set(gid, 'step', 0)934 grib_set(gid, 'step', 0) 931 935 truedatetime = t_m2dt + timedelta(hours=int(c.dtime)) 932 codes_set(gid, 'time', truedatetime.hour * 100)933 codes_set(gid, 'date', truedatetime.year * 10000 +936 grib_set(gid, 'time', truedatetime.hour * 100) 937 grib_set(gid, 'date', truedatetime.year * 10000 + 934 938 truedatetime.month * 100 + 935 939 truedatetime.day) 936 codes_set_values(gid, values)940 grib_set_values(gid, values) 937 941 with open(gnout, 'w') as g_handle: 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)942 grib_write(gid, g_handle) 943 944 grib_release(gid) 945 946 gid = grib_new_from_index(iid) 947 948 grib_index_release(iid) 945 949 946 950 return … … 1016 1020 1017 1021 for i in range(len(index_keys)): 1018 codes_index_select(iid, index_keys[i], prod[i])1022 grib_index_select(iid, index_keys[i], prod[i]) 1019 1023 1020 1024 # get first id from current product 1021 gid = codes_new_from_index(iid)1025 gid = grib_new_from_index(iid) 1022 1026 1023 1027 # if there is no data for this specific time combination / product … … 1034 1038 1035 1039 # create correct timestamp from the three time informations 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'))1040 cdate = str(grib_get(gid, 'date')) 1041 ctime = '{:0>2}'.format(grib_get(gid, 'time')/100) 1042 cstep = '{:0>3}'.format(grib_get(gid, 'step')) 1039 1043 timestamp = datetime.strptime(cdate + ctime, '%Y%m%d%H') 1040 1044 timestamp += timedelta(hours=int(cstep)) … … 1064 1068 if not gid: 1065 1069 break 1066 paramId = codes_get(gid, 'paramId')1067 gridtype = codes_get(gid, 'gridType')1068 levtype = codes_get(gid, 'typeOfLevel')1070 paramId = grib_get(gid, 'paramId') 1071 gridtype = grib_get(gid, 'gridType') 1072 levtype = grib_get(gid, 'typeOfLevel') 1069 1073 if paramId == 77: # ETADOT 1070 codes_write(gid, fdict['21'])1074 grib_write(gid, fdict['21']) 1071 1075 elif paramId == 130: # T 1072 codes_write(gid, fdict['11'])1076 grib_write(gid, fdict['11']) 1073 1077 elif paramId == 131 or paramId == 132: # U, V wind component 1074 codes_write(gid, fdict['10'])1078 grib_write(gid, fdict['10']) 1075 1079 elif paramId == 133 and gridtype != 'reduced_gg': # Q 1076 codes_write(gid, fdict['17'])1080 grib_write(gid, fdict['17']) 1077 1081 elif paramId == 133 and gridtype == 'reduced_gg': # Q, gaussian 1078 codes_write(gid, fdict['18'])1082 grib_write(gid, fdict['18']) 1079 1083 elif paramId == 135: # W 1080 codes_write(gid, fdict['19'])1084 grib_write(gid, fdict['19']) 1081 1085 elif paramId == 152: # LNSP 1082 codes_write(gid, fdict['12'])1086 grib_write(gid, fdict['12']) 1083 1087 elif paramId == 155 and gridtype == 'sh': # D 1084 codes_write(gid, fdict['13'])1088 grib_write(gid, fdict['13']) 1085 1089 elif paramId == 246 or paramId == 247: # CLWC, CIWC 1086 1090 # sum cloud liquid water and ice 1087 if not scwc:1088 scwc = codes_get_values(gid)1091 if scwc is None: 1092 scwc = grib_get_values(gid) 1089 1093 else: 1090 scwc += codes_get_values(gid)1091 codes_set_values(gid, scwc)1092 codes_set(gid, 'paramId', 201031)1093 codes_write(gid, fdict['22'])1094 scwc += grib_get_values(gid) 1095 grib_set_values(gid, scwc) 1096 grib_set(gid, 'paramId', 201031) 1097 grib_write(gid, fdict['22']) 1094 1098 elif c.wrf and paramId in [129, 138, 155] and \ 1095 1099 levtype == 'hybrid': # Z, VO, D … … 1101 1105 # SD/MSL/TCC/10U/10V/2T/2D/Z/LSM/SDOR/CVL/CVH/SR 1102 1106 # and all ADDPAR parameter 1103 codes_write(gid, fdict['16'])1107 grib_write(gid, fdict['16']) 1104 1108 savedfields.append(paramId) 1105 1109 else: … … 1111 1115 if levtype == 'hybrid' and \ 1112 1116 paramId in [129, 130, 131, 132, 133, 138, 155]: 1113 codes_write(gid, fwrf)1117 grib_write(gid, fwrf) 1114 1118 # sfc layer 1115 1119 elif paramId in wrfpars: 1116 codes_write(gid, fwrf)1120 grib_write(gid, fwrf) 1117 1121 except AttributeError: 1118 1122 pass 1119 1123 1120 codes_release(gid)1121 gid = codes_new_from_index(iid)1124 grib_release(gid) 1125 gid = grib_new_from_index(iid) 1122 1126 1123 1127 for f in fdict.values(): … … 1173 1177 fwrf.close() 1174 1178 1175 codes_index_release(iid)1179 grib_index_release(iid) 1176 1180 1177 1181 return -
source/python/classes/GribTools.py
raa275fc r0934db1 44 44 # ------------------------------------------------------------------------------ 45 45 import os 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) 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) 51 56 52 57 # ------------------------------------------------------------------------------ … … 105 110 106 111 while 1: 107 gid = codes_new_from_file(fileid)112 gid = grib_new_from_file(fileid) 108 113 109 114 if gid is None: … … 117 122 i = 0 118 123 for wherekey in wherekeynames: 119 if not codes_is_defined(gid, wherekey):124 if not grib_is_defined(gid, wherekey): 120 125 raise Exception("where key was not defined") 121 126 122 127 select = (select and (str(wherekeyvalues[i]) == 123 str( codes_get(gid, wherekey))))128 str(grib_get(gid, wherekey)))) 124 129 i += 1 125 130 … … 127 132 llist = [] 128 133 for key in keynames: 129 llist.extend([str( codes_get(gid, key))])134 llist.extend([str(grib_get(gid, key))]) 130 135 return_list.append(llist) 131 136 132 codes_release(gid)137 grib_release(gid) 133 138 134 139 fileid.close() … … 179 184 180 185 while 1: 181 gid = codes_new_from_file(fin)186 gid = grib_new_from_file(fin) 182 187 183 188 if gid is None: … … 190 195 i = 0 191 196 for wherekey in wherekeynames: 192 if not codes_is_defined(gid, wherekey):197 if not grib_is_defined(gid, wherekey): 193 198 raise Exception("where Key was not defined") 194 199 195 200 select = (select and (str(wherekeyvalues[i]) == 196 str( codes_get(gid, wherekey))))201 str(grib_get(gid, wherekey)))) 197 202 i += 1 198 203 … … 200 205 i = 0 201 206 for key in keynames: 202 codes_set(gid, key, keyvalues[i])207 grib_set(gid, key, keyvalues[i]) 203 208 i += 1 204 209 205 codes_write(gid, fout)206 207 codes_release(gid)210 grib_write(gid, fout) 211 212 grib_release(gid) 208 213 209 214 fin.close() … … 246 251 247 252 while 1: 248 gid = codes_new_from_file(fin)253 gid = grib_new_from_file(fin) 249 254 250 255 if gid is None: … … 257 262 i = 0 258 263 for key in keynames: 259 if not codes_is_defined(gid, key):264 if not grib_is_defined(gid, key): 260 265 raise Exception("Key was not defined") 261 266 262 267 if selectWhere: 263 268 select = (select and (str(keyvalues[i]) == 264 str( codes_get(gid, key))))269 str(grib_get(gid, key)))) 265 270 else: 266 271 select = (select and (str(keyvalues[i]) != 267 str( codes_get(gid, key))))272 str(grib_get(gid, key)))) 268 273 i += 1 269 274 270 275 if select: 271 codes_write(gid, fout)272 273 codes_release(gid)276 grib_write(gid, fout) 277 278 grib_release(gid) 274 279 275 280 fin.close() … … 302 307 303 308 if os.path.exists(index_file): 304 iid = codes_index_read(index_file)309 iid = grib_index_read(index_file) 305 310 print("Use existing index file: %s " % (index_file)) 306 311 else: … … 308 313 print("Inputfile: %s " % (filename)) 309 314 if iid is None: 310 iid = codes_index_new_from_file(filename, index_keys)315 iid = grib_index_new_from_file(filename, index_keys) 311 316 else: 312 codes_index_add_file(iid, filename)317 grib_index_add_file(iid, filename) 313 318 314 319 if iid is not None: 315 codes_index_write(iid, index_file)320 grib_index_write(iid, index_file) 316 321 317 322 print('... index done')
Note: See TracChangeset
for help on using the changeset viewer.