Wstęp
Navit to otwarte oprogramowanie nawigacyjne, które zapewnia możliwość nawigacji na różnych platformach.
Dlaczego własna nawigacja miałaby być lepszym rozwiązaniem niż powszechnie dostępne nawigacje w smartfonach czy tabletach? Otóż Navit nie zbiera Twoich danych, nie wymaga dostępu do internetu i zawiera najnowsze, aktualne, szczegółowe mapy, które można zaktualizować w każdej chwili. Co więcej jest to bezpłatne oprogramowanie typu Open Source.
Navit można uruchomić na:
- systemach operacyjnych: Linux, Windows, macOS, Android
- urządzeniach mobilnych (smartfony, tablety)
- systemach nawigacji samochodowej
W tym artykule - jako forma wprowadzenia i prezentacji możliwości - przedstawione zostaną podstawowe zagadnienia budowania i konfiguracji Navit na zwykłym komputerze typu PC z dystrybucją Debian 12, jednak analogicznie można to wykonać na innych systemach operacyjnych, w tym oczywiście na Windows czy macOS.
Mając podstawowe informacje w kolejnym artykule zbudujemy kieszonkową nawigację podręczną dla popularnego urządzenia Raspberry Pi.
Jak to działa?
Oprogramowanie w wersji gotowej do uruchomienia (skompilowanej) dostępne jest tutaj. Dostępne są również zdjęcia poglądowe uruchomionej nawigacji.
Własna kompilacja oprogramowania daje jednak znacznie większe możliwości niż uruchomienie gotowej aplikacji. Możesz aktywować funkcje lub wyłączyć niepotrzebne moduły, zmienić kolorystykę, grafikę, ustawić własne mapy i wiele więcej!
Navit to oprogramowanie, które "zasilane" jest mapami pobieranymi oddzielnie. Navit wspiera kilka rodzajów map, lecz jednym z najpopularniejszych (i aktualnych) jest OpenStreet Map. Jest to potężna baza map z całego świata, dlatego w tym artykule opisany zostanie również sposób pobrania interesującego nas obszaru.
Kompilacja oprogramowania
Repozytorium i biblioteki
Pierwszym etapem jest pobranie kodu źródłowego zlokalizowanego w repozytorium Git (w serwisie GitHub). Najnowsza gałąź "trunk" zawiera aktualne zmiany, jednak tutaj pobrana zostanie ostatnia wersja stabilna, w tym przypadku v.0.5.6:
https://github.com/navit-gps/navit
Teraz wystarczy wybrać przycisk Code Download ZIP.
Przeglądając lub edytując pliki z kodem źródłowym warto mieć wygodne narzędzie do tego przeznaczone, np. Visual Studio Code, dostępne na różne platformy do pobrania tutaj. Nie jest to jednak niezbędne.
Aby zbudować/skompilować Navit potrzebne będą dodatkowe biblioteki i narzędzia. Aby je zainstalować w systemie Debian należy wykonać kolejno:
sudo apt update
sudo apt install build-essential cmake libgtk2.0-dev librsvg2-bin libdbus-glib-1-dev libglib2.0-dev libdbus-1-dev libxml2-dev zlib1g-dev libtool librsvg2-bin libsqlite3-dev gpsd gpsd-clients libgps-dev
Kompilacja i uruchomienie
W głównym katalogu pobranego kodu źródłowego znajduje się katalog "navit" do którego należy przejść:
cd navit
Następnie utworzymy katalog build i do niego przejdziemy:
mkdir build
cd build
Teraz przygotujemy projekt wykonując polecenie cmake z uwzględnieniem katalogu głównego projektu (../..), a następnie zbudujemy całość poleceniem make:
cmake ../..
make
Po pomyślnej kompilacji można skonfigurować Navit, aby używał
odpowiednich map i ustawień. Konfiguracja Navit odbywa się za pomocą
pliku tekstowego navit.xml (możesz go znaleźć w katalogu wynikowym navit-0.5.6/navit/build/navit). Samą aplikację możemy uruchomić wydając polecenie w tym samym katalogu:
./navit
Jeśli na pewnym etapie pojawił się błąd, prawdopodobnie niektóre biblioteki/zależności nie zostały poprawnie zainstalowane lub są w nieodpowiedniej wersji. W takim przypadku należy prześledzić komunikaty kompilacji.
Konfiguracja mapy
Mapy OpenStreet można pobrać na kilka sposobów. Ze względu na ich duży rozmiar warto pobrać region, który nas interesuje: https://download.geofabrik.de/
Innym sposobem jest zaznaczenie interesującego nas obszaru za pomocą opcji "Manually select a different area" i wybranie "Overpass API":
Mapę można zapisać pod dowolną nazwą, np. roma.osm.
Pobraną mapę należy przekonwertować do formatu obsługiwanego przez Navit. Aby to zrobić należy zainstalować polecenie maptool oraz wykonać:
cat roma.osm | grep "\S" | maptool roma.bin
gdzie roma.osm jest pobraną wcześniej mapą, natomiast roma.bin jest binarnym plikiem wynikowym obsługiwanym przez Navit. Dodatkowo zastosowano polecenie grep "\S", którego celem jest usunięcie pustych wierszy, których niektóre wersje maptool nie akceptują.
Pobraną mapę kopiujemy do katalogu .../build/navit/maps oraz zmieniamy wpis w pliku navit.xml:
<mapset enabled="yes">
<map type="binfile" data="$NAVIT_SHAREDIR/maps/roma.bin" />
</mapset>
Tylko jeden wpis "mapset" może być aktywny (enabled="yes"). Może on natomiast zawierać kilka map.
Teraz uruchamiając aplikację wczytywana jest nowa mapa. Jeśli nie widać nowego obszaru warto przeskalować mapę, ponieważ punkt startowy może być poza obszarem nowej mapy.
Możesz się spotkać z innymi rozszerzeniami map, które należy uprzednio przekonwertować. Procedura wygląda analogicznie dla:
PBF:
maptool --protobuf -i my_osm_map.osm.pbf my_navit_map.bin
OSM (czasami wymagane jest usunięcie pustych wierszy z OSM)
maptool -i my_OSM_map.osm my_Navit_map.bin
BZ2 (skompresowane)
bzcat my_osm_map.osm.bz2 | maptool my_navit_map.bin
Podsumowanie
Warto zaznaczyć, że to dopiero początek możliwości. Przeglądając plik navit.xml można zauważyć, że interfejs użytkownika wyświetlany jest za pomocą struktury HTML, którą można oczywiście zmodyfikować! Dostosować można również:
- Sposób wyświetlania i kolorystykę map
- Źródło danych GPS (gpsd, statyczny plik)
- Elementy użytkownika (zoom in, zoom out, kompas, tryb pełnoekranowy)
- Preferencje tras i wiele więcej
Powodzenia!