Oi Eder Obrigado pela ajuda!
No windows eu consigo rodar direitinho, mas no linux não. Abraços Em 11 de abril de 2014 20:17, Éder Comunello <comunello.e...@gmail.com>escreveu: > Sérgio, boa noite! > > Dei uma rápida olhada no script que você mencionou. O problema pode ser > decorrente de tentar usar o texto original com encoding "ISO-8859-1" em um > sistema com encoding "UTF-8". > > A parte da função read.map() rodou normalmente aqui, mas alguns comandos > que seguem parecem estar obsoletos (plot.polylist(), p. ex.) > > A função read,map() gera um objeto de classe 'polylist' que preciso > estudar melhor, mas por ora dá pra visualizar o conteúdo com algumas > adaptações... > > Separei o trecho de código da função em um arquivo separado chamado > readMap.R e executei o trecho de código abaixo, usando o arquivo > "BRREG.MAP" (Regiões do Brasil) pra testar. > > # <code r> > # downURL <- 'ftp://ftp.datasus.gov.br/municip/mapas/2005/mapbr.zip' > # arquivo com vários arquivos MAP, inclusive "BRREG.MAP" aqui utilizado > > setwd("C:/LAB/DATASUS") > source("readMap.R") ### carregar função > > mapName <- "BRREG.MAP" > mapa <- read.map(mapName) > save(mapa, file=paste0(mapName,".R")) > > ### uma vez salvo, você poderá recarregar o objeto mapa, sem ter que usar > read.map() novamente. > # load(file=paste0(mapName,".R")) > > plot(attributes(mapa)$maplim, type='n', asp=1, xlab=NA, ylab=NA) > title('Mapa') > lapply(mapa, polygon, asp=T, col=3) > # </code> > > O código do arquivo readMap.R retirei do link passado: > > # <code r> > read.map = function(filename){ > zz=file(filename,"rb") > # > # header do .map > # > versao = readBin(zz,"integer",1,size=2) # 100 = versao 1.00 > #Bounding Box > Leste = readBin(zz,"numeric",1,size=4) > Norte = readBin(zz,"numeric",1,size=4) > Oeste = readBin(zz,"numeric",1,size=4) > Sul = readBin(zz,"numeric",1,size=4) > > geocodigo = "" > nome = "" > xleg = 0 > yleg = 0 > sede = FALSE > poli = list() > i = 0 > > # > # repete para cada objeto no arquivo > # > repeat{ > tipoobj = readBin(zz,"integer",1,size=1) # 0=Poligono, > 1=PoligonoComSede, 2=Linha, 3=Ponto > > if (length(tipoobj) == 0) break > i = i + 1 > > Len = readBin(zz,"integer",1,size=1) # length byte da string Pascal > geocodigo[i] = readChar(zz,10) > Len = readBin(zz,"integer",1,size=1) # length byte da string Pascal > nome[i] = substr(readChar(zz,25),1,Len) > xleg[i] = readBin(zz,"numeric",1,size=4) > yleg[i] = readBin(zz,"numeric",1,size=4) > numpontos = readBin(zz,"integer",1,size=2) > > sede = sede || (tipoobj = 1) > > x=0 > y=0 > for (j in 1:numpontos){ > x[j] = readBin(zz,"numeric",1,size=4) > y[j] = readBin(zz,"numeric",1,size=4) > } > > > # NAs separam vários polígonos no mesmo objeto > # BUG a corrigir: Assim como está o primeiro polígono não fecha e, em > multiplos poligonos, há um NA a mais no final > xInic = x[1] > yInic = y[1] > for (j in 2:numpontos){ > if (x[j] == xInic & y[j] == yInic) {x[j]=NA; y[j] = NA} > } > > poli[[i]] = c(x,y) > dim(poli[[i]]) = c(numpontos,2) > } > > class(poli) = "polylist" > attr(poli,"region.id") = geocodigo > attr(poli,"region.name") = nome > attr(poli,"centroid") = list(x=xleg,y=yleg) > attr(poli,"sede") = sede > attr(poli,"maplim") = list(x=c(Oeste,Leste),y=c(Sul,Norte)) > > close(zz) > return(poli) > } > # </code> > > > Éder Comunello <c <comunello.e...@gmail.com>omunello.e...@gmail.com> > Dourados, MS - [22 16.5'S, 54 49'W] > > > _______________________________________________ > R-br mailing list > R-br@listas.c3sl.ufpr.br > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça > código mínimo reproduzível. > -- Sérgio Henrique Almeida da Silva Junior Doutorando em Epidemiologia em Saúde Pública Escola Nacional de Saúde Pública Sérgio Arouca - ENSP/FIOCRUZ http://lattes.cnpq.br/1611345552843383 Tel: (21) 968463637 http://www.linkedin.com/profile/view?id=250437145&trk=tab_pro
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.