SpatialDB Advisor
SQL> describe ALL_SDO_GEOM_METADATA Name Null? Type ----------------------------------------------------------------------- -------- ------------------- OWNER NOT NULL VARCHAR2(32) TABLE_NAME NOT NULL VARCHAR2(32) COLUMN_NAME NOT NULL VARCHAR2(1024) DIMINFO MDSYS.SDO_DIM_ARRAY SRID NUMBER
SQL> describe MDSYS.SDO_DIM_ARRAY MDSYS.SDO_DIM_ARRAY VARRAY(4) OF MDSYS.SDO_DIM_ELEMENT Name Null? Type ----------------------------------------------------------------------- -------- ------------ SDO_DIMNAME VARCHAR2(64) SDO_LB NUMBER SDO_UB NUMBER SDO_TOLERANCE NUMBER
INSERT INTO ALL_SDO_GEOM_METADATA (
OWNER,
TABLE_NAME,
COLUMN_NAME,
DIMINFO,
SRID
) VALUES (
'CODESYS',
'GEODLINE2D',
'GEOM',
MDSYS.SDO_DIM_ARRAY(
MDSYS.SDO_DIM_ELEMENT('Longitude',-180,180,0.05),
MDSYS.SDO_DIM_ELEMENT('Latitude' ,-90,90,0.05)),
8311);
FUNCTION VALIDATE_GEOMETRY RETURNS VARCHAR2 Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- THEGEOMETRY SDO_GEOMETRY IN THEDIMINFO SDO_DIM_ARRAY IN FUNCTION VALIDATE_GEOMETRY RETURNS VARCHAR2 Argument Name Type In/Out Default? ------------------------------ ----------------------- ------ -------- THEGEOMETRY SDO_GEOMETRY IN TOLERANCE NUMBER IN
CREATE INDEX projline2d_geom
ON projline(geom)
INDEXTYPE IS mdsys.spatial_index
PARAMETERS('SDO_LEVEL=8');
SQL Error: ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine ORA-13249: internal error in Spatial index: [mdidxrbd] ORA-13249: Error in Spatial index: index build failed ORA-13206: internal error [Tessellate] while creating the spatial index ORA-13249: Error in spatial index: [mdpridxtessellate] ORA-13200: internal error [ROWID:AAAPofAAJAAAPNIAAA] in spatial indexing. ORA-13019: coordinates out of bounds ORA-06512: at "MDSYS.SDO_INDEX_METHOD_9I", line 7 ORA-06512: at line 1 29855. 00000 - "error occurred in the execution of ODCIINDEXCREATE routine"
CREATE INDEX projline2d_geom
ON projline(geom)
INDEXTYPE IS mdsys.spatial_index
PARAMETERS('sdo_indx_dims=2, layer_gtype=MULTILINE');
So what is the use of putting values into these fields when using RTree indexing? Geospatial practitioners tend to use the SDO_DIM_ARRAY to define the extent of the data because some GIS packages do actually use it for "Zoom to Extent" type operations (which would be far faster than SELECT SDO_AGGR_MBR(geom) FROM table!).
SELECT mdsys.sdo_geom.validate_geometry(a.geom,asgm.diminfo)
FROM all_sdo_geom_metadata asgm,
projline2d a
WHERE asgm.owner = 'CODESYS'
AND asgm.table_name = 'PROJLINE2D'
AND asgm.column_name = 'GEOM';
SELECT mdsys.sdo_geom.validate_geometry(a.geom,b.sdo_tolerance)
FROM (SELECT t.sdo_tolerance
FROM all_sdo_geom_metadata asgm,
TABLE(asgm.diminfo) t
WHERE asgm.owner = 'CODESYS'
AND asgm.table_name = 'PROJLINE2D'
AND asgm.column_name = 'GEOM'
AND t.sdo_dimname = 'X'
) b,
projline2d a;

<<Oracle Spatial Forum - Melbourne April 2007 >>Oracle Spatial Mapping and Map Rendering Performance Tips