2010-10-20 12 views
6

Ben bir süredir raylar için geokit ve geokit-raylar gemini kullanıyorum ama cevaplamadığım bir soru, hesaplanan değeri nasıl bulacağımı bulmaktır puan toplanması için toplama merkezi. İki nokta arasındaki mesafeyi nasıl hesaplayacağımı biliyorum, ancak 2'den fazla değil.geokit veya başka bir yakut mücevher kullanarak bir dizi coğrafi koordinatın merkezini hesaplamak için

Sebep, aynı şehirde bir dizi noktaya sahibim ... şehirdeki her şeyin mükemmel olacağı bir merkeze sahip. Sadece kullanabilirdim, ama bazı şehirlerde, berlin'in mükemmel bir merkeze sahip olmadığını söyleyin. Birden fazla merkez var ve sadece belirli bir dağıtım için bir merkez hesaplamak için veri tabanımdaki tüm yerlerin listesini kullanmak istiyorum. Bu problemi başka biri var mıydı?

Herhangi bir ipucu? Teşekkürler

cevap

4

Daha önce hiç Geokit kullanmamış olmanız nedeniyle, bu işlemin ardındaki matematik, kendinizi uygulamak için nispeten basittir. Bu noktaların bir enlem ve boylamdan oluştuğunu varsayarak, tüm noktalar için ortalama enlem ve ortalama boylama ihtiyacınız vardır. Bu iki değere sahip olduğunuzda, merkez noktanız var. bu noktaların yerine 2 boyutlu bir dizinin Geokit::LatLng nesnelerdir eğer

points = [[14, 19], [-5, 57], [23, -12]] 
points.transpose.map{|c| c.inject{|a, b| a + b}.to_f/c.size} 

Aynı şekilde, sadece basitçe önceden onlara #to_a arayarak kendi enlem ve Ing değerlerini eşleştirebilirsiniz.

points.map(&:to_a).transpose.map{|c| c.inject{|a, b| a + b}.to_f/c.size} 
+1

Bu hiçbir şeye değmez, hassaslık arıyorsanız, ortalamalar ortalamasından biraz daha karmaşıktır: http://www.geomidpoint.com/calculation.html –

İlgili konular