Menggabungkan banyak catatan ke fitur tunggal menggunakan QGIS?

25

Saya mencoba membuat join / relate di QGIS di mana saya memiliki shapefile bangunan dan saya ingin bergabung dengan tabel non-spasial (.csv) yang berisi orang-orang yang bekerja di setiap bangunan. Jadi saya memiliki beberapa catatan di meja saya yang saya ingin dapat bergabung dengan fitur tunggal saya di shapefile saya. Saya hanya bisa menjalankan gabungan di QGIS di mana catatan pertama bergabung dengan fitur shapefile (yaitu bangunan) tetapi catatan selanjutnya bisa dihapus.

Bisakah seseorang memberi tahu saya cara menyelesaikan ini bergabung / berhubungan di QGIS?

Mick
sumber
Saya punya pertanyaan serupa di sini gis.stackexchange.com/questions/5797/... Plugin RT SQL Layer dan plugin eVis disarankan. Saya menggunakan plug eVis tapi itu bukan solusi yang ideal.
Ando
2
Saya memiliki masalah yang sama dan memang bergabung dengan tabel berfungsi. Caranya adalah dengan menggabungkan tabel dengan beberapa nilai ke tabel dengan nilai tunggal (di sini, dari orang ke bangunan, bukan sebaliknya). Masalahnya, sejauh yang saya alami, adalah bahwa dengan melakukan ini, Anda tidak dapat mencari dan mengekspor hasilnya sebagai file yang di-georeferensi, yang merupakan bugger (setidaknya bagi saya). Adakah cara untuk mem-bypass masalah ini? marc
Apa hasil akhir yang ingin Anda capai? Bahkan jika Anda berhasil bergabung, apakah Anda ingin mempresentasikannya di peta? Apakah statistik? Bergantung pada itu, alur kerja yang berbeda dapat diikuti, tetapi menggunakan database biasanya merupakan ide yang baik jika Anda ingin bergabung.
johanvdw

Jawaban:

15

Saya memecahkan masalah ini menggunakan QGIS 1.7.0 dengan pertama-tama menyimpan layer vektor sebagai tabel comma separated values ​​(CSV) dengan bidang geometri dikonversi menjadi teks yang terkenal. Untuk melakukan ini, bidang layer dari dialog "Simpan layer vektor sebagai ..." harus membaca GEOMETRI = AS_WKT untuk membuat bidang teks geometri yang terkenal dengan kolom bernama WKT.

File geometri CSV kemudian bergabung ke tabel atribut non geometri dalam gabungan satu-ke-banyak di bawah properti yang bergabung dengan tab pada tabel atribut non geometri.

Gabung yang dihasilkan disimpan sebagai file CSV geometri lain.

Ketika tabel ini dibuka di QGIS, setiap catatan atribut diwakili oleh geometri vektor yang sesuai.

Dalam melakukan semua ini saya menemukan bahwa The Delimited Text Plugin tidak diperlukan untuk membuka file geometri CSV jika pembatasnya adalah koma dan bidang geometri WKT bernama WKT.

Untuk detail tentang bagaimana hal ini dilakukan silakan lihat tutorial saya di http://georgiawildlife.com/node/2849 .

Greg Krakow
sumber
Pendekatan yang bagus, saya melakukan hal serupa hanya menggunakan ogr2ogruntuk membuat file CSV dari Shapefile. Kemudian skrip R sederhana untuk menggabungkan file pada bidang umum yang saya inginkan dan menulis kembali ke CSV. Kemudian ogr2ogrlagi untuk membuat shapefile gabungan.
vpipkt
1
Ini mungkin diberi nilai tertinggi, tetapi proses yang dimaksudkan untuk ini dijawab oleh @underdark di bawah ini. Ini adalah hack dan sama sekali bukan pilihan terbaik, ini lambat dan tidak efisien dan menghasilkan file yang lebih besar dan lebih banyak langkah.
nittyjee
10

Gabungan yang dibuat di lapisan lapisan hanya menambah kolom ke fitur yang ada. Jika layer vektor hanya memiliki 160 fitur, gabungan tidak dapat menambah jumlah fitur!

Gunakan fitur lapisan virtual sebagai gantinya. Menawarkan SQL / database-like nyata. Sebagai contoh, lihat posting terakhir saya: Multiples kecil untuk peta aliran OD menggunakan lapisan virtual

masukkan deskripsi gambar di sini

underdark
sumber
7

Di QGIS 1.7 ada mesin baru untuk Bergabung (Anda menemukannya di properti vektor).

Tabel tanpa geometri sekarang dapat ditambahkan ke proyek seperti layer (vektor) lainnya.

Giovanni Manghi
sumber
7

Mulai dari versi 2.2 QGIS mendukung hubungan satu ke banyak. Tentukan mereka dalam Properti Proyek, bukan Properti Layer Vector. Dan kemudian catatan terkait akan muncul di Tabel Atribut lapisan atau Identifikasi Hasil melalui formulir.

Lihat jawaban dan tautan ke panduan yang bagus di sini .

Anna Pestereva
sumber
4

Apakah bergabung di LibreOffice Base.

Anda tidak dapat mengatasi kenyataan bahwa Anda mencoba mengelola hubungan 1 dengan banyak orang.

Untuk non-spasial ke non-spasial, ada baiknya upaya untuk belajar. Saya menemukan trik terbesar adalah memastikan bidang atribut bergabung memiliki istilah yang persis sama.

Buka data yang terletak spasial sebagai layer dalam QGIS, lalu Anda pilih semua catatan dalam tabel atribut di QGIS (hapus pilihan, invert seleksi) dan salin ini ke lembar baru di LibreOffice Calc. Anda akan menemukan bidang pertama adalah WKT, yang merupakan deskripsi fitur yang dapat digunakan secara universal di GIS. Calc akan memberi Anda dialog untuk mengimpor tabel yang disisipkan, pilih tab yang dibatasi, pastikan koma tidak dicentang karena akan mengunyah bidang WKT menjadi bit. Kemudian sorot tabel ini di Calc, beralih ke Basis, sorot ikon Tabel di sebelah kiri dan tempel. Basis akan melalui dialog untuk mengimpor tabel. Bidang WKT dapat dipertahankan melalui gabungan dan ketika file diimpor kembali ke QGIS sebagai .csv ini digunakan untuk memindahkan fitur. Ingat saja proyeksi.

Dengan cara itu Anda akan memiliki kontrol penuh dari gabung dan dapat melakukannya secara "terbalik". Untuk melakukan penggabungan di Base memastikan bidang data unik (1) adalah kunci utama dan kemudian Anda arahkan ke "banyak" jika Anda terbiasa dengan konsep 1 ke banyak atau 1 ke n. Bergabung diatur dengan membuat hubungan | ALAT |. Seperti yang saya sebutkan, Anda mungkin ingin menendang seseorang ketika Anda menemukan bidang bergabung memiliki informasi yang sama tetapi telah menggunakan teks atau sintaks yang berbeda untuk mewakilinya.

hth

BWill
sumber
2

Saya tidak berpikir ini mungkin untuk menghubungkan tabel dengan hubungan 1 ke banyak di QGIS. Sebagai alternatif, Anda mungkin ingin mencoba gvSIG. Di sini Anda dapat membuat 1 hingga banyak tautan. Setelah membuat tautan, memilih fitur di peta akan menyoroti semua catatan terkait dalam tabel yang ditautkan.

Ecodiv
sumber
1
Sejak diperkenalkannya lapisan virtual, jawaban ini tidak benar lagi.
underdark