public double GetDistance(double lat1, double lon1, double lat2, double lon2)
{
double theta, dist;
theta = lon1 - lon2;
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;
dist = dist * 1.609344; // 단위 mile 에서 km 변환.
dist = dist * 1000.0; // 단위 km 에서 m 로 변환
return dist;
}
///
/// 주어진 Degree 값을 Radian 값으로 변환
///
/// Degree
/// Radian
private double deg2rad(double deg)
{
return (double)(deg * Math.PI / (double)180d);
}
///
/// 주어진 Radian 값을 Degree 값으로 변환
///
/// Radian value
/// Degree
private double rad2deg(double rad)
{
return (double)(rad * (double)180d / Math.PI);
}
2015년 9월 13일 일요일
위도(Latitude)와 경도(Longitude) 값을 이용한 거리계산
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기