Problem: Features of third-party registered Oracle Spatial tables do not draw at full extent


After registering third-party Oracle Spatial layers with ArcSDE, layers may sometimes fail to draw at full extent.


The most likely cause is invalid shapes. ArcSDE maintains valid shapes internally by applying a set of strict geometry validation rules to each shape type. All ArcSDE commands that create or update shapes use these rules; this guarantees that any data loaded by ArcSDE is valid. These same rules are used by ArcSDE data loaders on geometries that are passed to ArcSDE’s spatial filters. If the geometries do not meet the geometry validation rules, they are not drawn or queried and a ‘Load Buffer’ error could be seen in the sde_<sde_service_name>.log.

The geometries are not validated when third-party Oracle Spatial layers are registered with ArcSDE.

Solution or Workaround

Validate the Oracle Spatial data using Oracle validation tools, such as SDO_GEOM.VALIDATE_GEOMETRY function, before registering with ArcSDE. Refer to the Oracle Spatial Users Guide for more information on geometry validation.

In addition, for versions prior to ArcSDE 9.1, make sure all geometries are valid according to the following validation rules:

Rules for points:

¤ The area and length of points are set to 0.0.
¤ A single point’s envelope is equal to the point’s x,y values.
¤ The envelope of a multipart point shape is set to the minimum bounding box.
Rules for simple lines or linestrings:

¤ Sequential duplicate points are removed.
¤ Each part must have at least two distinct points.
¤ Each part may not intersect itself. The start and end points may be the same, but the resulting ring is not treated as an area shape.
¤ Parts may touch each other at the end points.
¤ The length is the sum of all the parts.
¤ Lines can intersect themselves.
Rules for lines or spaghetti features:

¤ Each part must have at least two distinct points.
¤ Sequential duplicate points are deleted.
¤ The length is the length of all of its parts added together.
Rules and operations on area features:

¤ Delete duplicate sequential occurrences of a coordinate point.
¤ Verify that the line segments close (z-coordinates at start and end points must also be the same) and do not cross.
¤ Correct rotation to counterclockwise. See the previous section for an explanation of how ArcSDE stores area shapes.
¤ For area shapes with holes, make sure holes reside inside the outer boundary.
ArcSDE eliminates any holes that are outside the outer boundary.
¤ Convert a hole that touches an outer boundary at a single common point into an inversion of the area shape.
¤ Combine multiple holes that touch at common points into a single hole.
¤ Multipart area shapes may not overlap; however, two parts may touch at a point.
¤ If two parts have a common boundary, they are merged into one part.
¤ Calculate the total feature perimeter, including the boundaries of all holes in donut polygons, and store the perimeter as the length of the feature.
¤ Calculate the area.
¤ Calculate the envelope.

For ArcSDE 9.1, 9.2, and 9.3, run the following commands to check if the feature class has any invalid shapes:

¤ sdelayer -o feature_info
¤ sdelayer -o list