def run(tobeGeocoded, frame1, formSLC1, velocity, height, snwe, infos, catalog=None, sceneid='NO_ID'): logger.info("Geocoding Image: %s" % sceneid) stdWriter = create_writer("log", "", True, filename=infos['ouputPath'] + ".geo.log") planet = frame1.getInstrument().getPlatform().getPlanet() referenceOrbit = formSLC1.getMocompPosition(posIndx) doppler = dopplerCentroid.getDopplerCoefficients(inHz=False)[0] #####Geocode one by one ge = Geocodable() for prod in tobeGeocoded: objGeo = stdproc.createGeocode( snwe=snwe, demCropFilename=infos['outputPath'] + '.' + infos['demCropFilename'], referenceOrbit=referenceOrbit, dopplerCentroidConstantTerm=doppler, bodyFixedVelocity=velocity, spacecraftHeight=height, numberRangeLooks=infos['numberRangeLooks'], numberAzimuthLooks=infos['numberAzimuthLooks'], isMocomp=infos['is_mocomp']) objGeo.stdWriter = stdWriter #create the instance of the image and return the method is supposed to use inImage, objGeo.method = ge.create(infos['outputPath'] + '.' + prod) if inImage: demImage = isceobj.createDemImage() IU.copyAttributes(infos['demImage'], demImage) objGeo(peg=infos['peg'], frame=frame1, planet=planet, dem=demImage, tobegeocoded=inImage, geoPosting=None, masterslc=formSLC1) if catalog is not None: isceobj.Catalog.recordInputsAndOutputs( catalog, objGeo, "runGeocode.%s" % sceneid, logger, "runGeocode.%s" % sceneid) stdWriter.finalize()
def run(tobeGeocoded, frame1, formSLC1, velocity, height, snwe, infos, catalog=None, sceneid='NO_ID'): logger.info("Geocoding Image: %s" % sceneid) stdWriter = create_writer("log", "", True, filename=infos['outputPath'] + ".geo.log") planet = frame1.getInstrument().getPlatform().getPlanet() doppler = infos['dopplerCentroid'].getDopplerCoefficients(inHz=False)[0] #####Geocode one by one for prod in tobeGeocoded: prodPath = infos['outputPath'] + '.' + prod if not os.path.isfile(prodPath): logger.info( "File not found. Skipping %s" % prodPath) #KK some prods are only in refScene folder! (tbd) continue #else: objGeo = stdproc.createGeocode('insarapp_geocode_' + os.path.basename(prod).replace('.', '')) objGeo.configure() objGeo.referenceOrbit = formSLC1.getMocompPosition(posIndx) ####IF statements to check for user configuration if objGeo.minimumLatitude is None: objGeo.minimumLatitude = snwe[0] if objGeo.maximumLatitude is None: objGeo.maximumLatitude = snwe[1] if objGeo.minimumLongitude is None: objGeo.minimumLongitude = snwe[2] if objGeo.maximumLongitude is None: objGeo.maximumLongitude = snwe[3] if objGeo.demCropFilename is None: objGeo.demCropFilename = infos['outputPath'] + '.' + infos[ 'demCropFilename'] if objGeo.dopplerCentroidConstantTerm is None: objGeo.dopplerCentroidConstantTerm = doppler if objGeo.bodyFixedVelocity is None: objGeo.bodyFixedVelocity = velocity if objGeo.spacecraftHeight is None: objGeo.spacecraftHeight = height if objGeo.numberRangeLooks is None: objGeo.numberRangeLooks = infos['numberRangeLooks'] if objGeo.numberAzimuthLooks is None: objGeo.numberAzimuthLooks = infos['numberAzimuthLooks'] if objGeo.isMocomp is None: objGeo.isMocomp = infos['is_mocomp'] objGeo.stdWriter = stdWriter #create the instance of the image and return the method is supposed to use ge = Geocodable() inImage, objGeo.method = ge.create(prodPath) if objGeo.method is None: objGeo.method = method if inImage: demImage = isceobj.createDemImage() IU.copyAttributes(infos['demImage'], demImage) objGeo(peg=infos['peg'], frame=frame1, planet=planet, dem=demImage, tobegeocoded=inImage, geoPosting=None, referenceslc=formSLC1) if catalog is not None: isceobj.Catalog.recordInputsAndOutputs( catalog, objGeo, "runGeocode.%s.%s" % (sceneid, prodPath), logger, "runGeocode.%s.%s" % (sceneid, prodPath)) stdWriter.finalize()
def runGeocodeCor(self): import stdproc logger.info("Geocoding Correlation") objFormSlc1 = self.insar.formSLC1 # Initialize the Dem from isceobj import createDemImage, createIntImage, createImage demImage = createDemImage() IU.copyAttributes(self.insar.demImage, demImage) demImage.setAccessMode('read') demImage.createImage() topoflatIntFilename = self.insar.topophaseFlatFilename widthInt = self.insar.resampIntImage.width intImage = createIntImage() widthInt = self.insar.resampIntImage.width intImage.setFilename(corintFilename) intImage.setWidth(widthInt) intImage.setAccessMode('read') intImage.createImage() posIndx = 1 mocompPosition1 = objFormSlc1.getMocompPosition() minLat, maxLat, minLon, maxLon = self.insar.topo.snwe planet = self.insar.masterFrame.instrument.getPlatform().getPlanet() objGeo = stdproc.createGeocode() objGeo.wireInputPort(name='peg', object=self.insar.peg) objGeo.wireInputPort(name='frame', object=self.insar.masterFrame) objGeo.wireInputPort(name='planet', object=planet) objGeo.wireInputPort(name='dem', object=demImage) objGeo.wireInputPort(name='interferogram', object=intImage) objGeo.snwe = minLat, maxLat, minLon, maxLon corGeocodeFilename = corintFilename + '.geo' demGeocodeFilename = corintFilename + '.demcrop' objGeo.setGeocodeFilename(corGeocodeFilename) objGeo.setDemCropFilename(demGeocodeFilename) #set the tag used in the outfile. each message is precided by this tag #is the writer is not of "file" type the call has no effect objGeo.stdWriter = self.stdWriter.set_file_tags( "geocode", "log", "err", "out") # see mocompbaseline objGeo.setReferenceOrbit(mocompPosition1[posIndx]) prf1 = self.insar.masterFrame.instrument.getPulseRepetitionFrequency() dp = self.insar.dopplerCentroid.getDopplerCoefficients(inHz=False)[0] v = self.insar.procVelocity h = self.insar.averageHeight objGeo.setDopplerCentroidConstantTerm(dp) objGeo.setBodyFixedVelocity(v) objGeo.setSpacecraftHeight(h) objGeo.setNumberRangeLooks(self.insar.numberRangeLooks) objGeo.setNumberAzimuthLooks(self.insar.numberAzimuthLooks) # I have no idea what ismocomp means goodLines = self.insar.numberValidPulses patchSize = self.insar.patchSize # this variable was hardcoded in geocode.f90 and was equal to (8192 - 2048)/2 is_mocomp = int((patchSize - goodLines) / 2) objGeo.setISMocomp(is_mocomp) objGeo.geocode() intImage.finalizeImage() demImage.finalizeImage() return objGeo
def runGeocode4rlks(self, inFilename, widthIn, geoFilename, demcropFilename): import stdproc from isceobj import createIntImage, createImage print("runGeocode4rlks: inFilename, widthIn = ", inFilename, widthIn) print("runGeocode4rlks: geoFilename, demcropFilename = ", geoFilename, demcropFilename) pause(message="Paused in runGeocode4rlks") logger.info("Geocoding Image") # Initialize the Dem from isceobj import createDemImage demImage = createDemImage() IU.copyAttributes(self.insar.demImage, demImage) demImage.setAccessMode('read') demImage.createImage() print("demImage.firstLatitude = ", demImage.firstLatitude) print("demImage.firstLongitude = ", demImage.firstLongitude) print("demImage.deltaLatitude = ", demImage.deltaLatitude) print("demImage.deltaLongitude = ", demImage.deltaLongitude) print("demImage.width = ", demImage.width) print("demImage.length = ", demImage.length) demImage_lastLatitude = ( demImage.firstLatitude + (demImage.length - 1) * demImage.deltaLatitude) demImage_lastLongitude = ( demImage.firstLongitude + (demImage.width - 1) * demImage.deltaLongitude) print("demImage_lastLatitude = ", demImage_lastLatitude) print("demImage_lastLongitude = ", demImage_lastLongitude) # Initialize the input image intImage = createIntImage() intImage.setFilename(inFilename) intImage.setWidth(widthIn) intImage.setAccessMode('read') intImage.createImage() minLat, maxLat, minLon, maxLon = self.insar.topo.snwe print("objTopo.minLat = ", minLat) print("objTopo.minLon = ", minLon) print("objTopo.maxLat = ", maxLat) print("objTopo.maxLon = ", maxLon) pause(message="Paused in runGeocode4rlks") planet = self.insar.masterFrame.instrument.getPlatform().getPlanet() objGeo = stdproc.createGeocode() objGeo.listInputPorts() objGeo.wireInputPort(name='peg', object=self.insar.peg) # objGeo.wireInputPort(name='frame',object=self.insar.masterFrame) objGeo.rangeFirstSample = self.insar.masterFrame.getStartingRange() objGeo.slantRangePixelSpacing = self.insar.masterFrame.instrument.getRangePixelSize( ) * 4 objGeo.prf = self.insar.masterFrame.instrument.getPulseRepetitionFrequency( ) objGeo.radarWavelength = self.insar.masterFrame.instrument.getRadarWavelength( ) objGeo.wireInputPort(name='planet', object=planet) objGeo.wireInputPort(name='dem', object=demImage) objGeo.wireInputPort(name='interferogram', object=intImage) print("self.geoPosting = ", self.geoPosting) objGeo.wireInputPort(name='geoPosting', object=self.geoPosting) objGeo.snwe = minLat, maxLat, minLon, maxLon objGeo.setGeocodeFilename(geoFilename) objGeo.setDemCropFilename(demcropFilename) #set the tag used in the outfile. each message is precided by this tag #is the writer is not of "file" type the call has no effect objGeo.stdWriter = self.stdWriter.set_file_tags( "geocode", "log", "err", "out") # see mocompbaseline objFormSlc1 = self.insar.formSLC1 mocompPosition1 = objFormSlc1.getMocompPosition() posIndx = 1 objGeo.setReferenceOrbit(mocompPosition1[posIndx]) prf1 = self.insar.masterFrame.instrument.getPulseRepetitionFrequency() dp = self.insar.dopplerCentroid.getDopplerCoefficients(inHz=False)[0] v = self.insar.procVelocity h = self.insar.averageHeight objGeo.setDopplerCentroidConstantTerm(dp) objGeo.setBodyFixedVelocity(v) objGeo.setSpacecraftHeight(h) objGeo.setNumberRangeLooks(1.0) #self.insar.numberRangeLooks) objGeo.setNumberAzimuthLooks(1.0) #self.insar.numberAzimuthLooks) # I have no idea what ismocomp means goodLines = self.insar.numberValidPulses patchSize = self.insar.patchSize # this variable was hardcoded in geocode.f90 and was equal to (8192 - 2048)/2 is_mocomp = self.insar.is_mocomp # is_mocomp = int((patchSize - goodLines)/2) objGeo.setISMocomp(is_mocomp) objGeo.geocode() print("Input state paraemters to gecode.f90:") print("Minimum Latitude = ", objGeo.minimumLatitude) print("Maximum Latitude = ", objGeo.maximumLatitude) print("Minimum Longitude = ", objGeo.minimumLongitude) print("Maximum Longitude = ", objGeo.maximumLongitude) print("Ellipsoid Major Semi Axis = ", objGeo.ellipsoidMajorSemiAxis) print("Ellipsoid Eccentricity Squared = ", objGeo.ellipsoidEccentricitySquared) print("Peg Latitude = ", objGeo.pegLatitude) print("Peg Longitude = ", objGeo.pegLongitude) print("Peg Heading = ", objGeo.pegHeading) print("Range Pixel Spacing = ", objGeo.slantRangePixelSpacing) print("Range First Sample = ", objGeo.rangeFirstSample) print("Spacecraft Height = ", objGeo.spacecraftHeight) print("Planet Local Radius = ", objGeo.planetLocalRadius) print("Body Fixed Velocity = ", objGeo.bodyFixedVelocity) print("Doppler Centroid Constant Term = ", objGeo.dopplerCentroidConstantTerm) print("PRF = ", objGeo.prf) print("Radar Wavelength = ", objGeo.radarWavelength) print("S Coordinate First Line = ", objGeo.sCoordinateFirstLine) print("Azimuth Spacing = ", objGeo.azimuthSpacing) print("First Latitude = ", objGeo.firstLatitude) print("First Longitude = ", objGeo.firstLongitude) print("Delta Latitude = ", objGeo.deltaLatitude) print("Delta Longitude = ", objGeo.deltaLongitude) print("Length = ", objGeo.length) print("Width = ", objGeo.width) print("Number Range Looks = ", objGeo.numberRangeLooks) print("Number Azimuth Looks = ", objGeo.numberAzimuthLooks) print("Number Points Per DEM Post = ", objGeo.numberPointsPerDemPost) print("Is Mocomp = ", objGeo.isMocomp) print("DEM Width = ", objGeo.demWidth) print("DEM Length = ", objGeo.demLength) # print("Reference Orbit = ", objGeo.referenceOrbit) print("Dim1 Reference Orbit = ", objGeo.dim1_referenceOrbit) intImage.finalizeImage() demImage.finalizeImage() return objGeo
def runGeocode(self, inFilename, widthIn, geoFilename, demcropFilename): import stdproc from isceobj import createDemImage print("runGeocode: inFilename, widthIn = ", inFilename, widthIn) print("runGeocode: geoFilename, demcropFilename = ", geoFilename, demcropFilename) logger.info("Geocoding Image") # Initialize the Dem demImage = createDemImage() IU.copyAttributes(self.insar.demImage, demImage) demImage.setAccessMode('read') demImage.createImage() # Initialize the flattened interferogram from isceobj import createIntImage, createImage intImage = createIntImage() intImage.filename = inFilename intImage.width = widthIn intImage.setAccessMode('read') intImage.createImage() minLat, maxLat, minLon, maxLon = self.insar.topo.snwe planet = self.insar.referenceFrame.instrument.getPlatform().getPlanet() objGeo = stdproc.createGeocode() objGeo.listInputPorts() objGeo.wireInputPort(name='peg', object=self.insar.peg) objGeo.wireInputPort(name='frame', object=self.insar.referenceFrame) objGeo.wireInputPort(name='planet', object=planet) objGeo.wireInputPort(name='dem', object=demImage) objGeo.wireInputPort(name='interferogram', object=intImage) objGeo.wireInputPort(name='geoPosting', object=self.geoPosting) print("self.geoPosting = ", self.geoPosting) objGeo.snwe = minLat, maxLat, minLon, maxLon objGeo.geoFilename = geoFilename objGeo.demCropFilename = demcropFilename #set the tag used in the outfile. each message is precided by this tag #is the writer is not of "file" type the call has no effect objGeo.stdWriter = self.stdWriter.set_file_tags( "geocode", "log", "err", "out") # see mocompbaseline objFormSlc1 = self.insar.formSLC1 mocompPosition1 = objFormSlc1.getMocompPosition() posIndx = 1 objGeo.referenceOrbit = mocompPosition1[posIndx] prf1 = self.insar.referenceFrame.instrument.getPulseRepetitionFrequency( ) dp = self.insar.dopplerCentroid.getDopplerCoefficients(inHz=False)[0] v = self.insar.procVelocity h = self.insar.averageHeight objGeo.setDopplerCentroidConstantTerm(dp) objGeo.setBodyFixedVelocity(v) objGeo.setSpacecraftHeight(h) objGeo.setNumberRangeLooks(self.insar.numberRangeLooks) objGeo.setNumberAzimuthLooks(self.insar.numberAzimuthLooks) # I have no idea what ismocomp means goodLines = self.insar.numberValidPulses patchSize = self.insar.patchSize # this variable was hardcoded in geocode.f90 and was equal to (8192 - 2048)/2 is_mocomp = self.insar.is_mocomp # is_mocomp = int((patchSize - goodLines)/2) objGeo.setISMocomp(is_mocomp) objGeo.geocode() intImage.finalizeImage() demImage.finalizeImage() return objGeo
def runGeocode(self, prodlist, unwrapflag, bbox): '''Generalized geocoding of all the files listed above.''' from isceobj.Catalog import recordInputsAndOutputs logger.info("Geocoding Image") insar = self.insar if isinstance(prodlist,str): from isceobj.Util.StringUtils import StringUtils as SU tobeGeocoded = SU.listify(prodlist) else: tobeGeocoded = prodlist #remove files that have not been processed for toGeo in tobeGeocoded: if not os.path.exists(toGeo): tobeGeocoded.remove(toGeo) print('Number of products to geocode: ', len(tobeGeocoded)) stdWriter = create_writer("log", "", True, filename="geo.log") v,h = insar.vh() planet = insar.masterFrame._instrument._platform._planet if bbox is None: snwe = insar.topo.snwe else: snwe = list(bbox) if len(snwe) != 4: raise ValueError('Bounding box should be a list/tuple of length 4') #####Geocode one by one first = False ge = Geocodable() for prod in tobeGeocoded: objGeo = stdproc.createGeocode('insarapp_geocode_' + os.path.basename(prod).replace('.','')) objGeo.configure() ####IF statements to check for user configuration if objGeo.minimumLatitude is None: objGeo.minimumLatitude = snwe[0] if objGeo.maximumLatitude is None: objGeo.maximumLatitude = snwe[1] if objGeo.minimumLongitude is None: objGeo.minimumLongitude = snwe[2] if objGeo.maximumLongitude is None: objGeo.maximumLongitude = snwe[3] if objGeo.demCropFilename is None: objGeo.demCropFilename = insar.demCropFilename objGeo.referenceOrbit = insar.formSLC1.getMocompPosition(1) if objGeo.dopplerCentroidConstantTerm is None: objGeo.dopplerCentroidConstantTerm = insar.dopplerCentroid.getDopplerCoefficients(inHz=False)[0] if objGeo.bodyFixedVelocity is None: objGeo.bodyFixedVelocity = v if objGeo.spacecraftHeight is None: objGeo.spacecraftHeight = h if objGeo.numberRangeLooks is None: objGeo.numberRangeLooks = insar.numberRangeLooks if objGeo.numberAzimuthLooks is None: objGeo.numberAzimuthLooks = insar.numberAzimuthLooks if objGeo.isMocomp is None: objGeo.isMocomp = insar.is_mocomp objGeo.stdWriter = stdWriter #create the instance of the input image and the appropriate #geocode method inImage,method = ge.create(prod) if objGeo.method is None: objGeo.method = method if(inImage): #demImage = isceobj.createDemImage() #IU.copyAttributes(insar.demImage, demImage) demImage = insar.demImage.clone() objGeo(peg=insar.peg, frame=insar.masterFrame, planet=planet, dem=demImage, tobegeocoded=inImage, geoPosting=None, masterslc=insar.formSLC1) recordInputsAndOutputs(self._insar.procDoc, objGeo, "runGeocode", logger, "runGeocode") stdWriter.finalize()