Este es uno de estos lugares donde una pequeña teoría es útil. Debe pensar en varias cosas:
- cuál es la resolución de sus medidas: 0.1 ° o 0.001 °? 1 segundo o un microsegundo?
- son las mediciones asociadas y en algún orden, o arrojadas al azar?
Digamos, por ejemplo, que la resolución es de 0.01 °. Ellos saben que sus valores van desde -180 ° a + 180 °, o 35900 valores diferentes. Lg (35900) ≈ 16 por lo que necesita 16 bits; 14 bits para -90 ° - + 90 °. Claramente, si está almacenando este tipo de valor como coma flotante, puede comprimir los datos a la mitad inmediatamente.
De forma similar con el tiempo de fecha, ¿cuál es el rango; ¿Cuántos bits debes tener?
Ahora, si los datos están en algún orden (como, muestras tomadas de forma secuencial a bordo de un solo barco), entonces todo lo que necesita es un valor inicial y un delta; eso puede hacer una gran diferencia . Con un barco viajando a 30 nudos, la posición no puede cambiar más de 0.03 grados por hora o aproximadamente 0.0000083 grados por segundo. Esos deltas van a ser valores muy pequeños, por lo que puede almacenarlos en muy pocos bits.
El punto es que hay una serie de cosas que puede hacer, pero debe saber más sobre los datos que nosotros para hacer una recomendación.
Actualización: Oh, espera, punto fijo cadenas?!
Bien, esto es (relativamente) fácil. Para empezar, sí, quiere convertir sus cadenas en una representación binaria. Sólo que componen un elemento de datos, es posible que tenga
040.00105.0020090518212100Z
que se podría convertir en
| 4000 | short int, 16 bits |
| 10500 | short int, 16 bits |
| 20090518212100Z | 64 bits |
Así que es 96 bits, 12 bytes contra 26 bytes.
¿Está utilizando punto fijo o punto flotante para lat/long? Si tiene un número fijo de posiciones, puede simplemente empacar los valores en una matriz de bytes. Con una cantidad tan pequeña de datos en cada paquete, probablemente tendrá más cabeza en cabezales de compresión/paquetes de los que tiene en los datos. Además, ¿con qué idioma estás trabajando? –