在2个纬度和经度点之间找到以米为单位的距离

时间:2017-08-31 03:57:33

标签: geospatial

这些是我的两点,我如何在它们之间获得距离?

52.33816422 -106.2828899 52.33816422 -106.2828634

所有的convesions程序都在寻找ddmm.mmmmmmm和dddmm.mmmmmmmm

1 个答案:

答案 0 :(得分:1)

def distance loc1, loc2
  rad_per_deg = Math::PI/180  # PI / 180
  rkm = 6371                  # Earth radius in kilometers
  rm = rkm * 1000             # Radius in meters

  dlat_rad = (loc2[0]-loc1[0]) * rad_per_deg  # Delta, converted to rad
  dlon_rad = (loc2[1]-loc1[1]) * rad_per_deg

  lat1_rad, lon1_rad = loc1.map {|i| i * rad_per_deg }
  lat2_rad, lon2_rad = loc2.map {|i| i * rad_per_deg }

  a = Math.sin(dlat_rad/2)**2 + Math.cos(lat1_rad) * Math.cos(lat2_rad) * Math.sin(dlon_rad/2)**2
  c = 2 * Math::atan2(Math::sqrt(a), Math::sqrt(1-a))

  rm * c # Delta in meters
end

puts distance [52.33816422, -106.2828899],[52.33816422, -106.2828634]
# Will return the answer

从这里开始:How to calculate the distance between two GPS coordinates without using Google Maps API?

编辑:更新了您的坐标

相关问题