我使用 geokit 和 geokit-rails gem for rails 有一段时间了,但我还没有找到答案的一个问题是如何找到一组点的计算聚合中心。我知道如何计算两点之间的距离,但不会超过 2。
我的理由是,我在同一个城市中有一系列的点……一切都完美的城市会有一个我可以使用的中心,但有些城市,比如柏林没有一个完美的中心。他们有多个中心,我只想使用我数据库中的所有地点列表来计算特定分布的中心。还有其他人遇到过这个问题吗?
有什么建议吗?谢谢
最佳答案
之前从未使用过 Geokit,这个操作背后的数学原理相对容易自己实现。假设这些点由纬度和经度组成,您只需要所有点的平均纬度和平均经度。获得这两个值后,您就获得了中心点。
points = [[14, 19], [-5, 57], [23, -12]]
points.transpose.map{|c| c.inject{|a, b| a + b}.to_f / c.size}
同样,如果这些点是 Geokit::LatLng
对象而不是二维数组,您可以通过预先调用 #to_a 简单地映射它们的 lat 和 lng 值。
points.map(&:to_a).transpose.map{|c| c.inject{|a, b| a + b}.to_f / c.size}
关于ruby-on-rails - 使用 geokit 或其他 ruby gem 计算一系列地理坐标的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3977058/