
次元拡張9交点モデル(DE-9IM)は、幾何学、点集合トポロジー、地理空間トポロジー、およびコンピュータ空間解析に関連する分野において、 2つの領域(2次元R2における2つのジオメトリ)の空間的関係を記述するために使用されるトポロジーモデルおよび標準規格です。このモデルによって表現される空間的関係は、回転、平行移動、および拡大縮小変換に対して不変です。
この行列は、幾何学的関係を分類するための手法を提供する。大まかに言えば、真偽行列の領域では、512通りの2次元トポロジー関係が存在し、これらを二値分類スキームにグループ化することができる。英語には、「交差する」「接する」「等しい」など、約10種類のスキーム(関係)が存在する。2つの幾何学的関係をあるスキームに照らし合わせてテストすると、その結果は、そのスキームによって命名された空間述語となる。
このモデルは、クレメンティーニら[ 1 ] [ 2 ]がエゲンホーファーらの先駆的な研究[ 3 ] [ 4 ]に基づいて開発しました。地理情報システム(GIS)や空間データベースにおけるクエリとアサーションの標準の基礎として使用されています。
DE-9IMモデルは、以下の形式の3×3交差行列に基づいています。
どこでは、形状aとbの内部(I)、境界(B)、および外部(E)の交差(∩)の寸法です。
この記事で使用されている「内部」と「境界」という用語は、一般トポロジーで使用される意味ではなく、代数トポロジーや多様体理論で使用される意味で使用されています。例えば、線分の内部とは、その両端点を除いた線分であり、その境界は両端点のみです(一般トポロジーでは、平面上の線分の内部は空であり、線分自体が境界となります)。
位相空間演算子の表記では、行列要素は次のように表すこともできます。
空集合(∅)の次元は−1 またはF (偽)で表されます。空でない集合 (¬∅) の次元は、交差の最大次元数で表され、具体的には点の場合は0、線の場合は1、領域の場合は2 となります。したがって、モデルの定義域は{ 0 , 1 , 2 , F }となります。
簡略版値は、値{ 0,1,2 }をT (真)にマッピングすることによって得られます。つまり、ブール領域{ T , F }を使用します。演算子で表された行列は、次のように表現できます。
行列の要素は、以下のように命名できます。
次元領域とブール領域の両方を持つ行列形式は、 「 DE-9IM文字列コード」としてシリアル化することができ、これはそれらを1行の文字列パターンで表現します。1999年以降、文字列コードは標準[ 5 ]フォーマットになっています。
出力チェックやパターン解析では、行列値(または文字列コード)を「マスク」でチェックできます。マスクとは、ワイルドカードとしてオプションのアスタリスク記号(つまり、「*」は設計者が気にしない出力位置(自由値または「気にしない位置」)を示す)を含む、目的の出力値です。マスク要素のドメインは、{ 0 , 1 , 2 , F , * }、またはブール形式の場合は{ T , F , * }です。
空間関係を表現するために、DE-9IM より前に、より単純なモデルである4-Intersectionと9-Intersectionが提案されました[ 6 ] (そして、 4IMと9IMという用語の由来となりました)。入力条件が特定の制約を満たす場合、DE-9IM の代わりにこれらを使用して計算を最適化できます。
視覚的には、2 つの重なり合う多角形ジオメトリの場合、関数DE_9IM( a , b )の結果は次のようになります。[ 7 ]
この行列はシリアル化できます。左から右、上から下の順に読み取ると、結果は次のようになります。。したがって、文字列コードとしてコンパクトに表現すると「 212101212」になります。
DE-9IM の二項空間関係に基づく位相的性質はすべて空間述語です。使いやすさのために、いくつかの一般的な関係に対して「名前付き空間述語」が定義され、後に標準述語となりました。DE -9IM から導出できる空間述語関数には次のものがあります。 [ 4 ] [ 8 ]
以下の点にご注目ください。
*。これは、EEが自明に真であるため、有用な情報を提供しないためです。T*F**FFF*T*****FF*T*F**F***T*****FF*両方の定義に含まれています。Covers はより包括的な関係です。特に、Containsとは異なり、ジオメトリの境界内の点と内部の点を区別しません。ほとんどの場合、ContainsよりもCoversを使用することをお勧めします。T*F**F***両方の定義に含まれています。ほとんどの場合、WithinよりもCoveredBy を使用することをお勧めします。空間述語は、二項関係の以下の特性を持つ。

