QGISの位置(最も近い距離)でポイントレイヤーとラインレイヤーの属性を結合する


13

私の問題は次のとおりです。ラインシェップ(ターゲットレイヤー)とポイントシェップ(結合レイヤー)があります。2番目(ポイントレイヤー)は、ラインに最も近い距離に基づいてラインレイヤーと結合する属性を保持します。点と線は交差していません

ArcGISと空間結合(一致オプション:最も近い)でこれを行うことができますが、QGISでこれをどのように達成できるかわかりません。


3
場所ごとに参加するツールがありますが、「最も近い」オプションはありません。回避策があるかどうかはわかりません。一般的に、不足しているお気に入りのオプション/ツールの開発をサポートするために評価してください。ユーザーがこのソフトウェアの成長を支援できるのもこの方法です。
ジョバンニマンギ

回答:


8

これには「コア」QGIS関数はないと思います。ただし、MMQGISプラグインをインストールし、「ハブ距離」ツールを使用します。ポイントを「ソースポイント」レイヤーとして選択し、ラインを「宛先ハブレイヤー」として選択し、「出力形状タイプ」を「ハブへのライン」に設定します。これにより、最も近いフィーチャを結合するラインのシェープファイル(長さ付き)が得られます。便利なことに、最も近いフィーチャのIDも属性テーブルに追加します。

編集/コメント:このアプローチは、ラインよりもポイントが少ない場合や、1対1のラインツーポイントの状況でうまく機能します。線よりもポイントが多いと事態が複雑になります。「ハブ距離」ツールは、ラインフィーチャのIDをポイント属性テーブルに「HubName」として追加し、ポイントとラインの中心間の距離を「HubDist」として追加します。ラインよりもポイントが多い場合、ポイントの各サブセット(各ラインハブにリンクされた複数のレコード)内でどれが各ラインに最も近いか、および/または希望する線に結合する属性。


これは、「行」対「ポイント」のマイナーな編集の対象として、回答としてマークされる必要があります
ウィリー

1
「ラインに最も近い距離」が基準である場合、「ハブ距離」は適切なツールではありません。mmqgisコードは、ハブ距離が「ハブ」ジオメトリの近似値を使用することを明らかにしています。距離の計算(mmqgis_distance)は、パラメーターとして2つのポイントを取ります。mmqgis_library.pyのハブジオメトリの近似を行うコードは次のとおりです: "feature.geometry()。boundingBox()。center()"。つまり、実際のジオメトリの代わりに、ジオメトリの境界ボックスの中心が使用されます。したがって、「ラインに最も近い距離」を基準とする場合、GRASS v.distanceまたはNNJoinプラグインの方が適しています。
ハーバード・トバイト

5

これには、GRASS v.distance関数を使用できます。QGISでは、GRASSプラグインを介して機能にアクセスできます(現在処理バージョンは機能していません)。NNJoin QGISプラグインは単純に代わるかもしれません。


3

NNJoinプラグインは決して私をがっかりさせず、大きなデータセットでうまく機能します。

プラグイン>インストール:NNJoin> NNJoin>入力レイヤーを選択し、レイヤーを結合>次に、結合をクリックします。

属性テーブルを使用して、新しい出力レイヤーの結果を調べます。警告:両方のレイヤーが同じ空間投影を使用していることを確認してください。そうでない場合、結果は空白になります。


2

2019年には、QGIS 3 Zanzibarツール「属性を最寄で結合」でこれが可能になるかもしれません。このツールを使用すると、最も近いフィーチャを見つけて、選択した属性を結合できます。最大距離と最大最近傍を指定する場合、1対多の結合を実行することもできます。

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