INFO テーブルの結合(Join Info Tables)の仕組み
このトピックは、ArcInfo にのみ適用されます。
[INFO テーブルの結合(Join Info Tables)] は 2 つの INFO データ ファイルを結合します。2 つのファイルのアイテム定義と値の両方がマージされ、[出力 INFO テーブル] が生成されます(下記「例」のセクションをご参照ください)。
[出力 INFO テーブル] のアイテム セットは、[入力 INFO テーブル] の指定された [スタート アイテム] 以降のアイテム定義を [結合 INFO テーブル] から挿入することで形成されます。[入力 INFO テーブル] に存在しない [結合 INFO テーブル] のアイテムだけがマージされます。同じアイテム名が両方のファイルに存在する場合、[入力 INFO テーブル] の定義および値が優先されます。
アイテムの値は INFO リレート ロジックを使用してマージされます。[リレート アイテム] の値が同じ場合、[結合 INFO テーブル] のレコードは [入力 INFO テーブル] の各レコードと一致します。2 つのレコードのアイテムの値が [出力 INFO テーブル] にコピーされます。
[リレート タイプ] では、レコードをマッチングさせる方法を指定します。LINEAR オプションおよび ORDERED オプションの両方のマッチング処理は、[入力 INFO テーブル] のレコードの [リレート アイテム] の値と同じ [リレート アイテム] の値を保持するレコードを検索するため、[結合 INFO テーブル] 全体の検索が発生する可能性があります。[入力 INFO テーブル] の各レコードに対して、[結合 INFO テーブル] の検索が 1 回発生します。LINEAR が指定された場合、順次検索が使用されます。ORDERED オプションでは二分検索が使用されます。[結合 INFO テーブル] が大きい場合、通常 ORDERED オプションの方がより高速に実行できます。ORDERED オプションを使用するには、[結合 INFO テーブル] が [リレート アイテム] によって昇順にソートされている必要があります。
LINK オプションでは、[入力 INFO テーブル] だけが [リレート アイテム] を含んでいる必要があります。[入力 INFO テーブル] の 各レコードの [リレート アイテム] は、マージする対象の [結合 INFO テーブル] のレコード番号にリンクされます。[リレート アイテム] の値をマッチングさせるために検索する必要がありません。このため、高速に実行されます。
多くの場合、[入力 INFO テーブル] および [結合 INFO テーブル] のうち一方のファイルの各レコードがもう一方のファイルの 1 つのレコードだけに一致するように、両ファイルを整理する必要があります。このように 1 対 1 でレコードが一致していない場合、次のいずれかの事象が発生します。
- [入力 INFO テーブル] のレコードが [結合 INFO テーブル] の複数のレコードと一致する可能性があります。この場合、各入力レコードに対して [結合 INFO テーブル] のレコードが 1 つだけマージされます。他の一致しているレコードに含まれているデータは [出力 INFO テーブル] に出力されません。この場合、選択されるレコードはインデックスが作成されている [リレート アイテム] と作成されていない [リレート アイテム] によって異なる場合があります。アイテムのインデックスが作成されている場合、ファイルで最初に一致するレコードが不確かになります。
- [入力 INFO テーブル] のレコードが [結合 INFO テーブル] のレコードと一致しない可能性があります。この場合、[結合 INFO テーブル] のアイテムに対応する [出力 INFO テーブル] のレコードには 0 または空白値が入ります。
- [結合 INFO テーブル] のレコードが [入力 INFO テーブル] の複数のレコードと一致します。この場合、[結合 INFO テーブル] のレコードは [入力 INFO テーブル] の一致するレコードとマージされます。[出力 INFO テーブル] では同じデータが繰り返されているように見えます。
- [結合 INFO テーブル] のレコードが [入力 INFO テーブル] のレコードと一致しない可能性があります。この場合、[結合 INFO テーブル] のレコードはマージされないため、[出力 INFO テーブル] にデータが存在しなくなります。
例
使用法:JOINITEM <in_info_table> <join_info_table> <out_info_table> <relate_item> {start_item} {LINEAR | ORDERED | LINK}
JOINITEM 実行前の EXCOV.PAT:
RECNO AREA PERIMETER EXCOV# EXCOV-ID 1 00028176.00* 40,005.500 1 0 2 8881,878.000 13,950.113 2 2 3 8917,384.000 20,539.754 3 1 4 33996880.000 32,816.500 4 3 5 15326114.000 16,342.805 5 5 6 4163,639.000 8,161.073 6 4 7 20812064.000 20,337.066 7 6 8 7930,208.000 11,073.945 8 7
EXCOV.CODE:
RECNO EXCOV-ID CLASS SUIT SOIL 1 2 A 3 EMS 2 1 B 0 DH 3 3 A 7 SDL 4 5 B 2 EAS 5 4 C 0 RO 6 6 B 4 WNB 7 7 A 3 EMS
JOINITEM 実行後の EXCOV.PAT:
RECNO AREA PERIMETER EXCOV# EXCOV-ID CLASS SUIT SOIL 1 00028176.00* 40,005.500 1 0 0 0 2 8881,878.000 13,950.113 2 2 A 3 EMS 3 8917,384.000 20,539.754 3 1 B 0 EDH 4 33996880.000 32,816.500 4 3 A 7 SDL 5 15326114.000 16,342.805 5 5 B 2 EAS 6 4163,639.000 8,161.073 6 4 C 0 RO 7 20812064.000 20,337.066 7 6 B 4 WNB 8 7930,208.000 11,073.945 8 7 A 3 EMS