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