Użyj kalkulatora pola, aby sprawdzić przecięcie

Dec 03 2020

Ostateczny cel

Planuję pobrać atrybuty z warstw za pomocą kalkulatora pola, gdzie przecinają się one z geometrią.

Bieżący krok

Sprawdzanie, czy prąd $geometryprzecina się z interesującą nas warstwą.

Co próbowałem

intersects($geometry,collect_geometries('Layer'))- i odmiany map_get. Ponieważ właśnie dowiedziałem się, że intersectsnależy podać znane geometrie, podczas gdy chcę sprawdzić, czy na warstwie znajduje się geometria, w rzeczywistości jestem zagubiony. Po prostu nie wiem, jak sprawdzić skrzyżowania za pomocą kalkulatora pola.

Jeśli nie jest to możliwe przy użyciu kalkulatora pola, to może Python?

Odpowiedzi

4 Babel Dec 03 2020 at 23:03

Załóżmy, że masz warstwę z wielokątami, która zawiera atrybut „nazwa”: na poniższym zrzucie ekranu to pole nazwy ma wartości A, B, C, D, E i F (wielokąty są oznaczone).

Mamy ponadto warstwę linii i chcemy uzyskać nazwy wielokątów, które przecina linia. Od QGIS 3.16 (patrz wizualny dziennik zmian ; dla starszych wersji QGIS może pomóc wspomniana tam wtyczka RefFunctions ), są nowe wyrażenia nakładek. Możemy użyć jednego z nich, aby oznaczyć linię nazwami wielokątów, które przecina. W ten sam sposób wyrażenie można wykorzystać w kalkulatorze pól do wygenerowania nowych pól (nawet pól wirtualnych do obliczeń dynamicznych):

array_to_string ( 
   overlay_intersects ( 
      'Polygons', 
      name
    ) 
)