Jump to content

[Python] GPS Bricklet


Recommended Posts

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...