2009-07-09 17 views
5

Los datos de ubicación se encuentran esencialmente en una estructura de árbol. Entonces, cuando le pregunte a alguien por su dirección, le gustaría saber qué área/suburbio, ciudad/pueblo, estado/provincia y país en que viven.¿Cuál es el mejor enfoque para almacenar información de ubicación en una base de datos?

Se espera que estos datos se configuren solo una vez y necesiten muy poca modificación . La mayoría de los sitios de comercio electrónico y muchos otros necesitarían almacenar este tipo de información, pero estoy luchando por encontrar mucho al respecto. Tal vez porque no estoy buscando el término correcto, pero pensé que sería un problema común que ya se ha resuelto.

Esto lleva a otra pregunta. ¿Dónde podría tener acceso a este tipo de información, como qué áreas pertenecen a qué ciudad, a qué ciudades pertenece qué estados y qué estados pertenecen a qué países?

EDITAR: Para hacer las cosas más complicadas, me gustaría poder ofrecer una solución genérica porque, por ejemplo, algunos países no usan códigos postales, usan códigos postales, es más o menos lo mismo pero no lo es bastante. Mi gran deseo es tener Área/Suburbio -> Ciudad/Pueblo -> Región/Provincia/Estado -> País. Podría estar intentando lo imposible.

Edit2: Lo siento, no podría haber sido lo suficientemente clara, pero no necesito códigos postales. Solo el barrio/Área NOMBRE -> Ciudad ........

Respuesta

1

Si quiere obtener información de las cremalleras de EE. UU., Eche un vistazo al Tiger. Es información de un censo de EE. UU. Y le proporcionará todos los datos. Sin embargo, la advertencia es que la información no es fácil de abstraer, por lo que llevará algún tiempo.

0

Esto es más complicado de lo que parece. Algunas ciudades tienen múltiples códigos postales. Algunos códigos postales tienen varias ciudades. Muchas direcciones pueden usar la ciudad principal o el nombre de la ciudad más cercana. Validar una dirección no es trivial.

Si usted quiere tratar de datos de código de tienda de zip, hay zip code databases se puede comprar. Pero probablemente encontrará que es más fácil validarlo contra el USPS usando their tool.

0

Si usted no está interesado en los códigos postales, tal vez usted podría raspar lo que necesita de Wikipedia.

0

Primero, hay dos cosas distintas aquí: información geográfica e información política/organizativa. Se pueden compartir códigos postales, pero geográficamente cualquier objeto está ubicado completamente dentro de otro objeto.

Cuando tuvimos que resolver el problema, simplemente creamos una estructura de árbol genérica, donde cada nodo geográfico tenía referencia a cada padre. Los nodos de nivel superior (países en nuestro caso) no tenían referencias principales. Además, para diferentes países teníamos estructuras diferentes. El único requisito es que tenía que ser jerárquico.

Después de eso pudimos acelerar las consultas geográficas mediante la precomputación de la información del recorrido del árbol. Atravesamos el árbol, ordenamos el recorrido transversal y lo almacenamos en el nodo geográfico. Después de esa simple comparación int en la consulta fue suficiente para verificar si un geo está dentro de otro y así sucesivamente.

Al mismo tiempo, almacenar cosas como los códigos postales de información se parece a la estructura de datos en paralelo aquí, para ser almacenados en diferentes tabla con referencias a los nodos de Geo en la estructura geo.

Cuestiones relacionadas