Códigos de ações para qgis

Códigos de ações para qgis

Vou compartilhar dois códigos muito úteis usados em nosso projeto. Se você viu os outros posts, este é mais uma dica de como administrar pelo qgis layers com grande número de dados.

O primeiro código adiciona uma imagem raster com transparência

lyr = qgis.utils. iface.activeLayer()

rlayer = qgis.utils.iface.addRasterLayer(‘//seu endereço/[% “sua coluna” %].jpg’)

 qgis.utils.iface.activeLayer()

rlayer.renderer(). setOpacity(0.5)

qgis.utils.iface.setActiveLayer(lyr)

O segundo código faz uma seleção com a  introdução de uma variável. Tome cuidado com a identação. Código muito útil quando os layers possuem uma grande quantidade  de atributos. Não achei nada pronto, então elaborei este:

PARA O QT4 – QGIS 18

from qgis.core import *
from qgis.gui import *

query = ( ” \”sua coluna\” = ‘{}’ “.format(texto))
layer =qgis.utils.iface.activeLayer()
selection = layer.getFeatures(QgsFeatureRequest().setFilterExpression(query))
layer.setSelectedFeatures([k.id() for k in selection])
qgis.utils.iface.actionZoomToSelected().trigger()

E O MESMO CÓDIGO PARA O QT5 – QGIS 3

from PyQt5.QtCore import *

from PyQt5.QtGui import *

from PyQt5.QtWidgets import *

texto, ok = QInputDialog.getText(None, “Pesquisa”, “Introduza seu SQL: “)

if ok:

query = ( ” \”sua coluna\” = ‘{}’ “.format(texto) )

layer =qgis.utils.iface.activeLayer()

request = QgsFeatureRequest(QgsExpression(query)).setFlags(QgsFeatureRequest.NoGeometry).setSubsetOfAttributes([])

selection = layer.getFeatures(request)

layer.selectByIds([s.id() for s in selection])

qgis.utils.iface.actionZoomToSelected().trigger()

Código inserido na ação
Para chamar a ação clique em ações e depois dentro de qualquer poligono pertecente ao layer o qual você adicionou a ação.
A ação chama o poligono e dá o zoom.

Leave a Comment