グラフィカルモデラーで条件分けで処理ができないでしょうか。

503 views
Skip to first unread message

遠藤真

unread,
Aug 12, 2022, 4:27:43 AM8/12/22
to QGIS初心者質問グループ
よろしくお願い致します。

■目的
ある領域外の線を削除する。(考え方は、添付図のようになります。)

■入力
・ラインベクタ(マルチパートをシングルパートに変換している)
・領域ポリゴン(複数のポリゴン)

■処理
1.ラインの数を変数に保存する。
2.ラインの端(接続するラインが無い)のラインに注目する。
3.そのラインが領域に含まれなければ、削除する。
4.処理3の結果のライン数が処理1のライン数と比較して同じ場合
  (それ以上削除するラインが無くなった場合)終了する。
5.小さくいなら処理1に戻る。

■つまずいている点
1.ライン数を取得する方法
2.条件分けで処理1から処理4をループする方法

これまでは、手動でラインを探してデジタイズ機能で削除していたが、数が多くなったため、
グラフィカルモデラーでできないか試していて、どうしても解決しない問題があり、ご相談させて頂いた次第です。

■OS:Windows11
■QGIS:3.26.1
サンプル.jpg

mooya

unread,
Aug 15, 2022, 11:46:45 PM8/15/22
to QGIS初心者質問グループ
こんにちは

 こんにちは、mooyaと申します。
 たぶんなのですが、グラフィカルモデラーにループはないです。
 繰り返しは手動になりますが、とりあえず、2と3の処理に取り組まれてはいかがでしょうか。


2022年8月12日金曜日 17:27:43 UTC+9 make...@gmail.com:

遠藤真

unread,
Aug 16, 2022, 1:30:02 AM8/16/22
to QGIS初心者質問グループ
mooya様

アドバイス、有り難うございます。

実は、投稿した後に、手順1から手順3までは何とかくみ上げることができました。
手動で不要なラインを削って行くことはできることを確認しました。
前後の地物数を環境変数にしまうことはできたので、
その値が等しくなるまで手順1に戻れればと、条件分岐が使えないかと考えています。

実は、先端でループしている部分は残ってしまうという不具合が
新たに分かったのですが、それはいずれ考えるとして…

条件分岐の使い方を紹介されているHPを検索していたところ、
いくつか見つけたのですが、説明されている手順通り組んでいるつもりでいるのですが、
説明にある画像とは何故か違ってしまい、つまずいています。

新たによいアドバイスがあれば、ご教授頂ければ幸いです。
2022年8月16日火曜日 12:46:45 UTC+9 mooya:

mooya

unread,
Aug 16, 2022, 4:52:38 AM8/16/22
to QGIS初心者質問グループ
こんにちは

先端ループ
 ベクタプロセッシングにポリゴン化polygonizeというラインの閉じた領域をポリゴン化するものが使えるかなと思いましたが、消したくないポリゴン間なのか、端部なのかの判定は、難しいですね

条件分岐 
 実行するかしないか には使えたと思いますので、数が変わらなければ、出力しないという処理はできると思います。



2022年8月16日火曜日 14:30:02 UTC+9 make...@gmail.com:

たけし892

unread,
Aug 16, 2022, 6:02:19 AM8/16/22
to QGIS初心者質問グループ
こんにちは

グループメンバー外から失礼いたします。
すでに試していたら申し訳ありません。今回の処理ですが、モデルを使用せず、プロセッシングのベクタ選択→
「場所による抽出」で入力レイヤにライン、比較対象にポリゴンレイヤ、交差するにのみチェックではダメでしょうか?

2022年8月16日火曜日 17:52:38 UTC+9 mooya:

遠藤真

unread,
Aug 16, 2022, 8:38:00 AM8/16/22
to QGIS初心者質問グループ
mooya様

更なる情報を頂き、ありがとうございます。
mooyaさんのおっしゃる通り、まず、面を作って関わるラインを消すことは考えたのですが、
残す領域から完全に切り離されたどて独立したものであり、先端に位置していることを
知る手掛かりを見つけることができませんでした。
引き続き考察を続けてみたいと思います。

条件分岐について、何か参考になるHPなどご存じでしたら、お教えください。
理解できずにいます。

たけし892様
アドバイス、ありがとうございます。
単に領域から完全に離れたラインを消すのであれば、ご提案の方法でいけると思います。
詳しく説明はしていなかったのですが、ラインは単線の集合ですが、
ネットワークを形成しています。そのため、この方法では連続しているラインの一部が
範囲外にあった場合、ネットワークが切れてしまうことになり、それはNGなります。

以上の点からモデラーを使ってできないかと、ここ数日悶々としている次第です。

2022年8月16日火曜日 19:02:19 UTC+9 たけし892:

mooya

unread,
Aug 16, 2022, 9:45:44 AM8/16/22
to QGIS初心者質問グループ
こんばんは

調べられたのなら、見ていると思いますが下記があります。

条件分岐という名前が紛らわしくて、条件がtrueの場合のみ実行するプロセッシングの追加設定です。
枝分かれというより、個別に実行するかしないかです。


2022年8月16日火曜日 21:38:00 UTC+9 make...@gmail.com:
Reply all
Reply to author
Forward
0 new messages