Share via


STDifference (geography-Datentyp)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Gibt ein Objekt zurück, das die Punktmenge einer geography -Instanz darstellt, die sich außerhalb einer anderen geography -Instanz befindet.

Syntax

  
.STDifference ( other_geography )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

other_geography
Eine andere geography-Instanz, die angibt, welche Punkte aus der Instanz zu entfernen sind, in der STDifference() aufgerufen wird.

Rückgabetypen

SQL Server-Rückgabetyp: geography

CLR-Rückgabetyp: SqlGeography

Ausnahmen

Diese Methode löst eine ArgumentException aus, wenn die Instanz eine gegenüberliegende Kante enthält.

Bemerkungen

Diese Methode gibt immer NULL zurück, wenn die SRIDs (Spatial Reference IDs) der geography -Instanzen nicht übereinstimmen.

In SQL Server wurden die Ergebnisse, die auf dem Server zurückgegeben werden können, um FullGlobe-Instanzen erweitert. SQL Server unterstützt räumliche Instanzen, die größer als eine Hemisphäre sind. Im Ergebnis können nur dann Kreisbogensegmente enthalten sein, wenn die Eingabeinstanzen auch Kreisbogensegmente enthalten. Diese Methode ist nicht exakt.

Beispiele

A. Berechnen des Unterschiedes zwischen zwei geography-Instanzen

Im folgenden Beispiel wird STDifference() zum Berechnen der Differenz zwischen zwei geography -Instanzen erweitert.

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. Verwenden eines FullGlobe mit STDifference()

Im folgenden Beispiel wird eine Instanz von FullGlobe verwendet. Das erste Ergebnis ist eine leere GeometryCollection , und das zweite Ergebnis ist eine Polygon -Instanz. STDifference() gibt eine leere GeometryCollection zurück, wenn der Parameter eine FullGlobe-Instanz ist. Alle Punkte in einer aufrufenden Instanz von geography sind in einer Instanz von FullGlobe enthalten.

 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();

Weitere Informationen

OGC-Methoden für geography-Instanzen