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
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Avalie esta dica
Opinião dos Leitores
25 Set 2011, 14:21
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?





