Как обновить таблицу атрибутов слоя после редактирования таблицы в DB-Manager?


14

Есть ли способ обновить таблицу атрибутов слоя после редактирования таблицы (например, добавить столбец) в DB-Manager?


плагин changeDataSource является самым быстрым способом и очень хорошо работает с файлами .csv
scataldi

Ответы:


13

Коротко и сладко:

  1. Установите плагин changeDataSource .
  2. Щелкните правой кнопкой мыши слой на панели слоев и выберите Change vector datasource.
  3. В появившемся диалоговом окне просто нажмите OKбез изменения каких-либо настроек.

По сути, вы «меняете» источник векторных данных на тот, который уже был, но это заставляет QGIS перезагрузить определение слоя.

Протестировано в QGIS 2.14 на Linux Mint 17.2.


Мне пришлось выбрать один и тот же источник данных, чтобы это работало.
Sladstaetter

4

Предполагая, что вы работаете с базой данных PostGIS, вы можете обновить статистику интересующей вас таблицы, используя ANALYSEфункцию: http://www.postgresql.org/docs/current/static/sql-analyze.html.

В вашем случае вы можете выполнить инструкцию внутри DB-менеджера, нажав кнопку, отмеченную на прикрепленном изображении, и выполнив ANALYSEинструкцию в окне, которое также отмечено. Запрос будет следующим: ANALYSE yourschema.yourtableкоманда анализа должна обновить вашу таблицу, чтобы при повторном доступе к информации она отражала внесенные вами изменения. Окно менеджера БД


1
Это не обновляет таблицу атрибутов (щелкните правой кнопкой мыши на слое -> Открыть таблицу атрибутов).
Лунное море

2

Хорошо ли я понимаю, если вы хотите обновить таблицу в QGIS после внесения изменений в столбцы?

Насколько я знаю, только закройте и откройте проект или повторно добавьте таблицу, чтобы это произошло. Пока вы сохранили стиль по умолчанию в базе данных, это может быть самый быстрый способ.

Когда столбец добавляется с помощью Калькулятора полей, изменения сразу видны, но менеджер БД предлагает больше возможностей для определения типа поля, поэтому я понимаю, почему это не может быть решением.


Есть ли какая-либо команда Python для обновления таблицы атрибутов? Я также заметил, что «Show Feature Count» игнорирует изменения, сделанные в DB-Manager (добавление функций / удаление функций).
Лунное море

3
layer.dataProvider().forceReload()должен сделать трюк
Матиас Кун
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.