Skip to content

Instantly share code, notes, and snippets.

@kylefelipe
Created January 26, 2023 21:06
Show Gist options
  • Save kylefelipe/0db376bf5aa60a4b87da79d2461d6733 to your computer and use it in GitHub Desktop.
Save kylefelipe/0db376bf5aa60a4b87da79d2461d6733 to your computer and use it in GitHub Desktop.
Pega Nome da camada dinamicamente -- QGIS
with_variable('lyr_name', -- variável que vai pegar o nome do estado
aggregate(
layer:='lim_unidade_federacao_a', -- nome da camda do estado
aggregate:='min',
expression:="sigla", -- campo que quer usar para gerar o nome da camada
filter:=contains($geometry, geometry(@parent))
),
with_variable('lyrmaps', -- vai receber o nome de todas as camadas no projeto
array_foreach(@layers, layer_property(@element, 'name')), --pega o nome de todas as camadas do projeto em uma lista
with_variable('lyrpos', array_find(@lyrmaps, upper(@lyr_name)), -- lirpos procura o nome da camada na lista e retorna a posicao, se nao encontrar retorna -1
if(@lyrpos <> -1, -- se for diferente de -1 é a posição da camada na lista de camadas passa a camada para o raster value, se for 1 o valor é null,
raster_value(@lyrmaps[@lyrpos],1, $geometry),
Null) -- aqui pode passar a propria coluna, assim não perde um valor existente.
)
)
)

Modo de uso

Estados brasileiros contendo na tabela de atributos a sigla do estado

As camadas rasters precisam ter a sigla do estado como nome (mas com um pouquinho de conhecimento consegue modificar para outros padrões)

o valor núll na linha 13 pode ser trocado pelo "<nome_do_campo_atual>" assim, se rodar em um campo que já possui valor anterior, não perde o dado

é preciso trocar o nome da camada do estado na linha 03 para bater com o nome que estiver no projeto

EVITE CARACTERES ESPECIAIS EM NOME DE CAMPOS E CAMADAS PLEASE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment