Hal semacam ini paling baik dilakukan dengan Spatialite dan SQL.
Pertama, Anda perlu memuat data Anda ke dalam basis data Spatialite yang dapat dilakukan menggunakan plugin DBManager yang dikirimkan bersama QGIS. Klik tombol Impor Layer/File button
.
Dengan data Anda ke dalam basis data, Anda kemudian dapat menjalankan kueri berikut menggunakan SQL
tombol. Anda hanya perlu mengubah nama kolom dan tabel agar sesuai dengan data Anda.
SELECT COALESCE(SUM(a2.pop),0) as pop_neighbours,
a1.pop,
a1.name,
a1.id,
a1.geomm FROM areas a1
LEFT OUTER JOIN areas a2 ON NOT a1.id = a2.id
AND intersects(a2.geomm, a1.geomm)
GROUP BY a1.id
Beri tahu alat kueri kolom id unik Anda (id) dan kolom geometri (geomm), lalu klik muat
Anda harus memiliki sesuatu seperti ini, setelah Anda memberi label tentunya
Rincian Permintaan
Kami bergabung dengan layer itu sendiri menggunakan:
LEFT OUTER JOIN areas a2 ON NOT a1.id = a2.id
AND intersects(a2.geomm, a1.geomm)
tetapi hanya jika geometri berpotongan dan id tidak sama, jika tidak kita berakhir dengan rekaman yang sama dua kali untuk setiap poligon. Kami juga menggunakan LEFT OUTER JOIN
sehingga kami menyertakan catatan yang tidak bergabung yaitu tidak punya tetangga.
Di bagian pilih:
SELECT COALESCE(SUM(a2.pop),0) as pop_neighbours,
a1.pop,
a1.name,
a1.id,
a1.geomm
kami menggunakan COALESCE
untuk mengubah NULLS
(tidak ada tetangga) menjadi 0
kalau tidak mereka hanya tinggal NULL
.
Lalu kami hanya GROUP BY a1.id
agar kami mendapatkan satu catatan untuk setiap poligon.