hol*_*den 7 ruby google-maps rubygems ruby-on-rails geokit
我一直在使用geokit和geokit-rails gem用于rails一段时间,但我没有找到的一个问题是如何找到计算的聚合中心的一组点.我知道如何计算两点之间的距离,但不超过2点.
我的理由是,我在同一个城市都有一系列要点...所有事情都很完美,这个城市会有一个我可以使用的中心,但是有些城市,比如说柏林没有一个完美的中心.他们有多个中心,我只想使用我在数据库中的所有地点列表来计算特定分布的中心.有没有其他人有这个问题?
有小费吗?谢谢
之前从未使用过Geokit,这个操作背后的数学实现起来相对简单.假设这些点由纬度和经度组成,您只需要所有点的平均纬度和平均经度.一旦你拥有了这两个值,你就得到了你的中心点.
points = [[14, 19], [-5, 57], [23, -12]]
points.transpose.map{|c| c.inject{|a, b| a + b}.to_f / c.size}
Run Code Online (Sandbox Code Playgroud)
同样,如果这些点是Geokit::LatLng对象而不是二维数组,您只需通过预先调用它们的#to_a来映射它们的lat和lng值.
points.map(&:to_a).transpose.map{|c| c.inject{|a, b| a + b}.to_f / c.size}
Run Code Online (Sandbox Code Playgroud)