ラインデータに標高を持たせる方法

3,475 views
Skip to first unread message

sakuya_izayoi

unread,
Mar 14, 2018, 1:56:34 AM3/14/18
to QGIS初心者質問グループ
こちらsakuya_izayoiのizayoiです。
お世話になります。

QGIS上で作成したラインデータに、基盤地図情報の標高を与える方法は何かありますでしょうか?

現在、河川や道路といったように描かれたラインデータがあります。
それに基盤情報の標高メッシュ
https://fgd.gsi.go.jp/download/mapGis.php?tab=dem
からダウンロードできるDEMから、5mないし10m毎に高さを持たせたいといったことです。

ラインデータのイメージとしては、国土数値情報の鉄道ですが、
http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N02-v2_3.html
のようにかかれています。(もちろん、こんな全国区ではなく入り組んでもなく、5万分の1地図一枚分ぐらいの範囲ですが。)

このように書かれているラインに標高を与える簡単な方法があれば教えて頂きたいです。


現状は、
①標高DEMを点群データにQGISで変換して、
②おおよそ5mのメッシュをQGISで作成し、
③欲しい部分の5mメッシュ(河川や道路といった風に線を引いた部分に該当する部分)のみを残して後は削除し
④データ→マネジメントツール→属性の結合で点群の標高を5mメッシュに投影する。
といった形で、最終的にラインでなく、ポリゴンという形で対応していますが、すごく手がかかってしまいどうにかならないものかと思っております。

同じような経験がある方、アイデアがあるからがお見えでしたら、是非ともご一報ください。

福岡

unread,
Mar 14, 2018, 10:35:42 PM3/14/18
to QGIS初心者質問グループ
izayoi 様

ラインデータに標高を持たせるのではなく、ラインデータの標高を確認するという方法なのですがお役に立ちますでしょうか?

使うツールはプラグインの「Profile Tool」です。
1 Profile Tool を立ち上げる。
2 レイヤパネルでDEMを選択し、「Add Layer」ボタンをクリックする。
3 レイヤパネルでDEMを選択したまま、Selectionを「Temporary polyline」から「Selected polyline」に変更する。
4 レイヤパネルでラインのレイヤを選択し、対象とするラインを「地物の選択」で選ぶ。

使い方でちょっと嵌まったのが、Slectionの変更タイミングでした。
レイヤパネルでラインのレイヤを選択してから変更すると、なぜかうまく動作しませんでした。

グラフ上でマウスを動かすと、X(多分、起点からの距離)、Y(標高だと思われる)を数値で表示します。
また、マップパネルのライン上にも赤い点が表示され、どの地点のデータがわかるようになっています。


sakuya_izayoi

unread,
Mar 15, 2018, 2:02:55 AM3/15/18
to QGIS初心者質問グループ
福岡様
こちらizayoiです。

お返事ありがとうございます。
この方法は良いですね。縦断図や横断図を作るときの参考になります。
今回はちょっと趣旨が違ってきちゃいますが、応用効きそうです。

sakuya_izayoi

unread,
Mar 15, 2018, 2:30:26 AM3/15/18
to QGIS初心者質問グループ
こちらsakuya_izayoiのsakuyaです。
お世話になります。
福岡様。教えて頂いた方法も丁度欲しいなと思っていた技です。ありがとうございます。

izayoiが質問していた事なのですが、10mメッシュなら10mメッシュごとにラスタからポイント点に変換したポイントをめがけてラインを作成してから、ラインのノード展開などをしてやらないと
難しいんじゃないかなとも私は思っておりますが、何か打開策がありますでしょうか?

こんな感じであるという、
QGISのプロジェクトファイルと使用するラスタファイル、線データがあるshpファイルを添付いたします。点データは容量オーバーになったため同封していません。
線データの短い方は10m毎メッシュごとになぞった線です。長い方はこの線にも通過メッシュごとの標高を与えられるのかと実験に使っていた線です。
Send_to.zip

福岡

unread,
Mar 15, 2018, 5:15:17 AM3/15/18
to QGIS初心者質問グループ
izayoi 様
sakuya 様

ラインを指定して一定間隔(10m)でポイントを生成して、ポイントと同地点のDEMの値を取得するということにトライしてみました。

ポイントの生成は、プロセッシングツールの「Create points along lines」で出来ました。
場所は「QGISジオアルゴリズム - ベクタジオメトリツール」の中です。

次にDEMの値ですが、プロセッシングツールのSAGAの機能(Add raster value to points)で出来そうに思ったのですが、何故かエラーが発生してうまくできません。
そこで次善の策としてプラグインの「point sampling tool」を使って値を取得しました。

「point sampling tool」は元ファイルの属性テーブルを消してしまうので不満は残りました。
この情報はお役に立ちますでしょうか?

sakuya_izayoi

unread,
Mar 15, 2018, 9:48:46 AM3/15/18
to QGIS初心者質問グループ
福岡さま
こちらizayoiです。
お世話になります。
これはナイスアイデアです。
そうか、ラインを一定間隔で分割すれば良いんだ。この「Create points along lines」は結構使っているのに、思いつかなかった。
SAGAツールの方は使ってみたのですが、2.16.3でも動かなかったです。(SAGAツールの機能はほとんどわからない。福岡さまは何を参考にしていますでしょうか?)

