telecomHall BR

 

Hunter GE Drive Test (Best Server)

terça-feira, 6 de julho de 2010 20:00:00 Categories: Access Drive Test Google Earth Hunter
Rate this Content 2 Votes

Já aprendemos a plotar as informações de Cobertura (Signal Level) de uma rede qualquer – GSM, UMTS ou qualquer outra tecnologia – a partir dos dados de um arquivo de texto no Google Earth. Também já vimos como podem ser facilmente criadas interfaces no Access para interagir com as aplicações.

 

 

Hoje vamos um pouco mais além, e aprender como plotar também os dados de Melhor Servidor de uma rede qualquer, e agora vamos começar a usar as interfaces de usuário, buscando sempre uma melhor experiência de usuário – mesmo que esses usuários sejamos nós mesmos.

Diferente do indicador de Cobertura (Signal Level), que é tematizada por ranges de valores, o indicador de Melhor Servidor (Best Server) é uma grandeza de valores individuais, ou seja, cada valor tem uma tematização específica. Com o desenvolvimento, esses conceitos ficarão mais claros.

 

Objetivo

A partir dos dados coletados em Drive Test, gerar um arquivo de saída no formato KML do Google Earth com as informações plotadas de acordo com nossas escolhas – configurações, a partir de uma interface amigável, e não mais rodando as macros diretamente (embora isso continue sendo possível, vale a pena lembrar). Vamos plotar dois indicadores cujas dimensões ou grandezas englobam o tratamento de praticamente todos os demais indicadores que viermos a analisar:

  • Signal Level, que como já vimos é definido por ranges de valores. Por exemplo, para valores que estejam entre – 65 e -75 dBm colorimos o ponto de uma certa cor.
  • Best Server – um novo indicador que aprenderemos hoje, e que representa o setor servidor, ou seja, o setor que tem o maior nível de sinal naquele ponto. Esse indicador é Individual, o que significa que cada valor deve ter tem uma cor diferente.

Em outras palavras, plotar os dados do drive test no Google Earth, mais ou menos como fazemos com mapas temáticos no Mapinfo, agora para Mapas Temáticos por Ranges e Mapas Temáticos Individuais.

Nota: Na grande maioria dos tutoriais temos os arquivos relacionados, e que são enviados para os Assinantes.

  • Se você é um Assinante, por favor verifique em seu e-mail o arquivo recebido para este tutorial, e utilize o suporte para qualquer dúvida ou problema que encontrar.
    • Blog_017_Hunter_GE_DriveTest_(best_server).zip.
  • Se você é um Membro comum e tem acesso apenas ao tutorial escrito, aprenderá sempre conceitos muito importantes que com certeza vão lhe ajudar em seus próprios desenvolvimentos. Leia e comprove em cada novo tutorial.
    • Se você deseja contribuir de alguma forma, a maneira mais simples é tornar-se um Assinante.

A nossa audiência vai de estudantes a profissionais experientes. Por isso pedimos um pouco de compreensão e tolerância se alguns dos conceitos hoje apresentados forem básicos para você. Além disso, todos os tutoriais, códigos e programas estão num processo contínuo de edição. Isso significa que se encontrarmos algum erro, por exemplo, de gramática ou ortografia, tentaremos corrigi-lo o mais rápido possível. Também gostaríamos de receber o seu feedback, nos informando de erros encontrados ou passagens que ficaram confusas e merecem ser reescritas.

 

Estrutura de Arquivos

Não precisamos criar nenhum novo diretório hoje pois estamos trabalhando com um módulo existente – Drive Test (1).

 

Essa estrutura, bem como seus arquivos já foram criados em tutorial anterior.

 

Tutorial sobre Signal Level no GE

Este tutorial é praticamente uma continuação do tutorial anterior onde vimos como plotar os dados de Cobertura (Signal Level) no Google Earth. Por esse motivo, não vamos ficar repetindo todas as explicações feitas lá, por exemplo como será definido o nosso dado de entrada, como é o processo, etc.

