Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用geokit或其他ruby gem计算一系列地理坐标的中心_Ruby On Rails_Ruby_Google Maps_Rubygems_Geokit - Fatal编程技术网

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

Ruby on rails 使用geokit或其他ruby gem计算一系列地理坐标的中心,ruby-on-rails,ruby,google-maps,rubygems,geokit,Ruby On Rails,Ruby,Google Maps,Rubygems,Geokit,我已经使用geokit和geokit rails gem for rails有一段时间了,但有一个问题我没有找到答案,那就是如何找到一组点的计算聚合中心。我知道如何计算两点之间的距离,但不超过2 我的理由是,我有一系列的分数都在同一个城市。。。如果一切都完美的话,这个城市会有一个我可以使用的中心,但是有些城市,比如说柏林没有一个完美的中心。他们有多个中心,我只想使用数据库中的所有位置列表来计算特定分布的中心。还有其他人有这个问题吗 有什么建议吗?感谢您以前从未使用过Geokit,此操作背后的数学

我已经使用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}

它一文不值,如果你想要精确的话,事情比平均要复杂一些: