116 lines
4.1 KiB
Python
116 lines
4.1 KiB
Python
#!/usr/bin/env python3
|
|
|
|
#
|
|
# Author: Cunren Liang
|
|
# Copyright 2015-present, NASA-JPL/Caltech
|
|
#
|
|
|
|
import os
|
|
import glob
|
|
import datetime
|
|
import numpy as np
|
|
|
|
import isce, isceobj
|
|
from isceobj.Alos2Proc.runRdrDemOffset import rdrDemOffset
|
|
|
|
from StackPulic import loadProduct
|
|
from StackPulic import createObject
|
|
|
|
def cmdLineParse():
|
|
'''
|
|
command line parser.
|
|
'''
|
|
import sys
|
|
import argparse
|
|
|
|
parser = argparse.ArgumentParser(description='estimate offset between radar and dem')
|
|
parser.add_argument('-track', dest='track', type=str, required=True,
|
|
help = 'track parameter file')
|
|
parser.add_argument('-dem', dest='dem', type=str, required=True,
|
|
help = 'dem used for geometrical coregistration')
|
|
parser.add_argument('-wbd', dest='wbd', type=str, required=True,
|
|
help = 'water body in radar coordinate')
|
|
parser.add_argument('-hgt', dest='hgt', type=str, required=True,
|
|
help = 'height in radar coordinate computed in geometrical coregistration')
|
|
parser.add_argument('-amp', dest='amp', type=str, required=True,
|
|
help = 'amplitude image')
|
|
parser.add_argument('-output', dest='output', type=str, required=True,
|
|
help = 'output file for saving the affine transformation paramters')
|
|
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('-nrlks_sim', dest='nrlks_sim', type=int, default=None,
|
|
help = 'number of range looks when simulating radar image')
|
|
parser.add_argument('-nalks_sim', dest='nalks_sim', type=int, default=None,
|
|
help = 'number of azimuth looks when simulating radar image')
|
|
|
|
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
|
|
trackParameter = inps.track
|
|
demFile = inps.dem
|
|
wbdOut = inps.wbd
|
|
height = inps.hgt
|
|
amplitude = inps.amp
|
|
output = inps.output
|
|
numberRangeLooks1 = inps.nrlks1
|
|
numberAzimuthLooks1 = inps.nalks1
|
|
numberRangeLooksSim = inps.nrlks_sim
|
|
numberAzimuthLooksSim = inps.nalks_sim
|
|
#######################################################
|
|
|
|
#prepare amplitude image
|
|
insarDir = 'insar'
|
|
os.makedirs(insarDir, exist_ok=True)
|
|
os.chdir(insarDir)
|
|
if not os.path.isfile(os.path.basename(amplitude)):
|
|
os.symlink(os.path.join('../', amplitude), os.path.basename(amplitude))
|
|
if not os.path.isfile(os.path.basename(amplitude)+'.vrt'):
|
|
os.symlink(os.path.join('../', amplitude)+'.vrt', os.path.basename(amplitude)+'.vrt')
|
|
if not os.path.isfile(os.path.basename(amplitude)+'.xml'):
|
|
os.symlink(os.path.join('../', amplitude)+'.xml', os.path.basename(amplitude)+'.xml')
|
|
os.chdir('../')
|
|
|
|
|
|
ml1 = '_{}rlks_{}alks'.format(numberRangeLooks1, numberAzimuthLooks1)
|
|
simFile = 'radar_{}.sim'.format(ml1)
|
|
|
|
self = createObject()
|
|
self._insar = createObject()
|
|
|
|
self._insar.dem = demFile
|
|
self._insar.numberRangeLooksSim = numberRangeLooksSim
|
|
self._insar.numberRangeLooks1 = numberRangeLooks1
|
|
self._insar.numberAzimuthLooksSim = numberAzimuthLooksSim
|
|
self._insar.numberAzimuthLooks1 = numberAzimuthLooks1
|
|
self._insar.height = os.path.basename(height)
|
|
self._insar.sim = simFile
|
|
self._insar.amplitude = os.path.basename(amplitude)
|
|
self._insar.wbdOut = os.path.basename(wbdOut)
|
|
self._insar.radarDemAffineTransform = None
|
|
|
|
referenceTrack = loadProduct(trackParameter)
|
|
rdrDemOffset(self, referenceTrack, catalog=None)
|
|
|
|
os.chdir(insarDir)
|
|
#save the result
|
|
with open(output, 'w') as f:
|
|
f.write('{} {}\n{}'.format(self._insar.numberRangeLooksSim, self._insar.numberAzimuthLooksSim, self._insar.radarDemAffineTransform))
|
|
|
|
#remove amplitude image
|
|
os.remove(os.path.basename(amplitude))
|
|
os.remove(os.path.basename(amplitude)+'.vrt')
|
|
os.remove(os.path.basename(amplitude)+'.xml')
|
|
os.chdir('../') |