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
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
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
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
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