[R-br] obtenção de lat long para uma série de CEPs

Mauricio Cardeal mcardeal2010 em gmail.com
Quarta Outubro 3 18:59:56 BRT 2012


Valeu Augusto ! Gostei ! Principalmente porque fica bem clara a utilização
do loop for().
Muito interessante !
Ficou bastante didático.

Mauricio
UFBA

Em 3 de outubro de 2012 17:04, Augusto Ribas <ribas.aca em gmail.com> escreveu:

> Acho que a pior forma de fazer isso é com um loop de for()
>
> require(XML)
>
> coordenadas<- function(cep) {
>  url_lat_lon <-
> paste(sprintf("http://maps.google.com/maps/api/geocode/xml?address=%s,",
> cep),"%20Brasil&sensor=false", sep="")
>  lat_lon=xmlApply(xmlRoot(xmlTreeParse(
> readLines(url_lat_lon)))[['result']][['geometry']][['location']],
> "[[", 1)
>  return(lat_lon)
>  }
>
> cep=40110010
> coordenadas(cep)
>
>
> ceps<-c(40110010,01317000,17120000)
>
>
> resultado<-data.frame(cep=NA,lat=NA,long=NA)
>
> for(i in 1:length(ceps)) {
>   resposta<-coordenadas(ceps[i])
>   resultado[i,"cep"]<-as.numeric(ceps[i])
>   resultado[i,"lat"]<-as.character(resposta[[1]])[6]
>   resultado[i,"long"]<-as.character(resposta[[2]])[6]
>   }
>
> resultado
>
>        cep         lat        long
> 1 40110010 -12.9896162 -38.4922117
> 2  1317000 -25.2912987 -57.6265412
> 3 17120000 -22.5229044 -49.1344326
>
> Da pra fazer a mesma coisa com alguma função da familia apply
> Mas no final das contas vai ser um acesso por cep, o que vai deixar a
> obtenção de muitos ceps lento.
> Mas enquanto ninguem posta uma solução melhor, da pra quebrar o galho com
> essa
>
> Em 3 de outubro de 2012 15:04, Mauricio Cardeal
> <mcardeal2010 em gmail.com> escreveu:
> > Recentemente foi postado na lista uma solução para a obtenção de lat
> long a
> > partir de um cep:
> >
> > require(XML)
> >
> > coordenadas<- function(cep) {
> >  url_lat_lon <-
> > paste(sprintf("http://maps.google.com/maps/api/geocode/xml?address=%s,",
> > cep),"%20Brasil&sensor=false", sep="")
> >  lat_lon=xmlApply(xmlRoot(xmlTreeParse(
> > readLines(url_lat_lon)))[['result']][['geometry']][['location']], "[[",
> 1)
> >  return(lat_lon)
> >  }
> >
> > cep=40110010
> > coordenadas(cep)
> >
> >> coordenadas(cep)
> > $lat
> > -12.9896162
> >
> > $lng
> > -38.4922117
> >
> > Ficou excelente. Mas fiquei imaginando se ao invés de apenas 1 cep eu
> > tivesse uma série, por exemplo:
> >
> > ceps <- c(40110010,01317000,17120000)
> >
> > Como modificaria a função acima rotina para ter algo do tipo (em um data
> > frame), sem precisar rodar 1 a 1 cada cep:
> >
> > cep             lat        long
> > 40110010  -12.98    -38.49
> > 01317000  -25.29    -57.62
> > 17120000  -22.52    -49.13
> >
> > Valeu
> > --
> > Mauricio Cardeal
> > UFBA
> >
> >
> > _______________________________________________
> > R-br mailing list
> > R-br em 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.
>
>
>
> --
> Grato
> Augusto C. A. Ribas
>
> Site Pessoal: http://augustoribas.heliohost.org
> Lattes: http://lattes.cnpq.br/7355685961127056
> _______________________________________________
> R-br mailing list
> R-br em 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.
>



-- 
Mauricio Cardeal
UFBA
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20121003/8e847e9f/attachment.html>


Mais detalhes sobre a lista de discussão R-br