Estou com um problema com o postgresql e o QGIS:
- Posso adicionar pontos / linhas / polígonos e campo de preenchimento
Mas não posso:
- excluir pontos / linhas / polígonos
- modificar pontos / linhas / polígonos (mover ou modificar campo)
ex: dbname = host da Europa = porta localhost = 5432 usuário = 'postgres' sslmode = chave de desativação = 'tid' estimadometadados = verdadeiro srid = 900913 tipo = Tabela de pontos = "público". "planet_osm_point" (way) sql =
O QGIS está conectado como nível de administrador no banco de dados. Com o pdAdmin III, eu posso fazer tudo (criar, excluir, modificar ...)
O banco de dados postgresql é importado do OSM com osm2pgsql .
Em outra camada, como .shp, não tenho esse problema.
Qualquer ideia ?
Configuração: Ubuntu 14.04 / Posgresql 9.4 / QGIS 2.10
qgis
postgresql
editing
osm2pgsql
Mathieu
fonte
fonte
Respostas:
Fixo. O problema foi que não há chave primária.
No pgAdmin, faça essa solicitação.
ALTER TABLE tableName ADD PRIMARY KEY (id);
Exemplo para a tabela planet_osm_line e configurando a coluna osm_id, como chave primária:
ALTER TABLE planet_osm_line ADD PRIMARY KEY (osm_id);
até que osm_id seja único.
fonte
A solução é criar uma chave primária, como já mencionado.
Mas, por design,
osm2pgsql
não garante que o itemosm_id
seja único. Pode produzir várias linhas com o mesmo osm_id .Para editar
planet_osm_*
tabelas no QGIS, é recomendável adicionar outra coluna de ID, por exemplogid
.Para adicionar uma
gid
coluna exclusiva :O QGIS tem problemas se a coluna geométrica for apenas GEOMETRIA. Algumas consultas podem falhar. Achei útil alterar a
planet_osm_polygon
geometria paraMultiPolygon
com:fonte
Eu acho que esse é um problema de chave primária. Sua tabela deve ter uma que é reconhecida quando você a exibe através do PGAdmin.
Eu tive o mesmo problema, mas recarreguei a camada com um campo de chave primária chamado ID (arbitrário) e todas as minhas ferramentas de edição agora estão ativas na barra de ferramentas.
Usando SQL, você pode adicionar uma coluna OID do tipo de dados 'serial' e criar uma chave primária usando esta instrução:
Usando uma GUI, você pode recarregar sua camada com uma chave primária que será reconhecida pelo banco de dados e, portanto, PostGIS e QGIS:
A partir daí, volte ao PGAdmin, conecte-se ao seu banco de dados e clique na tabela que você acabou de recriar - agora você pode ver se a coluna OID é reconhecida:
fonte