
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@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
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']], "[[",
Em 3 de outubro de 2012 15:04, Mauricio Cardeal <mcardeal2010@gmail.com> escreveu: 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@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@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