#1 Thu 08 July 2021 18:08
- hugman
- Juste Inscrit !
- Date d'inscription: 8 Jul 2021
- Messages: 2
QGIS 3.20: Jointure spatiale
Bonjour à tous,
J'aimerais comptabiliser sur QGIS 3.20 le nombre de bâtiments compris dans chacune des parcelles d'une zone. Ce nombre devra être ensuite se retrouver dans un champ de la couche Parcelles. Exemple : dans le champ "Bâti" de ma couche Parcelles on comptabilise 5 bâtiments.
Car j'ai essayé de faire une jointure spatiale entre ma couche Parcelles et Bâti, mais à chaque fois c'est dans l'optique d'attribuer un champ de Bâti à Parcelles selon leur localisation.
Je me demande donc s'il n'y a pas une commande dans la calculatrice de champ (voire en python?) qui me permettrait d'effectuer ce travail qui somme toute n'est pas si compliqué en théorie, mais nécessite un algorithme pour traiter autant d'entités.
N'hésitez pas à me demander des précisions ou des clarifications sur cette opération. Merci par avance!
Hugo.
Hors ligne
#2 Thu 08 July 2021 19:11
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3927
Re: QGIS 3.20: Jointure spatiale
Bonjour,
Un algorithme dans ce genre peut-être https://docs.qgis.org/3.16/fr/docs/user … n-summary?
Sinon, sans créer une nouvelle couche, vous pouvez regarder du côté de la fonction aggregate ou encore overlay_xxx (voir l'exemple 5pour inspiration). xxx dépend du niveau de superposition que vous voulez (contient vs intersecte notamment).
Hors ligne
#3 Fri 09 July 2021 09:54
- aheurion
- Participant actif
- Lieu: NANTES
- Date d'inscription: 8 Oct 2020
- Messages: 143
Re: QGIS 3.20: Jointure spatiale
Bonjour hugman,
La fonction "Joindre les attributs par localisation (résumé)" offre la possibilité d'utiliser "compte" (ou "count" en anglais). En cochant un champ de la couche de Bâti (au hasard) et en cochant le résumé à calculer "compte" normalement ça va te faire une couche parcelles avec un champ en plus (nommé d'après celui choisi dans la couche bâti, mais il suffira de le renommer) qui contient le nombre d'entité bâti par parcelles.
Tu peux également choisir si les entités doivent s'intersecter ou être contenues, etc.
Et sinon comme dit SANTANNA une fonction aggregate si tu ne veux pas créer de nouvelle couche :
Code:
aggregate( 'ID_de_la_couche_Bâti', 'count', intersects($geometry,geometry(@parent)) )
PS : contains(geometry1,geometry2) fonctionne aussi à la place de intersects
Dernière modification par aheurion (Fri 09 July 2021 09:54)
Hors ligne