Warszawa - komunikacja miejska

OSM nie jest przystosowane do dodawania rozkładów jazdy i nigdy nie będzie (chyba, że nowe api) każdy autobus musiłby być osobną relacją na jednej trasie, zaś przystanki miałyby rolę godziny odjazdu. Uważasz, że nie zrobiłby się burdel? Ciężko się zarządza 5 relacjami na jednej drodze, a dodaj sobie do tego 5 tras4 autobusy na godzinę24h Bosko!

Jestem za reaktywacją Transiki! Źródła czekają, a to może być fajny projekt dla Polski :slight_smile:

Zapewne sporo by ułatwiło, gdyby ZTM udostęnił oficjalnie dane nie w htmlu a w jakimś łatwo parsowalnym formacie. W roku 2000 pisałem do nich, ale to pozostało bez odpowiedzi. Teraz są inne czasy, może stowarzyszenie zwróciłoby się do nich z prośbą? Jeśli działają i są przez nich jakoś wspierane serwisy typu jakdojade, to może techniczniei organizacyjnie są już gotowi na udostępnianie danych w innych formatach?

Właśnie wgryzam się w konstruowanie modeli S3DB, więc mam bardzo dobrą analogie: myślisz, że OSM jest dostosowane do 3D? To też jest rzeźbienie w miękkim i brązowym. Wyobraź sobie kilka warstw z częściowo pokrywającymi się krawędziami, przypisane do relacji typu “budynek”, gdzie w dodatku nie ma jak zdefiniować pochyłych ścian ani wypukłości i wgłębień gruntu, a to wszystko edytuje się narzędziami 2D typu JOSM…

Ale mnie to nie dziwi, bo tak właśnie się rozwijają zdrowe projekty społecznościowe: najpierw się robi coś bardzo prostego, co z grubsza działa, to przyciąga kolejnych ludzi, którzy to cyzelują, a w miarę pojawiania się kolejnych pomysłów szuka się sposobu, jak obejść ograniczenia pierwotnego modelu, i czasem (oczywiście nie zawsze i często etapami) kończy się to jego sporą przebudową.

Ja w sumie też, tzn. bardzo bym chciał przynajmniej zobaczyć, czy taki projekt się po prostu sprawdzi. Ale ponieważ nie widzę chętnych, to (pragmatycznie) na razie nie liczę na jego powstanie i koncentruję się na OSM, jak ograniczone by ono nie było.

Baza przecież może być powiązana z OSM. będę miał chwilę to pokażę jak to może wyglądać. Tu nie chodzi o to, że się nie da, ale gdy zrobi się zbyt duży burdel to będziemy bać się wprowadzać nowych mapowiczów, że coś zniszczą.

Aby pokazać, że tabliczki z odjazdami można fajnie zintegrować z OSM napisałem prostą stronkę.
http://osm.zz.mu/?relation=0&submit=OK

Nie ma tu żadnych danych oprócz tych przykładowych.
Jedna tabela to Trasy, w której są 2 pola id i osmId. OsmId reprezentuje id relacji w OSM. Każda trasa to jeden przejazd autobusu.

Druga tabela to przystanki. Posiada pola id, traceId, osmId, time1, time2, no. osmId to id przystanku w OSM. time1, time2 to czas przyjazdu i odjazdu oraz no reprezentuje kolejny numer przystanku aby posortować zatrzymania autobusu.

Z takiej bazy można spokojnie wyciągnąć kiedy dojedziemy na miejsce X jeśli wyjedziemy o godzinie Y. Można spokojnie zbudować tablicę odjazdów na podstawie id przystanku. gdyby się uprzeć to nawet routing na tym można zbudować na podobnej zasadzie jak na stronie jakdojade.pl

Jeśli byłoby zainteresowanie kilku osób to mozna pomyśleć nad tą stroną. Bo napisanie czegoś takiego to pewnie 2 dni roboty.

Struktury danych są bardziej złożone. Tu przykładowy rozkład jazdy (z fragmentem trasy, który jest wspólny dla obu kierunków): http://mb.waw.pl/inne/rozklad.png
A są bardziej pokopane trasy.

