J'ai un problème avec postgresql et QGIS:
- Je peux ajouter des points / lignes / polygones et un champ de remplissage
Mais je ne peux pas:
- supprimer des points / lignes / polygones
- modifier des points / lignes / polygones (déplacer ou modifier un champ)
ex: dbname = 'Europe' host = localhost port = 5432 user = 'postgres' sslmode = disable key = 'tid' estimationmetadata = true srid = 900913 type = Table de points = "public". "planet_osm_point" (way) sql =
QGIS est connecté en tant que niveau administrateur à la base de données. Avec pdAdmin III je peux tout faire (créer, supprimer, modifier ...)
La base de données postgresql est importée d'OSM avec osm2pgsql .
Sur une autre couche, comme .shp, je n'ai pas ce problème.
Une idée ?
Configuration: Ubuntu 14.04 / Posgresql 9.4 / QGIS 2.10
qgis
postgresql
editing
osm2pgsql
Mathieu
la source
la source
Réponses:
Fixé. Le problème était qu'il n'y avait pas de clé primaire.
Dans pgAdmin, faites cette demande.
ALTER TABLE tableName ADD PRIMARY KEY (id);
Exemple pour la table planet_osm_line et la définition de la colonne osm_id, comme clé primaire:
ALTER TABLE planet_osm_line AJOUTER UNE CLÉ PRIMAIRE (osm_id);
jusqu'à ce que osm_id soit unique.
la source
La solution consiste à créer une clé primaire, comme déjà mentionné.
Mais de par sa conception,
osm2pgsql
ne garantit pas qu'ilosm_id
est unique. Il peut produire plusieurs lignes avec le même osm_id .Pour éditer des
planet_osm_*
tables dans QGIS, il est sage d'ajouter une autre colonne id, par exemplegid
.Pour ajouter une
gid
colonne unique :QGIS a des problèmes si la colonne de géométrie est juste GÉOMÉTRIE. Certaines requêtes peuvent échouer. J'ai trouvé utile de changer la
planet_osm_polygon
géométrieMultiPolygon
avec:la source
Je pense que c'est une question clé primaire. Votre table doit en avoir une et celle-ci est reconnue lorsque vous affichez la table via PGAdmin.
J'ai eu ce même problème, mais j'ai rechargé la couche avec un champ de clé primaire appelé ID (arbitraire) et tous mes outils d'édition sont maintenant actifs sur la barre d'outils.
À l'aide de SQL, vous pouvez ajouter une colonne OID de type de données «série» et créer une clé primaire à l'aide de cette instruction:
À l'aide d'une interface graphique, vous pouvez recharger votre couche avec une clé primaire qui sera reconnue par la base de données et donc PostGIS et QGIS:
De là, revenez à PGAdmin, connectez-vous à votre base de données et cliquez sur la table que vous venez de recréer - vous pouvez maintenant voir si la colonne OID est reconnue:
la source