🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #72184

Re: GPSPhotoTagger - sqllite - jak wyciągnąć datę i czas

#72184
From: McViking
Date: Tue, 27 Aug 2013 23:37
63 lines
4351 bytes
Witam

Dla potomnych podaję przepis "krok po kroku" jak ja to zrobiłem w Excelu (trochę metodą prób i błędów, ale skutecznie):

Sposób liczenia czasu na podstawie fGPSTime1 i fGPSTime2 w QSTARZ (SQLite):

1. Jeżeli fGPSTime2 < 0 to wyliczam fGPSTime2A jako fGPSTime2 + (2)^32
	fGPSTime2A = [ fGPSTime2 + 4 294 967 296 ]
2. wyliczam fGPSTime1A jako fGPSTime1 * ( (2)^32 / 10 000 000 ) 
	fGPSTime1A = [ fGPSTime1 * ( 4 294 967 296 / 10 000 000 ) ]
3. wyliczam liczbę sekund od 1601-01-01 00:00:00 do 2000-01-01 00:00:00, która wynosi 12 591 158 400
4. wyliczam liczbę sekund od 2000-01-01 00:00:00 jako fGPSTime
	fGPSTime = [ fGPSTime1A + ( fGPSTime2A / 10 000 000 ) - 12 591 158 400
5. wyliczam liczbę dni od 1.01.2000. jako część całkowitą (nie przez zaokrąglenie tylko odcięcie części ułamkowej) z liczby ( fGPSTime / 3600 / 24 )
	dniOdMilenium = [ LICZBA.CAŁK( fGPSTime / 3600 / 24 ) ]
6. wyliczam godzinę jako część całkowitą z liczby (( fGPSTime - ( dniOdMilenium * 3600 * 24 )) / 3600 )
	godzina = [ LICZBA.CAŁK( fGPSTime - ( dniOdMilenium *3600 * 24 )) / 3600 ) ]
7. wyliczam minutę jako część całkowitą z liczby (( fGPSTime - ( dniOdMilenium * 3600 * 24 ) - ( godzina *3600 )) / 60 )
	minuta = [ LICZBA.CAŁK( fGPSTime - ( dniOdMilenium *3600 * 24 ) - (godzina * 3600 )) / 60 ) ]
8. wyliczam sekundę jako (( fGPSTime - ( dniOdMilenium * 3600 * 24 ) - ( godzina *3600 ) - ( minuta * 60))
	sekunda = [ fGPSTime - ( dniOdMilenium *3600 * 24 ) - ( godzina * 3600 ) - (minuta * 60 ) ]
9. wyliczam datę i czas jako data(2000-01-01 + dniOdMilenium) + czas(godzina; minuta; sekunda)
	= [ DATA(2000;1;1) + dniOdMilenium + CZAS(godzina;minuta;sekunda) ]

W ten sposób dla kolejnych 5 rekordów będą to czasy:
2010-11-12 14:36:38
2010-11-12 14:37:18
2010-11-12 14:37:23
2010-11-12 14:37:28
2010-11-12 14:37:42

Pozdrawiam  -  McViking

W dniu wtorek, 12 kwietnia 2011 12:25:56 UTC+2 użytkownik pigobocian napisał:
> Witam.
> Program wymieniony w temacie tworzy po odczytaniu danych z GPS'a pliki
> ITM, które są zwykłymi ZIP'ami. Wewnątrz jest plik z bazą SQLITE.
> Dane typu latitude, longtitude, altitude są zapisane w sposób
> czytelny. Natomiast data i czas każdego pomiaru to jakieś długie liczby.
> Eksport z tabeli wygląda tak:
> 
> "fID","fZero","fGPSTime1","fGPSTime2","fGPSSpeed"
> "1","0","30114423","67089792","0.0"
> "2","0","30114423","467089792","11.0"
> "3","0","30114423","517089792","10.0"
> "4","0","30114423","567089792","2.0"
> "5","0","30114423","707089792","12.0"
> "6","0","30114423","757089792","14.0"
> "7","0","30114423","807089792","13.0"
> "8","0","30114423","987089792","0.0"
> "9","0","30114423","1087089792","5.0"
> "10","0","30114423","1147089792","6.0"
> "11","0","30114423","1197089792","8.0"
> 
> Jak przekonwertować pola fGPSTime1 i fGPSTime2 na datę i czas?
> 
> Funkcje sqlite typu date(...), time(...), datetime(...) dla
> tych kolumn zwracają bzdury.
> 
> Podpowie ktoś?
> 
> Pozdr.
> pigobocian.
Technical Details
Message-ID: <535fd4a7-f748-4fd2-89a7-528b66a7258a@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!n2no4758610pbg.1!news-out.google.com!z6ni20003pbu.0!nntp.google.com!fx3no5847462qab.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <4da428b4$0$2497$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
X-Received: by 10.66.148.8 with SMTP id to8mr6600510pab.0.1377646659137;        Tue, 27 Aug 2013 16:37:39 -0700 (PDT)
X-Received: by 10.49.59.35 with SMTP id w3mr421456qeq.8.1377646658894; Tue, 27 Aug 2013 16:37:38 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!n2no4758610pbg.1!news-out.google.com!z6ni20003pbu.0!nntp.google.com!fx3no5847462qab.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.os.linux.programowanie
Date: Tue, 27 Aug 2013 16:37:38 -0700 (PDT)
In-Reply-To: <4da428b4$0$2497$65785112@news.neostrada.pl>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=83.4.197.63; posting-account=nY2eSQoAAACoeOiMB8SAbBVboQxTrew2
NNTP-Posting-Host: 83.4.197.63
References: <4da428b4$0$2497$65785112@news.neostrada.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <535fd4a7-f748-4fd2-89a7-528b66a7258a@googlegroups.com>
Subject: Re: GPSPhotoTagger - sqllite - jak
 wyciągnąć datę i czas
From: McViking <mslusar@onet.pl>
Injection-Date: Tue, 27 Aug 2013 23:37:38 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit