Witajcie ponownie. Zapraszamy do lektury kolejnego odcinka naszej opowieści z cyklu „Rusz się z Move”. Odcinek ten otwiera serię kilku kolejnych artykułów opowiadających o tych elementach programu, które sprawiają, że Move staje się naszymi „oczami”. Nie będziemy opowiadać o funkcjach ściśle nawigacyjnych, program nigdzie nas nie prowadzi, ale pozwala nam zauważyć wiele z tego, co widzą osoby widzące. Zaczniemy od punktów.
Świat we wzory
Na początek kilka słów o sposobach tworzenia map. Kiedy systemy nawigacji satelitarnej stały się powszechnie dostępne, wykorzystano je do tworzenia map niezbędnych do nawigacji. Pewnie niektórzy z Was słyszeli o dziwnych samochodach z ogromnymi antenami na dachach jeżdżących po ulicach. Te właśnie pojazdy z logiem takiej lub innej firmy zapisywały dane satelitarne m.in. o przebiegu ulic. Aby zwiększyć precyzję nanoszenia danych na mapy (mapowania), trzeba przejechać ulicą kilkukrotnie; dlatego tworzenie takich map jest drogie. Po dokonaniu niezbędnych pomiarów Dopasowuje się zapisane przez pojazdy dane do zdjęcia satelitarnego wybranego obszaru. Dlaczego tak? Po prostu zdjęcia robione przez satelity są świetne jako warstwa ilustracyjna, ale rozdzielczość aparatów fotograficznych montowanych w satelitach jest zbyt mała by pojedynczy punkt mapy był określony z odpowiednią dla nawigacji dokładnością. Satelity poruszają się z prędkością wielu kilometrów na sekundę, na precyzję fotografii ma wpływ wilgotność atmosfery; chmury, mgła, a także np. ilość pyłu czy zanieczyszczeń. Ktoś powie, że to najwyżej kilka metrów błędu. Owszem, ale sami wiecie jaka niska może być dokładność pozycjonowania w pochmurne dni. Kilka metrów plus kilkanaście w chwili odczytu wyniku i mamy np. 25 metrów różnicy. Błąd wskazania może być wtedy tak duży, że aplikacja nam powie, iż jesteśmy na innej ulicy niż faktycznie. Dlatego decyduje ślad zarejestrowany przez pojazdy pomiarowe.
Tak powstaje wzór głównych ulic. Tam, gdzie nie dojadą pojazdy wysyła się ludzi z niewielkimi rejestratorami śladu albo uzupełnia się dane z lokalnych baz geodezyjnych. Do wzoru głównych dróg dodaje się linie lokalnych szlaków komunikacyjnych, ścieżek i dróżek. Do tak zarejestrowanych ulic dodaje się ich nazwy, informacje o liczbie pasów ruchu, ich szerokości a nawet tworzywa, z którego są wykonane (asfalt, kostka brukowa, żwirek). Wstawia się także adresy miejsc, budynków przypisując je do danej ulicy. Cyfrowy obraz naszej planety staje się bardziej Precyzyjny a na mapach kolorowy.
Jak zapewne rozumiecie, to dodatkowo podnosi koszt stworzenia takiej mapy i każda aktualizacja wymaga sporo pracy.
Zbyt mało do powiedzenia
Kiedy około 20 lat temu udało się stworzyć aplikacje do nawigacji działające na pierwszych smartfonach, pomyślano o dostosowaniu programów do potrzeb niewidomych. Sprawa wydawała się prosta, udostępnić interfejs w taki sposób, żeby można było wpisać, adres punktu docelowego, wybrać rodzaj trasy i tyle.
W rezultacie powstały programy drogie, sugerujące np. zmianę pasa ruchu na prawy za 150m. Komunikaty te pojawiały się nawet po wybraniu Trybu Pieszego. Bardzo mnie bawiły takie polecenia.
Jednak sama nawigacja była o tyle przełomem, że rzeczywiście potrafiła przeprowadzić po trasie w tak zwanym trybie zakręt po zakręcie, co w obcym mieście było sporym ułatwieniem. Niestety osoby niewidome nie dostawały informacji o mijanych obiektach, przejściach dla pieszych, a częstotliwość komunikatów bywała na ogół niewystarczająca.
Dlaczego program mówił tak mało? Po prostu wielu informacji nie było na mapie, bo ich twórcom wydawało się, że są one kierowcy nie potrzebne. Twórcy map zastosowali filtry zostawiając to, co ich zdaniem może się przydać w podróży kierowcom.
Drugi powód to graficzne mapy. Pewnie nie raz spotkaliście się z tzw. graficznym plikiem PDF. Dla widzącej osoby jest on całkiem zwyczajny. Mamy tekst, obrazki, linki, ale dla czytników ekranu to po prostu obraz. Tam, gdzie są linki wstawia się punkty aktywujące łącza.
identyczna sytuacja ma miejsce w przypadku map graficznych. Widząca osoba widzi linie ulic, nazwy budynków, ale to tylko część graficznego obrazu bez warstwy tekstowej, więc nasze programy milczą. To główny powód, dla którego programy dostosowane dla niewidomych wymagają dodatkowego, dużego nakładu pracy programistów – muszą one mieć stworzoną nakładkę tłumaczącą graficzną mapę na tekst. A co jeszcze trudniejsze, programiści muszą umieć przeanalizować tak zwane surowe dane mapowe i zrobić tak, żeby aplikacja te mapy odpowiednio opowiadała, często nawet bez wyświetlania warstwy graficznej.
Świat w „kropki”
Alternatywą do aplikacji samochodowych były programy do nawigacji pieszej dla niewidomych oparte o zbiory punktów. Punkty to nasze „kropki.” Ale nie takie zwyczajne, lecz precyzyjnie zdefiniowane poprzez unikatowe współrzędne geograficzne, choć nie tylko. Przypisuje się bowiem do tych punktów również wiele różnych innych informacji, które zapisywane są w tak zwanych tagach.
Można powiedzieć, że wszystkie mapy składają się z punktów. Albo takich pojedynczych np. punkt adresowy, albo łączonych w różne struktury np. ulica czy obszar. Przypominacie sobie zapewne ze szkolnych czasów lekcje matematyki, podczas których uczono nas, że linia (w uproszczeniu ulica) lub płaszczyzna (w uproszczeniu obszar),dadzą się opisać jako zbiory kropek, albo jak wolicie punktów. O rodzajach tagów oraz struktur, które można tworzyć z punktów, opowiemy w przyszłości.
Źródła punktów
Nasza aplikacja ma dwa podstawowe źródła punktów. Bazy danych i punkty pochodzące z ogólnoświatowego serwisu społeczności osób mapujących, który nazywa się OpenStreetMap – OSM. Więcej o tym projekcie dowiecie się z zasobów internetowych. Te zbiory punktów pobierane są na bieżąco w pakietach zwanych kaflami. Inna sytuacja ma miejsce, jeśli korzystamy z baz punktów; musimy je pobrać i zainstalować w programie.
Bazy zawierające punkty
Tutaj należy wspomnieć o Grzegorzu Złotowiczu, który bardzo wcześnie zaangażował się w udostępnianie zbiorów punktów w formie baz danych pochodzących z innego serwisu mapowego UMP – Universal Map of Poland – Uniwersalna Mapa Polski. Nadal przetwarza i udostępnia on swoje bazy. Znajdziecie je w witrynie https://gps.zlotowicz.pl.
Po zaimportowaniu i aktywacji baz z połączonego z aplikacją serwisu Dropbox lub z pamięci urządzenia można ich używać off line – bez dostępu do internetu i konieczności zużywania danych komórkowych. To jest ich główna przewaga nad danymi mapowymi, które są pobierane na bieżąco.
Te bazy mogą zawierać pogrupowane zbiory punktów np. adresy, komunikacja publiczna, skrzyżowania ulic, ale można też wczytać takie zbiory które zawierają wszystkie informacje. Pamiętajcie jednak, że baza danych zawierająca punkty z całej Polski zajmuje sporo miejsca w pamięci smartfona. Ja osobiście wolę mniejsze pliki, które aktywuję w miarę potrzeb pojedynczo lub kilka na raz.
I jeszcze jedna ważna informacja, te bazy, które przygotowuje Grzegorz Złotowicz obejmują głównie teren Polski i są aktualizowane zasadniczo raz w roku – na ogół przed majówką.
Grzegorz stworzył również narzędzie umożliwiające konwersję baz z innych formatów do takich które można wczytać do naszego programu. Konwerter znajduje się w aplikacji Seeing Assistant Move na karcie/ekranie „więcej”. Możecie przekonwertować np. bazy punktów z aplikacji Dot Walker
punkty z OSM
Podstawowym źródłem punktów dla Move są jednak zasoby OSM. Możecie wybrać z jak dużej okolicy dane mają być wczytywane do programu. Jeśli np. poruszacie się pieszo, nie ma problemu z zasięgiem sieci komórkowych to w ustawieniach/punkty OSM wystarczy ustawić promień pobierania z OSM np. na 2km. nie ma sensu pobierać od razu wielkiego fragmentu mapy. Gdy będziemy się zbliżali do krawędzi pobranego fragmentu mapy, to automatycznie Będą doczytywane kolejne – zgodnie z kierunkiem naszego poruszania się. Takie fragmenty mapy nazywamy kafelkami.
Jeśli jednak poruszacie się komunikacją zbiorową, jedziecie samochodem to lepiej jest ustawić większy promień pobierania z OSM by zapobiec sytuacji, w której program zamilknie, bo nie zdąży sobie pobrać punktów z kolejnych fragmentów mapy. Odpowiednie ustawienia znajdziecie na ekranie “ustawienia” w sekcji „Monitorowanie” lub „punkty z OSM”
Pobieranie większych fragmentów map z OSM przydaje się również w sytuacji zagranicznych podróży. Często w hotelach mamy dostęp do sieci Wi-Fi. Możemy wtedy pobrać kafle dla dużego obszaru np. ustawiając promień pobierania punktów OSM na 20km, wejść na ekran zawierający najbliższe punkty z OSM, stuknąć np. w kategorie zawierające wszystkie punkty i poczekać aż fragmenty mapy zostaną pobrane i zapisane w smartfonie. Nie musimy wtedy korzystać z transferu danych w roamingu w sieciach komórkowych, żeby kafle pobierać na bieżąco podczas przemieszczania się.
No dobrze, a co jeśli chcemy pobrać dane siedząc w domu, wiedząc, gdzie się wybieramy tak, by czekały na nas, kiedy dotrzemy na miejsce? Nic prostszego. Wpiszcie adres, pod który się wybieracie, włączcie symulację lokalizacji, wejdźcie na ekran zawierający najbliższe punkty z OSM, stuknijcie np. w kategorie zawierające wszystkie punkty i pozwólcie programowi pobrać dane z wybranego miejsca. Teraz wystarczy wyłączyć tryb symulacji lokalizacji i już. Pobrane kafle poczekają na was, chyba że je usuniecie.
Punkty zapisane
W aplikacji Seeing Assistant Move możecie się też natknąć na przycisk „zapisane punkty”. To w rzeczywistości też jest baza danych zawierająca punkty, które użytkownik do niej doda. Ale o punktach zapisanych opowiemy w kolejnych artykułach z tej serii.
Jest pytanie, jest odpowiedź
OpenStreetMap, a także inni dostawcy danych mapowych pozwalają na używanie swoich serwisów zawierających zbiory punktów w jeszcze inny sposób, a nasz program potrafi z nich korzystać. Na czym polega ta inna metoda? A no na tym, że nie musimy pobierać do aplikacji ani baz danych, ani punktów z fragmentów map, tylko przesyłamy do nich odpowiednio spreparowane zapytanie. Ta metoda odpytywania serwerów została nazwana reverse geocoding – odwrotne geokodowanie. Brzmi skomplikowanie, ale bez obaw.
Jak to działa?
Po naciśnięciu np. Przycisku „najbliższy punkt z OSM/nominatim, nasza aplikacja odczyta współrzędne geograficzne punktu naszego położenia – długość i szerokość geograficzną. Taką małą paczuszkę zawierającą te „magiczne” cyferki wysyła do serwera, na którym znajduje się zbiór wszystkich punktów z całego świata. To narzędzie odnajduje najbliższy punkt do tego, którego współrzędne wysłaliśmy i przesyła do naszego smartfona jego nazwę np. Ul. Pawia 55 Warszawa. Jak widzicie, nie ma tu jakiejś bardzo skomplikowanej magii a jedynie trochę cyferek.
W następnym odcinku
W kolejnej części opowiemy głównie o tym, jak nasz program wykorzystuje tagi punktów żebyśmy mogli tworzyć ich tematyczne kategorie. Wyjaśnimy, jak można wyświetlić punkty w okolicy z wybranej kategorii i jak dodatkowo zawęzić kryteria wyszukiwania. Pokażemy też, w jaki sposób możemy się dowiedzieć o kierunku, w którym znajdują się punkty w odniesieniu do naszego położenia oraz o tym jak możemy wyszukać dowolny adres na mapie świata.
PS.
Drodzy czytelnicy, dziękujemy Wam za ciepłe słowa o naszych artykułach i za kierowane do nas pytania. Cieszy nas bardzo Wasze zainteresowanie. Wybaczcie, niestety, na stawiane pytania nie będziemy na bieżąco odpowiadali w kolejnych artykułach. Z doświadczenia wiemy, że potrzebne jest usystematyzowanie wielu pojęć związanych z obsługą naszych aplikacji wspierających nawigację osób niewidomych i słabowidzących. Mamy przemyślany i precyzyjny plan na to, jak krok po kroku przeprowadzić was tą zawiłą drogą, zaczynając od rzeczy najłatwiejszych i stopniowo przechodząc do tych trudniejszych. Będziemy bardzo zadowoleni, gdy zechcecie nam kroku dotrzymać.