diff --git a/contrib/stack/stripmapStack/Stack.py b/contrib/stack/stripmapStack/Stack.py index 0caa9b2..515298a 100755 --- a/contrib/stack/stripmapStack/Stack.py +++ b/contrib/stack/stripmapStack/Stack.py @@ -654,33 +654,40 @@ class workflow(object): ############################## -def baselinePair(baselineDir, master, slave): +def baselinePair(baselineDir, master, slave,doBaselines=True): - try: - mdb = shelve.open( os.path.join(master, 'raw'), flag='r') - sdb = shelve.open( os.path.join(slave, 'raw'), flag='r') - except: - mdb = shelve.open( os.path.join(master, 'data'), flag='r') - sdb = shelve.open( os.path.join(slave, 'data'), flag='r') + if doBaselines: # open files to calculate baselines + try: + mdb = shelve.open( os.path.join(master, 'raw'), flag='r') + sdb = shelve.open( os.path.join(slave, 'raw'), flag='r') + except: + mdb = shelve.open( os.path.join(master, 'data'), flag='r') + sdb = shelve.open( os.path.join(slave, 'data'), flag='r') - mFrame = mdb['frame'] - sFrame = sdb['frame'] + mFrame = mdb['frame'] + sFrame = sdb['frame'] - bObj = Baseline() - bObj.configure() - bObj.wireInputPort(name='masterFrame', object=mFrame) - bObj.wireInputPort(name='slaveFrame', object=sFrame) - bObj.baseline() + bObj = Baseline() + bObj.configure() + bObj.wireInputPort(name='masterFrame', object=mFrame) + bObj.wireInputPort(name='slaveFrame', object=sFrame) + bObj.baseline() # calculate baseline from orbits + pBaselineBottom = bObj.pBaselineBottom + pBaselineTop = bObj.pBaselineTop + else: # set baselines to zero if not calculated + pBaselineBottom = 0.0 + pBaselineTop = 0.0 + baselineOutName = os.path.basename(master) + "_" + os.path.basename(slave) + ".txt" f = open(os.path.join(baselineDir, baselineOutName) , 'w') - f.write("PERP_BASELINE_BOTTOM " + str(bObj.pBaselineBottom) + '\n') - f.write("PERP_BASELINE_TOP " + str(bObj.pBaselineTop) + '\n') + f.write("PERP_BASELINE_BOTTOM " + str(pBaselineBottom) + '\n') + f.write("PERP_BASELINE_TOP " + str(pBaselineTop) + '\n') f.close() - print('Baseline at top/bottom: %f %f'%(bObj.pBaselineTop,bObj.pBaselineBottom)) - return (bObj.pBaselineTop+bObj.pBaselineBottom)/2. + print('Baseline at top/bottom: %f %f'%(pBaselineTop,pBaselineBottom)) + return (pBaselineTop+pBaselineBottom)/2. -def baselineStack(inps,stackMaster,acqDates): +def baselineStack(inps,stackMaster,acqDates,doBaselines=True): from collections import OrderedDict baselineDir = os.path.join(inps.workDir,'baselines') if not os.path.exists(baselineDir): @@ -693,7 +700,7 @@ def baselineStack(inps,stackMaster,acqDates): for slv in acqDates: if slv != stackMaster: slave = os.path.join(inps.slcDir, slv) - baselineDict[slv]=baselinePair(baselineDir, master, slave) + baselineDict[slv]=baselinePair(baselineDir, master, slave, doBaselines) t = datetime.datetime.strptime(slv, datefmt) timeDict[slv] = t - t0 else: @@ -702,11 +709,11 @@ def baselineStack(inps,stackMaster,acqDates): return baselineDict, timeDict -def selectPairs(inps,stackMaster, slaveDates, acuisitionDates): - baselineDict, timeDict = baselineStack(inps, stackMaster, acuisitionDates) +def selectPairs(inps,stackMaster, slaveDates, acuisitionDates,doBaselines=True): + + baselineDict, timeDict = baselineStack(inps, stackMaster, acuisitionDates,doBaselines) for slave in slaveDates: print (slave,' : ' , baselineDict[slave]) - numDates = len(acuisitionDates) pairs = [] for i in range(numDates-1): diff --git a/contrib/stack/stripmapStack/prepareUAVSAR_coregStack.py b/contrib/stack/stripmapStack/prepareUAVSAR_coregStack.py index 1c175b3..95c28d6 100755 --- a/contrib/stack/stripmapStack/prepareUAVSAR_coregStack.py +++ b/contrib/stack/stripmapStack/prepareUAVSAR_coregStack.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +# modified to work for different UAVSAR stack segments EJF 2019/05/04 import os import glob @@ -14,15 +15,17 @@ def createParser(): Create command line parser. ''' - parser = argparse.ArgumentParser(description='Unzip Alos zip files.') + parser = argparse.ArgumentParser(description='Prepare UAVSAR SLC Stack files.') parser.add_argument('-i', '--input', dest='input', type=str, required=True, - help='directory which has all dates as directories. Inside each date, zip files are expected.') + help='directory which has all dates.') parser.add_argument('-d', '--dop_file', dest='dopFile', type=str, required=True, - help='Doppler file for the stack.') + help='Doppler file for the stack. Needs to be in directory where command is run.') parser.add_argument('-o', '--output', dest='output', type=str, required=True, help='output directory which will be used for unpacking.') - parser.add_argument('-t', '--text_cmd', dest='text_cmd', type=str, default='source ~/.bash_profile;' - , help='text command to be added to the beginning of each line of the run files. Example : source ~/.bash_profile;') + parser.add_argument('-s', '--segment', dest='segment', type=str, default='1', + help='segment of the UAVSAR stack to prepare. For "s2" use "2", etc. Default is "1" ') + parser.add_argument('-t', '--text_cmd', dest='text_cmd', type=str, default='source ~/.bash_profile;', + help='text command to be added to the beginning of each line of the run files. Default: source ~/.bash_profile;') return parser @@ -64,14 +67,13 @@ def main(iargs=None): inps = cmdLineParse(iargs) outputDir = os.path.abspath(inps.output) - run_unPack = 'run_unPackAlos' ####################################### - slc_files = glob.glob(os.path.join(inps.input, '*_s5_1x1.slc')) + slc_files = glob.glob(os.path.join(inps.input, '*_s'+inps.segment+'_1x1.slc')) for file in slc_files: imgDate = get_Date(file) print (imgDate) - annFile = file.replace('_s5_1x1.slc','')+'.ann' + annFile = file.replace('_s'+inps.segment+'_1x1.slc','')+'.ann' print (annFile) imgDir = os.path.join(outputDir,imgDate) if not os.path.exists(imgDir): @@ -81,7 +83,8 @@ def main(iargs=None): print (cmd) os.system(cmd) - cmd = 'mv ' + file + ' ' + imgDir + slcFile = os.path.join(imgDir, imgDate+'.slc') + cmd = 'mv ' + file + ' ' + slcFile print(cmd) os.system(cmd) @@ -90,7 +93,6 @@ def main(iargs=None): os.system(cmd) shelveFile = os.path.join(imgDir, 'data') - slcFile = os.path.join(imgDir, os.path.basename(file)) write_xml(shelveFile, slcFile) if __name__ == '__main__': diff --git a/contrib/stack/stripmapStack/stackStripMap.py b/contrib/stack/stripmapStack/stackStripMap.py index 728ffe0..6e5443a 100755 --- a/contrib/stack/stripmapStack/stackStripMap.py +++ b/contrib/stack/stripmapStack/stackStripMap.py @@ -325,7 +325,10 @@ def main(iargs=None): if not os.path.exists(runDir): os.makedirs(runDir) - pairs = selectPairs(inps,stackMasterDate, slaveDates, acquisitionDates) + if inps.sensor.lower() == 'uavsar_stack': # don't try to calculate baselines for UAVSAR_STACK data + pairs = selectPairs(inps,stackMasterDate, slaveDates, acquisitionDates,doBaselines=False) + else: + pairs = selectPairs(inps,stackMasterDate, slaveDates, acquisitionDates,doBaselines=True) print ('number of pairs: ', len(pairs)) ###If only a summary is requested quit after this