Feedback

C# - Geodaten in sexagesimal Format umrechnen

Veröffentlicht von am 13.12.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''
GFU-Schulungen  [Anzeige]

Angular mit ASP.NET Core für .NET-Entwickler

.NET ist Ihnen vertraut, als Entwickler verfügen Sie über einschlägige Kenntnisse. In diesem Kurs lernen Sie nun, Angular in .NET-Umgebungen einzusetzen. Sie verstehen das Konzept von Angular und integrieren das clientseitige JS-Framework sicher in.NET-Anwendungen.

XML und .NET Überblick

Um auf dem neuesten Wissensstand zu sein, sollten Sie unser aktuelles ASP .NET Komplett Seminar belegen.
Nach dem Seminar kennen Sie die wichtigsten Strömungen in der Software-Technologie

/// <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 12.02.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 12.02.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 12.02.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 12.02.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!