QGISで自動的に属性を生成しますか?


11

新しい機能を作成するときにIDを自動生成したい。そのため、新しいポイントを作成するたびに、そのIDは次のように1ずつ増加します。

Feature 1: id 1
Feature 2: id 2
Feature 3: id 3

どうすればこれを攻撃できますか?

回答:


8

レイヤーを右クリックしてに移動しProperties > Fields、をクリックすると、属性テーブルに自動的に表示Text Editされるデフォルト値を設定できますを入力するか式を使用して)。

残念ながら、$rownum(機能の一意のIDを取得する)などの式を使用しても機能しません(機能を最初にコミットする必要があるためです)。ただし、作成された機能の数をカウントして1を追加する関数を作成できます。画像に示すように、関数エディターにアクセスできます。

関数エディター

次に、関数エディターで、新しいファイルを作成するか、既存のファイルを編集して、次のコードを使用します。

from qgis.core import *
from qgis.gui import *

@qgsfunction(args='auto', group='Custom')
def update(feature, parent):
    layer = qgis.utils.iface.activeLayer()
    x = layer.featureCount()
    return x + 1

[ ロード ] をクリックし、その横の[ ]タブに移動してを挿入します。

update()

次に、[ OK ]をクリックすると、プレビュー値が表示されます。

プレビュー

[ OK]、[ 適用]などをクリックします。機能を作成すると、選択したフィールドに一意のIDが自動的に作成されます。



3

新しい機能を作成するときにデフォルト値を設定することはできませんが、次の回避策を試すことができます。

  • フィーチャの作成が完了したら、属性テーブルに移動します
  • フィールド計算機に移動し、idInt型で呼び出される新しい列を作成します
  • @row_number行番号に従って一意の値を生成する値の挿入として
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.