OpenStreetMap

Wprowadzenie

Stworzyłem stronę https://starsep.com/osm-wtp/. Można na niej znaleźć porównanie danych OpenStreetMap transportu publicznego aglomeracji warszawskiej z danymi Warszawskiego Transportu Publicznego. Głównym celem jest możliwość łatwego znalezienia błędów oraz brakujących danych. Porównuję dla każdego wariantu linii listę przystanków. Dodatkowo znajdowana jest część błędów związanych z tagowaniem w OpenStreetMap.

Treść strony

Na górze znajduje się lista linii. Dla linii z błędem wyświetla się link z ❌.

lines

Dla linii z błędami wyświetlone są tabelki porównujące nazwy i numery przystanków z OSM i WTP. Kolory oznaczają, co należy zrobić w OSM, aby doprowadzić do stanu z WTP: zielony dodać przystanki, czerwony usunąć, pomarańczowy zmienić. W nagłówku są przydatne linki.

error

Na dole strony można znaleźć inne błędy oraz statystyki generowania.

Dane

Dla każdej relacji type=route dodałem tag url do strony WTP z rozkładem tego wariantu linii.

Przykładowy link: https://wtp.waw.pl/rozklady-jazdy/?wtp_md=3&wtp_ln=166&wtp_dr=A&wtp_vr=1

Argumenty:

  • wtp_md=3 oznacza rozkład z listą przystanków
  • wtp_ln=166 to numer linii 166
  • wtp_dr=A to kierunek linii A/B
  • wtp_vr=1 to numer wariantu linii w danym kierunku. Na stronie są one oznaczone literami A/B

Do porównania listy przystanków wykorzystywane są numery przystanków (tag ref). W WTP numery przystanków mają sześć cyfr, gdzie pierwsze cztery oznaczają numer zespołu przystanków, a dwie ostatnie numer przystanku w zespole. Dodatkowo wyświetlane są nazwy (tag name).

Problemem był brak linku do ostatniego przystanku na stronie WTP. Wyświetla się tylko nazwa, a nie są one unikalne w aglomeracji warszawskiej.

Inne narzędzia

Aglomeracja warszawska jest skonfigurowana w PTNA Public Transport Network Analysis. Dobrym źródłem jest GTFS Warsaw, który też można znaleźć w powyższym narzędziu. Jest także sporo narzędzi Quality Assurance, które znajdują błędy w relacjach transportu publicznego.

Szczegóły techniczne

  • Strona jest hostowana za pomocą GitHub Pages.
  • Kod można znaleźć na GitHubie.
  • Wygenerowany HTML jest w osobnym repozytorium.
  • Skrypt jest zaimplementowany w Pythonie.
  • Ze względu na wydajność używam PyPy 3.9.
  • HTML generowany jest za pomocą Jinja2.
  • Używam styli SimpleCSS. Pozwalają na generowanie prostego HTMLa i wspierają jasny/ciemny motyw bez JavaScriptu.
  • Generowanie uruchamiam za pomocą GitHub Actions. Chwilowo jest to 3 razy na dobę wieczorem. Mogę też uruchomić ręcznie z komputera lub na GitHubie.
  • Dane z WTP (chwilowo HTML stron) są cache’owane. Dzięki temu kolejne uruchomienia danej doby są już dużo szybsze.
  • Dane OpenStreetMap pobierane są z Overpassa z relacji komunikacji WTP.

Plany na przyszłość

  1. Naprawić dane w OSM dzięki temu narzędziu.
  2. Zrobić refaktor kodu. Aktualnie jest to skrypt bez sensownego podziału na funkcje i bez testów.
  3. (być może) Testy poprawności geometrii relacji m. in. czy punkty zatrzymań są częściami odcinków dróg, spójność geometrii, czy platformy są po prawej stronie. Takie testy robią inne narzędzia.
  4. To podejście może dać się zastosować dla innych miast.

Ten artykuł można też znaleźć na https://starsep.com/pl/posts/osm-wtp/

Discussion

Comment from Mateusz Konieczny on 7 January 2023 at 20:04

Propozycja: listuj te OK w osobnej liści na końcu by nie mieć ekranów “1 jest OK” itd.

W https://matkoniecz.github.io/OSM-wikipedia-tag-validator-reports/ to fajnie działa.

Może https://starsep.com/osm-wtp/ by mogło stronę na githubie linkować?

Comment from starsep on 7 January 2023 at 20:07

Dzięki za propozycje. Obie rozważałem, ale w końcu nigdy nie zrobiłem. Wkrótce poprawię :)

Comment from Tetryk on 12 February 2023 at 11:29

Czy istnieje możliwość dodania do tej strony spisu w sieci ZTM Warszawa relacji type=public_transport, public_transport=stop_area z uzgodnieniem linku do WTP?

Comment from starsep on 12 February 2023 at 11:44

Czy chodzi o zespół przystankowy np. https://wtp.waw.pl/rozklady-jazdy/?wtp_md=4&wtp_st=7013? Chwilowo nie planuję dodać takiej funkcjonalności, ale rozważę w przyszłości. Nie widzę jakieś szczególnego priorytetu na tę chwilę, sporo jest jeszcze do poprawienia/zmaporawnia :). Wiem, że stop_area_group jest używane przez Organic Maps dla przesiadek. Nie wiem na ile relacje stop_area są przydatne w praktyce.

Aby nie zapomnieć dodałem https://github.com/starsep/osm-wtp-compare/issues/1

Comment from Tetryk on 12 February 2023 at 17:10

Dokładnie o to mi chodziło. Dzięki.

Comment from Tetryk on 17 February 2023 at 09:18

Zauważyłem, że warianty trasy na stronie WTP są też wyświetlane z innym parametrem w linku strony. Oprócz tego wtp_vr dla tras A, B, C, jest też parametr wtp_vi ale niestety z nazwami własnymi (np TX-PIA dla trasy skróconej do pętli Piaski). Najczęściej są tam trasy zjazdów do zajezdni (dla tramwajów), ale nie tylko. Nie wiem jak to wykorzystać, ale chciałem pokazać dodatkową komplikację dla weryfikacji tras.

Comment from starsep on 17 February 2023 at 10:16

Ciekawe, dzięki! Nie wiedziałem, że są one dostępne przez stronę WTP. Podejrzewam, że to dla pracowników, nie pasażerów. Te trasy są też dostępne w GTFS.

Comment from Tetryk on 17 February 2023 at 12:19

Te szczególne trasy są też dostępne dla pasażerów ale trzeba kliknąć w tabelce rozkładu jazdy na konkretny odjazd oznaczony literką z tą nietypową trasą.

Log in to leave a comment