ISCE_INSAR/contrib/stack/topsStack/adjust_vaild_with_looks.py

81 lines
2.5 KiB
Python
Executable File

#!/usr/bin/env python3
import os
import copy
import argparse
import numpy as np
import isce
import isceobj
import s1a_isce_utils as ut
from isceobj.TopsProc.runMergeBursts import mergeBox
from isceobj.TopsProc.runMergeBursts import adjustValidWithLooks
def createParser():
parser = argparse.ArgumentParser( description='adjust valid samples by considering number of looks')
parser.add_argument('-i', '--input', dest='input', type=str, required=True,
help='Directory with input acquistion')
parser.add_argument('-o', '--output', dest='output', type=str, required=True,
help='Directory with output')
parser.add_argument('-r', '--nrlks', dest='nrlks', type=int, default=1,
help='Number of range looks. Default: 1')
parser.add_argument('-a', '--nalks', dest='nalks', type=int, default=1,
help='Number of azimuth looks. Default: 1')
return parser
def cmdLineParse(iargs = None):
parser = createParser()
return parser.parse_args(args=iargs)
def main(iargs=None):
'''
adjust valid samples by considering number of looks
'''
inps = cmdLineParse(iargs)
swathList = sorted(ut.getSwathList(inps.input))
frames=[]
for swath in swathList:
frame = ut.loadProduct( os.path.join(inps.input , 'IW{0}.xml'.format(swath)))
minBurst = frame.bursts[0].burstNumber
maxBurst = frame.bursts[-1].burstNumber
if minBurst==maxBurst:
print('Skipping processing of swath {0}'.format(swath))
continue
frames.append(frame)
if inps.nrlks != 1 or inps.nalks != 1:
print('updating swath xml')
box = mergeBox(frames)
#adjust valid with looks, 'frames' ARE CHANGED AFTER RUNNING THIS
#here numberRangeLooks, instead of numberRangeLooks0, is used, since we need to do next step multilooking after unwrapping. same for numberAzimuthLooks.
(burstValidBox, burstValidBox2, message) = adjustValidWithLooks(frames, box, inps.nalks, inps.nrlks, edge=0, avalid='strict', rvalid='strict')
else:
print('number of range and azimuth looks are all equal to 1, no need to update swath xml')
for swath in swathList:
print('writing ', os.path.join(inps.output , 'IW{0}.xml'.format(swath)))
os.makedirs(os.path.join(inps.output, 'IW{0}'.format(swath)), exist_ok=True)
ut.saveProduct(frames[swath-1], os.path.join(inps.output , 'IW{0}.xml'.format(swath)))
if __name__ == '__main__':
'''
Main driver.
'''
# Main Driver
main()