Сколько значительных цифр я должен хранить в своей базе данных для GPS-координаты?

В моей базе данных MySQL есть координаты долготы и широты (данные GPS).

В настоящее время он сохраняется как:

column     type
------------------------
geolat     decimal(10,6)
geolng     decimal(10,6)

Вопрос: Нужен ли мне тип данных размером decimal(10,6) для правильного хранения данных координат?

Поскольку у меня есть комбинированный индекс по долготе и широте, этот размер индекса огромен. Если бы я мог сделать это меньше, не компрометируя ничего, это было бы здорово.

Ответ 1

WGS84 datum обычно задаются как координаты в полностью десятичной нотации, обычно с 5 знаками после запятой, поэтому для широты (от -90 до +90), вы можете использовать десятичную (7, 5) (от -90,00000 до 90,00000), для долготы вы можете использовать десятичную (8, 5) (от -180.00000 до 180.00000).

.00001 дает точность около метра на экваторе

Тип данных DECIMAL/NUMERIC - это фиксированное целое число с фиксированной точностью, и как положительная, так и отрицательная части диапазона всегда доступны - они не влияют на точность или масштаб (для этого, очевидно, требуется память, но у вас нет выбора в отношении DECIMAL)

Ответ 2

Я всегда работал с шестью цифрами после десятичной. Раньше я занимался ГИС по военному контракту, и этого было достаточно.

Ответ 3

Имейте в виду, что проще сократить данные, чем увеличить данные. Как правило, повышение точности данных даже невозможно, кроме того, что они пересматривают. И переоценка стоит дорого. Не зная ничего о вашей ситуации или отрасли, я бы сказал, захватив как можно больше данных/специфичность.

Данные, которые вы фактически используете, можно отбирать из этого набора. Если вы в конечном итоге нуждаетесь в более высокой степени специфичности, вы всегда можете пересчитывать без переоценки.

Кроме того, я не уверен, что индексирование необработанных данных - лучшая вещь, потому что это не дискретный набор элементов. Создание таблицы менее точных/меньших точек данных сделает индексы намного меньшими.

Ответ 4

Если это для недвижимости, у вас действительно есть так много домов, что 2 байта, сохраненные в каждой строке, будут такими заметными? Я бы сохранил как можно большую точность, если не было хорошей причины не делать этого.

Ответ 5

Это зависит от точности опроса, который вы проводите. В общем:

  • 6 десятичных знаков представляют точность для ~ 10 см
  • 7 десятичных знаков на ~ 1 см
  • 13 знаков после запятой - точность структуры атома...

Следовательно, если только нет очень точных исследований, т.е. для движений тектонических плит, должно быть достаточно использования 6 цифр.


Вот копия полного ответа от whuber (переполнение стека ГИС):

Точность - это тенденция ваших измерений соответствовать истинным значениям. Точность - это степень, в которой ваши измерения определяют фактическое значение. Вопрос о взаимодействии точности и точности.

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

Как правило, когда вы снижаете точность, то есть используете меньше десятичных знаков, вы можете потерять некоторую точность. А сколько? Приятно знать, что метр был первоначально определен (французами примерно во время их революции, когда они выбрасывали старые системы и усердно заменяли их новыми), чтобы десять миллионов из них перенесли вас с экватора на полюс Это 90 градусов, так что один градус широты охватывает около 10 ^ 7/90 = 111 111 метров. ("Примерно", поскольку длина метра за это время немного изменилась. Но это не имеет значения.) Кроме того, степень долготы (восток-запад) примерно одинакова или меньше по длине, чем степень широты, потому что круги широты уменьшаются до оси земли, когда мы движемся от экватора к любому полюсу. Поэтому всегда можно с уверенностью предположить, что шестое десятичное место в одном десятичном градусе имеет 111,111/10 ^ 6 = около 1/9 метра = около 4 дюймов точности.

Соответственно, если ваши требования к точности, скажем, дать или взять 10 метров, то 1/9 метра - ничто: вы по существу не теряете точность, используя шесть десятичных знаков. Если ваша точность меньше субсантиметра, то вам нужно как минимум семь и, возможно, восемь знаков после запятой, но больше ничего не даст.

Тринадцать знаков после запятой закрепят это место до 111 111/10 ^ 13 = около 1 ангстрема, около половины толщины маленького атома.

Используя эти идеи, мы можем построить таблицу того, что означает каждая цифра в десятичной степени:

  • Знак sign говорит нам, на севере мы или на юге, на востоке или западе. глобус.
  • Ненулевая цифра сотен говорит нам, что мы используем долготу, а не широту!
  • десятка цифр дает позицию около 1000 километров. Это дает нам полезную информацию о том, на каком континенте или океане мы находимся.
  • Цифра единиц (один десятичный градус) дает положение до 111 километров (60 морских миль, около 69 миль). Это может сказать нам примерно, в каком крупном штате или стране мы находимся.
  • первое десятичное число стоит до 11,1 км: оно может различать положение одного большой город из соседнего большого города.
  • второе десятичное число Стоит до 1,1 км: он может отделить одну деревню от другой.
  • третье десятичное место стоит до 110 м: оно может идентифицировать большой сельскохозяйственное поле или институциональный кампус.
  • четвертое десятичное число стоит до 11 м: он может идентифицировать земельный участок. это сравнимо с типичной точностью неисправленного блока GPS без вмешательство.
  • пятое число стоит до 1,1 м различать деревья друг от друга. Точность до этого уровня с коммерческие единицы GPS могут быть достигнуты только с дифференциальным коррекция.
  • шестое десятичное число стоит до 0,11 м: вы можете используйте это для детализации конструкций, для проектирования пейзажи, строительство дорог. Это должно быть более чем достаточно для отслеживание движения ледников и рек. Это может быть достигнуто путем принимать кропотливые меры с GPS, такие как дифференциально исправил GPS.
  • седьмое десятичное число стоит до 11 мм: это подходит для больших съемок и близок к тому, что основано на GPS методы могут достичь.
  • Восьмое десятичное число стоит до 1,1 мм: это хорошо для картирования движений тектонических плит и движения вулканов. Постоянный, исправленный, постоянно работающий GPS Базовые станции могут быть в состоянии достичь этого уровня точности.
  • девятое десятичное число стоит до 110 микрон: мы входим в Диапазон микроскопии. Для практически любого возможного применения с положения Земли, это излишне и будет более точным, чем точность любого геодезического устройства.
  • Десять или более десятичных знаков указывает на то, что использовался компьютер или калькулятор, и что уделено тому, что лишние десятичные дроби бесполезны. Быть осторожен, потому что если только вы не читаете эти цифры с устройства, это может указывать на низкое качество обработки!

Ответ 6

Это зависит от того, насколько точна ваша локализация. Очевидно, чем крупнее, тем точнее, и чем меньше, тем более широкими будут ваши результаты. Я бы предложил сохранить ваши ценности больше, так как на самом деле это не очень много данных.

Ответ 7

Регулярное GGA-рассылка на выходе NMEA Lat/lon представляет собой только 3decimal, где на экваторе примерно 10 м. разрешение. Некоторые бренды добавляют дополнительную цифру, чтобы дать 1 м.

4 цифры грамм мм мм /1000 также распространены.

Если вы используете высокоточную RTK-GPS, вам может потребоваться больше мест для получения точности мм

Ответ 8

Вы также можете попробовать сохранить (и/или работать с) ваши координаты в разных единицах. В одном проекте, над которым я работал, все наши координаты были в миллиаркультах, хранящихся как longs (возможно, ints, это было пару лет). Это было сделано частично для скорости и пространства для хранения (это была встроенная система). Но та же логика может применяться здесь.

Ответ 9

Если все координаты находятся в определенной области, исправьте некоторую центральную точку (т.е. средние текущие точки и округлите, чтобы получить номер, который вы можете сказать вслух), а затем сохраните координаты относительно этой точки. Таким образом, вы, вероятно, можете пропустить первые 2-4 наиболее значимые цифры, что дает большую экономию. Но не забывайте обрабатывать эти данные только через класс или VIEW, который возвращает истинные координаты WGS84.