Merge pull request #39 from EJFielding/UAVSAR

added back command line option in prepareUAVSAR
LT1AB
Heresh Fattahi 2020-03-13 08:27:52 -07:00 committed by GitHub
commit 4998f720d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 46 additions and 34 deletions

View File

@ -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):

View File

@ -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__':

View File

@ -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