Uzyskanie odcinka linii, przecinanej przez inną z wyrażeniem QGIS
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
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” .