Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 17 » SQL Anywhere Server - Spatial Data Support » Spatial types and functions » ST_Geometry type

ST_Equals method

Tests if an ST_Geometry value is spatially equal to another ST_Geometry value.

Name Type Description



The other geometry value that is to be compared to the geometry-expression.

  • BIT

    Returns 1 if the two geometry values are spatially equal, otherwise 0.


Tests if an ST_Geometry value is equal to another ST_Geometry value.

The test for spatial equality is performed by first comparing the bounding rectangles of the two geometries. If they are not equal within tolerance, the two geometries are considered not to be equal, and 0 is returned. Otherwise, the database server returns 1 if geometry-expression.ST_SymDifference( geo2 ) is the empty set, otherwise it returns 0.

The SQL/MM standard defines ST_Equals only in terms of ST_SymDifference, without an additional bounding box comparison. There are some geometries that generate an empty result with ST_SymDifference while their bounding boxes are not equal. These geometries would be considered equal by the SQL/MM standard but are not considered equal in the software. This difference can arise if one or both geometries contain spikes or punctures.

Two geometry values can be considered equal even though they have different representations. For example, two linestrings may have opposite orientations but contain the same set of points in space. These two linestrings are considered equal by ST_Equals but not by ST_OrderingEquals.

ST_Equals may be limited by the resolution of the spatial reference system or the accuracy of the data.

Note If the geometry-expression contains circularstrings, then these are interpolated to line strings.
  • SQL/MM (ISO/IEC 13249-3: 2006)



The following example returns the result 16. The Shape corresponding to ShapeID the result 16 contains the same points but in a different order as the specified polygon.

SELECT ShapeID FROM SpatialShapes
WHERE Shape.ST_Equals( NEW ST_Polygon( 'Polygon ((2 0, 1 2, 0 0, 2 0))' ) ) = 1

The following example returns the result 1, indicating that the two linestrings are equal even though they contain a different number of points specified in a different order, and the intermediate point is not exactly on the line. The intermediate point is about 3.33e-7 away from the line with only two points, but that distance less than the tolerance 1e-6 for the "Default" spatial reference system (SRID 0).

SELECT NEW ST_LineString( 'LineString( 0 0, 0.333333 1, 1 3 )' )
        .ST_Equals( NEW ST_LineString( 'LineString( 1 3, 0 0 )' ) )