QGIS - เป็นไปได้ไหมที่จะแปลงอักขระที่เน้นเสียงเป็นอักขระปกติในตารางแอตทริบิวต์ [ปิด]


9

ฉันมีชุดข้อมูล OSM ที่มีชื่อที่มีตัวอักษรประจำชาติ (นี่คือการส่งออก CSV แต่ฉันมีใน 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

และต้องการแปลงเป็นแบบฟอร์มนี้:

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

โดยที่สำเนียงนั้นถูกลบออกไปแทนที่จะเป็น "č, š, ř, á" เป็นต้นคุณมี "c, s, r, a" ฉันไม่จำเป็นต้องแก้ไขคอลัมน์ปัจจุบัน - อาจสร้างคอลัมน์ใหม่ที่มีชื่อที่แปลงแล้ว

ฉันกำลังจะใช้เครื่องมือออนไลน์บางอย่างเช่นนี้สำหรับไฟล์ CSV แต่มันจะดีมากถ้าฉันสามารถแก้ปัญหานี้ใน QGIS โดยตรง


1
ทำไมถึงปิดหัวข้อ? ฉันขอวิธีแก้ปัญหาโดยตรงใน QGIS เป็นหลักโดยไม่จำเป็นต้องส่งออกข้อมูลของฉันไปยัง CSV และนำเข้าอีกครั้ง
Juhele

คำตอบ:


9

ใช่เป็นไปได้ด้วยunidecode library ใน python ... ( เอกสารประกอบ ) สิ่งนี้พยายามค้นหา ASCII ที่ใกล้เคียงที่สุดซึ่งเทียบเท่ากับอักขระยูนิโค้ดแต่ละตัว

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))

เอาท์พุท: -

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

รหัสนี้จะแปลงไฟล์ CSV หนึ่งไฟล์เป็นไฟล์อื่น: -

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
อืมดูเหมือนว่าฉันไม่สามารถหลีกเลี่ยงการส่งออกเป็น CSV และนำเข้ากลับมาได้ ฉันอาจจะแนะนำคุณสมบัติเช่นการปรับปรุงสำหรับ QGIS
Juhele

คุณสามารถหลีกเลี่ยงการสร้าง csv หากคุณใช้เครื่องคิดเลขแบบหลาม ก่อนอื่นคุณต้องติดตั้งไลบรารี่ใน QGIS python นี่คือคำอธิบาย จากนั้นคุณสามารถใช้เครื่องคำนวณฟิลด์ขั้นสูงของไพ ธ อน โลกจะเป็นfrom unidecode import unidecodeและสูตรจะเป็นvalue = unidecode(<name>)
Corentin Lemaitre
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.