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

前
次

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

線形フィーチャの地図的表現を指定します。

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