BorgelMorgel Geschrieben November 26, 2013 at 14:34 Geschrieben November 26, 2013 at 14:34 Hallo, ich arbeite gerade mit dem GPS Bricklet und stehe vor dem Problem, dass die ausgegebenen Koordinaten im falschen Format vorliegen. Statt DD.DDDDDD° brauch ich DD°MM.MMMM' für weitere Bearbeitungsschritte. Eine Umstellung in der API hab ich nicht gefunden, im Viewer ist es ja möglich. Hab mir auch die Berechnung rausgesucht, wollte aber gern wissen ob es eine andere Möglichkeit gibt oder ich in der API evtl. etwas übersehen/lesen habe. Die Koordinaten werden dann zusammen mit einigen anderen Messwerten gespeichert. Eine nachträgliche Umwandlung möchte ich nach Möglichkeit vermeiden. Grüße Zitieren
Novae Geschrieben November 26, 2013 at 15:07 Geschrieben November 26, 2013 at 15:07 http://www.tinkerforge.com/de/doc/Software/Bricklets/GPS_Bricklet_Python.html#gps-bricklet-python-examples im codebeispiel wird es auch erst "danach" umgerechnet coords = gps.get_coordinates() print('Latitude: ' + str(coords.latitude/1000000.0) + '° ' + coords.ns) print('Longitude: ' + str(coords.longitude/1000000.0) + '° ' + coords.ew) aber das der zurückgegebene wert automatisch vor dem verlassen des bricks umgewandelt wird find ich nicht. aber vllt hilf dir das ja schon weiter die coords.ns und coords.ew dürften das MM.MMMM' sein. Korrigier mich bitte wenn ich falsch liege ich mach das grade ausm kopf ^^ Zitieren
Nic Geschrieben November 26, 2013 at 15:55 Geschrieben November 26, 2013 at 15:55 Das Beispiel gibt nur das Format DD.dddddd° zurück: Siehe in der Doku http://www.tinkerforge.com/de/doc/Software/Bricklets/GPS_Bricklet_Python.html#GPS.get_coordinates ns und ew geben die Himmelsrichtung NorthSouth bzw. EastWest zurück. Siehe Doku Andere Formate müssen umgerechnet werden. Im Codebeispiel werden nur die Koordinaten formattiert ausgegeben und nichts berechnet (Ausnahm. die Div. durch 1 Mio.) Zitieren
BorgelMorgel Geschrieben November 27, 2013 at 06:19 Autor Geschrieben November 27, 2013 at 06:19 Ok, das in der Doku hatte ich auch gefunden. Der Schritt ist ja notwendig um auf DD.DDDDD° zu gelangen. Also wenn es keine Möglichkeit gibt, werde ich wohl eine Berechnung durchführen. Vielen Dank für die schnellen Antworten. Zitieren
borg Geschrieben November 27, 2013 at 08:27 Geschrieben November 27, 2013 at 08:27 Wir haben ein paar Umrechnungen in brickv, an denen kannst du dich orientieren: https://github.com/Tinkerforge/brickv/blob/master/src/brickv/plugin_system/plugins/gps/gps.py def make_ddmm_mmmmm(self, degree): dd = degree / 1000000 mm = (degree % 1000000) * 60 / 1000000.0 mmmmm = (mm - int(mm)) * 100000 dd_str = str(dd) mm_str = str(int(mm)) mmmmm_str = str(int(mmmmm + 0.5)) while len(mm_str) < 2: mm_str = '0' + mm_str while len(mmmmm_str) < 5: mmmmm_str = '0' + mmmmm_str return u'{0}° {1}.{2}’'.format(dd_str, mm_str, mmmmm_str) def make_dd_dddddd(self, degree, url=False): if url: return '%2.6f' % (degree / 1000000.0) else: return u'%2.6f°' % (degree / 1000000.0) def make_ddmmss_sss(self, degree): dd = degree / 1000000 mm = (degree % 1000000) * 60 / 1000000.0 ss = (mm - int(mm)) * 60 sss = (ss - int(ss)) * 1000 dd_str = str(dd) mm_str = str(int(mm)) ss_str = str(int(ss)) sss_str = str(int(sss + 0.5)) while len(mm_str) < 2: mm_str = '0' + mm_str while len(ss_str) < 2: ss_str = '0' + ss_str while len(sss_str) < 3: sss_str = '0' + sss_str return u'{0}° {1}’ {2}.{3}’’'.format(dd_str, mm_str, ss_str, sss_str) Zitieren
BorgelMorgel Geschrieben November 27, 2013 at 09:00 Autor Geschrieben November 27, 2013 at 09:00 Super, danke! Da war ich ja schon auf dem richtigen Weg mit meinem Ansatz. Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.