aptpod Advent Calendar 2025 12月8日の記事です。
こんにちは、デザインチームの上野です。
はじめに
近年、自動運転、都市計画、拡張現実(AR)、ゲーム開発といった様々な分野でデジタルツインの需要が高まっています。
2Dマップや平面図では表現しきれなかった奥行きや構造物などを立体的に見ることができる3Dマップはこれらの先端技術を実用化するための鍵となっています。
しかし、本格的な3Dマップを作るとなれば制作の工程は複雑になりコストも高価になりがちです。
そこで本記事では、地理空間データの処理・分析に特化した無償のオープンソースGISソフトウェア「QGIS」と、無料の3Dモデリングツール「Blender」を連携させ、効率的かつ低コストで3D地図を作成する手法を紹介します。
以下の画像はQGISとBlenderをつかって作ったオフィス周辺のエリアの3Dマップ画像です。
本記事の手順を実施すると、下図のような3Dマップが作成できます。

作成した3Dマップは地形や建物の立体モデルとしてAR/ゲーム/都市計画/ロボティクス/自動運転の背景などに活用できます。
例えば走行中の車両のGPSデータと連携することで空間を視覚的に捉えることができるなど2Dのみではできなかった体験が可能となります。

作り方ですが
- QGISをつかってGEO TIFFファイルを書き出す
- BlenderでGEO TIFFを読み込んで3Dマップ加工する
と、とてもシンプルな手法で作成しています。
QGISをつかってGEO TIFFファイルを書き出す
QGISとは
QGISは無料で使えるオープンソースのデスクトップ型地理情報システムソフトウェアで、地図データの表示、作成、編集、そして分析などが行えるアプリケーションです。 qgis.org
QGISのインストール
まずはQGISをインストールします。
- QGISの公式サイト(https://www.qgis.org/download/)にアクセスします。
- 寄付をしない場合は「Skip it and go to download」ボタンをクリックします。
- ダウンロードページで、「長期リリース版(LTR)」の「QGIS Standalone Installer (64 bit)」などのインストーラーをクリックしてダウンロードを開始します。
- ダウンロード後、インストーラーにしたがってインストールを行います。
地図の領域を設定しGEO TIFFファイルを書き出す
インストールが完了したらQGISを起動させます。
ここでQGISで書き出したGEO TIFFは、後述するBlender側で「地形を生成する元データ」として使用します。
XYZタイルを用意し、レイヤーに追加する
XYZタイルは、Web地図を高速に表示するために、地図画像を一定の大きさのタイルに分割し、それをサーバーが提供する仕組みです。
QGISでは、「XYZ Tiles」接続を利用することで、インターネット経由で配信されているタイル地図を簡単にプロジェクトに追加し、背景地図として活用できます。
まず、XYZタイルを右クリックし、接続を追加します。

ここではGoogle Mapの衛星写真を使用したいと思います。
名称を入力後、URLに https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z} と入力し[OK]を押します。
他のタイル情報に接続したい場合はXYZ Tiles(地図タイル)のURL一覧を参考にしてください。

追加した接続をレイヤーにドラッグすれば地図が表示されます。

測地系を変更する
地図やGISで測地系が異なると、同じ緯度・経度を指していても、地球上の実際の位置が数メートルから数百メートルずれて表示されてしまいます。 そのため、異なるデータソースを重ね合わせて使う際は、必ず同じ測地系に統一する必要があります。
まずはプロジェクトで使用される座標系の変更を行います。
画面右下の [EPSG:〜]と書かれている箇所をクリックします。

設定画面がでたら測地系を選択します。
日本では平面直角座標系が全国で使用されています。
各都道府県で割り当てられている系統がことなるのでこちらを参考に変更してください。
今回作るモデルは東京エリアにあるので該当する JGD2000 Japan Plane Rectangle CS IX を指定し、OKを押します。

座標系が変更されました。

書き出ししたい領域を矩形レイヤとして定義する
座標系が変更できたら書き出したい領域を設定していきます。
左上にある[新規シェープファイルレイヤ]をクリックし、以下の画像のように編集してレイヤを追加します。

レイヤ追加後は編集できるようになります。
[編集モード切り替え]を行えばいつでも地物の追加や削除など再編集することができます。


地図上の2箇所をクリックすることで矩形が生成されます。
またレイヤのスタイルは細かく設定することができます。
GEO TIFF画像を書き出す
書き出したい矩形を作成できたらGEO TIFFとして書き出します。


[OK]を押したら自動的に設定されたディレクトリにGEO TIFF画像が書き出されます。

次はBlenderの作業に入ります。
[おまけ]領域の緯度経度を抽出する
QGISを使うメリットの一つとして、座標データを取得できることが挙げられます。
先ほど作成した矩形の四隅の平面直角座標を取得してみます。
矩形レイヤを選択し[ベクタ]→[ジオメトリツール]→[頂点を抽出]を選択します。

