QGIS - có thể chuyển đổi các ký tự có dấu thành các ký tự thông thường trong bảng thuộc tính không? [đóng cửa]


9

Tôi có bộ dữ liệu OSM chứa các tên có ký tự quốc gia (đây là xuất CSV, nhưng tôi có nó trong SHP):

osm_id,code,fclass,population,name,longitude,latitude
276645544,1003,village,221,Krč,14.248410,49.194988
444571400,1003,village,88,Radonice,14.548085,49.143251
488567474,1003,village,115,Doubravka,14.363835,49.282158
488567478,1003,village,114,Koloměřice,14.399437,49.280328
488567484,1003,village,111,Údraž,14.309249,49.281551
491452727,1004,hamlet,33,Poněšice,14.481200,49.105121
601855465,1003,village,147,Hvožďany,14.433230,49.286094
631878480,1003,village,211,Myšenec,14.208999,49.223213

và muốn chuyển đổi chúng sang dạng này:

osm_id,code,fclass,population,name,longitude,latitude
276645544,1003,village,221,Krc,14.248410,49.194988
444571400,1003,village,88,Radonice,14.548085,49.143251
488567474,1003,village,115,Doubravka,14.363835,49.282158
488567478,1003,village,114,Kolomerice,14.399437,49.280328
488567484,1003,village,111,Udraz,14.309249,49.281551
491452727,1004,hamlet,33,Ponesice,14.481200,49.105121
601855465,1003,village,147,Hvozdany,14.433230,49.286094
631878480,1003,village,211,Mysenec,14.208999,49.223213

trong đó các dấu được loại bỏ thay vì "č, š, ř, á", v.v. bạn có "c, s, r, a". Tôi không phải chỉnh sửa cột hiện tại - có thể tạo cột mới với tên được chuyển đổi.

Tôi hiện đang sử dụng một số công cụ trực tuyến như công cụ này cho tệp CSV nhưng thật tuyệt nếu tôi có thể giải quyết vấn đề này trực tiếp trong QGIS.


1
Tại sao lạc đề? Tôi chủ yếu yêu cầu giải pháp trực tiếp trong QGIS mà không cần xuất dữ liệu của mình sang CSV và nhập lại.
Juhele 17/03/2017

Câu trả lời:


9

Vâng, điều đó là có thể với thư viện unidecode trong python ... ( tài liệu ). Điều này cố gắng tìm ASCII gần nhất tương đương với mỗi ký tự unicode.

from unidecode import unidecode

s="""
osm_id,code,fclass,population,name,longitude,latitude
276645544,1003,village,221,Krč,14.248410,49.194988
444571400,1003,village,88,Radonice,14.548085,49.143251
488567474,1003,village,115,Doubravka,14.363835,49.282158
488567478,1003,village,114,Koloměřice,14.399437,49.280328
488567484,1003,village,111,Údraž,14.309249,49.281551
491452727,1004,hamlet,33,Poněšice,14.481200,49.105121
601855465,1003,village,147,Hvožďany,14.433230,49.286094
631878480,1003,village,211,Myšenec,14.208999,49.223213
"""

print(unidecode(s))

đầu ra: -

osm_id,code,fclass,population,name,longitude,latitude
276645544,1003,village,221,Krc,14.248410,49.194988
444571400,1003,village,88,Radonice,14.548085,49.143251
488567474,1003,village,115,Doubravka,14.363835,49.282158
488567478,1003,village,114,Kolomerice,14.399437,49.280328
488567484,1003,village,111,Udraz,14.309249,49.281551
491452727,1004,hamlet,33,Ponesice,14.481200,49.105121
601855465,1003,village,147,Hvozdany,14.433230,49.286094
631878480,1003,village,211,Mysenec,14.208999,49.223213

Mã này sẽ chuyển đổi một tệp CSV thành một tệp khác: -

from unidecode import unidecode
with open("/path/to/original.csv", "r") as input_file:
    with open("/path/to/converted.csv","w") as output_file:
        output_file.write(unidecode(input_file.read()))

1
Hmm, có vẻ như tôi không thể tránh xuất trong CSV và nhập trở lại. Tôi có thể sẽ đề xuất tính năng như cải thiện cho QGIS.
Juhele 17/03/2017
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.