STIntersection (tipo de dados geography)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Banco de Dados SQL no Microsoft Fabric
Retorna um objeto que representa os pontos em que uma instância de geography intersecciona outra instância de geography.
Sintaxe
.STIntersection ( other_geography )
Argumentos
other_geography
É outra instância de geography a ser comparada com a instância na qual STIntersection() está sendo invocado.
Tipos de retorno
Tipo de retorno do SQL Server: geography
Tipo de retorno do CLR: SqlGeography
Comentários
A interseção de duas instâncias de geografia é retornada.
STIntersection() sempre retornará nulo se os SRIDs (identificadores de referência espacial) das instâncias de geografia não corresponderem.
SQL Server oferece suporte a instâncias espaciais maiores do que um hemisfério. SQL Server pode incluir instâncias de FullGlobe no conjunto de possíveis resultados retornados no servidor.
O resultado poderá conter segmentos de arco circular apenas se as instâncias de entrada contiverem segmentos de arco circulares.
Exemplos
a. Computando a interseção de um polígono e uma LineString
O exemplo a seguir usa STIntersection()
para computar a interseção de um Polygon
e uma 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. Calculando a interseção de um polígono e uma CurvePolygon
O exemplo a seguir retorna uma instância que contém um 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. Computando a diferença simétrica com FullGlobe
O exemplo a seguir compara a diferença simétrica de um Polygon
com 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();