miércoles, 28 de febrero de 2018

Plugin para producir rásteres con valores enteros aleatorios en QGIS 3

En la versión anterior de QGIS se produjo un complemento (plugin) que permitía producir rásteres con valores enteros aleatorios y cuyo algoritmo se basaba en este post. Ésto es muy útil porque permite obtener pequeños rásteres, alineados con un ráster base, donde los cambios de sus valores enteros, producto de diferentes operaciones, pueden ser fácilmente corroborados.

En la imagen siguiente se observa el plugin completamente adaptado al nuevo QGIS 3 (cuyos detalles más relevantes fueron considerados en los dos post anteriores) y en plena ejecución.


El ráster (10x10) producido en la imagen anterior se observa a continuación con un "Zoom In":


El algoritmo referido con anterioridad, asociado a un slot que se conecta a través del botón OK, prácticamente no conlleva modificaciones. Los únicos cambios prácticamente están asociados a las QgsMessageBar que alertan de las omisiones a la hora de rellenar con los valores necesarios para la correcta operación del plugin.

Ello es debido a que el MessageLevel anterior (tal como QgsMessageBar.SUCCESS o QgsMessageBar.WARNING) ha sido removido y ahora se utilizan los referidos aquí. Ello conlleva al uso de una clase que ha sido renombrada de QGis a Qgis por lo que los MessageLevel ya referidos se escribirían, respectivamente, como Qgis.Success y Qgis.Warning. Un ejemplo de implementación en el plugin puede observarse a continuación:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
.
.
.
            chkb = self.dlg.checkBox.isChecked()

            if chkb is True:
                lyr = QgsRasterLayer(output_file,
                                     'random_raster')

                QgsProject.instance().addMapLayer(lyr)

                message = "Raster Layer was added sucessfully"
                self.iface.messageBar().pushMessage("", 
                                                    message, 
                                                    Qgis.Success, 5) 

        except ValueError:
            message = "Please, choose an integer number"
            self.iface.messageBar().pushMessage("Warning:",
                                                message,
                                                Qgis.Warning, 5)
        except AttributeError:
            message = "Please, choose one name for the file"
            self.iface.messageBar().pushMessage("Warning:",
                                                message,
                                                Qgis.Warning, 5) 
.
.
.


No hay comentarios: