Filter (тип данных geometry)

Быстрый метод определения пересекающихся наборов, используемый только для индексов. Этот метод определяет, пересекается ли экземпляр geometry с другим экземпляром geometry при условии, что индекс доступен.

Возвращает значение 1, если экземпляр geometry может пересекаться с другим экземпляром geometry. В результате этого метода может появиться ложный положительный результат, а точный результат может зависеть от плана. Возвращает точное значение 0 (истинный отрицательный результат), если пересечение экземпляров geometry не обнаружено.

В случаях, когда индекс недоступен или не используется, при вызове метода с теми же параметрами он вернет те же значения, что и STIntersects().

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Синтаксис

.Filter ( other_geometry )

Аргументы

  • other_geometry
    Другой экземпляр geometry для сравнения с экземпляром, для которого вызван метод Filter().

Типы возвращаемых данных

Возвращаемый тип SQL Server: bit

Возвращаемый тип CLR: SqlBoolean

Замечания

Этот метод не является детерминированным или точным.

Примеры

В следующем примере метод Filter() определяет, пересекаются ли два экземпляра geometry.

CREATE TABLE sample (id int primary key, g geometry);
GO
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));
GO
SELECT id
FROM sample 
WHERE g.Filter(geometry::Parse('POLYGON((-1 -1, 1 -1, 1 1, -1 1, -1 -1))')) = 1;

См. также

Справочник

STIntersects (тип данных geometry)

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

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