Dessa forma, é imprescindível que você leia todo o tutorial anteriro novamente, e só depois, continue deste ponto em diante. Se você não fizer isso, algumas explicações aqui pareceram faltantes.

Clique aqui para ler o tutorial Hunter GE Drive Test (Signal Level).

Após ter lido o tutorial então, podemos continuar.

 

Alterações nos objetos do Banco de Dados

A forma mais fácil de vermos o que há de novo é começar pelas alterações que fizemos nos objetos do banco de dados, ou seja, tabelas, consultas, etc. Vamos ver as principais alterações.

  • Tabela DriveTest: é a nossa tabela para onde os dados do arquivo de entrada são importados. Não houve nenhuma alteração, pois essa tabela já possui os dois campos que vamos usar hoje: signal_level e best_server.

 

  • Consulta qry_DriveTest: uma alteração simples, somente adicionamos o campo best_server a consulta, já que a anterior tinha apenas latitude, longitude e signal_level.

 

  • Consulta qry_DriveTest_Coords: aqui também apenas adicionamos o campo best_server (só que agora da consulta qry_DriveTest), com um pequeno detalhe: Existem pontos – coordenadas – onde temos mais de um valor, ou servidor. Optamos por escolher apenas um deles, e para isso usamos uma função, no caso, o máximo valor (Max). Essa aproximação é bem satisfatória na prática, você vai comprovar.

 

  • Tabela tbl_Aux_Value_Color: antes de falar da consulta com as maiores alterações, precisamos falar de uma tabela auxiliar, que vamos usar. É a tabela tbl_Aux_Value_Color, que contém uma lista de valores auxiliares, informando qual deve ser o temático para o valor correspondente.

 

Ou seja, por exemplo para o valor 11, a tabela informa que deveremos colorir com a cor vermelha!

Nota: este é um aplicativo de exemplo, onde queremos que você aprenda. Na verdade, a tabela deveria ter valores para todos os valores possíveis de best_server. No exemplo, usamos os valores tais quais estão nos nossos dados, apenas. Mas imagine por exemplo se no nosso Drive Test aparecesse o best_server de valor 2. Qual seria a sua cor?

Um outro problema também, que também veremos como resolver futuramente, é a quantidade de cores. Novamente no nosso exemplo, estamos usando apenas cinco cores, pois no exemplo temos apenas cinco setores best servers. Mas e quando tivermos dezenas de valores individuais, e as cores tiverem que acabar sendo repetidas? Sim, em alguns casos teremos setores com a mesma cor – cabe a nós construirmos algoritmos de forma que essas cores iguais fiquem o mais separadas o possível umas das outras.

  • Consulta qry_DriveTest_Themathic: é a consulta final, que usamos para criar o arquivo KML, via código VBA. O mais importante é que essa tabela tenha a latitude e longitude, os valores de signal_leve e best_server, e os temáticos de cada um deles. Já vimos como criar o temático para signal_level, baseado em ranges. Vamos agora ver como criar a consulta da forma como necessitamos, mostrada abaixo, obtendo o nosso mapa temático do Best Server.

 

Vamos então aprender como mostrar os valores correspondentes de cada registro, baseado na nossa tabela auxiliar?

Primeiro, abra a consulta qry_DriveTest_Thematic do tutorial anterior no modo estrutura, clique e arraste (1) a tabela auxiliar para a área da consulta (2).

 

Nesse ponto, temos uma consulta com duas tabelas (na verdade uma delas é uma consulta, mas podemos considerar como uma tabela, para simplificar). Porém as tabelas “soltas” não têm sentido nenhum, e precisamos definir uma regra entre os seus dados.

 

É um pouco parecido com aquilo que já ouvimos falar de relacionamentos, um pra um, um pra N, etc. Mas isso agora não é tão fácil de ser entendido, e nem é nosso objetivo.

Como falamos, precisamos juntar de alguma forma as duas tabelas (ou consultas), para que pareçam como uma só. E isso é simples. Vamos lá.

Na estrutura da Consulta, clique no campo best_server da consulta qry_DriveTest_Coords (1), e arraste esse campo para cima do campo Value da tabela tbl_Aux_Value_Color (2). O resultado fica como mostrado abaixo. É como se as tabelas “dessem as mãos” esse tornassem uma só!

 

