示例#1
0
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()
示例#2
0
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()
示例#3
0
    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
示例#4
0
    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
示例#5
0
    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
示例#6
0
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()