Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
STDifference (geography Data Type)

STDifference (geography Data Type)

 

Applies To: SQL Server 2014, SQL Server 2016 Preview

Returns an object that represents the point set from one geography instance that lies outside another geography instance.

Applies to: SQL Server (SQL Server 2008 through current version), Azure SQL Database (Initial release through current release).


.STDifference ( other_geography )

other_geography

Is another geography instance indicating which points to remove from the instance on which STDifference() is being invoked.

SQL Server return type: geography

CLR return type: SqlGeography

This method throws an ArgumentException if the instance contains an antipodal edge.

Exception Condition

This method always returns null if the spatial reference identifiers (SRIDs) of the geography instances do not match.

In SQL Server, the set of possible results returned on the server has been extended to FullGlobe instances. SQL Server supports spatial instances that are larger than a hemisphere. The result may contain circular arc segments only if the input instances contain circular arc segments. This method is not precise.

The following example uses STDifference() to compute the difference between two geography instances.

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

The following example uses FullGlobe instance. The first result is an empty GeometryCollection and the second result is a Polygon instance. STDifference() returns an empty GeometryCollection when a FullGlobe instance is the parameter. Every point in an invoking geography instance is contained in a FullGlobe instance.

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

Community Additions

ADD
Show:
© 2015 Microsoft