Komunikacja miejska dla niewidomych na terenie Śląska

Pominłęłeś najważniejszy tag - highway=bus_stop (na przystanku autobusowym) (razem z 5/4) czy railway=tram_stop (na tramwajowym) (razem z (1))

(tagi public_transport są w zasadzie zbędne i można je pominąć bez jakiejkolwiek straty)

A 2 to amenity=shelter, nie amenity=shalter

Jeśli nazwa ta jest na tabliczce z nazwą przystanku to chyba może do name to trafić?

Jeśli nie jest - to czy numer nie pasuje czasem do tagu ref?

Jesteś pewien? Np https://www.openstreetmap.org/#map=19/50.09736/18.55039 ma highway=bus_stop w miejscu oczekiwania podróżnych/słupka i jest to typwe mapowanie.

https://www.openstreetmap.org/#map=19/50.26198/19.01809 ma błędnie zaznaczone highway=bus_stop - na jezdni

Ja nie planuję ingerować w istniejące tagi. Umieściłem w swojej notatce te, którymi się różnią poszczególne obiekty.

Planuję jedynie dodać tag “blind:name” do wybranego obiektu, najlepiej słupka (miejsca oczekiwania podróżnych) lub dodać słupek z tagiem, gdy słupek nie istnieje.

Niestety nie ma identyfikatora. W Warszawie jest, na Śląsku nie.

“Refy” nie są honorowane przez wszystkich dostawców aplikacji dla niewidomych. Jedni ich używają (DotWalker) inni nie (Lazarillo, Seeing Assitant Move) i nie zamierzają. Mam to potwierdzone korespondencją.

Rybnik faktycznie ma miejsca postojowe dla oczekujących - wielki plus dla osób tworzących te mapy. Natomiast Rybnik należy do ZTZ, nie ZTM. Katowice i okolice nie mają takich słupków w OSM.

Dlatego chcemy dodać taki słupek, lub jak jest błędnie umieszczony, to poprawić jego pozycję na podstawie wytycznych z ZTM.

Czy uważacie, że automatyczne dodanie do słupków tagu “blind:name”, dodanie słupków jeżeli nie istnieją lub poprawa ich pozycji gdy jest błędna to dobra droga?

“Słupek nie istnieje” w sensie że jest w terenie, a brak w OSM?
Bo jakoś nie mam pewności…

Dokładnie tak.

Przykładowe pozycje słupków ZTM dla przystanku Piotra Skargi:

Katowice	Katowice Piotra Skargi	2	50.261809	19.018798
Katowice	Katowice Piotra Skargi	3	50.261939	19.018476
Katowice	Katowice Piotra Skargi	4	50.262097	19.018154

Przykłady:

Brak słupków:

  1. Aglomeracja Śląska
    Katowice Piotra Skargi
    Bytom Dworzec - 12 przystanków, tylko miejsca postojowe autobusów
    Katowice Rondo - 2 duże platformy
    Chorzów rynek

  2. Poznań
    Poznań Uniwersytet Ekonomiczny
    Poznań Główny

  3. Warszawa
    Warszawa Centrum 03

Wniosek jest taki, że w miastach, gdzie nie ma słupków dominują:

  • miejsce zatrzymania autobusu
  • platforma lub fragment ścieżki dla pieszych
  • ewentualnie wiata

Są słupki:

  1. Rybnik
    Rybnik Tadeusza Kościuszki

  2. Wrocław
    Wrocław Dworcowa
    Wrocław Komuny Paryskiej

  3. Kraków
    Muzeum Armii Krajowej N/Ż

Słupki w tych trzech lokacjach mają wspólne tagi:

  • bus=yes
  • highway=bus_stop
  • public_transport=platform

Pytanie, czy dodanie 6500 słupków, jeżeli nie istnieją lub dodanie tagu do istniejących słupków, w obszarze ZTM z niczym nie koliduje i jest zgodne z ogólnie przyjętą konwencją?

