How the ST_IsSimple() function works in Mariadb?

The ST_IsSimple() function in MariaDB is used to determine whether a given geometry is simple or not.

Posted on

The ST_IsSimple() function in MariaDB is used to determine whether a given geometry is simple or not. A geometry is considered simple if it does not self-intersect, self-touch, or have any inner rings touching the outer ring. This function is particularly useful when working with complex geometries, such as polygons and multilinestrings, to ensure their validity and integrity.

Syntax

The syntax for the MariaDB ST_IsSimple() function is as follows:

ST_IsSimple(g)
  • g: The geometry value to be checked for simplicity.

The function returns 1 if the geometry is simple, and 0 if it is not.

Examples

Example 1: Checking if a point is simple

This example demonstrates how to check if a point geometry is simple.

SELECT ST_IsSimple(POINT(1, 1));

The following is the output:

1

Since a point geometry cannot self-intersect or have any inner rings, it is always considered simple, and the function returns 1.

Example 2: Checking if a linestring is simple

This example shows how to check if a linestring geometry is simple.

SELECT ST_IsSimple(ST_GEOMFROMTEXT('LINESTRING(0 0, 1 1, 2 0, 3 0)'));

The following is the output:

1

The linestring defined by the coordinates (0 0, 1 1, 2 0, 3 0) does not self-intersect, so it is considered simple, and the function returns 1.

Example 3: Checking if a self-intersecting polygon is simple

This example demonstrates how to check if a self-intersecting polygon is simple.

SELECT ST_IsSimple(ST_POLYGONFROMTEXT('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (2 2, 4 2, 4 4, 2 6, 2 2))'));

The following is the output:

0

The polygon defined by the coordinates (0 0, 10 0, 10 10, 0 10, 0 0) with an inner ring (2 2, 4 2, 4 4, 2 6, 2 2) self-intersects at the point (2 4). Since the polygon is not simple, the function returns 0.

Example 4: Checking if a multilinestring is simple

This example shows how to check if a multilinestring geometry is simple.

SELECT ST_IsSimple(ST_GEOMFROMTEXT('MULTILINESTRING((0 0, 1 1), (2 2, 3 3))'));

The following is the output:

1

The multilinestring geometry, composed of two linestrings (0 0, 1 1) and (2 2, 3 3), does not self-intersect or intersect with each other, so it is considered simple, and the function returns 1.

Example 5: Checking if a complex polygon with touching inner rings is simple

This example demonstrates how to check if a complex polygon with touching inner rings is simple.

SELECT ST_IsSimple(ST_POLYGONFROMTEXT('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (2 2, 4 2, 4 4, 2 4, 2 2), (6 6, 8 6, 8 8, 6 8, 6 6))'));

The following is the output:

0

The polygon defined by the coordinates (0 0, 10 0, 10 10, 0 10, 0 0) with two inner rings (2 2, 4 2, 4 4, 2 4, 2 2) and (6 6, 8 6, 8 8, 6 8, 6 6) is not considered simple because the inner rings touch each other at the point (6 6). Therefore, the function returns 0.

The following are some functions related to the MariaDB ST_IsSimple() function:

  • MariaDB ST_IsRing() function is used to check if a given linestring forms a closed ring.
  • MariaDB ST_IsValid() function is used to check if a given geometry is valid according to the OGC specifications.
  • MariaDB ST_IsEmpty() function is used to check if a given geometry is empty.
  • MariaDB ST_Dimension() function is used to get the dimension of a given geometry.
  • MariaDB ST_GeometryType() function is used to get the geometry type of a given geometry.

Conclusion

The ST_IsSimple() function in MariaDB is a valuable tool for working with spatial data and ensuring the integrity and validity of geometries. By determining whether a geometry is simple or not, you can identify and address potential issues related to self-intersections, inner rings touching outer rings, and other complex geometric scenarios. The examples provided in this article demonstrate how to use the ST_IsSimple() function effectively in different contexts, helping you maintain the quality and consistency of your spatial data.