STDifference (geografidatatyp)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Returnerar ett objekt som representerar punktuppsättningen från en geografiinstans som ligger utanför en annan geografiinstans .

Syntax

  
.STDifference ( other_geography )  

Arguments

other_geography
Är en annan geografiinstans som anger vilka punkter som ska tas bort från den instans där STDifference() anropas.

Returtyper

SQL Server-returtyp: geografi

CLR-returtyp: SqlGeography

Exceptions

Den här metoden genererar en ArgumentException om instansen innehåller en antipodal kant.

Remarks

Den här metoden returnerar alltid null om de rumsliga referensidentifierarna (SRID) för geografiinstanserna inte matchar.

I SQL Server har uppsättningen möjliga resultat som returneras på servern utökats till FullGlobe-instanser . SQL Server stöder rumsliga instanser som är större än en halvklot. Resultatet kan endast innehålla cirkulära bågsegment om indatainstanserna innehåller cirkulära bågsegment. Den här metoden är inte exakt.

Examples

A. Beräkna skillnaden mellan två geografiska instanser

I följande exempel används STDifference() för att beräkna skillnaden mellan två geografiska instanser.

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. Använda en FullGlobe med STDifference()

I följande exempel används FullGlobe instansen. Det första resultatet är tomt GeometryCollection och det andra resultatet är en Polygon instans. STDifference() returnerar en tom GeometryCollection när en FullGlobe instans är parametern. Varje punkt i en anropande geography instans finns i en FullGlobe instans.

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

Se även

OGC-metoder för geografiinstanser