QGIS式で別の線分と交差する線分のセグメントを取得する

Nov 30 2020

QGIS 3.16には2つのラインレイヤーがあります:ライン1(青)、ライン2(赤)。白い点は、2本の線の頂点(ノード)です。それらには共通の頂点がなく、接続されていません。QGIS式を使用して2行目と交差する1行目からセグメントを取得するにはどうすればよいですか?ハイライトされた黄色のセグメントのジオメトリジェネレータによって線を生成したいと思います(スクリーンショットを参照)。

これを1行目のジオメトリ生成シンボルレイヤーとして試しました。最初に1行目をセグメント化してセグメントを取得し、他のレイヤーのline_2と交差させます。ブール出力(true / false)を取得し、2本の線が交差する交差点を作成することもできます。しかし、交差するセグメントに直接対処しようとしても無駄でした。

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.レイヤーに「線を分解」を適用します'Line 1'

ステップ2. 「式によるジオメトリ」ジオアルゴリズムを使用します。ステップ1の結果は、レイヤーのフィーチャと交差します'Line 2'。また、基本的な「交差点」を使用することもできます。