Hunter GE Network (Application)

quinta-feira, 21 de julho de 2011 14:03:00 Categories: Access Base de Dados Google Earth Hunter
Rate this Content 1 Votes

A plotagem das informações da rede (sites e cells) de forma geo-referenciada pode trazer muitos benefícios, desde uma vizualização mais fácil e intuitiva da mesma, como também ajuda a identificar problemas, como setores mal orientados (azimutes).

 

 

E quando esses dados geo-referenciados estão no Google Earth, fica ainda melhor, pois conseguimos ter também uma visão intuitiva da área de cobertura real que o setor atende.

Hoje veremos uma aplicação completa, customizada e que pode ser facilmente extendida, responsável pela criação de arquivos KMZ – no formato do Google Earth – com esses dados.

A grande vantagem desse tipo de ferramenta customizada é que o usuário não apenas pode gerar rapidamente seus dados de trabalho, como também pode modificar ou adicionar funções de acordo com a sua necessidade – o que não é possível em aplicações comerciais similares – que não fornecem o seu código fonte.

 

Objetivo

Apresentar a solução do Módulo Hunter GE Network.

Observação 1: esse módulo, que vamos apresentar agora está completo, porém ainda teremos diversas melhorias que serão publicadas posteriormente. Isso porque precisamos dar um certo tempo para os colaboradores do telecomHall praticarem, ler o código que receberam, aprender! Essas melhorias inclusive podem ser sugeridas pelos mesmos, e vão sendo inseridas com o tempo.

Observação 2: se você não é colaborador, mas tem interesse em desenvolver aplicação similar, esse passo a passo, assim como os passo a passo de todos os módulos Hunter, vai encontrar aqui um excelente ponto de partida, com dicas que você não encontra em outro lugar.

Observação 3: logo em breve, nos próximos tutoriais, estaremos entrando significativamente no mundo de Indicadores de Performance. Aplicações completas e muito interessantes – delta KPI, rank, reports completos por e-mail, entre outros algorítmos muito eficientes e importantes que você aprenderá aqui. Assim, prepare-se para o que vem por aí, não deixando de ler algum tutorial anterior, e principalmente, familiarizando-se com essas ferramentas que tanto melhoram nossa vida.

Sem mais observações, vamos começar mostrando a interface básica desse módulo.

 

Nota: observe que tentamos manter uma interface limpa e simplificada. Isso porque a nossa aplicação é um SDK – ou Starter Development Kit – e não faz sentido ser mais avançado que isso, pelo menos por enquanto.

Essa interface interage com os dados da nossa tabela com os dados da rede (módulo Hunter Network).

Nota: Com o intuito de facilitar a demonstração, a tabela encontra-se fisicamente nesse arquivo – não recomendado. Os dados da rede – tabela – devem estar em um local único (no caso o Hunter Network). Assim outros módulos, e não só o GE Network, podem acessar os dados atualizados e corretos.

As configurações agora são apresentadas em diversas abas.

Na primeira aba (Main) temos as opções simples de escolha. Aqui é possível por exemplo escolhermos se os setores deve ser criados como polígonos, linhas, ou ambos.

 

As demais abas não precisam ser alteradas sempre. Elas contém informações da rede, e informam para a ferramenta as configurações da rede existentes, e se as mesmas devem ser plotadas.

Por exemplo na aba Configurations, informamos as tecnologias, bandas e elementos do core (group) como BSC GSM e RNC UMTS.

 

Veja que na nossa rede de exemplo temos 2 tecnologias (GSM 900 e UMTS 2100), com as respectivas BSC 'Hnt_BSC' e RNC 'Hnt_RNC'. O campo area representa uma área geográfica, geralmente um estado inteiro com várias BSC/RNC's. O campo Use, indica se esses dados da linha correspondentes devem ser plotados. Isso permite por exemplo que você gere um arquivo apenas para GSM (simplesmente desmarcando a linha UMTS).

E o campo Area_Group_Thematic é o mais importante. Aqui você escolhe a cor aplicada a cada agrupamento/tecnologia. Mais tarde entederemos melhor isso, mas por exemplo, se o valor estiver como OperatorRed, os dados serão vermelhos.

 

