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

前
次

23.5 SDO_GEOM.SDO_BUFFER

書式

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

ジオメトリ・オブジェクト。

dim

geomに対応する次元情報の配列を指定します。通常、xxx_SDO_GEOM_METADATAビューの1つから選択します(「ジオメトリのメタデータ・ビュー」を参照)。

dist

距離値を指定します。正の値の場合、ジオメトリの周りにバッファが生成されます。負の値の場合(ポリゴンにのみ有効)、ジオメトリの内部にバッファが生成されます。このパラメータの絶対値には、次元配列(dimパラメータ)またはtolパラメータに指定された許容差より大きい値を指定する必要があります。

tol

許容差(「許容差」を参照)。

params

次のキーワードの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))