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

国土交通省が主導する3D都市モデルの整備・オープンデータ化のプロジェクトであるPLATEAU(プラトー)。ひとことで言えば、国が頒布している誰でも自由に使える「3D地図データ」だ。
自治体やビジネスでの活用はもちろん、ゲームや映像作品など、さまざまな用途に使える有用なデータなのだが、あくまでも地図データであり、「3Dソフトなどで直接扱える形式ではない」「ダウンロードする際のファイルの分割単位が特殊」など、地理情報を扱ったことがない人にとっては、何からはじめてよいのかがわかりにくい。
PLATEAUでは、こうしたわかりにくさを解消し、幅広い人々に使ってもらうために、さまざまな変換ツールを提供したり、使い方のチュートリアルドキュメントを公開したりしている。
この記事では、はじめてPLATEAUを使う人を対象に、こうしたツールやチュートリアルドキュメントについて、「どこから始めればよいのか」を解説していく。
【目次】
UnityやUnreal EngineならPLATEAU SDK
地図の特性を知る
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都市モデルの入手方法とデータ形式】に書かれている。まずは、ここを参照しよう。

座標について
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を使って、望みのデータが収録されているかどうかを確認することをおすすめする。

属性を確認すると、さまざまなデータが入っていて、さまざまな場面で活用できそうだと想いを馳せると思う。チュートリアルでも、属性のさまざまな活用例が示されている。「逆引き辞典・参考資料」の「地物と属性」には、その実例へのリンクがある。
提供されている地域とモデルの確認
左側の検索ボックスから操作すると、都道府県ごとに3D都市モデルを地図上に追加できる。地域ごとに、「建築物モデル」や「交通(道路)モデル」など、提供されているモデル一覧が表示されているので、自分が使いたい地域には、どのようなモデルが提供されているかを確認できる。
実際に地図を追加してみると、一部、精細ではない建物が表示されている場所もあるのに気づくと思う。そうした地域は精細度が低い「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都市モデルは、リアルな建物などを素材として使える。チュートリアルには、属性を活用した作例や、ディテールをさらに増すためのプロのテクニックも掲載されており、さまざまな方面で参考になることだろう。