Já na aba Styles, temos uma tabela com a informação de todos os atributos de cada estilo. Por exemplo quando traçamos um setor vermelho (OperatorRed), todas as informações requeridas são buscadas daqui, como o código KML da cor.

 

Nota: perceba que essa tabela não precisa de muita alteração. Basta escolher um desses estilos qualquer para aplicar – como fizemos na aba anterior, onde definimos setores UMTS do RNC Hnt_RNC como vermelhos.

Além disso, se for preciso atualizar, temos uma opção mais simples – essa tabela está no formato do Excel, onde pode ser modificada e colada de volta aqui.

 

Os dados dessa tabela, caso você deseje alterar, são poucos – os campos em vermelho são fórmulas. De qualquer forma, você tem liberdade total de fazer como desejar.

 

A próxima aba contém as informações de 'comprimento' do setor. Esse comprimento é definido em metros, e pode ser alterado, de acordo com as suas tecnologias e bandas existentes. Veja por exemplo que definimos setores GSM 900 como 300 metros.

 

Finalizando, temos uma última aba, com informação das contantes que são acessadas pela ferramenta e utilizadas nos cálculos do setores.

 

Assim como em outros módulos, temos a opção de abrir diretamente o local (diretório) onde os arquivos foram gerados. Isso agiliza ainda mais a interação.

Uma pequena Ajuda pode ser acessada através do botão 'Help', com as principais informações de ajuda do módulo.

E o botão principal, com o símbolo do Google Earth, que gera os dados.

Não se preocupe se parece 'muita' informação. Tudo fica mais claro quando praticamos, utilizando a ferramenta. Então vamos lá, e agora ver com um pouco mais de detalhes os objetos (tabelas, consultas, etc.) do banco de dados.

 

Cenário

O nosso cenário hoje está bem definido – a partir de uma tabela única com os dados de tecnologia, coordenadas, azimutes, etc. – gerar os dados no Google Earth, fazendo todos os tratamentos necessários.

Naturalmente, para que os dados sejam plotados corretamente, alguns campos são necessários. Para facilitar a adaptação para a sua rede, além da aplicação funcional, com os dados fictícios, você ainda recebe a tabela Network do Hunter no formato Excel. Lembre-se que essa tabela cada vez mais conterá mais campos importantes para nossa evolução.

Para facilitar, se você tiver alguma dificuldade, primeiro pratique com a ferramenta com os dados que já estão disponíveis (dados fictícios do Hunter).

Em seguida, para gerar os dados de sua rede sem problemas nenhum, coloque os dados da mesma no mesmo formato da planilha que você recebeu. Em seguida, cole os dados na tabela do módulo.

Nota: novamente lembrando – na verdade, você deve ter esses dados numa tabela do módulo Network, e vincular a mesma. Mas para exemplo, e praticar, você pode utilizar a tabela fisicamente aqui nesse arquivo de exemplo. Acredite, com o tempo, você vai ver que essa é um ótima prática, mesmo que talvez ainda ache um pouco complicado – mas não é.

 

IMPORTANTE: Mas eu preciso seguir exatamente essa nomenclatura? A resposta é não. Para praticar, recomendamos que siga, até mesmo para evitar problemas com erros desnecessários. Mas você pode ter a sua tabela de sua rede em um outro formato, principalmente os nomes dos campos. Logo mais veremos com contornar facilmente esse problema – e você não precisará alterar nada nos seus dados já existentes.

 

Estrutura de Arquivos

A estrutura básica do Hunter você já conhece dos demais tutoriais, e se vem acompanhando a evolução, já deve ter os diretórios desse módulo já criado.

De qualquer forma, segue a estrutura básica.

 

O diretório 'Script' contém o Script, que nesse caso é a nossa aplicação. O diretório 'Output' conterá todos os arquivos KML/KMZ gerados. O diretório 'Help' contém arquivos de apoio, como por exemplo planilhas auxiliares. E o diretório 'icon', comum a todos os módulos Hunter GE (Como o de Performance/KPI e Parameters); esse diretório contém as imagens auxiliares que a aplicação acessa para uma apresentação profissional dos dados.

Agora, vamos falar da aplicação com mais detalhes.

