Esempio n. 1
0
def run(slcImage,
        resampledFilename,
        offsetField,
        instrument,
        pixelSpacing,
        doppler,
        catalog=None,
        sceneid='NO_ID'):
    # Create the resampled SLC image
    resampledSlcImage = isceobj.createSlcImage()
    resampledSlcImage.setFilename(resampledFilename)
    resampledSlcImage.setAccessMode('write')
    resampledSlcImage.setDataType('CFLOAT')
    resampledSlcImage.setWidth(slcImage.width)
    resampledSlcImage.createImage()

    resamp = stdproc.createResamp_slc()
    resamp.setNumberLines(slcImage.length)
    resamp.setNumberRangeBin(slcImage.width)
    resamp.setNumberFitCoefficients(1)
    resamp.setSlantRangePixelSpacing(pixelSpacing)
    resamp.setDopplerCentroidCoefficients([doppler, 0.0, 0.0, 0.0])
    resamp.wireInputPort(name='offsets', object=offsetField)
    resamp.wireInputPort(name='instrument', object=instrument)
    resamp.stdWriter = stdWriter.set_file_tags("resamp_slc", "log", "err",
                                               "out")
    resamp.resamp_slc(slcImage, resampledSlcImage)
    slcImage.finalizeImage()
    resampledSlcImage.finalizeImage()
    return resampledSlcImage
Esempio n. 2
0
def resampSlave(mas, slv, rdict, outname ):
    '''
    Resample burst by burst.
    '''
   
    azpoly = rdict['azpoly']
    rgpoly = rdict['rgpoly']
    azcarrpoly = rdict['carrPoly']
    dpoly = rdict['doppPoly']

    rngImg = isceobj.createImage()
    rngImg.load(rdict['rangeOff'] + '.xml')
    rngImg.setAccessMode('READ')

    aziImg = isceobj.createImage()
    aziImg.load(rdict['azimuthOff'] + '.xml')
    aziImg.setAccessMode('READ')

    inimg = isceobj.createSlcImage()
    inimg.load(slv.image.filename + '.xml')
    inimg.setAccessMode('READ')


    rObj = stdproc.createResamp_slc()
    rObj.slantRangePixelSpacing = slv.rangePixelSize
    rObj.radarWavelength = slv.radarWavelength
    rObj.azimuthCarrierPoly = azcarrpoly
    rObj.dopplerPoly = dpoly
   
    rObj.azimuthOffsetsPoly = azpoly
    rObj.rangeOffsetsPoly = rgpoly
    rObj.imageIn = inimg


    ####Setting reference values
    rObj.startingRange = slv.startingRange
    rObj.referenceSlantRangePixelSpacing = mas.rangePixelSize
    rObj.referenceStartingRange = mas.startingRange
    rObj.referenceWavelength = mas.radarWavelength


    width = mas.numberOfSamples
    length = mas.numberOfLines
    imgOut = isceobj.createSlcImage()
    imgOut.setWidth(width)
    imgOut.filename = outname
    imgOut.setAccessMode('write')

    rObj.outputWidth = width
    rObj.outputLines = length
    rObj.residualRangeImage = rngImg
    rObj.residualAzimuthImage = aziImg

    rObj.resamp_slc(imageOut=imgOut)

    imgOut.renderHdr()
    return imgOut
Esempio n. 3
0
def resampSecondary(reference, burst, doppler, azpoly, flatten=False):
    '''
    Resample burst by burst.
    '''

    inimg = isceobj.createSlcImage()
    base = os.path.basename(reference)
    inimg.load(os.path.join(reference, base + '_orig.slc.xml'))
    inimg.setAccessMode('READ')
    width = inimg.getWidth()
    length = inimg.getLength()

    prf = burst.getInstrument().getPulseRepetitionFrequency()

    coeffs = [2 * np.pi * val / prf for val in doppler._coeffs]
    zcoeffs = [0. for val in coeffs]

    dpoly = Poly2D()
    dpoly.initPoly(rangeOrder=doppler._order,
                   azimuthOrder=1,
                   coeffs=[zcoeffs, coeffs])

    apoly = Poly2D()
    apoly.setMeanRange(azpoly._mean)
    apoly.setNormRange(azpoly._norm)
    apoly.initPoly(rangeOrder=azpoly._order,
                   azimuthOrder=0,
                   coeffs=[azpoly._coeffs])

    print('Shifts: ', apoly(1, 1), apoly(10240, 10240))

    rObj = stdproc.createResamp_slc()
    rObj.slantRangePixelSpacing = burst.getInstrument().getRangePixelSize()
    rObj.radarWavelength = burst.getInstrument().getRadarWavelength()
    rObj.azimuthCarrierPoly = dpoly

    rObj.azimuthOffsetsPoly = apoly
    rObj.imageIn = inimg

    imgOut = isceobj.createSlcImage()
    imgOut.setWidth(width)
    imgOut.filename = os.path.join(reference, base + '.slc')
    imgOut.setAccessMode('write')

    rObj.flatten = flatten
    rObj.outputWidth = width
    rObj.outputLines = length

    rObj.resamp_slc(imageOut=imgOut)

    imgOut.renderHdr()
    return imgOut
