見出し画像

CityJSONの論文が面白かったので和要約

CityJSON: a compact and easy-to-use encoding of the CityGML data model

和訳タイトル:
CityJSON: CityGMLデータモデルのコンパクトで使いやすいエンコーディング
論文本体
https://arxiv.org/abs/1902.09155

Abstract

国際標準CityGMLは、デジタル3D都市モデルを保存するためのデータモデルおよび交換フォーマットですが、そのXMLベースの交換フォーマットにはいくつかの欠点があります。開発者にとって解析が困難で、データ交換には別の形式に変換する必要があります。本論文では、CityGMLデータモデルの新しいJSONベースの交換フォーマットであるCityJSONを提案します。CityJSONはプログラマーを念頭に設計され、コンパクトであり、ウェブやモバイル開発に適しています。また、CityGMLフォーマットよりも使いやすいことを示し、拡張機能(Extensions)を導入してコアデータモデルを拡張する方法を紹介します。

Keywords

3D都市モデリング、CityGML、データモデリング

Introduction

CityGMLは、都市や風景のデジタル3Dモデルを保存するためのオープンデータモデルおよび交換フォーマットです。Open Geospatial Consortium(OGC)によって標準化されています。CityGMLは、都市に見られる一般的な3Dオブジェクト(建物、道路、川、橋、植生、都市家具など)を記述する方法や、3Dオブジェクト間の(階層的な)関係を定義しています。また、異なるアプリケーションや目的に応じて3Dオブジェクトを表現するための異なるレベルの詳細(LoDs)を定義しています。しかし、CityGMLのXMLベースのエンコーディングは冗長で階層的であり、ウェブに適していません。

CityGML: a data model and an encoding

CityGML 2.0.0は、都市をセマンティックオブジェクトに再帰的に分解し、一般的な3Dオブジェクトとその階層関係を定義しています。例えば、建物は部分で構成され、部分は壁で構成され、壁には窓があります。オブジェクトのジオメトリは、ISO 19107のジオメトリ定義のサブセットを使用して実現されており、複数のジオメトリ(Multi/Composite geometries)の集約も可能です。CityGMLは、各クラスに対して5つのレベルの詳細(LoDs)をサポートしており、アプリケーションに応じて都市オブジェクトの適切な表現を使用することができます。また、新しいクラスや属性を定義するための拡張機能(ADE)もサポートしています。

Main criticism of CityGML as an encoding

XML

CityGMLのXMLベースのエンコーディングにはいくつかの欠点があります。まず、JSONに比べてXMLは非常に冗長であり、ファイルサイズが大きくなりがちです。また、XMLはマークアップ言語であり、データフォーマットとしてのJSONよりも複雑であるため、ソフトウェアでの解析が難しくなります。JSONはシンプルなデータ構造に基づいており、ほとんどのプログラミング言語で簡単に扱えるため、開発者にとって使いやすいです。
さらに、XMLファイルは読み書きが難しく、特に大規模なデータセットの場合は扱いが困難です。JSONはそのシンプルさゆえに、人間にも機械にも読みやすく、解析やデータ交換が容易です。例えば、多くのプログラミング言語では、JSONデータを1行のコードで解析し、ネイティブなデータ型に変換できますが、XMLの場合は外部ライブラリを使用する必要があり、解析プロセスが複雑になります。
また、XMLの構造は非常に階層的であり、データモデルが複雑になると、ファイルの構造も深くなり、解析がさらに難しくなります。CityGMLファイルはしばしば巨大で、数ギガバイトに達することもあり、通常のメモリ容量では扱いきれないことが多いです。このため、データの動的な読み書きが必要となり、処理が複雑化します。JSONはこれに対して、よりフラットな構造を持ち、データの取り扱いが容易です。
XMLのもう一つの問題は、XLinks(XML Linking Language)の多用です。XLinksは理論上は強力ですが、実際にはリンクの解決が難しく、特に大規模なファイルや外部URI(ファイル外部のオブジェクトを指すリンク)の場合は問題が発生します。多くのXMLライブラリやソフトウェアはXLinksを解決できません。

GML

GMLはジオメトリを表現できますが、同じジオメトリを異なる方法で保存できるため、開発者にとって解析が難しいです。例えば、単純な四角形はGMLでは少なくとも25通りのバリエーションで保存できます。このため、開発者はすべてのバリエーションを処理するコードを記述する必要があり、ジオメトリの次元が増えるとさらに複雑になります。

