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 <[email protected]> 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 > <[email protected]> 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 > > [email protected] > > 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 > [email protected] > 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
_______________________________________________ R-br mailing list [email protected] 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.
