2地点間の緯度と経度から直線距離を計算する

Aug 4, 2009   #Perl  :

轍 ~自転車的なる日記~ 緯度・経度から距離を求める方法」を参考にして、2地点間の距離を計算するスクリプトを作成しました。

Perlソース

use strict;
use warnings;
use Perl6::Say;
use Math::Trig;
# 戸塚駅:
#  - 東経: 139.5373496
#  - 北緯: 35.4037596
# ルノアール鎌倉駅前店
#  - 東経: 139.5511142
#  - 北緯: 35.3194949
# 戸塚駅からルノアール鎌倉駅前店までの距離を求める(メートル単位)
say calc_distance(139.5373496, 35.4037596, 139.5511142, 35.3194949);
sub calc_distance {
# 引数の取得
my ( $src_lng, $src_lat, $target_lng, $target_lat ) = @_;
# 角度をラジアンに変換する
$src_lng    = deg2rad($src_lng);
$src_lat    = deg2rad($src_lat);
$target_lng = deg2rad($target_lng);
$target_lat = deg2rad($target_lat);
# 距離を計算するための準備
my $lat = abs($src_lat - $target_lat);
my $lng = abs($src_lng - $target_lng);
# x軸方向の変位
my $disp_lng = 6378137 * $lng * cos($src_lat);
# y軸方向の変位
my $disp_lat = 6378137 * $lat;
# 距離
return sqrt(($disp_lng ** 2) + ($disp_lat ** 2));
}

実行結果

~/working/tmp_perl on simoom634 [504] $: perl temp.pl
9463.08275991388