Menggabungkan atribut dari titik terdekat di QGIS?

29

Saya memiliki dua layer dengan poin, sebut mereka A dan B, masing-masing dengan atribut yang berbeda.

Untuk setiap titik dalam AI ingin menggabungkan semua atribut dari titik terdekat dalam B.

Idealnya ini juga akan mencakup bidang yang mengukur jarak antara kedua titik.

Saya tahu bagaimana melakukannya di ArcGIS: klik kanan layer A> joins and relates> joins, kemudian gabungkan data berdasarkan lokasi spasial dan pilih untuk menggabungkan atribut dari titik terdekat.

Saya tidak dapat menemukan fungsionalitas serupa di QGIS. Ada petunjuk?

Fred
sumber

Jawaban:

26

Dengan menggunakan "Distance Matrix" Anda dapat menghitung titik terdekat. Pastikan kedua layer berada dalam CRS yang sama! Kemudian, Anda bisa memuat hasilnya dan menggunakannya untuk bergabung dengan tabel A dan B.

Dalam "Distance matrix" pilih: "Matriks jarak linear" dan "hanya gunakan titik target k terdekat: 1"

masukkan deskripsi gambar di sini

Muat CSV menggunakan "Tambahkan Layer Vektor" dan gabungkan layer dalam properti layer A - gabung tab.

masukkan deskripsi gambar di sini

Dan hasilnya:

masukkan deskripsi gambar di sini

underdark
sumber
Jika Anda ingin memiliki jarak antara titik-titik dalam satu lapisan menggunakan matriks jarak Anda harus mengubah k = 2, karena masalah ini diketahui: hub.qgis.org/issues/4761
Celia
1
@underdark Sepertinya solusi ini tidak berfungsi lagi. Saya dapat membuat matrix.csv dan bergabung ke lapisan pertama saya. Dalam contoh Anda, Anda menambahkan gabungan kedua di mana Anda melampirkan lapisan kedua ke yang pertama, berdasarkan pada TargetID dari matriks. Tetapi bidang yang digabung tidak ditampilkan kepada saya dalam dialog, jadi saya tidak dapat memilih TargetID. Tentu saja saya dapat menyimpan layer pertama dan kemudian melakukan join kedua ...
Bernd V.
13

The NNJoin Plugin harus melakukan pekerjaan. Untuk setiap fitur pada layer input, ia menambahkan semua atribut fitur terdekat di layer gabungan dan juga menambahkan atribut jarak dengan jarak ke fitur ini.

Håvard Tveite
sumber
Bekerja dengan sempurna. Lebih cepat dari jawaban yang diterima. Perhatikan bahwa jawaban yang diterima jika dari 2011.
juminet
Setidaknya, hari ini jauh lebih baik daripada jawaban yang diterima. Jauh lebih cepat.
cag
4

Jika Anda dapat hidup hanya dengan bergabung dengan satu atribut dari lapisan "B" Anda, lihat alat "Hub Distance" dari plugin mmqgis .

Jika Anda memerlukan sisa atribut "B", Anda harus dapat bergabung dengan atribut "B" lainnya kembali ke lapisan ini.

Anda juga dapat secara opsional membuat garis dari A ke B jika diinginkan. Ini berguna untuk memvisualisasikan jarak dan arah antara fitur yang terkait.

Ryan Dalton
sumber
0

Pendekatan lain menggunakan plugin refFunctions .

(1) Sampel Dataset

masukkan deskripsi gambar di sini

(2) Buka tabel atribut lapisan yang memiliki lebih banyak fitur ( points_blapisan dalam contoh ini) sehingga tidak ada pasangan yang terlewatkan. Buat bidang baru.

  • Bidang ID dari lapisan lain: geomnearest('points_a', 'id_a')
  • Bidang jarak dari pasangan yang terdeteksi: geomnearest('points_a', '$distance')

masukkan deskripsi gambar di sini

Kazuhito
sumber
-6

Menggunakan QGIS 1.7 Vektor> Manajemen Data> Gabung Atribut berdasarkan Lokasi

masukkan deskripsi gambar di sini

Mapperz
sumber
3
Saya memikirkan ini juga, tetapi ketika saya mengujinya, itu hanya bekerja untuk pencocokan tepat, seperti point-poligon. Itu tidak menemukan titik terdekat ke titik lain. Diuji dalam v1.7
RyanDalton
1
Saya mendapat nol pertandingan. Ini tidak bekerja.
Fred