Use a calculadora de campo para verificar o cruzamento

Dec 03 2020

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 $geometrycruza 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

4 Babel Dec 03 2020 at 23:03

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
    ) 
)