Use a calculadora de campo para verificar o cruzamento
Objetivo final
Pretendo recuperar atributos de camadas usando a calculadora de campo onde eles se cruzam com uma geometria.
Passo atual
Verificando se a corrente se $geometry
cruza com a camada de interesse.
O que eu tentei
intersects($geometry,collect_geometries('Layer'))
- e variações de map_get
. Como acabei de saber que intersects
é preciso entregar geometrias conhecidas, embora queira verificar SE há uma geometria na camada, na verdade estou perplexo. Simplesmente não sei como verificar cruzamentos usando a calculadora de campo.
Se isso não for possível usando a calculadora de campo, talvez Python?
Respostas
Vamos supor que você tenha uma camada com polígonos que contém um atributo "nome": na imagem abaixo, este campo de nome tem os valores A, B, C, D, E e F (os polígonos são rotulados).
Além disso, temos uma camada de linhas e queremos obter os nomes dos polígonos que a linha cruza. Desde o QGIS 3.16 (veja o changelog visual ; para versões anteriores do QGIS talvez o RefFunctions Plugin referenciado lá possa ajudar), existem novas expressões de sobreposição. Podemos usar um deles para rotular a linha com os nomes dos polígonos que ela cruza. Da mesma forma, a expressão pode ser usada na calculadora de campo para gerar novos campos (mesmo campos virtuais para cálculo dinâmico):
array_to_string (
overlay_intersects (
'Polygons',
name
)
)
