728x90
    
    
  
1. 거리 계산 (GPS 좌표 변환 공식 / 지구의 곡률 적용)
        /// <summary>
        /// 거리 계산
        /// </summary>
        /// <param name="lat1"></param>
        /// <param name="lng1"></param>
        /// <param name="lat2"></param>
        /// <param name="lng2"></param>
        /// <returns></returns>
        public double Distance(double lat1, double lng1, double lat2, double lng2)
        {
            double theta = 0.0d;
            double dist = 0.0d;
            theta = lng1 - lng2;
            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; // statute miles. 단위는 기본 마일.
            dist = dist * 1.609344;
            return dist;
        }
2. 주어진 도 값을 라디언으로 변환
/// <summary>
/// 주어진 도(degree) 값을 라디언으로 변환
/// </summary>
/// <param name="deg"></param>
/// <returns></returns>
private double deg2rad(double deg)
{
    if (!double.IsInfinity((double)(deg * (double)180d / Math.PI)))
        return (double)(deg * Math.PI / (double)180d);
    else
        return 0;
}
/// <summary>
/// 주어진 라디언(radian) 값을 도(degree) 값으로 변환
/// </summary>
/// <param name="rad"></param>
/// <returns></returns>
private double rad2deg(double rad)
{
    if (!double.IsInfinity((double)(rad * (double)180d / Math.PI)))
        return (double)(rad * (double)180d / Math.PI);
    else
        return 0;
}
3. 좌표 생성 시간을 기준으로 속도(km/h) 계산
/// <summary>
/// 좌표 생성 시간을 기준으로 속도(km/h) 계산
/// </summary>
/// <param name="km"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <returns></returns>
public static double GetKph(double km, string startDate, string endDate)
{
    double velocity = 0.0d;
    double totalTime = Utils.DateTimeHelper.GetTimeSpan(startDate, endDate).TotalSeconds;
    if (!double.IsInfinity(((km / totalTime) * 3600)))
        velocity = ((km / totalTime) * 3600);
    return velocity;
}
'.NET C#' 카테고리의 다른 글
| 티스토리에 c# 코드 옮겨 붙일 수 있는 사이트 (0) | 2023.10.04 | 
|---|---|
| 경사도 (0) | 2023.01.16 | 
| 자전거 칼로리 공식 (0) | 2023.01.15 | 
| c# DateTime (날짜, 시간, 요일 추출) Utils (0) | 2023.01.13 | 
| C# GPX(GPS Exchange Format) Paser (0) | 2023.01.13 | 
| 코드 블럭 테스트 (c# DB Helper) (0) | 2023.01.12 | 
| 시작일과 종료일 기간 체크 및 날짜 등분 (0) | 2012.05.05 | 
 
										
									 
										
									 
										
									
댓글