Filter (geometry)

Filter (geometry)#

A method that offers a fast, index-only intersection method to determine if a geometry instance intersects another geometry instance, assuming an index is available.

Returns 1 if a geometry instance potentially intersects another geometry instance. This method may produce a false positive return, and the exact result may be plan-dependent. Returns an accurate 0 value (true negative return) if there is no intersection of geometry instances found.

In cases where an index is not available, or is not used, the method will return the same values as STIntersects() when called with the same parameters.

Syntax#

.Filter ( other_geometry )

Arguments#

other_geometry

Is another geometry instance to compare against the instance on which Filter() is invoked.

Return type#

bit

Remarks#

This method is not deterministic and is not precise.

Example#

Use Filter() to determine if two geometry instances intersect each other.

Note

The spatial index needs to be created in the source Sql Server, otherwise example will fail.

Execute at the source SQL Server database:

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

Import metadata into Querona virtual database and execute:

SELECT id
  FROM sample
 WHERE g.Filter(geometry::Parse('POLYGON((-1 -1, 1 -1, 1 1, -1 1, -1 -1))')) = 1;

See Also#