bon/meilleur type pour le stockage de la latitude et de la longitude

Dans un système de niveau de langage de programmation comme C, C++ ou D, quel est le meilleur type/codant pour le stockage de la latitude et de la longitude?

Les options que je vois sont:

  • IEEE-754 FP en degrés ou en radians
  • degrés ou en radians stocké comme un point fixe de la valeur dans un 32 ou 64 bits int
  • cartographie d'un nombre entier de gamme au degré de la gamme: -> deg = (360/2^32)*val
  • degrés, minutes, secondes et fractions de secondes stockées en tant que champs de bits dans un int
  • une structure quelconque.

La solution de facilité (FP) a pour principal inconvénient qu'il a fortement non uniforme de résolution (quelque part en Angleterre, il peut mesurer en microns, au Japon, il ne peut pas). Aussi ce a toutes les questions de FP de comparaison et autres joyeusetés. Les autres options nécessitant plus d'efforts dans les différentes parties des données du cycle de vie. (la production, la présentation, calculs, etc.)

Une option intéressante est d'une précision en virgule flottante de type qui, où, comme la Latitude d'augmenter, il devient de plus en plus de bits et la Longitude est moins (comme ils se rapprochent vers les pôles).

Les questions connexes qui ne sont pas tout couvrir ce:


BTW: 32 bits vous donne une E/W résolution à l'équateur d'environ 0,3 à. C'est à proximité de l'échelle de haute qualité GPS configurations peuvent travailler à la (IIRC ils peuvent descendre à environ 0,5 dans certains modes).

Otoh, que si les 32 bits de poids est réparti uniformément sur la surface de la terre, vous pouvez indice des carrés d'environ 344m sur un côté, 5 Octets donner 21m, 6B->1,3 m et 8B->5mm.

Je n'ai pas une utilisation spécifique à l'esprit pour l'instant, mais ont travaillé avec ce genre de chose avant et attendre à nouveau, à un certain point.

  • Vous l'avez remarqué dans un couple de répondre à des commentaires et à cette question, la question de la résolution. Quelle est la résolution avez-vous besoin? Il avait également être utile de préciser quelles sont les opérations que vous devez effectuer ainsi. Si vous allez faire un Grand Cercle calcs ensuite, vous aurez besoin de les convertir à un lit double ou float, de toute façon.
  • N'est-ce pas un 64-bits en virgule flottante double précision de la valeur d'un meilleur choix que la 32 bits de type int car il a une plus grande granularité? C'est quelque chose que vous avez commenté. Il est également plus facile de travailler avec.
  • double possible de qu'est-Ce que l'idéal type de données à utiliser lors de l'entreposage de latitude et de longitude dans une base de données MySQL?
InformationsquelleAutor BCS | 2008-12-21