Feedback

C# - Geodaten in sexagesimal Format umrechnen

Veröffentlicht von am 12/13/2008
(1 Bewertungen)
Der Snippet wandelt Längen und Breitengrade in das so genannte sexagesimal Format um.

Beispiel:

ConvertDecimalDegreesToSexagesimal(37,4219720)


ergibt: 37° 25' 1519''
/// <summary>
/// Converts the decimal degrees to sexagesimal.
/// </summary>
/// <param name="decimalValueToConvert">The decimal value to convert.</param>
/// <returns></returns>
private string ConvertDecimalDegreesToSexagesimal(double decimalValueToConvert)
{
    int degrees = (int)decimalValueToConvert;
    int minutes = (int)((decimalValueToConvert - degrees) * 60);
    int seconds = (int)((decimalValueToConvert - degrees - (minutes / 60)) * 3600);

    return String.Format("{0}° {1}' {2}''", degrees, minutes, seconds);
}

4 Kommentare zum Snippet

Weh Pung schrieb am 2/12/2009:
Der Code liefert folgende Reihe (was er wohl nicht sollte):
0,01611111111111111 0° 0' 58''
0,01638888888888889 0° 0' 59''
0,01666666666666666 0° 1' 60''
0,01694444444444444 0° 1' 61''

Besser ist:

/// <summary>
/// Converts the decimal degrees to sexagesimal.
/// </summary>
/// <param name="decimalValueToConvert">The decimal value to convert.</param>
/// <returns></returns>
private string ConvertDecimalDegreesToSexagesimal(double decimalValueToConvert)
{
int degrees = (int)decimalValueToConvert;
int minutes = (int)((decimalValueToConvert - degrees) * 60);
int seconds = (int)((decimalValueToConvert - degrees - (minutes / 60)) * 3600) % 60; //60 Sekunden pro Minute

return String.Format("{0}° {1}' {2}''", degrees, minutes, seconds);
}
Weh Pung schrieb am 2/12/2009:
Warum hat der Artikel eigentlich eine 1,8 als Bewertung bei einer Bewertung (meiner), die ich als 1 abgegeben habe?
Ist da etwa auch ein Konvertierungsbug im Bewertungssystem? ;-)
Jan Welker schrieb am 2/12/2009:
Hallo,

siehe unter "Wie werden die Snippets bewertet?" auf der Seite http://dotnet-snippets.de/dns/topten.aspx wie die Snippets bewertet werden.

Jan
Jürgen Gutsch schrieb am 2/12/2009:
@Weh Pung
Siehe hier: http://dotnet-snippets.de/dns/topten.aspx
(ganz unten)

(a * 4 + 5) / (b * 4 + 1)
a = Bewertung
b = Anzahl Bewertungen
(1 * 4 + 5) / (1 * 4 + 1) = 8 / 5 = 1,8
 

Logge dich ein, um hier zu kommentieren!