Quiero escribir una secuencia de comandos que analiza archivos XML de OpenStreetMap (OSM) y crea una base de datos de pueblos y ciudades de forma jerárquica. Quiero que el conjunto de datos resultante tenga una jerarquía que podría tener este aspecto en los EE.UU.:¿Cómo puedo extraer datos jerárquicos de ciudad/estado/país de archivos planetarios OSM XML?
USA -> California -> San Francisco County -> San Francisco
y tal como esto en el Reino Unido:
United Kingdom -> England -> Middlesex -> London -> Soho
La salida será un documento JSON que describe una jerarquía para todas las ciudades en el archivo OSM, con una estructura como la de los ejemplos anteriores.
Estoy usando Python y la biblioteca del analizador "imposm" y puedo cargar y analizar el archivo sin ningún problema; mi problema es la falta de comprensión de cómo se estructuran los datos de OSM: no sé cómo conocer la relación padre/hijo entre los nodos en los datos de OSM. Por ejemplo, si localizo el nodo para "Soho", ¿cómo puedo vincularlo a los nodos de "City of Westminster", "Greater London", "Middlesex" e "England"?
sé que algunos nodos tienen una etiqueta de "is_in" que podría dar algo de esta información, pero
- A) esto es inconsistente y
- B) parece ser un texto de forma libre campo, no un enlace a un nodo OSM (es decir, is_in: "City of Westminster" no me da ningún enlace al nodo de Westminster).
Háganme saber si tiene alguna sugerencia sobre cómo vincular estos nodos jerárquicamente.
gracias por su respuesta, Igor. esa es información útil, y parece que no puedo confiar lo suficiente en la estructura de los datos de OSM para obtener los datos que necesito. Creo que es mejor que obtenga mis datos de algún lugar como geonames.org. – luke
¿no puede buscar todos los nodos que tienen límites alrededor del punto de interés? p.ej. si tiene una calle, ¿debería encontrar un nodo como la ciudad, provincia, distrito y país porque sus límites rodean la posición de latitud y longitud de la calle? – Tom