12.1 SDO_GEOR_RA.classify

Format

Operation on a Single GeoRaster Object

SDO_GEOR_RA.classify(
     inGeoRaster   IN SDO_GEORASTER, 
     expression    IN VARCHAR2, 
     rangeArray    IN SDO_NUMBER_ARRAY, 
     valueArray    IN SDO_NUMBER_ARRAY, 
     storageParam  IN VARCHAR2 DEFAULT NULL, 
     outGeoRaster  IN OUT SDO_GEORASTER, 
     nodata        IN VARCHAR2 DEFAULT 'FALSE', 
     nodataValue   IN NUMBER DEFAULT 0, 
     parallelParam IN VARCHAR2 DEFAULT NULL);

or

SDO_GEOR_RA.classify(
     inGeoRaster   IN SDO_GEORASTER,
     cropArea      IN SDO_NUMBER_ARRAY, 
     expression    IN VARCHAR2, 
     rangeArray    IN SDO_NUMBER_ARRAY, 
     valueArray    IN SDO_NUMBER_ARRAY, 
     storageParam  IN VARCHAR2 DEFAULT NULL, 
     outGeoRaster  IN OUT SDO_GEORASTER, 
     nodata        IN VARCHAR2 DEFAULT 'FALSE', 
     nodataValue   IN NUMBER DEFAULT 0, 
     parallelParam IN VARCHAR2 DEFAULT NULL);
SDO_GEOR_RA.classify(
     inGeoRaster   IN SDO_GEORASTER, 
     cropArea      IN SDO_GEOMETRY, 
     expression    IN VARCHAR2, 
     rangeArray    IN SDO_NUMBER_ARRAY, 
     valueArray    IN SDO_NUMBER_ARRAY, 
     storageParam  IN VARCHAR2 DEFAULT NULL, 
     outGeoRaster  IN OUT SDO_GEORASTER, 
     nodata        IN VARCHAR2 DEFAULT 'FALSE', 
     nodataValue   IN NUMBER DEFAULT 0, 
     polygonClip   IN VARCHAR2 DEFAULT 'FALSE', 
     parallelParam IN VARCHAR2 DEFAULT NULL);

or

SDO_GEOR_RA.classify(
     inGeoRaster  IN SDO_GEORASTER,
     cropArea     IN SDO_NUMBER_ARRAY,
     expression   IN VARCHAR2,
     rangeArray   IN SDO_NUMBER_ARRAY,
     valueArray   IN SDO_NUMBER_ARRAY,
     storageParam IN VARCHAR2 DEFAULT NULL,
     rasterBlob   IN OUT BLOB,
     outArea      OUT SDO_GEOMETRY,
     outWindow    OUT SDO_NUMBER_ARRAY,
     nodata       IN VARCHAR2 DEFAULT 'false',
     nodataValue  IN NUMBER default 0);
SDO_GEOR_RA.classify(
     inGeoRaster  IN SDO_GEORASTER,
     cropArea     IN SDO_GEOMETRY,
     expression   IN VARCHAR2,
     rangeArray   IN SDO_NUMBER_ARRAY,
     valueArray   IN SDO_NUMBER_ARRAY,
     storageParam IN VARCHAR2 DEFAULT NULL,
     rasterBlob   IN OUT BLOB,
     outArea      OUT SDO_GEOMETRY,
     outWindow    OUT SDO_NUMBER_ARRAY,
     nodata       IN VARCHAR2 DEFAULT 'FALSE',
     nodataValue  IN NUMBER default 0,
     polygonClip  IN VARCHAR2 DEFAULT 'FALSE');

Operation on an Array of GeoRaster Objects

SDO_GEOR_RA.classify(
     georArray     IN SDO_GEORASTER_ARRAY, 
     expression    IN VARCHAR2, 
     rangeArray    IN SDO_NUMBER_ARRAY, 
     valueArray    IN SDO_NUMBER_ARRAY, 
     storageParam  IN VARCHAR2 DEFAULT NULL, 
     outGeoRaster  IN OUT SDO_GEORASTER, 
     nodata        IN VARCHAR2 DEFAULT 'FALSE', 
     nodataValue   IN NUMBER DEFAULT 0, 
     parallelParam IN VARCHAR2 DEFAULT NULL);

or

