QGIS 표현으로 다른 선이 교차하는 선의 세그먼트 얻기

Nov 30 2020

QGIS 3.16에는 라인 1 (파란색), 라인 2 (빨간색)의 두 개의 라인 레이어가 있습니다. 흰색 점은 두 선의 꼭지점 (노드)입니다. 공통 정점이없고 연결되어 있지 않습니다. QGIS 표현식을 사용하여 라인 2와 교차하는 라인 1에서 세그먼트를 어떻게 얻을 수 있습니까? 강조 표시된 노란색 세그먼트의 지오메트리 생성기로 선을 생성하고 싶습니다 (스크린 샷 참조).

나는 이것을 라인 1에서 기하학 생성 심볼 레이어로 시도했습니다. 다른 레이어의 line_2와 교차하는 것보다 먼저 라인 1을 세그먼트 화하여 세그먼트를 얻습니다. 부울 출력 (true / false)을 얻고 두 선이 교차하는 교차점을 만들 수도 있습니다. 그러나 나는 교차하는 부분을 직접 다루려고 헛되이 노력했다.

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

이 간단한 경우에는 다음 표현식을 사용하여 세그먼트를 얻을 수 있습니다 (노란색 선을 생성 한 방법입니다) : geometry_n (segments_to_lines ( $geometry), 3). 하지만 세그먼트 번호 (이 경우에는 3)를 수동으로 설정해야하는데, 다른 경우가 많고 수동으로 할 수 없기 때문에이 번호를 자동으로 생성하고 싶습니다. 어떻게 할 수 있습니까?

이 질문의 배경은 다음을 참조하십시오 : QGIS에서 특정 거리에서 무작위로 포인트 재배치 (5 단계)

답변

1 Taras Nov 30 2020 at 17:21

QGIS 표현식 배포가 필수가 아닌 경우 다음 워크 플로를 시도해 볼 수 있습니다.

1 단계. 레이어에 "Explode lines" 적용'Line 1'

단계 2. 사용 "형상 표현식에 의해" 1 단계의 결과 geoalgorithm, 십자가 층으로부터 기능 'Line 2'. 또한 기본 "교차"를 사용할 수 있습니다 .