def run(rawImage, frame, dopplerCentroid, orbit, peg, velocity, height, sensorname, stdWriter, catalog=None, sceneid='NO_ID'): logger.info("Forming SLC: %s" % sceneid) imSlc = isceobj.createSlcImage() IU.copyAttributes(rawImage, imSlc) imSlc.setAccessMode('read') imSlc.createImage() formSlc = stdproc.createFormSLC(sensorname) formSlc.setBodyFixedVelocity(velocity) formSlc.setSpacecraftHeight(height) formSlc.wireInputPort(name='doppler', object=dopplerCentroid) formSlc.wireInputPort(name='peg', object=peg) formSlc.wireInputPort(name='frame', object=frame) formSlc.wireInputPort(name='orbit', object=orbit) formSlc.wireInputPort(name='slcInImage', object=imSlc) formSlc.stdWriter = stdWriter.set_file_tags("formslcTSX", "log", "err", "out") slcImage = formSlc() imSlc.finalizeImage() if catalog is not None: isceobj.Catalog.recordInputsAndOutputs(catalog, formSlc, "runFormSLCTSX.%s" % sceneid, logger, "runFormSLCTSX.%s" % sceneid) return slcImage, formSlc
def run(rawImage, frame, dopplerCentroid, orbit, peg, velocity, height, sensorname, stdWriter, catalog=None, sceneid='NO_ID'): logger.info("Forming SLC: %s" % sceneid) imSlc = isceobj.createSlcImage() IU.copyAttributes(rawImage, imSlc) imSlc.setAccessMode('read') imSlc.createImage() formSlc = stdproc.createFormSLC(sensorname) formSlc.setBodyFixedVelocity(velocity) formSlc.setSpacecraftHeight(height) formSlc.wireInputPort(name='doppler', object=dopplerCentroid) formSlc.wireInputPort(name='peg', object=peg) formSlc.wireInputPort(name='frame', object=frame) formSlc.wireInputPort(name='orbit', object=orbit) formSlc.wireInputPort(name='rawImage', object=None) formSlc.wireInputPort(name='planet', object=frame.instrument.platform.planet) for item in formSlc.inputPorts: item() formSlc.slcWidth = imSlc.getWidth() formSlc.startingRange = formSlc.rangeFirstSample formSlc.rangeChirpExtensionsPoints = 0 formSlc.setLookSide(frame.platform.pointingDirection) formSlc.slcSensingStart = frame.getSensingStart() formSlc.outOrbit = orbit formSlc.stdWriter = stdWriter.set_file_tags("formslcISCE", "log", "err", "out") time, position, vel, relTo = orbit._unpackOrbit() mocomp_array = [[], []] for (t, p) in zip(time, position): mocomp_array[0].append(t - time[0]) mocomp_array[1].append(p[0]) formSlc.mocompPosition = mocomp_array formSlc.mocompIndx = list(range(1, len(time) + 1)) formSlc.dim1_mocompPosition = 2 formSlc.dim2_mocompPosition = len(time) formSlc.dim1_mocompIndx = len(time) # slcImage = formSlc() imSlc.finalizeImage() if catalog is not None: isceobj.Catalog.recordInputsAndOutputs(catalog, formSlc, "runFormSLCisce.%s" % sceneid, logger, "runFormSLCisce.%s" % sceneid) return imSlc, formSlc
def master(self, deltaf=None): from isceobj.Catalog import recordInputsAndOutputs from iscesys.ImageUtil.ImageUtil import ImageUtil as IU v,h = self.insar.vh() objRaw = self.insar.rawMasterIQImage.clone() objRaw.accessMode = 'read' objFormSlc = stdproc.createFormSLC(name='insarapp_formslc_master') objFormSlc.setBodyFixedVelocity(v) objFormSlc.setSpacecraftHeight(h) objFormSlc.setAzimuthPatchSize(self.patchSize) objFormSlc.setNumberValidPulses(self.goodLines) objFormSlc.setNumberPatches(self.numPatches) objFormSlc.setLookSide(self.insar._lookSide) objFormSlc.setNumberAzimuthLooks(self.insar.numberAzimuthLooks) logger.info("Focusing Master image") objFormSlc.stdWriter = self.stdWriter if (deltaf is not None) and (objFormSlc.azimuthResolution is None): ins = self.insar.masterFrame.getInstrument() prf = ins.getPulseRepetitionFrequency() res = ins.getPlatform().getAntennaLength() / 2.0 azbw = min(v/res, prf) res = v/azbw factor = 1.0 - (abs(deltaf)/azbw) logger.info('MASTER AZIMUTH BANDWIDTH FACTOR = %f'%(factor)) azres = res / factor #jng This is a temporary solution seems it looks that same banding problem #can be resolved by doubling the azres. The default azResFactor is still one. objFormSlc.setAzimuthResolution(azres*self.insar.azResFactor) ####newInputs objSlc = objFormSlc(rawImage=objRaw, orbit=self.insar.masterOrbit, frame=self.insar.masterFrame, planet=self.insar.masterFrame.instrument.platform.planet, doppler=self.insar.dopplerCentroid, peg=self.insar.peg) imageSlc = isceobj.createSlcImage() IU.copyAttributes(objSlc, imageSlc) imageSlc.setAccessMode('read') objSlc.finalizeImage() objRaw.finalizeImage() recordInputsAndOutputs(self.insar.procDoc, objFormSlc, "runFormSLC.master", logger, "runFormSLC.master") logger.info('New Width = %d'%(imageSlc.getWidth())) self.insar.masterSlcImage = imageSlc self.insar.formSLC1 = objFormSlc return objFormSlc.numberPatches
def secondary(self, deltaf=None): from isceobj.Catalog import recordInputsAndOutputs from iscesys.ImageUtil.ImageUtil import ImageUtil as IU v, h = self.insar.vh() objRaw = self.insar.rawSecondaryIQImage.clone() objRaw.accessMode = 'read' objFormSlc = stdproc.createFormSLC(name='insarapp_formslc_secondary') objFormSlc.setBodyFixedVelocity(v) objFormSlc.setSpacecraftHeight(h) objFormSlc.setAzimuthPatchSize(self.patchSize) objFormSlc.setNumberValidPulses(self.goodLines) objFormSlc.setNumberPatches(self.numPatches) objFormSlc.setNumberAzimuthLooks(self.insar.numberAzimuthLooks) objFormSlc.setLookSide(self.insar._lookSide) logger.info("Focusing Reference image") objFormSlc.stdWriter = self.stdWriter if (deltaf is not None) and (objFormSlc.azimuthResolution is None): ins = self.insar.secondaryFrame.getInstrument() prf = ins.getPulseRepetitionFrequency() res = ins.getPlatform().getAntennaLength() / 2.0 azbw = min(v / res, prf) res = v / azbw factor = 1.0 - (abs(deltaf) / azbw) logger.info('SECONDARY AZIMUTH BANDWIDTH FACTOR = %f' % (factor)) azres = res / factor objFormSlc.setAzimuthResolution(azres) objSlc = objFormSlc( rawImage=objRaw, orbit=self.insar.secondaryOrbit, frame=self.insar.secondaryFrame, planet=self.insar.secondaryFrame.instrument.platform.planet, doppler=self.insar.dopplerCentroid, peg=self.insar.peg) imageSlc = isceobj.createSlcImage() IU.copyAttributes(objSlc, imageSlc) imageSlc.setAccessMode('read') objSlc.finalizeImage() objRaw.finalizeImage() recordInputsAndOutputs(self.insar.procDoc, objFormSlc, "runFormSLC.secondary", logger, "runFormSLC.secondary") logger.info('New Width = %d' % (imageSlc.getWidth())) self.insar.secondarySlcImage = imageSlc self.insar.formSLC2 = objFormSlc return objFormSlc.numberPatches
def run(rawImage, frame, dopplerCentroid, orbit, peg, velocity, height, infos, stdWriter, catalog=None, sceneid='NO_ID'): logger.info("Forming SLC: %s" % sceneid) # objRaw = rawImage.copy(access_mode='read') objRaw = rawImage.clone() objRaw.accessMode = 'read' objFormSlc = stdproc.createFormSLC() objFormSlc.setBodyFixedVelocity(velocity) objFormSlc.setSpacecraftHeight(height) objFormSlc.setAzimuthPatchSize(infos['patchSize']) objFormSlc.setNumberValidPulses(infos['numberValidPulses']) objFormSlc.setNumberPatches(infos['numberPatches']) objFormSlc.setNumberRangeBin(frame.numberRangeBins) objFormSlc.setLookSide(infos['lookSide']) objFormSlc.setShift(infos['azShiftPixels']) logger.info("Shift in azimuth: %f pixels" % infos['azShiftPixels']) objFormSlc.setNumberAzimuthLooks(infos['numberAzimuthLooks']) logger.info("Focusing image %s" % sceneid) objFormSlc.stdWriter = stdWriter objSlc = objFormSlc(rawImage=objRaw, orbit=orbit, frame=frame, planet=frame.instrument.platform.planet, doppler=dopplerCentroid, peg=peg) imageSlc = isceobj.createSlcImage() IU.copyAttributes(objSlc, imageSlc) imageSlc.setAccessMode('read') objSlc.finalizeImage() objRaw.finalizeImage() if catalog is not None: isceobj.Catalog.recordInputsAndOutputs(catalog, objFormSlc, "runFormSLC.%s" % sceneid, logger, "runFormSLC.%s" % sceneid) logger.info('New Width = %d' % (imageSlc.getWidth())) return imageSlc, objFormSlc
def runFormSLC(self, patchSize=None, goodLines=None, numPatches=None): #NOTE tested the formslc() as a stand alone by passing the same inputs #computed in Howard terraSAR.py. The differences here arises from the #differences in the orbits when using the same orbits the results are very #close jng this will make the second term in coarseAz in offsetprf equal #zero. we do so since for tsx there is no such a term. Need to ask #confirmation self.insar.setPatchSize(self.insar.numberValidPulses) # the below value is zero because of we just did above, but just want to be # explicit in the definition of is_mocomp self.is_mocomp = self.insar.get_is_mocomp v = self.insar.procVelocity h = self.insar.averageHeight imageSlc1 = self.insar.referenceRawImage imSlc1 = isceobj.createSlcImage() IU.copyAttributes(imageSlc1, imSlc1) imSlc1.setAccessMode('read') imSlc1.createImage() formSlc1 = stdproc.createFormSLC(self.sensorName) formSlc1.setBodyFixedVelocity(v) formSlc1.setSpacecraftHeight(h) formSlc1.wireInputPort(name='doppler', object=self.insar.dopplerCentroid) formSlc1.wireInputPort(name='peg', object=self.insar.peg) formSlc1.wireInputPort(name='frame', object=self.insar.referenceFrame) formSlc1.wireInputPort(name='orbit', object=self.insar.referenceOrbit) formSlc1.wireInputPort(name='slcInImage', object=imSlc1) formSlc1.wireInputPort( name='planet', object=self.insar.referenceFrame.instrument.platform.planet) self._stdWriter.setFileTag("formslcTSX", "log") self._stdWriter.setFileTag("formslcTSX", "err") self._stdWriter.setFileTag("formslcTSX", "out") formSlc1.setStdWriter(self._stdWriter) formSlc1.setLookSide(self.insar._lookSide) # self.insar.setReferenceSlcImage(formSlc1.formslc()) self.insar.referenceSlcImage = formSlc1() imageSlc2 = self.insar.secondaryRawImage imSlc2 = isceobj.createSlcImage() IU.copyAttributes(imageSlc2, imSlc2) imSlc2.setAccessMode('read') imSlc2.createImage() formSlc2 = stdproc.createFormSLC(self.sensorName) formSlc2.setBodyFixedVelocity(v) formSlc2.setSpacecraftHeight(h) formSlc2.wireInputPort(name='doppler', object=self.insar.dopplerCentroid) formSlc2.wireInputPort(name='peg', object=self.insar.peg) formSlc2.wireInputPort(name='frame', object=self.insar.secondaryFrame) formSlc2.wireInputPort(name='orbit', object=self.insar.secondaryOrbit) formSlc2.wireInputPort(name='slcInImage', object=imSlc2) formSlc2.wireInputPort( name='planet', object=self.insar.secondaryFrame.instrument.platform.planet) self._stdWriter.setFileTag("formslcTSX", "log") self._stdWriter.setFileTag("formslcTSX", "err") self._stdWriter.setFileTag("formslcTSX", "out") formSlc2.setStdWriter(self._stdWriter) formSlc2.setLookSide(self.insar._lookSide) # self.insar.setSecondarySlcImage(formSlc2.formslc()) self.insar.secondarySlcImage = formSlc2() self.insar.setNumberPatches(imSlc1.getLength() / float(self.insar.numberValidPulses)) imSlc1.finalizeImage() imSlc2.finalizeImage() self.insar.setFormSLC1(formSlc1) self.insar.setFormSLC2(formSlc2)
def focus(self, mr, fd): """ Focus SAR data @param mr (\a make_raw) a make_raw instance @param fd (\a float) Doppler centroid for focusing """ import stdproc import isceobj #from isceobj.Sensor.Generic import Generic # Extract some useful variables frame = mr.getFrame() orbit = frame.getOrbit() planet = frame.getInstrument().getPlatform().getPlanet() # Calculate Peg Point self.logger.info("Calculating Peg Point") peg = self.calculatePegPoint(frame, orbit, planet) V, H = self.calculateProcessingVelocity(frame, peg) # Interpolate orbit self.logger.info("Interpolating Orbit") pt = stdproc.createPulsetiming() pt.wireInputPort(name='frame', object=frame) pt.pulsetiming() orbit = pt.getOrbit() # Convert orbit to SCH coordinates self.logger.info("Converting orbit reference frame") o2s = stdproc.createOrbit2sch() o2s.wireInputPort(name='planet', object=planet) o2s.wireInputPort(name='orbit', object=orbit) o2s.wireInputPort(name='peg', object=peg) o2s.setAverageHeight(H) o2s.orbit2sch() # Create Raw Image rawImage = isceobj.createRawImage() filename = frame.getImage().getFilename() bytesPerLine = frame.getImage().getXmax() goodBytes = bytesPerLine - frame.getImage().getXmin() rawImage.setAccessMode('read') rawImage.setByteOrder(frame.getImage().byteOrder) rawImage.setFilename(filename) rawImage.setNumberGoodBytes(goodBytes) rawImage.setWidth(bytesPerLine) rawImage.setXmin(frame.getImage().getXmin()) rawImage.setXmax(bytesPerLine) rawImage.createImage() # Create SLC Image slcImage = isceobj.createSlcImage() rangeSamplingRate = frame.getInstrument().getRangeSamplingRate() rangePulseDuration = frame.getInstrument().getPulseLength() chirpSize = int(rangeSamplingRate * rangePulseDuration) chirpExtension = 0 #0.5*chirpSize numberRangeBins = int(goodBytes / 2) - chirpSize + chirpExtension slcImage.setFilename(filename.replace('.raw', '.slc')) slcImage.setByteOrder(frame.getImage().byteOrder) slcImage.setAccessMode('write') slcImage.setDataType('CFLOAT') slcImage.setWidth(numberRangeBins) slcImage.createImage() # Calculate motion compenstation correction for Doppler centroid self.logger.info("Correcting Doppler centroid for motion compensation") fdmocomp = stdproc.createFdMocomp() fdmocomp.wireInputPort(name='frame', object=frame) fdmocomp.wireInputPort(name='peg', object=peg) fdmocomp.wireInputPort(name='orbit', object=o2s.getOrbit()) fdmocomp.setWidth(numberRangeBins) fdmocomp.setSatelliteHeight(H) fdmocomp.setDopplerCoefficients([fd[0], 0.0, 0.0, 0.0]) fdmocomp.fdmocomp() fd[0] = fdmocomp.getDopplerCentroid() self.logger.info("Updated Doppler centroid: %s" % (fd)) # Calculate the motion compensation Doppler centroid correction plus rate #self.logger.info("Testing new Doppler code") #frate = stdproc.createFRate() #frate.wireInputPort(name='frame',object=frame) #frate.wireInputPort(name='peg', object=peg) #frate.wireInputPort(name='orbit',object=o2s.getOrbit()) #frate.wireInputPort(name='planet',object=planet) #frate.setWidth(numberRangeBins) #frate.frate() #fd = frate.getDopplerCentroid() #fdrate = frate.getDopplerRate() #self.logger.info("Updated Doppler centroid and rate: %s %s" % (fd,fdrate)) synthetic_aperature_length = self._calculateSyntheticAperatureLength( frame, V) patchSize = self.nextpow2(2 * synthetic_aperature_length) valid_az_samples = patchSize - synthetic_aperature_length rawFileSize = rawImage.getLength() * rawImage.getWidth() linelength = rawImage.getXmax() overhead = patchSize - valid_az_samples numPatches = (1 + int( (rawFileSize / float(linelength) - overhead) / valid_az_samples)) # Focus image self.logger.info("Focusing image") focus = stdproc.createFormSLC() focus.wireInputPort(name='rawImage', object=rawImage) focus.wireInputPort(name='slcImage', object=slcImage) focus.wireInputPort(name='orbit', object=o2s.getOrbit()) focus.wireInputPort(name='frame', object=frame) focus.wireInputPort(name='peg', object=peg) focus.wireInputPort(name='planet', object=planet) focus.setDebugFlag(96) focus.setBodyFixedVelocity(V) focus.setSpacecraftHeight(H) focus.setAzimuthPatchSize(patchSize) focus.setNumberValidPulses(valid_az_samples) focus.setSecondaryRangeMigrationFlag('n') focus.setNumberAzimuthLooks(1) focus.setNumberPatches(numPatches) focus.setDopplerCentroidCoefficients(fd) #focus.setDopplerCentroidCoefficients([fd[0], 0.0, 0.0]) focus.formslc() mocompPos = focus.getMocompPosition() fp = open('position.sch', 'w') for i in range(len(mocompPos[0])): fp.write("%f %f\n" % (mocompPos[0][i], mocompPos[1][i])) fp.close() slcImage.finalizeImage() rawImage.finalizeImage() # Recreate the SLC image slcImage = isceobj.createSlcImage() slcImage.setFilename(filename.replace('.raw', '.slc')) slcImage.setAccessMode('read') slcImage.setDataType('CFLOAT') slcImage.setWidth(numberRangeBins) slcImage.createImage() width = int(slcImage.getWidth()) length = int(slcImage.getLength()) # Create a frame object and write it out using the Generic driver frame.setImage(slcImage) frame.setOrbit(o2s.getOrbit()) #writer = Generic() #writer.frame = frame #writer.write('test.h5',compression='gzip') slcImage.finalizeImage() self.width = width self.length = length
def focus(self,mr,fd): """ Focus SAR data @param mr (\a make_raw) a make_raw instance @param fd (\a float) Doppler centroid for focusing """ import stdproc import isceobj # Extract some useful variables frame = mr.getFrame() orbit = frame.getOrbit() planet = frame.getInstrument().getPlatform().getPlanet() # Calculate Peg Point self.logger.info("Calculating Peg Point") peg,H,V = self.calculatePegPoint(frame,orbit,planet) # Interpolate orbit self.logger.info("Interpolating Orbit") pt = stdproc.createPulsetiming() pt.wireInputPort(name='frame',object=frame) pt.pulsetiming() orbit = pt.getOrbit() # Convert orbit to SCH coordinates self.logger.info("Converting orbit reference frame") o2s = stdproc.createOrbit2sch() o2s.wireInputPort(name='planet',object=planet) o2s.wireInputPort(name='orbit',object=orbit) o2s.wireInputPort(name='peg',object=peg) o2s.setAverageHeight(H) # updated 07/24/2012 o2s.stdWriter = self._writer_set_file_tags( "orbit2sch", "log", "err", "out" ) # updated 07/24/2012 o2s.orbit2sch() # Create Raw Image rawImage = isceobj.createRawImage() filename = frame.getImage().getFilename() bytesPerLine = frame.getImage().getXmax() goodBytes = bytesPerLine - frame.getImage().getXmin() rawImage.setAccessMode('read') rawImage.setByteOrder(frame.getImage().byteOrder) rawImage.setFilename(filename) rawImage.setNumberGoodBytes(goodBytes) rawImage.setWidth(bytesPerLine) rawImage.setXmin(frame.getImage().getXmin()) rawImage.setXmax(bytesPerLine) rawImage.createImage() self.logger.info("Sensing Start: %s" % (frame.getSensingStart())) # Focus image self.logger.info("Focusing image") focus = stdproc.createFormSLC() focus.wireInputPort(name='rawImage',object=rawImage) #2013-06-03 Kosal: slcImage is not part of ports anymore (see formslc) #it is returned by formscl() rangeSamplingRate = frame.getInstrument().getRangeSamplingRate() rangePulseDuration = frame.getInstrument().getPulseLength() chirpSize = int(rangeSamplingRate*rangePulseDuration) chirpExtension = 0 #0.5*chirpSize numberRangeBin = int(goodBytes/2) - chirpSize + chirpExtension focus.setNumberRangeBin(numberRangeBin) #Kosal focus.wireInputPort(name='orbit',object=o2s.getOrbit()) focus.wireInputPort(name='frame',object=frame) focus.wireInputPort(name='peg',object=peg) focus.setBodyFixedVelocity(V) focus.setSpacecraftHeight(H) focus.setAzimuthPatchSize(8192) focus.setNumberValidPulses(2048) focus.setSecondaryRangeMigrationFlag('n') focus.setNumberAzimuthLooks(1) focus.setNumberPatches(12) focus.setDopplerCentroidCoefficients([fd,0.0,0.0,0.0]) # updated 07/24/2012 focus.stdWriter = self._writer_set_file_tags( "formslc", "log", "err", "out" ) # update 07/24/2012 #2013-06-04 Kosal: slcImage is returned slcImage = focus.formslc() #Kosal rawImage.finalizeImage() width = int(slcImage.getWidth()) length = int(slcImage.getLength()) self.logger.debug("Width: %s" % (width)) self.logger.debug("Length: %s" % (length)) slcImage.finalizeImage() self.width = width self.length = length
def runFormSLC(self, patchSize=None, goodLines=None, numPatches=None): #NOTE tested the formslc() as a stand alone by passing the same inputs #computed in Howard terraSAR.py. The differences here arises from the #differences in the orbits when using the same orbits the results are very #close jng this will make the second term in coarseAz in offsetprf equal #zero. we do so since for tsx there is no such a term. Need to ask #confirmation self.insar.setPatchSize(self.insar.numberValidPulses) # the below value is zero because of we just did above, but just want to be # explicit in the definition of is_mocomp self.is_mocomp = self.insar.get_is_mocomp v = self.insar.getFirstProcVelocity() h = self.insar.averageHeight imageSlc1 = self.insar.masterRawImage imSlc1 = isceobj.createSlcImage() IU.copyAttributes(imageSlc1, imSlc1) imSlc1.setAccessMode('read') imSlc1.createImage() formSlc1 = stdproc.createFormSLC() formSlc1.setBodyFixedVelocity(v) formSlc1.setSpacecraftHeight(h) formSlc1.wireInputPort(name='doppler', object=self.insar.dopplerCentroid) formSlc1.wireInputPort(name='peg', object=self.insar.peg) formSlc1.wireInputPort(name='frame', object=self.insar.masterFrame) formSlc1.wireInputPort(name='orbit', object=self.insar.masterOrbit) formSlc1.wireInputPort(name='rawImage', object=None) formSlc1.wireInputPort( name='planet', object=self.insar.masterFrame.instrument.platform.planet) for item in formSlc1.inputPorts: item() formSlc1.slcWidth = imSlc1.getWidth() formSlc1.startingRange = formSlc1.rangeFirstSample formSlc1.rangeChirpExtensionPoints = 0 formSlc1.slcSensingStart = self.insar.masterFrame.getSensingStart() formSlc1.outOrbit = self.insar.masterOrbit self._stdWriter.setFileTag("formslcISCE", "log") self._stdWriter.setFileTag("formslcISCE", "err") self._stdWriter.setFileTag("formslcISCE", "out") formSlc1.setStdWriter(self._stdWriter) formSlc1.setLookSide(self.insar._lookSide) # self.insar.setMasterSlcImage(formSlc1.formslc()) # self.insar.masterSlcImage = formSlc1() self.insar.formSLC1 = formSlc1 self.insar.masterSlcImage = imSlc1 time, position, velocity, relTo = self.insar.masterOrbit._unpackOrbit() mocomp_array = [[], []] for (t, p) in zip(time, position): mocomp_array[0].append(t - time[0]) mocomp_array[1].append(p[0]) self.insar.formSLC1.mocompPosition = mocomp_array self.insar.formSLC1.mocompIndx = list(range(1, len(time) + 1)) formSlc1.dim1_mocompPosition = 2 formSlc1.dim2_mocompPosition = len(time) formSlc1.dim1_mocompIndx = len(time) imageSlc2 = self.insar.slaveRawImage imSlc2 = isceobj.createSlcImage() IU.copyAttributes(imageSlc2, imSlc2) imSlc2.setAccessMode('read') imSlc2.createImage() formSlc2 = stdproc.createFormSLC() formSlc2.setBodyFixedVelocity(v) formSlc2.setSpacecraftHeight(h) formSlc2.wireInputPort(name='doppler', object=self.insar.dopplerCentroid) formSlc2.wireInputPort(name='peg', object=self.insar.peg) formSlc2.wireInputPort(name='frame', object=self.insar.slaveFrame) formSlc2.wireInputPort(name='orbit', object=self.insar.slaveOrbit) formSlc2.wireInputPort(name='rawImage', object=None) formSlc2.wireInputPort( name='planet', object=self.insar.slaveFrame.instrument.platform.planet) for item in formSlc2.inputPorts: item() formSlc2.slcWidth = imSlc2.getWidth() formSlc2.startingRange = formSlc2.rangeFirstSample formSlc2.rangeChirpExtensionPoints = 0 formSlc2.slcSensingStart = self.insar.slaveFrame.getSensingStart() formSlc2.outOrbit = self.insar.slaveOrbit self._stdWriter.setFileTag("formslcISCE", "log") self._stdWriter.setFileTag("formslcISCE", "err") self._stdWriter.setFileTag("formslcISCE", "out") formSlc2.setStdWriter(self._stdWriter) formSlc2.setLookSide(self.insar._lookSide) # self.insar.setSlaveSlcImage(formSlc2.formslc()) self.insar.formSLC2 = formSlc2 self.insar.slaveSlcImage = imSlc2 time, position, velocity, relTo = self.insar.slaveOrbit._unpackOrbit() mocomp_array = [[], []] for (t, p) in zip(time, position): mocomp_array[0].append(t - time[0]) mocomp_array[1].append(p[0]) self.insar.formSLC2.mocompPosition = mocomp_array self.insar.formSLC2.mocompIndx = list(range(1, len(time) + 1)) formSlc2.dim1_mocompPosition = 2 formSlc2.dim2_mocompPosition = len(time) formSlc2.dim1_mocompIndx = len(time) self.insar.setNumberPatches(imSlc1.getLength() / float(self.insar.numberValidPulses)) imSlc1.finalizeImage() imSlc2.finalizeImage() recordInputsAndOutputs(self.insar.procDoc, formSlc1, "runFormSLC.master", logger, "runFormSLC.master") recordInputsAndOutputs(self.insar.procDoc, formSlc2, "runFormSLC.slave", logger, "runFormSLC.slave") self.insar.setFormSLC1(formSlc1) self.insar.setFormSLC2(formSlc2)