Module: NoaaWeatherClient::Services::CalculateDistanceBetweenLatLon

Extended by:
Math
Defined in:
lib/noaa_weather_client/services/calculate_distance_between_lat_lon.rb

Class Method Summary collapse

Class Method Details

.convert_to_radian(*args) ⇒ Object



15
16
17
# File 'lib/noaa_weather_client/services/calculate_distance_between_lat_lon.rb', line 15

def self.convert_to_radian(*args)
  args.map { |arg| arg / 180 * Math::PI }
end

.get_distance(lat1, lon1, lat2, lon2) ⇒ Object



6
7
8
9
10
11
12
13
# File 'lib/noaa_weather_client/services/calculate_distance_between_lat_lon.rb', line 6

def self.get_distance(lat1, lon1, lat2, lon2)
  lat1, lon1, lat2, lon2 = convert_to_radian(lat1, lon1, lat2, lon2)

  radius = 6371 #km
  s = sin(lat1) * sin(lat2)
  c = cos(lat1) * cos(lat2) * cos(lon2-lon1)
  acos(s + c) * radius;
end