O que acabamos de fazer pode parecer simples, mas suas aplicações são muito interessantes, e mais abrangentes do que o exemplo que estamos vendo hoje. Perceba que podemos trabalhar com as tabelas e consultas como objetos, juntando seus campos corrspondentes, etc. Cada vez mais utilizaremos essa característica que o SQL nos proporciona. Aqui você pode começar a perceber as vantagens que o Access vai tendo em relação ao Excel. Não que não gostemos do Excel, pelo contrário, e até vamos usá-lo bastante. Mas existem aplicações em que a utilização do Access é consideravelmente superior.

Continuando, dando um duplo clique na linha que junta as duas tabelas, temos as propriedades da junção.

 

Por hoje queremos que você apenas aprenda como juntar duas ou mais tabelas ou consultas, criando uma nova consulta. Se vcoê entender bem isso já está suficente. Mas observe que temos três opções de junção.

1: a forma padrão - para os dados aparecerem, tem que ser iguais (correspondentes) em ambas as tabelas e/ou consultas.

2: inclui todos os registros da primeira tabela/consulta, e somente os registros da outra tabela que forem correspondentes. O que isso faz? Bom, todos os registros da primeira tabela/consulta vão aparecer; E nos casos dos valores da outra tabela/consulta, quando não houver valores correspondentes, o campo aparece em branco! Ok, ficou confuso.

Então vamos fazer uma simulação para tentar ver como funcionam as opções 1 e 2 que mostramos. Para isso, apague o registro da tabela auxiliar com Valor 11, e Cor Vermelho.

Se você executar novamente a consulta – ainda com a opção padrão de junção - vai ver que não aparece nenhum rgistro com valor de best_server igual a 11. Isso porque para aparecer deveríamos ter esse valor em ambas as tabelas!

 

Agora, dê um duplo clique na linha que une as tabelas, e escolha a opção 2.

 

Veja que graficamente o Access nos indica que há uma junção: a setinha, que vai da tabela que terá todos os dados mostrados para a tabela que mostrará apenas os dados quando tiver correspondente.

Lembre-se que agora não temos o valor 11 na nossa tabela auxiliar. E então, o que acontece?

 

Como era de se esperar, quando há valor correspondente - 18, o campos associados com esse valor com também correspondente é mostrado: Cor, como temático. E quando não temos valor correspondente – 11, que apagamos, os campos associados aparecem em branco!

Uma pausa. Essa opção 2 não vamos usar hoje, por isso não se preocupe se você não entendeu bem. Queremos apenas que você termine esse tutorial entendendo como funciona a junção no SQL, ou a instrução JOIN. Em outras palavras, é o que fizemos graficamente, juntando as duas tabelas arrastando os campos cujos valores deve ser equivalentes em ambas. Ou seja, como duas ou mais tabelas ou consultas podem ser unidas.

Nota: só como observação, lembre-se que você sempre pode construir as consultas diretamente usando a sintaxe SQL, para isso basta acessar o Menu Design (1) -> Visualizar (2) -> SQL View (3).

 

Faltou falar da opção 3: que nada mais é do que o contrário da opção 2. Mas como já confundimos demais você hoje, vamos deixar para explicar isso melhor quando formos usar, aí damos exemplos melhores.

Vamos voltar ao que interessa?

Os próximos objetos que faltam para mostrar as alterações são o nosso módulo - mod_GE_DriveTest_Main – onde se encontra o nosso código VBA e a nossa macro – que antes era responsável por chamar o nosso código. Agora essa macro ficará responsável por abrir o nosso formulário Principal, e para isso será chamada de Autoexec (lembre-se que quando uma macro tem o nome especial de Autoexec ela é executada sempre que o banco de dados é aberto).

Não há muita novidade no código VBA do módulo mod_GE_DriveTest_Main, apenas incluimos algumas instruçoes para processar o novo indicador. A novidade agora é que temos código dentro dos formulários. Então, vamos falar um pouco sobre eles antes.

 

