Verwenden Sie den Feldrechner, um nach Schnittpunkten zu suchen

Dec 03 2020

Ultimatives Ziel

Ich plane, Attribute aus Ebenen mit dem Feldrechner abzurufen, wo sie sich mit einer Geometrie schneiden.

Aktueller Schritt

Überprüfen, ob sich der Strom $geometrymit der interessierenden Schicht schneidet.

Was ich versucht habe

intersects($geometry,collect_geometries('Layer'))- und Variationen von map_get. Da ich gerade gelernt , dass intersectshat bekannte Geometrien übergeben werden, während ich dort überprüfen möchten , ob eine Geometrie auf der Schicht ist, ich bin eigentlich mit einem Verlust. Ich weiß einfach nicht, wie ich mit dem Feldrechner nach Kreuzungen suchen soll.

Wenn dies mit dem Feldrechner nicht möglich ist, dann vielleicht Python?

Antworten

4 Babel Dec 03 2020 at 23:03

Angenommen, Sie haben eine Ebene mit Polygonen, die ein Attribut "Name" enthält: Im folgenden Screenshot hat dieses Namensfeld die Werte A, B, C, D, E und F (Polygone sind beschriftet).

Wir haben außerdem eine Linienebene und möchten die Namen der Polygone erhalten, die die Linie schneidet. Seit QGIS 3.16 (siehe visuelles Änderungsprotokoll ; für ältere QGIS-Versionen könnte möglicherweise das dort referenzierte RefFunctions Plugin helfen) gibt es neue Overlay-Ausdrücke. Wir können eine davon verwenden, um die Linie mit den Namen der Polygone zu beschriften, die sie schneidet. Auf die gleiche Weise kann der Ausdruck im Feldrechner verwendet werden, um neue Felder zu generieren (sogar virtuelle Felder für die dynamische Berechnung):

array_to_string ( 
   overlay_intersects ( 
      'Polygons', 
      name
    ) 
)