IMPORTANTE: apresentaremos as formas criadas por nós para obtenção da solução. Isso inclui uma série de truques e considerações, que com criatividade nos permitem um resultado prático e funcional. É claro que sempre podem haver melhorias, algumas inclusive já previstas e em desenvolvimento. Você mesmo poderá estender a aplicação para um nível ainda maior e adequada para suas possíveis necessidades. De qualquer forma, certamente vale como aprendizado para se entender como tudo pode ser feito.

 

A Aplicação

Toda a aplicação é feita no Access com VBA. Vamos ver detalhes importantes sobre o desenvolvimento.

 

Objetos do Banco de Dados (Tabelas, Consultas, Forms e Macros)

Vamos começar falando das tabelas auxiliares, explicando a sua finalidade.

Começamos pela tabela 'tbl_Aux_AntHBW', e sua correspondente consulta 'qry_Aux_AntHBW'. A finalidade dessa consulta (a tabela tem todos os dados, a consulta, com filtro, é o que acessamos pelo código) é fornecer passos para auxílio no cálculo dos polígonos. Representa o número de pontos que temos na circunferência do semi-círculo do polígono do setor.

 

Isso mesmo, esse já é um primeiro truque que utilizamos aqui. Todo círculo plotado na verdade não passa de uma série de linhas interligadas (pontos). Quanto mais pontos, mas 'preciso' o círculo fica. Mas você vai ver que um step de 4 – que é o que usamos é mais do que suficiente. (Você pode praticar alterando o critério dessa consulta, e vendo como o polígonos ficam gerados).

Uma outra tabela, a 'tbl_Aux_CheckBoxes' também representa um artifício interessante. Essa tabelas armazena os estados dos checkbox do formulário principal.

 

Se não armazenássemos esses valores, sempre que você abrisse a aplicação, os valores seriam padrão, e não aqueles que você utilizou da última vez. Além disso, com todas as nossas configurações armazenadas em tabelas, você pode rodar a aplicação diretamente pela macro principal 'Network_GE_Plot_RUN' – já que os valores que o código lê são os valores que estão na tabela. Só para finalizar sobre as Macros, já que falamos delas, a Macro 'Autoexec' é responsável por abrir a interface do usuário quando a aplicação for chamada.

 

Voltando para as tabelas, a tabela 'tbl_Aux_Constants' é extremamente simples, e serve apenas para armazenar constantes que são utilizadas nos cálculos do setor baseado em azimute e distância.

 

Falando em distância, a mesma é definida pelos valores da tabela 'tbl_Aux_Technology_Band_Distance' – dados acessados pela consulta 'qry_Aux_Technology_Band_Distance'. Os valores estão em metros, e você pode alterar de acordo com o que desejar, tanto pela interface, quanto diretamente pela tabela.

Para finalizar, duas últimas tabelas, que definem os estilos de cada um de nossos setores.

 

Como mencionamos anteriormente, é aqui que são definidos os estilos, e seus atributos correspondentes Utilizando o mesmo exemplo, se adicionamos um estilo 'OperatorRed', devemos adicionar também todos os atributos desse estilo. Por exemplo, se o setor for uma linha, qual deve ser a sua cor? Vermelho, ou falando em termos de Google Earth, 'ff0000ff'. E assim por diante, inclusive para outros atributos como 'Qual a espessura da linha?'.

Você pode atualizar os dados diretamente nessa tabela, mas o recomendado é manter a mesma em uma planilha do Excel, fazer as alterações – inclusive com o auxílio visual das cores – e depois colar tudo de volta nessa tabela.

DICA: os dois primeiros caracteres da cor 'ff0000ff' representam a transparência. Assim, a cor '000000ff' é totalmente transparente (00), a cor 'ff0000ff' é totalmente vermelho, e a cor – por exemplo – intermediária '4c0000ff' corresponde a uma trasnparência de 30%

 

Nota: No diretório Help desse módulo, você encontra uma ferramenta que ajuda você a criar as suas próprias cores e códigos, inclusive 'capturando' qualquer cor que você desejar.

E a outra tabela relacionada a estilos é a ''. Essa tabela definimos o campo 'Area_Group_Thematic' com o estilo que desejamos para cada Tecnologia e Agrupamento/Area.

 

