Partilhar via


Criar, construir e consultar instâncias de geografia

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

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.

Neste tópico

  • Criando ou construindo uma nova instância de geografia

    • Criando uma nova instância de geografia de uma instância existente

    • Construindo uma instância de geografia da entrada de texto conhecida

    • Construindo uma instância de geografia da entrada binária conhecida

    • Construindo uma instância de geografia de entrada de texto GML

  • Retornando Well-Known Text e Well-Known Binary de uma instância de geografia

  • Consultando as propriedades e comportamentos de instâncias de geografia

    • Informações de validade, tipo de instância e GeometryCollection

    • Número de pontos

    • Dimensão

    • Vazio

    • Fechamento

    • SRID (Spatial Reference ID)

  • Determinando relações entre instâncias de geografia

  • Instâncias de geografia devem usar SRID com suporte

  • Exemplos

[TOP]

Criando ou construindo uma nova instância de geografia

Criando uma nova instância de geografia de uma instância existente

O tipo de dados geography fornece vários métodos internos que podem ser usados para criar novas instâncias de geography baseadas em instâncias existentes.

Construindo uma instância de geografia da entrada de texto conhecida

O tipo de dados de geography fornece vários métodos internos que geram uma geografia da representação WKT do Open Geospatial Consortium (OGC). O padrão WKT é uma cadeia de caracteres de texto que permite que dados de geografia sejam trocados em formulário textual.

Construindo uma instância de geografia da entrada binária conhecida

WKB é um formato binário especificado pelo OGC que permite que dados de Geography sejam trocados entre um aplicativo cliente e um banco de dados SQL. As seguintes funções aceitam entrada WKB para construir instâncias de geografia:

Construindo uma instância de geografia de entrada de texto GML

O tipo de dados geography oferece um método que gera uma instância geography de GML, uma representação XML de uma instância geography. O SQL Server oferece suporte a um subconjunto de GML.

Para obter mais informações sobre Geography Markup Language, consulte a Especificação do OGC: OGC Specifications, Geography Markup Language.

Retornando Well-Known Text e Well-Known Binary de uma instância de geografia

É possível usar os seguintes métodos para retornar o formato WKT ou WKB de uma instância de geography:

Consultando as propriedades e comportamentos de instâncias de geografia

Todas as instâncias de geography têm várias propriedades que podem ser recuperadas por meio de métodos fornecidos pelo SQL Server. Os tópicos a seguir definem as propriedades e comportamentos de tipos de geografia e os métodos de consulta de cada um.

Informações de validade, tipo de instância e GeometryCollection

Quando uma instância de geography é construída, é possível usar os seguintes métodos para retornar o tipo da instância ou, se ela for uma instância de GeometryCollection, retornar uma instância de geography específica.

Número de pontos

Todas as instâncias de geography não vazias são compostas de pontos. Esses pontos representam as coordenadas de latitude e longitude da terra nas quais as instâncias de geography são obtidas. O tipo de dados geography fornece vários métodos internos de consulta de pontos de uma instância.

Dimensão

Uma instância de geography não vazia pode ser dimensional zero, unidimensional ou bidimensional. Instâncias de geography de dimensão zero, como Point e MultiPoint, não têm nenhum comprimento ou área. Objetos unidimensionais, como LineString, CircularString, CompoundCurve e MultiLineString, têm comprimento. Instâncias bidimensionais, como Polygon, CurvePolygon e MultiPolygon, têm área e comprimento. Instâncias vazias relatam uma dimensão de -1 e uma GeometryCollection relata a dimensão máxima de seu conteúdo.

Vazia

Uma instância vazia de geography não tem nenhum ponto. O comprimento de instâncias de LineString, CircularString, CompoundCurve e MultiLineString vazias é 0. A área de instâncias Polygon, CurvePolygon e MultiPolygon vazias é 0.

Fechamento

Uma instância closed geography é uma figura cujos pontos inicial e final são os mesmos. As instâncias Polygon são consideradas fechadas. As instâncias Point não estão fechadas.

Um anel é uma instância de LineString simples e fechada.

SRID (Spatial Reference ID)

A ID de referência espacial (SRID) é um identificador que especifica o sistema de coordenadas elipsoidais no qual a instância geography é representada. Duas instâncias geography com SRIDs diferentes não podem ser comparadas.

Essa propriedade pode ser modificada.

Determinando relações entre instâncias de geografia

O tipo de dados geography fornece vários métodos internos que podem ser usados para determinar relações entre duas instâncias de geography.

Instâncias de geografia devem usar SRID com suporte

O SQL Server oferece suporte a SRIDs com base nos padrões do EPSG. Um SRID com suporte do SQL Server para instâncias de geography deve ser usado ao executar cálculos ou usar métodos com dados espaciais de geografia. O SRID deve corresponder a um dos SRIDs exibidos na exibição do catálogo sys.spatial_reference_systems. Conforme mencionado anteriormente, ao executar cálculos nos dados espaciais usando o tipo de dados de geography, os resultados dependerão de qual elipsoide foi usado na criação dos dados, pois cada elipsoide recebe um SRID ( spatial reference identifier) específico.

O SQL Server usa o SRID padrão de 4326, que é mapeado para o sistema de referência espacial WGS 84 ao usar métodos nas instâncias de geography. Se você usar dados de um sistema de referência espacial diferente de WGS 84 (ou SRID 4326), será necessário determinar o SRID específico de seus dados espaciais de geografia.

Exemplos

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
    
  • O segundo exemplo usa o método STIntersection() para retornar os pontos onde as duas instâncias geography inseridas anteriormente 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();
    

Consulte também

Conceitos

Dados espaciais (SQL Server)