Warszawa - komunikacja miejska

Wspomniałem o tym skrypcie na licie talk (jeszcze nie podałem namiarów póki nie ma choćby podstawowej dokumentacji jak to uruchomić - swoją drogą jaką na to dajesz licencję?) i odezwał się gość z Belgii, który postanowił zrobić coś podobnego w postaci skryptów Pythona pod JOSM-a:

http://www.openstreetmap.org/user/Polyglot/diary/28401
http://www.openstreetmap.org/user/Polyglot/diary/34241

Podobno w Szwajcarii także korzystają z aktualizacji tras według przystanków:

https://github.com/gravitystorm/openstreetmap-carto/issues/435#issuecomment-82119085

@MARC12: Mam jeszcze kilka rzeczy w związku z twoim skryptem:

  1. Co wskazują zielone kolory linii? Chyba nie że się zmieniła trasa od poprzedniego stanu, bo niektóre z nich są już dłużej zielone niż tylko raz.
  2. Brakuje już tylko tras dwóch podmiejskich linii - będziesz może poszerzać obszar (skoro to powinno pomóc)?
  3. Chętnie bym pokazał ten skrypcik razem ze źródłami, żeby inni też go wypróbowali, bo jest bardzo fajny, ale nie wiem, czy pisać im instrukcję, czy planujesz dać tam jakieś info?
  4. W zasadzie nie wiem czemu do wcześniej wygenerowanych tras nie ma linka, żeby pokazać trasę z GPX-ów - w końcu na głównej mapce transportowej nie da się tego podejrzeć osobno, bo wszystko jest hurtem…
  5. A, i przydałoby się żeby w repo był pliczek z licencją.

