Tipos de datos para almacenar lng / lat en MySQL

13

Estoy almacenando una gran lista de puntos lnt / lat en una base de datos MySQL. En este momento, estos son puntos proyectados para el Reino Unido en M, pero a largo plazo me gustaría asegurarme de que puedo almacenar las coordenadas de los puntos para todo el mundo. ¿Qué tipo de datos debo usar?

Comencé a usar decimal(18,12) , pero no estaba seguro de si se necesitaba esta precisión o si solo podía usar un float . Incluí mi código, en caso de que haya algo más que deba considerar:

CREATE TABLE UKTest
(
lat FLOAT,
lng FLOAT
)

Soy bastante nuevo en SQL, por lo que no estoy seguro de si el tipo de datos es significativo al ejecutar una consulta. Supuse que la memoria general variaría según el tipo de variable. ¿Hay algún beneficio de usar una base de datos espacial sobre una base de datos MySQL básica para este tipo de trabajo?

    
pregunta djq 30.05.2011 - 17:16

2 respuestas

15

Esto pregunta también se hizo en StackOverlow .

La respuesta principal sugiere MySQL Spatial Extensions . Hay una carga de enlaces sobre cómo trabajar con estas extensiones aquí .

Si no desea utilizar tipos espaciales y obtiene valores de una unidad GPS o del servicio de geocodificación, puede hacer coincidir su precisión decimal con la fuente de datos. Una regla general es almacenar los datos con una precisión de dos lugares mayor que la que se mostrará en una aplicación.

En un ejemplo de código de Google que muestra puntos en un mapa, afirman:

  

Al crear la tabla MySQL, debe prestar especial atención a la   Atributos de lat y lng. Con las capacidades actuales de zoom de Google Maps,   Solo deberías necesitar 6 dígitos de precisión después del decimal.

     

Para mantener el espacio de almacenamiento requerido para   nuestra mesa como mínimo, puedes   especifique que el lat y lng   Los atributos son flotadores de tamaño (10,6).   Eso permitirá a los campos almacenar 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.

    
respondido por el geographika 30.05.2011 - 18:40
6

A menos que esté vinculado a MySQL por alguna otra razón, realmente debería considerar el uso de una base de datos habilitada espacialmente como postgis que tiene un objeto Punto (y Línea, Polígono, etc.) para manejar estos detalles por usted. También obtiene soporte de proyección para cuando realiza ese cambio en todo el mundo.

    
respondido por el Ian Turton 30.05.2011 - 17:55

Lea otras preguntas en las etiquetas