QGISでユニークIDを作成できる関数を3つ紹介します。

ユニークIDとは地物毎に固有(ダブりのない)の番号や文字列のことです。
固有の番号を付加すると、CSVファイルとの結合、プライマリキーを使ったラベル位置の指定、順番を維持するなどの目的で利用できます。

GeoPackage形式では「fid」フィールドがその役目となりますが、Shapeファイルにはありません。

新しく地物を追加した際に自動的にユニークIDが入力される方法も紹介します。

既存の地物にユニークIDを作成できる関数

以下の手順で、フィールド計算機で新規フィールドを作成し「式」欄にユニークIDを作成できる関数を入力します。

  • 属性テーブルを開く:レイヤパネルのラベルを表示するレイヤ名の上で右クリックし、出てきたメニューから「属性テーブルを開く」を選択
  • 編集モードに切り替える:ツールバーの一番左にある鉛筆マークのアイコンをクリック
  • フィールド計算機を開く:ツールバーの右の方にあるそろばんマークのアイコンをクリック

「フィールド計算機」ウインドウが表示されるので以下のように設定を行います。

  • 「新しいフィールドを作る」にチェックを入れる
  • 出力する属性(フィールド)の名前」欄に「ID」など好きな名称を入れる
  • 「フィールド型」欄は「テキスト(string)」を選択
  • 「フィールド長」欄は「38」以上の数字か「0」を入力
  • 「式」欄にこの後紹介するユニークIDを作成する関数を入力
trygis017 01 min
ユニークID入力用のフィールドを作成する。「式」欄にはユニークIDを入力できる関数を入力する

それでは、ユニークIDを作成できる関数を3つ紹介します。

uuid()

固有の38文字の英数字が記録されます。
「式」欄には以下の関数を入力する。

uuid()
trygis017 02 min
「uuid()」関数で付加されたユニークID

$id

地物IDが入力される。連番が記録される。
「式」欄には以下の関数を入力する。

$id
trygis017 03 min
「$id」関数で付加されたユニークID

@row_number

現在の行番号が入力される。連番が記録される。
「式」欄には以下の関数を入力する。

@row_number
trygis017 04 min
「@row_number」関数で付加されたユニークID

新規に作成する地物に自動でユニークIDを入力する方法

上記の方法でフィールドを作成した場合、既存の地物にはユニークIDが入力されますが、新規に作成した地物には付加されずNULL(データ無し)となってしまいます。

trygis017 05 min
上記の手順でフィールドを作成後に追加した地物の行では「NULL」となっておりユニークIDが記録されていない

新規に作成した地物にユニークIDを自動的に作成する場合は、次のような手順で設定を行います。

まず「uuid()」関数を使用してユニークIDが入力されたフィールドを作成します。

レイヤパネルのレイヤ名の上で右クリックし、出てきたメニューから「プロパティ」を選択します。
そして「レイヤプロパティ」ウインドウの左側に並んでいる文字列から「属性フォーム」を選択します。

するとウインドウの表示が変わります。
左側に「利用可能なウィジェット」欄があり、「Fields」行にレイヤのフィールド一覧が表示されています。
このフィールド一覧からユニークIDが入力されたフィールドを選択します。

trygis017 06 min
レイヤプロパティの「属性フォーム」を選択し、「利用可能なウィジェット」欄でユニークIDを作成するフィールド(この例では「ID」)を選択する

自動入力の設定は「デフォルト」欄で行います。

この欄に入力した内容は、地物を追加した際に属性値として付加されます。
そこでユニークIDを作成する以下の関数を入力します。

uuid()
trygis017 07 min
「デフォルト値」欄にユニークIDを作成する「uuid()」関数を入力した

ここまで設定できたら「OK」をクリックします。
これで新規に地物を追加するたびに、自動的にuuid()関数により作成されたユニークIDが入力されます。

trygis017 08 min
新規に地物を追加した際の確認ウインドウ。「ID」フィールドにユニークIDが入力されている