QGIS - aksanlı karakterleri öznitelik tablosunda normal karakterlere dönüştürmek mümkün mü? [kapalı]


9

Ulusal karakterler ile isimleri içeren OSM veri kümesi var (bu CSV ihracat, ama SHP var):

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

ve bunları bu forma dönüştürmek istersiniz:

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

aksanlar kaldırılır, böylece "č, š, ř, á" vb. yerine "c, s, r, a" vardır. Geçerli sütunu düzenlemek zorunda değilim - dönüştürülmüş isimlerle yeni sütun yaratıyor olabilir.

Şu anda CSV dosyası için böyle bir çevrimiçi araç kullanacağım , ancak bunu doğrudan QGIS'de çözebilirsem harika olurdu.


1
neden konu dışı? Öncelikle verilerimi CSV'ye dışa aktarmaya ve tekrar içe aktarmaya gerek kalmadan QGIS'te doğrudan çözüm istiyorum.
Juhele

Yanıtlar:


9

Evet, python'daki unidecode kütüphanesi ile mümkündür ... ( belgeler ). Bu, her unicode karaktere en yakın ASCII eşdeğerini bulmaya çalışır.

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

çıktı:-

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

Bu kod bir CSV dosyasını diğerine dönüştürür: -

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, CSV'de dışa aktarmayı ve geri içe aktarmayı engelleyemiyorum. Muhtemelen QGIS için iyileştirme gibi bir özellik önereceğim.
Juhele

Python alanı hesap makinesini kullanıyorsanız bir csv oluşturmaktan kaçınabilirsiniz. Öncelikle kütüphaneyi QGIS pythonuna yüklemelisiniz. İşte bir açıklama. Sonra python gelişmiş alan hesap makinesini kullanabilirsiniz. Küresel olacak from unidecode import unidecodeve formül olacakvalue = unidecode(<name>)
Corentin Lemaitre
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.