Ausrichtung einer Linie abrufen

Gibt es eine einfache Möglichkeit, ähnlich der Längenabfrage, die Richtung einer Linie auszugeben?
Hintergrund ist mein Wunsch, einen Startpunkt und einen Zielpunkt einzugeben und den geografischen Kurs zwischen Start und Ziel zu bestimmen (praktischer Weise die Gradzahl für einen Kompass, aber das mit dem Magnetfeld wäre dann Schritt zwei ;)).

Geht es um eine Linie im zweidimensionalen euklidischen Raum order um eine Linie auf dem Erdball?
Auf dem Erdball macht die Frage wenig Sinn, weil ein Großkreis nicht alle Meridiane im selben Winkel schneidet.

In der euklidischen Ebene kann man die eingebauten geometrischen Datentypen verwenden:

SELECT LSEG '[(1,1),(2,10)]';

      lseg      
════════════════
 [(1,1),(2,10)]
(1 row)

Um den Winkel zur X-Achse in Grad zu bestimmen, kann man dann folgende Funktionen verwenden:

CREATE FUNCTION base_angle(double precision, double precision, double precision, double precision) RETURNS double precision
RETURN asin(($4 - $2) / sqrt(($3 - $1) ^ 2 + ($4 - $2) ^ 2)) * 180 / pi();

CREATE FUNCTION angle(lseg) RETURNS double precision
RETURN CASE WHEN ($1[1])[0] > ($1[0])[0]
            THEN base_angle(($1[0])[0], ($1[0])[1], ($1[1])[0], ($1[1])[1])
            ELSE 180 - base_angle(($1[0])[0], ($1[0])[1], ($1[1])[0], ($1[1])[1])
       END;

Das gibt dann

SELECT angle(LSEG '((1,1),(2,10))');

       angle       
═══════════════════
 83.65980825409004
(1 row)
1 „Gefällt mir“

Ich fürchte, ich kann das nicht alles überblicken. Ich arbeite im Koordinatensystem EPSG 25833 und glaube, dass sich mit den metrischen Punktangaben und deiner Dreiecksfunktion der Winkel ermitteln lässt. Ich muss mal sehen, ob ich die Funktionen eingebaut kriege und werde daran ein bisschen basteln - vielen Dank erst mal!

Viellleicht hilft das weiter, andernfalls mußt du die einen eigen Funktion schreiben:

https://postgis.net/docs/manual-3.4/ST_Angle.html

Grüße Uwe

Danke für Eure Antworten! Ich bin über ST_Angle noch auf ST_Azimuth gestoßen, und das funktioniert super mit 2 Punkten (Start, Ziel).