0

我目前正在构建一个小脚本,其中包含来自foursquare 的嵌套场地数组。由于foursquare是众包的,所以有很多次重复的场地(两个或多个实际上是同一个地方的场地)。我正在尝试确定 Ruby 中是否有 GEM 或服务,我可以使用它来比较它们之间的地理位置,并确定它们可能是重复的地点。

这里的挑战是必须同时使用 lat 和 long 才能检测接近度。

例如,我有数组 [[9.921092271, -84.02182584], [9.940208327, 84.184437] ] 并且我想看看它们是否非常接近(按上述范围,比如说 200 英尺)。这可以通过做一些数学很容易地完成,但如果有很多地理位置,那就不好了。

提前致谢!

4

1 回答 1

0

geocodergem有一些与此处相关的便捷方法。

您可以为您的示例设置它,例如:

require 'geocoder'

def close?(lat_longs, distance_in_feet)  
  distance_in_miles = distance_in_feet.to_f / 5280.to_f

  lat_longs.combination(2).each do |lat_long|
    if Geocoder::Calculations.distance_between(*lat_long) > distance_in_miles
      return false
    end
  end
  true
end

close?([[9.921092271, -84.02182584], [9.940208327, 84.184437]], 200)
# false
于 2013-07-02T16:56:01.297 回答