Komunikacja miejska dla niewidomych na terenie Śląska

W tej chwili do UMAP wgrałem dataset z OSM (pozycje przystanków pobrane overpassem jako GeoJSON) i dataset z ZTM (CSV).

Jak wiadomo pozycje przystanków w ZTM i w OSM są różne. ZTM zawiera pozycje słupków przystankowych, a OSM pozycje zatrzymania się autobusu/tramwaju.

Chcę dodać do OSM dane z ZTM, czyli identyfikator przystanku umieścić w pole ref i numer przystanku w pole local_ref, wg. zaleceń maro21.

Nasz algorytm łączy ze sobą większość przystanków ZTM z OSM, ale wiele z nich pozostaje bez pary. Problemy z jakimi się spotkaliśmy to:

  • zbyt duża odległość miedzy pozycją przystanku ZTM i OSM
  • niezgodność nazwy
  • przypisanie dwóch lub więcej przystanków z ZTM do OSM
  • brak przystanku ZTM na mapie OSM

Aby rozwiązać ten problem potrzebny jest czynnik ludzki, bo żaden algorytm nie jest w stanie połączyć tych przystanków w bezbłędny sposób. Do tego potrzebujemy, albo użyć istniejącego oprogramowania, albo napisać swoje własne (Marcin P. - członek zespołu, będzie jutro prezentował prototyp takiego rozwiązania - jeżeli jesteście zainteresowani to podeślę link do spotkania).

Oprogramowanie powinno działać w następujący sposób:

  1. Wgrywamy dwa datasety na jedną mapę, tak aby się wyświetlały np. przystanki z ZTM na niebiesko, a z OSM na czerwono
  2. Użytkownik sprawdza, czy przystanki zostały połączone w poprawny sposób (np. po identyfikatorze) - ten krok jest niezbędny dla przystanków błędnie zmapowanych przez nasz algorytm
  3. Użytkownik łączy przystanek OSM i ZTM lub, gdy przystanek w OSM nie istnieje, dodaje go na warstwę
  4. Po zakończonej pracy generowany jest plik ze zmianami (np. osmchange - tylko o nim czytałem, nie wiem jeszcze jak działa), który można wgrać do OSM

Umap pozwala wyświetlać dwa datasety (ZTM + OSM), ale nie pozwala wygenerować z warstwy z datasetem OSM pliku importu, który można by wgrać z powrotem do OSM’a.

Na prawdę się staram ten proces opisać w miarę prosto, ale może mi się tylko wydawać, że tak jest. Zachęcam Was do pytań.
Możemy również zrobić spotkanie online - chętnie wyjaśnię cały proces i plan działania.

Zasadniczo umap dostarcza tylko wizualizację, ale popatrzyłem, i owszem, da się wyeksportować warstwę z Umap do formatu JSON:
https://www.openstreetmap.org/user/rmikke/diary/394571

Dzięki za instrukcję. Rzeczywiście pobrany plik to GeoJson. Wygląda na to, że można sobie wgrać warstwę, zmienić parametry i pozycję i pobrać plik GeoJson.

Dzisiaj na spotkaniu naszego zespołu doszliśmy do wniosku, że zrobimy osobne narzędzie, które pozwoli nam parować obiekty w graficzny sposób. Będzie to polegało na tym, że wczytamy warstwę punktów z przystankami z OSM i warstwę z przystankami ZTM. Następnie użytkownik będzie mógł kliknąć na obiekt (przytanek) OSM i pasujący do niego obiekt ZTM i pojawi się między nimi linia łącząca. Do połączonych obiektów OSM zostaną dodane dane z ZTM (ref i local_ref). Narzędzie będzie oparte na komponencie JS o nazwie leaflet.

Narzędzie planujemy udostępnić harcerzom i musi być w miarę wygodne. Niestety nie znalazłem (a szukałem w internecie dobrą chwilę) możliwości połączenia obiektów z różnych warstw w UMAPie. To by rozwiązało problem parowania.

