QGIS: ¿es posible convertir caracteres acentuados en caracteres normales en la tabla de atributos? [cerrado]

9

Tengo un conjunto de datos OSM que contiene nombres con caracteres nacionales (esto es exportación CSV, pero lo tengo en 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

y me gustaría converte de esta forma:

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

donde se eliminan los acentos, así que en lugar de "č, š, ř, á", etc., tiene "c, s, r, a". No es necesario que esté editando la columna actual; podría estar creando una nueva columna con nombres convertidos.

Actualmente voy a utilizar alguna herramienta en línea como esta para el archivo CSV, pero sería genial si pudiera resolver esto en QGIS directamente.

Juhele
fuente
1
¿Por qué fuera de tema? Principalmente solicito una solución directa en QGIS sin necesidad de exportar mis datos a CSV e importarlos nuevamente.
Juhele

Respuestas:

9

Sí, es posible con la biblioteca unidecode en python ... ( documentación ). Esto intenta encontrar el equivalente ASCII más cercano a cada carácter 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))

salida:-

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

Este código convertirá un archivo CSV en otro: -

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()))
Steven Kay
fuente
1
Hmm, parece que no puedo evitar exportar en CSV e importar de nuevo. Probablemente sugeriré características como la mejora de QGIS.
Juhele