27 SDO_LRSパッケージ(線形参照システム)
MDSYS.SDO_LRSパッケージには、線形参照要素の作成、変更、問合せおよび変換を行うサブプログラムが含まれています。
これらのサブプログラムによって、データベースの状態が変更されることはありません。多くのLRSサブプログラムはファンクションです。
この章で説明するサブプログラムを使用するには、「線形参照システム」で説明する線形参照システム(LRS)の概念および技術を理解しておく必要があります。
ノート:
3次元ジオメトリに対するSDO_LRSサブプログラムは、Oracle Autonomous Databaseサーバーレス・デプロイメントでOracle JVMが有効になっている場合にのみサポートされます。Oracle JVMを有効にするには、Oracle Autonomous Databaseサーバーレスの使用のOracle Javaの使用で詳細を参照してください。表27-1に、ジオメトリ・セグメントの作成および編集に関連するサブプログラムを示します。
表27-1 ジオメトリ・セグメントの作成および編集サブプログラム
サブプログラム | 説明 |
---|---|
ジオメトリ・セグメントを定義します。 |
|
ジオメトリ・セグメントのすべての形状点のメジャーを開始および終了メジャーに基づいて移入し、開始点と終了点の間で事前に割り当てられたメジャーを上書きします。 |
|
ジオメトリ・セグメント(SDO_LRS.DYNAMIC_SEGMENTのシノニム)をクリップします。 |
|
ジオメトリ・セグメント(SDO_LRS.CLIP_GEOM_SEGMENTのシノニム)をクリップします。 |
|
2つのジオメトリ・セグメントを連結して1つのセグメントにします。 |
|
いずれか、または両方がLRSジオメトリである2つのジオメトリ・オブジェクトで位相的に共通部分(AND演算)となるLRSジオメトリ・オブジェクトを戻します。 |
|
ジオメトリ・セグメントから指定したオフセットにあるジオメトリ・セグメントを戻します。 |
|
ジオメトリ・セグメントを2つに分割します。 |
|
開始メジャーおよび終了メジャーを含むジオメトリ・セグメントのすべてのメジャーをNULL値に設定し、事前に割り当てられたメジャーを上書きします。 |
|
ジオメトリ・セグメントをメジャーのスケール変更した結果のジオメトリ・オブジェクトを戻します。 |
|
指定された点のメジャー値を設定します。 |
|
ジオメトリ・セグメントのメジャー値を反転させて(方向は反転させない)、新しいジオメトリ・セグメントを戻します。 |
|
ジオメトリ・セグメントを変換して、新しいジオメトリ・セグメントを戻します(開始および終了メジャーを指定した値分シフトします)。 |
|
ジオメトリ・セグメントのメジャー値および方向を反転させて、新しいジオメトリ・セグメントを戻します。 |
表27-2に、ジオメトリ・セグメントの問合せに関連するサブプログラムを示します。
表27-2 ジオメトリ・セグメントの問合せおよび検査サブプログラム
サブプログラム | 説明 |
---|---|
ジオメトリ・セグメントが有効かどうかを確認します。 |
|
LRS点が有効かどうかを確認します。 |
|
メジャーがジオメトリ・セグメントのメジャー範囲内かどうかを確認します。 |
|
2つのジオメトリ・セグメントが空間的に接続しているかどうかを確認します。 |
|
ジオメトリ・セグメントの長さを戻します。 |
|
ジオメトリ・セグメントの開始点を戻します。 |
|
ジオメトリ・セグメントの終了点を戻します。 |
|
ジオメトリ・セグメントの開始メジャーを戻します。 |
|
ジオメトリ・セグメントの終了メジャーを戻します。 |
|
LRS点のメジャーを戻します。 |
|
ジオメトリ・セグメント上の指定したメジャー値またはLRS点の次の形状点を戻します。 |
|
ジオメトリ・セグメント上の指定したメジャー値またはLRS点の次の形状点のメジャー値を戻します。 |
|
ジオメトリ・セグメント上の指定したメジャー値またはLRS点の前の形状点を戻します。 |
|
ジオメトリ・セグメント上の指定したメジャー値またはLRS点の前の形状点のメジャー値を戻します。 |
|
LRSセグメントが正しく定義されているかどうかを確認します。 |
|
メジャー値がLRSセグメントの方向に降順である(数値が減少している)かどうかを確認します。 |
|
メジャー値がLRSセグメントの方向に昇順である(数値が増加している)かどうかを確認します。 |
|
指定したメジャー値がジオメトリ・セグメント上の形状点に関連付けられているかどうかを確認します。 |
|
ジオメトリ・セグメントのメジャー範囲(開始メジャーと終了メジャーの差)を戻します。 |
|
ジオメトリ・セグメントのメジャー範囲に対する指定したメジャーの割合(0から100%)を戻します。 |
|
ジオメトリ・セグメントのメジャー範囲に対する、指定した割合(0から100%)のメジャー値を戻します。 |
|
ジオメトリ・セグメントの開始位置から指定した距離にある点を戻します。 |
|
指定した点の投影点を戻します。投影点はジオメトリ・セグメント上にあります。 |
|
指定されたSDO_GEOMETRY列のSDO_DIM_ARRAY構造内におけるメジャー次元の位置を戻します。 |
|
指定した投影点に最も近いセグメント上の点のメジャーを戻します。 |
|
点とジオメトリ・セグメント間の符号付きオフセット(最短距離)を戻します。 |
|
LRSジオメトリが有効かどうかを確認します。 |
表27-3に、ジオメトリ・セグメントの変換に関連するサブプログラムを示します。
表27-3 ジオメトリ・セグメントの変換サブプログラム
サブプログラム | 説明 |
---|---|
メジャー次元を作成して、標準の次元配列をLRS次元配列に変換します。 |
|
メジャー情報を追加して、標準のSDO_GEOMETRY線ストリングをLRSジオメトリ・セグメントに変換します。 |
|
SDO_GEOMETRY型列のすべてのジオメトリ・オブジェクトを、メジャー情報を持たない標準の線ストリング・ジオメトリからメジャー情報を持つLRSジオメトリ・セグメントに変換します。また、メタデータを更新します。 |
|
メジャー次元を削除して、LRS次元配列を標準の次元配列に変換します。 |
|
メジャー情報を削除して、LRSジオメトリ・セグメントを標準のSDO_GEOMETRY線ストリングに変換します。 |
|
SDO_GEOMETRY型列のすべてのジオメトリ・オブジェクトを、メジャー情報を持つLRSジオメトリ・セグメントからメジャー情報を持たない標準の線ストリング・ジオメトリに変換します。また、メタデータを更新します。 |
変換サブプログラムの詳細は、「LRSジオメトリの変換」を参照してください。
この章では、これらのサブプログラムのリファレンス情報をアルファベット順に説明します。
- SDO_LRS.CLIP_GEOM_SEGMENT
- SDO_LRS.CONCATENATE_GEOM_SEGMENTS
- SDO_LRS.CONNECTED_GEOM_SEGMENTS
- SDO_LRS.CONVERT_TO_LRS_DIM_ARRAY
- SDO_LRS.CONVERT_TO_LRS_GEOM
- SDO_LRS.CONVERT_TO_LRS_LAYER
- SDO_LRS.CONVERT_TO_STD_DIM_ARRAY
- SDO_LRS.CONVERT_TO_STD_GEOM
- SDO_LRS.CONVERT_TO_STD_LAYER
- SDO_LRS.DEFINE_GEOM_SEGMENT
- SDO_LRS.DYNAMIC_SEGMENT
- SDO_LRS.FIND_LRS_DIM_POS
- SDO_LRS.FIND_MEASURE
- SDO_LRS.FIND_OFFSET
- SDO_LRS.GEOM_SEGMENT_END_MEASURE
- SDO_LRS.GEOM_SEGMENT_END_PT
- SDO_LRS.GEOM_SEGMENT_LENGTH
- SDO_LRS.GEOM_SEGMENT_START_MEASURE
- SDO_LRS.GEOM_SEGMENT_START_PT
- SDO_LRS.GET_MEASURE
- SDO_LRS.GET_NEXT_SHAPE_PT
- SDO_LRS.GET_NEXT_SHAPE_PT_MEASURE
- SDO_LRS.GET_PREV_SHAPE_PT
- SDO_LRS.GET_PREV_SHAPE_PT_MEASURE
- SDO_LRS.IS_GEOM_SEGMENT_DEFINED
- SDO_LRS.IS_MEASURE_DECREASING
- SDO_LRS.IS_MEASURE_INCREASING
- SDO_LRS.IS_SHAPE_PT_MEASURE
- SDO_LRS.LOCATE_PT
- SDO_LRS.LRS_INTERSECTION
- SDO_LRS.MEASURE_RANGE
- SDO_LRS.MEASURE_TO_PERCENTAGE
- SDO_LRS.OFFSET_GEOM_SEGMENT
- SDO_LRS.PERCENTAGE_TO_MEASURE
- SDO_LRS.PROJECT_PT
- SDO_LRS.REDEFINE_GEOM_SEGMENT
- SDO_LRS.RESET_MEASURE
- SDO_LRS.REVERSE_GEOMETRY
- SDO_LRS.REVERSE_MEASURE
- SDO_LRS.SCALE_GEOM_SEGMENT
- SDO_LRS.SET_PT_MEASURE
- SDO_LRS.SPLIT_GEOM_SEGMENT
- SDO_LRS.TRANSLATE_MEASURE
- SDO_LRS.VALID_GEOM_SEGMENT
- SDO_LRS.VALID_LRS_PT
- SDO_LRS.VALID_MEASURE
- SDO_LRS.VALIDATE_LRS_GEOMETRY
親トピック: リファレンス情報
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_segment
、start_measure
またはend_measure
が無効な場合は例外が発生します。
ジオメトリ・セグメント上の任意の点を、start_measure
およびend_measure
に指定できます。これらの点は、特定の順序に従う必要はありません。たとえば、start_measure
とend_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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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_1
、result_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; /
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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_bound
、lower_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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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ビューのメタデータを更新します。
パラメータ
使用上のノート
このファンクションは、変換が正常に行われた場合、またはレイヤーがすでに標準のレイヤー(メジャー情報を持たないジオメトリを含む)の場合は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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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_1
、result_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; /
親トピック: SDO_LRSパッケージ(線形参照システム)
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_segment
、start_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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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構造内におけるメジャー次元の位置を戻します。
パラメータ
使用上のノート
なし。
例
次の例では、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
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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
-
次の形状点を戻す点を指定します。
point
がgeom_segment
上にない場合、指定した点に最も近いジオメトリ・セグメント上の点が計算され、その点の次の形状点が戻されます。 - dim_array
-
geom_segment
に対応する次元情報の配列を指定します。通常、xxx_SDO_GEOM_METADATAビューの1つから選択します(「ジオメトリのメタデータ・ビュー」を参照)。
使用上のノート
measure
またはpoint
にジオメトリ・セグメントの終了点を指定した場合、NULL値が戻されます。
measure
がgeom_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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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
-
次の形状点のメジャー値を戻す点を指定します。
point
がgeom_segment
上にない場合、指定した点に最も近いジオメトリ・セグメント上の点が計算され、その点の次の形状点のメジャー値が戻されます。 - dim_array
-
geom_segment
に対応する次元情報の配列を指定します。通常、xxx_SDO_GEOM_METADATAビューの1つから選択します(「ジオメトリのメタデータ・ビュー」を参照)。
使用上のノート
measure
またはpoint
にジオメトリ・セグメントの終了点を指定した場合、NULL値が戻されます。
measure
がgeom_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
親トピック: SDO_LRSパッケージ(線形参照システム)
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
-
前の形状点を戻す点を指定します。
point
がgeom_segment
上にない場合、指定した点に最も近いジオメトリ・セグメント上の点が計算され、その点の前で最も近い形状点が戻されます。 - dim_array
-
geom_segment
に対応する次元情報の配列を指定します。通常、xxx_SDO_GEOM_METADATAビューの1つから選択します(「ジオメトリのメタデータ・ビュー」を参照)。
使用上のノート
measure
またはpoint
にジオメトリ・セグメントの開始点を指定した場合、NULL値が戻されます。
measure
がgeom_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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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
-
前の形状点のメジャー値を戻す点を指定します。
point
がgeom_segment
上にない場合、指定した点に最も近いジオメトリ・セグメント上の点が計算され、その点の前で最も近い形状点のメジャー値が戻されます。 - dim_array
-
geom_segment
に対応する次元情報の配列を指定します。通常、xxx_SDO_GEOM_METADATAビューの1つから選択します(「ジオメトリのメタデータ・ビュー」を参照)。
使用上のノート
measure
またはpoint
にジオメトリ・セグメントの開始点を指定した場合、NULL値が戻されます。
measure
がgeom_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
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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を戻します。
measure
がgeom_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
親トピック: SDO_LRSパッケージ(線形参照システム)
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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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
およびMDSYS.SDO_DIST_UNITS表のSDO_UNIT値。測定単位の指定の詳細は、「測定単位のサポート」を参照してください。 -
arc_tolerance
および円弧の許容差。arc_tolerance
キーワードの詳細は、「SDO_GEOMパッケージ(ジオメトリ)」に示すSDO_GEOM.SDO_ARC_DENSIFYファンクションの「使用上のノート」を参照してください。
たとえば: 'unit=km arc_tolerance=0.05'
入力ジオメトリが測地データの場合、このパラメータは必須です。また、arc_tolerance
も指定する必要があります。入力ジオメトリがデカルト・データまたは投影データである場合、arc_tolerance
は無効になるため、指定する必要はありません。
デカルト・ジオメトリまたは投影ジオメトリにこのパラメータが指定されていない場合、または測地ジオメトリに対してarc_tolerance
キーワードが指定されているにもかかわらずunit
キーワードが指定されていない場合、データに関連付けられている測定単位が使用されます。
使用上のノート
ジオメトリ・セグメント上の任意の点を、start_measure
およびend_measure
に指定できます。これらの点は、特定の順序に従う必要はありません。たとえば、start_measure
とend_measure
は、5と10、または10と5に指定できます。
結果のジオメトリ・セグメントの方向およびメジャーは保持されます(元のセグメントが反映されます)。
geom_segment
のジオメトリ・タイプは、単一または複数の線である必要があります。たとえば、ポリゴンは指定できません。
geom_segment
、start_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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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)ことに注意してください。
親トピック: SDO_LRSパッケージ(線形参照システム)
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)であることに注意してください。
親トピック: SDO_LRSパッケージ(線形参照システム)
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です。
使用上のノート
このファンクションは、次の操作を実行します。
-
開始点の
start_measure
から終了点のend_measure
までを使用し、それに応じた範囲でメジャー値を調整(スケール変更)することで、LRSジオメトリ・セグメントのメジャー値を再配布します。 -
shift_measure
が0 (ゼロ)でない場合は、shift_measure
の値を追加して、ステップ1で計算された各メジャー値を変換(シフト)します。
このファンクションでの操作は、メジャー値の伸縮と呼ばれることがあります。このファンクションが影響を与えるのはメジャー値のみであり、ジオメトリのその他の座標は変更されません。
geom_segment
、start_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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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
の両方が指定されている場合、このプロシージャの動作は、point
がgeom_segment
上の形状点であるかどうかによって異なります。
-
point
がgeom_segment
上の形状点である場合、point
のメジャー値が設定されます。 -
point
がgeom_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.
親トピック: SDO_LRSパッケージ(線形参照システム)
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_1
、result_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; /
親トピック: SDO_LRSパッケージ(線形参照システム)
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です(次の図を参照)。
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))
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)
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
のメジャー範囲内にあるかどうかを確認するメジャー値を指定します。
使用上のノート
このファンクションは、measure
がgeom_segment
のメジャー範囲内にある場合は、TRUEを戻します。また、measure
がgeom_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
親トピック: SDO_LRSパッケージ(線形参照システム)
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
親トピック: SDO_LRSパッケージ(線形参照システム)