書式
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;
説明
ジオメトリ・セグメントの開始位置から指定した距離にある点を戻します。
パラメータ
measure
のメジャー範囲内にあるかどうかを確認するジオメトリ・セグメントを指定します。
geom_segment
に対応する次元情報の配列を指定します。通常、xxx_SDO_GEOM_METADATAビューの1つから選択します(「ジオメトリのメタデータ・ビュー」を参照)。
geom_segment
の開始点からメジャーまでの距離を指定します。
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))