Esempio n. 4
0
def resampSecondary(ref, sec, rdict, outname, flatten):
    '''
    Resample burst by burst.
    '''

    azpoly = rdict['azpoly']
    rgpoly = rdict['rgpoly']
    azcarrpoly = rdict['carrPoly']
    dpoly = rdict['doppPoly']

    rngImg = isceobj.createImage()
    rngImg.load(rdict['rangeOff'] + '.xml')
    rngImg.setAccessMode('READ')

    aziImg = isceobj.createImage()
    aziImg.load(rdict['azimuthOff'] + '.xml')
    aziImg.setAccessMode('READ')

    inimg = isceobj.createSlcImage()
    inimg.load(sec.image.filename + '.xml')
    inimg.setAccessMode('READ')

    rObj = stdproc.createResamp_slc()
    rObj.slantRangePixelSpacing = sec.rangePixelSize
    rObj.radarWavelength = sec.radarWavelength
    rObj.azimuthCarrierPoly = azcarrpoly
    rObj.dopplerPoly = dpoly

    rObj.azimuthOffsetsPoly = azpoly
    rObj.rangeOffsetsPoly = rgpoly
    rObj.imageIn = inimg

    width = ref.numberOfSamples
    length = ref.numberOfLines
    imgOut = isceobj.createSlcImage()
    imgOut.setWidth(width)
    imgOut.filename = outname
    imgOut.setAccessMode('write')

    rObj.outputWidth = width
    rObj.outputLines = length
    rObj.residualRangeImage = rngImg
    rObj.residualAzimuthImage = aziImg
    rObj.flatten = flatten
    print(rObj.flatten)
    rObj.resamp_slc(imageOut=imgOut)

    imgOut.renderHdr()
    imgOut.renderVRT()
    return imgOut
Esempio n. 5
0
def resampSecondary(burst,
                    offdir,
                    outname,
                    doppler,
                    azpoly,
                    rgpoly,
                    reference=None,
                    flatten=False,
                    zero=False,
                    dims=None):
    '''
    Resample burst by burst.
    '''

    if offdir is not None:
        rgname = os.path.join(offdir, 'range.off')
        azname = os.path.join(offdir, 'azimuth.off')

        rngImg = isceobj.createImage()
        rngImg.load(rgname + '.xml')
        rngImg.setAccessMode('READ')

        aziImg = isceobj.createImage()
        aziImg.load(azname + '.xml')
        aziImg.setAccessMode('READ')

        width = rngImg.getWidth()
        length = rngImg.getLength()

    else:
        rngImg = None
        aziImg = None
        if dims is None:
            raise Exception('No offset image / dims provided.')

        width = dims[1]
        length = dims[0]

    inimg = isceobj.createSlcImage()
    inimg.load(burst.getImage().filename + '.xml')
    inimg.setAccessMode('READ')

    prf = burst.getInstrument().getPulseRepetitionFrequency()

    if zero:
        factor = 0.0
    else:
        factor = 1.0

    try:
        print('Polynomial doppler provided')
        coeffs = [factor * 2 * np.pi * val / prf for val in doppler._coeffs]
    except:
        print('List of coefficients provided')
        coeffs = [factor * 2 * np.pi * val / prf for val in doppler]

    zcoeffs = [0. for val in coeffs]
    dpoly = Poly2D()
    #    dpoly.initPoly(rangeOrder=len(coeffs)-1, azimuthOrder=1, coeffs=[zcoeffs,coeffs])
    dpoly.initPoly(rangeOrder=len(coeffs) - 1, azimuthOrder=0, coeffs=[coeffs])

    rObj = stdproc.createResamp_slc()
    rObj.slantRangePixelSpacing = burst.getInstrument().getRangePixelSize()
    rObj.radarWavelength = burst.getInstrument().getRadarWavelength()
    rObj.dopplerPoly = dpoly

    rObj.azimuthOffsetsPoly = azpoly
    rObj.rangeOffsetsPoly = rgpoly
    rObj.imageIn = inimg
    imgOut = isceobj.createSlcImage()
    imgOut.setWidth(width)

    outdir = os.path.dirname(outname)
    os.makedirs(outdir, exist_ok=True)

    if zero:
        imgOut.filename = os.path.join(outname)
    else:
        imgOut.filename = os.path.join(outname)
    imgOut.setAccessMode('write')

    rObj.flatten = flatten
    rObj.outputWidth = width
    rObj.outputLines = length
    rObj.residualRangeImage = rngImg
    rObj.residualAzimuthImage = aziImg

    if reference is not None:
        rObj.startingRange = burst.startingRange
        rObj.referenceStartingRange = reference.startingRange
        rObj.referenceSlantRangePixelSpacing = reference.getInstrument(
        ).getRangePixelSize()
        rObj.referenceWavelength = reference.getInstrument(
        ).getRadarWavelength()

    rObj.resamp_slc(imageOut=imgOut)

    imgOut.renderHdr()
    return imgOut
