
24 Nov
2011
24 Nov
'11
13:02
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]<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. >> > > > _______________________________________________ > 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. >