Freigeben über


STDifference (geography-Datentyp)

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 )

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.

Hinweise

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, auf Instanzen von FullGlobe erweitert. SQL Server unterstützt räumliche Instanzen, die größer sind als eine Hemisphäre. 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 verwendet.

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 einen leeren GeometryCollection zurück, wenn eine FullGlobe-Instanz der Parameter 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

Andere Ressourcen

OGC-Methoden für geography-Instanzen