前回(第7回)では、3D Demographicを作成するための前提とデータの準備について整理しました。本記事では、その続きとして RhinoとGrasshopper(Heron)を用いた3D Demographicの作成手順を紹介します。

Rhino × GISで3D Demographicを作る意味
RhinoとGISを組み合わせることで、GISで管理されてきた属性データをRhinoの3D空間上で直感的に確認・比較することが可能になります。ここで紹介する手法は、精密な統計解析を目的としたものではなく、設計判断を補助するための可視化やRhinoに新たな活用方法を提示することを目的としています。特に、業務において今後本格的に GIS を導入していくかは未定であるものの、まずは使い慣れた Rhino の環境で地理空間データの扱いを試してみたい場合には、有効なアプローチの一つとなります。
用意したデータをHeronで読み込む
まずRhino側で、単位設定(メートル)や位置・スケール、モデル空間の原点などを事前に確認します。そしてGrasshopperを起動し、Heronのコンポーネントを使って、前回(第7回)用意した「人口数の属性を含む都道府県界データ」と「都道府県別 等価所得のジニ係数のデータ」を読み込みます。
●「Set Spatial Reference System」:まずWGS84に基づく座標参照系(EPSG:4326) を設定します。

●「Set EarthAnchorPoint」:日本列島全体を扱うマップを作成するため、地球上の座標とRhinoのモデル空間を対応付けるための基準点は、Rhino上での数値精度や操作性を考慮し、日本付近(例:東経137°・北緯36°)に設定します。


座標系を定義した後、Rhinoの「長方形(Rectangle)」コマンドで大まかな範囲を設定します。Grasshopperの「Curve」コンポーネントから、[Set one Curve]を実行します。

●「Import Vector」:用意した都道府県界のシェープファイル(*.shp)を、Grasshopperの「File Path」コンポーネントに格納し、「Import Vector」コンポーネントの入力端子のFile Pathに接続します。またBoundaryの入力端子には、境界線を接続します。 出力端子のFieldsやValuesから、シェープファイルに含まれている属性データを確認することができます。そしてFeature Geometryから「Mesh Join」と「Mesh Edges」コンポーネントへと接続して、全国都道府県界の曲線を取得します。


※弊社で取り扱っている Lands Design(Rhino用プラグイン)には、「GISデータをインポート(laImportGisData)」コマンドが搭載されており、シェープファイルをRhinoに読み込むことが可能です。この機能は、GISデータを形状データとして扱う場合に有効ですが、本フローでは、座標系やデータに含まれる属性情報を参照しながら可視化を行うため、Heronを使用しています。
次に各都道府県の人口数を、円柱に変換します。読み込んだシェープファイルの属性には、都道府県別の人口数の情報が含まれているため、それを円柱の高さとして利用します。「List Item」で人口数のインデックス番号を指定し、人口数を「Cylinder」コンポーネントのLengthの入力端子に接続します。そのまま人口数を使用するか、比率として扱うかは、可視化の目的に応じて選択しますが、今回は「0.1」を掛け合わせることで、日本地図とのサイズバランスを考慮し、スケール調整(比率化)を行います。
また円柱の半径は、Number Slider を用いて調整します。本記事では、日本全体を俯瞰した際の視認性を考慮し、5,000m以上の値を設定できるようにしています。そして円柱の位置は、各都道府県の境界曲線の中心になるように、「Area」コンポーネント(Centroid)を使用します。(離島を含む都道府県では、境界形状の重心が実際の主要エリアから外れる場合があるため、円柱の位置は必要に応じて調整してください。)最後に「Cap Holes」を接続し、人口数の円柱を完成させます。


●「Get REST Raster」:EsriやUSGSなどが提供する地図サービス(REST Service)に接続し、指定した位置や取得範囲に応じたベースマップを Rhino 上に読み込みます。


いくつかのベースマップを選択することができますが、本記事では、可視化手順の確認を目的としているため、ベースマップの最終的な選定は行いません。3D Demographicマップが視覚的に確認しやすいものを選択すれば十分です。そのため、上記の画像では「World Imagery」を仮に適用しています。
●「Read File」コンポーネントを使用し、e-Stat で取得したジニ係数の CSV データを読み込みます。事前にクレンジングした CSV には、都道府県名と数値データの両方が含まれているため、「Text Split」でデータを分割し、「Cull Index」を用いて数値データのみを抽出します。抽出したジニ係数の値をもとに、「Larger Than」コンポーネントで0.3を基準として判定を行い、条件分岐を作成します。ここでは、日本のジニ係数の分布を踏まえた参考値として0.3を設定しています。判定結果は「Dispatch」コンポーネントに接続し、ジニ係数が 0.3 以上 の地域を 赤色(所得格差が比較的大きい)、0.3 未満 の地域を 青色(所得格差が比較的小さい) として、円柱の表示色を切り替えます。
※ここでは可視化の例として 0.3 を基準値としていますが、目的に応じて任意の値に変更できます。


よくある失敗例
データは正しいはずなのに、ベースマップとシェープファイルがずれて見える場合、多くはデータの誤りではなく、Rhino側でのSet Earth Anchor Point の設定タイミングに起因します。はじめに基準点の設定をしていない場合、以下のような結果になる場合があります。Rhino × GIS の連携では、「どの座標系を使うか」だけでなく、「いつ基準を確定させたか」が結果を大きく左右します。間違えてしまった場合は、改めて Set Earth Anchor Point を設定した状態からはじめてみてください。

3D Demographicの可視化と読み取り
3D Demographicマップを作成しました。次はこのマップを使用して、どのような傾向があるのかを読み取ることができます。Rhino 上で回転させ、全体の分布と高さ関係を確認します。

所得格差が大きい地域:赤
所得格差が小さい地域:青
たとえば、以下のような傾向を把握することができます。
- 人口は首都圏・都市部に集中している
- 一方で、本記事で使用したデータでは、東京、大阪、和歌山、栃木、愛媛、高知、沖縄などで、所得格差(ジニ係数)が相対的に大きい傾向が見られる
これは単純な人口規模だけでは説明できず、地域特性や産業構造など、複数の要因が関係していると考えられます。ただし、これは 一つの視点による検証結果に過ぎません。
本記事で扱う3D Demographicは、無償で公開されているデータを使用し、簡易的な前処理と可視化を行った例です。そのため、本手法は厳密な分析や結論を導くためのものではなく、判断を補助するための参考情報として位置付けてください。また設定すべき最適なベースマップは、3D Demographicの最終的な見やすさや用途によって変わります。本記事ではあえて明示しないので、いくつかのベースマップを表示し、確認するだけで十分です。
前後編まとめ
第7回・第8回では、3D Demographicという考え方とRhino × GIS による可視化の流れを、準備から実装まで一連の流れとして紹介しました。RhinoとGISを組み合わせることで、従来の2D地図だけでは見えにくかった傾向を、別の角度から確認することが可能になります。
次回以降は、さらに標高やサーフェス情報と組み合わせた可視化について紹介していきます。
※本記事で紹介している内容は、AppliCraft Seminar Winter 2025でも紹介しています。
以下の動画の「3. オープンデータでGIS解析」(13:53〜)でも関連内容を紹介しています。
https://www.youtube.com/watch?v=suSSOSZWfoI
また、セミナーで 使用した「Rhino × GIS」に関する発表資料は、以下よりPDF形式でご覧いただけます。
AppliCraft Seminar Winter 2025「Rhino × GIS」発表資料(PDF) ![]()
