<div dir="ltr">Sérgio, boa noite!<div><br></div><div>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". </div>
<div><br></div><div>A parte da função read.map() rodou normalmente aqui, mas alguns comandos que seguem parecem estar obsoletos (plot.polylist(), p. ex.)</div><div><br></div><div>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...</div>
<div><br></div><div>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.</div><div><br>
</div><div><div><font face="courier new, monospace"># <code r></font></div><div><font face="courier new, monospace"># downURL <- '<a href="ftp://ftp.datasus.gov.br/municip/mapas/2005/mapbr.zip">ftp://ftp.datasus.gov.br/municip/mapas/2005/mapbr.zip</a>'</font></div>
<div><font face="courier new, monospace"># arquivo com vários arquivos MAP, inclusive </font><span style="font-family:'courier new',monospace">"BRREG.MAP" aqui utilizado</span></div><div><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">setwd("C:/LAB/DATASUS")</font></div><div><font face="courier new, monospace">source("readMap.R") ### carregar função</font></div><div><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">mapName <- "BRREG.MAP"</font></div><div><font face="courier new, monospace">mapa <- read.map(mapName)</font></div><div><font face="courier new, monospace">save(mapa, file=paste0(mapName,".R"))</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">### uma vez salvo, você poderá recarregar o objeto mapa, sem ter que usar read.map() novamente.</font></div><div><font face="courier new, monospace"># load(file=paste0(mapName,".R")) </font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">plot(attributes(mapa)$maplim, type='n', asp=1, xlab=NA, ylab=NA)</font></div><div><font face="courier new, monospace">title('Mapa')</font></div>
<div><font face="courier new, monospace">lapply(mapa, polygon, asp=T, col=3)</font></div><div><font face="courier new, monospace"># </code></font></div><div><font face="courier new, monospace"><br></font></div><div>
<font face="arial, helvetica, sans-serif">O código do arquivo readMap.R retirei do link passado:</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace"><div># <code r></div>
<div>read.map = function(filename){<br></div><div>  zz=file(filename,"rb")</div><div>  #</div><div>  # header do .map</div><div>  #</div><div>  versao = readBin(zz,"integer",1,size=2)  # 100 = versao 1.00</div>
<div>  #Bounding Box</div><div>  Leste = readBin(zz,"numeric",1,size=4)</div><div>  Norte = readBin(zz,"numeric",1,size=4)</div><div>  Oeste = readBin(zz,"numeric",1,size=4)</div><div>  Sul   = readBin(zz,"numeric",1,size=4)</div>
<div><br></div><div>  geocodigo = ""</div><div>  nome = ""</div><div>  xleg = 0</div><div>  yleg = 0</div><div>  sede = FALSE</div><div>  poli = list()</div><div>  i = 0</div><div>  </div><div>  #</div>
<div>  # repete para cada objeto no arquivo</div><div>  #</div><div>  repeat{  </div><div>    tipoobj = readBin(zz,"integer",1,size=1) # 0=Poligono, 1=PoligonoComSede, 2=Linha, 3=Ponto</div><div>    </div><div>    if (length(tipoobj) == 0) break</div>
<div>    i = i + 1</div><div>    </div><div>    Len = readBin(zz,"integer",1,size=1)  # length byte da string Pascal</div><div>    geocodigo[i] = readChar(zz,10)</div><div>    Len = readBin(zz,"integer",1,size=1)  # length byte da string Pascal</div>
<div>    nome[i] = substr(readChar(zz,25),1,Len)</div><div>    xleg[i] = readBin(zz,"numeric",1,size=4)</div><div>    yleg[i] = readBin(zz,"numeric",1,size=4)</div><div>    numpontos = readBin(zz,"integer",1,size=2)</div>
<div>    </div><div>    sede = sede || (tipoobj = 1)</div><div>    </div><div>    x=0</div><div>    y=0   </div><div>    for (j in 1:numpontos){</div><div>      x[j] = readBin(zz,"numeric",1,size=4)</div><div>      y[j] = readBin(zz,"numeric",1,size=4)</div>
<div>    }</div><div>    </div><div>    </div><div>    # NAs separam vários polígonos no mesmo objeto</div><div>    # BUG a corrigir: Assim como está o primeiro polígono não fecha e, em multiplos poligonos, há um NA a mais no final </div>
<div>    xInic = x[1]</div><div>    yInic = y[1]  </div><div>    for (j in 2:numpontos){</div><div>    if (x[j] == xInic & y[j] == yInic) {x[j]=NA; y[j] = NA}</div><div>    }</div><div>    </div><div>    poli[[i]] = c(x,y)</div>
<div>    dim(poli[[i]]) = c(numpontos,2)</div><div>  }</div><div><br></div><div>  class(poli) = "polylist"</div><div>  attr(poli,"<a href="http://region.id">region.id</a>") = geocodigo</div><div>  attr(poli,"<a href="http://region.name">region.name</a>") = nome</div>
<div>  attr(poli,"centroid") = list(x=xleg,y=yleg)</div><div>  attr(poli,"sede") = sede</div><div>  attr(poli,"maplim") = list(x=c(Oeste,Leste),y=c(Sul,Norte))</div><div>  </div><div>  close(zz)</div>
<div>  return(poli)</div><div>}</div><div># </code><br></div></font></div><div><font face="courier new, monospace"><br></font></div><div class="gmail_extra"><br clear="all"><div><div dir="ltr">Éder Comunello <<a href="mailto:comunello.eder@gmail.com" target="_blank">c</a><a href="mailto:omunello.eder@gmail.com" target="_blank">omunello.eder@gmail.com</a>> <br>
Dourados, MS - [22 16.5'S, 54 49'W]<br></div></div>
<br></div></div></div>