35.36 SDO_UTIL.GETVERTICES

書式

SDO_UTIL.GETVERTICES(
     geometry             IN SDO_GEOMETRY,
     include_oriented_pt  IN NUMBER DEFAULT NULL
     ) RETURN VERTEX_SET_TYPE;

説明

入力ジオメトリの頂点の座標を戻します。

パラメータ

geometry

頂点の座標を戻すジオメトリを指定します。

include_oriented_pt
点座標と方向ベクトルの両方の戻り値を、方向付きの点の2つの頂点として制御します。

ノート:

これは、入力が方向付きの点ジオメトリである場合にのみ有効です。方向付きの点の詳細については、方向付きの点を参照してください。

有効な値は次のいずれかです。

  • 0: 頂点の座標のみを戻します
  • 1: 座標と方向ベクトルの両方を戻します

使用上のノート

このファンクションは、MDSYS.VERTEX_SET_TYPEのオブジェクトを戻します(このオブジェクトは、MDSYS.VERTEX_TYPEのオブジェクトの表で構成されます)。Oracle Spatialでは、VERTEX_SET_TYPE型を次のように定義します。

CREATE TYPE vertex_set_type as TABLE OF vertex_type;

Oracle Spatialでは、VERTEX_TYPEオブジェクト型を次のように定義します。

CREATE TYPE vertex_type AS OBJECT
   (x   NUMBER,
    y   NUMBER,
    z   NUMBER,
    w   NUMBER,
    v5  NUMBER,
    v6  NUMBER,
    v7  NUMBER,
    v8  NUMBER,
    v9  NUMBER,
    v10 NUMBER,
    v11 NUMBER,
    id  NUMBER);

ノート:

VERTEX_SET_TYPE型およびVERTEX_TYPE型は、Oracleでのみ使用されます。これらの型を、ユーザーが作成する列の定義やファンクションで使用しないでください。

このファンクションは、ジオメトリを無効にしている頂点を検出する場合に有効です。たとえば、SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXTファンクションまたはSDO_GEOM.VALIDATE_LAYER_WITH_CONTEXTプロシージャ(いずれについても「SDO_GEOMパッケージ(ジオメトリ)を参照)を使用してジオメトリが無効であると特定した場合は、GETVERTICESファンクションを使用して頂点を表形式で表示できます。

このファンクションは、点座標のみを戻し、入力が方向付きの点ジオメトリの場合は方向ベクトルを戻しません。方向ベクトルも戻すには、1に設定されたパラメータINCLUDE_ORIENTED_PTを渡す必要があります。の項の最後の例を参照してください。

次の例では、COLA_MARKETS表のSHAPE列にあるジオメトリの頂点のX座標、Y座標およびID値を戻します。(例では、「空間データの挿入、索引付けおよび問合せの例」の定義およびデータを使用しています。)

SELECT c.mkt_id, c.name, t.X, t.Y, t.id
   FROM cola_markets c,
   TABLE(SDO_UTIL.GETVERTICES(c.shape)) t
   ORDER BY c.mkt_id, t.id;

    MKT_ID NAME                                      X          Y         ID    
---------- -------------------------------- ---------- ---------- ----------    
         1 cola_a                                    1          1          1    
         1 cola_a                                    5          7          2    
         2 cola_b                                    5          1          1    
         2 cola_b                                    8          1          2    
         2 cola_b                                    8          6          3    
         2 cola_b                                    5          7          4    
         2 cola_b                                    5          1          5    
         3 cola_c                                    3          3          1    
         3 cola_c                                    6          3          2    
         3 cola_c                                    6          5          3    
         3 cola_c                                    4          5          4    
         3 cola_c                                    3          3          5    
         4 cola_d                                    8          7          1    
         4 cola_d                                   10          9          2    
         4 cola_d                                    8         11          3    

15 rows selected.

次の例では、座標と方向ベクトルの両方を、方向付きの点ジオメトリの2つの頂点として、戻します。(この例では、例2-14で作成した点ジオメトリを使用します)。

select sdo_util.getvertices(c.shape, 1) from cola_markets c;

SDO_UTIL.GETVERTICES(C.SHAPE,1)(X, Y, Z, W, V5, V6, V7, V8, V9, V10, V11, ID)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
VERTEX_SET_TYPE(VERTEX_TYPE(12, 14, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1), VERTEX_TYPE(.3, .2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2))