Beispiel #1
0
    def topo(self, demImage=None, intImage=None):
        for port in self._inputPorts:
            port()

        if demImage is not None:
            self.demImage = demImage
            
        #another way of passing width and length if not using the ports
        if intImage is not None:
            self.intImage = intImage
            #if width or length not defined get 'em  from intImage ince they 
            # are needed to create the output images
            if self.width is None:
                self.width = self.intImage.getWidth()
            if self.length is None:
                self.length = self.intImage.getLength()

        self.setDefaults() 
        self.createImages()
        #not all the quantities could be set before. now that we have the 
        # images set the remaining defaults if necessary (such as width, length)
        self.updateDefaults()

        self.demAccessor = self.demImage.getImagePointer()
        self.latAccessor = self.latImage.getImagePointer()
        self.lonAccessor = self.lonImage.getImagePointer()
        self.heightAccessor = self.heightImage.getImagePointer()
        self.losAccessor = self.losImage.getImagePointer()

        if isinstance(self.slantRangeImage, Poly2D.Poly2D):
            self.slantRangeImage.createPoly2D()
            self.slantRangeAccessor = self.slantRangeImage.getPointer()
        else:
            self.slantRangeAccessor = self.slantRangeImage.getImagePointer()

        if self.incImage:
            self.incAccessor = self.incImage.getImagePointer()
        else:
            self.incAccessor = 0

        if self.maskImage:
            self.maskAccessor = self.maskImage.getImagePointer()
        else:
            self.maskAccessor = 0


        self.polyDoppler.createPoly2D()
        self.polyDopplerAccessor = self.polyDoppler.getPointer()

        self.setState()

        cOrbit = self.orbit.exportToC(reference=self.sensingStart)
        topozero.setOrbit_Py(cOrbit)
        topozero.topo_Py(self.demAccessor, self.polyDopplerAccessor, self.slantRangeAccessor)
        combinedlibmodule.freeCOrbit(cOrbit)

        self.getState()
        self.destroyImages()

        return None
Beispiel #2
0
    def formslc(self):
        for item in self.inputPorts:
            item()

        self.computeRangeParams()

        try:

            self.rawImage.setCaster('read','CFLOAT')
            self.rawImage.setExtraInfo()
            self.rawImage.createImage()
            self.rawAccessor = self.rawImage.getImagePointer()
            self.slcAccessor = self.slcImage.getImagePointer()
        except AttributeError:
            self.logger.error("Error in accessing image pointers")
            raise AttributeError

        self.computePatchParams()
        self.allocateArrays()
        self.setState()

        ###New changes
        cOrbit = self.inOrbit.exportToC()
        formslc.setOrbit_Py(cOrbit)
        formslc.setSensingStart_Py(
            DTU.seconds_since_midnight(self.sensingStart)
        )

        ####Create an empty/dummy orbit of same length as input orbit
        mOrbit = copy.copy(self.inOrbit).exportToC()
        formslc.setMocompOrbit_Py(mOrbit)

        formslc.formslc_Py(self.rawAccessor, self.slcAccessor)

        ###Freeing Orbit
        combinedlibmodule.freeCOrbit(cOrbit)
        self.outOrbit = Orbit()
        self.outOrbit.configure()
        self.outOrbit.importFromC(mOrbit,
            datetime.datetime.combine(self.sensingStart.date(),
                                      datetime.time(0)
            )
        )
        combinedlibmodule.freeCOrbit(mOrbit)

        #the size of this vectors where unknown until the end of the run
        posSize = formslc.getMocompPositionSize_Py()
        self.dim1_mocompPosition = 2
        self.dim2_mocompPosition = posSize
        self.dim1_mocompIndx = posSize
        self.getState()
        self.deallocateArrays()
        self.slcImage.finalizeImage()
        self.slcImage.renderHdr()
        return self.slcImage
