JavaScript — эффективно сжимать числа в ASCII (используя PHP или JS)

За короткое время я дважды столкнулся с той же проблемой:

  • У меня есть список координат (широта, долгота в случае гео-координат — или x, y, z в случае файла 3D OBJ)
  • координаты сохраняются в виде чисел, записанных в десятичных разрядах ASCI, например … 3.14159265
  • координаты имеют десятичные дроби
  • координаты хранятся в виде текста в текстовом файле или базе данных
  • вся куча становится слишком большой

Теперь мы могли бы просто проигнорировать проблему и принять медленный ответ или более зазубренную форму — но это раздражает. Десятичное число в ASCII использует 8 бит (где нам нужно только 4 для представления чисел 0… 10), и многие координаты имеют одну и ту же первую пару цифр … Такое ощущение, что эти файлы можно легко сжать. Зиппинг, очевидно, немного уменьшает файлы, хотя и меняется. Базовое кодирование также, кажется, помогает, но оказывается не так эффективно, как я надеялся (около 30%)

Используя PHP, каков прагматичный подход к сжатию координат, хранящихся в текстовых файлах?

(Прагматическое значение: достаточно быстро, желательно с использованием ванильного PHP)

-1

Решение

Вы можете использовать quadkey для предварительной сортировки гео-координат и другого алгоритма предварительной сортировки, например, перемещение в переднюю часть и воронение в нору. Quadkey часто используется в картографическом приложении, особенно для листов карты, но у него есть интересные особенности. Просто преобразуйте географическую координату в двоичный файл и объедините его. Тогда относитесь к нему как к основанию-4. Вот бесплатный исходный код здесь:http://msdn.microsoft.com/en-us/library/bb259689.aspx. Тогда используйте статистическое сжатие как Хаффман. Тот же алгоритм используется в триангуляции Делоне.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]