Exemplo n.º 1
0
    def __init__(self):
        QDialog.__init__(self)
        # Set up the user interface from Designer.
        self.ui = Ui_FocalStats()
        self.ui.setupUi(self)

        self.ui.cbLayers.addItems(getLayersNames())
        QObject.connect(self.ui.bOK, SIGNAL("clicked()"), self.calculateStats)
        QObject.connect(self.ui.bBrowse, SIGNAL("clicked()"), self.outFile)
        QObject.connect(self.ui.bOpenRaster, SIGNAL("clicked()"),
                        self.openRaster)
Exemplo n.º 2
0
	def __init__(self):
		QDialog.__init__(self)
		# Set up the user interface from Designer.
		self.ui = Ui_FocalStats()
		self.ui.setupUi(self)
		
		self.ui.cbLayers.addItems(getLayersNames())
		QObject.connect( self.ui.bOK, SIGNAL( "clicked()" ), self.calculateStats )
		QObject.connect( self.ui.bBrowse, SIGNAL( "clicked()" ), self.outFile )
		QObject.connect( self.ui.bOpenRaster, SIGNAL( "clicked()" ), self.openRaster )
Exemplo n.º 3
0
class FocalStatsDialog(QDialog):
	def __init__(self):
		QDialog.__init__(self)
		# Set up the user interface from Designer.
		self.ui = Ui_FocalStats()
		self.ui.setupUi(self)
		
		self.ui.cbLayers.addItems(getLayersNames())
		QObject.connect( self.ui.bOK, SIGNAL( "clicked()" ), self.calculateStats )
		QObject.connect( self.ui.bBrowse, SIGNAL( "clicked()" ), self.outFile )
		QObject.connect( self.ui.bOpenRaster, SIGNAL( "clicked()" ), self.openRaster )
		
	def outFile(self):
		"""Open a file save dialog and set the output file path."""
		outFilePath = saveDialog(self)
		if not outFilePath:
			return
		self.ui.eOutput.setText(QString(outFilePath))
		
	def openRaster(self):
		rasterPath = openDialog(self)
		if not rasterPath: return
		self.ui.cbLayers.setEditText(QString(rasterPath))
		
	def createSimpleMask(self):
		sizeX = int(self.ui.cbX.currentText())
		
		if self.ui.useY.isChecked():
			sizeY = int(self.ui.cbY.currentText())
		else:
			sizeY = sizeX
			
		return np.ones((sizeY, sizeX))
		
	def calculateStats(self):
		if self.ui.eOutput.text() == '':
			QMessageBox.information(None, 'Focal statistics', 'Choose output raster file!')
			return
		elif self.ui.cbLayers.currentText() == '':
			QMessageBox.information(None, 'Focal statistics', 'Choose input raster file!')
			return
		t1 = time()
		self.ui.lInfo.setText('Reading input file...')
		self.repaint()
		rLayer = getMapLayerByName(self.ui.cbLayers.currentText())
		if rLayer:
			path = str(rLayer.source())
		else:
			path = str(self.ui.cbLayers.currentText())
		
		gd = gdal.Open(path)
		if not gd:
			QMessageBox.information(None, 'Focal statistics', 'File not found!')
			return
			
		rasterInfo = focal.rasterInfo(gd)
		if self.ui.cbDataType.isChecked():
			rasterInfo.gdalDataType = focal.dataTypesFromInt[self.ui.cbType.currentIndex()]
		
		raster = gd.ReadAsArray()
		gd = None
		
		#QInputDialog.getText(None, '','', QLineEdit.Normal, str(rasterInfo.noDataValue))

		mask = self.createSimpleMask()
		
		self.ui.lInfo.setText('Calculating...')
		self.repaint()
		try:
			if self.ui.cbMethod.currentIndex() == 0:
				calcRast = focal.rasterSum(raster, mask, rasterInfo)
				raster = None
			elif self.ui.cbMethod.currentIndex() == 1:
				calcRast = focal.rasterAverage(raster, mask, rasterInfo)
			elif self.ui.cbMethod.currentIndex() == 2:
				calcRast = focal.rasterMedian(raster, mask, rasterInfo)
				raster = None
			elif self.ui.cbMethod.currentIndex() == 3:
				calcRast = focal.rasterMin(raster, mask, rasterInfo)
				raster = None
			elif self.ui.cbMethod.currentIndex() == 4:
				calcRast = focal.rasterMax(raster, mask, rasterInfo)
				raster = None
			elif self.ui.cbMethod.currentIndex() == 5:
				calcRast = focal.rasterRange(raster, mask, rasterInfo)
				raster = None
				
		except MemoryError:
			QMessageBox.critical(None, 'Focal Statistics', 'Memory Error')
			raster = None
			self.ui.lInfo.setText('Memory error...')
			self.repaint()
			return
		
		self.ui.lInfo.setText('Creating new file...')
		self.repaint()
		
		if self.ui.cbDataType.isChecked():
			focal.SaveToFile(str(self.ui.eOutput.text()), calcRast, rasterInfo, self.ui.cbType.currentIndex())
		else:
			focal.SaveToFile(str(self.ui.eOutput.text()), calcRast, rasterInfo)
			
		if self.ui.cbAddResult.isChecked():
			self.ui.lInfo.setText('Loading file...')
			self.repaint()
			r = QgsRasterLayer(str(self.ui.eOutput.text()), 'nowy_raster')
			QgsMapLayerRegistry.instance().addMapLayer(r)
		
		t2 = time()
		t = t2-t1
		self.ui.lInfo.setText('Finished')
		QMessageBox.information(None, 'Focal Statistics', 'Done in %.2f sec.' % t)
