So berechnen Sie den durchschnittlichen Abstand zwischen Punktmengen als Maß für die Nähe

Ich habe drei Reihen (oder Tabellen) von Punkten in PostGIS, die ich vergleichen möchte. Ich würde gerne wissen, wie „nah“ jede Serie im Vergleich zu den beiden anderen ist. Mit anderen Worten, ich würde ein Maß benötigen, wie den Durchschnitt der durchschnittlichen Entfernung jedes Punktes mit allen anderen (dh den Durchschnitt der Entfernungsmatrix) … Klingt kompliziert, aber ich bin sicher, dass es einige gemeinsame Statistiken zum Vergleichen gibt Reihe von Punkten.

Wie würde meine Abfrage aussehen?

Kommentare

  • Wenn Sie als Maß den quadratischen mittleren Abstand zwischen den auswählen Punkte, dann verringert sich die Komplexität der Berechnung von O (N ^ 2) auf O (N), da der RMSE-Abstand gleich dem Quadrat (2N / (N-1)) mal dem RMSE-Abstand zwischen den N Punkten und ihrem Schwerpunkt ist.
  • Wenn Sie es auf Ihre Weise tun, werden Sie ' in einer Situation enden, in der der Vergleich eines Satzes mit sich selbst einen Abstand ungleich Null ergibt. Das heißt, Sie werden vergleichen, wie nahe die Punkte in der Menge nicht nur zwischen zwei Mengen liegen.
  • @Jakub Eine gängige und effektive Methode, um den Grad der Clusterbildung innerhalb einer Menge von Punkten zu messen, die in " Cluster " verwendet ein Maß für die durchschnittliche Entfernung innerhalb eines beliebigen Punktsatzes. Durch Vergleichen des Maßes für den gesamten Satz mit der Summe (oder einer anderen geeigneten Kombination) der Maße der Cluster wird das Ausmaß der Clusterbildung bewertet. Daher zeigt Ihr Kommentar, der von einigen als Einwand gegen Francescos ' -Verfahren gelesen werden könnte, tatsächlich, warum es interessant und nützlich ist.
  • I. Ich weiß nicht, worum es bei diesen Berechnungen geht, aber wenn Sie nur wissen möchten, ob die Punkte in Satz A näher beieinander liegen oder nicht, dann besteht die Lösung möglicherweise darin, die Fläche ihres Rumpfes zu zählen (ST_Area + ST_ConcaveHull) )
  • Gibt es einen Grund, warum Sie den Durchschnitt des Durchschnitts ALLER Abstände zwischen Punkten wollen? Jede Durchschnittsberechnung wird durch den maximalen Abstand zwischen Merkmalen verzerrt, wenn alle Merkmalssätze ziemlich nahe beieinander liegen.

Antwort

Wie ich in einem Kommentar erwähnt habe, wird die durchschnittliche Entfernung durch die größten Entfernungen zwischen Punkten verzerrt. Sie könnten beispielsweise eine Punktwolke mit einem Durchmesser von 100 km haben, die Sie dann seitlich um 1 m verschieben, um eine neue Tabelle zu bilden. Die durchschnittliche Entfernung für jeden Punkt in Tabelle A bis Tabelle B liegt näher bei 100 km als 1 m. Der nächstgelegene Abstand für jeden Punkt in Tabelle A zu Tabelle B beträgt 1 m, und der durchschnittliche nächste Entfernung beträgt 1 m.

Abgesehen davon werde ich zeigen, wie der Durchschnitt der nächsten Entfernung berechnet wird. Diese können Sie dann beliebig erweitern.

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 

Und um dann die durchschnittliche nächste Entfernung zu berechnen:

SELECT avg(distance) FROM a_b_distances 

Kommentare

  • Das ist großartig! Wie könnte dies erweitert werden, um die maximale nächste Entfernung zu finden?
  • avg für max
  • Super! Könnte das sein geschrieben, um zurückzukehren, um das Maximum direkt zurückzugeben? Ich ' mache dies in allen meinen Zeilen
  • An dieser Stelle möchten Sie vielleicht Ihre eigene Frage stellen und ich ' Ich werde gerne versuchen, darauf zu antworten. Wir ' l Ich bekomme bessere Details als dieses Hin und Her im Kommentarbereich.
  • Hier hinzugefügt (auch bearbeitet) gis.stackexchange.com/questions/190237/…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.