Tabel bergabung dengan file .csv menghasilkan bidang nol setelah bergabung

8

Mirip dengan pertanyaan yang sudah ditanyakan tentang file .dbf, saya mencoba untuk menggabungkan file .csv ke .gdb atau membentuk cakupan di QGIS. Tabel seperti yang ditambahkan ke QGIS sebelum bergabung terlihat baik-baik saja, tetapi setelah bergabung selesai, tabel gabungan memiliki nilai NULL untuk semua bidang yang bergabung. Hal yang sama terjadi dengan berbagai tabel berbeda, dan terlepas dari apakah saya bergabung dengan file shapefile atau .gdb.

Saya menjalankan QGIS 2.0.1 pada OSX 10.8.5. File tabel asli terdapat dalam format .mdb jadi saya telah membeli dan menggunakan MDB ACCDB Viewer untuk mengekspornya ke .CSV Fakta bahwa mereka baik-baik saja jika dilihat secara terpisah membuat saya percaya bahwa masalahnya adalah dengan prosedur bergabung, bukan meja sendiri.

Saran?

KMT
sumber
Terkait dengan [tautan] ( gis.stackexchange.com/questions/63804/… )
KMT
Bisakah Anda memverifikasi bahwa kolom di csv adalah tipe yang sama dengan kolom yang bergabung di target shapefile / gdb? Anda biasanya dapat melihat jenis bidang di jendela properti untuk setiap lapisan dengan membuka tab Bidang .
SaultDon
1
Aha - jadi shapefile memiliki bidang integer, sedangkan semua bidang tabel adalah bidang string. Apakah konversi dari .mdb ke .csv telah kehilangan jenis bidang? Bisakah saya mengubah jenis bidang dalam dialog properti?
KMT
Pastikan untuk memeriksa apakah Anda memiliki kecocokan yang tepat. Saya memiliki masalah ini bahkan ketika jenis bidang cocok. Ternyata masalahnya adalah bahwa saya memiliki ruang putih di tali saya. Ini diatasi dengan membuat bidang baru dengan menggunakan trim(oldField)fungsionalitas QGIS .
Lauren

Jawaban:

2

File .csv di QGIS secara default mengimpor semua data sebagai string. Anda perlu membuat file teks .csvt yang memberi tahu QGIS kolom mana yang harus ditentukan sebagai tipe data mana.

A .csvt file contains only one line and the types for each column have to be quoted and comma separated, e.g.

"Integer","Real","String"

Dikutip dari: http://anitagraser.com/2011/03/07/how-to-specify-data-types-of-csv-columns-for-use-in-qgis/

Maka data Anda akan dari jenis yang sama, dan bergabung harus bekerja.

Amos Budde
sumber
Terima kasih @Amos Budde, saya akan mencoba rute .csvt juga, tetapi ternyata, saya mencoba shapefile dan tabel yang berbeda, keduanya dengan bidang string, dan masih tidak berfungsi - saya mendapatkan nilai nol di tabel bergabung . Data saya dibagikan di atas - ada peluang Anda mencobanya?
KMT
baru saja mencoba dengan file .csvt dan masih belum berhasil. Apakah itu berhasil untuk Anda?
KMT
2

Lebih baik jika Anda memastikan kedua bidang memiliki tipe data yang sama.

Jenis bidang tidak dapat diubah untuk shapefile. Tetapi mudah untuk membuat bidang teks kosong baru dan membuatnya sama dengan bidang bilangan bulat.

Anda dapat menggunakan ekspresi kalkulator bidang yang terlihat seperti: tostring( "INT_FIELD" )dan cukup ganti INT_FIELDdengan nama bidang bilangan bulat yang sebenarnya.

Anda dapat dengan mudah mengubah nilai atribut lapisan CSV dari nomor teks <-> juga.


MEMPERBARUI

Jika Anda mendapatkan nilai nol, Anda bisa mencoba menjaga penggabungan, tetapi cukup tutup dan buka kembali tabel atribut untuk melihat apakah nilai yang digabungkan ada di sana (atau bahkan tutup / buka kembali QGIS).

Saya telah berhasil bergabung dengan csv ke shapefile dengan campuran tipe bidang sehingga string vs integer seharusnya tidak menjadi masalah.


PEMBARUAN 2

Sepertinya untuk menyingkirkan nilai-nilai nol, mereka harus benar-benar memiliki catatan yang cocok di tabel terkait yang digabungkan. Tetapi pada gambar di bawah ini, Anda dapat melihat bahwa beberapa memiliki catatan yang cocok:

sukses bergabung dengan warna kuning

SaultDon
sumber
Oke, bahkan ketika keduanya merupakan nilai string, saya mengalami masalah dengan nilai NULL di tabel gabungan. Pikiran lain?
KMT
Tidak beruntung dengan menutup / membuka tabel atribut atau QGIS.
KMT
@KMT Punya data yang dapat Anda bagikan sehingga siapa saja dapat menguji?
SaultDon
Tentu. Shapefile di dropbox.com/sh/jvbh2pafm2dreec/lr0GiFiq2t (menggunakan file "Delta Covers"). Tabel di dropbox.com/sh/qw25uxmaoo6pgqh/s8EKrU9DfL (menggunakan tabel "Covers_Survey"). Juga memiliki file .gdb (sama seperti shapefile) di dropbox.com/sh/8vdalc68jjd2c7i/iFpsm7MgAD . Bergabunglah berdasarkan bidang "Covlnk_text" (shapefile) dan "Covlnktxt" (tabel).
KMT
1
@ KMT Saya tidak berpikir mengubah tipe data bidang akan membantu sama sekali karena nilai masih tidak cocok. Saya akan kembali ke sumber data (mdb) dan membandingkan nilai-nilai di csv keluaran ke tabel mdb (mungkin mereka entah bagaimana kacau). LibreOffice Base dapat membuka mdb juga.
SaultDon