>> wybierz styl >> es :: ns :: bs

Weblog Tomasza Przechlewskiego [Zdjęcie T. Przechlewskiego] [[Ikona]]


scrum
random image [Photo gallery]
Zestawienie tagów
1-wire | 18b20 | 1wire | 2140 | 3rz | alsamixer | amazon | anniversary | antypis | apache | api | arm | astronomy | asus | atom.xml | awk | aws | balcerowicz | balta | bash | berlin | bibtex | bieszczady | biznes | blogger | blogging | blosxom | borne-sulinowo | breugel | bt747 | canon | cedewu | chello | chown | chujowetaśmy | cmentarz | contour | cron | css | csv | curl | d54250wykh | debian | dejavu | dhcp | dht22 | dia | docbook | dom | ds18b20 | dyndns | dynia | ebay | economy | ekonomia | elka | elm | emacs | emacs23 | english | ess | eu | excel | exif | exiftool | f11 | fc | fc11 | fc15 | fc5 | fc8 | fedora | fedora21 | ffmpeg | finepix | firefox | flickr | fontforge | fontspec | fonty | fop | foto | france | francja | fripp | fuczki | fuji | fuse | gammu | garmin | gawk | gdynia | geo | georgia | gft | git | github | gmail | gnokii | gnus | google | googlecl | googleearth | googlemaps | gphoto | gphoto2 | gps | gpsbabel | gpsphoto | gpx | gpx-viewer | greasemonkey | gruzja | grzyby | haldaemon | handbrake | historia | history | hitler | holocaust | holokaust | hpmini | humour | iblue747 | ical | iiyama | ikea | imap | inkscape | inne | internet | j10i2 | javascript | jhead | k800i | kamera | kml | kmobiletools | knuth | kod | kolibki | komorowski | konwersja | krutynia | kuchnia | latex | latex2rtf | latex3 | lcd | legend | lenny | lesund | lewactwo | liberation | linux | lisp | lisrel | litwa | logika | lwp | mapsource | marvell | math | mathjax | mazury | mbank | mediolan | mencoder | mh17 | michalak | microsoft | monitor | mp4box | mplayer | ms | msc | msw | mtkbabel | muzyka | mymaps | mysql | nanopi | natbib | navin | neo | neopi | netbook | niemcy | niemieckie zbrodnie | nikon | nowazelandia | nuc | nxml | oauth | oauth2 | obituary | okular | olympus | ooffice | ooxml | opera | otf | otftotfm | other | overclocking | panoramio | pdf | pdfpages | pdftex | pdftk | perl | photo | photography | picasa | picasaweb | pim | pine | pit | plotly | pls | plugin | po | politics | polityka | polsat | postęp | powerpoint | prelink | problem | propaganda | pstoedit | putin | python | r | radio | random | raspberry pi | relaxng | router | rower | rowery | rpi | rsync | rtf | ruby | rugby | russia | rwc | rwc2007 | rwc2011 | rzym | samba | sem | sheevaplug | sienkiewicz | signature | sks | skype | skytraq | smoleńsk | srtm | ssl | statistics | stats | statystyka | stix | svg | svn | swornegacie | szwajcaria | terrorism | tex | texgyre | texlive | thunderbird | tomato | tourism | tramp | trang | truetype | ttf | turystyka | tusk | tv | tv5monde | twitter | typetools | ubuntu | udev | umap | unix | upc | updmap | ups | utf8 | varia | video | vienna | virb edit | vostro | wammu | wdc | wdfs | webcam | webdav | wh2080 | wiedeń | wikicommons | wilno | windows | windows8 | wine | wioślarstwo | word | wordpress | wrt54gl | wtyczka | ww2 | www | wybory | wybory2015 | włochy | xemex | xetex | xft | xhtml | xine | xml | xmllint | xsd | xslt | xvidtune | youtube | yum | zakopane | zakupy | zdf | łeba | świdnica
Pobrania via google: [[Ikona]]
Archiwum
Inne blogi
N. Walsh | Morten H. Frederiksen | B. Clementson | prawo.vagla.pl | F. Hecker | M. Olson | J. Tennison | J. Clark | M. Nottingham | M. Shuttleworth | T. Isakowicz-Zalewski | J. Anglim | José A. Ortega Ruiz Modern Perl
Inne tematyczne
Ashwin Amanna | wiesia.nets.pl | Wojt | rwm.org.pl | DataBlog | Revolutions | Learning R | A. Gelman | C. Nel | J. Vogelgesang | ubl.xml.org/ | J.D. Long |
O stronie
wykorzystywany jest blosxom plus następujące wtyczki: tagging, flatarchives, rss10, lastbuilddatexhtmlmime. Niektóre musiałem dopasować nieco do swoich potrzeb. Więcej o blosxom jest tutaj
Subskrypcja
RSS 1.0
7 dni w Świdnicy
Feldmarschall K. von Plata (seht durch ein Fernglas) und seine Stabsoffiziere:-)

