- Kategorien:
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:
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
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))');SELECT ST_CONTAINS(g1, g2) FROM geospatial_table_01; +---------------------+ | ST_CONTAINS(G1, G2) | |---------------------| | True | +---------------------+
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);
+--------------------------------+------------------------+------------------------------------+-------------------------------+ | ST_CONTAINS(POLY, POLY_INSIDE) | ST_CONTAINS(POLY,POLY) | ST_CONTAINS(POLY,LINE_ON_BOUNDARY) | ST_CONTAINS(POLY,LINE_INSIDE) | |--------------------------------+------------------------+------------------------------------+-------------------------------| | True | True | False | True | +--------------------------------+------------------------+------------------------------------+-------------------------------+