Pages: 1
- Sujet précédent - QGIS: Aide pour la réalisation formule de calcul entre 2 couches - Sujet suivant
#1 Sun 07 July 2019 08:54
- Tristan de Nerville
- Juste Inscrit !
- Date d'inscription: 3 Jul 2019
- Messages: 1
QGIS: Aide pour la réalisation formule de calcul entre 2 couches
Bonjour,
Je fais appel à votre aide pour un souci que je rencontre sur QGIS.
Je travaille sur un projet d'exploitation de données d'inventaires ornithologiques protocolisé, réalisé à l'échelle de 3 communes. Ces communes ont été découpées en mailles 1x1km.
Le jeu de données que je souhaite exploiter ici est constitué de deux couches :
- Une couche qui est la synthèse des inventaires effectués avec le protocole EPOC. Celui-ci consiste à un point d'échantillonnage fixe de 5 minutes pendant lequel l'expert note et localise l'ensemble des espèces d'oiseaux entendues autour de lui. Cela donne donc pour chacun de ces points EPOC un nuage de points qui représente les individus des différentes espèces entendues. La couche reprends l'ensemble de ces points pour les trois communes, sur la figure suivante chaque nuage de points d'une couleur représente les individus entendus pour un point EPOC :
http://www.tristandenervillephotographi … _epocs.png
La table attributaire se présente comme ceci :
http://www.tristandenervillephotographi … e_EPOC.png
On y retrouve notamment l'identifiant de chaque point EPOC dans la colonne "ID liste".
- Une seconde couche qui représente les 167 mailles 1x1km du territoire d'étude.
Pour évaluer mon jeu de données je souhaite connaître le nombre de point EPOC qui a été effectué sur chaque maille du territoire.
Pour cela, je cherche à écrire une formule qui me calcule automatiquement dans un champs le nombre de points EPOC pour chaque maille 1x1km.
Le problème est que je ne sais pas comment écrire cette formule et c'est pour cela que je sollicite votre aide !
Je suppose que tout va se jouer dans la calculatrice de champs en faisant interagir la colonne "ID liste" de ma première couche et l'unique colonne de la seconde couche, ma question est comment...
Si besoin davantage d'explications pour venir à bout de la question n'hésitez pas.
Merci d'avance pour votre aide sur ce petit problème !
Tristan Guillebot de Nerville
Hors ligne
#2 Sun 07 July 2019 10:27
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
Re: QGIS: Aide pour la réalisation formule de calcul entre 2 couches
Personnellement, je résoudrai ce problème en créant, dans ta couche point, une colonne ID avec juste des "1".
Dans ta couche de maille, fais un "Joindre les attributs par localisation"
- couche source : ta couche de maille
- joindre la couche : ta couche point
- Champ à résumer : la fameuse colonne ID avec des "1"
- Résumés à calculer : Prend "Somme".
Ca te créera un champ avec le nombre de points contenu dans chaque maille.
Il est vrai que s'il existait une formule SQL qui permettrait d'éviter toute ces étapes, je suis preneur
Hors ligne
#3 Sun 07 July 2019 18:23
- dave31
- Participant actif
- Date d'inscription: 17 Feb 2017
- Messages: 82
Re: QGIS: Aide pour la réalisation formule de calcul entre 2 couches
Bonjour,
avec l’extension refFunctions installée, l’expression suivante devrait convenir :
Code:
intersecting_geom_count('couche_point')
Hors ligne
#4 Sun 07 July 2019 19:08
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Aide pour la réalisation formule de calcul entre 2 couches
Il est vrai que s'il existait une formule SQL qui permettrait d'éviter toute ces étapes, je suis preneur smile
Disons qu'on a une couche "points" avec une colonne "id" et une couche "polygones" avec une colonne "id2" En SQL :
Code:
Select b.id2, Count(a.id) as count from 'points' as a, 'polygones' as b where contains(b.geometry, a.geometry) group by id2
p.s. ajustez les guillemets pour les noms de couches et de champs; je n'ai pas QGIS devant moi.
Dernière modification par carteq (Mon 08 July 2019 14:33)
Hors ligne
#5 Mon 08 July 2019 18:43
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
Re: QGIS: Aide pour la réalisation formule de calcul entre 2 couches
Carteq, je viens de tester ta solution en SQL.
Création d'une couche polygone "polygones" et d'une couche point "points"
Création d'un champ "id" dans "points", et "id2" dans "polygone", je remplis les 2 avec $id
Je vais sur la calculatrice de champ de "polygones", je sélectionne Créer une couche virtuelle, et j'applique la formule suivante
Code:
Select b.id2, Count(a.id) as count from 'points' as a, 'polygones' as b where contains(b.geometry, a.geometry) group by id2
Cela me renvoie l'erreur, que je t'affiche ici :
http://zupimages.net/viewer.php?id=19/28/iir4.jpg
Qu'ai-je loupé ?
Hors ligne
#6 Mon 08 July 2019 20:23
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Aide pour la réalisation formule de calcul entre 2 couches
La requête SQL fonctionne dans le DB Manager et dans Ajouter une couche virtuelle
La calculatrice de champs est basée sur des requêtes de type Update et non Select. Il faudrait adapter. Le Update et le Set sont implicites.
Hors ligne
#7 Thu 11 July 2019 11:04
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3927
Re: QGIS: Aide pour la réalisation formule de calcul entre 2 couches
Bonjour,
Pour évaluer mon jeu de données je souhaite connaître le nombre de point EPOC qui a été effectué sur chaque maille du territoire.
Pour cela, je cherche à écrire une formule qui me calcule automatiquement dans un champs le nombre de points EPOC pour chaque maille 1x1km.
Les fonctions aggregate et count_distinct devraient aider à cela (regardez les exemples associés à ces fonctions dans le panneau Aide de QGIS et la doc). Dans un nouveau champ de la table maille, essayez:
Code:
aggregate( 'nom_couche_epoc', 'count_distinct', "ID liste", intersects( $geometry, geometry(@parent) ) )
Hors ligne
Pages: 1
- Sujet précédent - QGIS: Aide pour la réalisation formule de calcul entre 2 couches - Sujet suivant