To była ciekawa wycieczka. Zwiedzaliśmy okolice Świdnicy oraz byliśmy na Śnieżce i w Górach Stołowych (Szczeliniec/Teplice). Wracając z Teplic zwiedziliśmy klasztor w Broumovie.

Doszło do niewielkiego bałaganu w zbiorze zdjęć przywiezionych z tygodniowego pobytu w Świdnicy. Zdjęcia z kilku dni przegrałem do jednego katalogu i hop, bez zbędnego myślenia uruchomiłem skrypt gpsPhoto.pl aby dodać współrzędne geograficzne. Po tej operacji czas modyfikacji każdego pliku ze zdjęciem się zmienił no i był mały kłopot z szybkim ustaleniem w którym dniu dane zdjęcie było zrobione. Oczywiście ta informacja nie została utracona, bo jest wartością pola DateTimeOriginal, tyle że ,,z poziomu'' wiersza poleceń tego nie widać.

Już chciałem jakiś skrypt klecić żeby pobierał DateTimeOriginal a następnie zmieniał czas modyfikacji pliku, ale w dokumentacji exiftool znalazłem gotowy przykład dokładnie robiący to, co chciałem osiągnąć:

exiftool "-Directory<DateTimeOriginal" -d "%Y-%m-%d" KATALOG

Powyższe przeniesie wszystkie pliki .jpeg z katalogu KATALOG do katalogów o nazwach postaci rok-miesiąc-dzień. Daty modyfikacji pliku to nie zmienia, ale samo uporządkowanie w odpowiednich katalogach w zupełności mi wystarczy.

Mój GPS Logger (używam Iblue 747) dwa razy zarejestrował ślad zawierający kolosalne odchylenie (biegun północny, tj. lat="90.000000000" lon="0.000000000"). Wcześniej nie obserwowałem tego fenomenu, tj. mówiąc dokładnie Etrex H nagminnie oszukuje podając np. średnią/maksymalną prędkość, ale zwykle zgrany ślad jest OK. Próbowałem poszukać jakiś automatycznych sposobów usunięcia takich anomalii ale nie znalazłem. Ostatecznie problem jest źle zdefiniowany więc automatem się nie da. Potrzebny jest edytor i wizualna inspekcja (np. MapSource ale to wyłącznie windziana aplikacja). Z braku takowego ślad wyświetlam na Google Maps a rażące odchylenia usuwam patrząc na współrzędne. Na moje potrzeby super korekta śladu nie jest potrzebna. Tak nawiasem mówiąc wspólnym mianownikiem Loggera i Etrexa jest chip firmy MTK. Ciekawe czy wszystkie czułe GPSy typu Sirf3/MTK robią takie błędy czy tylko MTK?

Ślady w formacie KML ze zdjęciami umieściłem tutaj: świdnica--książwlk.sowa--ludwikowiceszczeliniec--wambierzycekarpacz--śnieżkakompleks--osówka+zamek grodnoteplice--broumovślęża--tąpadła--sulistrowiczki

url | Tue, 19/08/2008 16:22 | tagi: , , , , ,
Iblue 747 GPS logger

GPS logger to odbiornik GPS wyposażony w pamięć pozwalającą na rejestrację przebytej drogi (śladu). Ślad z GPSa jest mi potrzebny do dodania współrzędnych geograficznych do zdjęć. Do tej pory do tego celu wykorzystywałem odbiornik Geko 301 firmy Garmin. Geko jednakże jest urządzeniem starszego typu i generalnie nie działa jeżeli nie widzi ,,czystego nieba''. Nie działa w lesie, często są duże problemy w terenie mocno zabudowanym, itp.

Postanowiłem kupić lepszy odbiornik. Czytając fora i blogi poświęcone GPS najpierw dowiedziałem się, że jest coś takiego jak SIRF. Już chciałem takiego SIRFa kupić ale doczytałem o chipsecie MTK. Według niektórych doniesień jest on lepszy niż SIRF 3 (są też tacy co twierdzą, że tak nie jest; głosów w stylu X to syf a ja jestem wielkim znafcom nie biorę pod uwagę).

