109 lines
4.0 KiB
Python
109 lines
4.0 KiB
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
#
|
||
|
# Author: Cunren Liang
|
||
|
# Copyright 2015-present, NASA-JPL/Caltech
|
||
|
#
|
||
|
|
||
|
import os
|
||
|
import glob
|
||
|
import shutil
|
||
|
import datetime
|
||
|
import numpy as np
|
||
|
import xml.etree.ElementTree as ET
|
||
|
|
||
|
import isce, isceobj
|
||
|
from isceobj.Alos2Proc.runFilt import filt
|
||
|
|
||
|
from StackPulic import createObject
|
||
|
|
||
|
def cmdLineParse():
|
||
|
'''
|
||
|
command line parser.
|
||
|
'''
|
||
|
import sys
|
||
|
import argparse
|
||
|
|
||
|
parser = argparse.ArgumentParser(description='take more looks and compute coherence')
|
||
|
parser.add_argument('-idir', dest='idir', type=str, required=True,
|
||
|
help = 'input directory where resampled data of each date (YYMMDD) is located. only folders are recognized')
|
||
|
parser.add_argument('-ref_date_stack', dest='ref_date_stack', type=str, required=True,
|
||
|
help = 'reference date of stack. format: YYMMDD')
|
||
|
parser.add_argument('-ref_date', dest='ref_date', type=str, required=True,
|
||
|
help = 'reference date of this pair. format: YYMMDD')
|
||
|
parser.add_argument('-sec_date', dest='sec_date', type=str, required=True,
|
||
|
help = 'reference date of this pair. format: YYMMDD')
|
||
|
parser.add_argument('-nrlks1', dest='nrlks1', type=int, default=1,
|
||
|
help = 'number of range looks 1. default: 1')
|
||
|
parser.add_argument('-nalks1', dest='nalks1', type=int, default=1,
|
||
|
help = 'number of azimuth looks 1. default: 1')
|
||
|
parser.add_argument('-nrlks2', dest='nrlks2', type=int, default=1,
|
||
|
help = 'number of range looks 2. default: 1')
|
||
|
parser.add_argument('-nalks2', dest='nalks2', type=int, default=1,
|
||
|
help = 'number of azimuth looks 2. default: 1')
|
||
|
parser.add_argument('-alpha', dest='alpha', type=float, default=0.3,
|
||
|
help='filtering strength. default: 0.3')
|
||
|
parser.add_argument('-win', dest='win', type=int, default=32,
|
||
|
help = 'filter window size. default: 32')
|
||
|
parser.add_argument('-step', dest='step', type=int, default=4,
|
||
|
help = 'filter step size. default: 4')
|
||
|
parser.add_argument('-keep_mag', dest='keep_mag', action='store_true', default=False,
|
||
|
help='keep magnitude before filtering interferogram')
|
||
|
parser.add_argument('-wbd_msk', dest='wbd_msk', action='store_true', default=False,
|
||
|
help='mask filtered interferogram with water body')
|
||
|
|
||
|
if len(sys.argv) <= 1:
|
||
|
print('')
|
||
|
parser.print_help()
|
||
|
sys.exit(1)
|
||
|
else:
|
||
|
return parser.parse_args()
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
|
||
|
inps = cmdLineParse()
|
||
|
|
||
|
|
||
|
#get user parameters from input
|
||
|
idir = inps.idir
|
||
|
dateReferenceStack = inps.ref_date_stack
|
||
|
dateReference = inps.ref_date
|
||
|
dateSecondary = inps.sec_date
|
||
|
numberRangeLooks1 = inps.nrlks1
|
||
|
numberAzimuthLooks1 = inps.nalks1
|
||
|
numberRangeLooks2 = inps.nrlks2
|
||
|
numberAzimuthLooks2 = inps.nalks2
|
||
|
filterStrength = inps.alpha
|
||
|
filterWinsize = inps.win
|
||
|
filterStepsize = inps.step
|
||
|
removeMagnitudeBeforeFiltering = not inps.keep_mag
|
||
|
waterBodyMaskStartingStep = inps.wbd_msk
|
||
|
#######################################################
|
||
|
|
||
|
pair = '{}-{}'.format(dateReference, dateSecondary)
|
||
|
ms = pair
|
||
|
ml2 = '_{}rlks_{}alks'.format(numberRangeLooks1*numberRangeLooks2, numberAzimuthLooks1*numberAzimuthLooks2)
|
||
|
|
||
|
self = createObject()
|
||
|
self._insar = createObject()
|
||
|
|
||
|
self.filterStrength = filterStrength
|
||
|
self.filterWinsize = filterWinsize
|
||
|
self.filterStepsize = filterStepsize
|
||
|
self.removeMagnitudeBeforeFiltering = removeMagnitudeBeforeFiltering
|
||
|
self._insar.multilookDifferentialInterferogram = 'diff_' + ms + ml2 + '.int'
|
||
|
self._insar.filteredInterferogram = 'filt_' + ms + ml2 + '.int'
|
||
|
self._insar.multilookAmplitude = ms + ml2 + '.amp'
|
||
|
self._insar.multilookPhsig = ms + ml2 + '.phsig'
|
||
|
self._insar.multilookWbdOut = os.path.join(idir, dateReferenceStack, 'insar', dateReferenceStack + ml2 + '.wbd')
|
||
|
if waterBodyMaskStartingStep:
|
||
|
self.waterBodyMaskStartingStep='filt'
|
||
|
else:
|
||
|
self.waterBodyMaskStartingStep=None
|
||
|
|
||
|
filt(self)
|
||
|
|
||
|
|
||
|
|