[PYTHON] Konvertieren Sie Breite, Länge und GPS-Höhe in dreidimensionale orthogonale Koordinaten

Es gibt einige Situationen, in denen Sie Breiten- und Längengrade in eine Position im orthogonalen Koordinatensystem konvertieren oder einen linearen Abstand von Breiten- und Längengraden ** (nicht) erhalten möchten.

Tatsächlich denke ich, dass viele andere Leute diese Art von Artikel geschrieben haben. Ich denke jedoch, dass das Koordinatensystem, das Sie verwenden möchten, je nach Anwendung unterschiedlich sein kann. Nachdem dies gesagt wurde, habe ich gelernt, wie man in ein nicht bewegliches dreidimensionales orthogonales Koordinatensystem ** mit dem Schwerpunkt der Erde als Ursprung konvertiert, deshalb möchte ich es hier mit der Bedeutung eines Memorandums zusammenfassen.

Es geht ein wenig darum, wenn Sie also unterwegs Vorschläge haben, bitte.

Über die Darstellung von Breiten- und Längengraden

Zunächst möchte ich den Ausdruck von Längen- und Breitengrad als Prämisse ansprechen. Die folgenden zwei Arten von Ausdrücken werden hauptsächlich zur Beschreibung von Breiten- und Längengraden verwendet. Achten Sie darauf, es nicht zu verwechseln.

Notation in Grad, Minuten und Sekunden

Ein Format wie "135 ° 12'34.56" in 60-facher Notation. Es ist das, was du oft hörst. Es wird als "135 Grad 12 Minuten 34 Sekunden 56" gelesen.

Es kann als "135 ° 12'34" 56 "geschrieben oder als" 135 ° 12 Minuten 34,56 Sekunden "gelesen werden. Dann scheint es, dass es als "1351234.56" oder "135.12.34.56" geschrieben werden kann. Persönlich ist es ein Wort von ** bitte hör auf, weil es wirklich verwirrend ist **, aber du kannst es von der folgenden Dezimalschreibweise durch die Art und Weise unterscheiden, wie der Punkt angehängt wird.

Notation ablehnen

Wie der Name schon sagt, handelt es sich hierbei um eine Dezimalschreibweise wie "135.2096". Die Teile "Minute" und "Sekunde" werden durch eine kleine Anzahl von "Grad" dargestellt. Die "135 ° 12'34.56" im obigen Beispiel ist

135 + (12 / 60) + (34.56 / 3600)

Wird in die Dezimalschreibweise von "135.2096" konvertiert. Der Messwert beträgt "135,2096 Grad".

Einige Grad-, Minuten- und Sekundenschreibweisen sehen der Dezimalschreibweise sehr ähnlich, aber Sie können sehen, dass ** Sie erkennen können, welche Sie verwenden, indem Sie die Art und Weise betrachten, wie die Dezimalstellen hinzugefügt werden **.

Über die Koordinaten erhalten Sie hier

In diesem Artikel wird erläutert, wie die vom GPS gemessenen Breiten- und Längengradinformationen in eine Position in einem absoluten dreidimensionalen Koordinatensystem konvertiert werden. Der wichtige Punkt ist, dass es ** das Verfahren zum Erhalten nur dreidimensionaler Koordinaten ** erklärt.

Mit anderen Worten, was ich meine ist ** es ist egal, ob die Erde tatsächlich da ist **. Selbst wenn Sie mit dieser Methode die Koordinaten zweier beliebiger Punkte erhalten, selbst wenn Sie den Abstand zwischen diesen beiden Punkten finden, ist dies ** ein geradliniger Abstand durch die Erde **. Deshalb ist die Methode in diesem Artikel nützlich, wenn Sie an Flugzeuge und Raumfahrzeuge denken (weil sie sich nicht entlang der Erdoberfläche bewegt).

Wenn Sie beispielsweise an Gebäude und Automobile am Boden denken, ** ist eine Methode nützlich, um zweidimensionale Koordinaten eines bestimmten Punkts von einem beliebigen Punkt aus zu erhalten (und den Aspekt der Erde zu berücksichtigen) **. Dieser Artikel ist sehr hilfreich.

Implementierung der gegenseitigen Konvertierung zwischen Breiten- und Längengrad sowie orthogonalen Koordinaten der Ebene in Python - Qiita

Was ist das WGS-84-Koordinatensystem?

Die diesmal verwendete Berechnung ist ein dreidimensionales orthogonales Koordinatensystem namens ** WGS-84 **, das von GPS-Satelliten verwendet wird. Es ist eine Art erdfestes orthogonales Koordinatensystem, dessen Ursprung der Schwerpunkt der Erde ist. Es bedeutet, dass ** es rund und rund mit der Erde geht **. Die Parameter der WGS-84-kompatiblen Ellipse sind unten aufgeführt ... Ich dachte schon, aber wenn nötig, googeln Sie bitte jede.

