Apakah ada cara untuk memilih atribut dari lapisan poligon dan memasukkan nilainya ke dalam bidang virtual lapisan titik menggunakan "dalam" dalam kalkulator bidang?
CASE
WHEN within($geometry, geometry_polygon) THEN attribute_polygon
END
qgis
field-calculator
layers
within
Laut Bulan
sumber
sumber
Jawaban:
Gabungan spasial tersedia di kalkulator lapangan setelah menginstal plugin refFunctions.
sumber
Di luar kotak, kalkulator bidang tidak mendukung sambungan spasial di seluruh lapisan fitur. Tetapi, jika Anda melihat tulisan NathanW pada editor fungsi untuk ekspresi qgis, Anda akan dapat melihat bahwa kami dapat membuat skrip interaksi data kami sendiri.
Script berikut akan memungkinkan Anda untuk mengekspresikan apa yang Anda cari. Ia bekerja dengan mengulangi semua fitur pada lapisan poligon dan jika ada gabungan spasial, maka referensi data tabular dari kolom yang ditentukan:
Contoh Lapisan Poligon
Di bawah ini adalah contoh lapisan poligon yang mungkin Anda miliki. Saya juga telah membuat layer titik yang sesuai yang akan Anda lihat di gambar akhir.
Penggunaan Ekspresi
Catatan, jika Anda ingin menggunakan kolom terpisah, Anda harus mengubah argumen kedua agar cocok dengan nama kolom dalam dataset poligon. Contoh, Anda bisa menggunakan kolom 'AreaNumber', tetapi harus cocok dengan jenis kolom di pengaturan kalkulator lapangan.
Hasil
Anda dapat melihat bahwa nilai kolom default telah diterapkan di mana tidak ada gabungan spasial, dan yang lain telah cocok dengan data yang benar. Perhatikan skrip yang saya berikan hanya akan bergabung pada pertandingan pertama . Anda perlu membuat beberapa logika bisnis lain jika poligon Anda tumpang tindih.
sumber
Ini dapat dilakukan dalam Field Calculator dengan fungsi
aggregate()
. Pada layer titik buat bidang baru dengan ekspresi kalkulator bidang seperti ini:Di mana
layer
nama lapisan poligon ditulis seperti string,aggreagate
adalah fungsi agregat (dapat digunakan juga jumlah, dll.),expression
Adalah bidang dari nilai yang akan diambil,concatenator
bergabung dengan karakter string (harus diatur, bahkan dalam kasus ini) danfilter
memfilter fitur berdasarkan pada ekspresi (dalam hal ini memotong lapisan geometri dengan geometri lapisan induk).Untuk info lebih lanjut, periksa dokumentasi Agregat QGIS .
Untuk pembaruan otomatis dapat digunakan bidang virtual atau Anda dapat mengatur ekspresi sebagai nilai Default dalam pengaturan Formulir Atribut di Layer Properties ( Dokumentasi pengaturan formulir atribut ).
sumber
geometry(@parent)
) hanya didukung dari QGIS 3 dan seterusnya. Kalau-kalau ada orang yang membaca ini masih menggunakan 2.18 ...