Error: Oracle Spatial geodetic failure occurs with a point shape filter

Error Message

** This issue has been resolved in ArcGIS 9.0. **

When using a point geometry as a filter, spatial queries on geodetic data stored in SDO_GEOMETRY may fail with the following error message:

"ORA-29902: error in executing ODCIIndexStart() routine
ORA-06533: Subscript beyond count
ORA-06512: at "MDSYS.SDO_CS", line 160"


Oracle geodetic spatial data is processed differently than other SDO_GEOMETRY data. To perform a spatial query using a filter geometry other than a point, Oracle requires that the geometry first pass through Oracle's SDO_CS.VIEWPORT_TRANSFORM function. This function converts any geometry with an extent greater than half the circumference of the Earth into two smaller geometries.

Point geometries cannot be processed through SDO_CS.VIEWPORT_TRANSFORM. If they are, this error can occur.

Some ArcSDE client applications calculate the minimum-bounding rectangle (MBR) of a filter geometry and pass the MBR to SDO_CS.VIEWPORT_TRANSFORM. If the filter geometry was a single point, the MBR will also be a single point, and SDO_CS.VIEWPORT_TRANSFORM will fail.

This problem can be reproduced in ArcMap by performing a selection operation such as 'Select by graphics' using a point graphic as the selection geometry. This problem does not occur with identify operations, where the filter geometry passed to ArcSDE is a very small rectangle, not a point.

This problem can also occur when performing a similar spatial query on Oracle geodetic data using the ArcSDE C or Java APIs. This can be worked around by specifying a very small rectangle as the filter geometry rather than a single point.

Solution or Workaround

This problem is fixed in ArcSDE 9.0. It does not affect ArcSDE for Oracle 8i, because Oracle 8i does not have geodetic data.