3 votos

Ejecutar la acción de la capa QGIS en todas las funciones seleccionadas

QGIS es una herramienta increíble con muchas características útiles, por lo que es fácil pasar por alto algunas de ellas.

Solo para asegurarnos de que no esté implementado en QGIS 2.18:

¿Hay alguna opción de tabla de atributos para ejecutar una acción de capa en todas las entidades seleccionadas actualmente?

Estoy usando una secuencia de comandos de Procesamiento como solución alternativa, pero sería bueno tener esta función directamente implementada en la Tabla de Atributos.

 ##MyTools=group
##VectorLayer=vector
##action_name=string
from qgis.core import *
import qgis.utils
from qgis.gui import *

layer = processing.getObject(VectorLayer)
actionManager = layer.actions()
actions = actionManager.listActions()
if len(actions) > 0:
    cont = False
    i = -1
    for a in actions:
        i = i+1
        if a.name() == action_name:
            cont = True
            break

    if cont:
        selFeatures = layer.selectedFeatures()
        if len(selFeatures) > 0:
            for feature in selFeatures:
                actionManager.doActionFeature(0,feature)
        else:
            qgis.utils.iface.messageBar().pushMessage("Processing Error"," No features selected.",level= QgsMessageBar.WARNING,duration=5)
    else:
        qgis.utils.iface.messageBar().pushMessage("Processing Error"," Wrong layer action defined.",level= QgsMessageBar.WARNING,duration=5)
else:
    qgis.utils.iface.messageBar().pushMessage("Processing Error"," No layer action found.",level= QgsMessageBar.WARNING,duration=5)
 

2voto

Mue Puntos 2469

Usted puede crear y ejecutar diversas acciones a partir de la Tabla de atributos de cada entidad. Si vas a Layer Properties > Actions y añadir una nueva acción, hay una opción que permite ejecutar la acción a partir de la tabla de atributos:

Create action

Una vez que haya creado una acción, puede elegir mostrar como un cuadro combinado:

Show in attribute table

Ahora cuando abra la tabla de atributos, se puede ver un nuevo campo que contiene las acciones:

Attribute table

Si usted quiere que su acción se debe ejecutar en múltiples características seleccionadas, usted tendrá que incluir esto en su acción (si es posible). En mi ejemplo, yo estoy usando Python para imprimir los valores de la primera de campo para todas las características seleccionadas. Así que si puedo seleccionar varios elementos y, a continuación, haga clic en cualquier acción de cuadro combinado, se imprimirá los valores de las características seleccionadas:

Selected features action


Sin embargo, no parece ser un Run layer action cuando se haga clic en un atributo pero, por desgracia, me parece que no puede encontrar mucha información acerca de esto. He publicado esto como una nueva pregunta como también tengo curiosidad:

¿Qué es esto de la "carrera de la capa de la acción" y cómo usarlo?

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