自分の場合は、ラインをポイントに分割したのちに、最初に投稿した方法だと属性テーブルは残せるんですが、すごく手がかかる。
「point sampling tool」は手軽でした。紹介ありがとうございます。

きた

unread,
Mar 15, 2018, 10:00:48 AM3/15/18
to QGIS初心者質問グループ
izayoiさん

質問の最終形がよくわからないのですが、次のうちどれなんでしょうか?

1.ラインは、1本のままで、平均標高をラインにのせたい
2.ラインをDEMのメッシュごとに切り分けて、その切り分けたラインに標高をのせたい
3.ラインをノードごとに分割して、そのラインごとに標高をのせたい。
4.そういうことじゃない

求めているものが、なになのかで、方法が変わってくると思います。

きた



sakuya_izayoi

unread,
Mar 15, 2018, 12:36:36 PM3/15/18
to QGIS初心者質問グループ
こちらizayoiです。きた様、すみません。最終系を書いていませんでした。一番理想なのは2番目の
ラインをDEMで切り分けて標高を乗せたい方です。3番のタイプも興味あります。

福岡

unread,
Mar 15, 2018, 11:14:14 PM3/15/18
to QGIS初心者質問グループ
izayoi 様
sakuya 様

一応できたのではないかと思いますので、投稿いたします。

【手順】
1 DEMの境界をラインを生成し、それを利用して対象のラインを切断。
2 切断したラインにIDを付与。
3 切断したラインの重心の点を生成。
4 重心の点にpoint sampling toolを利用して標高を取り込んだ新しいポイントデータを生成。
5 新しいポイントデータにIDを付与。
6 IDをキーにして、フィールドを結合。

DEMの境界のラインは「ベクタ - 調査ツール - ベクタグリッド」で生成します。
「ラスタレイヤを選択して領域と解像度を調整する」にチェックを入れ、「1:1の比率を固定する」のチェックを外し、「レイヤの値で領域を更新する」ボタンをクリックすると条件が設定されます。


対象ラインの切断はプロセッシングツールの「QGISアルゴリズム - ベクタオーバーレイツール - Split lines with lines」で行います。


ポイント生成の際にユニークなIDが必要なので、切断したラインのシェイプにフィールド計算機でIDを付与します。


ポイント生成は「ベクタ - 解析ツール - 平均座標(群)」で行います。

ユニークIDフィールドに、先ほど付与したIDを指定します。


point sampling toolで標高を取得したポイントを生成します。


おそらく並びは一緒ということで、point sampling toolで作成したポイントにのシェイプにフィールド計算機でIDを付与します(図略)。

後はIDをキーにして、フィールドを連結すると良いと思います。



sakuya_izayoi

unread,
Mar 15, 2018, 11:49:39 PM3/15/18
to QGIS初心者質問グループ
福岡様
こちらizayoiです。

図解の説明、ありがとうございます。
事務所に戻ったらさっそく実行してみます。


対象ラインの切断ツールの存在を知りませんでした。
これで切断できるのですね。今度から作業がはかどりそうです。

sakuya_izayoi

unread,
Mar 19, 2018, 12:04:32 AM3/19/18
to QGIS初心者質問グループ
こちらizayoiです。
福岡様
きた様

色々とありがとうございました。
おかげさまで欲しいデータを作り出すことが出来ました。
細かく切ったラインの重心に標高を持たせることが出来ましたので、別のソフトを使うのですが、これをもとに3Dモデルも作成できました。

便利な技術、教えて頂き感謝いたします。

sakuya_izayoi

unread,
Mar 19, 2018, 12:16:37 AM3/19/18
to QGIS初心者質問グループ
こちらizayoiです。
福岡様にお聞きしたかったのですが、

_______________________________________________________________________________________

DEMの境界のラインは「ベクタ - 調査ツール - ベクタグリッド」で生成します。
「ラスタレイヤを選択して領域と解像度を調整する」にチェックを入れ、「1:1の比率を固定する」のチェックを外し、「レイヤの値で領域を更新する」ボタンをクリックすると条件が設定されます。


________________________________________________________________________________

というのがベクタグリッド作成機能を選んでも私の場合には


というものが立ち上がるだけでした。バージョンは2.18.16です。

今回はX,Yに直接大きさを打ち込みましたが、何が違うのだろう?


Auto Generated Inline Image 1

福岡

unread,
Mar 19, 2018, 4:30:08 AM3/19/18
to QGIS初心者質問グループ
izayoi 様

お手数をお掛けしたようで申し訳ありません。
今行っている作業が2.18では落ちやすくて、2.14を未だメインとして使っておりました。

2.18で確認してみたところ仕様が変わっていて、DEMのメタデータから数値を確認して設定するしかないような感じです。

sakuya_izayoi

unread,
Mar 19, 2018, 9:56:52 AM3/19/18
to QGIS初心者質問グループ
福岡さま
ありがとうございます。
2.14の方が機能的に使いやすそうですね。
demから格子を作るときにはこちらを使おうと思います。

Reply all
Reply to author
Forward
0 new messages