14 votos

Tipos de datos para el almacenamiento de gnl/lat en MySQL

Estoy almacenar una gran lista de lnt/lat puntos en una base de datos MySQL. En el momento en que estos se proyectan los puntos para el reino unido en M, pero en el largo plazo, me gustaría asegurarse de que yo pueda almacenar las coordenadas de los puntos para todo el mundo. Qué tipo de datos se debe utilizar?

Empecé a usar decimal(18,12), pero no estaba seguro de si esta precisión es necesaria o si tan sólo pudiera usar un float. He incluido mi código, en caso de que hay algo más que debe considerar:

CREATE TABLE UKTest
(
lat FLOAT,
lng FLOAT
)

Soy bastante nuevo en SQL, así que estoy seguro de si el tipo de datos es significativa cuando se ejecuta una consulta. Supuse que el conjunto de la memoria podrían variar en función del tipo de variable. Hay un beneficio de la utilización de una base de datos espaciales a través de una básica de base de datos MySQL para este tipo de trabajo?

16voto

Swinders Puntos 1042

Esta pregunta también fue preguntado sobre StackOverlow.

La respuesta sugiere el MySQL Spatial Extensiones. Hay un montón de enlaces en el trabajo con estas extensiones de aquí.

Si usted no desea utilizar tipos espaciales y se están obteniendo los valores de una unidad de GPS, o servicio de geocodificación, a continuación, puede hacer coincidir su precisión decimal para el origen de datos. Una regla del pulgar general es almacenar datos con una precisión de dos de los lugares más grandes de lo que se muestra en una aplicación.

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

Cuando se crea la tabla MySQL, desea prestar especial atención a la lat y lng atributos. Con la actual capacidad de zoom de Google Maps, sólo es necesario 6 dígitos de precisión después de la coma decimal.

Para mantener el espacio de almacenamiento requerido para nuestra mesa en un mínimo, usted puede especificar que la lat y lng los atributos son flota de tamaño (10,6). Que permitirá a los campos de la tienda 6 los dígitos después de la coma decimal, además de hasta 4 los dígitos antes de la coma decimal, por ejemplo, -123.456789 grados

Yo no me preocuparía por las diferencias de rendimiento entre tipos numéricos. Decente índices tendrá un efecto mucho mayor.

6voto

Adam Ernst Puntos 6939

A menos que usted está atado a MySQL por alguna otra razón, usted realmente debería considerar el uso de un espacio habilitado de la base de datos como postgis, que tiene una Letra y Línea, Polígono, etc) objeto para controlar estos detalles para usted. Usted también consigue la proyección de apoyo para cuando haga el cambio a todo el mundo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X