#1 Fri 15 September 2017 16:51
- Juliettam04
- Participant occasionnel
- Date d'inscription: 10 Nov 2014
- Messages: 11
QGIS: Requête avec obtention d'une somme de surface
Bonjour,
Je pense que ma question doit avoir une réponse très rapide mais je ne trouve pas encore la solution...
J'ai un fichier shape nommé "ZONE_URBA_maj" qui contient plusieurs entités ayant comme LIBELLE 'A', plusieurs entités ayant comme LIBELLE 'U', etc...
Chaque entité a une surface associée, j'ai donc une colonne LIBELLE et une colonne Surf_ha
Je vais devoir modifier les surfaces des entités régulièrement pour atteindre des seuils demandés et je voudrais donc obtenir à chaque modification la somme des surface par LIBELLE (la somme de toutes les entités ayant comme LIBELLE 'A', toutes les entités ayant comme LIBELLE 'U', etc)
Il existe l'outil statistiques mais je ne trouve pas la bonne expression à utiliser pour avoir la somme de ma colonne Surf_ha groupée par LIBELLE... ou je souhaiterais au moins obtenir la somme des surfaces uniquement pour les LIBELLE 'A', j'en demande peut être un peu trop en voulant obtenir les résultats de tous les LIBELLE en même temps.
Quelqu'un qui s'y connait en SQL pourrait peut être me donner la solution :
- soit en passant par l'outil statistique (mais je pense n'obtenir que la somme des surfaces d'un seul LIBELLE à la fois)
J'ai essayé cette requête SQL mais elle semble incorrecte : Select sum(surf_ha) where "LIBELLE"='A'
- soit en passant par je ne sais quel outil pour pouvoir afficher directement le résultats des sommes de surfaces pour tous les LIBELLES
en utilisant une requête comme celle ci : Select "LIBELLE", sum (Surf_ha) from ZONE_URBA_maj group by "LIBELLE"
Merci d'avance pour vos conseils
Hors ligne
#2 Mon 18 September 2017 09:43
- Juliettam04
- Participant occasionnel
- Date d'inscription: 10 Nov 2014
- Messages: 11
Re: QGIS: Requête avec obtention d'une somme de surface
Plusieurs solutions qui fonctionnent trouvées par tijan sur le forumSIG :
Plusieurs pistes :
- une instruction SQL est effectivement adaptée, et ta dernière rédaction est correcte (tu pourrais néanmoins utiliser un alias pour donner un nom au champ somme des surface : sum(Surf_ha) as somme_surface). Tes données étant dans une couche de type shape, il faudra lancer cette instruction avec l'outil "virtual layers" qui permet d’exécuter du SQL pour n'importe quelle source de données, y compris du shp. Cette couche sera ensuite dynamiquement liée à la couche d'origine (c'est à dire que les mises à jour seront directement répercutées). Cette couche est 'virtuelle' comme son nom l'indique : elle n'est pas enregistrée en tant que fichier. Elle sera par contre enregistrée en tant que couche dans le projet si tu l'enregistre.
- Tu pourrais faire la même chose en créant une base de données de type "Spatialite" (simple et pertinent pour un usage monoposte), ou Postgres (plus compliqué et pertinent pour des usages plus poussés).
- Enfin, tu peux utiliser l'extension GoupStats, mais alors le calcul ne sera pas dynamique.
- dernier conseil : ta colonne "surf_ha" n'est elle même pas dynamiquement liée au dessin des objets : il faut donc que tu mette à jour à chaque fois avec la fonction $area. Pour éviter d'avoir à y penser, tu peux utiliser l'extension Autofields qui créer des champs automatiques...
Bonne suite.
Jean
Hors ligne
#3 Mon 18 September 2017 09:44
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS: Requête avec obtention d'une somme de surface
Bonjour,
- soit en passant par je ne sais quel outil pour pouvoir afficher directement le résultats des sommes de surfaces pour tous les LIBELLES
en utilisant une requête comme celle ci : Select "LIBELLE", sum (Surf_ha) from ZONE_URBA_maj group by "LIBELLE"
S'il s'agit d'une version récente de QGIS (>=2.14), regardez du côté des couches virtuelles
EDIT: grillé par Juliettam :'(. Sa remarque sur le caractère statique du calcul de surface me fait penser qu'il vaudrait mieux directement calculer la surface dans la requête SQL (genre sum(st_area(geometry)) ) plutôt que d'utiliser le champ Surf_ha.
EDIT2: faut que je me réveille. Je viens de réaliser que Juliettam n'est autre que l'auteur qui se répondait... Elle va être longue cette journée...
Dernière modification par SANTANNA (Mon 18 September 2017 10:05)
Hors ligne
#4 Mon 18 September 2017 09:53
- Juliettam04
- Participant occasionnel
- Date d'inscription: 10 Nov 2014
- Messages: 11
Re: QGIS: Requête avec obtention d'une somme de surface
Oui en effet c'est bien par là qu'il fallait passer, merci !
Hors ligne