====== 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"