Apply current workspace changes
This commit is contained in:
+307
@@ -0,0 +1,307 @@
|
||||
#! /usr/bin/env python
|
||||
#'''
|
||||
##################################################################################
|
||||
# #
|
||||
# Author: Yun-Meng Cao #
|
||||
# Email : ymcmrs@gmail.com #
|
||||
# Date : June, 2019 #
|
||||
# #
|
||||
# Generate SLC from SAR_IMS_P1 data #
|
||||
# #
|
||||
##################################################################################
|
||||
#'''
|
||||
import numpy as np
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
import getopt
|
||||
import time
|
||||
import glob
|
||||
|
||||
def check_variable_name(path):
|
||||
s=path.split("/")[0]
|
||||
if len(s)>0 and s[0]=="$":
|
||||
p0=os.getenv(s[1:])
|
||||
path=path.replace(path.split("/")[0],p0)
|
||||
return path
|
||||
|
||||
def read_template(File, delimiter='='):
|
||||
'''Reads the template file into a python dictionary structure.
|
||||
Input : string, full path to the template file
|
||||
Output: dictionary, pysar template content
|
||||
Example:
|
||||
tmpl = read_template(KyushuT424F610_640AlosA.template)
|
||||
tmpl = read_template(R1_54014_ST5_L0_F898.000.pi, ':')
|
||||
'''
|
||||
template_dict = {}
|
||||
for line in open(File):
|
||||
line = line.strip()
|
||||
c = [i.strip() for i in line.split(delimiter, 1)] #split on the 1st occurrence of delimiter
|
||||
if len(c) < 2 or line.startswith('%') or line.startswith('#'):
|
||||
next #ignore commented lines or those without variables
|
||||
else:
|
||||
atrName = c[0]
|
||||
atrValue = str.replace(c[1],'\n','').split("#")[0].strip()
|
||||
atrValue = check_variable_name(atrValue)
|
||||
template_dict[atrName] = atrValue
|
||||
return template_dict
|
||||
|
||||
def UseGamma(inFile, task, keyword):
|
||||
if task == "read":
|
||||
f = open(inFile, "r")
|
||||
while 1:
|
||||
line = f.readline()
|
||||
if not line: break
|
||||
if line.count(keyword) == 1:
|
||||
strtemp = line.split(":")
|
||||
value = strtemp[1].strip()
|
||||
return value
|
||||
print("Keyword " + keyword + " doesn't exist in " + inFile)
|
||||
f.close
|
||||
|
||||
def rm(TXT):
|
||||
call_str = 'rm ' + TXT
|
||||
os.system(call_str)
|
||||
|
||||
def usage():
|
||||
print('''
|
||||
******************************************************************************************************
|
||||
|
||||
Generate SLC and SLC_par file for ERS/ENVISAT (SAR_IMS_1P format)
|
||||
|
||||
usage:
|
||||
|
||||
Down2SLC_ASAR_Cat.py ProjectName DownName
|
||||
|
||||
e.g. Down2SLC_ASAR_Cat.py CotopaxiT120ERSA 910101
|
||||
|
||||
*******************************************************************************************************
|
||||
''')
|
||||
|
||||
def main(argv):
|
||||
|
||||
if len(sys.argv)==3:
|
||||
projectName = sys.argv[1]
|
||||
Date = sys.argv[2]
|
||||
else:
|
||||
usage();sys.exit(1)
|
||||
|
||||
scratchDir = os.getenv('SCRATCHDIR')
|
||||
templateDir = os.getenv('TEMPLATEDIR')
|
||||
templateFile = templateDir + '/' + projectName + '.template'
|
||||
templateContents=read_template(templateFile)
|
||||
|
||||
if 'rlks4cor' in templateContents: rlks4cor = templateContents['rlks4cor']
|
||||
else: rlks4cor = '4'
|
||||
if 'azlks4cor' in templateContents: azlks4cor = templateContents['azlks4cor']
|
||||
else: azlks4cor = '4'
|
||||
|
||||
if 'rwin4cor' in templateContents: rwin4cor = templateContents['rwin4cor']
|
||||
else: rwin4cor = '128'
|
||||
if 'azwin4cor' in templateContents: azwin4cor = templateContents['azwin4cor']
|
||||
else: azwin4cor = '128'
|
||||
if 'rsample4cor' in templateContents: rsample4cor = templateContents['rsample4cor']
|
||||
else: rsample4cor = '64'
|
||||
if 'azsample4cor' in templateContents: azsample4cor = templateContents['azsample4cor']
|
||||
else: azsample4cor = '64'
|
||||
|
||||
if ' rpos4cor' in templateContents: rpos4cor = templateContents[' rpos4cor']
|
||||
else: rpos4cor = ' - '
|
||||
if 'azpos4cor' in templateContents: azpos4cor = templateContents['azpos4cor']
|
||||
else: azpos4cor = ' - '
|
||||
|
||||
|
||||
if 'rfwin4cor' in templateContents: rfwin4cor = templateContents['rfwin4cor']
|
||||
else: rfwin4cor = str(int(int(rwin4cor)/2))
|
||||
if 'azfwin4cor' in templateContents: azfwin4cor = templateContents['azfwin4cor']
|
||||
else: azfwin4cor = str(int(int(azwin4cor)/2))
|
||||
if 'rfsample4cor' in templateContents: rfsample4cor = templateContents['rfsample4cor']
|
||||
else: rfsample4cor = str(2*int(rsample4cor))
|
||||
if 'azfsample4cor' in templateContents: azfsample4cor = templateContents['azfsample4cor']
|
||||
else: azfsample4cor = str(2*int(azsample4cor))
|
||||
|
||||
if 'thresh4cor' in templateContents: thresh4cor = templateContents['thresh4cor']
|
||||
else: thresh4cor = ' 0.2 '
|
||||
|
||||
rlks = templateContents['Range_Looks']
|
||||
azlks = templateContents['Azimuth_Looks']
|
||||
|
||||
|
||||
projectDir = scratchDir + '/' + projectName
|
||||
downDir = scratchDir + '/' + projectName + "/DOWNLOAD"
|
||||
slcDir = scratchDir + '/' + projectName + '/SLC'
|
||||
|
||||
if not os.path.isdir(slcDir):
|
||||
call_str= 'mkdir ' +slcDir
|
||||
os.system(call_str)
|
||||
os.chdir(downDir)
|
||||
|
||||
t0 = 't0_' + Date
|
||||
call_str = 'ls >' + t0
|
||||
os.system(call_str)
|
||||
|
||||
tt = 'tt_' + Date
|
||||
call_str = "grep " + Date + ' ' + t0 + '> ' + tt
|
||||
os.system(call_str)
|
||||
|
||||
te = 'te_' + Date
|
||||
call_str = "grep ASA_IMS_1P " + tt + " > " + te
|
||||
os.system(call_str)
|
||||
|
||||
AA= np.loadtxt(te,dtype=np.str)
|
||||
Na = AA.size
|
||||
AA=AA.reshape(Na,)
|
||||
|
||||
for i in range(Na):
|
||||
Date0 = Date+'_' + str(i)
|
||||
downName = str(AA[i])
|
||||
FileDir = downDir + '/' + downName
|
||||
call_str = 'par_ASAR '+ FileDir + ' ' + Date0
|
||||
os.system(call_str)
|
||||
|
||||
call_str ="rename 's/VV.SLC/slc/g' *"
|
||||
os.system(call_str)
|
||||
|
||||
slcpar = Date0 + '.slc.par'
|
||||
call_str = 'ASAR_orb_cor_par.py ' + slcpar
|
||||
os.system(call_str)
|
||||
|
||||
Date0 = Date
|
||||
if len(Date)==6:
|
||||
Date0 = Date
|
||||
Date6 = Date
|
||||
elif len(Date)==8:
|
||||
Date0 = Date[2:8]
|
||||
Date6 = Date[2:8]
|
||||
else:
|
||||
print('The input Date is invalid.')
|
||||
sys.exit(1)
|
||||
|
||||
dataDir = slcDir + '/' + Date0
|
||||
if not os.path.isdir(dataDir):
|
||||
call_str = 'mkdir ' + dataDir
|
||||
print('Generate SLC dir for date: ' + Date0)
|
||||
os.system(call_str)
|
||||
call_str = 'mv ' + Date + '*.slc* ' + dataDir
|
||||
os.system(call_str)
|
||||
|
||||
os.chdir(dataDir)
|
||||
for i in range(Na):
|
||||
Date0 = Date+'_' + str(i)
|
||||
downName = str(AA[i])
|
||||
|
||||
SLCm = Date0 + '.slc'
|
||||
SLCm_par = Date0 + '.slc.par'
|
||||
MamprlksImg = Date0 + '.amp'
|
||||
MamprlksPar = Date0 + '.amp.par'
|
||||
|
||||
call_str = 'multi_look ' + SLCm + ' ' + SLCm_par + ' ' + MamprlksImg + ' ' + MamprlksPar + ' ' + rlks + ' ' + azlks
|
||||
os.system(call_str)
|
||||
nWidth = UseGamma(MamprlksPar, 'read', 'range_samples')
|
||||
call_str = 'raspwr ' + MamprlksImg + ' ' + nWidth
|
||||
os.system(call_str)
|
||||
|
||||
SLC = Date6+'.slc'
|
||||
SLCPAR = Date6 + '.slc.par'
|
||||
AMP = Date6+'.amp'
|
||||
AMPPAR = Date6+'.amp.par'
|
||||
if Na==1:
|
||||
os.rename(SLCm,SLC)
|
||||
os.rename(SLCm_par,SLCPAR)
|
||||
os.rename(MamprlksImg,AMP)
|
||||
os.rename(MamprlksPar,AMPPAR)
|
||||
|
||||
|
||||
for i in range(Na-1):
|
||||
if i==0:
|
||||
DateA = Date + '_0'
|
||||
else:
|
||||
DateA = Date + '_' + str(i-1) + str(i)
|
||||
|
||||
SLCA = DateA + '.slc'
|
||||
SLCA_par = DateA + '.slc.par'
|
||||
|
||||
|
||||
DateB = Date + '_' +str(i+1)
|
||||
SLCB = DateB + '.slc'
|
||||
SLCB_par = DateB + '.slc.par'
|
||||
|
||||
DateC = Date + '_' + str(i) + str(i+1)
|
||||
SLCC = DateC + '.slc'
|
||||
SLCC_par = DateC + '.slc.par'
|
||||
|
||||
#####################################################################################
|
||||
MamprlksImg = Date + '.amp'
|
||||
MamprlksPar = Date + '.amp.par'
|
||||
|
||||
off = DateC + '.off'
|
||||
offs = DateC + '.offs'
|
||||
offsets = DateC + '.offsets'
|
||||
coffs = DateC + '.coffs'
|
||||
coffsets = DateC + '.coffsets'
|
||||
snr = DateC + '.snr'
|
||||
off_std = DateC + '.off_std'
|
||||
|
||||
########################## Generate off file #############################
|
||||
|
||||
call_str = "create_offset " + SLCA_par + " " + SLCB_par + " " + off + " 1 - - 0"
|
||||
os.system(call_str)
|
||||
call_str = 'init_offset_orbit '+ SLCA_par + " " + SLCB_par + ' ' + off
|
||||
os.system(call_str)
|
||||
|
||||
|
||||
call_str = 'init_offset '+ SLCA + ' ' + SLCB + ' ' + SLCA_par + ' ' + SLCB_par + ' ' + off + ' ' + rlks4cor + ' ' + azlks4cor + ' ' + rpos4cor + ' ' + azpos4cor
|
||||
os.system(call_str)
|
||||
|
||||
call_str = 'init_offset '+ SLCA + ' ' + SLCB + ' ' + SLCA_par + ' ' + SLCB_par + ' ' + off + ' 1 1 - - '
|
||||
os.system(call_str)
|
||||
|
||||
call_str = "offset_pwr " + SLCA + " " + SLCB + " " + SLCA_par + " " + SLCB_par + " " + off + " " + offs + " " + snr + " " + rwin4cor + " " + azwin4cor + " " + offsets + " 2 "+ rsample4cor + " " + azsample4cor
|
||||
os.system(call_str)
|
||||
|
||||
call_str = "offset_fit " + offs + " " + snr + " " + off + " " + coffs + " " + coffsets + " " + thresh4cor +" 3"
|
||||
os.system(call_str)
|
||||
|
||||
call_str = "offset_pwr " +SLCA + " " + SLCB + " " + SLCA_par + " " + SLCB_par + " " + off + " " + offs + " " + snr + " " + rfwin4cor + " " + azfwin4cor + " " + offsets + " 2 " + rfsample4cor + " " + azfsample4cor
|
||||
os.system(call_str)
|
||||
|
||||
call_str = "offset_fit " + offs + " " + snr + " " + off + " " + coffs + " " + coffsets + " " + thresh4cor + " 4 >" + off_std
|
||||
os.system(call_str)
|
||||
|
||||
########################################################################################
|
||||
|
||||
call_str = 'SLC_cat ' + SLCA + ' ' + SLCB + ' ' + SLCA_par + ' ' + SLCB_par + ' ' + off + ' ' + SLCC + ' ' + SLCC_par
|
||||
os.system(call_str)
|
||||
|
||||
if i==(Na-2):
|
||||
if len(Date)==6:
|
||||
DD = Date
|
||||
else:
|
||||
DD = Date[2:8]
|
||||
SLCm = DD + '.slc'
|
||||
SLCm_par = DD + '.slc.par'
|
||||
|
||||
|
||||
call_str = 'cp ' + SLCC + ' ' + SLCm
|
||||
os.system(call_str)
|
||||
|
||||
call_str = 'cp ' + SLCC_par + ' ' + SLCm_par
|
||||
os.system(call_str)
|
||||
|
||||
call_str = 'multi_look ' + SLCm + ' ' + SLCm_par + ' ' + MamprlksImg + ' ' + MamprlksPar + ' ' + rlks + ' ' + azlks
|
||||
os.system(call_str)
|
||||
nWidth = UseGamma(MamprlksPar, 'read', 'range_samples')
|
||||
call_str = 'raspwr ' + MamprlksImg + ' ' + nWidth
|
||||
os.system(call_str)
|
||||
|
||||
call_str = 'rm *.amp'
|
||||
os.system(call_str)
|
||||
|
||||
call_str = 'rm *_*.slc'
|
||||
os.system(call_str)
|
||||
|
||||
print("Down to SLC for %s is done! " % Date)
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv[:])
|
||||
Reference in New Issue
Block a user