25.8 SDO_GEOM.SDO_CLOSEST_POINTS

書式

SDO_GEOM.SDO_CLOSEST_POINTS(     
  geom1          IN SDO_GEOMETRY,      
  geom2          IN SDO_GEOMETRY,      
  tolerance      IN NUMBER,       
  unit           IN VARCHAR2      
  [, ellipsoidal IN VARCHAR2 DEFAULT NULL]
) RETURN SDO_CLOSEST_POINTS_TYPE;

説明

2つのジオメトリ間で計算された最短距離、および最短距離を示す点(各ジオメトリに1つ)を含むオブジェクトを戻します。

パラメータ

geom1

ジオメトリ・オブジェクト。

geom2

ジオメトリ・オブジェクト。

tolerance

許容差(「許容差」を参照)。

unit

測定単位(unit=およびMDSYS.SDO_DIST_UNITS表のSDO_UNIT値を引用符で囲んだ文字列で、'unit=KM'など)を指定します。測定単位の指定の詳細は、「測定単位のサポート」を参照してください。

このパラメータを指定しない場合、データに関連付けられた測定単位が使用されます。

ellipsoidal

測地データに楕円体距離を常に使用するか(true)、球体距離を使用する場合があるか(false、デフォルト)を指定します。「距離: 測地データでの球体対楕円体」を参照してください。

使用上のノート

このファンクションは、SDO_CLOSEST_POINTS_TYPE型の出力オブジェクトを戻します。これには、計算された最短距離(DIST)および最短距離に関連付けられた出力点ジオメトリ(GEOMAおよびGEOMB)が含まれます。Oracle Spatialでは、オブジェクト型SDO_CLOSEST_POINTS_TYPEを次のように定義します。
CREATE TYPE sdo_closest_points_type AS OBJECT (
    dist   NUMBER,
    geoma  SDO_GEOMETRY,
    geomb  SDO_GEOMETRY
);

2点間の距離が0(ゼロ)の場合、出力ジオメトリ(GEOMAおよびGEOMB)は、次のようになります。

  • 2次元(2D)ジオメトリでは、入力ジオメトリの1つが点ジオメトリの場合、各出力ジオメトリはその点です。それ以外の場合、各出力ジオメトリは入力ジオメトリの共通部分の最初の要素の最初の点です。

  • 3次元(3D)ジオメトリでは、入力ジオメトリの1つが点ジオメトリの場合、各出力ジオメトリはその点です。それ以外の場合、出力ジオメトリはnullです。

geom1およびgeom2が異なる座標系に基づく場合、例外が発生します。

入力データが3次元で測地の場合、ジオメトリでは3D SRIDを使用する必要があります。それ以外の場合、結果は正しくありません。

次の例では、ジオメトリcola_ccola_d間の最短距離、および最短距離に関連付けられた各入力ジオメトリ上の1つの点を計算します。

結果のSDO_CLOSEST_POINTS_TYPEオブジェクトは、2つの入力ジオメトリと2つの出力点ジオメトリ間の最短距離2.47213595を示します。cola_cの最近点は(6,5)で、cola_dの最近点は(7.10557281, 7.21114562)です。(例では、「空間データの挿入、索引付けおよび問合せの例」の定義およびデータを使用しています。)

SELECT sdo_geom.sdo_closest_points (c1.shape, c2.shape, 0.5, null) cp
FROM cola_markets c1, cola_markets c2
WHERE c1.name = 'cola_c'
AND c2.name = 'cola_d';

CP(DIST, GEOMA(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES), GEOMB(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES))
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SDO_CLOSEST_POINTS_TYPE(2.47213595, SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(6, 5, NULL), NULL, NULL), SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(7.10557281, 7.21114562, NULL), NULL, NULL))

関連トピック

なし。