Formulários – a nossa Interface!

A interface dos nossos programas são definidas por Formulários, seja no Access, Excel Mapinfo ou qualquer outro software que permita programação. Para começar, vamos dar uma olhada como é o nosso formulário final desse módulo.

 

Tirando uma série de detalhes como imagens (logo), labels, títulos, botões fechar/minimizar/maximizar, etc, podemos destacar quatro funções principais, que vamos detalhar a seguir.

  1. Caixa de texto com um nome de arquivo a ser processado, com uma sugestão incial de um arquivo padrão já pré-carregada;
  2. Botão para selecionar um novo arquivo ao invés do sugerido;
  3. Opções para qual ou quais indicadores devem ser processados: um, ambos ou nenhum;
  4. Botões para Rodar e Sair.

Veja que esta interface não é a mais completa possível, há uma série de possibilidades que criam uma melhor experiência do usuário, ou seja, pode ser ainda muito mais amigável. Por exemplo, poderíamos ter também uma opção para indicar onde desejamos salvar o arquivo de saída – inclusive definindo o nome. Ou uma opção para abrir o Windows Explorer direto na pasta onde estão os arquivos. Uma opção para indicar se deve sobrescrever o arquivo de saída caso o mesmo já exista. E assim por diante.

Mas o que temos aqui é suficiente para demonstrarmos o que precisamos até o momento. Cada vez mais buscamos melhorar a experiência do usuário, mesmo que este usuário sejamos nós mesmos.

Dicas simples de melhoria de experiência do usuário podem ser até mesmo as Dicas de Tela. Por exemplo, quando passar o mouse por cima, indicar o que será feito.

 

VBA nos Formulários

Quando trabalhamos como formulários, é importante saber como inserir o código num controle, como um botão por exemplo.

Já vimos isso no tutorial anterior, mas para inserir o código para um evento, como por exemplo o clique do mouse – Evento On Click – podemos fazer da seguinte a seguir.

Primeiro selecione o controle (1), e acesse as suas Propriedades (2). Na guia Eventos, escolha o evento desejado (3) e escolha na seta o valor [Event Procedure] ou dê um duplo clique na linha vazia (4). Em seguida, clique no botão com três pequenos pontos (5). Isso te leva direto ao ambiente de programação VBA.

 

Observe que agora não estamos colocando nossas funções e procedimentos em um módulo. O VBA fica armazenado dentro do próprio formulário (1).

 

Referências, se lembra delas?

Em muitas aplicações, inclusive esta simples, utilizamos uma caixa de diálogo para selecionar um arquivo. Esse tipo de caixa de diálogo nos é familiar para usuários do Windows, e nos permite navegar até um arquivo e selecioná-lo.

Existem diversas formas de se fazer isso – bem como quase tudo o que fazemos, é bem verdade. Mas nesse caso tem uma particularidade: utilizamos o objeto do Office File Dialog. Para usar um objeto do Office, como nesse caso, precisamos utilizar uma Referência. Ou seja, precisamos dizer ao Access para usar uma série de funções e outras propriedades que estão encapsuladas numa DLL. Tá bom, voltou a linguagem complicada. Embora não seja tão complicado quanto parece, os nomes assustam, e por enquanto, aceite apenas o seguinte: quando você inclui referências no projeto VBA do Access, pode usar uma série de extensões que essa referência permitir. Podemos fazer uma analogia rudimentar como um suplemento do Excel, que uma vez carregado, nos permite utilizar por exemplo novas fórmulas.

Mesmo que não esteja entendido, no VBE vá no Menu Ferramentas (1) -> Referências (2).

 

Na tela que surge, escolha a biblioteca Microsoft Office 12.0 Object Library. Observação: pode ser que a sua biblioteca do Office tenha um número diferente. 12 siginifica Office 2007; 11 significa Office 2003. Não importa qual o número, selecione a biblioteca Microsfot Office XX.X Object Library.

 

Observação Importante: O aplicativo desse exemplo foi feito com a versão 2007 (Office 12) do Access. Caso você utilize uma versão diferente, encontrará um erro, e precisará alterar a referência para a sua correspondente!

