def make_raw(sensor, doppler): from make_raw import make_raw objMakeRaw = make_raw() objMakeRaw(sensor=sensor, doppler=doppler) return objMakeRaw
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
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
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)
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)
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)
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)
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)
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)