Poszukaj w Google...

piątek, 1 lutego 2013

RNEG i aktualizacja bazy fotoradarów



W wielu autach możemy spotkać wbudowane nawigacje. Często do wielu różnych marek dostarcza je ten sam producent. Nie wiem jakie umowy podpisują między sobą wytwórcy aut i systemów nawigacyjnych, ale zazwyczaj to co trafia do aut nie jest najwyższych lotów, a do tego aktualizacje pojawiają się z rzadka i trzeba za nie słono zapłacić. Da się to przeżyć, choć z bólem, jednakże każdy pewnie chciałby mieć w miarę regularną aktualizację POI i map fotoradarów. Nawigacja montowana w Citroenach i Peugeotach - tzw. RNEG (MyWay) ma możliwość ostrzegania o fotograficznych atrakcjach, jednakże tutaj wracamy do punktu wyjścia - rzadkość aktualizacji i dostępność. Cała baza to raptem jeden plik, specjalnie spakowany. I tymże plikiem się na dzisiejszych zajęciach zajmiemy;-) 

Zacznę od podziękowań dla kolegów z Hiszpanii, Francji, Włoch i Niemiec, bowiem to na ich forach znalazłem niezbędną wiedzę i program. Pozostało tylko przetestować i podzielić się z resztą w ojczystym języku. Tym bardziej że władzuchna nasza kochana dała ITD nadzwyczajne uprawnienia, a ta z uporem i ochotą zajęła się zbójowaniem na drogach. Nowe fotoradary rosną jak grzyby po deszczu, ale co ciekawe - trochę ich znika. Wyparowały gołębniki z przebudowanego odcinka "gierkówki", a nawigacja nadal o nich ostrzega. Dlatego więc szczególnie zainteresowałem się tematem aktualizacji bazy radarowej. 

Zaczynamy. Na początek potrzebujemy specjalny program i kartę pamięci z mapami. Rozpakowujemy program i do jego katalogu wkładamy dwa pliki z naszej oryginalnej karty pamięci: 

hazardareas.lwd - to jest baza z radarami
versionhazard.txt - plik z datą bazy

Odpalamy plik 1_wypakuj.bat i czekamy aż skończy. Pojawi się katalog hazardareas.lwd_speedlimits. Zaglądamy do niego i klikamy dwukrotnie w plik limits.csv - plik jest tekstowy i można go edytować nawet w notatniku. Struktura pliku wygląda tak (fragment):

48.22038,16.39511111,60,1,50,13,14
48.22038,16.39511111,240,1,50,13,14
48.223611,16.40083333,60,1,50,13,14
48.223611,16.40083333,240,1,50,13,14
48.224997,16.40361111,234,1,50,13,14
48.224547,16.40651389,135,1,50,13,14
48.224547,16.40651389,315,1,50,13,14
48.235383,16.407375,141,1,80,13,14
48.235473,16.4075,321,1,80,13,14
48.219876,16.41272222,129,1,80,13,14

Widać lokalizacje i określenia typów kilkunastu przykładowych fotoradarów. Przeanalizujemy pierwszy z podanych:

48.22038,16.39511111,60,1,50,13,14 

Odpalamy przeglądarkę i wchodzimy na https://mapy.google.pl/ - tam wklejamy współrzędne z przykładu:

48.22038,16.39511111 

i widzimy że jest to fotoradar w austriackim Wiedniu, przy ulicy Lassallestraße 2. Fotka:


Zielona strzałka wskazuje lokalizację atrakcji fotograficznej. Niestety street view nie jest dostępne w tej lokalizacji, ale jakoś to zniesiemy;-) Przyjrzyjmy się za to kilku następnym parametrom z linijki opisującej fotoradar:

60,1,50,13,14

