Partager via


Filter (type de données geometry)

Méthode rapide d'intersection d'index uniquement pour déterminer si une instance geometry entre en intersection avec une autre instance geometry, en supposant qu'un index soit disponible.

Retourne 1 si une instance geometry entre potientiellement en intersection avec une autre instance geometry. Cette méthode peut produire un retour de faux positif, et le résultat exact peut être dépendant du plan. Retourne une valeur 0 exacte (retour négatif vrai) si aucune intersection d'instances geometry n'est trouvée.

Dans les cas où un index n'est pas disponible ou n'est pas utilisé, la méthode retourne les mêmes valeurs que STIntersects() lorsqu'elle est appelée avec les mêmes paramètres.

Syntaxe

.Filter ( other_geometry )

Arguments

Terme

Définition

other_geometry

Autre instance geometry à comparer à l'instance sur laquelle Filter() est appelée.

Types de retours

SQL Server type de retour : bit

Type de retour CLR : SqlBoolean

Notes

Cette méthode n'est pas déterministe et n'est pas précise.

Exemples

L'exemple suivant utilise Filter() pour déterminer si deux instances geometry entrent en intersecion.

Code

CREATE TABLE sample (id int primary key, g geometry)
INSERT INTO sample values
   (0, geometry::Point(0, 0, 0)),
   (1, geometry::Point(0, 1, 0)),
   (2, geometry::Point(0, 2, 0)),
   (3, geometry::Point(0, 3, 0)),
   (4, geometry::Point(0, 4, 0))

CREATE SPATIAL INDEX sample_idx ON sample(g)
WITH (
   bounding_box = (-8000, -8000, 8000, 8000)
)
SELECT id
FROM sample 
WHERE g.Filter(geometry::Parse(
   'POLYGON((-1 -1, 1 -1, 1 1, -1 1, -1 -1))')) = 1