Esempio n. 1
0
def getBaseline(frame1, frame2, catalog=None, sceneid='NO_ID'):
    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=frame1)
        baseObj.wireInputPort(name='slaveFrame',object=frame2)
        try:
            baseObj.baseline()
            success = True
            baseLocation = option
        except:
            logger.debug(('runPreprocessor.getBaseline '+
                          'option "{0}" failed'.format(option)))
            pass
        if success:
            logger.debug(('runPreprocessor.getBaseline: '+
                          'option "{0}" success'.format(option)))
            break
    if not success:
        raise Exception('Baseline computation failed with all possible options. Images may not overlap.')

    if catalog is not None:
        catalog.addItem('horizontal_baseline_top', baseObj.hBaselineTop, sceneid)
        catalog.addItem('horizontal_baseline_rate', baseObj.hBaselineRate, sceneid)
        catalog.addItem('horizontal_baseline_acc', baseObj.hBaselineAcc, sceneid)
        catalog.addItem('vertical_baseline_top', baseObj.vBaselineTop, sceneid)
        catalog.addItem('vertical_baseline_rate', baseObj.vBaselineRate, sceneid)
        catalog.addItem('vertical_baseline_acc', baseObj.vBaselineAcc, sceneid)
        catalog.addItem('perp_baseline_top', baseObj.pBaselineTop, sceneid)
        catalog.addItem('perp_baseline_bottom', baseObj.pBaselineBottom, sceneid)
Esempio n. 2
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)
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)
Esempio n. 4
0
def calBaseline(masterFrame, slaveFrame, baselineName):

    #setting up catalog name
    masterYear = str(masterFrame.sensingStart.year)
    masterMonth = '%02d' % masterFrame.sensingStart.month
    masterDay = '%02d' % masterFrame.sensingStart.day

    slaveYear = str(slaveFrame.sensingStart.year)
    slaveMonth = '%02d' % slaveFrame.sensingStart.month
    slaveDay = '%02d' % slaveFrame.sensingStart.day

    catalogName = masterYear + masterMonth + masterDay + '-' + slaveYear + slaveMonth + slaveDay + '_baseline'
    if baselineName != None:
        if baselineName.endswith('.xml'):
            catalogName = os.path.splitext(baselineName)[0]
        else:
            catalogName = baselineName

    catalog = isceobj.Catalog.createCatalog(catalogName)

    #calculate baseline
    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=masterFrame)
        baseObj.wireInputPort(name='slaveFrame', object=slaveFrame)
        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.'
        )

    print('horizontal_baseline_top: {}'.format(baseObj.hBaselineTop))
    print('horizontal_baseline_rate: {}'.format(baseObj.hBaselineRate))
    print('horizontal_baseline_acc: {}'.format(baseObj.hBaselineAcc))
    print('vertical_baseline_top: {}'.format(baseObj.vBaselineTop))
    print('vertical_baseline_rate: {}'.format(baseObj.vBaselineRate))
    print('vertical_baseline_acc: {}'.format(baseObj.vBaselineAcc))
    print('perp_baseline_top: {}'.format(baseObj.pBaselineTop))
    print('perp_baseline_bottom: {}'.format(baseObj.pBaselineBottom))
    print('baseline_location: {}'.format(baseLocation))

    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.renderXml()