Compartir a través de


Filter (tipo de datos Geometry)

Método que proporciona una forma rápida de intersección solo para índices con la que se puede determinar si una instancia de geometry forma intersección con otra instancia de geometry, siempre y cuando haya un índice disponible.

Devuelve 1 si una instancia de geometry puede formar intersección con otra instancia de geometry. Este método puede generar un resultado falso positivo, y el resultado exacto puede depender del plan. Devuelve el valor preciso 0 (resultado verdadero negativo) si no se encuentra ninguna intersección de las instancias de geometry.

En los casos en los que no haya ningún índice disponible o que éste no se use, el método devolverá los mismos valores que STIntersects() cuando se llama con los mismos parámetros.

Sintaxis

.Filter ( other_geometry )

Argumentos

Term

Definición

other_geometry

Otra instancia de geometry con la que se compara la instancia en la que se invoca Filter().

Tipos de valores devueltos

Tipo de valor devuelto de SQL Server: bit

Tipo de valor devuelto de CLR: SqlBoolean

Comentarios

Este método no es determinista y no es preciso.

Ejemplos

En el ejemplo siguiente, se usa Filter() para determinar si dos instancias de geometry forman intersección.

Código

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