Warszawa - komunikacja miejska

I ja dziękuje, przyda się :slight_smile:

Na razie lecę po Białołęce, potem zobaczymy jak…

Trzeba robić, bo wg. moich danych w aglomeracji jest ~2250 zespołów przystankowych i ~5500 przystanków. W osm w obszarze na oko aglomeracji jest ~4300 przystanków, z tego ~4000 nazwanych…a tych z tagiem ref wprowadziliśmy dotychczas ~350 :wink:

Hm, lecisz raczej po Tarchominie jak dotąd - Białołęka jest prawie nietknięta. Link na Overpass pokazuje tylko przystanki autobusowe i to w starym stylu (nowe to te z podziałem na miejsce oczekiwania i postoju), a tramwajowych w ogóle nie uwzględnia, więc trochę więcej. Ale oczywiście w zależności od tempa pracy to i tak pracy na tygodnie lub miesiące.

Nom…to taki czas przyszły w domyśle miał być :slight_smile: Ale już cała Białołęka zrobiona. Parę rzeczy wyszło: np. taki przystanek mamy w bazie osm: Okrągła 01 i 02 po drugiej stronie. Przystanków nie ma w bazie ztmu, co pewnie oznacza, że chwilowo nie są one używane…ale nie mamy do nich numerów. Znalazłem też trochę tymczasowych z numerami 5x, ale zostawiłem je w spokoju :slight_smile:

Widzę, że Alkomat zaczął po lewej stronie Wisły grzebać, ale i tak przydałaby się pomoc…

Edit: Będę wybierał przystanki spoza Warszawy :slight_smile: Zaczynam od Legionowa…
Edit2: Trochę się pobawiłem tym skryptem i zrobiłem gpx’a z tymi przystankami…niestety nie ma tam ich nazw, ale są przynajmniej te nieszczęsne numery zgeolokalizowane :slight_smile: Może się przyda komuś

Tak więc, wygląda to mniej więcej tak:

Udało mi się shakować ten skrypt tak, żeby uwzględniał przystanki autobusowe i tramwajowe zarówno w starszym (“highway=[bus|tram]_stop”) jak i w nowym (“public_transport=stop_position”+“[bus|tram]=yes”) tagowaniu:

http://overpass-turbo.eu/s/3mj

Na razie mamy oznaczonych ponad 1300 przystanków. Postanowiłem dalej jechać po kolei po numerkach - wprawdzie jest to dublowanie cudzych edycji, ale przy okazji poprawiam pozycje przystanków, więc jest dokładniej, no i mam gwarancję, że żaden zespół nie umknie.

Po tym pierwszym przebiegu (dodawanie refów) trzeba będzie poznajdować przystanki, które nie mają oznakowanego punktu zatrzymywania i dodać te punkty na drogach, bo jeśli chcemy - mniej lub bardziej - automatycznie dostawać trasy na podstawie zadanych przystanków, to punkty postoju leżące poza drogami się do tego nie nadadzą.

Czy ktoś w ogóle planuje się zająć skryptami do automatyzacji? Na początek potrzebny byłby wykaz nowych przystanków oraz ew. przesunięte lokacje (względem poprzednich pozycji z bazy ZTM, bo nasze lokacje są i tak nieco różne), żeby nasz zestaw przystanków łatwo się aktualizowało bez przeglądania całości. Jak już będziemy mogli aktualizować wszystkie przystanki, to przydałby się skrypt rutujący trasy wedle rozkładu po tych przystankach. Ale że to już wymaga stosowania (niezłożonego, ale zawsze) rutowania, to pośrednim krokiem byłby prostszy skrypt testujący, czy już wprowadzone przebiegi tras zawierają wszystkie wymagane przystanki i czy trasa jest ciągła - wprawdzie poprawiałoby się te zmiany ręcznie, ale bez automatu w ogóle nie zapanujemy nad tym.

W 1 fazie przydałby się skrypt, który sprawdzałby czy mamy dany przystanek u siebie. Jeśli nie tworzyłby listę potrzebnych do wprowadzenia przystanków.

Niestety, ja raczej nie pomogę :frowning: Moje umiejętności programistyczne są zbyt wątłe, ale spróbuję i nie obiecuję wygrzebać coś takiego jw. Chyba potrzeba nam programistów :wink:

Dobra…teraz pytania dot. trwającej roboty :slight_smile:

  1. Co z tagiem ref dla stacji kolejowych? Znalazłem parę takich i nie wiem co z tym zrobić…dać na linii kolejowej stop_position jakiś i tam ref, czy jakoś inaczej?
  2. Poza Warszawą spotkałem się z przystankami nazwanymi nazwa przystanku (nazwa miejscowości). Jak dla mnie to nie ma potrzeby żeby była podawana dodatkowo w nazwie przystanku miejscowość. Co Wy na to?

Niestety są przypadki, gdzie taka chora nazwa jest nazwą oficjalną.

Nie wiem na ile może się tu przydać mapa. Na razie poczyniłem taki prototyp. Zanim zacznę działać dalej, chciałbym uzyskać informację czy jest sens i jak to dalej pchnąć, jakie obiekty i jak przedstawić. Żeby nie robić OT, proponuję na ten temat rozmawiać w wątku o wizualizacjach.

Moja wizja na teraz jest taka, żeby “zakrywać” obiekty innymi. Np. highway=bus_stop zasłaniane jest przez public_transport=stop_position + bus=yes (dla tramwajów tak samo). Wizja ta wynika z braku czasu na zabawę w dochodzenie co i jak. Chyba, że ktoś opracuje specyfikację z propozycjami wizualizacji.

PS. Nadal uważam, że do wyłapywania potencjalnych błędów, braków, dubli, itp. lepszy byłby skrypt.

Na szczęście w nomenklaturze ZTM-u nic takiego nie ma - miejscowość jest podawana tylko w rozkładzie, pewnie dla orientacji pasażerów szukających połączeń. Jest za to kulawa w inny sposób - po kropce w skrótach chyba nigdy nie dają spacji, np. “Dw.Wschodni (Kijowska)”, ale ja bym się nie trzymał tej ich dziwnej maniery interpunkcyjnej. W nawiasach są tylko ujednoznacznienia (tu dla odróżnienia od “Dw.Wschodni (Lubelska)”), miejscowości nie ma, stąd kilka zespołów o prostej nazwie “Cmentarz” w różnych miejscowościach. Zastanawiałem się, czy może rozwijać te skróty w ogóle (np. na “Dworzec Wschodni”) dla wygody użytkowników, ale nie doszedłem do żadnego wniosku - może czytelniej rozwijać, ale ludzie mogą szukać z natury i wtedy napiszą raczej tak jak widzą.

Reasumując: nie przejmowałbym się bardzo zgodnością nazw z nomenklaturą ZTM-u, bo do rozkładów będziemy mieli jednoznaczne przypisanie przez ref, czyli automaty i “obsługa” będą szczęśliwi, więc w nazwach można zadbać głównie o dobro użytkowników.

Ja też tak sądzę, skrypty są nam potrzebne. Natomiast potrzeby wizualizacji osobiście nie widzę, bo ilość przystanków jest hurtowa i trudno wyłapywać konkrety. Z mapki Javnika zrobiłem sobie tylko gustowną tapetkę… :wink:

Znalazłem za to fajny tag do oznaczania nieczynnych przystanków: http://wiki.openstreetmap.org/wiki/Key:disused. W praktyce byłoby to pewnie oznaczane jako:

  • disused:highway=_stop*
  • disused:public_transport=*

Dłubię pomalutku parser przetwarzający ten wielki plik na xml. Ale to jeszcze potrwa, bo format kiepski do przetwarzania, a moce przerobowe są jakie są.

Spokojnie, jak widać nawet samo tagowanie refów też jeszcze musi potrwać… A w jakim języku to robisz? Myślę, że najlepiej, gdyby wszystkie skrypty dotyczące projektu leżały docelowo na serwerach OSM Polska (nie wiem - Osmapa tam leży?) i mogły się stamtąd automatycznie odpalać, więc chciałbym wiedzieć czy na serwerze będzie odpowiedni interpreter.

Poza tym wykryłem ogólną regułę numeracji zespołów (kierunki z grubsza):

  • od 1000 są na prawym brzegu na północ
  • od 2000 - prawy brzeg na południe
  • od 3000 - lewy brzeg na południe
  • od 4000 - lewy brzeg na południowy zachód
  • od 5000 - lewy brzeg na północny zachód
  • od 6000 - lewy brzeg na północ
  • od 7000 - lewy brzeg, centrum