Pierwsza liczba to kierunek w którym fotoradar jest wycelowany - 60 stopni. Jak to obliczamy? Prosto - nałóżcie sobie w wyobraźni tarczę analogowego zegarka na powyższe zdjęcie. Na godzinie 12 jest zero stopni, na szóstej - 180. Logicznie zatem na trzeciej mamy 90 stopni. Jak widać ulica Lassallestraße przebiega od godziny powiedzmy drugiej do ósmej - czyli fotoradar łapie tylko tych jadących od strony godziny drugiej - stąd właśnie owo 60 stopni. Wartość ta nie musi być super dokładna, gdyby wpisać tam kilka stopni w jedną czy drugą stronę - też zadziała. Ponieważ ten fotoradar może działać w obie strony - wpis w bazie jest zdublowany i zawiera dwa kierunki. Widać to ładnie jak spojrzymy na dwie pierwsze linie podanego fragmentu pliku:

48.22038,16.39511111,60,1,50,13,14 
48.22038,16.39511111,240,1,50,13,14 

Widać że w drugiej linijce zmienia się parametr 60 na 240. Czyli właśnie kąt w stopniach. Godzina ósma to właśnie około 240 stopni. Informacja dla mających problem z przeliczaniem kąta:

godzina kąt
1 - 30
2 - 60
3 - 90
4 - 120
5 - 150
6 - 180
7 - 210
8 - 240
9 - 270
10 - 300
11 - 330
12 - 0/360

W przypadku kiedy fotoradar robi fotki z czterech kierunków - wpisy będą cztery z różnymi kątami. Istnieje też specjalny parametr -1 (minus jeden) - określa on że fotoradar może pstrykać zdjęcia w dowolną stronę (lub jest często przestawiany i nie znamy dokładnego jego położenia). Po co takie zamieszanie? Jeśli bowiem określimy kierunek patrzenia fotoradaru - nie będziemy ostrzegani o jego istnieniu kiedy nadjeżdżamy z drugiej strony. Jako że w Polsce ITD sporo fotoradarów obróciła do robienia zdjęć od tyłu - w pliku trzeba podać odwróconą wartość kąta patrzenia, lub wpisać -1. 

Opcja podawania dokładnego kąta ma też swoje dodatkowe uzasadnienie. W Warszawie stoi na skrzyżowaniu Sobieskiego i Sikorskiego tzw. superradar. Fotografuje przelot na żółtym/czerwonym i mierzy prędkość. Dowcip polega na tym że na Sobieskiego wolno jechać 50, a na Sikorskiego 60 km/h. Stąd opisany jest czterema linijkami w bazie, z podaniem kąta, ale różnymi prędkościami dozwolonymi.

Wracamy do analizy naszej linijki. Po określeniu kąta znajduje się typ fotoradaru. Wartość ta wynosi 0 lub 1. Parametr 0 występuje tylko na autostradach, wszystkie inne mają oznaczenie 1. Proponuję nie kombinować, wpisujemy wszędzie 1, bo i tak na autostradach stały fotoradar to póki co rzadkość. 

Następny element to dopuszczalna prędkość na którą ustawiony jest fotoradar. Nie wymaga to specjalnego omówienia, poza tym że mieścić się musi w zakresie 0-150km/h i być wielokrotnością 10. 

Za prędkością znajdują się parametry określające typ ograniczenia. Zero oznacza stałe ograniczenie prędkości, jeden to ograniczenie zależne od pogody lub pory dnia. Zakres 4-15 określa długość miejsca z ograniczeniem z mnożnikiem 100 - czyli wpisanie liczby 10 - oznacza że pierwsze ostrzeżenie powinno być nadane z dystansu jednego kilometra przed fotoradarem. Nie zauważyłem aby ten parametr działał całkiem poprawnie. Być może uzależniony on jest od prędkości pojazdu - im szybciej jedziemy, tym wcześniej ostrzega. W bazie przeważająca większość fotoradarów ma ten parametr ustawiony na 13 i proponuję tak opisywać nowe. 

Ostatnia liczba jest numerem sekcji i ma charakter porządkowy. 

A jak dopisać nowy fotoradar? 

