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