代码之家  ›  专栏  ›  技术社区  ›  holden

使用geokit或其他ruby gem计算一系列地理坐标的中心

  •  7
  • holden  · 技术社区  · 15 年前

    我已经使用geokit和geokit rails gem for rails有一段时间了,但是有一个问题我还没有找到答案,那就是如何找到一个点集合的计算聚合中心。我知道如何计算两点之间的距离,但不超过2。

    我的理由是,我在同一个城市有一系列的观点。。。如果一切都很完美的话,这个城市会有一个我可以直接使用的中心,但是有些城市说柏林没有一个完美的中心。它们有多个中心,我只想使用数据库中所有位置的列表来计算特定分布的中心。还有人有这个问题吗?

    有什么建议吗?谢谢

    1 回复  |  直到 15 年前
        1
  •  5
  •   Michael Richards    15 年前

    以前从未使用过Geokit,这个操作背后的数学原理相对简单,可以自己实现。假设这些点由纬度和经度组成,您只需要所有点的平均纬度和平均经度。一旦你有了这两个值,你就有了你的中心点。

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

    同样,如果这些点是 Geokit::LatLng 对象而不是二维数组,只需事先调用对象上的#到#即可映射它们的lat和lng值。

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