Valeu Augusto ! Gostei ! Principalmente porque fica bem clara a utilização do loop for().<br>Muito interessante !<br>Ficou bastante didático.<br><br>Mauricio<br>UFBA<br><br><div class="gmail_quote">Em 3 de outubro de 2012 17:04, Augusto Ribas <span dir="ltr"><<a href="mailto:ribas.aca@gmail.com" target="_blank">ribas.aca@gmail.com</a>></span> escreveu:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Acho que a pior forma de fazer isso é com um loop de for()<br>
<div class="im"><br>
require(XML)<br>
<br>
coordenadas<- function(cep) {<br>
 url_lat_lon <-<br>
paste(sprintf("<a href="http://maps.google.com/maps/api/geocode/xml?address=%s," target="_blank">http://maps.google.com/maps/api/geocode/xml?address=%s,</a>",<br>
cep),"%20Brasil&sensor=false", sep="")<br>
 lat_lon=xmlApply(xmlRoot(xmlTreeParse(<br>
readLines(url_lat_lon)))[['result']][['geometry']][['location']],<br>
"[[", 1)<br>
 return(lat_lon)<br>
 }<br>
<br>
cep=40110010<br>
coordenadas(cep)<br>
<br>
<br>
</div>ceps<-c(40110010,01317000,17120000)<br>
<br>
<br>
resultado<-data.frame(cep=NA,lat=NA,long=NA)<br>
<br>
for(i in 1:length(ceps)) {<br>
  resposta<-coordenadas(ceps[i])<br>
  resultado[i,"cep"]<-as.numeric(ceps[i])<br>
  resultado[i,"lat"]<-as.character(resposta[[1]])[6]<br>
  resultado[i,"long"]<-as.character(resposta[[2]])[6]<br>
  }<br>
<br>
resultado<br>
<br>
       cep         lat        long<br>
1 40110010 -12.9896162 -38.4922117<br>
2  1317000 -25.2912987 -57.6265412<br>
3 17120000 -22.5229044 -49.1344326<br>
<br>
Da pra fazer a mesma coisa com alguma função da familia apply<br>
Mas no final das contas vai ser um acesso por cep, o que vai deixar a<br>
obtenção de muitos ceps lento.<br>
Mas enquanto ninguem posta uma solução melhor, da pra quebrar o galho com essa<br>
<br>
Em 3 de outubro de 2012 15:04, Mauricio Cardeal<br>
<<a href="mailto:mcardeal2010@gmail.com">mcardeal2010@gmail.com</a>> escreveu:<br>
<div><div class="h5">> Recentemente foi postado na lista uma solução para a obtenção de lat long a<br>
> partir de um cep:<br>
><br>
> require(XML)<br>
><br>
> coordenadas<- function(cep) {<br>
>  url_lat_lon <-<br>
> paste(sprintf("<a href="http://maps.google.com/maps/api/geocode/xml?address=%s," target="_blank">http://maps.google.com/maps/api/geocode/xml?address=%s,</a>",<br>
> cep),"%20Brasil&sensor=false", sep="")<br>
>  lat_lon=xmlApply(xmlRoot(xmlTreeParse(<br>
> readLines(url_lat_lon)))[['result']][['geometry']][['location']], "[[", 1)<br>
>  return(lat_lon)<br>
>  }<br>
><br>
> cep=40110010<br>
> coordenadas(cep)<br>
><br>
>> coordenadas(cep)<br>
> $lat<br>
> -12.9896162<br>
><br>
> $lng<br>
> -38.4922117<br>
><br>
> Ficou excelente. Mas fiquei imaginando se ao invés de apenas 1 cep eu<br>
> tivesse uma série, por exemplo:<br>
><br>
> ceps <- c(40110010,01317000,17120000)<br>
><br>
> Como modificaria a função acima rotina para ter algo do tipo (em um data<br>
> frame), sem precisar rodar 1 a 1 cada cep:<br>
><br>
> cep             lat        long<br>
> 40110010  -12.98    -38.49<br>
> 01317000  -25.29    -57.62<br>
> 17120000  -22.52    -49.13<br>
><br>
> Valeu<br>
> --<br>
> Mauricio Cardeal<br>
> UFBA<br>
><br>
><br>
</div></div>> _______________________________________________<br>
> R-br mailing list<br>
> <a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código<br>
> mínimo reproduzível.<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
--<br>
Grato<br>
Augusto C. A. Ribas<br>
<br>
Site Pessoal: <a href="http://augustoribas.heliohost.org" target="_blank">http://augustoribas.heliohost.org</a><br>
Lattes: <a href="http://lattes.cnpq.br/7355685961127056" target="_blank">http://lattes.cnpq.br/7355685961127056</a><br>
_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br>
</font></span></blockquote></div><br><br clear="all"><br>-- <br>Mauricio Cardeal<br>UFBA<br><br>