Freigeben über


STDifference (geography-Datentyp)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Datenbank in Microsoft Fabric

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 )  

Arguments

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

Exceptions

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

Remarks

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.

Examples

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

Siehe auch

OGC-Methoden für geography-Instanzen