Esempio n. 6
0
    def resample(self,frame,doppler):
        """
        Resample the VH and VV polarizations by 0.5 pixels in azimuth.

        @param frame (\a isceobj.Scene.Frame) the Frame object for the SAR data
        """
        import isceobj
        import stdproc
        from isceobj import Constants
        from isceobj.Location.Offset import Offset, OffsetField

        instrument = frame.instrument
        fs = instrument.getRangeSamplingRate()
        pixelSpacing = Constants.SPEED_OF_LIGHT/(2.0*fs) #2013-06-03 Kosal: change in constant name
        filename = frame.getImage().getFilename()
        slcFilename = filename.replace('.raw','.slc')
        resampledFilename = filename.replace('.raw','.resampled.slc')

        # Create the SLC image
        slcImage = isceobj.createSlcImage()
        slcImage.setFilename(slcFilename)
        slcImage.setAccessMode('read')
        slcImage.setDataType('CFLOAT')
        slcImage.setWidth(self.width)
        slcImage.createImage()

        # Create the resampled SLC image
        resampledSlcImage = isceobj.createSlcImage()
        resampledSlcImage.setFilename(resampledFilename)
        resampledSlcImage.setAccessMode('write')
        resampledSlcImage.setDataType('CFLOAT')
        resampledSlcImage.setWidth(self.width)
        resampledSlcImage.createImage()

        # Create an offset field with constant 0.5 pixel shifts in azimuth
        offsetField = OffsetField()
        for i in range(0, self.length,100):
            for j in range(0, self.width,100):
                dx = 0.0
                dy = -0.5
                offset = Offset()
                offset.setCoordinate(j,i)
                offset.setOffset(dx,dy)
                offset.setSignalToNoise(10.0)
                offsetField.addOffset(offset)

        self.logger.debug("width: %s" % (self.width))
        self.logger.debug("length: %s" % (self.length))
        self.logger.debug("Pixel Spacing: %s" % (pixelSpacing))
        self.logger.debug("doppler : %s" % (doppler))
        fp = open('offsetField','w')
        fp.write(str(offsetField))
        fp.close()

        #2013-06-03 Kosal: change resamp_only to resamp_slc, which resamples only an SLC
        #(took resamp_only from revision 747)
        resamp = stdproc.createResamp_slc()
        resamp.setNumberLines(self.length)
        resamp.setNumberRangeBin(self.width)
        resamp.setNumberFitCoefficients(1)
        resamp.setSlantRangePixelSpacing(pixelSpacing)
        resamp.setDopplerCentroidCoefficients([doppler, 0.0, 0.0, 0.0])
        resamp.wireInputPort(name='offsets', object=offsetField)
        resamp.wireInputPort(name='instrument', object=instrument)

        # updated 07/24/2012
        resamp.stdWriter = self._writer_set_file_tags(
            "resamp_slc", "log", "err", "out"
            )

        # updated 07/24/2012
        resamp.resamp_slc(slcImage, resampledSlcImage)
        #Kosal

        slcImage.finalizeImage()
        resampledSlcImage.finalizeImage()

        # Rename the resampled slcs
        os.rename(resampledFilename,slcFilename)
