LAT/LON + 거리 + 제목 -> LAT/LON
-
22-08-2019 - |
문제
그래서 : 온라인으로 발견 된 공식에서 조정 된 다음 기능이 있습니다.이 공식은 두 개의 LAT/LON 좌표를 사용하여 마일 (구형 지구를 따라)에서 그들 사이의 거리를 찾습니다.
public static double distance (double lat1, double lon1, double lat2, double lon2) {
double theta = toRadians(lon1-lon2);
lat1 = toRadians(lat1);
lon1 = toRadians(lon1);
lat2 = toRadians(lat2);
lon2 = toRadians(lon2);
double dist = sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(theta);
dist = toDegrees(acos(dist)) * 60 * 1.1515 * 1.609344 * 1000;
return dist;
}
내가 말할 수있는 한,이 일은 잘 작동합니다.
내가 필요로하는 것은 지구의 형상의 정확한 모델을 사용하여 단일 LAT/LON 쌍 [A], 헤딩 및 거리를 취하고 새로운 LAT/LON 쌍 [B]를 출력하는 두 번째 기능입니다. 지점 [A]에서 시작하여 주어진 제목에서 주어진 거리를 여행하면 [B] 지점에서 감습니다.
이것은 내 기하학적 기술이 나를 완전히 떠난 사실입니다. :)
어떤 도움이든 대단히 감사하겠습니다!
고마워요, 댄
해결책
나는 이러한 유형의 공식을 대부분 얻습니다 항공 공식.
그가주는 공식은 다음과 같습니다.
반경과 거리가 주어진 Lat/lon
포인트 {lat, lon}은 지점 1에서 TC 방사형의 거리 d 아웃입니다.
lat=asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc)) IF (cos(lat)=0) lon=lon1 // endpoint a pole ELSE lon=mod(lon1-asin(sin(tc)*sin(d)/cos(lat))+pi,2*pi)-pi ENDIF
이 알고리즘은 Dlon <pi/2, 즉 지구 둘레의 1/4 미만이 경도에서 연장되는 거리로 제한됩니다. 더 먼 거리가 허용되면 완전히 일반이지만 더 복잡한 알고리즘이 필요합니다.
lat =asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc)) dlon=atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(lat)) lon=mod( lon1-dlon +pi,2*pi )-pi
그는 "TC"를 사용하여 진정한 코스 (북쪽에서 시계 방향으로 라디안에서)를 대고 있으며 그가주는 거리는 지구 표면을 따라 아크의 라디안에 있습니다. 이것은 공식의 첫 번째 섹션에서 해상 마일에서 앞뒤로 전환하는 공식과 함께 설명됩니다. 또한 해당 페이지의 "구현 노트"및 "작업 예제"를 확인하십시오.
제휴하지 않습니다 StackOverflow