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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 14 May 2024 21:18

Erone
Juste Inscrit !
Date d'inscription: 14 May 2024
Messages: 4

QGIS: Intersection entre couches

Bonjour,

Pouvez vous m'aider à simplifier cette requette qui crée un bug dans Qgis ?
Je cherche à compléter un attribut sur la couche une quand l'objet intersecte des objets d'une seconde couche.

Code:

CASE
WHEN aggregate('zonage_pente_bretagne', 'concatenate_unique', "label", filter:=intersects(geometry(@parent), $geometry))  = '7 - 9.99' THEN '7'
ELSE ''
END
 || 
CASE
WHEN aggregate('zonage_pente_bretagne', 'concatenate_unique', "label", filter:=intersects(geometry(@parent), $geometry))  = '10 - 14.99' THEN '7'
ELSE ''
END
 || 
CASE
WHEN aggregate('zonage_pente_bretagne', 'concatenate_unique', "label", filter:=intersects(geometry(@parent), $geometry))  = '> 15' THEN '7'
ELSE ''
END

Merci beaucoup

Hors ligne

 

#2 Wed 15 May 2024 07:59

LPlante
Participant occasionnel
Date d'inscription: 17 Nov 2021
Messages: 44

Re: QGIS: Intersection entre couches

Bonjour
Pourquoi l'utilisation de || qui sert à concatener des valeurs?
La requete serait plus simple

CASE
    WHEN aggregate('zonage_pente_bretagne', 'concatenate_unique', "label", filter:=intersects(geometry(@parent), $geometry))  = '7 - 9.99' THEN '7'
    WHEN aggregate('zonage_pente_bretagne', 'concatenate_unique', "label", filter:=intersects(geometry(@parent), $geometry))  = '10 - 14.99' THEN '7'
    WHEN aggregate('zonage_pente_bretagne', 'concatenate_unique', "label",  filter:=intersects(geometry(@parent),$geometry))  = '> 15' THEN '7
ELSE ''
END

Visiblement, peu importe le cas, c'est uniquement la valeur 7 qui est renvoyée

Dernière modification par LPlante (Wed 15 May 2024 08:01)

Hors ligne

 

#3 Wed 15 May 2024 08:47

Erone
Juste Inscrit !
Date d'inscription: 14 May 2024
Messages: 4

Re: QGIS: Intersection entre couches

Merci beaucoup pour votre retour.
Néanmoins c'est toujours une source de plantage de Qgis 3.22, sans que j'en trouve la raison.

Hors ligne

 

#4 Wed 15 May 2024 10:35

LPlante
Participant occasionnel
Date d'inscription: 17 Nov 2021
Messages: 44

Re: QGIS: Intersection entre couches

Que dit l'erreur?
Plus d'infos sur où et comment seraient utile pour comprendre.

Plusieurs pistes
Pourquoi utiliser 'concatenate_unique'? Si le besoin est de comparer une valeur, 'min' ou 'max' suffirait
Est ce que "label" est un champs varchar pour etre comparée à la valeur  '7 - 9.99'?

Hors ligne

 

#5 Thu 16 May 2024 10:04

Erone
Juste Inscrit !
Date d'inscription: 14 May 2024
Messages: 4

Re: QGIS: Intersection entre couches

Je n'ai pas de code erreur mais ça entraîne le blocage complet de Qgis puis sa fermeture dès que je crée ou modifie un objet sur la couche en question.

Mon besoin est uniquement d'apporter une valeur numérique non nulle dans un champs d'une couche A, lorsque un objet linéaire de cette couche A intersecte n'importe quel objet surfacique d'une couche B ('zonage-pente-bretagne')

Idéalement uniquement si au moins 25% de l'entité de la couche A intersecte un polygone de la couche B.

Merci beaucoup pour votre aide

Hors ligne

 

#6 Thu 16 May 2024 11:49

Papiroux77
Participant occasionnel
Date d'inscription: 26 Mar 2024
Messages: 10

Re: QGIS: Intersection entre couches

Voici une proposition

CASE
WHEN intersects(geometry(@parent), $geometry) THEN
    CASE
        WHEN "label" IN ('7 - 9.99', '10 - 14.99', '> 15') THEN '7'
        ELSE ''
    END
ELSE ''
END


Petite précision:

- Assurez-vous que l'attribut "label" dans la couche "zonage_pente_bretagne" est un type de données texte ou chaîne, car l'expression simplifiée utilise une comparaison de chaînes.

- Si vous traitez un ensemble de données volumineux, envisagez d'utiliser des index sur les attributs "géométrie" et "label" pour améliorer les performances.


A tester...

Hors ligne

 

#7 Fri 17 May 2024 16:59

Erone
Juste Inscrit !
Date d'inscription: 14 May 2024
Messages: 4

Re: QGIS: Intersection entre couches

Bonjour et merci beaucoup pour ces éléments.

Ca fonctionne quasiment à la limite près que je dois probablement insérer la référence à la couche intersectée 'zonage_pente_bretagne'... pourriez vous m'aider sur ce point ?

Merci encore

Hors ligne

 

Pied de page des forums

Powered by FluxBB