LoginSignup
3
1

複数メッシュからなる広範囲の数値標高モデルをざっくりとBlenderで扱う

Last updated at Posted at 2024-03-01

目指すもの

Blenderででっかい佐渡島、眺めたくないっすか?

image.png

基盤地図情報として公開されている高解像度の数値標高モデルを用いて、広範囲の地形をそれなりの解像度&1回の作業で Blender へ持っていきます。

サブ目的

検索するとQGISの「3D地図」からobj形式でエクスポートする方法が解説されていますが、その通りに行うとBlender側で崩れてしまう問題を解決します。

画像形式で地形を出力する方法もあるのですが、各ドットが東西南北の直角方向に向いているために谷の形状や山容をうまく表現できなかったり、画像の解像度によって地形が粗くなる問題を解決します。

事前に必要なもの

本記事に基づく成果物は 国土地理院コンテンツ利用規約 に従うものとします

数値標高モデルのダウンロード

image.png

国土地理院の基盤地図情報ダウンロードサービスから数値標高モデルをダウンロードします。


image.png

画面左上の情報タブはデフォルトで「DEM」タブが選ばれているのでそのままにします。その他の地図データも必要な場合は「基本項目」タグから選ぶこともできますが今回は割愛します。

デフォルトでは解像度の高い5mメッシュが選択されていますが、複数のメッシュを扱う場合は10mメッシュ(10B)を用いることを強く推奨します。

メッシュを選択し終えたら「ダウンロードファイル確認へ」を押して次へ進みます。


image.png

「全てチェック」を押して「まとめてダウンロード」しましょう。
10秒ほど待つとダウンロードが始まります。

この画面で一度ログインとアンケートが要求されます。
より良いサービスの実現に貢献するため、アンケートに回答しましょう。

image.png
広範囲のメッシュをダウンロードしようとすると、ダウンロードページが複数生成される場合があります。必ずページ下部をチェックし、すべてのページごとのデータをダウンロードしましょう。

XMLファイルの展開

image.png

ダウンロードした"PackDLMap.zip"を展開すると各メッシュごとのzipファイルが格納されています。必要なのはさらにこの中にあるxmlファイルです。作業フォルダを用意し、7zipで「ここに展開」を選ぶと一度で終わらせることができます。

今回は D:\Sado\XML というフォルダにXMLファイルを格納します。

PackDLMap.zip 内に含まれる4つのxmlファイルは不要です。

QGISでの作業

プラグインの導入と設定

image.png

「プラグイン」→「プラグインの管理とインストール」から必要なプラグインを検索しインストールします。

