Entwickler-Ecke

Dateizugriff - Hilfe zu gespeichertem Datentyp gesucht (Geocaching)


ub60 - Di 13.12.11 00:27
Titel: Hilfe zu gespeichertem Datentyp gesucht (Geocaching)
Hallo Leute,

auf meinem Handy habe ich bei einem GPS-Programm Daten in der folgenden Art gefunden:


Quelltext
1:
2:
3:
global\12\lat=@Variant(\0\0\0\x87\x42R\x10t)
global\12\lon=@Variant(\0\0\0\x87\x41Vff)
global\12\name=Punkt13

Dahinter verstecken sich Geokordinaten in der Art:


Quelltext
1:
2:
52° 33.475 
013° 46.743

oder


Quelltext
1:
2:
52.55792 
13.77905

Hat jemand eine Idee, wie die Codierung funktioniert bzw. in welcher Sprache das abgespeichert ist (um dort weiter zu recherchieren).

Danke!
ub60


Tilo - Di 13.12.11 14:10

Hab es mal aus Jux in Googlemaps eingegeben.

"52° 33.475" ergibt Sums'ka oblast, Ukraine, nahe der Straße T1908
"013° 46.743" ist der Golf von Aden

Dein Handy kommt wohl viel rum.

Dazu 2 Links:
http://www.geocaching.de/index.php?id=20
http://www.gps-und-geocaching.de/workshop_01.htm


Nersgatt - Di 13.12.11 14:31

Passt nicht, da hast Du was falsch eingegeben. Das ist ein Ort bei Berlin:
http://maps.google.de/maps?q=52.55792,13.77905&hl=de&ll=52.557216,13.779817&spn=0.011154,0.033023&sll=51.151786,10.415039&sspn=22.454486,67.631836&vpsrc=6&t=m&z=16

Moderiert von user profile iconNarses: Beiträge zusammengefasst

user profile iconub60 hat folgendes geschrieben Zum zitierten Posting springen:

Hat jemand eine Idee, wie die Codierung funktioniert bzw. in welcher Sprache das abgespeichert ist (um dort weiter zu recherchieren).

Jupp, das ist immer das Selbe, nur in einer anderen Schreibweise.
Üblich ist:
Dezimal
Grad, Minute
Grad, Minute, Sekunde

Die lassen sich untereinander umrechnen. Genau wie Du Stunden in Dezimal umrechnen würdest. Musst halt nur damit rechnen, dass eine Minute 60 Sekunden hat.

' = Minute
" = Sekunde

Wenn Du also die Angabe 5° 10.5' hast, dann wäre das das Selbe wie 5° 10' 30"
Und umgekehrt genauso.


baka0815 - Di 13.12.11 14:56

Ich glaube er möchte wissen, wie er aus

Quelltext
1:
2:
global\12\lat=@Variant(\0\0\0\x87\x42R\x10t)
global\12\lon=@Variant(\0\0\0\x87\x41Vff)

die tatsächlichen Werte bekommt.

lon dürfte longitude, also der Längengrad sein.
lat dementsprechend latitude, also der Breitengrad.

Die Frage ist, wie die Werte im Variant zu verstehen sind. \x87 entspricht eigentlich dem Unicode-Zeichen 0087 [http://www.fileformat.info/info/unicode/char/87/index.htm], \x42 entspricht B [http://www.fileformat.info/info/unicode/char/42/index.htm], etc. Ob dir das hilft, wage ich jedoch zu bezweifeln.


Nersgatt - Di 13.12.11 15:22

user profile iconbaka0815 hat folgendes geschrieben Zum zitierten Posting springen:
Ich glaube er möchte wissen, wie er aus

Quelltext
1:
2:
global\12\lat=@Variant(\0\0\0\x87\x42R\x10t)
global\12\lon=@Variant(\0\0\0\x87\x41Vff)

die tatsächlichen Werte bekommt.

Stimmt, ich sollte genauer lesen. :lupe:


ub60 - Di 13.12.11 18:19

@baka0815:
Die Sache mit "lat" und "lon" war schon klar, mich interessiert nur, wie man von "52.55792" auf "(\0\0\0\x87\x42R\x10t)" kommt (oder auch umgekehrt).
Danke für den Tipp mit Unicoden, da irritieren mich nur die jeweils letzten Zeichen "R", "t" und "Vff". Eigentlich dachte ich, dass hier eine Fließkommazahl mit 4 oder 6 Byte entsprechend IEE754 verschlüsselt wird.

@Tilo:
Du musst natürlich beide Zahlen gleichzeitig (getrennt von einem Leerzeichen) eingeben, dann landest Du auf einem Radweg irgendwo zwischen Altlandsberg und Strausberg, also noch in Mitteleuropa :)

ub60


Martok - Di 13.12.11 18:35

user profile iconub60 hat folgendes geschrieben Zum zitierten Posting springen:
Danke für den Tipp mit Unicoden, da irritieren mich nur die jeweils letzten Zeichen "R", "t" und "Vff". Eigentlich dachte ich, dass hier eine Fließkommazahl mit 4 oder 6 Byte entsprechend IEE754 verschlüsselt wird.
Naja, das sieht mir nach BLOB-Encoding wie in JSON aus.

Das ergibt dann (in Hex:)

Quelltext
1:
2:
lat: 00 00 00 87 42 52 10 74
lon: 00 00 00 87 41 56 66 66

Mich irritiert ja, warum sie 41 und 42 auch escapen, das sind A und B.

Oh. Während dem Tippen hier rausgefunden :)

Ignoriere die 87 (das ist wohl eine Datenformatkennung, für den Variant) und dann kommen 4 Byte IEEE Big-Endian Single.

Quelltext
1:
2:
42 52 10 74 = 52.5160675048828096
41 56 66 66 = 13.3999996185302736


ub60 - Di 13.12.11 18:57

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Naja, das sieht mir nach BLOB-Encoding wie in JSON aus.

Genau das habe ich gesucht. Du bist mein Held! :wink:

ub60

PS: Gearde habe ich gemerkt, dass die entschlüsselten Koordinaten zur Berliner Innenstadt gehören, das war aber ein weiterer Wegpunkt. Hier haut wohl die Indizierung im Handy nicht ganz hin. Sonst ist alles i.O.


bummi - Di 13.12.11 19:25

Frust ich hatte es Rückwärts mit 52.55792 versucht, aber bei keinem Datentyp eine Entsprechung gefunden....


ub60 - Di 13.12.11 20:22

user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
Frust ich hatte es Rückwärts mit 52.55792 versucht, aber bei keinem Datentyp eine Entsprechung gefunden....

Ich hatte mich auch erst mit dem Datenformat beschäftigt, als ich merkte, dass das Handy bei mehr als 10 Wegpunkten die Daten zyklisch vertauscht :(
Danke für die Mühe!

ub60