Home    |    Concepts   |   API   |   Samples
Concepts > Geometry
Basic Principles

ArcSDE uses vector geometry to represent features with discrete boundaries. A feature is simply an object that has a location stored as one of its properties (or fields) in the row. Typically, features are spatially represented as points, lines, polygons, or annotation, and are organized into feature classes. Thus, feature classes are collections of features of the same type with a common spatial representation and set of attributes, such as a line feature class for roads.

The following are brief definitions of some feature classes and their subclasses in ArcSDE.

Interior, boundary, exterior

All geometries occupy a position in space defined by its interior, boundary, and exterior.

  • The exterior of a geometry is all space not occupied by the geometry.
  • The boundary of a geometry serves as the interface between its interior and exterior.
  • The interior is the space occupied by the geometry.

The subclass inherits the interior and exterior properties directly; however, the boundary property differs for each. The boundary function takes a geometry and returns a geometry that represents the source geometry's boundary.

Simple or nonsimple

Some subclasses of geometry (linestrings, multipoints, and multilinestrings) are either simple or nonsimple. They are simple if they obey all topological rules imposed on the subclass and nonsimple if they bend a few.

  • A linestring is simple if it does not intersect its interior.
  • A multipoint is simple if none of its elements occupy the same coordinate space.
  • A multilinestring is simple if none of its element's interiors are intersected by its own interior.

The issimple predicate function takes a geometry and returns t (TRUE) if the geometry is simple and f (FALSE) otherwise.

Empty or not empty

A geometry is empty if it does not have any points. An empty geometry has a NULL envelope, boundary, interior, and exterior. An empty geometry is always simple and can have Z coordinates or measures. Empty linestrings and multilinestrings have a 0 length. Empty polygons and multipolygons have a 0 area.

The isempty predicate function takes a geometry and returns t (TRUE) if the geometry is empty and f (FALSE) otherwise.

Number of points

A geometry can have zero or more points. A geometry is considered empty if it has zero points. The point subclass is the only geometry that is restricted to zero or one point; all other subclasses can have zero or more.

Envelope

The envelope of a geometry is the bounding geometry formed by the minimum and maximum (x,y) coordinates. The envelopes of most geometries form a boundary rectangle; however, the envelope of a point is the point since its minimum and maximum coordinates are the same, and the envelope of a horizontal or vertical linestring is a linestring represented by the boundary (the endpoints) of the source linestring.

The envelope function takes a geometry and returns a geometry that represents the source geometry's envelope.

Dimension

A geometry can have a dimension of 0, 1, or 2.

The dimensions are:

  • 0—Has neither length or area
  • 1—Has a length
  • 2—Contains area

The point and multipoint subclasses have a dimension of 0. Points represent zero-dimensional features that can be modeled with a single coordinate, while multipoints represent data that must be modeled with a cluster of unconnected coordinates.

The subclasses linestring and multilinestring have a dimension of 1. They store road segments, branching river systems, and any other features that are linear in nature.

Polygon and multipolygon subclasses have a dimension of 2. Forest stands, parcels, water bodies, and other features whose perimeter encloses a definable area can be rendered by either the polygon or multipolygon data type.

Dimension is important not only as a property of the subclass but it also plays a part in determining the spatial relationship of two features. The dimension of the resulting feature or features determines whether or not the operation was successful. The dimension of the features is examined to determine how they should be compared.

The dimension function takes a geometry and returns its dimension as an integer.

Z-coordinates

Some geometries have an associated altitude or depth. Each of the points that form the geometry of a feature can include an optional Z-coordinate that represents an altitude or depth normal to the earth's surface.

The is3d predicate function takes a geometry and returns t (TRUE) if the function has Z-coordinates and f (FALSE) otherwise.

Measures

Measures are values assigned to each coordinate. The value represents anything that can be stored as a double-precision number.

The ismeasured predicate function takes a geometry and returns t (TRUE) if it contains measures and f (FALSE) otherwise.

Spatial reference system

The spatial reference system identifies the coordinate transformation matrix for each geometry. All spatial reference systems known to the database are stored in the spatial_references table. The srid function takes a geometry and returns its spatial reference identifier as an integer.

Shape table functions

A shape table, or s-table, is a simple, in-memory structure that allows shapes to be stored, deleted, retrieved, and searched both spatially and by their feature ID. Shape tables are created and accessed by the client application for very rapid access to the shapes, and have no interaction with the ArcSDE server. Shape tables are designed for primarily read-only applications, like routing applications, that demand repeated, fast access to a limited set of shapes.

To the application developer, a shape table looks like a local cache of data that can be loaded and repeatedly searched without the burden of network traffic and DBMS load. As they are referenced by a handle, an application can create and use multiple s-tables.

S-tables store shapes and associated pointers (users determine to what the pointers point) and allow shapes to be accessed by spatial search or feature ID.

Shapes returned by SE_stable_search and SE_stable_get_shape are read-only. You cannot use these shapes for certain arguments in a wide variety of shape functions that create and edit shapes. The table below lists the functions and arguments.

Shape function arguments that will not allow shapes from an s-table.

feedback | privacy | legal