fbpx

Geometry: Seu Primeiro Gráfico no SQL

By josue | SQL

Hoje apresentarei o tipo de dados geométrico (geometry) para que nessa aula você aprenda a fazer seu primeiro gráfico no SQL Server. Também veremos como a área de objetos, como calcular a distância entre objetos, bem como fazer desenhos diversos usando polígonos, pontos, retas, círculos e outras formas geométricas.

 

Formas geométricas no SQL Server

Antes de pensarmos em desenhos completos e gráficos, precisamos aprender a representar as principais formas geométricas no SQL Server. Veja como é simples fazer isso usando os exemplos abaixo:

 

select geometry::Parse('linestring(0 0, 2 2)') as reta

 

select geometry::Parse('linestring(0 0, 2 2, 4 0, 0 0)') as triangulo

select geometry::Parse('multilinestring((0 0, 2 2), (0 2, 2 0), (1 2, 1 0), (0 1, 2 1))') as asterisco

select geometry::Parse('circularstring(0 1, 1 0, 2 1)') as semicirculo

select geometry::Parse('circularstring(0 1, 1 0, 2 1, 1 2, 0 1)') as circulo

select geometry::Parse('circularstring(0 1, 1 0, 2 1, 1 2, 1 1)') as semicirculo2

select geometry::Parse('polygon((1 1, 5 1, 4 3, 2 3, 1 1))') as trapezio

select geometry::Parse('multipolygon(((1 1, 5 1, 4 3, 2 3, 1 1), (6 1, 8 1, 8 3, 6 3, 6 1)))') as multipoligonos

select geometry::Parse('curvepolygon(circularstring(0 1, 1 0, 2 1, 1 2, 0 1))') as circulo

select geometry::Parse('curvepolygon(circularstring(0 4, 4 0, 8 4, 4 8, 0 4), circularstring(2 4, 4 2, 6 4, 4 6, 2 4))') as circulos

select geometry::Parse('compoundcurve(circularstring (0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0))') as pizza

select geometry::Parse('curvepolygon(compoundcurve(circularstring(0 0, 1 2.1082, 3 6.3246, 0 7, -3 6.3246, -1 2.1082, 0 0)))') as pizza

Desenhando no SQL Server

Agora que você já sabe representar as formas básicas, hora de fazer seu primeiro desenho!

 

Seu primeiro gráfico no SQL Server

Vamos agora para o business! Sabendo como funciona a montagem de gráficos do SQL, fica fácil manipularmos as coordenadas XY para que a forma geométrica resultante seja um gráfico. Veja o exemplo abaixo:

Cálculos geométricos no SQL Server

Claro que não poderíamos falar de geometria sem os cálculos que você adorava fazer no segundo grau… certo?
Bom, seja você fã ou não da matemática e trigonometria, tenho uma ótima notícia! Os cálculos geométricos no SQL são uma verdadeira barbada! Literalmente com uma linha de comando você calcula a área de objetos, veja os exemplos abaixo:

-- STArea: Cálculo de área
-- Área trapézio = ((base de cima + base de baixo) * altura) / 2) ==> ((3 + 5) * 3) / 2 ==> 12m
declare @poligono geometry = 'polygon((0 0, 5 0, 4 3, 1 3, 0 0))'
select
	@poligono as desenho,
	@poligono.STArea() as Area_MetrosQuadrados

-- STUnion: União de polígonos
-- Área de uma estrela construida a partir de 2 triangulos
declare @t1 geometry = 'polygon((0 1, 1 1, 0.5 2, 0 1))'
declare @t2 geometry = 'polygon((0 1.64, 1 1.64, 0.5 0.64, 0 1.64))'
select
	@t1.STUnion(@t2) as imagem,
	@t1.STUnion(@t2).STArea() as Area

-- UnionAggregate: União de polígonos de uma tabela
declare @poligonos table (obj geometry)
insert into @poligonos values
	(geometry::Parse('polygon((0 0, 0 2, 2 2, 2 0, 0 0))')),
	(geometry::Parse('polygon((1 1, 3 1, 3 3, 1 3, 1 1))')),
	(geometry::Parse('polygon((3 3, 5 3, 5 5, 3 5, 3 3))'))
select
	geometry::UnionAggregate(obj) as Imagem,
	geometry::UnionAggregate(obj).STArea() as Area_MetrosQuadrados
from @poligonos

Script completo da aula sobre geometry

Por fim, aqui vai o script completo da aula introdutória de hoje sobre geometria no SQL Server:

 

CONCLUSÃO

Apesar da implementação de geometria do SQL ser bastante simples e ter inúmeras possíveis utilizações, hoje poucas pessoas conhecem essa tecnologia, e menos pessoas ainda a utilizam comercialmente.

Está ai mais um recurso que pode ajudar a nos destacarmos no mercado, e tudo começa com o seu primeiro gráfico no SQL Server!

Espero que também tenha gostado desse conteúdo.

 

Abraço do seu amigo Josué 🙂

Follow

About the Author

Oi, aqui é o Josué. Sou o criador do site dba-pro.com. Minha missão é ajudar pessoas a usarem o potencial do SQL Server em suas profissões, para que trabalhem felizes e bem remuneradas. Sou consultor e empreendedor, atuando em empresas desde 2000 e dando aulas desde 2004. Adoro SQL, Excel, automatização de processos, finanças e Coaching. Quando não estou trabalhando ou estudando, gosto de leitura, games para PC, filmes, séries e conversas estimulantes.