2014-08-28 10 views
4

우선 지구의 방위각, 즉 뉴욕과 모스크바와 같은 두 위치 간의 각도를 원한다는 것을 분명히하자.이러한 방위각 값 중 어느 것이 올바른 값입니까? 그리고 왜?

내 JS 함수 (아래 참조)로 일부 방위각 계산을 테스트하고 있습니다. 점 A (-170, -89)에서 B (10, 89)까지는 ​​~ 90 °가됩니다. Calculator 2에서

var dLon = lon2 - lon1; 
var f = 1/298.257223563; /* Flattening for WGS 84 */ 
var b = (1 - f) * (1 - f); 
var tanLat2 = Math.tan(lat2); 
var y = Math.sin(dLon); 
var x; 
if (lat1 === 0) { 
    var x = b * tanLat2; 
} else { 
    var a = f * (2 - f); 
    var tanLat1 = Math.tan(lat1); 
    var c = 1 + b * tanLat2 * tanLat2; 
    var d = 1 + b * tanLat1 * tanLat1; 
    var t = b * Math.tan(lat2)/Math.tan(lat1) + a * Math.sqrt(c/d); 
    var x = (t - Math.cos(dLon)) * Math.sin(lat1); 
} 
var angle = Math.atan2(y, x) * 180/Math.PI; 

편원의 회전 타원체에 (위키 백과에서) 방위각에 대한

var dLon = lon2 - lon1; 
var y = Math.sin(dLon) * Math.cos(lat2); 
var x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLon); 
var angle = Math.atan2(y, x) * 180/Math.PI; 

JS 기능 (위키 백과에서) 영역에 방위각에 대한

JS 기능, 나는 90도를 얻을. PostGIS와에서

, 나는 Calculator 1에서, 270

을 얻을, 나는 180을 얻는다.

나는 방위각이 폴란드 근처에서 점점 더 왜곡된다는 것을 알고 있습니다. 그러나 이것이 정확하게이 지점에서 테스트하는 이유입니다. 이러한 다양한 솔루션은 저를 혼란스럽게합니다. 이것에 대한 올바른 대답을 얻도록 도와 주시겠습니까?

답변

2

방위각 (azimuth)에 사용되는 기준에 따라 다릅니다. map-types은 북쪽으로 0 °, 양수는 시계 방향으로, 반면에 Math-types는 동쪽으로 0 °를 사용하고 양수는 반 시계 방향으로 사용합니다.

좌표 쌍 A (-170, -89)와 B (10, 89)는 최소 거리와 방위각을 찾는 특별한 경우 인 antipodes입니다. 당신의 질문은 사고 연습으로 대답 될 수 있습니다.

먼저 참고 땅의 반 둘레는 것을 :

  • 적도 : 20037.5085 km
  • 자오선 (북에 남쪽) : 20003.93 km

한 쌍을 위해 북극과 남극의 대척 점 (antipode)은 거리가 각 경도에 따라 동일하므로 무한정의 방위각이있다. (남극에서 북극으로가는 방향은 무엇입니까?)

적도의 한 쌍의 대장경의 경우 최단 거리는 자오선 방향을 따라 약간 짧기 때문에 북쪽 또는 남쪽입니다.

다른 대문자 쌍의 경우 적도에서와 같은 대답 : 북쪽 또는 남쪽입니다.


업데이트

조금 더 PostGIS와 SQL 쿼리에 문제를 조사하려면 : PostGIS와 2.0 및 2.1

SELECT ST_Distance(A, B), degrees(ST_Azimuth(A, B)) 
FROM (
    SELECT 'POINT(-170 -89)'::geography A, 'POINT(10 89)'::geography B 
) f; 

, 잘못된 결과는 다음과 같습니다

st_distance |  degrees 
-----------------+------------------ 
20003900.583699 | 270.005278779849 

그러나 PostGIS 2.2 (및 PROJ 4.9.1) 올바른 결과는 다음과 같습니다.

st_distance | degrees 
------------------+--------- 
20003931.4586255 |  180 
+0

실제로 많은 솔루션이 유효하지만 편 구형 타원체를 고려하면 북과 남이 올바른 해결책입니다. 고맙습니다! :) – joaorodr84