Returns the smallest cell that contains the object passed in. The Tessellate_Index function is based on the concept of a multiple level g_nx by g_ny grid. The return value is suitable to use as an index key.
Argument … |
Specifies … |
o_xmin, |
the coordinates of the object rectangle. The data type of o_xmin, o_ymin, o_xmax, and o_ymax is FLOAT. |
u_xmin, |
the coordinates of the universe of interest. The data type of u_xmin, u_ymin, u_xmax, and u_ymax is FLOAT. |
g_nx, |
the number of grid cells to divide the universe into in the X and Y dimensions. The data type of g_nx and g_ny is INTEGER. |
levels |
the number of levels in the two-dimensional grid. There are always levels + 1 levels, where level 0 is the entire universe. Higher levels are more granular. The data type is INTEGER and the range of values is 1 to 15. |
scale |
the scaling factor between grid levels. For example, if g_nx * g_ny is 100x100 and level is 2 and scale is 0.1, you have a 3 level grid (100x100, 10x10, 1x1). The data type of scale FLOAT and the value must be greater than 0.0 and less than 1.0. |
shift |
an INTEGER value that represents the number of times to shift the grid at each level. If the value of shift is 0, the method performs no shifting. If the value of shift is 1, the method creates four grids for each level, where it shifts each of the four grids in a unique manner. Shifting the grid helps to avoid assigning smaller spatial objects to large cells if they cross a grid cell boundary. |
The cell ID that is returned is an INTEGER value that codes for the cell number and level. The upper 28 bits identifies the cell number, and the lower four bits identifies the level.
Cell ID: |
|
Cell Number |
Level |
<------------ 28 bits -------------><-- 4 bits -->
To derive the cell number from the returned cell ID value using SQL, use:
return_value / 16
To derive the level from the returned cell ID using SQL, use:
return_value MOD 16
Here is an example that shows the cell numbering of a single-level grid (of unspecified size) that contains 16 cells.
This function is also available as an ST_Geometry method, which offers better performance.
CREATE TABLE shapes_index
(skey INTEGER
,cellID INTEGER);
INSERT INTO shapes_index
SELECT SYSSPATIAL.Tessellate_Index(shape.ST_MBR_Xmin(),
shape.ST_MBR_Ymin(), shape.ST_MBR_Xmax(), shape.ST_MBR_Ymax(),
-180, 0, 0, 90, 500, 500, 1, 0.01, 0)
FROM sample_shapes;