Warszawa - komunikacja miejska

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.

Najwyraźniej chodzi o to, że plik składa się z kilku sekcji i te przystanki mogą się gdzieś powtarzać, pewnie w opisie linii. Trzeba ograniczyć działanie skryptu do sekcji “ZP” (tzn. między znacznikiem “*ZP” a “#ZP”) i dalej nie przetwarzać - opisy linii są w dalszej sekcji “LL”.

Tak też działa ostatnia wersja. Uzupełniłem o kodowanie.

Uff, na dziś dość, na razie stanąłem na zespole 1100. Dzięki temu skryptowi oznaczanie refów idzie stosunkowo sprawnie, a zdarzające się czasem korekty położenia albo dodawanie brakujących przystanków nie absorbują więcej uwagi niż powinny!

Widzę, że Javnik też ruszył z kopyta - czy jedziesz wedle numerków zespołów, czy po obszarach?

Oczywiście dużo lepszy byłby skrypt, który porównywałby plik z bazą i tworzył raport z danymi o obecności przystanku w jakimś promieniu, odległości od wsp. oraz jego tagowaniu. To już jednak nie moja liga. Na pewno byłby lepszy na przyszłość do wyłapywania nowych/usuniętych przystanków.

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