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

前
次

24.36 SDO_LRS.REDEFINE_GEOM_SEGMENT

書式

SDO_LRS.REDEFINE_GEOM_SEGMENT(
     geom_segment     IN OUT SDO_GEOMETRY 
     [, start_measure IN NUMBER, 
     end_measure      IN NUMBER]);

または

SDO_LRS.REDEFINE_GEOM_SEGMENT(
     geom_segment     IN OUT SDO_GEOMETRY, 
     dim_array        IN SDO_DIM_ARRAY 
     [, start_measure IN NUMBER, 
     end_measure      IN NUMBER]);

説明

ジオメトリ・セグメントの開始および終了メジャーに基づいてすべての形状点のメジャーを移入し、開始点と終了点の間で事前に割り当てられたメジャーを上書きします。

パラメータ

geom_segment

線形フィーチャの地図的表現を指定します。

dim_array

geom_segmentに対応する次元情報の配列を指定します。通常、xxx_SDO_GEOM_METADATAビューの1つから選択します(「ジオメトリのメタデータ・ビュー」を参照)。

start_measure

ジオメトリ・セグメントの開始点から線形フィーチャの開始点までの距離を指定します。デフォルトは、メジャー次元の既存の値(存在する場合)です。メジャー次元の値が存在しない場合、デフォルト値は0 (ゼロ)です。

end_measure

ジオメトリ・セグメントの終了点から線形フィーチャの開始点までの距離を指定します。デフォルトは、メジャー次元の既存の値(存在する場合)です。メジャー次元の値が存在しない場合、セグメントの地図上の長さです。

使用上の注意

geom_segment に無効なジオメトリ・タイプまたは次元が含まれる場合、またはstart_measureまたはend_measureが範囲外の場合、例外が発生します。

このプロシージャは_3D 形式(SDO_LRS.REDEFINE_GEOM_SEGMENT_3D)が使用可能です。LRSファンクションおよびプロシージャの_3D形式については、「LRSファンクションの3D形式」を参照してください。

ジオメトリ・セグメントの再定義については、「ジオメトリ・セグメントの再定義」を参照してください。

次の例では、ジオメトリ・セグメントを再定義して、メジャー値のマイルをkmに効率的に変換します。(例では、「LRSファンクションの例」の例の定義を使用しています。)

-- First, display the original segment; then, redefine.
SELECT a.route_geometry FROM lrs_routes a WHERE a.route_id = 1;

ROUTE_GEOMETRY(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDIN
--------------------------------------------------------------------------------
SDO_GEOMETRY(3302, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(
2, 2, 0, 2, 4, 2, 8, 4, 8, 12, 4, 12, 12, 10, 18, 8, 10, 22, 5, 14, 27))        
                                                                                
-- Redefine geometric segment to "convert" miles to kilometers.
DECLARE
geom_segment SDO_GEOMETRY;
dim_array SDO_DIM_ARRAY;

BEGIN

SELECT a.route_geometry into geom_segment FROM lrs_routes a
  WHERE a.route_name = 'Route1';
SELECT m.diminfo into dim_array from 
  user_sdo_geom_metadata m
  WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY';

-- "Convert" mile measures to kilometers (27 * 1.609 = 43.443).
SDO_LRS.REDEFINE_GEOM_SEGMENT (geom_segment, 
  dim_array,
   0,    -- Zero starting measure: LRS segment starts at start of route.
   43.443);  -- End of LRS segment. 27 miles = 43.443 kilometers.

-- Update and insert geometries into table, to display later.
UPDATE lrs_routes a SET a.route_geometry = geom_segment
   WHERE a.route_id = 1;

END;
/

PL/SQL procedure successfully completed.

-- Display the redefined segment, with all measures "converted."
SELECT a.route_geometry FROM lrs_routes a WHERE a.route_id = 1;

ROUTE_GEOMETRY(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDIN
--------------------------------------------------------------------------------
SDO_GEOMETRY(3302, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(
2, 2, 0, 2, 4, 3.218, 8, 4, 12.872, 12, 4, 19.308, 12, 10, 28.962, 8, 10, 35.398
, 5, 14, 43.443))