Bu tür şeyler en iyi Spatialite ve SQL ile yapılır.
Öncelikle QGIS ile birlikte gelen DBManager eklentisini kullanarak yapabileceğiniz bir Spatialite veritabanına veri yüklemeniz gerekecektir. İçe Aktar'ı tıklayın Layer/File button
.
Verilerinizi bir veritabanına girerek SQL
düğmesini kullanarak aşağıdaki sorguyu çalıştırabilirsiniz . Sütunların ve tabloların adlarını verilerinize uyacak şekilde değiştirmeniz yeterlidir.
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
Sorgu aracına benzersiz kimlik sütununuzu (id) ve geometri sütununuzu (geomm) söyleyin, ardından yükle'yi tıklayın.
Elbette etiketledikten sonra böyle bir şeye sahip olmalısınız
Sorgu Dağılımı
Katmanı kendi üzerine kullanarak birleştiriyoruz:
LEFT OUTER JOIN areas a2 ON NOT a1.id = a2.id
AND intersects(a2.geomm, a1.geomm)
ancak sadece geometrilerin kesiştiği ve id'lerin aynı olmadığı yerlerde, aksi takdirde her poligon için iki kez aynı kayıt elde ederiz. Ayrıca LEFT OUTER JOIN
, komşu olmayan yani katılmayan kayıtları da içerecek şekilde kullanıyoruz .
Seçim bölümünde:
SELECT COALESCE(SUM(a2.pop),0) as pop_neighbours,
a1.pop,
a1.name,
a1.id,
a1.geomm
Biz (hiçbir komşu) aksi takdirde sadece kalmak COALESCE
dönüştürmek için kullanıyoruz .NULLS
0
NULL
Sonra GROUP BY a1.id
her bir çokgen için tek bir kayıt elde edelim.