← back
2026STAC Japan 2026 speaker JAXA 筑波宇宙センター talk
interactive · stac.surreal.red · overview

PLATEAU は日本のオープンな 3D 都市モデルのプロジェクトで、2025 年度時点で 329 の市区町村のモデルが公開されている。私の 2022 年からの本業は、Eukarya でその公式ビューアと CMS を作ることだ。ダウンロードは簡単。使うのは簡単ではない。私の住む柏市は、建物だけで 143 ファイル・1.6 GB の CityGML になる。ポータル自体に問題はない——目録は整い、ライセンスは明確で、仕様は標準的だ。問題は「まずダウンロードして、全部パースする」というモデルのほうにある。映像業界は力技で乗り越えるが、日常の GIS 業務はだいたい弾き返される。

そこで個人的な実験をした。この建物たちが cloud-native だったら? 都市をまるごとダウンロードするのではなく、必要な街区だけをオブジェクトストレージから直接読む。セマンティクスは保ったまま、どのツールからでも。

既存の手法を調べると、「3D ジオメトリ × セマンティックサーフェス × クラウドネイティブな範囲読み取り × 列指向の分析」という交差点は空白だった。一番近い先行例の FLATEAU は LOD0 のフットプリントだけを残していて、理由は GeoParquet に 3D ジオメトリ型がないこと。その諦められた一段が、ちょうどこの実験の立ち位置だ。はっきり言っておくと、私は何も発明していない——レンガは全部、既製品である。

やり方は、Solid を GeoParquet に押し込むのではなく、層に分けること。GeoParquet には 2D フットプリントと属性(44 MB の発見レイヤー。DuckDB や QGIS から SQL over HTTP でそのまま引ける)。ネストした Parquet には LOD1 のソリッドと LOD2 のセマンティックサーフェス。FlatCityBuf には完全な 3D オブジェクト——ファイルの中に Hilbert R-tree を持っていて、COG や COPC と同じ発想だ。「建物のための COPC」と呼んでいい。結果:同じ都市が 13 分の 1 に、169,223 棟の変換は失敗ゼロ。ある街区の完全な 3D を取り出すのに、141 MB のファイルのうち触るのは 2.2%、レンジリクエスト 9 回。2 つの層はベンチマークで突き合わせもした——配信はフィーチャー指向が、分析は列指向が勝つ。だから両方残す。全体は正規の STAC 1.1 カタログにぶら下がっていて、使ったのはコミュニティ拡張だけ。方言は発明していない。

最後に正直な話をした。3D は本当に割に合うのか? 私自身のシミュレーションは 2.5D の角柱で走っていて、丁寧に保存した LOD2 サーフェスには一度も触れなかった。文献の結論は、分水嶺は屋根の形ではなく高さの正確さにある、というものだ。だからデフォルトは 2.5D。3D は割に合う場所でだけレンジ読みする——層に分けたおかげで、それが安くできる。試したければ、DuckDB に SQL を 1 行貼るだけでそのまま動く。ダウンロードもキーも要らない。