前回は、DEM / DSM / DTMの違いと、Heronを使用した地形データの取得方法を説明しました。
本記事では、前回取得した地形データを用いて、Grasshopperで地形解析を行います。取得した地形データは、そのまま3Dの地形として表示するだけでなく、メッシュに含まれる高さや法線などの情報を利用することで、地形を異なる観点から確認することができます。
今回は、同じ地形データから情報を抽出し、等高線(コンター)、高度段彩図、傾斜角、傾斜方向の順に可視化していきます。
※本記事は可視化による確認を対象とし、測量や精密解析は扱いません。

DEMの扱い
DEMは、地表の高さを格子状に表現したラスターデータとして扱われます。各セルには標高値が格納されています。前回は、Heronの「Get REST Topography」と「Import Topo」コンポーネントを使用してDEMを取得し、Rhino上に地形メッシュとして読み込みました。
本記事では、この地形メッシュを基準として、高さや面の向きなどの情報を抽出し、それぞれ異なる方法で可視化します。
解析1:等高線(コンター)
まず、地形メッシュから一定間隔の高さ情報を抽出し、等高線を作成します。
等高線(コンター)は、同じ高さにある位置を線として表現したものです。3Dの地形形状を線として表現することで、地形の起伏や高さの変化を平面的にも確認できます。
Grasshopperでは、Heronの「Import Topo」コンポーネントから出力された地形メッシュを、「Contour」コンポーネントのShapeに接続します。次に基準となる平面を設定し、「Number Slider」で等高線を生成する高さ間隔を指定します。
高さ間隔を小さくすると等高線の本数が増え、大きくすると本数が減ります。対象範囲や地形の高低差に応じて値を変更することで、必要な間隔で等高線を生成できます。


解析2:高度段彩図(標高ヒートマップ)
次に、地形メッシュに含まれる高さの値を色に変換し、高度段彩図として表示します。
高度段彩図は、標高の違いを色の違いとして表現する方法です。3D形状だけでは確認しにくい標高の分布も、色を割り当てることで別の形で確認できます。
Grasshopperでは、地形メッシュから高さ情報を取得し、取得した値の範囲を求めます。その数値を一定の範囲に正規化した後、「Gradient」コンポーネントへ接続します。
「Gradient」で設定した色がそれぞれの高さに割り当てられることで、地形メッシュ上に標高の分布を表示できます。グラデーションの設定を変更すると表示される色も変化するため、ここでの色は標高値そのものではなく、設定した数値範囲と色の対応関係を可視化したものとして扱います。


解析3:傾斜角(Slope)
標高に続いて、地形の傾きを角度として可視化します。
傾斜角(Slope)は、地形メッシュの各面が水平方向に対してどの程度傾いているかを角度として表したものです。
Grasshopperでは、地形メッシュの各面から法線ベクトルを取得し、鉛直方向(Z方向)のベクトルとの角度を計算します。水平な面では法線がZ方向に近くなり、斜面になるにつれてZ方向との角度が大きくなります。
算出した角度は度数に変換し、その値の範囲を取得した後、「Remap Numbers」コンポーネントで一定の範囲に変換します。さらに「Gradient」コンポーネントへ接続することで、傾斜角の違いを色として地形メッシュに割り当てます。
これにより、標高とは別の情報として、地形の傾きがどのように分布しているかを確認できます。


解析4:傾斜方向(Aspect)
最後に、地形メッシュの各面が向いている方向を角度として可視化します。
傾斜方向(Aspect)を求めるため、まず地形メッシュの各面から法線ベクトルを取得します。次に「Deconstruct Vector」コンポーネントを使用して法線ベクトルをX・Y・Z成分に分解し、X成分とY成分を取り出します。
「Expression」コンポーネントでは、atan2(Y,X) を使用してXY平面上の角度を算出します。Heronで読み込んだ地図では、RhinoのY軸の正方向が北、X軸の正方向が東に対応します。一方、atan2(Y,X) ではX軸の正方向を0°として角度を算出するため、東が0°、北が90°となります。※GISで一般的に用いられる北を0°とする方位角とは、角度の基準が異なります。
算出した角度は「Bounds」と「Remap Numbers」コンポーネントを使用して一定の範囲に変換し、「Gradient」コンポーネントに接続します。これにより、地形メッシュの各面がXY平面上でどの方向を向いているかを、色の違いとして確認できます。


前後編まとめ
前編では、DEM / DSM / DTMなどの地形データについて整理し、Heronを使用して地形データとベースマップをRhino上に取り込む手順を説明しました。後編となる本記事では、その地形データをメッシュとして利用し、等高線、高度段彩図、傾斜角、傾斜方向を作成しました。

同一の地形データであっても、高さ、形状、法線など、どの値を取り出してどのように表現するかによって、異なる地形情報として確認できます。今回紹介した方法では、RhinoとGrasshopper上で地形データを扱いながら、目的に応じて複数の表現へ展開することができます。
次回は、今回扱った地形の「高さ」に関連して、標高・ジオイド・楕円体高の違いと扱い方を説明します。
※本記事で紹介している内容は、AppliCraft Seminar Winter 2025でも紹介しています。
以下の動画の「3. オープンデータでGIS解析」(18:01〜)でも関連内容を紹介しています。
https://www.youtube.com/watch?v=suSSOSZWfoI
また、セミナーで 使用した「Rhino × GIS」に関する発表資料は、以下よりPDF形式でご覧いただけます。
AppliCraft Seminar Winter 2025「Rhino × GIS」発表資料(PDF)![]()