Ps. Formalnie wiaty na przystankach nie zawsze są obok słupków, czyli autobus nie zawsze zatrzymuje się obok wiaty, czasem z wiaty trzeba kawałek dojść. Wynika to z faktu, że słupki należą do komunikacji miejskiej, a wiaty do miasta/gminy. Natomiast zawsze przy słupkach zatrzymuje się autobus. Platformy są często bardzo duże i niewidomy stojąc w dowolnym miejscu platformy nie będzie wiedział, gdzie zatrzymuje się tramwaj/autobus - przykład Katowice Rondo.

Jeśli tag “blind:name” ma być konkatenacją name i refu (1,2,…), to lepiej z niego zrezygnować i zrobić raczej tag “blind:ref” lub podobny.
Powielenie nazwy w name i “blind:name” spowoduje, że w przypadku zmiany nazwy przystanku, przeciętny mapujący OSM poprawi nazwę tylko w “name”, a w “blind:name” zostanie stara nazwa.
https://wiki.openstreetmap.org/wiki/Namespace#Over-namespacing
“over-namespacing leads to inconsistency in the database: if we have projectfoobar:name=xxx and name=xxx, in many cases one will be updated and not the other. The simpler and more generic is the key, the more used it will be, the more curated it will be.”

  1. i co to zmienia co do poprawności tagowania?
  2. jeśli olewają szeroko stosowany tag to czemu by mieli by stosowac jakiś specjalny?

Choć przyznaje, co do ref mam pewne wątpliwości - co jeśli mamy przystanek o kodzie 4 w ramach danej nazwy a 26726B w ramach pełnej inwentaryzacji obiektów MPK?

Te 2,3,4 to są local_ref.

Ten tag jest zbędny, gdyż nie wprowadza żadnej nowej informacji. Skoro są chętni na obsługę nowego tagu, to nie powinni mieć też problemu z łączeniem name z local_ref (lub z innymi tagami).

Tak jak już kiedyś pisałem na innym wątku, jest oprogramowanie do synchronizacji baz danych GTFS z OSM.
https://github.com/CUTR-at-USF/gtfs-osm-sync
Bazy danych z przystankami też są ogólnodostępne https://otwartedane.metropoliagzm.pl/dataset?organization=zarzad-transportu-metropolitalnego&organization=metropolia-gzm&tags=rozk%C5%82ad+jazdy&license_id=other-at&tags=ekologia&res_format=ZIP

Problem w tym że dane ZTM miejscami są tragicznej jakości. Praktycznie każdy przystanek trzeba przeglądać, są mniejsze lub większe przesunięcia.

Patrząc też na to jak szybko zachodzą zmiany, najciekawszym rozwiązaniem było by przetłumaczenie gtfs-osm-sync, może dostosowanie do polskich realiów i lobbowanie u zarządców za jego używaniem.

Co do nowych tagów to zadał bym pytanie twórcą tych programów dlaczego nie chcą ich obsługiwać . Z wyjaśnieniem że obsługiwanie jakiś nowych wiąże się ze zmianą konwencji tagowania w osm. Jak się okaże że to nieudolność programistów można pomyśleć nad jakąś zbiórką pieniędzy dla programisty który im pomoże :smiley:

Ogólnie planuję, aby tag “blind:name” nie był aktualizowany ręcznie, tylko co jakiś czas automatycznie. Przystanki z systemu ZTM mają unikatowy identyfikator, który również planuję dodać do słupka. Dzięki temu automatyczna aktualizacja stanie się realna. Nie wiem natomiast gdzie mogę umieścić ten identyfikator, skoro ref jest czasem (ale nie zawsze) używany jako numer przystanku. W Łodzi w refie jest pełny identyfikator.

Tak jak wyżej napisałem faktycznie ZTM ma swój unikatowy identyfikator oraz numer przystanku np. 1, 2, 3, 1t, 2t. Na terenie Śląska w refie jest numer przystanku.
Co powiecie na dodatkowy tag

