5 votos

QGIS 2.2 - ¿posible hacer uniones de la lista de acciones?

Tengo un conjunto de capas que deben unirse (Propiedades de Capa > Une) a una capa específica. La razón de esto es que voy a estar actualizando y añadiendo nuevas capas en mi proyecto y me gustaría una sola Acción de comando para la capa específica para que automáticamente las capas seleccionadas unirse con él. Quiero evitar tener que correr de unirse a/algoritmos de fusión por completo.

Es fácilmente alcanzable?

Después de pasar tiempo en la búsqueda de cómo crear Acciones, la mayoría de lo que he encontrado describir el mismo comando que es cómo abrir un navegador de internet para buscar lo que está en el atributo especificado. Por desgracia, las acciones por defecto no parecen contener algo similar a lo que estoy buscando.

5voto

Michael Puntos 11

La combinación de la respuesta de esta pregunta anterior con el QGIS API de resultados en el código de python que debe hacer lo que usted pide.

#attach a QgsMapLayerAction to all layers:
joinLayerAction = qgis.gui.QgsMapLayerAction( "Join to layer", iface );
#add the action to the QGIS gui, so that it appears as an action for the layer
qgis.gui.QgsMapLayerActionRegistry.instance().addMapLayerAction(joinLayerAction)

def do_join(layer):
    #layer is a reference to the layer the actions was triggered on

    joinInfo = QgsVectorJoinInfo()
    joinInfo.joinLayerId = 'layer_id'        # TODO: insert correct id here
    joinInfo.joinFieldName = 'primary_key'   # TODO: insert correct key here
    joinInfo.targetFieldName = 'foreign_key' # TODO: insert correct key here
    joinInfo.memoryCache = True              # Tune to your needs

    layer.addJoin(joinInfo)

#connect to action trigger
joinLayerAction.triggeredForLayer.connect(do_join)

Simplemente ejecutar este código en la consola de python para la prueba. Después de que usted puede implementar como un plugin de python o en un proyecto de python macro.

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