Kategorien:

Geodatenfunktionen

ST_CONTAINS

Gibt TRUE zurück, wenn ein Objekt vom Typ GEOGRAPHY oder GEOMETRY vollständig innerhalb eines anderen Objekts desselben Typs liegt.

Streng genommen enthält das Objekt g1 genau dann das Objekt g2, wenn keine Punkte von g2 außerhalb von g1 liegen und mindestens ein Punkt des Inneren von B im Inneren von A liegt. Diese Definition enthält bestimmte Feinheiten, die nicht sofort offensichtlich sind. Weitere Details dazu, was „enthält“ bedeutet, finden Sie unter DE-9IM (Dimensionally Extended 9-Intersection Model).

Auch wenn ST_COVERS und ST_CONTAINS ähnlich zu sein scheinen, gibt es doch feine Unterschiede zwischen den beiden Funktionen. Weitere Informationen zu den Unterschieden zwischen „deckt ab“ und „enthält“ finden Sie unter DE-9IM (Dimensionally Extended 9-Intersection Model).

Bemerkung

Diese Funktion unterstützt nicht die Verwendung einer GeometryCollection oder FeatureCollection als Eingabewert.

Tipp

Sie können den Suchoptimierungsdienst verwenden, um die Leistung von Abfragen zu verbessern, die diese Funktion aufrufen. Weitere Details dazu finden Sie unter Suchoptimierungsdienst.

Siehe auch:

ST_WITHIN, ST_COVERS, ST_COVEREDBY

Syntax

ST_CONTAINS( <geography_expression_1> , <geography_expression_2> )

ST_CONTAINS( <geometry_expression_1> , <geometry_expression_2> )
Copy

Argumente

geography_expression_1

Ein GEOGRAPHY-Objekt, das nicht ein GeometryCollection oder FeatureCollection ist.

geography_expression_2

Ein GEOGRAPHY-Objekt, das nicht ein GeometryCollection oder FeatureCollection ist.

geometry_expression_1

Ein GEOMETRY-Objekt, das nicht ein GeometryCollection oder FeatureCollection ist.

geometry_expression_2

Ein GEOMETRY-Objekt, das nicht ein GeometryCollection oder FeatureCollection ist.

Rückgabewerte

Ein BOOLEAN-Wert.

Nutzungshinweise

  • Bei GEOMETRY-Objekten meldet die Funktion einen Fehler, wenn die beiden eingegebenen GEOMETRY-Objekte unterschiedliche SRIDs haben.

Beispiele

GEOGRAPHY-Beispiele

Das folgende Beispiel zeigt eine einfache Verwendung der Funktion 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

GEOMETRY-Beispiele

Die folgende Abfrage zeigt mehrere Beispiele für die Verwendung von ST_CONTAINS. Beachten Sie, wie ST_CONTAINS Folgendes feststellt:

  • Polygon enthält sich selbst.

  • Polygon enthält nicht den LineString, der sich an seinem Rand befindet.

    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