quinta-feira, 17 de dezembro de 2020

Criação de ações personalizadas com Python no Qgis

 A partir de uma leitura feita em https://courses.spatialthoughts.com/pyqgis-in-a-day.html  eu criei uma versão do exemplo para que quando o usuário executar uma action sobre um ponto de foco o Qgis selecione todos os pontos do mesmo dia.


As ações no QGIS fornecem uma maneira rápida e fácil de acionar o comportamento personalizado em resposta à ação de um usuário - como clicar em um recurso na tela ou um valor de atributo na tabela de atributos.

As ações são definidas no nível da camada e fornecem uma maneira fácil de adicionar comportamento personalizado ao QGIS sem ter que escrever plug-ins. As ações são integradas na GUI do QGIS e permitem que você execute o código PyQGIS em camadas vetoriais.

Vamos definir uma ação para a camada de focos de modo que quando um usuário clicar em um ponto, todos do mesmo dia serão selecionados. Para isto a camada de dados deve possuir um atributo que será utilizado para seleção. Neste exemplo foi criado um campo virtual chamado data que não possui o horário da passagem do satélite que detectou o foco.

Clique com o botão direito na camada, entre em propriedades e alterne para a guia Ações. 

Clique em Adicionar um novo botão de ação. 

Selecione Python como o tipo. 

Nomeie e defina uma descrição para a ação como "Selecionar mesma data". Esta ação deve ser usada para selecionar recursos na tela do mapa, portanto, marque Canvas como o Escopo da ação. Insira o seguinte trecho de código no Texto da Ação e clique em OK.

layer = QgsProject.instance().mapLayer('[% @layer_id %]')

layer.selectByExpression('"data"=\'[% data %]\'')