Mengubah nilai atribut lapisan CSV dari teks ke angka di QGIS?

28

Saya membaca dalam file CSV untuk menautkan ke file .shp.

Semua variabel yang hanya angka datang sebagai teks.

Bagaimana cara mengubah variabel teks menjadi numerik dalam QGIS?

Peta Kesehatan
sumber

Jawaban:

37

Saya pernah memiliki pertanyaan yang sama. Jawabannya adalah Anda meletakkan file di folder yang sama dengan csvt akhir. Misalnya nama file Anda adalah xyzdata.csv Anda menambahkan file xyzdata.csvt

Yang ini bisa Anda edit dengan editor misalnya. Dan di dalamnya Anda mengatur tipe data seperti ini. "Integer", "String", "Integer", "Integer", "String", "Nyata"

Integer sekarang menjadi variabel untuk kolom pertama, string untuk kolom kedua dan seterusnya ... Pastikan file-file tersebut diberi nama secara identik.

Sunting: Lihat di sini juga jika diperlukan: http://underdark.wordpress.com/2011/03/07/how-to-specify-data-types-of-csv-columns-for-use-in-qgis/

Gembala
sumber
Terima kasih banyak, jadi benarkah semua file CSV akan dibaca sebagai teks? Mungkin saya membayangkan ini, tetapi ketika saya mulai dengan QGIS beberapa waktu yang lalu saya menautkan file CSV dan angka adalah angka. Tampaknya info ini harus ada di manual pengguna. (mungkin saya melewatkannya)
HealthMaps
Ya, itu juga sangat aneh bagi saya. Tetapi jika Anda hanya memiliki beberapa kolom, metode ini mudah dilakukan. Jadi ... apakah itu benar-benar berhasil untuk Anda?
Shepherdjo
Ya, itu bekerja dengan sempurna! Watch out mengatur file CSVT Anda di Excel; tanda kutip tambahan terjebak dalam dll. Saya menggunakan SAS atau R untuk membuat file yang ingin saya tautkan sehingga tidak terlalu banyak kesulitan untuk membuat file CSVT bersama dengan file CSV. Sepertinya ini perlu diperbaiki. SIG lain yang saya gunakan lihat angka dalam kolom CSV, itu dibaca sebagai angka.
HealthMaps
Saya menemukan plugin MMQGIS yang akan mengubah kolom dari teks menjadi float atau float menjadi teks. Hanya berfungsi untuk file bentuk, bukan file yang ditautkan atau file csv yang diimpor. Lihat michaelminn.com/linux/mmqgis
HealthMaps
Senang untuk mendengarnya. Dan terima kasih untuk petunjuk plug-in. Saya juga akan berterima kasih, jika Anda menerima jawaban saya, bukan?
Shepherdjo
15

Alih-alih mengacaukan file input, mencoba untuk mendapatkan gambar semuanya sempurna, cukup gunakan kalkulator lapangan untuk mengkonversi teks menjadi angka / nyata. Lihat contoh di bawah ini:

Kalkulator Bidang

Kalkulator Bidang ke Nomor

Kalkulator Bidang ke Nyata

Tabel Atribut Setelah Fungsi

nagytech
sumber
Ketika saya membawa file CSV, saya tidak dapat mengeditnya. Tombol edit telah diklik. Bagaimana saya bisa diedit?
HealthMaps
Saya tidak yakin Anda dapat mengedit csv melalui qGIS. Saya pikir saya salah membaca pertanyaan Anda karena Anda sudah mengimpor data csv ke shapefile .
nagytech
2
Saya melakukan tautan, .shp ke file csv yang memiliki kolom angka tetapi sebenarnya teks. Tampaknya seseorang tidak dapat melakukan pengeditan apa pun pada file CSV sendiri atau jika dikaitkan dengan file SHP. SO Saya menyimpan file yang ditautkan dan kemudian memuatnya dan dapat mengedit file nomor teks ke format integer seperti yang Anda sarankan. Tampaknya menggunakan file .csvt berfungsi paling baik jika Anda memiliki banyak kolom teks yang perlu dikonversi dan kemudian menggunakan metode kalkulator bidang jika jumlahnya tidak banyak. Akan bermanfaat untuk dapat mengedit file CSV sendiri, tidak ditautkan ke apa pun.
HealthMaps
11

Alih-alih memuat .csv menggunakan Tambahkan lapisan vektor, gunakan alat lapisan Teks Dibatasi. Ini akan mencoba mendeteksi tipe data yang paling pas untuk setiap kolom.

Untuk detail lebih lanjut lihat panduan pengguna QGIS .

masukkan deskripsi gambar di sini

underdark
sumber
Perbaiki Insta! Terima kasih
user94812
5

MMQGis yang menyebabkan masalah ini, dan, ternyata, dapat memperbaikinya.

Setelah Anda bergabung dengan data Shapefile & CSV Anda, gunakan alat MMQGis's Modify> Text to Float.

Seperti biasa, ia meninggalkan jejak shapefile menengah sampah tetapi apa lagi yang baru

boulder_ruby
sumber
1

Dalam QGIS 3.x sumber kesalahan umum adalah memilih pemisah desimal yang salah. Centang atau Hapus centang pada kotak "Pemisah desimal koma" sebelum memuat CSV Anda ke QGIS:

masukkan deskripsi gambar di sini

MrXsquared
sumber
-2

Alternatif lain dalam hal kumpulan data besar yang akan dikelola dan jelas memakan waktu untuk melanjutkan dengan kalkulator lapangan (tanpa perulangan) atau dalam editor teks: - simpan data Anda sebagai variabel CSV + XY + untuk sambungan dengan polifone shapefile kami - unggah CSV Anda dengan plug in (import csv) kemudian simpan sebagai shapefile (titik) - lalu tutup q gis - kembali ke folder dengan titik shapefile, duplikat tabel dbf yang sesuai / ganti nama - buka Qgis - unggah dbf baru dan unggah dbf baru dan gabung ke shapefile (fitur poligon)

Satu batu, dua merpati: Anda memiliki potensi 1) titik shapefile dengan semua data dan semua kemungkinan representasi 2) dan shapefile independen dengan tabel dbf bergabung (dapat diedit!) Ditautkan dengan poligon untuk kartografi tematik

Ini agak kasar, tetapi cukup mudah ...

bs_epidemio

bsepidemio
sumber
3
Meskipun jawaban ini membahas cara memasukkan .csvfile ke dalam format yang dapat diedit, jawaban ini tidak membahas pertanyaan awal tentang bagaimana mengkonversi nilai atribut dari teks ke angka . Meskipun penting untuk memiliki pertanyaan yang berkualitas dan fokus, namun sama pentingnya bahwa jawaban atas pertanyaan tersebut harus fokus dan serelevan mungkin dengan apa yang ditanyakan semula.
Dapatkan Spasial