Najłatwiej uczyć się na przykładach, zatem dopiszemy fotoradar znajdujący się na rogu Ostrobramskiej i Fieldorfa w Warszawie. To nowe urządzenie, robiące fotki w czterech kierunkach.

Fotka poglądowa:


Linie opisujące atrakcję mają postać:

52.234798,21.097548,10,1,50,13,27 
52.234798,21.097548,100,1,50,13,27 
52.234798,21.097548,190,1,50,13,27 
52.234798,21.097548,280,1,50,13,27 

Proponuję samodzielną analizę kątów itp. Sekcja określona jest na 27 - to ostatnia sekcja, bowiem dopisałem ten fotoradar na końcu pliku. 

Kiedy zakończymy prace nad bazą - odpalamy plik 1_spakuj.bat i czekamy na stworzenie nowego pliku z bazą. W pliku versionhazard.txt wpisujemy datę wygenerowania bazy. Nie wiem czy to konieczne, ale prościej to zrobić i podmienić oba pliki na karcie pamięci niż latać w tę i z powrotem do auta;-) 

Na koniec kilka uwag. Komendy do rozpakowania i spakowania bazy najlepiej wydawać z linii poleceń, wówczas okno nie zamyka się samo i widać wynik budowania bazy. Zwracajcie uwagę na ilość fotoradarów zaimportowanych do bazy. Powinna być taka sama jak ilość linii w pliku limits.csv. 

Usuwanie fotoradarów jest niestety lekko upierdliwe. Trzeba w przybliżeniu określić jego współrzędne w Google Maps i później mozolnie odszukać je w bazie. Upewnić się że to te właściwe (wklejając oczywiście do google maps;-) i usunąć linię.

Nie kasujcie rozpakowanej bazy. Nowe fotoradary i wszelkie zmiany nanoście w tym pliku i z niego generujcie nową bazę do wrzucenia na kartę pamięci. W przypadku rozpakowywania ponownie bazy - te wpisy których dokonaliśmy na końcu pliku zostają utracone. Wynika to zapewne z tego że nie zostały one umieszczone we właściwych liniach ze względu na współrzędne. Z racji lenistwa nie chce mi się jednak mozolnie wyszukiwać właściwej linii, aby precyzyjnie umieścić fotoradar, być może ktoś znajdzie rozwiązanie tego problemu, aby łatwo móc to zrobić. Poproszę o wpis w komentarzach;-) Nie ma natomiast problemu jeśli odszukamy jakiś fotoradar i poprawimy jego dane tam gdzie był umieszczony, lub dopiszemy poniżej dodatkowe kierunki fotografowania - taki wpis nie zniknie przy powtórnym rozpakowaniu bazy. Jednakże zaletą dopisywania nowych fotoradarów na końcu pliku jest to, że jeśli zakupimy aktualizację bazy w ASO - to łatwo dokleimy do niej nasze dopiski, bo będą w jednym miejscu. 

Warto nowo dopisane dane skopiować sobie do innego pliku tekstowego i zaopatrzyć tam w komentarze - łatwiej będzie później odnaleźć fotoradar do poprawek. Przyda się też taki plik w razie utraty dopisanych danych - będzie z czego odtworzyć.

Do celów nauki - dodajcie sobie niedaleko domu kilka sztucznych fotoradarów i potrenujcie konfigurację ostrzegania. Współrzędne bierzemy z Google Maps - klikamy na ulicy prawym klawiszem myszki i wybieramy opcję Co tu jest? Wynikiem są precyzyjne współrzędne, gotowe do wklejenia do pliku.

Jeśli program zwraca błędy - zwróćcie uwagę o której linii mówi - zazwyczaj problemem jest przeoczony typ fotoradaru (brakuje jedynki między kątem, a ograniczeniem prędkości). 

I standardowo - wszystko robicie na własną odpowiedzialność. Ja tylko wskazuję kierunki działań, resztę robią Wasze ręce i oczy.