def make_raw(sensor, doppler):
    from make_raw import make_raw

    objMakeRaw = make_raw()
    objMakeRaw(sensor=sensor, doppler=doppler)

    return objMakeRaw
Ejemplo n.º 2
0
    def main(self):

        self.help()
        import time
        import math
        import isceobj
        from make_raw import make_raw

        timeStart = time.time()

        exit = 0
        process = 'extractMetadata'
        message = 'Info extraction succeeded'

        try:
            makeRaw = make_raw()
            makeRaw.wireInputPort(name='sensor', object=self.sensor)
            makeRaw.wireInputPort(name='doppler', object=self.doppler)
            makeRaw.make_raw()
        except Exception as e:
            exit = 1
            message = 'make_raw failed with exception ' + str(e)
            toContext(process, exit, message)
            raise Exception
        try:
            self.frame = makeRaw.getFrame()
            self.frame._squintAngle = math.radians(makeRaw.getSquint())
            self.frame.doppler = makeRaw.dopplerValues.getDopplerCoefficients(
            )[0]
            self.frame.datasetType = self.datasetType
            fie = FIE()
            frameInfo = fie.extractInfoFromFrame(self.frame)
        except Exception as e:
            exit = 2
            message = 'extractInfoFromFrame failed with exception ' + str(e)
            toContext(process, exit, message)
            raise Exception

        try:
            if (frameInfo):
                frameInfo.dump(self.metadataFile)
                dummyFile = self.frame.getImage().getFilename()
                os.system("rm -rf " + dummyFile + "*")
        except Exception as e:
            exit = 3
            message = 'saving metadata file failed with exception ' + str(e)
            toContext(process, exit, message)
            raise Exception

        #if it gets here return 0
        toContext(process, exit, message)
        return 0
Ejemplo n.º 3
0
def run(sensor, doppler, catalog=None, sceneid='NO_ID'):
    """
    Extract raw image from sensor.
    """

    objMakeRaw = make_raw()
    objMakeRaw(sensor=sensor, doppler=doppler)

    if catalog is not None:
        rawImage = initRawImage(objMakeRaw)

        frame = objMakeRaw.getFrame()
        instrument = frame.getInstrument()
        platform = instrument.getPlatform()
        orbit = frame.getOrbit()

        planet = platform.getPlanet()
        catalog.addInputsFrom(planet, 'planet')
        catalog.addInputsFrom(planet.get_elp(), 'planet.ellipsoid')

        catalog.addInputsFrom(sensor, 'sensor')
        catalog.addItem('width', rawImage.getWidth(), sceneid)
        catalog.addItem('xmin', rawImage.getXmin(), sceneid)
        catalog.addItem('iBias', instrument.getInPhaseValue(), sceneid)
        catalog.addItem('qBias', instrument.getQuadratureValue(), sceneid)
        catalog.addItem('range_sampling_rate',
                        instrument.getRangeSamplingRate(), sceneid)
        catalog.addItem('prf', instrument.getPulseRepetitionFrequency(),
                        sceneid)
        catalog.addItem('pri', 1.0 / instrument.getPulseRepetitionFrequency(),
                        sceneid)
        catalog.addItem('pulse_length', instrument.getPulseLength(), sceneid)
        catalog.addItem('chirp_slope', instrument.getChirpSlope(), sceneid)
        catalog.addItem('wavelength', instrument.getRadarWavelength(), sceneid)
        catalog.addItem('lookSide', platform.pointingDirection,
                        sceneid)  #KK 2013-12-12
        catalog.addInputsFrom(frame, '%s.frame' % sceneid)
        catalog.addInputsFrom(instrument, '%s.instrument' % sceneid)
        catalog.addInputsFrom(platform, '%s.platform' % sceneid)
        catalog.addInputsFrom(orbit, '%s.orbit' % sceneid)

        catalog.printToLog(logger, "runPreprocessor: %s" % sceneid)

    return objMakeRaw
Ejemplo n.º 4
0
    def make_raw(self, sensor, doppler):
        """
        Extract the unfocused SAR image and associated data

        @param sensor (\a isceobj.Sensor) the sensor object
        @param doppler (\a isceobj.Doppler) the doppler object
        @return (\a make_raw) a make_raw instance
        """
        from make_raw import make_raw
        import stdproc
        import isceobj

        # Extract raw image
        self.logger.info("Creating Raw Image")
        mr = make_raw()
        mr.wireInputPort(name='sensor', object=sensor)
        mr.wireInputPort(name='doppler', object=doppler)
        mr.make_raw()

        return mr
