はじめに
QGISのリレーションについての備忘録。
リレーション
手順
- QGISウィンドウより「プロジェクト > プロパティ」 で「プロジェクトのプロパティ」を開く。
- サイドバーより「リレーション」を選択する。
- 下部の「リレーションを追加」ボタンをクリックすることでリレーションを追加できる。
警告
リレーション情報はプロジェクトファイルに保存されます。
項目
Id
[自動生成]となっていたので、空白。
名前
リレーションは「R_親_子」で、外部キーは「FK_親」で整理した。
リレーションの強度
| 項目 | 説明 | 削除時の挙動 |
|---|---|---|
| Association | 親と子が独立した関係。 | 親を削除しても子に影響なし。 |
| Composition | 親が子を所有する関係。 | 親を削除したら子も削除する。 |
対応関係
| 行列 | 親 | 子 |
|---|---|---|
| レイヤ | 紐づけの基準となるレイヤ | 親に紐づく情報を持つレイヤ |
| フィールド1 | 親レイヤの地物を一意に識別するための、ユニークなIDを持つフィールド | 親レイヤの主キーを参照するための、外部キーとなるフィールド |
外部キー
外部キーは属性フォームのバリューマップや、リレーションにて実現できる。
式ビルダ等を利用する際は、動的変化に対応しているリレーションの方が優れているように感じる。
式ビルダ:バリューマップ
CASE文で属性フォームのバリューマップと整合性を図る。
更新時、手動で編集が必要である。CASE WHEN "type" = 1 THEN 'A' WHEN "type" = 2 THEN 'B' WHEN "type" = 3 THEN 'C' END
式ビルダ:リレーション
get_featureで該当レコードを取得し、attributeで対象フィールドを取得する。
更新時、自動的に反映される。attribute(get_feature('typeレイヤ','type_id(子)', "type_id(親)" ),'type_name')
おわりに
プロジェクトにリレーション情報が保存されるため、別プロジェクト作成時は別途設定する必要があります。
次はgpkg内にリレーションを保存して運用する方法を勉強してみます。
QGISに興味がある方の一助になれば幸いです。