richtige/beste Typ für die Speicherung von Längen-und Breitengrad

In einem system-level-Programmiersprache wie C, C++, C oder D, was ist der beste Typ/Codierung für die Speicherung von Längen-und Breitengrad?

Die Optionen, die ich sehe sind:

  • IEEE-754 FP als Grad-oder Bogenmaß
  • Grad oder Bogenmaß gespeichert als fixed-point-Wert in einen 32-oder 64-bit int
  • Zuweisung eines integer-range-Grad-Bereich: -> deg = (360/2^32)*val
  • Grad, Minuten, Sekunden und Bruchteilen von Sekunden gespeichert, die als bit-Felder in einer int -
  • eine Struktur, in irgendeiner Form.

Die einfache Lösung (FP) hat den großen Nachteil, dass es sehr non-uniform-Auflösung (irgendwo in England, es Messen kann, in Mikron, die in Japan über, kann es auch nicht). Auch dieser hat alle Fragen der FP-Vergleich und so weiter. Die anderen Optionen erfordern zusätzlichen Aufwand in den verschiedenen teilen des Daten-Lebenszyklus. (generation, Präsentation, Berechnungen etc.)

Eine interessante option ist ein unverankerter Genauigkeit geben, dass, wo die Breite erhöhen, es wird mehr bits und die Länge wird weniger (als Sie zusammen näher an den Polen).

Fragen, die nicht ganz decken:


BTW: 32 bit, Ihnen eine E/W Auflösung am äquator von etwa 0,3 in. Dies ist in der Nähe der Skala, die high-grade-GPS-setups kann (IIRC, die Sie bekommen können bis zu etwa 0,5 in in einigen Modi).

OTOH, wenn die 32 bits gleichmäßig verteilt über die Oberfläche der Erde, können Sie die index-Quadrate von etwa 344m auf Seite 5 Bytes geben 21m, 6B->1,3 m und 8B->5mm.

Habe ich nicht eine bestimmte Verwendung im Sinn jetzt aber gearbeitet haben mit dieser Art der Sache vor und erwarten wieder, irgendwann.

InformationsquelleAutor der Frage BCS | 2008-12-21

Schreibe einen Kommentar