ベクタレイヤのレコード差分マージについて

46 views
Skip to first unread message

マイク

unread,
Jun 16, 2024, 5:38:37 AMJun 16
to QGIS初心者質問グループ
お世話になります。

ポリゴンレイヤのマージについてですが

添付のように「レイヤ1」と「レイヤ2」があり

この二つをマージして「レイヤ3」の状態になるようにしたいです。


宜しくお願いします。














キャプチャ.PNG

マイク

unread,
Jun 16, 2024, 5:42:09 AMJun 16
to QGIS初心者質問グループ
補足
差分レコード(地物)は追加し、フラグは比較して空白でないものにするという処理になるかと思います

2024年6月16日日曜日 18:38:37 UTC+9 マイク:

マイク

unread,
Jun 16, 2024, 6:31:40 AMJun 16
to QGIS初心者質問グループ
補足2
「ベクタレイヤのマージ」のやり方自体は知っています。
単純なマージではなく、IDで地物を比較してマージする方法となります。


2024年6月16日日曜日 18:42:09 UTC+9 マイク:

たけし892

unread,
Jun 16, 2024, 7:43:22 AMJun 16
to QGIS初心者質問グループ
マイク様
こんにちはたけし892です。

お望みの結果が得られるかわかりませんが、回答いたします。
まず、お望みの処理を一度の処理ではできないと思います。
フラグを空白でないどちらかのレイヤから持ってくることは直接はできません。
そこで、一度マージしてから新規フィールドにフィールド計算で入力します。

方法は、以下の通りです
①プロセシングツールボックス➤ベクタ一般➤属性テーブルで結合(table join)
・入力レイヤ:レイヤ2(地物数が多いレイヤ)
・入力レイヤの結合対象フィールド:ID
・第二の入力レイヤ:レイヤ1(地物数が少ないレイヤ)
・ 第二の入力レイヤの結合対象フィールド:ID
・第二の入力レイヤからコピーする属性:フラグ
以上の設定をして実行すると1つのレイヤにそれぞれのフラグが入ります。(添付画像参照)

②①の処理で生成されたレイヤをアクティブにした状態でフィールド計算機を開く➤
新規フィールドを作成し、以下の通り数式を入力
case when  "フラグ" is not null then  "フラグ" when "フラグ_2" is not null then  "フラグ_2"  else null end
※意味としては、フラグフィールドがNullでなければその値を、フラグ_2がNullでなければその値を、
どちらも当てはまらなければNullを入力せよというものです。(実行後の画像も添付します)

こちらでよろしいでしょうか。
2024年6月16日日曜日 19:31:40 UTC+9 マイク:
①終了後属性テーブル.png
②終了後属性テーブル.png

マイク

unread,
Jun 17, 2024, 5:50:19 AMJun 17
to QGIS初心者質問グループ

たけし892さま

お答えいただき有難うございます!
まだ試していませんが見通しが立ちました。

ちなみにIDが属性テーブル上に無い場合やフラグの数字が1以外に2や3がある場合でも
教えて頂いた方法で出来ますでしょうか?

ちなみにレイヤ1とレイヤ2はレイヤ0を複製したものになります。

2024年6月16日日曜日 20:43:22 UTC+9 takesh...@gmail.com:

たけし892

unread,
Jun 17, 2024, 6:07:23 AMJun 17
to QGIS初心者質問グループ
マイク様
こんにちは たけし892です。
見通しが立ったということでほっとしております。

レイヤ1と2に共通のフィールドがあればIDがなくても可能です。
レイヤ0の複製ということでなんらかの共通するフィールドがあるはずです。

値ですが、空白かそうじゃないかでの区別であれば1以外でも可能です。
ただし、特定の値を入れたい場合は別途数式を微調整する必要があります。

2024年6月17日月曜日 18:50:19 UTC+9 マイク:
Reply all
Reply to author
Forward
0 new messages