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 Wed 02 June 2021 16:25

Mazalia
Participant occasionnel
Date d'inscription: 19 Feb 2021
Messages: 12

QGIS: Ajout d'un champ "Presence/Absence"

Bonjour, une fois de plus je reviens vers vous en espérant trouver une solution à mon problème.

Je travaille sur plusieurs couches :
- Une couche "grille" qui est composé de mailles de 1km * 1km
- Une couche SURFACE_EAU, issue de la BD Topo, qui cartographie les plans d'eau, bassins, etc, qu'ils soient permanents ou non.
- Une couche COURS_D_EAU qui cartographie les cours d'eau sur la commune de Marseille (comprenant les canaux)

Pour extraire une donnée de présence/absence de l'eau par maille j'aurais donc besoin de croiser les deux couches (surface et cours d'eau) avec celle de la grille afin d'ajouter successivement la présence/absence de plans d'eau puis la présence/absence de cours d'eau.

Malgré mes différentes tentatives de jointures, le résultats n'est pas satisfaisant, dans l'idéal j'aurais aimé la création d'un champ pour chacune des deux couches hydrographiques du type : COUR EAU : Oui / Non / Oui/ Oui,... et SURFACE EAU: Oui / Non/ Oui...
L'obtention de ce champs en valeurs numériques serait bien évidemment une solution convenable (1/0/1/1...)

Ma question est donc la suivante, est-il possible d'ajouter à la couche Grille un champ (pour chacune des couches) qui me donnerait l'information de la présence ou non de l'eau dans chacune des mailles ?


PS: Je travaille sur QGIS 3.10

Hors ligne

 

#2 Thu 03 June 2021 09:55

Caligraf
Juste Inscrit !
Date d'inscription: 15 Nov 2017
Messages: 4

Re: QGIS: Ajout d'un champ "Presence/Absence"

Bonjour Mazalia,

Vous pourriez obtenir ce résultat en procédant de cette façon :

1. Ajouter un nouveau champs numérique aux couches SURFACE_EAU et COURS_D_EAU de type integer (nombres ronds) avec l'expression @row_number dans le but d'avoir un identifiant unique pour chaque polygone / ligne
2. Joindre les attributs par localisation avec l'algorithme dédié en remplissant les champs comme suivant :
    - couche d'entrée : Polygones de la maille
    - couche de sortie : Polygones des surfaces d'eau
    - opération : Contient
    - champs à traiter: Sélectionner toutes champs valeurs numériques obtenus à partir de @row_number
    - type de calcul: sélectionner "Somme"
3. Vous devriez obtenir une couche croisant les polygones de la maille avec les polygones des surfaces d'eau. Les 1 symbolisent un comptage positif dans la maille en question, les 0 et null indiquent l'absence de leurs présences.
4. Dans les propriétés de la couche obtenue, vous pourriez utiliser un widget "carte des valeurs" dans l'onglet "Formulaire d'attribut" afin d'ajouter une valeur "OUI" pour les 1 et "NON" pour les 0 et les null
5. Répéter l'opération pour les cours d'eau

Cette méthode est inspirée de la suivante, mieux détaillée en images si cela peut vous aider : https://gis.stackexchange.com/a/325658/176653
Bon courage !

Hors ligne

 

#3 Thu 03 June 2021 11:12

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3789

Re: QGIS: Ajout d'un champ "Presence/Absence"

Bonjour,
Pour remplir le champ, vous pouvez aussi utiliser la fonction aggregate, genre pour compter le nombre de cours d'eau en superposition, imbriquée dans une clause IF ou case when

Code:

if(
   aggregate( layer:= 'SURFACE_EAU',
              aggregate:= 'count',
              expression:= "unchampidentifiantdelacoucheSURFACE_EAU",
              filter:= intersects( $geometry, geometry( @parent ) )
              ),
   'oui', -- là c'est vous qui décidez ce qu'on y met
   'non')

En 3.16, ça se serait résumé à la formule

Code:

if(overlay_intersects('SURFACE_EAU'), 'Oui', 'Non')

Le plugin refFunctions doit aussi permettre de faire cela sous les anciennes versions, il me semble.

Hors ligne

 

#4 Mon 07 June 2021 09:30

Mazalia
Participant occasionnel
Date d'inscription: 19 Feb 2021
Messages: 12

Re: QGIS: Ajout d'un champ "Presence/Absence"

Bonjour,
En ce qui concerne la méthode conseillée par Caligraf, tout fonctionne jusqu'à l'étape où je dois sélectionner Type de calcul = Somme, option qui n'est pas proposée dans ma fenêtre de jonction par attributs. J'ai donc un nouveau champs avec un identifiant par polygone mais je ne peux pas aller plus loin...

J'ai également essayé les premières lignes de codes que tu propose SANTANNA et cela fonctionne mais ne me donne pas exactement ce que je veux. En effet lorsque le champs se crée, cela m'affiche soit que des cases vides, soit toutes les cases ont la même valeur "Non". Je dois surement rater quelque chose dans la codage étant donné que c'est loin d'être ma spécialité ...

Dernière modification par Mazalia (Mon 07 June 2021 09:37)

Hors ligne

 

#5 Mon 07 June 2021 15:42

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3789

Re: QGIS: Ajout d'un champ "Presence/Absence"

Bonjour,
Je me relis et je ne vois pas trop où peut se situer le problème dans la formule.
Questions peut-être stupides: Quel est le type du champ dans lequel vous essayez de stocker le résultat de la requête? Vous avez bien pensé à remplacer "unchampidentifiantdelacoucheSURFACE_EAU" par un champ existant réellement dans votre couche? Vous pouvez aussi ignorer la ligne expression. Les couches sont dans le même système de projection?
Enfin, créez un champ numérique et calculez-y la partie avec aggregate pour voir ce que ça renvoie.

Hors ligne

 

#6 Tue 08 June 2021 14:52

Mazalia
Participant occasionnel
Date d'inscription: 19 Feb 2021
Messages: 12

Re: QGIS: Ajout d'un champ "Presence/Absence"

SANTANNA a écrit:

Bonjour,
Je me relis et je ne vois pas trop où peut se situer le problème dans la formule.
Questions peut-être stupides: Quel est le type du champ dans lequel vous essayez de stocker le résultat de la requête? Vous avez bien pensé à remplacer "unchampidentifiantdelacoucheSURFACE_EAU" par un champ existant réellement dans votre couche? Vous pouvez aussi ignorer la ligne expression. Les couches sont dans le même système de projection?
Enfin, créez un champ numérique et calculez-y la partie avec aggregate pour voir ce que ça renvoie.


J'ai réessayé en suivant la formule et en vérifiant que les SCR étaient les mêmes (et oui après vérification j'avais bien remplacé "unchampidentifiantdelacoucheSURFACE_EAU".). Cette fois ça a l'air de fonctionner !!
En parallèle j'ai également réaliser une jonction de l'aire "aquatique" par carré, ce qui me sera également utile pour la suite.

Merci à vous deux pour le coup de main !!

Hors ligne

 

Pied de page des forums

Powered by FluxBB