ディゾルブ後のポリゴン頂点のIDの振り直しについて

273 views
Skip to first unread message

AKitek

unread,
Oct 11, 2021, 10:28:32 PM10/11/21
to QGIS初心者質問グループ
お世話になっております。
表題の通りのことで、以下の内容がQGISの仕様なのかどうか、ご存知の方がおられましたら、ご教授お願いいたします。

元のデータ:
<PLATEAU(https://www.mlit.go.jp/plateau/)の道路ポリゴンデータを使用>
QGISのバージョン:3.20.2-Odense

1. PLATEAUの道路ポリゴンデータをダウンロードすると、そのままの状態では道路ポリゴンがいくつかのセグメントに分けられています。すでに頂点も加えられているようでして、その頂点が"どこの道路ポリゴンの頂点なのか"という、グループ分けの識別ID(vertex_part)と、同じグループ内での頂点の識別ID(vertex_part_index)が反時計回りに与えられています。
スクリーンショット 2021-10-12 11.19.44.png
スクリーンショット 2021-10-12 11.19.54.png
2. これを道路ポリゴンを全部融合し、一つの大きな道路ポリゴンにして再び、頂点を抽出すると、今度は道路外の空白地ごとに頂点がグループ分けされ、IDが振り直されるようになっているようです(空白地を構成する頂点に、反時計回りでグループ内の識別IDが振り分けられる)。
スクリーンショット 2021-10-12 11.20.01.png

何か作りたいデータがあるとか、作業が滞って困っているということではないのですが、こうしたIDの振り分けを裏で処理を回しているのかどうか知りたくご質問させていただきました。
そういう仕様(ディゾルブ後には、空白地を対象にIDが振り分けられるようになっている)として実装されているのか。
この現象を経験則として扱うか、仕様なのか。
どなたかご存知方おられますでしょうか?
(過去に似たようなメッセージがございましたら、重複をお許しください)

ありた

unread,
Oct 12, 2021, 8:54:00 AM10/12/21
to QGIS初心者質問グループ
こんにちは

たしかに XML 等の形式では、点の位置の定義部分が別にあり、地物としてのポリゴン等は
定義済みの点 ID を参照する形式で保存されているファイルも存在することがあります。

ただ、 QGIS にポリゴンレイヤとして読み込んだ際には、あくまでポリゴン形式の地物情報が
保持され、頂点に関する情報は位置情報以外失われます。
(別途、頂点データを点レイヤとして読み込むことが可能であれば、別の話ですが)



今回、ベクタメニューあるいはプロセシングツールの「頂点の抽出」を実行したのだと
思いますが、「頂点の抽出」は元のポリゴン/ラインデータの属性情報(ここではおそらく
idgml_id )を引き継ぎ、何番目の頂点なのかを vertex_index 属性を新たに作成します。
また、マルチポリゴンやドーナツ状の外環と内環を考慮し、何番目の part / ring であるか
などの情報が付与されます。

整理すると、 vertex_index などは、もともとの PLATEAU のデータではありません。
ポリゴンとの対応を取りたい場合は、ポリゴンに一意な ID を付与したのちに、
頂点の抽出を行うことで、関連付けることができます。


なお反時計回りなのは、反時計回りの順番で頂点を持つように整備されたポリゴンであるからで、
時計回りに作成したポリゴンでは時計回りに番号が振られます。

ありた

unread,
Oct 14, 2021, 9:55:55 AM10/14/21
to QGIS初心者質問グループ
メール(投稿者に返信?)で返信いただきました。少し補足いたします。

> お世話になっております。
> ご回答ありがとうございました。
> QGISの仕様により、"「頂点抽出」の際に、外環・内環の判断により、
> IDがふり直されている"という判断でまちがいなければ、安心しました。
> ありがとうございました。

外環、内環の判断により振りなおされているのではなく、単純にポリゴンあるいはラインを
構成する頂点の抽出が行われ、その頂点が何番目の頂点かを示しているだけです。

ですので、「頂点の抽出」を行う対象のポリゴンが、ディゾルブで融合させたあとの
形状が変化したポリゴンであるのならば、(同じ道路という意味合いではなく)
ポリゴンジオメトリとしての異なるものであるため、当然異なる結果を示します。



マルチパート(マルチポリゴン、マルチライン)の場合、いくつ目のパートにおける
頂点かを示す属性として vertex_part 属性が作成され、格納されます。

ポリゴンの場合には、ドーナツ状やレンコン状にすることができます。
そのパートにおけるいくつ目の環かを格納する属性として vertex_part_ring 属性が
作成されます。外環は 0 で、1つ目の内環は 1 となります。

抽出した点が環におけるいくつ目の頂点かを示す属性は vertex_part_index 属性です。
環の始点と終点は一致する点で、それぞれ存在するため重複して抽出されます。
(四角形の場合、頂点は5個)

その地物(複数のパートやリングを含む)における抽出した頂点の通しの順番が
vertex_index 属性に格納されます。



distance 属性は始点からの延べ距離。 angle 属性に関しては下記を参照ください。
Reply all
Reply to author
Forward
0 new messages