правильный / лучший тип для хранения широты и долготы

В языке программирования системного уровня, таком как C, C ++ или D, каков наилучший тип / кодировка для хранения широты и долготы?

Варианты, которые я вижу:

IEEE-754 FP в градусах или радианахградусы или радианы, хранящиеся в виде значения с фиксированной точкой в ​​32- или 64-битном intотображение целочисленного диапазона в диапазон градусов: ->deg = (360/2^32)*valградусы, минуты, секунды и доли секунды сохраняются как битовые поля в intструктура некоторого вида.

Простое решение (FP) имеет главный недостаток, заключающийся в том, что оно имеет крайне неоднородное разрешение (где-то в Англии оно может измеряться в микронах, а в Японии - нет). Также это имеет все проблемы сравнения FP и еще много чего. Другие варианты требуют дополнительных усилий в разных частях жизненного цикла данных. (генерация, презентация, расчеты и т. д.)

Один интересный вариант - это плавающий тип точности, который, когда широта увеличивается, она получает больше битов, а долгота уменьшается (когда они сближаются по направлению к полюсам).

Связанные вопросы, которые не совсем охватывают это:

Какой идеальный тип данных использовать для хранения широты / долготы в MySQL?Работа со значениями широты / долготы в Java

КСТАТИ: 32 бита дает разрешение E / W на экваторе около 0,3 дюйма. Это близко к шкале, на которой могут работать высококлассные настройки GPS (в некоторых режимах IIRC они могут снижаться до 0,5 в).

OTOH, если 32 бита равномерно распределены по поверхности земли, вы можете индексировать квадраты размером около 344 м на стороне, 5 байтов дают 21 м, 6B-> 1,3 м и 8B-> 5 мм.

Сейчас я не имею в виду конкретное использование, но раньше уже работал с подобными вещами и ожидаю снова, в какой-то момент.

Ответы на вопрос(12)

Ваш ответ на вопрос