The following Perl script will give you a rough estimation of distance between two points expressed in floating point latitude and longitudes.
### Lat, Long, Lat, Long, Unit (M: Miles, K: KM, N: Nautical Miles) ### distance(35.4384, 139.6368, 35.4123, 139.6300, "M"); sub distance { my ($lat1, $lon1, $lat2, $lon2, $unit) = @_; my $theta = $lon1 - $lon2; my $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $dist = $dist * 60 * 1.1515; if ($unit eq "K") { $dist = $dist * 1.609344; } elsif ($unit eq "N") { $dist = $dist * 0.8684; } return ($dist); } sub acos { my ($rad) = @_; my $ret = atan2(sqrt(1 - $rad**2), $rad); return $ret; } sub deg2rad { my ($deg) = @_; return ($deg * $pi / 180); } sub rad2deg { my ($rad) = @_; return ($rad * 180 / $pi); }
Comments are closed.