operator_id=1234567

przeznaczony na identyfikator operatora?

Ps. Na podstawie identyfikatora można również automatycznie zaktualizować pole url.

Sugerujesz, żeby zrobić dodatkowy tag “local_ref”, który będzie miał tylko numer przystanku i łączyć go z polem name? Dystrybutorzy aplikacji różnie wypowiadają się nt. tagu “ref”, natomiast zapewnienie dodatkowego tagu oraz zaprojektowanie sposobu działania mogłoby mieć szansę powodzenia. To rozwiązanie elimnuje duplikację pola “name”.

To nie dobrze.

Zauważyłem, że ten (https://github.com/CUTR-at-USF/gtfs-osm-sync) program ma możliwość wgrania przystanków do OSM, a później zbierania danych o poprawkach wprowadzonych przez społeczność. Takie dane można by dostarczyć później ZTM usprawniając późniejsze aktualizacje automatyczne.

Niestety to jest Java, my tworzymy program w C#. Możemy się na nim wzorować, ale utworzenie od podstaw programu spełniającego Polskie realia wydaje mi się bardziej prawdopodobne. Ważne, że szlak został już przetarty.

Jeden z dostawców zapewnia, że jego program jest używany na całym świecie i nie planuje czytania tagu “ref” osobom niewidomym ponieważ w każdym kraju, i jak wychodzi z powyższych zapisów również w każdym mieście, ten tag służy do czegoś innego. Na nowy tag “blind:name” mam wstępną zgodę, pod warunkiem, że będzie ogólnie używany. Nikt nie chce tracić czasu na zmiany w oprogramowaniu z powodu czegoś, co może okazać się niepotrzebne.

**Odnośnie bazy pozycji przystanków z ZTM o wątpliwej jakości. **

Właśnie dostałem odpowiedź od osoby odpowiedzialnej za tą sprawę, że obecnie trwa inwentaryzacja wszystkich przystanków i proces jest w połowie ukończony. Planowany termin zakończenia inwentaryzacji to koniec sierpnia 2020.
Zakładam, że wtedy baza danych będzie lepszej jakości.

Planujemy zrobić oprogramowanie, które porówna obecne przystanki (miejsce postoju autobusu) z pozycjami słupków (miejsce oczekiwania pasażerów) i jeżeli odległość nie będzie przekraczała kilku metrów to zrobimy update automatyczny, w przeciwnym przypadku będzie wymagana ingerencja człowieka.

Dodatkowo, wg. zaleceń ze strony https://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct zrobimy update przy użyciu małych partii np. po 100 - 200 przystanków.

Z tego względu mam do Was dwa pytania.
Czy macie doświadczenie w weryfikacje tak dużej ilości danych?
Czy istnieje w Polsce społeczność która może nas wesprzeć w weryfikacji zaimportowanych danych?

Właśnie zakończyłem pracę nad planem importu dodatkowych przystanków. Jest on dostępny na tej stronie wiki OSM: https://wiki.openstreetmap.org/wiki/Automated_edits/luktar/Stop_signs_for_blind#The_opinion_of_companies_producing_navigation_solutions_for_the_blind

To jest propozycja i może ulec zmianom, oczywiście na lepsze :), ale ogólny sens został zachowany.
Wszelkie uwagi są mile widziane.

Największą niewiadomą jest dobór odpowiedniego programowania do zrobienia importu 6500 przystanków. Chodzi o to, aby w przyszłości te przystanki mogły być aktualizowane automatycznie, po wykryciu zmian w strukturze danych dostarczanych przez przedsiębiorstwa komunikacyjne. Będę wdzięczny za podpowiedzi w tym temacie.

Jeżeli stop_id to „the GTFS id from transportaion company for this particular stop”, to dlaczego nie użyć jednego z tagów opisanych na Wiki? Np. gtfs_id albo gtfs:stop_id.

Dlaczego stop_no, a nie local_ref?

