반응형

1. 시험환경

    ˙ JDK 17.0.5

    ˙ IntelliJ

 

2. 목적

    ˙ JAVA 코드를 이용하여 WGS84(lat, lng) 형식의 지점 간 거리 측정 코드를 작성한다.

    ˙ 구글지도에서 두 지점 간 거리 계산 기능과 작성한 코드를 비교하여 유효성을 확인한다.

 

3. 적용

    ① double로 정의된 두 지점 간 직선 거리를 계산하여 반환하는 메소드

        - lat1 : 지점1 위도

        - lon1 : 지점1 경도

        - lat2 : 지점2 위도

        - lon2 : 지점2 경도

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Wgs84 {
 
    public double distance(double lat1, double lon1, double lat2, double lon2) {
        final int R = 6371// Radius of the earth
 
        Double latDistance = toRad(lat2 - lat1);
        Double lonDistance = toRad(lon2 - lon1);
        Double a = Math.sin(latDistance / 2* Math.sin(latDistance / 2+
                Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) *
                        Math.sin(lonDistance / 2* Math.sin(lonDistance / 2);
        Double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
 
        return R * c;
    }
 
    private static Double toRad(Double value) {
        return value * Math.PI / 180;
    }
}
 
cs

 

    ② Main 메소드에서 distance()를 호출한다.

1
2
3
4
5
6
7
8
9
10
public class Main {
    public static void main(String[] args) {
        double lat1 = 37.4857, lng1 = 127.1216;
        double lat2 = 37.5226, lng2 = 126.9051;
 
        Wgs84 wgs84 = new Wgs84();
        double dist = wgs84.distance(lat1, lng1, lat2, lng2);
        System.out.println(String.format("Distance = %f", dist));
    }
}
cs

 

    ③ 소스코드 다운로드

Example.zip
0.00MB

 

4. 결과

    ˙ 입력한 두 지점 간 거리는 구글지도에서 19.54km

 

    ˙ 콘솔 로그 확인 결과, 구글지도 수동입력 오차를 감안하면 쓸만한 코드임을 확인할 수 있다.

1
2
3
Distance = 19.533678
 
Process finished with exit code 0
cs

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형

+ Recent posts