test.py
# -*- coding: utf-8 -*-
from PyQt4.QtCore import QVariant
layer=iface.activeLayer()
if layer is None :
print(u'Il n'y a pas de couche active.')
layer.startEditing()
layer.dataProvider().addAttributes( [
QgsField('TestString', QVariant.String),
QgsField('TestInt', QVariant.Int),
QgsField('TestDouble', QVariant.Double)
] )
layer.updateFields()
layer.commitChanges()
--from PyQt4.QtCore import QVariant
est requis pour QVariant.String
--Travailler sans layer.startEditing ()
TestString_1
.test.py
# -*- coding: utf-8 -*-
from PyQt4.QtCore import QVariant
layer=iface.activeLayer()
if layer is None :
print(u'Il n'y a pas de couche active.')
attributeName='TestString'
layer.startEditing()
for feature in layer.getFeatures():
feature[attributeName]='ABC'
layer.updateFeature(feature)
layer.commitChanges()
--Dans ce qui précède, définissez la valeur du champ TestString de toutes les entités de la couche sur ABC (écrasement)
--A la place de feature [attributeName] = 'ABC'
, vous pouvez utiliser feature.setAttribute (attributeName,' ABC ')
--L' "expression" est ici une expression décrite dans le générateur d'expression (↓↓). -
test.py
# -*- coding: utf-8 -*-
layer=iface.activeLayer()
if layer is None :
print(u'Il n'y a pas de couche active.')
req = QgsFeatureRequest().setFilterExpression( u'"id" = \'A14_000_1234\'' )
features = layer.getFeatures( req )
attributeName='TestString'
layer.startEditing()
for feature in features:
feature.setAttribute(attributeName, 'XYZ')
layer.updateFeature(feature)
layer.commitChanges()
de ʻA14_000_1234
.--Le ** nom ** du champ (colonne / colonne / attribut) est décrit entre guillemets. --La ** valeur (chaîne de caractères) ** du champ est décrite entre guillemets simples.
test.py
# -*- coding: utf-8 -*-
layer=iface.activeLayer()
if layer is None :
print(u'Il n'y a pas de couche active.')
req = QgsFeatureRequest().setFilterExpression( u'"TestInt" > 2000' )
features = layer.getFeatures( req )
layer.setSelectedFeatures([featur.id() for featur in features])
--Dans l'argument de setSelectedFeatures ()
, définissez la ** liste d'identifiants ** de la fonctionnalité, pas la liste d'entités (d'instances) de la fonctionnalité.
- void QgsVectorLayer::setSelectedFeatures ( const QgsFeatureIds & ids )
test.py
# -*- coding: utf-8 -*-
layerName = 'test lay01 Polygon'
layer = None
for layer_ in QgsMapLayerRegistry.instance().mapLayers().values():
if layer_.name() == layerName:
layer = layer_
break
if layer is None :
print(u'couche"{0}"N'existe pas.'.format(layerName))
Recommended Posts