답변:
평면 베어링은 다음을 사용하여 계산할 수 있습니다 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
구형 방위각 (Quoting potgis-users group )의 경우 :
PostGIS 방위 함수는 방위각을 결정하기 위해 간단한 arctan 함수를 사용하는 것 같습니다. 좌표를 투영 된 좌표 시스템으로 변환 한 다음 쿼리를 실행하면 결과가 FCC 사이트의 결과에 훨씬 더 가깝습니다.
UTM Zone 31 로의 빠른 전환은 다음과 같습니다.
select degrees(azimuth(
'POINT(634714.442133176 5802006.052402816)',
'POINT(634731.2410598891 5801981.648284801)'
));
145.457858825445의 방위각을 산출합니다. UTM 영역의 중앙에있는 점 또는보다 적합한 투사는 더 나은 결과를 제공합니다.
이것이 주로 레거시 이유로 (이러한 방위각을 계산하는 Python 함수가 있음)이 문제를 처리해야 할 때 선택한 솔루션입니다. 먼저 두 점 사이의 정확한 거리를 알려주는 함수를 찾아야합니다. postgis 매뉴얼 인용 :
ST_distance_sphere (point, point) 두 위도 / 경도 지점 사이의 선형 거리를 미터 단위로 반환합니다. 구형 지구와 반경 6370986 미터를 사용합니다. distance_spheroid ()보다 빠르지 만 정확도는 떨어집니다. 포인트에 대해서만 구현됩니다.
점 사이의 경도 및 위도 거리를 측정하고 arctan
함수를 사용 하여 각도를 검색하십시오.
atan
? 내 삼각법은 약간 흐릿합니다.