Mapa das torres de celular no Rio Grande do Sul feito no Google Fusion Tables com técnicas de Data Journalism.
Acessei o site de mapas “Estação Radiobase”da Anatel, conforme dica da lista Transparência Hacker:
http://sistemas.anatel.gov.br/
Escolhi RS e cliquei em Exportar Excel. O sistema da Anatel está bugado (Que surpresa! A Anatel não funciona direito!). Retorna um arquivo chamado “tela.asp”. ASP é coisa da Microsoft! Só podia!
Baixei o arquivo estranho, abri com o Notepad++ (rodando em Wine no meu Ubuntu) e vi que era um HTML, mas sem o cabeçalho.
Consegui reformatar os dados assim:
- Editei e coloquei <html><head> no início. Mudei a extensão para .html e abri no navegador (Por isto jornalista deve saber HTML). Os dados das torres de telefonia celular estão em uma tabela HTML.
- Copiei a página HTML inteira e colei no Notepad++ (rodando em Wine). Dessa maneira, os dados são colados como texto separado por tabulações. Um bom formato, para começar.
- Copiei todo o texto do Notepad++ e colei no LibreOffice Calc. Este meio-campo pelo Notepad++ elimina células mescladas que surgem quando eu colo diretamente no LibreOffice.
- Inseri uma coluna “A” onde colei o nome das operadoras (em linguagem de banco de dados, criei um campo “Operadora”).
- Apaguei os dados das operadoras no início de cada bloco de estações.
- Para deixar as coordenadas de latitude e longitude no formato aceito pelo Google Fusion Tables, criei colunas auxiliares ao lado das colunas de latitude e longitude, formatei-as com língua “ingês (EUA)”, formato numérico “0.000000” e com a fórmula para converter as medidas de graus-minutos-segundos-décimos para graus-décimos:
Para latitude: =VALOR(CONCATENAR(SE(EXT.TEXTO(H2;3;1)=”S“;”-“;””);EXT.TEXTO(H2;1;2)+(EXT.TEXTO(H2;4;2)+CONCATENAR(EXT.TEXTO(H2;6;2);”.”;EXT.TEXTO(H2;8;2))/60)/60))
Para longitude: =VALOR(CONCATENAR(SE(EXT.TEXTO(J2;3;1)=”W“;”-“;””);EXT.TEXTO(J2;1;2)+(EXT.TEXTO(J2;4;2)+CONCATENAR(EXT.TEXTO(J2;6;2);”.”;EXT.TEXTO(J2;8;2))/60)/60))
Substitua H2 e J2 pela coluna onde estiverem, respectivamente, a latitude e longitude no formato “Anatel”.
(Por isto jornalista deve saber mexer com planilhas) — ATENÇÃO: se você copiar com CTRL+C a fórmula acima, substitua as aspas tipográficas que o WordPress insere pelas aspas de computador. - Gravei a planilha como ODS, para guardar a original.
- Gravei em formato de Valores Separados por Vírgula — CSV, campos separados por tabulação, código de carácteres UTF-8 (Por isto jornalista deve conhecer formatos de arquivo) e mandei para o Google Fusion (“Criar > Fusion Table (experimental)” no Google Drive), indicando TAB como separador e eliminando as colunas de coordenadas inválidas fornecidas pela Anatel.
- Depois de subir para o Fusion, editei as colunas de latitude e longitude, definindo-as como tipo “Location”, e passei a visualização para Map.
- Criei outra tabela com os ícones de cores diferentes conforme a operadora.
- Fiz o merge das duas tabelas.
Agora, posso embutir o mapa em páginas jornalísticas.
ASP é o formato de script da Microsoft que gera HTML dinamicamente assim como ferramentas como PHP/Python, ele funciona muito bem, existem muitos sites rodando nessa plataforma, o script que permite o download com certeza está incorreto deveria gerar um arquivo com a extensão HTML, erro do programador da ANATEL, nada haver com a ferramenta ASP.NET. Poupe seu sarcasmo quando fala de um assunto que desconhece um pecado muito comum entre jornalistas que deveriam ser mais imparciais.
OK, mais um Microsoft guy, Cara de TI, Programador, ou seja lá como você se chame.
Mas se você tem tanta certeza assim de seus argumentos, não devia postá-los anonimamente. Isto não tem nada a ver.
BTW, trabalho com tecnologias digitais desde antes de você nascer e uso linguagens de programação das quais você nem ouviu falar. Conheço um bocado sobre o que eu falo.
Obrigado pelas dicas, depois de penar um pouco acabou dando certo.. Eis o resultado: http://datapress.tumblr.com/ https://www.google.com/fusiontables/DataSource?snapid=S49751846fg https://www.google.com/fusiontables/DataSource?snapid=S497516Lf2u
Muito legal, John!
Como você conseguiu diferenciar os marcadores?
Ao selecionar a visualização do mapa, cliquei em “Configure styles”. No menu “Points”, abri o submenu “Marker Icon” e cliqui na aba “Column”, onde selecionei a opção “Use icon specified in a column”.
Precisei criar uma coluna especifica na tabela para os códigos dos marcadores, que estão nessa lista https://www.google.com/fusiontables/DataSource?docid=1BDnT5U1Spyaes0Nj3DXciJKa_tuu7CzNRXWdVA
Para cada operadora, atribui um código de cor diferente e selecionei a coluna com os códigos para ele utilizar como referência para os marcadores.
O marcador não foi o mais adequado, ficou grande demais, mas ainda não tive tempo para trocar por outro menor.
Consegui! Criei uma tabelinha com as operadoras e nomes dos ícones e fiz um “merge” das duas tabelas.
Valeu!
Muito obrigado pelas dicas. Consegui progredir quanto a isso, mas na hora de colocar os dados no Fusion não deu certo. As coordenadas ficaram erradas, na Antártica e no Oceano. Algumas linhas ficam realçadas em amarelo.
Como você fez a substituição das Expressões Regulares “([0-9][0-9]),” e “(\t[0-9]),” para “\1.”?
É só ir em Localizar e Substituir no Notepad++ e colar os primeiros valores em localizar e os seguintes em substituir, selecionando a opção “Expressões regulares”?
Para gravar em CSV eu colo novamente no Excel ou faço isso no próprio Notepad?
Sim, as expressões regulares são estas (sem as aspas). Elas só trocam as vírgulas decimais por pontos decimais.
O que a expressões dizem é o seguinte:
“Troca dois dígitos e vírgula pelos dois dígitos que achou e ponto”.
“Troca tabulação, dígito e vírgula pela tabulação e dígito que achou e ponto”.
Pode gravar o CSV pelo próprio Notepad++.
Para verificar se as coordenadas estão certas, cria um placemark no Google Earth e troque entre as medidas grau-minutos-segundos por grau decimal.
Caro, tentei fazer um modelo similar mas não tive o problema no download e consegui baixar um arquivo xls. No entanto, no momento de aplicar a fórmula no Excel obtive erro, possivelmente devido as aspas na fórmula. Como poderia resolver? Obrigado.
Olá, John!
O WordPress troca as aspas. Use aspas de computador.