QGISでわずかに異なるエンドポイントを持つラインをマージする


22

QGISでは、2つの行があります。エンドポイントは互いに近接していますが、完全に揃っていません。2つのエンドポイントを中間点にマージして、2つのラインを1つにしたいと思います。

一番近いのは「選択した機能を統合する」です。これで1つの機能が得られますが、2つの独立した行で構成されています。エンドポイント間に行はありません。

Illustratorのパスの結合機能(オブジェクト>パス>結合)と同様に動作するものを探しています。

QGISはそれを行いますか?

回答:


12

クイックアンサー:いいえ!そのような操作をレイヤー上で直接行うツールはありません(「Join Two Lines」プラグインには交差が必要です)。

ラインをポイントに変換して(ノードを抽出)、points2one(ライン出力)に結合することで非常にシンプルなレイヤーにできますが、これは手で編集するよりもはるかに遅くなります:

  1. ラインレイヤーのスナップ(設定|スナップオプション...)がオンになっていることを確認します(5ピクセルでうまくいきます)。
  2. あるエンドポイントから別のエンドポイントに新しいラインを作成します。
  3. 3行すべて(元の2行+新しい行)を選択し、それらをマージします(編集|選択した機能またはツールバーボタンのマージ)。

1
ありがとう。マージする行は数行しかないので、これはすばやく簡単に行えました。(@Michael Markietaの回答は、複雑な状況により適しているようです。)
エヴァン

14

QGISとGRASSの組み合わせでこれを実現できます。

  1. ベクターレイヤーをGRASSマップセットにインポートします(Grass | File> Import Vector Data)
  2. QGISでマップセットを開きます(QGIS |プラグイン> GRASS>マップセットを開く)
  3. GRASSマップセットからQGISプロジェクトにベクターレイヤーを追加します(QGIS |プラグイン> GRASS> GRASSベクターレイヤーを追加)
  4. v.clean.snapを使用します(QGIS |プラグイン> GRASS> GRASSツールを開く>モジュールリスト> v.clean.snap)

v.clean.snapの「しきい値」を調整して、スタディエリア全体で適切な頂点スナップを実現します。


10

2つのラインセグメントを1つのラインに結合したいと思っていると思います。 ここに画像の説明を入力してください

これは私がそれをやった方法です...

  • 編集を有効にします。
  • スナップをオンにします(設定->スナップオプション...) ここに画像の説明を入力してください
  • ノードノードツールを選択します。ここに画像の説明を入力してください
  • ノードを追加するには、いずれかの行の終わり近くでダブルクリックします。 ここに画像の説明を入力してください
  • 端のノードをドラッグして、他の行の端にスナップします ここに画像の説明を入力してください
  • 両方の行を選択
  • それらの属性をマージします(属性が異なる場合、1行にすることはできません)ここに画像の説明を入力してください
  • 2つの機能を統合するここに画像の説明を入力してください

これにより、1行になります。 ここに画像の説明を入力してください


大丈夫だ。しかし、22,000行のデータセットはどうでしょうか。私はこのことについて行くことができない手作業を ...
FaCoffee


3

単一の機能が単一のLINESTRINGではなくMULTILINESTRINGで構成されることを意味する場合、Postgisデータベースを使用している場合は簡単に修正できます。

update your_table set your_geo_column = ST_LineMerge(your_geo_column);

1行だけでこれを行う場合は、もちろんWHERE id = your_row_idを追加する必要があります。


2

また、誰かが試すことができます:

  1. .shpを.dxfとして保存
  2. DraftSightで.dxfを開く
  3. ポリラインパーツを結合する
  4. qgisで.dxfを再度開き、.shpとして保存します
  5. Vectorメニューから-> Geometry tools-> Lines to polygons

2

上記のtnagelで言及されたプラグインJoin Multiple Linesを使用して、QGIS 3.4.0でこれを行いました(ベクターメニュー>複数行に参加)。約60のトレイルラインフラグメントを約20のトレイルラインに結合するようにうまく機能しました。問題の結果を見る必要があるため、断片が多くなり、それらがカバーする領域が大きくなると、実用的ではなくなります(tnagelには、説明した問題の1つがあった可能性があります)。

結合する線を選択し、メニュー項目をクリックして結合します(必要な数の線を選択できますが、...)、端が1マイル離れていても、 1つの端から他の端を接続するので、結果に満足できるように端が十分に近いことを確認してください(別の投稿の先端を使用してマーカーで線の端にマークを付けたので、簡単でした表示するには([プロパティ]> [シンボル]>マーカーラインを追加し、シンボルが見やすい大きさになるようにします]> [最後の頂点のみ]ラジオボタンを選択します(必要に応じて、別のシンボルのマーカーラインを追加して[最初に選択]頂点のみ」))。

また、線は明らかに方向性を持っています。そのため、(たとえば)ラインAの最南端がその下のラインBの最南端(必要のない別の長い直線)と結合しなかったことに注意する必要があります。

私はそれが起こったときに、「元に戻す」ことができ、高度な処理ツールバーの「行の反転」を使用して、行の方向を一端から他端に変えることができました行の終わりで)、再度行を結合します。

これに関する良い点は、変更/編集が既存のレイヤーに保存されるため、結果を新しいシェープファイルとして保存する必要がないことです(最初にバックアップを作成します)。

私はQGISのコアおよびプラグイン開発者による作業に常に驚いています。賢く建設的な人間が一緒に仕事をすることに決めたときに何ができるかを示しています。ありがとうございました!


0

OpenJUMP(Plusエディション)の使用:

  1. ファイル>ファイルを開く
  2. プラグイン>トポロジ>ネットワークトポロジのクリーニング...
  3. 新しいレイヤー(修正済み)を右クリックします。データセットを...として保存します。

これが結果です: ここに画像の説明を入力してください


0

私の場合、線は異なるレイヤーにあり、属性も異なっていました。レイヤーをmmqgisとマージしてから、次のステップでラインをスナップしてラインをマージする手法でラインをマージしました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.