Criar, construir e consultar instâncias de geografia

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureEndpoint de SQL Analytics no Microsoft FabricArmazém no Microsoft FabricBanco de Dados SQL no Microsoft Fabric

O tipo de dados espacial de geografia, geography, representa dados em um sistema de coordenadas de terra redonda. Esse tipo é implementado como um tipo de dados CLR (Common Language Runtime) .NET no SQL Server. O tipo de dados 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.

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 geography baseadas em instâncias existentes.

Para criar um buffer em torno de uma geografia
STBuffer (tipo de dados Geography)

Para criar um buffer ao redor de uma geografia, permitindo tolerância
BufferWithTolerance (tipo de dados 'geography')

Para criar uma geografia a partir da interseção de duas instâncias de geografia
STIntersection (tipo de dados geography)

Para criar uma geografia a partir da união de duas instâncias de geografia
STUnion (tipo de dados Geography)

Para criar uma geografia dos pontos onde uma geografia não sobrepõe outra
STDifference (tipo de dados Geografia)

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 OGC (Open Geospatial Consortium). O padrão WKT é uma cadeia de caracteres de texto que permite que dados de geografia sejam trocados em formulário textual.

Para construir qualquer tipo de instância de geografia a partir de uma entrada WKT
STGeomFromText (tipo de dados geography)

Analisar sintaticamente (tipo de dados geográfico)

Para construir uma instância geography Point a partir de uma entrada WKT
STPointFromText (tipo de dados geography)

Para construir uma instância geography MultiPoint a partir da entrada WKT
STMPointFromText (tipo de dados geografia)

Para construir uma instância geography LineString a partir de uma entrada WKT
STLineFromText (tipo de dados geography)

Para construir uma instância geography do tipo MultiLineString a partir de uma entrada WKT
STMLineFromText (tipo de dados geography)

Para construir uma instância Polygon do tipo geography a partir de uma entrada WKT
STPolyFromText (tipo de dados Geography)

Para construir uma instância geográfica de MultiPolygon a partir de uma entrada WKT
STMPolyFromText (tipo de dados Geografia)

Para construir uma instância geography do tipo GeometryCollection a partir de uma entrada WKT
STGeomCollFromText (tipo de dados geography)

Construindo uma instância de geografia a partir da entrada Well-Known Binary

WKB é um formato binário especificado pelo OGC que permite que dados geográficos 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:

Para construir qualquer tipo de instância de geografia a partir de uma entrada WKB
STGeomFromWKB (tipo de dados geography)

Para construir uma instância Point do tipo geography a partir de uma entrada WKB
STPointFromWKB (tipo de dados 'geography')

Para construir uma instância geográfica MultiPoint a partir de uma entrada WKB
STMPointFromWKB (tipo de dados geografia)

Para construir uma instância geography LineString a partir de uma entrada WKB
STLineFromWKB (tipo de dados geography)

Para construir uma instância geográfica de MultiLineString a partir de uma entrada WKB
STMLineFromWKB (tipo de dados geografia)

Para construir uma instância geography de Polygon a partir de uma entrada WKB
STPolyFromWKB (tipo de dados geografia)

Para construir uma instância geography de MultiPolygon a partir de uma entrada WKB
STMPolyFromWKB (tipo de dados geografia)

Para construir uma instância GeometryCollection do tipo geography a partir de uma entrada WKB
STGeomCollFromWKB (Tipo de Dados de geografia) STGeomCollFromWKB (Tipo de Dados de geografia)

Criando uma instância do tipo geography a partir de texto GML de entrada

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 mais informações sobre a Geography Markup Language, veja a Especificação OGC: OGC Specifications, Geography Markup Language.

Para construir qualquer tipo de instância geográfica a partir de entrada GML
GeomFromGML (tipo de dados geografia)

Retornando Texto Bem Conhecido e Well-Known Binary de uma instância do tipo geography

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

Para retornar a representação WKT de uma instância de geografia
STAsText (tipo de dados geografia)

ToString (tipo de dados geography)

