Warszawa - komunikacja miejska

No i wszystko jasne :wink:

Ja też się pobawiłem i w pythonie stworzyłem coś takiego:
https://github.com/javnik36/ZTMvsOSM
Może się przyda :wink:

Od dłuższego czasu testuję algorytm routingowy linii autobusowych i tramwajowych. Napotykam na pewne problemy, między innymi czasem routing “ścina” trasę po jakiś drogach serwisowych. Generuję plik GPX w którym sprawdzam poprawność wygenerowanych linii, następnie zapisuję w formacie zdatnym do edycji w JOSM i wysyłam na serwer. Wkrótce postaram się opublikować kod źródłowy.

  • jak oznaczać kursy wariantowe?
  • w jaki sposób do relacji typu “route” dodawać “platform”?
    Mam też prośbę: uporządkowanie przystanków przy Powstańców Śląskich i Marymonckiej pozwoliłoby na dodanie do bazy jeszcze nieistniejących tam linii, na przykład 523, 303.

Aktualnie jest tam remont, ale jak chcesz to moge zrobić tam porządki.

Może po prostu dodawać do relacji znacznik via=*? http://wiki.openstreetmap.org/wiki/Proposed_features/Public_Transport#Route_direction.2Fvariant

Z rolą platform / platform_exit_only / platform_entry_only.

Miałem też ciągoty na zrobienie takiego routingu, jednak nie miałem tak dużego samozaparcia(i umiejętności) żeby zacząć. Próbowałem się pobawić i zrobić parser tego formatu ztm do gtfs(Ty chyba też?-na githubie widziałem)…nawet mi się udało, tylko było to w bardzo podstawowej wersji (bez tam uwzględniania przystanków na żądanie i innych takich pierdół). I z tej zabawy wyszło mi, że brakuje jeszcze trochę przystanków(nawet ztm nie wie gdzie są-koordynaty typu xx.xxx). Mam jeszcze ich listę…ale nie wiem na ile aktualną: http://pastebin.com/fNJp14WP. Przez to trochę ten gtfs miał od groma błędów.
A…no i ostatnio zrobiłem porządek z 1 linią metra i dodałem relację drugiej.

Powstańców i Marymoncka zrobiona.

Może ktoś zerknąć na te relację https://www.openstreetmap.org/way/176677445, natrafiłem na nie robiąc uwagi https://www.openstreetmap.org/note/222119#map=18/52.32247/20.94578&layers=N
Wygląda na to że linie się dublują. MARC12 to prośba do Ciebie, widzę że codzienne coś robisz więc nie chce Ci nic psuć.

Nie dublują się. Odpowiedź na oba pytania to route_master

Tak na szybko - na Łazienkowskim została jeszcze trasa autobusu 523 do usunięcia (czyli generalnie do zaktualizowania przebiegu), poza tym na moście już jest “czysto”.

Ale przy okazji chciałem zapytać jak dużo roboty nam zostało do celu, czyli półautomatycznego aktualizowania tras komunikacji miejskiej w Warszawie na podstawie rozkładów ZTM? Podstawa to przystanki w sensie miejsca zatrzymywania pojazdu (miejsce oczekiwania nie jest do tego konieczne, choć oczywiście też warto mieć) - ile ich już mamy a ile jeszcze brakuje? Drugie zagadnienie to wydobywanie danych z rozkładów i skrypt do trasowania linii na ich podstawie.

O właśnie - jak ci idzie z poprawianiem i co z tą zapowiadaną w grudniu publikacją kodu?

To 523 na Łazienkowskim, które w końcu zrobiłeś, kłuje mnie w oczy - czy możesz zaktualizować jego trasę? Jeśli potrzeba jakichś przystanków do tego, to daj znać, chętnie je uzupełnię.

