Python: Berechnen Sie das Lager zwischen zwei Lat/Long/Long
Posted: 02 Feb 2025, 09:52
Ich versuche, das Lager zwischen zwei lat/long zu berechnen.
Vorgestellt: < /em> < /p>
Ich freue mich, zusätzliche Informationen zu geben. Vielen Dank im Voraus für jede/alle Hilfe.
Vorgestellt: < /em> < /p>
Code: Select all
def get_bearing(lat1, long1, lat2, long2):
dLon = (long2 - long1)
y = math.sin(dLon) * math.cos(lat2)
x = math.cos(lat1) * math.sin(lat2) - math.sin(lat1) * math.cos(lat2) * math.cos(dLon)
brng = math.atan2(y, x)
brng = np.rad2deg(brng)
return brng
< /code>
Das Problem ist, dass das Ergebnis nicht erwartet wird. < /p>
Die beabsichtigte Verwendung der Funktion gibt das Lager zwischen zwei lat /langen Paaren in einer (sehr langen) Liste zurück, d. H. < /p>
lat1 = path[int(len(path) * location / 1000)][0]
lat2 = path[int(len(path) * location / 1000) + 1][0]
lng1 = path[int(len(path) * location / 1000)][1]
lng2 = path[int(len(path) * location / 1000) + 1][1]
< /code>
Das Lagerergebnis verändert dann die Ansichtsorientierung des Diagramms, bei dem das Lager einen Wert im Bereich annehmen kann [-180, 180]. Im Idealfall würde das Ergebnis so erscheinen, dass die Linie zwischen LAT1, LNG1 und LAT2, LNG2, in der Handlung perfekt "vertikal" ist (LAT/LON -Annotationen werden in Plot geschaltet), siehe unten
< /p>
< /p>
Ich hoffe, dass jemand in der Lage sein könnte, das Problem aus dem von der Funktion zurückgekehrten Lager und dem erwarteten Lager zu leiten. Ein paar Instanzen unten: < /p>
Current Location: 30.07134 -97.23076
Next in path: 30.0709 -97.22907
Calculated Bearing: 88.39967863143139
Expected Bearing: ~-70.67
Current Location: 29.91581 -96.85068
Next in path: 29.91556 -96.85021
Calculated Bearing: 118.9170342272798
Expected Bearing: ~122.67
Current Location: 29.69419 -96.53487
Next in path: 29.69432 -96.53466
Calculated Bearing 141.0271357781952
Expected Bearing: ~56
Current Location: 29.77357 -96.07924
Next in path: 29.77349 -96.07876
Calculated Bearing 165.24612555483893
Expected Bearing: ~104