Wie man fragt

Platzieren Sie zuerst die Variablen wie in der folgenden Abbildung gezeigt. Leute, die sich so etwas einfallen lassen, sind unglaublich. "Breite φ", "Länge λ", "Ellipsenhöhe h", Koordinaten des Punktes P "x", "y", "z". Die zentrale Ellipse ist die Erde. GPS verwendet WGS-84 für diese Ellipse.

** Bearbeitet am 2020.04.01 ** Die englischen Übersetzungen von elliptischer Körpergröße und -höhe können schwanken, deshalb habe ich sie gelöscht. Wir würden uns freuen, wenn Sie uns kommentieren könnten, wenn Sie irgendwelche Kenntnisse haben.

Ergänzung: Was ist die elliptische Körpergröße?

Wie der Name schon sagt, ist es die Höhe, gemessen von der Oberfläche der Ellipse, die wie die Erde aussieht. Die vom GPS zurückgegebene Höhe ist die Höhe dieses Ellipsoids. Hierbei ist zu beachten, dass die elliptische Körpergröße häufig als ** anders als die Höhe ** bezeichnet wird. Die Höhe ist ** Höhe gemessen vom durchschnittlichen Meeresspiegel. Die Linie, die den durchschnittlichen Meeresspiegel bis zum Land verlängert, wird als Geoid bezeichnet, und die ** Höhe ** ist die Entfernung zwischen dem Ziel und dem Geoid. Der Abstand zwischen Ellipse und Geoid wird als ** Geoidhöhe ** bezeichnet. Mit anderen Worten, ** die elliptische Körperhöhe kann durch die Summe der Höhe und der Geoidhöhe ** ausgedrückt werden. Es ist kompliziert. Als ich es illustrierte, wurde es ein enormes Farbschema. Die Geoidhöhe variiert je nach Erdpunkt und kann an der Berechnungsstelle der Meteorologischen Agentur abgerufen werden. https://vldb.gsi.go.jp/sokuchi/surveycalc/geoid/calcgh/calc_f.html

Zeremonie

Da es schwierig ist, den gesamten Ableitungsprozess zu schreiben, können die Koordinaten des Punktes P wie folgt ausgedrückt werden, indem alle Kanten gefaltet werden. Hier ist "a der lange Radius" und "e ist die Exzentrizität", und im Fall einer WGS-84-kompatiblen Ellipse werden die folgenden Konstanten verwendet (e wird tatsächlich aus der Ebenheit berechnet).

Die obige Formel scheint unter denen auf der Straße ** berühmt (?) ** Zu sein, und wenn Sie danach suchen, werden Sie verschiedene Ableitungen finden. Bitte googeln Sie bei Bedarf. Verwenden Sie diesen Artikel nicht als Referenz.

Bei Implementierung in Python

Ich habe beschlossen, es zu einer solchen Funktion zu machen. Argumente: Breitengrad φ [Grad], Längs λ [Grad], Ellipsenhöhe h [m] Rückgabewert: x Koordinate [m], y Koordinate [m], z Koordinate [m]

import numpy as np

def xyz(phi, lamb, h):  #Argument Breite und Länge werden in Dezimalschreibweise ausgedrückt
    
    #Breiten- und Längengrad in Bogenmaß umrechnen
    phi = np.deg2rad(phi)
    lamb = np.deg2rad(lamb)

    #Konstante(WGS-Für 84 konforme Ellipsen)
    a = 6378137          #Langer Radius[m]
    e = 0.0818191908426  #Dezentrale Rate[-]
    
    N = a / np.sqrt(1 - (e ** 2 * np.sin(phi) ** 2))
    x = (N + h) * np.cos(phi) * np.cos(lamb)
    y = (N + h) * np.cos(phi) * np.sin(lamb)
    z = (N * (1 - e ** 2) + h) * np.sin(phi)
    
    return x, y, z  #[m]

das ist alles. Bitte entschuldigen Sie mein schlechtes Schreiben.

Recommended Posts

Konvertieren Sie Breite, Länge und GPS-Höhe in dreidimensionale orthogonale Koordinaten
Python-Skript zum Konvertieren von Breiten- und Längengrad in Mesh-Code
Versuchen Sie, Breiten- / Längen- und Weltkoordinaten mit Python ineinander umzuwandeln
[GPS] Berechnen Sie Entfernung, Azimutwinkel und Höhenwinkel aus GPS-Breiten- und Längengrad mit pyproj
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
Längen- und Breitengradkoordinaten ↔ UTM-Koordinatenkonvertierung mit Python
Erstellen Sie eine Liste mit Längen- und Breitengraden und konvertieren Sie die UTM-Koordinaten sofort → Dateiausgabe