isce2 icon indicating copy to clipboard operation
isce2 copied to clipboard

Issue with unpackFrame_ENV for using strimapApp Envisat

Open aminevsaziz opened this issue 2 years ago • 1 comments

As the title suggest, i was trying to unpack Envisat (*.N1) format into slc using unpackFrame_ENV for stripmapApp. However, the unpack crash due to _dopplerCoeffs in /contrib/stack/stripmapStack/unpackFrame_ENV.py does not exist! i tried to replace _dopplerCoeffs with obj.dopplerRangeTime as seen below but i couldnt understand the rest of the code. if theres anything wrong please correct me or suggest anything if possible. thanks in advance


#!/usr/bin/env python3

import isce
from isceobj.Sensor import createSensor
import shelve
import argparse
import glob
from isceobj.Util import Poly1D
from isceobj.Planet.AstronomicalHandbook import Const
import os
import datetime
import numpy as np

def cmdLineParse():
    '''
    Command line parser.
    '''

    parser = argparse.ArgumentParser(description='Unpack Envisat SLC data and store metadata in pickle file.')
    parser.add_argument('-i','--input', dest='h5dir', type=str,
            required=True, help='Input Envisat directory')
    parser.add_argument('-o', '--output', dest='slcdir', type=str,
            required=True, help='Output SLC directory')
    parser.add_argument('-r','--orbit', dest='orbitDir', type=str,
            required=True, help='orbit Envisat directory')
    parser.add_argument('-x','--instrument', dest='instrumentDir', type=str,
            required=True, help='instrument Envisat directory')


    return parser.parse_args()


def unpack(hdf5, slcname, orbitDir, instrumentDir):
    '''
    Unpack HDF5 to binary SLC file.
    '''

    fname = glob.glob(os.path.join(hdf5,'ASA*.N1'))[0]
    if not os.path.isdir(slcname):
        os.mkdir(slcname)

    date = os.path.basename(slcname)

    obj = createSensor('ENVISAT_SLC')
    obj._imageFileName = fname
    obj.orbitDir = orbitDir #'/home/xz/aux/orbits/esa/envisat/vor'
    obj.instrumentDir = instrumentDir #'/home/xz/aux/aux/esa/envisat/ASA_INS_AX'
    obj.output = os.path.join(slcname, date+'.slc')

    obj.extractImage()
    obj.frame.getImage().renderHdr()


    ######Numpy polynomial manipulation
    #pc = obj._dopplerCoeffs[::-1] old line
    #pc = obj.dopplerRangeTime[::-1] i used this or the one below it
    pc = obj._imageryFileData['doppler'][::-1]

    
    inds = np.linspace(0, obj.frame.numberOfSamples-1, len(pc))+1
    rng = obj.frame.getStartingRange() + inds * obj.frame.instrument.getRangePixelSize()
    dops = np.polyval(pc, 2*rng/Const.c-obj.dopplerRangeTime)

    print('Near range doppler: ', dops[0])
    print('Far range doppler: ', dops[-1])
   
    dopfit = np.polyfit(inds, dops, len(pc)-1)
    
    poly = Poly1D.Poly1D()
    poly.initPoly(order=len(pc)-1)
    poly.setCoeffs(dopfit[::-1])

    print('Poly near range doppler: ', poly(1))
    print('Poly far range doppler: ', poly(obj.frame.numberOfSamples))

#    width = obj.frame.getImage().getWidth()
#    midrange = r0 + 0.5 * width * dr
#    dt = datetime.timedelta(seconds = midrange / Const.c)

#    obj.frame.sensingStart = obj.frame.sensingStart - dt
#    obj.frame.sensingStop = obj.frame.sensingStop - dt
#    obj.frame.sensingMid = obj.frame.sensingMid - dt


    pickName = os.path.join(slcname, 'data')
    with shelve.open(pickName) as db:
        db['frame'] = obj.frame
        db['doppler'] = poly


if __name__ == '__main__':
    '''
    Main driver.
    '''

    inps = cmdLineParse()
    if inps.slcdir.endswith('/'):
        inps.slcdir = inps.slcdir[:-1]

    if inps.h5dir.endswith('/'):
        inps.h5dir = inps.h5dir[:-1]

    if inps.orbitDir.endswith('/'):
        inps.h5dir = inps.h5dir[:-1]

    if inps.instrumentDir.endswith('/'):
        inps.h5dir = inps.h5dir[:-1]

    unpack(inps.h5dir, inps.slcdir, inps.orbitDir, inps.instrumentDir)

aminevsaziz avatar Mar 29 '22 20:03 aminevsaziz

Hello, in case you didn't find a solution I followed the instructions of vittorio3d and the code now works for me! https://github.com/isce-framework/isce2/discussions/488#discussioncomment-3482353

Carolinah23 avatar Oct 03 '22 03:10 Carolinah23