Warszawa - komunikacja miejska

Zibi poleca filtry w JOSM.

Za pomocą skryptu i zautomatyzowanej weryfikacji udało mi się dodać tag “ref” do większości dotychczas nazwanych przystanków.
http://www.openstreetmap.org/changeset/24844738
Mapa przystanków z tagiem ref:
http://overpass-turbo.eu/s/4Dg
…i bez:
http://overpass-turbo.eu/s/4Dc

Myślę, że głównym problemem jest brak punktów public_transport=stop_position osadzonych na drodze. Dzięki nim można łatwo tworzyć relacje linii autobusowych (przy pomocy routingu).

public_transport=stop_position dodawałem ręcznie, tylko nie dojechałem do końca, ale (bez pośpiechu) zamierzam to kontynuować. Tym bardziej, że korygowałem przy okazji pozycje przystanków (czasem GPS z ZTM się przydawał do tego, zwłaszcza, jeśli w zespole jest kilka przystanków blisko siebie) i co grubsze błędy w okolicy.

Czyli rozumiem, że bez refu zostały tylko nienazwane?

A ten skrypt można gdzieś zobaczyć? Takie narzędzia warto mieć pod ręką na przyszłość.

Wooow…dobra robota! Fajnie, że się przyłączyłeś do tematu :slight_smile:

To prawda. Jak robiłem to ręcznie to starałem się dodawać public_transport=platform, no i oczywiście stop_position. Teraz można byłoby dodać hurtowo tagi network=* i operator=* ale to już na szczęście prostsze trochę :wink:

No i te, których nie ma :wink:
Teraz chętnie zobaczyłbym jakiś skrypt, który pokaże ile przystanków nam jeszcze brakuje do dodania…

“Skrypt”, który zrobiłem do dodania refów to zbiór kilku plików wykonywalnych napisanych w C++. Szczerze mówiąc - jest brzydko napisany, ale postaram się go doprowadzić do zdatnej do publikacji wersji.
Skrypt działa następująco: dla każdego bus_stop/tram_stop/stop_position bez refa wyświetla najbliższe przystanki z bazy ZTM. Ręcznie wskazuję który przystanek z bazy OSM odpowiada przystankowi z bazy ZTM (wybieram odpowiadające sobie nazwy). Potem wszystko leci do bazy przez specjalnie stworzonego klienta OSM API. Bez refów zostały przystanki nazwane źle (na przykład “Gocław” zamiast “Gocław 09”) czy przystanki bez współrzędnych w bazie ZTM.

Tutaj plik HTML (trzeba pobrać i otworzyć w przeglądarce) z kompleksowym zestawieniem i bezpośrednimi linkami do punktów:
https://drive.google.com/file/d/0B4srO7vPCZeiVXZleG9OMlZwU0U/edit?usp=sharing

Jak rozumiem to w pierwszej kolumnie jest wskazywany istniejący bus/tram_stop, w drugiej istniejący stop_position, a jak nie ma nic to w 3 kolumnie jest info? Jest to dość czytelne, ale wolę się upewnić :stuck_out_tongue: Teraz widać, gdzie czego brakuje…i można zacząć dodawać stop_position :wink:

Jeszcze możnaby podobną rzecz dla platform porobić, bo one chyba też mają dostawać ref, prawda?

Edit: A skąd błąd/błędy? Np. Borzęcin Mały 01, a w Twoim htmlu, brak otagowania…?

Nawet niezbyt piękny kod warto udostępnić, bo może się przydać - to znaczy jak chcesz to go trochę podrasuj najpierw, ale jeśli ma to być przeszkoda w publikacji, to nie warto o to kopii kruszyć (tak, reprezentuję “szkołę Linusa” :slight_smile: ). Pewnie na githuba możesz wrzucić, bo to fajna, zintegrowana i popularna platforma.

Szczególnie że często zdarza się “tego kodu nie opublikuje bo brzydki, poczekajcie aż poprawię” a potem nie ma ani ładnego ani brzydkiego. Sam już tak kilka razy zrobiłem, lepiej wrzucać co jest a potem też poprawioną wersję.

Dokładnie.

W HTML-u uwzględnione są tylko dane OSM dla Warszawy, ale postaram się naprawić i podmienię plik.

Edit: podmienione, liczba przystanków w trzeciej kolumnie spadła z 900 do 480.

Edit2: Tu link do github z generatorem tego html: https://github.com/mar5991/ztmtoosm/

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.