plateau-development-chart

これからはじめるPLATEAU開発チャート

プロジェクトの開始から5年が経った3D都市モデルの「PLATEAU」。さまざまな事例を耳にする機会も増え、そろそろPLATEAUを使いはじめたいと思っている人も多いだろう。はじめようとしたときに挫折する原因となるのが、情報量の多さだ。この記事では、これからPLATEAUをはじめようとする人を対象に、情報を整理し、どこから始めればよいのか、その入口を指南する。

Share

国土交通省が主導する3D都市モデルの整備・オープンデータ化のプロジェクトであるPLATEAU(プラトー)。ひとことで言えば、国が頒布している誰でも自由に使える「3D地図データ」だ。

自治体やビジネスでの活用はもちろん、ゲームや映像作品など、さまざまな用途に使える有用なデータなのだが、あくまでも地図データであり、「3Dソフトなどで直接扱える形式ではない」「ダウンロードする際のファイルの分割単位が特殊」など、地理情報を扱ったことがない人にとっては、何からはじめてよいのかがわかりにくい。

PLATEAUでは、こうしたわかりにくさを解消し、幅広い人々に使ってもらうために、さまざまな変換ツールを提供したり、使い方のチュートリアルドキュメントを公開したりしている。

この記事では、はじめてPLATEAUを使う人を対象に、こうしたツールやチュートリアルドキュメントについて、「どこから始めればよいのか」を解説していく。

【目次】

地図の特性を知る

 PLATEAUとは何か

 ファイルの入手と構造

 座標について

PLATEAU VIEWで体験する

 属性を確認する

 提供されている地域とモデルの確認

目的別の変換ツール

 「PLATEAU GIS Converter」で変換する

 UnityやUnreal EngineならPLATEAU SDK

変換や実験に便利なツール群

 任意の属性を追加する

 Pythonで処理する

クリエイティブ分野のテクニックも充実

地図の特性を知る

PLATEAUを使うにあたって強調したいのは、「地図データである」という点だ。はじめるにあたって、まず、以下の基本事項を理解しておこう。

PLATEAUとは何か

まずPLATEAUには、どのようなデータが収録されているのかを確認しておこう。チュートリアルの【TOPIC 1|3D都市モデルでできること】を、一通り読むことをおすすめする。

- 建物などの収録されているオブジェクトを「地物」と呼ぶ

- 地物には「ID」が付くが、PLATEAUは年度ごとに新たにデータが作られるため、同じ地物に対して同じIDが付くとは限らない。建物には、IDとは別に「建物ID」が付与される。こちらは年度が替わっても、同一の建物であれば同一であることが保証される

- それぞれの地物には、「建物の用途」「建物の高さ」「名称」などが属性として設定されている。どのような属性が設定されているのかは、地域によって異なる

- 地域によってモデルの細かさが異なる。これを「LOD(詳細度)」と呼ぶ。LOD0、LOD1、LOD2、LOD3などがあり、数字が大きいほど細かい(そしてデータサイズも大きい)。LOD2以上は、テクスチャが付いている

- 建物だけでなく、「道路や鉄道」「土地利用(都市計画など)」「災害リスク(津波などが発生した際の浸水領域)」などの情報も、別ファイルとして提供されている。これらにも属性がある。たとえば道路には、「道路名」や「高速自動車国道」か「一般国道」かなどの道路種別、「緊急輸送道路の指定」などが設定されている。「地形の起伏(DEM)」も提供されている。

なお、より詳細な情報は、「3D都市モデル標準製品仕様書」としてまとめられている。仕様を確認したい人は、このドキュメントを読むとよい。

ファイルの入手と構造

 PLATEAUの3D都市モデルのデータは、「G空間情報センター」の「3D都市モデル(Project PLATEAU)ポータルサイト」から入手できる。

- 地域(市区町村)ごとにダウンロードできる

- ダウンロードしたファイルのほとんどは、「3次メッシュ」(約1km四方)と呼ばれる単位で分割されている。それぞれには、メッシュ番号が付けられる。(ただし起伏のデータは「2次メッシュ」(約10km四方)。またLOD3と呼ばれる精細度の高いデータは「4次メッシュ」(約500m四方)のこともある)。

この情報は、PLATEAUのチュートリアルドキュメントの【TOPIC 3|3D都市モデルデータの基本[1/4]|3D都市モデルの入手方法とデータ形式】に書かれている。まずは、ここを参照しよう。

