Condividi tramite


STDifference (tipo di dati geography)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure database SQL in Microsoft Fabric

Restituisce un oggetto che rappresenta il set di punti di un'istanza geography che si trova all'esterno di un'altra istanza geography.

Sintassi

  
.STDifference ( other_geography )  

Argomenti

other_geography
Altra istanza geography che indica i punti da rimuovere dall'istanza sulla quale viene richiamato STDifference().

Tipi restituiti

Tipo SQL Server restituito: geography

Tipo CLR restituito: SqlGeography

Eccezioni

Questo metodo genera un'eccezione ArgumentException se l'istanza contiene un bordo opposto.

Osservazioni:

Questo metodo restituisce sempre Null se gli identificatori SRID delle istanze geography non corrispondono.

In SQL Server, il set di possibili risultati restituito nel server è stato esteso alle istanze FullGlobe. SQL Server supporta le istanze spaziali di dimensioni maggiori di un emisfero. Il risultato può contenere segmenti di arco circolare solo se le istanze di input contengono segmenti di arco circolare. Il metodo non è preciso.

Esempi

R. Calcolo della differenza tra due istanze di geografia

L'esempio seguente usa STDifference() per calcolare la differenza tra due istanze geography.

DECLARE @g geography;  
DECLARE @h geography;  
SET @g = geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326);  
SET @h = geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326);  
SELECT @g.STDifference(@h).ToString();  

B. Utilizzo di FullGlobe con STDifference()

Nell'esempio seguente viene utilizzata l'istanza FullGlobe. Il primo risultato è un oggetto GeometryCollection vuoto e il secondo è un'istanza Polygon. STDifference() restituisce un oggetto GeometryCollection vuoto quando il parametro è un'istanza FullGlobe. Ogni punto in un'istanza geography di chiamata è contenuto in un'istanza FullGlobe.

 DECLARE @g geography = 'POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))';  
 DECLARE @h geography = 'FULLGLOBE';  
 SELECT @g.STDifference(@h).ToString(),  
 @h.STDifference(@g).ToString();

Vedi anche

Metodi OGC sulle istanze di geografia