Ich bin auf der Suche nach einer kostenlosen Bibliothek für Python, die Ihre Richtung und Ihre Geschwindigkeit aus GPS-Koordinaten berechnen und vielleicht berechnen kann, wenn Sie in einigen Grenzen oder solche Dinge sind.
Gibt es Bibliotheken, die Sie kennen und die gut für Sie funktioniert haben?
Bearbeiten: Ok es scheint, ich muss dies ein wenig angeben. Wir benutzen Python auf einem Linux-Rechner und holen die Daten von der gpsd. Ich hoffe, es gibt keine Notwendigkeit für eine spezielle Bibliothek, um nur mit dem Gerät zu sprechen. Nach was ich suche, ist Python-Code, der einige grundlegende Berechnungen mit den Daten durchführt. Wie zum Beispiel die letzten Positionen vergleichen und Geschwindigkeit und Richtung berechnen.
Offenbar ist das Python-Modul, das mit gpsd geliefert wird, das beste Modul für uns.
Für einen Start sehen Sie hier (die Seite wird auf Spam umgeleitet).
Das mit dem GPS mitgelieferte GPS-Modul hat einige sehr nützliche Funktionen. Die erste bezieht die Daten von gpsd und transformiert diese Daten in eine verwendbare Datenstruktur. Dann geben Ihnen die Module Zugriff auf Ihre Geschwindigkeit und Ihren aktuellen Kurs in Richtung Norden. Ebenfalls enthalten ist eine Funktion zur Berechnung der Entfernung zwischen zwei Koordinaten auf der Erde unter Berücksichtigung der sphärischen Natur der Erde.
Die Funktionen, die für unseren Sonderfall fehlen, sind:
Berechnung der Überschrift zwischen den Punkten. Bedeutet, dass ich am Punkt a nach Norden schaue, in welchem Grad muss ich mich wenden, um den Punkt zu erreichen, zu dem ich navigieren möchte.
Nimmt man die Daten der ersten Funktion und unseres aktuellen Kurses, um eine Drehung in Grad zu berechnen, die wir machen müssen, um einen gewünschten Punkt zu erreichen (keine große Sache, weil es meistens nur eine Subtraktion ist)
Das größte Problem beim Arbeiten mit dieser Bibliothek ist, dass es meistens ein Wrapper für den gpsd ist. Wenn Sie also auf einem anderen Betriebssystem programmieren, dann sollte gpscode wie Windows oder MacOS funktionieren, auf dem Sie den Code nicht ausführen können Installieren Sie das Modul.
Ich bin mir nicht sicher, ob ich Ihre genauen Anforderungen verstanden habe, aber abhängig von Ihrem Gerät & amp; c scheint es viele mögliche Kandidaten zu geben, wie:
Wenn Sie meinen, dass Sie bereits die GPS-Einheitsausgabe erhalten haben und sie nur analysieren müssen, vermute ich, dass eines oder mehrere der obigen Beispiele (die ich leider nicht ausprobiert habe) gut enthalten sind isolierte Module für diese Aufgabe, die Sie abhängig von den Lizenzbedingungen weiterverwenden können; diese SO-Frage könnte auch helfen, wenn Sie das sind tun.
Das Buch "Beginning Python Visualization" enthält ein solches Beispiel - das Analysieren von GPS-Daten und das Ableiten von Geschwindigkeit und Ort. Der Quellcode ist online unter Ссылка
verfügbarDie GPS-Sätze, die Sie von einem GPS-Gerät erhalten, sind ziemlich einfach zu entschlüsseln, und das sieht nach einem lustigen Projekt aus. Ich bin nicht sicher, was du von gspd bekommst, aber wenn es diese Sätze sind, musste ich vor ein paar Wochen tatsächlich etwas ähnliches für die Schule tun (aber in LabView):
%Vor%Sie könnten also einfach eine gpsstring.split (',') machen und Sie erhalten ein Array aller Elemente, die Sie dann parsen können. Um mehr über diese Sätze zu erfahren (es gibt andere, die ich für Geschwindigkeit und Richtung halte), klicken Sie hier .
Um beispielsweise die ungefähre Entfernung zwischen zwei Punkten zu erhalten, können Sie die Haversine-Formel verwenden:
%Vor%Dabei ist R der Radius der Erde in der Maßeinheit, in der Sie das Ergebnis erhalten möchten (z. B. R = 6372 km). Diese tatsächliche Zeile stammt aus dem LabView-Programm, das ich herumliegen hatte, aber die Syntax ist ziemlich ähnlich zu denen von Python (überprüfen Sie die Division , möchten Sie vielleicht "von future Importabteilung".
Außerdem müssen lat1, lat2, long1 und long2 in Radianten ausgedrückt werden. Das Format, in dem Sie sie erhalten, ist ziemlich seltsam (hhmm.ff, wobei ff Bruchteile von Minuten sind, also gehen sie von 0 bis 99 anstelle von 0 bis 59 (als Sekunden)).
Der Code, den ich dafür benutzt habe, ist:
%Vor%Das Vorzeichen ist 1 für Nord und Ost und -1 für Süd und Ost. Achten Sie wieder auf die Teilung.
Grenzen zu überprüfen ist meiner Meinung nach der einfachste. Wenn Sie bereits die Positionen in Bogenmaß oder Grad haben, können Sie einfach überprüfen, ob der Breitengrad zwischen zwei Breitengradgrenzen liegt, und dasselbe für Längengrad tun.
Schreiben Sie einen Wrapper um alles und Sie haben Ihre GPS-Bibliothek:)
Die meisten guten GPS-Einheiten (wir verwenden Oncore M12M) geben Ihnen als Ausgabe Ihre Geschwindigkeit und Richtung. Ich würde zuerst die Dokumentation Ihres GPS-Empfängers überprüfen, um zu sehen, ob diese Information bereits gesendet wird oder ob eine solche Nachricht aktiviert werden kann. Meiner Erfahrung nach sind diese Daten normalerweise Teil der Standardtelemetrie, die Ihnen ein Empfänger geben wird.
Wenn das nicht funktioniert, denke ich, dass es am besten ist, die Details von WGS-84 (das GPS-Koordinatensystem) zu verwenden, um eine tatsächliche (x, y, z) Koordinate zu erhalten und sie dann mit der nächsten zu unterscheiden finde deinen Kurs und nimm die Größe der Differenz über das Zeitintervall, um deine Geschwindigkeit zu finden. Einige Details hier: Ссылка
Wenn du wirklich ein Paket willst, das all das macht, denke ich, dass pyEphem ziemlich gut ist, obwohl ich denke, dass du ein wenig Zeit sparen kannst, indem du es selbst schreibst und ein bisschen Wissen schaffst.
(Sorry, wenn nicht hilfreich, zum ersten Mal Poster, immer noch lernen, Stapel zu stapeln)