SDO_GEOR_RA.classify(
     georArray     IN SDO_GEORASTER_ARRAY, 
     cropArea      IN SDO_NUMBER_ARRAY, 
     expression    IN VARCHAR2, 
     rangeArray    IN SDO_NUMBER_ARRAY, 
     valueArray    IN SDO_NUMBER_ARRAY, 
     storageParam  IN VARCHAR2 DEFAULT NULL, 
     outGeoRaster  IN OUT SDO_GEORASTER, 
     nodata        IN VARCHAR2 DEFAULT 'FALSE', 
     nodataValue   IN NUMBER DEFAULT 0, 
     parallelParam IN VARCHAR2 DEFAULT NULL);
SDO_GEOR_RA.classify(
     georArray     IN SDO_GEORASTER_ARRAY, 
     cropArea      IN SDO_GEOMETRY, 
     expression    IN VARCHAR2, 
     rangeArray    IN SDO_NUMBER_ARRAY, 
     valueArray    IN SDO_NUMBER_ARRAY, 
     storageParam  IN VARCHAR2 DEFAULT NULL, 
     outGeoRaster  IN OUT SDO_GEORASTER, 
     nodata        IN VARCHAR2 DEFAULT 'FALSE', 
     nodataValue   IN NUMBER DEFAULT 0, 
     polygonClip   IN VARCHAR2 DEFAULT 'FALSE', 
     parallelParam IN VARCHAR2 DEFAULT NULL);

or

SDO_GEOR_RA.classify(
     georArray    IN SDO_GEORASTER_ARRAY,
     cropArea     IN SDO_NUMBER_ARRAY,
     expression   IN VARCHAR2,
     rangeArray   IN SDO_NUMBER_ARRAY,
     valueArray   IN SDO_NUMBER_ARRAY,
     storageParam IN VARCHAR2 DEFAULT NULL,
     rasterBlob   IN OUT BLOB,
     outArea      OUT SDO_GEOMETRY,
     outWindow    OUT SDO_NUMBER_ARRAY,
     nodata       IN VARCHAR2 DEFAULT 'FALSE',
     nodataValue  IN NUMBER default 0);
SDO_GEOR_RA.classify(
     georArray    IN SDO_GEORASTER_ARRAY,
     cropArea     IN SDO_GEOMETRY,
     expression   IN VARCHAR2,
     rangeArray   IN SDO_NUMBER_ARRAY,
     valueArray   IN SDO_NUMBER_ARRAY,
     storageParam IN VARCHAR2 DEFAULT NULL,
     rasterBlob   IN OUT BLOB,
     outArea      OUT SDO_GEOMETRY,
     outWindow    OUT SDO_NUMBER_ARRAY,
     nodata       IN VARCHAR2 DEFAULT 'FALSE',
     nodataValue  IN NUMBER default 0,
     polygonClip  IN VARCHAR2 DEFAULT 'FALSE');

Operation on GeoRaster Objects Specified by a Cursor

SDO_GEOR_RA.classify(
     inGeoRasters  IN SYS_REFCURSOR, 
     expression    IN VARCHAR2, 
     rangeArray    IN SDO_NUMBER_ARRAY, 
     valueArray    IN SDO_NUMBER_ARRAY, 
     storageParam  IN VARCHAR2 DEFAULT NULL, 
     outGeoRaster  IN OUT SDO_GEORASTER, 
     nodata        IN VARCHAR2 DEFAULT 'FALSE', 
     nodataValue   IN NUMBER DEFAULT 0, 
     parallelParam IN VARCHAR2 DEFAULT NULL);

or

SDO_GEOR_RA.classify(
     inGeoRasters  IN SYS_REFCURSOR, 
     cropArea      IN SDO_NUMBER_ARRAY, 
     expression    IN VARCHAR2, 
     rangeArray    IN SDO_NUMBER_ARRAY, 
     valueArray    IN SDO_NUMBER_ARRAY, 
     storageParam  IN VARCHAR2 DEFAULT NULL, 
     outGeoRaster  IN OUT SDO_GEORASTER, 
     nodata        IN VARCHAR2 DEFAULT 'FALSE', 
     nodataValue   IN NUMBER DEFAULT 0, 
     parallelParam IN VARCHAR2 DEFAULT NULL);
