richtiger / bester Typ zum Speichern von Breiten- und Längengraden

In einer Programmiersprache auf Systemebene wie C, C ++ oder D, welcher Typ / welche Codierung eignet sich am besten zum Speichern von Breiten- und Längengraden?

Die Optionen, die ich sehe, sind:

IEEE-754 FP als Grad oder Bogenmaß Grad oder Bogenmaß, gespeichert als fester Punktwert in einem 32- oder 64-Bit-Intzuordnung eines ganzzahligen bereichs zum gradbereich: ->deg = (360/2^32)*val Grad, Minuten, Sekunden und Sekundenbruchteile, die als Bitfelder in einem int @ gespeichert sia Struktur irgendeiner Art.

Die einfache Lösung (FP) hat den großen Nachteil, dass sie eine sehr ungleichmäßige Auflösung aufweist (irgendwo in England kann sie in Mikrometern gemessen werden, in Japan dagegen nicht). Auch dies hat alle Fragen des FP-Vergleichs und so weiter. Die anderen Optionen erfordern zusätzlichen Aufwand in verschiedenen Teilen des Lebenszyklus der Daten. (Generierung, Präsentation, Berechnungen etc.)

Eine interessante Option ist ein Typ mit schwebender Genauigkeit, bei dem mit zunehmender Breite mehr Bits und mit abnehmender Länge weniger Bits auftreten (je näher sie sich den Polen nähern).

Related Fragen, die dies nicht ganz abdecken:

Was ist der ideale Datentyp, um Breiten- / Längengrade in MySQL zu speichern?Arbeiten mit Breiten- / Längenwerten in Java

BTW: Mit 32 Bit erhalten Sie eine E / W-Auflösung am Äquator von ca. 0,3 Zoll. Dies entspricht in etwa dem Maßstab, in dem hochwertige GPS-Setups arbeiten können (IIRC-Werte können in einigen Modi auf ca. 0,5 Zoll gesenkt werden).

OTOH Wenn die 32 Bits gleichmäßig über die Erdoberfläche verteilt sind, können Sie Quadrate von ca. 344 m auf einer Seite indizieren. 5 Bytes ergeben 21 m, 6 B -> 1,3 m und 8 B -> 5 mm.

Ich habe im Moment keine spezielle Verwendung im Sinn, habe aber schon früher mit solchen Dingen gearbeitet und erwarte, dass ich sie irgendwann wieder einsetze.

Antworten auf die Frage(24)

Ihre Antwort auf die Frage