Buduję system planowania trasy, ale wciąż muszę zdecydować, z którego silnika routingu będę korzystać. Do tej pory znalazłem pgrouting i neo4j.
Mam sieć tras w bazie danych postgresql / postgis (importowanej z pliku shapefile). Zrobiłem zapytania, aby wyodrębnić węzły (punkty końcowe sposobów, w których musisz podjąć decyzję, w którym kierunku pójść lub ślepe zaułki) i wyodrębnić krawędzie (często złożone z kilku kolejnych sposobów). Wszystkie moje krawędzie są dwukierunkowe.
Moim głównym celem jest obliczenie tras w tej sieci przy użyciu algorytmu gwiazdy A, w którym odległość = koszt.
Moje odczucie mówi mi, że baza danych z grafami, taka jak neo4j, jest właściwą drogą (jak się wydaje, jest stworzona tylko do tego celu), ale domyślnie nie obsługują one gwiazdy A, a także nie ma prawdziwego poczucia geometrii . Wydaje się, że lepiej nadaje się do sieci społecznościowych zamiast map.
- Czy rozwiązywanie problemów spełni moje potrzeby?
- Czy jest wystarczająco szybki dla zapytań w locie (+ -2000 węzłów, + -4000 krawędzi)? Normalnie byłoby to kilka ms dla A-star, ale nie jestem pewien co do tej implementacji w sql.
- Czy rozkładanie gwiazdy A daje mi listę węzłów i krawędzi?
- W większości przykładów, które widzę na temat planowania, zauważam, że po obliczeniu trasy zwykle jest lista poleceń (np. „Na X skręć w lewo itp.”). Czy rozwiązywanie tego powoduje, czy jest to z innego systemu?
Mam nadzieję, że ktoś może podać mi informacje o tym, jaki system wybrać. Neo4j, pgrouting lub jakiś inny system.