Esempio n. 7
0
def runResampleSlc(self, kind='coarse'):
    '''
    Kind can either be coarse, refined or fine.
    '''

    if kind not in ['coarse', 'refined', 'fine']:
        raise Exception('Unknown operation type {0} in runResampleSlc'.format(kind))

    if kind == 'fine':
        if not (self.doRubbersheetingRange | self.doRubbersheetingAzimuth): # Modified by V. Brancato 10.10.2019
            print('Rubber sheeting not requested, skipping resampling ....')
            return

    logger.info("Resampling secondary SLC")

    secondaryFrame = self._insar.loadProduct( self._insar.secondarySlcCropProduct)
    referenceFrame = self._insar.loadProduct( self._insar.referenceSlcCropProduct)

    inimg = isceobj.createSlcImage()
    inimg.load(secondaryFrame.getImage().filename + '.xml')
    inimg.setAccessMode('READ')

    prf = secondaryFrame.PRF

    doppler = secondaryFrame._dopplerVsPixel
    coeffs = [2*np.pi*val/prf for val in doppler]
    
    dpoly = Poly2D()
    dpoly.initPoly(rangeOrder=len(coeffs)-1, azimuthOrder=0, coeffs=[coeffs])

    rObj = stdproc.createResamp_slc()
    rObj.slantRangePixelSpacing = secondaryFrame.getInstrument().getRangePixelSize()
    rObj.radarWavelength = secondaryFrame.getInstrument().getRadarWavelength() 
    rObj.dopplerPoly = dpoly 

    # for now let's start with None polynomial. Later this should change to
    # the misregistration polynomial

    misregFile = os.path.join(self.insar.misregDirname, self.insar.misregFilename)
    if ((kind in ['refined','fine']) and os.path.exists(misregFile+'_az.xml')):
        azpoly = self._insar.loadProduct(misregFile + '_az.xml')
        rgpoly = self._insar.loadProduct(misregFile + '_rg.xml')
    else:
        print(misregFile , " does not exist.")
        azpoly = None
        rgpoly = None

    rObj.azimuthOffsetsPoly = azpoly
    rObj.rangeOffsetsPoly = rgpoly
    rObj.imageIn = inimg

    #Since the app is based on geometry module we expect pixel-by-pixel offset
    #field
    offsetsDir = self.insar.offsetsDirname 
    
    # Modified by V. Brancato 10.10.2019
    #rgname = os.path.join(offsetsDir, self.insar.rangeOffsetFilename)
    
    if kind in ['coarse', 'refined']:
        azname = os.path.join(offsetsDir, self.insar.azimuthOffsetFilename)
        rgname = os.path.join(offsetsDir, self.insar.rangeOffsetFilename)
        flatten = True
    else:
        azname = os.path.join(offsetsDir, self.insar.azimuthRubbersheetFilename)
        if self.doRubbersheetingRange:
           print('Rubbersheeting in range is turned on, taking the cross-correlation offsets') 
           print('Setting Flattening to False') 
           rgname = os.path.join(offsetsDir, self.insar.rangeRubbersheetFilename) 
           flatten=False
        else:
           print('Rubbersheeting in range is turned off, taking range geometric offsets')
           rgname = os.path.join(offsetsDir, self.insar.rangeOffsetFilename)
           flatten=True
    
    rngImg = isceobj.createImage()
    rngImg.load(rgname + '.xml')
    rngImg.setAccessMode('READ')

    aziImg = isceobj.createImage()
    aziImg.load(azname + '.xml')
    aziImg.setAccessMode('READ')

    width = rngImg.getWidth()
    length = rngImg.getLength()