Ceny loggerów na allegro zaczynają się od 300 zł (styczeń 2008) a ja znalazłem coś chwalonego, podobno działającego z Linuksem co jest dla mnie bardzo ważne i (okazało się) tańszego pn. i-Blue 747 Dziwne, ale w Polsce nikt tego nie sprzedaje, przynajmniej w Internecie. Znalazłem i-Blue na ebay za mniej niż 200 zł przy czym 30% tej kwoty stanowiły koszty wysyłki.

BTW opis na e-bay był w języku włoskim, sklep w Niemczech, sklepowy (sądząc po imieniu i nazwisku, Turek) po angielsku słabo pisał, ale się dogadaliśmy i paczka doszła.

[[ib747-wine screen dump]]

Do obsługi loggera jest dołączony CDrom z programem. Program jest of course na system MSW, ale podobno działa z wine. Dokładnie postępując według instrukcji stąd dało się go uruchomić: należy zainstalować wine, uruchomić winecfg, a następnie:

cd ~/.wine/dosdevices
ln -s /dev/ttyUSB0 com1

Teraz należy skopiować plik instalacyjny i uruchomić wine DataLog.exe. Program zostanie zaistalowany tyle, że u mnie nie działa. Ściąga ślad całkiem dziarsko ale nie do końca bo zwisa. Próbowałem dwa razy raz zawisł gdy wskaźnik był na 49% drugi raz na 89%. W google znalazłem opinie użytkowników Ubuntu utrzymujących, że w ich systemie wszystko działa (like a charm). BTW w MS Windows też były problemy, zarówno z instalacją, jak i z uruchomieniem, ale jak w końcu poszło, ale co z tego przecież nie będę go używał w systemie W.

Uwaga: Aby ściągnąć ślad albo zmienić konfigurację urządzenia przełącznik musi być w pozycji LOG. Po uruchomieniu programu pierwsze co trzeba zrobić to zatrzymać zapis śladu (można to zrobić tylko programowo), bo inaczej logger cały czas zapisuje dane.

Zainstalowałem też w bólach bt747 (aplikacja Javy). Zresztą autor ostrzega, że dokumentacja jest niedoskonała. Po rozpakowaniu zipa, zainstalowałem zawartość katalogu rxtx-2.1-7-bins-r2, zgodnie z tym co jest napisane w pliku INSTALL, umieszczonym w tym katalogu. Następnie uruchomiłem skrypt run_rxtx.sh, zmieniając wartość zmiennej MYROOTPATH=/usr/local/bt747. Żby użytkownik miał dostęp do /dev/ttyUSB0 musi być w grupie uucp, to już ustaliłem wcześniej. Dalej jednak nie działało (check_group_uucp(): error testing lock file creation Error details: Permission denied check_lock_status: No permission to create lock file.). Kluczowa okazała się zmiana praw dostępu do /var/log:

chmod 777 /var/lock
[[bt747 screen dump]]
[[bt747 screen dump]]

Aplikacja, jak widać obok, wygląda okropnie, ale funkcjonalnie jest OK: ściąga dane i kasuje LOG. Więcej nie potrzebuję. Żeby skrypt run_rxtx.sh działał uruchamiany z dowolnego katalogu musiałem jeszcze zmienić wartości zmiennej CLASSPATH (albo wstawić zawartość CLASSPATH jako wartość opcji -cp przy uruchamianiu javy):

CLASSPATH=${RXTXJAR}:$MYROOTPATH/webstart/Waba_only.jar:\
   $MYROOTPATH/dist/BT747_rxtx.jar:.:$CLASSPATH

Wreszcie jest też aplikacja pn. MTKbabel (skrypt Perla), działająca podobnie do programu GPSbabel, czyli z wiersza poleceń. Do działania wymaga zainstalowania modułu Device::SerialPort. Ten sposób działania podoba mi się najbardziej. Pobranie danych sprowadza się do wydania następującego polecenia:

mtkbabel -f nazwa-pliku-bez-rozszerzenia -t

Powstaną dwa pliki (dlatego nie podaje się rozszerzenia): jeden w formacie binarnym, drugi w fomacie GPX. Jedno wielkie ale -- transmisja jest bardzo wolna: plik binarny o wielkości ca 650 kB (czyli ca 30% pamięci) był ściągany z loggera 9 minut 47 sekund. Czyli cała pamięć byłaby ściągana 30 min. Hmm... Dla porównania obie wcześniej wymienione aplikacje ściągały te 650 kB w circa 2 minuty. Różnica jest.

