Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Fri 06 November 2020 10:17
- aheurion
- Participant actif
- Lieu: NANTES
- Date d'inscription: 8 Oct 2020
- Messages: 143
QGIS 3.10: Performances calculs champs virtuels
Bonjour,
J'ai entamé un projet assez conséquent et ai utilisé pas mal les champs virtuels pour récupérer des informations entre les couches avec des aggregates.
Cependant, avec le nombre de données qui commence à grimper, je me rends compte que ces calculs prennent de plus en plus de temps et cela risque de devenir problématique dans le futur (je n'ai incorporé encore que 1% maximum des données au final).
Je suis passé sous PostgreSQL/PostGIS pour essayer de pallier le problème mais je ne vois pas vraiment d'amélioration...
Quelqu'un aurait-il une idée ? (j'aimerais autant que possible garder l'esprit dynamique de ces champs virtuels car ils me permettent de mettre à jour les données nécessaires lorsque l'on fait un changement sur un objet lié)
Peut-être qu'une optimisation de l'expression suffirait, mais j'en doute
Hors ligne
#2 Mon 09 November 2020 15:47
- sylvainSIG
- Participant assidu
- Lieu: Moissac
- Date d'inscription: 29 Nov 2018
- Messages: 265
Re: QGIS 3.10: Performances calculs champs virtuels
Salut,
Est ce que ta ou tes couches ont des index spatiaux ? En général, ça réduit la durée des requêtes.
Après ce que tu appelles aggregates, ce sont les aggregats classiques (genre count, sum, avg) et qui ne posent pas spécialement de problème, ou les plus évolués (genre string_agg), qui pourrissent les bandes passantes ?
Bien à toi
Sylvain
Dernière modification par sylvainSIG (Mon 09 November 2020 15:48)
Hors ligne
#3 Mon 09 November 2020 16:30
- aheurion
- Participant actif
- Lieu: NANTES
- Date d'inscription: 8 Oct 2020
- Messages: 143
Re: QGIS 3.10: Performances calculs champs virtuels
ça réduit la durée des requêtes des champs virtuels aussi ? Je vais regarder ça, merci !
Sinon en ce qui concerne les aggregates ce sont des concatenate et des array_agg, je suis en train d'essayer de trouver des expressions plus simples, mais c'est galère, j'ai l'impression qu'un champ virtuel ne peut pas dépendre d'un autre champ virtuel (l'idéal pour moi c'est qu'un premier champ récupère les ids de mes lignes dans mes points, puis qu'un second champ se serve de ces ids récupérés pour faire un aggregate plus simple).
Pour info, j'ai souvent plusieurs lignes qui arrivent à un même point, et je souhaite les trier par leur azimut dans mes champs virtuels. (le plus galère c'est quand 2 lignes sont superposées et parfaitement parallèles, et donc ayant le même azimut, ça m'oblige à avoir une expression à rallonge...).
Merci pour ta réponse en tous cas
PS : j'ai mis en PJ l'expression d'un de mes champs virtuels qui récupère l'altitude de la ligne arrivant au point
PS2 : le xml c'est un style que j'ai créé pour notepad++ pour styliser comme sur QGIS (Langage>Langage utilisateur>définir votre langage>importer)
Dernière modification par aheurion (Mon 09 November 2020 16:32)
Hors ligne
#4 Mon 09 November 2020 17:00
- sylvainSIG
- Participant assidu
- Lieu: Moissac
- Date d'inscription: 29 Nov 2018
- Messages: 265
Re: QGIS 3.10: Performances calculs champs virtuels
Vu le nombre de sous-requêtes, tu m'étonnes que ça galère... Pour info, chez Alwaysdata, si tu n'as pas un serveur dédié pour ce genre de requête, il te bloque à deux requêtes jusqu'à temps que tu règles le problème.
Hors ligne
#5 Mon 09 November 2020 17:17
- aheurion
- Participant actif
- Lieu: NANTES
- Date d'inscription: 8 Oct 2020
- Messages: 143
Re: QGIS 3.10: Performances calculs champs virtuels
Ouais ouais mais je galère à les réduire
Si je pouvais passer par un champ virtuel intermédiaire qui recueillerait les ids, et que seulement ensuite les autres champs virtuels soient calculés, ça serait super... mais je ne vois pas comment faire
Hors ligne