# Modified by V. Brancato 10.10.2019
    #flatten = True
    rObj.flatten = flatten
    rObj.outputWidth = width
    rObj.outputLines = length
    rObj.residualRangeImage = rngImg
    rObj.residualAzimuthImage = aziImg

    if referenceFrame is not None:
        rObj.startingRange = secondaryFrame.startingRange
        rObj.referenceStartingRange = referenceFrame.startingRange
        rObj.referenceSlantRangePixelSpacing = referenceFrame.getInstrument().getRangePixelSize()
        rObj.referenceWavelength = referenceFrame.getInstrument().getRadarWavelength()

    
    # preparing the output directory for coregistered secondary slc
    coregDir = self.insar.coregDirname

    os.makedirs(coregDir, exist_ok=True)

    # output file name of the coregistered secondary slc
    img = secondaryFrame.getImage()

    if kind  == 'coarse':
        coregFilename = os.path.join(coregDir , self._insar.coarseCoregFilename)
    elif kind == 'refined':
        coregFilename = os.path.join(coregDir, self._insar.refinedCoregFilename)
    elif kind == 'fine':
        coregFilename = os.path.join(coregDir, self._insar.fineCoregFilename)
    else:
        print('Exception: Should not have gotten to this stage')

    imgOut = isceobj.createSlcImage()
    imgOut.setWidth(width)
    imgOut.filename = coregFilename
    imgOut.setAccessMode('write')

    rObj.resamp_slc(imageOut=imgOut)

    imgOut.renderHdr()

    return
def resampleSlc(masterFrame,
                slaveFrame,
                imageSlc2,
                radarWavelength,
                coregDir,
                azoffname,
                rgoffname,
                azpoly=None,
                rgpoly=None,
                misreg=False):
    logger.info("Resampling slave SLC")

    imageSlc1 = masterFrame.getImage().filename

    inimg = isceobj.createSlcImage()
    inimg.load(imageSlc2 + '.xml')
    inimg.setAccessMode('READ')

    prf = slaveFrame.PRF

    doppler = slaveFrame._dopplerVsPixel
    factor = 1.0  # this should be zero for zero Doppler SLC.
    coeffs = [factor * 2 * np.pi * val / prf / prf for val in doppler]

    dpoly = Poly2D()
    dpoly.initPoly(rangeOrder=len(coeffs) - 1, azimuthOrder=0, coeffs=[coeffs])

    rObj = stdproc.createResamp_slc()
    rObj.slantRangePixelSpacing = slaveFrame.getInstrument().getRangePixelSize(
    )
    #rObj.radarWavelength = slaveFrame.getInstrument().getRadarWavelength()
    rObj.radarWavelength = radarWavelength
    rObj.dopplerPoly = dpoly

    # for now let's start with None polynomial. Later this should change to
    # the misregistration polynomial
    rObj.azimuthOffsetsPoly = azpoly
    rObj.rangeOffsetsPoly = rgpoly
    rObj.imageIn = inimg

    rngImg = isceobj.createImage()
    rngImg.load(rgoffname + '.xml')
    rngImg.setAccessMode('READ')

    aziImg = isceobj.createImage()
    aziImg.load(azoffname + '.xml')
    aziImg.setAccessMode('READ')

    width = rngImg.getWidth()
    length = rngImg.getLength()

    flatten = True
    rObj.flatten = flatten
    rObj.outputWidth = width
    rObj.outputLines = length
    rObj.residualRangeImage = rngImg
    rObj.residualAzimuthImage = aziImg

    if masterFrame is not None:
        rObj.startingRange = slaveFrame.startingRange
        rObj.referenceStartingRange = masterFrame.startingRange
        rObj.referenceSlantRangePixelSpacing = masterFrame.getInstrument(
        ).getRangePixelSize()
        rObj.referenceWavelength = radarWavelength

    # preparing the output directory for coregistered slave slc
    #coregDir = self.insar.coregDirname

    if os.path.isdir(coregDir):
        logger.info('Geometry directory {0} already exists.'.format(coregDir))
    else:
        os.makedirs(coregDir)

    # output file name of the coregistered slave slc
    img = slaveFrame.getImage()
    coregFilename = os.path.join(coregDir, os.path.basename(img.filename))

    imgOut = isceobj.createSlcImage()
    imgOut.setWidth(width)
    imgOut.filename = coregFilename
    imgOut.setAccessMode('write')

    rObj.resamp_slc(imageOut=imgOut)

    imgOut.renderHdr()

    return coregFilename
