空間結合は、地理情報システム(GIS) または空間データベースにおける操作で、2 つの空間レイヤーの属性テーブルを、それらのジオメトリ間の望ましい空間関係に基づいて結合します。 [ 1 ]これは、リレーショナルデータベースのテーブル結合操作で 2 つのテーブルをマージするのと似ていますが、各行のペアは、共通のキー値ではなく、何らかの形式の一致する位置に基づいて関連付けられます。[ 2 ]また、2 つの空間データセットをマージする Intersect や Union など、GIS ソフトウェアで一般的なベクターオーバーレイ操作にも似ていますが、出力には複合ジオメトリは含まれず、マージされた属性のみが含まれます。
空間結合は、個人を地区に割り当てることや統計的集計など、さまざまな空間分析および管理アプリケーションで使用されます。空間結合は、ほとんどすべてのGISおよび空間データベースソフトウェアに搭載されていますが、この用語が常に使用されるとは限らず、複数のツールを組み合わせて間接的に導出する必要がある場合もあります。

空間結合操作の基本は、2 つの幾何学的プリミティブ間の空間関係を論理述語、つまり真偽を評価できる基準として定式化することです。 [ 3 ]例えば、「A は B から 5km 未満である」は、A と B の間の距離が 3km の場合は真、10km の場合は偽となります。これらの関係述語には、次の 2 つのタイプがあります。
関係の中には交換可能なもの(例えば、AがBと重なるのは、BがAと重なる場合に限る)もあれば、そうでないもの(例えば、AがBに含まれるということは、BがAに含まれるという意味ではない)もあることに注意してください。
これらの関係に関わる幾何学的プリミティブは任意の次元(点、線、領域)を持つことができますが、一部の関係は特定の次元でのみ意味を持ちます。たとえば、「A は B 内にある」は、A が点で B が領域である場合は明確な意味を持ちますが、A と B の両方が点である場合は意味を持ちません。他の関係は曖昧な場合があります。たとえば、2 つの領域または 2 つの線の間の距離は、それらの最も近い境界間の最小距離、またはそれらの重心間の平均距離として解釈される場合があります。[ 6 ]
関係代数で定義されている関係テーブル結合と同様に、2 つの入力レイヤーまたはテーブル (以下、XとY ) が提供され、出力は各入力のすべての列 (またはユーザーが選択した場合はそのサブセット) を含むテーブルです。新しいテーブルの行は、2 つのテーブルのクロス結合またはデカルト積のサブセットであり、すべての可能な行のペア {X1-Y1、X1-Y2、X1-Y3、X2-Y1、X2-Y2、X2-Y3、X3-Y1、X3-Y2、X3-Y3、...} です。すべての可能な組み合わせを含めるのではなく、各ペアは指定された空間述語に従って評価されます。述語が真であるペアは「一致」とみなされ保持され、述語が偽であるペアは破棄されます。
例えば、次の2つの表を考えてみましょう。
空間結合を実行する際には、次の 2 つの理由から、結合方向を指定する必要があります。1) 指定された空間述語が可換でない場合があること、2) 行間に多対一の関係が存在する場合が多いこと (たとえば、各学区内に多数の生徒がいる場合)。上記の例では、一般的な目標は、関係述語を「student.residence within school.district」として、schools テーブルを students テーブル (ターゲット テーブル) に結合することです。学区が重複しないと仮定すると、各生徒のポイントは最大で 1 つの学区に属するため、出力は students テーブルと同じ行を持ち、対応する学校属性が次のように付加されます。
この場合、学生情報を学校テーブルに添付する逆の操作は、多くの行を1つの行に結合する必要があるため、それほど単純ではありません。一部のGISソフトウェアではこの操作が許可されていませんが、ほとんどの実装では集計結合が可能で、一致する行の集計サマリー(配列、カウント、合計、平均など)を含めることができます。[ 7 ]例えば、結果テーブルは次のようになります。
複数の一致がある場合のもう1つのオプションは、何らかの基準を使用して一致セットから行の1つを選択することです。通常は空間最適化基準が使用されます。[ 2 ] [ 8 ]たとえば、各生徒に最も近い学校を選択することで、学校の建物のポイント(地区ではなく)を生徒の居住地のポイントに結合できます。すべてのソフトウェアがこのオプションを直接実装しているわけではありませんが、ツールの組み合わせによって導き出すことができる場合もあります。
{{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)