Compartilhar via


Filter (tipo de dados de geografia)

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

Retornará 1 se uma instância geography fizer uma intersecção potencial com outra instância geography. 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 negativo) se houver nenhuma intersecção de instâncias geography localizada.

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

Sintaxe

.Filter ( other_geography )

Argumentos

Termo

Definição

other_geography

É outra instância de geography para comparação 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 geography.

Código

CREATE table sample (id int primary key, g geography);
INSERT INTO sample values
   (0, geography::Point(45, -120, 4326)),
   (1, geography::Point(45, -120.1, 4326)),
   (2, geography::Point(45, -120.2, 4326)),
   (3, geography::Point(45, -120.3, 4326)),
   (4, geography::Point(45, -120.4, 4326))

CREATE spatial index sample_idx on sample(g);
SELECT id
FROM sample 
WHERE g.Filter(geography::Parse(
   'POLYGON((-120.1 44.9, -119.9 44.9, -119.9 45.1, -120.1 45.1, -120.1 44.9))')) = 1;

Consulte também

Referência

STIntersects (tipo de dados geography)

Outros recursos

Métodos estendidos em instâncias geography