Catégories :

Fonctions géospatiales

ST_CONTAINS

Renvoie TRUE si un objet GEOGRAPHY ou GEOMETRY est complètement à l’intérieur d’un autre objet du même 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).

Bien que ST_COVERS et ST_CONTAINS puissent sembler similaires, les deux fonctions présentent des différences subtiles. Pour plus de détails sur les différences entre « covers » (couvre) et « contains » (contient), voir le modèle à 9 intersections dimensionnellement étendu (DE-9IM).

Note

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

Astuce

Vous pouvez utiliser le service d’optimisation de recherche pour améliorer les performances des requêtes qui appellent cette fonction. Pour plus de détails, voir Service d’optimisation de la recherche.

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> )
Copy

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

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

geometry_expression_2

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

Renvoie

BOOLEAN.

Notes sur l’utilisation

  • Pour les objets GEOMETRY, la fonction signale une erreur si les deux objets GEOMETRY en entrée ont des SRIDs différents.

Exemples

Exemples GEOGRAPHY

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))');
Copy
SELECT ST_CONTAINS(g1, g2) 
    FROM geospatial_table_01;
+---------------------+
| ST_CONTAINS(G1, G2) |
|---------------------|
| True                |
+---------------------+
Copy

Exemples GEOMETRY

La requête ci-dessous montre plusieurs exemples d’utilisation de ST_CONTAINS. Notez comment ST_CONTAINS détermine que :

  • Le polygone se contient lui-même.

  • Le polygone ne contient pas la LineString qui se trouve sur son bord.

    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);
    
    Copy
    +--------------------------------+------------------------+------------------------------------+-------------------------------+
    | ST_CONTAINS(POLY, POLY_INSIDE) | ST_CONTAINS(POLY,POLY) | ST_CONTAINS(POLY,LINE_ON_BOUNDARY) | ST_CONTAINS(POLY,LINE_INSIDE) |
    |--------------------------------+------------------------+------------------------------------+-------------------------------|
    | True                           | True                   | False                              | True                          |
    +--------------------------------+------------------------+------------------------------------+-------------------------------+
    
    Copy