def runPreprocessor(self):

    from .Factories import isRawSensor, isZeroDopplerSLC, getDopplerMethod

    ###Unpack master
    sensor = copy.deepcopy(self.master)

    dirname = sensor.output

    if self.masterSensorName is None:
        self.masterSensorName = self.sensorName

    israwdata = isRawSensor(self.masterSensorName)

    if self.masterDopplerMethod is None:
        mdop = getDopplerMethod(self.masterSensorName)
    else:
        mdop = self.masterDopplerMethod

    masterdop = isceobj.Doppler.createDoppler(mdop)

    if israwdata:
        print('Master data is in RAW format. Adding _raw to output name.')
        sensor.output = os.path.join(dirname + '_raw',
                                     os.path.basename(dirname) + '.raw')
        if not os.path.isdir(os.path.dirname(sensor.output)):
            os.makedirs(os.path.dirname(sensor.output))
        #sensor._resampleFlag = 'single2dual'
        master = make_raw(sensor, masterdop)

        ###Weird handling here because of way make_raw is structured
        ###DOPIQ uses weird dict to store coeffs
        if mdop == 'useDOPIQ':
            #master._dopplerVsPixel = [masterdop.quadratic[x]*master.PRF for x in ['a','b','c']]
            master.frame._dopplerVsPixel = [
                masterdop.quadratic[x] * master.PRF for x in ['a', 'b', 'c']
            ]

        if self._insar.masterRawProduct is None:
            self._insar.masterRawProduct = dirname + '_raw.xml'

        self._insar.saveProduct(master.frame, self._insar.masterRawProduct)

    else:
        print('Master data is in SLC format. Adding _slc to output name.')
        iszerodop = isZeroDopplerSLC(self.masterSensorName)
        sensor.output = os.path.join(dirname + '_slc',
                                     os.path.basename(dirname) + '.slc')

        if not os.path.isdir(os.path.dirname(sensor.output)):
            os.makedirs(os.path.dirname(sensor.output))

        master = make_raw(sensor, masterdop)

        if self._insar.masterSlcProduct is None:
            self._insar.masterSlcProduct = dirname + '_slc.xml'

        if iszerodop:
            self._insar.masterGeometrySystem = 'Zero Doppler'
        else:
            self._insar.masterGeometrySystem = 'Native Doppler'

        self._insar.saveProduct(master.frame, self._insar.masterSlcProduct)

    ###Unpack slave
    sensor = copy.deepcopy(self.slave)
    dirname = sensor.output

    if self.slaveSensorName is None:
        self.slaveSensorName = self.sensorName

    israwdata = isRawSensor(self.slaveSensorName)

    if self.slaveDopplerMethod is None:
        sdop = getDopplerMethod(self.slaveSensorName)
    else:
        sdop = self.slaveDopplerMethod

    slavedop = isceobj.Doppler.createDoppler(sdop)

    if israwdata:
        print('Slave data is in RAW format. Adding _raw to output name.')
        sensor.output = os.path.join(dirname + '_raw',
                                     os.path.basename(dirname) + '.raw')

        if not os.path.isdir(os.path.dirname(sensor.output)):
            os.makedirs(os.path.dirname(sensor.output))

        slave = make_raw(sensor, slavedop)

        ###Weird handling here because of make_raw structure
        ###DOPIQ uses weird dict to store coefficients
        if sdop == 'useDOPIQ':
            #slave._dopplerVsPixel = [slavedop.quadratic[x]*slave.PRF for x in ['a','b','c']]
            slave.frame._dopplerVsPixel = [
                slavedop.quadratic[x] * slave.PRF for x in ['a', 'b', 'c']
            ]

        if self._insar.slaveRawProduct is None:
            self._insar.slaveRawProduct = dirname + '_raw.xml'

        self._insar.saveProduct(slave.frame, self._insar.slaveRawProduct)

    else:
        print('Slave data is in SLC format. Adding _slc to output name.')
        iszerodop = isZeroDopplerSLC(self.slaveSensorName)
        sensor.output = os.path.join(dirname + '_slc',
                                     os.path.basename(dirname) + '.slc')

        if not os.path.isdir(os.path.dirname(sensor.output)):
            os.makedirs(os.path.dirname(sensor.output))

        slave = make_raw(sensor, slavedop)

        if self._insar.slaveSlcProduct is None:
            self._insar.slaveSlcProduct = dirname + '_slc.xml'

        if iszerodop:
            self._insar.slaveGeometrySystem = 'Zero Doppler'
        else:
            self._insar.slaveGeometrySystem = 'Native Doppler'

        self._insar.saveProduct(slave.frame, self._insar.slaveSlcProduct)

    catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name)
    frame = master.frame
    instrument = frame.getInstrument()
    platform = instrument.getPlatform()

    catalog.addInputsFrom(master.sensor, 'master.sensor')
    catalog.addItem('width', frame.numberOfSamples, 'master')
    catalog.addItem('iBias', instrument.getInPhaseValue(), 'master')
    catalog.addItem('qBias', instrument.getQuadratureValue(), 'master')
    catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(),
                    'master')
    catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'master')
    catalog.addItem('pri', 1.0 / instrument.getPulseRepetitionFrequency(),
                    'master')
    catalog.addItem('pulse_length', instrument.getPulseLength(), 'master')
    catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'master')
    catalog.addItem('wavelength', instrument.getRadarWavelength(), 'master')
    catalog.addItem('lookSide', platform.pointingDirection, 'master')
    catalog.addInputsFrom(frame, 'master.frame')
    catalog.addInputsFrom(instrument, 'master.instrument')
    catalog.addInputsFrom(platform, 'master.platform')
    catalog.addInputsFrom(frame.orbit, 'master.orbit')

    frame = slave.frame
    instrument = frame.getInstrument()
    platform = instrument.getPlatform()

    catalog.addInputsFrom(slave.sensor, 'slave.sensor')
    catalog.addItem('width', frame.numberOfSamples, 'slave')
    catalog.addItem('iBias', instrument.getInPhaseValue(), 'slave')
    catalog.addItem('qBias', instrument.getQuadratureValue(), 'slave')
    catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(),
                    'slave')
    catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'slave')
    catalog.addItem('pri', 1.0 / instrument.getPulseRepetitionFrequency(),
                    'slave')
    catalog.addItem('pulse_length', instrument.getPulseLength(), 'slave')
    catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'slave')
    catalog.addItem('wavelength', instrument.getRadarWavelength(), 'slave')
    catalog.addItem('lookSide', platform.pointingDirection, 'slave')
    catalog.addInputsFrom(frame, 'slave.frame')
    catalog.addInputsFrom(instrument, 'slave.instrument')
    catalog.addInputsFrom(platform, 'slave.platform')
    catalog.addInputsFrom(frame.orbit, 'slave.orbit')

    catalog.printToLog(logger, "runPreprocessor")
    self._insar.procDoc.addAllFromCatalog(catalog)
