Oi Lucas,
estou utilizando o R 2.14 no Ubuntu 10.4.
Ainda não pude mexer na função, mas se eu conseguir fazer funcionar mando aqui para a lista quais foram as modificações.

Obrigado.
PNS

Em 23 de novembro de 2011 21:16, Lucas Barbosa <lucasbcr@gmail.com> escreveu:
Paulo,
Esse código é tipo um rascunho, acho que não cheguei a testar nem dez vezes. Eu só fiz com base num padrão que eu vi nos html's das poucas páginas que eu acessei. Como o gmaps é cheio de personalizações/frescuras, pode ser que esse código só funcione acessando da minha máquina, do meu IP ou do meu login no google, vai saber...
A parte do encoding foi a mais difícil de acertar aqui. Ficou essa gambiarra aí, mas assim foi o único jeito que rodou aqui.
Eu testei essa função só em R x64 2.13 (windows7). Você tá mexendo com a 2.13 também?

Em 22 de novembro de 2011 18:28, Paulo Nogueira <paulons@gmail.com> escreveu:

Lucas,
provavelmente está tudo funcionando bem aí no seu computador, mas fui rodar seu código e tive problemas.


> #código:
> 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("Brasília", "DF", "Pirenópolis", "GO")
Erro em strsplit(distancia, "<div class=\"altroute-rcol altroute-info\"> <span>")[[1]] :
índice fora de limites
Além disso: Mensagens de aviso perdidas:
1: In readLines(url(link)) :
linha final incompleta encontrada em 'http://maps.google.com/maps?saddr=Brasília+-+DF,+Brasil&daddr=Pirenópolis+-+GO,+Brasil&hl=pt-BR&ie=UTF8'
2: In grep("<div class=\"altroute-rcol altroute-info\"> <span>", pagina) :
string de entrada 1 é inválida nesse locale
3: In grep("<div class=\"altroute-rcol altroute-info\"> <span>", pagina) :
string de entrada 161 é inválida nesse locale
4: In grep("<div class=\"altroute-rcol altroute-info\"> <span>", pagina) :
string de entrada 240 é inválida nesse locale
5: In grep("<div class=\"altroute-rcol altroute-info\"> <span>", pagina) :
string de entrada 248 é inválida nesse locale

>

O erro está na função Enconding, mas não consegui entender muito bem do que se trata.
Tenho interesse nessa função e gostaria de fazr funcionar aqui. Você tem alguma luz?

Obrigado,
Paulo


Em 4 de novembro de 2011 12:20, Lucas Barbosa <lucasbcr@gmail.com> escreveu:

Bom dia pessoal,
Tá aí uma ideia usando o google maps. Parece estar funcionando bem, mas ainda não testei direito. Notem que eu escolhi usar sempre a primeira rota que o gmaps sugere (a mais rápida e não a mais curta.)
Cada execução leva quase 1 s então deve demorar uma eternidade pra todos os municípios. E pra piorar eu só consegui rodar essa função usando um núcleo, parece não ser possível executar a readLines com mais de um ao mesmo tempo (talvez o problema seja com o snow.)
Eu não sei usar muito bem esses encodings então não reparem nessa parte, foi tentativa e erro mesmo.

#código:
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("Brasília", "DF", "Pirenópolis", "GO")
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")

Em 4 de novembro de 2011 00:31, Mario Azevedo <mario.azevedo@gmail.com> escreveu:

A matriz será muito grande 5566 x 5566 = 30980356 elementos. Se cada elemento for um número real, ele consumirá, no mínimo, 4 bytes de memória, totalizando algo perto de 118 Mbytes. Não sei quais são os limites, mas me parece que deve ficar difícil tratar de um "bicho" desse tamanho.

sds.


2011/11/3 Mario Azevedo <mario.azevedo@gmail.com>
Sim. O programa irá calcular essa matriz de distâncias e você pode estabelecer a unidade de medida. 

Lembrando que você deve tomar cuidado porque, talvez, o que lhe interesse seja o centróide da área da sede do município e não da da área total. Para alguns municípios a diferença pode ser grande. 

2011/11/3 Pedro Rafael <pedro.rafael.marinho@gmail.com>
Existe alguma forma de converter essa distância euclidiana entre centroides de municípios em cm, m, km?

Em 2 de novembro de 2011 22:47, Mario Azevedo [via R-br] <ml-node+s2285057n3984003h70@n4.nabble.com> escreveu:
Realmente, para uma área tão grande, me parece melhor usar distâncias euclidianas. Calcular as distâncias por vias terrestres entre cada par de municípios é uma tarefa que demandaria um trabalho gigantesco, pois não existem bases com essas informações (completas). Dependendo do tipo do problema em estudo, é uma informação que não faz muito sentido. Eu posso ter um trecho de via de 20 km que consigo percorrer em 10 minutos (a 120 km/h) e posso ter outro com a mesma extensão, mas com condições ruins de pavimentação ou de topografia, na qual levarei muito mais tempo.

Só completando um pouco as opiniões de alguns.

Saudações.

Mário


2011/11/2 Ricardo Tavares <[hidden email]>
Ricardo.

Em 1 de novembro de 2011 15:55, Leandro Marino <[hidden email]> escreveu:

Caros,

 

Por acaso alguém sabe me dizer se existe em algum local uma tabela / matriz de distancias entre TODOS os municípios brasileiros?

 

Estava precisando deste tipo de dado.

 

Atenciosamente,
Leandro Lins Marino
Centro de Avaliação
Fundação CESGRANRIO
Rua Santa Alexandrina, 1011 - 2º andar
Rio de Janeiro, RJ - CEP: 20261-903
( <a href="tel:%2821%29%202103-9600" value="+552121039600" target="_blank">(21) 2103-9600 R.:236
* [hidden email]

 

P  Antes de imprimir pense em sua responsabilidade e compromisso com o MEIO AMBIENTE 

 

Esta mensagem, incluindo seus anexos, pode conter informacoes privilegiadas e/ou de carater confidencial, nao podendo ser retransmitida sem autorizacao do remetente. Se voce nao e o destinatario ou pessoa autorizada a recebe-la, informamos que o seu uso, divulgacao, copia ou arquivamento sao proibidos.

Portanto, se você recebeu esta mensagem por engano, por favor, nos informe respondendo imediatamente a este e-mail e em seguida apague-a.

 


_______________________________________________
R-br mailing list
[hidden email]

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.



--
Professor Adjunto - área Estatística
Departamento de Matemática
Universidade Federal de Ouro Preto

_______________________________________________
R-br mailing list
[hidden email]

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.


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


If you reply to this email, your message will be added to the discussion below:
http://r-br.2285057.n4.nabble.com/R-br-OT-Distancias-entre-municipios-tp3964600p3984003.html
To unsubscribe from R-br, click here.



--
Saudações,
Pedro Rafael Diniz Marinho.
Estatístico - Secretaria de Estado da Saúde - PB.



_______________________________________________
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.



_______________________________________________
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.


_______________________________________________
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.


_______________________________________________
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.


_______________________________________________
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.