[R-br] [OT] Distancias entre municipios

Paulo Nogueira paulons em gmail.com
Quinta Novembro 24 11:02:50 BRST 2011


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 em 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 em 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 em 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 em 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 em 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 em 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 em 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]<http://user/SendEmail.jtp?type=node&node=3984003&i=0>
>>>>>>> >
>>>>>>>
>>>>>>>> Oi Leandro e demais colegas,
>>>>>>>>
>>>>>>>> A base shape é disponibilizada pelo IBGE no seguinte link:
>>>>>>>>
>>>>>>>>
>>>>>>>> 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/
>>>>>>>>
>>>>>>>> Um abraço e até mais,
>>>>>>>> Ricardo.
>>>>>>>>
>>>>>>>> Em 1 de novembro de 2011 15:55, Leandro Marino <[hidden email]<http://user/SendEmail.jtp?type=node&node=3984003&i=1>
>>>>>>>> > 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]<http://user/SendEmail.jtp?type=node&node=3984003&i=2>
>>>>>>>>> *
>>>>>>>>>
>>>>>>>>>  ** **
>>>>>>>>>
>>>>>>>>> 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]<http://user/SendEmail.jtp?type=node&node=3984003&i=3>
>>>>>>>>>
>>>>>>>>> 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]<http://user/SendEmail.jtp?type=node&node=3984003&i=4>
>>>>>>>>
>>>>>>>> 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]<http://user/SendEmail.jtp?type=node&node=3984003&i=5>
>>>>>>> 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<http://r-br.2285057.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3357982&code=cGVkcm8ucmFmYWVsLm1hcmluaG9AZ21haWwuY29tfDMzNTc5ODJ8NTAyMjI0MDYw>.
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Saudações,
>>>>>> Pedro Rafael Diniz Marinho.
>>>>>> Estatístico - Secretaria de Estado da Saúde - PB.
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> 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.
>>>>>>
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> 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.
>>>>
>>>
>>>
>>> _______________________________________________
>>> 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.
>>>
>>
>>
>> _______________________________________________
>> 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.
>>
>
>
> _______________________________________________
> 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/20111124/36dfe16d/attachment.html>


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