Esempio n. 9
0
                #checked: no flattenning
                #checked: no reading of range and azimuth images
                #checked: range/azimuth carrier values: 0, 0
                #checked: doppler no problem
                #         but doppler is computed using reference's coordinate in:
                #         isce/components/stdproc/stdproc/resamp_slc/src/resamp_slc.f90
                #         I have fixed it.

                for slcInput, slcOutput in zip(slcList, slcListResampled):
                    inimg = isceobj.createSlcImage()
                    inimg.load(slcInput + '.xml')
                    inimg.filename = slcInput
                    inimg.extraFilename = slcInput + '.vrt'
                    inimg.setAccessMode('READ')

                    rObj = stdproc.createResamp_slc()
                    #the following two items are actually not used, since we are not flattenning?
                    #but need to set these otherwise the program complains
                    rObj.slantRangePixelSpacing = swathSecondary.rangePixelSize
                    rObj.radarWavelength = trackSecondary.radarWavelength
                    #rObj.azimuthCarrierPoly = azCarrPoly
                    rObj.dopplerPoly = dpoly

                    rObj.azimuthOffsetsPoly = azimuthPoly
                    rObj.rangeOffsetsPoly = rangePoly
                    rObj.imageIn = inimg

                    ####Setting reference values
                    #the following four items are actually not used, since we are not flattenning?
                    #but need to set these otherwise the program complains
                    rObj.startingRange = swathSecondary.startingRange
Esempio n. 10
0
def resampleSlc(self,
                referenceFrame,
                secondaryFrame,
                imageSlc2,
                radarWavelength,
                coregDir,
                azoffname,
                rgoffname,
                azpoly=None,
                rgpoly=None,
                misreg=False):
    logger.info("Resampling secondary SLC")

    imageSlc1 = referenceFrame.getImage().filename

    inimg = isceobj.createSlcImage()
    inimg.load(imageSlc2 + '.xml')
    inimg.setAccessMode('READ')

    prf = secondaryFrame.PRF

    doppler = secondaryFrame._dopplerVsPixel
    factor = 1.0  # this should be zero for zero Doppler SLC.
    coeffs = [factor * 2 * np.pi * val / prf / prf for val in doppler]

    dpoly = Poly2D()
    dpoly.initPoly(rangeOrder=len(coeffs) - 1, azimuthOrder=0, coeffs=[coeffs])

    rObj = stdproc.createResamp_slc()
    rObj.slantRangePixelSpacing = secondaryFrame.getInstrument(
    ).getRangePixelSize()
    #rObj.radarWavelength = secondaryFrame.getInstrument().getRadarWavelength()
    rObj.radarWavelength = radarWavelength
    rObj.dopplerPoly = dpoly

    # for now let's start with None polynomial. Later this should change to
    # the misregistration polynomial
    rObj.azimuthOffsetsPoly = azpoly
    rObj.rangeOffsetsPoly = rgpoly
    rObj.imageIn = inimg

    rngImg = isceobj.createImage()
    rngImg.load(rgoffname + '.xml')
    rngImg.setAccessMode('READ')

    aziImg = isceobj.createImage()
    aziImg.load(azoffname + '.xml')
    aziImg.setAccessMode('READ')

    width = rngImg.getWidth()
    length = rngImg.getLength()

    # Modified by V. Brancato on 10.14.2019 (if Rubbersheeting in range is turned on, flatten the interferogram during cross-correlation)
    if not self.doRubbersheetingRange:
        print(
            'Rubber sheeting in range is turned off, flattening the interferogram during resampling'
        )
        flatten = True
        print(flatten)
    else:
        print(
            'Rubber sheeting in range is turned on, flattening the interferogram during interferogram formation'
        )
        flatten = False
        print(flatten)


# end of Modification

    rObj.flatten = flatten
    rObj.outputWidth = width
    rObj.outputLines = length
    rObj.residualRangeImage = rngImg
    rObj.residualAzimuthImage = aziImg

    if referenceFrame is not None:
        rObj.startingRange = secondaryFrame.startingRange
        rObj.referenceStartingRange = referenceFrame.startingRange
        rObj.referenceSlantRangePixelSpacing = referenceFrame.getInstrument(
        ).getRangePixelSize()
        rObj.referenceWavelength = radarWavelength

    # preparing the output directory for coregistered secondary slc
    #coregDir = self.insar.coregDirname

    os.makedirs(coregDir, exist_ok=True)

    # output file name of the coregistered secondary slc
    img = secondaryFrame.getImage()
    coregFilename = os.path.join(coregDir, os.path.basename(img.filename))

    imgOut = isceobj.createSlcImage()
    imgOut.setWidth(width)
    imgOut.filename = coregFilename
    imgOut.setAccessMode('write')

    rObj.resamp_slc(imageOut=imgOut)

    imgOut.renderHdr()

    return coregFilename
