Existe uma maneira de selecionar um atributo de uma camada de polígono e inserir o valor no campo virtual de uma camada de pontos usando "dentro" na calculadora de campos?
CASE
WHEN within($geometry, geometry_polygon) THEN attribute_polygon
END
qgis
field-calculator
layers
within
Mar Lunar
fonte
fonte
Respostas:
Junções espaciais estão disponíveis na calculadora de campo após a instalação do plug-in refFunctions.
fonte
Fora da caixa, a calculadora de campo não suporta junções espaciais nas camadas de recurso. Mas, se você der uma olhada na postagem de NathanW no editor de funções para expressões qgis, poderá concluir que podemos criar um script para nossa própria interação de dados.
O script a seguir permitirá que você expresse o que procura. Ele funciona iterando todos os recursos da camada de polígono e, se houver uma junção espacial, faça referência aos dados tabulares da coluna especificada:
Exemplo de camada de polígono
Abaixo está um exemplo de uma camada de polígono que você pode ter. Também criei uma camada de pontos correspondente que você verá na imagem final.
Uso da expressão
Observe que, se você quiser usar uma coluna separada, altere o segundo argumento para corresponder ao nome da coluna no conjunto de dados do polígono. Por exemplo, você poderia usar a coluna 'AreaNumber', mas precisaria corresponder ao tipo da coluna nas configurações da calculadora de campo.
Resultado
Você pode ver que o valor padrão da coluna foi aplicado onde não há junção espacial e os outros corresponderam aos dados corretos. Observe que o script que eu forneci entrará apenas na primeira partida. Você precisaria criar alguma outra lógica comercial se seus polígonos estivessem sobrepostos.
fonte
Isso pode ser feito em Calculator campo com a função
aggregate()
. Na camada de ponto, crie um novo campo com a expressão da calculadora de campo como esta:Onde o
layer
nome da camada de polígono é escrito como string,aggreagate
é a função agregada (pode ser usada também como soma etc.), oexpression
campo a partir dos valores será obtido, aconcatenator
junção da cadeia de caracteres (deve ser definida, mesmo nesse caso) e afilter
filtragem de recursos com base na expressão (neste caso, intercepta a geometria da camada com a geometria da camada pai).Para mais informações, consulte Agregar a documentação do QGIS .
Para atualizações automáticas, podem ser usados campos virtuais ou você pode definir a expressão como Valor padrão nas configurações de Formulário de atributos em Propriedades da camada ( documentação de configuração de formulário de atributo ).
fonte
geometry(@parent)
) são suportadas apenas a partir do QGIS 3. Caso alguém que esteja lendo isso ainda esteja usando 2,18 ...