地形図・等高線シミュレーター 戻る
地形・可視化

地形図・等高線シミュレーター

数学関数から仮想地形を生成し、等高線図・勾配ヒートマップ・断面プロファイルをリアルタイム可視化。マーチングスクエア法による等高線描画とCAE可視化の基礎を直感的に学習。

地形関数
等高線設定
等高線数15
断面位置 y/ymax0.50
勾配ベクトル
カラーマップ

勾配とは

$$\nabla f = \left(\frac{\partial f}{\partial x},\,\frac{\partial f}{\partial y}\right)$$

最大傾斜角:
$$\theta = \arctan(|\nabla f|)$$
等高線は $\nabla f$ と直交

最高点 [m]
最低点 [m]
高低差 [m]
最大傾斜角 [°]
等高線図(色: 高度 / 矢印: 勾配ベクトル / 線: 等高線)
勾配大きさヒートマップ(明るい=急傾斜)
水平断面プロファイル(x方向 / 縦線:断面位置)

地形図・等高線シミュレーターとは

🧑‍🎓
「地形関数」を切り替えると山の形がガラッと変わりますね。これって実際の地形を表しているんですか?
🎓
数学的なモデルで仮想地形を作っているんだ。例えば「Peaks」は複数の山と谷が混在するMATLABの有名なデモ関数で、「Volcano」は中央が盛り上がり周囲にリング状の尾根がある火山地形だ。実際の地形データ(DEM)も本質的には $z = f(x, y)$ という形をしているから、このシミュレーターで学ぶことが実務の地形解析に直結するよ。
🧑‍🎓
「等高線数」を増やすと線がびっしり詰まってきます。これってどう使い分けるんですか?
🎓
線が密なほど傾斜が急、疎なほど緩やかってのが基本原則だ。本数を増やしすぎると線が混みすぎて読めなくなり、少なすぎると細かい起伏がわからない。登山計画なら広域を把握するため間隔を広く(本数少なく)、宅地造成の詳細設計なら間隔を狭く(本数多く)、という使い分けが現場では多いよ。
🧑‍🎓
「勾配ベクトル表示」をONにすると白い矢印がいっぱい出てきます。等高線と垂直に向いてますね?
🎓
鋭い!勾配ベクトルは必ず等高線と直交する。これは「等高線に沿って動くと高さが変わらない=変化率ゼロ」で、「勾配の方向に動くと変化率が最大」という数学的な性質から導けるんだ。「Saddle(鞍部)」を選んで試してみて。谷から尾根に向かって矢印が伸び、等高線に直角に交わっているのが確認できるよ。
🧑‍🎓
「勾配ヒートマップ」タブを見ると、明るい色の部分が等高線が密になってる場所と一致してますね。
🎓
その通り!勾配の大きさ($|\nabla f|$)をカラーで表したのがヒートマップだ。明るい部分=急傾斜=等高線が密、という対応関係がある。実務のCAEでは、このヒートマップに相当する「応力ヒートマップ」が構造解析の基本出力で、赤(高応力)の場所が設計の注意箇所になる。地形で学んだ感覚が、そのままCAEに活きるんだよ。
🧑‍🎓
「断面プロファイル」タブで「断面位置」スライダーを動かすと、グラフの形が変わります。これはどう使うんですか?
🎓
ある一定の $y$ の値で地形を水平方向に切った「断面図」だ。山の稜線に沿った高低変化を確認したり、設計ラインに沿った盛土・切土量の概算に使う。CFDでは、パイプの中心軸に沿った圧力変化や速度変化を見るのに同じ手法を使う。「Volcano」を選んで断面スライダーを中央に持ってくると、リング状の尾根の形が断面からはっきり見えるよ。

物理モデルと主要な数式

地形の高さ $z$ が平面座標 $(x, y)$ の関数 $f(x, y)$ で与えられるとき、その「傾きの向きと大きさ」を表すのが勾配ベクトルです。

$$\nabla f = \left(\frac{\partial f}{\partial x},\,\frac{\partial f}{\partial y}\right)$$

$\nabla f$: 勾配ベクトル。$x$方向と$y$方向の偏微分を成分とするベクトル。最も急に高さが増加する方向を向き、その大きさが傾斜の急さを示す。

最大傾斜角 $\theta$ は水平面に対する角度で、次式で求まります。

$$\theta = \arctan\!\left(\sqrt{\left(\frac{\partial f}{\partial x}\right)^2+\left(\frac{\partial f}{\partial y}\right)^2}\right)$$

等高線は $f(x,y) = c$(定数)を満たす点の集合(レベルセット)です。等高線に沿う方向の方向微分はゼロになるため、勾配ベクトルは必ず等高線と直交します。

$$\nabla f \cdot \mathbf{t} = 0 \quad (\mathbf{t}\text{ は等高線の接線方向})$$

このシミュレーターの等高線描画にはマーチングスクエア法を用いています。格子セルの各頂点が閾値より大きいか小さいかで $2^4=16$ パターンに分類し、線形補間で等高線を引く古典的かつ実用的なアルゴリズムです。

よくある質問

マーチングスクエア法は2次元の格子データから等値線を抽出します(このシミュレーターで使用)。マーチングキューブ法はその3次元版で、ボクセルデータ(CT/MRIや流体解析の結果など)から等値面を抽出するのに使われます。CAEの後処理ソフト(ParaViewなど)での3Dコンター表示はほぼマーチングキューブ法で実装されています。
CAEでは至る所で使われます。熱解析では熱流束 $\mathbf{q} = -k\nabla T$(温度勾配に比例)、流体解析では圧力勾配 $\nabla p$ が流れの駆動力、構造解析ではひずみは変位の勾配(偏微分)から求まります。地形の等高線とその勾配で学んだ直感が、これらすべての解析に直接応用できます。
鞍部(Saddle)は $\frac{\partial f}{\partial x}=\frac{\partial f}{\partial y}=0$ の臨界点ですが、極大でも極小でもない特殊な点です。この点ではある方向には山頂(高い側)、別方向には谷底(低い側)になります。登山道、風の通り道、最適化問題の「停留点」として重要です。機械学習の損失関数最適化でも鞍点問題は重要なテーマです。
地図の縮尺と地形の起伏に応じて決めます。一般的な地形図(1/25,000)では10m間隔(主曲線)と50m間隔(計曲線)、詳細な設計図では1m・5m間隔が使われます。CAEのコンター図では、注目する物理量の範囲を均等割りした何十本かの等値線が標準です。このシミュレーターの「等高線数」スライダーで直感的に体験できます。
日本では国土地理院の「基盤地図情報数値標高モデル(DEM)」が5mメッシュで無料公開されています。また、JAXA/NASADEM(30mメッシュ)やSRTM(90mメッシュ)がグローバルで利用可能です。これらをGDAL、QGIS、Pythonの richdem ライブラリ等で読み込むと、このシミュレーターで学んだ等高線・勾配解析を実データに適用できます。
最大の注意点は「知覚的均一性」です。虹色(Rainbow)カラーマップは視覚的には派手ですが、人間の目が特定の色変化を過大・過小評価するため、データの読み取りに誤解が生じやすいです。科学技術分野ではViridis、Plasma、Turboなどの知覚的均一カラーマップが推奨されます。このシミュレーターでも「地形」「海洋」「ヒートマップ」の3種類を試して、表示の印象の違いを確認してみてください。