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 в python ... ( документація ). Це намагається знайти найближчий еквівалент ASCII кожному символу 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))

вихід: -

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.
Джухеле

Ви можете уникнути створення CSV, якщо використовувати калькулятор поля python. Спочатку потрібно встановити бібліотеку в пітоні QGIS. Ось опис. Тоді ви можете використовувати розширений калькулятор поля python. Глобальним буде from unidecode import unidecodeі формула будеvalue = unidecode(<name>)
Корентін Лемайтре
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.