Compartilhar via


Filter (tipo de dados de geometria)

Um método que oferece um método de intersecção somente de índice rápido para determinar se uma instância geometry faz intersecção com outra instância geometry, considerando que um índice esteja disponível.

Retornará 1 se uma instância geometry fizer uma intersecção potencial com outra instância geometry. Esse método pode gerar um retorno de falso positivo e o resultado exato poderá ser dependente de plano. Retornará um valor 0 preciso (retorno verdadeiro positivo) se houver nenhuma intersecção de instâncias geometry localizada.

Nos casos nos quais um índice não está disponível ou não é usado, o método retornará os mesmos valores que STIntersects() quando chamado com os mesmos parâmetros.

Sintaxe

.Filter ( other_geometry )

Argumentos

Termo

Definição

other_geometry

É outra instância de geometry para comparar com a instância na qual Filter() é invocado.

Tipos de retorno

SQL Server tipo de retorno: bit

Tipo de retorno CLR: SqlBoolean

Comentários

Esse método não é determinista e não é preciso.

Exemplos

O exemplo a seguir usa Filter() para determinar se há interseção entre duas instâncias de geometry.

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