Ostatnio poprawiałem tagowanie platform przystankowych na Śląsku, kilka osób zmieniało je po swojemu i zainteresowałem się jak to jest z komunikacją w Berlinie i innych miastach Polski. Okazuje że mamy na Śląsku odmienną konwencje od reszty kraju.
Dajemy highway=bus_stop w miejscu zatrzymania a reszta kraju używa tego tagu w miejscu platformy, słupka.

Zmiana tego była by bardzo prosta, wystarczy wykasować z miejsc zatrzymania highway=bus_stop, ale ten tag powoduje że wyświetlają się nazwy na mapie głównej i innych.

I tu jakimś pomysłem po zniknięciu nazw było by zaimportowanie tych słupków z ZTM z tagiem highway=bus_stop. Sprawdziłem teraz świeżą bazę z GTFS i nie są najlepszej jakości niestety. Ale taki zabieg dał by kompleksowe dane. Wystarczyło by tylko przeciągać słupki w miejsce platform, zajęło by to pewnie kilka lat ale nie stracili byśmy żadnych danych, pozyskali dużo nowych.

Takie dane gdyby ozdobić dużą ilością tagów z GTFS można by szybko odnaleźć overpasem, jeśli by się to nie sprawdziło skasować. Jeśli by się sprawdziło łatwo edytować. Można by też ZTM zainteresować.

Z tego co wiem: nie tylko kraju, to jest raczej generalnie preferowany schemat.

To jest stary sposób oznaczania (ale możliwy i poprawny).
Kiedyś przystanki oznaczało się highway=bus_stop jako węzeł na drodze dla przystanków w obu kierunkach (czasami dwa węzły).
Jest drugi sposób oznaczania, gdzie osobno mapuje się słupek przystankowy, a osobno miejsce zatrzymania.

Hej Olo, właśnie pracujemy nad narzędziem, które w przeglądarce wyświetli na mapie przystanki ZTM oraz przystanki OSM. Przystanki ZTM będą pobrane z najnowszego CSV’a udostępnionego przez ZTM, a OSM będą pobrane Overpassem. Jestem już po wstępnej rozmowie z Komendant Hufca ZHP Katowice. Ideą tego narzędzia będzie będzie możliwość graficznego porównania rozbieżności między przystankami ZHP i OSM oraz połączenia ich ze sobą tak aby jednemu przystankowi OSM odpowiadał tylko jeden z ZTM. W efekcie uzyskamy bazę danych w której będzie zestawiony obiekt OSM ze wszystkimi tagami połączony z odpowiadającym mu obiektem ZTM również ze wszystkimi danymi. Największą zaletą tego rozwiązania jest fakt, że porównania i parowania przystanków dokonają ludzie, a nie automat (który okazał się bezużyteczny).

W pierwotnym planie mamy zamiar zaktualizować przystanki OSM o dodatkowe dwa tagi, o których pisałem już wcześniej i które wg. mnie bardzo słusznie podpowiedział maro21, czyli ref i local_ref.

Mając bazę z połączonymi przystankami będziemy mogli nawet usuwać te tagi po id (OSM) i dodawać słupki wg. wytycznych ZTM (o jakości danych poniżej)

.

Nowa baza ZTM jest pod tym linkiem.
Dostałem informację, że jakość się poprawiła.
W pierwotnym planie nie miałem zamiaru ingerować w pozycję przystanków ZTM, ale być może przy okazji łączenia przystanków ZTM z OSM można by poprawić pozycję słupków ZTM. Na pewno nasze algorytmy wykryły, że w niektórych miejscach nie ma przystanków na mapie OSM, które są w ZTM - te przystanki dodamy.

Mając wsparcie harcerzy ogarniemy przystanki w kilka miesięcy, może nawet w mniej niż kwartał.

Racja.