メッシュ番号は「地図で見る統計(jSTAT MAP)」で[3次メッシュ]をオンにすると確認できる。マス目に区切られた左上の番号が「3次メッシュ」

座標について

 PLATEAUを使った開発をするには、座標についての理解が必須だ。【TOPIC 3|3D都市モデルデータの基本[4/4]|CityGMLの座標・高さとデータ変換】を読んでおこう。

- 収録されているデータの座標は緯度・経度

- 緯度・経度では扱いにくいため、3Dソフトで扱う場合は、メートル単位に変換する。変換の際には「平面直角座標」という座標系を使うのだが、地域によって、原点座標が異なる。変換ツールには、使用する「系」の選択肢があるので、正しい系を選択しなければならない

- 上記の原点座標は、場所によっては、かなり遠い場所になりうる。例えば、関東圏の場合、9系と呼ばれる座標系で、原点は千葉県野田市(139度50分0秒 北緯36度0分0秒)。東京駅からは36000m(36km)も離れているため、位置を調整せずに3Dソフトで読み込んだ場合、おそらく東京駅は遠くすぎて見えない可能性がある

- 100kmは100,000メートルであるから、メートル単位は値の範囲として意外と広い。そのためfloat型だと精度不足の可能性があり、double型が望ましい

- 高さは「東京湾平均海面を基準とする標高」。そのため、3Dソフトで読み込んで、高さ0mの平面の上に乗せれば、建物が浮いた状態になる。もし0mの位置に配置したいのであれば、高さの分だけ引き算する

- (LOD2以下の場合)道路には高さ情報がなく、0m。そのため道路の高さを調整しないと、建物の高さと合わない

高さの問題は少しややこしく、チュートリアルでは、さまざまなドキュメントで扱われている。「逆引き辞典・参考資料」の「高さの扱い」の項目を参考にするとよい。

PLATEAU VIEWで体験する

開発をはじめる前には、PLATEAUで何ができるのかを体験すると理解が深まる。

属性を確認する

すぐに体験できるのが「PLATEAU VIEW」だ。ブラウザでアクセスするだけで、3D地図が表示される。

デフォルトでは、千代田区と中央区のデータが読み込まれている。地図が表示されたら、矢印のアイコンをクリックしてから、建物をクリックしてみよう。すると、建物の情報が表示される。これが収録されている「属性データ」だ。どのような属性データが提供されているのかは、地域によって異なるため、開発前にPLATEAU VIEWを使って、望みのデータが収録されているかどうかを確認することをおすすめする。

PLATEAU VIEWで属性を確認する

属性を確認すると、さまざまなデータが入っていて、さまざまな場面で活用できそうだと想いを馳せると思う。チュートリアルでも、属性のさまざまな活用例が示されている。「逆引き辞典・参考資料」の「地物と属性」には、その実例へのリンクがある。

提供されている地域とモデルの確認

左側の検索ボックスから操作すると、都道府県ごとに3D都市モデルを地図上に追加できる。地域ごとに、「建築物モデル」や「交通(道路)モデル」など、提供されているモデル一覧が表示されているので、自分が使いたい地域には、どのようなモデルが提供されているかを確認できる。

実際に地図を追加してみると、一部、精細ではない建物が表示されている場所もあるのに気づくと思う。そうした地域は精細度が低い「LOD1」のデータしか提供されていない地域だ。

新宿区のデータを追加しようとしている様子。地域によって提供されるモデルが異なる
ある境界を境に、精細な場所とそうでない場所があるのに気づく。平面を立ち上げただけの建物はLOD1のデータ

なお、PLATEAU VIEWは定期的にアップデートされているため、知らなかった便利な機能をチュートリアルで確認しておくのもよい。

TOPIC 2|PLATEAU VIEWで体験する[1/2]|3D都市モデルをブラウザで利用】でチェックしてみよう。

目的別の変換ツール

さて、実際に開発する場合だが、冒頭でも述べたように、PLATEAUのデータはCityGML形式だ。このデータはいわゆる「生データ」であり、各種ソフトウェアで、そのまま扱うことは考えられていない。何らかの方法で変換する必要がある。

さまざまな変換方法があるのだが、ファイルの種類が、大きく「GIS系」か「3DCG系」かに分かれる。前者はQGISやArcGIS、CesiumやTerriaJSなどのGISツールで扱うときに使う形式、後者はUnityやUnreal Engineなどのゲームエンジン、Blenderなどの3Dソフトで扱うときに使う形式だ。

