Arc/InfoのE00(Export)形式は、ESRI社が開発したベクタ地理情報データのアーカイブ・交換用フォーマットであり、1990年代から広く採用されてきた。この形式は、テキストベースで人間可読でありながら、空間オブジェクトのトポロジー情報や属性データを包括的に保持する特徴を持つ。以下では、その内部構造を再整理し、実装に即した観点から各コンポーネントの仕様を明確に解説する。
全体構造
E00ファイルはヘッダー、メインセクション、および終端マーカーから構成される。先頭行は以下の3フィールドで始まる:
- EXP:固定識別子
- 圧縮フラグ:0(非圧縮)、1(圧縮)
- 出力パス:生成時の相対または絶対パス(実装上は無視可能)
ファイル末尾はEOSで明示される。中間には、ARC系セクション(空間データ)とINFO系セクション(属性テーブル)が順次配置される。
ARC系セクションの構成
各ARCセクションは、[識別子] [精度](例:ARC 2)で開始され、精度値は2(単精度)または3(倍精度)である。セクション終了は、-1 0 0 0 0 0 0(単精度)または-1 0 0 0 0 0 0+追加行(倍精度PALなど)で表される。例外として、SIN(空間インデックス)はEOX、LOGはEOL、PRJはEOPで終了する。
ARC(弧座標とトポロジー)
各弧(arc)は7要素のヘッダ行で始まり、その後に座標ペアが続く:
ARC 2
1 2 2 1 1 2 2
3.4029994E+05 4.1001998E+06 3.4009988E+05 4.1002000E+06
ヘッダの意味:
1. カバレッジ番号
2. 弧ID(ARCファイル内レコード番号)
3. 始点ノードID
4. 終点ノードID
5. 左側ポリゴンID
6. 右側ポリゴンID
7. 座標数
座標は単精度で2ペア/行、倍精度で1ペア/行となる。奇数個の場合は最終行に1ペアのみ配置される。
CNT(ポリゴン重心)
重心座標と関連ラベルIDを記録。1行目はラベル数、X座標、Y座標。続く行に最大8個のラベルIDが並ぶ。
CNT 2
0 3.4048516E+05 4.1001702E+06
1 3.4046691E+05 4.1002662E+06
1
PAL(ポリゴントポロジー)
ポリゴン境界を構成する弧のリストと、そのバウンディングボックスを含む。先頭行は弧数と矩形範囲(xmin, ymin, xmax, ymax)から成る。その後、弧ID(負値=逆方向)、接続ノードID、隣接ポリゴンIDのトリプレットが2組/行で記述される。
TXT/TX6/TX7(注釈)
テキストアノテーションは、TXT(汎用)、TX6(旧式)、TX7(拡張)の3種類がある。TX7は最初の行に8フィールド(ユーザID、レベル、線分頂点数、矢印頂点数、フォント、未使用、文字数、未使用)を持ち、後続の整数ブロックは配置位置と表示設定を制御する。
INFO系セクションの構成
INFOセクションはIFO [精度]で開始し、EOIで終了。各テーブルは以下の3段階で記述される:
- ヘッダ行:テーブル名(32文字)、外部フラグ("XX" or " ")、有効属性数、全属性数、レコード長、レコード数
- 属性定義行:各属性の名前、サイズ、開始位置、出力幅/精度、型コード(例:
20-1=文字列、60-1=浮動小数点) - データ行:属性値が固定幅で並ぶ(数値は指数表記、文字列は右詰め)
代表的なテーブル:
.PAT:ポリゴン/ポイント属性テーブル.AAT:弧属性テーブル(FNODE#, TNODE#, LPOLY#など).BND:カバレッジ全体の境界座標(XMIN/YMIN/XMAX/YMAX).TIC:制御点座標(IDTIC, XTIC, YTIC)
実装上の注意点
解析ライブラリ作成時に留意すべき要点:
- 精度依存の書式差異:倍精度では浮動小数点が15桁(例:
3.40500000000000E+05)、INFO内の倍精度数値は18桁(3.40500000000000000E+05)で表現される - 終端行の不規則性:PALセクション末尾には余分な空行が挿入されることがあるため、
-1行検出後に1行読み飛ばすロジックが必要 - 文字列分割:80文字を超えるアノテーションは改行され、行末の継続マークはない。文字数パラメータから行数を算出する必要がある
- INFO属性型コード:
20-1(文字列)、40-1(小数付き数値)、60-1(バイナリ浮動小数点)が主用途。出力幅/精度は12 3(幅12、小数点以下3桁)のようにスペース区切り