[R-br] Retirar coordenadas de cidade do google maps com R

Augusto Ribas ribas.aca em gmail.com
Quarta Maio 2 17:44:17 BRT 2012


Achei uma função no Stackoverflow que resolveu o serviço:
So que ele pede o pacote RCurl, que nao entendi direito mas não tem binario
para windows. E precisa de um esquema que não faço a vaga ideia do que faz
para instalar o pacote RCurl.
Mas segue ai caso seja util pra alguem, funcionou blz aqui.

install.packages("RJSONIO")
library(RJSONIO)

source("http://bioconductor.org/biocLite.R")
biocLite("RCurl")
library(RCurl)

construct.geocode.url <- function(address, return.call = "json", sensor =
"false") {
  root <- "http://maps.google.com/maps/api/geocode/"
  u <- paste(root, return.call, "?address=", address, "&sensor=", sensor,
sep = "")
  return(URLencode(u))
}

gGeoCode <- function(address) {
  u <- construct.geocode.url(address)
  doc <- getURL(u)
  x <- fromJSON(doc,simplify = FALSE)
  lat <- x$results[[1]]$geometry$location$lat
  lng <- x$results[[1]]$geometry$location$lng
  return(c(lat, lng))
}

gGeoCode("Campo Grande MS")

Em 2 de maio de 2012 09:31, Augusto Ribas <ribas.aca em gmail.com> escreveu:

> Opa a algum tempo postaram uma função aqui pra calcula a distancia entre
> cidades pelo googe maps.
> Eu gostaria de pegar a coordenada da cidade. Mas eu não acho onde esta
> essa informação na pagina do google depois que abro ela no R
> E também nao sei procurar pra falar a verdade, pq fica gigante depois que
> le a pagina.
> Alguém pode me dar uma luz?
>
> #Função anteriormente postada
> distancia <- function(cidade1, uf1, cidade2, uf2){
>     link <- paste( "http://maps.google.com/maps?saddr=",  cidade1,
> "+-+",  uf1,  ",+Brasil&daddr=",  cidade2,  "+-+",  uf2,
> ",+Brasil&hl=pt-BR&ie=UTF8",  sep="")
>     link <- iconv(link, 'latin1', 'UTF-8')
>     Encoding(link) <- 'bytes'
>
>     pagina <- readLines(url(link))
>
>     linha <- grep('<div class="altroute-rcol altroute-info"> <span>',
> pagina)
>     distancia <- pagina[linha]
>     distancia <- strsplit(distancia, '<div class="altroute-rcol
> altroute-info"> <span>')[[1]][2]
>     distancia <- strsplit(distancia, '</span>')[[1]][1]
>     return(list(distancia = distancia, link=link))
> }
>
> distancia("Dourados", "MS", "Campo.Grande", "MS")
> distancia("Brasília", "DF", "Goiânia", "GO")
> distancia("Brasília", "DF", "Natal", "RN")
> distancia("Brasília", "DF", "Florianópolis", "SC")
> distancia("Brasília", "DF", "Porto.Alegre", "RS")
>
>
> #O que eu gostaria por exemplo para a cidade de Dourados MS
> uf1<-c("MS")
> cidade1<-c("Dourados")
> link<-paste( "http://maps.google.com/maps?saddr=%20
> ",cidade1,"+-+",uf1,",+Brasil&hl=pt-BR&ie=UTF8",sep="")
> Encoding(link) <- 'bytes'
> pagina <- readLines(url(link))
>
> #é saber onde em pagina esta as coordenadas da cidade.
> #que linha olhar, se é que ela esta nessa pagina, e colocar como o
> resultado acima algo tipo
> #coordenadas são tal
>
> --
> Grato
> Augusto C. A. Ribas
>
> Site Pessoal: http://augustoribas.heliohost.org
> Lattes: http://lattes.cnpq.br/7355685961127056
>
>


-- 
Grato
Augusto C. A. Ribas

Site Pessoal: http://augustoribas.heliohost.org
Lattes: http://lattes.cnpq.br/7355685961127056
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120502/d22fac8c/attachment.html>


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