@koszatek:
Ogromne dzięki za pokazanie problemu z ZTM! No to wygląda mi na to, że naszych dyskusji nad częstością aktualizacji nie warto zamykać zanim się nie dowiemy jak obecnie ZTM się zachowuje i nawet powołanie Transiki nie załatwiłoby sprawy. Czy mógłbyś się przyjrzeć, czy teraz jest z ich rozkładami lepiej/gorzej/bez zmian. Byłoby super, gdybyś podrzucił jakieś ogólne statystyki ilu linii (i ew. których) dotyczą problemy ze swobodnymi opisami, weekendowe znikanie, wielowariantowe trasy, ogłaszanie w dziwnych momentach itp. To by nam dało orientację gdzie trzeba będzie kombinować i jak bardzo. Co do prośby o dostęp do dobrze parsowalnych danych z ZTM to myślę, że po kilkunastu latach warto znów spróbować. Stowarzyszenie może być tu dobrym wsparciem, ale sądzę, że tylko formalnym, tzn. napisz gotowe pismo i daj im znać, że takie chcesz oficjalnie puścić w imieniu stowarzyszenia.

Tak sobie myślę, że ciekawe jakie są doświadczenia innych miast w Polsce i na świecie z mapowaniem komunikacji publicznej, a zwłaszcza jak sobie radzą z kapryśnymi rozkładami jazdy. Macie pomysł kogo podpytać?

No tak ogólnie to też mozna załatwić pewnymi tagami, ale jeśli byłaby potrzeba stworzenia nawet od nowa takiego serwisu w stylu transiki to damy radę. Pytanie czy znajdą się ludzie, którzy będą to wszystko aktualizować. :confused:

No, wszystko da się zrobić, tylko niekiedy potrzeba trochę czasu. Na pewno więcej niż 2 dni.
Pomału próbuję ożywić moje stare skrypty, żeby zorientować się jak to teraz wygląda. Za tydzień powinienem już się orientować, jak to teraz wygląda, czy doszły jakieś nowe anomalie.
Przypomniała mi się jeszcze jedna stara historia, to już na 100% nieaktualne, ale też trochę krwi napsuło: mianowicie w prawie każdej paczce trafiały się uszkodzenia paru plików, jakby ktoś lub coś pozmieniało losowe bajty. I np. w efekcie programowi nie zgadzała się nazwa zespołu przystanków, bo dla komputera POWĄ@KOWSKA to nie to samo co POWĄZKOWSKA. Trzeba było robić kontrole zgodności, ale żeby było śmieszniej, to nazwy zespołów czasem naprawdę się zmieniały, więc musiałem napisać mechanizm zatwierdzania takiej faktycznej zmiany do bazy.

Spokojnie, nie spieszy się. :slight_smile: Lepiej to zrobić od razu systemowo i porządnie. Masz unikalne doświadczenie, idealne do zaplanowania prac nad warszawskim zbiorkomem, więc bardzo chętnie posłucham twoich uwag i oceny sytuacji.

Położenie przystanków z nazwami na terenie Warszawy jest na portalu http://www.mapa.um.warszawa.pl/ z adnotacją, że dane pochodzą z BGiK. Jeśli punkty adresowe zostały uznane za informację publiczną i można je było zaimportować do OSM, to może podobnie można będzie zrobić z przystankami?

I jak, udało ci się z grubsza zorientować, czy potrzeba więcej czasu? Jeśli tak to powiedz ile mniej więcej, bo chciałbym trzymać rękę na pulsie.

Na razie zauważyłem 1 nowe “dziwactwo”: trasa tworząca w pewnym miejscu pętelkę tzn. zalicza najpierw pewien przystanek na trasie, a potem wraca do niego jeszcze raz tą samą ulicą i tam kończy bieg (odcinek ulicy i przystanek powinny być w relacji 2 razy).
Zmieniły się pewne formaty informacji o trasie (inne znaczki niż były).
Reszta( jeśli chodzi o same trasy, bo z rozkładami gorzej) jest do ogarnięcia, w ciągu kilku dni powinienem zrobić uaktualniony parser tras.

Nawet nie zauważyłem, jak zleciał cały miesiąc! Udało ci się coś jeszcze? A przede wszystkim - jak po tym czasie oceniasz perspektywy?

