[R-br] [OT] Distancias entre municipios

Paulo Nogueira paulons em gmail.com
Terça Novembro 22 18:28:26 BRST 2011


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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20111122/dfba1519/attachment.html>


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