# Run QGIS Model on selected features only?

Would it be possible to run a script in a QGIS model so that it only runs on selected features from an input layer? I don't want to use the option in the toolbox options as I have other models that require to run without selections.

I just a model to only run on selected features in the input layer and return an error if no feature is selected. I'm thinking a script added immediately after the input in the model?

I think the answer by @underdark ♦ is correct in that you could use the Save selected features algorithm. However, as you mentioned, if no features are selected then it saves all features.

Building on from your previous question, we could add another if statement to the script to check if any features are selected. If yes then run the mentioned algorithm, otherwise show an error:

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

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

layer = processing.getObject(input_layer)
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)

• Thank you but I need this to be separate from the other model. I've tried taking out parts of the script relating to the name but it won't run. I don't really know Python. I really want a model to run on any layer but only if a feature is selected and to return an error if no feature is selected. ;) – webg Jun 14 '17 at 17:12
• Got it. I was getting an indent error but I've managed to sort it. Thanks for your help. ;) – webg Jun 14 '17 at 18:27
• @webg - Most welcome, glad you got it to work :) – Joseph Jun 15 '17 at 9:14
• After upgrading to 2.18.13 this script no longer seems to work. I get this.. Parameters: INPUT_LAYER "=C:\Users\Will\AppData\Local\Temp\processing8c9f09fbe2fd45f19ac2bbc41972cdc8\53509f25301645bcb6190158cdfe229c\output.shp Failed Error executing algorithm Save selected features There are no selected features in the input layer." If I remove the script the model works. – webg Oct 13 '17 at 14:34
• @webg - Which QGIS version did you use beforehand? I would suggest asking a new question and include a screenshot of your model and the script you use (I just tested a simple model with this script on 2.18.13 and it works fine). – Joseph Oct 13 '17 at 14:44

Adding Save selected features should do the trick:

• Thanks but adding Save Selected Features doesn't prevent my model from running if there are no selected features in the input layer which I need it to do. – webg Jun 13 '17 at 6:12