Ejemplo n.º 6
0
def runISSI(self, opList):
    for sceneid in self._isce.selectedScenes:
        raws = {}
        slcFiles = {}
        for pol in ['hh', 'hv', 'vh', 'vv']:
            raws[pol] = make_raw()
            raws[pol].frame = self._isce.frames[sceneid][pol]
            slcFiles[pol] = self._isce.slcImages[sceneid][pol]
        focuser = Focuser(hh=raws['hh'],
                          hv=raws['hv'],
                          vh=raws['vh'],
                          vv=raws['vv'])
        focuser.filter = self.FR_filter
        focuser.filterSize = (int(self.FR_filtersize_x),
                              int(self.FR_filtersize_y))
        focuser.logger = logger

        outputs = {}
        for fname in [
                self._isce.frOutputName, self._isce.tecOutputName,
                self._isce.phaseOutputName
        ]:
            outputs[fname] = os.path.join(
                self.getoutputdir(sceneid),
                self._isce.formatname(sceneid, ext=fname + '.slc'))

        hhFile = slcFiles['hh']
        issiobj = FR(hhFile=hhFile.filename,
                     hvFile=slcFiles['hv'].filename,
                     vhFile=slcFiles['vh'].filename,
                     vvFile=slcFiles['vv'].filename,
                     lines=hhFile.length,
                     samples=hhFile.width,
                     frOutput=outputs[self._isce.frOutputName],
                     tecOutput=outputs[self._isce.tecOutputName],
                     phaseOutput=outputs[self._isce.phaseOutputName])

        if 'polcal' in opList:  ## polarimetric calibration
            issiobj.polarimetricCorrection(self._isce.transmit,
                                           self._isce.receive)
            for pol, fname in zip(['hh', 'hv', 'vh', 'vv'], [
                    issiobj.hhFile, issiobj.hvFile, issiobj.vhFile,
                    issiobj.vvFile
            ]):
                self._isce.slcImages[sceneid][pol].filename = fname

        if 'fr' in opList:  ## calculate faraday rotation
            frame = self._isce.frames[self._isce.refScene][self._isce.refPol]
            if frame.getImage().byteOrder != sys.byteorder[0]:
                logger.info("Will swap bytes")
                swap = True
            else:
                logger.info("Will not swap bytes")
                swap = False

            issiobj.calculateFaradayRotation(filter=focuser.filter,
                                             filterSize=focuser.filterSize,
                                             swap=swap)
            aveFr = issiobj.getAverageFaradayRotation()
            logger.info("Image Dimensions %s: %s x %s" %
                        (sceneid, issiobj.samples, issiobj.lines))
            logger.info("Average Faraday Rotation %s: %s rad (%s deg)" %
                        (sceneid, aveFr, math.degrees(aveFr)))

        if 'tec' in opList:
            date = focuser.hhObj.frame.getSensingStart()
            corners, lookAngles = focuser.calculateCorners()
            lookDirections = focuser.calculateLookDirections()
            fc = focuser.hhObj.frame.getInstrument().getRadarFrequency()
            meankdotb = issiobj.frToTEC(date, corners, lookAngles,
                                        lookDirections, fc)
            logger.info("Mean k.B value %s: %s" % (sceneid, meankdotb))

        if 'phase' in opList:
            fc = focuser.hhObj.frame.getInstrument().getRadarFrequency()
            issiobj.tecToPhase(fc)
