7

私はしばらくの間、geokitとgeokit-rails gemをレールに使用してきましたが、答えが見つからない1つの質問は、ポイントのコレクションの計算された集計中心を見つける方法です。2点間の距離を計算する方法は知っていますが、2点以下です。

私の理由は、私はすべて同じ都市に一連のポイントを持っているからです...すべてが完璧な都市には私が使用できる中心がありますが、ベルリンには完璧な中心がないと言う都市もあります。それらには複数のセンターがあり、データベースにある場所のリスト全体を使用して、特定の分布のセンターを計算したいと思います。他の誰かがこの問題を抱えていましたか?

任意のヒント?ありがとう

4

1 に答える 1

5

これまで Geokit を使用したことがないため、この操作の背後にある計算は、自分で実装するのが比較的簡単です。これらのポイントが緯度と経度で構成されていると仮定すると、必要なのはすべてのポイントの平均緯度と平均経度だけです。これら 2 つの値を取得したら、中心点を取得します。

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

同様に、これらのポイントがGeokit::LatLng2 次元配列ではなくオブジェクトである場合、事前に #to_a を呼び出すだけで緯度と経度の値をマッピングできます。

points.map(&:to_a).transpose.map{|c| c.inject{|a, b| a + b}.to_f / c.size}
于 2010-10-21T06:04:09.537 に答える