近さの尺度としてポイントのセット間の平均距離を計算する方法

PostGISに比較したい3つのシリーズ(またはテーブル)のポイントがあります。他の2つのシリーズと比較して、各シリーズがどれだけ「近い」かを知りたいです。言い換えれば、各ポイントの平均距離と他のすべてのポイントの平均(つまり、距離行列の平均)などの測定値が必要になります…複雑に聞こえますが、比較するための一般的な統計がいくつか存在すると確信しています一連のポイント。

クエリはどのように表示されますか?

コメント

  • メジャーとして選択した場合、二乗平均平方根距離ポイントの場合、RMSE距離はsqrt(2N /(N-1))にNポイントとそのセントロイド間のRMSE距離を掛けたものに等しいため、計算の複雑さはO(N ^ 2)からO(N)に減少します。
  • 自分のやり方で行うと、'セットをそれ自体と比較すると距離がゼロ以外になる状況になります。つまり、セット内のポイントが2つのセット間だけでなくどれだけ近いかを比較します。
  • @Jakub <に分割されたポイントのセット内のクラスタリングの程度を測定する一般的で効果的な方法div id = "4bf4739b63">

クラスター"は、任意のポイントセット内の平均距離の測定値を使用します。セット全体のメジャーをクラスターのメジャーの合計(または他の適切な組み合わせ)と比較すると、クラスタリングの量が評価されます。したがって、フランチェスコ'の手順に対する異議として読まれるかもしれないあなたのコメントは、実際にそれが面白くて有用なものである理由を指摘しています。

  • Iこの計算のポイントが何であるかはわかりませんが、セットAのポイントが互いに近いかどうかだけを知りたい場合は、セットBのポイントが船体の面積をカウントすることになる可能性があります(ST_Area + ST_ConcaveHull )
  • ポイント間のすべての距離の平均の平均が必要な理由はありますか?すべてのフィーチャセットがかなり接近している場合、各平均計算はフィーチャ間の最大距離によって歪められます。
  • 回答

    コメントで述べたように、平均距離はポイント間の最大距離によって歪められます。たとえば、直径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

  • すごい!最大値を直接返すために戻るように書かれていますか?私は'すべての行でこれを行っています
  • この時点で、あなたはあなた自身の質問をしたいと思うかもしれません、そして私は'喜んでお答えします。' l lコメントセクションでこれよりも詳細を前後に取得します
  • ここに追加(編集済み) gis.stackexchange.com/questions/190237/ …
  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です