Monitoramento das atividades Físicas com o Power BI – Parte 3 – Criando uma Coluna do Tipo Geography.

Depois de importado o(s) arquivo(s) GPX (XML) pelo SSIS, na Parte 2, será feita uma alteração no projeto, para a inclusão de uma coluna do tipo Geography.

O SQL Server permite trabalhar com tipos de dados espaciais Geometry e Geography, desde a versão 2008.

Usar Geometry ou Geography, vai depender do tipo de dados que o arquivo GPX (XML) está utilizando.

O arquivo GPX (XML) utilizado pelo Strava, gera um conjunto de dados  relacionados com pontos em um mapa, devido a isso, o tipo de dado a ser usado nesse caso, será  Geography.

Adicionando Tipos de Dados Geográficos no Projeto

Os dados do(s) arquivo(s) GPX (XML), que estão sendo importados do Strava, já possuem Latitude e Longitude, e será preciso adicionar uma coluna extra do tipo geography.

Como adicionar a coluna Geography??

  • Delete o Fluxo de dados
Fig13
  • Botão direito do mouse -> delete
fig14
fig15
  • No SSIS Toolbox, acesse a aba Common
    • Arraste a Task Script Component para a tela de fluxo de dados (Data Flow), e selecione o tipo Transformation
11
12.png
  • Faça a ligação da Task Import Arq XML, com a Task Add Column Geography.
11
  • Selecione o output
11
11
  • Dê dois cliques na Task Add Column Geography e faça as configurações necessárias, para a inclusão da coluna.
11
  • Em Input Columns, selecione apenas as colunas Lat e Lon.
11
  • Em Inputs and Outputs, selecione Output Columns -> Add Columns, e adicione a coluna location do tipo geography.
11.png
  • A coluna location vai ser configurada com o Data Type: image[DT_Image].
11
11
  • É preciso adicionar uma referência ao conjunto CLR que contém a definição para o tipo de coluna geography: Microsoft.SqlServer.Types, passando o caminho da DLL(caminho do sql server) , para ser referenciado.
  • C:\Program Files\Microsoft SQL Server\120\Shared
11.png

Como fazer essa referência?

  • Dê dois cliques na Task Add Column Geography – > Edit Script
11.png
11
  • Procurar pelo browse o caminho da DLL citada acima.
11.png
  • Clique em ok, e a referência criada já aparece na Solution Explorer
11

Após criada a referencia, é necessário alterar o script para adicionar a coluna geography  a cada linha.

  • Adicionar no campo #region Namespaces:
    • using Microsoft.SqlServer.Types;
    • using System.IO;
    • using System.Data.SqlTypes;
11

Altere o script da seguinte forma:

  • Adicione no método public class ScripMain: UserComponent:

{private MemoryStream ms;

private BinaryWriter bw;}

11.png
  • Adicione no public override void PreExecute{}
    • ms = new MemoryStream(10000);
    • bw = new BinaryWriter(ms);
11.png
  • Adicione no metodo public override void Input0_ProcessInput(Input0Buffer Row)

// Create a SqlGeography object representing the given data
SqlGeography g = SqlGeography.Point((double)Row.lat, (double)Row.lon, 4326);
// Serialize to a memory stream
ms.SetLength(0);
g.Write(bw);
bw.Flush();
// Copy data from memory stream to output column with DT_IMAGE format
Row.location.AddBlobData(ms.GetBuffer(), (int)ms.Length);

11

Download do script alterado.script

Depois de alterado, salve o script e feche.

Ao voltar no Data Flow a Task  Add Column Geography já aparece com  a conexão ok.

11.png

O próximo passo é fazer a conexão da Task Import Arq XML, com a adição da coluna geography na tabela destino Table GPX_Data.

11
  • Obs: Pode  alterar a tabela criada GPX na parte 2, incluindo a coluna location do tipo geography, ou  criar uma nova tabela GPX_Data, conforme abaixo.
    (Foi deletada a coluna GPX).
  • Dê dois cliques na Task Table GPX_Data e configure-a.
11
  • Selecione new, para criar uma nova tabela já com a coluna location adicionada, e troque o tipo da mesma de varbinary(max) para geography.
11
  • Clique em OK, vá em mappings e faça o mapeamento das colunas: origem com destino. Clique em OK.
11
  • Abra o SSMS, selecione o banco no qual foi criada a tabela acima e execute o comando abaixo:
    • SELECT *FROM GPX_Data
  • A tabela veio sem registros, pois ainda não foi feita a importação dos dados.
11

Ao dar o select na tabela acima criada com a coluna location, aparece abaixo uma aba chamada resultados espaciais.

11
  • Depois de todo o processo feito, é hora de executar o pacote, ou seja, de fazer a importação dos dados do arquivo origem GPX (XML) para a tabela do SQL Server (GPX_Data).
  • Com o mouse direito, de dois cliques em cima de SSIS Packages -> Execute Package
11.png

Ao executar o pacote, se toda a configuração para a importação do arquivo de origem foi feita corretamente, o SSIS irá fazer a importação para a tabela destino!

11.png
  • A importação dos dados foi realizada com sucesso!!
  • Abra o SSMS, dê um select na tabela e visualize os dados importados.
12

No Monitoramento das atividades Físicas com o Power BI – Parte 4 – , iremos fornecer os dados de localização real do país, através do Shapfile Brasil, para cada um dos pontos existentes no arquivo GPX (XML).