Paulo,<div>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...<div>
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.<div>Eu testei essa função só em R x64 2.13 (windows7). Você tá mexendo com a 2.13 também?</div><div>
<br><div class="gmail_quote">Em 22 de novembro de 2011 18:28, Paulo Nogueira <span dir="ltr"><<a href="mailto:paulons@gmail.com">paulons@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Lucas,<br>provavelmente está tudo funcionando bem aí no seu computador, mas fui rodar seu código e tive problemas.<div class="im"><br><br>> #código:<br>> distancia <- function(cidade1, uf1, cidade2, uf2){<br></div>
+ link <- paste( "<a href="http://maps.google.com/maps?saddr=" target="_blank">http://maps.google.com/maps?saddr=</a>", cidade1, "+-+", uf1, ",+Brasil&daddr=", cidade2, "+-+", uf2, ",+Brasil&hl=pt-BR&ie=UTF8", sep="")<br>
+ link <- iconv(link, 'latin1', 'UTF-8')<br>+ Encoding(link) <- 'bytes'<br>+ <br>+ pagina <- readLines(url(link))<br>+ <br>+ linha <- grep('<div class="altroute-rcol altroute-info"> <span>', pagina)<br>
+ distancia <- pagina[linha]<br>+ distancia <- strsplit(distancia, '<div class="altroute-rcol altroute-info"> <span>')[[1]][2]<br>+ distancia <- strsplit(distancia, '</span>')[[1]][1]<br>
+ return(list(distancia = distancia, link=link))<br>+ }<div class="im"><br>> <br>> distancia("Brasília", "DF", "Pirenópolis", "GO")<br></div>Erro em strsplit(distancia, "<div class=\"altroute-rcol altroute-info\"> <span>")[[1]] : <br>
índice fora de limites<br>Além disso: Mensagens de aviso perdidas:<br>1: In readLines(url(link)) :<br> linha final incompleta encontrada em '<a href="http://maps.google.com/maps?saddr=Bras%C3%83" target="_blank">http://maps.google.com/maps?saddr=BrasÃ</a>lia+-+DF,+Brasil&daddr=Pirenópolis+-+GO,+Brasil&hl=pt-BR&ie=UTF8'<br>
2: In grep("<div class=\"altroute-rcol altroute-info\"> <span>", pagina) :<br> string de entrada 1 é inválida nesse locale<br>3: In grep("<div class=\"altroute-rcol altroute-info\"> <span>", pagina) :<br>
string de entrada 161 é inválida nesse locale<br>4: In grep("<div class=\"altroute-rcol altroute-info\"> <span>", pagina) :<br> string de entrada 240 é inválida nesse locale<br>5: In grep("<div class=\"altroute-rcol altroute-info\"> <span>", pagina) :<br>
string de entrada 248 é inválida nesse locale<br><br>><br><br><div>O erro está na função Enconding, mas não consegui entender muito bem do que se trata.</div><div>Tenho interesse nessa função e gostaria de fazr funcionar aqui. Você tem alguma luz?</div>
<div><br></div><div>Obrigado,</div><div>Paulo</div><div><br><div><br><div class="gmail_quote">Em 4 de novembro de 2011 12:20, Lucas Barbosa <span dir="ltr"><<a href="mailto:lucasbcr@gmail.com" target="_blank">lucasbcr@gmail.com</a>></span> escreveu:<div>
<div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Bom dia pessoal,<br>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.)<br>
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 <i>snow</i>.)<br>
Eu não sei usar muito bem esses <i>encodings</i> então não reparem nessa parte, foi tentativa e erro mesmo.<br><br>#código:<br>distancia <- function(cidade1, uf1, cidade2, uf2){<br> link <- paste( "<a href="http://maps.google.com/maps?saddr=" target="_blank">http://maps.google.com/maps?saddr=</a>", cidade1, "+-+", uf1, ",+Brasil&daddr=", cidade2, "+-+", uf2, ",+Brasil&hl=pt-BR&ie=UTF8", sep="")<br>
link <- iconv(link, 'latin1', 'UTF-8')<br> Encoding(link) <- 'bytes'<br><br> pagina <- readLines(url(link))<br><br> linha <- grep('<div class="altroute-rcol altroute-info"> <span>', pagina)<br>
distancia <- pagina[linha]<br> distancia <- strsplit(distancia, '<div class="altroute-rcol altroute-info"> <span>')[[1]][2]<br> distancia <- strsplit(distancia, '</span>')[[1]][1]<br>
return(list(distancia = distancia, link=link))<br>}<br><br>distancia("Brasília", "DF", "Pirenópolis", "GO")<br>distancia("Brasília", "DF", "Goiânia", "GO")<br>
distancia("Brasília", "DF", "Natal", "RN")<br>distancia("Brasília", "DF", "Florianópolis", "SC")<br>distancia("Brasília", "DF", "Porto Alegre", "RS")<br>
<br><div class="gmail_quote">Em 4 de novembro de 2011 00:31, Mario Azevedo <span dir="ltr"><<a href="mailto:mario.azevedo@gmail.com" target="_blank">mario.azevedo@gmail.com</a>></span> escreveu:<div><div></div><div>
<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
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.<div>
<br></div><div>sds.<div><div><br><br><div class="gmail_quote">2011/11/3 Mario Azevedo <span dir="ltr"><<a href="mailto:mario.azevedo@gmail.com" target="_blank">mario.azevedo@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Sim. O programa irá calcular essa matriz de distâncias e você pode estabelecer a unidade de medida. <div><br></div><div>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. <br>
<br><div class="gmail_quote">2011/11/3 Pedro Rafael <span dir="ltr"><<a href="mailto:pedro.rafael.marinho@gmail.com" target="_blank">pedro.rafael.marinho@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div>
Existe alguma forma de converter essa distância euclidiana entre centroides de municípios em cm, m, km?<br><br><div class="gmail_quote">Em 2 de novembro de 2011 22:47, Mario Azevedo [via R-br] <span dir="ltr"><<a href="mailto:ml-node%2Bs2285057n3984003h70@n4.nabble.com" target="_blank">ml-node+s2285057n3984003h70@n4.nabble.com</a>></span> escreveu:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
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.<div>
<br></div><div>Só completando um pouco as opiniões de alguns.</div><div><br></div><div>Saudações.</div><div><br></div><div>Mário</div></div><div><br><br><div class="gmail_quote">2011/11/2 Ricardo Tavares <span dir="ltr"><<a href="http://user/SendEmail.jtp?type=node&node=3984003&i=0" rel="nofollow" link="external" target="_blank">[hidden email]</a>></span><br>
<blockquote style="border-left:2px solid #cccccc;padding:0 1em" class="gmail_quote"><div><div>Oi Leandro e demais colegas,<div><br></div><div>A base shape é disponibilizada pelo IBGE no seguinte link:</div><div>
<br>
</div><div><a href="ftp://geoftp.ibge.gov.br/mapas/malhas_digitais/municipio_2007/Malha_Municipal_Digital_2007_2500/Disseminacao_2007/Proj_Geografica/SIRGAS2000/ArcView_Shp/2007/E2500/Brasil/" rel="nofollow" link="external" target="_blank">ftp://geoftp.ibge.gov.br/mapas/malhas_digitais/municipio_2007/Malha_Municipal_Digital_2007_2500/Disseminacao_2007/Proj_Geografica/SIRGAS2000/ArcView_Shp/2007/E2500/Brasil/</a></div>
<div><br></div><div>Um abraço e até mais,</div></div></div><div>Ricardo.<br><br><div class="gmail_quote"><div>Em 1 de novembro de 2011 15:55, Leandro Marino <span dir="ltr"><<a href="http://user/SendEmail.jtp?type=node&node=3984003&i=1" rel="nofollow" link="external" target="_blank">[hidden email]</a>></span> escreveu:<br>
</div><blockquote style="border-left:2px solid #cccccc;padding:0 1em" class="gmail_quote"><div><div><div link="blue" vlink="purple" lang="PT-BR"><div><div><div><p class="MsoNormal">Caros,<u></u><u></u></p><p class="MsoNormal">
<u></u> <u></u></p>
<p class="MsoNormal">Por acaso alguém sabe me dizer se existe em algum local uma tabela / matriz de distancias entre TODOS os municípios brasileiros?<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">
Estava precisando deste tipo de dado.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p></div><p class="MsoNormal"></p><div><span style="color:black">Atenciosamente,<br></span><b><span style="color:#000040">Leandro Lins Marino</span></b><b><span style="font-size:10.0pt;color:#000040"><br>
</span></b><i><span style="font-size:10.0pt;color:gray">Centro de Avaliação<br>Fundação CESGRANRIO<br>Rua Santa Alexandrina, 1011 - 2º andar<br>Rio de Janeiro, RJ - CEP: 20261-903<br></span></i></div></div><i><span style="font-size:10.0pt;font-family:Wingdings;color:gray">(</span></i><i><span style="font-size:10.0pt;color:gray"> </span></i><i><span style="font-size:10.0pt;color:gray"><a href="tel:%2821%29%202103-9600" value="<a href="tel:%2B552121039600" value="+552121039600" target="_blank">+552121039600</a>" target="_blank"><a href="tel:%2821%29%202103-9600" value="+552121039600" target="_blank">(21) 2103-9600</a> R.:236 <br>
</span></i><i><span style="font-family:Wingdings;color:gray">*</span></i><i><span style="color:gray"> <a href="http://user/SendEmail.jtp?type=node&node=3984003&i=2" rel="nofollow" link="external" target="_blank">[hidden email]</a><u></u><u></u></span></i><div>
<p>
</p><div><div>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#006666"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:18.0pt;font-family:Webdings;color:#76923c">P</span><b><span style="font-size:7.5pt;font-family:"Palatino Linotype","serif";color:#76923c"> </span></b><b><span style="font-size:9.0pt;color:#76923c">Antes de imprimir</span></b><span style="font-size:9.0pt;color:#76923c"> <b>pense em sua responsabilidade e compromisso com o</b> <b>MEIO AMBIENTE</b></span><span style="font-size:10.0pt;color:#006666"> <u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;color:#006666"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.5pt;font-family:Consolas;color:#1f497d">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. <u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:Consolas;color:#1f497d">Portanto, se você recebeu esta mensagem por engano, por favor, nos informe respondendo imediatamente a este e-mail e em seguida apague-a.<u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p></div></div></div></div></div><br></div></div><div><div><div>_______________________________________________<br>
R-br mailing list<br>
<a href="http://user/SendEmail.jtp?type=node&node=3984003&i=3" rel="nofollow" link="external" target="_blank">[hidden email]</a><div><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="nofollow" link="external" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="nofollow" link="external" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></div></div></div></div></blockquote>
</div><div><div><div><span><font color="#888888"><br>
<br clear="all"><div><br></div>-- <br>
Professor Adjunto - área Estatística<br>Departamento de Matemática<br>Universidade Federal de Ouro Preto<br>
</font></span></div></div></div></div><div><div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="http://user/SendEmail.jtp?type=node&node=3984003&i=4" rel="nofollow" link="external" target="_blank">[hidden email]</a><div><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="nofollow" link="external" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="nofollow" link="external" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></div></div></div></blockquote>
</div>
<br></div><div><div>
<br>_______________________________________________
<br>R-br mailing list
<br><a href="http://user/SendEmail.jtp?type=node&node=3984003&i=5" rel="nofollow" link="external" target="_blank">[hidden email]</a>
<br><div><a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="nofollow" link="external" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="nofollow" link="external" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.
<br>
<br>
</div><hr noshade size="1" color="#cccccc">
</div></div><div style="color:#444;font:12px tahoma,geneva,helvetica,arial,sans-serif"><div><div>
<div style="font-weight:bold">If you reply to this email, your message will be added to the discussion below:</div>
</div></div><a href="http://r-br.2285057.n4.nabble.com/R-br-OT-Distancias-entre-municipios-tp3964600p3984003.html" target="_blank">http://r-br.2285057.n4.nabble.com/R-br-OT-Distancias-entre-municipios-tp3964600p3984003.html</a>
</div><div><div>
<div style="color:#666;font:11px tahoma,geneva,helvetica,arial,sans-serif;margin-top:.4em">
To unsubscribe from R-br, <a href="http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3357982&code=cGVkcm8ucmFmYWVsLm1hcmluaG9AZ21haWwuY29tfDMzNTc5ODJ8NTAyMjI0MDYw" target="_blank">click here</a>.
</div></div></div></blockquote></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br><font color="#000099">Saudações,</font><div><font color="#000099">Pedro Rafael Diniz Marinho.</font></div>
<div><font color="#000099">Estatístico - Secretaria de Estado da Saúde - PB.</font></div>
<div><font color="#000099"><br></font></div><br>
</font></span><br></div></div><div>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
</div><div><a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></div></blockquote></div><br></div>
</blockquote></div><br></div></div></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div></div></div><br>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div></div></div><br></div></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div></div></div>