27 SDO_LRSパッケージ(線形参照システム)

MDSYS.SDO_LRSパッケージには、線形参照要素の作成、変更、問合せおよび変換を行うサブプログラムが含まれています。

これらのサブプログラムによって、データベースの状態が変更されることはありません。多くのLRSサブプログラムはファンクションです。

この章で説明するサブプログラムを使用するには、「線形参照システム」で説明する線形参照システム(LRS)の概念および技術を理解しておく必要があります。

表27-1に、ジオメトリ・セグメントの作成および編集に関連するサブプログラムを示します。

表27-1 ジオメトリ・セグメントの作成および編集サブプログラム

サブプログラム 説明

SDO_LRS.DEFINE_GEOM_SEGMENT

ジオメトリ・セグメントを定義します。

SDO_LRS.REDEFINE_GEOM_SEGMENT

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

SDO_LRS.CLIP_GEOM_SEGMENT

ジオメトリ・セグメント(SDO_LRS.DYNAMIC_SEGMENTのシノニム)をクリップします。

SDO_LRS.DYNAMIC_SEGMENT

ジオメトリ・セグメント(SDO_LRS.CLIP_GEOM_SEGMENTのシノニム)をクリップします。

SDO_LRS.CONCATENATE_GEOM_SEGMENTS

2つのジオメトリ・セグメントを連結して1つのセグメントにします。

SDO_LRS.LRS_INTERSECTION

いずれか、または両方がLRSジオメトリである2つのジオメトリ・オブジェクトで位相的に共通部分(AND演算)となるLRSジオメトリ・オブジェクトを戻します。

SDO_LRS.OFFSET_GEOM_SEGMENT

ジオメトリ・セグメントから指定したオフセットにあるジオメトリ・セグメントを戻します。

SDO_LRS.SPLIT_GEOM_SEGMENT

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

SDO_LRS.RESET_MEASURE

開始メジャーおよび終了メジャーを含むジオメトリ・セグメントのすべてのメジャーをNULL値に設定し、事前に割り当てられたメジャーを上書きします。

SDO_LRS.SCALE_GEOM_SEGMENT

ジオメトリ・セグメントをメジャーのスケール変更した結果のジオメトリ・オブジェクトを戻します。

SDO_LRS.SET_PT_MEASURE

指定された点のメジャー値を設定します。

SDO_LRS.REVERSE_MEASURE

ジオメトリ・セグメントのメジャー値を反転させて(方向は反転させない)、新しいジオメトリ・セグメントを戻します。

SDO_LRS.TRANSLATE_MEASURE

ジオメトリ・セグメントを変換して、新しいジオメトリ・セグメントを戻します(開始および終了メジャーを指定した値分シフトします)。

SDO_LRS.REVERSE_GEOMETRY

ジオメトリ・セグメントのメジャー値および方向を反転させて、新しいジオメトリ・セグメントを戻します。

表27-2に、ジオメトリ・セグメントの問合せに関連するサブプログラムを示します。

表27-2 ジオメトリ・セグメントの問合せおよび検査サブプログラム

サブプログラム 説明

SDO_LRS.VALID_GEOM_SEGMENT

ジオメトリ・セグメントが有効かどうかを確認します。

SDO_LRS.VALID_LRS_PT

LRS点が有効かどうかを確認します。

SDO_LRS.VALID_MEASURE

メジャーがジオメトリ・セグメントのメジャー範囲内かどうかを確認します。

SDO_LRS.CONNECTED_GEOM_SEGMENTS

2つのジオメトリ・セグメントが空間的に接続しているかどうかを確認します。

SDO_LRS.GEOM_SEGMENT_LENGTH

ジオメトリ・セグメントの長さを戻します。

SDO_LRS.GEOM_SEGMENT_START_PT

ジオメトリ・セグメントの開始点を戻します。

SDO_LRS.GEOM_SEGMENT_END_PT

ジオメトリ・セグメントの終了点を戻します。

SDO_LRS.GEOM_SEGMENT_START_MEASURE

ジオメトリ・セグメントの開始メジャーを戻します。

SDO_LRS.GEOM_SEGMENT_END_MEASURE

ジオメトリ・セグメントの終了メジャーを戻します。

SDO_LRS.GET_MEASURE

LRS点のメジャーを戻します。

SDO_LRS.GET_NEXT_SHAPE_PT

ジオメトリ・セグメント上の指定したメジャー値またはLRS点の次の形状点を戻します。

SDO_LRS.GET_NEXT_SHAPE_PT_MEASURE

ジオメトリ・セグメント上の指定したメジャー値またはLRS点の次の形状点のメジャー値を戻します。

SDO_LRS.GET_PREV_SHAPE_PT

ジオメトリ・セグメント上の指定したメジャー値またはLRS点の前の形状点を戻します。

SDO_LRS.GET_PREV_SHAPE_PT_MEASURE

ジオメトリ・セグメント上の指定したメジャー値またはLRS点の前の形状点のメジャー値を戻します。

SDO_LRS.IS_GEOM_SEGMENT_DEFINED

LRSセグメントが正しく定義されているかどうかを確認します。

SDO_LRS.IS_MEASURE_DECREASING

メジャー値がLRSセグメントの方向に降順である(数値が減少している)かどうかを確認します。

SDO_LRS.IS_MEASURE_INCREASING

メジャー値がLRSセグメントの方向に昇順である(数値が増加している)かどうかを確認します。

SDO_LRS.IS_SHAPE_PT_MEASURE

指定したメジャー値がジオメトリ・セグメント上の形状点に関連付けられているかどうかを確認します。

SDO_LRS.MEASURE_RANGE

ジオメトリ・セグメントのメジャー範囲(開始メジャーと終了メジャーの差)を戻します。

SDO_LRS.MEASURE_TO_PERCENTAGE

ジオメトリ・セグメントのメジャー範囲に対する指定したメジャーの割合(0から100%)を戻します。

SDO_LRS.PERCENTAGE_TO_MEASURE

ジオメトリ・セグメントのメジャー範囲に対する、指定した割合(0から100%)のメジャー値を戻します。

SDO_LRS.LOCATE_PT

ジオメトリ・セグメントの開始位置から指定した距離にある点を戻します。

SDO_LRS.PROJECT_PT

指定した点の投影点を戻します。投影点はジオメトリ・セグメント上にあります。

SDO_LRS.FIND_LRS_DIM_POS

指定されたSDO_GEOMETRY列のSDO_DIM_ARRAY構造内におけるメジャー次元の位置を戻します。

SDO_LRS.FIND_MEASURE

指定した投影点に最も近いセグメント上の点のメジャーを戻します。

SDO_LRS.FIND_OFFSET

点とジオメトリ・セグメント間の符号付きオフセット(最短距離)を戻します。

SDO_LRS.VALIDATE_LRS_GEOMETRY

LRSジオメトリが有効かどうかを確認します。

表27-3に、ジオメトリ・セグメントの変換に関連するサブプログラムを示します。

表27-3 ジオメトリ・セグメントの変換サブプログラム

サブプログラム 説明

SDO_LRS.CONVERT_TO_LRS_DIM_ARRAY

メジャー次元を作成して、標準の次元配列をLRS次元配列に変換します。

SDO_LRS.CONVERT_TO_LRS_GEOM

メジャー情報を追加して、標準のSDO_GEOMETRY線ストリングをLRSジオメトリ・セグメントに変換します。

SDO_LRS.CONVERT_TO_LRS_LAYER

SDO_GEOMETRY型列のすべてのジオメトリ・オブジェクトを、メジャー情報を持たない標準の線ストリング・ジオメトリからメジャー情報を持つLRSジオメトリ・セグメントに変換します。また、メタデータを更新します。

SDO_LRS.CONVERT_TO_STD_DIM_ARRAY

メジャー次元を削除して、LRS次元配列を標準の次元配列に変換します。

SDO_LRS.CONVERT_TO_STD_GEOM

メジャー情報を削除して、LRSジオメトリ・セグメントを標準のSDO_GEOMETRY線ストリングに変換します。

SDO_LRS.CONVERT_TO_STD_LAYER

SDO_GEOMETRY型列のすべてのジオメトリ・オブジェクトを、メジャー情報を持つLRSジオメトリ・セグメントからメジャー情報を持たない標準の線ストリング・ジオメトリに変換します。また、メタデータを更新します。

変換サブプログラムの詳細は、「LRSジオメトリの変換」を参照してください。

この章では、これらのサブプログラムのリファレンス情報をアルファベット順に説明します。

トピック:

27.1 SDO_LRS.CLIP_GEOM_SEGMENT

構文

