Share via


STDifference (tipo de datos geography)

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 devueltos

SQL Server tipo de valor devuelto: geography

Tipo de valor devuelto de CLR: SqlGeography

Excepciones

Este método produce una excepción ArgumentException si la instancia contiene un borde opuesto.

Comentarios

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

Vea también

Otros recursos

Métodos de OGC en instancias de Geography