W ramach odpoczynku siadłem sobie do stworzenia parsera, który by do pliku tekstowego zapisywał przystanki, numery Id…i inne ze strony ztmu (Nie jestem żadnym programistą, ale cośtam, czasem się bawię w pythonie).
Cały szczęśliwy po skończeniu ‘pracy’ wchodzę sobie na stronę ztmu, tak żeby sobie przejrzeć :slight_smile:

I tu patrzę, że w sekcji rozkłady jazdy >> do pobrania ztm udostępnia wszystko co nam potrzeba. (nie wiem jak długo to już tam wisi, ale pewnie od paru miesięcy)
Tak więc, na serwerze ftp ztmu są spakowane na każdy dzień pliki tekstowe zawierające rozkłady jazdy, wszystkie przystanki wraz z koordynatami GPS, trasy i…tutaj jest wszystko opisane.

Nic tylko wyciągać te dane i wprost na mapy!
Tylko potrzeb kompetentych, którzy znają się i umieją takie rzeczy pisać…i oczywiście mają czas :slight_smile:
Niby wszystko ładnie, tylko to nie takie proste taki parser zrobić :confused: …niestety

Bardzo się czuję zadowolony! Nie dość, że są dane, to - z tego co zrozumiałem - jest udzielona licencja na powszechne stosowanie, opis formatu i nawet określone dobre praktyki.

W tej sytuacji jest to robota mniej lub bardziej automatyczna. Jeśli coś trzeba ręcznie, to postaram się tym zająć, choć podejrzewam, że priorytetem na razie będzie naniesienie wszystkich przystanków, bo trasy między nimi można potem prowadzić jakimkolwiek routingiem (jak już pisałem - zasadniczo nie jest ważne którym dokładnie pasem jedzie autobus od punktu do punktu, tylko chodzi o wygenerowanie “wyobrażenia” ciągłej trasy pomiędzy przystankami).

Pomysł udostępnienia danych świetny, tylko ten format… mogli się postarać o jakiś xml, no ale dobre i to.
Trzeba by napisać parser do tego, ja ostatnio pisałem parser do plików tras, ale do tego trzeba będzie od nowa.

Zabrałem się metodycznie za oznakowywanie przystanków - jadę zespołami po kolei według numeracji i uzupełniam unikalne identyfikatory ZTM po prostu jako “ref” (z opisu tagu zrozumiałem, że to idealnie pasuje). Generalnie idzie prosto, choć gdy nie wszystkie przystanki były zaznaczone, to przy dużych zespołach miałem kłopoty, bo przy zagęszczeniu przystanków i częściowo zaznaczonych przystankach dane z GPS-u nie wystarczają mi, żeby wszystko wyprostować. Jeśli ktoś może sprawdzić i ew. poprawić zespoły “Pl. Hallera” i “Dworzec Wschodni (Kijowska)”, to byłbym wdzięczny.

Nazw nie poprawiam ze wzorca ZTM, bo te ichnie nazwy - pewnie ze względów technicznych - nie mają spacji po kropce i stosują różne dziwne skróty czasem, a jak będziemy mieć dodane unikalne identyfikatory, to i tak będzie dokładnie można skojarzyć.

Jest jednak problem ujednolicania: niektóre przystanki są zaznaczane na drodze (dodaję tam tag “public_transport=stop_position”), inne jako punkty obok drogi, a bywają nawet podwójne, tzn. i na drodze i obok niej. Pytanie wobec tego, do których należy dodawać ref i jak docelowo mają wyglądać przystanki?

Pozwoliłem sobie przygotować schemat mapowania dla komunikacji miejskiej. Tak by każdy wiedział jak poprawnie mapować. Oczywiście jest to tylko propozycja, którą trzeba przeanalizować i ewentualnie poprawić.
Sądzę że taki lub podobny schemat trzeba przygotować i dodawać adres do niego jako tag do wszystkich elementów komunikacji miejskiej.