Ejemplo n.º 7
0
def runPreprocessor(self):
    master = make_raw(self.master, self.masterdop)
    self.insar.rawMasterIQImage = master.iqImage
    slave = make_raw(self.slave, self.slavedop)
    self.insar.rawSlaveIQImage = slave.iqImage
    self._insar.numberRangeBins = master.frame.numberRangeBins
    #add raw images to main object
    masterRaw = initRawImage(master)
    self._insar.setMasterRawImage(masterRaw)
    slaveRaw = initRawImage(slave)
    self._insar.setSlaveRawImage(slaveRaw)

    #add frames to main  object
    self._insar.setMasterFrame(master.frame)
    self._insar.setSlaveFrame(slave.frame)

    #add doppler to main object
    self._insar.setMasterDoppler(master.getDopplerValues())
    self._insar.setSlaveDoppler(slave.getDopplerValues())

    #add squints to main object
    self._insar.setMasterSquint(master.getSquint())
    self._insar.setSlaveSquint(slave.getSquint())

    #add look direction
    self._insar.setLookSide(
        master.frame.getInstrument().getPlatform().pointingDirection)

    catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name)

    frame = self._insar.getMasterFrame()
    instrument = frame.getInstrument()
    platform = instrument.getPlatform()

    planet = platform.getPlanet()
    catalog.addInputsFrom(planet, 'planet')
    catalog.addInputsFrom(planet.get_elp(), 'planet.ellipsoid')

    catalog.addInputsFrom(master.sensor, 'master.sensor')
    catalog.addItem('width', masterRaw.getWidth(), 'master')
    catalog.addItem('xmin', masterRaw.getXmin(), 'master')
    catalog.addItem('iBias', instrument.getInPhaseValue(), 'master')
    catalog.addItem('qBias', instrument.getQuadratureValue(), 'master')
    catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(),
                    'master')
    catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'master')
    catalog.addItem('pri', 1.0 / instrument.getPulseRepetitionFrequency(),
                    'master')
    catalog.addItem('pulse_length', instrument.getPulseLength(), 'master')
    catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'master')
    catalog.addItem('wavelength', instrument.getRadarWavelength(), 'master')
    catalog.addItem('lookSide', platform.pointingDirection, 'master')
    catalog.addInputsFrom(frame, 'master.frame')
    catalog.addInputsFrom(instrument, 'master.instrument')
    catalog.addInputsFrom(platform, 'master.platform')
    catalog.addInputsFrom(frame.orbit, 'master.orbit')

    frame = self._insar.getSlaveFrame()
    instrument = frame.getInstrument()
    platform = instrument.getPlatform()

    catalog.addInputsFrom(slave.sensor, 'slave.sensor')
    catalog.addItem('width', slaveRaw.getWidth(), 'slave')
    catalog.addItem('xmin', slaveRaw.getXmin(), 'slave')
    catalog.addItem('iBias', instrument.getInPhaseValue(), 'slave')
    catalog.addItem('qBias', instrument.getQuadratureValue(), 'slave')
    catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(),
                    'slave')
    catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'slave')
    catalog.addItem('pri', 1.0 / instrument.getPulseRepetitionFrequency(),
                    'slave')
    catalog.addItem('pulse_length', instrument.getPulseLength(), 'slave')
    catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'slave')
    catalog.addItem('wavelength', instrument.getRadarWavelength(), 'slave')
    catalog.addItem('lookSide', platform.pointingDirection, 'slave')
    catalog.addInputsFrom(frame, 'slave.frame')
    catalog.addInputsFrom(instrument, 'slave.instrument')
    catalog.addInputsFrom(platform, 'slave.platform')
    catalog.addInputsFrom(frame.orbit, 'slave.orbit')

    optlist = ['all', 'top', 'middle', 'bottom']
    success = False
    baseLocation = None

    for option in optlist:
        baseObj = Baseline()
        baseObj.configure()
        baseObj.baselineLocation = option
        baseObj.wireInputPort(name='masterFrame',
                              object=self._insar.getMasterFrame())
        baseObj.wireInputPort(name='slaveFrame',
                              object=self._insar.getSlaveFrame())
        try:
            baseObj.baseline()
            success = True
            baseLocation = option
        except:
            print('Baseline computation with option {0} Failed'.format(option))
            pass

        if success:
            break

    if not success:
        raise Exception(
            'Baseline computation failed with all possible options. Images may not overlap.'
        )

    catalog.addItem('horizontal_baseline_top', baseObj.hBaselineTop,
                    'baseline')
    catalog.addItem('horizontal_baseline_rate', baseObj.hBaselineRate,
                    'baseline')
    catalog.addItem('horizontal_baseline_acc', baseObj.hBaselineAcc,
                    'baseline')
    catalog.addItem('vertical_baseline_top', baseObj.vBaselineTop, 'baseline')
    catalog.addItem('vertical_baseline_rate', baseObj.vBaselineRate,
                    'baseline')
    catalog.addItem('vertical_baseline_acc', baseObj.vBaselineAcc, 'baseline')
    catalog.addItem('perp_baseline_top', baseObj.pBaselineTop, 'baseline')
    catalog.addItem('perp_baseline_bottom', baseObj.pBaselineBottom,
                    'baseline')
    catalog.addItem('baseline_location', baseLocation, 'baseline')

    catalog.printToLog(logger, "runPreprocessor")
    self._insar.procDoc.addAllFromCatalog(catalog)
