ST_CoveredBy — Tests si chaque point de A se trouve dans B
boolean ST_CoveredBy(
geometry geomA, geometry geomB)
;
boolean ST_CoveredBy(
geography geogA, geography geogB)
;
Renvoie true
si chaque point de la geometry/geography A se trouve à l'intérieur (c'est-à-dire coupe l'intérieur ou la limite) de la geometry/geography B. De manière équivalente, teste qu'aucun point de A ne se trouve à l'extérieur (dans l'extérieur) de B.
En termes mathématiques : ST_CoveredBy(A, B) ⇔ A ⋂ B = A
ST_CoveredBy est le contraire de ST_Covers. Ainsi, ST_CoveredBy(A,B) = ST_Covers(B,A)
.
En général, cette fonction devrait être utilisée à la place de ST_Within, car elle a une définition plus simple qui n'a pas la particularité que "les limites ne sont pas à l'intérieur de leur géométrie".
Cette fonction inclut une comparaison de la boîte englobante qui utilise tous les index disponibles sur les géométries. Pour éviter l'utilisation d'un index, utilisez la fonction |
Amélioration : 3.0.0 a permis la prise en charge de |
N'utilisez pas cette fonction avec des géométries non valides. Vous obtiendrez des résultats inattendus. |
Effectué par le module GEOS
Disponibilité : 1.2.2
NOTE : il s'agit de la version "autorisée" qui renvoie un booléen et non un entier.
Il ne s'agit pas d'une norme de l'OGC, mais Oracle l'a également.
--a circle coveredby a circle 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 exeriorwithinbig FROM (SELECT ST_Buffer(ST_GeomFromText('POINT(1 2)'), 10) As smallc, ST_Buffer(ST_GeomFromText('POINT(1 2)'), 20) As bigc) As foo; --Result smallinsmall | smallcoveredbybig | exteriorcoveredbybig | exeriorwithinbig --------------+-------------------+----------------------+------------------ t | t | t | f (1 row)