87 lines
2.9 KiB
Python
87 lines
2.9 KiB
Python
#!/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')
|