在DB-Manager中编辑表后,如何刷新图层的属性表?


14

在DB-Manager中编辑表(例如添加列)后,是否有任何方法可以刷新图层的属性表?


changeDataSource插件是最快的方法,可与.csv文件很好地配合使用
scataldi

Answers:


13

简短而甜美:

  1. 安装changeDataSource插件
  2. 在“层”面板中的层上单击鼠标右键,然后选择Change vector datasource
  3. 在出现的对话框中,只需单击OK而不更改任何设置。

基本上,您是将矢量数据源“更改”为已经存在的数据源,但这迫使QGIS重新加载图层定义。

在Linux Mint 17.2上的QGIS 2.14中进行了测试。


我必须重新选择相同的数据源才能正常工作。
sladstaetter

4

假设您使用的是PostGIS数据库,则可以使用以下ANALYSE功能更新关注表的统计信息:http : //www.postgresql.org/docs/current/static/sql-analyze.html

在您的情况下,可以通过按所附图像中标记的按钮并ANALYSE在窗口中也执行标记的语句来执行DB-manager中的语句。查询将为ANALYSE yourschema.yourtable.analyze命令应更新您的表,以便再次访问信息时,它应反映您所做的更改。 数据库管理器窗口


1
这不会刷新属性表(右键单击图层->打开属性表)。
Lunar Sea

2

如果您要在更改列后刷新QGIS中的表,我是否理解?

据我所知,只有关闭并打开项目或重新添加表才能实现此目的。只要您将默认样式保存在数据库中,这可能是最快的方法。

当在字段计算器中添加一列时,更改立即可见,但是数据库管理器在定义字段类型时提供了更多控制权,因此我理解为什么这可能不是解决方案。


是否有任何Python命令来刷新属性表?我还注意到,“显示功能计数”会忽略在DB-Manager中所做的更改(添加功能/删除功能)。
Lunar Sea

3
layer.dataProvider().forceReload()应该可以解决问题
Matthias Kuhn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.