Ejemplo n.º 8
0
def runPreprocessor(self):
     
    master = make_raw(self.master, self.masterdop)
    slave = make_raw(self.slave, self.slavedop)
    self._insar.numberRangeBins = master.frame.numberRangeBins
    #add raw images to main object
    masterRaw = initRawImage(master)
    self._insar.setMasterRawImage(masterRaw)
    slaveRaw = initRawImage(slave)
    self._insar.setSlaveRawImage(slaveRaw)
    
    #add frames to main  object
    self._insar.setMasterFrame(master.frame)
    self._insar.setSlaveFrame(slave.frame)
    
    #add doppler to main object
    self._insar.setMasterDoppler(master.getDopplerValues())
    self._insar.setSlaveDoppler(slave.getDopplerValues())
    
    #add squints to main object
    self._insar.setMasterSquint(master.getSquint())
    self._insar.setSlaveSquint(slave.getSquint())

    #add look direction
    self._insar.setLookSide(master.frame.getInstrument().getPlatform().pointingDirection)
    
    catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name)

    frame = self._insar.getMasterFrame()
    instrument = frame.getInstrument()
    platform = instrument.getPlatform()    

    planet = platform.getPlanet()
    catalog.addInputsFrom(planet, 'planet')
    catalog.addInputsFrom(planet.get_elp(), 'planet.ellipsoid')

    catalog.addInputsFrom(master.sensor, 'master.sensor')
    catalog.addItem('width', masterRaw.getWidth(), 'master')
    catalog.addItem('xmin', masterRaw.getXmin(), 'master')
    catalog.addItem('iBias', instrument.getInPhaseValue(), 'master')
    catalog.addItem('qBias', instrument.getQuadratureValue(), 'master')
    catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(), 'master')
    catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'master')
    catalog.addItem('pri', 1.0/instrument.getPulseRepetitionFrequency(), 'master')
    catalog.addItem('pulse_length', instrument.getPulseLength(), 'master')
    catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'master')
    catalog.addItem('wavelength', instrument.getRadarWavelength(), 'master')
    catalog.addItem('lookSide', platform.pointingDirection, 'master')
    catalog.addInputsFrom(frame, 'master.frame')
    catalog.addInputsFrom(instrument, 'master.instrument')
    catalog.addInputsFrom(platform, 'master.platform')


    frame = self._insar.getSlaveFrame()
    instrument = frame.getInstrument()
    platform = instrument.getPlatform()    

    catalog.addInputsFrom(slave.sensor, 'slave.sensor')
    catalog.addItem('width', slaveRaw.getWidth(), 'slave')
    catalog.addItem('xmin', slaveRaw.getXmin(), 'slave')
    catalog.addItem('iBias', instrument.getInPhaseValue(), 'slave')
    catalog.addItem('qBias', instrument.getQuadratureValue(), 'slave')
    catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(), 'slave')
    catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'slave')
    catalog.addItem('pri', 1.0/instrument.getPulseRepetitionFrequency(), 'slave')
    catalog.addItem('pulse_length', instrument.getPulseLength(), 'slave')
    catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'slave')
    catalog.addItem('wavelength', instrument.getRadarWavelength(), 'slave')
    catalog.addItem('lookSide', platform.pointingDirection, 'slave')
    catalog.addInputsFrom(frame, 'slave.frame')
    catalog.addInputsFrom(instrument, 'slave.instrument')
    catalog.addInputsFrom(platform, 'slave.platform')


    baseObj = Baseline()
    baseObj.wireInputPort(name='masterFrame',object=self._insar.getMasterFrame())
    baseObj.wireInputPort(name='slaveFrame',object=self._insar.getSlaveFrame())
    baseObj.baseline()

    catalog.addItem('horizontal_baseline_top', baseObj.hBaselineTop, 'baseline')
    catalog.addItem('horizontal_baseline_rate', baseObj.hBaselineRate, 'baseline')
    catalog.addItem('horizontal_baseline_acc', baseObj.hBaselineAcc, 'baseline')
    catalog.addItem('vertical_baseline_top', baseObj.vBaselineTop, 'baseline')
    catalog.addItem('vertical_baseline_rate', baseObj.vBaselineRate, 'baseline')
    catalog.addItem('vertical_baseline_acc', baseObj.vBaselineAcc, 'baseline')
    catalog.addItem('perp_baseline_top', baseObj.pBaselineTop, 'baseline')
    catalog.addItem('perp_baseline_bottom', baseObj.pBaselineBottom, 'baseline')

    catalog.printToLog(logger, "runPreprocessor")
    self._insar.procDoc.addAllFromCatalog(catalog)
