Kategorien:

Geodatenfunktionen

ST_CONTAINS

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

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

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

Bemerkung

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

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

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

A GEOMETRY object that is not a GeometryCollection or FeatureCollection.

geometry_expression_2

A GEOMETRY object that is not a GeometryCollection or FeatureCollection.

Rückgabewerte

Ein BOOLEAN-Wert.

Usage Notes

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

Beispiele

GEOGRAPHY Examples

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))');
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                          |
    +--------------------------------+------------------------+------------------------------------+-------------------------------+
    
Zurück zum Anfang