ISCE_INSAR/contrib/stack/alosStack/alos2_pairs.py

87 lines
2.9 KiB
Python
Raw Normal View History

2020-10-20 02:42:07 +00:00
#!/usr/bin/env python3
#Cunren Liang, 05-MAR-2020
import os
import sys
import glob
import zipfile
import argparse
import datetime
import numpy as np
import xml.etree.ElementTree as ET
def cmdLineParse():
'''
Command line parser.
'''
parser = argparse.ArgumentParser(description='prepare alos2App.py OR alos2burstApp.py input files')
parser.add_argument('-dir', dest='dir', type=str, required=True,
help = 'directory containing the alos-2 data directories [data dir format: YYMMDD]')
parser.add_argument('-xml', dest='xml', type=str, required=True,
help = 'example alos2App.py input file')
parser.add_argument('-num', dest='num', type=int, default=3,
help = 'number of pairs for each acquistion. default: 3')
parser.add_argument('-yr', dest='yr', type=float, default=1.0,
help = 'time span threshhold. default: 1.0 year')
if len(sys.argv) <= 1:
print('')
parser.print_help()
sys.exit(1)
else:
return parser.parse_args()
if __name__ == '__main__':
inps = cmdLineParse()
dates = sorted(glob.glob(os.path.join(inps.dir, '*')))
dates = sorted([os.path.basename(x) for x in dates])
#for x in dates:
# print(x)
#read standard configurations
tree = ET.parse(inps.xml)
root = tree.getroot()
ndate = len(dates)
datefmt = "%y%m%d"
pairs_created = []
pairs_not_created = []
for i in range(ndate):
mdate = dates[i]
mtime = datetime.datetime.strptime(mdate, datefmt)
for j in range(inps.num):
if i+j+1 <= ndate - 1:
sdate = dates[i+j+1]
stime = datetime.datetime.strptime(sdate, datefmt)
pair = mdate + '-' + sdate
if np.absolute((stime - mtime).total_seconds()) < inps.yr * 365.0 * 24.0 * 3600:
pairs_created.append(pair)
print('creating pair: {}'.format(pair))
#create pair dir
if not os.path.exists(pair):
os.makedirs(pair)
#create xml
safe = root.find("component/property[@name='master directory']")
safe.text = '{}'.format(os.path.join(inps.dir, mdate))
safe = root.find("component/property[@name='slave directory']")
safe.text = '{}'.format(os.path.join(inps.dir, sdate))
tree.write(os.path.join(pair, 'alos2App.xml'))
else:
pairs_not_created.append(pair)
print('total number of pairs created: {}'.format(len(pairs_created)))
if pairs_not_created != []:
print('\nthe following pairs are not created because their time spans >= {} years'.format(inps.yr))
for x in pairs_not_created:
print(x)
print('total number of pairs not created: {}'.format(len(pairs_not_created)))
else:
print('\nall possible pairs are created')