Page 6 sur 16
Edit layers
Add a point in a shape
(Attention to &)
monCheminDeBase = r'C:\\Users\\georg\\Downloads\\' project = QgsProject.instance() project.removeAllMapLayers() project.clear() iface.mapCanvas().refresh() myLayer = QgsVectorLayer(monCheminDeBase + 'peaks_selection/peaks_selection.shp', 'Sommets', 'ogr') project.addMapLayer(myLayer) crs = QgsCoordinateReferenceSystem.fromEpsgId(4326) project.setCrs(crs) project.setEllipsoid('EPSG:4326') # ADD A POINT myPoints = project.mapLayersByName('Sommets')[0] aPoint = QgsVectorLayer(myPoints.dataProvider().dataSourceUri(), '', 'ogr') caps = aPoint.dataProvider().capabilities() if caps & QgsVectorDataProvider.AddFeatures: feat = QgsFeature(aPoint.fields()) feat.setAttributes([1, 'Université de Cergy-Pontoise']) feat.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(2.0616833, 49.0297879))) res, outFeats = aPoint.dataProvider().addFeatures([feat])
Add fields in a layer
myLayer = QgsVectorLayer(r'C:/Users/Georges/Downloads/my layer/new_file.tab', 'new file', 'ogr') myLayerInstance = QgsProject.instance().mapLayersByName('new file')[0] myLayerInstance.startEditing() myLayerInstance.dataProvider().addAttributes( [QgsField("newfield1", QVariant.String), QgsField("newfield2", QVariant.String)]) myLayerInstance.updateFields() myLayerInstance.commitChanges()
Fill a field
myLayerInstance = QgsProject.instance().mapLayersByName('new file')[0] with edit(myLayerInstance): for feature in myLayerInstance.getFeatures(): # A VALUE feature['newfield1'] = 'Abc Xyz' # CONCATENATE OTHER FIELD feature['newfield2'] = feature['name'] + '-' + feature['id'] myLayerInstance.updateFeature(feature)
Create a shape
layer = QgsProject.instance().mapLayersByName('peaks')[0] layer.selectByExpression('"NAME" LIKE \'Aiguille%\'') root = r'C:/Users/georg/Downloads/Aiguilles/' if not os.path.exists(root): os.makedirs(root) file = str(root)+'Aiguilles.shp' writer = QgsVectorFileWriter.writeAsVectorFormat(layer, file, 'utf-8', driverName='ESRI Shapefile', onlySelected=True)