1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【QGIS】リレーション

1
Posted at

はじめに

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に興味がある方の一助になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?