主な変換フロー図

「PLATEAU GIS Converter」で変換する

変換するときに、まず試したいのが、「PLATEAU GIS Converter」。チュートリアルの【TOPIC 30|PLATEAU GIS Converterでコンバートして3Dで表示する】に解説があるように、次の10種類のファイル変換ができる。

GeoPackage/GeoJSON/3D Tiles/MVT(Mapbox Vector Tiles)/CZML/KML/glTF/Shapefile/Minecraft(MCA)/OBJ(Wavefront OBJ)

PLATEAU GIS Converterは変換速度も速く、複数のCityGMLファイルをまとめて変換することもできる。加工せずに単純に変更したいなら、ほとんどのケースで、このツールで十分だ。

UnityやUnreal EngineならPLATEAU SDK

UnityやUnreal Engineを使っているなら、PLATEAU SDKを使うのがよい。チュートリアルの【TOPIC 17|PLATEAU SDKでの活用[1/2]|PLATEAU SDK for Unityを活用する】、【TOPIC 17|PLATEAU SDKでの活用[2/2]|PLATEAU SDK for Unrealを活用する】に記述がある。

PLATEAU SDKを使うと、「OBJ形式」や「FBX形式」に変換して取り込める。UnityやUnreal Engineで使うだけでなくエクスポートもできるため、単純なファイル変換ツールとしても使える(実際、PLATEAU GIS Converterが登場するまでは、これらのファイル形式に変換するための重要なツールであった。いまでもFBX形式に変換したい場面では、よく使われる)。

PLATEAU SDKは、属性情報をUnityやUnrealのプログラムから参照できるライブラリとしても機能する。属性情報を使ったアプリを作りたいなら、必須のライブラリだ。

なお、Unityを使って開発するなら、「PLATEAU SDK-Toolkits for Unity」の活用も検討するとよい。(「デジタルツインアプリをラクに作るなら、まず試してほしいUnityのツールキット」を参照)。このライブラリを使うと、天気の変化、人や車、街路樹の追加など、よりリアルな描画を簡単なコードで実現できる。

変換や実験に便利なツール群

変換だけなら、おそらくいま述べた「PLATEAU GIS Converter」や「PLATEAU SDK」を使えばよいが、変換の際に、少し加工したいという場面もある。そんなときに便利な方法を紹介する。

任意の属性を追加する

CityGML形式ファイルには、もともと属性が存在するが、オープンデータなどとして提供されている他のGIS情報を追加したいことがある。そうした場面で使えるのが「PLATEAU DataLinker」だ。属性を追加したうえでPLATEAU GIS Converterで変換するというように、前処理で使うこともできるし、PLATEAU DataLinker単体でCSVに変換できるため、「PLATEAUのデータをExcelで扱いたい」という場合にも重宝する。

委細については、【TOPIC 27|3D都市モデルに別の地理空間情報を紐づけて利活用する[1/2]│PLATEAU DataLinkerの紹介と実例】に書かれている。

Pythonで処理する

PLATEAUのデータを読み込んで、Pythonで前加工したいときに便利なのが、PlateauKit+PlateauLabだ。GeoPandas形式のデータとして読み込んで加工したり、可視化したりできる。PythonでPLATEAUを扱いたいと考えている人は、【TOPIC 28|Pythonで活用する:基本編|PlateauKit+PlateauLabで始めるPLATEAU[1/2] |PLATEAUデータセットのインストール】を読んでほしい。

なお、Pythonで扱う場合、CityGMLのXML形式のまま処理する方法もある。たとえば、特定の地物だけをIDで抜き出したいときなどは、XML処理できるライブラリを使って抽出するのが簡単だ。その具体的な方法については、筆者が担当したPLATEAU Hans-on「50行のコードからはじめるブラウザでのPLATEAU利用」を参考にしてほしい。

クリエイティブ分野のテクニックも充実

PLATEAUのチュートリアルは、クリエイティブ分野の情報も充実している。たとえば、TouchDesignerを使ってインタラクティブな作品を作ったり、Blenderを使って映像制作するような情報もある。

PLATEAUの3D都市モデルは、リアルな建物などを素材として使える。チュートリアルには、属性を活用した作例や、ディテールをさらに増すためのプロのテクニックも掲載されており、さまざまな方面で参考になることだろう。