Tôi muốn tính góc giữa hai đường mà chúng giao nhau trong PostGIS.
Điểm bắt đầu để tính toán góc trong PostGIS dường như là ST_Azimuth - nhưng lấy điểm làm đầu vào. Suy nghĩ đầu tiên của tôi là lấy các điểm cuối của các đường giao nhau và thực hiện phép tính Azimuth trên các đường đó. Điều đó là không đủ, bởi vì hầu hết các tính năng đường thẳng không thẳng và tôi quan tâm đến góc ở giao lộ. Vì vậy, những gì tôi đã đưa ra là một hoạt động lồng nhau trải qua các bước sau:
- Xác định tất cả các giao điểm giữa hai bảng tính năng dòng.
- Tạo một vùng đệm rất nhỏ xung quanh điểm giao nhau
- Xác định các điểm mà các tính năng đường thẳng giao nhau với bên ngoài bộ đệm (lấy điểm đầu tiên nếu có nhiều hơn một - tôi thực sự chỉ quan tâm đến việc góc đó có gần 0, 90 hay 180 độ không)
- Tính ST_Azimuth cho hai điểm đó.
SQL đầy đủ là loại dài để đăng ở đây, nhưng tôi đã viết nó ở đây nếu bạn quan tâm. (Nhân tiện, có cách nào tốt hơn là mang theo tất cả các trường đi xuống các câu lệnh VỚI không?)
Kết quả không đúng, vì vậy rõ ràng tôi đang làm sai:
EDIT Tôi làm lại các tính toán trong EPSG: 3785 và kết quả hơi khác một chút nhưng vẫn không đúng:
Câu hỏi của tôi là những sai sót trong quá trình này. Tôi có hiểu nhầm ST_Azimuth không? Có vấn đề CRS không? Một cái gì đó khác hoàn toàn? Hoặc có thể có một cách đơn giản hơn nhiều để làm điều này?