都市デジタルツイン — 第4部: 座標、標高、および3D GISをグラフィックエンジンに統合する際の3つの技術的エラーを克服する

都市デジタルツイン — 第4部: 座標、標高、および3D GISをグラフィックエンジンに統合する際の3つの技術的エラーを克服する

By blog_mht_admin

第3部では、XPathを使用して、プロジェクトの要件に合ったLODレベル(例: <bldg:lod2Solid>)を正確に抽出することで、ジオメトリ最適化の問題を解決しました。しかし、その直後に古典的なエラーシナリオが頻繁に発生します。構造的に標準的なモデルを所有し、XMLスキーマの検証ステップをすべてクリアしているにもかかわらず、エンジニアがこのデータをUnity、Unreal Engine、またはWebGISプラットフォームにインポートすると、モデルが表示されなかったり、地面から数十メートル浮遊したり、メッシュ構造全体が壊れたりします。

この状況の根本原因は、データファイルが破損していることではありません。問題は、データパイプラインに必須の空間処理プロセス、すなわち座標参照系(Coordinate Reference System – CRS)の設定と標高(Elevation)の調整が欠けていることに起因しています。

本稿である第4部では、パイプラインの最終段階である、3Dモデルを実際の座標に正確に配置すること、および3D GISデータをグラフィックエンジンに統合する際に克服すべき3つの重大な技術的エラーを分析することで、都市デジタルツインシリーズを締めくくります。

1. 座標の問題: 測定に地理座標(Geographic Coordinate)を使用しない

3D GISデータを受け取った際、エンジニアが最もよく犯す間違いは、座標参照系(CRS)を設定せずに生データをグラフィックエンジンに直接インポートすることです。

OGC標準と実データからの現状 OGC CityGML標準によると、モデル全体の参照系は<gml:Envelope>タグのsrsName属性に明確に宣言されています。このデータは、内部のジオメトリ構造全体に継承されます。PLATEAU(日本)のオープンデータリポジトリを例にとると、CityGMLモデルはデフォルトでEPSG:6697(JGD2011系に属する)コードで提供されています。同様に、ベトナムでは、ドローンやLiDARなどの航空機器から収集されたデータは、多くの場合、国際標準のWGS84(EPSG:4326)で出力されます。

これらのシステムの共通点は、経度と緯度を通じて空間を表現する地理座標系(Geographic Coordinate System)に属していることです。地図技術において、地理座標系はグローバルな位置特定にのみ適しています。この座標系を3D環境に導入する場合、エンジニアは面積(Area)、体積(Volume)、または建造物の実際のサイズを正確に計算することはできません。

実行可能な洞察: 座標変換の設定 グラフィックエンジンでの正確な測定と表示の問題を解決するために、エンジニアはデータパイプラインに座標変換ステップを追加することが必須です。目標は、データを地理座標系から、メートル単位を使用する投影座標系(Projected Coordinate System)に変換することです。

  • 日本からの参照: 日本のエンジニアは、投影誤差を最小限に抑えるため、EPSG:6697から19の個別の平面座標ゾーンに変換することでこの問題に対処しています。例えば、東京地域全体はゾーン9(EPSG:6677)に変換されることが規定されています。
  • ベトナムでの応用: 同様に、都市シミュレーションプロジェクト(Urban Simulation)では、WGS84をそのまま使用することはできません。データパイプラインは、適切な投影帯を持つ国家座標系VN-2000にデータを変換するように設定する必要があります。

自動化ツール(Automation Tooling) 都市規模のモデル(City-scale model)プロジェクトでは、CRS変換を手動で行うことは絶対に避けてください。システムエンジニアは、一括処理(batch-process)のためにプログラミングツールを使用すべきです。

  • Pythonのオープンソースライブラリpyprojを使用します。Transformerオブジェクトを初期化することで、システムはXMLファイルを自動的に読み取り、座標変換を正確に計算できます。
  • GDAL(ogr2ogrコマンドを介して)などのコアライブラリ、またはFME Formのような専用のETLプラットフォームを統合し、数万のCityGMLファイルをグラフィック形式にエクスポートする前にスムーズに同時に処理します。

3. 3D GISをグラフィックエンジンにインポートする際の3つの技術的エラー

