データの結合は、一般に、両方のテーブルに共通する属性またはフィールドを通じて、1 つのテーブルのフィールドをもう 1 つのテーブルのフィールドに付加するために使用されます。属性、定義済みのジオデータベース リレーションシップ クラス、または位置 (空間結合とも呼びます) に基づいて、結合を定義することができます。リレーションシップ クラスによる結合は、ジオデータベースにおいてリレーションシップ クラスがすでに定義されているジオデータベース データを結合する場合にのみ表示されます。
複数のテーブルまたはレイヤーを 1 つのテーブルまたはレイヤーに結合することができ、リレーションシップ クラスの結合を属性結合と組み合わせることができます。結合テーブルを削除すると、その後に結合されたテーブル内のデータもすべて削除されますが、その前に結合されたテーブル内のデータは残ります。付加された列に基づくシンボル表示やラベリングは、結合を削除すると元の状態に戻ります。
ほとんどの場合、付加された列の名前は「<テーブル名>.<フィールド名>」になります。この命名規則により、ターゲット テーブルと結合テーブルに同じ名前のフィールドがある場合に、フィールド名の重複を避けることができます。このような完全なフィールド名を表示したくない場合は、テーブル ウィンドウの [テーブル オプション] ボタン をクリックし、[フィールドのエイリアスを表示] をクリックして、このオプションのオンとオフを切り替えます。このオプションがオンの場合は、[オプション] メニューの横にチェックマーク が表示され、フィールドの先頭にテーブル名は表示されません。
フィールド名の先頭にテーブル名が表示されている結合テーブルを次に示します。
フィールド エイリアスのみが表示されている結合テーブルを次に示します。
データを結合する前のサマリー処理
データが構成されている方法によっては、データをレイヤーに結合する前に、テーブル内のデータのサマリー処理が必要なことがあります。ArcMap のチェックボックスでサマリー処理を実行すると、テーブルから得られたサマリー統計から新しいテーブルが作成されます。総数、平均値、合計、最小値、最大値を含め、さまざまなサマリー統計を作成することができます。
たとえば、市区町村ではなく、都道府県別の天気図を作成したいが、天気情報が市区町村ごとに構成されているとします。この場合は、都道府県内のすべての市区町村の平均降雨量を求めるなど、市区町村データを都道府県別に集計した後、新規作成された出力テーブルを都道府県レイヤーに結合して、都道府県別の降雨量を示す天気図を作成することができます。
テーブルの編集と結合
結合の整合チェック
結合を作成する際は、事前に [結合] ダイアログ ボックス上の [結合の整合チェック] ボタンを使用して解析することができます。[結合の整合チェック] を使用すると、結合の作成中に発生するおそれのある潜在的な問題を突き止めることができます。結合の整合チェックでは、2 つの対象データセットを解析し、データに問題がないかどうかを確認します。以下は、データ内で有無がチェックされる項目の一覧です。
- 無効な文字で始まるフィールド名
- 無効な文字を含むフィールド名
- 予約語と一致するフィールド名
- ジオデータベース以外の MS Access テーブル
上記の 4 つの問題はそれぞれ、属性テーブル内に NULL 値が表示されたり選択範囲およびレコード数が誤って認識されたりする原因になります。[結合の整合チェック] で、カバレッジ データの解析時に無効文字チェックの対象から除外される文字シンボルは、数字記号 (#)、$ 記号 ($)、およびハイフン (-) です。ArcSDE ソフトウェア接続データの無効文字チェック時には、ピリオド (.) がチェック対象外になります。ただし、フィールド名がチェック対象外の文字のいずれかで始まる場合でも、警告が表示されます。
[結合の整合チェック] で実行される文字チェックは、次のとおりです。
無効な文字 (`~@#$%^&*()-+=|\\,<>?/{}.!'[]:;_0123456789) で開始しているかどうか`~@#$%^&*()-+=|\\,<>?/{}.!'[]:;_0123456789
無効な文字 (`~@#$%^&*()-+=|\\,<>?/{}.!'[]:;) が含まれているかどうか `~@#$%^&*()-+=|\\,<>?/{}.!'[]:;
[結合の整合チェック] では、結合の作成時に照合されるレコード数も通知されます。正常に一致したレコードの割合を計算し、一致レコード数が予想と異なる場合は、データにその他のエラーがないかどうかを確認できます。たとえば、テキスト フィールドを使用して結合を作成している場合、一致するはずのレコードにスペルミスがある場合や、大文字と小文字の区別が正確でないために不一致が検出されることがあります。[結合の整合チェック] でソース データセット内のレコード数よりも一致レコード数の方が多くカウントされた場合は、対象データ間に 1:M または M:M リレーションシップが存在することを知らせる警告が表示され、結合を使用して対象のデータセットを相互に関連付ける代わりにリレートまたはリレーションシップ クラスを使用するように指示されます。
データ結合のパフォーマンスのヒント
付加されたフィールドのデータは、フィーチャのシンボル表示とラベリング、クエリの実行、その他さまざまな操作に使用することができます。結合を維持するために余分な作業が必要になるため、結合されたデータへのアクセスにはターゲット テーブルのデータへのアクセスよりも時間がかかります。
結合されたデータを操作する際には、次のヒントを使用してパフォーマンスを向上させることができます。
- 結合を実行するには、ArcMap でレイヤーを右クリックしてアクセスした [結合] ダイアログ ボックスを使用する方法と、一連のジオプロセシング ツールを使用する方法があります。特に大きなデータベースを処理している場合は、パフォーマンスを最大にするために結合ジオプロセシング ツールを使用します。結合に関連する反復的または複雑な手順を自動化したい場合は、これらのツールをジオプロセシング モデルおよびスクリプトに含めることもできます。これらのツールは、実際に背後で行われている結合処理を、[結合] ダイアログ ボックスとは若干異なる方法で実行します。そのため、このダイアログ ボックスの結合機能で予期しない問題が発生した場合は、ツールを使用してください。対象のジオプロセシング ツールは、[空間結合 (Spatial Join)] ツール、[テーブル結合 (Add Join)] ツール、および [テーブル結合の解除 (Remove Join)] ツールです。
-
結合フィールドで属性インデックスを作成します。結合に、シェープフィールド、dBASE ファイル、あるいはカバレッジまたは INFO ファイルのみが関与する場合、インデックスを作成してもテーブル ウィンドウの描画または操作のパフォーマンスは向上しません。ただし、編集時のパフォーマンスは向上します。その他すべての状況において、属性インデックスは全体的なパフォーマンスを向上させます。
- 同じジオデータベースからのデータを結合する場合は、[一致するレコードのみを保存] オプションをオンにします。このオプションを選択した結果はさまざまですが、結合をデータベースで処理できるようになります。結合された列のデータにアクセスしなければならない操作 (シンボル表示、ラベリングなど) では、これにより通常はパフォーマンスが向上します。
デフォルトの [すべてのレコードを保存] オプションを選択すると、常にクライアント側で処理が実行されます。結合されたデータへのアクセスを必要としない操作 (デフォルトのシンボル表現での描画など) では、一般に十分なパフォーマンスが得られます。ただし、結合されたデータへのアクセスが必要な場合は、処理速度がかなり低下することがあります。
- ターゲット テーブルと結合テーブルのデータ ソースが異なるクロス データベース結合では、パフォーマンスが低下することがあります。結合テーブルがジオデータベースに含まれている、または OLE DB 接続から得られる場合は、特にパフォーマンスが低下しがちです。結合テーブルがファイルベースのデータ ソース (シェープファイル、dBASE ファイル、およびカバレッジ) に含まれていて、ターゲット テーブルが ObjectID フィールドを持つ場合 (ほとんどのデータ ソース) は、パフォーマンスが大幅に向上します。
- 複数のテーブルまたはレイヤーを単一のレイヤーに結合すると、パフォーマンスの点でかなりコストが高くつくことがあります。すべてのデータが同じ ArcSDE サーバーから取得したもので、結合時に [一致するレコードのみを保存] を選択した場合、パフォーマンスに大きな影響はおよばないはずです。
テーブルの結合に失敗する理由
結合を実行した後で、結合テーブルのフィールドの値が空または Null に見える場合があります。Null 値は、いくつかの要因の結果である場合があります。
- 結合に対して指定されたフィールドの値が一致しません。
結合では大文字と小文字が区別されるため、文字列フィールドを使用して結合を作成する場合は注意してください。たとえば、NEW YORK は New York と結合されません。文字列値を適切な大文字と小文字に変換するには、「フィールド演算の実行」のタスクをご参照ください。
- テーブルまたはフィーチャクラスの名前、あるいはテーブルまたはフィーチャクラス内のフィールド名に、スペースまたは特殊文字が含まれています。
特殊文字としては、たとえば X 座標や Y 座標で使用されているようなハイフン、括弧、角括弧、$、%、# などの記号が挙げられます。基本的に、英数字やアンダースコア以外は使用せず、フィールド名を数字またはアンダースコアで開始することは避けてください。ArcGIS のファイルを使用する前に、区切りテキスト ファイルまたはその他のテーブルのフィールド名を編集して、サポートされない文字を削除してください。ジオデータベース フィーチャクラス、テーブル、およびフィールドの名前は、最大 64 文字にすることができます。(具体的には、合計 64 文字になるように文字が付加されるため、パーソナル ジオデータベース フィーチャクラス名に入力できるのは最大 52 文字です。) シェープファイル名および *.dbf フィールド名は、最大 10 文字で指定できます。INFO テーブルには最大 16 文字の英字または数字を使用します。フィールド名のガイドラインの詳細については、「フィールドの追加と削除」をご参照ください。
- テーブル内のフィールド名が、Microsoft Access の予約語です。
例として、date、day、month、table、text、user、when、where、year、zone などがあります。予約語のリストについてはMicrosoft サポート技術情報 (KB 286335)をご参照ください。
- テーブルが、パーソナル ジオデータベースでない Microsoft Access データベースに格納されています。
データベースを ArcMap に直接追加するのではなく、OLE DB 接続を通じて ArcGIS 内の Microsoft Access テーブルにアクセスする必要があります。OLE DB 接続の追加方法については、「ArcGIS での Microsoft Access ファイルの操作」をご参照ください。