プラグイン 役割
QuickDEM4JP 数値標高モデルの読み込み(解説
Qgis2threejs 3Dでの表示とエクスポート

標高データの読み込み(QuickDEM4JP)

「プロジェクト」→「新規」を選んで新規プロジェクトを開始したら、QuickDEM4JP から数値標高モデルのXMLファイルをインポートします。

image.png

QuickDEM4JPの設定は以下の通り。

image.png

形式 'xml'を含むフォルダ
DEM D:\Sado\XML
出力先 D:\Sado\Sado.tiff
CRS ※注 ESPG:6677 - JGD 2011

「CRS」の項目で空間座標系にデフォルトの「ESPG 4326 - WGS 84」を用いてしまうと、この後の作業で意図しない座標にモデルが出現するため、ESPG:6677 - JGD 2011 などの日本測地系を用いてください。右の小さな地球儀アイコンから追加できます。
空間座標系の一覧 : https://lemulus.me/column/epsg-list-gis

読み込みには時間がかかりますので辛抱強く待ちましょう。

image.png
QGISで扱えるメッシュ範囲を超えると「セルサイズが大きすぎます」とのエラーが出ます。
DEMが5mメッシュであれば10mメッシュ(10B)を利用します。10mメッシュでもエラーが出る場合は範囲を小さくします。各都府県より小さい程度が目安です。

成功すれば以下のような画面になります。

image.png


3Dモデルの表示(Qgis2threejs)

image.png

続いて三角アイコンの Qgis2threejs を開き、3次元ビューで標高データが正しく反映できているか確認しましょう。

image.png

「sado」のレイヤーを右クリックして以下プロパティを編集します。

Resampling level 6
Image width 512, 1024, 2048, 4096

Resampling level は地形の細かさを反映します。最高の6にします。
Image width はこの後で追加する航空写真テクスチャの解像度を反映します。多いほど極端に処理が重くなりますので最初はデフォルトの512でいじらず、適宜様子を見ながら上げていくと良いでしょう。


image.png

標高のスケール(倍率)を変えたい場合は「Scene」→「Scene Settings」から「Z exaggeration」の値を変更します。


glTF形式での出力

image.png

この Qgis2threejs の画面から glTF で出力すれば Blender でも扱える3Dモデルが出来上がります。この段階で一度出力して確認してみるのも良いでしょう。

この後は一度QGISに戻ります。

国土地理院の航空写真を貼り付けたモデルを生成する

QGISはさまざまな地理空間情報を扱う事が出来ます。国土地理院で公開している航空写真(または衛星写真)を標高データに重ね合わせてみましょう。

image.png

QGISのブラウザから「XYZ Tiles」を右クリックして「新規接続」を選びます。

image.png

必要なのはタイトルと読み込む画像タイルのURLの2つです。ここでは以下のようにします。

タイトル(例) URL
地理院地図(シームレス航空写真) https://cyberjapandata.gsi.go.jp/xyz/seamlessphoto/{z}/{x}/{y}.jpg

地理院画像タイルは他にもさまざまな種類があります。

タイル適用例

image.png
image.png
image.png

赤色立体地図はアジア航測株式会社の特許(第3670274号等)を使用しています。


image.png

無事に航空写真が背景に読み込まれたでしょうか。航空写真のレイヤを上に持っていくことで最終的な3D表示上でもテクスチャが反映されるようになります。


最後の仕上げです。

image.png

出力される地形とテクスチャは正方形かつQGISのプレビュー範囲で生成されるため、QGISのプレビューを正方形に近づけ、読み込みたい領域が可能な限り収まるようにしてから Qgis2threejs を開きます。

image.png

それなりの解像度で地形を再現できたのではないでしょうか。

先にも触れたとおり、この Qgis2threejs の画面から「File」→「Save Scene As」でglTF形式で出力することで Blender などでインポートできるようになります。

以上で完成です。

image.png
Blender で読み込んだ地形データは実寸になっているため、ビューの終了距離を100000m以上にしましょう


課題

image.png

今回の手順では1回の作業でそれなりに十分な解像度で地形を再現することを目標としましたが、実際の10mメッシュ標高データはもっと高解像度です。画像は佐渡金山で有名な相川を拡大して Qgis2threejs で表示させたものですが 、5mメッシュほどではないものの小さな谷・沢までデータに含まれていることがわかります。

より高解像度で生成したい場合はメッシュごとに出力し、Blender 側でくっつけるなどの手間が必要になるのが課題となります。


今回の手順でQGISに都府県単位より広い範囲で数値標高データのXMLメッシュファイルを読み込ませることができません。QGISのマニュアルも参照しましたが設定があるのかどうかはわかりませんでした。せめて QuickDEM4JP でセルサイズを増やす設定があればよいのですが…

それでも都府県単位で読ませたい

2024年時点のハイエンドゲーミングPCでも処理全体に数時間を要しますが、基盤地図情報ビューアを用いることで今回と同じ手順で可能です。表示例は愛知県全域です。

image.png

  1. 数値標高データ(DEM-10B)を基盤地図情報ビューア(FGDV.exe)で読み込み → シェープファイル(.shp)で出力
  2. QGISでシェープファイルを読み込む
  3. [ラスタ] → [解析] → [グリッド(最近傍法)] を実行(パラメータはそのまま)
  4. 先の手順と同様にQgis2threejs で表示 → glTFで保存

特にラスタ解析作業はCPU使用率100%が1~数時間続く場合があり、他の作業にも支障が出ます

image.png

山岳にここまで寄ってもきっちり表現できているので、PCに自信がある方は挑戦する価値はあるかも…?
※ Qgis2threejs のテクスチャ解像度(Image width)を8000にしています。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1