Skip to Main Content

Database Software

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Spatial Index Issue(s) ORA-29902 ORA-13200 ORA-13220 ORA-06512

994501Mar 17 2013 — edited Mar 17 2013
I am having issues running the query below. If I change the values of the SDO_ORDINATE_ARRAY, some values work, some values don't. Below is an example of when it fails. I have successful queries using SDO_NN, so something must be working...

How should I go about figuring out this issue (very new to Spatial)? Working on Windows 7 Prof OS.

select p.building_polygon
from spat.building p, spat.firebuilding f
where p.building_name=f.building_on_fire and
SDO_RELATE(p.building_polygon,
SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),
SDO_ORDINATE_ARRAY(768,278,477,504,155,115)),'mask=ANYINTERACT') = 'TRUE'
*
Error at line 0
ORA-29902: error in executing ODCIIndexStart() routine
ORA-13200: internal error [WINDOW_OBJECT] in spatial indexing.
ORA-13220: failed to compare tile with the geometry
ORA-06512: at "MDSYS.SDO_INDEX_METHOD_10I", line 333

Script used to create objects:
create user spat identified by spat;
grant all privileges to spat;

conn spat/spat;
alter session set current_schema = spat;
SET DEFINE OFF;

CREATE TABLE spat.BUILDING
(
BUILDING_ID VARCHAR2(3),
BUILDING_NAME VARCHAR2(50),
VERTICES_COUNT INT,
BUILDING_POLYGON MDSYS.SDO_GEOMETRY,
CONSTRAINT BUILDING_PK PRIMARY KEY (BUILDING_ID)
);

CREATE TABLE spat.FIREHYDRANT
(
FIREHYDRANT_ID VARCHAR2(3),
HYDRANT_POINT MDSYS.SDO_GEOMETRY,
CONSTRAINT FIREHYDRANT_PK PRIMARY KEY (FIREHYDRANT_ID)
);

CREATE TABLE spat.FIREBUILDING
(
BUILDING_ON_FIRE VARCHAR(50),
CONSTRAINT FIREBUILDING_PK PRIMARY KEY (BUILDING_ON_FIRE)
);

INSERT INTO USER_SDO_GEOM_METADATA
VALUES ('BUILDING', 'BUILDING_POLYGON',
SDO_DIM_ARRAY( SDO_DIM_ELEMENT('X', 0, 820, 0.005),
SDO_DIM_ELEMENT('Y', 0, 580, 0.005)), NULL);

INSERT INTO USER_SDO_GEOM_METADATA
VALUES ('FIREHYDRANT', 'HYDRANT_POINT',
SDO_DIM_ARRAY( SDO_DIM_ELEMENT('X', 0, 820, 0.005),
SDO_DIM_ELEMENT('Y', 0, 580, 0.005)), NULL);

COMMIT;

CREATE INDEX spat.BUILDING_SPATIAL_IDX
ON spat.BUILDING(BUILDING_POLYGON)
INDEXTYPE IS MDSYS.SPATIAL_INDEX;

CREATE INDEX spat.FIREHYDRANT_SPATIAL_IDX
ON spat.FIREHYDRANT(HYDRANT_POINT)
INDEXTYPE IS MDSYS.SPATIAL_INDEX;

COMMIT;

==================UPDATE==========================
Ok, I've noticed something interesting. If I have 3 points in my ordinate array, the errors are thrown. If I have more than 3 points in my ordinate array, it works. Could anyone explain why this is and if there is a way around it?

select p.building_polygon
from spat.building p, elkordy.firebuilding f
where p.building_name=f.building_on_fire
and SDO_ANYINTERACT(p.building_polygon
, SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1)
--,SDO_ORDINATE_ARRAY(232,91,149,226,277,198))) = 'TRUE'; -- USE ONLY ONE
--,SDO_ORDINATE_ARRAY(165,84,168,484,769,534,743,108))) = 'TRUE'; -- USE ONLY ONE

Edited by: AmeerE on Mar 17, 2013 12:19 AM
This post has been answered by Simon Greener on Mar 17 2013
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Apr 14 2013
Added on Mar 17 2013
4 comments
2,764 views