Message posté par : aheurion
----------------------------------------
Bonjour,
Je suis face à un souci que je n'arrive pas à résoudre avec les outils à disposition
:
Je dispose d'une couche de polyligne parent, liée à une couche csv non géométrique
enfant. Cette couche CSV contient un historique des entités de la couche parent (parent A
<=> enfant A1 avec date d1 + enfant A2 avec date d2 + etc..).
Je souhaite créer un champ dans ma couche parent contenant l'intervalle moyen entre
deux dates pour chaque entité (ex : 01/01/2018 ; 01/01/2019 ; 01/01/2021 => intervalle
moyen = 1.5 an).
Je suis parti sur l'idée suivante :
1) stocker les dates dans un tableau A (aggregate avec array_agg) et trier par dates
croissantes
2) créer un tableau B à partir de A contenant les dates consécutives sauf la première
3) créer un tableau C à partir de A contenant les dates consécutives sauf la dernière
4) soustraire B à C
5) faire la moyenne de la soustraction
Voici l'expression que j'utilise :
with_variable(
'tableauA',
array_sort(
aggregate(
'id_de_ma_couche_enfant',
'array_agg',
"date",
"FOREIGN_KEY"=attribute(@parent,'PRIMARY_KEY')
)
),
mean(
age(
array_slice(@tableauA,1,array_length(@tableau0)), /* => le tableau B*/
array_slice(@tableauA,0,array_length(@tableau0)-1) /* => le tableau C*/
)
)
)
Mais QGIS me dit que l'expression est invalide (impossible de calculer l'aggrégat
pour...)
Le champ que je veux calculer est un double, je me trompe peut-être là-dessus.
Ou bien est-ce lié à la soustraction entre les deux tableaux B et C ?
Merci d'avance pour vos retours !
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=339543#p339543
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net