Name

ST_Covers — Prüft, ob jeder Punkt von B in A liegt

Übersicht

boolean ST_Covers(geometry geomA, geometry geomB);

boolean ST_Covers(geography geogpolyA, geography geogpointB);

Beschreibung

Gibt true zurück, wenn jeder Punkt in Geometrie/Geografie B innerhalb von Geometrie/Geografie A liegt (d. h. das Innere oder den Rand von A schneidet). Äquivalent dazu wird getestet, dass kein Punkt von B außerhalb (im Äußeren von) A liegt.

Mathematisch ausgedrückt: ST_Covers(A, B) ⇔ A ⋂ B = B

ST_Covers ist die Umkehrung von ST_CoveredBy. ST_Covers(A,B) = ST_CoveredBy(B,A).

Im Allgemeinen sollte diese Funktion anstelle von ST_Contains verwendet werden, da sie eine einfachere Definition hat, die nicht die Eigenart hat, dass "Geometrien ihre Begrenzung nicht enthalten".

[Anmerkung]

Diese Funktion beinhaltet automatisch einen Bounding-Box-Vergleich, der alle räumlichen Indizes verwendet, die für die Geometrien verfügbar sind. Um die Verwendung von Indizes zu vermeiden, verwenden Sie die Funktion _ST_Covers.

Verbessert: 3.0.0 ermöglicht die Unterstützung von GEOMETRYCOLLECTION

[Wichtig]

Verwenden Sie diese Funktion nicht mit ungültigen Geometrien. Sie werden unerwartete Ergebnisse erhalten.

Wird durch das GEOS Modul ausgeführt

Verbessert: 2.4.0 Unterstützung für Polygon in Polygon und Linie in Polygon für Geografietypen hinzugefügt

Verbessert: 2.3.0 Verbesserung des PIP-Kurzschlusses für Geometrien, erweitert um die Unterstützung von MultiPoints mit wenigen Punkten. Frühere Versionen unterstützten nur Punkte in Polygonen.

Verfügbarkeit: 1.5 - Unterstützung von geograpischen Koordinaten.

Verfügbarkeit: 1.2.2

HINWEIS: Dies ist die "zulässige" Version, die einen booleschen Wert und keine ganze Zahl zurückgibt.

Kein OGC-Standard, aber Oracle hat ihn auch.

Beispiele

Beispiel für Geometrie

This example tests a circle covering another circle.

Code
WITH circles AS (
  SELECT ST_Buffer(center, 10) AS smallc,
         ST_Buffer(center, 20) AS bigc
  FROM (SELECT 'POINT(1 2)'::geometry AS center) AS p
)
SELECT
  ST_Covers(smallc, smallc) AS smallinsmall,
  ST_Covers(smallc, bigc) AS smallcoversbig,
  ST_Covers(bigc, ST_ExteriorRing(bigc)) AS bigcoversexterior,
  ST_Contains(bigc, ST_ExteriorRing(bigc)) AS bigcontainsexterior
FROM circles;
Ausgabe von Rastern
smallinsmall | smallcoversbig | bigcoversexterior | bigcontainsexterior
--------------+----------------+-------------------+---------------------
 t            | f              | t                 | f
(1 row) 
Figure
Geometry figure for visual-st-covers-01

Geography example

This example compares a point with a 300-meter buffer against a point and against a 10-meter buffer around that point.

Code
SELECT ST_Covers(geog_poly, geog_pt) As poly_covers_pt,
  ST_Covers(ST_Buffer(geog_pt, 10), geog_pt) As buff_10m_covers_cent
  FROM (SELECT ST_Buffer('SRID=4326;POINT(-99.327 31.4821)'::geography, 300) As geog_poly,
        'SRID=4326;POINT(-99.33 31.483)'::geography As geog_pt ) As foo;
Ausgabe von Rastern
poly_covers_pt | buff_10m_covers_cent
----------------+------------------
 f              | t