2次元・2.5次元・3次元・標高
現実的に用途が想定されるタイルデータには、2次元データ・2.5次元データ・3次元データ・標高データがあります。ここで、2.5次元データというのは、2次元データに高さ情報が属性として付加されたようなタイプのデータとお考えください。
それぞれについて、具体的な符号化方法は色々ありますが、おおまかな流れについて私が感じているのは次の通りです。
2次元・2.5次元のベクトルデータについては、gh:mapbox/vector-tile-spec をベースにデータの整備が進んでいます。2.5次元データの扱いの具体的な例については、https://www.mapbox.com/mapbox-gl-js/example/3d-buildings/ あたりをご覧ください。boolean 属性である extrude と、数値属性 height および min_height を使って建物を表現します。
3次元のベクトルデータについては、gh:AnalyticalGraphicsInc/3d-tiles で検討が進んでいるところです。こちらは、より一般解を狙っていますが、計画が莫大であるため、なかなか一朝一夕に進捗するというものではありません。
vector-tile-spec か 3d-tiles か
vector-tile-spec の代表的な実装は Mapbox GL JS であり、3d-tiles の代表的な実装は、Cesium です。これらの代表的なユースケースはそもそも大きくことなりますが、それでもなお、おそらく、両方が等しく盛り上がるということはありません。いずれかが先に市場を占有し、もう一方が市場を食われることになると思います。
ベクトルタイルに Cesium が対応するのか、Mapbox GL JS や Tangram が本格的に三次元に対応するのか、あるいは、そのような斜め対応は当面実現することはないと思っておけば良いのか、というところを読めると、面白いと思います。
「ウェブ地図」と「デジタル地球儀」という2つのコンテキストは、実際にはあまり交差することはないのが現状です。しかし、唯一三次元建物データでは、すでに接触が始まっています。3d-tiles でしか容易に扱えないような複雑な立体を表してもなお基本地図として成立するようなことが起こるのか、あるいはそのようなことは発生せず、3d-tiles はローカルな 3D モデルの提示のためのフォーマットに実質とどまるのか、データ事業の面から、方向性が定まるのかもしれません。
いま、この問題について、それほど速い動きは見えません。もうしばらくの間、悩ましい時期が続くかもしれません。
Mapbox GL JS に terrain rendering が来る。ただし2次元で
Mapbox GL JS については、Roadmap 情報が提供されています。本稿執筆時点では、「Client-side hillshade rendering #3730 #4701」が Active な開発項目になっています。
これによると、terrain-rgb raster tiles つまり PNG 標高タイルを使って、陰影段彩を二次元にレンダリングする機能を加えようとしているみたいですね。地理院地図Globeは Cesium ベースで、PNG 標高タイルを使って標高を3次元で表示していますが、Mapbox GL JS にも、少し近い機能が実装されつつあるということになると思います。
この動きを遅いと見るか、早いと見るか、やや微妙なところです。三次元問題は、避けられるのであれば、もうしばらく避けて見るのも一つの手、2.5次元に特化して Mapbox GL JS で仕事をするのも一つの手、Cesium のシェア増大を助太刀するのも一つの手、かと私は思います。