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ą:
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.
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”.
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.
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
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ć 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
Widzę, że Alkomat zaczął po lewej stronie Wisły grzebać, ale i tak przydałaby się pomoc…
Edit: Będę wybierał przystanki spoza Warszawy 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 Może się przyda komuś
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:
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ę 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
Dobra…teraz pytania dot. trwającej roboty
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?
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?
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ę…
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.