見出し画像

【実習編】非専門家のためのQGIS ~兵庫県オープンデータ「CS立体図」を3Dで描画しよう~

I. 兵庫県「全県土分の高精度3次元データ」公開

兵庫県は2020年1月に全国初となる「全県土分の高精度3次元データ」を公開しました。具体的には、1mメッシュの精度で全県域のDEMDSMCS立体図の3種のデータを、無料で使用できるオープンデータとして提供しています(※1)。

国土交通省が整備する基盤地図情報のDEMは5mメッシュや10mメッシュの精度であり、兵庫県データはそれよりさらに詳細なデータとなっています。
これらのデータはQGISで扱うことができるので、さっそくどのようなデータなのか確認してみましょう。

※1 DEM(数値標高モデル:Degital Elevation Model)は標高のデータ。DSM(数値表層モデル:Degital Surface Model)は建物や樹木といった地物の高さを含んだ地表面の高さのデータ。CS立体図(赤色立体図)は地形の起伏を分かりやすく示した地形表現図。


II. データの入手

以下のリンクから兵庫県の数値地形データダウンロードページにアクセスしましょう。今回は、CS立体図をダウンロードしてみます。CS立体図はgeoTiffで提供されているので、ダウンロードすればすぐにQGISに表示させることができます。

「データのダウンロードはこちらから」とあるURLをクリックして、CS立体図の提供ページに移動します。

画像1

データは、兵庫県内を分割して提供されています。どのように分割され、IDの割り振りがどうなっているかは「Indexmap」から確認できます。Indexmapは、GeoJSONとPDFとシェープファイルの3種類で提供されています。確認するだけならPDFを見れば良さそうです。PDFは [ 詳細 ] ボタンからダウンロードできます。

下図は、PDFで見たIndexmapです。緑のメッシュが1つのダウンロード領域に対応しています。ダウンロードしたデータはさらに4分割した、灰色の文字で書かれたメッシュIDごとのファイルになっています。

画像2

ダウンロードしたい範囲のIDが確認できたら、右の「詳細」からZIPファイルをダウンロードしましょう。ここでは、程よく山地と住宅街が含まれるメッシュID「05OG52」を選択しました。場所は芦屋市六麓荘町付近・・・いわずと知れた超高級住宅街のあたりですね。

画像3

ダウンロードしたZIPファイルを展開すると、CS立体図とDEMラスターのTIFファイルがあります。ファイル名の頭に「CS」と付いているファイルがCS立体図のデータです。

画像4

「.tfw」はワールドファイルと呼ばれるもので、同名のtifファイルの位置情報を記載したテキストファイルです。中身はテキストデータなので、メモ帳などで開くことができます。中には数値が6行分書かれています。この数値はアフィン変換と呼ばれる地図上との位置合わせを行うための変換パラメータであり、1ピクセル当たりの距離や画像の回転、基準ピクセル(左上)のXY座標を指定しています。ワールドファイルは、座標値に関する情報はありますが、座標系に関する情報はありません。座標系はQGISに読み込む際にユーザ側で指定しなければなりません。


III. CS立体図をQGISに表示させよう

QGISを開き、[ Ctrl ] + [ Shift ] + [ R ] でデータソースマネージャのラスタウィンドウを開き、CS立体図を追加してみましょう。下図のような、地形の起伏を示した画像が表示されます。地理院地図(淡色)を不透明度を小さくして背景に表示しました。CS立体図が正しい場所に画像が配置されていることが確認できます。

画像5


IV. CS立体図を立体的に表示させよう

QGISでデータを立体的に表示させる方法として一般的な方法は2つあります。

1. 「QGISの3Dマップビュー」を使う
2.  プラグイン「QGIS2threejs」を使う

ここでは両方の方法で立体表示を行ってみましょう。

---   ---   ---   ---   ---   ---   ---   ---

1. 高さデータの準備

その前に、立体表示させるためには高さの情報を持ったデータが必要です。CS立体図をダウンロードした時、「alt_***.tif」というファイル名のDEMラスターが一緒に入っていました。今回はこのDEMファイルを高さデータとしてQGISに読み込ませましょう。