Pronto, você já pode usar a Biblioteca de Objetos do Office. Nota: essa biblioteca tem muito mais recursos do que uma simples caixa de diálogo. Em seu tempo, veremos vários.

Uma vez disponível a biblioteca, chamamos a caixa de diálogo por exemplo da forma mostrada abaixo.

 

Observe que simplesmente manipulando via código customizamos a caixa de diálogo, definindo por exemplo o diretório onde ela deve ser inicialmente aberta (1), o seu título (2) e até mesmo tipos de arquivos customizados (3). Isso dá além de tudo uma aparência profissional aos nossos aplicativos.

 

O código

Como vimos, o código VBA encontra-se parte no módulo, e parte no formulário. Ambos podem ser acessados pelo VBE. Os códigos estão comentados, mas em caso de dúvida, entre em contato.

 

Nossa aplicação

Embora simples, a aplicação que vimos hoje serviu para demonstrar o uso das interfaces nos módulos da Ferramenta Hunter. O resultado final pode ser visto, dependendo do valor do checkbox.

 

E esta é a parte do código VBA que faz as escolhas. Dependendo se o checkbox estiver selecionado, o indicador será plotado.

 

E os resultados poderm ser vistos abaixo, por exemplo com um plot de exemplo para Best Server. Note que o Best Server não precisa de legenda. Mas também não seria tão difícil fazermos uma. Quando tivermos mais indicadores, cada um terá a sua própria legenda.

 

E da mesma forma que já fizemos antes, temos os dados de Cobertura (Signal Level) plotados.

 

Observação: lembramos que os dados não estão perfeitamente alinhados com o arruamento do Google Earth porque eles foram gerados aleatoriamente, e não por um erro do nosso programa. Quando você utilizar com os dados reais de sua rede, verá que os dados ficam perfeitamente alinhados, salvo algumas imprecisões de GPS.

Você já viu que todos os pontos são clicáveis, tanto na interface principal, quanto no browser ao lado. Por exemplo, se você deseja navegar para um ponto específico de nível de sinal ruim, basta dar um duplo clique no mesmo.

 

Além disso, você utiliza todos os recursos que estiverem disponíveis. Por exemplo, pode abrir a nossa rede Hunter_GE_Network, e analisar o drive test junto com as informações dos setores. Pode verificar rapidamente qual a antena está sendo usada, qual o til, etc.

 

Cada vez mais aumentamos os nossos recursos, e como resultado a nossa análise se torna cada vez mais simplificada. Quanto mais informações tivermos de forma simples e acessível, mais rápido podemos verificar quais as ações que devem ser tomadas.

Um conjunto de informação centralizada e de qualidade: isto é o essencial no nosso dia-a-dia, pois efetivamente aumentam a nossa produtividade, consequentemente os nossos resultados. Essa é a filosofia da Ferramenta Hunter.

 

Conclusão

Aprendemos hoje como plotar as informações de Cobertura e Melhor Servidor de uma rede qualquer – seja ela GSM, UMTS ou outra tecnologia. E para isso usamos apenas os dados básicos – valores – disponíveis em um arquivo no formato texto que pode ser exportado a partir de qualquer software de coleta e/ou processamento – no caso o mesmo que foi usado para realizar o Drive Test.

Também vimos como a criação de interfaces no Access é simples, e como sua utilização melhora a experiência do usuário.

Aprendemos ainda mais alguns novos conceitos, como utilizar Objetos após a configuração de referências, como o caso de uma caixad de diálogo Abrir Arquivo do Windows.

O resultado final continua simples, porém conforme esperado, demonstrando as possibilidades futuras, mas já sendo aplicável na prática, na nossa busca constante de rapidez no processamento, precisão nas análises e facilidade na operação!

Esperamos que você tenha gostado. Tire suas eventuais dúvidas postando seus comentários no Blog ou através do nosso Suporte via Chat ou E-mail.

Até nosso próximo encontro, e lembre-se: O seu sucesso é o nosso sucesso!