Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Endpoint de análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de dados SQL no Microsoft Fabric
O tipo de dados espaciais planares, geometria, representa dados em um sistema de coordenadas euclidiano (plano). Esse tipo é implementado como um tipo de dados CLR (Common Language Runtime) no SQL Server.
O tipo de geometria é predefinido e está disponível em cada base de dados. Você pode criar colunas de tabela de geometria de tipo e operar em dados de geometria da mesma maneira que usaria outros tipos de CLR.
O tipo de dados geometria (planar) suportado pelo SQL Server está em conformidade com o Open Geospatial Consortium (OGC) Simple Features Specification for SQL, versão 1.1.0.
Para obter mais informações sobre as especificações OGC, consulte o seguinte:
Especificações OGC, Simple Feature Access Parte 1 - Arquitetura Comum
Especificações OGC, Simple Feature Access Part 2 - Opções SQL
O SQL Server dá suporte a um subconjunto do padrão GML 3.1 existente que é definido no seguinte esquema: https://schemas.microsoft.com/sqlserver/profiles/gml/SpatialGML.xsd.
Criar ou construir uma nova instância de geometria
Criar uma nova instância de geometria a partir de uma instância existente
O tipo de dados de geometria fornece vários métodos internos que você pode usar para criar novas instâncias de geometria com base em instâncias existentes.
Para criar um buffer em torno de uma geometria
STBuffer (tipo de dados de geometria)
BufferWithTolerance (tipo de dados de geometria)
Para criar uma versão simplificada de uma geometria
Reduzir (tipo de dados de geometria)
Para criar o casco convexo de uma geometria
STConvexHull (tipo de dados de geometria)
Para criar uma geometria a partir da intersecção de duas geometrias
STIntersection (tipo de dados de geometria)
Para criar uma geometria a partir da união de duas geometrias
STUnion (tipo de dados de geometria)
Para criar uma geometria a partir dos pontos onde uma geometria não se sobrepõe a outra
STDifference (tipo de dados de geometria)
Para criar uma geometria a partir dos pontos onde duas geometrias não se sobrepõem
STSymDifference (tipo de dados de geometria)
Para criar uma instância de Ponto arbitrária que se encontra em uma geometria existente
STPointOnSurface (tipo de dados de geometria)
Construir uma instância de geometria a partir de uma entrada de texto Well-Known Text
O tipo de dados geometria fornece vários métodos internos que geram uma geometria a partir da representação WKT do Open Geospatial Consortium (OGC). O padrão WKT é uma cadeia de texto que permite que os dados de geometria sejam trocados em forma textual.
Para construir qualquer tipo de instância de geometria a partir da entrada WKT
STGeomFromText (tipo de dados de geometria)
Analisar (tipo de dados de geometria)
Para construir uma instância de ponto de geometria a partir da entrada WKT
STPointFromText (tipo de dados de geometria)
Para construir uma instância de geometria MultiPoint a partir da entrada WKT
STMPointFromText (tipo de dados de geometria)
Para construir uma instância de geometria LineString a partir de dados WKT.
STLineFromText (tipo de dados de geometria)
Para construir uma instância de geometria MultiLineString a partir da entrada WKT
STMLineFromText (tipo de dados de geometria)
Para construir uma instância de polígono de geometria a partir da entrada WKT
STPolyFromText (tipo de dados de geometria)
Para construir uma instância de geometria MultiPolygon a partir da entrada WKT
STMPolyFromText (tipo de dados de geometria)
Para construir uma instância GeometryCollection de geometria a partir da entrada WKT
STGeomCollFromText (tipo de dados de geometria)
Construir uma instância de geometria a partir de uma entrada Binária Bem-Conhecida
WKB é um formato binário especificado pelo Open Geospatial Consortium (OGC) que permite que dados de geometria sejam trocados entre um aplicativo cliente e um banco de dados SQL. As seguintes funções aceitam entrada WKB para construir geometrias:
Para construir qualquer tipo de instância de geometria a partir da entrada WKB
STGeomFromWKB (tipo de dados de geometria)
Para construir uma instância de ponto de geometria a partir da entrada WKB
STPointFromWKB (tipo de dados de geometria)
Para construir uma instância do MultiPoint de geometria a partir da entrada WKB
STMPointFromWKB (tipo de dados de geometria)
Para construir uma instância de geometria LineString a partir da entrada WKB
STLineFromWKB (tipo de dados de geometria)
Para construir uma instância de geometria MultiLineString a partir da entrada WKB
STMLineFromWKB (tipo de dados de geometria)
Para construir uma instância de polígono de geometria a partir da entrada WKB
STPolyFromWKB (tipo de dados de geometria)
Para construir uma instância de geometria MultiPolygon a partir da entrada WKB
STMPolyFromWKB (tipo de dados de geometria)
Para construir uma instância GeometryCollection de geometria a partir da entrada WKB
STGeomCollFromWKB (tipo de dados de geometria)
Construir uma instância de geometria a partir da entrada de texto GML
O tipo de dados de geometria fornece um método que gera uma instância de geometria a partir de GML, uma representação XML de objetos geométricos. O SQL Server dá suporte a um subconjunto de GML.
Para construir qualquer tipo de instância de geometria a partir da entrada GML
GeomFromGml (tipo de dados de geometria)
Retornar Well-Known Text e Well-Known Binary de uma instância de geometria
Você pode usar os seguintes métodos para retornar o formato WKT ou WKB de uma instância de geometria :
Para retornar a representação WKT de uma instância de geometria
STAsText (tipo de dados de geometria)
ToString (tipo de dados de geometria)
Para retornar a representação WKT de uma instância de geometria, incluindo quaisquer valores Z e M
AsTextZM (tipo de dados de geometria)
Para retornar a representação WKB de uma instância de geometria
STAsBinary (tipo de dados de geometria)
Para retornar uma representação GML de uma instância de geometria
AsGml (tipo de dados de geometria)
Consultar as propriedades e comportamentos de instâncias de geometria
Todas as instâncias de geometria 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 geometria e os métodos para consultar cada um.
Informações sobre validade, tipo de instância e GeometryCollection
Depois que uma instância de geometria é construída, você pode usar os seguintes métodos para determinar se ela está bem formada, retornar o tipo de instância ou, se for uma instância de coleção, retornar uma instância de geometria específica.
Para retornar o tipo de instância de uma geometria
STGeometryType (tipo de dados de geometria)
Para determinar se uma geometria é um determinado tipo de instância
InstanceOf (tipo de dados de geometria)
Para determinar se uma instância de geometria está bem definida para o seu tipo de instância
STIsValid (tipo de dados de geometria)
Para converter uma instância de geometria numa instância de geometria corretamente configurada com um tipo de instância
MakeValid (tipo de dados de geometria)
Para retornar o número de geometrias em uma instância de coleção de geometria
STNumGeometries (tipo de dados de geometria)
Para retornar uma geometria específica em uma instância de coleção de geometria
STGeometryN (tipo de dados de geometria) STGeometryN (tipo de dados de geometria)
Número de pontos
Todas as instâncias de geometria não vazias são compostas por pontos. Estes pontos representam as coordenadas X e Y do plano no qual as geometrias são desenhadas. A geometria fornece vários métodos internos para consultar os pontos de uma instância.
Para retornar o número de pontos que compõem uma instância
STNumPoints (tipo de dados de geometria)
Para retornar um ponto específico em uma instância
STPointN (tipo de dados de geometria)
Para retornar um ponto arbitrário que está em uma instância
STPointOnSurface (tipo de dados de geometria)
Para retornar o ponto inicial de uma instância
STStartPoint (tipo de dados de geometria)
Para retornar o ponto de extremidade de uma instância
STEndpoint (tipo de dados de geometria)
Para retornar a coordenada X de uma instância Point
STX (tipo de dados de geometria)
Para retornar a coordenada Y de uma instância Point
STY (tipo de dados de geometria)
Para retornar o ponto central geométrico de uma ocorrência de Polygon, CurvePolygon ou MultiPolygon
STCentroid (tipo de dados de geometria)
Dimension
Uma instância de geometria não vazia pode ser de 0, 1 ou 2 dimensões. Geometrias de dimensão zero, como Ponto e MultiPonto, não têm 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 relatarão uma dimensão de -1 e uma GeometryCollection relatará uma área dependente dos tipos de seu conteúdo.
Para retornar a dimensão de uma instância
STDimension (tipo de dados de geometria)
Para retornar o comprimento de uma instância
STLength (tipo de dados de geometria)
Para retornar a área de uma instância
STArea (tipo de dados de geometria)
Empty
Uma instância degeometria vazia não tem pontos. O comprimento das instâncias vazias de LineString, CircularString, CompoundCurve e MultiLineString é zero. A área de instâncias vazias de Polygon, CurvePolygon e MultiPolygon é 0.
Para determinar se uma instância está vazia
STIsEmpty (tipo de dados geométricos).
Simple
Para que uma geometria da instância seja simples, ela deve atender a ambos os requisitos:
Cada elemento gráfico da instância não deve intersectar-se, exceto nos seus pontos finais.
Nenhuma das duas figuras da instância pode intersectar-se num ponto que não esteja em ambos os seus limites.
Note
Geometrias vazias são sempre simples.
Para determinar se uma instância é simples
STIsSimple (tipo de dados de geometria).
Fronteira, interior e exterior
O interior de uma instância de geometria é o espaço ocupado pela instância, e o exterior é o espaço não ocupado.
Os limites são definidos pelo OGC do seguinte modo:
As instâncias Point e MultiPoint não têm um limite.
Os limites LineString e MultiLineString são formados pelos pontos iniciais e finais, removendo aqueles que ocorrem um número par de vezes.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 1, 0 0, 1 0, 0 1), (1 1, 1 0))');
SELECT @g.STBoundary().ToString();
O limite de uma ocorrência de Polygon ou MultiPolygon é o conjunto de seus anéis.
DECLARE @g geometry;
SET @g = geometry::Parse('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0), (1 1, 1 2, 2 2, 2 1, 1 1))');
SELECT @g.STBoundary().ToString();
Para retornar o limite de uma instância
STBoundary (tipo de dados de geometria)
Envelope
O envelope de uma instância de geometria, também conhecido como caixa delimitadora, é o retângulo alinhado aos eixos formado pelas coordenadas mínimas e máximas (X,Y) da instância.
Para retornar o envelope de uma instância
STEnvelope (tipo de dados de geometria)
Closure
Uma ocorrência degeometria fechada é uma figura cujos pontos iniciais e finais são os mesmos. As instâncias do polígono são consideradas fechadas. Instâncias de ponto não são fechadas.
Um anel é uma instância LineString simples e fechada.
Para determinar se uma instância está fechada
STIsClosed (tipo de dados de geometria)
Para determinar se uma instância é um anel
STIsRing (tipo de dados de geometria)
Para retornar o anel externo de uma ocorrência de Polígono
STExteriorRing (tipo de dados de geometria)
Para retornar o número de anéis internos em um Polígono
STNumInteriorRing (tipo de dados de geometria)
Para retornar um anel interior especificado de um Polígono
STInteriorRingN (tipo de dados de geometria)
ID de referência espacial (SRID)
O ID de referência espacial (SRID) é um identificador que especifica em qual sistema de coordenadas a instância de geometria está representada. Duas instâncias com SRIDs diferentes são incomparáveis.
Para definir ou retornar o SRID de uma instância
STSrid (tipo de dados de geometria)
Note
Esta propriedade pode ser modificada.
Determinar relações entre instâncias de geometria
O tipo de dados de geometria fornece muitos métodos internos que você pode usar para determinar relações entre duas instâncias de geometria .
Para determinar se duas instâncias compreendem o mesmo conjunto de pontos
STEquals (tipo de dados de geometria)
Para determinar se duas instâncias estão separadas
STDisjoint (tipo de dados de geometria)
Para determinar se duas instâncias se cruzam
STIntersects (tipo de dados de geometria)
Para determinar se duas instâncias tocam
STTouches (tipo de dados de geometria)
Para determinar se duas instâncias se sobrepõem
STOverlaps (tipo de dados de geometria)
Para determinar se duas instâncias se cruzam
STCrosses (tipo de dados de geometria)
Para determinar se uma instância está dentro de outra
STWithin (tipo de dados de geometria)
Para determinar se uma instância contém outra
STContains (tipo de dados de geometria)
Para determinar se uma instância se sobrepõe a outra
STOverlaps (tipo de dados de geometria)
Para determinar se duas instâncias estão espacialmente relacionadas
STRelate (tipo de dados de geometria)
Para determinar a menor distância entre pontos em duas geometrias
STDistance (tipo de dados de geometria)
instâncias de geometria predefinidas para zero SRID
O SRID padrão para instâncias de geometria no SQL Server é 0. Com dados espaciais de geometria , o SRID específico da instância espacial não é necessário para executar cálculos; assim, as instâncias podem residir em espaços planares indefinidos. Para indicar espaço planar indefinido nos cálculos dos métodos do tipo de dados de geometria, o Mecanismo de Banco de Dados do SQL Server usa SRID 0.
Remarks
Os tipos de geometria e geografia não podem ser utilizados como colunas de tabela no ponto de extremidade SQL Analytics do Microsoft Fabric ou no
Warehouse do Microsoft Fabric.
Examples
Os dois exemplos a seguir mostram como adicionar e consultar dados de geometria.
Exemplo A.
Este exemplo cria uma tabela com uma coluna de identidade e uma geometry coluna GeomCol1. Uma terceira coluna processa a geometry coluna em sua representação Open Geospatial Consortium (OGC) Well-Known Text (WKT) e usa o STAsText() método. Duas linhas são então inseridas: uma linha contém uma LineString instância de geometry, e uma linha contém uma Polygon instância.
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
Exemplo B.
Este exemplo usa o STIntersection() método para retornar os pontos onde as duas instâncias inseridas geometry anteriormente 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();