Risposte:
Il cuscinetto planare può essere calcolato usando ST_Azimuth
:
SELECT ST_Azimuth(ST_MakePoint(1,2),
ST_MakePoint(3,4))/(2*pi())*360 as degAz,
ST_Azimuth(ST_MakePoint(3,4),
ST_MakePoint(1,2))/(2*pi())*360 As degAzrev
degaz degazrev
------ ---------
45 225
Per azimut sferico (citando il gruppo utenti potgis ):
La funzione azimut PostGIS sembra utilizzare una semplice funzione arctan per determinare l'azimut. Se converti le tue coordinate in un sistema di coordinate proiettato e quindi esegui la query, i tuoi risultati saranno molto più vicini ai risultati del sito FCC.
Ecco una rapida conversione in UTM Zone 31:
select degrees(azimuth(
'POINT(634714.442133176 5802006.052402816)',
'POINT(634731.2410598891 5801981.648284801)'
));
che produce un azimut di 145.457858825445. I punti al centro della zona UTM o una proiezione più adatta darebbero risultati migliori.
Questa è la soluzione che ho scelto quando ho dovuto affrontare questi problemi, principalmente per motivi legacy (avevo una funzione Python che calcola l'azimut). Innanzitutto, dobbiamo trovare una funzione che ci indichi la distanza esatta tra due punti. Citando il manuale di PostGIS :
ST_distance_sphere (punto, punto) Restituisce la distanza lineare in metri tra due punti lat / lon. Utilizza una terra sferica e un raggio di 6370986 metri. Più veloce di distance_spheroid (), ma meno preciso. Implementato solo per punti.
Misurare la distanza di longitudine e latitudine tra i punti e utilizzare la arctan
funzione per recuperare l'angolo.
atan
? Il mio trigonmetry è un po 'confuso ...