Condividi tramite


Filter (tipo di dati geography)

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

Restituisce 1 se un'istanza geography interseca potenzialmente un'altra istanza geography. 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 geography.

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_geography )

Argomenti

Termine

Definizione

other_geography

Altra istanza geography 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 geography si intersecano.

Codice

CREATE table sample (id int primary key, g geography);
INSERT INTO sample values
   (0, geography::Point(45, -120, 4326)),
   (1, geography::Point(45, -120.1, 4326)),
   (2, geography::Point(45, -120.2, 4326)),
   (3, geography::Point(45, -120.3, 4326)),
   (4, geography::Point(45, -120.4, 4326))

CREATE spatial index sample_idx on sample(g);
SELECT id
FROM sample 
WHERE g.Filter(geography::Parse(
   'POLYGON((-120.1 44.9, -119.9 44.9, -119.9 45.1, -120.1 45.1, -120.1 44.9))')) = 1;

Vedere anche

Riferimento

STIntersects (tipo di dati geography)

Altre risorse

Metodi estesi sulle istanze di geografia