2010-10-20 21 views
6

He estado usando geokit y geokit-rails gema por raíles por un tiempo, pero una pregunta que no he encontrado respondida es cómo encontrar la calculada centro agregado para una colección de puntos. Sé cómo calcular la distancia entre dos puntos, pero no más de 2.usando geokit u otra gema de rubí para calcular el centro de una serie de coordenadas geográficas

Mi razón es que tengo una serie de puntos, todos en la misma ciudad ... siendo todo perfecto, la ciudad tendría un centro que Solo podría usar, pero algunas ciudades, dicen que Berlín no tiene un centro perfecto. Tienen varios centros, y solo quiero usar toda la lista de lugares que tengo en mi base de datos para calcular un centro para una distribución particular. ¿Alguien mas ha tenido este problema?

¿Algún consejo? Gracias

Respuesta

4

Como nunca antes se había usado Geokit, la operación matemática detrás de esta operación es relativamente simple de implementar. Suponiendo que estos puntos constan de una latitud y una longitud, solo necesita la latitud promedio y la longitud promedio para todos los puntos. Una vez que tienes esos dos valores, tienes tu punto central.

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

Del mismo modo, si estos puntos son Geokit::LatLng objetos en lugar de una matriz de 2 dimensiones, sólo puede asignar sus valores lat y lng simplemente llamando #to_a en ellos de antemano.

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

No vale la pena, las cosas son un poco más complicadas que solo promediar si buscas precisión: http://www.geomidpoint.com/calculation.html –

Cuestiones relacionadas