[R-br] Obter coordenadas a partir de endereço

Fabrício Tavares fabriciotavareso em gmail.com
Sábado Agosto 6 14:10:00 BRT 2011


Thiago,

Escrevi uma função, não muito elegante (não genérica), que faz isso que você
quer, mas sem precisar usar o CEP.

entre com um data frame e a indicação da coluna onde está o endereço
completo. e.g.:

> library(RCurl)
> library(RJSONIO)

> dataframeAddress

                                  address
1  Rua Fulano de tal, 123, Nome da Cidade
2        Rua Ciclano, 312, Nome da Cidade


> latlng(dataframeAddress, 1)  # Nome do data frame e a coluna onde está o endereço


                                  address       lat        lng
1  Rua Fulano de tal, 123, Nome da Cidade  10.00000 -100.00000
2        Rua Ciclano, 312, Nome da Cidade -10.00000   10.00000


#-

# Funcão

#------------------


latlng <- function(address, column) {
  readyAddress <- data.frame(formatted=c(gsub(' ', '+', address[, column])))

  prePart <- "http://maps.google.com/maps/api/geocode/json?address="
  posPart <- "&sensor=true"

  request <- paste(prePart, readyAddress$formatted, posPart, sep="")
  json <- character(length(request))
  store <- data.frame(lat=numeric(length(request)),
lng=numeric(length(request)))

  for (i in 1:length(request)) {
    json[i] <- getURL(url=request[i])
    temp <- fromJSON(json[i])
    latLng <- temp$results[[1]]$geometry$location
    store[i, ] <- latLng
  }

  result <- cbind(address[, column], store)
  colnames(result) <- c("address", "lat", "lng")
  result
}


---


Espero que seja útil.


Abs,


Fabrício.
http://vizzual.net



Em 6 de agosto de 2011 04:31, Mauro Sznelwar <sznelwar em uol.com.br> escreveu:

> **
> Tem razão em parte, em cetas ocasiões dá em Lima no Perú, e outras em
> Goiânia. Deve ter alguma limitação de uso esta rotina
>
> Coloquei o CEP de duas ruas conhecidas, ex: 83005150 e funcionou
> perfeitamente.
>
> Se colocar o CEP com o traço, 83005-150 vai parar em Lima no Perú,
> hehehehe.
>
> Daniel
>
>    Rodei este script, e deu em Juíz de Fora, MG. Rodei o meu cep 01423001,
> em São Paulo-SP deu em Lima no Perú. Quero saber se existe algum jeito de
> entrar ou está furado o programa..
>
>
> _______________________________________________
> 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110806/310180f1/attachment.html>


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