ISCE_INSAR/contrib/stack/stripmapStack/prepareUAVSAR_HDF5Stack.py

121 lines
2.7 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
import os
import glob
import argparse
import isce # noqa
import isceobj
import subprocess
import shelve
def get_cli_args():
"""
Create command line parser.
"""
parser = argparse.ArgumentParser(description="Prepare UAVSAR HDF5 SLC Stack files.")
parser.add_argument(
"-i",
"--input-dir",
dest="input_dir",
required=True,
help="Input UAVSAR HDF5 file",
)
parser.add_argument(
"-o",
"--output",
required=True,
help="Output SLC directory",
)
parser.add_argument(
"-p",
"--polarization",
dest="polarization",
default="VV",
help="SLC polarization (default=%(default)s ) ",
)
parser.add_argument(
"-f",
"--frequency",
default="A",
choices=("A", "B"),
help="NISAR frequency choices (choices = %(choices)s , default=%(default)s )",
)
return parser.parse_args()
def write_xml(shelveFile, slcFile):
with shelve.open(shelveFile, flag="r") as db:
frame = db["frame"]
length = frame.numberOfLines
width = frame.numberOfSamples
print(width, length)
slc = isceobj.createSlcImage()
slc.setWidth(width)
slc.setLength(length)
slc.filename = slcFile
slc.setAccessMode("write")
slc.renderHdr()
slc.renderVRT()
def get_date(file):
yyyymmdd = "20" + file.split("_")[4]
return yyyymmdd
def main():
"""
The main driver.
"""
inps = get_cli_args()
outputDir = os.path.abspath(inps.output)
#######################################
slc_files = glob.glob(os.path.join(inps.input_dir, "*.h5"))
for h5_file in slc_files:
imgDate = get_date(h5_file)
print(imgDate)
print(h5_file)
imgDir = os.path.join(outputDir, imgDate)
os.makedirs(imgDir, exist_ok=True)
cmd = (
"unpackFrame_UAVSAR_HDF5_SLC.py -i "
+ h5_file
+ " -p "
+ inps.polarization
+ " -f "
+ inps.frequency
+ " -o "
+ imgDir
)
print(cmd)
subprocess.check_call(cmd, shell=True)
slcFile = os.path.join(imgDir, imgDate + ".slc")
# Now extract the correct pol SLC from the HDF5 file
subdataset = "/science/LSAR/SLC/swaths"
subdataset += "/frequency{}/{}".format(inps.frequency, inps.polarization)
cmd = 'gdal_translate -of ISCE HDF5:"{fname}":"/{sds}" {out}'.format(
fname=h5_file, sds=subdataset, out=slcFile
)
print(cmd)
subprocess.check_call(cmd, shell=True)
shelveFile = os.path.join(imgDir, "data")
write_xml(shelveFile, slcFile)
if __name__ == "__main__":
main()