Esempio n. 11
0
def resampSlave(burst,
                offdir,
                outname,
                sn,
                azpoly,
                rgpoly,
                method,
                master=None,
                flatten=False,
                zero=False,
                dims=None):
    '''
    Resample burst by burst.
    '''

    if offdir is not None:
        rgname = os.path.join(offdir, 'range.off')
        azname = os.path.join(offdir, 'azimuth.off')

        rngImg = isceobj.createImage()
        rngImg.load(rgname + '.xml')
        rngImg.setAccessMode('READ')

        aziImg = isceobj.createImage()
        aziImg.load(azname + '.xml')
        aziImg.setAccessMode('READ')

        width = rngImg.getWidth()
        length = rngImg.getLength()
        #print('offdir (also master) width, length:', width, length)
    else:
        rngImg = None
        aziImg = None
        if dims is None:
            raise Exception('No offset image / dims provided.')

        width = dims[1]
        length = dims[0]

    #sw = ('HHHH', 'HVHV', 'VVVV')
    #if burst._polarization in sw:
    #    inimg = isceobj.createMlcImage()
    #    imgOut = isceobj.createMlcImage()
    #else:
    inimg = isceobj.createSlcImage()
    imgOut = isceobj.createSlcImage()

    print('inimg:', os.path.join(sn, burst.getImage().filename) + '.xml')
    inimg.load(os.path.join(sn, burst.getImage().filename) + '.xml')
    inimg.setAccessMode('READ')

    prf = burst.getInstrument().getPulseRepetitionFrequency()
    if zero:
        factor = 0.0
    else:
        factor = 1.0


#    try:
#        print('Polynomial doppler provided')
#        coeffs = [factor * 2*np.pi*val/prf for val in doppler._coeffs]
#    except:
#        print('List of coefficients provided')
#        coeffs = [factor * 2*np.pi*val/prf for val in doppler]
#
#    zcoeffs = [0. for val in coeffs]
#    dpoly = Poly2D()
##    dpoly.initPoly(rangeOrder=len(coeffs)-1, azimuthOrder=1, coeffs=[zcoeffs,coeffs])
#    dpoly.initPoly(rangeOrder=len(coeffs)-1, azimuthOrder=0, coeffs=[coeffs])

    rObj = stdproc.createResamp_slc()
    rObj.slantRangePixelSpacing = burst.getInstrument().getRangePixelSize()
    rObj.radarWavelength = burst.getInstrument().getRadarWavelength()
    #    rObj.dopplerPoly = dpoly
    rObj.dopplerPoly = None

    rObj.azimuthOffsetsPoly = azpoly
    rObj.rangeOffsetsPoly = rgpoly
    rObj.imageIn = inimg
    #    rObj.method = method #'SINC', 'BILINEAR', 'BICUBIC', 'NEAREST', 'AKIMA', 'BIQUINTIC'
    #    print('====Interpolation method is %s====' % (rObj.method))

    imgOut.setWidth(width)

    outdir = os.path.dirname(outname)
    if not os.path.exists(outdir):
        os.makedirs(outdir)

    if zero:
        imgOut.filename = os.path.join(outname)
    else:
        imgOut.filename = os.path.join(outname)
    imgOut.setAccessMode('write')

    rObj.flatten = flatten
    rObj.outputWidth = width
    rObj.outputLines = length
    rObj.residualRangeImage = rngImg
    rObj.residualAzimuthImage = aziImg

    if master is not None:
        rObj.startingRange = burst.startingRange
        rObj.referenceStartingRange = master.startingRange
        rObj.referenceSlantRangePixelSpacing = master.getInstrument(
        ).getRangePixelSize()
        rObj.referenceWavelength = master.getInstrument().getRadarWavelength()

    rObj.resamp_slc(imageOut=imgOut)
    imgOut.renderHdr()
    return imgOut