
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.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]