Banco de Dados, Eventos

Primeiro post do evento 1º DevDay Curitiba! “Business Intelligence usando informações Geoespaciais” – Thiago Zavaschi

Olá pessoal,

Conforme prometido, segue o primeiro post do evento DevDay Curitiba que aconteceu no último dia 25/09 na Faculdade de Tecnologia OPET. Os posts seguirão a ordem das palestras. A primeira palestra do dia foi com Thiago Zavaschi, falando sobre Business Intelligence usando informações Geoespaciais. Outra coisa, esses posts serão uma síntese de cada palestra.

Os exemplos desse post foram feitos com a edição Developer do SQL Server 2008, mas com qualquer edição funciona.

Bom, vamos ao que importa!

A parte inicial da palestra foi uma introdução sobre dados geoespaciais no SQL Server 2008.

Em primeiro lugar vamos aprender o que são dados geoespaciais, já sabemos que o SQLServer 2008 implementa nativamente o recurso de dados espaciais. Mas o que são esses tipos de dados?

O SQLServer 2008 possui dois tipos de dados que permitem armazenar, pontos, linhas, polígonos, mapas enfim, permite trabalhar com geoprocessamento. etc. Existem dois tipos de dados espaciais, são eles Geometry e Geography. Mas qual a diferença? O tipo de dados Geometry é utilizado para armazenar dados como pontos, linhas, mapas planificados, e polígonos. Já o tipo Geography permite armazenar dados de latitude e longitude, posicionamento no globo terrestre, como os dados usados em um GPS por exemplo. Esses tipos são padronizados pelo Open Geospatial Consortium (OGC).

Os dados espaciais são armazenados no banco como qualquer outro tipo de dado, e podem ser recuperados em uma query. Agora vejamos o seguinte, quando você executa uma query no SQL Server 2008 e traz um desses tipos, automaticamente é incluída uma guia de resultados chamada “Resultados Espaciais”.

Vamos executar o seguinte comando utilizando o tipo geography:

select (geography::STGeomFromText(‘POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))’, 4326)) from SpatialTable

Note que temos como resultado uma sequencia hexadecimal (conforme imagem acima) que de imediato não diz muita coisa, você deve estar pensando “hum que interessante!”. Mas agora começamos a tornar as coisas mais interessantes, ao clicar na guia Resultados espaciais podemos ver uma figura como a imagem abaixo:

Note no comando SQL que o primeiro parâmetro e o último são iguais “((-122.358 47.653” isso é necessário para fecharmos o nosso polígono, outro detalhe é que estou usando o tipo geography, e sendo esse utilizado em mapas elipsoidais, posso escolher a projeção que melhor me atende.

Com os tipos de dados geometry, além de criar linhas, polígonos, desenhar mapas também podemos fazer muitos cálculos como áreas de uma figura, verificar se um ponto pertente a uma reta, intersecção de formas, calcular distancias entre as figuras etc.

select geometry::STPolyFromText(‘POLYGON((3 1,1 1, 2 2, 2 3, 1 1,3 1))’, 0)

Ao desenhar uma imagem, caso os pontos finais e iniciais não coincidam, você receberá uma mensagem de erro como essa abaixo:

Msg 6522, Level 16, State 1, Line 1

Erro do .NET Framework durante a execução de rotina definida pelo usuário ou agregação “geometry”:

System.FormatException: 24306: The Polygon input is not valid because the start and end points of the ring are not the same. Each ring of a polygon must have the same start and end points.

System.FormatException:

at Microsoft.SqlServer.Types.Validator.Execute(Transition transition)

at Microsoft.SqlServer.Types.Validator.EndFigure()

at Microsoft.SqlServer.Types.ForwardingGeoDataSink.EndFigure()

at Microsoft.SqlServer.Types.OpenGisWktReader.ParseLineStringText()

at Microsoft.SqlServer.Types.OpenGisWktReader.ParsePolygonText()

at Microsoft.SqlServer.Types.OpenGisWktReader.ParseTaggedText(OpenGisType type)

at Microsoft.SqlServer.Types.OpenGisWktReader.Read(OpenGisType type, Int32 srid)

at Microsoft.SqlServer.Types.SqlGeometry.GeometryFromText(OpenGisType type, SqlChars text, Int32 srid)

at Microsoft.SqlServer.Types.SqlGeometry.STPolyFromText(SqlChars polygonTaggedText, Int32 srid)

Hierarquia dos dados espaciais

Temos 11 tipos de instância de dados espaciais, no entanto é permitido que instaciemos 7 tipos para trabalhar.

São eles:

  • Point
  • MultiPoint
  • LineString
  • MultiLineString
  • Polygon
  • MultiPolygon
  • GeometryCollection

Na imagem abaixo (destacados em azul), podemos ver a hierarquia dos tipos de instâncias (Geometry e Geography).

A primeira parte da palestra finaliza com essa introdução sobre os tipos geoespaciais. Partimos agora para aplicações desses tipos de dados.

Como o foco da palestra era B.I usando dados geoespaciais, Zavaschi iniciou essa parte explicando que um B.I precisa ter duas características principais:

1-    Deve ser rápido;

2-    Deve ser preciso.

As duas características acima são fundamentais para esse tipo de sistema.

Ele até criou uma situação pra exemplificar bem essas características:

“Um cidadão pergunta a hora para outra pessoa, então a pessoa aguarda, aguarda, aguarda e aguarda mais ainda, 2 minutos depois ela responde.”

Dessa situação, concluímos que:

1-    A resposta não foi rápida;

2-    A resposta não foi precisa;

Quando a pessoa recebeu a resposta, a hora já não era mais precisa, nem tampouco servia para ela tomar uma decisão, se houvesse uma oportunidade, ele já havia perdido.

Sabemos que hoje as empresas têm cada vez mais necessidades de incorporar informações visuais nas suas análises e tomadas de decisões, a frequência com que as pessoas consomem esses dados aumenta exponencialmente a cada dia.O SQLServer 2008 fornece esse mecanismo nativo para que as empresas tirem o melhor proveito para seus negócios com o máximo de performance. O SQL Server 2008, incorpora o suporte a índices espaciais, mecanismo que otimiza a busca das informações .

Veremos agora alguns cenários onde a inclusão de dados geoespaciais podem melhorar a eficiência de um negócio e torna-lo mais competitivo:

  • Os dados geoespaciais permitem uma melhor compreensão dos cenários pela análise visual.
  • É possível visualizar as regiões onde as vendas se concentram e onde estão fracas;
  • Criar mapas temáticos específicos por produtos ou serviços oferecidos;
  • Para o segmento de transporte rodoviário, por exemplo, é possível calcular distâncias e definir rotas para chegar ao destino;
  • Monitoramento com informações visuais;

Por enquanto é isso.

Até o próximo!

Abraços!

 

Padrão

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s