Sí, siempre anticipe las coordenadas para fluctuar.
Aunque no es probable que el edificio se mueva en la superficie de la tierra, usar coordenadas como identificadores / claves para las direcciones es una mala idea porque el conjunto de datos se moverá debajo de usted:
La precisión es una cuestión de definición. ¿Es una dirección fijada con mayor precisión en su buzón, o en su estructura más grande, o en la puerta principal? ¿Qué puerta de entrada? Tal vez el camino de entrada?
La precisión decimal es otra preocupación. ¿Es 33.754208
lo mismo que 33.754209
? Esto se puede solucionar redondeando, pero luego pierde precisión. Agregar precisión decimal es un lujo que quizás no tenga. No importa cuán preciso sea su decimal, es probable que sean diferentes (especialmente considerando cómo las computadoras comparan los tipos flotantes) incluso si son "iguales". Usted es totalmente dependiente de los detalles de implementación de bajo nivel en este momento.
Cuando no controlas el conjunto de datos y estás usando un atributo físico para teclear algo, no puedes garantizar que la clave no cambie. Pero eso es un problema porque su base de datos espera que el identificador sea único y constante. Incluso si lo actualiza, ¿qué pasa con las colisiones con otro punto de datos?
Incluso si posee el conjunto de datos, está sujeto a los dos primeros problemas. Las definiciones y las implementaciones cambian. Nunca podría actualizar sus datos de coordenadas, incluso para una mejor "precisión", pero las direcciones aún cambian, le guste o no, invalidando su caché.
Sin embargo, lo que puede hacer es poseer la clave . No use coordenadas como identificadores; más bien, asigne una clave que se garantice que sea única en su aplicación ( o posiblemente en todo el mundo ) y nunca permita que cambie.
En SmartyStreets, trato mucho las direcciones de geocodificación. Por ejemplo, esa dirección es un valor predeterminado de construcción. Le falta un número secundario (apartamento / suite). Aunque nuestros datos son a nivel de bloque (cerca de la azotea), si pudiéramos ser lo más precisos posible, ¿cuál sería su coordenada? En este momento, lo asignamos a 33.75425, -84.38721
solo unos metros de donde lo ubica Google Maps. ¿Debería ser una coordenada diferente si es el lobby frente a una unidad en ese edificio? La respuesta a esa pregunta puede cambiar, cambiando así el conjunto de datos subyacente. ¿Y qué hay de las unidades que están una encima de la otra (puede fijar un punto en un edificio, pero a qué piso se refería)? Obviamente, Google hace exactamente las mismas preguntas, y si las respuestas cambian, también cambian las coordenadas.
Como tal, siempre recomendamos que las personas den a la dirección una clave que controlan para identificarla de manera única y nunca cambiarla.
¿Por qué?
Las direcciones son un desastre. También pueden cambiar, especialmente si comienzas a hacer preguntas filosóficas sobre "¿Qué significa realmente una dirección? ¿Representa un edificio o un residente? ¿O un buzón?" y cuando comienzas a considerar que las direcciones son temporales, lo que significa que cambian con el tiempo, se vuelve aún más feo.
También escuchamos de personas que intentan cambiar las direcciones o usan el código de barras del punto de entrega como identificador. No haga eso, porque incluso en un formato estandarizado, las direcciones pueden cambiar y aún así ser la "misma" dirección. Y el código de barras del punto de entrega, erróneamente considerado como único para una dirección, es doblemente culpable: cambia y no es necesariamente único. Genial, ¿eh?
tl; dr Haga que su base de datos dependa lo menos posible de la dirección y las coordenadas reales.