QGISの最も近いポイントから属性を結合しますか?


29

ポイントを持つ2つのレイヤーがあり、それぞれ異なる属性を持つAとBと呼ばれます。

AIの各ポイントについて、Bの最も近いポイントからのすべての属性を結合します。

理想的には、これには両方のポイント間の距離を測定するフィールドも含まれます。

ArcGISでこれを行う方法を知っています:レイヤーA> joins and relateds> joinを右クリックし、空間位置に基づいてデータを結合し、最も近いポイントから属性を結合することを選択します。

QGISで同様の機能を見つけることができませんでした。ポインタはありますか?

回答:


26

「距離マトリックス」を使用すると、最も近いポイントを計算できます。両方のレイヤーが同じCRSにあることを確認してください!次に、結果をロードし、それを使用してテーブルAとBを結合できます。

「距離行列」で「線形距離行列」と「最も近いk個のターゲットポイントのみを使用:1」を選択しました

ここに画像の説明を入力してください

「ベクターレイヤーの追加」を使用してCSVを読み込み、レイヤーAのレイヤープロパティ-結合タブでレイヤーを結合します。

ここに画像の説明を入力してください

そして結果:

ここに画像の説明を入力してください


:あなたは距離行列を使用して一つの層内の点の間の距離を持っているしたい場合は、このために、既知の問題で、K = 2を、変更する必要がありhub.qgis.org/issues/4761
セリア

1
@underdarkこのソリューションはもう機能しないようです。matrix.csvを作成して、最初のレイヤーに結合できます。この例では、マトリックスのTargetIDに基づいて、2番目のレイヤーを最初のレイヤーにアタッチする2番目の結合を追加しました。しかし、結合されたフィールドはダイアログに表示されないため、TargetIDを選択できません。もちろん、私は第一層save_asした後、第2 ...参加行うことができます
ベルント・V.

13

NNJoinプラグインは、仕事をする必要があります。入力レイヤーの各フィーチャに対して、結合レイヤーの最も近いフィーチャのすべての属性を追加し、このフィーチャへの距離を持つ距離属性も追加します。


完全に動作します。受け入れられた答えよりも速い。注2011年から受け入れ答えた場合、その
juminet

少なくとも、今日は受け入れられている答えよりもはるかに優れています。はるかに高速。
cag

4

「B」レイヤーから単一の属性を結合するだけで生活できる場合は、mmqgisプラグインの「ハブ距離」ツールをご覧ください

残りの「B」属性が必要な場合は、残りの「B」属性をこのレイヤーに結合できます。

必要に応じて、オプションでAからBまでの行を生成することもできます。これは、関連するフィーチャ間の距離と方向を視覚化するのに役立ちます。


0

refFunctionsプラグインを使用する別のアプローチ。

(1)サンプルデータセット

ここに画像の説明を入力してください

(2)より多くの機能を持つpoints_bレイヤー(この例ではレイヤー)の属性テーブルを開き、ペアが抜けないようにします。新しいフィールドを作成します。

  • 他のレイヤーのIDフィールド: geomnearest('points_a', 'id_a')
  • 検出されたペアの距離フィールド: geomnearest('points_a', '$distance')

ここに画像の説明を入力してください


-6

QGIS 1.7 Vectorの使用>データ管理>位置による属性の結合

ここに画像の説明を入力してください


3
私もこれを考えましたが、私がそれをテストしたとき、それはポイントポリゴンのような完全に一致する場合にのみ機能しました。別のポイントに最も近いポイントが見つかりませんでした。v1.7でテスト
RyanDalton

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