Warszawa - komunikacja miejska

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

Chodziło mi o punkty obsługi pasażera ZTMu :slight_smile:

Pytanie tylko jak zapatruje się na to MARC12(ale inni chętni programiści, których jak na razie brak), bo my możemy sobie tworzyć świetaną przyszłość, ale z braku umiejętności jej nie stworzymy :wink: No i przydałoby się stworzyć jakiś skrypt do tworzenia rozkładu metra, bo to poza rozkładami ztmu, a routing wymagany :smiley:
Spojrzę w wolnej chwili na te przystanki, a tymczasem już za rogiem otwarcie 2 linii metra. I tu ode mnie takie =>antresola na stacji stadion narodowy(polecam pobranie-będzie lepiej wyglądało lokalnie otwarte)

Ponieważ nawet w rozbudowanym schemacie transportu publicznego nikt się tym nie zajmował, to myślę, że trzeba użyć “information=office”, bo nie jest bardzo powszechne, ale jednak jest w użyciu:

http://taginfo.openstreetmap.org/tags/information=office

Jest ich wszystkich ledwo kilkanaście (włącznie z tymi nowymi, po zbliżającym się otwarciu II linii metra), więc szybko powinno pójść:

http://www.ztm.waw.pl/pop.php?c=136&l=1

Mam sporo dystansu do planów, ale z drugiej strony gdybym np. nie założył tego wątku i nie ciągnął tematu, to kto wie kiedy byśmy się w końcu zorientowali, że ZTM udostępnia rozkłady z koordynatami i w związku z tym można w kilka miesięcy mieć praktycznie kompletną sieć przystanków i linii zamiast powoli dłubać ręcznie na wiki? Takie ogólne, strategiczne plany działają inspirująco i zachęcają, żeby odezwali się zainteresowani, a wtedy jest po prostu większa motywacja, bo można się podzielić pracą (np. część dodaje tagi przystanków, a kto inny kombinuje nad trasowaniem). Brakuje mi czasem takich wizji w OSM dla równowagi wobec zasadniczo oddolnego i chaotycznego charakteru projektu.

A tak wracając do konkretów:

