25.2 SDO_GEOM.RELATE
書式
SDO_GEOM.RELATE( geom1 IN SDO_GEOMETRY, dim1 IN SDO_DIM_ARRAY, mask IN VARCHAR2, geom2 IN SDO_GEOMETRY, dim2 IN SDO_DIM_ARRAY ) RETURN VARCHAR2;
または
SDO_GEOM.RELATE( geom1 IN SDO_GEOMETRY, mask IN VARCHAR2, geom2 IN SDO_GEOMETRY, tol IN NUMBER ) RETURN VARCHAR2;
説明
2つのジオメトリ・オブジェクトの空間的関係を判断するために、2つのオブジェクトを検査します。
パラメータ
- geom1
-
ジオメトリ・オブジェクト。
- dim1
-
geom1
に対応する次元情報の配列を指定します。通常、xxx_SDO_GEOM_METADATAビューの1つから選択します(「ジオメトリのメタデータ・ビュー」を参照)。 - mask
-
チェックする関係のリストを指定します。「使用上のノート」にあるキーワードのリストを参照してください。
- geom2
-
ジオメトリ・オブジェクト。
- dim2
-
geom2
に対応する次元情報の配列を指定します。通常、xxx_SDO_GEOM_METADATAビューの1つから選択します(「ジオメトリのメタデータ・ビュー」を参照)。 - tol
-
許容差(「許容差」を参照)。
使用上のノート
パフォーマンスを向上させるには、SDO_GEOM.RELATE
ファンクションを使用する必要がないかぎり、このファンクションのかわりにSDO_RELATE演算子またはその簡易演算子形式(「空間演算子」を参照)の1つを使用します。たとえば、SDO_RELATE演算子を使用する場合、DETERMINE maskキーワードは適用されません。演算子およびファンクションを使用する場合のパフォーマンスに関する注意点の詳細は、「空間演算子、空間プロシージャおよび空間ファンクション」を参照してください。
SDO_GEOM.RELATE
ファンクションの戻り値には、次の種類があります。
-
mask
に1つ以上の関係が登録されている場合、ジオメトリ・ペアについて1つ以上の関係が真であれば、指定されたmask
値を戻します。すべての関係が偽であれば、プロシージャはFALSEを戻します。 -
mask
のキーワードにDETERMINEを指定すると、ジオメトリ間の関係に最も一致する関係キーワードが1つ戻されます。 -
mask
のキーワードにANYINTERACTを指定すると、2つのジオメトリが非接続でなければ、TRUEが戻されます。
mask
では、次の関係について判断します。
-
ANYINTERACT: オブジェクトが非接続ではない場合にTRUEを戻します。
-
CONTAINS: 第2オブジェクトが完全に第1オブジェクトの内部にあり、かつオブジェクト境界が接していない場合にCONTAINSを戻し、そうでない場合はFALSEを戻します。
-
COVEREDBY: 第1オブジェクトが完全に第2オブジェクトの内部にあり、かつオブジェクト境界が1つ以上の点で接している場合にCOVEREDBYを戻し、そうでない場合はFALSEを戻します。
-
COVERS: 第2オブジェクトが完全に第1オブジェクトの内部にあり、かつ境界が1つ以上の位置で接している場合にCOVERSを戻し、そうでない場合はFALSEを戻します。
-
DISJOINT: 2つのオブジェクトが、境界または内部の点を共有していない場合にDISJOINTを戻し、そうでない場合はFALSEを戻します。
-
EQUAL: オブジェクトの境界と内側(すべての穴を含む)が完全に重なる(つまり、2つのジオメトリが位相的に等しい)場合にEQUALを戻し、そうでない場合はFALSEを戻します。
-
INSIDE: 第1オブジェクトが完全に第2オブジェクトの内部にあり、かつオブジェクト境界が接していない場合にINSIDEを戻し、そうでない場合はFALSEを戻します。
-
ON: 線(第1オブジェクト)の境界および内部が完全にポリゴン(第2オブジェクト)の境界上に存在する場合にONを戻し、そうでない場合はFALSEを戻します。
-
OVERLAPBDYDISJOINT: 2つのオブジェクトは重なっているが、その境界が相互作用しない場合にOVERLAPBDYDISJOINTを戻し、そうでない場合はFALSEを戻します。
-
OVERLAPBDYINTERSECT: 2つのオブジェクトが重なり、かつその境界が1つ以上の位置で交差する場合にOVERLAPBDYINTERSECTを戻し、そうでない場合はFALSEを戻します。
-
TOUCH: 2つのオブジェクトが1つの境界点を共有しているが、内部の点は共有していない場合にTOUCHを戻し、そうでない場合はFALSEを戻します。
mask
の値は、論理ブール演算子ORを使用して組み合せることができます。たとえば、ジオメトリ間の関係がINSIDEまたはTOUCHまたはINSIDEとTOUCHの両方である場合、「INSIDE + TOUCH」はINSIDE+TOUCH
を戻し、ジオメトリ間の関係がINSIDEまたはTOUCHのいずれでもない場合、FALSE
を戻します。
geom1
およびgeom2
が異なる座標系に基づく場合、例外が発生します。
例
次の例では、SHAPE列内の各ジオメトリとcola_b
ジオメトリとの関係を調べます。(例では、「空間データの挿入、索引付けおよび問合せの例」の定義およびデータを使用しています。出力は、読みやすくするために変更が加えられています。)
SELECT c.name, SDO_GEOM.RELATE(c.shape, 'determine', c_b.shape, 0.005) relationship FROM cola_markets c, cola_markets c_b WHERE c_b.name = 'cola_b'; NAME RELATIONSHIP --------------------------- cola_a TOUCH cola_b EQUAL cola_c OVERLAPBDYINTERSECT cola_d DISJOINT
関連トピック
-
SDO_RELATE演算子
親トピック: SDO_GEOMパッケージ(ジオメトリ)