def output_manager_coseismic(x, y, average_coseismic, outdir): rwr.produce_output_netcdf(x, y, average_coseismic, 'mm', outdir + '/coseismic.grd') netcdf_plots.produce_output_plot(outdir + '/coseismic.grd', 'LOS Displacement', outdir + '/coseismic.png', 'disp (mm)') return
def stack_corr_for_ref_unwrapped_isce(intf_files, rowref, colref, ts_output_dir, label=""): # WE MAKE SIGNAL SPREAD FOR CUT IMAGES cor_files = [ i.replace("fully_processed.unwrappedphase", "cut.cor") for i in intf_files ] # get for isce netcdfname = ts_output_dir + '/signalspread_cut_ref' + label + '.nc' cor_value = np.nan cor_data = readmytupledata.reader_isce(cor_files) a = stack_corr.stack_corr(cor_data, cor_value) rwr.produce_output_netcdf(cor_data.xvalues, cor_data.yvalues, a, 'Percentage', netcdfname) netcdf_plots.produce_output_plot( netcdfname, 'Signal Spread above cor=' + str(cor_value), ts_output_dir + '/signalspread_cut_ref' + label + '.png', 'Percentage of coherence', aspect=1 / 4, invert_yaxis=False, dot_points=[[colref], [rowref]]) signal_spread_ref = a[rowref, colref] print("Signal Spread of the reference pixel = %.2f " % signal_spread_ref) if signal_spread_ref < 50: print( "WARNING: Your reference pixel has very low coherence. Consider picking a different one." ) print("STOPPING ON PURPOSE.") sys.exit(0) return
def drive_signal_spread_isce(corr_files, cutoff, output_dir, output_filename): cor_data = rmd.reader_isce(corr_files); a = stack_corr(cor_data, cutoff); netcdf_read_write.produce_output_netcdf(cor_data.xvalues, cor_data.yvalues, a, 'Percentage', output_dir+'/' + output_filename); netcdf_plots.produce_output_plot(output_dir + '/' + output_filename, 'Signal Spread above cor=' + str(cutoff), output_dir + '/signalspread_full.png', 'Percentage of coherence', aspect=1 / 4, invert_yaxis=False); return;
def drive_signal_spread_calculation(corr_files, cutoff, output_dir, output_filename): print("Making stack_corr") output_file = output_dir + "/" + output_filename mytuple = rmd.reader(corr_files) a = stack_corr(mytuple, cutoff) # if unwrapped files, we use Nan to show when it was unwrapped successfully. netcdf_read_write.produce_output_netcdf(mytuple.xvalues, mytuple.yvalues, a, 'Percentage', output_file) netcdf_plots.produce_output_plot(output_file, 'Signal Spread', output_dir + '/signalspread.png', 'Percentage of coherence (out of ' + str(len(corr_files)) + ' images)', aspect=1.2); return;
def dummy_signal_spread(intfs, output_dir, output_filename): """ Make a perfect signal spread for passing to other applications """ print("Making a dummy signal spread that matches interferograms' dimensions (perfect 100)."); output_filename = output_dir + "/" + output_filename; [xdata, ydata, zdata] = netcdf_read_write.read_netcdf4(intfs[0]); a = np.add(np.zeros(np.shape(zdata)), 100); netcdf_read_write.produce_output_netcdf(xdata, ydata, a, 'Percentage', output_filename, dtype=np.float32) netcdf_plots.produce_output_plot(output_filename, 'Signal Spread', output_dir + '/signalspread.png', 'Percentage of coherence (out of ' + str(len(intfs)) + ' images)', aspect=1.2); return;
def output_manager_simple_stack(x, y, velocities, rowref, colref, signal_spread_data, outdir): rwr.produce_output_netcdf(x, y, velocities, 'mm/yr', outdir + '/velo_simple_stack.grd') netcdf_plots.produce_output_plot(outdir + '/velo_simple_stack.grd', 'LOS Velocity ', outdir + '/velo_simple_stack.png', 'velocity (mm/yr)') stacking_utilities.report_on_refpixel(rowref, colref, signal_spread_data, outdir) return
def make_vel_unc_from_ts_grids(ts_slice_files, outdir): """ Given existing TS grid files, create an estimate of velocity uncertainty. I have called this function from outside of the program. Can be called separately. """ mydata = rmd.reader_from_ts(ts_slice_files) # read filelist of time series grids unc = velo_uncertainties.empirical_uncertainty(mydata) rwr.produce_output_netcdf(mydata.xvalues, mydata.yvalues, unc, 'mm/yr', outdir + '/velo_unc.grd') netcdf_plots.produce_output_plot(outdir + '/velo_unc.grd', 'LOS Uncertainty', outdir + '/velo_unc.png', 'Uncertainty (mm/yr)') return
def make_vels_from_ts_grids(param_dictionary, ts_slice_files): """ Given existing TS grid files, create an estimate of velocity. """ mydata = rmd.reader_from_ts(ts_slice_files) # read filelist of time series grids vel = nsbas.Velocities_from_TS(mydata) rwr.produce_output_netcdf( mydata.xvalues, mydata.yvalues, vel, 'mm/yr', param_dictionary["ts_output_dir"] + '/velo_nsbas.grd') netcdf_plots.produce_output_plot( param_dictionary["ts_output_dir"] + '/velo_nsbas.grd', 'LOS Velocity', param_dictionary["ts_output_dir"] + '/velo_nsbas.png', 'velocity (mm/yr)') return
def write_output_metrics(param_dict, intf_tuple, metrics): """Unpack the dictionary that contains output metrics (if any), write into files. """ if param_dict["dem_error"]: gridshape = np.shape(metrics) Kz_grid = np.zeros(gridshape) for i in range(gridshape[0]): for j in range(gridshape[1]): if "Kz_error" in metrics[i][j].keys(): Kz_grid[i][j] = metrics[i][j]["Kz_error"] rwr.produce_output_netcdf( intf_tuple.xvalues, intf_tuple.yvalues, Kz_grid, 'm', param_dict["ts_output_dir"] + '/kz_error.grd') netcdf_plots.produce_output_plot( param_dict["ts_output_dir"] + '/kz_error.grd', 'DEM Error', param_dict["ts_output_dir"] + '/kz_error.png', 'DEM Error (m)') return
def drive_velocity(param_dict, intf_files, coh_files): intf_tuple, coh_tuple, baseline_tuple = param_dict["reader"]( intf_files, coh_files, param_dict["baseline_file"], param_dict["ts_type"], param_dict["dem_error"]) [_, _, signal_spread_tuple ] = rwr.read_any_grd(param_dict["signal_spread_filename"]) velocities, metrics = nsbas.Velocities(param_dict, intf_tuple, signal_spread_tuple, baseline_tuple, coh_tuple) rwr.produce_output_netcdf(intf_tuple.xvalues, intf_tuple.yvalues, velocities, 'mm/yr', param_dict["ts_output_dir"] + '/velo_nsbas.grd') netcdf_plots.produce_output_plot( param_dict["ts_output_dir"] + '/velo_nsbas.grd', 'LOS Velocity', param_dict["ts_output_dir"] + '/velo_nsbas.png', 'velocity (mm/yr)') return