Jump to content

Recommended Posts

Geschrieben

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

Geschrieben

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 ^^

Geschrieben

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.)

Geschrieben

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)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...