좌표값만 가지고 두 지점의 거리를 계산하고자 한다.
이때 필요한 공식은 Haversine 공식...
나는 이 공식을 잘 모르기때문에 적어두고 사용하려고 한다..
//현재좌표
double lat1 = 35.8240;
double lon1 = 127.1481;
//목적지좌표
double lat2 = 37.5668;
double lon2 = 126.9786;
double latitude = Math.toRadians(lat2 - lat1);
double longitude = Math.toRadians(lon2 - lon1);
double a = Math.sin(latitude / 2) * Math.sin(latitude / 2) +
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
Math.sin(longitude / 2) * Math.sin(longitude / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double distance = 6371 * c;
우선 Math.toRadians 함수를 사용하여 좌표간 차이를 라디안단위로 변환하여야 한다.
그다음 하버사인 공식에 의해 비율 a를 구한다. 이후 중심각을 구하면 이것으로 거리를 알수 있다.
중심각에 지구의 반지름인 6371km를 곱하면 두 지점간의 거리가 km로 구해진다.
'JAVA' 카테고리의 다른 글
위치정보 활용하기 & 공공데이터 XML 파싱 - 지도활용 Part2 (0) | 2024.12.03 |
---|---|
JAVA XML 데이터 값 가져오기 (0) | 2024.12.02 |
싱글톤 패턴 (0) | 2020.07.15 |
객체지향 설계의 5대 원칙 (0) | 2020.07.01 |
[실습] 서블릿+컨넥션+트렌젝션+mvc (0) | 2020.05.22 |