Este tópico ainda não foi avaliado como Avalie este tópico

geometria (Transact-SQL)

O tipo de dados espacial planar, geometry, é implementado como um tipo de dados CLR (Common Language Runtime) no SQL Server. Esse tipo representa dados em um sistema de coordenadas euclidiano (plano).

O SQL Server 2008 suporta um conjunto de métodos para o tipo de dados espacial geometry. Esses métodos incluem aqueles baseados em geometry que são definidos pelo padrão OGC (Open Geospatial Consortium) e um conjunto de extensões da Microsoft para esse padrão.

Para obter mais informações sobre métodos do tipo de dados espacial geometry, consulte Referência de método de tipo de dados de geometria.

O tipo geometry é predefinido e está disponível em todos os bancos de dados. É possível criar colunas de tabelas do tipo geometry e operar em dados de geometry da mesma maneira como outros tipos CLR são usados.

Os dois exemplos a seguir mostram como adicionar e consultar dados de geometria. O primeiro exemplo cria uma tabela com uma coluna de identidade e uma coluna geometryGeomCol1. Uma terceira coluna renderiza a coluna geometry em sua representação WKT (Well-Known Text) do Open Geospatial Consortium (OGC) e usa o método STAsText(). Em seguida, duas linhas são inseridas: uma linha que contém uma instância LineString de geometry e uma linha que contém uma instância Polygon.

IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL 
    DROP TABLE dbo.SpatialTable;
GO

CREATE TABLE SpatialTable 
    ( id int IDENTITY (1,1),
    GeomCol1 geometry, 
    GeomCol2 AS GeomCol1.STAsText() );
GO

INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));

INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));
GO

O segundo exemplo usa o método STIntersection() para retornar os pontos onde as duas instâncias geometry se cruzam.

DECLARE @geom1 geometry;
DECLARE @geom2 geometry;
DECLARE @result geometry;

SELECT @geom1 = GeomCol1 FROM SpatialTable WHERE id = 1;
SELECT @geom2 = GeomCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geom1.STIntersection(@geom2);
SELECT @result.STAsText();
Isso foi útil para você?
(2000 caracteres restantes)
Conteúdo da Comunidade Adicionar
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?