Example #1
0
        ///// <summary>
        ///// Converts the current value in degrees, to DMM components
        ///// </summary>
        ///// <param name="wholeDegrees"></param>
        ///// <param name="decimalMinutes"></param>
        ///// <param name="sign"></param>
        //protected void computeDMM(ref int wholeDegrees, ref double decimalMinutes, ref int sign) {
        //    double degrees = Degrees;
        //    sign = degrees < 0 ? -1 : 1;
        //    degrees = Math.Abs(degrees);
        //    wholeDegrees = Convert.ToInt32( Math.Floor(degrees) );
        //    double fraction = degrees - wholeDegrees;
        //    decimalMinutes = fraction * 60;
        //}

        ///// <summary>
        ///// Converts the current value in degrees to DMS components
        ///// </summary>
        ///// <param name="wholeDegrees"></param>
        ///// <param name="wholeMinutes"></param>
        ///// <param name="decimalSeconds"></param>
        ///// <param name="sign"></param>
        //protected void computeDMS(ref int wholeDegrees, ref int wholeMinutes, ref double decimalSeconds, ref int sign) {
        //    double decimalMinutes = 0;
        //    computeDMM(ref wholeDegrees, ref decimalMinutes, ref sign);
        //    wholeMinutes = Convert.ToInt32(Math.Floor(decimalMinutes));
        //    double fraction = decimalMinutes - wholeMinutes;
        //    decimalSeconds = fraction * 60;
        //}

        ///// <summary>
        ///// Converts from DMM to degrees
        ///// </summary>
        ///// <param name="wholeDegrees"></param>
        ///// <param name="decimalMinutes"></param>
        ///// <param name="sign"></param>
        ///// <returns></returns>
        //protected static double computeDDD(int wholeDegrees, double decimalMinutes, int sign) {
        //    double fraction = decimalMinutes / 60;
        //    return sign * (1.0 * wholeDegrees + fraction);
        //}

        ///// <summary>
        ///// Converts from DMS to degrees
        ///// </summary>
        ///// <param name="wholeDegrees"></param>
        ///// <param name="wholeMinutes"></param>
        ///// <param name="decimalSeconds"></param>
        ///// <param name="sign"></param>
        ///// <returns></returns>
        //protected static double computeDDD(int wholeDegrees, int wholeMinutes, double decimalSeconds, int sign) {
        //    double fraction = decimalSeconds / 60;
        //    fraction = (1.0 * wholeMinutes + fraction) / 60;
        //    return sign * (1.0 * wholeDegrees + fraction);
        //}

        /// <summary>
        /// Parses a DMM representation and converts to degrees
        /// </summary>
        /// <param name="s"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        protected static double ParseDMM(string s, GeoAngleFormatOptions options)
        {
            DMMComponents dmm = DMMComponents.Parse(s, options);

            return(dmm.ToDDD());
            //if (options == GeoAngleFormatOptions.Compact) {
            //    // ... Split value and hemisphere letter
            //    string[] tokens = s.Split(DELIMS);
            //    if (tokens.Length != 2) {
            //        throw new ArgumentException(nameof(s));
            //    }
            //    int sign = 0;
            //    switch (tokens[1].ToUpper().Trim()[0]) {
            //        case 'N': case 'E': sign = 1; break;
            //        case 'S': case 'W': sign = -1; break;
            //        default:
            //            throw new ArgumentException(nameof(s));
            //    }

            //    double number = double.Parse(tokens[0].Trim());
            //    int wholeDegrees = Convert.ToInt32(Math.Floor(number / 100));
            //    double decimalMinutes = number - wholeDegrees*100;
            //    return computeDDD(wholeDegrees, decimalMinutes, sign);
            //}
            //else {
            //    // ... Split value and hemisphere letter
            //    string[] tokens = s.Split(DELIMS, StringSplitOptions.RemoveEmptyEntries);
            //    if (tokens.Length != 2) {
            //        throw new ArgumentException(nameof(s));
            //    }
            //    int wholeDegrees = Int32.Parse(tokens[0]);
            //    int sign = wholeDegrees < 0 ? -1 : 1;
            //    wholeDegrees *= sign; // Abs
            //    double decimalMinutes = double.Parse(tokens[1]);
            //    return computeDDD(wholeDegrees, decimalMinutes, sign);
            //}
        }