riberio

두지점의 위도,경도 기준 최단거리 계산 본문

개발 관련/JAVA

두지점의 위도,경도 기준 최단거리 계산

riberio 2019. 11. 12. 14:50


/**
 * 두 지점간의 거리 계산 (기본 단위 : 마일)
 *
 * @param lat1 지점 1 위도
 * @param lon1 지점 1 경도
 * @param lat2 지점 2 위도
 * @param lon2 지점 2 경도
 * @param unit 거리 표출단위
 * @return double 
 */
private double distance(double lat1, double lon1, double lat2, double lon2, String unit) {
    double theta = lon1 - lon2;
    double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
    
    dist = Math.acos(dist);
    dist = rad2deg(dist);
    dist = dist * 60 * 1.1515;
    
    if (unit == "kilometer") {
        dist = dist * 1.609344;
    } else if(unit == "meter"){
        dist = dist * 1609.344;
    }

    return (dist);
}


/**
 *  This function converts decimal degrees to radians
 * @param double deg
 * @return double
 */
private double deg2rad(double deg) {
    return (deg * Math.PI / 180.0);
}

/**
 *  This function converts radians to decimal degrees
 * @param double rad
 * @return double
 */
private double rad2deg(double rad) {
    return (rad * 180 / Math.PI);
}

 
Comments