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


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

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

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

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

Синтаксис

.Filter ( other_geography )

Аргументы

Термин

Определение

other_geography

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

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

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

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

Замечания

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

Примеры

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

Код

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;

См. также

Справочник

STIntersects (географический тип данных)

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

Расширенные методы в экземплярах географических объектов