空間述語の用語と意味の選択は、合理的な慣習と位相幾何学研究の伝統に基づいています。[ 4 ]交差、分離、接触、内部、等しい (2 つの幾何学aとbの間) などの関係には、明らかな意味があります。[ 10 ] [ 13 ]
述語ContainsとWithin には 、直感に反する微妙な定義上の側面があります。たとえば、[ 10 ]多角形Pの境界内に完全に含まれる 線Lは、 Pに含まれているとはみなされません。この特異性は、「多角形は境界を含まない」と表現できます。この問題は、上記のContainsの定義の最後の節、「B の内部の少なくとも 1 点が A の内部にある」によって引き起こされます。この場合、境界の考慮を回避した述語Covers の方 が、より直感的な意味を持ちます (定義を参照)。
理解を深めるために、入力の次元性を、意味的複雑性を段階的に導入する根拠として用いることができる。
ブール9IM行列における可能な結果の数は2⁹ =512であり、DE-9IM行列では3⁹ = 6561である。これらの結果のうち、特定の述語を満たす割合は次のように決定される。
通常のアプリケーションでは、幾何学的形状は事前に交差しており、その他の関係はチェックされます。
複合述語「交差または分離」と「等しいまたは異なる」の合計は 100% (常に真となる述語) ですが、「カバーまたはカバーされる」は 41% で、論理補語でも独立した関係でもないため、合計とは一致しません。同様に、「含むまたは内部」は 21% です。 「交差 または重なり」で重複する行を無視すると、有効な入力セットが分離しているため、合計 25 % + 12.5 % = 37.5 % が得られます。
DE -9IMは、 2つの入力ジオメトリに関する完全な記述的アサーションを提供します。これは、真理値表、3方向比較、カルノー図、ベン図など、 2つのエンティティに関するすべての可能な関係の完全なセットを表す数学関数です。各出力値は、特定の入力の関係を表す真理値表の行のようなものです。
上記のように、 DE-9IM ( a , b )から得られた出力「212101212」は、特定のジオメトリaとbの間のすべてのトポロジ関係を完全に記述したものです。これは、次のことを示しています。 .
一方、Intersects ( a , b )や Touches ( a , b )のような述語をチェックする場合(同じ例で「Intersects = true and Touches = true 」となる)、これは「すべての位相関係」を不完全に記述しているに過ぎません。また、述語はジオメトリの次元性についても何も述べていません( aとbが線、領域、点のいずれであっても関係ありません)。
幾何学的タイプの独立性と述語の完全性の欠如は、2つの幾何学に関する一般的なクエリに役立ちます。
一般的な用途においては、空間述語の使用は、DE-9IM記述よりも人間にとって読みやすいという点でも正当化されます。典型的なユーザーは、述語(内部/境界/外部の交差の集合よりも)についてより直感的に理解できるからです。
述語は、通常のアプリケーションにおいて有用な意味論的性質を持つため、 DE-9IM記述を関連するすべての述語のリストに変換することは有用である。 [ 14 ] [ 15 ]これは、2 つの異なる意味論的タイプ間の型変換プロセスのようなものである。例:
Open Geospatial Consortium (OGC) は、一般的な空間述語 (Contains、Crosses、Intersects、Touches など) をブール関数として標準化し、DE-9IM モデル[ 16 ]を、 { 0 、1 、2 、F }のドメインを持つ文字列 (DE-9IM コード) を返す関数として標準化しました。ここで、 0 = 点、1 = 線、2 = 領域、F = 空集合を意味します。この DE-9IM 文字列コードは、データ交換のための標準化されたフォーマットです。
シンプルフィーチャアクセス(ISO 19125) 標準[ 17 ]の第 7.2.8 章「ジオメトリ型に対する SQL ルーチン」では、すべてのジオメトリ型に対して、SQL/MM Spatial [ 18 ] (ISO 13249-3 パート 3: 空間) ST_Dimension、ST_GeometryType、ST_IsEmpty 、ST_IsSimple、ST_Boundary をサポートされているルーチンとして推奨しています。同じ標準では、SQL/MM の「パート 1、条項 6.1.2.3」における関係の定義と整合しており、 ST_Equals、ST_Disjoint、ST_Intersects、ST_Touches、ST_Crosses、ST_Within、ST_Contains、ST_Overlaps、ST_Relateの関数ラベルを推奨 (サポートされている必要がある) しています。
OGC標準のDE-9IMでは、主要なOGC標準ジオメトリタイプについて、内部と境界の以下の定義を使用しています。[ 19 ]
PostGISなどのほとんどの空間データベースは、標準関数[ 20 ]、、などによってDE-9IM()モデルを実装しています。この関数は、標準OGCのDE-9IM文字列コードを出力します。ST_RelateST_EqualsST_IntersectsST_Relate(a,b)
例:2つの幾何学的形状aとbが一点で交差し接している(例えば、そして ) は、ST_Relate(a,b)='FF1F0F1F2'またはST_Relate(a,b)='FF10F0102'または のおよび もST_Relate(a,b)='FF1F0F1F2'満たします。 の場合、返される DE-9IM コードは「Intersects(a,b) & Crosses(a,b) & Within(a,b) & CoveredBy(a,b)」のセマンティクスを持ち、つまり、ブール式に対して が。ST_Intersects(a,b)=trueST_Touches(a,b)=trueST_Relate(a,b)='0FFFFF212'trueST_Intersects(a,b) AND ST_Crosses(a,b) AND ST_Within(a,b) AND ST_Coveredby(a,b)
ST_Relate()の使用は、対応する述語のセットを直接計算するよりも高速です。[ 7 ] ST_Relate()を使用することが複雑な述語を計算する唯一の方法となる場合もあります。マルチポイント (点のセットであるオブジェクト) を「交差」しない点のコードの例を参照してください。ただし、述語Crosses (マスクによって定義されている場合) はtrueを返します。[ 21 ]0FFFFF0F2
ST_Relate ()にマスク パラメータを追加してオーバーロードするか、返されたST_Relate(a,b)文字列をST_RelateMatch()関数で使用するのが一般的です。[ 22 ] ST_Relate(a,b,mask) を使用すると、ブール値が返されます。例:
ST_Relate(a,b,'*FF*FF212')がまたは の場合はtrueを返し、または の 場合はfalseを返します。ST_Relate(a,b)0FFFFF21201FFFF21201FFFF1220FF1FFFFFST_RelateMatch('0FFFFF212','*FF*FF212')そしては真でST_RelateMatch('01FFFF212','TTF*FF212')あり、 は偽である。ST_RelateMatch('01FFFF122','*FF*FF212')T*****FF*。