Бештар

Чӣ тавр атрибути матнро аз рӯи аломатҳо дар QGIS тақсим кардан мумкин аст?

Чӣ тавр атрибути матнро аз рӯи аломатҳо дар QGIS тақсим кардан мумкин аст?


Оё мумкин аст як сутуни нав, масалан, номгузорӣ карда шавад "Озмоиш" ва қисми якуми сутуни "Ном" -ро бо тақсим нигоҳ доред-?

Дар зер бубинед, ки чӣ гуна он бояд чунин бошад:


Бале шумо метавонед.

Ҳисобкунаки Field -ро бо ибораи зерин истифода баред:

чап ("Ном", strpos ("Ном", '-'))

Функсияи strpos () мавқеи индекси аломати '-' аввалро бармегардонад ва функсияи left () сатрро пеш аз он мавқеъ "trims" мекунад.


Шумо метавонед калкулятори Field -ро бо ибораи зерин истифода баред:

string_to_array ("Nombre", ")

Функсияи string_to_array (), сатрро бо истифодаи ҷудокунандаи додашуда ба массив тақсим мекунад.

Агар шумо хоҳед, ки мавқеи баъзе массивро дошта бошед, шумо метавонед мавқеъро илова кунед, ва он арзиши онро бармегардонад. ҳамин тавр:

string_to_array ("Nombre", ") [2]


Ҳалли имконпазир тавассути PyQGIS.

Фарз мекунем, ки қабати нуқтаӣ вуҷуд дорад"баъзе_пунктҳо"бо ҷадвали атрибутӣ, ба расм нигаред ба поён.

Идома боВаслкунакҳо> Python Console> Show Editorва скриптро ба поён гузоред

аз PyQt5.QtCore воридоти QVariant layer = iface.activeLayer () if not layer.isValid (): print ("Layer not loaded!") layer_provider = layer.dataProvider () layer_provider.addAttributes ([QgsField ("Test", QVariant) .String)]) layer.updateFields () features = layer.getFeatures () layer.startEditing () for f in features: attrs = {2: f ['info']. Split ('-') [0]} layer_provider .changeAttributeValues ​​({f.id (): attrs}) layer.commitChanges ()

Натиҷа назаррас хоҳад буд


Адабиёт:


Видеоро тамошо кунед: Chuyển shp unicode về tab .TCVN3 không bị lỗi font. QGIS. Bản đồ lâm nghiệp