Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Aprenda inglês de uma vez por todas

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

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

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 2.99/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1206 votos)

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
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

Objective-C Fundamental