문제:
제공된 Java 코드 스니펫은 두 점 사이의 거리를 계산합니다. 위도와 경도를 기준으로 한 두 개의 점입니다. 문제는 특히 상당한 거리에 걸쳐 여러 점이 있는 경우 사용된 공식이 약간 부정확한 결과를 생성할 수 있다는 것입니다.
해결책:
이 문제를 해결하려면 다음을 따르세요. 높이 차이도 고려하는 Haversine 메소드의 Java 구현:
<code class="java">/** * Calculate distance between two points in latitude and longitude taking * into account height difference. If you are not interested in height * difference pass 0.0. Uses Haversine method as its base. * * lat1, lon1 Start point lat2, lon2 End point el1 Start altitude in meters * el2 End altitude in meters * @returns Distance in Meters */ public static double distance(double lat1, double lat2, double lon1, double lon2, double el1, double el2) { final int R = 6371; // Radius of the earth double latDistance = Math.toRadians(lat2 - lat1); double lonDistance = Math.toRadians(lon2 - lon1); double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2) + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2); double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); double distance = R * c * 1000; // convert to meters double height = el1 - el2; distance = Math.pow(distance, 2) + Math.pow(height, 2); return Math.sqrt(distance); }</code>
이 구현은 높이 차이를 통합하는 동시에 거리를 정확하게 계산합니다. 두 지점의 높이 차이를 고려하면서 Haversine 방식을 기초로 사용합니다.
위 내용은 위도, 경도, 고도를 사용하여 두 점 사이의 거리를 정확하게 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!