Uzyskanie odcinka linii, przecinanej przez inną z wyrażeniem QGIS

Nov 30 2020

Mam dwie warstwy linii w QGIS 3.16: linia 1 (niebieska), linia 2 (czerwona). Białe punkty to wierzchołki (węzły) dwóch linii. Nie mają wspólnego wierzchołka, nie są połączone. Jak mogę uzyskać segment z linii 1, który przecina linia 2, używając wyrażeń QGIS? Chciałbym wygenerować linię za pomocą generatora geometrii podświetlonego żółtego segmentu (patrz zrzut ekranu).

Wypróbowałem to jako warstwę symboli generowaną przez geometrię w linii 1: najpierw segmentuję linię 1, aby uzyskać segmenty, a następnie przecinam ją z linią_2 na drugiej warstwie. Otrzymuję wynik logiczny (prawda / fałsz) i jestem w stanie utworzyć punkt przecięcia, w którym przecinają się dwie linie. Jednak bezskutecznie próbowałem odnieść się bezpośrednio do skrzyżowanego odcinka.

crosses ( 
   segments_to_lines (  
      $geometry),   
   geometry (
      get_feature( 
        'line_2', 
        'fid', 
        1
      )
   )
)

W tym prostym przypadku, mogę uzyskać segment o wyrażeniu (tak właśnie wygenerował żółta linia) geometry_n (segments_to_lines ( $geometry), 3). Muszę jednak ustawić numer segmentu (w tym przypadku 3) ręcznie, ale chcę utworzyć ten numer automatycznie, ponieważ mam wiele różnych przypadków i nie mogę tego zrobić ręcznie. Jak to zrobić?

W tle tego pytania zobacz: Losowe ponowne lokalizowanie punktów w określonej odległości w QGIS (krok 5)

Odpowiedzi

1 Taras Nov 30 2020 at 17:21

Jeśli wdrożenie wyrażeń QGIS nie jest obowiązkowe, możesz wypróbować następujący przepływ pracy

Krok 1. Zastosuj "Linie rozstrzelenia" dla warstwy'Line 1'

Krok 2. Użyj geoalgorytmu „Geometria według wyrażenia” , gdzie wynik kroku 1 przecina cechy z warstwy 'Line 2'. Możesz także użyć podstawowego „Skrzyżowania” .