SDO_LRS.CLIP_GEOM_SEGMENT(
     geom_segment  IN SDO_GEOMETRY, 
     start_measure IN NUMBER, 
     end_measure   IN NUMBER, 
     tolerance     IN NUMBER DEFAULT 1.0e-8 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.CLIP_GEOM_SEGMENT(
     geom_segment  IN SDO_GEOMETRY, 
     dim_array     IN SDO_DIM_ARRAY, 
     start_measure IN NUMBER, 
     end_measure   IN NUMBER 
     ) RETURN SDO_GEOMETRY;

説明

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

注意:

SDO_LRS.CLIP_GEOM_SEGMENTおよびSDO_LRS.DYNAMIC_SEGMENTはシノニムであり、両方のファンクションのパラメータ、動作および戻り値は同じです。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

start_measure

ジオメトリ・セグメントの開始メジャーを指定します。

end_measure

ジオメトリ・セグメントの終了メジャーを指定します。

tolerance

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

使用上の注意

geom_segmentstart_measureまたはend_measureが無効な場合は例外が発生します。

ジオメトリ・セグメント上の任意の点を、start_measureおよびend_measureに指定できます。これらの点は、特定の順序に従う必要はありません。たとえば、start_measureend_measureは、5と10、または10と5に指定できます。

結果のジオメトリ・セグメントの方向およびメジャーは保持されます(元のセグメントが反映されます)。

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

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

次の例では、ジオメトリ・セグメントRoute 1をクリップして、メジャー5から10のセグメントを戻します。このセグメントは、建設区域を表します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT  SDO_LRS.CLIP_GEOM_SEGMENT(route_geometry, 5, 10)
  FROM lrs_routes WHERE route_id = 1;

SDO_LRS.CLIP_GEOM_SEGMENT(ROUTE_GEOMETRY,5,10)(SDO_GTYPE, SDO_SRID, SDO_POINT(X,
--------------------------------------------------------------------------------
SDO_GEOMETRY(3302, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(
5, 4, 5, 8, 4, 8, 10, 4, 10))

27.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つ目のジオメトリ・セグメント(メジャー情報を含むLRSセグメント)。

dim_array_1

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

geom_segment_2

連結する2つ目のジオメトリ・セグメント(メジャー情報を含むLRSセグメント)。

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

27.3 SDO_LRS.CONNECTED_GEOM_SEGMENTS

構文

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

または

SDO_LRS.CONNECTED_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 VARCHAR2;

説明

2つのジオメトリ・セグメントが空間的に接続しているかどうかを確認します。

パラメータ

geom_segment_1

確認する2つのジオメトリ・セグメントの1つ目(メジャー情報を含むLRSセグメント)。

dim_array_1

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

geom_segment_2

確認する2つのジオメトリ・セグメントの2つ目(メジャー情報を含むLRSセグメント)。

dim_array_2

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

tolerance

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

使用上の注意

このファンクションは、ジオメトリ・セグメントが空間的に接続している場合はTRUEを戻します。また、空間的に接続していない場合は、FALSEを戻します。

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

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

次の例では、(分割操作の結果である)2つのジオメトリ・セグメントが空間的に接続しているかどうかを確認します。

-- Are result_geom_1 and result_geom2 connected? 
SELECT  SDO_LRS.CONNECTED_GEOM_SEGMENTS(a.route_geometry,
           b.route_geometry, 0.005)
  FROM lrs_routes a, lrs_routes b
  WHERE a.route_id = 11 AND b.route_id = 12;

SDO_LRS.CONNECTED_GEOM_SEGMENTS(A.ROUTE_GEOMETRY,B.ROUTE_GEOMETRY,0.005)        
--------------------------------------------------------------------------------
TRUE

27.4 SDO_LRS.CONVERT_TO_LRS_DIM_ARRAY

構文

SDO_LRS.CONVERT_TO_LRS_DIM_ARRAY(
     dim_array      IN SDO_DIM_ARRAY 
     [, lower_bound IN NUMBER, 
     upper_bound    IN NUMBER, 
     tolerance      IN NUMBER] 
     ) RETURN SDO_DIM_ARRAY; 

or

SDO_LRS.CONVERT_TO_LRS_DIM_ARRAY(
     dim_array      IN SDO_DIM_ARRAY, 
     dim_name       IN VARCHAR2 
     [, lower_bound IN NUMBER, 
     upper_bound    IN NUMBER, 
     tolerance      IN NUMBER] 
     ) RETURN SDO_DIM_ARRAY; 

or

SDO_LRS.CONVERT_TO_LRS_DIM_ARRAY(
     dim_array      IN SDO_DIM_ARRAY, 
     dim_name       IN VARCHAR2, 
     dim_pos        IN INTEGER 
     [, lower_bound IN NUMBER, 
     upper_bound    IN NUMBER, 
     tolerance      IN NUMBER] 
     ) RETURN SDO_DIM_ARRAY;

説明

メジャー次元を作成して、標準の次元配列をLRS次元配列に変換します。

パラメータ

dim_array

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

dim_name

メジャー次元の名前(特に指定がないかぎり、M)を指定します。

dim_pos

メジャー次元の位置(特に指定がないかぎり、SDO_DIM_ARRAY内の最後のSDO_DIM_ELEMENTオブジェクトの位置)を指定します。

lower_bound

メジャー次元の縦座標の下限(SDO_DIM_ELEMENT定義のSDO_LB値)を指定します。

upper_bound

メジャー次元の縦座標の上限(SDO_DIM_ELEMENT定義のSDO_UB値)を指定します。

tolerance

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

使用上の注意

このファンクションは、メジャー次元を作成して、標準の次元配列をLRS次元配列に変換します。具体的には、SDO_DIM_ELEMENTオブジェクトを(他のdim_posを指定しないかぎり)次元配列のSDO_DIM_ARRAYにある現行のSDO_DIM_ELEMENTオブジェクトの最後に追加し、追加したSDO_DIM_ELEMENTのSDO_DIMNAME値を(他のdim_nameを指定しないかぎり)Mに設定します。upper_boundlower_boundおよびtoleranceパラメータの値に従って、追加したSDO_DIM_ELEMENTの別の値を設定します。

dim_arrayがすでに次元情報を含む場合は、dim_arrayが戻されます。

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

変換ファンクションの詳細は、「LRSジオメトリの変換」を参照してください。

次の例では、LRS_ROUTES表の次元配列をLRSフォーマットに変換します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.CONVERT_TO_LRS_DIM_ARRAY(m.diminfo)
   FROM user_sdo_geom_metadata m
   WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY';

SDO_LRS.CONVERT_TO_LRS_DIM_ARRAY(M.DIMINFO)(SDO_DIMNAME, SDO_LB, SDO_UB, SDO_TOL
--------------------------------------------------------------------------------
SDO_DIM_ARRAY(SDO_DIM_ELEMENT('X', 0, 20, .005), SDO_DIM_ELEMENT('Y', 0, 20, .00
5), SDO_DIM_ELEMENT('M', 0, 20, .005))

27.5 SDO_LRS.CONVERT_TO_LRS_GEOM

構文

SDO_LRS.CONVERT_TO_LRS_GEOM(
     standard_geom    IN SDO_GEOMETRY 
     [, start_measure IN NUMBER, 
     end_measure      IN NUMBER] 
     ) RETURN SDO_GEOMETRY;

or

SDO_LRS.CONVERT_TO_LRS_GEOM(
     standard_geom    IN SDO_GEOMETRY, 
     dim_array        IN SDO_DIM_ARRAY 
     [, start_measure IN NUMBER, 
     end_measure      IN NUMBER] 
     ) RETURN SDO_GEOMETRY; 

or

SDO_LRS.CONVERT_TO_LRS_GEOM(
     standard_geom    IN SDO_GEOMETRY, 
     m_pos            IN INTEGER 
     [, start_measure IN NUMBER, 
     end_measure      IN NUMBER]   
    ) RETURN SDO_GEOMETRY;

説明

メジャー情報を追加して、標準のSDO_GEOMETRY線ストリングをLRSジオメトリ・セグメントに変換します。

パラメータ

standard_geom

メジャー情報を持たない線ストリング・ジオメトリを指定します。

dim_array

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

m_pos

メジャー次元の位置を指定します。この値には、常に3または4を指定します。デフォルトでは、メジャー次元はSDO_DIM_ARRAYの最後の次元です。

start_measure

ジオメトリ・セグメントの開始点から線形フィーチャの開始点までの距離を指定します。デフォルトは0です。

end_measure

ジオメトリ・セグメントの終了点から線形フィーチャの開始点までの距離を指定します。デフォルトは地図上の長さです(地図上の長さが75で、メジャー単位がマイルの場合は75です)。

使用上の注意

このファンクションは、メジャー情報を持つLRSジオメトリ・セグメントおよびすべての形状点のメジャー情報を戻します。

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

このファンクションは_3D形式(SDO_LRS.CONVERT_TO_LRS_GEOM_3D)が使用可能です。ただし、SDO_LRS.CONVERT_TO_LRS_GEOM_3Dでは、m_posパラメータを使用できません。LRSファンクションの_3D形式については、「LRSファンクションの3D形式」を参照してください。

変換ファンクションの詳細は、「LRSジオメトリの変換」を参照してください。

次の例では、ジオメトリ・セグメントRoute 1をLRSフォーマットに変換します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.CONVERT_TO_LRS_GEOM(a.route_geometry, m.diminfo)
  FROM lrs_routes a, user_sdo_geom_metadata m
  WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY'
    AND a.route_id = 1;

SDO_LRS.CONVERT_TO_LRS_GEOM(A.ROUTE_GEOMETRY,M.DIMINFO)(SDO_GTYPE, SDO_SRID, SDO
--------------------------------------------------------------------------------
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, NULL, 8, 10, 22, 5, 14, 27))

27.6 SDO_LRS.CONVERT_TO_LRS_LAYER

構文

SDO_LRS.CONVERT_TO_LRS_LAYER(
     table_name     IN VARCHAR2, 
     column_name    IN VARCHAR2 
     [, lower_bound IN NUMBER, 
     upper_bound    IN NUMBER, 
     tolerance      IN NUMBER] 
     ) RETURN VARCHAR2;

または

SDO_LRS.CONVERT_TO_LRS_LAYER(
     table_name     IN VARCHAR2, 
     column_name    IN VARCHAR2, 
     dim_name       IN VARCHAR2, 
     dim_pos        IN INTEGER 
     [, lower_bound IN NUMBER, 
     upper_bound    IN NUMBER, 
     tolerance      IN NUMBER] 
     ) RETURN VARCHAR2;

説明

SDO_GEOMETRY型の列のすべてのジオメトリ・オブジェクト(レイヤー)を、メジャー情報を持たない標準の線ストリング・ジオメトリからメジャー情報を持つLRSジオメトリ・セグメントに変換します。また、USER_SDO_GEOM_METADATAビューのメタデータを更新します。

パラメータ

table_name

SDO_GEOMETRYオブジェクトを持つ列を含む表を指定します。

column_name

SDO_GEOMETRYオブジェクトを含むtable_nameの列を指定します。

dim_name

メジャー次元の名前を指定します。このパラメータがNULLである場合、Mが使用されます。

dim_pos

指定されたSDO_GEOMETRY列のSDO_DIM_ARRAY構造内におけるメジャー次元の位置を指定します。このパラメータがNULLである場合、最後の位置に対応する数が使用されます。

lower_bound

メジャー次元の縦座標の下限(SDO_DIM_ELEMENT定義のSDO_LB値)を指定します。

upper_bound

メジャー次元の縦座標の上限(SDO_DIM_ELEMENT定義のSDO_UB値)を指定します。

tolerance

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

使用上の注意

このファンクションは、変換が正常に行われた場合、またはレイヤーがすでにメジャー情報を含む場合はTRUEを戻します。また、変換が失敗した場合は例外を戻します。

表の既存の次元情報が無効な場合は、例外が発生します。

メジャー値は、開始メジャー0(ゼロ)および地図上の長さを表す終了メジャーに基づいて割り当てられます。

column_nameにすでに空間索引が存在する場合、レイヤーの変換前にその索引を削除し、レイヤーの変換後に新しい索引を作成する必要があります。索引の削除および作成については、「空間データを索引付けするためのSQL文」に示すDROP INDEX文およびCREATE INDEX文の説明を参照してください。

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

変換ファンクションの詳細は、「LRSジオメトリの変換」を参照してください。

次の例では、LRS_ROUTES表のROUTE_GEOMETRY列のジオメトリ・セグメントをLRSフォーマットに変換します。(この例では、「LRSファンクションの例」の例の定義を使用します。)SELECT文は次元情報が追加されていることを示します(定義には、SDO_DIM_ELEMENT('M', NULL, NULL, NULL)が含まれます)。

BEGIN
  IF (SDO_LRS.CONVERT_TO_LRS_LAYER('LRS_ROUTES', 'ROUTE_GEOMETRY') =  'TRUE')
    THEN
      DBMS_OUTPUT.PUT_LINE('Conversion from STD_LAYER to LRS_LAYER succeeded.');
    ELSE
      DBMS_OUTPUT.PUT_LINE('Conversion from STD_LAYER to LRS_LAYER failed.');
  END IF;
END;
.
/
Conversion from STD_LAYER to LRS_LAYER succeeded.

PL/SQL procedure successfully completed.

SQL> SELECT diminfo FROM user_sdo_geom_metadata WHERE table_name = 'LRS_ROUTES' AND column_name = 'ROUTE_GEOMETRY';

DIMINFO(SDO_DIMNAME, SDO_LB, SDO_UB, SDO_TOLERANCE)                             
--------------------------------------------------------------------------------
SDO_DIM_ARRAY(SDO_DIM_ELEMENT('X', 0, 20, .005), SDO_DIM_ELEMENT('Y', 0, 20, .00
5), SDO_DIM_ELEMENT('M', NULL, NULL, NULL))

27.7 SDO_LRS.CONVERT_TO_STD_DIM_ARRAY

構文

SDO_LRS.CONVERT_TO_STD_DIM_ARRAY(
     dim_array IN SDO_DIM_ARRAY 
     [, m_pos  IN INTEGER] 
     ) RETURN SDO_DIM_ARRAY;

説明

メジャー次元を削除して、LRS次元配列を標準の次元配列に変換します。

パラメータ

dim_array

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

m_pos

メジャー次元の位置を指定します。この値には、常に3または4を指定します。デフォルトでは、メジャー次元はSDO_DIM_ARRAYの最後の次元です。

使用上の注意

このファンクションは、メジャー次元を削除して、LRS次元配列を標準の次元配列に変換します。具体的には、dim_arrayのSDO_DIM_ARRAYにある現行のSDO_DIM_ELEMENTオブジェクトの最後のSDO_DIM_ELEMENTオブジェクトを削除します。

m_posが無効な場合(3から4の範囲外の場合)、例外が発生します。

dim_arrayがすでに(次元情報を含まない)標準の次元配列である場合は、dim_arrayが戻されます。

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

変換ファンクションの詳細は、「LRSジオメトリの変換」を参照してください。

次の例では、LRS_ROUTES表の次元配列を標準フォーマットに変換します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.CONVERT_TO_STD_DIM_ARRAY(m.diminfo)
   FROM user_sdo_geom_metadata m
   WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY';

SDO_LRS.CONVERT_TO_STD_DIM_ARRAY(M.DIMINFO)(SDO_DIMNAME, SDO_LB, SDO_UB, SDO_TOL
--------------------------------------------------------------------------------
SDO_DIM_ARRAY(SDO_DIM_ELEMENT('X', 0, 20, .005), SDO_DIM_ELEMENT('Y', 0, 20, .00
5))

27.8 SDO_LRS.CONVERT_TO_STD_GEOM

構文

SDO_LRS.CONVERT_TO_STD_GEOM(
     lrs _geom    IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN SDO_GEOMETRY;

説明

メジャー情報を削除して、LRSジオメトリ・セグメントを標準のSDO_GEOMETRY線ストリングに変換します。

パラメータ

lrs_geom

メジャー情報を含むLRSジオメトリを指定します。

dim_array

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

使用上の注意

このファンクションは、すべてのメジャーの情報が削除されたSDO_GEOMETRYオブジェクトを戻します。

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

変換ファンクションの詳細は、「LRSジオメトリの変換」を参照してください。

次の例では、ジオメトリ・セグメントRoute 1を標準フォーマットに変換します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.CONVERT_TO_STD_GEOM(a.route_geometry, m.diminfo)
  FROM lrs_routes a, user_sdo_geom_metadata m
  WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY'
    AND a.route_id = 1;

SDO_LRS.CONVERT_TO_STD_GEOM(A.ROUTE_GEOMETRY,M.DIMINFO)(SDO_GTYPE, SDO_SRID, SDO
--------------------------------------------------------------------------------
SDO_GEOMETRY(2002, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(
2, 2, 2, 4, 8, 4, 12, 4, 12, 10, 8, 10, 5, 14))

27.9 SDO_LRS.CONVERT_TO_STD_LAYER

構文

SDO_LRS.CONVERT_TO_STD_LAYER(
     table_name  IN VARCHAR2, 
     column_name IN VARCHAR2 
     ) RETURN VARCHAR2;

説明

SDO_GEOMETRY型の列のすべてのジオメトリ・オブジェクト(レイヤー)を、メジャー情報を持つLRSジオメトリ・セグメントからメジャー情報を持たない標準の線ストリング・ジオメトリに変換します。また、USER_SDO_GEOM_METADATAビューのメタデータを更新します。

パラメータ

table_name

SDO_GEOMETRYオブジェクトを持つ列を含む表を指定します。

column_name

SDO_GEOMETRYオブジェクトを含むtable_nameの列を指定します。

使用上の注意

このファンクションは、変換が正常に行われた場合、またはレイヤーがすでに標準のレイヤー(メジャー情報を持たないジオメトリを含む)の場合はTRUEを戻します。また、変換が失敗した場合は例外を戻します。

column_nameにすでに空間索引が存在する場合、レイヤーの変換前にその索引を削除し、レイヤーの変換後に新しい索引を作成する必要があります。索引の削除および作成については、「空間データを索引付けするためのSQL文」に示すDROP INDEX文およびCREATE INDEX文の説明を参照してください。

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

変換ファンクションの詳細は、「LRSジオメトリの変換」を参照してください。

次の例では、LRS_ROUTES表のROUTE_GEOMETRY列のジオメトリ・セグメントを標準フォーマットに変換します。(この例では、「LRSファンクションの例」の例の定義を使用します。)SELECT文は次元情報が削除されたことを示します(定義には、SDO_DIM_ELEMENT('M', NULL, NULL, NULL)が含まれません)。

BEGIN
  IF (SDO_LRS.CONVERT_TO_STD_LAYER('LRS_ROUTES', 'ROUTE_GEOMETRY') =  'TRUE')
    THEN
      DBMS_OUTPUT.PUT_LINE('Conversion from LRS_LAYER to STD_LAYER succeeded.');
    ELSE
      DBMS_OUTPUT.PUT_LINE('Conversion from LRS_LAYER to STD_LAYER failed.');
  END IF;
END;
.
/
Conversion from LRS_LAYER to STD_LAYER succeeded.

PL/SQL procedure successfully completed.

SELECT diminfo FROM user_sdo_geom_metadata 
   WHERE table_name = 'LRS_ROUTES' AND column_name = 'ROUTE_GEOMETRY';

DIMINFO(SDO_DIMNAME, SDO_LB, SDO_UB, SDO_TOLERANCE)                             
--------------------------------------------------------------------------------
SDO_DIM_ARRAY(SDO_DIM_ELEMENT('X', 0, 20, .005), SDO_DIM_ELEMENT('Y', 0, 20, .00
5))   

27.10 SDO_LRS.DEFINE_GEOM_SEGMENT

構文

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

または

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

説明

ジオメトリ・セグメントに開始および終了メジャーを割り当てることによってジオメトリ・セグメントを定義し、NULLのメジャーに値を割り当てます。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

start_measure

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

end_measure

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

使用上の注意

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

ジオメトリ・セグメントの割り当てられていないすべてのメジャーは、自動的に移入されます。

結果のジオメトリ・セグメント(geom_segment)をデータベースに格納するには、UPDATE文またはINSERT文を適切に実行する必要があります。

このプロシージャは_3D 形式(SDO_LRS.DEFINE_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. This will populate any null measures.
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);

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

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

27.11 SDO_LRS.DYNAMIC_SEGMENT

構文

SDO_LRS.DYNAMIC_SEGMENT(
     geom_segment  IN SDO_GEOMETRY, 
     start_measure IN NUMBER, 
     end_measure   IN NUMBER, 
     tolerance     IN NUMBER DEFAULT 1.0e-8 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.DYNAMIC_SEGMENT(
     geom_segment  IN SDO_GEOMETRY, 
     dim_array     IN SDO_DIM_ARRAY, 
     start_measure IN NUMBER, 
     end_measure   IN NUMBER 
     ) RETURN SDO_GEOMETRY;

説明

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

注意:

SDO_LRS.CLIP_GEOM_SEGMENTおよびSDO_LRS.DYNAMIC_SEGMENTはシノニムであり、両方のファンクションのパラメータ、動作および戻り値は同じです。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

start_measure

ジオメトリ・セグメントの開始メジャーを指定します。

end_measure

ジオメトリ・セグメントの終了メジャーを指定します。

tolerance

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

使用上の注意

geom_segmentstart_measureまたはend_measureが無効な場合は例外が発生します。

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

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

次の例では、ジオメトリ・セグメントRoute 1をクリップして、メジャー5から10のセグメントを戻します。このセグメントは、建設区域を表します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT  SDO_LRS.DYNAMIC_SEGMENT(route_geometry, 5, 10)
  FROM lrs_routes WHERE route_id = 1;

SDO_LRS.DYNAMIC_SEGMENT(ROUTE_GEOMETRY,5,10)(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y
--------------------------------------------------------------------------------
SDO_GEOMETRY(3302, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(
5, 4, 5, 8, 4, 8, 10, 4, 10))

27.12 SDO_LRS.FIND_LRS_DIM_POS

構文

SDO_LRS.FIND_LRS_DIM_POS(
     table_name  IN VARCHAR2, 
     column_name IN VARCHAR2 
     ) RETURN INTEGER;

説明

指定されたSDO_GEOMETRY列のSDO_DIM_ARRAY構造内におけるメジャー次元の位置を戻します。

パラメータ

table_name

SDO_GEOMETRYオブジェクトを持つ列を含む表を指定します。

column_name

SDO_GEOMETRYオブジェクトを含むtable_nameの列を指定します。

使用上の注意

なし。

次の例では、LRS_ROUTES表のROUTE_GEOMETRY列のジオメトリについて、SDO_DIM_ARRAY構造内におけるメジャー次元の位置を戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.FIND_LRS_DIM_POS('LRS_ROUTES', 'ROUTE_GEOMETRY') FROM DUAL;

SDO_LRS.FIND_LRS_DIM_POS('LRS_ROUTES','ROUTE_GEOMETRY')
-------------------------------------------------------
                                                      3

27.13 SDO_LRS.FIND_MEASURE

構文

SDO_LRS.FIND_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     point        IN SDO_GEOMETRY 
     ) RETURN NUMBER;

または

SDO_LRS.FIND_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     point        IN SDO_GEOMETRY 
     ) RETURN NUMBER;

説明

指定した投影点に最も近いセグメント上の点のメジャーを戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

point

投影点を指定します。このファンクションは、投影点に最も近いgeom_segment上の点のメジャーを戻します。

使用上の注意

このファンクションは、投影点に最も近いgeom_segment上の点のメジャーを戻します。たとえば、投影点がショッピング・モールを表す場合、このファンクションは、高速道路の開始位置からショッピング・モールに最も近い高速道路上の地点までの距離を算出します。

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

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

次の例では、点(10, 7)に最も近いジオメトリ・セグメントRoute 1上の点のメジャーを検索します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

-- Find measure for point on segment closest to 10,7.
-- Should return 15 (for point 12,7).
SELECT  SDO_LRS.FIND_MEASURE(a.route_geometry, m.diminfo,
  SDO_GEOMETRY(3001, NULL, NULL, 
     SDO_ELEM_INFO_ARRAY(1, 1, 1), 
     SDO_ORDINATE_ARRAY(10, 7, NULL)) )
 FROM lrs_routes a, user_sdo_geom_metadata m
 WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY'
   AND a.route_id = 1;

SDO_LRS.FIND_MEASURE(A.ROUTE_GEOMETRY,M.DIMINFO,SDO_GEOMETRY(3001,NULL,NUL
--------------------------------------------------------------------------------
                                                                              15

27.14 SDO_LRS.FIND_OFFSET

構文

SDO_LRS.FIND_OFFSET(
     geom_segment IN SDO_GEOMETRY, 
     point        IN SDO_GEOMETRY, 
     tolerance    IN NUMBER DEFAULT 1.0e-8 
     ) RETURN NUMBER;

または

SDO_LRS.FIND_OFFSET(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     point        IN SDO_GEOMETRY 
     [, point_dim_array  IN SDO_GEOMETRY] 
     ) RETURN NUMBER;

説明

点とジオメトリ・セグメント間の符号付きオフセット(最短距離)を戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

point

geom_segmentからの最短距離が戻される点を指定します。

tolerance

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

dim_array

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

point_dim_array

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

使用上の注意

このファンクションは、offset出力パラメータを指定したSDO_LRS.PROJECT_PTファンクション形式をコールします。ジオメトリ・セグメントおよび点情報を渡し、SDO_LRS.PROJECT_PT offsetパラメータ値を戻します。このため、ジオメトリ・セグメントからの点のオフセットを調べるには、このファンクションまたはoffsetパラメータを指定したSDO_LRS.PROJECT_PTファンクションを使用できます。

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

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

次の例では、点(9,3,NULL)の、ジオメトリ・セグメントRoute 1からのオフセットを戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)「LRSファンクションの例」に示すとおり、点(9,3,NULL)はセグメントの右側にあるため、オフセットには負の値が含まれます(「オフセット」を参照)。点(9,3.NULL)は、セグメント上にある点(9,4,NULL)から1距離単位離れています。

-- Find the offset of point (9,3,NULL) from the road; should return -1.
SELECT  SDO_LRS.FIND_OFFSET(route_geometry, 
  SDO_GEOMETRY(3301, NULL, NULL, 
     SDO_ELEM_INFO_ARRAY(1, 1, 1), 
     SDO_ORDINATE_ARRAY(9, 3, NULL)) )
  FROM lrs_routes WHERE route_id = 1;

SDO_LRS.FIND_OFFSET(ROUTE_GEOMETRY,SDO_GEOMETRY(3301,NULL,NULL,SDO_ELEM_INFO_ARR
--------------------------------------------------------------------------------
                                                                              -1

27.15 SDO_LRS.GEOM_SEGMENT_END_MEASURE

構文

SDO_LRS.GEOM_SEGMENT_END_MEASURE(
     geom_segment IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN NUMBER;

説明

ジオメトリ・セグメントの終了メジャーを戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

使用上の注意

このファンクションは、geom_segmentの終了メジャーを戻します。

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

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

次の例では、ジオメトリ・セグメントRoute 1の終了メジャーを戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT  SDO_LRS.GEOM_SEGMENT_END_MEASURE(route_geometry)
  FROM lrs_routes WHERE route_id = 1;

SDO_LRS.GEOM_SEGMENT_END_MEASURE(ROUTE_GEOMETRY)                                
------------------------------------------------                                
                                              27

27.16 SDO_LRS.GEOM_SEGMENT_END_PT

構文

SDO_LRS.GEOM_SEGMENT_END_PT(
     geom_segment IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN SDO_GEOMETRY;

説明

ジオメトリ・セグメントの終了点を戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

使用上の注意

このファンクションは、geom_segmentの終了点を戻します。

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

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

次の例では、ジオメトリ・セグメントRoute 1の終了点を戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT  SDO_LRS.GEOM_SEGMENT_END_PT(route_geometry)
  FROM lrs_routes WHERE route_id = 1;

SDO_LRS.GEOM_SEGMENT_END_PT(ROUTE_GEOMETRY)(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y,
--------------------------------------------------------------------------------
SDO_GEOMETRY(3301, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 1), SDO_ORDINATE_ARRAY(
5, 14, 27))

27.17 SDO_LRS.GEOM_SEGMENT_LENGTH

構文

SDO_LRS.GEOM_SEGMENT_LENGTH(
     geom_segment IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN NUMBER;

説明

ジオメトリ・セグメントの長さを戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

使用上の注意

このファンクションは、geom_segmentの長さを戻します。長さはジオメトリの長さで、メジャー単位値の合計とは異なります。メジャー単位でのセグメントの長さを測るには、SDO_LRS.GEOM_SEGMENT_END_MEASURE操作の結果からSDO_LRS.GEOM_SEGMENT_START_MEASURE操作の結果を引きます。

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

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

次の例では、ジオメトリ・セグメントRoute 1の長さを戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT  SDO_LRS.GEOM_SEGMENT_LENGTH(route_geometry)
  FROM lrs_routes WHERE route_id = 1;

SDO_LRS.GEOM_SEGMENT_LENGTH(ROUTE_GEOMETRY)                                     
-------------------------------------------                                     
                                         27

27.18 SDO_LRS.GEOM_SEGMENT_START_MEASURE

構文

SDO_LRS.GEOM_SEGMENT_START_MEASURE(
     geom_segment IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN NUMBER;

説明

ジオメトリ・セグメントの開始メジャーを戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

使用上の注意

このファンクションは、geom_segmentの開始メジャーを戻します。

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

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

次の例では、ジオメトリ・セグメントRoute 1の開始メジャーを戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT  SDO_LRS.GEOM_SEGMENT_START_MEASURE(route_geometry)
  FROM lrs_routes WHERE route_id = 1;

SDO_LRS.GEOM_SEGMENT_START_MEASURE(ROUTE_GEOMETRY)                              
--------------------------------------------------                              
                                                 0

27.19 SDO_LRS.GEOM_SEGMENT_START_PT

構文

SDO_LRS.GEOM_SEGMENT_START_PT(
     geom_segment IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN SDO_GEOMETRY;

説明

ジオメトリ・セグメントの開始点を戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

使用上の注意

このファンクションは、geom_segmentの開始点を戻します。

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

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

次の例では、ジオメトリ・セグメントRoute 1の開始点を戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT  SDO_LRS.GEOM_SEGMENT_START_PT(route_geometry)
  FROM lrs_routes WHERE route_id = 1;

SDO_LRS.GEOM_SEGMENT_START_PT(ROUTE_GEOMETRY)(SDO_GTYPE, SDO_SRID, SDO_POINT(X, 
--------------------------------------------------------------------------------
SDO_GEOMETRY(3301, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 1), SDO_ORDINATE_ARRAY(
2, 2, 0))

27.20 SDO_LRS.GET_MEASURE

構文

SDO_LRS.GET_MEASURE(
     point        IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN NUMBER;

説明

LRS点のメジャーを戻します。

パラメータ

point

メジャーを戻す点を指定します。

dim_array

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

使用上の注意

このファンクションは、LRS点のメジャーを戻します。

pointが無効な場合、「invalid LRS point」例外が発生します。

このファンクションをSDO_LRS.PROJECT_PTと比較すると、このファンクションは、ジオメトリ・セグメント上にあるとはかぎらない点でも入力値として受け入れますが、戻すのはメジャー値ではなく、ジオメトリ・セグメント上の点です。SDO_LRS.GET_MEASUREファンクションを使用して、SDO_LRS.PROJECT_PTによって戻される投影点のメジャーを戻す例を次に示します。

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

次の例では、投影点のメジャーを戻します。この場合、投影の結果できる点はセグメントの開始位置から9単位です。

SELECT SDO_LRS.GET_MEASURE(
   SDO_LRS.PROJECT_PT(a.route_geometry, m.diminfo,
    SDO_GEOMETRY(3001, NULL, NULL,
       SDO_ELEM_INFO_ARRAY(1, 1, 1),
       SDO_ORDINATE_ARRAY(9, 3, NULL)) ),
   m.diminfo )
   FROM lrs_routes a, user_sdo_geom_metadata m
   WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY'
       AND a.route_id = 1;

SDO_LRS.GET_MEASURE(SDO_LRS.PROJECT_PT(A.ROUTE_GEOMETRY,M.DIMINFO,SDO_GEOM
--------------------------------------------------------------------------------
                                                                               9

27.21 SDO_LRS.GET_NEXT_SHAPE_PT

構文

SDO_LRS.GET_NEXT_SHAPE_PT(
     geom_segment IN SDO_GEOMETRY, 
     measure      IN NUMBER 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.GET_NEXT_SHAPE_PT(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     measure      IN NUMBER 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.GET_NEXT_SHAPE_PT(
     geom_segment IN SDO_GEOMETRY, 
     point        IN SDO_GEOMETRY 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.GET_NEXT_SHAPE_PT(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     point        IN SDO_GEOMETRY 
     ) RETURN SDO_GEOMETRY;

説明

ジオメトリ・セグメント上の指定したメジャー値またはLRS点の次の形状点を戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

measure

ジオメトリ・セグメント上の次の形状点を戻すメジャー値を指定します。

point

次の形状点を戻す点を指定します。pointgeom_segment上にない場合、指定した点に最も近いジオメトリ・セグメント上の点が計算され、その点の次の形状点が戻されます。

dim_array

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

使用上の注意

measureまたはpointにジオメトリ・セグメントの終了点を指定した場合、NULL値が戻されます。

measuregeom_segmentに有効な値ではない場合、またはpointが有効なLRS点ではない場合、例外が発生します。

このファンクションは、ジオメトリ・セグメント上の指定したメジャー値またはLRS点の前の形状点を戻すSDO_LRS.GET_PREV_SHAPE_PTと対照的です。

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

次の例では、ジオメトリ・セグメントRoute 1上のメジャー14の次にある形状点を戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.GET_NEXT_SHAPE_PT(a.route_geometry, 14)
   FROM lrs_routes a WHERE a.route_id = 1;

SDO_LRS.GET_NEXT_SHAPE_PT(A.ROUTE_GEOMETRY,14)(SDO_GTYPE, SDO_SRID, SDO_POINT(X,
--------------------------------------------------------------------------------
SDO_GEOMETRY(3301, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 1), SDO_ORDINATE_ARRAY(
12, 10, 18)) 

27.22 SDO_LRS.GET_NEXT_SHAPE_PT_MEASURE

構文

SDO_LRS.GET_NEXT_SHAPE_PT_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     measure      IN NUMBER 
     ) RETURN NUMBER;

または

SDO_LRS.GET_NEXT_SHAPE_PT_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     measure      IN NUMBER 
     ) RETURN NUMBER;

または

SDO_LRS.GET_NEXT_SHAPE_PT_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     point        IN SDO_GEOMETRY 
     ) RETURN NUMBER;

または

SDO_LRS.GET_NEXT_SHAPE_PT_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     point        IN SDO_GEOMETRY 
     ) RETURN NUMBER;

説明

ジオメトリ・セグメント上の指定したメジャー値またはLRS点の次の形状点のメジャー値を戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

measure

ジオメトリ・セグメント上の次の形状点のメジャー値を戻すメジャー値を指定します。

point

次の形状点のメジャー値を戻す点を指定します。pointgeom_segment上にない場合、指定した点に最も近いジオメトリ・セグメント上の点が計算され、その点の次の形状点のメジャー値が戻されます。

dim_array

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

使用上の注意

measureまたはpointにジオメトリ・セグメントの終了点を指定した場合、NULL値が戻されます。

measuregeom_segmentに有効な値ではない場合、またはpointが有効なLRS点ではない場合、例外が発生します。

このファンクションは、ジオメトリ・セグメント上の指定したメジャー値またはLRS点の前の形状点のメジャー値を戻すSDO_LRS.GET_PREV_SHAPE_PT_MEASUREと対照的です。

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

次の例では、ジオメトリ・セグメントRoute 1上のメジャー14の次にある形状点のメジャー値を戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.GET_NEXT_SHAPE_PT_MEASURE(a.route_geometry, 14)
   FROM lrs_routes a WHERE a.route_id = 1;

SDO_LRS.GET_NEXT_SHAPE_PT_MEASURE(A.ROUTE_GEOMETRY,14)                          
------------------------------------------------------                          
                                                    18 

27.23 SDO_LRS.GET_PREV_SHAPE_PT

構文

SDO_LRS.GET_PREV_SHAPE_PT(
     geom_segment IN SDO_GEOMETRY, 
     measure      IN NUMBER 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.GET_PREV_SHAPE_PT(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     measure      IN NUMBER 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.GET_PREV_SHAPE_PT(
     geom_segment IN SDO_GEOMETRY, 
     point        IN SDO_GEOMETRY 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.GET_PREV_SHAPE_PT(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     point        IN SDO_GEOMETRY 
     ) RETURN SDO_GEOMETRY;

説明

ジオメトリ・セグメント上の指定したメジャー値またはLRS点の前の形状点を戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

measure

ジオメトリ・セグメント上の前の形状点を戻すメジャー値を指定します。

point

前の形状点を戻す点を指定します。pointgeom_segment上にない場合、指定した点に最も近いジオメトリ・セグメント上の点が計算され、その点の前で最も近い形状点が戻されます。

dim_array

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

使用上の注意

measureまたはpointにジオメトリ・セグメントの開始点を指定した場合、NULL値が戻されます。

measuregeom_segmentに有効な値ではない場合、またはpointが有効なLRS点ではない場合、例外が発生します。

このファンクションは、ジオメトリ・セグメント上の指定したメジャー値またはLRS点の次の形状点を戻すSDO_LRS.GET_NEXT_SHAPE_PTと対照的です。

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

次の例では、ジオメトリ・セグメントRoute 1上のメジャー14の前にあり、メジャー14に最も近い形状点を戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.GET_PREV_SHAPE_PT(a.route_geometry, 14)
   FROM lrs_routes a WHERE a.route_id = 1;

SDO_LRS.GET_PREV_SHAPE_PT(A.ROUTE_GEOMETRY,14)(SDO_GTYPE, SDO_SRID, SDO_POINT(X,
--------------------------------------------------------------------------------
SDO_GEOMETRY(3301, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 1), SDO_ORDINATE_ARRAY(
12, 4, 12)) 

27.24 SDO_LRS.GET_PREV_SHAPE_PT_MEASURE

構文

SDO_LRS.GET_PREV_SHAPE_PT_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     measure      IN NUMBER 
     ) RETURN NUMBER;

または

SDO_LRS.GET_PREV_SHAPE_PT_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     measure      IN NUMBER 
     ) RETURN NUMBER;

または

SDO_LRS.GET_PREV_SHAPE_PT_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     point        IN SDO_GEOMETRY 
     ) RETURN NUMBER;

または

SDO_LRS.GET_PREV_SHAPE_PT_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     point        IN SDO_GEOMETRY 
     ) RETURN NUMBER;

説明

ジオメトリ・セグメント上の指定したメジャー値またはLRS点の前の形状点のメジャー値を戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

measure

ジオメトリ・セグメント上の前の形状点のメジャー値を戻すメジャー値を指定します。

point

前の形状点のメジャー値を戻す点を指定します。pointgeom_segment上にない場合、指定した点に最も近いジオメトリ・セグメント上の点が計算され、その点の前で最も近い形状点のメジャー値が戻されます。

dim_array

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

使用上の注意

measureまたはpointにジオメトリ・セグメントの開始点を指定した場合、NULL値が戻されます。

measuregeom_segmentに有効な値ではない場合、またはpointが有効なLRS点ではない場合、例外が発生します。

このファンクションは、ジオメトリ・セグメント上の指定したメジャー値またはLRS点の次の形状点のメジャー値を戻すSDO_LRS.GET_NEXT_SHAPE_PT_MEASUREと対照的です。

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

次の例では、ジオメトリ・セグメントRoute 1上のメジャー14の前にあり、メジャー14に最も近い形状点のメジャー値を戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.GET_PREV_SHAPE_PT_MEASURE(a.route_geometry, 14)
   FROM lrs_routes a WHERE a.route_id = 1;

SDO_LRS.GET_PREV_SHAPE_PT_MEASURE(A.ROUTE_GEOMETRY,14)                          
------------------------------------------------------                          
                                                    12

27.25 SDO_LRS.IS_GEOM_SEGMENT_DEFINED

構文

SDO_LRS.IS_GEOM_SEGMENT_DEFINED(
     geom_segment IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN VARCHAR2;

説明

LRSセグメントが正しく定義されているかどうかを確認します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

使用上の注意

このファンクションは、geom_segmentが正しく定義されている場合は、TRUEを戻します。また、geom_segmentが正しく定義されていない場合は、FALSEを戻します。

geom_segmentの開始および終了メジャーが定義されている必要があります(NULLは定義できません)。また、割り当てられたすべてのメジャーは、セグメントの方向に昇順または降順である必要があります。

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

SDO_LRS.VALID_GEOM_SEGMENTファンクションを参照してください。

次の例では、ジオメトリ・セグメントRoute 1が定義されているかどうかを確認します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT  SDO_LRS.IS_GEOM_SEGMENT_DEFINED(route_geometry)
  FROM lrs_routes WHERE route_id = 1;

SDO_LRS.IS_GEOM_SEGMENT_DEFINED(ROUTE_GEOMETRY)                                 
--------------------------------------------------------------------------------
TRUE

27.26 SDO_LRS.IS_MEASURE_DECREASING

構文

SDO_LRS.IS_MEASURE_DECREASING(
     geom_segment IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN VARCHAR2;

説明

メジャー値がLRSセグメントの方向に降順である(数値が減少している)かどうかを確認します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

使用上の注意

このファンクションは、メジャー値がLRSセグメントの方向に降順である場合はTRUE、そうでない場合はFALSEを戻します。

geom_segmentの開始および終了メジャーが定義されている必要があります(NULLは定義できません)。

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

SDO_LRS.IS_MEASURE_INCREASINGファンクションを参照してください。

次の例では、メジャー値がジオメトリ・セグメントRoute 1の方向に降順であるかどうかを確認します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.IS_MEASURE_DECREASING(a.route_geometry, m.diminfo)
   FROM lrs_routes a, user_sdo_geom_metadata m
   WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY'
   AND a.route_id = 1;

SDO_LRS.IS_MEASURE_DECREASING(A.ROUTE_GEOMETRY,M.DIMINFO)                       
--------------------------------------------------------------------------------
FALSE

27.27 SDO_LRS.IS_MEASURE_INCREASING

構文

SDO_LRS.IS_MEASURE_INCREASING(
     geom_segment IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN VARCHAR2;

説明

メジャー値がLRSセグメントの方向に昇順である(数値が増加している)かどうかを確認します。

パラメータ

geom_segment
メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。
dim_array

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

使用上の注意

このファンクションは、メジャー値がLRSセグメントの方向に昇順である場合はTRUE、そうでない場合はFALSEを戻します。

geom_segmentの開始および終了メジャーが定義されている必要があります(NULLは定義できません)。

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

SDO_LRS.IS_MEASURE_DECREASINGファンクションを参照してください。

次の例では、メジャー値がジオメトリ・セグメントRoute 1の方向に昇順であるかどうかを確認します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.IS_MEASURE_INCREASING(a.route_geometry, m.diminfo)
   FROM lrs_routes a, user_sdo_geom_metadata m
   WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY'
   AND a.route_id = 1;

SDO_LRS.IS_MEASURE_INCREASING(A.ROUTE_GEOMETRY,M.DIMINFO)                       
--------------------------------------------------------------------------------
TRUE

27.28 SDO_LRS.IS_SHAPE_PT_MEASURE

構文

SDO_LRS.IS_SHAPE_PT_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     measure      IN NUMBER 
     ) RETURN VARCHAR2;

または

SDO_LRS.IS_SHAPE_PT_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     measure      IN NUMBER 
     ) RETURN VARCHAR2;

説明

指定したメジャー値がジオメトリ・セグメント上の形状点に関連付けられているかどうかを確認します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

measure

形状点であるかどうかを確認するジオメトリ・セグメント上のメジャー値を指定します。

dim_array

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

使用上の注意

このファンクションは、指定したメジャー値が形状点に関連付けられている場合はTRUEを戻します。また、メジャー値が形状点に関連付けられていいない場合はFALSEを戻します。

measuregeom_segmentに有効な値ではない場合は、例外が発生します。

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

次の例では、ジオメトリ・セグメントRoute 1上のメジャー14が形状点であるかどうかを確認します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.IS_SHAPE_PT_MEASURE(a.route_geometry, 14)
  FROM lrs_routes a WHERE a.route_id = 1;
 
SDO_LRS.IS_SHAPE_PT_MEASURE(A.ROUTE_GEOMETRY,14)                                
--------------------------------------------------------------------------------
FALSE

27.29 SDO_LRS.LOCATE_PT

構文

SDO_LRS.LOCATE_PT(
     geom_segment IN SDO_GEOMETRY, 
     measure      IN NUMBER 
     [, offset    IN NUMBER] 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.LOCATE_PT(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     measure      IN NUMBER 
     [, offset    IN NUMBER] 
     ) RETURN SDO_GEOMETRY;

説明

ジオメトリ・セグメントの開始位置から指定した距離にある点を戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

measure

geom_segmentの開始点からメジャーまでの距離を指定します。

offset

geom_segmentの開始点からmeasure単位にある点からメジャーまでの垂直距離を指定します。デフォルト値は 0(ゼロ)です(点はgeom_segment上にあります)。

使用上の注意

このファンクションは、参照点を戻します。たとえば、高速道路では、点で事故現場を表すために使用します。

offsetの測定単位は、geom_segmentに関連付けられた座標系の測定単位と同じです。測地データの場合、デフォルトの測定単位はmです。

WGS 84座標系を使用する測地データでは、このファンクションを使用して、点の経度および緯度座標またはセグメントからのオフセットを戻すことができます。

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

このファンクションは_3D形式(SDO_LRS.LOCATE_PT_3D)が使用可能です。ただし、SDO_LRS.LOCATE_PT_3Dでは、offsetパラメータを使用できません。LRSファンクションの_3D形式については、「LRSファンクションの3D形式」を参照してください。

ジオメトリ・セグメント上の点の位置の確認については、「ジオメトリ・セグメント上の点の位置の確認」を参照してください。

次の例では、自動車事故データの表を作成し、メジャーが9でジオメトリ・セグメントRoute 1上に存在する点(オフセット0(ゼロ))における事故の記録を挿入して、そのデータを表示します。(事故の表は、意図的に単純化されています。例では、「LRSファンクションの例」の例のルート定義を使用しています。)

-- Create a table for accidents.
CREATE TABLE accidents (
  accident_id  NUMBER PRIMARY KEY,
  route_id  NUMBER,
  accident_geometry  SDO_GEOMETRY);
 
-- Insert an accident record.
DECLARE
geom_segment SDO_GEOMETRY;
 
BEGIN
 
SELECT  SDO_LRS.LOCATE_PT(a.route_geometry, 9, 0) into geom_segment
  FROM lrs_routes a WHERE a.route_name = 'Route1';
 
INSERT INTO accidents VALUES(1, 1, geom_segment);
 
END;
/
 
SELECT * from accidents;
 
ACCIDENT_ID   ROUTE_ID                                                          
----------- ----------                                                          
ACCIDENT_GEOMETRY(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_OR
--------------------------------------------------------------------------------
          1          1                                                          
SDO_GEOMETRY(3301, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 1), SDO_ORDINATE_ARRAY(
9, 4, 9))

27.30 SDO_LRS.LRS_INTERSECTION

構文

SDO_LRS.LRS_INTERSECTION(
     geom_1      IN SDO_GEOMETRY, 
     dim_array_1 IN SDO_DIM_ARRAY, 
     geom_2      IN SDO_GEOMETRY, 
     dim_array_2 IN SDO_DIM_ARRAY  
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.LRS_INTERSECTION(
     geom_1    IN SDO_GEOMETRY, 
     geom_2    IN SDO_GEOMETRY, 
     tolerance IN NUMBER  
     ) RETURN SDO_GEOMETRY;

説明

いずれか、または両方がLRSジオメトリである2つのジオメトリ・オブジェクトで位相的に共通部分(AND演算)となるLRSジオメトリ・オブジェクトを戻します。

パラメータ

geom_1

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

dim_array_1

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

geom_2

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

dim_array_2

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

tolerance

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

使用上の注意

このファンクションは、基本的にSDO_GEOM.SDO_INTERSECTIONファンクションと同じ共通部分の操作を実行します(「SDO_GEOMパッケージ(ジオメトリ)」を参照)。ただし、SDO_LRS.LRS_INTERSECTIONは、ジオメトリ関連の入力パラメータのいずれか、または両方がLRSジオメトリであるような、有効なLRSジオメトリ(点、線ストリングまたは複合線ストリング)を戻すように設計されています。(いずれの入力ジオメトリもLRSジオメトリではない場合、このファンクションは、SDO_GEOM.SDO_INTERSECTIONファンクションと同じように機能します。)

戻されるジオメトリは、LRS線ストリング、複数線ストリングまたは点ジオメトリであり、これにはメジャー次元情報が含まれます。メジャー値には、入力パラメータとして指定された1つ目のLRSジオメトリの値が反映されます。

入力パラメータとして指定される1つ目のLRSジオメトリは、ポリゴンではなく、線ストリング、複数線ストリングまたは点である必要があります。

LRS線ストリング(ジオメトリ・セグメント)が線ストリング(LRSまたは標準)と交差している場合、その結果はLRS点になります。LRS線ストリングがポリゴンと交差している場合、その結果はLRS線ストリングになります。

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

次の例は、(8,2)から(8,6)への垂直線が交差するLRSジオメトリ・セグメント(「LRSファンクションの例」図7-20を参照)を示しています。結果は、LRS点ジオメトリであり、メジャー値(8)は、geom_1ジオメトリにおけるその点(図7-20のExit 3として指定されている)のメジャーを反映しています。(この例では、「LRSファンクションの例」の例の定義を使用します。)

-- Intersection of LRS segment and standard line segment
SELECT SDO_LRS.LRS_INTERSECTION(route_geometry,
  SDO_GEOMETRY(2002, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,2,1),
    SDO_ORDINATE_ARRAY(8,2, 8,6)), 0.005)
  FROM lrs_routes WHERE route_id = 1;
 
SDO_LRS.LRS_INTERSECTION(ROUTE_GEOMETRY,SDO_GEOMETRY(2002,NULL,NULL,SDO_ELEM_INF
--------------------------------------------------------------------------------
SDO_GEOMETRY(3301, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 1), SDO_ORDINATE_ARRAY(
8, 4, 8))

次の例は、(12,2)から(12,6)への垂直線が交差するLRSジオメトリ・セグメント(「LRSファンクションの例」図7-20を参照)を示しています。結果は、LRS線ストリング・ジオメトリであり、メジャー値(12および14)は、geom_1ジオメトリにおける点(その1つ目の点は図7-20のExit 4として指定されている)のメジャーを反映しています。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.LRS_INTERSECTION(route_geometry,
  SDO_GEOMETRY(2002, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,2,1),
   SDO_ORDINATE_ARRAY(12,2, 12,6)), 0.005)
  FROM lrs_routes WHERE route_id = 1;
 
SDO_LRS.LRS_INTERSECTION(ROUTE_GEOMETRY,SDO_GEOMETRY(2002,NULL,NULL,SDO_ELEM_INF
--------------------------------------------------------------------------------
SDO_GEOMETRY(3302, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(
12, 4, 12, 12, 6, 14))

27.31 SDO_LRS.MEASURE_RANGE

構文

SDO_LRS.MEASURE_RANGE(
     geom_segment IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN NUMBER;

説明

ジオメトリ・セグメントのメジャー範囲(開始メジャーと終了メジャーの差)を戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

使用上の注意

このファンクションは、geom_segmentの終了メジャーからgeom_segmentの開始メジャーを引きます。

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

次の例では、ジオメトリ・セグメントRoute 1のメジャー範囲を戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.MEASURE_RANGE(route_geometry)
  FROM lrs_routes WHERE route_id = 1;

SDO_LRS.MEASURE_RANGE(ROUTE_GEOMETRY)                                           
-------------------------------------                                           
                                   27

27.32 SDO_LRS.MEASURE_TO_PERCENTAGE

構文

SDO_LRS.MEASURE_TO_PERCENTAGE(
     geom_segment IN SDO_GEOMETRY, 
     measure      IN NUMBER 
     ) RETURN NUMBER;

または

SDO_LRS.MEASURE_TO_PERCENTAGE(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     measure      IN NUMBER 
     ) RETURN NUMBER;

説明

ジオメトリ・セグメントのメジャー範囲に対する指定したメジャーの割合(0から100%)を戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

measure

メジャー値を指定します。このファンクションは、メジャー範囲に対するメジャー値の割合を戻します。

使用上の注意

このファンクションは、指定したメジャーが表すメジャー範囲に対する割合を、0から100の数字で戻します。(メジャー範囲は終了メジャーから開始メジャーを引いた値です。)たとえば、geom_segmentのメジャー範囲が50でmeasureが20の場合、ファンクションは40を戻します(20/50 = 40%)。

このファンクションは、割合の値に対応するメジャーを戻すSDO_LRS.PERCENTAGE_TO_MEASUREファンクションとは逆に動作します。

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

次の例では、ジオメトリ・セグメントRoute 1のメジャー範囲に対する5の割合を戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)このセグメントのメジャー範囲は27で、5は27の約18.5%です。

SELECT SDO_LRS.MEASURE_TO_PERCENTAGE(a.route_geometry, m.diminfo, 5)
  FROM lrs_routes a, user_sdo_geom_metadata m
  WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY'
    AND a.route_id = 1;

SDO_LRS.MEASURE_TO_PERCENTAGE(A.ROUTE_GEOMETRY,M.DIMINFO,5)                     
-----------------------------------------------------------                     
                                                 18.5185185

27.33 SDO_LRS.OFFSET_GEOM_SEGMENT

構文

SDO_LRS.OFFSET_GEOM_SEGMENT(
     geom_segment  IN SDO_GEOMETRY, 
     start_measure IN NUMBER, 
     end_measure   IN NUMBER, 
     offset        IN NUMBER, 
     tolerance     IN NUMBER DEFAULT 1.0e-8 
     [, unit       IN VARCHAR2] 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.OFFSET_GEOM_SEGMENT(
     geom_segment  IN SDO_GEOMETRY, 
     dim_array     IN SDO_DIM_ARRAY, 
     start_measure IN NUMBER, 
     end_measure   IN NUMBER, 
     offset        IN NUMBER 
     [, unit       IN VARCHAR2] 
     ) RETURN SDO_GEOMETRY;

説明

ジオメトリ・セグメントから指定したオフセットにあるジオメトリ・セグメントを戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

start_measure

オフセットの操作を開始するgeom_segmentの開始メジャーを指定します。

end_measure

オフセットの操作を開始するgeom_segmentの終了メジャーを指定します。

offset

geom_segmentに沿った点からメジャーまでの垂直距離を指定します。正のオフセット値はgeom_segmentの左側、負のオフセット値はgeom_segmentの右側です。

tolerance

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

unit

測定単位(次のキーワードの1つまたは両方を含む、引用符で囲まれた文字列)を指定します。

例: 'unit=km arc_tolerance=0.05'

入力ジオメトリが測地データの場合、このパラメータは必須です。また、arc_toleranceも指定する必要があります。入力ジオメトリがデカルト・データまたは投影データである場合、arc_toleranceは無効になるため、指定する必要はありません。

デカルト・ジオメトリまたは投影ジオメトリにこのパラメータが指定されていない場合、または測地ジオメトリに対してarc_toleranceキーワードが指定されているにもかかわらずunitキーワードが指定されていない場合、データに関連付けられている測定単位が使用されます。

使用上の注意

ジオメトリ・セグメント上の任意の点を、start_measureおよびend_measureに指定できます。これらの点は、特定の順序に従う必要はありません。たとえば、start_measureend_measureは、5と10、または10と5に指定できます。

結果のジオメトリ・セグメントの方向およびメジャーは保持されます(元のセグメントが反映されます)。

geom_segmentのジオメトリ・タイプは、単一または複数の線である必要があります。たとえば、ポリゴンは指定できません。

geom_segmentstart_measureまたはend_measureが無効な場合は例外が発生します。

次の例では、Route1のメジャー5から10のセグメントから左に2距離単位(正のオフセット2)の位置にあるジオメトリ・セグメントを戻します。戻されたセグメントのSDO_ORDINATE_ARRAYでは、Y値(6)が元のセグメントの該当する部分のY値(4)よりも2大きいことに注意してください。(この例では、「LRSファンクションの例」の例の定義を使用します。)

-- Create a segment offset 2 to the left from measures 5 through 10.
-- First, display the original segment; then, offset.
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))        
                                                                                
SELECT  SDO_LRS.OFFSET_GEOM_SEGMENT(a.route_geometry, m.diminfo, 5, 10, 2)
    FROM lrs_routes a, user_sdo_geom_metadata m
    WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY'
      AND a.route_id = 1;

SDO_LRS.OFFSET_GEOM_SEGMENT(A.ROUTE_GEOMETRY,M.DIMINFO,5,10,2)(SDO_GTYPE, SDO_SR
--------------------------------------------------------------------------------
SDO_GEOMETRY(3302, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(
5, 6, 5, 10, 6, 10))

27.34 SDO_LRS.PERCENTAGE_TO_MEASURE

構文

SDO_LRS.PERCENTAGE_TO_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     percentage   IN NUMBER 
     ) RETURN NUMBER;

または

SDO_LRS.PERCENTAGE_TO_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     percentage   IN NUMBER 
     ) RETURN NUMBER;

説明

ジオメトリ・セグメントのメジャー範囲に対する、指定した割合(0から100%)のメジャー値を戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

percentage

割合の値を指定します。0から100の範囲で指定する必要があります。このファンクションは、このメジャー範囲の割合に対応するメジャー値を戻します。

使用上の注意

このファンクションは、このメジャー範囲の指定した割合に対応するメジャー値を戻します。(メジャー範囲は終了メジャーから開始メジャーを引いた値です。)たとえば、geom_segmentのメジャー範囲が50でpercentageが40の場合、ファンクションは20を戻します(50の40%は20)。

このファンクションは、メジャーに対応する割合の値を戻すSDO_LRS.MEASURE_TO_PERCENTAGEファンクションとは逆に動作します。

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

次の例では、ジオメトリ・セグメントRoute 1のメジャー範囲に対する50%のメジャーを戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)このセグメントのメジャー範囲は27で、27の50%は13.5です。

SELECT SDO_LRS.PERCENTAGE_TO_MEASURE(a.route_geometry, m.diminfo, 50)
  FROM lrs_routes a, user_sdo_geom_metadata m
  WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY'
    AND a.route_id = 1;

SDO_LRS.PERCENTAGE_TO_MEASURE(A.ROUTE_GEOMETRY,M.DIMINFO,50)                    
------------------------------------------------------------                    
                                                        13.5

27.35 SDO_LRS.PROJECT_PT

構文

SDO_LRS.PROJECT_PT(
     geom_segment IN SDO_GEOMETRY, 
     point        IN SDO_GEOMETRY, 
     tolerance    IN NUMBER DEFAULT 1.0e-8 
     [, offset    OUT NUMBER] 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.PROJECT_PT(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     point        IN SDO_GEOMETRY 
     [, point_dim_array IN SDO_DIM_ARRAY] 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.PROJECT_PT(
     geom_segment    IN SDO_GEOMETRY, 
     dim_array       IN SDO_DIM_ARRAY, 
     point           IN SDO_GEOMETRY, 
     point_dim_array IN SDO_DIM_ARRAY 
     [, offset       OUT NUMBER] 
     ) RETURN SDO_GEOMETRY;

説明

指定した点の投影点を戻します。投影点はジオメトリ・セグメント上にあります。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

point

投影するgeom_segment上の点。

tolerance

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

point_dim_array

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

offset

点からジオメトリ・セグメントまでのオフセット(最短距離)を指定します。

使用上の注意

このファンクションは、指定した点(point)の投影点(メジャーを含む)を戻します。投影点はジオメトリ・セグメント上にあります。

複数の投影点が存在する場合は、開始点に最も近い投影点が戻されます。

出力パラメータoffsetを指定した場合、このファンクションによって、点とジオメトリ・セグメント間の符号付きオフセット(最短距離)が格納されます。ジオメトリ・セグメントへのオフセットについては、「オフセット」を参照してください。

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

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

ジオメトリ・セグメントへの点の投影については、「ジオメトリ・セグメント上の点の投影」を参照してください。

次の例では、指定した点(9,3,NULL)に最も近いジオメトリ・セグメントRoute 1上の点(9,4,9)を戻します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

-- Point 9,3,NULL is off the road; should return 9,4,9.
SELECT  SDO_LRS.PROJECT_PT(route_geometry, 
  SDO_GEOMETRY(3301, NULL, NULL, 
     SDO_ELEM_INFO_ARRAY(1, 1, 1), 
     SDO_ORDINATE_ARRAY(9, 3, NULL)) )
  FROM lrs_routes WHERE route_id = 1;

SDO_LRS.PROJECT_PT(ROUTE_GEOMETRY,SDO_GEOMETRY(3301,NULL,NULL,SDO_EL
--------------------------------------------------------------------------------
SDO_GEOMETRY(3301, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 1), SDO_ORDINATE_ARRAY(
9, 4, 9))

27.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

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

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))

27.37 SDO_LRS.RESET_MEASURE

構文

SDO_LRS.RESET_MEASURE(
     geom_segment  IN OUT SDO_GEOMETRY 
     [, dim_array  IN SDO_DIM_ARRAY]);

説明

開始メジャーおよび終了メジャーを含むジオメトリ・セグメントのすべてのメジャーをNULL値に設定し、事前に割り当てられたメジャーを上書きします。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

使用上の注意

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

次の例では、ジオメトリ・セグメントのすべてのメジャーをNULL値に設定します。(この例では、「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))        
                                                                                
-- Reset geometric segment measures.
DECLARE
geom_segment SDO_GEOMETRY;

BEGIN

SELECT a.route_geometry into geom_segment FROM lrs_routes a
  WHERE a.route_name = 'Route1';

SDO_LRS.RESET_MEASURE (geom_segment);

-- 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 segment, with all measures set to null.
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, NULL, 2, 4, NULL, 8, 4, NULL, 12, 4, NULL, 12, 10, NULL, 8, 10, NULL, 5, 1
4, NULL))  

27.38 SDO_LRS.REVERSE_GEOMETRY

構文

SDO_LRS.REVERSE_GEOMETRY(
     geom         IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN SDO_GEOMETRY;

説明

ジオメトリ・セグメントのメジャー値および方向を反転させて、新しいジオメトリ・セグメントを戻します。

パラメータ

geom

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

使用上の注意

このファンクションは、次の操作を実行します。

  • geomのメジャー値を反転させます。

    geomの開始メジャーは戻されたジオメトリ・セグメントの終了メジャーになり、geomの終了メジャーは戻されたジオメトリ・セグメントの開始メジャーになります。他のすべてのメジャーも適切に調整されます。

  • geomの方向を反転させます。

ジオメトリ・セグメントのメジャー値のみを反転させる(方向は反転させない)SDO_LRS.REVERSE_MEASUREと比較してください。

非LRS線ストリング・ジオメトリの頂点を反転させるには、SDO_UTIL.REVERSE_LINESTRINGファンクション(「SDO_UTILパッケージ(ユーティリティ)」を参照)を使用します。

geomに無効なジオメトリ・タイプまたは次元が含まれる場合、例外が発生します。ジオメトリ・タイプは単一または複数の線であり、次元数は3 (2次元とメジャー次元)である必要があります。

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

次の例では、ジオメトリ・セグメントRoute 1のメジャー値および方向を反転させます。(この例では、「LRSファンクションの例」の例の定義を使用します。)

-- Reverse direction and measures (for example, to prepare for
-- concatenating with another road).
-- First, display the original segment; then, reverse.
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))        
                                                                                

SELECT  SDO_LRS.REVERSE_GEOMETRY(a.route_geometry, m.diminfo)
    FROM lrs_routes a, user_sdo_geom_metadata m
    WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY'
      AND a.route_id = 1;

SDO_LRS.REVERSE_GEOMETRY(A.ROUTE_GEOMETRY,M.DIMINFO)(SDO_GTYPE, SDO_SRID, SDO_PO
--------------------------------------------------------------------------------
SDO_GEOMETRY(3302, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(
5, 14, 27, 8, 10, 22, 12, 10, 18, 12, 4, 12, 8, 4, 8, 2, 4, 2, 2, 2, 0))

戻されたセグメントでは、M値(メジャー)が27から0の降順に並んでおり、セグメントの開始点および終了点のXおよびYの値は元のセグメントと反対になっている(元のセグメントでは2,2と5,14であるのに対し、戻されたセグメントでは5,14と2,2)ことに注意してください。

27.39 SDO_LRS.REVERSE_MEASURE

構文

SDO_LRS.REVERSE_MEASURE(
     geom_segment IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN SDO_GEOMETRY;

説明

ジオメトリ・セグメントのメジャー値を反転させて(方向は反転させない)、新しいジオメトリ・セグメントを戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

使用上の注意

このファンクションは、次の操作を実行します。

  • geom_segmentのメジャー値を反転させます。

    geom_segmentの開始メジャーは戻されたジオメトリ・セグメントの終了メジャーになり、geom_segmentの終了メジャーは戻されたジオメトリ・セグメントの開始メジャーになります。他のすべてのメジャーも適切に調整されます。

  • geom_segmentの方向には影響しません。

ジオメトリ・セグメントの方向およびメジャー値の両方を反転させるSDO_LRS.REVERSE_GEOMETRYと比較してください。

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

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

注意:

SDO_LRS.REVERSE_MEASUREファンクションの動作は、リリース8.1.7の後で変更されています。リリース8.1.7では、REVERSE_MEASUREによって、メジャーおよびセグメントの方向の両方が反転されます。後続のリリースでこれと同じ動作が必要な場合、SDO_LRS.REVERSE_GEOMETRYファンクションを使用する必要があります。

次の例では、ジオメトリ・セグメントRoute 1のメジャー値を反転させます(方向は反転させません)。(この例では、「LRSファンクションの例」の例の定義を使用します。)

-- First, display the original segment; then, reverse.
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))        
                                                                                

SELECT SDO_LRS.REVERSE_MEASURE(a.route_geometry, m.diminfo)
  FROM lrs_routes a, user_sdo_geom_metadata m
  WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY'
    AND a.route_id = 1;

SDO_LRS.REVERSE_MEASURE(A.ROUTE_GEOMETRY,M.DIMINFO)(SDO_GTYPE, SDO_SRID, SDO_POI
--------------------------------------------------------------------------------
SDO_GEOMETRY(3302, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(
2, 2, 27, 2, 4, 25, 8, 4, 19, 12, 4, 15, 12, 10, 9, 8, 10, 5, 5, 14, 0)) 

戻されたセグメントでは、M値(メジャー)が27から0の降順に並んでいますが、セグメントの開始点および終了点のXおよびYの値は元のセグメントと同じ(2,2と5,14)であることに注意してください。

27.40 SDO_LRS.SCALE_GEOM_SEGMENT

構文

SDO_LRS.SCALE_GEOM_SEGMENT(
     geom_segment  IN SDO_GEOMETRY, 
     start_measure IN NUMBER, 
     end_measure   IN NUMBER, 
     shift_measure IN NUMBER, 
     tolerance     IN NUMBER DEFAULT 1.0e-8 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.SCALE_GEOM_SEGMENT(
     geom_segment  IN SDO_GEOMETRY, 
     dim_array     IN SDO_DIM_ARRAY, 
     start_measure IN NUMBER, 
     end_measure   IN NUMBER, 
     shift_measure IN NUMBER, 
     ) RETURN SDO_GEOMETRY;

説明

ジオメトリ・セグメントをメジャーのスケール変更した結果のジオメトリ・オブジェクトを戻します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

start_measure

ジオメトリ・セグメントの開始メジャーを指定します。

end_measure

ジオメトリ・セグメントの終了メジャーを指定します。

shift_measure

初回のスケール変更後に、各メジャー値に追加される量を指定します。値が0(ゼロ)の場合は、何も追加されません(メジャー値のシフトはありません)。

tolerance

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

使用上の注意

このファンクションは、次の操作を実行します。

  1. 開始点のstart_measureから終了点のend_measureまでを使用し、それに応じた範囲でメジャー値を調整(スケール変更)することで、LRSジオメトリ・セグメントのメジャー値を再配布します。

  2. shift_measureが0 (ゼロ)でない場合は、shift_measureの値を追加して、手順1で計算された各メジャー値を変換(シフト)します。

このファンクションでの操作は、メジャー値の伸縮と呼ばれることがあります。このファンクションが影響を与えるのはメジャー値のみであり、ジオメトリのその他の座標は変更されません。

geom_segmentstart_measureまたはend_measureが無効な場合は例外が発生します。

結果のジオメトリ・セグメントの方向は保持されます(元のセグメントが反映されます)。

ジオメトリ・セグメントのスケール変更については、「ジオメトリ・セグメントのスケール変更」を参照してください。

次の例では、ジオメトリ・セグメントRoute 1がスケール変更され、開始メジャーと終了メジャーにそれぞれ100と200が指定され、シフト・メジャー値が10であるセグメントが戻されます。したがって、すべてのメジャー値は、開始メジャー値と終了メジャー値に準じてスケール変更された後に10が追加されます。つまり、この例では、戻されるジオメトリの開始点メジャーは110で、終了点メジャーは210になります。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SQL> SELECT  SDO_LRS.SCALE_GEOM_SEGMENT(route_geometry, 100, 200, 10)
  FROM lrs_routes WHERE route_id = 1;
 
SDO_LRS.SCALE_GEOM_SEGMENT(ROUTE_GEOMETRY,100,200,10)(SDO_GTYPE, SDO_SRID, SDO_P
--------------------------------------------------------------------------------
SDO_GEOMETRY(3302, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(
2, 2, 110, 2, 4, 117.407407, 8, 4, 139.62963, 12, 4, 154.444444, 12, 10, 176.666
667, 8, 10, 191.481481, 5, 14, 210))

27.41 SDO_LRS.SET_PT_MEASURE

構文

SDO_LRS.SET_PT_MEASURE(
     geom_segment IN OUT SDO_GEOMETRY, 
     point        IN SDO_GEOMETRY, 
     measure      IN NUMBER) RETURN VARCHAR2;

または

SDO_LRS.SET_PT_MEASURE(
     geom_segment IN OUT SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     point        IN SDO_GEOMETRY, 
     pt_dim_array IN SDO_DIM_ARRAY, 
     measure      IN NUMBER) RETURN VARCHAR2;

または

SDO_LRS.SET_PT_MEASURE(
     point   IN OUT SDO_GEOMETRY, 
     measure IN NUMBER) RETURN VARCHAR2;

または

SDO_LRS.SET_PT_MEASURE(
     point     IN OUT SDO_GEOMETRY, 
     dim_array IN SDO_DIM_ARRAY, 
     measure   IN NUMBER) RETURN VARCHAR2;

説明

指定された点のメジャー値を設定します。

パラメータ

geom_segment

点を含むジオメトリ・セグメント(メジャー情報を含むLRSセグメント)。

dim_array

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

point

メジャー値を設定する点を指定します。

pt_dim_array

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

measure

指定された点に割り当てられるメジャー値を指定します。

使用上の注意

このファンクションは、メジャー値が正しく設定されている場合はTRUE、メジャー値が設定されていない場合はFALSEを戻します。

geom_segmentおよびpointの両方が指定されている場合、このプロシージャの動作は、pointgeom_segment上の形状点であるかどうかによって異なります。

  • pointgeom_segment上の形状点である場合、pointのメジャー値が設定されます。

  • pointgeom_segment上の形状点でない場合、pointに最も近いgeom_segment上の形状点が検出され、この形状点のメジャー値が設定されます。

このファンクションは_3D形式(SDO_LRS.SET_PT_MEASURE_3D)が使用可能です。ただし、SDO_LRS.SET_PT_MEASURE_3Dでは、geom_segmentパラメータを含む形式のみが使用可能です。LRSファンクションの_3D形式については、「LRSファンクションの3D形式」を参照してください。

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

次の例では、点(8,10)のメジャー値を20に設定します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

-- Set the measure value of point 8,10 to 20 (originally 22).
DECLARE
geom_segment SDO_GEOMETRY;
dim_array SDO_DIM_ARRAY;
result VARCHAR2(32);

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

-- Set the measure value of point 8,10 to 20 (originally 22).
result := SDO_LRS.SET_PT_MEASURE (geom_segment, 
  SDO_GEOMETRY(3301, NULL, NULL, 
     SDO_ELEM_INFO_ARRAY(1, 1, 1), 
     SDO_ORDINATE_ARRAY(8, 10, 22)),
  20);

-- Display the result.
DBMS_OUTPUT.PUT_LINE('Returned value = ' || result);

END;
/
Returned value = TRUE

PL/SQL procedure successfully completed.
                                                                                

27.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

メジャー情報を含む入力ジオメトリ・セグメント(LRSセグメント)。

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

27.43 SDO_LRS.TRANSLATE_MEASURE

構文

SDO_LRS.TRANSLATE_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     translate_m  IN NUMBER 
     ) RETURN SDO_GEOMETRY;

または

SDO_LRS.TRANSLATE_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     translate_m  IN NUMBER 
     ) RETURN SDO_GEOMETRY;

説明

ジオメトリ・セグメントを変換して、新しいジオメトリ・セグメントを戻します(開始および終了メジャーを指定した値分シフトします)。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

translate_m

ジオメトリ・セグメントの開始点から線形フィーチャの開始点までの距離を指定します。

使用上の注意

このファンクションは、geom_segmentの開始および終了メジャーにtranslate_mを追加します。たとえば、geom_segmentの開始メジャーが50、終了メジャーが100、translate_mが10の場合、戻されるジオメトリ・セグメントの開始メジャーは60、終了メジャーは110です(次の図を参照)。

図27-1 ジオメトリ・セグメントの変換

図27-1の説明が続きます
図27-1「ジオメトリ・セグメントの変換」の説明

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

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

次の例では、ジオメトリ・セグメントRoute 1を10変換(シフト)します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.TRANSLATE_MEASURE(a.route_geometry, m.diminfo, 10)
  FROM lrs_routes a, user_sdo_geom_metadata m
  WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY'
    AND a.route_id = 1;

SDO_LRS.TRANSLATE_MEASURE(A.ROUTE_GEOMETRY,M.DIMINFO,10)(SDO_GTYPE, SDO_SRID, SD
--------------------------------------------------------------------------------
SDO_GEOMETRY(3302, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(
2, 2, 10, 2, 4, 12, 8, 4, 18, 12, 4, 22, 12, 10, 28, 8, 10, 32, 5, 14, 37))

27.44 SDO_LRS.VALID_GEOM_SEGMENT

構文

SDO_LRS.VALID_GEOM_SEGMENT(
     geom_segment IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN VARCHAR2;

説明

ジオメトリ・オブジェクトが有効なジオメトリ・セグメントかどうかを確認します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

使用上の注意

このファンクションは、geom_segmentが有効な場合はTRUEを戻し、geom_segmentが無効な場合はFALSEを戻します。

メジャー情報は、Oracle Spatial and GraphメタデータのSDO_DIM_ARRAYの最後の要素に格納されていると想定されています。

このファンクションは、ジオメトリ・タイプおよびジオメトリ・セグメントの次元数のみ確認します。メジャー情報を詳しく検証するには、SDO_LRS.IS_GEOM_SEGMENT_DEFINEDファンクションを使用します。

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

次の例では、ジオメトリ・セグメントRoute 1が有効であるかどうかを確認します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT  SDO_LRS.VALID_GEOM_SEGMENT(route_geometry)
  FROM lrs_routes WHERE route_id = 1;

SDO_LRS.VALID_GEOM_SEGMENT(ROUTE_GEOMETRY)                                      
--------------------------------------------------------------------------------
TRUE   

27.45 SDO_LRS.VALID_LRS_PT

構文

SDO_LRS.VALID_LRS_PT(
     point        IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN VARCHAR2;

説明

LRS点が有効かどうかを確認します。

パラメータ

point

有効かどうかを確認する点を指定します。

dim_array

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

使用上の注意

このファンクションは、pointが有効な場合はTRUEを戻します。また、pointが無効な場合は、FALSEを戻します。

pointがメジャー情報を持っているかどうかを確認します。また、点ジオメトリのジオメトリ・タイプおよび次元数についても確認します。

すべてのLRS点データは、SDO_ELEM_INFO_ARRAYおよびSDO_ORDINATE_ARRAYに格納する必要があり、その点のSDO_GEOMETRY定義のSDO_POINTフィールドには格納できません。

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

次の例では、点(9,3,NULL)が有効なLRS点であるかどうかを確認します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT  SDO_LRS.VALID_LRS_PT(
    SDO_GEOMETRY(3301, NULL, NULL,
       SDO_ELEM_INFO_ARRAY(1, 1, 1),
       SDO_ORDINATE_ARRAY(9, 3, NULL)),
    m.diminfo)
    FROM lrs_routes a, user_sdo_geom_metadata m
    WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY'
      AND a.route_id = 1;

SDO_LRS.VALID_LRS_PT(SDO_GEOMETRY(3301,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1,1),SDO_
--------------------------------------------------------------------------------
TRUE

27.46 SDO_LRS.VALID_MEASURE

構文

SDO_LRS.VALID_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     measure      IN NUMBER 
     ) RETURN VARCHAR2;

または

SDO_LRS.VALID_MEASURE(
     geom_segment IN SDO_GEOMETRY, 
     dim_array    IN SDO_DIM_ARRAY, 
     measure      IN NUMBER 
     ) RETURN VARCHAR2;

説明

メジャーがジオメトリ・セグメントのメジャー範囲内かどうかを確認します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

measure

geom_segmentのメジャー範囲内にあるかどうかを確認するメジャー値を指定します。

使用上の注意

このファンクションは、measuregeom_segmentのメジャー範囲内にある場合は、TRUEを戻します。また、measuregeom_segmentのメジャー範囲外にある場合は、FALSEを戻します。

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

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

次の例では、50がRoute 1セグメント上で有効なメジャーであるかどうかを確認します。このセグメントのメジャー範囲は0から27であるため、このファンクションはFALSEを戻します。たとえば、長さが27マイルで1マイルごとにマークが付いた道路では、最後のマークは27マイルのマークであるため、50マイルのマークはありません。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT  SDO_LRS.VALID_MEASURE(route_geometry, 50)
  FROM lrs_routes WHERE route_id = 1;

SDO_LRS.VALID_MEASURE(ROUTE_GEOMETRY,50)                                        
--------------------------------------------------------------------------------
FALSE

27.47 SDO_LRS.VALIDATE_LRS_GEOMETRY

構文

SDO_LRS.VALIDATE_LRS_GEOMETRY(
     geom_segment IN SDO_GEOMETRY 
     [, dim_array IN SDO_DIM_ARRAY] 
     ) RETURN VARCHAR2;

説明

LRSジオメトリが有効かどうかを確認します。

パラメータ

geom_segment

メジャー情報を含むジオメトリ・セグメント(LRSセグメント)。

dim_array

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

使用上の注意

このファンクションは、geom_segmentが有効な場合はTRUEを戻します。また、geom_segmentが無効な場合は次のエラーのいずれかを戻します。

  • ORA-13331(LRSセグメントが無効です。)

  • ORA-13335(LRS測定情報が定義されていません。)

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

次の例では、Route 1セグメントが有効なLRSジオメトリであるかを確認します。(この例では、「LRSファンクションの例」の例の定義を使用します。)

SELECT SDO_LRS.VALIDATE_LRS_GEOMETRY(a.route_geometry, m.diminfo)
   FROM lrs_routes a, user_sdo_geom_metadata m
   WHERE m.table_name = 'LRS_ROUTES' AND m.column_name = 'ROUTE_GEOMETRY'
   AND a.route_id = 1;

SDO_LRS.VALIDATE_LRS_GEOMETRY(A.ROUTE_GEOMETRY,M.DIMINFO)                       
--------------------------------------------------------------------------------
TRUE