Catégories :

Fonctions géospatiales

ST_CONTAINS

Returns TRUE if a GEOGRAPHY or GEOMETRY object is completely inside another object of the same type.

Plus strictement, l’objet g1 contient l’objet g2 si et seulement si aucun point de g2 ne se trouve à l’extérieur de g1, et au moins un point de l’intérieur de B se trouve à l’intérieur de A. Il y a certaines subtilités dans cette définition qui ne sont pas immédiatement évidentes. Pour plus de détails sur la signification de « contains » (contient), voir le modèle à 9 intersections dimensionnellement étendu (DE-9IM).

Although ST_COVERS and ST_CONTAINS might seem similar, the two functions have subtle differences. For details on the differences between « covers » and « contains », see the Dimensionally Extended 9-Intersection Model (DE-9IM).

Note

Cette fonction ne prend pas en charge l’utilisation de GeometryCollection ou de FeatureCollection comme valeurs d’entrée.

Voir aussi :

ST_WITHIN , ST_COVERS , ST_COVEREDBY

Syntaxe

ST_CONTAINS( <geography_expression_1> , <geography_expression_2> )

ST_CONTAINS( <geometry_expression_1> , <geometry_expression_2> )

Arguments

geography_expression_1

Un objet GEOGRAPHY qui n’est pas un GeometryCollection ou un FeatureCollection.

geography_expression_2

Un objet GEOGRAPHY qui n’est pas un GeometryCollection ou un FeatureCollection.

geometry_expression_1

A GEOMETRY object that is not a GeometryCollection or FeatureCollection.

geometry_expression_2

A GEOMETRY object that is not a GeometryCollection or FeatureCollection.

Renvoie

BOOLEAN.

Usage Notes

  • For GEOMETRY objects, the function reports an error if the two input GEOMETRY objects have different SRIDs.

Exemples

GEOGRAPHY Examples

Cela montre une utilisation simple de la fonction ST_CONTAINS :

create table geospatial_table_01 (g1 GEOGRAPHY, g2 GEOGRAPHY);
insert into geospatial_table_01 (g1, g2) values 
    ('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))', 'POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))');
SELECT ST_CONTAINS(g1, g2) 
    FROM geospatial_table_01;
+---------------------+
| ST_CONTAINS(G1, G2) |
|---------------------|
| True                |
+---------------------+

GEOMETRY Examples

The query below shows several examples of using ST_CONTAINS. Note how ST_CONTAINS determines that:

  • The Polygon contains itself.

  • The Polygon does not contain the LineString that is on its border.

    SELECT ST_CONTAINS(poly, poly_inside),
          ST_CONTAINS(poly, poly),
          ST_CONTAINS(poly, line_on_boundary),
          ST_CONTAINS(poly, line_inside)
      FROM (SELECT
        TO_GEOMETRY('POLYGON((-2 0, 0 2, 2 0, -2 0))') AS poly,
        TO_GEOMETRY('POLYGON((-1 0, 0 1, 1 0, -1 0))') AS poly_inside,
        TO_GEOMETRY('LINESTRING(-1 1, 0 2, 1 1)') AS line_on_boundary,
        TO_GEOMETRY('LINESTRING(-2 0, 0 0, 0 1)') AS line_inside);
    
    +--------------------------------+------------------------+------------------------------------+-------------------------------+
    | ST_CONTAINS(POLY, POLY_INSIDE) | ST_CONTAINS(POLY,POLY) | ST_CONTAINS(POLY,LINE_ON_BOUNDARY) | ST_CONTAINS(POLY,LINE_INSIDE) |
    |--------------------------------+------------------------+------------------------------------+-------------------------------|
    | True                           | True                   | False                              | True                          |
    +--------------------------------+------------------------+------------------------------------+-------------------------------+
    
Revenir au début