Filter(geometry 数据类型)
提供了一种快速、仅索引相交方法的方法,可确定一个 geometry 实例是否与另一个 geometry 实例相交(假定有索引可用)。
如果 geometry 实例与另一个 geometry 实例存在相交的可能,则返回 1。该方法可能产生负正返回,并且确切结果可能是依赖于计划的。如果不与任何 geometry 实例相交,则返回精确的 0 值(真负返回)。
在无索引可用或未使用索引的情况下,该方法返回的值将与使用相同参数调用 STIntersects() 返回的值相同。
语法
.Filter ( other_geometry )
参数
字词 |
定义 |
other_geometry |
将与在其上调用 Filter() 的实例进行比较的另一个 geometry 实例。 |
返回类型
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