W okresie świątecznym i na przełomie roku wykonałem kilka eksperymentów weryfikujących jakość dodawania współrzędnych za pomocą synchronizacji czasu odbiornika GPS i aparatu. Dokładnie siedem prób (odpowiednio data: zdjęcia ogółem/zdjęcia oznaczone): 20071226: 61/61, 20071228: 11/11, 20071229: 29/29, 20071230: 71/71, 20071230: 48/48, 20080101: 30/30, 20080102: 8/22. Łącznie zdjęć było zatem 260 z czego 16 (6,1%) nie zostało zsynchronizowanych. Większość zdjęć została oznakowana z zadowalającą albo nawet dobrą dokładnością. Niektóre trasy były łatwe: płaski teren. Ale trasa z 31.12 prowadziła w sporej części przez gęsty las a GPS się nie pogubił. Dziś poszedłem jeszcze dalej do lasu, no i GPS tym razem odmówił kooperacji. A GPSa -- zgodnie z zaleceniem, żeby był jak najwyżej -- noszę pod czapką!
Przerobiłem swoje skrypty, oraz bibliotekę dla Emacsa. Aby odróżnić zdjęcia zawierające zdefiniowane tagi EXIF ze współrzędnymi geograficznymi od tych, które tej informacji nie zawierają, generowana miniatura zdjęcia zawiera czerwony prostokąt w lewym górnym rogu (jeżeli zdjęcie jest już geotagowane). No tak to sobie wymyśliłem.
Niektóre ślady GPS na mojej stronie zawierają teraz miniatury zdjęć. Publikuję też dane w formacie KML. Uaktualniony opis jest tutaj. Detaliczna instrukcja jak używać GPSphoto. jest zaś tutaj.
Dopisane 8 maja 2008/Zmodyfikowane 27 sierpnia 2008: Podsumowanie procedury pobrania śladu z urządzenia GPS i ich zamiany na ślad w formacie GPX/KML:
Ślad z urządzenia jest pobierany albo za pomocą gpsbabela albo programu bt747.
Skrypt nmea2gpx
zamienia dane w formacie NMEA na GPS w razie potrzeby
wycinając fragment śladu i upraszczając go (opcja -max liczba-punktów
).
Skrypt akceptuje także inne formaty danych wejściowych (opcja -format
):
nmea2gpx -od czas -do czas -max liczba [-format format ] [-U ] [-out plik.gpx] plik
Skrypt My-photo-sync.sh
(wykorzystujący gpsPhoto.pl
)
,,synchronizuje'' ślad ze zdjęciami i generuje plik w formacie KML:
My-photo-sync.sh -d katalog-zdjęć -f plik.gpx -t różnica-czasów
różnica czasów jest obliczana za pomocą skryptu exif_datetime.pl
exif_datetime -b czas_z_GPSa -f zdjęcie -o GMT_offset_in_seconds
gdzie: zdjęcie, to nazwa pliku ze zdjęciem ekranu GPSa;
czas_z_GPS, to czas wyświetlany przez GPSa na ww. zdjęciu;
GMT_offset_in_seconds, różnica między czasem lokalnym a GMT (niektóry GPSy to wyświetlają,
a jak nie to łatwo jest to obliczyć).
Ponieważ uruchamianie exif_datetime
w ww. sposób dla każdej sesji zdjęciowej
jest pracochłonne można też napisać:
exif_datetime
Powyższe wyświetli przesunięcia czasowe zapisywane w pliku ~/.time_offset
. Ponieważ
czas w aparatach rozsynchronizowuje się w miarę
wolno, wystarczy co kilka tygodni aktualizować ~/.time_offset
.
Można też napisać:
My-photo-sync.sh -d katalog-zdjęć -f plik.gpx -a
Przesunięcie zostanie pobrane automatycznie z pliku ~/.time_offset
. [Nie trzeba
uruchamiać exif_datetime
.]
W wyniku wykonania My-photo-sync.sh
powstaje także plik .kml
.
Skrypt perlowy kml-adjust-urls
zamienia linki do zdjęć
w pliku KML, tak aby wskazywały na zdjęcia umieszczone w serwisie
flickr.com (skrypt My-photo-sync.sh
oryginalnie wstawia linki lokalne). Przed wykonaniem kml-adjust-urls
należy wykonać flickr_update_kb
bo kml-adjust-urls
pobiera
informacje nt. zdjęć lokalnie z bazy utworzonej przez flickr_update_kb
.
kml-adjust-urls plik.kml
Ubocznym efektem działania kml-adjust-urls
jest plik plik.wpts
zawierający elementy <wpt>
określające linki do zdjęć umieszczonych na flickr.com.
Zawartość tego pliku można dodać do pliku plik.gpx
uzskanego w kroku #2.
Ślad -- wyświetlony w googlemaps
-- będzie wtedy zawierał ,,pinezki'' z minaturami zdjęć.
Niektóre zdjęcia z lokalnego katalogu nie są umieszczone na
flickr.com. Skrypt kml-skip-deadlinks
usuwa takie
zdjęcia z pliku KML. Mało eleganckie rozwiązanie -- jeden skrypt by wystarczył, ale
nie mam czasu w tej chwili poprawiać skryptu kml-adjust-urls
:
Skrypt kml-adjust-urls
usuwa takie zdjęcia z pliku .kml
.