Navit — zaawansowana konfiguracja
Zgodnie z zapowiedzią, a w związku z chwilowo większym zaangażowaniem w temat, proponuję dziś nieco informacji o konfiguracji programu Navit. Działania zmierzają do przygotowania, w mojej opinii, funkcjonalnego interfejsu z użyciem najnowszych bajerów dostępnych w standardowej kompilacji z rozwojowej gałęzi Debiana. To nie są najnowsze bajery w ogóle. Ale jeśli ktoś z szanownych czytelników pokusi się o samodzielną kompilację z najnowszych źródeł, to raczej mój przewodnik nie będzie mu potrzebny :). Będziemy pracować na standardowym „czystym“ pliku navit.xml dostępnym, po zainstalowaniu programu, w katalogu /etc/navit.
W ramach przygotowań należy w katalogu domowym utworzyć (lub znaleźć) katalog .navit. Katalog ten jest ukryty, więc trzeba doprowadzić do pokazania ukrytych katalogów w swoim ulubionym programie do zarządzania zbiorami (ileż ich jest :) ), albo wpisać odpowiednią ścieżkę z klawiatury (~/.navit). Do tego katalogu należy skopiować ów znaleziony w /etc/navit plik navit.xml. Edytowanie wspomnianego pliku w jego oryginalnej lokalizacji nie jest wskazane ze względu na to, że podczas aktualizacji pakietu będzie on nadpisany — nie bez naszej wiedzy jeśli go edytowaliśmy, ale jednak. Parametry, o których tu będzie bardzo konkretnie, są ogólnie i szeroko opisane na stronie Navitowej wikipedii oraz przy odrobinie cierpliwości dostępne są przykłady ilustrujące konkretne ich wykorzystanie.
Navit
Pierwszą czynnością jest edycja tagu <navit>.
center=‘5000 N 2000 E’ustalamy współrzędne punktu, do którego program będzie się odwoływał w przypadku braku danych z GPS. W tym przypadku chodzi o orientacyjne ustawienie widoku w takim miejscu, żebyśmy w ogóle widzieli pobraną mapę. Jeśli mamy podłączone i aktywne urządzenie GPS (lub dowolne inne źródło danych o pozycji geograficznej wykorzystywalne w systemie), to możemy ten punkt pominąć. Kiedy odbiornik ustali pozycję i zamkniemy program, to przy następnym uruchomieniu widok będzie ustawiony na tę ostatnią pozycję zapisywaną w pliku center.txt.
orientation=’-1′ czyli mapa ustawiona tak byśmy widzieli drogę przed sobą (orientacja zgodna z kierunkiem jazdy, w przeciwieństwie do orientation=„0“ czyli mapa zorientowana zawsze na północ)
zoom=‘128’ zbliżenie z jakim będzie się ukazywała mapa po starcie programu, wartość z zakresu od 1 do 2097152, 1 oznacza maksymalne powiększenie;
pitch=‘10’ czyli widok mapy pochylony o 10 stopni od normalnej do powierzchni mapy w kierunku orientacji mapy. 0 oznacza widok „z lotu ptaka“, 90 oznaczałoby, że patrzymy poziomo przed siebie (i prawie nie widzimy mapy), 270 lub –90 oznaczałoby, że patrzymy poziomo „do góry nogami“ wstecz. Tym parametrem i możliwościami jego modyfikacji zainteresujemy się w dalszej części poradnika.
OSD
Przy pierwszym uruchomieniu programu zobaczymy mniej więcej taki widok:
Lub, jeśli skonfigurowaliśmy źródło danych kartograficznych, taki:
Przydatne byłoby ustawienie elementów dostarczających dodatkowych informacji. Jeśli chodzi o elementy sterujące i informacyjne widoczne na ekranie głównym prócz mapy, to mając do dypozycji urządzenie wyświetlające o rozdzielczości 120 dpi i geometrii 1024×768 wybrałem następujące odpowiednio je rozmieszczając:
Informacja o odległości od celu, liczona po wyznaczonej trasie:
<osd enabled="yes" type="text" x="4" y="2" h="45" w="130" align="4"
label="D: ${navigation.item.destination_length}" font_size="350"/>
Według powyższego wzorca definiujemy wszystkie kolejne elementy. Typ elementu (type) dostępny jest w dokumentacji. Wszystkie elementy informacyjne akceptują znaczniki położenia lewego górnego rogu obiektu x,y i liczone są normalnie od lewego górnego rogu ekranu, a z minusem (-) od rogu przeciwnego. Konkretnie x=‘0’ y=‘0’ oznacza lewy górny róg ekranu, x=‘0’ y=’-0′ oznacza lewy dolny róg, x=’-0′ y=’-0′ oznacza prawy dolny róg. Znaczniki rozciągłości w(idth) i h(eight) można nadać wszystkim polom tekstowym i niektórym ikonom. Ustawiając elementy obok/ponad sobą podczas ustalania ich położenia należy brać pod uwagę ich wysokość i szerokość. Wszystkie pola tekstowe, skala, kompas akceptują znacznik font_size=’ ‘.
Nazwa następnej (w stosunku do tej, na której się znajdujemy) drogi/ulicy lub jej numer systematyczny (jeśli jest nadany) — dostępna po wyznaczeniu trasy podczas nawigacji:
<osd enabled="yes" type="text" x="137" y="2" h="55" w="650" font_size="600"
label="${navigation.item[1].street_name} ${navigation.item[1].street_name_systematic}"/>
Graficzna prezentacja następnego manewru, który nas czeka (koniecznie należy zachować rozwagę na rondach, które nie zawsze są dobrze wykreślone i poprawnie interpretowane przez program):
<osd enabled="yes" x="4" y="50" h="130" w="130" type="navigation_next_turn" />
I odległość do tego manewru:
<osd enabled="yes" type="text" x="4" y="183" h="45" w="130" align="4" font_size="350"
label="N: ${navigation.item[1].length[value]} ${navigation.item[1].length[unit]}" />
Przyciski sterujące zbliżeniem i nachyleniem mapy:
<osd enabled="yes" type="button" x="30" y="250" h="110" w="110" command="zoom_in();pitch=pitch<14?pitch+2:14;redraw_map()" src="gui_zoom_in.svg"/> <osd enabled="yes" type="button" x="30" y="380" h="100" w="100" command="zoom_out();pitch=pitch>0?pitch-2:0;redraw_map()" src="gui_zoom_out.svg"/>
Ponieważ wraz ze zbliżaniem się do powierzchni mapy, siłą rzeczy, widzimy coraz mniejszy fragment mapy tego co przed nami, to w tej definicji wykorzystano instrukcję warunkową, która wraz ze zbliżaniem nachyla widok w kierunku jazdy, oczywiście we w miarę rozsądnym przedziale. Oddalając w krokach 2 ° osiągamy w końcu widok „z lotu ptaka“ przybliżając zaś, znów w krokach 2 ° osiągamy kąt 14 °.
Skala dla orientacji w stosunkach odległości:
<osd enabled="yes" type="scale" x="2" y="-55" w="130" h="50" font_size="300" />
Nazwa ulicy, ew. systematyczny numer drogi na której się znajdujemy:
<osd enabled="yes" type="text" x="140" y="-60" h="55" w="650" font_size="600"
label="${tracking.item.street_name} ${tracking.item.street_name_systematic}" />
Czas jaki upłynie nim osiągniemy zaplanowany cel:
<osd enabled="yes" type="text" x="-172" y="2" h="50" w="170" align="4" font_size="350"
label="LFT: ${navigation.item.destination_time[remaining]}" />
Godzina przyjazdu do zaplanowanego celu:
<osd enabled="yes" type="text" x="-172" y="54" h="50" w="170" align="4" font_size="350"
label="ETA: ${navigation.item.destination_time[arrival]}" />
Aktualna prędkość (dla porównania chociażby ze wskazaniami prędkościomierza):
<osd enabled="yes" type="text" x="-172" y="107" h="50" w="170" align="4" font_size="350"
label="SPD: ${vehicle.position_speed}" />
Wysokość na której się znajdujemy:
<osd enabled="yes" type="text" x="-172" y="160" h="50" w="170" align="4" font_size="350"
label="ALT: ${vehicle.position_height}" />
Kompas, pokazuje północ — białą strzałką i azymut na nasz cel — zieloną strzałką, oraz odległość do celu w prostej linii:
<osd enabled="yes" type="compass" x="-172" y="213" h="195" w="170" font_size="350" align="14"/>
Jako uzupełnienie kompasu, cyfrowa postać aktualnego azymutu:
<osd enabled="yes" type="text" x="-172" y="245" h="70" w="170" font_size="400"
background_color="#00000000" label="${vehicle.position_direction} D" />
Przycisk przełączający udzielanie/nieudzielanie wskazówek mówionych:
<osd enabled="yes" type="button" src="gui_sound.svg" x="-150" y="410" w="90" h="90" command="speech_active=!speech_active" />
Przycisk anulowania przebiegu nawigacji:
<osd enabled="yes" type="button" x="-77" y="410" w="90" h="90" command="gui.abort_navigation()" src="gui_maps.svg"/>
Zerowalny i przeżywający wyłączenie programu odległościomierz:
<osd enabled="yes" type="odometer" w="220" h="55" x="-222" y="-60" font_size="350" align="15"
label="DT:${distance} MS:${avg_spd}" name="persistent_odometer_1" disable_reset="0" />
Po wprowadzeniu powyższych ustawień (w przypadku kopiowania proszę zadbać by pomiędzy „<“ a “ />“ każdego znacznika osd nie było znaku nowej linii, zawijanie wierszy przez edytor może tu zaciemniać obraz, należy albo włączyć numerowanie linii, albo wyłączyć zawijanie wierszy) otrzymamy coś co wygląda mniej więcej tak:
Vehicle
Przejdźmy teraz do konfiguracji tagu <vehicle>, interesujące nas wartości to:
follow= ‘1’ czyli każda pozycja odebrana z GPS spowoduje odświeżenie mapy — dla urządzeń o małej mocy obliczeniowej to bardzo dobry sposób by oszczędzić nieco taktów procesora — wtedy należy zwiększyć tę wartość, ale bez przesady.
lag= ‘10’ czyli korekcja opóźnienia pozycji uzyskanej każdorazowo z GPS w stosunku do rzeczywistej pozycji pojazdu w dziesiątych częściach sekundy, wartość rekomendowana zawiera się pomiędzy 10 a 20, trzeba trochę poeksperymentować z tymi wartościami dla konkretnego odbiornika GPS/systemu
Log
Oraz tag <log> umieszczany w obrębie tagu <vehicle>:
type=‘gpx’ jeśli chcemy bez kłopotu (konieczności konwersji danych) uczestniczyć w rozwijaniu Openstreetmapy
enabled=‘yes’ :)
data=’~/tracks/%Y%m%d-%i.gpx’ tu mamy mozliwość zdefiniowania ścieżki gdzie nasze trasy będą zapisywane oraz sformatować nazwy plików %Y oznacza rok, %m — miesiąc, %d — dzień, %i — kolejny numer pliku z danego dnia
overwrite=‘0’ znaczy dane będą dopisywane na końcu pliku
flush_size=’ ‘; flush_time=’ ’ ustawienie któregoś (lub obydwu) z tych parametrów powoduje, że plik z trasą jest utrzymywany w pamięci i zapisywany na dysku po osiągnięciu któregoś z zadanych warunków, nadanie któremuś z tych parametrów wartości ‘0’ spowoduje zapisywanie danych na bieżąco.
Wielkość czcionki
Program niestety nie honoruje systemowego ustawienia dpi dlatego czasem pożądana jest zmiana wielkości czcionki napisów opisujących elementy prezentowane na mapie (nazwy miejscowości, ulic, numery dróg). Są skrypty w perlu umożliwiające skalowanie tematu, ale ze względu na dynamiczny rozwój programu i zmieniające się formaty ikon nie zawsze się sprawdzają. Pewnie można by przygotować jakiś skrypt samodzielnie, z wykorzystaniem perla, awka lub seda, nie jest to jednak czynność, którą wykonuje się często. Póki co, niezawodna okazała się metoda polegająca na znajdowaniu ciągu opisującego określony rozmiar i ręcznej (półautomatycznej) zamianie wartości. Przykładowa procedura zwiększania rozmiaru czcionki wygląda następująco:
Otwieramy plik navit.xml dowolnym edytorze tekstu, który dysponuje funkcją „znajdź i zamień wszystkie“, znajdujemy ciąg
<text text_size="24"/>
i chcąc zwiększyć czcionkę o +4 pt zamieniamy w całym pliku ten ciąg na:
<text text_size="28"/>
Edytor zazwyczaj poinformuje nas ile zamian dokonał. Czasem będzie to zero — zatem w przedziale wielkości użytych czcionek jest „przerwa“. Następnie wyszukujemy ciąg opisujący czcionkę o stopień mniejszą:
<text text_size="23">
i zamieniamy go w całym pliku o wartość przesuniętą o +4, czyli na:
<text text_size="27">
Czynności te powtarzamy, aż osiągniemy i nadpiszemy rozmiar bodajże 7 pt. Należy pamiętać, że zwiększając czcionkę zaczynamy „od góry“ (tak jak w opisywanym przykładzie — zwiększamy wartości większe), zmniejszając zaś idziemy „od dołu“ (zmniejszamy wartości mniejsze) tak by nie powtarzać edycji tych samych wartości. W przeciwnym przypadku zrównamy sobie wielkości czcionki jak walcem.
Zapraszam do wymiany poglądów i doświadczeń oraz do zwiększania estetyki i użyteczności zaproponowanych ustawień :)
Możesz jeszcze przeczytać:
- Wolne mapy i Navit — openstreetmap i garmin
- USB FM radio czyli igraszki z ALSĄ
- Komputeryzacja to rewelacja
- Tranzystorowy wyłącznik z opóźnieniem
- Navit
Kategorie: CarPC, GNU/Linux, Technika, Vademecum | Tags: CarPC, GPS, Navit, Nawigacja, Openstreetmap, Programy, Technika, Vademecum Skomentuj »


