0

私は現在、foursquare の入れ子になった会場の配列を保持する小さなスクリプトを作成しています。foursquare はクラウドソーシングによるものであるため、多くの場合、重複した会場 (実際には同じ場所である 2 つ以上の会場) があります。Ruby に GEM またはサービスがあるかどうかを判断しようとしています。これを使用して、それらの間の地理位置情報を比較し、それらが重複している可能性がある場所を判断します。

ここでの課題は、近接を検出するために緯度と経度の両方を使用する必要があることです。

たとえば、配列 [[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 に答える