Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Semrush - keyword research tool

Turn ChatGPT, Claude, Gemini, And CoPilot Into Your Personal Assistant, Business Coach, Content Creator, And More

AFFILIATE MARKETING Your all-in-one performance engine Manage affiliates, creators, and customer referrals in one unified platform—turning every partnership into measurable growth
Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

42,641 questions

55,376 answers

573 users

How to calculate the distance between two latitude-longitude points in Ruby

1 Answer

0 votes
# ------------------------------------------------------------
# Convert degrees to radians
# ------------------------------------------------------------
def deg_to_rad(deg)
  deg * Math::PI / 180.0
end

# ------------------------------------------------------------
# Compute the great-circle distance between two points on Earth
# using the Haversine formula.
# lat1, lon1, lat2, lon2 are in degrees.
# The result is returned in kilometers.
# ------------------------------------------------------------
def haversine(lat1, lon1, lat2, lon2)

  # Earth's mean radius in kilometers
  r = 6371.0

  # Convert all angles to radians
  rlat1 = deg_to_rad(lat1)
  rlon1 = deg_to_rad(lon1)
  rlat2 = deg_to_rad(lat2)
  rlon2 = deg_to_rad(lon2)

  # Differences
  dlat = rlat2 - rlat1
  dlon = rlon2 - rlon1

  # Haversine formula
  # a is the Haversine of the central angle between the two points.
  a =
    Math.sin(dlat / 2)**2 +
    Math.cos(rlat1) * Math.cos(rlat2) *
    Math.sin(dlon / 2)**2

  # Central angle
  # c is the central angle between the two points on the Earth’s surface.
  c = 2 * Math.asin(Math.sqrt(a))

  # Final distance
  r * c
end

# ------------------------------------------------------------
# Main 
# ------------------------------------------------------------

# Example coordinates:
# Austin, Texas
lat1 = 30.2672
lon1 = -97.7431

# Houston, Texas
lat2 = 29.7604
lon2 = -95.3698

distance_km = haversine(lat1, lon1, lat2, lon2)

# Convert kilometers to miles
distance_miles = distance_km * 0.621371

puts "Distance: #{format('%.3f', distance_km)} km"
puts "Distance: #{format('%.3f', distance_miles)} miles"



=begin
run:

Distance: 235.352 km
Distance: 146.241 miles

=end

 



answered 2 days ago by avibootz
edited 2 days ago by avibootz

Related questions

...