Punkt na drodze: (http://wiki.openstreetmap.org/wiki/Pl:Key:public_transport)
public_transport:stop_position
bus:yes lub/i tram=yes
name:Przystanek 01
ref:******(6 cyfrowy numer ZTM)(ftp://rozklady.ztm.waw.pl/)
network:ZTM Warszawa
opcjonalnie:
operator:Zarząd Transportu Miejskiego w Warszawie

Przystanek(chodnik przy drodze) jako punkt: (http://wiki.openstreetmap.org/wiki/Pl:Key:public_transport)
public_transport:platform
name:Przystanek 01
ref:******(6 cyfrowy numer ZTM)(ftp://rozklady.ztm.waw.pl/)
network:ZTM Warszawa
opcjonalnie:
Lepiej jako droga, najlepiej jako obszar.
area:yes
operator:Zarząd Transportu Miejskiego w Warszawie
shelter:yes/no
bench:yes/no
covered:yes/no
lit:yes/no
tactile_paving:yes/no
layer:x

Opcjonalnie mapujemy wszystko co znajduje się w obszarze przystanku:
highway:street_lamp,
highway:footway,
amenity:shelter(shelter_type:public_transport, building:yes, bench:yes/no),
amenity:bench,
amenity:waste_basket,
barrier:fence/bollard,
amenity:vending_machine (vending:public_transport_tickets),
amenity:grit_bin

Relacja zespołów przystanków: (http://wiki.openstreetmap.org/wiki/Pl:Tag:public_transport%3Dstop_area)
type:public_transport
public_transport:stop_area
name:Przystanek
ref:****(4 cyfrowy numer ZTM)(ftp://rozklady.ztm.waw.pl/)
network:ZTM Warszawa
opcjonalnie:
operator:Zarząd Transportu Miejskiego w Warszawie

członkowie:(W kolejności jak poniżej dla każdego przystanku: Przystanek 01 , członkowie 01, Przystanek 02, członkowie 02, …)
stop_position (punkt na drodze) jako stop
platform (Przystanek) jako platform
station (Jeśli takowy istnieje) jako (pole puste)
opcjonalnie:
amenity jako (pole puste)

Uporządkowanie relacji tras autobusów w super relacji:
[Linie Autobusowe]
<>[Linie zwykłe (100-299)]
<><>[Bus 100] jako route_master
<><><>[Bus 100: Przystanek Początkowy => Przystanek Końcowy] jako route (Bus [numer linii]: [pierwszy przystanek w rozkładzie] => [ostatni przystanek w rozkładzie])
<><><>[Bus 100: Przystanek Końcowy => Przystanek Początkowy] jako route

Dla [Bus 100: Przystanek Początkowy => Przystanek Końcowy] relacja jako route
name:Bus 100: Przystanek Początkowy => Przystanek Końcowy
route:bus/tram
type:route
network:ZTM Warszawa
ref:100
from:Przystanek Początkowy
to:Przystanek Końcowy

Członkowie:
Przystanek Początkowy (public_transport:platform) jako stop_entry_only
Kolejne Przystanki (public_transport:platform) jako stop
Przystanek Końcowy (public_transport:platform) jako stop_exit_only
Przystanek Początkowy (public_transport:stop_position) jako stop
kolejne odcinki drogi uporządkowane kolejno jako (pole puste)
Kolejne Przystanki (public_transport:stop_position) jako stop
kolejne odcinki drogi uporządkowane kolejno jako (pole puste)
Przystanek Końcowy (public_transport:stop_position) jako stop

Dla [Bus 100] jako route_master
name:Bus 100
type:route_master
route_master:bus
network:ZTM Warszawa
ref:100

Członkowie:
[Bus 100: Przystanek Początkowy => Przystanek Końcowy] jako (pole puste)
[Bus 100: Przystanek Końcowy => Przystanek Początkowy] jako (pole puste)

Dzięki za solidną propozycję! Rozumiem z tego, żeby ref dodawać do obu typów (i na drodze, i jako “peron”). Mam tylko wątpliwości co do proponowanej relacji przystanków - relacja zespołu przystanków ma zawierać od razu wszystkie poszczególne elementy, czy może osobna relacja będzie wiązać platformę z punktem na drodze i ew. obiektami typu budka? Bo - tak patrząc obiektami - najpierw bym powiązał w jeden obiekt (relację) cały jeden przystanek, a dopiero taki kompleksowy obiekt umieszczał w relacji zespołu przystanków. Nie wiem, czy to jasne i czy byłoby użyteczne?

A może jakiś konkretny zespół warto opracować wzorcowo, tzn. ze wszystkimi znacznikami? Ja na razie planuję dodawać refy do końca, a to jeszcze chyba kupa roboty, ale może komuś innemu by się chciało.