BorgelMorgel Posted November 26, 2013 at 02:34 PM Share Posted November 26, 2013 at 02:34 PM 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 Quote Link to comment Share on other sites More sharing options...
Novae Posted November 26, 2013 at 03:07 PM Share Posted November 26, 2013 at 03:07 PM 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 ^^ Quote Link to comment Share on other sites More sharing options...
Nic Posted November 26, 2013 at 03:55 PM Share Posted November 26, 2013 at 03:55 PM 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.) Quote Link to comment Share on other sites More sharing options...
BorgelMorgel Posted November 27, 2013 at 06:19 AM Author Share Posted November 27, 2013 at 06:19 AM 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. Quote Link to comment Share on other sites More sharing options...
borg Posted November 27, 2013 at 08:27 AM Share Posted November 27, 2013 at 08:27 AM 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) Quote Link to comment Share on other sites More sharing options...
BorgelMorgel Posted November 27, 2013 at 09:00 AM Author Share Posted November 27, 2013 at 09:00 AM Super, danke! Da war ich ja schon auf dem richtigen Weg mit meinem Ansatz. Quote Link to comment Share on other sites More sharing options...
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.