SDO_GEOR_RA.classify(
     inGeoRasters  IN SYS_REFCURSOR, 
     cropArea      IN SDO_GEOMETRY, 
     expression    IN VARCHAR2, 
     rangeArray    IN SDO_NUMBER_ARRAY, 
     valueArray    IN SDO_NUMBER_ARRAY, 
     storageParam  IN VARCHAR2 DEFAULT NULL, 
     outGeoRaster  IN OUT SDO_GEORASTER, 
     nodata        IN VARCHAR2 DEFAULT 'FALSE', 
     nodataValue   IN NUMBER DEFAULT 0, 
     polygonClip   IN VARCHAR2 DEFAULT 'FALSE', 
     parallelParam IN VARCHAR2 DEFAULT NULL);

or

SDO_GEOR_RA.classify(
     inGeoRasters IN SYS_REFCURSOR,
     cropArea     IN SDO_NUMBER_ARRAY,
     expression   IN VARCHAR2,
     rangeArray   IN SDO_NUMBER_ARRAY,
     valueArray   IN SDO_NUMBER_ARRAY,
     storageParam IN VARCHAR2 DEFAULT NULL,
     rasterBlob   IN OUT BLOB,
     outArea      OUT SDO_GEOMETRY,
     outWindow    OUT SDO_NUMBER_ARRAY,
     nodata       IN VARCHAR2 DEFAULT 'FALSE',
     nodataValue  IN NUMBER default 0);
SDO_GEOR_RA.classify(
     inGeoRasters IN SYS_REFCURSOR,
     cropArea     IN SDO_GEOMETRY,
     expression   IN VARCHAR2,
     rangeArray   IN SDO_NUMBER_ARRAY,
     valueArray   IN SDO_NUMBER_ARRAY,
     storageParam IN VARCHAR2 DEFAULT NULL,
     rasterBlob   IN OUT BLOB,
     outArea      OUT SDO_GEOMETRY,
     outWindow    OUT SDO_NUMBER_ARRAY,
     nodata       IN VARCHAR2 DEFAULT 'FALSE',
     nodataValue  IN NUMBER default 0,
     polygonClip  IN VARCHAR2 DEFAULT 'FALSE');

Description

Generates a new GeoRaster object after applying the specified classification operation on the input GeoRaster object or objects.

There are several formats for each of three input GeoRaster object or objects specification options (SDO_GEORASTER, SDO_GEORASTER_ARRAY, SYS_REEFCURSOR). Within each group of formats, you can specify no crop area or a crop area of SDO_NUMBER_ARRAY or SDO_GEOMETRY. For an SDO_GEOMETRY crop area, you can specify a polygon clip option, and the output can be either a GeoRaster object or a BLOB.

Parameters

inGeoRaster

Input GeoRaster object.

georArray

An array of GeoRaster objects. The data type is SDO_GEOR_ARRAY, which is defined as VARRAY(10485760) OF SDO_GEORASTER.

inGeoRasters

Cursor (SYS_REFCURSOR type) for the input GeoRaster objects.

cropArea

Crop area definition. If the data type is SDO_GEOMETRY, the minimum bounding rectangle (MBR) of the geometry object is used as a rectangular crop area to generate the output GeoRaster object. If the parameter polygonClip is TRUE, then only cells within the crop area geometry are processed, and all cells outside the crop area geometry are set to zero (0). If the parameter polygonClip is FALSE, then all cells within the minimum bounding rectangle are processed.

If the data type is SDO_NUMBER_ARRAY, the parameter identifies the upper-left (row, column) and lower-right (row, column) coordinates of a rectangular window, and raster space is assumed.

expression

An arithmetic expression used to classify cell values. See the Usage Notes for more information about specifying this parameter.

rangeArray

A number array that defines ranges for classifying cell values. The array must contain at least one element.

valueArray

A number array that defines the target cell value for each range. The number of elements must be 1 greater than the elements in rangeArray (that is, its length must be rangeArray+1).

storageParam

A string specifying storage parameters, as explained in Storage Parameters.

outGeoRaster

Output GeoRaster object.

rasterBlob

BLOB to hold the output of the processing result. It must exist or have been initialized before the operation.

outArea

An SDO_GEOMETRY object containing the MBR (minimum bounding rectangle) in the model coordinate system of the resulting object.

outWindow

An SDO_NUMBER_ARRAY object identifying the coordinates of the upper-left and lower-right corners of the output window in the cell space.

nodata

