ISCE_INSAR/contrib/stack/stripmapStack/prepRawSensors.py

97 lines
3.3 KiB
Python
Executable File

#!/usr/bin/env python3
# Bekaert David
import os
import glob
import argparse
def createParser():
'''
Create command line parser.
'''
parser = argparse.ArgumentParser(description='Script that attempts to recognize the sensor automatically and then call the correspodning unzips/unpacks command.')
parser.add_argument('-i', '--input', dest='input', type=str, required=True,
help='directory which has all the raw data.')
parser.add_argument('-rmfile', '--rmfile', dest='rmfile',action='store_true', default=False,
help='Optional: remove zip/tar/compressed files after unpacking into date structure (default is to keep in archive folder)')
parser.add_argument('-o', '--output', dest='output', type=str, required=False,
help='Optional: output directory which will be used for unpacking into isce format (run file generation only).')
parser.add_argument('-t', '--text_cmd', dest='text_cmd', type=str, default='source ~/.bash_profile;'
, help='Optional: text command to be added to the beginning of each line of the run files. Default: source ~/.bash_profile;')
return parser
def cmdLineParse(iargs=None):
'''
Command line parser.
'''
parser = createParser()
return parser.parse_args(args = iargs)
def main(iargs=None):
'''
The main driver.
'''
inps = cmdLineParse(iargs)
## parsing of the required input arguments
inputDir = os.path.abspath(inps.input)
## parsing of the optional input arguments
# output dir for generating runfile
if inps.output:
outputDir = os.path.abspath(inps.output)
outputDir_str = ' -o ' + outputDir
else:
outputDir_str = ''
# textcommand to be added to the runfile start
text_str = ' -t "' + inps.text_cmd + '"'
# delete zip file option
if inps.rmfile:
rmfile_str = ' -rmfile'
else:
rmfile_str = ''
# search criteria for the different sensors
ENV_str = 'ASA*' # Envisat
ERS_CEOS_str = 'ER*CEOS*' # ERS in CEOS format
ERS_ENV_str = 'ER*ESA*' # ERS in Envisat format
ALOS1_str = 'ALPSRP*' # ALOS-1 Palsar, zip files and extracted files
CSK_str = 'EL*' # CSK, zip files
CSK_str2 = 'CSK*.h5' # CSK, extracted files
# combine together
sensor_str_list = (ENV_str,ERS_CEOS_str,ERS_ENV_str,ALOS1_str,CSK_str,CSK_str2)
sensor_list = ('Envisat','ERS_CEOS','ERS_ENV','ALOS1','CSK','CSK')
sensor_unpackcommand = ('TODO','TODO','TODO','prepRawALOS.py','prepRawCSK.py','prepRawCSK.py')
Sensors = dict(zip(sensor_str_list,sensor_list))
Sensors_unpack = dict(zip(sensor_str_list,sensor_unpackcommand))
# Loop over the different sensor strings and try to find them
sensor_found = False
for sensor_str in Sensors:
for file in glob.iglob(os.path.join(inputDir,'**',sensor_str),recursive=True):
sensor_found = True
sensor_str_keep = sensor_str
break
# report back to user
if sensor_found:
print("Looks like " + Sensors[sensor_str_keep])
cmd = Sensors_unpack[sensor_str_keep] + ' -i ' + inputDir + rmfile_str + outputDir_str + text_str
print(cmd)
os.system(cmd)
else:
print("Did not find the sensor automatically, unzip and run unpack routines manual")
if __name__ == '__main__':
main()