def main(iargs=None): inps = cmd_line_parse(iargs) inps.processor = isce_utils.get_processor(inps.metaFile) # read common metadata metadata = {} if inps.metaFile: rsc_file = os.path.join(os.path.dirname(inps.metaFile), 'data.rsc') metadata = isce_utils.extract_isce_metadata(inps.metaFile, geom_dir=inps.geometryDir, rsc_file=rsc_file, update_mode=inps.update_mode)[0] # prepare metadata for geometry file if inps.geometryDir: metadata = prepare_geometry(inps.geometryDir, metadata=metadata, update_mode=inps.update_mode) # read baseline info baseline_dict = {} if inps.baselineDir: baseline_dict = isce_utils.read_baseline_timeseries(inps.baselineDir, processor=inps.processor) # prepare metadata for ifgram file if inps.dsetDir and inps.dsetFiles: for namePattern in inps.dsetFiles: prepare_stack(inps.dsetDir, namePattern, metadata=metadata, baseline_dict=baseline_dict, update_mode=inps.update_mode) print('Done.') return
def main(iargs=None): inps = cmd_line_parse(iargs) inps.processor = isce_utils.get_processor(inps.metaFile) # read common metadata metadata = {} if inps.metaFile: rsc_file = os.path.join(os.path.dirname(inps.metaFile), 'data.rsc') metadata = isce_utils.extract_isce_metadata( inps.metaFile, geom_dir=inps.geometryDir, rsc_file=rsc_file, update_mode=inps.update_mode)[0] # prepare metadata for geometry file if inps.geometryDir: prepare_geometry(inps.geometryDir, geom_files=inps.geometryFiles, metadata=metadata, processor=inps.processor, update_mode=inps.update_mode) # read baseline info baseline_dict = {} if inps.baselineDir: if inps.baselineDir.startswith( 'rand') and inps.dsetDir and inps.dsetFiles: if '-' in inps.baselineDir: max_bperp = float(inps.baselineDir.split('-')[1]) else: max_bperp = 10 baseline_dict = gen_random_baseline_timeseries( dset_dir=inps.dsetDir, dset_file=inps.dsetFiles[0], max_bperp=max_bperp) else: baseline_dict = isce_utils.read_baseline_timeseries( inps.baselineDir, processor=inps.processor) # prepare metadata for ifgram file if inps.dsetDir and inps.dsetFiles: for namePattern in inps.dsetFiles: prepare_stack(inps.dsetDir, namePattern, metadata=metadata, baseline_dict=baseline_dict, processor=inps.processor, update_mode=inps.update_mode) print('Done.') return
def main(iargs=None): inps = cmd_line_parse(iargs) # translate input options processor = isce_utils.get_processor(inps.metaFile) box, geom_src_dir = read_vrt_info(os.path.join(inps.geomDir, 'lat.vrt')) # metadata meta = prepare_metadata(inps.metaFile, geom_src_dir, box=box) ## output directory for dname in [inps.outDir, os.path.join(inps.outDir, 'inputs')]: os.makedirs(dname, exist_ok=True) ## output filename ts_file = os.path.join(inps.outDir, 'timeseries.h5') tcoh_file = os.path.join(inps.outDir, 'temporalCoherence.h5') if 'Y_FIRST' in meta.keys(): geom_file = os.path.join(inps.outDir, 'inputs/geometryGeo.h5') else: geom_file = os.path.join(inps.outDir, 'inputs/geometryRadar.h5') ## file 1 - time-series prepare_timeseries(outfile=ts_file, unw_file=inps.unwFile, metadata=meta, processor=processor, baseline_dir=inps.baselineDir) ## file 2 - temporal coherence prepare_temporal_coherence(outfile=tcoh_file, coh_file=inps.cohFile, metadata=meta) ## file 3 - geometry prepare_geometry(outfile=geom_file, geom_dir=geom_src_dir, box=box, metadata=meta) return ts_file, tcoh_file, geom_file
def prepare_metadata(iDict): processor = iDict['processor'] script_name = 'prep_{}.py'.format(processor) print('-'*50) print('prepare metadata files for {} products'.format(processor)) if processor in ['gamma', 'hyp3', 'roipac', 'snap']: # import prep_module if processor == 'gamma': from mintpy import prep_gamma as prep_module elif processor == 'hyp3': from mintpy import prep_hyp3 as prep_module elif processor == 'roipac': from mintpy import prep_roipac as prep_module elif processor == 'snap': from mintpy import prep_snap as prep_module # run prep_{processor} module for key in [i for i in iDict.keys() if (i.startswith('mintpy.load.') and i.endswith('File'))]: if len(glob.glob(str(iDict[key]))) > 0: # print command line script_name = '{}.py'.format(os.path.basename(prep_module.__name__).split('.')[-1]) iargs = [iDict[key]] if processor == 'gamma' and iDict['PLATFORM']: iargs += ['--sensor', iDict['PLATFORM'].lower()] print(script_name, ' '.join(iargs)) # run prep_module.main(iargs) elif processor == 'isce': from mintpy import prep_isce from mintpy.utils.isce_utils import get_processor # metadata meta_files = sorted(glob.glob(iDict['mintpy.load.metaFile'])) if len(meta_files) > 0: meta_file = meta_files[0] else: warnings.warn('No input metadata file found: {}'.format(iDict['mintpy.load.metaFile'])) meta_file = 'auto' # auxliary data baseline_dir = iDict['mintpy.load.baselineDir'] geom_dir = os.path.dirname(iDict['mintpy.load.demFile']) # observation obs_keys = ['mintpy.load.unwFile', 'mintpy.load.azOffFile'] obs_keys = [i for i in obs_keys if i in iDict.keys()] obs_paths = [iDict[key] for key in obs_keys if iDict[key].lower() != 'auto'] if len(obs_paths) > 0: processor = get_processor(meta_file) if processor == 'alosStack': obs_dir = os.path.dirname(obs_paths[0]) else: obs_dir = os.path.dirname(os.path.dirname(obs_paths[0])) obs_file = os.path.basename(obs_paths[0]) else: obs_dir = None obs_file = None # compose list of input arguments iargs = ['-m', meta_file, '-g', geom_dir] if baseline_dir: iargs += ['-b', baseline_dir] if obs_dir is not None: iargs += ['-d', obs_dir, '-f', obs_file] # run module print('prep_isce.py', ' '.join(iargs)) try: prep_isce.main(iargs) except: warnings.warn('prep_isce.py failed. Assuming its result exists and continue...') elif processor == 'aria': from mintpy import prep_aria ## compose input arguments # use the default template file if exists & input default_temp_files = [fname for fname in iDict['template_file'] if fname.endswith('smallbaselineApp.cfg')] if len(default_temp_files) > 0: temp_file = default_temp_files[0] else: temp_file = iDict['template_file'][0] iargs = ['--template', temp_file] # file name/dir/path ARG2OPT_DICT = { '--stack-dir' : 'mintpy.load.unwFile', '--unwrap-stack-name' : 'mintpy.load.unwFile', '--coherence-stack-name': 'mintpy.load.corFile', '--conn-comp-stack-name': 'mintpy.load.connCompFile', '--dem' : 'mintpy.load.demFile', '--incidence-angle' : 'mintpy.load.incAngleFile', '--azimuth-angle' : 'mintpy.load.azAngleFile', '--water-mask' : 'mintpy.load.waterMaskFile', } for arg_name, opt_name in ARG2OPT_DICT.items(): arg_value = iDict.get(opt_name, 'auto') if arg_value.lower() not in ['auto', 'no', 'none']: if arg_name.endswith('dir'): iargs += [arg_name, os.path.dirname(arg_value)] elif arg_name.endswith('name'): iargs += [arg_name, os.path.basename(arg_value)] else: iargs += [arg_name, arg_value] # configurations if iDict['compression']: iargs += ['--compression', iDict['compression']] if iDict['updateMode']: iargs += ['--update'] ## run print('prep_aria.py', ' '.join(iargs)) try: prep_aria.main(iargs) except: warnings.warn('prep_aria.py failed. Assuming its result exists and continue...') elif processor == 'gmtsar': from mintpy import prep_gmtsar # use the custom template file if exists & input custom_temp_files = [fname for fname in iDict['template_file'] if not fname.endswith('smallbaselineApp.cfg')] if len(custom_temp_files) == 0: raise FileExistsError('Custom template file NOT found and is required for GMTSAR!') # run prep_*.py iargs = [custom_temp_files[0], '--mintpy-dir', os.path.dirname(iDict['outdir'])] print('prep_gmtsar.py', ' '.join(iargs)) try: prep_gmtsar.main(iargs) except: warnings.warn('prep_gmtsar.py failed. Assuming its result exists and continue...') else: msg = 'un-recognized InSAR processor: {}'.format(processor) msg += '\nsupported processors: {}'.format(PROCESSOR_LIST) raise ValueError(msg) return
def main(iargs=None): inps = cmd_line_parse(iargs) # translate input options processor = isce_utils.get_processor(inps.metaFile) src_box, geom_src_dir = read_vrt_info(os.path.join(inps.geomDir, 'lat.vrt')) # metadata meta = prepare_metadata(inps.metaFile, geom_src_dir, box=src_box) # subset - read pix_box for fringe file pix_box = subset.subset_input_dict2box(vars(inps), meta)[0] pix_box = ut.coordinate(meta).check_box_within_data_coverage(pix_box) print('input subset in y/x: {}'.format(pix_box)) # subset - update src_box for isce file and meta src_box = (pix_box[0] + src_box[0], pix_box[1] + src_box[1], pix_box[2] + src_box[0], pix_box[3] + src_box[1]) meta = attr.update_attribute4subset(meta, pix_box) print( 'input subset in y/x with respect to the VRT file: {}'.format(src_box)) ## output directory for dname in [inps.outDir, os.path.join(inps.outDir, 'inputs')]: os.makedirs(dname, exist_ok=True) ## output filename ts_file = os.path.join(inps.outDir, 'timeseries.h5') tcoh_file = os.path.join(inps.outDir, 'temporalCoherence.h5') ps_mask_file = os.path.join(inps.outDir, 'maskPS.h5') if 'Y_FIRST' in meta.keys(): geom_file = os.path.join(inps.outDir, 'inputs/geometryGeo.h5') else: geom_file = os.path.join(inps.outDir, 'inputs/geometryRadar.h5') ## 1 - time-series (from fringe) prepare_timeseries(outfile=ts_file, unw_file=inps.unwFile, metadata=meta, processor=processor, baseline_dir=inps.baselineDir, box=pix_box) ## 2 - temporal coherence and mask for PS (from fringe) prepare_temporal_coherence(outfile=tcoh_file, infile=inps.cohFile, metadata=meta, box=pix_box) prepare_ps_mask(outfile=ps_mask_file, infile=inps.psMaskFile, metadata=meta, box=pix_box) ## 3 - geometry (from SLC stacks before fringe, e.g. ISCE2) prepare_geometry(outfile=geom_file, geom_dir=geom_src_dir, box=src_box, metadata=meta) return ts_file, tcoh_file, ps_mask_file, geom_file
def prepare_metadata(inpsDict): processor = inpsDict['processor'] script_name = 'prep_{}.py'.format(processor) print('-' * 50) print('prepare metadata files for {} products'.format(processor)) if processor in ['gamma', 'roipac', 'snap']: # import prep_module if processor == 'gamma': from mintpy import prep_gamma as prep_module elif processor == 'roipac': from mintpy import prep_roipac as prep_module elif processor == 'snap': from mintpy import prep_snap as prep_module # run prep_{processor} module for key in [ i for i in inpsDict.keys() if (i.startswith('mintpy.load.') and i.endswith('File')) ]: if len(glob.glob(str(inpsDict[key]))) > 0: # print command line script_name = '{}.py'.format( os.path.basename(prep_module.__name__).split('.')[-1]) iargs = [inpsDict[key]] if processor == 'gamma' and inpsDict['PLATFORM']: iargs += ['--sensor', inpsDict['PLATFORM'].lower()] print(script_name, ' '.join(iargs)) # run prep_module.main(iargs) elif processor == 'isce': from mintpy import prep_isce from mintpy.utils.isce_utils import get_processor meta_files = sorted(glob.glob(inpsDict['mintpy.load.metaFile'])) if len(meta_files) < 1: warnings.warn('No input metadata file found: {}'.format( inpsDict['mintpy.load.metaFile'])) try: # metadata and auxliary data meta_file = meta_files[0] baseline_dir = inpsDict['mintpy.load.baselineDir'] geom_dir = os.path.dirname(inpsDict['mintpy.load.demFile']) # observation obs_keys = ['mintpy.load.unwFile', 'mintpy.load.azOffFile'] obs_keys = [i for i in obs_keys if i in inpsDict.keys()] obs_paths = [ inpsDict[key] for key in obs_keys if inpsDict[key].lower() != 'auto' ] if len(obs_paths) > 0: processor = get_processor(meta_file) if processor == 'alosStack': obs_dir = os.path.dirname(obs_paths[0]) else: obs_dir = os.path.dirname(os.path.dirname(obs_paths[0])) obs_file = os.path.basename(obs_paths[0]) else: obs_dir = None obs_file = None # compose list of input arguments iargs = ['-m', meta_file, '-g', geom_dir] if baseline_dir: iargs += ['-b', baseline_dir] if obs_dir is not None: iargs += ['-d', obs_dir, '-f', obs_file] print('prep_isce.py', ' '.join(iargs)) # run module prep_isce.main(iargs) except: pass return