Hoffe dass das Thema in dieses Forum passt.
Also ich möchte wissen wie Punkt B (bspw. Berlin) zu Punkt A (bspw München) steht, also wie die Himmelsrichtung ausgehend von Punkt A zu Punkt B ist.
Hierzu habe ich folgendes versucht (Oracle Funktion):
Code: Alles auswählen
create or replace function getAngle(
p1 sdo_geometry,
p2 sdo_geometry
) return number
is
v_dx number;
v_dy number;
v_distance number;
v_angle number;
begin
v_dx := p2.sdo_point.x - p1.sdo_point.x;
v_dy := p2.sdo_point.y - p1.sdo_point.y;
v_distance := sqrt(v_dx * v_dx + v_dy * v_dy);
v_angle := acos(v_dy / v_distance) * 360 / 6.28;
return v_angle;
Wenn ich dann die Funktion füttere, sieht das Ergebnis wie folgt aus:
Code: Alles auswählen
select
GETANGLE(
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(11.57917, 48.13842, NULL), NULL, NULL), --münchen
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(13.45742, 52.58146, NULL), NULL, NULL) -- berlin
) as winkel
from dual
Ergebnis = 22,9273401512935
select
GETANGLE(
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(13.45742, 52.58146, NULL), NULL, NULL),
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(11.57917, 48.13842, NULL), NULL, NULL)
) as winkel
from dual
Ergebnis = 157,163958462134
Nur beim 2ten Statement bekomme ich einen Wert von ~157 Grad raus, und wenn man dem vorherigen Stmt glaubt, dann müsste nun München Südöstlich von Berlin liegen --> ist aber falsch(?), auf Karten liegt München eher Südwestlich.
Weiß jemand Rat oder kennt eine Berechnung mit der ich das gewünschte Ziel bekomme? Ich glaube dass mir meine Berechnung nur einen Winkel zwischen 0 und 180 Grad liefert und ich weiß nicht so recht wie ich hierbei weiter vorgehen soll damit ich auch die Grade jenseits davon bekomme.
Also Ziel wäre eine Berechnung die mir folgende Ergebnisse liefert (wenn jene stimmen):
Berlin liegt Nordöstlich von München (was meine Berechnun ausspucken würde)
München liegt Südwestlich von Berlin (dieses Ergebnis bekomme ich mit meiner Berechnung nicht).