Agora, uma pequena pausa, para explicar esse conceito. Os agrupamentos são feitos para que cada BSC/RCN possa ter um estilo diferente, facilitando por exemplo identificar as bordas de nossa rede. Poderíamos simplesmente agrupar por BSC/RNC, porém incluímos a área, que pode conter várias BSC/RNC's. Isso porque algumas redes se espalham por diversos estados, e podemos dessa forma ter um agrupamento adequado.

Embora a princípio isso possa parecer um pouco complicado, não é. Como mencionamos antes, quando você praticar vai ver como é simples e funcional.

Falando agora de consultas, a 'qry_ThematicGroup' serve para juntarmos numa consulta os dados de configuração da nossa rede para serem plotados (tbl_Aux_ ThematicGroup) com os dados de distância (tbl_Aux_Technology_Band_Distance).

 

A consulta 'qry_Aux_Area' serve para duas coisas: limitar os dados processados aos que estão presentes no arquivo da nossa rede – já que podemos ter Temáticos definidos para várias Bandas e Tecnologias além do que temos numa rede em particular – e também serve para limitar os dados que deve ser plotados – campo 'Use'.

 

A consulta 'qry_Network_Cell_Lines' é acessada pelo código quando plotamos os dados de setores em formas de linhas, e utiliza as constantes para as fórmulas. (As fórmulas utilizadas já foram desmonstradas em outros tutoriais, por isso não há necessidade de repetirmos aqui).

 

As consultas 'qry_Network_Names' e 'qry_Network_Sites' são acessadas pelo código para plotar respectivamente os Sites, e os Nomes dos mesmos – quando selecionados na interface e/ou tabelas.

 

E por fim, a consulta acessa pelo código com os dados para gerar os polígonos é a 'qry_Network_Cell_Polygons'.

 

Segue o mesmo raciocínio da consulta que gera os pontos finais de cada setor, só que agora, não temos apenas um ponto final para o setor, como nas linhas. Agora temos vários pontos finais, que definem o semi-círculo do polígono do setor.

E para conseguir isso, utilizamos mais um truque, realizado pela consulta ''. Essa consulta utiliza a consulta com os nossos passos (), para definir azimutes 'temporários'. Esses azimutes temporários, são utilizados na consulta final anterior que gera os dados de polígonos.

 

O resultado: para cada novo azimute temporário, temos o ponto de latitude e longitude do setor. Esses dados então, são tratados pelo código VBA, que coloca os mesmos em uma única linha para cada setor – criando o nosso polígono.

 

Para concluir, vamos falar agora da tabela 'tbl_Network'. A consulta 'qry_Network', que efetivamente tem os dados que utilizamos em todas as demais tabelas, tem dois passos (consultas) antes.

Primeiro, a consulta 'qry_Network_LINK' traz os dados de nossa tabela 'tbl_Network', mas faz um pequeno ajuste. (Não confundir o nome LINK com as tabelas linkadas/vinculadas, tudo bem?). Esse link que essa consulta faz é ajustar os nomes para os nomes padrão.

Essa é a solução por exemplo que você pode utilizar para linkar os dados no seu formato/nomenclatura para os dados de aplicação. Veja que aqui utilizamos a nomenclatura 'site' para cada equipamento. Só que na nossa tabela, esse campo tem o nome BTS. Nesse caso, a consulta link tem o campo 'site:BTS'. Ou seja, utilizando essa consulta como base – ao invés da tabela original – a nossa aplicação não se altera, e nem nossos dados originais.

A idéia é simples, mas os ganhos são grandes. Suponha que o nome da nossa tabela, por algum motivo, mude de BTS para BTS_NodeB. Basta voltarmos nessa consulta, e informar que agora 'site:BTS_NodeB'.

 

E a outra consulta, que fazemos agora dessa consulta '', pode fazer alguns outros tipos de ajustes, agora em relação a cálculos e campos calculados. Por exemplo, é aqui que agrupamos os campos 'Technology_Band' e 'Area_Group' – já que não temos esses campos que seriam redundantes em nossa tabela original.

 

Agora sim, criamos a nossa consulta principal 'qry_Network'. Essa é a consulta na qual todas as demais se baseiam, e já tem todos os dados no formato desejado/esperado pela ferramenta.

 

 

