Suite

Modification des calques vectoriels


Je souhaite modifier et supprimer qgsfeatures dans qgsvectorlayer. Vectorlayer contient la table postgis.

QgsVectorDataProvider::capabilitiesString() renvoie la chaîne suivante : Ajouter des entités, Ajouter des attributs, Supprimer des attributs, Accès rapide aux entités à l'ID, Simplifier les géométries, Simplifier les géométries avec validation topologique

Il semble donc que je puisse uniquement ajouter de nouvelles fonctionnalités, pas modifier/supprimer déjà créé. Pourquoi?


Vous devez utiliser la table attributaire pour cela, où vous pouvez voir toutes les données à l'intérieur de la table que vous avez ajoutée. Voir ici pour une introduction détaillée. En bas, vous voyez un marqueur-symbole que vous pouvez utiliser pour éditer les données.


Vous pouvez supprimer des entités si vous connaissez leur ID en chargeant la couche dans le canevas à partir du gestionnaire de base de données :

Puis de la Console Python, vous pouvez utiliser:

layer = qgis.utils.iface.activeLayer() layer.dataProvider().deleteFeatures([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

Puis de la Gestionnaire de bases de données > Tableau, sélectionnez le Exécuter l'analyse du vide outil pour mettre à jour la table de données :

Vous devriez alors voir votre liste de lignes mise à jour :

J'espère que cela t'aides!


Eh bien, il semble que j'ai trouvé la réponse à ma question.

Les tables Postgres générées avec osm2pgsql n'ont pas de clé primaire. Postgis ne parvient pas à modifier/supprimer des lignes dans ces tables, mais permet d'ajouter de nouvelles lignes.

L'ajout de la clé primaire à ma table a résolu le problème.