Utilisez la calculatrice de champ pour vérifier l'intersection

Dec 03 2020

But ultime

Je prévois de récupérer les attributs des couches à l'aide du calculateur de champ là où ils se croisent avec une géométrie.

Étape actuelle

Vérifier si le courant $geometrycroise la couche d'intérêt.

Ce que j'ai essayé

intersects($geometry,collect_geometries('Layer'))- et des variations de map_get. Depuis que je viens d'apprendre qu'il intersectsfaut remettre des géométries connues, alors que je veux vérifier s'il y a une géométrie sur la couche, je suis en fait perdu. Je ne sais tout simplement pas comment vérifier les intersections à l'aide du calculateur de champ.

Si ce n'est pas possible en utilisant la calculatrice de champ, alors peut-être Python?

Réponses

4 Babel Dec 03 2020 at 23:03

Supposons que vous ayez une couche avec des polygones qui contient un attribut "nom": dans la capture d'écran ci-dessous, ce champ de nom a les valeurs A, B, C, D, E et F (les polygones sont étiquetés).

Nous avons en outre une couche de lignes et nous voulons obtenir les noms des polygones que la ligne coupe. Depuis QGIS 3.16 (voir le journal des modifications visuelles ; pour les anciennes versions de QGIS, peut-être que le plugin RefFunctions référencé ici pourrait aider), il existe de nouvelles expressions de superposition. Nous pouvons utiliser l'un d'eux pour étiqueter la ligne avec les noms des polygones qu'elle croise. De la même manière, l'expression peut être utilisée dans le calculateur de champs pour générer de nouveaux champs (même des champs virtuels pour le calcul dynamique):

array_to_string ( 
   overlay_intersects ( 
      'Polygons', 
      name
    ) 
)