プライマリ・コンテンツに移動
Oracle® Spatial and Graph開発者ガイド
12cリリース1 (12.1)
B72470-07
目次へ移動
目次
索引へ移動
索引

前
次

23.1 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 

関連項目