Warszawa - komunikacja miejska

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.

Już uzupełniłem poprzedni post - niestety ‘dla szybkiego’ może być problemem - plik jest wielki :wink: Może to co pokazuje się na stronie może mieć mniejszą formę.
Mam rozumieć, że na stronie ma się pojawić nazwa itp., czyli wszystko z pliku tekstowego, co jest przed wsp.

@marimil: rzeczywiście, wielki… :slight_smile:

Wobec tego może wystarczy, żeby z tego wychodził plik z listą podlinkowanych numerów, w sensie:

<ul><link>xxxxxx</link></ul>

Ja to sobie mogę ręcznie podzielić na mniejsze porcje, bylem wiedział do czego dany link prowadzi.

Wersja tylko z numerami:

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

Wersja dla całych opisów:

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

Wyniki wydają się lżejsze dla przeglądarki i mam nadzieję, że działa dla innych plików :wink:

Ta dłuższa wersja jest fajna, tzn. dobrze gdyby zawierała też samą nazwę przystanku, ale to wymaga chyba większego parsowania, czyli sięgnięcia do jednego z wcześniejszych wierszy (tego, w którym podany jest numer i nazwa zespołu), więc na razie wystarczy - wielkie dzięki!

Niezła jazda z tymi plikami :wink: Dla autobusów chyba jeszcze jest znośnie ale tramwaje.

Jakiś skrypt wydłubałem. Testowałem tylko na jednym pliku i mam nadzieję, że działa na innych. Dla autobusów pokazuje to co chciałeś, z tramwajami nie walczyłem (o ile w ogóle tam coś na ten temat jest). Między linkami dla tramwajów pokazują się jakieś numery-śmieci.

EDIT. A nie, pomyliłem - tam się linki do przystanków powtarzają i nie ma rozdziału ze względu na środek lokomocji.

Mam pytanie w sprawie nieczynnych przystanków - np. ten autobusowy koło Budowlanej 03: http://www.openstreetmap.org/?mlat=52.281040&mlon=21.026620&zoom=18#map=19/52.28108/21.02662. Nie ma go w bieżącym spisie zespołu “Budowlana”, choć jego nazwa pozostała (bez numerka) i niewykluczone, że kiedyś będzie znów w użyciu, więc szkoda kasować. Niestety nie znalazłem w opisach tagów jak oznaczać takie nieczynne przystanki, ale może ktoś z was ma na to pomysł?

Poprawione.

@kocio
Czy dobrze rozumuję, że współrzędne są zdublowane?

Zastanawiam się w ogóle, czy nie lepiej zrobić jakiś parser do jakiegoś w miarę standardowego formatu pośredniego (np. jakaś odmiana XML), i dopiero tamten obrabiać?

Być może nawet nie warto się męczyć i na początek zasięgnąć w tej sprawie języka u samego ZTM, skoro sami zapraszają:

(Pewnie chodzi o ten formularz: https://secure.ztm.waw.pl/?c=115&l=1)

Chodzi ci o ten nieczynny? Użyłem współrzędnych istniejącego przystanku obok, bo nie chciało mi się kombinować, a leżą tuż koło siebie.

Nie, nie, spokojnie. Akurat takie linki kliknąłem i myślałem, że druga część (z rozkładami) dotyczy tramwajów. Nie przyjrzałem się dokładnie.
A to jest podzielone na sekcje z dodatkowymi szczegółami.

I nie chodzi mi o ten nieczynny, tylko o plik ogólnie.

Nowy skrypt jest jeszcze bardziej przydatny! Dałbym tylko w nagłówku HTML-a kodowanie Windows 1250, żeby tekst był w pełni czytelny.

Ale chyba nie rozumiem o co chodzi z tymi zdublowanymi położeniami przystanków - podaj przykład, ja w każdym razie takiego nie spotkałem.

Nie chodzi mi o zdublowanie przystanków, tylko powtarzają się wpisy dotyczące jednego przystanku.
Najpierw jest lista z czterocyfrowymi numerami. Dalej te numery i nazwy powtarzają się uzupełnione o wpisy z sześciocyfrowymi numerami i współrzędnymi przystanków. Dużo dalej między rozkładami z godzinami też pojawiają się wpisy z sześciocyfrowymi numerami (jednak nazwa tutaj jest z tej linii z numerem czterocyfrowym) i współrzędnymi przystanków. Trochę zamieszałem ale nie znam się na nazewnictwie tych wpisów w pliku.
Przykład dwóch linii “wyrwanych” z pliku z 5.05:


   7911   WARSZAWA RDMIECIE WKD,        --  WARSZAWA
         791101   1      Ul./Pl.: WARSZAWA,                         Kier.: WARSZAWA OCHOTA WKD,              Y= 52.227560     X= 20.999990  
               791101  WARSZAWA ŚRÓDMIECIE WKD,       --    Y= 52.227560     X= 20.999990  

Z tym, że (dla pliku z 5.05) zamiast 25536 linii z linkiem jest ich tylko 7911. Więc albo coś gubimy albo część wpisów jest wielokrotnych.

EDIT. Np. dla przystanku 100101 w pliku jest 10 wpisów z tymi samymi współrzędnymi.
Czyli możemy wnioskować, że ostateczny skrypt wybiera to co trzeba i plik jest 4x mniejszy.