def get_delay(grib_file, inps): """Get delay matrix using PyAPS for one acquisition Inputs: grib_file - strng, grib file path atr - dict, including the following attributes: dem_file - string, DEM file path tropo_model - string, Weather re-analysis data source delay_type - string, comb/dry/wet ref_y/x - string, reference pixel row/col number inc_angle - np.array, 0/1/2 D Output: pha - 2D np.array, absolute tropospheric phase delay relative to ref_y/x """ # initiate pyaps object aps_obj = pa.PyAPS(grib_file, grib=inps.tropo_model, Del=inps.delay_type, dem=inps.dem, inc=inps.inc, lat=inps.lat, lon=inps.lon, verb=verbose) # estimate delay pha = np.zeros((aps_obj.ny, aps_obj.nx), dtype=np.float32) aps_obj.getdelay(pha) # reverse the sign for consistency between different phase correction steps/methods pha *= -1 return pha
def get_delay(grib_file, tropo_model, delay_type, dem, inc, lat, lon, mask=None, verbose=False): """Get delay matrix using PyAPS for one acquisition Parameters: grib_file - str, grib file path tropo_model - str, GAM model delay_type - str, dry/wet/comb dem/inc/lat/lon - 2D np.ndarray in float32 for DEM, incidence angle, latitude/longitude verbose - bool, verbose message Returns: pha - 2D np.ndarray in float32, single path tropospheric delay temporally absolute, spatially referenced to ref_y/x """ if verbose: print('GRIB FILE: {}'.format(grib_file)) # initiate pyaps object aps_obj = pa.PyAPS(grib_file, grib=tropo_model, Del=delay_type, dem=dem, inc=inc, lat=lat, lon=lon, mask=mask, verb=verbose) # estimate delay pha = np.zeros((aps_obj.ny, aps_obj.nx), dtype=np.float32) aps_obj.getdelay(pha) # reverse the sign for consistency between different phase correction steps/methods pha *= -1 return pha
dem = pa.utils.read_data(os.path.join(data_dir, 'hgt.rdr')) inc = pa.utils.read_data(os.path.join(data_dir, 'los.rdr'), dname='inc') lat = pa.utils.read_data(os.path.join(data_dir, 'lat.rdr')) lon = pa.utils.read_data(os.path.join(data_dir, 'lon.rdr')) # calculate print('calculate tropospheric delay from GRB files...') print('------------------------------------------------') grb_file1 = os.path.join(data_dir, 'ERA5/ERA5_N30_N40_E120_E140_20101017_14.grb') grb_file2 = os.path.join(data_dir, 'ERA5/ERA5_N30_N40_E120_E140_20110117_14.grb') obj1 = pa.PyAPS(grb_file1, dem=dem, inc=inc, lat=lat, lon=lon, grib='ERA5', verb=True) obj2 = pa.PyAPS(grb_file2, dem=dem, inc=inc, lat=lat, lon=lon, grib='ERA5', verb=True) phs = obj2.getdelay() - obj1.getdelay() # plot date12 = '{}_{}'.format(grb_file1.split('_')[-2], grb_file2.split('_')[-2]) fig, ax = plt.subplots(figsize=[5, 7])