18 votos

Selección de características mediante expresiones con PyQGIS

¿Cómo puedo seleccionar características con PyQGIS utilizando una expresión?

Intenté utilizar un QgsExpression pero el método select no lo acepta:

exp = QgsExpression("'ogc_fid' = 482")
cLayer = canvas.currentLayer()
cLayer.select(exp)

¿Es posible y, en caso afirmativo, cómo lo hago?

38voto

Elliott Maynard Puntos 11

En la actualidad : QGIS 3.x

  1. Obtener la referencia de la capa:

    layer = iface.activeLayer()

  2. Seleccionar características por expresión:

    layer.selectByExpression("\"ogc_fid\"=482")


Antes de QGIS 2.16

Sigue estos pasos:

  1. Obtener la referencia de la capa:

    cLayer = iface.mapCanvas().currentLayer()`

  2. Obtener un featureIterator a partir de una expresión:

    expr = QgsExpression( "\"ogc_fid\"=482" )

    it = cLayer.getFeatures( QgsFeatureRequest( expr ) )

  3. Construir una lista de Ids de características a partir del resultado obtenido en 2:

    ids = [i.id() for i in it]`

  4. Seleccione las características con los identificadores obtenidos en 3:

    cLayer.setSelectedFeatures( ids )


NOTA: Si desea establecer una expresión con un cadena es necesario añadir comillas a dicho valor, de esta manera:

expr = QgsExpression( " \"name\" = 'my string' " )

Si tu valor de cadena proviene de una variable, puedes hacer esto:

myVariable = 'my string'
expr = QgsExpression( " \"name\" = '{}' ".format(myVariable) )

7voto

vidhi Puntos 11

Esto me ha funcionado desde la consola Python de QGIS

layer = qgis.utils.iface.activeLayer()
layer.selectByExpression(" \"ogc_fid\" = '{}' ".format(482))

3voto

Isbister Puntos 81

Sólo tienes que probarlo en la interfaz GUI: "Seleccionar por expresión". Si funciona, puedes pegarlo en tu código Python rodeado de comillas dobles "" .

exp = QgsExpression("ogc_fid=482")

Si compara con una cadena, puede añadir comillas simples '' .

exp = QgsExpression("ogc_fid='482'")

Es el mismo principio en Python, puede marcar la diferencia entre comillas dobles y simples. Más información se puede encontrar aquí: Diferencia entre comillas ("simples" y "dobles") en QGIS

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