def test_time(): cfg = load_sys_cfg() g = NAM218(cfg) cycle_start_esmf = "2005-01-05_00:00:00" cycle_start = esmf_to_utc(cycle_start_esmf) from_utc = esmf_to_utc("2005-01-05_00:00:00") to_utc = esmf_to_utc("2005-01-06_22:00:0") print(cycle_start.year, cycle_start.month, cycle_start.day, cycle_start.hour) fc_hours = int((to_utc - cycle_start).total_seconds()) / 3600 delta = from_utc - cycle_start print(str(delta)) print(delta.days, delta.seconds, delta.total_seconds()) print((to_utc - cycle_start).total_seconds()) print(timedelta_hours(to_utc - cycle_start)) print(timedelta_hours(to_utc - cycle_start, False)) fc_start, fc_hours = g.forecast_times(cycle_start, from_utc, to_utc) print('fc_start = ', fc_start) print('fc_hours = ', fc_hours) fc_list, colmet_list_utc = g.file_times(cycle_start, fc_start, fc_hours) grib_files, colmet_prefix, colmet_files = g.file_names( cycle_start, fc_list, colmet_list_utc) print('fc_list = ', fc_list) print('colmet_list_utc = ') for x in colmet_list_utc: print(x) print('grib_files = ') for x in grib_files: print(x) print('colmet_files = ') for x in colmet_files: print(colmet_prefix + '/' + x)
return False @staticmethod def _parse_header_timestamp(ts): """ Parse a timestamp in the header, example 'Tue, 12 Apr 2016 18:51:18 GMT'. :param ts: the timestamp :return: a datetime object in UTC timezone """ return datetime.strptime(ts, '%a, %d %b %Y %H:%M:%S GMT').replace(tzinfo=pytz.UTC) if __name__ == '__main__': import sys # configure the basic logger logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') if len(sys.argv) != 2: print('usage: %s <esmf_time>' % sys.argv[0]) sys.exit(1) # initialize the RTMA object with standard variables rtma = RTMA('ingest', ['utd', 'utemp', 'precipa']) # try to download them rtma.retrieve_rtma(esmf_to_utc(sys.argv[1]))
return False @staticmethod def _parse_header_timestamp(ts): """ Parse a timestamp in the header, example 'Tue, 12 Apr 2016 18:51:18 GMT'. :param ts: the timestamp :return: a datetime object in UTC timezone """ return datetime.strptime(ts, '%a, %d %b %Y %H:%M:%S GMT').replace(tzinfo=pytz.UTC) if __name__ == '__main__': import sys # configure the basic logger logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') if len(sys.argv) != 2: print(('usage: %s <esmf_time>' % sys.argv[0])) sys.exit(1) # initialize the RTMA object with standard variables rtma = RTMA('ingest', ['utd', 'utemp', 'precipa']) # try to download them rtma.retrieve_rtma(esmf_to_utc(sys.argv[1]))
) sys.exit(-1) # configure basic logger logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') sat_name = sys.argv[1] if sat_name not in vw.get_sat_wisdom_variables(): print 'Invalid instrument/satellite name!' print 'supported instrument/satellite pairs:' for sat in vw.get_sat_wisdom_variables(): print sat sys.exit(-1) from_utc = esmf_to_utc(sys.argv[2]) from_utc = from_utc.replace(tzinfo=None) to_utc = esmf_to_utc(sys.argv[3]) to_utc = to_utc.replace(tzinfo=None) ingest_dir = osp.abspath(osp.expanduser(sys.argv[4])) lonlat = [] if len(sys.argv) == 9: lonlat = [ float(sys.argv[5]), float(sys.argv[6]), float(sys.argv[7]), float(sys.argv[8]) ]
import logging import sys import os.path as osp ## Standalone script that can be used to simply download files if __name__ == '__main__': if len(sys.argv) != 5: print('Usage: %s <grib_source_name> <esmf_from_utc> <esmf_to_utc> <target_directory>' % sys.argv[0]) print(' supported GRIB sources: HRRR, NAM, NARR') sys.exit(-1) # configure the basic logger logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') grib_src_name = sys.argv[1] from_utc = esmf_to_utc(sys.argv[2]) to_utc = esmf_to_utc(sys.argv[3]) ingest_dir = sys.argv[4] grib_src = None if grib_src_name == 'HRRR': grib_src = HRRR(ingest_dir) elif grib_src_name == 'NAM': grib_src = NAM218(ingest_dir) elif grib_src_name == 'NAM227': grib_src = NAM227(ingest_dir) elif grib_src_name == 'NARR': grib_src = NARR(ingest_dir) else: raise ValueError('Invalid GRIB source %s' % grib_src_name)
if len(sys.argv) == 2: # load input JSON try: js_input = Dict(json.load(open(sys.argv[1]))) except IOError: import sys logging.critical('Cannot find input json file.') sys.exit(2) # inputs sat_sources = list(js_input["satellite_source"]) domain = WPSDomainConf(js_input["domains"]).domains[-1] latloni = domain.ij_to_latlon(0,0) latlonf = domain.ij_to_latlon(domain.domain_size[0],domain.domain_size[1]) bounds = (latloni[1],latlonf[1],latloni[0],latlonf[0]) from_utc = esmf_to_utc(js_input["start_utc"]) to_utc = esmf_to_utc(js_input["end_utc"]) elif len(sys.argv) == 4: bounds = tuple([float(c) for c in sys.argv[1].split(',')]) st = dt.datetime.strptime(sys.argv[2],'%Y%m%d%H%M%S') et = dt.datetime.strptime(sys.argv[3],'%Y%m%d%H%M%S') st_esmf = '%d-%02d-%02d_%02d:%02d:%02d' % (st.year,st.month,st.day,st.hour,st.minute,st.second) et_esmf = '%d-%02d-%02d_%02d:%02d:%02d' % (st.year,st.month,st.day,st.hour,st.minute,st.second) from_utc = esmf_to_utc(st_esmf) to_utc = esmf_to_utc(et_esmf) sat_sources = ['Terra', 'Aqua', 'SNPP'] else: print('Usage: ./retrieve_sat.sh input.json') print(' or: ./retrieve_sat.sh coord start_time end_time') print(' notes:') print(' *) coord - min_lon,max_lon,min_lat,max_lat')