Beispiel #3
0
    def topo(self, demImage=None, intImage=None):
        for port in self._inputPorts:
            port()

        if demImage is not None:
            self.demImage = demImage

        #another way of passing width and length if not using the ports
        if intImage is not None:
            self.intImage = intImage
            #if width or length not defined get 'em  from intImage ince they
            # are needed to create the output images
            if self.width is None:
                self.width = self.intImage.getWidth()
            if self.length is None:
                self.length = self.intImage.getLength()

        self.setDefaults()
        self.createImages()
        #not all the quantities could be set before. now that we have the
        # images set the remaining defaults if necessary (such as width, length)
        self.updateDefaults()

        self.squintshift = [0] * self.width  #preallocate
        self.demAccessor = self.demImage.getImagePointer()
        self.latAccessor = self.latImage.getImagePointer()
        self.lonAccessor = self.lonImage.getImagePointer()
        self.heightRAccessor = self.heightRImage.getImagePointer()
        self.heightSchAccessor = self.heightSchImage.getImagePointer()
        self.losAccessor = self.losImage.getImagePointer()

        if self.incImage:
            self.incAccessor = self.incImage.getImagePointer()
        else:
            self.incAccessor = 0

        ####Doppler accessor
        self.polyDoppler.createPoly2D()
        self.polyDopplerAccessor = self.polyDoppler.getPointer()

        self.allocateArrays()
        self.setState()

        corb = self.orbit.exportToC()
        topo.setOrbit_Py(corb)
        topo.topo_Py(self.demAccessor, self.polyDopplerAccessor)
        combinedlibmodule.freeCOrbit(corb)
        self.getState()
        self.deallocateArrays()
        self.destroyImages()

        return None
    def mocomptsx(self):
        for port in self.inputPorts:
            port()

        try:
            self.inAccessor = self.slcInImage.getImagePointer()
        except AttributeError:
            self.logger.error("Error in accessing image pointers")
            raise AttributeError("Error in accessing image pointers")

        if self.stdWriter is None:
            self.createStdWriter()

        self.createOutSlcImage()
        self.outAccessor = self.slcOutImage.getImagePointer()
        self.allocateArrays()
        self.setState()

        ###New changes
        cOrbit = self.inOrbit.exportToC()
        mocompTSX.setOrbit_Py(cOrbit)
        mocompTSX.setSensingStart_Py(
            DTU.seconds_since_midnight(self.sensingStart)
        )

        ####Create an empty/dummy orbit of same length as input orbit
        mOrbit = copy.copy(self.inOrbit).exportToC()
        mocompTSX.setMocompOrbit_Py(mOrbit)

        mocompTSX.mocompTSX_Py(self.inAccessor, self.outAccessor)

        ###Freeing Orbit
        combinedlibmodule.freeCOrbit(cOrbit)
        self.outOrbit = Orbit()
        self.outOrbit.configure()
        self.outOrbit.importFromC(mOrbit,
            datetime.datetime.combine(self.sensingStart.date(),
                                      datetime.time(0)
            )
        )
        combinedlibmodule.freeCOrbit(mOrbit)

        self.mocompPositionSize = mocompTSX.getMocompPositionSize_Py()
        self.dim1_mocompPosition = 2
        self.dim2_mocompPosition = self.mocompPositionSize
        self.dim1_mocompIndex = self.mocompPositionSize
        self.getState()
        self.deallocateArrays()
        self.slcOutImage.finalizeImage()
        self.slcOutImage.renderHdr()

        return self.slcOutImage