The string TRUE specifies if any cell value involved in the expression evaluation has a NODATA value, the expression is evaluated as a NODATA value; thus, the corresponding cells in the output GeoRaster object are to be set to the value specified for the nodataValue parameter. The string FALSE (the default) causes cells with NODATA values to be considered as regular data. NODATA values and value ranges are discussed in NODATA Values and Value Ranges.

nodataValue

The value used to set NODATA cells if the nodata parameter value is the string TRUE.

polygonClip

Ignored if cropArea is null. Otherwise, the string TRUE causes the cropArea geometry to be used to process the data; the string FALSE or a null value causes the minimum bounding rectangle (MBR) of thecropArea geometry to be used to process the data.

parallelParam

Specifies the degree of parallelism for the operation. If specified, must be in the form parallel=n, where n is greater than 1. The database optimizer uses the degree of parallelism specified by this parameter. If not specified, then by default there is no parallel processing. (For more information, see Parallel Processing in GeoRaster.)

Specifying parallelParam means that you cannot roll back the results of this procedure, as explained in the Usage Notes.

Usage Notes

This procedure generates a new raster either in a GeoRaster object or a single BLOB, based on the input GeoRaster object or objects and the expression parameter, which is an arithmetic expression string. For each cell in the output GeoRaster object, expression is evaluated against corresponding cell values in the input GeoRaster object, and the following algorithm is used to calculate cell values of the output GeoRaster object:

if  (value of expression < rangeArray[0])
    cellValue=valueArray[0]
else if (value of expression >= rangeArray[n-1])
    cellValue=valueArray[n]
else if rangeArray[m-1] <= value of expression < rangeArray[m]
     cellValue=valueArray[m]

In the expression calculation:

  • Length of rangeArray is n

  • Length of valueArray is n+1

  • 0 < m < n-1

For more information, see Raster Algebra Language.

There are several formats for each of the input GeoRaster object or objects specification options (SDO_GEORASTER, SDO_GEORASTER_ARRAY, SYS_REFCURSOR). Within each group of formats, you can specify no crop area or a crop area of SDO_NUMBER_ARRAY or SDO_GEOMETRY. For an SDO_GEOMETRY crop area, you can specify a polygon clip option, and the output can be either a GeoRaster object or a BLOB.

If you specify parallelParam, some execution units of the procedure run as autonomous transactions, which means that some changes are committed while the procedure is running and therefore you cannot roll back those changes. If you do not specify this parameter, you can roll back all changes.

Examples

The following example classifies cell values based on the cell values of the first layer. The output is a GeoRaster object.

DECLARE 
  geor       SDO_GEORASTER;
  geor1      SDO_GEORASTER;
  rangeArray SDO_NUMBER_ARRAY;
  valueArray SDO_NUMBER_ARRAY;
BEGIN
  rangeArray:=sdo_number_array(70,80,90,100,110,120,130,140,150,160,170,180);
  valueArray:=sdo_number_array(70,80,90,100,110,120,130,140,150,160,170,180,190);
  select georaster into geor from georaster_table where georid = 1;
  insert into georaster_table values (5, sdo_geor.init('rdt_1', 5)) returning georaster into geor1;
  sdo_geor_ra.classify(geor,'{0}',rangeArray,valueArray,null,geor1);
  update georaster_table set georaster = geor1 where georid = 5;
  commit;
END;
/

The following example classifies cell values based on the cell values of the first layer. The output is a BLOB.

DECLARE 
  geor       SDO_GEORASTER;
  out_lob    BLOB;
  outArea sdo_geometry;
  outWindow sdo_number_array;
  rangeArray SDO_NUMBER_ARRAY;
  valueArray SDO_NUMBER_ARRAY;
BEGIN
  rangeArray:=sdo_number_array(70,80,90,100,110,120,130,140,150,160,170,180);
  valueArray:=sdo_number_array(70,80,90,100,110,120,130,140,150,160,170,180,190);
  select georaster into geor from georaster_table where georid = 1;
  dbms_lob.create_temporary(out_lob, TRUE);
  sdo_geor_ra.classify(geor,'{0}',rangeArray,valueArray,null,out_lob, outArea, outWindow);
  if outWindow is not null then
     dbms_output.put_line('output window: (' || outWindow(1) || ',' ||
                           outWindow(2) || ',' || outWindow(3) || ',' || outWindow(4) || ')');
  end if;
  dbms_lob.freeTemporary(out_lob);
END;
/