QGISでDEMを読み込まずに2点間の標高差・距離・勾配を簡単に調べる方法
QGISで2地点の標高差を少し確認したいだけなのに、国土地理院の数値標高モデルを探してダウンロードし、DEMラスタとして読み込むのは少し手間です。 そこで、DEMをQGISへ読み込まず、地図上で2地点をクリックするだけで標高差や距離、勾配を確認できるPythonツールを作成しました。
このツールは、国土地理院が公開している「標高を求めるプログラム」から、クリックした地点の標高を取得します。 簡単な地形確認や、現地調査前の概略確認に便利です。
このツールで確認できる内容
- 地点1の標高
- 地点2の標高
- 各地点で使われた標高データの種類
- 地点1から地点2への標高差
- 標高差の絶対値
- 2地点間の水平距離
- 2地点間の斜距離
- 平均勾配(%)
- 平均傾斜角(度)
- 1:n形式の勾配
- 上り、下り、同標高の判定
地点1には青色、地点2には赤色の十字マーカーが表示されます。 計算結果を閉じた後は、そのまま次の2地点を選択して再計測できます。
実行画面
使用している標高データ
ツールでは、QGIS上でクリックした地点を経度・緯度へ変換し、国土地理院の標高取得機能へ送信します。 戻り値から、標高値と使用された標高データの種類を読み取ります。
標高データの種類としては、次のような値が返されます。
- 1m(レーザ)
- 5m(レーザ)
- 5m(写真測量)
- 5m(写真測量5C)
- 10m
利用できる標高データは場所によって異なります。 その地点で取得できる標高値と、標高データの種類が計算結果に表示されます。
QGISの「Japan Elevation」プラグインも、国土地理院の標高取得機能を利用し、クリック地点の標高とデータソースを表示します。 今回のツールでは、この仕組みを利用して、2地点の標高差、距離、勾配、角度まで計算できるようにしました。
事前準備
1.Pythonファイルをダウンロードする
この記事の一番下にある「Pythonツールをダウンロード」ボタンから、Pythonファイルをダウンロードします。
ファイル名は、次のようになっています。
QGIS_2点標高差.py
2.Pythonファイルを保存する
ダウンロードしたPythonファイルを、分かりやすい場所へ保存します。 保存場所は任意です。
例えば、次の場所に保存します。
C:\QGIS\QGIS_2点標高差.py
デスクトップに保存しても問題ありません。
QGISでの実行方法
1.Pythonコンソールを開く
QGISのメニューから、次の順番でPythonコンソールを開きます。
プラグイン
↓
Pythonコンソール
2.Pythonファイルを実行する
Pythonコンソール下部の「>>>」入力欄へ、次の1行を入力してEnterキーを押します。
Pythonファイルを「C:\QGIS」に保存した場合は、次のように入力します。
exec(open(r"C:\QGIS\QGIS_2点標高差.py", encoding="utf-8-sig").read())
Pythonファイルを別の場所へ保存した場合は、「C:\QGIS\QGIS_2点標高差.py」の部分を、実際の保存場所へ変更します。
デスクトップへ保存した場合の例です。
exec(open(r"C:\Users\ユーザー名\Desktop\QGIS_2点標高差.py", encoding="utf-8-sig").read())
Windowsのファイルパスを指定するときは、引用符の前にある「r」を削除しないでください。 また、複数行のPythonコードを「>>>」欄へ直接貼り付けるのではなく、上記のexecから始まる1行だけを実行します。
3.地図上で2地点を選択する
正常に実行されると、QGISの画面上部に次のメッセージが表示されます。
地点1をクリックしてください。
- 地図上で調べたい地点1をクリックします。
- 地点1に青色の十字マーカーが表示されます。
- 地点1の標高が取得されたら、続けて地点2をクリックします。
- 地点2に赤色の十字マーカーが表示されます。
- 地点2の標高取得後、標高差や距離、勾配の計算結果が表示されます。
計算結果の見方
地点1と地点2の標高
地点1と地点2の標高がメートル単位で表示されます。 あわせて、各地点で使用された標高データの種類も表示されます。
標高差
標高差は、地点1を基準として次のように計算します。
- プラスの場合:地点1から地点2へ向かって上り
- マイナスの場合:地点1から地点2へ向かって下り
- 0の場合:地点1と地点2が同標高
例えば、地点1が100.0m、地点2が125.0mの場合、標高差は「+25.0m」となります。
標高差の絶対値
上り下りの方向に関係なく、2地点の間に何メートルの高低差があるかを示します。
標高差が「-25.0m」の場合でも、標高差の絶対値は「25.0m」です。
水平距離
QGISの距離計算機能を利用し、2地点間の水平距離をメートル単位で計算します。
QGISプロジェクトで楕円体が設定されていない場合は、GRS80楕円体を使用します。
斜距離
水平距離と標高差から、地点1と地点2を直線で結んだ距離を計算します。
※斜距離は、実際の地表面の凹凸に沿った距離ではありません。地点1と地点2を直線で結んだ距離です。
平均勾配
平均勾配は、次の式で計算します。
例えば、水平距離が100mで標高差が10mの場合、平均勾配は10%です。 地点1から地点2へ向かって下る場合は、マイナスで表示されます。
平均傾斜角
平均傾斜角は、次の式で計算します。
結果は度数で表示されます。 地点1から地点2へ向かって上る場合はプラス、下る場合はマイナスになります。
1:n勾配
水平距離を標高差の絶対値で割り、「1:n」の形式で表示します。
例えば、水平距離が100mで標高差が10mの場合は「1:10」です。
続けて計測する場合
計算結果の画面を閉じた後、地図上で次の地点をクリックすると、新しい地点1として計測が始まります。
QGISやPythonコンソールを開き直す必要はありません。 前回のマーカーは消去され、新しい計測用マーカーが表示されます。
この方法のメリット
DEMのダウンロードと読み込みが不要
少し標高差を確認したいだけの場合に、数値標高モデルを探してダウンロードし、QGISへラスタとして読み込む作業を省けます。
QGIS上でそのまま確認できる
背景地図や業務データを表示した状態で、そのまま対象地点を選択できます。 別のWeb地図で対象地点を探し直す必要がありません。
距離や勾配もまとめて確認できる
標高差だけでなく、水平距離、斜距離、平均勾配、平均傾斜角、1:n勾配もまとめて確認できます。
繰り返し計測できる
一度Pythonツールを実行すれば、計算結果を閉じた後も、続けて別の2地点を計測できます。
使用時の注意点
表示される標高や勾配は、正式な測量成果や設計値の代わりになるものではありません。 設計や成果作成では、必要な精度を持つ測量成果や標高データを使用してください。
インターネット接続が必要
標高値を国土地理院のサーバーから取得するため、インターネット接続が必要です。
社内ネットワークなどで通信が制限されている場合は、標高を取得できないことがあります。
標高を取得できない地点がある
海上、日本国外、標高データが存在しない地点では、標高を取得できない場合があります。
短距離の勾配計算には注意
短い距離で勾配を計算すると、標高データのメッシュ間隔や標高値の誤差が計算結果へ大きく影響することがあります。
大量の連続処理には使用しない
国土地理院のサーバーへ過度な負荷を与えないようにしてください。 このツールは、クリックした2地点をその都度確認する用途を想定しています。
まとめ
このPythonツールを使用すると、QGISへDEMを読み込まなくても、地図上で2地点をクリックするだけで標高差を確認できます。
- DEMラスタの準備が不要
- 地点ごとの標高を取得
- 標高差と高低関係を表示
- 水平距離と斜距離を計算
- 平均勾配と平均傾斜角を計算
- 1:n勾配を表示
- 続けて別の2地点を計測可能
大がかりな地形解析ではなく、業務中に少し標高差を確認したい場合や、現地調査前に地形の傾向をつかみたい場合に便利です。
ただし、取得した標高値や計算結果は概略確認用として扱い、正式な測量や設計では、現地測量成果や必要な精度を持つ標高データを使用してください。
参考資料
Pythonツールのダウンロード
今回使用した「QGIS 2点標高差ツール」は、以下のリンクからダウンロードできます。
QGIS 2点標高差ツール
QGISの地図上で2地点を選択し、標高差、水平距離、斜距離、平均勾配、平均傾斜角を計算するPythonツールです。
PythonツールをダウンロードGoogleドライブが新しい画面で開きます。
上のボタンを押してGoogleドライブを開き、画面上部のダウンロードボタンからPythonファイルを保存してください。 ダウンロードできない場合は、Googleドライブの共有設定が「リンクを知っている全員」になっているか確認してください。
ラベル候補:QGIS、PyQGIS、Python、国土地理院、標高、DEM、地形解析、GIS
コメント
コメントを投稿