====== Exemplo: combinando dados de municípios e mesoregiões ======
Script para construir um banco com as cidades e as mesoregioes do parana a partir de um //shapefile// e um //csv// (arquivos já incluídos no pacote aRT). São criados vários temas com diferentes opções de visualização/fatiamento.
require(aRT)
con=openConn()
con
if(any(showDbs(con)=="meso"))
deleteDb(con, "meso", force=T)
criando o banco
db=createDb(con,db="meso")
importando o shapefile e informando sobre projecao
proj="+proj=poly" +lon_0=0.0 +lat_0=0.0 +x_0=0.0 +y_0=0.0 +a=6378160.0 +f=0.003353"
criando layer a partir do shapefile (diretamente s/ impotar p/ R)
l=createLayer(db, l="cidades", proj=proj)
getProj(l)
addShape(l, tab="tab", file=system.file("meso/parana_pol.shp",package="aRT"), id="CODIGO")
visualizando diretamente do banco
plot(l)
## trazendo os polygonos dos municípios para o R
lpol <- getPolygons(l)
aRTplot(lpol)
abre a tabela do shapefile e importa dados para o R
tab <- openTable(l,"tab")
tdata <- getData(tab)
head(tdata)
Criando os polígonos das meso-regioes pela união dos municípios
mesogeom <- list()
mesonomes <- unique(tdata$CODIREGIAO)
## visualize a janela gráfica enquanto roda o comando a seguir
for(i in 1:length(mesonomes))
{
#selecionando municipios dentro da regiao i
id=tdata$CODIGO[which(tdata$CODIREGIAO == mesonomes[i])]
cat(paste("Processando mesoregiao",mesonomes[i], "com",length(id), "cidades\n"))
#unindo os poligonos dos municipios para formar pol. da regiao
set=getSetOperation(l,"union",id=id)
set@polygons[[1]]@ID = paste(mesonomes[i])
#adicionando ao objeto (list) das regioes
mesogeom[i] = set@polygons
aRTplot(set, col=terrain.colors(length(mesonomes)+1)[i+1], add=T, lwd=2)
}
aRTplot(lpol, add=T) ## veja o gráfico
## colocando no formato do "sp"
res = SpatialPolygons(mesogeom, 1:length(mesogeom))
Insere os dados das meso-regioes no banco em um novo layer
l2=createLayer(db,l="mesoreg", proj=proj)
addPolygons(l2, res)
importa a tabela estatica de um csv
mr <- read.csv(system.file("meso/parana_regions.csv",package="aRT"), sep=";")
tabmeso <- importTable(l2, "tabmeso", id="CODIGO", data=mr)
Checando o status do Banco
bd
Criando uma nova coluna (variável) e colocando no banco:\\
Cria um dataframe com duas colunas: o CODIGO e a soma das producoes de QPM entre 2000 e 2003
somaQPM=data.frame(CODIGO=data$CODIGO,
somaQPM= with(data, QPM_2000 + QPM_2001 + QPM_2002 + QPM_2003))
Carrega os dados da tabela no R
data=getData(tabmeso)
cria um dataframe com duas colunas: o CODIGO e a soma das
producoes de QPM entre 2000 e 2003
somaQPM=data.frame(CODIGO=data$CODIGO,
somaQPM=as.integer(data$QPM_2000)+
as.integer(data$QPM_2001)+
as.integer(data$QPM_2002)+
as.integer(data$QPM_2003))
Para cada coluna que nao existe ele cria antes de atualizar, e o codigo é utilizado para manter as referencias corretas
as colunas do banco.
updateColumns(tabmeso, somaQPM)
Gerar temas coloridos para TV
v = visualPolygons(color="blue", transp=80, ccolor="black")
t = createTheme(l2, "mesoregioes",view="view")
setVisual(t, v)
**//abrir e ver no TV !!!! //**
modificando a visualizacao das cores (vai ser encapsulado em funcoes)
v@ccolor = col2rgb("#F0F0F0")
v@transp=as.integer(50)
t = createTheme(l, "cidades",view="view")
setVisual(t, v)
v1=visualRaster()
Outra visualização (outra view) cria os temas para os cinco atributos, quatro producoes e
a soma, coloridos. Estes temas sao criados a partir do layer de mesoregioes
for(i in c("QPM_2000", "QPM_2001","QPM_2002","QPM_2003","somaQPM"))
{
cat(paste("Creating theme meso", i, "\n", sep=""))
t=createTheme(l2, tname=paste("meso", i, sep=""), view = "vMeso")
setVisual(t, v1, att=i)
}
Diferentes fatiamentos
for(i in c("e","q","s"))
{
cat(paste("Creating theme ", "QPM_2003", i, "\n", sep=""))
t=createTheme(l, paste("cidQPM_2003", i, sep=""), view = "vFatia")
##mode abaixo define o criterio de criacao da legend (padrao TL)
setVisual(t, v1, att="QPM_2003", mode=i)
#setVisible(t, FALSE)
}
## recaregue e visualize no TV!!!!
## se quiser apagar uma vista....
showViews(db)
## deleteView(db, "vMeso")