Dies hätte ein offensichtlicher Vorläufer (den ich nicht gestellt habe) meiner anderen Frage sein sollen: Wie erstelle ich Spinnendiagramme (Hub-Linien) in PostGIS?
Wenn ich die Beziehung zwischen einem Punkt in Schicht A (Geschäfte) und einem Punkt in Schicht B (Kunden) nicht kenne, möchte ich allgemein sagen, dass "Kunde 1 vom nächstgelegenen Geschäft bedient wird". Mir ist zwar klar, dass diese Tatsache möglicherweise nicht zutrifft, aber es kann ein anständiger Ersatz sein.
Was ist die effizienteste Methode, um mit PostGIS jedem Punkt in Schicht B (Kunden) die ID des nächstgelegenen Punkts in Schicht A (Filialen) zuzuweisen. Die Ausgabe, die ich suche, ist etwas wie unten.
Customer | Store
1 | A
2 | A
3 | B
4 | C
quelle
Wenn Sie viel mehr Kunden als Geschäfte haben, ist es möglicherweise effizienter, eine Ebene mit Voronoi-Polygonen für die Geschäfte zu erstellen und dann eine räumliche Verknüpfung von Kunden mit den Geschäftspolygonen durchzuführen.
quelle
Diskussionen über einige grundlegende Lösungen für den nächsten Nachbarn finden Sie hier: http://www.bostongis.com/?content_name=postgis_nearest_neighbor#120
/ Nicklas
quelle
Von http://www.bostongis.com/?content_name=postgis_nearest_neighbor :
Damit werden Mindestabstände von bis zu 300 Einheiten erreicht. Sie müssen also zuerst Ihre Daten überprüfen und herausfinden, wie groß Ihre Mindestentfernungen werden.
quelle
Sie müssen das kürzeste Paar in einem Suchfeld suchen. Wenn das Feld nichts enthält, erweitern Sie es. Es ist nicht schön, aber es funktioniert. Es gibt ein Beispiel für PL / PgSQL-Code hier http://trac.osgeo.org/postgis/wiki/UsersWikiNearest
quelle
Vielen Dank für alle Beiträge. Letztendlich habe ich mich für eine Kombination aus eprands und underdarks Vorschlägen entschieden. Der endgültige Code, den ich verwendet habe, war:
Ich habe dann ein Voronoi-Diagramm auf der Ebene "Stores" erstellt, um zu bestätigen, dass die Ergebnisse korrekt funktionieren, was natürlich auch der Fall war. Vielen Dank für die großartige Arbeit!
quelle