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

前
次

24.42 SDO_LRS.SPLIT_GEOM_SEGMENT

書式

SDO_LRS.SPLIT_GEOM_SEGMENT(
     geom_segment  IN SDO_GEOMETRY, 
     split_measure IN NUMBER, 
     segment_1     OUT SDO_GEOMETRY, 
     segment_2     OUT SDO_GEOMETRY);

または

SDO_LRS.SPLIT_GEOM_SEGMENT(
     geom_segment  IN SDO_GEOMETRY, 
     dim_array     IN SDO_DIM_ARRAY, 
     split_measure IN NUMBER, 
     segment_1     OUT SDO_GEOMETRY, 
     segment_2     OUT SDO_GEOMETRY);

説明

ジオメトリ・セグメントを2つに分割します。

パラメータ

geom_segment

分割するジオメトリ・セグメントを指定します。

dim_array

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

split_measure

ジオメトリ・セグメントの開始点から分割点までの距離を指定します。

segment_1

geom_segmentの開始点から分割点までの、1つ目のジオメトリ・セグメントを指定します。

segment_2

分割点からgeom_segmentの終了点までの、2つ目のジオメトリ・セグメントを指定します。

使用上の注意

geom_segmentまたはsplit_measureが無効な場合、例外が発生します。

ジオメトリ・セグメントを分割した結果の方向およびメジャーは保持されます。

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

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

次の例では、ジオメトリ・セグメントを定義し、ジオメトリ・セグメントを2つのセグメントに分割した後、それらを連結します。(例では、「LRSファンクションの例」の例の定義を使用しています。result_geom_1result_geom_2およびresult_geom_3の定義は、例7-3で示します。)

DECLARE
geom_segment SDO_GEOMETRY;
line_string SDO_GEOMETRY;
dim_array SDO_DIM_ARRAY;
result_geom_1 SDO_GEOMETRY;
result_geom_2 SDO_GEOMETRY;
result_geom_3 SDO_GEOMETRY;

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';

-- Define the LRS segment for Route1.
SDO_LRS.DEFINE_GEOM_SEGMENT (geom_segment, 
  dim_array,
  0,    -- Zero starting measure: LRS segment starts at start of route.
  27);  -- End of LRS segment is at measure 27.

SELECT a.route_geometry INTO line_string FROM lrs_routes a 
  WHERE a.route_name = 'Route1';

-- Split Route1 into two segments.
SDO_LRS.SPLIT_GEOM_SEGMENT(line_string,dim_array,5,result_geom_1,result_geom_2);

-- Concatenate the segments that were just split.
result_geom_3 := SDO_LRS.CONCATENATE_GEOM_SEGMENTS(result_geom_1, dim_array, result_geom_2, dim_array);

-- Insert geometries into table, to display later.
INSERT INTO lrs_routes VALUES(
  11,
  'result_geom_1',
  result_geom_1
);
INSERT INTO lrs_routes VALUES(
  12,
  'result_geom_2',
  result_geom_2
);
INSERT INTO lrs_routes VALUES(
  13,
  'result_geom_3',
  result_geom_3
);

END;
/