Imagens Auxiliares

Esse módulo não requer muitas imagens auxiliares, apenas ícones para a sua operadora (rede) e um arquivo de Legenda.

Para o arquivo (imagem) da Legenda, você pode criar usando até mesmo o PaintBrush do Windows. Após editar, simplesmente salve a mesma como: C:\Hunter\GE\icon\Legend_Network.PNG

Nota: você recebeu também um arquivo Legend.xlsx. Você pode criar a sua legenda no Excel, e depois dar um PrintScreen. Em seguida, abrir o PaintBrush e fazer as edições finais – cortando apenas a parte desejada e salvando.

 

Para os arquivos dos equipamentos (sites), você pode criar pequenos ícones de sua operadora. Se preferir, crie apenas um com o fundo transparente – mas renomeie para cada estilo que você tiver definido e usando.

 

Importante: Esse ícones devem ser pequenos, cerca de 20x20 pixels. De qualquer forma, você pode ajustar o tamanho de acordo com o que desejar.

Nota: o tamanho do ícone pode ser também definido na tabela dos estilos – campos strNIconScale e strHIconScale, respectivamente os tamanhos dos ícones sem e com o mouse sobre ele no momento.

Esse artifício também é utilizado para darmos um destaque ao setor cujo mouse está sobre ele no momento. strNLineWidth e strHLineWidth, que da mesma forma a espessura da linha – com e sem mouse sobre.

 

Código VBA

Como você já está acostumado, todo o nosso código fornecido é sempre comentado. Isso torna a explicação novamente aqui redundante, extensa e desnecessária.

Se você encontrar algum problema, ou tiver alguma dúvida em algum procedimento, entre em contato.

 

Resultado

Novamente, um módulo com o resultado esperado: informação da rede (sites, azimutes, etc.) plotados de maneira geo-referenciada no Google Earth.

 

As combinações de resultados são várias, dependendo das suas configurações, seus estilos (tamanhos, cores, etc.), sua rede!

Seguem alguns exemplos para os dados fictícios.

 

Exemplo de plot apenas Rede UMTS 2100, com transparência. Uma facilidade comum a todos – ao passar o mouse por um setor, o nome do mesmo aparece (1).

 

Agora um exemplo plotando apenas a Rede GSM 900, também com transparência. Outra facilidade comum a todos: clicando no setor, temos as informações do mesmo (no caso, vemos CellID, Altura, Azimute, Tilt Elétrico e Mecânico e o Modelo da Antena do Setor).

 

Outro exemplo da Rede GSM 900, só que agora com a cor sem transparência. Perceba também que a abertura horizontal da antena é obedecida.

 

Um exemplo com todas as redes (GSM 900 e UMTS 2100), só que escolhendo Linhas ao invés de Polígonos para representar os setores. Veja que todas as funcionalidades continuam, como o clique no setor para obter as informações do mesmo.

 

Bom, poderíamos continuar plotando diversas combinações, mas já conseguimos demonstrar o que pode ser feito, esperamos que você aproveite.

 

Download

Para baixar os arquivos* deste tutorial, clique aqui.

* Observação: O Hunter SDK é o conjunto de ferramentas criadas e demonstradas no telecomHall – inlcuindo as Macros e Códigos. O Hunter SDK somente é enviado para Colaboradores Doadores, como forma de agradecimento pela contribuição única feita, que reconhece o esforço realizado. Clique aqui se desejar saber mais. Os arquivos disponíveis servem apenas como exemplo para você que não é colaborador ter suas próprias idéias.

 

Conclusão

Vimos hoje como criar mais uma aplicação customizada utilizando o Microsoft Access para plotar Informações da Rede no formato KML/KMZ do Google Earth.

A aplicação completa e funcional, permite que o profissional utilize em sua rede imediatamente, e também que faça suas próprias melhorias/extensões.

 

Agradecemos a sua visita, e esperamos que as informações apresentadas possam servir de ponto de partida para suas soluções e macros.

Em especial, agradecemos aos colaboradores do telecomHall. Os arquivos desse tutorial já foram enviados, por favor verifiquem. Caso tenham tido algum problema no recebimento, por favor informem.

Obrigado.