Exemplo n.º 4
0
class FocalStatsDialog(QDialog):
    def __init__(self):
        QDialog.__init__(self)
        # Set up the user interface from Designer.
        self.ui = Ui_FocalStats()
        self.ui.setupUi(self)

        self.ui.cbLayers.addItems(getLayersNames())
        QObject.connect(self.ui.bOK, SIGNAL("clicked()"), self.calculateStats)
        QObject.connect(self.ui.bBrowse, SIGNAL("clicked()"), self.outFile)
        QObject.connect(self.ui.bOpenRaster, SIGNAL("clicked()"),
                        self.openRaster)

    def outFile(self):
        """Open a file save dialog and set the output file path."""
        outFilePath = saveDialog(self)
        if not outFilePath:
            return
        self.ui.eOutput.setText(QString(outFilePath))

    def openRaster(self):
        rasterPath = openDialog(self)
        if not rasterPath: return
        self.ui.cbLayers.setEditText(QString(rasterPath))

    def createSimpleMask(self):
        sizeX = int(self.ui.cbX.currentText())

        if self.ui.useY.isChecked():
            sizeY = int(self.ui.cbY.currentText())
        else:
            sizeY = sizeX

        return np.ones((sizeY, sizeX))

    def calculateStats(self):
        if self.ui.eOutput.text() == '':
            QMessageBox.information(None, 'Focal statistics',
                                    'Choose output raster file!')
            return
        elif self.ui.cbLayers.currentText() == '':
            QMessageBox.information(None, 'Focal statistics',
                                    'Choose input raster file!')
            return
        t1 = time()
        self.ui.lInfo.setText('Reading input file...')
        self.repaint()
        rLayer = getMapLayerByName(self.ui.cbLayers.currentText())
        if rLayer:
            path = str(rLayer.source())
        else:
            path = str(self.ui.cbLayers.currentText())

        gd = gdal.Open(path)
        if not gd:
            QMessageBox.information(None, 'Focal statistics',
                                    'File not found!')
            return

        rasterInfo = focal.rasterInfo(gd)
        if self.ui.cbDataType.isChecked():
            rasterInfo.gdalDataType = focal.dataTypesFromInt[
                self.ui.cbType.currentIndex()]

        raster = gd.ReadAsArray()
        gd = None

        #QInputDialog.getText(None, '','', QLineEdit.Normal, str(rasterInfo.noDataValue))

        mask = self.createSimpleMask()

        self.ui.lInfo.setText('Calculating...')
        self.repaint()
        try:
            if self.ui.cbMethod.currentIndex() == 0:
                calcRast = focal.rasterSum(raster, mask, rasterInfo)
                raster = None
            elif self.ui.cbMethod.currentIndex() == 1:
                calcRast = focal.rasterAverage(raster, mask, rasterInfo)
            elif self.ui.cbMethod.currentIndex() == 2:
                calcRast = focal.rasterMedian(raster, mask, rasterInfo)
                raster = None
            elif self.ui.cbMethod.currentIndex() == 3:
                calcRast = focal.rasterMin(raster, mask, rasterInfo)
                raster = None
            elif self.ui.cbMethod.currentIndex() == 4:
                calcRast = focal.rasterMax(raster, mask, rasterInfo)
                raster = None
            elif self.ui.cbMethod.currentIndex() == 5:
                calcRast = focal.rasterRange(raster, mask, rasterInfo)
                raster = None

        except MemoryError:
            QMessageBox.critical(None, 'Focal Statistics', 'Memory Error')
            raster = None
            self.ui.lInfo.setText('Memory error...')
            self.repaint()
            return

        self.ui.lInfo.setText('Creating new file...')
        self.repaint()

        if self.ui.cbDataType.isChecked():
            focal.SaveToFile(str(self.ui.eOutput.text()), calcRast, rasterInfo,
                             self.ui.cbType.currentIndex())
        else:
            focal.SaveToFile(str(self.ui.eOutput.text()), calcRast, rasterInfo)

        if self.ui.cbAddResult.isChecked():
            self.ui.lInfo.setText('Loading file...')
            self.repaint()
            r = QgsRasterLayer(str(self.ui.eOutput.text()), 'nowy_raster')
            QgsMapLayerRegistry.instance().addMapLayer(r)

        t2 = time()
        t = t2 - t1
        self.ui.lInfo.setText('Finished')
        QMessageBox.information(None, 'Focal Statistics',
                                'Done in %.2f sec.' % t)