Format
SDO_GEOM.SDO_BUFFER( geom IN SDO_GEOMETRY, dim IN SDO_DIM_ARRAY, dist IN NUMBER [, params IN VARCHAR2] ) RETURN SDO_GEOMETRY;
or
SDO_GEOM.SDO_BUFFER( geom IN SDO_GEOMETRY, dist IN NUMBER, tol IN NUMBER [, params IN VARCHAR2] ) RETURN SDO_GEOMETRY;
Parameters
Geometry object.
Dimensional information array corresponding to geom
, usually selected from one of the xxx_SDO_GEOM_METADATA views (described in Geometry Metadata Views).
Distance value. If the value is positive, the buffer is generated around the geometry; if the value is negative (valid only for polygons), the buffer is generated inside the geometry. The absolute value of this parameter must be greater than the tolerance value, as specified in the dimensional array (dim
parameter) or in the tol
parameter.
Tolerance value (see Tolerance).
A quoted string that can contain one or both of the following keywords:
unit
and an SDO_UNIT value from the MDSYS.SDO_DIST_UNITS table. It identifies the unit of measurement associated with the dist
parameter value, and also with the arc tolerance value if the arc_tolerance
keyword is specified. See Unit of Measurement Support for more information about unit of measurement specification.
arc_tolerance
and an arc tolerance value. See the Usage Notes for the SDO_GEOM.SDO_ARC_DENSIFY function in this chapter for more information about the arc_tolerance
keyword.
For example: 'unit=km arc_tolerance=0.05'
If the input geometry is geodetic data and if arc_tolerance
is not specified, the default value is the tolerance value multiplied by 20. Spatial and Graph uses the arc_tolerance
value to perform arc densification in computing the result. If the input geometry is Cartesian or projected data, arc_tolerance
has no effect and should not be specified.
If this parameter is not specified for a Cartesian or projected geometry, or if the arc_tolerance
keyword is specified for a geodetic geometry but the unit
keyword is not specified, the unit of measurement associated with the data is assumed.
Usage Notes
This function returns a geometry object representing the buffer polygon.
This function creates a rounded buffer around a point, line, or polygon, or inside a polygon. The buffer within a void is also rounded, and is the same distance from the inner boundary as the outer buffer is from the outer boundary. See Figure 1-7 for an illustration.
If the buffer polygon geometry is in a projected coordinate system, it will contain arcs; and if you want to transform that geometry to a geodetic coordinate system, you must first densify it using the SDO_GEOM.SDO_ARC_DENSIFY function, and then transform the densified geometry.
If the input geometry has more than 50 ordinates, and the buffer width is less than 0.1 percent (0.001) of the root-mean-square spacing between consecutive coordinates, then the original geometry is returned unchanged.
With geodetic data, this function is supported by approximations, as explained in Functions Supported by Approximations with Geodetic Data.
With geodetic data, this function should be used only for relatively small geometries: geometries for which the local tangent plane projection that is used for internal computations does not introduce significant distortions or errors. This limits the applicable ___domain of source geometries, whether line strings or polygons, to approximately the area of Texas (United States), France, or Manchuria province (China).
Examples
The following example returns a polygon representing a buffer of 1 around cola_a
. Note the rounded corners (for example, at .292893219,.292893219) in the returned polygon. (The example uses the non-geodetic definitions and data from Simple Example: Inserting_ Indexing_ and Querying Spatial Data.)
-- 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))
The following example returns a polygon representing a buffer of 1 around cola_a
using the geodetic definitions and data from Example of Coordinate System Transformation.
-- 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))
Related Topics