FMEリファレンス > ジオメトリ間の空間的関係
最終更新: 2016-01-27

ジオメトリ間の空間的関係 (Spatial Relations)

ジオメトリ間の空間的関係には次の種類があり、SpatialRelator や SpatialFilter では Tests to Perform パラメーターの設定によってこれらを使い分けることができます。

Spatial Relations空間的関係
Intersects Contains 含む 交わる (離れていない)
Crosses 横切る
Equals 等しい
Overlaps 重なる
Touches 接する
Within 含まれる
Disjoint 離れている (交わらない)

Intersects (交わる) は Disjoint (離れている) ではない関係、すなわち Contains, Crosses, Equals, Overlaps, Touches, Within のうちのひとつ以上が成り立つ関係を指し、線と線あるいは線と面の境界が交差している関係を指す「横切る」(Crosses) や、線と線あるいは面と面が部分的に重なっている関係を指す「重なる」(Overlaps) とは区別されます。

FME 2016 で SpatialRelator, SpatialFilter に Support Mode パラメーターが追加されました。このパラメーターが Support Aggregates (集約ジオメトリの空間的関係の判定をサポートする) に設定されているときは、Tests to Perform パラメーターで Crosses (横切る) と Overlaps (重なる) は選択できません。FME 2015 以前と同じ動作 (全ての空間的関係の使い分けができるが、Aggregates - 集約ジオメトリの空間的関係の判定はサポートしない) としたい場合は、Support Mode パラメーターで Support All Predicates を選択してください。

次に2つのジオメトリ A, B の間の空間的関係を例示します。
SpatialRelator においては Requestor が A, Supplier が B、SpatialFilter においては Filter が A, Candidate が B に相当します。

ジオメトリ間の空間的関係の例
Spatial Relations
空間的関係
ジオメトリA ジオメトリB
Intersects
ABと交わる
Contains
ABを含む
Crosses
ABを横切る
Equals
ABと等しい
Overlaps
ABと重なる
Touches
ABと接する
Within
ABに含まれる
Disjoint
ABと離れている


空間述語 (Spatial Predicate) の定義

ジオメトリの内部 (Interior), 境界 (Boundary), 外部 (Exterior)

ジオメトリを含む平面は、そのジオメトリの内部 (Interior), 境界 (Boundary), 外部 (Exterior) に分けられます。

ジオメトリ定義
内部
Interior
ポイント
ライン ライン全体のうち境界 (Boundary) を除いた部分
ポリゴン ポリゴンの内側の領域
境界
Boundary
ポイント 空集合 (ポイントジオメトリは境界を持たない)
ライン CURVE_BOUNDARY_RULE ENDPOINTS_MOD2 (Default Rule)
奇数回現れる全ての端点の集合。単純な線形のジオメトリ (マルチカーブでない) では、境界 (Boundary) はその始点と終点である (始点と終点は1回=奇数回ずつ現れる)。ただし、そのラインが閉じている (始点と終点が同じ点である=同じ端点が2回現れる) 場合、境界 (Boundary) は空集合である (そのラインは境界を持たない)。

CURVE_BOUNDARY_RULE ENDPOINTS_ALL (Curve Boundary Includes All Endpoints)
出現回数に関わらず全ての端点の集合。

SpatialRelator 及び SpatialFilter では、Curve Boundary Rule パラメーターの設定 (Default Rule または Curve Boundary Includes All Endpoints の選択) によって上記2種類の定義の使い分けができる。
ポリゴン ポリゴンの周 (穴がある場合は穴の周を含む)
外部
Exterior
ポイント 境界 (Boundary), 内部 (Interior) を除いた全ての領域
ライン
ポリゴン

交差マトリクス (Dimensionally Extended 9 Intersection Matrix)

2つのジオメトリ A, B の間の空間的関係は、Dimensionally Extended 9 Intersection Matrix (DE-9IM) として知られる3×3行列で表すことができます。

ジオメトリB
内部 (Interior) 境界 (Boundary) 外部 (Exterior)
ジオメトリA 内部 (Interior)χ0χ1χ2
境界 (Boundary)χ3χ4χ5
外部 (Exterior)χ6χ7χ8

この行列の各要素の値は、2つのジオメトリのパーツ (内部、境界、外部) 間の交わりによって形成される図形の次元を示します。

-1:交わらない (後述のパターンマトリクス及びマトリクスの文字列表現においては F で表される)
0:交わりが点 (0次元) を形成する
1:交わりが線 (1次元) を形成する
2:交わりが面 (2次元) を形成する

パターンマトリクスによる空間術語 (Spatial Predicate) の定義

2つのジオメトリの空間的関係を表す Predicate(述語)は、交差マトリクスのパターンによって定義することができます。
パターンマトリクスの各要素は次のいずれかひとつです。

パターンマトリクスの要素DE-9IM の要素
*任意 (-1, 0, 1 または 2)
T0, 1, または 2
F-1
00
11
22

例えば DISJOINT のパターンマトリクスは次のとおりです。
これは、2つのジオメトリについて、一方の内部、境界が他方の内部、境界と交わらないことを意味します。

FF*
FF*
***

交差マトリクスまたはパターンマトリクスは、各要素の左上から右下に向かって連結した9文字の文字列でも表現されます。
例えば DISJOINT の文字列表現は "FF*FF****" です。
SpatialRelator は、空間的関係の判定結果として文字列表現の交差マトリクスも作成するので、それによってジオメトリ間の空間的関係の詳細を知ることができます。


ジオメトリの内部、境界、外部を前述のように定義したとき、空間述語(Spatial Predicate)は以下のように説明できます。
説明中、「交わる」とは、2つのパーツが少なくともひとつの点を共有する状態を指します。
例示した図は、その述語に該当する全ての状態を網羅していないことに注意してください。

空間術語説明パターン
マトリクス
INTERSECTS
交わる
離れていない (次に定義される DISJOINT でない)。
DISJOINT
離れている
境界も内部も交わらない。
FF*
FF*
***
EQUALS
等しい
同じ境界と内部を持つ。
T*F
**F
FF*
TOUCHES
接する
境界同士または一方の境界と他方の内部が交わり、かつ、内部同士は交わらない。
点と点の間では定義されない。
FT*
***
***
または
F**
*T*
***
または
F**
T**
***
CROSSES
横切る
内部同士が交わり、かつ、一方の内部と他方の外部が交わる。
線と線の間では内部同士の交わりが点を形成する。
点と点、点と線、点と面、面と面の間では定義されない。
T*T
***
T**
(線と線)
0**
***
***
OVERLAPS
重なる
内部同士が交わり、かつ、含む・含まれる・等しいのいずれでもない。
線と線の間では内部同士の交わりが線を形成する。
点と点、点と線、点と面、線と面の間では定義されない。
T*T
***
T**
(線と線)
1*T
***
T**
CONTAINS
含む

AはBを含む
内部同士が交わり、かつ、Bの内部はAの外部と交わらない。境界同士は交わっても良い。
WITHIN の逆。
ただし、EQUALS が成り立つときは CONTAINS と WITHIN がどちらも成り立つ。
T**
***
FF*
WITHIN
含まれる

AはBに含まれる
内部同士が交わり、かつ、Aの内部はBの外部と交わらない。境界同士は交わっても良い。
CONTAINS の逆。
ただし、EQUALS が成り立つときは WITHIN と CONTAINS がどちらも成り立つ。
T*F
**F
***