Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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: 3799

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

 

Pied de page des forums

Powered by FluxBB