У меня проблема с postgresql и QGIS:
- Я могу добавить точки / линии / полигоны и заполнить поле
Но я не могу:
- удалить точки / линии / полигоны
- изменить точки / линии / полигоны (переместить или изменить поле)
Пример: dbname = 'Европа' хост = порт локального хоста = 5432 пользователь = 'postgres' sslmode = отключить ключ = 'tid' оценочные метаданные = true srid = 900913 type = таблица точек = "public". "planet_osm_point" (way) sql =
QGIS подключен как администраторский уровень к базе данных. С помощью pdAdmin III я могу делать все (создавать, удалять, изменять ...)
База данных postgresql импортируется из OSM с помощью osm2pgsql .
На другом слое, например .shp, у меня нет этой проблемы.
Любая идея ?
Конфиг: Ubuntu 14.04 / Posgresql 9.4 / QGIS 2.10
qgis
postgresql
editing
osm2pgsql
Матье
источник
источник
Ответы:
Исправлена. Проблема была не в первичном ключе.
В pgAdmin сделайте этот запрос.
ALTER TABLE tableName ADD PRIMARY KEY (id);
Пример для таблицы planet_osm_line и установки столбца osm_id в качестве первичного ключа:
ALTER TABLE planet_osm_line ДОБАВИТЬ ПЕРВИЧНЫЙ КЛЮЧ (osm_id);
пока osm_id является уникальным.
источник
Решение состоит в том, чтобы создать первичный ключ, как уже упоминалось.
Но по дизайну
osm2pgsql
не гарантирует, чтоosm_id
это уникально. Может выдавать несколько строк с одинаковым osm_id .Для редактирования
planet_osm_*
таблиц в QGIS целесообразно, например, добавить еще один столбец idgid
.Чтобы добавить уникальный
gid
столбец:У QGIS есть проблемы, если столбец геометрии - это просто ГЕОМЕТРИЯ. Некоторые запросы могут потерпеть неудачу. Я нашел полезным изменить
planet_osm_polygon
геометрию наMultiPolygon
:источник
Я думаю, что это основной вопрос. Ваша таблица должна иметь такую, которая распознается при просмотре таблицы через PGAdmin.
У меня была такая же проблема, но я снова загрузил слой с полем первичного ключа с именем ID (произвольно), и все мои инструменты редактирования теперь активны на панели инструментов.
Используя SQL, вы можете добавить столбец OID типа «serial» и создать первичный ключ, используя следующую инструкцию:
Используя графический интерфейс, вы можете перезагрузить ваш слой с первичным ключом, который будет распознан базой данных и, следовательно, PostGIS и QGIS:
Оттуда вернитесь в PGAdmin, подключитесь к своей базе данных и нажмите на таблицу, которую вы только что создали, - теперь вы можете увидеть, распознан ли столбец OID:
источник