você está aqui: Home  → Arquivo de Mensagens

Google Maps e Perl para calculo de distancias

Colaboração: Marcos Roberto Silva

Data de Publicação: 26 de Agosto de 2009

No dia 01/07 vi a dica do Airton Carrara sobre como calcular distâncias entre cidades utilizando o Google Maps em Java.

Como alternativa à dica do Airton, segue abaixo script escrito em Perl que faz a mesma coisa, só que do meu ponto de vista, um pouco mais simples :)

  #!/usr/bin/perl -w
  use strict;
  use DBI;
  use LWP::Simple;
  
  die "Uso: distancia.pl < municipio-uf> < municipio-uf>" if(scalar(@ARGV) != 2);
  
  my $origem = $ARGV[0];
  my $destino= $ARGV[1];
  
  my $url = "http://maps.google.com/maps?saddr=$origem&daddr=$destino&hl=en&z=1";
  my $page = get($url);
  my @dados = split(/,distance:"/, $page);
  my @dist  = split(/ km",/, $dados[1]);
  $dist[0] =~ s/,//g;
  print "Distancia de $origem a $destino = $dist[0] km\n";

Este script recebe como parâmetro a origem e o destino para o cálculo da distância.

Por exemplo, para calcular a distancia entre Bauru-SP e Brasilia-DF, temos:

  ~$./distancia.pl Bauru-SP Brasilia-DF
  Distancia de Bauru-SP a Brasilia-DF = 933 km

Se o nome da cidade contiver espaços, basta colocá-lo entre aspas:

  ~$./distancia.pl Bauru-SP "Rio de Janeiro-RJ"
  Distancia de Bauru-SP a Rio de Janeiro-RJ = 763 km

Com um pequeno esforço de programação, consegui automatizar a criação de uma tabela de distância entre 55 municípios partindo do script acima, com conexão a banco de dados, etc...

Marcos Roberto Silva


Veja a relação completa dos artigos de Marcos Roberto Silva

 

 

Opinião dos Leitores

Agostinho
25 Set 2011, 14:21
Tentei usar o script que você mencionou mas ele da erro

Use of uninitialized value in split at ./distancia.pl line 14.
Use of uninitialized value $dist[0] in substitution (s///) at ./distancia.pl line 15.
Use of uninitialized value $dist[0] in concatenation (.) or string at ./distancia.pl line 16.

Algum sugestão?
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script