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
Base de Dados SQL do Azure
Instância Gerida SQL do Azure
Base de Dados SQL no Microsoft Fabric
O tipo de dados espaciais planares, geometry, é implementado como um tipo de dados CLR (Common Language Runtime) no SQL Server. Este tipo representa dados em um sistema de coordenadas euclidiano (plano).
O SQL Server dá suporte a um conjunto de métodos para o tipo de dados espaciais de geometria . Esses métodos incluem métodos em geometria que são definidos pelo padrão Open Geospatial Consortium (OGC) e um conjunto de extensões da Microsoft para esse padrão.
A tolerância a erros para os métodos de geometria pode ser tão grande quanto 1.0e-7 * extensões. As extensões referem-se à distância máxima aproximada entre pontos do objeto de geometria .
Registrando o tipo de geometria
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. Pode ser usado em colunas computadas persistentes e não persistentes.
Observações
No banco de dados SQL no Microsoft Fabric, os tipos de dados de geografia e geometria são suportados, mas não podem ser espelhados para o Fabric OneLake.
Exemplos
Um. Mostrando como adicionar e consultar dados de geometria
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 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
B. Retornando a interseção de duas instâncias de geometria
O segundo 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();
C. Usando geometria em uma coluna computada
O exemplo a seguir cria uma tabela com uma coluna computada persistente usando um tipo de geometria .
IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL
DROP TABLE dbo.SpatialTable;
GO
CREATE TABLE SpatialTable
(
locationId int IDENTITY(1,1),
location geometry,
deliveryArea as location.STBuffer(10) persisted
)