A proof of concept GUI and CLI tool for converting PLATEAU's 3D city models (CityGML) of Japan into various geospatial formats, including 3D Tiles, MVT, and GeoPackage.
本リポジトリでは、FY2023 の Project PLATEAU「都市デジタルツインの実現に向けた研究開発及び実証調査業務」(内閣府/研究開発とSociety5.0との橋渡しプログラム(BRIDGE))において開発された「PLATEAU GIS Converter」のソースコードを公開しています。
PLATEAU GIS Converter は、PLATEAUが提供するCityGML形式の3D都市モデルを他の一般的なGISデータ形式に変換するソフトウェアです。
東京都23区の CityGML (v2) を読み込んで、3D Tiles に変換した例:
ソフトウェアのメイン画面:
PLATEAU の標準仕様に準拠した CityGML 2.0 形式の3D都市モデルは、専門のGISツールやCLIコマンドを用いて他のGIS形式に変換して用いられることが一般的ですが、一般ユーザーが簡易に利用できる汎用ツールは存在しません。そのため、流通や活用の範囲が専門家や技術者に限られていました。
「PLATEAU GIS Converter」を利用することで、3D都市モデルを一般的なGIS形式に変換して、様々な分析・開発を行うことができます:
- GeoPackage 形式による QGIS 等での解析
- Mapbox Vector Tiles (MVT) 形式による、大規模データのWeb等での高速描画
- 3D Tiles 形式による Cesium 等での可視化
- KML 形式による Google Earth での可視化
- など
- ソフトウェアの最新版は、GitHub リポジトリの Releaseページ からダウンロードしてください。
- 詳しい利用方法については、こちらのマニュアルをご覧ください。
本ソフトウェアの機能は以下の通りです:
- 3D都市モデル(CityGML)の以下の形式への変換:
- 3D Tiles
- Mapbox Vector Tiles (MVT)
- GeoPackage
- GeoJSON
- Shapefile
- KML
- CZML
- Minecraft
- glTF
- Wavefront OBJ
- 複数の入力ファイルをもとにした変換
- 属性名マッピングルールの取り込み
- 指定された座標参照系に変換して出力(一部形式で対応)
利用技術は以下の通りです。
内部ロジック:
- 都市モデルの解析および他形式への変換はすべてプログラミング言語 Rust で実装しています。多くの処理はゼロから独自に実装したものです。
ユーザインタフェース (UI):
本ソフトウェアは以下の環境で動作することを想定しています:
- OS:
- Windows 10 以上 (Intel)
- macOS (Apple Silicon, Intel)
- CPU:
- 特に制限はありませんが、出力形式や変換するデータ量によっては、CPU性能が処理時間に大きく影響します。
- メモリ:
- 特に制限はありませんが、出力形式や変換するデータ量によっては、変換時に多くのメモリを要します。
- ネットワーク:
- インターネット接続は不要です。
- ストレージ:
- インストールには30MB程度の空き容量が必要です。
- データ変換時には、変換元データと同等ないしそれ以上の空き容量が必要です。
- アプリケーション:
- データソース:
nusamai-citygml
— CityGML パーサ実装支援ライブラリmacros
— パーサ導出用の proc macros
nusamai-plateau
— PLATEAU 用の CityGML モデルおよびパーサ
- 基盤・ユーティリティ(本プロジェクトのユースケースと癒着しないように構成):
nusamai-projection
— 投影法変換nusamai-gpkg
— GeoPackagenusamai-gltf
— glTFnusamai-geojson
— GeoJSONnusamai-kml
— KMLnusamai-czml
— CZMLnusamai-shapefile
— Shapefile
- MIERUNE/earcut-rs — ポリゴン三角形化アルゴリズムのRust移植
- MIERUNE/japan-geoid — 日本のジオイドモデル (JGD2011 → WGS 84 の変換)
- MIERUNE/flatgeom-rs — シリアライズ/デシリアライズの効率を優先したジオメトリ型
- MIERUNE/kv-extsort-rs — Key-value データの外部ソート
- MIERUNE/dda-vozelize-rs — 3Dメッシュサーフェスの高速なボクセル化
- MIERUNE/cesiumtiles-rs — 3D TilesのJSONモデルなど
- MIERUNE/atlas-packer — テクスチャアトラスの作成
- MIERUNE/tinymvt — A small utility for generating MVT
- 本ソフトウェアは、MITライセンスのもとで提供されるオープンソースソフトウエアです。
- ソースコードおよび関連ドキュメントの著作権は国土交通省および開発者に帰属します。
- 本ソフトウェアの開発は株式会社MIERUNEが行っています。
- 本リポジトリおよびソフトウェアは Project PLATEAU の参考資料として提供しているものです。動作の保証は行っておりません。
- 本リポジトリおよび本ソフトウェアの利用により生じた損失及び損害等について、開発者および国土交通省はいかなる責任も負わないものとします。
- 本リポジトリの内容は予告なく変更・削除する場合があります。
cd ./nusamai/
# Debug (非常に低速)
cargo run -- ~/path/to/PLATEAU/15100_niigata-shi_2022_citygml_1_op/udx/bldg/*.gml --sink geojson --output foobar.geojson
# Release (最適化コンパイル)
cargo run --release -- ~/path/to/PLATEAU/15100_niigata-shi_2022_citygml_1_op/udx/bldg/*.gml --sink geojson --output foobar.geojson
# Release (LTO有効のプロダクションビルド、最高速)
cargo run --profile release-lto -- ~/path/to/PLATEAU/15100_niigata-shi_2022_citygml_1_op/udx/bldg/*.gml --sink geojson --output foobar.geojson
Dev:
cd ./app/
npm install
RUST_BACKTRACE=1 npx tauri dev
Build:
cd ./app
npx tauri build
- Test & Lint
cargo clippy --all-targets --all-features
cargo test --workspace --exclude app --all-features
Codecov: https://app.codecov.io/gh/MIERUNE/plateau-gis-converter
cargo llvm-cov --workspace --exclude app --html --all-features
- Taku Fukada (@ciscorn)
- Satoru Nishio (@nokonoko1203)
- Qu Xinmiao (@xinmiaooo)
- Sorami Hisamoto (@sorami)
- Teruki Tada (@TadaTeruki)
- Satoshi Komatsu (@satoshi7190)
- And every contributors