Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 21 additions & 1 deletion contrib/stack/stripmapStack/Stack.py
Original file line number Diff line number Diff line change
Expand Up @@ -740,7 +740,7 @@ def baselineStack(inps,stackReference,acqDates,doBaselines=True):

return baselineDict, timeDict

def selectPairs(inps,stackReference, secondaryDates, acuisitionDates,doBaselines=True):
def selectPairs(inps,stackReference, secondaryDates, acuisitionDates,doBaselines=True, annual_connections=False):

baselineDict, timeDict = baselineStack(inps, stackReference, acuisitionDates,doBaselines)
for secondary in secondaryDates:
Expand All @@ -754,9 +754,29 @@ def selectPairs(inps,stackReference, secondaryDates, acuisitionDates,doBaselines
if (db < inps.dbThr) and (dt < inps.dtThr):
pairs.append((acuisitionDates[i],acuisitionDates[j]))

if annual_connections:
one_year = find_one_year_interferograms(dateList)
pairs += one_year

plotNetwork(baselineDict, timeDict, pairs,os.path.join(inps.workDir,'pairs.pdf'))
return pairs

def find_one_year_interferograms(date_list):
dates = np.array([datetime.datetime.strptime(date, '%Y%m%d') for date in date_list])

ifg_ind = []
for i, date in enumerate(dates):
range_1 = date + datetime.timedelta(days=365) - datetime.timedelta(days=5)
range_2 = date + datetime.timedelta(days=365) + datetime.timedelta(days=5)
index = np.where((dates >= range_1) * (dates <= range_2))[0]
if len(index) >= 1:
date_diff = list(dates[index] - (date + datetime.timedelta(days=365)))
ind = date_diff.index(np.nanmin(date_diff))
ind_date = index[ind]
date2 = date_list[ind_date]
ifg_ind.append((date_list[i], date2))

return ifg_ind

def plotNetwork(baselineDict, timeDict, pairs,save_name='pairs.png'):
import matplotlib
Expand Down
7 changes: 5 additions & 2 deletions contrib/stack/stripmapStack/stackStripMap.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ def createParser():
parser.add_argument('-b', '--baseline_threshold', dest='dbThr', type=float, default=5000.0,
help='Baseline threshold (max bperp in meters)')

parser.add_argument('-annualCon', '--annual_connections', dest='annual_connections', action='store_true',
default=False, help='Generate one year interferograms')

parser.add_argument('-a', '--azimuth_looks', dest='alks', type=str, default='10',
help='Number of looks in azimuth (automaticly computed as AspectR*looks when '
'"S" or "sensor" is defined to give approximately square multi-look pixels)')
Expand Down Expand Up @@ -335,9 +338,9 @@ def main(iargs=None):
os.makedirs(runDir, exist_ok=True)

if inps.sensor and inps.sensor.lower().startswith('uavsar'): # don't try to calculate baselines for UAVSAR_STACK data
pairs = selectPairs(inps,stackReferenceDate, secondaryDates, acquisitionDates,doBaselines=False)
pairs = selectPairs(inps,stackReferenceDate, secondaryDates, acquisitionDates,doBaselines=False, annual_connections=inps.annual_connections)
else:
pairs = selectPairs(inps,stackReferenceDate, secondaryDates, acquisitionDates,doBaselines=True)
pairs = selectPairs(inps,stackReferenceDate, secondaryDates, acquisitionDates,doBaselines=True, annual_connections=inps.annual_connections)
print ('number of pairs: ', len(pairs))

###If only a summary is requested quit after this
Expand Down
29 changes: 26 additions & 3 deletions contrib/stack/topsStack/stackSentinel.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,9 @@ def createParser():
parser.add_argument('--param_ion', dest='param_ion', type=str, default=None,
help='ionosphere estimation parameter file. if provided, will do ionosphere estimation.')

parser.add_argument('-annualCon', '--annual_connections', dest='annual_connections', action='store_true',
default=False, help='Generate one year interferograms')

parser.add_argument('--num_connections_ion', dest='num_connections_ion', type=str, default = '3',
help='number of interferograms between each date and subsequent dates for ionosphere estimation (default: %(default)s).')

Expand Down Expand Up @@ -429,7 +432,7 @@ def get_dates(inps):

return dateList, inps.reference_date, secondaryList, safe_dict

def selectNeighborPairs(dateList, num_connections, updateStack=False): # should be changed to able to account for the existed aquisitions -- Minyan Zhong
def selectNeighborPairs(dateList, num_connections, updateStack=False, annual_connections=False): # should be changed to able to account for the existed aquisitions -- Minyan Zhong

pairs = []
if num_connections == 'all':
Expand All @@ -443,8 +446,28 @@ def selectNeighborPairs(dateList, num_connections, updateStack=False): # should
if j<len(dateList):
pairs.append((dateList[i],dateList[j]))

if annual_connections:
one_year = find_one_year_interferograms(dateList)
pairs += one_year

return pairs

def find_one_year_interferograms(date_list):
dates = np.array([datetime.datetime.strptime(date, '%Y%m%d') for date in date_list])

ifg_ind = []
for i, date in enumerate(dates):
range_1 = date + datetime.timedelta(days=365) - datetime.timedelta(days=5)
range_2 = date + datetime.timedelta(days=365) + datetime.timedelta(days=5)
index = np.where((dates >= range_1) * (dates <= range_2))[0]
if len(index) >= 1:
date_diff = list(dates[index] - (date + datetime.timedelta(days=365)))
ind = date_diff.index(np.nanmin(date_diff))
ind_date = index[ind]
date2 = date_list[ind_date]
ifg_ind.append((date_list[i], date2))

return ifg_ind

def selectNeighborPairsIonosphere(safe_dict, num_connections):
'''
Expand Down Expand Up @@ -974,9 +997,9 @@ def main(iargs=None):
print('Updating an existing stack ...')
print('')
dates4NewPairs = sorted(secondaryDates + [stackReferenceDate])[1:]
pairs = selectNeighborPairs(dates4NewPairs, inps.num_connections,updateStack) # will be change later
pairs = selectNeighborPairs(dates4NewPairs, inps.num_connections,updateStack, inps.annual_connections) # will be change later
else:
pairs = selectNeighborPairs(acquisitionDates, inps.num_connections,updateStack)
pairs = selectNeighborPairs(acquisitionDates, inps.num_connections,updateStack, inps.annual_connections)


print ('*****************************************')
Expand Down