
23 Nov
2011
23 Nov
'11
23:16
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]<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@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. >