Warszawa - komunikacja miejska

@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.

Nom, nom…ładnie :slight_smile:
A co robimy z tagiem towards=, który jest zapisany na w-skiej osm wiki? Stosujemy go dalej czy darujemy sobie? Bo z route_ref= to szkoda czasu…

Może czas zrobić update wiki? Chociażby dla nas, żeby tego wątku nie kartkować?

Za! To wytypujmy jakiś i go ładnie wspólnie odpicujemy :slight_smile:

Możesz zostawić Białołękę…zajmę się nią w wolnym czasie :slight_smile: Potem zacznę grzebać gdzieś indziej…

Ovarpass poglądowy (tam gdzie przystanki mają ref)

Wydaje mi się, że to rozwiązanie jest dobre (z paroma zastrzeżeniami - poniżej). Ja, wzorując się na przytoczonych źródłach, przygotowałem kiedyś zespół przystanków Al. Zieleniecka, więc mógłby on nam posłużyć jako przykład wzorcowy (po uwzględnieniu numerów ZTM). Tworzenie wielu relacji (oddzielnie dla przystanku i zespołu przystanków) wydaje mi się bezcelowe, bo nie wniesie zbyt dużo do bazy, a doda więcej pracy do przygotowania przystanków.

moje uwagi są takie:

  1. do punktów na drodze lub do platform dobrze dodawać standardowo tag highway=bus lub railway=tram_stop, jako że dużo rendererów (w tym Mapnik) nie uwzględnia póki co tagów public_transport (analogicznie dodawać wpisy highway=platform i railway=platform obok public_transport=platform).
  1. pobliskie obiekty można mapować, ale te elementy, zwłaszcza np. highway=footway trudno mi sobie wyobrazić, aby stały się częścią relacji przystanku. No i szczególnie razi mnie building=yes dodawane do wiat; building jest tagiem typowym dla budynków, a wiata jest budowlą, co dla mnie jako geodety jest różnicą fundamentalną :wink:
  1. nie wiem czy w relacji trasy jest sens wykazywać platformy (zwłaszcza, że chyba nie istnieją narzędzia do sprawdzania poprawności tras, które dopuszczają obiekty niepołączone z główną trasą), ale jeśli je oznakowywać, to z rolą nie stop, ale platform.

W języku ZTM-u nie występuje słowo “Białołęka”. :slight_smile: Zespoły są numerowane wedle nieznanej mi zasady, więc po prostu zarezerwuj sobie jakiś zakres zespołów pokrywający mniej więcej interesujący cię obszar i daj o tym znać, to je pominę.

Na oko znalazłem jeden przystanek, który w ref miał podany numer linii. Z kolei w kilku przystankach, które obrabiałem niedawno, był jakiś podobny tag (ref_cośtam), gdzie też były podane linie - sądzę, że trzeba będzie je hurtem pousuwać, bo te informacje są robione za pomocą relacji, więc nie będą użyteczne, a z czasem staną się w dodatku nieaktualne.

A propos wiat: ja bym chciał je widzieć zarówno w 2D jak i 3D, więc bez tego znacznika raczej się nie obejdzie. :slight_smile: Zastanawiałem się tylko jak je opisywać - na początku robiłem jako building=yes, ale zastanawiam się, czy nie powinien to być raczej building=roof - trudno mi policzyć ilość “ścian” przystanku, ale mniej więcej z dwóch stron są otwarte: http://wiki.openstreetmap.org/wiki/Pl:Tag:building%3Droof.

Jeszcze coś: czy ktoś sprytny mógłby sklecić skrypt np. seda, żeby wiersz rozkładu ZTM zawierający współrzędne (np. Y= 52.263450 X= 21.057140) pojawiał się w HTML-u z odnośnikiem typu http://www.openstreetmap.org/?mlat=52.263450&mlon=21.057140? Bardzo by mi to ułatwiło lokalizowanie jeszcze nie oznaczonych u nas przystanków na mapie.

O ile może być w Perl, to tak na szybko:

cat RA140428.TXT | grep 'Y= ' | perl -p -e 's/.*Y= ([0-9.]+)\s+X= ([0-9.]+)/http:\/\/www.openstreetmap.org\/\?mlat=$1&mlon=$2&zoom=18/gi;'

EDIT. W plikach zauważyłem też wsp. podane jako Y=yyy.yyyyyyyy X=xxx.xxxxxxxx

EDIT2. Nie doczytałem, że chodzi o html

cat RA140428.TXT | grep 'Y= ' | perl -p -e 's/.*Y= ([0-9.]+)\s+X= ([0-9.]+)/<a href=\"http:\/\/www.openstreetmap.org\/\?mlat=$1&mlon=$2&zoom=18\">http:\/\/www.openstreetmap.org\/\?mlat=$1&mlon=$2<\/a>/gi;'

Mniej więcej tak (język nie ma znaczenia), z tym że ten skrypt tworzy tylko gołą tekstową listę odnośników (bez opisu), a mnie chodzi o przerobienie pliku tekstowego na taki sam plik, tylko HTML-owy z możliwością kliknięcia dla szybkiego sprawdzenia gdzie dany przystanek fizycznie leży.