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
Siehe auch