Czyli zgodnie z ruchem wskazówek zegara licząc od góry tarczy, a na koniec obszar środkowy.

Piszę w PHP. Chyba nie będę produkował 1 wielkiego xml-a, bo skrypt wymaga wtedy jakichś chorych ilości ram do działania. Będzie 1 xml z miejscowościami i przystankami, może drugi z kalendarzem, a potem po 1 na każdą linię.
Kiedyś pisałem takie rzeczy w perlu, bo on jest zgrabniejszy do parsowania teksów, ale faktycznie czasem jest problem z przenoszeniem na inny serwer.

A jaki ten twój XML ma schemat?

Szukałem czegoś pod nazwą “Transport XML” i znalazłem Transmodel (do pobrania tu: http://www.transmodel.org/en/cadre1.html). Wygląda, że jest to jakiś w miarę normalny standard (“EU Standard”; tu są podane także inne, pokrewne standardy: http://www.dft.gov.uk/public-transportdatastandards/). Bazuje na nim NeTEx (w spisie standardów nie ma do niego linku, ale tu jest jego strona http://user47094.vs.easily.co.uk/netex/). Tu jest jeszcze porównanie Transmodela z GTFS (czyli “Google Transit Feed Specification”) i kilka innych rzeczy: http://www.dft.gov.uk/transmodel/schema/schemas.htm.

Edit: O, nawet jest o nim hasło w Wikipedii: https://en.wikipedia.org/wiki/Transmodel

Edit 2: A tu jest coś o dyskusji przydatności standardów transportowych dla OSM: http://wiki.openstreetmap.org/wiki/Talk:Public_transport#Transit_data_standards.

Nie zdecydowałem się jeszcze na schemat, ale przyjęcie standardu Transmodel brzmi sensownie.

Okazuje się, że między numerami 1901 a 1910 są zespoły przystanków kolejowych i zastanawiam się jak je prawidłowo oznaczyć. Tzn. stop_position oczywiście trzeba zaznaczyć na odpowiednim torze w danym kierunku, natomiast pytanie jak wówczas oznaczać całą stację kolejową? Na razie spróbowałem z Warszawa Zoo (http://www.openstreetmap.org/way/182670857#map=19/52.26353/21.01779) i nie widać nazwy na Mapniku, choć jest przypisana do platformy. Czy ma zostać tak jak jest, czy jakoś inaczej to robimy, np. relacją zawierającą punkty postoju i platformę?

A propos automatycznego trasowania po przystankach - na liście talk-transit (archiwa są do przeglądania w sieci) ktoś się w zeszłym miesiącu chwalił, że właśnie wdraża takie coś, i to z niezłym skutkiem:

https://lists.openstreetmap.org/pipermail/talk-transit/2014-April/001730.html

Znakowanie przystanków postępuje nadal i teraz się cieszę, że się nie oglądam na innych i jadę po numerkach, bo nie ma pośpiechu. Dopóki nie będzie jakiejś automatyki, to i tak nie będzie widać efektu tej pracy, a tak to przy okazji rozglądam się po okolicach i udało mi się kilka dużych obszarów poprawić albo uszczegółowić.

Znalazłem dość irytujący problem, mianowicie Mapnik standardowo nie uwzględnia nowego schematu tagowania transportu (https://help.openstreetmap.org/questions/19349/rendering-of-public_transportplatform-on-mapnik), chociaż został wprowadzony ponad 2 lata temu. Niby nic, ale wobec tego na razie dodaję tag “highway=bus_stop” (dla autobusów), żeby przynajmniej na skórce standardowej i transportowej się wyświetlały.

Ten sam problem dotyka też stacji kolejowych - tam dodaję analogiczny “railway=station” jako protezę do wyświetlania (to nawet ważniejszy punkt niż przystanek autobusowy albo tramwajowy), ale widzę, że to jeszcze nie wszystko, bo nie to załatwia problemu dużych stacji, gdzie dla dobra pasażerów właściwie należy już robić mikromapowanie (w sensie budynek stacji, perony, przejścia, kładki itp.). Widzę, że teoretycznie uwzględnia to nowy schemat “public_transport” za pomocą relacji “stop_position” (http://wiki.openstreetmap.org/wiki/Pl:Tag:public_transport%3Dstop_area), ale nie bardzo rozumiem jak to się ma do elementu “station” (http://wiki.openstreetmap.org/wiki/Tag:public_transport%3Dstation). Na oko stacja to powinna być właśnie ta relacja nadrzędna, a miejsca postoju być tylko jego elementami, więc to dla mnie jest nieintuicyjne. A jak to jest w praktyce, wie ktoś?

Przyznam że się nie zagłębiałem.
Popatrz może jak to robią za granicą, może to coś wyjaśni? Berlin, Karlsruhe, Monachium, Amsterdam?
To w miarę mocne ośrodki.
No i mógłbyś nas potem nauczyć…

Obejrzałem Berlin Hbf i mam jeden wniosek - do takich rzeczy przydałyby się warstwy, zarówno w oglądaniu, jak i edycji, bo przy tylu poziomach jest to nieczytelne… Z Karlsruhe jest znacznie lepiej z czytelnością, ale oni też nie do końca trzymają się dokumentacji:

  • Budynek został oznaczony tylko jako “building=train_station” - żadnych “*=station”. Rozumiem że to po to, aby nie było więcej niebieskich kropek z nazwą stacji, a budynek i tak ma widoczne “name”, tylko dyskretniej. Jest dodawany do relacji w nieudokumentowanej roli “building”.

  • Kropka z nazwą stacji jest robiona jako samodzielny punkt typu “*=station”, dodawana do relacji w roli “label”, choć takiej też nie zdefiniowano. Nie jest to eleganckie, moim zdaniem taka kropka optymalnie powinna być oznaczana automatycznie po zapełnieniu relacji obiektami (tak jak numer budynku pojawia się po oznaczeniu obszaru), ale widać eleganciej się nie da. :slight_smile:

  • Relacja jest oznaczona jako “type=public_transport”+“public_transport=stop_area”. Dodawane są tam budynki, labelka, perony (legalna rola “platform”) i punkty zatrzymywania (też udokumentowana rola “stop”).

  • Oszustwo jest na peronach - zapewne w ramach pełnego trasowania indoorowego, wyjścia ze schodów i wind są połączone z brzegiem peronu wirtualną poprzeczną drogą typu “highway=footway”(+“indoor=yes”).

  • Ta stacja jest podobna do naszej Warszawy Wschodniej i tam budynek z wejściem od drugiej strony peronów nie ma nawet “name” (u nas miał to i dodatkowo “railway=station”), tylko należy do relacji.

Czyli to jest wszystko tylko tak mniej więcej. Dbają raczej o czytelny rendering (np. brak elementu “railway=station” w budynkach, żeby nie mnożyć niebieskich kropek oraz brak powierzchni “railway=station”+“area=yes”, żeby nie zaciemniać szczegółów) niż o logikę (np. powtórzony link do Wikipedii na budynku dworca i w relacji, wiszący punkt z nazwą stacji), a jedyny ukłon dla spójności opisu to podczepienie elementów dworca do relacji.

Mogę jeszcze spojrzeć na Monachium i Amsterdam, ale takie debugowanie jest dosyć męczące, więc zostawię to sobie na potem.

Zaraz stuknie 3 tysiąc wprowadzonych numerków…a ja właśnie skończyłem objeżdżać stolicę wkoło i przystanki w aglomeracji są wprowadzone. Muszę powiedzieć, że nie byłem świadom w jakie miejsca nasza komunikacja jest w stanie dojechać!

Co do braku renderingu nowego schematu to gdy już kiedyś ( :slight_smile: ) wprowadzą zmiany będzie można hurtowo skasować stare tagi z naszej okolicy, bo ja również stosuje podwójne tagowanie…
…jakby co to zabrałem się za wprowadzanie numerków 7000 wzwyż, czyli centrum. Oglądałem okolice dworca centralnego i pierwszy raz widzę, że jednak osm potrzebuje wprowadzenia warstw, bo naprawdę ciężko załapać co jest co przy takim natężeniu danych.

Życzę miłej “pracy” :wink: