How the CONTAINS() function works in Mariadb?
The CONTAINS()
function is a spatial function that tests whether a geometry contains another geometry.
The CONTAINS()
function is a spatial function that tests whether a geometry contains another geometry. The function returns 1 if the first geometry completely contains the second geometry, 0 if not, or NULL if either argument is NULL or not a valid geometry.
Syntax
The syntax of the CONTAINS()
function is as follows:
CONTAINS(g1, g2)
The function takes two arguments, g1
and g2
, which are the geometries to be tested. The function follows the OpenGIS specifications for the ST_Contains()
function.
Examples
Example 1: Testing whether a polygon contains a point
The following example uses the CONTAINS()
function to test whether a polygon contains a point. The polygon is defined by four points: (0, 0), (0, 10), (10, 10), and (10, 0). The point is defined by the coordinates (5, 5).
SELECT CONTAINS(
ST_GeomFromText('POLYGON((0 0,0 10,10 10,10 0,0 0))'),
ST_GeomFromText('POINT(5 5)')
);
The output is:
1
The output shows that the polygon contains the point, as expected.
Example 2: Testing whether a polygon contains a line
The following example uses the CONTAINS()
function to test whether a polygon contains a line. The polygon is the same as in the previous example. The line is defined by two points: (1, 1) and (9, 9).
SELECT CONTAINS(
ST_GeomFromText('POLYGON((0 0,0 10,10 10,10 0,0 0))'),
ST_GeomFromText('LINESTRING(1 1,9 9)')
);
The output is:
1
The output shows that the polygon contains the line, as expected.
Example 3: Testing whether a polygon contains another polygon
The following example uses the CONTAINS()
function to test whether a polygon contains another polygon. The first polygon is the same as in the previous examples. The second polygon is defined by four points: (2, 2), (2, 8), (8, 8), and (8, 2).
SELECT CONTAINS(
ST_GeomFromText('POLYGON((0 0,0 10,10 10,10 0,0 0))'),
ST_GeomFromText('POLYGON((2 2,2 8,8 8,8 2,2 2))')
);
The output is:
1
The output shows that the first polygon contains the second polygon, as expected.
Example 4: Testing whether a polygon contains an invalid geometry
The following example uses the CONTAINS()
function to test whether a polygon contains an invalid geometry. The polygon is the same as in the previous examples. The invalid geometry is defined by an empty string.
SELECT CONTAINS(
ST_GeomFromText('POLYGON((0 0,0 10,10 10,10 0,0 0))'),
ST_GeomFromText('')
);
The output is:
NULL
The output shows that the function returns NULL, as expected. The function returns NULL if either argument is NULL or not a valid geometry.
Related Functions
There are some other functions that are related to the CONTAINS()
function in Mariadb. They are:
WITHIN()
: This function is the inverse of theCONTAINS()
function. It tests whether a geometry is within another geometry. It returns 1 if the first geometry is completely within the second geometry, 0 if not, or NULL if either argument is NULL or not a valid geometry.INTERSECTS()
: This function tests whether two geometries intersect. It returns 1 if the geometries share any portion of space, 0 if not, or NULL if either argument is NULL or not a valid geometry.DISJOINT()
: This function tests whether two geometries are disjoint. It returns 1 if the geometries do not share any portion of space, 0 if not, or NULL if either argument is NULL or not a valid geometry.OVERLAPS()
: This function tests whether two geometries overlap. It returns 1 if the geometries share some but not all portions of space, 0 if not, or NULL if either argument is NULL or not a valid geometry.
Conclusion
The CONTAINS()
function is a useful function to test whether a geometry contains another geometry. It can handle different types of geometries, such as points, lines, and polygons. It follows the OpenGIS specifications for the ST_Contains()
function. It is similar to the WITHIN()
function, but with the arguments reversed. It is also related to some other functions that test the spatial relationships between geometries.