Поделиться через


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)

Другие ресурсы

Расширенные методы экземпляров Geometry