Cách giữ các số 0 đứng đầu trong tệp csv khi làm việc với QGIS


8

Tôi mới biết đến QGIS và Hệ thống thông tin địa lý nói chung và cũng không có kinh nghiệm về tin học.

Tôi có một shapefile hoạt động tốt, và sau đó tôi có một tệp ở định dạng CSV và tôi cố gắng tham gia hai tệp này, sử dụng một cột phải bằng nhau giữa hai tệp. Vấn đề là, một số số có số 0 đứng đầu (chúng là một số loại mã bưu điện ở quốc gia của tôi), đã biến mất khỏi tệp CSV khi tôi nhập nó vào QGIS ...

Có cách nào đơn giản để giữ số không hàng đầu?

Trong shapefile, các số 0 đứng đầu không biến mất.


Chắc chắn bạn phải coi các trường mã bưu điện là Chuỗi / văn bản.
Alexandre Neto

Câu trả lời:


9

Bạn có thể chỉ định giá trị loại bằng cách sử dụng tệp CSVT, như sau:

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

Nếu tệp csv của bạn được đặt tên, data.csvbạn sẽ đặt tên tệp csvt của mình data.csvt.

Anita Graser (ở đây được gọi là underdark) đã viết một blogpost liên quan đến điều này. Nó có sẵn tại: https://anitagraser.com/2011/03/07/how-to-specify-data-types-of-csv-columns-for-use-in-qgis/

Tôi cũng sẽ tham khảo Q / A này để biết thêm thông tin.

Chỉnh sửa: để chính xác hơn, bạn nên chỉ định cột của mình là "Chuỗi" để giữ các số 0 đứng đầu . Một tùy chọn khác cũng sẽ là sử dụng lpad()chức năng từ máy tính . Xem Q / A sau đây .

Ví dụ : lpad('22', 4, 0), will return '0022'


Tôi tự hỏi ai đã phát minh ra ví dụ đó, nhưng nó trả lại 2200cho tôi. Thay vào đó, tôi đề nghị đệm trái , như được giải thích trong gis.stackexchange.com/questions/208686/ mẹo
AndreJ

cảm ơn vì đã chỉ ra điều này ... Đã trễ khi tôi trả lời ;-)
simo

Tôi không chắc chắn, nhưng kèm theo các giá trị chuỗi giữa hai dấu ngoặc kép "0082" trong tệp CSV là đủ.
dùng49584

1
Tôi cũng muốn thêm rằng cần phải tải lên các tệp .csv và .csvt cùng một lúc trong QGis thông qua lớp -> Thêm lớp -> Thêm phương thức lớp Vector.
Michael Workman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.