Filter (geometry データ型)

インデックスが使用可能である場合に、geometry インスタンスが別の geometry インスタンスと交差するかどうかを判断する、高速のインデックス専用積集合メソッドを提供するメソッドです。

geometry インスタンスが別の geometry インスタンスと交差している可能性がある場合、1 を返します。このメソッドは偽陽性の戻り値を生成する場合があり、正確な結果はプランによって異なります。geometry インスタンスの交差が見つからない場合は、正確な 0 値 (真陰性の戻り値) を返します。

インデックスが使用できない場合、または使用されていない場合、このメソッドは、同じパラメータを使用して呼び出した場合の STIntersects() と同じ値を返します。

構文

.Filter ( other_geometry )

引数

項目

定義

other_geometry

Filter() を呼び出したインスタンスと比較される、別の geometry インスタンスです。

戻り値の型

SQL Server の戻り値の型 : bit

CLR の戻り値の型 : SqlBoolean

説明

このメソッドは決定的でなく、正確ではありません。

Filter() を使用して 2 つの 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