Arc/Info E00ファイル形式の構造と解析

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(空間インデックス)はEOXLOGEOLPRJEOPで終了する。

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段階で記述される:

  1. ヘッダ行:テーブル名(32文字)、外部フラグ("XX" or " ")、有効属性数、全属性数、レコード長、レコード数
  2. 属性定義行:各属性の名前、サイズ、開始位置、出力幅/精度、型コード(例:20-1=文字列、60-1=浮動小数点)
  3. データ行:属性値が固定幅で並ぶ(数値は指数表記、文字列は右詰め)

代表的なテーブル:

  • .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桁)のようにスペース区切り

タグ: e00 arcinfo geospatial GIS esri

7月25日 01:02 投稿