Format
SDO_GEOM.SDO_CONCAVEHULL_BOUNDARY( geom IN SDO_GEOMETRY, tol IN NUMBER, length IN NUMBER DEFAULT NULL ) RETURN SDO_GEOMETRY;
Description
Returns a polygon-type object that represents the concave hull of a geometry object, based on boundary points rather than the alpha shape.
Parameters
Geometry object.
Tolerance value (see Tolerance).
A value to control the size of the concave hull: specifically, computation of the concave hull is stopped when the longest edge in the concave hull is shorter than the length
value. Thus, the larger the length
value, the larger the concave hull will probably be. If you do not specify this parameter, computation continues as described in the Usage Notes.
Usage Notes
The concave hull is a polygon that represents the area of the input geometry, such as a collection of points. With complex input geometries, the concave hull is typically significantly smaller in area than the convex hull.
Like the SDO_GEOM.SDO_CONCAVEHULL function, this function takes all coordinates from the input geometry, and uses them to compute Delaunay triangulations. But after that, it computes a convex hull, puts all boundary edges into a priority queue based on the lengths of these edges, and then removes edges one by one as long as the shape is still a single connected polygon (unless stopped by a specified length
parameter value). If an edge is removed during the computation, the other two edges of its triangle will be on the boundary.
An exception is raised if geom
has fewer than three points or vertices, or consists of multiple points all in a straight line.
With geodetic data, this function is supported by approximations, as explained in Functions Supported by Approximations with Geodetic Data.
Examples
The following example returns a geometry object that is the concave hull of cola_c
. (The example uses the definitions and data from Simple Example: Inserting_ Indexing_ and Querying Spatial Data.)
-- Return the concave hull of a polygon. SELECT c.name, SDO_GEOM.SDO_CONCAVEHULL_BOUNDARY(c.shape, 0.005) FROM cola_markets c WHERE c.name = 'cola_c'; NAME -------------------------------- SDO_GEOM.SDO_CONCAVEHULL_BOUNDARY(C.SHAPE,0.005)(SDO_GTYPE, SDO_SRID, SDO_POINT( -------------------------------------------------------------------------------- cola_c SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARR AY(6, 3, 6, 5, 4, 5, 3, 3, 6, 3))