Dane przystanków są tutaj 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 już od dawna, aktualizowane niemal codziennie. Nie zauważyłem poprawy tych danych.

Co do edycji mapy przez osoby które nigdy tego nie robiły jestem sceptyczny. Już pierwsza wasza akcja pokazała jakość tych edycji, bubel na bublu. A popsucie relacji jest dosyć proste.
Druga sprawa że jest już jakaś konwencja i stopniowe jej zmienianie spowoduje początkowo konflikty. Jeśli te zmiany nie będą odpowiednio opisane w komentarzach do edycji będzie tak jak ze mną po zobaczeniu tych bubli, będziecie mieć wiele osób nieprzychylnych.
Dobrze się zastanówcie jak to chcecie zrobić, żeby nie skończyło się frustracją.

Myślę, że to kwestia możliwości, jakie się da tym osobom. StreetComplete nie daje dużych możliwości spartolenia. Ma być, jak rozumiem, apka do tego, można ją zrobić tak,eby spartolenie wymagało złej woli.

Maro, a masz może przykłady takich miejsc. Ja znam tylko Rybnik.
Czy to nie koliduje z platformami?

To są stare dane. W ZTM robili ostatnio inwentaryzacje i aktualizowali pozycję wszystkich przystanków. Dane udostępniłem w linku w moim poście. Polecam kontakt z ZTM dla pewności.

Olo konkrety - co się stało, kiedy, kto to zrobił? Bubel na bublu nic mi nie mówi. To było prawie 2 lata temu, a Ty to dalej rozpamiętujesz. Może rzeczywiście coś spartoliliśmy, ale nam tego nie wytłumaczyłeś, tylko warczałeś.
Cofnięcie changeseta nie powinno powodować takiej frustracji. Każdy popełnia błędy, najważniejsze to wyciągać z nich wnioski i iść dalej. Wszędzie znajdziemy ludzi narzekających dla samego narzekania i nic z tego nie wynika. Mam nadzieję, że na dłuższą metę nie należysz do tej grupy osób, bo Twój przedostatni wpis był bardzo ciekawy i konstruktywny. Nawet zapomniałem, że niejako przez Twoje uwagi napisałem na tym forum.

Bez obaw, robimy wszystko zgodnie z Import Guidline i Automated Edits code of conduct co zostało w tym wątku zasugerowane - zresztą słusznie. Wcześniej nawet nie wiedzieliśmy, że coś takiego istnieje.

Ps. Bez urazy, ale nadużywasz słowa “bubel”. Polecam słownik synonimów https://www.synonimy.pl/synonim/bubel/

Hmmm… to co my tu tak właściwie robimy?

Dokładnie tak. Tworzymy apkę, która nie da wielu możliwości spartolenia :). Lepiej bym tego nie ujął. Dodatkowo każda zmiana, przez osobę mniej doświadczoną będzie sprawdzana przez dodatkową osobę przed wgraniem do OSM.

Ps. Jeżeli jesteście zainteresowani zaangażowaniem się w tworzenie tego projektu lub wsparcie merytoryczne poza forum to zapraszam do kontaktu osobistego.

No Wrocław i na pewno też inne miasta.
https://www.osm.org/node/1701711189 - public_transport=platform
https://www.osm.org/node/267871849 - public_transport=stop_position

Warszawa: platform, stop_position.

Właśnie obserwuję Wrocław i bardzo podoba mi się to rozwiązanie komunikacyjne. Mam jedną wątpliwość odnośnie obszaru pod platformą, tego kawałka chodnika, który ma tagi area:highway=footway.

Podobna sytuacja dla przystanku “Świdnicka” została rozwiązana w taki sposób, że zarówno słupek jak i obszar pod nim ma tag:

public_transport=platform

Tutaj link.

To jest dobry przykład, natomiast zauważyłem, że stosowanie słupków nie jest standardem w Warszawie. Są zamiennie stosowane z obszarami, wiatami lub drogami pieszymi.

