저는이 방법을 자바 스크립트로 구현했으며 대략 2.5 % 정도를 설명하고 있습니다. 왜 그런지 이해하고 싶습니다.지구 중심 좌표계를 사용하여 위도, 경도 및 높이로부터 거리를 계산합니다.
제 입력 데이터는 WGS84 타원체 위의 위도, 경도 및 높이로 표시된 점의 배열입니다. 이 포인트는 마라톤 경주 중 손목에 장착 된 GPS 장치에서 수집 한 데이터에서 가져온 것입니다.
내 알고리즘은 각 점을 데카르트 좌표로 변환 한 다음 유클리드 거리 (피타고라스)를 계산하는 것이 었습니다. 직교 좌표계는 지구 중심 지구 고정이라고도합니다. 즉 지구와 함께 회전하는 X, Y, Z 좌표 시스템입니다.
내 테스트 데이터는 마라톤의 데이터이므로 거리는 42.26km에 가깝습니다. 그러나, 거리는 약 43.4km에 이른다. 저는 다양한 접근법을 시도했지만 결과는 1 미터 이상 변하지 않았습니다. 예 : 높이 데이터를 NASA SRTM 임무의 데이터로 바꿨습니다. 높이를 0으로 설정했습니다.
Google을 사용하여 위도, 경도, 높이가 변환 된 두 점을 발견했습니다. 알고리즘이 일치합니다.
설명 할 수있는 것은 무엇입니까? Javascript의 이중 표현을 너무 많이 기대합니까? (X, Y, Z 숫자는 매우 크지 만 두 점 사이의 차이는 매우 작습니다.)
대신 Vincenty의 알고리즘 (또는 이와 유사한 방법)을 사용하여 WGS84 타원체의 측지선을 계산 한 다음 두 높이를 사용하여 유클리드 거리를 계산하는 방법으로 이동하는 것이 더 정확하지 않을 수 있습니다.
미리 도움 주셔서 감사합니다.
사용중인 샘플 입력 배열을 제공 할 수 있습니까? –
@Sarge, Darin이 말했듯이 우리는 실제로 데이터를 볼 필요가 있습니다. 마라톤이 정확히 42.26km가 아니었을지도 모릅니다. 또는 주자가 우회했다 ;-) –
여기에 파일을 게시하는 방법을 모르겠다는 점이 많습니다. 처음 2 점 : SRID = 4326, 스트링 (-123.371889330447 48.4189514815807 0.2 -123.371935682371 48.4187386650592 -0.6) 지심 유클리드 : 14.067619675265561 회전 타원체 길이 (WGS 84) 23.9255789000969 처음 5 점 : SRID = 4326, 스트링 (-123.371889330447 48.4189514815807 0.2 -123.371935682371 48.4187386650592 -0.6, 48.4185731224716 -123.372053951025 3 -123.372148666531 48.4183834400028 1.4 -123.372255116701 48.4182131197304 3) 지심 유클리드 : 62.76225910919548 회전 타원체 길이 (WGS 84) 87.4846191030089 – Sarge