入力レイヤが合っているか確認し[実行]を押します。

そうすると矩形の四隅が抽出された 出力レイヤ が追加されます。
出力レイヤを選択した状態で[フィールド計算機]を押します。

属性テーブルに追加するフィールド名や計算式を以下のように設定します。
- フィールドの名前を入力(任意の文字列)
- フィールド型を[小数点付き数値]にし、フィールド長の小数点以下の桁数を調整
- 式に
$xと入力 (Y座標の場合は$y)
X座標とY座標でそれぞれ行います。

出力レイヤを右クリックし、メニューから[属性テーブル]を押します。
別ウィンドウが立ち上がり、先ほど計算したX座標、Y座標がテーブルで表示されます。
このとき、出力レイヤのスタイルでラベルをつけておくとどこの座標がどの位置にあるか視覚的にわかりやすくなります。

取得した値は平面直角座標系をベースにしたものでメートル単位の値になっています。
国土地理院のツールなどを使用し変換することで緯度経度の値を取得することができます。

今回は外部ツールを使いましたが、もしかしたらQGIS内で変換できるかもしれません。
今後まだまだ機能含めてQGIS周りを調査していきたいと思います。
以上のようにして領域の矩形の四隅の緯度経度を抽出することができました。

BlenderでGEO TIFFを読み込んで3Dマップ加工する
ちょっとしたおまけを挟みましたが、改めてBlenderでの作業にはいります。
Blenderとは
Blenderは、オープンソースで無料の統合型3Dコンテンツ制作ソフトウェアです。
幅広い機能により、Blenderは映画制作、ゲーム開発、建築ビジュアライゼーション、プロダクトデザイン、3Dマップの作成など、様々な分野で世界的に利用されています。
www.blender.jp
Blenderのインストール
Blenderをインストールします。
- Blenderの公式サイト(https://www.blender.org/)にアクセスします。
- トップページにある「Download Blender」ボタンをクリックします。ダウンロードページで、ご自身のOS(Windows、macOS、Linux)に対応した最新版の「Blender x.xx」のボタンをクリックし、インストーラーをダウンロードします。
- ダウンロード後インストーラー起動し、インストールを完了します。
Blenderをインストールできたら起動し、 Blender GIS というアドオンを使用して画像をインポートします。
Blender GISをつかう
プラグインをインストールする
まずはBlender GISを使うためにプラグインをローカルにダウンロードします。
Blender GISを開き、Clone or DownloadからDownload ZIPを選びダウンロードしてください。
BlenderでBelnder GISが使えるようにインポートします。
[編集]→[プリファレンス]を開きます。

[アドオン]を開き、右上のメニューから[ディスクからインストール]を選び、先ほどダウンロードしたZIPファイルを直接指定します。
追加されたあとチェックボックスにチェックを入れることでBlender GISが使用できるようになります。
BlenderのUIにGISのメニューが追加されます。
画像のインポート
プラグインが使えるようになったらQGISから書き出したGEO TIFFをインポートします。
[GIS]→[インポート]→[Georeferenced raster(.tif .jpeg .jp2 .png)]をクリックし、書き出したGEO TIFF画像を読み込みます。
画像がインポートされ地図のモデルが生成されました。

建物の追加
Blender GISにはOSMを取得して該当エリア内のオブジェクトを生成する機能があります。
その機能を使って今回は建物を追加します。
[GIS]→[Web geodata]→[Get OSM]をクリックします。
どのOSMを取得するのかON/OFFできるので[Bulidng]をONにします。
建物のメッシュが生成されました。

モデルの調整
あとは3Dマップを使用するケースに合わせてモデリングを調整していきます。
道路のトレースとモデルの追加
例えばGPSで道路を走行するケースの場合、道路を強調したいといった目的がでてくるかと思います。
Blender GISのOSMで生成される道路は以下の画像のように生成されます。
これだと車線や道路の幅といった道路の正確性の表現がわかりにくいので、Adobe Illustratorを使って衛星写真からトレースしSVG形式で書き出します。
BlenderでSVG画像を読み込みスケールや位置などを調整するとこのようになります。
今回は大雑把にトレースしましたが白線なども同様に追加することでより詳細度を高めることができます。
マテリアルの変更
あとはお好みに合わせて各オブジェクトのマテリアルを調整します。

完成

まとめ
いかがでしたでしょうか?
3Dマップを作るにあたって、最初はどうやって領域の緯度経度など値の正確性をだすのか、建物などのメッシュを一つ一つ作らないといけないのか、などとても難しいものだと考えていましたが、QGISとBlenderを使うことで十分なクオリティでデータの正確性も担保でき、かなりコストを抑えて作成できることがわかりました。
どちらも無料のソフトウェアで、使っているユーザーも多く、ネット上に有識者によるドキュメントもたくさんあるので是非調べながら手元で色々と試してみてはいかがでしょうか。