@kocio
Myślę, że problem to czas kolegi MARC12 :slight_smile: Ja też jestem za publikacją kodu, bo z jako taką instrukcją, każdy z nas mógłby pomóc.
Zobacz sobię na listę wygenerowaną z pomocą skryptu kolegi MARC12. Możesz pooznaczać w wolnej chwili :wink:
Główną przeszkodą w automatyzacji naszych tras będzie brak przystanków tymczasowych. A żeby je wprawadzić to trzeba się nieźle pobawić, bo w komunikatach ztmu często gęsto bardzo ogólnie jest opisana lokalizacja tych przystanków.
Kolejna sprawa to ilość tych przystanków, które pozostaną nam na mapie, a nie będą używane. Możnaby zrobić taki skrypt, który by sprawdzał czy przystanek tymczasowy jest w użyciu przez jakąkolwiek linię i jeżeli nie to po jakimśtam czasie usuwać je z OSM. Inaczej będzie ich sporo.

Na przełomie roku udało mi się lokalnie postawić opentripplanner z danymi z ztmu i osm. Jakość trasy wyglądała podobnie do Google Transit, też była prosta kreska od przystanku do przystanku(bo brak przebiegu geometrycznego w ułomnym gtfs’ie). Może nawet lekko gorzej bo w googlu jest ładny routing w metrze i tramwajach :slight_smile:

Pytanko do MARC12: Już dla wszystkich linii w aglomeracji aktualizujesz trasy? Czy są jeszcze jakieś problemy? Na jakiej podstawie twój skrypt dodaje platform do relacji? Na podstawie tagu ref=*, jak podejrzewam?

Mnie się też zawsze zdaje, że powinienem się jeszcze bardziej sprężyć :slight_smile: , ale to tylko złudzenie - na szczęście jest jeszcze społeczność i mogę się skupić na drobiazgach rzeczywiście najbardziej przyciągających moją uwagę. MARC12, jeśli chodzi tylko o czas “żeby to do ludzkiej postaci doprowadzić”, to nie daj się prosić i udostępnij to, co jest. nie czekając na ten mityczny moment!

O takie podsumowanie właśnie mi chodziło! Ej, no to jest nieźle - te kilkadziesiąt (na oko) brakujących punktów zatrzymywania to nie jest nic wielkiego, a punkty/obszary oczekiwania można spokojnie zostawić na potem.

A swoją drogą - czy to się regularnie robi gdzieś z tego skryptu, czy to jednorazowa akcja? I skąd to wytrzasnąłeś? No i skąd “przyst_06_03.html” - czyżby to obrazowało stan na dzień jutrzejszy? Wiem, mam dużo pytań jak coś mnie interesuje… :slight_smile:

Przydałoby się pewnie kilka takich skryptów diagnostycznych regularnie odpalanych (najlepiej po każdej nowej wersji rozkładów), bo przy tej ilości nikt ręcznie nie jest w stanie kontrolować wszystkich braków i problemów. W tym także monitorowanie ostatnich zmian, bo przecież nie cała sieć się zmienia codziennie i jak już z grubsza ją wyrysujemy, to potem pozostaje krytyczna analiza, czy wszystko w porządku i czy można przyklepać nową trasę do wrzucenia do naszej bazy (bo tak to sobie wyobrażam na razie - pewnie jeszcze przyjdzie czas na większą automatyzację).

Pewnie takie trasowanie to byłbyś w stanie nadrobić. :slight_smile:

I jak zabawa z nim? Obiecująco do rozwijania, czy tylko taki prosty dowód, że się da? Może też jakiś kod do udostępnienia? :slight_smile:

A w tym wygenerowanym spisie bardzo by mi się przydał znacznik (np. http://www.openstreetmap.org/?mlat=52.248670&mlon=21.044260&zoom=18), żeby łatwiej lokalizować gdzie niby ten przystanek ma być. Także kierunek, bo to pomaga szukać po właściwej stronie drogi - lub uznać, że to tylko przystanek postojowy, gdy kierunku brak.

Warto też zadbać o właściwe kodowanie pliterek, bo nie zawsze znam nazwę i nie wiadomo która to literka naprawdę.

No i wreszcie dziwne, bo część niby nieistniejących u nas przystanków już jest dodana (np. Cendrowice sam dodałeś, i to jeszcze w grudniu) - więc właściwie z kiedy ten pliczek jest? Szkoda mi czasu na samo sprawdzanie - tzn. ja tak sobie robię też, ale najpierw chciałbym wiedzieć, że trasowanie nam zadziała.

http://vps134914.ovh.net/wyszuk/openlayers.html - Tutaj aktualne zestawienie. 1. część pokazuje trasy które da się zaktualizować - weryfikuję poprawność trasy na mapie z prawej i uruchamiam inny skrypt wysyłający zmiany.
2. część to trasy błędne i jest napisane dlaczego nie da się wygenerować (Dla 523 brak BEMOWO-RATUSZ 60).
3. część to trasy poprawne. W zestawieniu w ogóle nie uwzględniam linii typu L ani SKM.

Teraz piszę wyszukiwarkę połączeń z wizualizacją tras “po ulicach” - tutaj jest to rozwijane: http://vps134914.ovh.net/wyszuk/wyszukiwarka1.html
Platformy dodaję na podstawie ref, ale tylko te w postaci node i way, te w postaci relation postaram się dodać.
Napisałem jeden ze skryptów analizujący linie autobusowe w aglomeracji poza drzewem relacji ZTM - ewidentne duble skasowałem. Można więc też zrobić skrypt usuwający niepotrzebne przystanki.
Sam kod wisi na githubie co podałem kiedyś pod gałęzią tested.

Bardziej mnie interesuje to zestawienie (bo to dane do warstwy transportu publicznego, która już istnieje). Moje uwagi tak na pierwszy rzut oka:

  1. Bardzo by się przydał jakiś klikalny spis treści z powodu bardzo dużej liczby linii

  2. Numery powinny się lepiej sortować (na razie jest np. “22, 222, 225, 227, 23” - pewnie wystarczy dwucyfrowe typu xx traktować jak trzycyfrowe typu 0xx)

  3. Występują nieprawidłowe błędy (pewnie wszystkie w trasach, które się daje wygenerować) - np. “300101 Jest w bazie ZTM, nie ma w bazie OSM”, choć taki punkt istnieje u nas (http://www.openstreetmap.org/node/334558953).

  4. Z rzeczy drobniejszych: trzeba będzie jakoś mu podpowiedzieć, żeby umiał korzystać z zawrotek na pętli (bo np. 174 na pętli Bokserska zawraca nagle o 180 stopni) - być może jeśli trasy się nie łączą ładnym łukiem, to algorytm powinien na krańcach uwzględniać najbliższą drogę serwisową (zwłaszcza jeśli ma w nazwie “pętla” :slight_smile: ), bo pętla zwykle z takich dróg się składa.

  5. “BEMOWO-RATUSZ 60” to śmieszny przykład przystanku tymczasowego, bo nie podali nawet przybliżonych koordynatów (gdzieś indziej z kolei wypadł na jakiejś zieleni, ale możliwe, że zdjęcie jest za stare i jest tam akurat jakaś droga)… Być może do takich rzeczy warto zrobić jakiś permanentny quest dla mapowiczów, żeby zobaczyli w terenie, albo nawiązać kontakt z ZTM, bo skoro tak ładnie udostępnili rozkłady, to może są rzeczywiście kontaktowi?

Jest w bazie ZTM, nie ma w bazie OSM oznacza, że nie ma tego przystanku w relacji danej linii a nie w ogóle w bazie OSM.

Możesz sobie sam skompilować z kodu kolegi. :wink: Nazwa taka, bo dane z ztmu były po prostu z “jutra”.

Oj…mogłem coś nie tak zrobić przy tworzeniu pliku :confused: Zobaczę, może miałem starą bazę przystanków z osm.

Raczej dowód, że się da. Dałoby radę wycisnąć więcej, ale GTFS ma sporo wad. A i tak widzę, że MARC12 już na niezłym poziomie zaawansowania jest, więc raczej nie miałoby to już sensu :smiley:
Ale jakbyś chciał obejrzeć to masz screeny:
http://s11.postimg.org/3uhq4yn03/image.png
Z routingiem rowerowym
I taka ciekawostka-routing do P&R:
http://s11.postimg.org/9u5h8m7sj/pr1.png
http://s11.postimg.org/kr6sxduk3/pr2.png
I kod na githubie: https://github.com/javnik36/ZTMtoGTFS

Jakiś mapowicz, który będzie jeździł autobusami, które mają pozmieniane trasy i klikał pkty na gpsie :wink: Byłoby prościej, jakby było lekko większe zainteresowanie projektem(które znów takie małe nie jest :wink: ) A jeśli chodzi o przystanki to dla mnie byłoby ok, gdyby skrypt rzucałby listę braków mailem lub innym kanałem do iluśtam osób, żeby można to ogarnąć.

Widząc te linki też się rozochociłem :slight_smile: Już w tej chwili wygląda to ładnie i jest już bardziej używalne niż Google. Jak przetwarzasz dane rozkładowe do celu trasowania? Wrzucasz w jakąś bazę danych? Jeszcze pytanie nt. tej relacji. Cośtam się sknociło, bo usunęła się część trasy po moście(w drugim kierunku jest ok). Pytanie dlaczego trasa w tym routingu (też dla 2ki w kierunku młocin) nagle straciła powiązanie z szynami? Routing jest wyznaczany “na żywo” czy może z relacji osm?

Co do dwójki to nie mam pojęcia dlaczego tak jest, muszę sprawdzić ten przypadek :expressionless:
Dane do trasowania wrzucam do bazy danych na podstawie relacji osm, tutaj plik ze wszystkimi ścieżkami: http://vps134914.ovh.net/wyszuk/sciezka.tar.gz (kolejność: ref-start, ref-stop, numer kolejny na ścieżce między ref-start i ref-stop, współrzędne pośredniego punktu).

http://www.ztm.waw.pl/zmiany.php?c=102&i=6045&l=1 - garść zmian (w szczególności przystankowych) z okazji otwarcia II linii metra.

Ja z kolei do generowania listy przystanków korzystam z tego skryptu (napisał o nim w tym wątku marimil kilka miesięcy temu):

http://osmapa.pl/w/komunikacja/ztm_wwa.pl

i dzięki temu błyskawicznie mam spis przystanków z linkami do mapy i z wyświetlaniem czerwonego znacznika pozycji, co bardzo pomaga w lokalizacji takich małych obiektów.

No, to zasadniczo widzę, że jest kilka sensownych narzędzi, tylko brakuje w nich jeszcze spójności i doszlifowania z punktu widzenia użytkownika (np. nie wiadomo jak wyklikać plik *.osm na Overpass Turbo i tego typu rzeczy).

W związku z tym proponuję zrobić roboczy projekt na Wiki (http://wiki.openstreetmap.org/wiki/WikiProject_Poland) dotyczący komunikacji publicznej i tam zebrać podstawowe informacje, linki do skryptów i danych oraz przydatne przykłady, żeby to wszystko było w jednym miejscu. Dla naszej wygody i orientacji, ale też i dla innych miast/aglomeracji, które z pewnością też kiedyś będą miały dostęp do swoich rozkładów.

Z tego też powodu docelowo zależy mi na dostosowaniu naszych narzędzi do obróbki GTFS, a nie bezpośrednio danych warszawskiego ZTM-u, bo pewnie każdy zakład komunikacji będzie udostępniał w swoim własnym formacie, a jeśli się uda trzymać tego standardu, to potem wystarczy tylko robić kolejne konwertery do GTFS zamiast przerabiać wszystkie skrypty. Oczywiście jeśli GTFS nie jest jakoś zasadniczo gorszy…

@kocio
Masz na myśli robienie całej obróbki np. związanej z błędami/brakami i innymi takimi na podstawie gtfs’a? Czy tylko o usługę, którą MARC12 tworzy?

Dla mnie największym bólem w gtfs było wygenerowanie pliku shapes, który był dla mnie zbyt skomplikowany do wygenerowania. Przy lekkich modyfikacjach pewnie z programu MARC12 dałoby radę nawet bezboleśnie coś takiego stworzyć. Wtedy możnaby postawić OpenTripPlanner, tak tymczasowo, a już jak wyrośnie nam własny serwis, utrzymywać tylko jeden serwis.

Wiki-jak najbardziej, tylko jak na razie sporo mamy przykładów tylko działających dla W-wy, więc może na razie tylko w warszawkiej wiki?

EDIT: Jeszcze pytanko: macie jakiś pomysł jak oznaczyć warszawskie POPy, bo zdaje się, że zbyt dużo to ich w osm nie mamy, a chętnie bym je wprowadził?

Moim zdaniem wszystko, co się da, ale to tylko ogólna postawa w kierunku standaryzacji, bo w praktyce może się to czasem okazać overkill. Z drugiej strony nawet ZTM może kiedyś zmienić format - nawet bez ostrzeżenia i zdania racji - i na dłuższą metę lepiej się z tym liczyć, a otwiera nam to też możliwość robienia uniwersalnych narzędzi dla całego OSM, co by było super moim zdaniem.

O, to też miła perspektywa.

Proponuję już myśleć do przodu, a sekcja w wikiprojekcie jest chyba wystarczająco czytelna. Założyłem podstawową stronę projektu:

http://wiki.openstreetmap.org/wiki/WikiProject_Poland/Komunikacja_publiczna

Jeśli będzie potrzebna większa koordynacja, to się rozrośnie, ale nawet takie proste linkowisko powinno być już użyteczne.

A co to jest za skrót? W tym kontekście jakoś się nie mogę domyślić…

Na dobranoc zrobiłem ręcznie - a przydałoby się automatycznie przy okazji odświeżania tras - listę przystanków, które blokują wyznaczenie trasy. Po usunięciu duplikatów (bo zwykle na danym przystanku zatrzymuje się kilka linii) jest ich naprawdę garstka i na upartego jeden ambitny mapowicz może je oblecieć w dzień wolny. :slight_smile:

Te trzeba pewnie dorysować (większość jest tymczasowa):

BARSZCZEWSKA 607981 brak STOP_POSITION
BEMOWO-RATUSZ 503460 brak STOP_POSITION
DOBOSZA 433802 brak STOP_POSITION
DYWIZJONU_303 507757 brak STOP_POSITION
DYWIZJONU_303 507758 brak STOP_POSITION
GEN.MACZKA 612951 brak STOP_POSITION
GEN.MACZKA 612952 brak STOP_POSITION
ZAUŁEK 120453 brak STOP_POSITION

Natomiast te:

CM.WŁOSKI 601402 STOP_POSITION nie leży na drodze
PRZY_AGORZE 601302 STOP_POSITION nie leży na drodze
UKSW 601102 STOP_POSITION nie leży na drodze

są pewnie na remontowanych odcinkach dróg. Pytanie dlaczego wobec tego są na rozkładzie - czyżby tymczasowo zmieniły położenie nie zmieniając numerka? To jest jeszcze do sprawdzenia.

EDIT: pochylone udało mi się już załatwić:

CENTRUM_MODY 415052 brak STOP_POSITION
KONSTRUKTORSKA 324156 brak STOP_POSITION
OS.POTOK 613302 brak STOP_POSITION
OS.POTOK 613351 brak STOP_POSITION
WOŁOSKA 323956 brak STOP_POSITION
RONDO_“RADOSŁAWA” 709101 STOP_POSITION nie leży na drodze