[ Ctrl ] + [ Shift ] + [ R ] でデータソースマネージャのラスタウィンドウを開き、DEMを追加します。すると、「CRSが定義されていません」という警告が表示されます。そして、レイヤにはDEMが追加されたものの、キャンバス上にDEMラスターが表示されません。

画像6

CRSとは座標参照系(Coordinate Reference System)のこと。つまり、座標系が指定されてないからどこに描画すればよいか分からない、とQGISは警告しています。さらに、警告をよく見ると、「EPSG:4326 WGS84で読み込むよ」と言っています。

ところで、このDEMラスターの本当の座標系は何でしょうか。兵庫県のダウンロードページから確認することができ、平面直角座標系の第V系(EPSG:2447)です。

つまり、本当は「平面直角座標系の第V系」であるものを、「EPSG:4326 WGS84」として読み込んだために、画像がどこか変なところに描画されてしまっています。

これを修正するために、DEMラスターの投影法を定義してあげましょう。メニューバーの「ラスタ」から「投影法」→「投影法(CRS)の設定」を選択します。

画像7

設定ウィンドウの「設定する座標参照系(CRS)」が「不正な投影法」となっているので、右のボタンから平面直角座標系の第V系(EPSG:2447)を選択し、[ 実行 ] をクリックします(※2)。

※2 プルダウンから平面直角座標系の第V系(EPSG:2447)が選択できれば、それを選んでも構いません。

画像8

座標系の設定が完了すると、ログが表示されます。ログの最後に「finished」とあれば、ウィンドウを閉じてしまって問題ありません。

画像9

今読み込まれているDEMラスターのレイヤを一旦削除し、もう一度読み込み直すと、DEMラスターが正しい位置に表示されます。下図ではDEMラスターの不透明度を90%にして、CS立体図に重ねています。2つの画像がピッタリ重なっていることが確認できます。これで、立体表示させるための高さデータの準備が完了しました。

画像10

---   ---   ---   ---   ---   ---   ---   ---

2. 「QGISの3Dマップビュー」による3D表示

QGISのバージョン3以降では、3Dビュー機能が標準で搭載されています。3Dビュー機能を使う前に、DEMラスターと3D表示するデータ(今回はCS立体図)をQGISに読み込み、CS立体図をレイヤの一番上に置きましょう。

QGISのメニューバーから「ビュー」→「新しい3Dマップビュー」を選択します。このとき、座標系が正しく定義されていないレイヤがあると、エラーとなって3Dマップビューが開かないことがあります。座標系が定義されているにもかかわらずエラーとなる場合は、QGISを再起動し、データを読み込み直して3Dマップビューを起動してみて下さい。

画像11

3Dマップビューが起動すると別ウィンドウが立ち上がります。[ 設定 ] ボタンをクリックすると「3Dコンフィグレーション」ウィンドウが開きます。ここで、「地形」項目の「型」を、「平らな地形」から「DEMラスタ」に変更します。
すると「高さ」が表示されるので、DEMラスターのレイヤ名(今回はalt_***)を指定し [ OK ] をクリックします。

画像12

ちなみに、「鉛直スケール」は高さの強調を指定する項目で、数値を2にすれば起伏が2倍に強調されます。平野のように元の起伏が小さい領域を表示する際には、強調することで地形の凹凸を分かりやすく表現できます。

3Dマップビューの視点移動はマウスとキーボードから操作できます。操作方法は以下の通りですが、マウス操作は上手く加減しないと地図がグルングルンに動いてしまいます。個人的には拡大縮小はマウスホイール、それ以外はキーボードの方が操作しやすいと思います。

平行移動
マウスでドラッグ
カーソルキー(矢印キー)

拡大・縮小
マウスホイール、右クリックしながらマウスを上下
[ PgUp ] 、[ PgDown ]

原点を中心に回転
[ Shift ] を押しながらマウスでドラッグ
[ Shift ] を押しながらカーソルキー

視点を固定して回転
[ Ctrl ] を押しながらマウスでドラッグ
[ Ctrl ] を押しながらカーソルキー