Wg. mnie gtfs_id brzmi lepiej niż stop_id, pytanie czy to jest standard?

Rzeczywiście ten tag jest popularny. Dziwne, że analizując klikanaście miast w Polsce się z nim nie spotkałem.

Pytanie do Was - czy użycie pary gtfs_id oraz local_ref jest lepszym pomysłem niż stop_id i stop_no?

Taki import można zrobić nawet samym JOSM z wtyczką Opendata a aktualizować (rozumiem że np. położenie bądź nazwę przy założeniu że stop_id się nie zmienia) w zasadzie nawet tylko w Excelu, bez dodatkowego oprogramowania.

O wiele ważniejsze pytanie jest co chcemy importować.
Na stronie podajesz schemat gdzie zarówno do przystanków autobusowych jak i tramwajowych używasz public_transport=platform.
Problem w tym, że public_transport=platform może być mapowany jako węzeł (najbardziej podstawowa infrastruktura), jako linia (odpowiadający obszarowi peronu) bądź jako obszar (dla najbardziej rozbudowanej infrastruktury). Czyli tam gdzie mamy teraz tylko węzły po imporcie jest OK (scalamy i aktualizujemy położenie), ale tam gdzie mamy public_transport=platform jako linię bądź obszary zasadniczo public_transport=platform występowałby 2 razy, raz jako dotychczasowo zmapowany way lub area i drugi raz jako węzeł.
Dodatkowo widzę problem dla przystanków tramwajowych. Tu planujesz użyć railway=tram_stop. Problem w tym, że w OSM railway=tram_stop używamy jako węzeł na torach, więc z definicji import byłby niepoprawny, bo lokowałby je poza torami.
Zasadniczo z tego co zrozumiałem, zaimportowane miałyby być współrzędne słupków przystankowych? Czyli o ile są one prawidłowo oznakowane w terenie przez zarządcę powinny odpowiadać położeniu znaku drogowego traffic_sign=PL:D-15 / traffic_sign=PL:D-17 (już kiedyś pisałęm o tym w tym wątku).
No i ostatnia kwestia, czyli jakość danych – sprawdziłem sobie kilkanaście przypadkowych danych z importu i niestety wydaje się, że często te współrzędne nie odpowiadają faktycznemu położeniu słupka.

Czy ten program (razem z wtyczką) będziemy mogli uruchomić na serwerze, aby robił automatyczne aktualizacje, czy jest raczej przeznaczony dla użytkowników końcowych?

Ciekawa uwaga, natomiast nie rozumiem dlaczego dodatkowy obiekt z tym tagiem mógłby sprawiać problem. Podpatrzyłem to rozwiązanie na przystanku Rybnik Kościuszki, tam właśnie w ten sposób został oznaczony słupek. Czy takie oznaczenie, oprócz nawarstwienia tagów public_transport=platform, coś psuje?

W tym przypadku wzorowałem się na powyższym przykładzie (Rybnik Kościuszki), gdzie słupek autobusowy ma oznaczenie highway=bus_stop.
Jest to zgodne z Wiki:

Być może lepiej będzie oznaczyć słupek tramwajowy railway=platform? Źródło.

Niestety nie do końca rozumiem te oznaczenia.

Obecnie trwa inwentaryzacja w ZTM, która się zakończy w połowie września. Tak czy inaczej weryfikacja pozycji słupków jest konieczna i planuję zaangażować w to ZHP. Pytanie, czy można to zrobić przed importem, czy konieczne jest przemieszczanie obiektów już istniejących.

One feature, one OSM element. Jeżeli na OSM istnieje linia lub obszar public_transport=platform, to jak będzie wyglądać import dla takiego przystanku? Powstanie nowy węzeł highway=bus_stop lub public_transport=platform z tagami gtfs/ref/itp., czy tagi gtfs/ref/itp. zostaną dodane do tego istniejącego obiektu (linii/obszaru)? A jeśli (przed importem) oprócz tej linii/obszaru będzie jeszcze węzeł highway=bus_stop?