My możemy wprowadzić do OSM dodatkowe słupki przystankowe ZTM z pozycjami poprawionymi przez ludzi. Słupki mogłyby występować wspólnie z obszarami, wiatami i drogami pieszymi przypisanymi do przystanków, tylko czy to nie zaburzy reguły “one feature one element” opisanej wcześniej przez gscscnd? Czy jest jakiś sposób, żeby umieścić słupki jako obiekty współistniejące?

Ps. Jak mogę wysłać link do obiektu, tak jak to zrobiliście powyżej? W edytorze nie widzę takiej opcji.

Co to jest słupek?

  • highway=bus_stop to jest przystanek autobusowy, zaznaczany w miejscu oczekiwania podróżnych. Być może w tym samym miejscu, co słupek.

  • public_transport=platform to jest miejsce oczekiwania podróżnych albo peron. Jeżeli przystanek posiada węzeł highway=bus_stop, to ten sam węzeł może otrzymać [pt]=platform. Narysowanie osobno highway=bus_stop i [pt]=platform jest OK, ale narysowanie ich osobno i użycie jednego z tagów na obu obiektach wydaje mi się sprzeczne z one feature one OSM element.

  • public_transport=stop_position to nie jest słupek.

  • highway=platform+[pt]=platform mógłby być słupkiem jeżeli nie byłoby obiektu highway=bus_stop.

  • Wiatę oznaczamy albo jako dodatkowy tag (shelter) do obiektu highway=bus_stop (wtedy wiata może być słupkiem), albo rysujemy jako osobny obiekt.

Był kiedyś tag, który miał oznaczać słupek, ale chyba został zaniechany.

  • Na openstreetmap.org użyj narzędzia Pobierz i wyświetl obiekty lub Warstwy→Dane mapy, lub wyszukiwarki.

  • W JOSM zaznacz obiekt i wybierz menu Widok→Szczegóły (strona internetowa) (Ctrl+Shift+I).

  • W iD (nie używaj iD) zaznacz obiekt i użyj linka Wyświetl na openstreetmap.org znajdującego się w lewym dolnym rogu.

Udostępniając linka pomiń część po znaku # — dzięki temu po jego kliknięciu nie zmienią się wybrane nakładki/warstwy (np. Uwagi).

(1) https://wiki.openstreetmap.org/wiki/Query_features_tool

(2) W iD po zaznaczeniu obiektu w lewym dolnym rogu jest “View on openstreetmap.org

(3) W JOSMie też to gdzieś jest

(4) Można w Overpass Turbop wyszukać

(5) https://wiki.openstreetmap.org/wiki/Map_Data_layer

Tagi [area:highway] zignoruj - to nie ma związku z przystankami ani komunikacją miejską.

Tam jeszcze brakuje chyba highway=platform.
Ale perony to już dodatkowe szczegóły - tam się nie podaje nazwy, refa itp.

We Wrocławiu przystanki są tagowane tak:
Autobusowe:
przystanek autobusowy: węzeł w miejscu słupka z rozkładem jazdy

highway=bus_stop
public_transport=platform
bus=yes
+dodatkowe tagi (name, ref, operator, network i inne)

miejsce zatrzymania autobusu: węzeł na drodze (ulicy) z tagami:

public_transport=stop_position
bus=yes
name=
ref=

Tramwajowe:
przystanek tramwajowy: węzeł w miejscu słupka z rozkładem jazdy

public_transport=platform
tram=yes
+dodatkowe tagi (name, ref, operator, network i inne)

miejsce zatrzymania tramwaju: węzeł na torowisku z tagami:

railway=tram_stop
public_transport=stop_position
tram=yes
name=
ref=

I w sumie tylko te 4 rzeczy będą ci potrzebne w tym imporcie. Lub może nawet 2 - miejsc zatrzymania raczej nie zaimportujesz z danych urzędowych.