Para retornar a representação WKT de uma instância de geometria incluindo qualquer valor Z e M
AsTextZM (tipo de dados geografia)

Para retornar a representação WKB de uma instância de geografia
STAsBinary (tipo de dados Geography)

Para retornar a representação GML de uma instância de geografia
AsGml - geography Tipo de dados

Consultar as propriedades e comportamentos de instâncias de geografia

Todas as instâncias de geografia 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.

Validade, tipo de instância e informações de GeometryCollection

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

Para retornar o tipo de instância de uma geografia
STGeometryType (tipo de dados geography)

Para determinar se uma geografia é um determinado tipo de instância
InstanceOf (tipo de dados geography)

Para determinar se uma instância de geografia é bem formada para seu tipo de instância
STNumGeometries (tipo de dados geography)

Para retornar uma geografia específica em uma instância GeometryCollection
STGeometryN (Tipo de Dados de geografia) STGeometryN (Tipo de Dados de geografia)

Número de pontos

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

Para retornar o número de pontos que compõem uma instância
STNumPoints (tipo de dados Geography)

Para retornar um ponto específico em uma instância
STPointN (tipo de dados geometry)

Para retornar o ponto inicial de uma instância
STStartPoint (tipo de dados geography)

Para retornar o ponto de extremidade de uma instância
STEndPoint (tipo de dados Geography)

Dimension

Uma instância geography não vazia pode ter 0, 1 ou 2 dimensões. Instâncias geography com dimensional zero, como Point e MultiPoint, não têm comprimento nem área. Objetos unidimensionais, como LineString, CircularString, CompoundCurvee MultiLineString, têm comprimento. Instâncias bidimensionais, como Polygon, CurvePolygone 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.

Para retornar a dimensão de uma instância
STDimension (tipo de dados geography)

Para retornar o comprimento de uma instância
STLength (tipo de dados geography)

Para retornar a área de uma instância
STArea (tipo de dados Geografia)

Empty

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

Para determinar se uma instância está vazia
STIsEmpty (tipo de dados geography)

Closure

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

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

Para determinar se uma instância está fechada
STIsClosed (tipo de dados geography)

Para retornar o número de anéis em uma instância de polígono
NumRings (tipo de dados Geography)

Para retornar um anel especificado de uma instância de geografia
RingN (tipo de dados "geography")

ID de referência espacial (SRID)

A SRID (ID de referência espacial) é 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.

Para definir ou retornar o SRID de uma instância
STSrid (tipo de dados geography)

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 .

Para determinar se duas instâncias abrangem o mesmo conjunto de pontos
STEquals (tipo de dados Geometry)

Para determinar se duas instâncias são disjuntas
STDisjoint (tipo de dados geometry)

Para determinar se há interseção entre duas instâncias
STIntersects (tipo de dados geometry)

Para determinar o ponto ou pontos de interseção de duas instâncias
STIntersection (tipo de dados geography)

Para determinar a distância mais curta entre pontos em duas instâncias de geografia
STDistance (tipo de dados geometry)

Para determinar a diferença em pontos entre duas instâncias de geografia
STDifference (tipo de dados Geografia)

Para derivar a diferença simétrica ou pontos exclusivos de uma instância de geografia comparada com outra instância
STSymDifference (tipo de dados geografia)

As instâncias de geography devem usar SRID compatível

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

O SQL Server usa o SRID padrão de 4326, que mapeia para o sistema de referência espacial WGS 84, ao usar métodos em instâncias de geografia. 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.

Remarks

Geometria e geografia não podem ser usadas como colunas de tabela no ponto de extremidade de análise SQL no Microsoft Fabric ou no Warehouse no Microsoft Fabric.

Examples

Os exemplos a seguir mostram como adicionar e consultar dados de geografia.

Exemplo A.

Este exemplo cria uma tabela com uma coluna identity e uma geography coluna GeogCol1. Uma terceira coluna renderiza a coluna de geography em sua representação WKT (Texto Bem Conhecido) 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 geographye 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  

Exemplo B.

Este exemplo usa o método STIntersection() para retornar os pontos em que as duas instâncias de 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();