CityGML

CityGMLはXMLとGMLの欠点を引き継いでおり、ファイルが非常に大きくなることが多く、解析が困難です。また、CityGMLは多くのクラスを階層的にネストしているため、ファイルの読み取りが難しくなります。さらに、CityGMLはXLinksを多用しており、リンクの解決が困難です。

CityJSON

CityJSONはCityGMLデータモデルの大部分を実装しており、すべてのCityGMLモジュールをマッピングしています。以下に主要な設計選択とデータモデルの違いを説明します。

City objects are "flattened out"

CityJSONでは、CityGMLの階層構造を排除し、フラットな形式で表現しています。例えば、建物とその部分が同じレベルで表現され、それぞれがIDでリンクされています。

Geometry

CityJSONはCityGMLと同じ3Dジオメトリプリミティブを定義していますが、ジオメトリの頂点は別の配列(verticesプロパティ)に格納されます。ジオメトリプリミティブは、頂点の座標をリストする代わりに、頂点配列の位置を参照します。

Semantic surfaces

CityJSONでは、セマンティックサーフェスがジオメトリから分離され、別のJSONオブジェクトとして宣言されます。これにより、セマンティックサーフェスオブジェクトは一度だけ宣言され、各サーフェスはそのセマンティックサーフェスを参照します。

Geometry templates

CityGMLの暗黙的ジオメトリ(テンプレート)は、CityJSONではテンプレートとして保存され、再利用できます。各テンプレートはファイル内の特定の場所に保存され、再利用されます。

Appearance

CityJSONは、CityGMLと同様に、テクスチャとマテリアルをサポートしています。これらはファイルの特定のエントリポイントに配置されます。

Schema validation

CityJSONはJSON Schemaを使用してデータモデルを文書化し、ファイルが許可された構造と構文に従っているかどうかを検証します。JSON Schemaは柔軟性に欠けますが、ほとんどの検証を可能にし、追加の検証機能もサポートしています。

CityGML support

CityJSONはCityGMLのデータモデルの大部分を実装していますが、いくつかのモジュールや機能は簡略化されています。例えば、LoD4(建物の内部を表現するための詳細)はサポートされておらず、任意の座標参照系(CRS)もサポートされていません。

Compression of CityJSON files

CityJSONファイルは、頂点の座標を整数値で表現し、スケールと平行移動を使用して元の座標を復元することで、ファイルサイズを約5-10%削減できます。この方法は、ファイルをより堅牢にし、浮動小数点の丸め誤差を回避します。

Handling and streaming (large) CityJSON files

大規模なCityJSONファイルは、パーティショニングによって複数のファイルに分割できます。これは、ファイルの処理とストリーミングを容易にします。

Support for metadata

CityJSONは、ISO 19115に基づいてメタデータをサポートしており、シティモデルレベル、モジュールレベル、シティフィーチャーレベルでメタデータを提供します。これにより、3D都市モデルに関する詳細な情報を保存できます。

Implementation and experiments

CityJSONを読み書きするためのソフトウェアの実装例を紹介します。

citygml4j

CityGMLファイルを解析、書き込み、編集するためのオープンソースJavaクラスライブラリとAPIです。バージョン2.6.0からCityJSONの解析と書き込みをサポートしており、CityGMLとCityJSONの相互変換が可能です。

cjio

CityJSONファイルを処理および操作するためのPythonコマンドラインインターフェースです。様々な処理操作を1ステップで実行できるオペレーターを備えています。

azul

macOS用のCityJSONビューアです。CityJSONのプリミティブとセマンティックサーフェスをサポートしていますが、テクスチャ、マテリアル、ジオメトリテンプレートはサポートしていません。

3dfier

2D GISデータセットと標高データセットから3D都市モデルを自動的に構築するソフトウェアです。CityJSONを出力フォーマットの一つとしてサポします。今後の課題としては、大規模なファイルを複数の部分に分割するためのタイルスキームの実装や、バイナリエンコーディング(例:Binary JSON(BSON))の提供があります。最終的に、OGCによるCityGML v3の新しい仕様に対応するため、CityJSONの仕様を更新する予定です。CityJSONの開発はオープンであり、誰でも新機能の提案や改善に参加できます。

Availability of data and materials

この記事が気に入ったらサポートをしてみませんか?