STDifference (tipo de datos geography)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Base de datos de Azure SQL de Microsoft Fabric
Devuelve un objeto que representa el conjunto de puntos de una instancia de geography que queda fuera de otra instancia de geography.
Sintaxis
.STDifference ( other_geography )
Argumentos
other_geography
Es otra instancia de geography que indica los puntos que hay que quitar de la instancia en la que se invoca STDifference().
Tipos de valor devuelto
Tipo de valor devuelto de SQL Server: geography
Tipo de valor devuelto de CLR: SqlGeography
Excepciones
Este método produce una excepción ArgumentException si la instancia contiene un borde opuesto.
Observaciones
Este método siempre devuelve NULL si no coinciden los identificadores de referencia espacial (SRID) de las instancias de geography.
En SQL Server, el conjunto de resultados posibles devuelto en el servidor se ha ampliado a las instancias de FullGlobe. SQL Server admite instancias espaciales mayores que un hemisferio. El resultado puede contener segmentos de arco circulares solo si las instancias de entrada contienen segmentos de arco circulares. Este método no es preciso.
Ejemplos
A. Calcular la diferencia entre dos instancias de geografía
En el ejemplo siguiente se usa STDifference()
para calcular la diferencia entre dos instancias de geography.
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. Utilizar FullGlobe con STDifference()
En el ejemplo siguiente se utiliza la instancia de FullGlobe
. El primer resultado es un elemento GeometryCollection
vacío y el segundo resultado es una instancia de Polygon
. STDifference()
devuelve un elemento GeometryCollection
vacío cuando una instancia de FullGlobe
es el parámetro. Todos los puntos de una instancia de geography
que se invoca están contenidos en una instancia de FullGlobe
.
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();