CityGMLをFBX、OBJ、glTFなどのグラフィック形式に変換するだけでは不十分です。モデルが安定して動作し、表示エラーが発生しないように、エンジニアは以下の3つの設定を直ちに確認する必要があります。

  • エラー1: 軸の入れ替え(Axis Swapping)。 GISデータでは常にZ軸が高さの軸(Z-up)として規定されています。しかし、Unityのような環境では、デフォルトの座標系はY-upです。インポート時に軸の入れ替え設定を省略すると、都市モデル全体が90度横に倒れてしまいます。
  • エラー2: 浮動小数点精度(Float Precision)。 メートル単位で計算される平面座標には、非常に大きな値(例: X=5438350.0)が含まれることがよくあります。グラフィックエンジンはデフォルトで32ビット浮動小数点数データ型(最大7桁までしか正確ではない)を使用するため、頂点座標が丸められ、誤って結合されてしまいます。結果として、メッシュ構造が破損したり、カメラ移動時にジッター(jittering)現象が発生したりします。
    • 実行可能な洞察: 空間計算ロジックを64ビット倍精度浮動小数点数型で処理するように設定し、最終的なグラフィックレンダリングステップでのみfloat型を使用します。
  • エラー3: 原点オフセット(Origin Offset)。 VN-2000やJGD2011のような平面座標系では、原点(0,0)が都市部から数百キロメートル離れた位置にあります。インポートすると、モデルは仮想空間の計算限界から遠く離れすぎて、システムによって自動的に非表示(カメラカリング)されてしまいます。
    • 実行可能な洞察: パイプライン内で原点シフト(Origin Shift)アルゴリズムを必ず実行してください。エンジニアはプロジェクトの中心点(Center POI)を抽出し、そのPOIの値をCityGMLファイルのすべての元の座標から差し引くことで、グラフィックファイルをエクスポートする前にモデルを正しいローカル原点(0,0,0)に移動させる必要があります。

4. 標高(Elevation)と地形(Terrain Matching)の標準化

標高の不一致を処理することは、3Dモデルがグラフィックエンジンでレンダリングされたときに、宙に浮いたり地面の下に沈んだりしないようにするための必須タスクです。

  • 楕円体高 vs. 正標高: GPS/GNSSデータは通常、楕円体高(Ellipsoidal Height)を返します。しかし、PLATEAUのような都市標準では、正標高(Orthometric Height – 海水準を基準とする)が要求されます。
    • 実行可能な洞察: データパイプラインでは、モデル全体の実際の標高を同期させるために、ジオイド偏差補正アルゴリズムを確立することが必須です。(ベトナムでは、エンジニアはHòn Dáu潮位観測所の基準点を使用する必要があります)。
  • LOD1の押し出し(Extrusion)の特性: LOD1モデルのブロックは、点群のメディアン高さ(median height)の値から構築されます。広い基盤を持つ建造物の場合、メディアン高さを使用すると、モデルが実際よりも大幅に低く表示されます。シミュレーション課題を設定する際には、この許容誤差に特に注意する必要があります。
  • 地形マッチング(Terrain Matching): 実際の地表には常に勾配があります。最も一般的なエラーは、すべての建造物のZ座標をハードコード(Z=0に固定)することです。
    • 実行可能な洞察: 常にデジタル標高モデル(DEM)データレイヤーをパイプラインにロードしてください。CityGMLでは、この地形レイヤーはTINまたはラスター構造でdem:ReliefFeatureノードを介して宣言されます。DEMレイヤーは、モデルの底部の座標が地形の起伏に完全にスナップするための基礎表面となります。

4. まとめ: 標準的なデータパイプラインの確立

第1部から第4部までの全プロセスを振り返ると、3D GISの処理を5つのコアステップからなる自動化されたデータパイプラインとして体系化できます。

  • 解析と検証(Parse & Validate): スクリプトを使用してCityGMLファイルを解析し、XMLスキーマの有効性を確認し、不要な名前空間を削除します(第1部、第2部)。
  • LOD抽出(LOD Extraction): XPathを適用して、プロジェクトのユースケースに正確に合ったLODレベル(例: <bldg:lod2Solid>)を正確にクエリし、余分なジオメトリの詳細を削除します(第3部)。
  • 座標変換と原点シフト(Coordinate Transformation & Origin Shift): pyprojまたはGDALを統合して、座標参照系(CRS)を平面系VN-2000に変換し、同時にレンダリングエラーを避けるために原点シフトアルゴリズムをローカル原点(Local Origin)に移動します(第4部)。
  • メタデータ分離(Metadata Decoupling): UUIDを主キー(Primary Key)として使用し、すべての非空間属性をリレーショナルデータベース(PostgreSQL / PostGISなど)に保存してリアルタイムクエリに対応します(第2部)。
  • 形式エクスポート(Format Export): フロントエンドでのストリーミングプロセス(3D Tiles、glTF、FBXなど)に最適化されたグラフィック形式でジオメトリ構造をエクスポートします。

結論

都市デジタルツインの構築は、単なる3Dグラフィック表示の問題ではなく、空間データ(Spatial Data)の管理能力、セマンティックLOD(Semantic LOD)構造、および座標系(Coordinate System)の習得を意味します。このシリーズ全体にわたる技術原則を厳密に遵守することで、貴社のエンジニアチームは、高安定性、ハードウェア最適化、および実用的な運用価値を備えた都市規模(City-scale)のシステムを設計および展開することができます。

お問い合わせ
はこちら

産業ワークフローを変革する準備はできていますか?当社の専門家が、デジタル運用の未来への移行をガイドします。

Logo

MH&T Technology

通常数分以内に返信します

Logo
ご質問はありますか?お気軽にお尋ねください。