7 votos

¿Ejecutar el modelo QGIS sólo en las características seleccionadas?

¿Sería posible ejecutar un script en un modelo de QGIS para que sólo se ejecute en las características seleccionadas de una capa de entrada? No quiero usar la opción en las opciones de la caja de herramientas ya que tengo otros modelos que requieren ejecutarse sin selecciones.

Yo sólo un modelo para ejecutar en las características seleccionadas en la capa de entrada y devolver un error si no se selecciona ninguna característica. Estoy pensando en un script añadido inmediatamente después de la entrada en el modelo?

5voto

tobes Puntos 19

Añadir Guardar las funciones seleccionadas debería funcionar:

enter image description here

0 votos

Gracias, pero la adición de Guardar características seleccionadas no impide que mi modelo se ejecute si no hay características seleccionadas en la capa de entrada, lo que necesito que haga.

2voto

Mue Puntos 2469

Creo que la respuesta de @underdark es correcto en el sentido de que se podría utilizar el Guardar las funciones seleccionadas algoritmo. Sin embargo, como ha mencionado, si no se selecciona ninguna característica, guarda todas las características.

A partir de su pregunta anterior podríamos añadir otro if en el script para comprobar si se ha seleccionado alguna característica. Si es así, ejecuta el algoritmo mencionado, de lo contrario muestra un error:

##Example=name
##input_layer=vector
##output=output vector

from qgis.utils import iface
from qgis.gui import QgsMessageBar

layer = processing.getObject(input_layer)
# Add your names into the list within single quotes
allowed_layers = ['map', 'layerName2', 'layerName3']

if layer.name() in allowed_layers:
    if layer.selectedFeatures():        
        processing.runalg('qgis:saveselectedfeatures', layer, output)
    else:
        iface.messageBar().pushWidget(iface.messageBar().createMessage( u'No features selected' ), QgsMessageBar.WARNING, 3)
else:
    iface.messageBar().pushWidget(iface.messageBar().createMessage( u'Layer not allowed' ), QgsMessageBar.WARNING, 3)

0 votos

Gracias pero necesito que esto esté separado del otro modelo. He intentado quitar partes del script relacionadas con el nombre pero no se ejecuta. La verdad es que no conozco Python. Realmente quiero un modelo que se ejecute en cualquier capa pero sólo si se selecciona una característica y que devuelva un error si no se selecciona ninguna característica. ;)

1 votos

Lo tengo. Me salía un error de sangría pero ya lo he solucionado. Gracias por tu ayuda. ;)

0 votos

@webg - De nada, me alegro de que hayas conseguido que funcione :)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X