En la imagen siguiente se observa la generación de los histogramas de un ráster con 4 bandas (las tres RGB más el canal alfa) donde prácticamente no tienen utilidad porque las opciones por defecto, expresadas en el menú de preferencias, cargan simultáneamente todas las bandas y la alfa, con un sólo valor y una frecuencia muy alta, impide la visualización adecuada de las RGB.
Para obtener un resultado útil, por ejemplo para la banda 1 (rojo), se tiene que hacer la selección manual en el menú de preferencias. El resultado se indica en la imagen a continuación:
Un resultado similar se puede obtener mediante programación con PyQGIS 3 empleando los objetos de tipo QgsRasterHistogramWidget. Sólo hay que identificar cuáles son las acciones asociadas a las opciones del menú correspondiente para desmarcarlas o hacerlas activas. La búsqueda dió como resultado que el referido menú correspondió al children[5]. Por tanto, se generó el código siguiente:
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 30 31 32 | layer = iface.activeLayer() w = QgsRasterHistogramWidget(layer) w.setWindowTitle('Layer Properties-' + layer.name() + '|Histogram') band = 1 w.setSelectedBand(band) #default band 1 w.setFixedWidth(600) w.computeHistogram(True) w.refreshHistogram() w.show() children = w.children() children[1].setFixedWidth(575) #'mpPlot' pref = children[5] # QMenu of preferences pref_actions = pref.actions() option = 0 name_actions = [ action.text() for action in pref_actions ] print(name_actions) for action in pref_actions: if action.text() == 'Draw as lines': action.setChecked(option) action.trigger() if action.text() == 'Show selected band': action.trigger() |
La ejecución del código anterior en la Python Console de PyQGIS produce el resultado siguiente:
Si se cambia el valor de opcion de 0 a 1 el diagrama obtenido será del tipo barras.
No hay comentarios:
Publicar un comentario