commit
4998f720d7
|
@ -654,33 +654,40 @@ class workflow(object):
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
|
|
||||||
def baselinePair(baselineDir, master, slave):
|
def baselinePair(baselineDir, master, slave,doBaselines=True):
|
||||||
|
|
||||||
try:
|
if doBaselines: # open files to calculate baselines
|
||||||
mdb = shelve.open( os.path.join(master, 'raw'), flag='r')
|
try:
|
||||||
sdb = shelve.open( os.path.join(slave, 'raw'), flag='r')
|
mdb = shelve.open( os.path.join(master, 'raw'), flag='r')
|
||||||
except:
|
sdb = shelve.open( os.path.join(slave, 'raw'), flag='r')
|
||||||
mdb = shelve.open( os.path.join(master, 'data'), flag='r')
|
except:
|
||||||
sdb = shelve.open( os.path.join(slave, 'data'), flag='r')
|
mdb = shelve.open( os.path.join(master, 'data'), flag='r')
|
||||||
|
sdb = shelve.open( os.path.join(slave, 'data'), flag='r')
|
||||||
|
|
||||||
mFrame = mdb['frame']
|
mFrame = mdb['frame']
|
||||||
sFrame = sdb['frame']
|
sFrame = sdb['frame']
|
||||||
|
|
||||||
|
|
||||||
bObj = Baseline()
|
bObj = Baseline()
|
||||||
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):
|
||||||
|
|
|
@ -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__':
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue