85 lines
2.2 KiB
Python
Executable File
85 lines
2.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import isce
|
|
from isceobj.Sensor import createSensor
|
|
import shelve
|
|
import argparse
|
|
import os
|
|
from isceobj.Util import Poly1D
|
|
from isceobj.Planet.AstronomicalHandbook import Const
|
|
|
|
def cmdLineParse():
|
|
'''
|
|
Command line parser.
|
|
'''
|
|
|
|
parser = argparse.ArgumentParser(description='Unpack RISAT SLC data and store metadata in pickle file.')
|
|
parser.add_argument('-i','--input', dest='indir', type=str,
|
|
required=True, help='Input CSK frame')
|
|
parser.add_argument('-o', '--output', dest='slc', type=str,
|
|
required=True, help='Output SLC file')
|
|
parser.add_argument('-p', '--polar', dest='polar', type=str,
|
|
default='RH', help='Polarization to extract')
|
|
|
|
parser.add_argument('-f', '--float', dest='isfloat', action='store_true',
|
|
default = False, help='If float SLC is provided')
|
|
|
|
return parser.parse_args()
|
|
|
|
|
|
def unpack(hdf5, slcname, polar='RH', isfloat=False):
|
|
'''
|
|
Unpack HDF5 to binary SLC file.
|
|
'''
|
|
|
|
obj = createSensor('RISAT1_SLC')
|
|
obj._imageFile = os.path.join(hdf5, 'scene_'+polar, 'dat_01.001')
|
|
obj._leaderFile = os.path.join(hdf5, 'scene_'+polar,'lea_01.001')
|
|
|
|
if isfloat:
|
|
obj._dataType = 'float'
|
|
else:
|
|
obj._dataType = 'short'
|
|
|
|
if not os.path.isdir(slcname):
|
|
os.mkdir(slcname)
|
|
|
|
date = os.path.basename(slcname)
|
|
obj.output = os.path.join(slcname, date + '.slc')
|
|
|
|
obj.extractImage()
|
|
obj.frame.getImage().renderHdr()
|
|
|
|
|
|
coeffs = obj.doppler_coeff
|
|
dr = obj.frame.getInstrument().getRangePixelSize()
|
|
r0 = obj.frame.getStartingRange()
|
|
|
|
|
|
poly = Poly1D.Poly1D()
|
|
poly.initPoly(order=len(coeffs)-1)
|
|
poly.setCoeffs(coeffs)
|
|
|
|
|
|
fcoeffs = obj.azfmrate_coeff
|
|
fpoly = Poly1D.Poly1D()
|
|
fpoly.initPoly(order=len(fcoeffs)-1)
|
|
fpoly.setCoeffs(fcoeffs)
|
|
|
|
pickName = os.path.join(slcname, 'data')
|
|
with shelve.open(pickName) as db:
|
|
db['frame'] = obj.frame
|
|
db['doppler'] = poly
|
|
db['fmrate'] = fpoly
|
|
|
|
print(poly._coeffs)
|
|
print(fpoly._coeffs)
|
|
|
|
if __name__ == '__main__':
|
|
'''
|
|
Main driver.
|
|
'''
|
|
|
|
inps = cmdLineParse()
|
|
unpack(inps.indir, inps.slc, polar=inps.polar, isfloat=inps.isfloat)
|