書式
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
に対応する次元情報の配列を指定します。通常、xxx_SDO_GEOM_METADATAビューの1つから選択します(「ジオメトリのメタデータ・ビュー」を参照)。
オフセットの操作を開始するgeom_segment
の開始メジャーを指定します。
オフセットの操作を開始するgeom_segment
の終了メジャーを指定します。
geom_segment
に沿った点からメジャーまでの垂直距離を指定します。正のオフセット値はgeom_segment
の左側、負のオフセット値はgeom_segment
の右側です。
許容差を指定します(「許容差」および「LRSファンクションの許容差」を参照)。デフォルト値は0.00000001です。
測定単位(次のキーワードの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))