Changeset 2e62398 in flex_extract.git
- Timestamp:
- Nov 16, 2018, 8:31:15 PM (5 years ago)
- Branches:
- master, ctbto, dev
- Children:
- 403cbf1
- Parents:
- adb0b63
- Location:
- source/python/classes
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
source/python/classes/EcFlexpart.py
r96e1533 r2e62398 82 82 import numpy as np 83 83 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) 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) 92 88 93 89 # software specific classes and modules from flex_extract … … 403 399 Return 404 400 ------ 405 iid : :obj:` grib_index`401 iid : :obj:`codes_index` 406 402 This is a grib specific index structure to access 407 403 messages in a file. … … 427 423 index_vals = [] 428 424 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) 432 426 print(key_vals) 433 427 # have to sort the steps for disaggregation, … … 771 765 772 766 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]) 774 768 775 769 # get first id from current product 776 gid = grib_new_from_index(iid)770 gid = codes_new_from_index(iid) 777 771 778 772 # if there is no data for this specific time combination / product … … 782 776 783 777 # 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')) 787 781 t_date = datetime.strptime(cdate + ctime, '%Y%m%d%H') 788 782 t_dt = t_date + timedelta(hours=int(cstep)) … … 810 804 811 805 print("outputfile = " + fnout) 806 f_handle = open(fnout, 'w') 807 h_handle = open(hnout, 'w') 808 g_handle = open(gnout, 'w') 812 809 813 810 # read message for message and store relevant data fields … … 816 813 if not gid: 817 814 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') 823 820 if cparamId in valsdict.keys(): 824 values = grib_get_values(gid)821 values = codes_get_values(gid) 825 822 vdp = valsdict[cparamId] 826 823 svdp = svalsdict[cparamId] … … 842 839 values[0], np.std(values)) 843 840 844 # len(svdp) correspond to the time841 # len(svdp) corresponds to the time 845 842 if len(svdp) >= 3: 846 843 if len(svdp) > 3: … … 860 857 values = svdp[0] 861 858 862 grib_set_values(gid, values)859 codes_set_values(gid, values) 863 860 864 861 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))) 866 863 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) 873 869 874 870 if c.basetime: … … 890 886 891 887 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) 894 890 truedatetime = t_m2dt + timedelta(hours= 895 891 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 + 898 894 truedatetime.month * 100 + 899 895 truedatetime.day) 900 with open(hnout, 'w') as h_handle: 901 grib_write(gid, h_handle) 896 codes_write(gid, h_handle) 902 897 903 898 #values = (svdp[1]+svdp[2])/2. … … 907 902 values = disaggregation.dapoly(list(reversed(svdp))) 908 903 909 grib_set(gid, 'step', 0)904 codes_set(gid, 'step', 0) 910 905 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) 924 922 925 923 return … … 992 990 993 991 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]) 995 993 996 994 # get first id from current product 997 gid = grib_new_from_index(iid)995 gid = codes_new_from_index(iid) 998 996 999 997 # if there is no data for this specific time combination / product … … 1010 1008 1011 1009 # 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')) 1015 1013 timestamp = datetime.strptime(cdate + ctime, '%Y%m%d%H') 1016 1014 timestamp += timedelta(hours=int(cstep)) … … 1040 1038 if not gid: 1041 1039 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') 1045 1043 if paramId == 77: # ETADOT 1046 grib_write(gid, fdict['21'])1044 codes_write(gid, fdict['21']) 1047 1045 elif paramId == 130: # T 1048 grib_write(gid, fdict['11'])1046 codes_write(gid, fdict['11']) 1049 1047 elif paramId == 131 or paramId == 132: # U, V wind component 1050 grib_write(gid, fdict['10'])1048 codes_write(gid, fdict['10']) 1051 1049 elif paramId == 133 and gridtype != 'reduced_gg': # Q 1052 grib_write(gid, fdict['17'])1050 codes_write(gid, fdict['17']) 1053 1051 elif paramId == 133 and gridtype == 'reduced_gg': # Q, gaussian 1054 grib_write(gid, fdict['18'])1052 codes_write(gid, fdict['18']) 1055 1053 elif paramId == 135: # W 1056 grib_write(gid, fdict['19'])1054 codes_write(gid, fdict['19']) 1057 1055 elif paramId == 152: # LNSP 1058 grib_write(gid, fdict['12'])1056 codes_write(gid, fdict['12']) 1059 1057 elif paramId == 155 and gridtype == 'sh': # D 1060 grib_write(gid, fdict['13'])1058 codes_write(gid, fdict['13']) 1061 1059 elif paramId == 246 or paramId == 247: # CLWC, CIWC 1062 1060 # sum cloud liquid water and ice 1063 1061 if scwc is None: 1064 scwc = grib_get_values(gid)1062 scwc = codes_get_values(gid) 1065 1063 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']) 1070 1068 elif c.wrf and paramId in [129, 138, 155] and \ 1071 1069 levtype == 'hybrid': # Z, VO, D … … 1077 1075 # SD/MSL/TCC/10U/10V/2T/2D/Z/LSM/SDOR/CVL/CVH/SR 1078 1076 # and all ADDPAR parameter 1079 grib_write(gid, fdict['16'])1077 codes_write(gid, fdict['16']) 1080 1078 savedfields.append(paramId) 1081 1079 else: … … 1087 1085 if levtype == 'hybrid' and \ 1088 1086 paramId in [129, 130, 131, 132, 133, 138, 155]: 1089 grib_write(gid, fwrf)1087 codes_write(gid, fwrf) 1090 1088 # sfc layer 1091 1089 elif paramId in wrfpars: 1092 grib_write(gid, fwrf)1090 codes_write(gid, fwrf) 1093 1091 except AttributeError: 1094 1092 pass 1095 1093 1096 grib_release(gid)1097 gid = grib_new_from_index(iid)1094 codes_release(gid) 1095 gid = codes_new_from_index(iid) 1098 1096 1099 1097 for f in fdict.values(): … … 1149 1147 fwrf.close() 1150 1148 1151 grib_index_release(iid)1149 codes_index_release(iid) 1152 1150 1153 1151 return … … 1190 1188 1191 1189 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,', 1193 1191 'productDefinitionTemplateNumber=8', 1194 1192 ofile, ofile + '_2']) -
source/python/classes/GribTools.py
r274f9ef r2e62398 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 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 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) 56 51 57 52 # ------------------------------------------------------------------------------ … … 109 104 110 105 while 1: 111 gid = grib_new_from_file(fileid)106 gid = codes_new_from_file(fileid) 112 107 113 108 if gid is None: … … 121 116 i = 0 122 117 for wherekey in wherekeynames: 123 if not grib_is_defined(gid, wherekey):118 if not codes_is_defined(gid, wherekey): 124 119 raise Exception("where key was not defined") 125 120 126 121 select = (select and (str(wherekeyvalues[i]) == 127 str( grib_get(gid, wherekey))))122 str(codes_get(gid, wherekey)))) 128 123 i += 1 129 124 … … 131 126 llist = [] 132 127 for key in keynames: 133 llist.extend([str( grib_get(gid, key))])128 llist.extend([str(codes_get(gid, key))]) 134 129 return_list.append(llist) 135 130 136 grib_release(gid)131 codes_release(gid) 137 132 138 133 fileid.close() … … 182 177 183 178 while 1: 184 gid = grib_new_from_file(fin)179 gid = codes_new_from_file(fin) 185 180 186 181 if gid is None: … … 193 188 i = 0 194 189 for wherekey in wherekeynames: 195 if not grib_is_defined(gid, wherekey):190 if not codes_is_defined(gid, wherekey): 196 191 raise Exception("where Key was not defined") 197 192 198 193 select = (select and (str(wherekeyvalues[i]) == 199 str( grib_get(gid, wherekey))))194 str(codes_get(gid, wherekey)))) 200 195 i += 1 201 196 … … 203 198 i = 0 204 199 for key in keynames: 205 grib_set(gid, key, keyvalues[i])200 codes_set(gid, key, keyvalues[i]) 206 201 i += 1 207 202 208 grib_write(gid, fout)209 210 grib_release(gid)203 codes_write(gid, fout) 204 205 codes_release(gid) 211 206 212 207 fin.close() … … 250 245 251 246 while 1: 252 gid = grib_new_from_file(fin)247 gid = codes_new_from_file(fin) 253 248 254 249 if gid is None: … … 261 256 i = 0 262 257 for key in keynames: 263 if not grib_is_defined(gid, key):258 if not codes_is_defined(gid, key): 264 259 raise Exception("Key was not defined") 265 260 266 261 if selectWhere: 267 262 select = (select and (str(keyvalues[i]) == 268 str( grib_get(gid, key))))263 str(codes_get(gid, key)))) 269 264 else: 270 265 select = (select and (str(keyvalues[i]) != 271 str( grib_get(gid, key))))266 str(codes_get(gid, key)))) 272 267 i += 1 273 268 274 269 if select: 275 grib_write(gid, fout)276 277 grib_release(gid)270 codes_write(gid, fout) 271 272 codes_release(gid) 278 273 279 274 fin.close() … … 306 301 307 302 if os.path.exists(index_file): 308 iid = grib_index_read(index_file)303 iid = codes_index_read(index_file) 309 304 print("Use existing index file: %s " % (index_file)) 310 305 else: … … 312 307 print("Inputfile: %s " % (filename)) 313 308 if iid is None: 314 iid = grib_index_new_from_file(filename, index_keys)309 iid = codes_index_new_from_file(filename, index_keys) 315 310 else: 316 grib_index_add_file(iid, filename)311 codes_index_add_file(iid, filename) 317 312 318 313 if iid is not None: 319 grib_index_write(iid, index_file)314 codes_index_write(iid, index_file) 320 315 321 316 print('... index done')
Note: See TracChangeset
for help on using the changeset viewer.