def dload_grib_files(grib_files, tropo_model='ERA5', snwe=None): """Download weather re-analysis grib files using PyAPS Parameters: grib_files : list of string of grib files Returns: grib_files : list of string """ print( '\n------------------------------------------------------------------------------' ) print('downloading weather model data using PyAPS ...') # Get date list to download (skip already downloaded files) grib_files_exist = check_exist_grib_file(grib_files, print_msg=True) grib_files2dload = sorted(list(set(grib_files) - set(grib_files_exist))) date_list2dload = [ str(re.findall('\d{8}', i)[0]) for i in grib_files2dload ] print('number of grib files to download: %d' % len(date_list2dload)) print( '------------------------------------------------------------------------------\n' ) # Download grib file using PyAPS if len(date_list2dload) > 0: hour = re.findall('\d{8}[-_]\d{2}', grib_files2dload[0])[0].replace('-', '_').split('_')[1] grib_dir = os.path.dirname(grib_files2dload[0]) # try 3 times to download, then use whatever downloaded to calculate delay i = 0 while i < 3: i += 1 try: if tropo_model in ['ERA5', 'ERAINT']: pa.ECMWFdload(date_list2dload, hour, grib_dir, model=tropo_model, snwe=snwe, flist=grib_files2dload) elif tropo_model == 'MERRA': pa.MERRAdload(date_list2dload, hour, grib_dir) elif tropo_model == 'NARR': pa.NARRdload(date_list2dload, hour, grib_dir) except: pass # check potentially corrupted files grib_files = check_exist_grib_file(grib_files, print_msg=False) return grib_files
def dload_grib_files(grib_files, tropo_model='ERA5', snwe=None): """Download weather re-analysis grib files using PyAPS Parameters: grib_files : list of string of grib files Returns: grib_files : list of string """ print('\n------------------------------------------------------------------------------') print('downloading weather model data using PyAPS ...') # Get date list to download (skip already downloaded files) grib_files_exist = check_exist_grib_file(grib_files, print_msg=True) grib_files2dload = sorted(list(set(grib_files) - set(grib_files_exist))) date_list2dload = [str(re.findall('\d{8}', os.path.basename(i))[0]) for i in grib_files2dload] print('number of grib files to download: %d' % len(date_list2dload)) print('------------------------------------------------------------------------------\n') # Download grib file using PyAPS if len(date_list2dload) > 0: hour = re.findall('\d{8}[-_]\d{2}', os.path.basename(grib_files2dload[0]))[0].replace('-', '_').split('_')[1] grib_dir = os.path.dirname(grib_files2dload[0]) # Check for non-empty account info in PyAPS config file check_pyaps_account_config(tropo_model) # try 3 times to download, then use whatever downloaded to calculate delay i = 0 while i < 3: i += 1 try: if tropo_model in ['ERA5', 'ERAINT']: pa.ECMWFdload(date_list2dload, hour, grib_dir, model=tropo_model, snwe=snwe, flist=grib_files2dload) elif tropo_model == 'MERRA': pa.MERRAdload(date_list2dload, hour, grib_dir) elif tropo_model == 'NARR': pa.NARRdload(date_list2dload, hour, grib_dir) except: if i < 3: print('WARNING: the {} attampt to download failed, retry it.\n'.format(i)) else: print('\n\n'+'*'*50) print('WARNING: downloading failed for 3 times, stop trying and continue.') print('*'*50+'\n\n') pass # check potentially corrupted files grib_files = check_exist_grib_file(grib_files, print_msg=False) return grib_files
import pyaps3 as pa import numpy as np import matplotlib.pyplot as plt import sys print('------------------------------------------------') print('You are using PyAPS from %s' % pa.__file__) print('------------------------------------------------') print('Testing Download Methods') print('Testing ECMWF Downloads') pa.ECMWFdload(['20150503'], '00', './ECMWF', 'interim', 'fc') print 'Testing NARR Downloads' pa.NARRdload(['20040526', '20030426'], '12', './NARR/') print 'Testing ERA@UCAR Downloads' pa.ERAdload(['20050708', '20041201'], '12', './ERA/') print('Downloads OK') print('------------------------------------------------') print('------------------------------------------------') print('Testing ECMWF in Radar geometry, with a RMG dem') aps1 = pa.PyAPS_rdr( 'ECMWF/ERA-Int_20150503_12.grb', '/data/angel/TestISCE/stack/INTERFEROGRAMS/hgt.9alks_27rlks.full.rdr', grib='ECMWF', verb=True) aps2 = pa.PyAPS_rdr('ECMWF/ERA-Int_20040526_12.grb', 'dem_16rlks.hgt',
#!/usr/bin/env python # Author: Zhang Yunjun, Nov 15, 2021 import os import pyaps3 as pa print('------------------------------------------------') print('import pyaps3 from {}'.format(pa.__file__)) print('------------------------------------------------') print('test ERA5 data download') print( 'NOTE: Account setup is required on the Copernicus Climate Data Store (CDS).' ) print( ' More detailed info can be found on: https://retostauffer.org/code/Download-ERA5/' ) print(' Add your account info to ~/.cdsapirc file.') filedir = os.path.join(os.path.dirname(__file__), 'data', 'ERA5') pa.ECMWFdload(['20200601', '20200901'], hr='14', filedir=filedir, model='ERA5', snwe=(30, 40, 120, 140)) print('------------------------------------------------') print('Downloads OK') print('------------------------------------------------')