Bazı niteliklerin İngilizce olmayan ÅÄÖ karakterlerini içerdiği birkaç şekil dosyam var. Bazı sorgular bu karakterlerle (özellikle ChangeDetector ) çalışmadığından, bunları basit bir komut dosyasıyla önceden değiştirmeye ve yeni dizeleri başka bir alana eklemeye çalıştım.
Ancak, karakterlerde değişiklik iyi çalışır ancak alanı arcpy.UpdateCursor ile güncellemez.
Bunu çözmenin uygun bir yolu nedir?
Ben de aynı hata ile kod bloğuna "kod" gönderirken Alan Hesaplayıcı üzerinden yapmaya çalıştım.
Hata mesajı:
Çalışma zamanı hatası Geri izleme (en son çağrı son): "c: /gis/python/teststring.py" Dosyasında "", satır 1, dosya = val (kod (prow.Typkod)) UnicodeEncodeError: 'ascii' codec bileşeni 3 konumunda u '\ xc4' karakterini kodlayamıyor: sıra değeri aralıkta değil (128)
Kod:
# -*- coding: cp1252 -*-
def code(infield):
data = ''
for i in infield:
## print i
if i == 'Ä':
data = data + 'AE'
elif i == 'ä':
data = data + 'ae'
elif i == 'Å':
data = data + 'AA'
elif i == 'å':
data = data + 'aa'
elif i == 'Ö':
data = data + 'OE'
elif i == 'ö':
data = data + 'oe'
else:
data = data + i
return data
shp = r'O:\XXX\250000\DB\ArcView\shape.shp'
prows = arcpy.UpdateCursor(shp)
for prow in prows:
val = code(unicode(str(prow.Typkod), "utf-8"))
prow.Typkod_U = val
print val
prows.updateRow(prow)
Typkod değerleri şu türdedir: [D, D, S, DDRÄ, TRÄ] vb.
Windows 7'de ArcMap Basic (10.1) kullanıyorum.
Yeni Hata iletisi:
Çalışma zamanı hatası Geri izleme (en son çağrı son olarak): "c: /gis/python/teststring.py" dosyasında "satır", satır 1, val = kod (unicode (str (satır). Typkod), "utf-8")) UnicodeEncodeError: 'ascii' codec bileşeni 3 konumunda u '\ xc4' karakterini kodlayamıyor: aralıklı aralıkta değil (128)
>>> val
'DDRÄ'
>>> type(val)
tür 'str'
İşlevden çıktı bir şekilde yanlış gibi görünüyor. ÅÄÖ dahil edildiğinde geri döner data = u'DDR\xc4'
ve niyetim gibi değil data = 'DDRAE'
. Buna neyin sebep olabileceğine dair herhangi bir öneriniz var mı?