Page 22 sur 24
Écriture de points
Dans un shape
Le code ci-dessous est inspiré de l'excellent site opensourceoptions.com.
En partant du principe que vous avez ouvert un shape nommé my_points, en 4326, contenant un champ id et un champ text, le code suivant crée un point sur Cergy-Pontoise :
(Attention à &)
layer = QgsProject.instance().mapLayersByName('my_points')[0] layer.startEditing() feat = QgsFeature(layer.fields()) feat.setAttributes([1, 'Cergy-Pontoise']) feat.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(2.0616833, 49.0297879))) layer.addFeature(feat) layer.commitChanges()
Dans un shape, éditer seulement un champ
with edit(layer): for feature in layer.getFeatures(): feature['myfield'] = 'Nouvelle valeur' layer.updateFeature(feature)
Dans une couche virtuelle ou un GEOJSON
Le code ci-dessous est inspiré de l'excellent site opensourceoptions.com.
Nous créons une couche virtuelle de points, y ajoutons deux champs id et name, avant d'y écrire un 1er point :
point_vector = QgsVectorLayer("Point", "my_points", "memory") QgsProject.instance().addMapLayer(point_vector) from qgis.PyQt.QtCore import QVariant pr = point_vector.dataProvider() pr.addAttributes([QgsField("id", QVariant.Int), QgsField("name", QVariant.String)]) point_vector.updateFields() point_vector.startEditing() feat = QgsFeature(point_vector.fields()) feat.setAttributes([1, 'Cergy-Pontoise']) feat.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(2.0616833, 49.0297879))) point_vector.addFeature(feat) point_vector.commitChanges()