使用geokit或其他红宝石宝石来计算一系列地理坐标的中心

hol*_*den 7 ruby google-maps rubygems ruby-on-rails geokit

我一直在使用geokit和geokit-rails gem用于rails一段时间,但我没有找到的一个问题是如何找到计算的聚合中心的一组点.我知道如何计算两点之间的距离,但不超过2点.

我的理由是,我在同一个城市都有一系列要点...所有事情都很完美,这个城市会有一个我可以使用的中心,但是有些城市,比如说柏林没有一个完美的中心.他们有多个中心,我只想使用我在数据库中的所有地点列表来计算特定分布的中心.有没有其他人有这个问题?

有小费吗?谢谢

Mic*_*rds 5

之前从未使用过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)

  • 它一文不值,如果您要寻找精确度,则事情要比平均起来要复杂得多: (2认同)