Beispiel #1
0
    public void Convert()
    {
        GpsCoordinate coord = ConversionMode switch
        {
            GpsConversionMode.FromDegrees => new GpsCoordinate(
                GetLatitudeDegrees(DLatDegrees, DLatReference),
                GetLongitudeDegrees(DLngDegrees, DLngReference)
                ),
            GpsConversionMode.FromDegreesMinutes => new GpsCoordinate(
                GetLatitudeDegrees(DmLatDegrees, DmLatReference), GetFloat(DmLatMinutes),
                GetLongitudeDegrees(DmLngDegrees, DmLngReference), GetFloat(DmLngMinutes)
                ),
            GpsConversionMode.FromDegreesMinutesSeconds => new GpsCoordinate(
                GetLatitudeDegrees(DmsLatDegrees, DmsLatReference), GetFloat(DmsLatMinutes), GetFloat(DmsLatSeconds),
                GetLongitudeDegrees(DmsLngDegrees, DmsLngReference), GetFloat(DmsLngMinutes), GetFloat(DmsLngSeconds)
                ),
            _ => throw new InvalidOperationException($"Specified conversion mode [{ ConversionMode }] is not supported")
        };

        // prepare degree portion
        coord.GetLatitudeDegrees(out float degrees);
        DLatDegrees   = Math.Abs(degrees);
        DLatReference = coord.LatitudeRef;
        DLatString    = $"{Math.Abs(degrees):f4} deg {coord.LatitudeRef}";

        coord.GetLongitudeDegrees(out degrees);
        DLngDegrees   = Math.Abs(degrees);
        DLngReference = coord.LongitudeRef;
        DLngString    = $"{Math.Abs(degrees):f4} deg {coord.LongitudeRef}";

        // prepare degree minute portion
        coord.GetLatitudeDegreesMinutes(out degrees, out float minutes);
        DmLatDegrees   = Math.Abs(degrees);
        DmLatMinutes   = minutes;
        DmLatReference = coord.LatitudeRef;
        DmLatString    = $"{Math.Abs(degrees)} deg {minutes:f4}' {coord.LatitudeRef}";

        coord.GetLongitudeDegreesMinutes(out degrees, out minutes);
        DmLngDegrees   = Math.Abs(degrees);
        DmLngMinutes   = minutes;
        DmLngReference = coord.LongitudeRef;
        DmLngString    = $"{Math.Abs(degrees)} deg {minutes:f4}' {coord.LongitudeRef}";

        // prepare degree minute seconds portion
        coord.GetLatitudeDegreesMinutesSeconds(out degrees, out minutes, out float seconds);
        DmsLatDegrees   = Math.Abs(degrees);
        DmsLatMinutes   = minutes;
        DmsLatSeconds   = seconds;
        DmsLatReference = coord.LatitudeRef;
        DmsLatString    = $"{Math.Abs(degrees)} deg {minutes}' {seconds:f4}\" {coord.LatitudeRef}";

        coord.GetLongitudeDegreesMinutesSeconds(out degrees, out minutes, out seconds);
        DmsLngDegrees   = Math.Abs(degrees);
        DmsLngMinutes   = minutes;
        DmsLngSeconds   = seconds;
        DmsLngReference = coord.LongitudeRef;
        DmsLngString    = $"{Math.Abs(degrees)} deg {minutes}' {seconds:f4}\" {coord.LongitudeRef}";
    }