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 напрямую.

Juhele
источник
1
почему не по теме? Я прежде всего прошу прямого решения в QGIS без необходимости экспортировать мои данные в CSV и импортировать снова.
Juhele

Ответы:

9

Да, это возможно с библиотекой unidecode в 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