Wykonałem już dwa eksperymenty porównujące iblue z moim Garminem 301. Pierwsza trasa to las, w wielu miejscach gęsty i wysoki. Do tego też w wielu miejscach jary o stromych zboczach. Trasa zapisana przez geko oraz trasa zapisana przez iblue. Nie ma porównania, bo geko w zasadzie w lesie nie działał.

Druga trasa to teren zabudowany, a konkretnie Sopot. Zabudowa w większości 3--4 kondygnacyjna. Dwa razy wszedłem do sklepu (Geko zgubił w pierwszym ślad, ale poczekałem po wyjściu aż znajdzie, a za drugim razem sam szybko się odnalazł). Oba ślady wyglądają nieźle (cf. geko iblue). Iblue pogubił się w okolicach skrzyżowania 1-go Maja z Aleją Niepodległości, gdzie wszedłem do sklepu (na dłużej). Nie zgubił satelity, tak jak geko, ale trasa w tym miejscu jest nieprawidłowa (wielki `tik' od 1-go Maja wzdłuż Al. Niepodległości w stronę Gdańska. Na mapie od szpilki oznaczonej jako `sklep' do szpilki `tik'. W rzeczywistości od sklepu poszedłem do szpilki oznaczonej `tunel' i dalej wzdłuż ul. Bohaterów Monte Cassino, co zresztą też jest zaznaczone). Nie ma różnicy pomiędzy śladami zredukowanymi do 500 punktów i dużo większym -- 2500 punktów.

Reasumując: wszystkie zdjęcia zrobione na obu trasach zostały (z zadowalającą precyzją) oznakowane współrzędnymi geograficznymi na podstawie śladu z Iblue, a po to go kupiłem.

Ślad iblue zredukowałem za pomocą gpsbabela, bo oryginalny ślad składa się z tysięcy punktów. Iblue zapisuje ślad co sekundę, Garmin w trybie auto (Iblue nie ma czegoś takiego jak auto). Kiedyś eksperymentowałem z Garminem i też go przestawiłem na zapis sekundowy, ale nie zaobserwowałem różnicy pomiędzy takim trybem a trybem auto. Polecenie uproszczenia śladu wygląda następująco (Log.nma zawiera dane zapisane jako NMEA):

gpsbabel -i nmea -f Log.nma -x simplify,count=450 \
   -o gpx -F 2008-01-23BT_x.gpx

Poniżej bardziej zaawansowane polecenie: zapisz jako GPX, ślad od 2008-01-24T13:40 od 2008-01-24T14:50, następnie upraszczając go do 500 punktów. Uwaga: opcje -x nie są przemienne, tj. ich zamiana skutkowałaby najpierw uproszczeniem do 500 punktów, a potem wycięciem od-do, dając w rezultacie ślad dużo bardziej uproszczony:

gpsbabel -i nmea -f GPSDATA-20080123.nmea \
-x track,start=200801241340,stop=200801241450 -x simplify,count=2500 \
-o gpx -F 20080124BT_x.gpx
[[Logger Iblue747]]

Kończąc, trochę mnie zastanawia/niepokoi trwałość tego urządzenia, bo jakość wykonania jest taka sobie (100% chińszczyzna). Jakby mi, np. wypadł z ręki, to chyba byłby to jego ostatni lot. Nawet nie próbuję tego sprawdzać. Poza tym logger wydaje się całkiem, całkiem...

Dopisane 16 marca 2008: Dioda GPS: pomarańczowa -- szuka satelitów; pomarańczowa/miga -- nawiguje; niebieska/miga -- mało pamięci (mniej niż 20%); niebieska -- pamięć jest zapełniona, stop (cokolwiek to znaczy); trzykrotny błysk -- zarejestrowanie POI. Dioda baterii: czerwona -- bateria prawie wyczerpana; zielona -- ładowanie; zielona/miga -- naładowana. Dioda BT: niebieska -- BT włączone, ale nie połączony; wolno miga -- połączony w sleeping mode; szybko miga -- połączony i gotowy.

Dopisane 16 marca 2008: projekt formularzy w aplikacji bt747 jest daleki od ergonomicznego, stąd poniżej krótka rekapitulacja. Aby usunąć plik: Fmt/Erase (albo Fmr/Set&erase). Pobranie pliku i zapis na dysk: Log/Get Log i inne przyciski z tej karty. Karta File: konfiguracja. Karta Con: połączenie z urządzeniem. Innych kart w zasadzie nie używam.

Dopisane 19 marca 2008: Poniżej skrypt do zamiany pliku NMEA pobranego z bt747 na plik GPX. Skrypt upraszcza uruchomienie gpsbabela. Ponadto uruchomiony z opcją -U wycina niepotrzebne znaczniki (np. <ele>, czyli wysokość, która w moim przypadku zawsze wynosi zero. Dodatkowo liczy długość wyciętego śladu. Pełny skrypt jest tutaj.

# !/bin/bash
#
# Skrypt ułatwiający uruchomienie programu gpsbabel
# Wycina fragment ścieżki + upraszcza ślad do zadanej liczby punktów
# Na koniec plik podaje długość wyciętego śladu.
#
OUT=''
FORMAT=nmea
ROK=`date +"%Y"`
XREDUCE="NO"

while test $# -gt 0; do
  case "$1" in

    -help|--help) echo "$USAGE"; exit 0;;

    -od)   shift; START="$1";;
    -od*)  START="`echo :$1 | sed 's/^:-od//'`";;
    -do)   shift; STOP="$1";;
    -do*)  STOP="`echo :$1 | sed 's/^:-do//'`";;
    -max)  shift; COUNT="$1";;
    -max*) COUNT="`echo :$1 | sed 's/^:-max//'`";;
    -rok)  shift; ROK="$1";;
    -rok*) ROK="`echo :$1 | sed 's/^:-rok//'`";;
    -format)  shift; FORMAT="$1";;
    -format*) FORMAT="`echo :$1 | sed 's/^:-format//'`";;
    -U)    XREDUCE="YES";;
    -out)  shift; OUT="$1";;
    -out*) OUT="`echo :$1 | sed 's/^:-out//'`";;

    -h)  echo usage; exit;;
    -h*) echo usage; exit;;

    *)   FILE="$1";;
  esac
  shift
done

if [ "$XREDUCE" = "YES" ]  ; then 
  echo "** Tracks will be simplified! (Option -U)" ; fi

EXTENSION=${FILE##*.}
BASE=`basename $FILE .$EXTENSION`

if [ "$OUT" = "" ] ; then OUTFILE="$BASE.gpx" ;
else OUTFILE="$OUT" ; fi

if [ "$START" != "" -a "$STOP" != "" ] ; then PERIOD="-x track,start=$ROK$START,stop=$ROK$STOP" ; 
   elif [ "$START" != "" ] ; then PERIOD="-x track,start=$ROK$START" ; 
   elif [ "$STOP" != "" ] ; then PERIOD="-x track,stop=$ROK$STOP" ; 
fi

if [ "$COUNT" != "" ] ; then SIMPLIFY="-x simplify,count=$COUNT" ; fi

if [ -f "$BASE.$EXTENSION" ] ; then
   gpsbabel -i $FORMAT -f $BASE.$EXTENSION $PERIOD $SIMPLIFY -o gpx -F $OUTFILE

   if [ -f "$OUTFILE" -a "$XREDUCE" = "YES" ] ; then
      extension=${OUTFILE##*.}
      simname="`basename $OUTFILE .$extension`_s.$extension"
      echo "** File $OUTFILE simplified to $simname" ; 
      # perl -e 'while ( <> ) { unless(/<ele|fix|course|speed>/) ... to błąd !!
      perl -e 'while ( <> ) { unless(/<(ele|fix|course|speed)>/) { print $_ }} ' $OUTFILE > $simname
      OUTFILE=$simname
   fi
   else echo "File $BASE.$EXTENSION found!" ; echo "$USAGE"
fi

if [ -f "$OUTFILE" ] ; then
## Oblicz dystans:
echo "** Counting distance covered in: $OUTFILE "

perl -e 'use Geo::Distance; my $geo = new Geo::Distance;
   my $qchars = "\042\047"; # znaki cytowania pojedynczy i podwojny
   while (<>) {
     if (/<trkpt\s+lat\s*=\s*([$qchars])([^$qchars]+)\1\s+lon\s*=\s*([$qchars])([^$qchars]+)\3/) {
        $lat=$2; $lon=$4;
        unless ($trkpt < 1) { $dist += $geo->distance( "meter", $plon, $plat => $lon, $lat ); }
        $trkpt++; $plat=$lat; $plon=$lon;
     }
   }
   print "** Distance covered (meters): $dist\n"; ' $OUTFILE
fi

url | Fri, 25/01/2008 12:35 | tagi: , , , , , ,