Cara menjaga nol di file csv saat bekerja dengan QGIS

8

Saya baru mengenal QGIS, dan Sistem Informasi Geografis secara umum, dan juga tidak memiliki pengalaman dengan informatika.

Saya memiliki shapefile yang berfungsi dengan baik, dan kemudian saya memiliki file dalam format CSV, dan saya mencoba untuk menggabungkan dua file ini, menggunakan kolom yang harus sama antara dua file. Masalahnya adalah, beberapa angka memiliki angka nol di depan (mereka adalah semacam kode pos di negara saya), yang hilang dari file CSV ketika saya mengimpornya ke QGIS ...

Apakah ada cara sederhana untuk tetap memimpin nol?

Di shapefile, nol di depan tidak menghilang.

João Santos
sumber
Tentunya Anda harus memperlakukan bidang kode pos sebagai String / teks.
Alexandre Neto

Jawaban:

9

Anda dapat menentukan nilai tipe dengan menggunakan file CSVT, sebagai berikut:

"Integer(6)","Real(5.5)","String(22)"

Jika file csv data.csvAnda bernama, Anda akan menamai file csvt Anda data.csvt.

Anita Graser (di sini dikenal sebagai underdark) telah menulis posting blog terkait hal ini. Ini tersedia di: https://anitagraser.com/2011/03/07/how-to-specify-data-types-of-csv-columns-for-use-in-qgis/

Saya juga akan merujuk pada Tanya Jawab ini untuk informasi lebih lanjut.

Sunting: untuk lebih tepatnya, Anda harus menentukan kolom Anda sebagai "String" untuk tetap memimpin nol . Pilihan lain adalah menggunakan lpad()fungsi dari kalkulator . Lihat T / A berikut .

Sebagai contoh : lpad('22', 4, 0), will return '0022'

simo
sumber
Saya ingin tahu siapa yang menemukan contoh itu, tetapi hasilnya kembali 2200untuk saya. Sebagai gantinya, saya sarankan padding kiri , seperti yang dijelaskan di gis.stackexchange.com/questions/208686/…
AndreJ
terima kasih telah menunjukkan ini ... Terlambat ketika saya menjawab ;-)
simo
Saya tidak yakin, tetapi melampirkan nilai string antara tanda kutip ganda "0082" di file CSV bisa cukup.
user30184
1
Saya juga ingin menambahkan bahwa perlu mengunggah file .csv dan .csvt secara bersamaan di QGis via Layer -> Add Layer -> Tambahkan metode Layer Vector.
Michael Workman