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 20 September 2022 17:27

nicolas34
Juste Inscrit !
Date d'inscription: 6 Sep 2022
Messages: 8

QGIS: Selection geograph avec critere de pourcentage de superposition

Bonjour,

Je souhaite identifier des éléments d'une couche A qui intersectent des éléments d'une couche B. Les 2 couches sont surfaciques.
Mais ma couche B étant dessinée assez grossière, je souhaite que seuls les éléments A qui ont au moins 95% (ou disons 0,5 ha) de leur surface dans un élément B ressortent. Je ne veux pas que la sélection puisse prendre des éléments A qui ont juste un bout dans un élément B.

La sélection par localisation ne fonctionne pas car si je choisis :
- A contenu dans B, ils faut que tout l'élément A soit inclus dans B
- A intercepte B non plus car on a même les toutes petites superpositions.

Je pense qu'il faut faire une sélection par expression, mais avez-vous une idée de la formule adéquate ?
Merci d'avance.

Dernière modification par nicolas34 (Tue 20 September 2022 17:28)

Hors ligne

 

#2 Thu 22 September 2022 15:18

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

Re: QGIS: Selection geograph avec critere de pourcentage de superposition

Bonjour,
Sur une >=3.26, la fonction overlay_intersects, avec son argument min_overlap devrait faire l'affaire, pour ce qui est du 0,5 ha.
Pour la méthode à 95%, il faudrait pouvoir intersecter chaque entité A avec chacune des superposées B, en définir la surface, comparer celle-ci avec la surface de A et décider si on retient ou pas. Ça donne, en passant par l'outil de sélection par entité

Code:

 with_variable(
    'liste_superposes', -- Pour chaque entité, on crée une liste 
    overlay_intersects('couche B', NOM), -- des entités en superposition dans l'autre couche
                       -- où NOM est un champ identifiant de façon unique les entités dans B
    case when
      array_max( -- on va ensuite créer une liste des pourcentages de superposition entre l'entité actuelle
                 -- et chacune des entités en superposition dans l'autre couche et
                  -- comparer la plus grande valeur de cette liste
        array_foreach(  
          @liste_superposes,
          with_variable(
            'zone_superpose',
            intersection($geometry, geometry(get_feature('couche B', 'NOM', @element))),
            round(area(@zone_superpose)*100/area($geometry),2)
          )
        )
    ) >=95 -- à la proportion seuil précédemment définie
    then TRUE END -- Si c'est supérieur on prend,
       -- TRUE peut être remplacé par une valeur texte si on veut stocker l'info dans un champ par ex.
  )

EDIT: Modification du code pour utiliser les noms de couche dans le commentaire initial

Dernière modification par SANTANNA (Mon 26 September 2022 17:00)

Hors ligne

 

#3 Mon 26 September 2022 16:36

nicolas34
Juste Inscrit !
Date d'inscription: 6 Sep 2022
Messages: 8

Re: QGIS: Selection geograph avec critere de pourcentage de superposition

Bonjour,

Merci pour votre réponse, je vais tester cette sélection !

Hors ligne

 

Pied de page des forums

Powered by FluxBB