Voglio scrivere uno script che analizzi i file XML OpenStreetMap (OSM) e costruisca un database di città e città in modo gerarchico. Voglio che i set di dati risultante di avere una gerarchia che potrebbe apparire come questo negli Stati Uniti:Come posso estrarre dati gerarchici di città/stato/paese dai file del pianeta XML OSM?
USA -> California -> San Francisco County -> San Francisco
e forse in questo modo nel Regno Unito:
United Kingdom -> England -> Middlesex -> London -> Soho
L'uscita sarà un documento JSON che descrive una gerarchia per tutte le città nel file OSM, con una struttura come gli esempi sopra.
Sto usando Python e la libreria parser "imposm" e posso caricare e analizzare il file senza problemi; il mio problema è la mancanza di comprensione di come sono strutturati i dati OSM: non so come conoscere la relazione genitore/figlio tra i nodi nei dati di OSM. Per esempio, se trovo il nodo per "Soho", come posso legarlo ai nodi per "City of Westminster", "Greater London", "Middlesex" e "England"?
So che alcuni nodi hanno un tag "is_in" che potrebbe dare alcune di queste informazioni, ma
- A) questo è incoerente e
- B) sembra essere un testo in formato libero campo, non un collegamento a un nodo OSM (ad esempio is_in: "City of Westminster" non mi fornisce alcun collegamento al nodo di Westminster).
Per favore fatemi sapere se avete suggerimenti su come collegare questi nodi gerarchicamente.
grazie per la risposta, Igor. sono informazioni utili e sembra che non possa fare abbastanza affidamento sulla struttura dei dati OSM per ottenere i dati di cui ho bisogno. Penso che sia meglio ottenere i miei dati da qualche parte come geonames.org. – luke
non può cercare tutti i nodi che hanno confini che circondano il punto di interesse? per esempio. se hai una strada, dovresti trovare nodi come città, provincia, distretto e nazione perché i loro confini circondano la latitudine e la posizione della longitudine della strada? – Tom