Daha çox

Unicode sahə dəyəri ilə atributları necə seçmək olar?


Bir simli sahə (myfield) ilə QGIS 2.10-da bir atribut cədvəlim var və bu sahənin bənzərsiz dəyərlərinə əsasən seçim etmək istədiyim zaman ümumiyyətlə seçim etmirəm.

> idxmyfield = mylayer.fieldNameIndex ("myfield")> uniquevalues ​​= mylayer.uniqueValues ​​(idxmyfield)> uniquevues> [u'avalue ', u'bvalue']> type (unikalevals [0])> > y = len (unikal qiymətləndirmələr)> (y) aralığında x üçün: it = mylayer.getFeatures (QgsFeatureRequest (). setFilterExpression (u '"myfield" = {0}'. format (unikalevals [x]))) mylayer. setSelectedFeatures ([f.id () içindəki f üçün]) seçim = mylayer.selectedFeatures ()

Tamsayı dəyərləri olan başqa bir sahə istifadə etsəm, kod işləyir. Ancaq sahənin dəyərləri unicode / stringdirsə, heç bir şey seçmir.

Beləliklə, unicode növü simdən fərqlənir və ya simli növüdür? Əgər belədirsə, növü unicode-dan string-ə necə dəyişə bilərəm? Və ya istədiyim seçimi əldə etmək üçün ifadəni necə dəyişdirməliyəm?


Unicode simli bir simli bu şəkildə çevirə bilərsiniz:

s = u'UNICODE 'növü (lər)  t = str (s) növü (t) 

Ancaq başqa bir məsələ budur ki, simli olduqda şərti mübahisənin ətrafındakı tək sitatları qaçırdın. Vəziyyətiniz simli olduqda, filtr ifadəsini aşağıdakı kimi formatlaşdırmalısınız:

setFilterExpression (u '"myfield" = ' {0}  ". format (myfield [x]))

Unutmayın: bir sitat simvolunu bir sitat içərisinə əlavə etmək üçün ondan qaçmalısınız.

>>> çap '"sahə adı ikiqat tırnaqda" = ' tək sitatdakı şərt  "" sahə adı cüt tırnak içində "= 'tək sitatdakı şərt'


Videoya baxın: Sirdas anons Atributlar (Oktyabr 2021).