ポイントデータの作成について

1,112 views
Skip to first unread message

たけ

unread,
Aug 19, 2023, 11:37:47 AM8/19/23
to QGIS初心者質問グループ
お世話になります。
初めて投稿させていただきます。
QGISを触り始めた初心者のため、レベルの低い質問ばかりで申し訳ございませんが、何卒、よろしくお願いいたします。

QGISを土木関係の仕事に生かしたくて使用し始めました。
QGISのバージョンは、3.22です。

 この先、いくつか質問をしたいのですが、まず、今回の質問は、ポイントデータの作成についてです。
 道の開設の計画線上にポイント(測点)を配置し、そのポイントに自動で測点番号が表示される方法をご教示いただきたいです。

上記のことができた後は、下記のとおり実施したいと考えています。
①ポイント間の距離(m)を自動で計測させて表示させる。(表形式で出力したい。)
②ポイントの横断方向(前測点と後測点の2分の1の角度)の山の傾斜を自動で計測させて表示させる。(表形式で出力したい。)

自分でもいろいろ試してみたのですが、ジオパッケージレイヤーを作成し、マルチポイントでポイントを作っただけで行き詰っています。
今の方法が正しいのかもわかりません。

何卒、よろしくお願いいたします。

ありた

unread,
Aug 20, 2023, 3:38:30 AM8/20/23
to QGIS初心者質問グループ
こんにちは

まず、 GIS では取り扱うデータの単位を地物といいます。
属性テーブルでは、ひとつの地物が一行に相当し、この単位で属性値を付加できます。

マルチポイントは複数の点を、群としてひとつのデータと扱うことができるものです。
マルチポイントはあまり利用されませんが、たとえば島や飛び地などの複数のポリゴンを
ひとつの市町村としてまとめて管理したい場合などに、マルチポリゴン形式が使われます。

ですので、それぞれの点ごとに名称などを管理したい場合はマルチポイントではなく、
点(ポイント)形式としてデータ(レイヤ)を作成してください。



また QGIS はどちらかというと、作成したデータに対し、何らかの分析処理を施し、
そのタイミングで距離などの結果を得るということの方が得意です。

望まれている内容と合致するかわかりませんが、比較的近い結果が得られるものとして
作図した計画路線上に対し、頂点(折れ点)を抽出するには「頂点の抽出」。
また、一定距離ごとの点を得るには「ジオメトリに沿った点群」で可能です。
(いずれもプロセシングツールボックスに含まれます。)
作成される点には、距離情報が付加されますので、それを元に測点番号を作ることができます。

ラインストリングの頂点上の横断線は「トランセクト」で作図可能です。
ただし横断線に対し、傾斜を計算するには別途標高データが必要となります。
下記も参考にしてください。下記では 200m 間隔で結果を得たかったため、
元々頂点が存在していなかった 200m 間隔の位置に頂点を作成しています。

上記は、基本的にその処理を実施したタイミングでの分析結果ですので、
計画路線の形状を変更しても自動で追従はしません。再度、処理を行う必要があります。



属性値については、一応、デフォルト値という形で測点の作成・更新のタイミングで
自動計算させることもできます。
こちらは使用できるのは QGIS 式と呼ばれる式で使用できる関数等のみになります。
例ですが、

1. 道路の計画路線レイヤをを作成
  ・ジオメトリタイプはラインストリング
  ・座標系は、対象地域の平面直角座標系
  ・属性として、整数型の id 属性を追加(属性名は例)
2. 計画路線レイヤのプロパティを開き、変数タブ、レイヤ内の layer_id をメモ
  ・layer_id の行をクリックで選択し、 Ctrl+C するとクリップボードにコピーされます。
3. 計画路線を作成
  ・その際、 id 属性を入力
4. 測点レイヤを作成
  ・ジオメトリタイプは点
  ・座標系は、対象地域の平面直角座標系(計画路線レイヤと同一のもの)
  ・属性として、整数型の line_id 属性
  ・また倍精度型または小数点付き数値型で、距離を示す dist 属性を追加
5. 測点レイヤのプロパティを開き、属性フォームタブを選択
  ・dist 属性を選択し、デフォルト値の入力欄の右側にある「ε」ボタンを押す
  ・下記式(レイヤ ID は例。先程取得したものに差し替え)を入力し OK
  ・「更新時にデフォルト値を適用する」にチェック
  ・QGIS 式は一重引用符と二重引用符の使い分けがあるため注意

line_locate_point(
    geometry(get_feature('計画路線レイヤ_XXX_XX_XXX', 'id', "line_id")),
    $geometry)


6. スナップツール(磁石アイコン)を有効にする
  ・磁石アイコンがない場合、メニューの「ビュー」→「ツールバー」→「スナップツールバー」にチェック
  ・スナップツール(磁石)をオンにし、スナップ対象を「頂点」「セグメント」にする
7. 測点レイヤをアクティブにし、測点を路線上に作成
  ・line_id 属性には対応する路線の id 属性の値を入力
  ・dist 属性には、デフォルト値の式に沿って自動的に値が入力される

(補足)
この方法は、あくまで測点が更新されるタイミングで計算されるものです。
計画路線の形状が変更された際は追従しませんので、たとえばですが、
・測点レイヤの属性テーブルを開きます
・上部の入力フォームの対象を dist 属性とし、入力フォーム内を何でもよいですが 1 と入力
・右側の「すべて更新」ボタンをクリックすることで再計算可能です



測点番号を「表示」ですが、地図画面上に表示するにはラベル機能を利用します。
ラベル用の属性を作成して指定してもよいですし、始点からの距離があれば、
直接 QGIS 式を指定することもできます。たとえば
format('No.%1+%2',floor("dist"/20),round("dist"%20,1))

たけ

unread,
Aug 21, 2023, 11:10:54 AM8/21/23
to QGIS初心者質問グループ
お世話になります。
早速、ご回答いただきありがとうございます。

亀の歩みですが一つ一つ、試してみたいと思います。
教えていただいたことを全部消化するにはかなりの時間が掛かりそうです。

まず、ご教示いただいた下記を試してみました。
作図した計画路線上に対し、頂点(折れ点)を抽出するには「頂点の抽出」。
→たしかに、驚くほどはやく自動で測点を作ってくれますね。

仕事が多忙で触れる時間が限定され、遅くなるかもしれませんがまた、試して報告します。
ありがとうございます!

2023年8月20日日曜日 16:38:30 UTC+9 ありた:
Reply all
Reply to author
Forward
0 new messages