PostGISに比較したい3つのシリーズ(またはテーブル)のポイントがあります。他の2つのシリーズと比較して、各シリーズがどれだけ「近い」かを知りたいです。言い換えれば、各ポイントの平均距離と他のすべてのポイントの平均(つまり、距離行列の平均)などの測定値が必要になります…複雑に聞こえますが、比較するための一般的な統計がいくつか存在すると確信しています一連のポイント。
クエリはどのように表示されますか?
コメント
- メジャーとして選択した場合、二乗平均平方根距離ポイントの場合、RMSE距離はsqrt(2N /(N-1))にNポイントとそのセントロイド間のRMSE距離を掛けたものに等しいため、計算の複雑さはO(N ^ 2)からO(N)に減少します。
- 自分のやり方で行うと、'セットをそれ自体と比較すると距離がゼロ以外になる状況になります。つまり、セット内のポイントが2つのセット間だけでなくどれだけ近いかを比較します。
- @Jakub <に分割されたポイントのセット内のクラスタリングの程度を測定する一般的で効果的な方法div id = "4bf4739b63">
クラスター"は、任意のポイントセット内の平均距離の測定値を使用します。セット全体のメジャーをクラスターのメジャーの合計(または他の適切な組み合わせ)と比較すると、クラスタリングの量が評価されます。したがって、フランチェスコ'の手順に対する異議として読まれるかもしれないあなたのコメントは、実際にそれが面白くて有用なものである理由を指摘しています。
回答
コメントで述べたように、平均距離はポイント間の最大距離によって歪められます。たとえば、直径100 kmの点群を作成し、それを横方向に1 mシフトして、新しいテーブルを作成できます。テーブルAからテーブルBまでの任意のポイントの平均距離は、1mよりも100km近くになります。テーブルAからテーブルBまでの任意のポイントの最も近い距離は1mであり、平均最短距離は1mになります。
それはさておき、最短距離の平均を計算する方法を示します。その後、必要に応じて延長できます。
SELECT DISTINCT ON(a.id) a.id AS a_id, b.id AS b_id, ST_DISTANCE(a.geom, b.geom) as distance INTO a_b_distances FROM a, b ORDER BY a.id, a.geom <-> b.geom
次に、最も近い平均距離を計算します。
SELECT avg(distance) FROM a_b_distances
コメント
- これはすばらしいです!これを拡張して、最大の最も近い距離を見つけるにはどうすればよいですか?
-
for max