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

前
次

24.2 SDO_LRS.CONCATENATE_GEOM_SEGMENTS

書式

SDO_LRS.CONCATENATE_GEOM_SEGMENTS(
     geom_segment_1  IN SDO_GEOMETRY, 
     geom_segment_2  IN SDO_GEOMETRY, 
     tolerance       IN NUMBER DEFAULT 1.0e-8 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.CONCATENATE_GEOM_SEGMENTS(
     geom_segment_1  IN SDO_GEOMETRY, 
     dim_array_1     IN SDO_DIM_ARRAY, 
     geom_segment_2  IN SDO_GEOMETRY, 
     dim_array_2     IN SDO_DIM_ARRAY 
     ) RETURN SDO_GEOMETRY;

説明

2つのジオメトリ・セグメントを連結した結果のジオメトリ・オブジェクトを戻します。

パラメータ

geom_segment_1

連結する1つ目のジオメトリ・セグメントを指定します。

dim_array_1

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

geom_segment_2

連結する2つ目のジオメトリ・セグメントを指定します。

dim_array_2

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

tolerance

許容差を指定します(「許容差」および「LRSファンクションの許容差」を参照)。デフォルト値は0.00000001です。

使用上の注意

geom_segment_1またはgeom_segment_2に無効なジオメトリ・タイプまたは次元が含まれる場合、またはgeom_segment_1およびgeom_segment_2が異なる座標系に基づく場合、例外が発生します。

1つ目のジオメトリ・セグメントの方向は保持され、2つ目のセグメントのすべてのメジャーは、開始メジャーが1つ目のセグメントの終了メジャーと同じになるようにシフトされます。

geom_segment_1およびgeom_segment_2のジオメトリ・タイプは、単一または複数の線である必要があります。いずれもポリゴンは指定できません。

このファンクションは_3D 形式(SDO_LRS.CONCATENATE_GEOM_SEGMENTS_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;
/