środa, 2 stycznia 2008

Szybsze geokodowanie zdjęć: podsumowanie

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:

  1. Ślad z urządzenia jest pobierany albo za pomocą gpsbabela albo programu  bt747.

  2. 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
  3. 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 .]

  4. 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.

Brak komentarzy:

Prześlij komentarz