地図を回転させ、斜めから表示させてみました。地形の起伏が3Dで示されていますね。

画像13

---   ---   ---   ---   ---   ---   ---   ---

3. プラグイン「QGIS2threejs」を使う

QGIS2threejsは、QGIS本体に3D描画機能が無かった時代に使われていたプラグインです。機能が豊富なため、QGIS3になった今でも利用している人は多いのではないでしょうか。

QGIS2threejsを利用するには、まずプラグインをインストールします。メニューの「プラグイン」から「プラグインの管理とインストール」をクリックし、プラグイン一覧からQGIS2threejsを選択、インストールします。

画像14

インストール後、DEMラスターと3D表示するデータ(今回はCS立体図)をQGISに読み込み、QGIS2threejsを起動するにはツールバーの「Web」から、もしくはツールバーに追加されたアイコンをクリックします。

画像15

QGIS2threejsのウィンドウを立ち上げたとき、最初はキャンバス上に何も表示されていません。左のレイヤーパネルの「DEM」でDEMラスターにチェックを入れましょう。すると、DEMラスターの標高を高さのベースとしてCS立体図が、3Dで表示されます。

画像16

3Dマップビューの主な操作は次の通りです。

平行移動
右クリックしながらドラッグ、[ Ctrl ] を押しながらドラッグ
カーソルキー(矢印キー)

拡大・縮小
マウスホイール、右クリックしながらマウスを上下
[ Ctrl ] + [ Shift ] を押しながら [ ↑ ]、[ ↓ ] キー

原点を中心に回転
ドラッグ
[ Shift ] を押しながらカーソルキー

「鉛直スケール」は、メニューバーの「Secne」から「Secne Settings」を開き、「Vertical exaggreation」から設定できます。

また、「Secne」の「Decorations」から「Arrow North」をクリックすると、キャンバスの左下に方位記号を表示できます。

画像17

ここまでCS立体図の3D表示を行ってきましたが、もちろんDEMラスターを3D表示することもできます。下図は、DEMラスターのレイヤを複製し、上のレイヤを標高で色分けし、下のレイヤを陰影図でレンダリングしてオーバレイしたものです。

画像18

ここで、3Dマップビューを立ち上げると、DEMが3Dで描画されます。

画像19


IV. おわりに

今回は、兵庫県のオープンデータ「全県土分の高精度3次元データ」のCS立体図をQGISで3D表示させました。高さのあるデータを3Dで表現することで、情報やアイデアを効率的に伝えることができます(※3)。

兵庫県のオープンデータには、今回使ったCS立体図のほかに、DEMとDSMのデータもあります。特にDSMは他に代用できる無料データはなく、都市3Dモデルの作成や、森林資源管理などにとても役立つデータとなっています。DSMの利用方法については、別の記事で紹介したいと思います。

※3 実際は、3Dというだけで毛嫌いする人も少なくないので、相手に合わせて空気を読んだ表現が求められます・・・。


補足:ラスタデータの結合

分割されたラスタデータは、QGISの機能を用いて結合することができます。メニューバーの「ラスタ」から「その他」→「結合(gdal_merge)」を選択します。

画像20

結合ウィンドウで、入力ラスタの右ボタンをクリックすると複数選択ウィンドウが開きます。ここで [ ファイルの追加 ] をクリックし、結合するファイルを複数選択します。大量のファイルを結合する場合は1つのフォルダの中に纏めておき、[ ディレクトリの追加 ] で結合ファイルを指定すると楽です。入力ラスターと出力ラスターを指定したら、[ 実行 ] しましょう。

画像21

下図は、メッシュID「05OG52」の4つのCS立体図を結合したものを表示しています。また、左下には比較としてDEMラスターの1つを示しています。

QGISで操作する上では、レイヤ数は少ない方が操作が楽になります。しかし、結合しすぎると、1つのファイルサイズが大きくなり、処理が不安定になります。1GBを超えるラスターファイルは危険なので、結合のし過ぎには注意しましょう。

画像22


記事の内容でもそれ以外でも、地理やGISに関して疑問な点があれば、可能な限りお答えしたいと思います。