Witajcie po dłuższej przerwie. Postanowiłem, że następnym razem jak do Was napiszę to już z jakimś konkretem.

Oto on: https://youtu.be/5eGUTa94dhw

W ciągu ostatniego pół roku utworzyliśmy prototyp systemu, który pozwoli na:

  1. Łączenie w graficzny sposób przystanków z systemu OSM z ZTM
  2. Sprawdzenie, czy połączenia robione przez użytkowników zostały wykonane poprawnie (drugi poziom weryfikacji)
  3. Podzielenie edytowanych danych na sektory
    • zastosowaliśmy kafelki. Więcej informacji.
    • podział mapy na kafelki zapewni sprawny podział pracy między użytkowników - każdy będzie edytował inny obszar
  4. Wgranie zmodyfikowanych danych na serwer OSM
    • podział na kafelki pozwala na wgrywanie mniejszych obszarów, zamiast wyrywkowo całej mapy Śląska

W dużym uproszczeniu, na mapie wyświetlają się przystanki z ZTM i OSM i użytkownik może je połączyć. Automatyczne łączenie się nie sprawdziło; algorytm nie dawał rady i łączył dane bez sensu, więc konieczne jest robienie tego ręcznie. Automatyczny import ZTM do OSM nie wchodzi w grę ze względu na słabą jakość pozycji przystanków nawet po inwentaryzacji - przystanki są w budynkach, na ulicy itd.

Nie planujemy modyfikować istniejących przystanków w OSM, a tylko dodać do nich dane.
Na podstawie danych z ZTM do każdego przystanku z OSM zostaną dodane następujące dane:

ref - identyfikator przystanku, zwykle kilkucyfrowy np. 1234567
local_ref - numer przystanku, zwykle 1 - 2 znaków np. 1, 2t

W przyszłości chcemy, aby można było dodawać nowe przystanki i usuwać z mapy te, których nie ma już w ZTM, ale na to przyjdzie jeszcze czas.

Nad wygenerowaniem pliku .osc z lokalnej bazy danych i wgrywaniem ich do OSM jeszcze pracujemy.

Mam do Was następujące pytania:

  1. Czy możemy przetestować nasze importy na jakimś serwerze testowym, czy raczej powinniśmy wgrywać zmiany bezpośrednio na OSM i je wycofywać gdy coś będzie nie tak?
    Znalazłem taką stronę https://wiki.openstreetmap.org/wiki/Using_the_dev_server. Wolałbym jednak nie stawiać swojego serwera, tylko skorzystać z jakiegoś istniejącego. Czy spotkaliście się z takim rozwiązaniem?
  2. Zdarzają się sytuacje, że jeden przystanek przynależy do dwóch stref np. Katowic i Rybnika. Zastanawiam się, czy wtedy w polu ref i local_ref umieścić dwa identyfikatory, czy może obok identyfikatora dodać informację o źródle?
ref = 12345, 33333
local_ref = 1t, 4

czy

ref = 12345(ztm), 33333(mzk)
local_ref = 1t(ztm), 4(mzk)

Pozdrowiam!

Myślę, że nie będzie problemu jeśli zaczniesz od najmniejszych porcji danych, czyli najpierw zaktualizuj tak jeden przystanek, sprawdź czy wszystko ok, potem zaktualizuj 3 przystanki, sprawdź czy wszystko ok, potem 10 itd.

Wysłane zmiany możesz sprawdzić tym narzędziem: https://overpass-api.de/achavi/?changeset=000000000
gdzie 000000000 to numer zestawu zmian

Serwer testowy jest tutaj: https://api06.dev.openstreetmap.org

ref:ztm=12345
ref:mzk=33333

Muszę sprawdzić, czy producenci nawigacji będą w stanie to przeczytać niewidomym…

Co do zasady, to oni powinni się dostosować do nas, a nie odwrotnie.