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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#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 smile

Hors ligne

 

#3 Sun 07 July 2019 18:23

dave31
Participant actif
Date d'inscription: 17 Feb 2017
Messages: 79

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: 3789

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