ST_CoveredBy — Prüft, ob jeder Punkt von A in B liegt
boolean ST_CoveredBy(geometry geomA, geometry geomB);
boolean ST_CoveredBy(geography geogA, geography geogB);
Gibt true zurück, wenn jeder Punkt in Geometrie/Geografie A innerhalb von Geometrie/Geografie B liegt (d. h. das Innere oder die Grenze von B schneidet). Gleichbedeutend wird getestet, dass kein Punkt von A außerhalb von B liegt.
Mathematisch ausgedrückt: ST_CoveredBy(A, B) ⇔ A ⋂ B = A
ST_CoveredBy ist die Umkehrung von ST_Covers. ST_CoveredBy(A,B) = ST_Covers(B,A).
Im Allgemeinen sollte diese Funktion anstelle von ST_Within verwendet werden, da sie eine einfachere Definition hat, die nicht die Eigenart hat, dass "Grenzen nicht innerhalb ihrer Geometrie liegen".
|
|
|
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 |
Verbessert: 3.0.0 ermöglicht die Unterstützung von GEOMETRYCOLLECTION
|
|
|
Verwenden Sie diese Funktion nicht mit ungültigen Geometrien. Sie werden unerwartete Ergebnisse erhalten. |
Wird durch das GEOS Modul ausgeführt
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.
This example tests a circle covered by another circle.
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_CoveredBy(smallc, smallc) AS smallinsmall,
ST_CoveredBy(smallc, bigc) AS smallcoveredbybig,
ST_CoveredBy(ST_ExteriorRing(bigc), bigc) AS exteriorcoveredbybig,
ST_Within(ST_ExteriorRing(bigc), bigc) AS exteriorwithinbig
FROM circles;
smallinsmall | smallcoveredbybig | exteriorcoveredbybig | exteriorwithinbig --------------+-------------------+----------------------+------------------ t | t | t | f (1 row)