Ich habe die Daten von Lastwagen ( http://www.chorochronos.org/ ).
Diese Daten sind GPS-Koordinaten mehrerer Flugbahnen von Lastwagen in Athen.
Ich muss die Ähnlichkeit zwischen den Trajetorien berechnen, um diejenigen zu löschen, die sehr ähnlich sind!
Rot und Grün sind ähnlich, aber Blau, Schwarz und (Rot oder Grün) sind unterschiedliche Flugbahnen. Ich möchte eines der Ähnlichkeiten löschen, rot oder grün.
Die Daten sind in Punkten (Geometrie, Lat und Long, X und Y) (Koordinaten GPS) angegeben. Das Bild ist ein Beispiel für Trajektorien
postgis
postgresql
similarity
user2883056
quelle
quelle
Antworten:
Eine wirklich einfache, aber nicht fantastische Maßnahme besteht darin, den Hausdorff-Abstand zwischen jeder Kombination zu ermitteln, was mit der Funktion ST_HausdorffDistance erfolgt . Unter Verwendung der ungefähren LineStrings aus Ihrer Figur werden diese alle in Blau angezeigt, und der Hausdorff-Abstand wird für eines der Linienpaare in Rot angezeigt:
Und die Abfrage zum Sortieren der 6 Kombinationen in absteigender Reihenfolge:
In diesem Beispiel funktioniert es also gut, aber es ist keine großartige oder robuste Technik zum Clustering von Linien, da die einzige Metrik der einzelne Punkt mit der größten Entfernung ist, anstatt die Unterschiede vollständiger Linien zu vergleichen. Es gibt viel bessere Methoden, aber sie werden komplizierter sein.
quelle
Ich habe keinen Zugriff auf PostGres / PostGIS, aber hier ist, wie ich in ArcGIS (oder anderen) vorgehen würde.
quelle