STIntersection (tipo de datos geography)
Devuelve un objeto que representa los puntos de intersección de una instancia de geography con otra instancia de geography.
Sintaxis
.STIntersection ( other_geography )
Argumentos
- other_geography
Es otra instancia de geography con la que se compara la instancia en la que se está invocando STIntersection().
Tipos de valor devueltos
SQL Server tipo de valor devuelto: geography
Tipo de valor devuelto de CLR: SqlGeography
Comentarios
Se devuelve la intersección de dos instancias de geography.
STIntersection() siempre devuelve NULL si no coinciden los identificadores de referencia espacial (SRID) de las instancias de geography.
SQL Server admite instancias espaciales mayores que un hemisferio. SQL Server puede incluir instancias de FullGlobe en el conjunto de resultados posibles devuelto en el servidor.
El resultado puede contener segmentos de arco circulares solo si las instancias de entrada contienen segmentos de arco circulares.
Ejemplos
A.Calcular la intersección de un tipo Polygon y un tipo LineString
En el ejemplo siguiente se usa STIntersection() para calcular la intersección de un tipo Polygon y un tipo LineString.
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.STIntersection(@h).ToString();
B.Calcular la intersección de un tipo Polygon y un tipo CurvePolygon
En el siguiente ejemplo se devuelve una instancia que contiene un segmento de arco circular.
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('CURVEPOLYGON(CIRCULARSTRING(-122.351 47.656, -122.341 47.656, -122.341 47.661, -122.351 47.661, -122.351 47.656))', 4326);
SELECT @g.STIntersection(@h).ToString();
C.Calcular la diferencia simétrica con FullGlobe
En el siguiente ejemplo se compara la diferencia simétrica de un Polygon con 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))';
SELECT @g.STIntersection('FULLGLOBE').ToString();