書式
SDO_GEOM.SDO_BUFFER( geom IN SDO_GEOMETRY, dim IN SDO_DIM_ARRAY, dist IN NUMBER [, params IN VARCHAR2] ) RETURN SDO_GEOMETRY;
または
SDO_GEOM.SDO_BUFFER( geom IN SDO_GEOMETRY, dist IN NUMBER, tol IN NUMBER [, params IN VARCHAR2] ) RETURN SDO_GEOMETRY;
パラメータ
ジオメトリ・オブジェクト。
geom
に対応する次元情報の配列を指定します。通常、xxx_SDO_GEOM_METADATAビューの1つから選択します(「ジオメトリのメタデータ・ビュー」を参照)。
距離値を指定します。正の値の場合、ジオメトリの周りにバッファが生成されます。負の値の場合(ポリゴンにのみ有効)、ジオメトリの内部にバッファが生成されます。このパラメータの絶対値には、次元配列(dim
パラメータ)またはtol
パラメータに指定された許容差より大きい値を指定する必要があります。
許容差(「許容差」を参照)。
次のキーワードの1つまたは両方を含む、引用符で囲まれた文字列を指定します。
unit
およびMDSYS.SDO_DIST_UNITS表のSDO_UNIT値。dist
パラメータ値および円弧の許容差(arc_tolerance
キーワードが指定されている場合)に関連付けられた測定単位を識別します。測定単位の指定の詳細は、「測定単位のサポート」を参照してください。
arc_tolerance
および円弧の許容差。arc_tolerance
キーワードの詳細は、この章に示すSDO_GEOM.SDO_ARC_DENSIFYファンクションの「使用上の注意」を参照してください。
例: 'unit=km arc_tolerance=0.05'
入力ジオメトリが測地データで、arc_tolerance
が指定されていない場合、デフォルト値は許容差に20を掛けた値になります。Spatial and Graphではarc_tolerance
値を使用して、結果の計算時に円弧を稠密化します。入力ジオメトリがデカルト・データまたは投影データである場合、arc_tolerance
は無効になるため、指定する必要はありません。
デカルト・ジオメトリまたは投影ジオメトリにこのパラメータが指定されていない場合、または測地ジオメトリに対してarc_tolerance
キーワードが指定されているにもかかわらずunit
キーワードが指定されていない場合、データに関連付けられている測定単位が使用されます。
使用上の注意
このファンクションは、バッファ・ポリゴンを表現するジオメトリ・オブジェクトを戻します。
このファンクションは、点、線またはポリゴンの周り、あるいはポリゴンの内部を丸めたバッファを作成します。空間内のバッファも丸められ、内側の境界からの距離は、外側の境界から外側のバッファまでの距離と同じです。図1-7を参照してください。
バッファ・ポリゴン・ジオメトリが投影座標系にある場合、円弧を含みます。このジオメトリを測地座標系に変換する場合は、SDO_GEOM.SDO_ARC_DENSIFYファンクションを使用してジオメトリを最初に稠密化してから変換します。
入力ジオメトリに50を超える座標があり、かつ、バッファの幅が、連続する座標の間の間隔の二乗平均平方根の0.1% (0.001)未満の場合、元のジオメトリが変更されることなく戻されます。
測地データの場合、このファンクションは、近似処理によってサポートされます(「測地データでの近似処理によってサポートされるファンクション」を参照)。
測地データでは、このファンクションは比較的小さなジオメトリにのみ使用する必要があります。このようなジオメトリに対しては、内部計算に使用するローカル交差平面投影で重大なひずみやエラーが発生することはありません。これにより、線ストリングかポリゴンかに関係なく、ソース・ジオメトリの適用ドメインが、テキサス(米国)、フランスまたは満州(中国)のおよその領域に制限されます。
例
次の例では、cola_a
の周りの1バッファを表現するポリゴンを戻します。戻されるポリゴンの角(たとえば、.292893219、.292893219)は、丸められています。(例では、「空間データの挿入、索引付けおよび問合せの例」の非測地定義およびデータを使用しています。)
-- Generate a buffer of 1 unit around a geometry. SELECT c.name, SDO_GEOM.SDO_BUFFER(c.shape, m.diminfo, 1) FROM cola_markets c, user_sdo_geom_metadata m WHERE m.table_name = 'COLA_MARKETS' AND m.column_name = 'SHAPE' AND c.name = 'cola_a'; NAME -------------------------------- SDO_GEOM.SDO_BUFFER(C.SHAPE,M.DIMINFO,1)(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z) -------------------------------------------------------------------------------- cola_a SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1005, 8, 1, 2, 2, 5, 2, 1, 7, 2, 2, 11, 2, 1, 13, 2, 2, 17, 2, 1, 19, 2, 2, 23, 2, 1), SDO_ORDINATE_ARRAY( 0, 1, .292893219, .292893219, 1, 0, 5, 0, 5.70710678, .292893219, 6, 1, 6, 7, 5. 70710678, 7.70710678, 5, 8, 1, 8, .292893219, 7.70710678, 0, 7, 0, 1))
次の例では、「座標系変換の例」の測地定義およびデータを使用して、cola_a
の周りの1バッファを表現するポリゴンを戻します。
-- Generate a buffer of 1 kilometer around a geometry. SELECT c.name, SDO_GEOM.SDO_BUFFER(c.shape, m.diminfo, 1, 'unit=km arc_tolerance=0.05') FROM cola_markets c, user_sdo_geom_metadata m WHERE m.table_name = 'COLA_MARKETS' AND m.column_name = 'SHAPE' AND c.name = 'cola_a'; NAME -------------------------------- SDO_GEOM.SDO_BUFFER(C.SHAPE,M.DIMINFO,1,'UNIT=KMARC_TOLERANCE=0.05')(SDO_GTYPE, -------------------------------------------------------------------------------- cola_a SDO_GEOMETRY(2003, 8307, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARR AY(.991023822, 1.00002073, .992223711, .995486419, .99551726, .99217077, 1.00001 929, .990964898, 4.99998067, .990964929, 5.00448268, .9921708, 5.00777624, .9954 86449, 5.00897618, 1.00002076, 5.00904194, 6.99997941, 5.00784065, 7.00450033, 5 .00454112, 7.00781357, 5.00002479, 7.009034, .999975166, 7.00903403, .995458814, 7.00781359, .992159303, 7.00450036, .990958058, 6.99997944, .991023822, 1.00002 073))