Filtr (geometrię typu danych)
metoda , która oferuje szybki, tylko do indeksu przecięcia metoda do określania, czy geometrywystąpienie przecina inną geometrywystąpienie, przy założeniu, że indeks jest dostępna.
Zwraca wartość 1, jeśli geometry wystąpienie potencjalnie przecina inną geometry wystąpienie.Ta metoda może generować fałszywych pozytywnych powrotu i dokładne wyniki mogą być zależny od planu.Zwraca dokładną wartość 0 (true ujemny zwrot), jeśli nie ma żadnych przecięcia geometry odnaleziono wystąpień.
W przypadkach, gdy indeks jest niedostępny lub nie jest używany, metoda zwraca te same wartości, jak STIntersects() po wywołaniu z tych samych parametrów.
Składnia
.Filter ( other_geometry )
Argumenty
Termin |
Definicja |
other_geometry |
Inny jest geometry wystąpienie porównania wystąpienie , na którym Filter() jest wywoływana. |
Zwracane typy
SQL Serverzwracany typ: bit
Zwracany typ CLR: SqlBoolean
Uwagi
Ta metoda jest przewidywalne i nie jest dokładne.
Przykłady
W poniższym przykładzie użyto Filter() do określenia, czy dwie geometry wystąpień przecinają się wzajemnie.
Kod
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
Zobacz także