Condividi tramite


Filter (tipo di dati geometrico)

Metodo di intersezione basato solo su indici che consente di determinare in modo rapido se un'istanza geometry interseca un'altra istanza geometry, assumendo che un indice sia disponibile.

Restituisce 1 se un'istanza geometry interseca potenzialmente un'altra istanza geometry. Questo metodo può produrre un risultato falso positivo e il risultato esatto può dipendere dal piano. Restituisce un valore esatto 0 (risultato vero positivo) se non viene rilevata alcuna intersezione tra le istanze geometry.

Nel caso in cui non sia disponibile o non venga utilizzato un indice, il metodo restituirà gli stessi valori di STIntersects() se chiamato con gli stessi parametri.

Sintassi

.Filter ( other_geometry )

Argomenti

Termine

Definizione

other_geometry

Altra istanza geometry da confrontare con l'istanza sulla quale Filter() viene richiamato.

Tipi restituiti

SQL Server tipo restituito: bit

Tipo CLR restituito: SqlBoolean

Osservazioni

Questo metodo non è deterministico e non è preciso.

Esempi

Nell'esempio seguente viene utilizzato Filter() per determinare se due istanze geometry si intersecano.

Codice

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

Vedere anche

Riferimento

STIntersects (tipo di dati geometry)

Altre risorse

Metodi estesi sulle istanze di geometria