Exemplo do Banco do Saudavel
require(aRT)
1. conectando ao banco de origem dos dados e importando dados desejados para o R
Abrindo a conexão
cnn <- openConn(user="curso", pass="fiocruz", host="guaja.est.ufpr.br", port=3306) showDbs(cnn)
Abrindo e inspecionando o conteúdo o Banco
db <- openDb(cnn, "saudavel", up=T ) db
Abrindo o Layer das armadilhas
la <- openLayer(db, "LAYER_ARMADILHAS") la
Abrindo a tabela Coletas
coleta <- openTable(la, "COLETAS") coleta
Puxando os dados da tabela coleta - "COD_ARMADILHA", "DATA_COLETA", "NRO_OVOS"
aed <- getData(coleta)[c("COD_ARMADILHA", "DATA_COLETA", "NRO_OVOS")] dim(aed) names(aed)
Formatando como Data
aed$DATA_COLETA <- as.Date(aed$DATA_COLETA) vendo o período de dados disponíveis) range(aed$DATA_COLETA)
Definindo os 4 Grupos das armadilhas
aed$GRUPO <- substr(aed$COD_ARM, start=ifelse(nchar(aed$COD_ARM) == 5,3,4), stop=ifelse(nchar(aed$COD_ARM) == 5,3,4)) ## Definindo códigos para os bairros aed$BAIRRO <- substr(aed$COD_ARM, 1, ifelse(nchar(aed$COD_ARM)==5, 2, 3)) head(aed)
Pegando os pontos (coordenadas das armadilhas)
pts <- getPoints(la) pts[1:10,] # em formato sp: SpatialPointsDataFrame head(coordinates(pts)) # em formato de matriz
Pegando os polígonos
Abrindo o Layer de Poligonos dos bairros
lb <- openLayer(db, "IBGE_Bairros") aed.poly <- getPolygons(lb) ## formato sp (SpatialPolygons)
Se quiser convertar para uma lista de polygonos para facilitar a manipulação do objeto…
poly_bai <- sapply(1:94, function(x)poly_bai@polygons[[x]]@Polygons[[1]]@coords)
Criando um objeto separando por bairro e por data:
aed.armas <- split(aed, aed$COD_ARMADILHA) names(aed.armas)
2. algumas análises descritivas no R
Plotando dados da evolução de ovos de uma armadilha:
plot(aed.armas[[5]]$NRO_OVOS, type="l", xaxt="n", xlab="", ylab="Total de Ovos") labels <- aed.armas[[1]]$DATA_COLETA text(1:length(labels), par("usr")[3] - 0.25, srt = 90, adj = 1,labels = labels, xpd = TRUE, cex = 0.6) mtext(side=1, line=3, "Data") ## veja o gráfico!
Criando uma função para plotar graficos da evolução do número de ovos nas armadilhas…
plot.arma <- function(arma, log = F, ...) { plot(if(!log)aed.armas[[arma]]$NRO_OVOS else log(aed.armas[[arma]]$NRO_OVOS+1), type="l", xaxt="n", xlab="", ylab="Total de Ovos", ...) labels <- aed.armas[[arma]]$DATA_COLETA text(1:length(labels), par("usr")[3] - 0.25, srt = 90, adj = 1,labels = labels, xpd = TRUE, cex = 0.6) mtext(side=1, line=3, "Data") title(unique(aed.armas[[arma]]$COD_ARMADILHA)) invisible() }
… e gerando os gráficos para o Bairro BT (ver a tela grafica do R)
plot.arma("BT101") sapply(names(aed.armas)[1:80], plot.arma)
Gerando arquivos com estes resultados (para todas armadilhas de todos os bairros)
dir.create("armaPlots") getwd() basedir <- getwd() setwd("armaPlots") getwd() sapply(names(aed.armas), function(x){ jpeg(paste(x, ".jpg", sep="")) plot.arma(x) dev.off() }) ## veja que os arquivos são criados no diretório (demora um pouco...) ## digite na linah de comando do LINUX: $ ls armaPlots setwd(basedir) getwd()
3. criando um "novo" banco de dados (no caso em outro DBMS local, mas poderia ser no orginal tb)
conexão com o banco local
cloc <- openConn() cloc
Criando novo banco
BDuser <- "myDengue"
Apaga banco pré-existente (se houver) e cria novo banco ("light")
if(any(showDbs(cloc) == BDuser)) deleteDb(cloc, BDuser, force=T) dblight = createDb(cloc, BDuser) dblight
Pegando mais alguns dados que usaremos no novo banco
Pegando a projeção (poderia definir se desejado – formato proj4)
proj=getProj(la) proj
Trazendo tabelas para o R (Exportação das tabelas do banco para o R)
Note os tipos de tabelas existentes neste layer!
tab=openTable(la, "ARMADILHAS") tab tab2=getData(tab)
Criação do Layer ARMADILHAS no novo banco
l1=createLayer(dblight,"LAYER_ARMADILHAS", proj=proj) l1
Adicionando as coordenadas dos pontos (armadilhas) no banco
addPoints(l1, pts) l1
Adicionando a tabela estática (Importação pelo banco da tabela estática)
importTable(l1,"ARMADILHAS", id="COD_ARMADILHA", data=tab2) l1
Adicionando uma tabela de mídia com os graficos das evoluções de ovos nas armadilhas
Criar tabela de mídia
midia=createTable(l1, type="media")
Adicionar dados à tabela de mídia
url <- data.frame(object_id = sort(unique(aed$COD_ARMADILHA)), media_names = paste(system("echo $PWD", intern=T), "/armaPlots/", sort(unique(aed$COD_ARMADILHA)), ".jpg",sep="")) url[1:10,] addRows(midia, url)
Transferindo os polígonos dos bairros para o novo banco
l2=createLayer(dblight,"BAIRROS", proj=proj) l2 addPolygons(l2, aed.poly) createTable(l2, "tbairros") l2 tbbairro <- openTable(lb, "bairro2000_rec") tbbairro tbb2 <- getData(tbbairro) head(tbb2) importTable(l2, "tbairros", id="ID_BAIRROS", data=tbb2) l2
Associando uma tabela de mídia com filmes .avi
com a evolução dos ovos segundo um modelo GAM (generalised additive model). O código para os filmes não está mostrado aqui e está disponível na pagina do saudavel no wiki.
medbairro <- createTable(l2, type="media") url <- data.frame(object_id = c(94, 54, 55, 39, 40, 73, 51, 52), media_names=paste("http://www.leg.est.ufpr.br/~paulojus/aviDengue/gam", c("BT", "CFP", "CFP", "DI", "DI", "EM", "MCP", "MCP"), ".avi", sep=""), stringsAsFactors=F) url url1 <- data.frame(object_id=1:94, media_names=as.character("http://www.leg.est.ufpr.br/~paulojus/aviDengue/nulo.html"), stringsAsFactors=F) url1$media_names[url$object_id] <- url$media_names url1 dim(url1) addRows(medbairro, url1)
Criar tema/vista para visualizar os relatórios na TV e com acesso às mídias
th=createTheme(l1, "Coletas", table="ARMADILHAS", view="armas") th=createTheme(l2, "Bairros", table="tbairros", view="armas")
4. inspecionando no terraView e abrindo mídias
- abrir o TV
- abrir um navegador (mozilla ou outro)
- dar um zoom num bairro
- selecionar um ponto (armadilha) e exibir a "media default"
- selecionar um bairro com armadilha e exibir a "media default"