Jawaban:
Bantalan planar dapat dihitung menggunakan 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
Untuk azimuth bola (Mengutip grup pengguna potgis ):
Fungsi azimuth PostGIS tampaknya menggunakan fungsi arctan sederhana untuk menentukan azimuth. Jika Anda mengonversi koordinat Anda ke sistem koordinat yang diproyeksikan dan kemudian menjalankan kueri, hasil Anda akan jauh lebih dekat dengan hasil situs FCC.
Ini adalah konversi cepat ke UTM Zone 31:
select degrees(azimuth(
'POINT(634714.442133176 5802006.052402816)',
'POINT(634731.2410598891 5801981.648284801)'
));
yang menghasilkan azimuth 145.457858825445. Poin di tengah zona UTM, atau proyeksi yang lebih cocok akan memberikan hasil yang lebih baik.
Ini adalah solusi yang saya pilih ketika saya harus berurusan dengan masalah ini, terutama karena alasan warisan (saya memiliki fungsi Python yang menghitung azimuth). Pertama, kita perlu menemukan fungsi yang akan memberi tahu kita jarak yang tepat antara dua titik. Mengutip manual postgis :
ST_distance_sphere (titik, titik) Mengembalikan jarak linear dalam meter antara dua titik lat / lon. Menggunakan bumi bulat dan jari-jari 6370986 meter. Lebih cepat dari distance_spheroid (), tetapi kurang akurat. Hanya diterapkan untuk poin.
Ukur Bujur dan Lintang jarak antara titik, dan gunakan arctan
fungsi untuk mengambil sudut.
atan
? Trigonetri saya agak kabur ...