Ejemplo n.º 9
0
    if inps.sensor.upper() == 'TERRASARX':
        (objSensor, objDop) = setTSX(inps)
    elif inps.sensor.upper() == 'SENTINEL1A':
        (objSensor, objDop) = setS1A(inps)
    elif inps.sensor.upper() == 'COSMO_SKYMED_SLC':
        (objSensor, objDop) = setCSKS(inps)
    elif inps.sensor.upper() == 'ALOS2':
        (objSensor, objDop) = setALOS2(inps)
    elif inps.sensor.upper() == 'RADARSAT2':
        (objSensor, objDop) = setRS2(inps)
    else:
        raise Exception("\ninstrument not supported yet!\n")

    #extract image
    sarMeta = make_raw(objSensor, objDop)

    #get info
    frame = sarMeta.frame
    frame.dopCoeff = sarMeta.getDopplerValues().getDopplerCoefficients(
        inHz=False)  #make doppler simple list

    #get doppler for s1a
    if inps.sensor.upper() == 'SENTINEL1A':
        #get doppler
        dopCoeff = getS1aDoppler(getInfo(inps.input, 'xml'))
        frame.dopCoeff = dopCoeff

    #update doppler for alos2
    if inps.sensor.upper() == 'ALOS2':
        dopCoeff = getAlos2Doppler(getInfo(inps.input, 'LEADERFILE'), frame)
