본문 바로가기

JAVA

두 좌표의 거리 계산

좌표값만 가지고 두 지점의 거리를 계산하고자 한다.

이때 필요한 공식은 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로 구해진다.