Suite

Pourquoi mon code PyQGIS pour enregistrer les entités sélectionnées entraîne-t-il des géométries modifiées ?

Pourquoi mon code PyQGIS pour enregistrer les entités sélectionnées entraîne-t-il des géométries modifiées ?


Dans un plugin, je souhaite enregistrer les fonctionnalités sélectionnées dans un nouveau fichier de formes. Je cherche et j'essaie (Comment puis-je créer un nouveau calque à partir de la sélection actuelle ? pour créer un nouveau calque et y écrire les champs et caractéristiques sélectionnés :

vl = QgsVectorLayer("Polygon", "points_temporaires", "mémoire") pr = vl.dataProvider() # ajouter une géométrie et des champs pr.addAttributes(champs) pr.addFeatures(caractéristiques)

Mais ce résultat n'est pas ce que je voulais. J'ai compris:

Dans cette image, le polygone sélectionné est jaune et le polygone rose est celui enregistré sous un autre fichier de formes. La géométrie n'est donc pas tout à fait correcte et j'ai besoin de la copie parfaite de l'original.

Quelqu'un sait comment l'obtenir ?


Je peux utiliser l'algorithme de Processing Toolbox, "Enregistrer les fonctionnalités sélectionnées".


Vous pouvez enregistrer les entités sélectionnées de votre couche active dans un fichier Shapefile en appelant simplementQgsVectorFileWriter.writeAsVectorFormatet en passant leuniquementSélectionnéparamètre commeVrai:

layer = iface.activeLayer() res = QgsVectorFileWriter.writeAsVectorFormat( layer, '/tmp/selectedFeatures.shp', 'System', None, #crs 'ESRI Shapefile', True #onlySelected ) if res != QgsVectorFileWriter.NoError : print 'Numéro d'erreur :', res else : print "Terminé !"

La couche résultante contiendra tous les champs de la couche source.