ODK Coletor Digital de Dados
Coletar dados diretamente num aparelho digital, como um smartphone ou tablet, pode acelerar o processo de organização de dados no banco de dados e também garantir a coleta em campo da informação planejada. Isso será implementado futuramente na nova versão do DuckeWiki que está sendo construída pelo Rodrigo Dias. Enquanto isso, para usarmos essa ferramenta, precisamos de uns atalhos para poder usar isso e tornar rápida a transferência de dados do celular/tablet para o banco de dados. Utilizamos isso na Expedição da Serra da Mocidade e foi muito prático em campo.
Preparando para coletar dados - ODK Collect
PASSO 01
- Você deve ter um celular com Android, idealmente com conexão de GPS satelital e uma boa máquina fotográfica embutida. Aparentemente aparelhos motorola funcionam bem em locais remotos. Se estiver sempre com sinal do celular, um GPS assistido é suficiente para que o próprio aparelho armazene as coordenadas geográficas;
- Instalar o aplicativo ODK Collect via Google Play Store no seu celular;
PASSO 02 - CRIANDO FORMULÁRIO XML
OPÇÃO 1 - USANDO DUCKEWIKI
- Entre na base de dados que você está usando (botam, plantasPDBFF, nebediv, uatuma) - clique no botão "Exportar e Baixar Dados" e no botão "Formulário ODK Collect". Criei um novo formulário com suas opções e obtenha o arquivo XLM.
OPÇÃO 2 - Fazendo manualmente
- Preparar um formulário utilizando o OpenDataKit, site com instruções de como preparar esses formulários. A forma mais simples é usar a opção XLSForm, na qual você especifica o que quer no formulário através de uma planilha do Excel e depois gera com essa planilha um arquivo XML através de desta ferramenta online.
PASSO 03 - USANDO FORMULÁRIO ODK
- No passo anterior você terá gerado um arquivo como este utilizado na Serra da Mocidade. Idealmente você deveria ler este arquivo com um simples editor de texto para entender a lógica de seu funcionamento (ai poderia editá-lo manualmente, para adicionar e/ou alterar coletores e outros campos).
- Abra o aplicativo ODK Collect instalado no seu Android, que estará vazio, mas irá criar no seu celular a pasta odk com algumas subpastas;
- Copiar o seu arquivo XML gerado no passo anterior para a pasta odk/forms do seu aparelho android (conecte o aparelho ao seu computador, ache a pasta e coloque dentro este arquivo).
- Pronto, pode usar o aplicativo abrindo novamente o aplicativo ODK Collect. Preencha um novo formulário para experimentar. E pode editar ou apagar o formulário preenchido depois diretamente no Android.
- Você também pode instalar um Emulador de Android no seu computador, instalar o ODK Collect nele e usar a mesma ferramenta na sua máquina. Isso pode ser útil, por exemplo, para incluir imagens nos formulários tiradas com uma máquina externa e depois disso prosseguir com a importação de dados para o banco de dados.
Extraindo dados do celular
- você deveria checar toda informação nos formulários antes de proceder neste passo. Particularmente, é interessante ligar todas as fotos que você tirou usando uma máquina externa as amostras, adicionando elas ao formulário antes de importá-lo.
Usando Ferramenta de Importação do DuckeWiki
- será implementado um script para importação direta às bases duckewiki. Por enquanto, dá para fazer manualmente. Ver abaixo.
Fazendo manualmente
- Baixar o software ODK Briefcase no seu computador. É um arquivo *.jar que vai funcionar em qualquer máquina e sistema operacional com JAVA instalado. Esta é a forma mais simples de obter uma planilha dos dados entrados via ODK Collect (link com servidor pode ser feito com ODK aggregate, algo parecido com o que será implementado no wiki).
- Copiar o conteúdo da pasta odk do seu celular/tablet para uma pasta no seu computador. Em celulares com Android versão 4.x ou superior é necessário criar um arquivo comprimido da pasta /odk diretamente no aparelho, mover/copiar essa pasta para o computador e então descompactar. Todo o conteúdo, inclusive mídia, será transferido. O aplicativo OI File Manager pode ser usado para compactar a pasta odk completa. Obs.: Se estiver usando mais de um aparelho com o mesmo formulário xml, mantenha em pastas separadas.
- Executar o ODK Briefcase com o Java Runtime e seguir os passos:
- Indicar uma pasta como Brief Case Storage Location (Importante: se estiver o mesmo formulário em mais de 1 aparelho, e manter a mesma pasta como esta especificação, as importações e exportações serão cumulativas);
- PULL - Ler a(s) pastas que você copiou do celular os dados usando a opção Custom Path do ODK Directory, onde você indica a pasta que baixou do celular. Clicar em PULL para importar;
- Exportar os dados como csv e arquivos de mídia (imagens, audio que tiver incluído no formulário), indicando também uma nova pasta onde colocar os dados (o programa vai gerar dois arquivos csv, um para os dados, outro com lista de arquivos de mídia e vai colocar as imagens numa subpasta chamada media)
- Infelizmente essa solução não exporta os valores dos labels de variáveis do tipo seleção de valores. Na planilha exportada aparecem apenas os valores, que não podem ter símbolos ou espaços (veja o ODK). Você deve fazer então um último passo utilizando o R:
- Você precisa:
- arquivo XML da pasta odk/forms que usou para coletar os dados;
- arquivo *.csv exportado pelo ODK Briefcase;
- este script do R, que usa o pacote stringr;
- Coloque esses arquivos numa pasta e execute este código num novo script para obter a planilha corrigida:
#LIMPA AREA DE TRABALHO rm(list=ls()) #defina a pasta com os arquivos como diretorio padrao setwd("caminho/da/sua/pasta") #LE O SCRIPT PARA PREPARAR A EXPORTACAO DO ODK PARA O WIKI source("prepodktowiki.R") #OS ARQUIVOS DO FORMULÃRIO E DADOS odkform.file = "mocidade01.xml" #formulario odkexport.file = "Mocidade Form.csv" #arquivo de dados exportado pelo ODK briefcase #opcoes para reformatar a coluna de data (se houver, se nao houver ignore) colldata= "colldata" #nome da coluna no arquivo odkexport.file dataformat="%b %d, %Y" #formato que da data nesta coluna #CORRIGE A PLANILHA dad = prep.odk.towiki(odkform.file,odkexport.file, colldata= "colldata",dataformat="%b %d, %Y") #SALVA OS RESULTADOS write.table(dad,file="exportCorrigido_TabletMocidade.csv",sep=""),sep="\t",na="",quote=T,row.names = F)