QGISでユニークIDを作成できる関数を3つ紹介します。
ユニークIDとは地物毎に固有(ダブりのない)の番号や文字列のことです。
固有の番号を付加すると、CSVファイルとの結合、プライマリキーを使ったラベル位置の指定、順番を維持するなどの目的で利用できます。
GeoPackage形式では「fid」フィールドがその役目となりますが、Shapeファイルにはありません。
新しく地物を追加した際に自動的にユニークIDが入力される方法も紹介します。
既存の地物にユニークIDを作成できる関数
以下の手順で、フィールド計算機で新規フィールドを作成し「式」欄にユニークIDを作成できる関数を入力します。
- 属性テーブルを開く:レイヤパネルのラベルを表示するレイヤ名の上で右クリックし、出てきたメニューから「属性テーブルを開く」を選択
- 編集モードに切り替える:ツールバーの一番左にある鉛筆マークのアイコンをクリック
- フィールド計算機を開く:ツールバーの右の方にあるそろばんマークのアイコンをクリック
「フィールド計算機」ウインドウが表示されるので以下のように設定を行います。
- 「新しいフィールドを作る」にチェックを入れる
- 「出力する属性(フィールド)の名前」欄に「ID」など好きな名称を入れる
- 「フィールド型」欄は「テキスト(string)」を選択
- 「フィールド長」欄は「38」以上の数字か「0」を入力
- 「式」欄にこの後紹介するユニークIDを作成する関数を入力
それでは、ユニークIDを作成できる関数を3つ紹介します。
uuid()
固有の38文字の英数字が記録されます。
「式」欄には以下の関数を入力する。
uuid()
$id
地物IDが入力される。連番が記録される。
「式」欄には以下の関数を入力する。
$id
@row_number
現在の行番号が入力される。連番が記録される。
「式」欄には以下の関数を入力する。
@row_number
新規に作成する地物に自動でユニークIDを入力する方法
上記の方法でフィールドを作成した場合、既存の地物にはユニークIDが入力されますが、新規に作成した地物には付加されずNULL(データ無し)となってしまいます。
新規に作成した地物にユニークIDを自動的に作成する場合は、次のような手順で設定を行います。
まず「uuid()」関数を使用してユニークIDが入力されたフィールドを作成します。
レイヤパネルのレイヤ名の上で右クリックし、出てきたメニューから「プロパティ」を選択します。
そして「レイヤプロパティ」ウインドウの左側に並んでいる文字列から「属性フォーム」を選択します。
するとウインドウの表示が変わります。
左側に「利用可能なウィジェット」欄があり、「Fields」行にレイヤのフィールド一覧が表示されています。
このフィールド一覧からユニークIDが入力されたフィールドを選択します。
自動入力の設定は「デフォルト」欄で行います。
この欄に入力した内容は、地物を追加した際に属性値として付加されます。
そこでユニークIDを作成する以下の関数を入力します。
uuid()
ここまで設定できたら「OK」をクリックします。
これで新規に地物を追加するたびに、自動的にuuid()関数により作成されたユニークIDが入力されます。