Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-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();