Page 5 sur 23
Edit layer (geopackage)
from qgis.core import (QgsVectorLayer, QgsField, QgsFields, QgsFeature, QgsGeometry, QgsPointXY, QgsVectorFileWriter, QgsCoordinateReferenceSystem, QgsCoordinateTransformContext) from qgis.PyQt.QtCore import QVariant # Define path and name cheminGeopackage = r'C:\\Users\\georg\\Downloads\\mon_geopackage.gpkg' nomCouche = 'Mes points' monEpsg = 'EPSG:4326' # QGIS projetc project = QgsProject.instance() project.removeAllMapLayers() project.clear() iface.mapCanvas().refresh() # SRID/CRS/projection crs = QgsCoordinateReferenceSystem(monEpsg) # Layer fields = QgsFields() fields.append(QgsField('ville', QVariant.String)) fields.append(QgsField('spot', QVariant.String)) # Memory coucheTemporaire = QgsVectorLayer('Point?crs=' + monEpsg, nomCouche, 'memory') monProvider = coucheTemporaire.dataProvider() monProvider.addAttributes(fields) coucheTemporaire.updateFields() # Features f = QgsFeature() f.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(2.0751661, 49.0397097))) f.setAttributes(['Cergy-Pontoise', 'Les Chênes 1']) monProvider.addFeatures([f]) f = QgsFeature() f.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(2.0741189, 49.0388195))) f.setAttributes(['Cergy-Pontoise', 'Les Chênes 2']) monProvider.addFeatures([f]) f = QgsFeature() f.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(2.0750590, 49.0387535))) f.setAttributes(['Cergy-Pontoise', 'Maison des étudiants']) monProvider.addFeatures([f]) coucheTemporaire.updateExtents() # Save options = QgsVectorFileWriter.SaveVectorOptions() options.driverName = 'GPKG' options.layerName = nomCouche options.actionOnExistingFile = QgsVectorFileWriter.CreateOrOverwriteLayer res, err = QgsVectorFileWriter.writeAsVectorFormatV2( coucheTemporaire, cheminGeopackage, QgsCoordinateTransformContext(), options ) if res == QgsVectorFileWriter.NoError: print('GeoPackage créé avec succès :', cheminGeopackage) # Ouvrir mes_points_geopackage = QgsVectorLayer(cheminGeopackage, nomCouche, 'ogr') project.addMapLayer(mes_points_geopackage) else: print('Erreur :', err)