Ejemplo n.º 10
0
def runPreprocessor(self):

    from .Factories import isRawSensor, isZeroDopplerSLC, getDopplerMethod

    ###Unpack master
    sensor = copy.deepcopy(self.master)

    dirname = sensor.output

    if self.masterSensorName is None:
        self.masterSensorName = self.sensorName

    israwdata = isRawSensor(self.masterSensorName)

    if self.masterDopplerMethod is None:
        mdop = getDopplerMethod(self.masterSensorName)
    else:
        mdop = self.masterDopplerMethod

    masterdop = isceobj.Doppler.createDoppler(mdop)

    if israwdata:
        print('Master data is in RAW format. Adding _raw to output name.')
        sensor.output = os.path.join(dirname + '_raw',
                                     os.path.basename(dirname) + '.raw')
        if not os.path.isdir(os.path.dirname(sensor.output)):
            os.makedirs(os.path.dirname(sensor.output))
        #sensor._resampleFlag = 'single2dual'
        master = make_raw(sensor, masterdop)

        ###Weird handling here because of way make_raw is structured
        ###DOPIQ uses weird dict to store coeffs
        if mdop == 'useDOPIQ':
            #master._dopplerVsPixel = [masterdop.quadratic[x]*master.PRF for x in ['a','b','c']]
            master.frame._dopplerVsPixel = [
                masterdop.quadratic[x] * master.PRF for x in ['a', 'b', 'c']
            ]

        if self._insar.masterRawProduct is None:
            self._insar.masterRawProduct = dirname + '_raw.xml'

        self._insar.saveProduct(master.frame, self._insar.masterRawProduct)

    else:
        print('Master data is in SLC format. Adding _slc to output name.')
        iszerodop = isZeroDopplerSLC(self.masterSensorName)
        sensor.output = os.path.join(dirname + '_slc',
                                     os.path.basename(dirname) + '.slc')

        if not os.path.isdir(os.path.dirname(sensor.output)):
            os.makedirs(os.path.dirname(sensor.output))

        master = make_raw(sensor, masterdop)

        if self._insar.masterSlcProduct is None:
            self._insar.masterSlcProduct = dirname + '_slc.xml'

        if iszerodop:
            self._insar.masterGeometrySystem = 'Zero Doppler'
        else:
            self._insar.masterGeometrySystem = 'Native Doppler'

        self._insar.saveProduct(master.frame, self._insar.masterSlcProduct)

    ###Unpack slave
    sensor = copy.deepcopy(self.slave)
    dirname = sensor.output

    if self.slaveSensorName is None:
        self.slaveSensorName = self.sensorName

    israwdata = isRawSensor(self.slaveSensorName)

    if self.slaveDopplerMethod is None:
        sdop = getDopplerMethod(self.slaveSensorName)
    else:
        sdop = self.slaveDopplerMethod

    slavedop = isceobj.Doppler.createDoppler(sdop)

    if israwdata:
        print('Slave data is in RAW format. Adding _raw to output name.')
        sensor.output = os.path.join(dirname + '_raw',
                                     os.path.basename(dirname) + '.raw')

        if not os.path.isdir(os.path.dirname(sensor.output)):
            os.makedirs(os.path.dirname(sensor.output))

        slave = make_raw(sensor, slavedop)

        ###Weird handling here because of make_raw structure
        ###DOPIQ uses weird dict to store coefficients
        if sdop == 'useDOPIQ':
            #slave._dopplerVsPixel = [slavedop.quadratic[x]*slave.PRF for x in ['a','b','c']]
            slave.frame._dopplerVsPixel = [
                slavedop.quadratic[x] * slave.PRF for x in ['a', 'b', 'c']
            ]

        if self._insar.slaveRawProduct is None:
            self._insar.slaveRawProduct = dirname + '_raw.xml'

        self._insar.saveProduct(slave.frame, self._insar.slaveRawProduct)

    else:
        print('Master data is in SLC format. Adding _slc to output name.')
        iszerodop = isZeroDopplerSLC(self.slaveSensorName)
        sensor.output = os.path.join(dirname + '_slc',
                                     os.path.basename(dirname) + '.slc')

        if not os.path.isdir(os.path.dirname(sensor.output)):
            os.makedirs(os.path.dirname(sensor.output))

        slave = make_raw(sensor, slavedop)

        if self._insar.slaveSlcProduct is None:
            self._insar.slaveSlcProduct = dirname + '_slc.xml'

        if iszerodop:
            self._insar.slaveGeometrySystem = 'Zero Doppler'
        else:
            self._insar.slaveGeometrySystem = 'Native Doppler'

        self._insar.saveProduct(slave.frame, self._insar.slaveSlcProduct)

    catalog = isceobj.Catalog.createCatalog(self._insar.procDoc.name)
    frame = master.frame
    instrument = frame.getInstrument()
    platform = instrument.getPlatform()

    catalog.addInputsFrom(master.sensor, 'master.sensor')
    catalog.addItem('width', frame.numberOfSamples, 'master')
    catalog.addItem('iBias', instrument.getInPhaseValue(), 'master')
    catalog.addItem('qBias', instrument.getQuadratureValue(), 'master')
    catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(),
                    'master')
    catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'master')
    catalog.addItem('pri', 1.0 / instrument.getPulseRepetitionFrequency(),
                    'master')
    catalog.addItem('pulse_length', instrument.getPulseLength(), 'master')
    catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'master')
    catalog.addItem('wavelength', instrument.getRadarWavelength(), 'master')
    catalog.addItem('lookSide', platform.pointingDirection, 'master')
    catalog.addInputsFrom(frame, 'master.frame')
    catalog.addInputsFrom(instrument, 'master.instrument')
    catalog.addInputsFrom(platform, 'master.platform')
    catalog.addInputsFrom(frame.orbit, 'master.orbit')

    frame = slave.frame
    instrument = frame.getInstrument()
    platform = instrument.getPlatform()

    catalog.addInputsFrom(slave.sensor, 'slave.sensor')
    catalog.addItem('width', frame.numberOfSamples, 'slave')
    catalog.addItem('iBias', instrument.getInPhaseValue(), 'slave')
    catalog.addItem('qBias', instrument.getQuadratureValue(), 'slave')
    catalog.addItem('range_sampling_rate', instrument.getRangeSamplingRate(),
                    'slave')
    catalog.addItem('prf', instrument.getPulseRepetitionFrequency(), 'slave')
    catalog.addItem('pri', 1.0 / instrument.getPulseRepetitionFrequency(),
                    'slave')
    catalog.addItem('pulse_length', instrument.getPulseLength(), 'slave')
    catalog.addItem('chirp_slope', instrument.getChirpSlope(), 'slave')
    catalog.addItem('wavelength', instrument.getRadarWavelength(), 'slave')
    catalog.addItem('lookSide', platform.pointingDirection, 'slave')
    catalog.addInputsFrom(frame, 'slave.frame')
    catalog.addInputsFrom(instrument, 'slave.instrument')
    catalog.addInputsFrom(platform, 'slave.platform')
    catalog.addInputsFrom(frame.orbit, 'slave.orbit')

    # NEW COMMANDS added by YL --start
    optlist = ['all', 'top', 'middle', 'bottom']
    success = False
    baseLocation = None

    for option in optlist:
        baseObj = Baseline()
        baseObj.configure()
        baseObj.baselineLocation = option
        baseObj.wireInputPort(name='masterFrame', object=master.frame)
        baseObj.wireInputPort(name='slaveFrame', object=slave.frame)
        try:
            baseObj.baseline()
            success = True
            baseLocation = option
        except:
            print('Baseline computation with option {0} Failed'.format(option))
            pass

        if success:
            break

    if not success:
        raise Exception(
            'Baseline computation failed with all possible options. Images may not overlap.'
        )

    catalog.addItem('horizontal_baseline_top', baseObj.hBaselineTop,
                    'baseline')
    catalog.addItem('horizontal_baseline_rate', baseObj.hBaselineRate,
                    'baseline')
    catalog.addItem('horizontal_baseline_acc', baseObj.hBaselineAcc,
                    'baseline')
    catalog.addItem('vertical_baseline_top', baseObj.vBaselineTop, 'baseline')
    catalog.addItem('vertical_baseline_rate', baseObj.vBaselineRate,
                    'baseline')
    catalog.addItem('vertical_baseline_acc', baseObj.vBaselineAcc, 'baseline')
    catalog.addItem('perp_baseline_top', baseObj.pBaselineTop, 'baseline')
    catalog.addItem('perp_baseline_bottom', baseObj.pBaselineBottom,
                    'baseline')
    catalog.addItem('baseline_location', baseLocation, 'baseline')
    # NEW COMMANDS added by YL --end

    catalog.printToLog(logger, "runPreprocessor")
    self._insar.procDoc.addAllFromCatalog(catalog)