GPS / GIS Berechnungen: Algorithmus zur Vorhersage der zukünftigen Position basierend auf Bewegung / mph?

8

Suchen Sie nach Ressourcen oder einem Algorithmus, um Folgendes in einer Navigations-App zu berechnen:

Wenn meine aktuelle GPS-Position (0,0) ist und ich bei 25 km / h 32 Grad fahre, wie kann ich berechnen, wie hoch meine Position in 10 Sekunden ist?

d. h .: GPSCoordinate predictedCoord = GPSCoordinate.FromLatLong(0, 0).AddByMovement(32, 15, TimeSpan.FromSeconds(10));

Bearbeiten: Der aktuelle Code basiert auf der Antwort unten:

%Vor%     
Brandon 05.02.2011, 20:13
quelle

2 Antworten

10

Hier ist die vollständige parametrische Antwort:

Variablen:

  • heading : Überschrift (d. h. Rückwärtswinkel von Azimut 0 ° in Grad)
  • speed : Geschwindigkeit (d. h. Norm des Geschwindigkeitsvektors in Meilen / Stunde)
  • lat0 , lon0 : Anfangskoordinaten in Grad
  • dtime : Zeitintervall von der Startposition in Sekunden
  • lat , lon : vorhergesagte Koordinaten in Grad
  • pi : Die pi Konstante (3.14159 ...)
  • Rt : Erdradius in Meilen (6378137,0 Meter, was 3964.037911746 Meilen ergibt)

In einem (östlichen, nördlichen) lokalen Rahmen ist die Position nach dem Zeitintervall:

%Vor%

(mit Koordinaten in Meilen)

Von dort können Sie die neue Position im WGS84-Rahmen (d. h. Breiten- und Längengrad) berechnen:

%Vor%

Bearbeiten: Korrigiert die letzte Zeile: * sin (phi) zu / sin (phi)

    
Stéphane 05.02.2011, 21:06
quelle
0

Hier sind die Formeln, die Sie brauchen.

Ссылка

Ich hoffe, das hilft.

Bob

[update] Hier sind die Formeln in JavaScript (aus der Quelle kopiert)

var lat2 = Math.asin (Math.sin (lat1) * Math.cos (d / R) + Math.cos (lat1) * Math.sin (d / R) * Math.cos (brng));     var lon2 = lon1 + Math.atan2 (Math.sin (brng) * Math.sin (d / R) * Math.cos (lat1), Math.cos (d / R) -Math.sin (lat1) * Math.sin (lat2));

d = zurückgelegte Entfernung = Geschwindigkeit x Zeit R = Radius der Erde

    
rcravens 06.02.2011 13:08
quelle

Tags und Links