DB-Managerでテーブルを編集した後、レイヤーの属性テーブルを更新する方法は?


14

DBマネージャーでテーブルを編集した後(列を追加するなど)、レイヤーの属性テーブルを更新する方法はありますか?


changeDataSourceプラグインは最速の方法であり、.csvファイルで非常によく機能します
-scataldi

回答:


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マネージャー内でステートメントを実行できます。クエリは次のようになりANALYSE yourschema.yourtableます。analyzeコマンドはテーブルを更新する必要があります。そのため、再度情報にアクセスすると、行った変更が反映されます。 DBマネージャーウィンドウ


1
これは属性テーブルを更新しません(レイヤーを右クリック->属性テーブルを開く)。
月の海

2

列に変更が加えられた後にQGISでテーブルを更新するつもりであれば、よく理解できますか?

私の知る限り、プロジェクトを閉じてから開くか、テーブルを再度追加するだけでこれが実現します。データベースにデフォルトのスタイルを保存している限り、これが最速の方法かもしれません。

フィールド計算機で列を追加すると、変更はすぐに表示されますが、DBマネージャーはフィールドタイプの定義をより細かく制御できるため、なぜそれが解決策ではないのか理解できます。


属性テーブルを更新するPythonコマンドはありますか?また、「機能カウントを表示」はDBマネージャーで行われた変更(機能の追加/機能の削除)を無視することにも気付きました。
月の海

3
layer.dataProvider().forceReload()トリックを行う必要があります
マティアスクーン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.