Dostałem dziś zaproszenie od startupu Allryder (http://wiki.openstreetmap.org/wiki/Allryder), który robi planer podróży dla kilkunastu miast - głównie niemieckich, ale chcą też dodać Warszawę i szukają testerów. Sądząc po opisie to taka firma, która nie tylko korzysta z danych OSM, ale też wspiera projekt; niestety tylko tyle o nich wiem. Jeśli ktoś jest zainteresowany, to proszę się kontaktować z tą użytkowniczką:

https://www.openstreetmap.org/user/gemmaa

Zielone kolory linii są więcej niż raz, bo ich nie wysłałem zmian dla tych linii na serwer. (PS Plik jest generowany automatycznie codziennie wieczorem, a codziennie nie są wrzucane zmiany na serwer) Takie E-7 na przykład lub linie lokalne w Piasecznie mają zepsute trasy (E-7 generowane jest opłotkami, a w Piasecznie jakieś przystanki są źle położone). Pracuję nad rozwiązaniem, które pozwoli w łatwy sposób poprawiać trasy (+ dodawać te odcinki techniczne na pętlach o których mówiłeś) oraz łatwo wysyłać zmiany na serwer.
Jednocześnie część rzeczy próbuję odseparować od siebie, tak aby skrypt był przydatny nie tylko dla Warszawy (i nie tylko dla transportu publicznego).

Ma to składać się z dwóch części:

  1. Podajemy wierzchołki, przez które ma przebiegać nasza relacja (stop_position), generowane są wszystkie wierzchołki pośrednie.
  2. Podajemy wierzchołki pośrednie z punktu 1., a także dodatkowe elementy, które mają się znaleźć w wygenerowanej relacji (platform, bus_stop itd.). Wierzchołki pośrednie są zamieniane na poszczególne drogi, reszta przepisywana, zmiany są wysyłane na serwer albo do pliku *.osm
  • rzeczy dedykowane dla Warszawy, tak aby wszystko było sprawnie.

Niestety architektura OSM definiuje drogi jako łamane, a nie jako odcinki, co powoduje mnóstwo problemów.

A w kwestiach licencyjnych jestem kompletnie zielony, w szczególności licencja powinna uwzględniać biblioteki, które wykorzystuje (np tą do parsowania XML) i licencję dla danych OSM.

Powoli kończę nowy generator tras, o którym wspominałem w poście wyżej. Jest jeszcze kilka drobnych błędów, ale polecam przetestować klikając na “Pokaż wygenerowany zestaw” w zestawieniu tras.

Czy ten skrypt będzie sprawdzał istniejące trasy? Poprawiałem ręcznie ewidentnie nieprawidłowy przebieg trasy 139, ale nie dodałem nowych segmentów i tak na razie zostało, więc zaraz ręcznie uzupełnię. Ale myślę, że dobrze byłoby, gdyby automat czuwał nad kompletnością tras i przynajmniej dawał nam znać, jeśli są popsute (brakujące fragmenty, wiszące w kosmosie kawałki starych przebiegów itp.).

Dodałem sprawdzanie spójności tras. Dalej pracuję nad kolejnymi elementami.

http://www.openstreetmap.org/#map=16/52.4414/21.0561&layers=T

Tu jest błąd w trasie autobusu. 734 po przystanku Białobrzegi wraca do ronda i z niego skręca na Wczasową, nie wjeżdza na Osiedle Wojskowe.

Mam pytanie co do tramwajów na linii 9 oraz 77 - w tej chwili każdy z nich ma po trzy relacje:

<relation id="2648370" visible="true" version="4" changeset="30789027" timestamp="2015-05-04T19:32:09Z" user="MARC12" uid="10638">
<member type="relation" ref="387729" role=""/>
<member type="relation" ref="2648369" role=""/>
<member type="relation" ref="4865901" role=""/>
<tag k="name" v="Tram 9"/>
<tag k="network" v="ZTM Warszawa"/>
<tag k="ref" v="9"/>
<tag k="route_master" v="tram"/>
<tag k="source" v="Rozkład jazdy ZTM Warszawa, trasa wygenerowana przez bot"/>
<tag k="type" v="route_master"/>
<tag k="url" v="http://ztm.waw.pl/rozklad_nowy.php?c=182&l=1&q=9"/>
</relation>

Obecnie niektóre tramwaja jadą tylko do r. Wiatraczna ale czy to jest powód aby tworzyć osobną trasę? - zwłaszcza, że pokrywa się ona z obecną w 100% ZTM trochę skomplikowało sprawę ale pytanie czy jest sens przenosić to do OSM ?

@MARC12: Widzę, że zostało już tylko 10 niewygenerowanych tras, a nie około 20, jak patrzyłem poprzednio. W najbliższych dniach spróbuję się zorientować z przystankiem na Wołoskiej, bo tam w związku z rozbudową ciągle coś zmieniają, ale jak tam idzie poza tym? Może potrzebna ci jakaś pomoc typu “dzień mapera spisującego brakujące przystanki z natury”? :wink:

Na ten moment liczba wygenerowanych tras jest na tyle duża, że przestaję to ogarniać. Jak ktoś chce spróbować to może skorzystać z “Pokaż wygenerowany zestaw” na stronie, sprawdzić i poprawić wygenerowaną trasę (można dodawać punkty pośrednie i je przesuwać) i eksportować wszystko do JOSM - tylko trzeba potem w JOSM przed wysłaniem sprawdzić czy wszystko jest OK, mogą zdarzać się różne konflikty i błędy (aktualizacja bazy następuje raz dziennie).

Czy dobrze rozumiem, że linie do naniesienia to są wszystkie zielone, a do usunięcia (oczywiście po dodatkowym upewnieniu się w rozkładzie) te wymienione w odpowiedniej sekcji, czy ten system działa nieco inaczej?

Widzę, że w związku z rozbudową Wołoskiej dodawanie tam kolejnych tymczasowych przystanków to trochę syzyfowa praca, bo ZTM ciągle produkuje nowe - inaczej byłoby już naprawdę nieźle. Jak będę w okolicy to pododaję co się da - trwalszy efekt będzie w przypadku pozostałych brakujących przystanków, ale tam akurat nie bywam.

I jeszcze jedno przy okazji - widzę, że ktoś wymyślił tag “ciąg_ulicy/ztm:ciąg_ulicy”. To może mieć sens (teoretycznie wystarczy odczytać do jakiej ulicy należy punkt, ale uczciwie oznaczone miejsce oczekiwania jest obok ulicy), tylko trzeba to zamienić na angielskie (brytyjskie) brzmienie, żeby było spójne z całą koncepcją tagowania i zdatne do użytku w innych krajach. Jakieś pomysły?

Tak, do naniesienia są zielone, do usunięcia są w sekcji - tylko warto się zastanowić co zrobić z liniami zawieszonymi na wakacje - może je jakoś specjalnie otagować?
Jeszcze jest sekcja “???” - są to wszystkie linie autobusowe w aglomeracji poza drzewem relacji ZTM, służy to zapobieganiu dublowania relacji, mamy tam na przykład L13 - to jakiś dubel.

Widzę błąd przy brakujących przystankach - chyba podawany jest link do pozycji poprzedniego przystanku wedle ewidencji numerycznej.

Przynajmniej tak miałem przy Wielickiej 02 (X linkuje do http://www.openstreetmap.org/?mlat=52.1895&mlon=21.0193&zoom=18, czyli do Wielickiej 01, zamiast w okolicy http://www.openstreetmap.org/?mlat=52.190540&mlon=21.021650&zoom=18#map=19/52.19066/21.02152, jak wyekstrahowałem z rozkładu ZTM) oraz przy Królikarni 08 (X wskazuje na http://www.openstreetmap.org/?mlat=52.1898&mlon=21.0239&zoom=18, czyli do Królikarni 06, zamiast w okolicy http://www.openstreetmap.org/?mlat=52.190040&mlon=21.023790&zoom=18#map=19/52.19016/21.02265, jak twierdzi ZTM).

W przypadku braku współrzędnych dla konkretnego przystanku linkowane są współrzędne dla innego przystanku z węzła. W przypadku braku współrzędnych w węźle w ogóle się nie linkuje.

Jasne.

Chciałem coś zaktualizować, ale mam problem - wchodzę tu (jest jeszcze plik PełneWarszawa.html dla zmyłki, bo jest sprzed kilku dni :slight_smile: - może lepiej wywalić? ):

http://vps134914.ovh.net/wyszuk/PelneWarszawa.html

wybieram np. tramwaj 17:

http://vps134914.ovh.net/wyszuk/wyszukiwarka2.html?linia=Warszawa17

i strasznie długo się to ładuje, tzn. tagi z pierwszej relacji widać od razu, ale na mapkę i pozostałe relacje czeka. Był też problem z podglądem - pokazywał np. tylko punkt 0 i 1 i nic poza nimi. W końcu jednak się pokazało więcej, ale jak wygenerowałem plik i otworzyłem w JOSM-ie, to nawet na podglądzie widać, że coś jest źle (relacja 4096005, Tram 17: Tarchomin Kościelny => Woronicza):

  • brak połączenia 0-1
  • brak połączenia 4-5-6
  • brak połączenia 12-13
  • brak połączenia 14-15
  • między 17 i 18 zjeżdża na jezdnię i kręci pętelkę koło Wisły :slight_smile:
  • brak połączenia 19-20
  • brak połączenia 31-32-33

W drugą stronę też brak kilku połączeń między przystankami, ale przynajmniej nie zjeżdża z torów. :smiley:

Co z tym należy zrobić i skąd się mogą brać te opóźnienia?

Próbowałem zassać najnowszą wersję z gita wedle instrukcji, które opisałem w tym wątku w marcu, ale chyba są zmiany, bo nie ma make.sh, a polecenie make zatrzymuje się na braku pliku XmlInspector.hpp (jest takie coś w źródłach, ale make nie wie o jego położeniu pewnie). Czy to jakoś da się naprawić i czy jak sobie odpalę lokalnie, to coś na tym zyskam?

Miałeś pecha - prowadziłem dziś różne zmiany i w pewnym momencie tramwaje miały routing po drogach, ale teraz powinno być dobrze.
Aktualną wersję można skompilować przez cmake w folderze src, ale aby zrobić routing musisz postawić serwer.

Chyba serwer WWW zdechł, bo nic nie widać w przeglądarce (“Nie udało się nawiązać połączenia”), ale pinga.

Powprowadzałem kilka kolejnych wygenerowanych tras, ale mam takie pytania:

  1. Dlaczego N95 (http://vps134914.ovh.net/wyszuk/wyszukiwarka2.html?linia=WarszawaN95) za chińskiego boga nie chce pojechać Emilii Plater, a jak mu tam przesuwam punkty, to są samotne? Tam już chyba coś tak pojechało serwisówkami jak widzę na mapce wyrenderowanej, najwyraźniej 700 na przykład:

http://www.openstreetmap.org/#map=18/52.22886/21.00374&layers=T

  1. Czym się różni droga niespójna od takiej linii właśnie z samotnymi punktami i jak to naprawiać?

  1. Da się pojechać, ale trzeba wcelować w punkt na drodze, a nie w tor kolejowy czy chodnik. N95 ma jeszcze problem na Młynarskiej - tam przystanki tramwajowe i autobusowe mają to samo id, stop_position znajduje się na torze. A prowadzenie tras tymi serwisówkami przy Centralnym jest wkurzające, podobnie jest w kilku innych miejscach. Planuję jakieś narzędzie do banowania takich dróg z routingu. Chyba, że będziemy je specjalnie tagować. Gdzieś kiedyś dodałem tag routing:ztm=yes, bo mnie wkurzało prowadzenie opłotkami.
    Innym pomysłem jest warstwa z różnicami pomiędzy starą, a nową wersją. Dzięki temu nie trzeba będzie przeglądać całej nowej trasy w poszukiwaniu kwiatków.
  2. Te drogi z samotnymi punktami to jest błąd. Zmieniłem kod i teraz będą traktowane jako niespójne.

Obecnie wszystkie dane routingowe są trzymane w pamięci RAM serwera, co jest mało efektywne. Jednak trzymając to w bazie postgresql i używając pgrouting wszystko działa bardzo wolno (chociaż na moim leciwym PC prędkość jest ok). Chyba lepiej będzie przełączyć się z webowego interfejsu na wtyczkę w JOSM, którą powoli tworzę.

P.S. Głównym powodem dla którego nie korzystam z jakiegoś zewnętrznego routingu jest brak pokazywania osm-id węzłów w ich API.