Filter (тип данных geometry)
Быстрый метод определения пересекающихся наборов, используемый только для индексов. Этот метод определяет, пересекается ли экземпляр geometry с другим экземпляром geometry при условии, что индекс доступен.
Возвращает значение 1, если экземпляр geometry может пересекаться с другим экземпляром geometry. В результате этого метода может появиться ложный положительный результат, а точный результат может зависеть от плана. Возвращает точное значение 0 (истинный отрицательный результат), если пересечение экземпляров geometry не обнаружено.
В случаях, когда индекс недоступен или не используется, при вызове метода с теми же параметрами он вернет те же значения, что и STIntersects().
Синтаксис
.Filter ( other_geometry )
Аргументы
Термин |
Определение |
other_geometry |
Другой экземпляр geometry для сравнения с экземпляром, для которого вызван метод Filter(). |
Типы возвращаемых данных
Возвращаемый тип SQL Server: bit
Возвращаемый тип CLR: SqlBoolean
Замечания
Этот метод не является детерминированным или точным.
Примеры
В следующем примере метод Filter() определяет, пересекаются ли два экземпляра geometry.
Код
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
См. также
Справочник
STIntersects (тип данных geometry)