Beispiel #5
0
    def finalize(self):
        '''
        Clean up all the C pointers.
        '''

        from components.contrib.geoAutorift.geogrid import geogrid
        from isceobj.Util import combinedlibmodule

        combinedlibmodule.freeCOrbit(self._orbit)
        self._orbit = None

        geogrid.destroyGeoGrid_Py(self._geogrid)
        self._geogrid = None
    def geo2rdr(self, latImage=None, lonImage=None, demImage=None):
        self.activateInputPorts()

        if latImage is not None:
            self.latImage = latImage

        if lonImage is not None:
            self.lonImage = lonImage

        if demImage is not None:
            self.demImage = demImage

        if self.orbit is None:
            raise Exception('No orbit provided for geocoding')

        self.setDefaults()
        self.createImages()
        self.setState()

        #this inits the image in the c++ bindings
        self.demImage.setCaster('read','DOUBLE')
        self.demImage.createImage()
        demAccessor = self.demImage.getImagePointer()

        self.latImage.createImage()
        latAccessor = self.latImage.getImagePointer()

        self.lonImage.createImage()
        lonAccessor = self.lonImage.getImagePointer()

        
        ####Get output accessor
        rangeAcc = 0
        if self.rangeImage is not None:
            rangeAcc = self.rangeImage.getImagePointer()
        
        azimuthAcc = 0
        if self.azimuthImage is not None:
            azimuthAcc = self.azimuthImage.getImagePointer()

        rangeOffAcc = 0
        if self.rangeOffsetImage is not None:
            rangeOffAcc = self.rangeOffsetImage.getImagePointer()

        azimuthOffAcc = 0
        if self.azimuthOffsetImage is not None:
            azimuthOffAcc = self.azimuthOffsetImage.getImagePointer()


        cOrbit = self.orbit.exportToC()
        geo2rdr.setOrbit_Py(cOrbit)

        #####Output cropped DEM for first band
        geo2rdr.geo2rdr_Py(latAccessor,
                           lonAccessor,
                           demAccessor,
                           azimuthAcc, rangeAcc,
                           azimuthOffAcc, rangeOffAcc)

        combinedlibmodule.freeCOrbit(cOrbit)



        self.destroyImages()
        return None
Beispiel #7
0
    def geocode(self, demImage=None, inputImage=None, method=None):
        self.activateInputPorts()

        if demImage is not None:
            self.demImage = demImage
        if inputImage is not None:
            self.inputImage = inputImage
        if method is not None:
            self.method = method

        if self.orbit is None:
            raise Exception('No orbit provided for geocoding')

        self.setDefaults()
        self.createImages()
        self.setState()
        #this inits the image in the c++ bindings

        if not self.inputImage.dataType.upper().count('FLOAT'):
            self.inputImage.setCaster('read', 'FLOAT')

        self.inputImage.createImage()
        self.demImage.setCaster('read', 'FLOAT')
        self.demImage.createImage()
        demAccessor = self.demImage.getImagePointer()

        inputAccessor = self.inputImage.getImagePointer()
        complexFlag = self.inputImage.dataType.upper().startswith('C')
        nBands = self.inputImage.getBands()

        cOrbit = self.orbit.exportToC(reference=self.sensingStart)
        geozero.setOrbit_Py(cOrbit)

        #####Output cropped DEM for first band
        inband = 0
        outband = 0
        geozero.geozero_Py(demAccessor, inputAccessor, self.demCropAccessor,
                           self.geoAccessor, inband, outband, int(complexFlag),
                           int(self.interp_methods[self.method]))

        #####Supress cropped DEM output for other bands
        for kk in range(1, nBands):
            self.demImage.rewind()
            self.inputImage.rewind()
            self.demCropImage.rewind()
            self.geoImage.rewind()

            inband = kk
            outband = kk
            demCropAcc = 0
            geozero.geozero_Py(demAccessor, inputAccessor, demCropAcc,
                               self.geoAccessor, inband, outband,
                               int(complexFlag),
                               int(self.interp_methods[self.method]))

        combinedlibmodule.freeCOrbit(cOrbit)
        self.getState()

        self.demImage.finalizeImage()
        self.inputImage.finalizeImage()
        self.destroyImages()
        self.geoImage.setWidth(geozero.getGeoWidth_Py())
        self.geoImage.trueDataType = self.geoImage.getDataType()
        #        self.geoImage.description = "DEM-flattened interferogram orthorectified to an equi-angular latitude, longitude grid"
        self.geoImage.coord2.coordDescription = 'Latitude'
        self.geoImage.coord2.coordUnits = 'degree'
        self.geoImage.coord2.coordStart = self.maximumGeoLatitude
        self.geoImage.coord2.coordDelta = self.deltaLatitude
        self.geoImage.coord1.coordDescription = 'Longitude'
        self.geoImage.coord1.coordUnits = 'degree'
        self.geoImage.coord1.coordStart = self.minimumGeoLongitude
        self.geoImage.coord1.coordDelta = self.deltaLongitude

        descr = self.inputImage.getDescription()
        if descr not in [None, '']:
            self.geoImage.addDescription(descr)

        self.geoImage.renderHdr()
        return None