def __init__(self, iface): GenericTool.__init__(self, iface) self.labelName = "Statistics Image in batch" self.dlg = StatisticsImageDialog() self.dlg.lineEditFolder.clear() self.dlg.lineEditOutImage.clear() self.ListStats = [ 'Standard Desviation', 'Maximum', 'Mean', 'Variance', 'Minimum', 'Sum' ] self.dlg.comboBoxStast.addItems(self.ListStats) self.dlg.pushButtonFolder.clicked.connect(self.InputFolder) self.dlg.pushButtonOutImage.clicked.connect(self.OutputImage)
def __init__(self,iface): GenericTool.__init__(self, iface) self.labelName = "Statistics Image in batch" self.dlg = StatisticsImageDialog() self.dlg.lineEditFolder.clear() self.dlg.lineEditOutImage.clear() self.ListStats =['Standard Desviation','Maximum','Mean','Variance','Minimum','Sum'] self.dlg.comboBoxStast.addItems(self.ListStats) self.dlg.pushButtonFolder.clicked.connect(self.InputFolder) self.dlg.pushButtonOutImage.clicked.connect(self.OutputImage)
class StatisticsImage(GenericTool): """QGIS Plugin Implementation.""" def __init__(self,iface): GenericTool.__init__(self, iface) self.labelName = "Statistics Image in batch" self.dlg = StatisticsImageDialog() self.dlg.lineEditFolder.clear() self.dlg.lineEditOutImage.clear() self.ListStats =['Standard Desviation','Maximum','Mean','Variance','Minimum','Sum'] self.dlg.comboBoxStast.addItems(self.ListStats) self.dlg.pushButtonFolder.clicked.connect(self.InputFolder) self.dlg.pushButtonOutImage.clicked.connect(self.OutputImage) def run(self): """Run method that performs all the real work""" # show the dialog self.dlg.show() # Run the dialog event loop result = self.dlg.exec_() Lista = ['Standard Desviation','Maximum','Mean','Variance','Minimum','Sum'] # See if OK was pressed if result: iFolder = self.dlg.lineEditFolder.text() iSta = self.dlg.comboBoxStast.currentIndex() oImage = self.dlg.lineEditOutImage.text() NoData = self.dlg.lineEditNoData.text() try: if len(NoData) == 0: NoData = NoData else: NoData = float(NoData) self.startWorker(iFolder, iSta, oImage,NoData) except: QMessageBox.warning(qgis.utils.iface.mainWindow(),"Statistic Image in Batch","Nodata is not number") #Function input folder shapes def InputFolder(self): iFolder = QFileDialog.getExistingDirectory(self.dlg,'Insert Folder','',QFileDialog.ShowDirsOnly) self.dlg.lineEditFolder.setText(iFolder) #Function output shape file def OutputImage(self): filters = "TIFF (*.tif *.tiff)" oImage= QFileDialog.getSaveFileName(self.dlg,'Output Image','',filters) if not oImage == '': oImage = oImage.replace(".tif","").replace(".tiff","") self.dlg.lineEditOutImage.setText(oImage+".tif") #Function Start thread processing def startWorker(self, Folder, Stats, OutImage,NoData): # create a new worker instance worker = Worker(Folder,Stats, OutImage,NoData) #Create Progressbar qgis.utils.iface.messageBar().clearWidgets() progressMessageBar = qgis.utils.iface.messageBar().createMessage('Calculating Statistics Image...') progressBar = QProgressBar() progressBar.setMaximum(100) progressMessageBar.layout().addWidget(progressBar) qgis.utils.iface.messageBar().pushWidget(progressMessageBar) self.progressMessageBar = progressMessageBar # start the worker in a new thread thread = QThread() worker.moveToThread(thread) worker.finished.connect(self.workerFinished) worker.error.connect(self.workerError) worker.progress.connect(progressBar.setValue) thread.started.connect(worker.StatsImage) thread.start() self.thread = thread self.worker = worker self.outImage = OutImage #Function to finished thread processing def workerFinished(self,value): # clean up the worker and thread self.worker.deleteLater() self.thread.quit() self.thread.wait() self.thread.deleteLater() qgis.utils.iface.messageBar().clearWidgets() qgis.utils.iface.addRasterLayer(self.outImage,os.path.basename(self.outImage)[0:len(os.path.basename(self.outImage))-4]) if value == 0: QMessageBox.information(qgis.utils.iface.mainWindow(),"Statistics Image","Processing sucessfully...") else: QMessageBox.warming(qgis.utils.iface.mainWindow(),"Statistics Image","Image not same dimension...") #Function report error in work def workerError(self, e, exception_string): QgsMessageLog.logMessage('Worker thread raised an exception:\n'.format(exception_string), level=QgsMessageLog.CRITICAL)
class StatisticsImage(GenericTool): """QGIS Plugin Implementation.""" def __init__(self, iface): GenericTool.__init__(self, iface) self.labelName = "Statistics Image in batch" self.dlg = StatisticsImageDialog() self.dlg.lineEditFolder.clear() self.dlg.lineEditOutImage.clear() self.ListStats = [ 'Standard Desviation', 'Maximum', 'Mean', 'Variance', 'Minimum', 'Sum' ] self.dlg.comboBoxStast.addItems(self.ListStats) self.dlg.pushButtonFolder.clicked.connect(self.InputFolder) self.dlg.pushButtonOutImage.clicked.connect(self.OutputImage) def run(self): """Run method that performs all the real work""" # show the dialog self.dlg.show() # Run the dialog event loop result = self.dlg.exec_() Lista = [ 'Standard Desviation', 'Maximum', 'Mean', 'Variance', 'Minimum', 'Sum' ] # See if OK was pressed if result: iFolder = self.dlg.lineEditFolder.text() iSta = self.dlg.comboBoxStast.currentIndex() oImage = self.dlg.lineEditOutImage.text() NoData = self.dlg.lineEditNoData.text() try: if len(NoData) == 0: NoData = NoData else: NoData = float(NoData) self.startWorker(iFolder, iSta, oImage, NoData) except: QMessageBox.warning(qgis.utils.iface.mainWindow(), "Statistic Image in Batch", "Nodata is not number") #Function input folder shapes def InputFolder(self): iFolder = QFileDialog.getExistingDirectory(self.dlg, 'Insert Folder', '', QFileDialog.ShowDirsOnly) self.dlg.lineEditFolder.setText(iFolder) #Function output shape file def OutputImage(self): filters = "TIFF (*.tif *.tiff)" oImage = QFileDialog.getSaveFileName(self.dlg, 'Output Image', '', filters) if not oImage == '': oImage = oImage.replace(".tif", "").replace(".tiff", "") self.dlg.lineEditOutImage.setText(oImage + ".tif") #Function Start thread processing def startWorker(self, Folder, Stats, OutImage, NoData): # create a new worker instance worker = Worker(Folder, Stats, OutImage, NoData) #Create Progressbar qgis.utils.iface.messageBar().clearWidgets() progressMessageBar = qgis.utils.iface.messageBar().createMessage( 'Calculating Statistics Image...') progressBar = QProgressBar() progressBar.setMaximum(100) progressMessageBar.layout().addWidget(progressBar) qgis.utils.iface.messageBar().pushWidget(progressMessageBar) self.progressMessageBar = progressMessageBar # start the worker in a new thread thread = QThread() worker.moveToThread(thread) worker.finished.connect(self.workerFinished) worker.error.connect(self.workerError) worker.progress.connect(progressBar.setValue) thread.started.connect(worker.StatsImage) thread.start() self.thread = thread self.worker = worker self.outImage = OutImage #Function to finished thread processing def workerFinished(self, value): # clean up the worker and thread self.worker.deleteLater() self.thread.quit() self.thread.wait() self.thread.deleteLater() qgis.utils.iface.messageBar().clearWidgets() qgis.utils.iface.addRasterLayer( self.outImage, os.path.basename( self.outImage)[0:len(os.path.basename(self.outImage)) - 4]) if value == 0: QMessageBox.information(qgis.utils.iface.mainWindow(), "Statistics Image", "Processing sucessfully...") else: QMessageBox.warming(qgis.utils.iface.mainWindow(), "Statistics Image", "Image not same dimension...") #Function report error in work def workerError(self, e, exception_string): QgsMessageLog.logMessage( 'Worker thread raised an exception:\n'.format(exception_string), level=QgsMessageLog.CRITICAL)