E57 ファイルとは何ですか?
拡張子が .e57 のファイルは、コンパクトでベンダーに依存しないファイル形式で、点群、画像、メタデータなどの 3 次元 (3D) 画像データの保存と交換に使用されます。このようなデータは、多くの場合、レーザー スキャナーなどのシステムで作成されます。これは、3D イメージング システムに関する ATSM E57 委員会のデータ相互運用性小委員会によって開発されました。 E57 はオープン ソースであり、3D ポイント データ、その属性 (色や強度など)、および 3D イメージング システムによってキャプチャされた 2D 画像を保存します。
E57 ファイル形式
E57 ファイル形式の仕様は ATSM Web サイトで入手でき、開発者の参照用に参照できます。 E57 ファイル形式のコンセプト ペーパーと技術的な詳細は、Daniel Huber によって参考資料として入手できます。 E57 ファイルのデータは、次の図に示すように、XML ベースの階層ツリー構造で保存されます。低レベルでは、E57 ファイルは圧縮されたバイナリ ファイルとして保存され、ファイル サイズがコンパクトになります。
E57 ファイル構造
E57 ファイルの構造は、次の表に示すとおりです。
| |ファイル構造| —| |ヘッダー| |バイナリセクション (ポイント)| |バイナリセクション (ポイント)| |…| |…| |バイナリセクション (イメージ)| |XMLセクション|
E57 ヘッダー
E57 ヘッダーは、バージョン番号や XML セクションの場所など、重要なファイル レベルの情報を含む小さな 48 バイトのバイナリ構造です。次のようにプログラム的に表すことができます。
struct E57FileHeader {
char fileSignature[8];
uint32_t majorVersion;
uint32_t minorVersion;
uint64_t filePhysicalLength;
uint64_t xmlPhysicalOffset;
uint64_t xmlLogicalLength;
uint64_t pageSize;
}
XML階層
E57 ファイルの XML セクションは、標準 XML のサブセットを使用してツリー階層を記述します。これは、8 つの E57 要素タイプに基づいており、各要素は一連のコア ビルディング ブロックを使用して構築されます。これらの E57 エレメントのうち 5 つはターミナル タイプで、そのうちの 3 つは非ターミナル タイプです。
端末の種類
Integer
- サイズが 63 ビットまでの符号付き整数
Float
- 単精度または倍精度の浮動小数点数を IEEE 754-1985 形式で格納します
ScaledInteger
- 小数部分を整数としてスケールとオフセットとともに格納します
String
- テキスト データを UTF-8 エンコードとして保存し、国際文字をサポートします
Blob
- コンテキストに応じてリーダーによって解釈されるバイナリ データの不透明なブロックを格納します。
非端末型
Structure
- 任意のタイプの順序付けられていない E57 要素のセットが含まれます。 E57 構造体は、C プログラミング言語の構造体に似ています。
Vector
- 実質的に同じタイプの項目の順序付けられたリストが含まれています。必要に応じて、要素内のフラグを使用して、項目をまったく同じタイプに制限できます。
CompressedVector
- バイナリ形式で圧縮された、同じ型の項目の順序付けられたリストが含まれます。Blob データ型と同様に、CompressedVector の表現は XML 部分とバイナリ部分に分割されます。