Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Próxima revisão | Revisão anterior | ||
software:art:scripts:scriptgm-pj [2007/11/16 19:26] paulojus criada |
software:art:scripts:scriptgm-pj [2007/11/18 23:11] (atual) paulojus |
||
---|---|---|---|
Linha 1: | Linha 1: | ||
- | Script by PJ on 16/11/2007 | + | Script by PJ on 18/11/2007 (23:00 BRT) |
<code R> | <code R> | ||
Linha 8: | Linha 8: | ||
## - poligonos com municípios do Paraná | ## - poligonos com municípios do Paraná | ||
## | ## | ||
- | |||
## carregando os pacotes que serão usados (aRT) | ## carregando os pacotes que serão usados (aRT) | ||
require(aRT) | require(aRT) | ||
Linha 18: | Linha 17: | ||
##Apagar banco já existente | ##Apagar banco já existente | ||
if(any(showDbs(con)=="geomedicina")) deleteDb(con, "geomedicina", force=T) | if(any(showDbs(con)=="geomedicina")) deleteDb(con, "geomedicina", force=T) | ||
- | |||
##Criando um novo banco | ##Criando um novo banco | ||
db=createDb(con, "geomedicina") | db=createDb(con, "geomedicina") | ||
db | db | ||
- | |||
## string definindo a projeção | ## string definindo a projeção | ||
proj="+proj=latlong +ellps=GRS67 +towgs84=-66.8700,-4.3700,-38.5200" | proj="+proj=latlong +ellps=GRS67 +towgs84=-66.8700,-4.3700,-38.5200" | ||
- | |||
## | ## | ||
## Layer 1: municípios | ## Layer 1: municípios | ||
Linha 35: | Linha 31: | ||
##Adicionar ao BD o contorno do Paraná disponível em shapefile (fonte: IBGE) | ##Adicionar ao BD o contorno do Paraná disponível em shapefile (fonte: IBGE) | ||
addShape(l.pr, tab="Parana", file="parana_pol.shp", id="CODIGO", length=10) | addShape(l.pr, tab="Parana", file="parana_pol.shp", id="CODIGO", length=10) | ||
- | |||
## verificando status do banco e layer | ## verificando status do banco e layer | ||
db | db | ||
Linha 72: | Linha 67: | ||
## Lendo atributos dos poligonos (munícipios) de outra fonte (DATASUS) | ## Lendo atributos dos poligonos (munícipios) de outra fonte (DATASUS) | ||
## (serão necessárias operações para compatibilizar com dados do IBGE) | ## (serão necessárias operações para compatibilizar com dados do IBGE) | ||
- | |||
figado <- read.csv("cancerfigadopop2005.csv") | figado <- read.csv("cancerfigadopop2005.csv") | ||
head(figado) | head(figado) | ||
Linha 82: | Linha 76: | ||
## um município trocou o nome..... | ## um município trocou o nome..... | ||
- | ## fix (temporário até obter mapa atualizado do IBGE) | + | ## fix (temporário até obter mapa atualizado do IBGE.... se tiver... |
+ | ## no site do IBGE consta Alto Paraíso -- o nome atual--, mas no arquivo apra download ainda está | ||
+ | ## Alta Vista, mesmo para 2005) | ||
## para arquivo do IBGE (Vila Alta == Alto Paraíso) | ## para arquivo do IBGE (Vila Alta == Alto Paraíso) | ||
Linha 88: | Linha 84: | ||
figado[figado$municipio == "Alto Paraíso", "municipio"] <- "Vila Alta" | figado[figado$municipio == "Alto Paraíso", "municipio"] <- "Vila Alta" | ||
+ | ## verificando igualdade entre nomes de Municípios | ||
all.equal(municDt$NOME,figado$municipio) | all.equal(municDt$NOME,figado$municipio) | ||
##estão em ordem diferente... | ##estão em ordem diferente... | ||
Linha 105: | Linha 102: | ||
## checando e corrigindo **CODIGOS** dos municípios: | ## checando e corrigindo **CODIGOS** dos municípios: | ||
- | ## código do IBGE tem 1 campo a mais que o do DATASUS | + | ## código do IBGE tem 1 dígito a mais que o do DATASUS ... |
+ | ## vamos extrair do IBGE e anexar ao do DATASUS | ||
figado$id <- as.character(figado$id) | figado$id <- as.character(figado$id) | ||
- | cbind(figado$id, municDt$CODIGO) | + | head(cbind(figado$id, municDt$CODIGO)) |
figado$id <- paste(figado$id,substr(municDt$CODIGO, 7, 7),sep="") | figado$id <- paste(figado$id,substr(municDt$CODIGO, 7, 7),sep="") | ||
all.equal(municDt$CODIGO,figado$id) | all.equal(municDt$CODIGO,figado$id) | ||
- | + | ## | |
- | ## Q: suponha agora que eu tenha varios atributos no R, provenientes de outra | + | ## Adicionando atributos de outra fonte de dados aos polígonos |
- | ## fonte e associados aos polígonos como acima. | + | ## |
- | ## Qual a melhor maneira de adicionar à tabela já existente (Paraná)? | + | |
- | ## (tem que ser coluna a coluna com updatecolumns ou melhor abrir outra tabela ? | + | |
## No exemplo abaixo quero adicionar o data frame "figado" ao banco | ## No exemplo abaixo quero adicionar o data frame "figado" ao banco | ||
Linha 124: | Linha 120: | ||
#> getID(municTab) | #> getID(municTab) | ||
#Erro em getID(municTab) : Not implemented yet | #Erro em getID(municTab) : Not implemented yet | ||
- | |||
## 1. adicionando à tabela já existente: | ## 1. adicionando à tabela já existente: | ||
- | ## (o que tentei a seguir nao funcionou, tem que ser coluna a coluna...???) | + | ## 1.1 Adicionar/atualizar todas as colunas de uma só vez: updateColumns() |
- | + | ## Erros aconteciam abaixo qdo usava-se o nome errado da variável id: | |
- | ## 1.1 tentando adcionar todas as colunas de uma só vez: | + | ## a msg poderia ser informativa? |
+ | ## msg de erro era: | ||
+ | ## Erro em if (poskey != 1) { : argumento tem comprimento zero | ||
- | ## CODIGO foi usado como ID para munic no addShape() portanto uando aqui tb para figado | ||
all.equal(municDt$CODIGO,figado$id) | all.equal(municDt$CODIGO,figado$id) | ||
municTab | municTab | ||
- | updateColumns(municTab, figado) ## nao funcionou mas pelo vignette aRTtable deveria... | ||
- | ## Erro em if (poskey != 1) { : argumento tem comprimento zero | ||
- | |||
- | |||
- | ## 1.2 adicionando as colunas uma a uma... (arrrgh) | ||
names(figado) | names(figado) | ||
- | for(cc in names(figado)[3:4]){ | ||
- | tmp <- data.frame(id=figado$id, data = figado[,cc]) | ||
- | names(tmp)[2] <- cc | ||
- | print(head(tmp)) | ||
- | createColumn(municTab, cc, type="int") | ||
- | updateColumns(municTab, tmp) | ||
- | } | ||
- | ## mesmo erro que acima: | ||
- | ##Erro em if (poskey != 1) { : argumento tem comprimento zero | ||
+ | ## note que para updateColumns() a doc diz que o id deve estar na primeira coluna do data-frame! | ||
+ | ## o ID deve ter o mesmo nome da tabela original (CODIGO neste exemplo) | ||
+ | ## CODIGO foi usado como ID para munic no addShape() portanto usando aqui tb para figado | ||
+ | names(figado)[1] <- "CODIGO" | ||
+ | updateColumns(municTab, figado) | ||
+ | |||
+ | ## 1.2 alternativa adicionando as colunas uma a uma... | ||
+ | ## note que o ID dev e ser chamado de CODIGO que foi definido anteriormente | ||
+ | #names(figado) | ||
+ | #for(cc in names(figado)[3:4]){ | ||
+ | # tmp <- data.frame(CODIGO=figado$id, data = figado[,cc]) | ||
+ | # names(tmp)[2] <- cc | ||
+ | # print(head(tmp)) | ||
+ | # createColumn(municTab, cc, type="int") | ||
+ | # updateColumns(municTab, tmp) | ||
+ | #} | ||
## 2. adicionando como uma nova tabela | ## 2. adicionando como uma nova tabela | ||
+ | ## 2.1 usando importTable() | ||
+ | figadoTab1 <- importTable(l.pr, "FigadoCancer", id="id", figado) | ||
+ | l.pr | ||
- | ## 2.1 usando creatTable() | + | ## 2.2 usando creatTable() |
figadoTab <- createTable(l.pr, "CancerFigado") | figadoTab <- createTable(l.pr, "CancerFigado") | ||
figadoTab | figadoTab | ||
Linha 159: | Linha 160: | ||
updateColumns(figadoTab, figado) | updateColumns(figadoTab, figado) | ||
figadoTab | figadoTab | ||
- | |||
- | ## usando importTable() | ||
- | figadoTab1 <- importTable(l.pr, "FigadoCancer", id="id", figado) | ||
- | |||
l.pr | l.pr | ||
Linha 168: | Linha 165: | ||
## A segunda simplesmente encapsula os comandos da primeira em uma unica chamada? | ## A segunda simplesmente encapsula os comandos da primeira em uma unica chamada? | ||
+ | ## removendo tabela(s): | ||
+ | ## o seguinte não funcionou: | ||
+ | deleteTable(l.pr, "FigadoCancer") | ||
+ | #Erro em function (classes, fdef, mtable) : | ||
+ | # unable to find an inherited method for function "deleteTable", for signature "aRTlayer" | ||
+ | |||
+ | ## e o seguinte deu um crash! | ||
+ | #deleteTable(db, "FigadoCancer") | ||
## | ## | ||
## Layer 2: dados geoquímicos | ## Layer 2: dados geoquímicos | ||
## | ## | ||
- | |||
## Q: | ## Q: | ||
## Pedro, aqui estou tentando usar 3 formas diferentes de colocar | ## Pedro, aqui estou tentando usar 3 formas diferentes de colocar | ||
## o dado de pontos no banco, mas as baseadas im importSpData() | ## o dado de pontos no banco, mas as baseadas im importSpData() | ||
## estao dando problemas | ## estao dando problemas | ||
- | |||
## | ## | ||
Linha 190: | Linha 193: | ||
## convertendo teores para SpatialPointsDataFrame | ## convertendo teores para SpatialPointsDataFrame | ||
names(teores) | names(teores) | ||
+ | teores$ID <- as.character(1:nrow(teores)) | ||
coordinates(teores) <- c("LONGITUDE","LATITUDE") | coordinates(teores) <- c("LONGITUDE","LATITUDE") | ||
- | teores$ID <- as.character(1:nrow(teores)) | ||
## Q: como atribuir projeção ao Layer criado com importSpData()? O seguinte é válido? | ## Q: como atribuir projeção ao Layer criado com importSpData()? O seguinte é válido? | ||
attr(teores, "proj4string") <- CRS(proj) | attr(teores, "proj4string") <- CRS(proj) | ||
- | l1.geoq <- importSpData(db, teores, "GQ1") | + | l1.geoq <- importSpData(db, teores, "GQ1", "geoq1") |
## MSG DE ERRO: | ## MSG DE ERRO: | ||
#Erro em .aRTcall(object, "cppUpdateColumns", colnames = colnames(data), : | #Erro em .aRTcall(object, "cppUpdateColumns", colnames = colnames(data), : | ||
Linha 204: | Linha 207: | ||
## | ## | ||
teores <- read.table("aguafix.csv", head=T, sep=";") | teores <- read.table("aguafix.csv", head=T, sep=";") | ||
- | teores$ID <- as.character(1:nrow(teores)) | + | names(teores)[1] <- "ID" |
- | #ll <- SpatialPoints(teores[,c("LONGITUDE", "LATITUDE")], proj=CRS(proj)) | + | teores$ID <- as.character(teores$ID) |
+ | ##ll <- SpatialPoints(teores[,c("LONGITUDE", "LATITUDE")], proj=CRS(proj)) | ||
lldf <- SpatialPointsDataFrame(coords=teores[,c("LONGITUDE", "LATITUDE")], | lldf <- SpatialPointsDataFrame(coords=teores[,c("LONGITUDE", "LATITUDE")], | ||
data=teores[,-(4:5)], | data=teores[,-(4:5)], | ||
proj = CRS(proj)) | proj = CRS(proj)) | ||
- | l12.geoq <- importSpData(db, lldf, "GQ2") | + | l12.geoq <- importSpData(db, lldf, "GQ2", "geoq2") |
#Erro em .aRTcall(object, "cppUpdateColumns", colnames = colnames(data), : | #Erro em .aRTcall(object, "cppUpdateColumns", colnames = colnames(data), : | ||
# Could not update the table | # Could not update the table | ||
Linha 219: | Linha 223: | ||
teores <- read.table("aguafix.csv", head=T, sep=";") | teores <- read.table("aguafix.csv", head=T, sep=";") | ||
coordinates(teores) <- c("LONGITUDE","LATITUDE") | coordinates(teores) <- c("LONGITUDE","LATITUDE") | ||
- | teores$ID <- as.character(1:nrow(teores)) | + | names(teores)[1] <- "ID" |
+ | teores$ID <- as.character(teores$ID) | ||
attr(teores, "proj4string") <- CRS(proj) | attr(teores, "proj4string") <- CRS(proj) | ||
Linha 233: | Linha 238: | ||
## Forma 4: (Funcionou, mas...) | ## Forma 4: (Funcionou, mas...) | ||
## | ## | ||
- | ## alternativa a importSpData() seria fazer passo a passo | ||
teores <- read.table("aguafix.csv", head=T, sep=";") | teores <- read.table("aguafix.csv", head=T, sep=";") | ||
- | teores$ID <- as.character(1:nrow(teores)) | + | names(teores)[1] <- "ID" |
+ | teores$ID <- as.character(teores$ID) | ||
lldf <- SpatialPointsDataFrame(coords=teores[,c("LONGITUDE", "LATITUDE")], | lldf <- SpatialPointsDataFrame(coords=teores[,c("LONGITUDE", "LATITUDE")], | ||
data=teores[,-(4:5)], | data=teores[,-(4:5)], | ||
Linha 245: | Linha 250: | ||
l4.geoq | l4.geoq | ||
## ele nao aceitou usar o nome da tabela "Elementos" já usado acima | ## ele nao aceitou usar o nome da tabela "Elementos" já usado acima | ||
- | ## mesmo etando em outro layer !!!!!! | + | ## mesmo estando em outro layer !!!!!! |
tb4.geoq <- importTable(l4.geoq, "Elem", id="ID", lldf) | tb4.geoq <- importTable(l4.geoq, "Elem", id="ID", lldf) | ||
l4.geoq | l4.geoq | ||
tb4.geoq | tb4.geoq | ||
- | </code R> | + | </code> |