Creo que el algoritmo está buscando un Parámetro del archivo para cargar el archivo de estilo. Si añades esto a tu modelador, puedes conectar el parámetro del archivo con el Establecer el estilo de la capa de trama algoritmo:
Cuando se ejecuta el modelo, se puede especificar qué estilo cargar:
Creo que hay un pequeño fallo en el algoritmo ya que al ejecutarlo se carga el estilo pero no se actualiza la capa. Tienes que ir a las propiedades de la capa y luego hacer clic en OK para el estilo a aplicar. Puedes hacer un arreglo sencillo editando el script que puedes encontrar en (por ejemplo):
C:/Program Files/QGIS 2.18/apps/qgis/python/plugins/processing/algs/qgis/SetRasterStyle.py
Y añade la siguiente línea:
layer.triggerRepaint()
al final del script, justo debajo iface.legendInterface().refreshLayerSymbology(layer)
:
def processAlgorithm(self, progress):
filename = self.getParameterValue(self.INPUT)
layer = dataobjects.getObjectFromUri(filename)
style = self.getParameterValue(self.STYLE)
if layer is None:
dataobjects.load(filename, os.path.basename(filename), style=style)
self.getOutputFromName(self.OUTPUT).open = False
else:
with open(style) as f:
xml = "".join(f.readlines())
d = QDomDocument()
d.setContent(xml)
n = d.firstChild()
layer.readSymbology(n, '')
self.setOutputValue(self.OUTPUT, filename)
iface.mapCanvas().refresh()
iface.legendInterface().refreshLayerSymbology(layer)
layer.triggerRepaint()
A continuación, reinicie QGIS para actualizar el algoritmo.
Editar:
Si la entrada para el Set style for raster layer
es la salida de otra herramienta y la capa de trama sigue sin actualizarse con el archivo de estilo, podría ser un error en cuyo caso debería considerar enviar una solicitud de error .
Una posible alternativa es sustituir el Set style for raster layer
(y eliminar el File
) con un Personalizado script que carga el archivo de estilo y actualiza su simbología en la interfaz de la leyenda. Puedes añadir un script yendo a:
Processing Toolbox > Scripts > Tools > Create new script
Entonces usa algo como:
##Example=name
##input=raster
from qgis.utils import iface
layer = processing.getObject(input)
layer.loadNamedStyle('path/to/.qml')
layer.triggerRepaint()
iface.legendInterface().refreshLayerSymbology(layer)
Guárdalo en tu /.qgis2/processing/scripts/
y cárguelo en su modelo. Espero que esto funcione.