To powinno być oczywistym prekursorem (którego nie zadałem) mojego drugiego pytania: jak tworzyć diagramy pająków (linie piasty) w PostGIS?
Jeśli nie znam związku między punktem w warstwie A (sklepy) a punktem w warstwie B (klienci), ogólnie chciałbym powiedzieć: „Klient 1 jest obsługiwany przez najbliższy sklep”. Chociaż zdaję sobie sprawę, że ten fakt może nie być prawdą, może być przyzwoitym surogatem.
Za pomocą PostGIS, jaki jest najbardziej efektywny sposób przypisania identyfikatora najbliższego punktu w warstwie A (sklepy) do każdego punktu w warstwie B (klienci). Wynik, którego szukam, jest podobny do poniższego.
Customer | Store
1 | A
2 | A
3 | B
4 | C
źródło
Wygląda na to, że jeśli masz dużo więcej klientów niż masz sklepy, bardziej efektywne może być utworzenie warstwy wielokątów voronoi dla sklepów, a następnie połączenie przestrzenne klientów z wielokątami sklepu.
źródło
Dyskusje na temat niektórych podstawowych rozwiązań najbliższego sąsiada można znaleźć tutaj: http://www.bostongis.com/?content_name=postgis_nearest_neighbor#120
/ Nicklas
źródło
Od http://www.bostongis.com/?content_name=postgis_nearest_neighbor :
Znajdzie to minimalne odległości do 300 jednostek. Musisz więc najpierw sprawdzić swoje dane i dowiedzieć się, jak duże będą Twoje minimalne odległości.
źródło
Musisz znaleźć najkrótszą parę w polu wyszukiwania, a jeśli w polu nie ma nic, rozwiń go. To nie jest ładne, ale działa. Tutaj jest przykładowy kod PL / PgSQL http://trac.osgeo.org/postgis/wiki/UsersWikiNearest
źródło
Dzięki za wkład wszystkich. Ostatecznie wybrałem kombinację sugestii eprand i podmroku. Ostateczny kod, którego użyłem to:
Następnie utworzyłem diagram voronoi na warstwie sklepów, aby potwierdzić, że wyniki działały poprawnie, co oczywiście zrobiły. Dzięki za wspaniałą pracę wszystkim!
źródło