(Rybnik Kościuszki jest zmapowany jako węzeł (plus stop_area i stop_postition), więc w obu przypadkach powinien być prawidłowo otagowany po imporcie.)

Może nie tyle traktować railway=platform jako słupek, co dodać do tych peronów importowane tagi. Jeśli mogą być dodawane do linii i obszarów (ale wtedy nie importujemy współrzędnych), a nie tylko węzłów.

Współrzędne słupków można tak otagować, ale tagi gtfs/ref/itp. raczej należą do highway=bus_stop lub public_transport=*.

Gdzie można przeczytać licencję dla tych danych? Na https://otwartedane.metropoliagzm.pl/ nie znalazłem jej treści.

Wybaczcie opóźnienie w odpowiedzi. Byłem na dość długim urlopie offline.

Zasadniczo nie ma jej na stronie internetowej. Znajdziesz tam tylko odnośnik do Open Definition. Dostałem potwierdzenie, że to jest ODbl po kilkukrotnej wymianie mailowej z przedstawicielami ZTM. Oto cytat:

Mam nadzieję, że to wystarczy.

Planuję zrobić import na dwa sposoby:

  1. Jeżeli słupek istnieje to dodam do niego dodatkowe tagi (gtfs_id oraz local_ref)
  2. Jeżeli słupek nie istnieje to dodaję nowy + tagi

Słupek planuję wstawić bez względu na to, czy istnieje obszar zaznaczony jako platform (public_transport=platform), czy nie.
Alternatywnym rozwiązaniem jest dodanie tagów do obiektów reprezentujących miejsce zatrzymania się pojazdu (railway=tram_stop lub highway=bus_stop), ale wtedy osoba niewidoma traci rzeczywistą informację o położeniu słupka przystankowego i, co gorsza w przypadku niewyczuwalnych krawężników*, może wyjść przez pomyłkę na ulicę.

    • niskie krawężniki będące ułatwieniem dla osób na wózkach sprawiają kłopot osobom niewidomym, ponieważ nie są oni często w stanie wyczuć białą laską gdzie kończy się krawężnik, a zaczyna ulica. Oczywiście jeżeli zejście z chodnika nie jest oznaczone tzw. ścieżką dotykową (takimi wypustkami)

W tym przypadku planuję wyłącznie dodać do węzła dodatkowe tagi.

Czy dobrze rozumiem, że sugerujesz aby dodać tagi do wszystkich obiektów wchodzących w skład przystanku zamiast tworzyć nowe węzły? Wydaje mi się, że to będzie duży problem dla dostawców aplikacji dla niewidomych. W jaki sposób nakierować użytkownika na obiekt, który jest obszarem, nierzadko dość dużym (przykład). Myślę, że już lepszym rozwiązaniem byłoby wstawienie tagów do istniejących węzłów.

maro21 zaproponował w tym wątku, aby unikalny identyfikator przystanku umieścić w tagu ref. Zrobiłem ponowną analizę kilkunastu miast w Polsce i poza nią, i okazuje się, że tag “ref” w każdym innym mieście, oprócz aglomeracji Śląskiej, zawiera właśnie unikalny identyfikator.

Czy nie będziecie mieli nic przeciwko, jak zamienię “ref” na unikalny identyfiaktor na terenie Śląska?

Czy powinienem jeszcze gdzieś zapytać, czy tutaj wystarczy?

Ale taki jest standard tagowania przystanków na OSM: tag ref=* to numer przystanku
https://wiki.openstreetmap.org/wiki/Tag:highway%3Dbus_stop
I jest wspierany przez edytory, aplikacje i mapy.

Podobnie z numerem peronu - jest na to tag local_ref. Który też jest obsługiwany przez aplikacje, np: https://www.xn–pnvkarte-m4a.de/#2.5677;48.9452;18

Jeśli chodzi o Katowice, to są tam błędnie wpisane te numery. Mogę ci napisać skrypt poprawiający te numery przystanków.