Files
insar-management-system-v2/third_party/PyINT/pyint/pot_gamma_subset.py
T

192 lines
7.3 KiB
Python

#! /usr/bin/env python
#################################################################
### This program is part of PyINT v2.1 ###
### Copy Right (c): 2017-2022, Yunmeng Cao ###
### Author: Yunmeng Cao ###
### Contact : ymcmrs@gmail.com ###
#################################################################
import numpy as np
import os
import sys
import getopt
import time
import glob
import argparse
from pyint import _utils as ut
INTRODUCTION = '''
-------------------------------------------------------------------
Pixel offset tracking for co-registered Images. TOPs should be deramped in advance.
'''
EXAMPLE = '''
Usage:
pot_gamma_subset.py projectName Mdate Sdate subset
pot_gamma_subset.py PacayaT163TsxHhA 20150102 20150601 0102
-------------------------------------------------------------------
'''
def cmdLineParse():
parser = argparse.ArgumentParser(description='Pixel offset tracking based Azimuth/Range dispalcement estimation.',\
formatter_class=argparse.RawTextHelpFormatter,\
epilog=INTRODUCTION+'\n'+EXAMPLE)
parser.add_argument('projectName',help='projectName for processing.')
parser.add_argument('Mdate',help='Master date.')
parser.add_argument('Sdate',help='Slave date.')
parser.add_argument('Subset',help='Subset name, e.g., 0102')
inps = parser.parse_args()
return inps
def main(argv):
start_time = time.time()
inps = cmdLineParse()
Mdate = inps.Mdate
Sdate = inps.Sdate
subset = inps.Subset
projectName = inps.projectName
scratchDir = os.getenv('SCRATCHDIR')
templateDir = os.getenv('TEMPLATEDIR')
templateFile = templateDir + "/" + projectName + ".template"
templateDict=ut.update_template(templateFile)
rlks = templateDict['range_looks']
azlks = templateDict['azimuth_looks']
masterDate = templateDict['masterDate']
if 'POT_rwin' in templateDict:
POT_rwin = templateDict['POT_rwin']
else:
POT_rwin = '160'
print('POT range window sise: ' + POT_rwin)
if 'POT_awin' in templateDict:
POT_awin = templateDict['POT_awin']
else:
POT_awin = '160'
print('POT azimuth window sise: ' + POT_awin)
if 'POT_astep' in templateDict:
POT_astep = templateDict['POT_astep']
else:
POT_astep = azlks
if 'POT_rstep' in templateDict:
POT_rstep = templateDict['POT_rstep']
else:
POT_rstep = rlks
print('POT range steps: ' + POT_rstep)
print('POT azimuth steps: ' + POT_astep)
projectDir = scratchDir + '/' + projectName
demDir = scratchDir + '/' + projectName + '/DEM'
slcDir = scratchDir + '/' + projectName + '/SLC'
rslcDir = scratchDir + '/' + projectName + '/RSLC'
ifgDir = projectDir + '/ifgrams'
if not os.path.isdir(ifgDir): os.mkdir(ifgDir)
Pair = Mdate + '-' + Sdate
workDir = ifgDir + '/' + Pair
if not os.path.isdir(workDir): os.mkdir(workDir)
#######################################################################
Mamp = rslcDir + '/' + Mdate + '/' + Mdate + '_' + subset + '_' + rlks + 'rlks.amp'
MampPar = rslcDir + '/' + Mdate + '/' + Mdate + '_' + subset + '_' + rlks + 'rlks.amp.par'
Samp = rslcDir + '/' + Sdate + '/' + Sdate + '_' + subset + '_' + rlks + 'rlks.amp'
SampPar = rslcDir + '/' + Sdate + '/' + Sdate + '_' + subset + '_' + rlks + 'rlks.amp.par'
Mrslc = rslcDir + '/' + Mdate + '/' + Mdate + '_' + subset + '.rslc'
MrslcPar = rslcDir + '/' + Mdate + '/' + Mdate + '_' + subset + '.rslc.par'
Srslc = rslcDir + '/' + Sdate + '/' + Sdate + '_' + subset + '.rslc'
SrslcPar = rslcDir + '/' + Sdate + '/' + Sdate + '_' + subset + '.rslc.par'
#HGT = demDir + '/' + masterDate + '_' + rlks + 'rlks.rdc.dem'
#MasterPar = rslcDir + '/' + masterDate + '/' + masterDate + '.rslc.par'
################# copy file for parallel processing ##########################
#Mamp = workDir + '/' + Mdate + '_' + rlks + 'rlks.amp'
#MampPar = workDir + '/' + Mdate + '_' + rlks + 'rlks.amp.par'
#Samp = workDir + '/' + Sdate + '_' + rlks + 'rlks.amp'
#SampPar = workDir + '/' + Sdate + '_' + rlks + 'rlks.amp.par'
#if not templateDict['diff_all_parallel'] == '1':
# Mrslc = workDir + '/' + Mdate + '.rslc'
# MrslcPar = workDir + '/' + Mdate + '.rslc.par'
# Srslc = workDir + '/' + Sdate + '.rslc'
# SrslcPar = workDir + '/' + Sdate + '.rslc.par'
# ut.copy_file(Mrslc0,Mrslc)
# ut.copy_file(MrslcPar0,MrslcPar)
# ut.copy_file(Srslc0,Srslc)
# ut.copy_file(SrslcPar0,SrslcPar)
#else:
# Mrslc = Mrslc0
# MrslcPar = MrslcPar0
# Srslc = Srslc0
# SrslcPar = SrslcPar0
# HGT = HGT0
# MasterPar = MasterPar0
#ut.copy_file(Mamp0,Mamp)
#ut.copy_file(MampPar0,MampPar)
#ut.copy_file(Samp0,Samp)
#ut.copy_file(SampPar0,SampPar)
#ut.copy_file(HGT0,HGT)
#ut.copy_file(MasterPar0,MasterPar)
############################################################################
OFF = workDir + '/' + Pair + '_' + subset + '_' + rlks + 'rlks_pot.off'
OFFS = workDir + '/' + Pair + '_' + subset + '_' + rlks + 'rlks_pot.offs'
CCP = workDir + '/' + Pair + '_' + subset + '_' + rlks + 'rlks_pot.ccp'
COFFS = workDir + '/' + Pair + '_' + subset + '_' + rlks + 'rlks_pot.coffs'
COFFS_FILT = workDir + '/' + Pair + '_' + subset + '_' + rlks + 'rlks_pot_filt.coffs'
POTA = workDir + '/' + Pair + '_' + subset + '_' + rlks + 'rlks_pot.az'
POTR = workDir + '/' + Pair + '_' + subset + '_' + rlks + 'rlks_pot.rg'
call_str = 'create_offset '+ MrslcPar + ' ' + SrslcPar + ' ' + OFF + ' 1 ' + rlks + ' ' + azlks + ' 0'
os.system(call_str)
call_str = 'offset_pwr_tracking ' + Mrslc + ' ' + Srslc + ' ' + MrslcPar + ' ' + SrslcPar + ' ' + OFF + ' ' + OFFS + ' ' + CCP + ' ' + POT_rwin + ' ' + POT_awin + ' - 2 0.05 ' + POT_rstep + ' ' + POT_astep + ' - - - - - - '
os.system(call_str)
call_str = 'offset_tracking ' + OFFS + ' ' + CCP + ' ' + MrslcPar + ' ' + OFF + ' ' + COFFS + ' - 1 - 1'
os.system(call_str)
nWidth = ut.read_gamma_par(OFF, 'read', 'interferogram_width')
#call_str = 'adf ' + COFFS + ' ' + COFFS_FILT + ' ' + CCP + ' ' + nWidth
#os.system(call_str)
call_str = 'cpx_to_real ' + COFFS + ' ' + POTR + ' ' + nWidth + ' 0 '
os.system(call_str)
call_str = 'cpx_to_real ' + COFFS + ' ' + POTA + ' ' + nWidth + ' 1 '
os.system(call_str)
call_str = 'rasdt_pwr ' + POTR + ' ' + Mamp + ' ' + nWidth + ' - - - - - - - BuYlRd.cm'
os.system(call_str)
call_str = 'rasdt_pwr ' + POTA + ' ' + Mamp + ' ' + nWidth + ' - - - - - - - BuYlRd.cm'
os.system(call_str)
print("Pixel offset tracking is Done!")
ut.print_process_time(start_time, time.time())
#sys.exit(1)
if __name__ == '__main__':
main(sys.argv[:])