Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Sat 25 April 2020 16:46

jportemer
Juste Inscrit !
Date d'inscription: 25 Aug 2014
Messages: 7

QGIS/pyQgis: Copier .shp et Editer la copie

Bonjour à tous !

Je débute en programmation sous QGIS. Je cherche à copier un shapefile existant et à éditer la copie.
Cela me paraissait simple de prime abord mais à l'usage j'obtiens quand même une erreur ; apparemment la copie est verrouillée en édition.

Voici mon code, exécuté depuis la console QGIS :

Code:

path_in = r" ... "
path_out = r" ... "
QgsVectorFileWriter.deleteShapeFile(path_out)
layer_in = QgsVectorLayer(path_in)

QgsVectorFileWriter.writeAsVectorFormat(layer_in, path_out,"utf-8",driverName="ESRI Shapefile")
layer_out = QgsVectorLayer(path_out)

with edit(layer_out):
    [...]

Et l'erreur que j'obtiens :

Code:

Traceback (most recent call last):
  File "C:\PROGRA~1\QGIS3~1.4\apps\Python37\lib\code.py", line 90, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
  File "<string>", line 20, in <module>
  File "C:/PROGRA~1/QGIS3~1.4/apps/qgis-ltr/./python\qgis\core\additions\edit.py", line 38, in __enter__
    assert self.layer.startEditing()
AssertionError

Désolé si la question a déjà été posée, je dois sûrement manquer quelque chose d'évident. Vous avez des idées ?
Merci beaucoup pour votre aide !

Jean

Hors ligne

 

#2 Mon 27 April 2020 14:50

Njoy
Participant actif
Lieu: Lyon
Date d'inscription: 29 Nov 2018
Messages: 89

Re: QGIS/pyQgis: Copier .shp et Editer la copie

Bonjour,

Quelle est ta version de qgis ?

J'ajoute les couches de cette manière moi :

        layer_out = iface.addVectorLayer(path_out, "nom du calque", "ogr")

L'erreur est dans le bout de code que tu as ajouté ? Ou peut être une erreur dans ta fonction edit ?

Hors ligne

 

#3 Wed 29 April 2020 00:02

jportemer
Juste Inscrit !
Date d'inscription: 25 Aug 2014
Messages: 7

Re: QGIS/pyQgis: Copier .shp et Editer la copie

Hello,

Merci pour ta réponse, je suis sur QGIS 3.4.12.
Le problème venait apparemment de QgsVectorFileWriter.deleteShapeFile, qui ne supprimait pas tous les fichiers du shapefile (.shp et .dbf).

J'ai également remplacé ma ligne par la tienne : layer_out = iface.addVectorLayer(path_out, "nom du calque", "ogr")

Cela fonctionne ainsi très bien !

Merci beaucoup.

Jean

Hors ligne

 

Pied de page des forums

Powered by FluxBB