Partilhar via


Geografia (Transact-SQL)

O tipo de dados de geografia, geography, é implementado como um tipo de dado CLR (Common Language Runtime) do .NET no SQL Server. Esse tipo representa dados em um sistema de coordenadas de terra redonda. O tipo de dados de geography do SQL Server armazena dados elipsoidais (terra-redonda), como coordenadas de latitude e longitude de GPS.

O SQL Server oferece suporte a um conjunto de métodos para o tipo de dados espaciais geography. Isso inclui métodos sobre geography 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 de geography, consulte Referência de método de tipo de dados geography.

Registrando o tipo de geografia

O tipo geography é predefinido e está disponível em cada banco de dados. É possível criar colunas de tabelas do tipo geography e operar em dados de geography da mesma maneira como outros tipos fornecidos pelo sistema são usados. Pode ser usado em colunas computadas persistidas e não persistidas.

Exemplos

A.Mostrando como adicionar e consultar dados de geografia

Os exemplos a seguir mostram como adicionar e consultar dados de geografia. O primeiro exemplo cria uma tabela com uma coluna de identidade e uma coluna de geography GeogCol1. Uma terceira coluna renderiza a coluna de geography 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 geography e uma linha que contém uma instância de Polygon.

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

CREATE TABLE SpatialTable 
    ( id int IDENTITY (1,1),
    GeogCol1 geography, 
    GeogCol2 AS GeogCol1.STAsText() );
GO

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656 )', 4326));

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('POLYGON((-122.358 47.653 , -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326));
GO

B.Retornando a interseção de duas instâncias de geografia

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

DECLARE @geog1 geography;
DECLARE @geog2 geography;
DECLARE @result geography;

SELECT @geog1 = GeogCol1 FROM SpatialTable WHERE id = 1;
SELECT @geog2 = GeogCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geog1.STIntersection(@geog2);
SELECT @result.STAsText();

C.Usando geografia em uma coluna computada

O exemplo a seguir cria uma tabela com uma coluna computada persistida com o uso do tipo geography.

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

CREATE TABLE SpatialTable
(
    locationId int IDENTITY(1,1),
    location geography,
    deliveryArea as location.STBuffer(10) persisted
)

Consulte também

Conceitos

Dados espaciais (SQL Server)

Outros recursos

Referência de método de tipo de dados geography