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,8 +654,9 @@ class workflow(object):
############################## ##############################
def baselinePair(baselineDir, master, slave): def baselinePair(baselineDir, master, slave,doBaselines=True):
if doBaselines: # open files to calculate baselines
try: try:
mdb = shelve.open( os.path.join(master, 'raw'), flag='r') mdb = shelve.open( os.path.join(master, 'raw'), flag='r')
sdb = shelve.open( os.path.join(slave, 'raw'), flag='r') sdb = shelve.open( os.path.join(slave, 'raw'), flag='r')
@ -671,16 +672,22 @@ def baselinePair(baselineDir, master, slave):
bObj.configure() bObj.configure()
bObj.wireInputPort(name='masterFrame', object=mFrame) bObj.wireInputPort(name='masterFrame', object=mFrame)
bObj.wireInputPort(name='slaveFrame', object=sFrame) bObj.wireInputPort(name='slaveFrame', object=sFrame)
bObj.baseline() 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" baselineOutName = os.path.basename(master) + "_" + os.path.basename(slave) + ".txt"
f = open(os.path.join(baselineDir, baselineOutName) , 'w') f = open(os.path.join(baselineDir, baselineOutName) , 'w')
f.write("PERP_BASELINE_BOTTOM " + str(bObj.pBaselineBottom) + '\n') f.write("PERP_BASELINE_BOTTOM " + str(pBaselineBottom) + '\n')
f.write("PERP_BASELINE_TOP " + str(bObj.pBaselineTop) + '\n') f.write("PERP_BASELINE_TOP " + str(pBaselineTop) + '\n')
f.close() f.close()
print('Baseline at top/bottom: %f %f'%(bObj.pBaselineTop,bObj.pBaselineBottom)) print('Baseline at top/bottom: %f %f'%(pBaselineTop,pBaselineBottom))
return (bObj.pBaselineTop+bObj.pBaselineBottom)/2. return (pBaselineTop+pBaselineBottom)/2.
def baselineStack(inps,stackMaster,acqDates): def baselineStack(inps,stackMaster,acqDates,doBaselines=True):
from collections import OrderedDict from collections import OrderedDict
baselineDir = os.path.join(inps.workDir,'baselines') baselineDir = os.path.join(inps.workDir,'baselines')
if not os.path.exists(baselineDir): if not os.path.exists(baselineDir):
@ -693,7 +700,7 @@ def baselineStack(inps,stackMaster,acqDates):
for slv in acqDates: for slv in acqDates:
if slv != stackMaster: if slv != stackMaster:
slave = os.path.join(inps.slcDir, slv) 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) t = datetime.datetime.strptime(slv, datefmt)
timeDict[slv] = t - t0 timeDict[slv] = t - t0
else: else:
@ -702,11 +709,11 @@ def baselineStack(inps,stackMaster,acqDates):
return baselineDict, timeDict return baselineDict, timeDict
def selectPairs(inps,stackMaster, slaveDates, acuisitionDates): def selectPairs(inps,stackMaster, slaveDates, acuisitionDates,doBaselines=True):
baselineDict, timeDict = baselineStack(inps, stackMaster, acuisitionDates)
baselineDict, timeDict = baselineStack(inps, stackMaster, acuisitionDates,doBaselines)
for slave in slaveDates: for slave in slaveDates:
print (slave,' : ' , baselineDict[slave]) print (slave,' : ' , baselineDict[slave])
numDates = len(acuisitionDates) numDates = len(acuisitionDates)
pairs = [] pairs = []
for i in range(numDates-1): for i in range(numDates-1):

View File

@ -1,4 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# modified to work for different UAVSAR stack segments EJF 2019/05/04
import os import os
import glob import glob
@ -14,15 +15,17 @@ def createParser():
Create command line parser. 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, 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, 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, parser.add_argument('-o', '--output', dest='output', type=str, required=True,
help='output directory which will be used for unpacking.') help='output directory which will be used for unpacking.')
parser.add_argument('-t', '--text_cmd', dest='text_cmd', type=str, default='source ~/.bash_profile;' parser.add_argument('-s', '--segment', dest='segment', type=str, default='1',
, help='text command to be added to the beginning of each line of the run files. Example : source ~/.bash_profile;') 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 return parser
@ -64,14 +67,13 @@ def main(iargs=None):
inps = cmdLineParse(iargs) inps = cmdLineParse(iargs)
outputDir = os.path.abspath(inps.output) 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: for file in slc_files:
imgDate = get_Date(file) imgDate = get_Date(file)
print (imgDate) print (imgDate)
annFile = file.replace('_s5_1x1.slc','')+'.ann' annFile = file.replace('_s'+inps.segment+'_1x1.slc','')+'.ann'
print (annFile) print (annFile)
imgDir = os.path.join(outputDir,imgDate) imgDir = os.path.join(outputDir,imgDate)
if not os.path.exists(imgDir): if not os.path.exists(imgDir):
@ -81,7 +83,8 @@ def main(iargs=None):
print (cmd) print (cmd)
os.system(cmd) os.system(cmd)
cmd = 'mv ' + file + ' ' + imgDir slcFile = os.path.join(imgDir, imgDate+'.slc')
cmd = 'mv ' + file + ' ' + slcFile
print(cmd) print(cmd)
os.system(cmd) os.system(cmd)
@ -90,7 +93,6 @@ def main(iargs=None):
os.system(cmd) os.system(cmd)
shelveFile = os.path.join(imgDir, 'data') shelveFile = os.path.join(imgDir, 'data')
slcFile = os.path.join(imgDir, os.path.basename(file))
write_xml(shelveFile, slcFile) write_xml(shelveFile, slcFile)
if __name__ == '__main__': if __name__ == '__main__':

View File

@ -325,7 +325,10 @@ def main(iargs=None):
if not os.path.exists(runDir): if not os.path.exists(runDir):
os.makedirs(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)) print ('number of pairs: ', len(pairs))
###If only a summary is requested quit after this ###If only a summary is requested quit after this