Adicionando valor de id incremental a recursos com determinado valor de atributo

Sep 07 2020

Estou usando o QGIS 3.12. Eu tenho uma camada de árvores e um campo virtual 'número da árvore' que conta todas as árvores que adicionei à camada ( $id). Desejo definir que se a altura de uma árvore for maior que 3 (no campo 'altura'), ela não será contada no campo 'número da árvore'. Isso pode ser feito?

Respostas

3 MrXsquared Sep 07 2020 at 01:54

Use if("height" > 3,NULL,$id)como expressão para seu campo virtual.

3 Taras Sep 07 2020 at 12:07

Apesar de uma sugestão de @MrXsquared, acho que essa tarefa deve ser abordada de uma maneira um pouco diferente.

Para obter uma cadeia de id contínua, tente a seguinte expressão na Calculadora de campo

if("height">3, array_find(array_agg($id, filter:="height">3), $id), NULL)

Resultando em

Se o "id"s tiver que começar com 1, use a seguinte expressão

if("height">3, array_find(array_agg($id, filter:="height">3), $id) + 1, NULL)