Bảng tham gia với kết quả tệp .csv trong các trường null sau khi tham gia


8

Tương tự như các câu hỏi đã được hỏi về các tệp .dbf, tôi đang cố gắng tham gia các tệp .csv vào vùng phủ sóng .gdb hoặc shapefile trong QGIS. Các bảng như được thêm vào QGIS trước khi tham gia có vẻ ổn, nhưng sau khi tham gia hoàn tất, bảng được hợp nhất có các giá trị NULL cho tất cả các trường đã tham gia. Điều tương tự cũng xảy ra với nhiều bảng khác nhau và bất kể tôi tham gia vào tệp shapefile hay .gdb.

Tôi đang chạy QGIS 2.0.1 trên OSX 10.8.5. Các tệp bảng gốc được chứa ở định dạng .mdb vì vậy tôi đã mua và sử dụng Trình xem MDB ACCDB để xuất chúng sang .CSV Thực tế là chúng ổn khi được xem riêng dẫn đến tôi tin rằng vấn đề là do thủ tục nối, không phải là bàn mình.

Gợi ý?



Bạn có thể xác minh rằng cột trong csv cùng loại với cột được nối bởi trong shapefile / gdb đích không? Bạn thường có thể thấy các loại trường trong cửa sổ thuộc tính cho mỗi lớp bằng cách chuyển đến tab Trường .
SaultDon

1
Aha - vì vậy shapefile có trường số nguyên, trong khi tất cả các trường bảng là trường chuỗi. Việc chuyển đổi từ .mdb sang .csv có bị mất các loại trường không? Tôi chỉ có thể thay đổi loại trường trong hộp thoại thuộc tính?
Quốc Dân Đảng

Hãy chắc chắn để kiểm tra nếu bạn có trận đấu chính xác. Tôi đã có vấn đề này ngay cả khi các loại trường phù hợp. Hóa ra vấn đề là tôi có khoảng trắng hàng đầu trong chuỗi của mình. Điều này đã được khắc phục bằng cách tạo một trường mới bằng cách sử dụng trim(oldField)chức năng QGIS .
Lauren

Câu trả lời:


2

Theo mặc định, các tệp .csv trong QGIS nhập tất cả dữ liệu dưới dạng chuỗi. Bạn cần tạo tệp văn bản .csvt để thông báo cho QGIS cột nào sẽ được chỉ định là loại dữ liệu nào.

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"

Trích dẫn từ: http://anitagraser.com/2011/03/07/how-to-specify-data-types-of-csv-columns-for-use-in-qgis/

Sau đó, dữ liệu của bạn sẽ cùng loại và tham gia sẽ hoạt động.


Cảm ơn @Amos Budde, tôi cũng sẽ thử tuyến đường .csvt, nhưng khi nó bật ra, tôi đã thử một shapefile và bảng khác, cả hai đều có trường chuỗi và vẫn không hoạt động - Tôi nhận được các giá trị null trong bảng đã tham gia . Dữ liệu của tôi được chia sẻ ở trên - bất kỳ cơ hội nào bạn có thể thử nó?
Quốc Dân Đảng

chỉ cần thử với một tập tin .csvt và vẫn không gặp may. Nó làm việc cho bạn?
Quốc Dân Đảng

2

Tốt nhất là bạn đảm bảo hai trường có cùng kiểu dữ liệu.

Loại trường không thể thay đổi cho shapefiles. Nhưng thật dễ dàng để tạo một trường văn bản trống mới và làm cho nó bằng với trường số nguyên.

Bạn có thể sử dụng biểu thức máy tính trường trông giống như: tostring( "INT_FIELD" )và chỉ cần thay thế INT_FIELDbằng tên của trường số nguyên thực tế.

Bạn cũng có thể dễ dàng thay đổi giá trị thuộc tính lớp CSV từ số văn bản <-> .


CẬP NHẬT

Nếu bạn nhận được các giá trị null, bạn có thể thử giữ liên kết, nhưng chỉ cần đóng và mở lại bảng thuộc tính đó để xem các giá trị được nối có ở đó không (hoặc thậm chí đóng / mở lại QGIS).

Tôi đã có thể tham gia thành công một csv vào một shapefile với hỗn hợp các loại trường để chuỗi không phải là số nguyên.


CẬP NHẬT 2

Có vẻ như để loại bỏ các giá trị null, chúng thực sự phải có một bản ghi khớp trong bảng tương ứng được nối từ đó. Nhưng trong hình ảnh bên dưới, bạn có thể thấy rằng một số người có bản ghi phù hợp:

tham gia thành công trong màu vàng


Ok, ngay cả khi chúng là cả hai giá trị chuỗi, tôi gặp vấn đề về giá trị NULL trong bảng đã tham gia. Những suy nghĩ khác?
Quốc Dân Đảng

Không có may mắn với việc đóng / mở bảng thuộc tính hoặc QGIS.
Quốc Dân Đảng

@KMT Có bất kỳ dữ liệu nào bạn có thể chia sẻ để bất cứ ai cũng có thể kiểm tra?
SaultDon

Chắc chắn rồi. Shapefile tại dropbox.com/sh/jvbh2pafm2dreec/lr0GiFiq2t (sử dụng tệp "Delta Cover"). Bảng tại dropbox.com/sh/qw25uxmaoo6pgqh/s8EKrU9DfL (sử dụng bảng "Cover_Survey"). Đồng thời có tệp .gdb (giống như shapefile) tại dropbox.com/sh/8vdalc68jjd2c7i/iFpsm7MgAD . Tham gia dựa trên các trường "Covlnk bản" (shapefile) và "Covlnktxt" (bảng).
Quốc Dân Đảng

1
@KMT Tôi không nghĩ việc chuyển đổi các loại dữ liệu trường sẽ giúp ích gì cả vì các giá trị vẫn không khớp. Tôi sẽ quay trở lại dữ liệu nguồn (mdb) và so sánh các giá trị trong csv đầu ra với bảng mdb (có thể chúng bị rối tung trên đường đi bằng cách nào đó). LibreScript Base cũng có thể mở mdb.
SaultDon
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.