@MARC12: możesz powiedzieć więcej o tym swoim serwisie z OpenLayers? Czy kod do niego jest już gdzieś na githubie (może gdzieś w https://github.com/mar5991, ale nie umiem zidentyfikować)? I jak się już wygeneruje nowe trasy (pliczki GPX?), to jak je potem nanosisz na mapę - ręcznie na podstawie tego przebiegu, czy może jakoś bardziej automatycznie? W sprawie ładnych pętli - myślę, że w master route trzeba będzie czasem dodawać kawałek drogi technicznej, bo nie zawsze jazda w drugą stronę zaczyna się z ostatniego przystanku trasy w pierwszą, czyli ten kawałek nie należy do żadnej z tras podrzędnych. Udało mi się znaleźć w terenie położenie kolejnych 2 przystanków, więc powinno się dać wygenerować kolejne trasy.

Poza tym dzięki za lepsze sortowanie oraz dodanie daty generacji - chciałem nawet o to poprosić, ale nie zdążyłem. :slight_smile:

@kocio: Może information=office + information=public_transport? Użyte 32 razy, z mapki wynika że we Francji. Warto zmapować, bo to przydatna informacja.

A kod jest pod https://github.com/mar5991/ztmtoosm/tree/tested(branch: tested) :wink: A co jest w tested2? Coś bardziej zaawansowanego? Czy po prostu w jednym jest zestawienie, a w drugim wyszukiwarka z trasowaniem? Co z liniami L? Są jakieś większe problemy przy wyznaczaniu tras, czy po prostu jeszcze nie doczekały się obsługi? Ja bym rozróżnił kolorami warianty linii, żeby z daleka widzieć błędy, jak trasa prowadzi po jednojezdniowej drodze.

Też chętnie nauczyłbym się obsługi tego serwisu…odciążylibyśmy Cię od roboty troszkę :wink: Może jakaś mini-dokumentacja? :slight_smile:

Wersję z tested udało mi się na razie pobrać i skompilować - pod Ubuntu (poza środowiskiem do kompilacji, gitem czy 7zipem) trzeba było doinstalować następujące pakiety:

sudo apt-get install libmysqlcppconn-dev libfcgi-dev

A następnie trzeba zrobić dowiązanie symboliczne, bo autor trzyma ten plik w jakiejś lokalnej wersji:

sudo ln -s /usr/lib/libfcgi.a /usr/local/lib/libfcgi.a

Pobieranie tej konkretnej gałęzi robi się tak:

git clone -b tested https://github.com/mar5991/ztmtoosm.git

Potem trzeba ręcznie stworzyć katalog na binaria, bo samo się to nie chce zrobić:

cd ztmtoosm
mkdir bin

i wtedy można odpalić kompilację:

./make.sh

Na razie udało mi się jeszcze pobrać plik z ZTM-u (ważna jest ta kropka na końcu):

./ztm_download4.sh .

…i to na razie tyle, bo dalej potrzebna jest już baza danych MySQL - przyjrzę się temu później.

Baza danych - instalacja serwera (nieładna, bo jak pytał o hasło, to wciskałem enter za każdym razem, ale póki co nie zależy mi na bezpieczeństwie bazy danych):

sudo apt-get install mysql-server

Następnie tworzymy już samą bazę:

mysql -u root
create database osm;
quit

Jak teraz odpaliłem pobieranie z ZTM-u (ostatnim poleceniem z poprzedniego komentarza), to faktycznie poszło dalej, ale też jeszcze coś jest nie tak:

./ztm_download4.sh: linia 38: ./ztm_download/ztm_download3.txt: Nie ma takiego pliku ani katalogu

Wow, jestem zaskoczony, że chciało ci się kompilować ten nieudokumentowany bałagan! Tak, używam mysql do tej wyszukiwarki, wstawianie danych do OSM odbywa się bez bazy danych.
Tested jest nowsza, tested2 jest pomocnicza.

Automatycznie - jest generowany plik dedykowany dla JOSM z relacjami. Głównym problemem jest “cięcie” dróg. A GPX-y są generowane swoją drogą.


  w2  |
      |
w1    |  w1    w1
 -----+--+------
         |
         |w3
         |

Jak chcemy dodać nową relację w2 - w1 - w3 to musimy pociąć way w1, trzeba też zmodyfikować relacje które wcześniej przebiegały przez w1.

L-ki dodałem w zestawieniu - nawet sporo wygenerowanych wyszło, kolory wariantów dodam.
Metro dodałem na oko według częstotliwości i czasów przejazdu, obie linie.
I jeszcze częściowo na podstawie kodu Javnika, po części mojego (niestety nie znam Pythona) wygenerowałem GTFS z shapes, działa przynajmniej częściowo: http://vps134914.ovh.net/wyszuk/gtfs.zip

ztm_download3.txt to taki pliczek z poleceniami dla MySQL, nie dodałem na githuba bo lokalnie i na serwerze te pliki się różnią z pewnych względów.

Hm, dlaczego L11 się nie wygenerowała? Wszystkie te 4 miejsca zatrzymywania istnieją i leżą na drodze. Może nie potrafi uwierzyć, że czasem przystanki autobusu mogą się znajdować przy drodze gruntowej? :slight_smile:

Ale zupełnie nie rozumiem dlaczego nie wygenerowały się trasy L18, L19 i L20 (oraz po części L17, bo niektórych rzeczywiście jeszcze nie było) - przecież tu jest normalna droga, miejsca postoju są otagowane dawno temu, a i ztmtoosm prawidłowo to zauważa.

W htmlgenerator.cpp proponuję zamienić wiersz:

html<<"<td> <a href=\"http://www.openstreetmap.org/#map=19/"<<akt_lat<<"/"<<akt_lon<<"\"/>";

na:

html<<"<td> <a href=\"http://www.openstreetmap.org/?mlat="<<akt_lat<<"&mlon="<<akt_lon<<"&zoom=18\"/>";

żeby kliknięcie na nazwę przystanku pokazywało znacznik - w mieście zwykle nie jest to tak potrzebne, ale poza nim może być ciężko zgadnąć o jaki punkt na mapie chodzi. Dal mnie w każdym razie jest to bardzo wygodne.

Udało mi się uzyskać listę linii z OpenLayers nie czekając na instrukcje. :slight_smile: Z grubsza sprawa jest prosta - należy doinstalować jeden pakiecik:

sudo apt-get install osmctools

i pewnie podlinkować jedno narzędzie z niego, bo w skrypcie jest wywoływane też jakoś lokalnie - w katalogu z pobranym repozytorium robimy:

ln -s /usr/bin/osmconvert ../osmconvert

(przy okazji widzę, że nawet już jest specjalne narzędzie do pobierania danych OSM: osmupdate i można by w ten sposób trochę uprościć skrypt). Jak już mamy pobrane dane ZTM-u i skompilowane programy - co opisywałem powyżej - to odpalamy zasadniczy skrypt (uwaga - tu również kropka na końcu jest ważna):

./osm_download.sh .

…i możemy sobie iść na dużą kawę, spacer albo najlepiej - na obiad. :slight_smile: Pobranie tych danych OSM chwilę trwa (około 0,5 GB, więc raczej nie z komórki :slight_smile: - chyba że ma się nieograniczony dostęp LTE) i brak jakiegoś specjalnego pliczka (data/lista9.ooo), który nie wiem do czego służy, a sama generacja to u mnie, na niewyrafinowanym pececie, nieco ponad pół godziny. W efekcie w podkatalogu www powstaje stadko plików GPX i pliczek openlayers.html (właśnie taki: http://vps134914.ovh.net/wyszuk/openlayers.html - choć widzę, że ostatnia próba się tam nie udała, ale tym bardziej mnie to motywuje, żeby móc sobie samodzielnie wygenerować!) oraz w podkatalogu data pliczek wyj4.osm, który zapewne powinien być tym, co nas interesuje najbardziej.

Udało mi się go uruchomić w JOSM-ie, ale jest jeden problem: wyszedł mi za duży - najwyraźniej zawiera wszystkie wygenerowane linie, a nie tylko te, które się zmieniły w porównaniu z bazą OSM. Coś więc poszło nie tak, bo analogiczny pliczek na stronie serwisu ( http://vps134914.ovh.net/wyszuk/wyj4.osm) ma ze 3 mega, a nie 15, i faktycznie zawiera mniej linii. W dodatku ten mój musiałem najpierw wykastrować z elementu id=“0”, a tamten jest strawny od razu. Nie ryzykowałem wysyłania tych moich wyników, więc nie wiem jak zareagowałby OSM - czy powtarzające się dane zignoruje, czy może nadpisze.

Przepraszam za natłok wiadomości, ale jak się wgryzam w coś od zera, jak w te skrypty, to robię się monotematyczny, a w dodatku właśnie finiszujemy z systemem półautomatycznych aktualizacji komunikacji publicznej, jaki sobie wymarzyłem prawie rok temu i po prostu bardzo się z tego cieszę. I tak staram się ograniczyć pisanie, ale jak nie zapiszę od razu, to zapomnę (może chociaż Javnik z tego skorzysta :slight_smile: ).

Znalazłem właśnie interesującą linię autobusową - myślałem, że to jakiś błąd i została jakaś błędna trasa, bo numeracja podobna do ZTM-owskiej, ale to międzynarodowy bus:

https://www.openstreetmap.org/relation/2709996#map=7/53.563/21.110&layers=T

To mi jednak nasunęło myśl, że automat powinien także usuwać linie wycofane, a nie tylko dodawać nowe i aktualizować przebiegi tras.

Warstwa transportowa wreszcie zaczyna aktualizować trasę 523 i - przynajmniej na tym powiększeniu - most Łazienkowski już zniknął z planu - hurra! :sunglasses: :

https://www.openstreetmap.org/#map=16/52.2253/21.0491&layers=T

Coś jest dziwnego z kilkoma przystankami na trasie L-ek - oba są w ten sam sposób otagowane, tak samo dawno, ale ten jest widzialny na liście przystanków:

https://www.openstreetmap.org/node/2874444818

a ten jakoś nie:

https://www.openstreetmap.org/node/2874444811

chyba trzeba zdebugować skrypt.