Thay đổi mã hóa dữ liệu Shapefile?


9

Tôi đã cố gắng thay đổi mã hóa nguồn dữ liệu shapefile thông qua các thuộc tính và cả Cách mã hóa các shapefile từ LATIN1 sang UTF-8? nhưng nó không thay đổi nó.

Nếu không lưu dự án QGIS, tôi có thể trực tiếp thay đổi mã hóa nguồn dữ liệu shapefile không?

Tôi cũng đã thử mã này, nó hiển thị mã hóa thay đổi nhưng khi tôi mở shapefile một lần nữa, nó hiển thị cùng mã hóa hệ thống cũ:

for layer in QgsMapLayerRegistry.instance().mapLayers().values():
    layer.setProviderEncoding(u'UTF-8')
    layer.dataProvider().setEncoding(u'UTF-8')
    print layer.name(), layer.dataProvider().encoding()  

(Tôi không lưu dự án QGIS, chỉ truy cập và lưu shapefile trực tiếp. Khi tôi lưu dự án và thực hiện nhiệm vụ này thì nó hoạt động chính xác )


Bạn có thể xem mã trong plugin: shapefile_encoding_fixer
Jakob

Tôi có thể lưu trong shapefile qua qgis mà không lưu dự án không?
Muhammad Faizan Khan

Bạn đã thử nhấp chuột phải vào lớp của bạn và sử dụng Save As...tùy chọn chưa?
Joseph

@Joseph có người đàn ông tắt khóa học, tôi đã đề cập đến câu trả lời trong bài viết của tôi! Tôi trực tiếp mở tệp hình dạng vào dự án qgis và thay đổi mã hóa của nó thông qua lưu nhưng khi tôi mở lại, nó sẽ chuyển sang hệ thống (không thay đổi).
Muhammad Faizan Khan

@Joseph tôi không lưu dự án qgis, khi tôi lưu dự án qgis và mở tệp hình dạng thông qua nó thì nó hoạt động chính xác!
Muhammad Faizan Khan

Câu trả lời:


13

Từ thanh thực đơn, đi đến:

Settings > Options > Data Sources > Data source handling

và bỏ chọn cài đặt khai báo mã hóa bỏ qua shapefile :

Cài đặt mã hóa

Điều này đặt tất cả các lớp được tải vào QGIS được mã hóa mặc định thành UTF-8


1
Cảm ơn @Joseph bổ sung cho người dùng trong tương lai, liên kết này cũng hữu ích hub.qgis.org/issues/13203 . Trên thực tế Bỏ qua tùy chọn kiểm tra mã hóa shapefile bỏ qua cài đặt utf-8. nó bỏ qua tập tin .cpg.
Muhammad Faizan Khan

@MohammadFaizanKhan - Rất hoan nghênh và cảm ơn vì liên kết :)
Joseph

7

Để tóm tắt lại vị trí khác nhau nơi bạn có thể đặt mã hóa:

Khi bạn mở một shapefile: Mở shp như

Khi bạn mở CSV: Thêm CSV

Khi bạn lưu một tệp vectơ: Lưu tệp vectơ như

Trong các thuộc tính lớp:
Thuộc tính lớp

Và, như được đề cập bởi @Joseph, có lẽ bạn nên bỏ chọn cài đặt khai báo mã hóa bỏ qua shapefile.


Cảm ơn người chiến thắng dòng cuối cùng của bạn giúp tôi rất nhiều. hub.qgis.org/issues/13203
Muhammad Faizan Khan

3

Khi bạn sử dụng Save As ..., bạn phải chọn một tên tệp khác và Add file to canvas.

Kết quả là, bạn PHẢI lưu dự án quá để có được shapefile mới trong đó. Dự án chưa được lưu vẫn bao gồm shapefile chưa được xử lý và mã hóa sai.

BTW Data encodingtrong các thuộc tính Layer là một phần của tệp dự án, không phải là shapefile. Ví dụ mã của bạn không viết bất cứ điều gì bên trong shapefile, nó chỉ thay đổi cài đặt lớp của dự án.

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.