[osm-pl] Błędne rysowanie map dla routerów - 2 drogi pomiędzy tymi samymi wierzchołkami
rhn
opstmaac.rhn w porcupinefactory.org
Czw, 13 Paź 2016, 12:13:44 UTC
On Thu, 13 Oct 2016 13:56:53 +0200
Dariusz <darkmartin w interia.pl> wrote:
> > Czy możesz wskazać przykład takiej sytuacji?
> > Czy chodzi o to, że jedna droga z highway=* ma przebieg A-B-C-D, a druga highway=* A-B bez punktów pośrednich? W takim wypadku zgadzam się - drogi nakładałyby się na siebie, co nie ma za bardzo sensu.
> > W przypadku, gdyby istniały punkty pośrednie, nie jestem w stanie dostrzec błędu w danych.
> > rhn
>
> Proszę zobaczyć to miejsce
> https://www.openstreetmap.org/#map=19/53.50281/19.73752
>
> Droga serwisowa/dojazdowa #233052804 i ulica wyzwolenia.
> osm2pgrouting tworzy węzły (wierzchołki grafu) w punktach gdzie te drogi się łączą.
> Jednak graf nie może posiadać 2 różnych krawędzi pomiędzy tymi samymi wierzchołkami.
> W tym wypadku jedną krawędzią jest droga serwisowa (jako całość) a drugą fragment ulicy wyzwolenia.
>
> Gdyby droga serwisowa miała dodatkowy wierzchołek czyli składała się z 2 odcinków nie było by problemu dla routerów.
>
> Dariusz
>
>
Sytuacja wygląda sensownie - droga serwisowa odchodzi od drogi głównej, a potem do niej wraca. Od początku do końca jest jednym wieloodcinkiem, złożonym z kilku odcinków.
Przecięcie jej nie zmienia niczego w sensowności danych mapy, a zatem nie zmienia też nic w jej poprawności. Wniosek - jest poprawnie tak, jak jest.
Kilka punktów uzasadnienia:
- nie ma sensu dzielić drogi na kawałki, gdy stanowi jedną całość - mnożymy wtedy ilość miejsc, na których trzeba przerobić tagi
- według jakiego kryterium wybieramy punkt dzielenia?
- dane mają sens i są jasno interpretowane przez ludzi wprowadzających je. Potrzeba łamania dróg nie jest w żaden sposób intuicyjna.
- podsumowując, nie mapujemy pod renderer/router
Problem, z którym się stykasz, leży w oprogramowaniu, ewentualnie w normalizacji danych przekazywanych do niego. Nie można się spodziewać, że (jakiekolwiek) dane będą od razu zgodne z wymaganiami algorytmu :)
Skoro już wiesz, że odcinki należy dzielić, możesz to robić w ramach przygotowania danych.
Pozdrawiam i życzę powodzenia w rozwiązaniu!
rhn
Więcej informacji o liście Talk-pl