Apply current workspace changes
This commit is contained in:
+297
@@ -0,0 +1,297 @@
|
||||
#! /usr/bin/env python
|
||||
#################################################################
|
||||
### This program is part of PyINT v2.1 ###
|
||||
### Copy Right (c): 2017-2019, Yunmeng Cao ###
|
||||
### Author: Yunmeng Cao ###
|
||||
### Contact : ymcmrs@gmail.com ###
|
||||
#################################################################
|
||||
|
||||
import numpy as np
|
||||
import os
|
||||
import sys
|
||||
import glob
|
||||
import argparse
|
||||
|
||||
from pyint import _utils as ut
|
||||
|
||||
def common_burst(La_M,La_S):
|
||||
La_M = [float(i) for i in La_M]
|
||||
La_S = [float(i) for i in La_S]
|
||||
Min = max(min(La_M),min(La_S))
|
||||
Max = min(max(La_M),max(La_S))
|
||||
|
||||
M_min = []
|
||||
M_max = []
|
||||
for xm in La_M:
|
||||
k0_min = float(xm) - float(Min)
|
||||
k0_max = float(xm) - float(Max)
|
||||
M_min.append(abs(k0_min))
|
||||
M_max.append(abs(k0_max))
|
||||
|
||||
M_Index_min = M_min.index(min(M_min)) + 1
|
||||
M_Index_max = M_max.index(min(M_max)) + 1
|
||||
Mindex =[M_Index_min,M_Index_max]
|
||||
|
||||
S_min = []
|
||||
S_max = []
|
||||
for xs in La_S:
|
||||
k0_min = float(xs) - float(Min)
|
||||
k0_max = float(xs) - float(Max)
|
||||
S_min.append(abs(k0_min))
|
||||
S_max.append(abs(k0_max))
|
||||
|
||||
S_Index_min = S_min.index(min(S_min)) + 1
|
||||
S_Index_max = S_max.index(min(S_max)) + 1
|
||||
Sindex =[S_Index_min,S_Index_max]
|
||||
|
||||
return min(Mindex) , max(Mindex), min(Sindex),max(Sindex)
|
||||
|
||||
def get_common_burst(Mslc_dir,Sslc_dir,common_burst_txt):
|
||||
Mpar_list = sorted(glob.glob(Mslc_dir+'/*.IW*.burst.par'))
|
||||
Spar_list = sorted(glob.glob(Sslc_dir+'/*.IW*.burst.par'))
|
||||
if os.path.isfile(common_burst_txt):
|
||||
os.remove(common_burst_txt)
|
||||
for kk in range(len(Mpar_list)):
|
||||
MBURST = Mpar_list[kk]
|
||||
SBURST = Spar_list[kk]
|
||||
|
||||
Mtt = Sslc_dir + '/' + os.path.basename(MBURST.replace('burst.par','tt0'))
|
||||
Stt = SBURST.replace('burst.par','tt0')
|
||||
|
||||
call_str = "grep 'Burst:' " + MBURST + ' >' + Mtt
|
||||
os.system(call_str)
|
||||
call_str = "grep 'Burst:' " + SBURST + ' >' + Stt
|
||||
os.system(call_str)
|
||||
|
||||
MM = ut.read_txt2array(Mtt)
|
||||
SM = ut.read_txt2array(Stt)
|
||||
La_M = MM[:,2]
|
||||
La_S = SM[:,2]
|
||||
|
||||
PP = common_burst_Ref(La_M,La_S)
|
||||
|
||||
print('Common bursts of swath' + str(kk+1) + ' : (master) ' + str(PP[0]) + ' ' + str(PP[1]) + ' (slave) ' + str(PP[2]) + ' ' + str(PP[3]))
|
||||
call_str = 'echo ' + str(PP[0]) + ' ' + str(PP[1]) + ' ' + str(PP[2]) + ' ' + str(PP[3]) + ' >>' + common_burst_txt
|
||||
os.system(call_str)
|
||||
|
||||
return
|
||||
|
||||
def common_burst_Ref(La_M,La_S):
|
||||
Min = max(min(La_M),min(La_S))
|
||||
Max = min(max(La_M),max(La_S))
|
||||
|
||||
M_min = []
|
||||
M_max = []
|
||||
for xm in La_M:
|
||||
k0_min = float(xm) - float(Min)
|
||||
k0_max = float(xm) - float(Max)
|
||||
M_min.append(abs(k0_min))
|
||||
M_max.append(abs(k0_max))
|
||||
|
||||
M_Index_min = M_min.index(min(M_min)) + 1
|
||||
M_Index_max = M_max.index(min(M_max)) + 1
|
||||
Mindex =[M_Index_min,M_Index_max]
|
||||
|
||||
S_min = []
|
||||
S_max = []
|
||||
for xs in La_S:
|
||||
k0_min = float(xs) - float(Min)
|
||||
k0_max = float(xs) - float(Max)
|
||||
S_min.append(abs(k0_min))
|
||||
S_max.append(abs(k0_max))
|
||||
|
||||
S_Index_min = S_min.index(min(S_min)) + 1
|
||||
S_Index_max = S_max.index(min(S_max)) + 1
|
||||
Sindex =[S_Index_min,S_Index_max]
|
||||
#print La_M
|
||||
#print La_S
|
||||
#print min(M_min),min(M_max),min(S_min),min(S_max)
|
||||
M1 = min(Mindex)
|
||||
M2 = max(Mindex)
|
||||
|
||||
S1 = min(Sindex)
|
||||
S2 = max(Sindex)
|
||||
|
||||
if M1==1: S1 = S1
|
||||
else:
|
||||
S1=1-M1+1
|
||||
M1=1
|
||||
|
||||
|
||||
if M2 ==len(La_M): S2 = S2
|
||||
else:
|
||||
S2 = S2 + len(La_M) - M2
|
||||
M2 = len(La_M)
|
||||
|
||||
|
||||
return M1 , M2, S1, S2
|
||||
#########################################################################
|
||||
|
||||
INTRODUCTION = '''
|
||||
#############################################################################
|
||||
|
||||
Extract the common bursts for S1 TOPs based on one master image.
|
||||
'''
|
||||
|
||||
EXAMPLE = '''
|
||||
Usage:
|
||||
extract_s1_bursts.py projectName 170115
|
||||
|
||||
Examples:
|
||||
extract_s1_bursts.py PacayaT163TsxHhA 170115
|
||||
##############################################################################
|
||||
'''
|
||||
|
||||
|
||||
def cmdLineParse():
|
||||
parser = argparse.ArgumentParser(description='Check common busrts for TOPS data.',\
|
||||
formatter_class=argparse.RawTextHelpFormatter,\
|
||||
epilog=INTRODUCTION+'\n'+EXAMPLE)
|
||||
|
||||
parser.add_argument('projectName',help='Name of project.')
|
||||
parser.add_argument('Sdate',help='Slave date.')
|
||||
|
||||
inps = parser.parse_args()
|
||||
|
||||
return inps
|
||||
|
||||
################################################################################
|
||||
|
||||
|
||||
def main(argv):
|
||||
|
||||
inps = cmdLineParse()
|
||||
projectName = inps.projectName
|
||||
Sdate = inps.Sdate
|
||||
|
||||
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']
|
||||
Mdate = templateDict['masterDate']
|
||||
|
||||
processDir = scratchDir + '/' + projectName + "/PROCESS"
|
||||
slcDir = scratchDir + '/' + projectName + "/SLC"
|
||||
rslcDir = scratchDir + '/' + projectName + "/RSLC"
|
||||
|
||||
workDir0 = rslcDir + '/' + Sdate
|
||||
#if not os.path.isdir(rslcDir):
|
||||
# os.mkdir(rslcDir)
|
||||
|
||||
MslcDir = slcDir + '/' + Mdate
|
||||
SslcDir = slcDir + '/' + Sdate
|
||||
#MBurst_Par = slcDir + '/' + Mdate + '/' +
|
||||
workDir = slcDir + '/' + Sdate
|
||||
|
||||
BURST = workDir + '/' + Mdate + '_' + Sdate + '.common_burst_ref'
|
||||
|
||||
MslcImg = workDir + '/'+Mdate + '.slc'
|
||||
MslcPar = workDir + '/'+Mdate + '.slc.par'
|
||||
|
||||
MamprlksImg = workDir + '/'+Mdate + '_' + rlks + 'rlks' + '.amp'
|
||||
MamprlksPar = workDir + '/'+Mdate + '_' + rlks +'rlks' + '.amp.par'
|
||||
|
||||
SslcImg = workDir + '/'+ Sdate + '.slc'
|
||||
SslcPar = workDir + '/'+ Sdate + '.slc.par'
|
||||
|
||||
SamprlksImg = workDir + '/'+ Sdate + '_' + rlks + 'rlks' + '.amp'
|
||||
SamprlksPar = workDir + '/'+ Sdate + '_' + rlks + 'rlks' + '.amp.par'
|
||||
|
||||
if not os.path.isdir(workDir):
|
||||
os.mkdir(workDir)
|
||||
|
||||
get_common_burst(MslcDir,SslcDir,BURST)
|
||||
AA = ut.read_txt2array(BURST)
|
||||
|
||||
SW = templateDict['start_swath']
|
||||
EW = templateDict['end_swath']
|
||||
|
||||
SB = templateDict['start_burst']
|
||||
EB = templateDict['end_burst']
|
||||
|
||||
|
||||
SLC2_tab = workDir + '/' + Sdate + '_SLC_Tab0'
|
||||
|
||||
|
||||
SLC2_INF_tab = workDir + '/' + Sdate + '_SLC_Tab'
|
||||
SLC2_RSLC_tab = workDir + '/' + Sdate + '_RSLC_Tab'
|
||||
|
||||
BURST2_tab = workDir + '/' + Sdate + '_Burst_Tab'
|
||||
|
||||
if os.path.isfile(SLC2_tab):
|
||||
os.remove(SLC2_tab)
|
||||
|
||||
if os.path.isfile(SLC2_INF_tab):
|
||||
os.remove(SLC2_INF_tab)
|
||||
|
||||
if os.path.isfile(SLC2_RSLC_tab):
|
||||
os.remove(SLC2_RSLC_tab)
|
||||
|
||||
if os.path.isfile(BURST2_tab):
|
||||
os.remove(BURST2_tab)
|
||||
|
||||
for kk in range(int(EW)-int(SW)+1):
|
||||
|
||||
call_str = 'echo ' + SslcDir + '/' + Sdate+'.IW'+str(int(SW)+kk) + '.slc' + ' ' + SslcDir + '/'+ Sdate + '.IW'+str(int(SW)+kk) +'.slc.par' + ' ' + SslcDir + '/'+ Sdate+'.IW'+str(int(SW)+kk) + '.slc.TOPS_par >>' + SLC2_tab
|
||||
os.system(call_str)
|
||||
|
||||
ii = kk + 1
|
||||
if (int(SW)==int(EW)):
|
||||
SB1=int(AA[0])
|
||||
EB1=int(AA[1])
|
||||
SB2=int(AA[2])
|
||||
EB2=int(AA[3])
|
||||
else:
|
||||
SB1=int(AA[ii-1,0])
|
||||
EB1=int(AA[ii-1,1])
|
||||
|
||||
SB2=int(AA[ii-1,2])
|
||||
EB2=int(AA[ii-1,3])
|
||||
|
||||
if not int(SB)==1:
|
||||
SB2 = SB2 + int(SB)-int(SB1)
|
||||
if not int(EB)==20:
|
||||
EB2 = SB2 + int(EB) - int(SB)
|
||||
|
||||
call_str = 'echo ' + workDir + '/'+ Sdate+ '_'+ str(int(SB2)) + str(int(EB2)) +'.IW'+str(int(SW)+kk)+ '.slc' + ' ' + workDir + '/' + Sdate + '_'+ str(int(SB2)) + str(int(EB2)) +'.IW'+ str(int(SW)+kk)+ '.slc.par' + ' ' + workDir + '/'+ Sdate+'_'+ str(int(SB2)) + str(int(EB2)) + '.IW'+str(int(SW)+kk)+ '.slc.TOPS_par >>' + SLC2_INF_tab
|
||||
os.system(call_str)
|
||||
|
||||
call_str = 'echo ' + workDir0 + '/'+ Sdate+ '_'+ str(int(SB2)) + str(int(EB2)) +'.IW'+str(int(SW)+kk)+ '.rslc' + ' ' + workDir0 + '/' + Sdate + '_'+ str(int(SB2)) + str(int(EB2)) +'.IW'+ str(int(SW)+kk)+ '.rslc.par' + ' ' + workDir0 + '/'+ Sdate+'_'+ str(int(SB2)) + str(int(EB2)) + '.IW'+str(int(SW)+kk)+ '.rslc.TOPS_par >>' + SLC2_RSLC_tab
|
||||
os.system(call_str)
|
||||
|
||||
call_str = 'echo ' + str(int(SB2)) + ' ' + str(int(EB2)) + ' >>' + BURST2_tab
|
||||
os.system(call_str)
|
||||
|
||||
|
||||
TEST = SamprlksPar
|
||||
k0 = 0
|
||||
if os.path.isfile(TEST):
|
||||
if os.path.getsize(TEST) > 0:
|
||||
k0 = 1
|
||||
|
||||
if k0==0:
|
||||
|
||||
call_str = 'SLC_copy_ScanSAR ' + SLC2_tab + ' ' + SLC2_INF_tab + ' ' + BURST2_tab
|
||||
os.system(call_str)
|
||||
|
||||
call_str = 'SLC_mosaic_ScanSAR ' + SLC2_INF_tab + ' ' + SslcImg + ' ' + SslcPar + ' ' + rlks + ' ' +azlks
|
||||
os.system(call_str)
|
||||
|
||||
call_str = 'multi_look ' + SslcImg + ' ' + SslcPar + ' ' + SamprlksImg + ' ' + SamprlksPar + ' ' + rlks + ' ' + azlks
|
||||
os.system(call_str)
|
||||
|
||||
nWidth = ut.read_gamma_par(SamprlksPar, 'read', 'range_samples')
|
||||
call_str = 'raspwr ' + SamprlksImg + ' ' + nWidth
|
||||
os.system(call_str)
|
||||
iw1 = Sdate + '.IW1.slc*'
|
||||
iw2 = Sdate + '.IW2.slc*'
|
||||
iw3 = Sdate + '.IW3.slc*'
|
||||
call_str = 'rm '+ iw1 + ' ' + iw2 + ' '+ iw3
|
||||
os.system(call_str)
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv[:])
|
||||
Reference in New Issue
Block a user