Câu trả lời:
Mang phẳng có thể được tính bằng cách sử dụng 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
Đối với phương vị hình cầu (Nhóm trích dẫn người dùng potgis ):
Hàm góc phương vị PostGIS dường như sử dụng hàm arctan đơn giản để xác định góc phương vị. Nếu bạn chuyển đổi tọa độ của mình sang hệ tọa độ dự kiến và sau đó chạy truy vấn, kết quả của bạn sẽ gần hơn với kết quả của trang web của FCC.
Đây là một chuyển đổi nhanh chóng sang UTM Vùng 31:
select degrees(azimuth(
'POINT(634714.442133176 5802006.052402816)',
'POINT(634731.2410598891 5801981.648284801)'
));
mang lại một góc phương vị 145.457858825445. Các điểm ở trung tâm của vùng UTM hoặc hình chiếu phù hợp hơn sẽ cho kết quả tốt hơn.
Đây là giải pháp tôi đã chọn khi tôi phải giải quyết vấn đề này, chủ yếu là vì lý do di sản (tôi có hàm Python tính toán góc phương vị). Đầu tiên, chúng ta cần tìm một hàm cho chúng ta biết khoảng cách chính xác giữa hai điểm. Trích dẫn hướng dẫn sử dụng postgis :
ST_distance_sphere (điểm, điểm) Trả về khoảng cách tuyến tính tính bằng mét giữa hai điểm lat / lon. Sử dụng một trái đất hình cầu và bán kính 6370986 mét. Nhanh hơn distance_spheroid (), nhưng kém chính xác hơn. Chỉ thực hiện cho điểm.
Đo khoảng cách Kinh độ và Vĩ độ giữa các điểm và sử dụng arctan
chức năng để lấy góc.
atan
? Lượng giác của tôi hơi mơ hồ ...