ID univoco per gruppi consecutivi↵
L'esempio è preso da qui:
stackexchange: https://gis.stackexchange.com/questions/418137/adding-unique-id-for-consecutive-groups-using-field-calculator-in-qgis
ovvero, come creare un campo group1 che contenga ID univoco per gruppi consecutivi (vedi immagine e numeri in bianco)

with_variable('cucu',
aggregate(
layer:=@layer_name,
aggregate:='array_agg',
expression:= (array_find(array_agg("ID", "PortCluster_ID"),"ID"))-"ID"),
with_variable('cucu2',
(array_find(array_agg("ID", "PortCluster_ID"),"ID"))-"ID",
array_find(array_distinct(@cucu),@cucu2)+1))
risultato:

In linguaggio umano:
- Primo passo, creare un campo
temp1e popolarlo conarray_agg("ID", "PortCluster_ID"), ovvero, aggrego tutti gliIDragguppandoli perPortCluster_ID(per poterlo visualizzare devo usare anche la funzionearray_to_string, quindi:array_to_string(array_agg("ID", "PortCluster_ID"))); - secondo passo, creo un campo
temp2e lo popolo con l'indice che possiede il valore del campoIDdentro l'array calcolato nel campotemp1usando l'espressionearray_find(array_agg("ID", "PortCluster_ID"),"ID")); - terzo passo, faccio la differenza tra il campo
temp2e il campoID; - quarto passo, creo un array del campo
temp3usando la funzioneaggregate(variabilecucu); - quinto passo, creo un campo
temp4e lo popolo con l'indice che i valori del campotemp3hanno nell'array creato nel quarto passo; - infine, mettendo tutto assieme viene fuori l'espressione utilizzata che in un unico passaggio popola il campo
group1.
prova tu↵
Funzioni e variabili utilizzate:
