Puede usar las extensiones espaciales de MySQL con SIG.
En un ejemplo de código de Google que muestra puntos en un mapa, dicen:
Cuando crea la tabla MySQL, desea prestar especial atención a los atributos lat y lng. Con las capacidades de zoom actuales de Google Maps, solo debería necesitar 6 dígitos de precisión después del decimal.
Para mantener al mínimo el espacio de almacenamiento requerido para nuestra tabla, puede especificar que los atributos lat y lng sean flotantes de tamaño (10,6). Eso permitirá que los campos almacenen 6 dígitos después del decimal, más hasta 4 dígitos antes del decimal, por ejemplo, -123.456789 grados. No me preocuparía por las diferencias de rendimiento entre los tipos numéricos. Los índices decentes tendrán un efecto mucho mayor.
También puedes probar DECIMALcomo sugiere @ gandaliter .
DECIMALes el tipo de datos MySQL para aritmética exacta. A diferencia de FLOATsu precisión, se fija para cualquier tamaño de número, por lo que, al usarlo en lugar de FLOAT, puede evitar errores de precisión al hacer algunos cálculos. Si solo estuviera almacenando y recuperando los números sin calcular, en la práctica FLOAT
sería seguro, aunque no hay ningún daño en el uso DECIMAL. Con los cálculos FLOATtodavía está bien, pero para estar absolutamente seguro de 8d.p. precisión que debes usar DECIMAL.
Las latitudes varían de -90 a +90 (grados), por lo que DECIMAL(10,8)está bien para eso, pero las longitudes varían de -180 a +180 (grados), por lo que necesita
DECIMAL(11,8). El primer número es el número total de dígitos almacenados, y el segundo es el número después del punto decimal. En resumen: lat DECIMAL(10,8) NOT NULL, lng DECIMAL(11,8) NOT NULL
esto explica cómo funciona MySQL con los tipos de datos de punto flotante.
Información relacionada: