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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GeoRezo est partenaire institutionnel de la Conférence Francophone ESRI

image sig2019

16 et 17 octobre 2019 aux Docks de Paris

#1 Sun 07 July 2019 08:54

Tristan de Nerville
Membre
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
Membre
Date d'inscription: 17 Nov 2018
Messages: 201

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 smile

Hors ligne

 

#3 Sun 07 July 2019 18:23

dave31
Membre
Date d'inscription: 17 Feb 2017
Messages: 46

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
Membre
Lieu: Côte-Nord, Québec
Date d'inscription: 8 Mar 2008
Messages: 619

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)


Vincent Fréchette
Responsable de la géomatique
Boisaco inc.

Hors ligne

 

#5 Mon 08 July 2019 18:43

preliator
Membre
Date d'inscription: 17 Nov 2018
Messages: 201

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
Membre
Lieu: Côte-Nord, Québec
Date d'inscription: 8 Mar 2008
Messages: 619

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.


Vincent Fréchette
Responsable de la géomatique
Boisaco inc.

Hors ligne

 

#7 Thu 11 July 2019 11:04

SANTANNA
Membre
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 2373

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

 

Pied de page des forums

Powered by FluxBB

Partagez  |