Làm cách nào tôi có thể tính toán được giữa hai điểm trong PostGIS?


19

Làm cách nào tôi có thể tìm thấy mối liên hệ giữa hai điểm trong PostGIS?

Vui lòng xác định trong câu trả lời của bạn cho dù phương pháp tạo ra một ổ trục trên hình cầu, hay một ổ trục phẳng.

Câu trả lời:


21

Sử dụng ST_Azimuth

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.

Sử dụng các hàm lượng giác và ST_distance_sphere

Đâ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 arctanchức năng để lấy góc.


Tôi sẽ cố gắng đăng mã trăn sau và có thể so sánh giữa các phương thức - Nếu tôi có thể tìm thấy mã kế thừa đó ...
Adam Matan

Bạn có thể làm rõ về cách bạn đi từ một khoảng cách đến một góc với atan? Lượng giác của tôi hơi mơ hồ ...
đánh dấu

11

Đối với bất kỳ ai gặp phải câu hỏi này ngay bây giờ - PostGIS hỗ trợ ST_Azimuth về địa lý (hình cầu) kể từ 2.0.0.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.