Freigeben über


Filter (geometry-Datentyp)

Eine Methode, die eine schnelle, nur indexbezogene Schnittmethode bietet, um zu ermitteln, ob eine geometry-Instanz eine andere geometry-Instanz überschneidet, vorausgesetzt, dass ein Index verfügbar ist.

Gibt 1 zurück, wenn eine geometry-Instanz möglicherweise eine andere geometry-Instanz überschneidet. Diese Methode erzeugt eventuell eine falsche positive Rückgabe, und das genaue Ergebnis ist unter Umständen planabhängig. Gibt einen genauen Wert 0 (wahr negative Rückgabe) zurück, wenn keine Überschneidung von geometry-Instanzen gefunden wird.

Wenn kein Index verfügbar ist oder verwendet wird, gibt die Methode dieselben Werte zurück wie STIntersects(), wenn diese Methode mit denselben Parametern aufgerufen wird.

Syntax

.Filter ( other_geometry )

Argumente

Ausdruck

Definition

other_geometry

Eine andere geometry-Instanz zum Vergleich mit der Instanz, in der Filter() aufgerufen wird.

Rückgabetypen

SQL Server Rückgabetyp: bit

CLR-Rückgabetyp: SqlBoolean

Hinweise

Diese Methode ist weder deterministisch noch präzise.

Beispiele

Im folgenden Beispiel wird Filter() verwendet, um festzustellen, wo sich zwei geometry-Instanzen schneiden.

Code

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